Commit 0f0ac43b authored by Max Kellermann's avatar Max Kellermann

directory: use enum update_return for return values II

Converted some more functions and their callers to enum update_return.
parent 986c2f13
...@@ -67,8 +67,9 @@ static sig_atomic_t directory_updateJobId; ...@@ -67,8 +67,9 @@ static sig_atomic_t directory_updateJobId;
static DirectoryList *newDirectoryList(void); static DirectoryList *newDirectoryList(void);
static int addToDirectory(Directory * directory, static enum update_return
const char *shortname, const char *name); addToDirectory(Directory * directory,
const char *shortname, const char *name);
static void freeDirectoryList(DirectoryList * list); static void freeDirectoryList(DirectoryList * list);
...@@ -196,18 +197,19 @@ int updateInit(List * pathList) ...@@ -196,18 +197,19 @@ int updateInit(List * pathList)
while (node) { while (node) {
switch (updatePath(node->key)) { switch (updatePath(node->key)) {
case 1: case UPDATE_RETURN_UPDATED:
dbUpdated = UPDATE_RETURN_UPDATED; dbUpdated = UPDATE_RETURN_UPDATED;
break; break;
case 0: case UPDATE_RETURN_NOUPDATE:
break; break;
default: case UPDATE_RETURN_ERROR:
exit(DIRECTORY_UPDATE_EXIT_ERROR); exit(DIRECTORY_UPDATE_EXIT_ERROR);
} }
node = node->nextNode; node = node->nextNode;
} }
} else { } else {
if ((dbUpdated = updateDirectory(mp3rootDirectory)) < 0) dbUpdated = updateDirectory(mp3rootDirectory);
if (dbUpdated == UPDATE_RETURN_ERROR)
exit(DIRECTORY_UPDATE_EXIT_ERROR); exit(DIRECTORY_UPDATE_EXIT_ERROR);
} }
...@@ -488,7 +490,8 @@ static enum update_return updatePath(const char *utf8path) ...@@ -488,7 +490,8 @@ static enum update_return updatePath(const char *utf8path)
parentDirectory = directory->parent; parentDirectory = directory->parent;
/* if this update directory is successfull, we are done */ /* if this update directory is successfull, we are done */
if ((ret = updateDirectory(directory)) >= 0) { ret = updateDirectory(directory);
if (ret != UPDATE_RETURN_ERROR) {
free(path); free(path);
sortDirectory(directory); sortDirectory(directory);
return ret; return ret;
...@@ -549,7 +552,7 @@ static enum update_return updatePath(const char *utf8path) ...@@ -549,7 +552,7 @@ static enum update_return updatePath(const char *utf8path)
parentDirectory->inode, parentDirectory->inode,
parentDirectory->device) parentDirectory->device)
&& addToDirectory(parentDirectory, shortname, path) && addToDirectory(parentDirectory, shortname, path)
> 0) { == UPDATE_RETURN_UPDATED) {
ret = UPDATE_RETURN_UPDATED; ret = UPDATE_RETURN_UPDATED;
} }
} }
...@@ -640,7 +643,8 @@ static enum update_return exploreDirectory(Directory * directory) ...@@ -640,7 +643,8 @@ static enum update_return exploreDirectory(Directory * directory)
if (directory->path) if (directory->path)
utf8 = pfx_dir(path_max_tmp, utf8, strlen(utf8), utf8 = pfx_dir(path_max_tmp, utf8, strlen(utf8),
dirname, strlen(dirname)); dirname, strlen(dirname));
if (addToDirectory(directory, utf8, path_max_tmp) > 0) if (addToDirectory(directory, utf8, path_max_tmp) ==
UPDATE_RETURN_UPDATED)
ret = UPDATE_RETURN_UPDATED; ret = UPDATE_RETURN_UPDATED;
} }
...@@ -688,7 +692,7 @@ static enum update_return addSubDirectoryToDirectory(Directory * directory, ...@@ -688,7 +692,7 @@ static enum update_return addSubDirectoryToDirectory(Directory * directory,
subDirectory = newDirectory(name, directory); subDirectory = newDirectory(name, directory);
directory_set_stat(subDirectory, st); directory_set_stat(subDirectory, st);
if (exploreDirectory(subDirectory) < 1) { if (exploreDirectory(subDirectory) != UPDATE_RETURN_UPDATED) {
freeDirectory(subDirectory); freeDirectory(subDirectory);
return UPDATE_RETURN_NOUPDATE; return UPDATE_RETURN_NOUPDATE;
} }
...@@ -698,24 +702,25 @@ static enum update_return addSubDirectoryToDirectory(Directory * directory, ...@@ -698,24 +702,25 @@ static enum update_return addSubDirectoryToDirectory(Directory * directory,
return UPDATE_RETURN_UPDATED; return UPDATE_RETURN_UPDATED;
} }
static int addToDirectory(Directory * directory, static enum update_return
const char *shortname, const char *name) addToDirectory(Directory * directory,
const char *shortname, const char *name)
{ {
struct stat st; struct stat st;
if (myStat(name, &st)) { if (myStat(name, &st)) {
DEBUG("failed to stat %s: %s\n", name, strerror(errno)); DEBUG("failed to stat %s: %s\n", name, strerror(errno));
return -1; return UPDATE_RETURN_ERROR;
} }
if (S_ISREG(st.st_mode) && if (S_ISREG(st.st_mode) &&
hasMusicSuffix(name, 0) && isMusic(name, NULL, 0)) { hasMusicSuffix(name, 0) && isMusic(name, NULL, 0)) {
Song *song = newSong(shortname, SONG_TYPE_FILE, directory); Song *song = newSong(shortname, SONG_TYPE_FILE, directory);
if (!song) if (!song)
return -1; return UPDATE_RETURN_ERROR;
songvec_add(&directory->songs, song); songvec_add(&directory->songs, song);
LOG("added %s\n", name); LOG("added %s\n", name);
return 1; return UPDATE_RETURN_UPDATED;
} else if (S_ISDIR(st.st_mode)) { } else if (S_ISDIR(st.st_mode)) {
return addSubDirectoryToDirectory(directory, shortname, name, return addSubDirectoryToDirectory(directory, shortname, name,
&st); &st);
...@@ -723,7 +728,7 @@ static int addToDirectory(Directory * directory, ...@@ -723,7 +728,7 @@ static int addToDirectory(Directory * directory,
DEBUG("addToDirectory: %s is not a directory or music\n", name); DEBUG("addToDirectory: %s is not a directory or music\n", name);
return -1; return UPDATE_RETURN_ERROR;
} }
void closeMp3Directory(void) void closeMp3Directory(void)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment