Use findfile instead of findconfig file.
authorfredrik <fredrik@959494ce-11ee-0310-bf91-de5d638817bd>
Tue, 14 Nov 2006 03:56:17 +0000 (03:56 +0000)
committerfredrik <fredrik@959494ce-11ee-0310-bf91-de5d638817bd>
Tue, 14 Nov 2006 03:56:17 +0000 (03:56 +0000)
Add filldef to findfile.

git-svn-id: svn+ssh://svn.dolda2000.com/srv/svn/repos/src/doldaconnect@736 959494ce-11ee-0310-bf91-de5d638817bd

daemon/utils.c

index 38e3ac9..83634f4 100644 (file)
@@ -720,15 +720,20 @@ char *getetcpath(char *binpath)
     return(etcpath);
 }
 
-char *findfile(char *gname, char *uname, char *homedir)
+char *findfile(char *gname, char *uname, char *homedir, int filldef)
 {
     char *path, *binpath, *etcpath, *p;
+    struct passwd *pw;
     
-    if((homedir != NULL) && ((path = sprintf2("%s/.%s", homedir, uname)) != NULL))
-    {
-       if(!access(path, F_OK))
-           return(path);
-       free(path);
+    if(uname != NULL) {
+       if((homedir == NULL) && ((pw = getpwuid(getuid())) != NULL))
+           homedir = pw->pw_dir;
+       if((homedir != NULL) && ((path = sprintf2("%s/.%s", homedir, uname)) != NULL))
+       {
+           if(!access(path, F_OK))
+               return(path);
+           free(path);
+       }
     }
     if(gname != NULL)
     {
@@ -756,7 +761,13 @@ char *findfile(char *gname, char *uname, char *homedir)
            free(etcpath);
        }
     }
-    return(NULL);
+    if(filldef) {
+       if(uname && homedir)
+           return("%s/.%s", homedir, uname);
+       return("/etc/%s", gname);
+    } else {
+       return(NULL);
+    }
 }
 
 struct wcspair *newwcspair(wchar_t *key, wchar_t *val, struct wcspair **list)