diff --git a/libraries/DataFlash/DataFlash_File.cpp b/libraries/DataFlash/DataFlash_File.cpp index 9134ada8ec..fde93e0d9f 100644 --- a/libraries/DataFlash/DataFlash_File.cpp +++ b/libraries/DataFlash/DataFlash_File.cpp @@ -274,6 +274,18 @@ uint16_t DataFlash_File::find_last_log(void) return ret; } +bool DataFlash_File::_log_exists(uint16_t log_num) +{ + char *fname = _log_file_name(log_num); + if (fname == NULL) { + return 0; + } + struct stat st; + // stat return 0 if the file exists: + bool ret = ::stat(fname, &st) ? false : true; + free(fname); + return ret; +} uint32_t DataFlash_File::_get_log_size(uint16_t log_num) { @@ -395,7 +407,7 @@ uint16_t DataFlash_File::get_num_logs(void) uint16_t ret; uint16_t high = find_last_log(); for (ret=0; rettm_hour, (unsigned)tm->tm_min); } - } free(filename); } } diff --git a/libraries/DataFlash/DataFlash_File.h b/libraries/DataFlash/DataFlash_File.h index 6bd2521190..ac56de6851 100644 --- a/libraries/DataFlash/DataFlash_File.h +++ b/libraries/DataFlash/DataFlash_File.h @@ -44,6 +44,7 @@ public: void get_log_info(uint16_t log_num, uint32_t &size, uint32_t &time_utc); int16_t get_log_data(uint16_t log_num, uint16_t page, uint32_t offset, uint16_t len, uint8_t *data); uint16_t get_num_logs(void); + bool _log_exists(uint16_t log_num); uint16_t start_new_log(void); void LogReadProcess(uint16_t log_num, uint16_t start_page, uint16_t end_page,