aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/directory.c28
1 files changed, 20 insertions, 8 deletions
diff --git a/src/directory.c b/src/directory.c
index 1ddc3af61..fd82f3fb1 100644
--- a/src/directory.c
+++ b/src/directory.c
@@ -363,18 +363,14 @@ int removeDeletedFromDirectory(Directory * directory) {
void updatePath(char * utf8path) {
Directory * directory;
Directory * parentDirectory;
+ Song * song;
char * shortname;
+ DIR * dir;
- /* if path is already in the DB */
- if(NULL==(directory = getDirectoryDetails(utf8path,&shortname,
+ /* if path is in the DB try to update it, or else delete it */
+ if((directory = getDirectoryDetails(utf8path,&shortname,
&parentDirectory)))
{
- Song * song = getSongDetails(utf8path,&shortname,&directory);
- if(song && updateSongInfo(song)<0) {
- removeSongFromDirectory(directory,shortname);
- }
- }
- else {
/* if updateDirectory fials, means we should delete it */
if(updateDirectory(directory)<0 && directory!=mp3rootDirectory)
{
@@ -382,6 +378,22 @@ void updatePath(char * utf8path) {
shortname);
}
}
+ else if((song = getSongDetails(utf8path,&shortname,&parentDirectory))) {
+ if(song && updateSongInfo(song)<0) {
+ removeSongFromDirectory(parentDirectory,shortname);
+ }
+ }
+ /* apth not found in the db, see if it actually exists on the fs */
+ else if((dir = opendir(utf8path))) {
+ closedir(dir);
+ /* create parent/get parent directory */
+ /* create new directory and add to parent */
+ /* explore direcotry */
+ }
+ else if((song = newSong(utf8path))) {
+ /* create parent/get parent directory */
+ /* add song to directory */
+ }
}
int updateDirectory(Directory * directory) {