summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
authorJens Arnold <amiconn@rockbox.org>2009-07-08 23:29:41 +0000
committerJens Arnold <amiconn@rockbox.org>2009-07-08 23:29:41 +0000
commit96f2a9dad198eee48a7bbb0614e1e668eb21a6d3 (patch)
treed79a19926d9fa023d3fff543a94b9484051bdc99 /firmware
parent408213f2633236690ba76f9c9d76e061c3c51237 (diff)
downloadrockbox-96f2a9dad198eee48a7bbb0614e1e668eb21a6d3.tar.gz
rockbox-96f2a9dad198eee48a7bbb0614e1e668eb21a6d3.zip
Numbered filename creation: Make the search for pre-existing files independent of the requested number length. This way it will also increment properly if the requested number length changes or overflows (more than 99 files for numberlen == 2).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21732 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware')
-rw-r--r--firmware/general.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/firmware/general.c b/firmware/general.c
index 1ff3340d27..14b2b55bf9 100644
--- a/firmware/general.c
+++ b/firmware/general.c
@@ -106,6 +106,7 @@ char *create_numbered_filename(char *buffer, const char *path,
106 int max_num; 106 int max_num;
107 int pathlen; 107 int pathlen;
108 int prefixlen = strlen(prefix); 108 int prefixlen = strlen(prefix);
109 int suffixlen = strlen(suffix);
109 char fmtstring[12]; 110 char fmtstring[12];
110 111
111 if (buffer != path) 112 if (buffer != path)
@@ -131,10 +132,14 @@ char *create_numbered_filename(char *buffer, const char *path,
131 132
132 while ((entry = readdir(dir))) 133 while ((entry = readdir(dir)))
133 { 134 {
134 int curr_num; 135 int curr_num, namelen;
135 136
136 if (strncasecmp((char *)entry->d_name, prefix, prefixlen) 137 if (strncasecmp((char *)entry->d_name, prefix, prefixlen))
137 || strcasecmp((char *)entry->d_name + prefixlen + numberlen, suffix)) 138 continue;
139
140 namelen = strlen((char *)entry->d_name);
141 if ((namelen <= prefixlen + suffixlen)
142 || strcasecmp((char *)entry->d_name + namelen - suffixlen, suffix))
138 continue; 143 continue;
139 144
140 curr_num = atoi((char *)entry->d_name + prefixlen); 145 curr_num = atoi((char *)entry->d_name + prefixlen);