forked from len0rd/rockbox
Use same path buffer when recursively creating playlist
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@4427 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
be21ab8abf
commit
53d8253470
1 changed files with 14 additions and 6 deletions
20
apps/tree.c
20
apps/tree.c
|
|
@ -1440,10 +1440,9 @@ static bool dirbrowse(char *root, int *dirfilter)
|
||||||
}
|
}
|
||||||
|
|
||||||
static int plsize = 0;
|
static int plsize = 0;
|
||||||
static bool add_dir(char* dirname, int fd)
|
static bool add_dir(char* dirname, int len, int fd)
|
||||||
{
|
{
|
||||||
bool abort = false;
|
bool abort = false;
|
||||||
char buf[MAX_PATH/2]; /* saving a little stack... */
|
|
||||||
DIR* dir;
|
DIR* dir;
|
||||||
|
|
||||||
/* check for user abort */
|
/* check for user abort */
|
||||||
|
|
@ -1465,14 +1464,21 @@ static bool add_dir(char* dirname, int fd)
|
||||||
if (!entry)
|
if (!entry)
|
||||||
break;
|
break;
|
||||||
if (entry->attribute & ATTR_DIRECTORY) {
|
if (entry->attribute & ATTR_DIRECTORY) {
|
||||||
|
int dirlen = strlen(dirname);
|
||||||
|
bool result;
|
||||||
|
|
||||||
if (!strcmp(entry->d_name, ".") ||
|
if (!strcmp(entry->d_name, ".") ||
|
||||||
!strcmp(entry->d_name, ".."))
|
!strcmp(entry->d_name, ".."))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (dirname[1])
|
if (dirname[1])
|
||||||
snprintf(buf, sizeof buf, "%s/%s", dirname, entry->d_name);
|
snprintf(dirname+dirlen, len-dirlen, "/%s", entry->d_name);
|
||||||
else
|
else
|
||||||
snprintf(buf, sizeof buf, "/%s", entry->d_name);
|
snprintf(dirname, len, "/%s", entry->d_name);
|
||||||
if (add_dir(buf,fd)) {
|
|
||||||
|
result = add_dir(dirname, len, fd);
|
||||||
|
dirname[dirlen] = '\0';
|
||||||
|
if (result) {
|
||||||
abort = true;
|
abort = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -1483,6 +1489,7 @@ static bool add_dir(char* dirname, int fd)
|
||||||
(!strcasecmp(&entry->d_name[x-4], ".mp2")) ||
|
(!strcasecmp(&entry->d_name[x-4], ".mp2")) ||
|
||||||
(!strcasecmp(&entry->d_name[x-4], ".mpa")))
|
(!strcasecmp(&entry->d_name[x-4], ".mpa")))
|
||||||
{
|
{
|
||||||
|
char buf[8];
|
||||||
write(fd, dirname, strlen(dirname));
|
write(fd, dirname, strlen(dirname));
|
||||||
write(fd, "/", 1);
|
write(fd, "/", 1);
|
||||||
write(fd, entry->d_name, x);
|
write(fd, entry->d_name, x);
|
||||||
|
|
@ -1532,8 +1539,9 @@ bool create_playlist(void)
|
||||||
if (fd < 0)
|
if (fd < 0)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
snprintf(filename, sizeof(filename), "%s", currdir[1] ? currdir : "/");
|
||||||
plsize = 0;
|
plsize = 0;
|
||||||
add_dir(currdir[1] ? currdir : "/", fd);
|
add_dir(filename, sizeof(filename), fd);
|
||||||
close(fd);
|
close(fd);
|
||||||
sleep(HZ);
|
sleep(HZ);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue