Use findfile from utils instead of findfilter.
authorfredrik <fredrik@959494ce-11ee-0310-bf91-de5d638817bd>
Wed, 11 Apr 2007 01:27:20 +0000 (01:27 +0000)
committerfredrik <fredrik@959494ce-11ee-0310-bf91-de5d638817bd>
Wed, 11 Apr 2007 01:27:20 +0000 (01:27 +0000)
git-svn-id: svn+ssh://svn.dolda2000.com/srv/svn/repos/src/doldaconnect@872 959494ce-11ee-0310-bf91-de5d638817bd

daemon/transfer.c

index 0bf759e..99843ae 100644 (file)
@@ -528,58 +528,6 @@ static void killfilter(struct transfer *transfer)
     transfer->filterbufsize = transfer->filterbufdata = 0;
 }
 
-static char *findfilter(struct passwd *pwd)
-{
-    char *path, *filtername;
-
-    if((path = sprintf2("%s/.dcdl-filter", pwd->pw_dir)) != NULL)
-    {
-       if(!access(path, X_OK))
-           return(path);
-       free(path);
-    }
-    if((filtername = icwcstombs(confgetstr("transfer", "filter"), NULL)) == NULL)
-    {
-       flog(LOG_WARNING, "could not convert filter name into local charset: %s", strerror(errno));
-    } else {
-       if(strchr(filtername, '/') == NULL)
-       {
-           if((path = sprintf2("/etc/%s", filtername)) != NULL)
-           {
-               if(!access(path, X_OK))
-               {
-                   free(filtername);
-                   return(path);
-               }
-               free(path);
-           }
-           if((path = sprintf2("/usr/etc/%s", filtername)) != NULL)
-           {
-               if(!access(path, X_OK))
-               {
-                   free(filtername);
-                   return(path);
-               }
-               free(path);
-           }
-           if((path = sprintf2("/usr/local/etc/%s", filtername)) != NULL)
-           {
-               if(!access(path, X_OK))
-               {
-                   free(filtername);
-                   return(path);
-               }
-               free(path);
-           }
-       } else {
-           if(!access(filtername, X_OK))
-               return(filtername);
-       }
-       free(filtername);
-    }
-    return(NULL);
-}
-
 static void handletranscmd(struct transfer *transfer, wchar_t *cmd, wchar_t *arg)
 {
     if(!wcscmp(cmd, L"status")) {
@@ -679,7 +627,10 @@ int forkfilter(struct transfer *transfer)
        errno = EACCES;
        return(-1);
     }
-    if((filtername = findfilter(pwent)) == NULL)
+    filtername = findfile(icswcstombs(confgetstr("transfer", "filter"), NULL, NULL), NULL, 0);
+    if(filtername == NULL)
+       filtername = findfile("dc-filter", pwent->pw_dir, 0);
+    if(filtername == NULL)
     {
        flog(LOG_WARNING, "could not find filter for user %s", pwent->pw_name);
        errno = ENOENT;