aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2008-10-09 16:22:56 +0200
committerMax Kellermann <max@duempel.org>2008-10-09 16:22:56 +0200
commit4409c34a8c8b0020df78885ece8b01911413be21 (patch)
treeea15f4c112fc537a66969316cca3209473bc1131
parenta79bd723e211c967800f523ecf3b3f886a906d97 (diff)
downloadmpd-4409c34a8c8b0020df78885ece8b01911413be21.tar.gz
mpd-4409c34a8c8b0020df78885ece8b01911413be21.tar.xz
mpd-4409c34a8c8b0020df78885ece8b01911413be21.zip
update: don't sanitize the path again
directory_update_init() has to be called with a path that is already sanitized. Don't call sanitizePathDup() again in updatePath().
-rw-r--r--src/update.c16
1 files changed, 3 insertions, 13 deletions
diff --git a/src/update.c b/src/update.c
index b9bc3ffd5..aad40de42 100644
--- a/src/update.c
+++ b/src/update.c
@@ -373,19 +373,15 @@ addParentPathToDB(const char *utf8path)
return directory;
}
-static enum update_return updatePath(const char *utf8path)
+static enum update_return updatePath(const char *path)
{
struct directory *directory;
struct directory *parentDirectory;
struct song *song;
- char *path = sanitizePathDup(utf8path);
time_t mtime;
enum update_return ret = UPDATE_RETURN_NOUPDATE;
char path_max_tmp[MPD_PATH_MAX];
- if (NULL == path)
- return UPDATE_RETURN_ERROR;
-
/* if path is in the DB try to update it, or else delete it */
if ((directory = db_get_directory(path))) {
parentDirectory = directory->parent;
@@ -393,13 +389,11 @@ static enum update_return updatePath(const char *utf8path)
/* if this update directory is successfull, we are done */
ret = updateDirectory(directory);
if (ret != UPDATE_RETURN_ERROR) {
- free(path);
directory_sort(directory);
return ret;
}
/* we don't want to delete the root directory */
else if (directory == db_get_root()) {
- free(path);
clear_directory(directory);
return UPDATE_RETURN_NOUPDATE;
}
@@ -413,16 +407,14 @@ static enum update_return updatePath(const char *utf8path)
} else if ((song = get_get_song(path))) {
parentDirectory = song->parent;
if (!parentDirectory->stat
- && statDirectory(parentDirectory) < 0) {
- free(path);
+ && statDirectory(parentDirectory) < 0)
return UPDATE_RETURN_NOUPDATE;
- }
+
/* if this song update is successful, we are done */
else if (!inodeFoundInParent(parentDirectory->parent,
parentDirectory->inode,
parentDirectory->device) &&
isMusic(song_get_url(song, path_max_tmp), &mtime, 0)) {
- free(path);
if (song->mtime == mtime)
return UPDATE_RETURN_NOUPDATE;
else if (song_file_update(song))
@@ -457,8 +449,6 @@ static enum update_return updatePath(const char *utf8path)
}
}
- free(path);
-
return ret;
}