aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/command.c23
-rw-r--r--src/directory.c10
-rw-r--r--src/directory.h2
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);