X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=db.c;h=2e4ffbda74a7179d3c480c30f1df764e66b1c88d;hp=a1cc1aebc09e18c01d2685919bd6c407447d4c8b;hb=9f487d2aaaa3462d9e4ecd76f22a75c9ae847e92;hpb=3e514007f72825597eaf68ff33339a8eb0ad420b diff --git a/db.c b/db.c index a1cc1aeb..2e4ffbda 100644 --- a/db.c +++ b/db.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2006 Andre Noll + * Copyright (C) 2005-2007 Andre Noll * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -21,35 +21,13 @@ #include "server.cmdline.h" #include "server.h" -#include "afs.h" +#include "vss.h" #include /* readdir() */ #include /* stat */ #include /* mode_t */ #include "error.h" #include "string.h" -/* - * return 1 if name matches any supported audio format - */ -static int match_audio_file_name(char *name) -{ - int i, len = strlen(name); - const char *pattern[] = {SUPPORTED_AUDIO_FORMATS_ARRAY}; - - for (i = 0; pattern[i]; i++) { - const char *p = pattern[i]; - int plen = strlen(p); - if (len < plen + 1) - continue; - if (name[len - plen - 1] != '.') - continue; - if (strcasecmp(name + len - plen, p)) - continue; - return 1; - } - return 0; -} - /** * traverse the given directory recursively * @@ -97,14 +75,15 @@ int find_audio_files(const char *dirname, int (*f)(const char *, const char *)) continue; ret = -E_LSTAT; if (lstat(entry->d_name, &s) == -1) - goto out; + continue; m = s.st_mode; if (!S_ISREG(m) && !S_ISDIR(m)) /* skip links, sockets, ... */ continue; if (S_ISREG(m)) { /* regular file */ - if (!match_audio_file_name(entry->d_name)) + if (guess_audio_format(entry->d_name) < 0) continue; - if (f(dirname, entry->d_name) < 0) + ret = f(dirname, entry->d_name); + if (ret < 0) goto out; continue; } @@ -123,6 +102,6 @@ out: ret = -E_CHDIR; close(cwd_fd); if (ret < 0) - PARA_ERROR_LOG("ret = %x\n", -ret); + PARA_ERROR_LOG("%s\n", PARA_STRERROR(-ret)); return ret; }