diff options
author | Jörg Hohensohn <hohensoh@rockbox.org> | 2004-10-17 10:00:46 +0000 |
---|---|---|
committer | Jörg Hohensohn <hohensoh@rockbox.org> | 2004-10-17 10:00:46 +0000 |
commit | 1120ef50c72920bdcd20ccd42477473b98fda452 (patch) | |
tree | 36367d85466211c0b80928c35ca7d0036a9658e0 | |
parent | 954e5888b15d9680129f89aaffa161687fede01b (diff) |
file name generation for recorder without RTC (Ondio)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@5298 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r-- | apps/recorder/recording.c | 46 |
1 files changed, 41 insertions, 5 deletions
diff --git a/apps/recorder/recording.c b/apps/recorder/recording.c index 73c7f78509..662b0797d7 100644 --- a/apps/recorder/recording.c +++ b/apps/recorder/recording.c @@ -48,6 +48,7 @@ #include "dir.h" #include "errno.h" #include "talk.h" +#include "atoi.h" #ifdef HAVE_RECORDING @@ -149,18 +150,53 @@ void adjust_cursor(void) char *rec_create_filename(char *buffer) { int fpos; - struct tm *tm = get_time(); if(global_settings.rec_directory) getcwd(buffer, MAX_PATH); else strncpy(buffer, rec_base_directory, MAX_PATH); - /* Append filename to path: RYYMMDD-HH.MM.SS.mp3 */ fpos = strlen(buffer); - snprintf(&buffer[fpos], MAX_PATH-fpos, "/R%02d%02d%02d-%02d%02d%02d.mp3", - tm->tm_year%100, tm->tm_mon+1, tm->tm_mday, - tm->tm_hour, tm->tm_min, tm->tm_sec); +#ifdef HAVE_RTC + { + struct tm *tm = get_time(); + + /* Append filename to path: RYYMMDD-HH.MM.SS.mp3 */ + snprintf(&buffer[fpos], MAX_PATH-fpos, + "/R%02d%02d%02d-%02d%02d%02d.mp3", + tm->tm_year%100, tm->tm_mon+1, tm->tm_mday, + tm->tm_hour, tm->tm_min, tm->tm_sec); + } +#else + { + DIR* dir; + int max_rec_file = 1; /* default to rec_0001.mp3 */ + dir = opendir(buffer); + if (dir) /* found */ + { + /* Search for the highest recording filename present, + increment behind that. So even with "holes" + (deleted recordings), the newest will always have the + highest number. */ + while(true) + { + struct dirent* entry; + int curr_rec_file; + /* walk through the directory content */ + entry = readdir(dir); + if (!entry) + break; /* end of dir */ + if (strncasecmp(entry->d_name, "rec_", 4)) + continue; /* no recording file */ + curr_rec_file = atoi(&entry->d_name[4]); + if (curr_rec_file >= max_rec_file) + max_rec_file = curr_rec_file + 1; + } + } + snprintf(&buffer[fpos], MAX_PATH-fpos, + "/rec_%04d.mp3", max_rec_file); + } +#endif return buffer; } |