X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=daemon%2Futils.c;h=83634f433420090fd524d5dc0ea6ac368dc53ab7;hb=5f151349b57b751c581446d7b2b512904578fc1d;hp=38e3ac95ec9830d64f62b611d45780dc79dc449c;hpb=edccab15098b6bc9f8fb81ba219b556a60bc6c4a;p=doldaconnect.git diff --git a/daemon/utils.c b/daemon/utils.c index 38e3ac9..83634f4 100644 --- a/daemon/utils.c +++ b/daemon/utils.c @@ -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)