summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
d0a9460)
Add filldef to findfile.
git-svn-id: svn+ssh://svn.dolda2000.com/srv/svn/repos/src/doldaconnect@736
959494ce-11ee-0310-bf91-
de5d638817bd
-char *findfile(char *gname, char *uname, char *homedir)
+char *findfile(char *gname, char *uname, char *homedir, int filldef)
{
char *path, *binpath, *etcpath, *p;
{
char *path, *binpath, *etcpath, *p;
- 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(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)
}
struct wcspair *newwcspair(wchar_t *key, wchar_t *val, struct wcspair **list)