From 48b2d6d134d858f4ca7619bde7acdd1540c88e20 Mon Sep 17 00:00:00 2001 From: fredrik Date: Tue, 14 Nov 2006 03:56:17 +0000 Subject: [PATCH] Use findfile instead of findconfig file. 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 | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) 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) -- 2.11.0