diff options
-rw-r--r-- | src/command.c | 23 | ||||
-rw-r--r-- | src/directory.c | 10 | ||||
-rw-r--r-- | src/directory.h | 2 |
3 files changed, 23 insertions, 12 deletions
diff --git a/src/command.c b/src/command.c index 107df3275..c8f39472d 100644 --- a/src/command.c +++ b/src/command.c @@ -402,17 +402,18 @@ static int handleListPlaylistInfo(int fd, int *permission, static int handleLsInfo(int fd, int *permission, int argc, char *argv[]) { - if (argc == 1) { - if (printDirectoryInfo(fd, NULL) < 0) - return -1; - else - return lsPlaylists(fd, ""); - } else { - if (printDirectoryInfo(fd, argv[1]) < 0) - return -1; - else - return lsPlaylists(fd, argv[1]); - } + char *path = ""; + + if (argc == 2) + path = argv[1]; + + if (printDirectoryInfo(fd, path) < 0) + return -1; + + if (isRootDirectory(path)) + return lsPlaylists(fd, path); + + return 0; } static int handleRm(int fd, int *permission, int argc, char *argv[]) diff --git a/src/directory.c b/src/directory.c index 4c94e6be9..fb18ff91b 100644 --- a/src/directory.c +++ b/src/directory.c @@ -835,13 +835,21 @@ static Directory *findSubDirectory(Directory * directory, char *name) return NULL; } +int isRootDirectory(char *name) +{ + if (name == NULL || name[0] == '\0' || strcmp(name, "/") == 0) { + return 1; + } + return 0; +} + static Directory *getSubDirectory(Directory * directory, char *name, char **shortname) { Directory *subDirectory; int len; - if (name == NULL || name[0] == '\0' || strcmp(name, "/") == 0) { + if (isRootDirectory(name)) { return directory; } diff --git a/src/directory.h b/src/directory.h index df682c3db..b1482988f 100644 --- a/src/directory.h +++ b/src/directory.h @@ -51,6 +51,8 @@ void initMp3Directory(void); void closeMp3Directory(void); +int isRootDirectory(char *name); + int printDirectoryInfo(int fd, char *dirname); int checkDirectoryDB(void); |