Icons for Radium and Shellplayer.
[AROS-Contrib.git] / MultiMedia / radium / common / disk_save.c
blob6b098689e0b059ff9874876f08bf91edf6d3ab54
5 #include <unistd.h>
7 #include "nsmtracker.h"
8 #include "disk.h"
9 #include "disk_root_proc.h"
10 #include "OS_disk_proc.h"
11 #include "disk_save_proc.h"
12 #include "visual_proc.h"
13 #include "player_proc.h"
16 void Save_Clean(char *filename,struct Root *theroot){
17 int length1,length2;
19 dc.success=true;
21 dc.file=fopen(filename,"w");
22 if(dc.file==NULL){
23 RError("Could not open file for writing.\n");
24 return;
27 length1=fprintf(dc.file,"RADIUM SONG\n");
28 length2=fprintf(dc.file,"%f\n",DISKVERSION);
30 if(length1<0 || length2<0){
31 RError("Could not write to file.\n");
32 fclose(dc.file);
33 return;
36 DC_start("OSSTUFF");
37 SaveOsStuff();
38 DC_end();
40 SaveRoot(theroot);
42 if( ! dc.success){
43 RError("Problems writing to file.\n");
46 fclose(dc.file);
49 void SaveAs(struct Root *theroot){
50 char *filename;
51 char *ret=NULL;
53 PlayStop();
55 filename=GFX_GetSaveFileName(theroot->song->tracker_windows,(ReqType)0,"Select file to save","work:radiumsongs");
57 if( ! access(filename,F_OK)){
58 while(
59 ret==NULL || (
60 ! strcmp("yes",ret) &&
61 ! strcmp("no",ret)
64 ret=GFX_GetString(
65 theroot->song->tracker_windows,
66 (ReqType)0,
67 "File already exists, are you sure? (yes/no)"
70 if(!strcmp("no",ret)) return;
73 Save_Clean(filename,theroot);
77 void Save(struct Root *theroot){
79 PlayStop();
81 if(dc.filename==NULL){
82 SaveAs(theroot);
83 }else{
84 Save_Clean(dc.filename,theroot);