122
122
/* Used for initialising track files */
123
123
static enum {
124
124
TRACK_FILE_NO_INIT ,
125
- TRACK_FILE_CREATE ,
126
125
TRACK_FILE_INIT ,
126
+ TRACK_FILE_OVERWRITE ,
127
127
} track_file_init ;
128
128
static int track_file_init_value ;
129
129
static tracked_file_t * current_tf ;
@@ -337,7 +337,7 @@ track_file_init_handler(const vector_t *strvec)
337
337
const char * word ;
338
338
int value ;
339
339
340
- track_file_init = TRACK_FILE_CREATE ;
340
+ track_file_init = TRACK_FILE_INIT ;
341
341
track_file_init_value = 0 ;
342
342
343
343
for (i = 1 ; i < vector_size (strvec ); i ++ ) {
@@ -360,7 +360,7 @@ track_file_init_handler(const vector_t *strvec)
360
360
track_file_init_value = value ;
361
361
}
362
362
else if (!strcmp (word , "overwrite" ))
363
- track_file_init = TRACK_FILE_INIT ;
363
+ track_file_init = TRACK_FILE_OVERWRITE ;
364
364
else
365
365
report_config_error (CONFIG_GENERAL_ERROR , "Unknown track file init option %s" , word );
366
366
}
@@ -479,7 +479,7 @@ track_file_end_handler(void)
479
479
480
480
if (track_file_init != TRACK_FILE_NO_INIT ) {
481
481
ret = stat (track_file -> file_path , & statb );
482
- if (!ret && track_file_init == TRACK_FILE_INIT ) {
482
+ if (!ret && track_file_init == TRACK_FILE_OVERWRITE ) {
483
483
if ((statb .st_mode & S_IFMT ) != S_IFREG ) {
484
484
/* It is not a regular file */
485
485
report_config_error (CONFIG_GENERAL_ERROR , "Cannot initialise track file %s"
@@ -494,7 +494,8 @@ track_file_end_handler(void)
494
494
}
495
495
496
496
/* Don't overwrite a file on reload */
497
- if (!reload && !__test_bit (CONFIG_TEST_BIT , & debug )) {
497
+ if (!reload && !__test_bit (CONFIG_TEST_BIT , & debug ) &&
498
+ (ret || track_file_init == TRACK_FILE_OVERWRITE )) { // the file doesn't exist or we want to overwrite it
498
499
/* Write the value to the file */
499
500
if ((tf = fopen_safe (track_file -> file_path , "w" ))) {
500
501
fprintf (tf , "%d\n" , track_file_init_value );
0 commit comments