1 /* $Id: autosave.c,v 1.2 2004-12-19 14:52:48 btb Exp $ */
3 THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
4 SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO
5 END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
6 ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
7 IN USING, DISPLAYING, AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
8 SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
9 FREE PURPOSES. IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
10 CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES. THE END-USER UNDERSTANDS
11 AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE.
12 COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
18 * Saves current mine to disk to prevent loss of work, and support undo.
24 static char rcsid[] = "$Id: autosave.c,v 1.2 2004-12-19 14:52:48 btb Exp $";
45 #define AUTOSAVE_PERIOD 5 // Number of minutes for timed autosave
48 int Autosave_numfiles;
53 int Timer_save_flag=0;
57 char undo_status[10][100];
59 void init_autosave(void) {
63 Autosave_numfiles = 0;
66 //MALLOC( undo_status, char *, 10 );
67 //for (i=0; i<10; i++)
68 // MALLOC( undo_status[i], char, 100 );
69 autosave_mine(mine_filename);
72 void close_autosave(void) {
76 for (i=0;i<Autosave_total;i++) {
78 MALLOC(delname, char, 128);
80 strcpy ( delname, mine_filename );
82 if ( !strcmp(delname, "*.MIN") ) strcpy(delname, "TEMP.MIN");
84 ext = strstr(delname, ".MIN");
85 sprintf( ext, ".M%d", i );
90 //for (i=0;i<10;i++) free( undo_status[i] );
91 //free( undo_status );
95 void autosave_mine(char *name) {
100 MALLOC(savename, char, 128);
103 strcpy ( savename, name );
105 if ( !strcmp(savename, "*.MIN") ) strcpy(savename, "TEMP.MIN");
107 ext = strstr(savename, ".MIN");
108 sprintf( ext, ".M%d", Autosave_count );
110 //mprintf( 0, "Autosave: %s\n", savename );
111 med_save_mine( savename );
113 if (undo_count > 0) undo_count--;
114 if (Autosave_count > 9) Autosave_count -= 10;
115 if (Autosave_numfiles < 10)
117 if (Autosave_total < 10)
127 void print_clock( int seconds, char message[10] ) {
133 if ((p = strchr(message, ':')) != NULL)
136 gr_set_current_canvas( NULL );
137 gr_set_fontcolor( CBLACK, CGREY );
138 gr_get_string_size( message, &w, &h, &aw );
139 gr_setcolor( CGREY );
140 gr_rect( 700, 0, 799, h+1 );
141 gr_string( 700, 0, message );
142 gr_set_fontcolor( CBLACK, CWHITE );
145 static char the_time[14]; // changed from 10, I don't think that was long enough
147 void clock_message( int seconds, char *format, ... ) {
150 va_start(ap, format);
151 vsprintf(the_time, format, ap);
154 print_clock(seconds, the_time);
158 struct tm Editor_time_of_day;
160 void set_editor_time_of_day()
165 Editor_time_of_day = *localtime( <ime );
168 void TimedAutosave(char *name)
170 int month,day,hour,minute,second;
172 month = (Editor_time_of_day.tm_mon) + 1;
173 day = Editor_time_of_day.tm_mday;
174 minute = Editor_time_of_day.tm_min;
175 hour = Editor_time_of_day.tm_hour;
176 second = Editor_time_of_day.tm_sec;
178 if (hour > 12) hour-=12;
180 if (second!=save_second) {
181 save_second = second;
182 clock_message(second, "%d/%d %d:%02d", month, day, hour, minute);
187 if (minute%AUTOSAVE_PERIOD != 0)
190 if ((minute%AUTOSAVE_PERIOD == 0) && (Timer_save_flag)) {
196 diagnostic_message("Mine Autosaved at %s\n", ctime(<ime));
207 //@@ char *loadname, *ext;
208 //@@ if (undo_count == 0) original = Autosave_count;
210 //@@ if (!Autosave_flag)
213 //@@ if (Autosave_numfiles > 1) {
215 //@@ MALLOC(loadname, char, 128);
217 //@@ strcpy ( loadname, mine_filename );
218 //@@ strupr( loadname );
219 //@@ if ( !strcmp(loadname, "*.MIN") ) strcpy(loadname, "TEMP.MIN");
222 //@@ Autosave_count = original - undo_count;
223 //@@ if (Autosave_count < 0) Autosave_count = Autosave_count+10;
224 //@@ Autosave_numfiles--;
225 //@@ //mprintf(0, "u=%d a=%d o=%d num=%d\n", undo_count, Autosave_count, original, Autosave_numfiles);
227 //@@ ext = strstr(loadname, ".MIN");
228 //@@ if (Autosave_count == 0) sprintf( ext, ".M9" );
229 //@@ else sprintf( ext, ".M%d", Autosave_count-1 );
230 //@@ //mprintf( 0, "Loading: %s\n", loadname );
231 //@@ med_load_mine( loadname );
237 //@@ //diagnostic_message("Can't undo\n");