- if((homedir != NULL) && ((path = sprintf2("%s/.%s", homedir, uname)) != NULL))
- {
- if(!access(path, F_OK))
- return(path);
- free(path);
+ mode = R_OK | (filldef ? W_OK : 0);
+ if(uname != NULL) {
+ if(homedir == NULL)
+ homedir = getenv("HOME");
+ if((homedir == NULL) && ((pw = getpwuid(getuid())) != NULL))
+ homedir = pw->pw_dir;
+ if((homedir != NULL) && ((path = sprintf2("%s/.%s", homedir, uname)) != NULL))
+ {
+ if(!access(path, mode))
+ return(path);
+ free(path);
+ }