diff options
Diffstat (limited to 'pw/pw_user.c')
-rw-r--r-- | pw/pw_user.c | 15 |
1 files changed, 4 insertions, 11 deletions
diff --git a/pw/pw_user.c b/pw/pw_user.c index 4c62fe8..db33746 100644 --- a/pw/pw_user.c +++ b/pw/pw_user.c @@ -41,16 +41,11 @@ static const char rcsid[] = #include <sys/time.h> #include <sys/resource.h> #include <unistd.h> -#include <utmp.h> #include <login_cap.h> #include "pw.h" #include "bitmap.h" -#if (MAXLOGNAME-1) > UT_NAMESIZE -#define LOGNAMESIZE UT_NAMESIZE -#else #define LOGNAMESIZE (MAXLOGNAME-1) -#endif static char locked_str[] = "*LOCKED*"; @@ -112,7 +107,6 @@ pw_user(struct userconf * cnf, int mode, struct cargs * args) struct stat st; char line[_PASSWORD_LEN+1]; FILE *fp; - mode_t dmode; char *dmode_c; void *set = NULL; @@ -161,9 +155,8 @@ pw_user(struct userconf * cnf, int mode, struct cargs * args) if ((set = setmode(dmode_c)) == NULL) errx(EX_DATAERR, "invalid directory creation mode '%s'", dmode_c); - dmode = getmode(set, S_IRWXU | S_IRWXG | S_IRWXO); + cnf->homemode = getmode(set, _DEF_DIRMODE); free(set); - cnf->homemode = dmode; } /* @@ -191,7 +184,7 @@ pw_user(struct userconf * cnf, int mode, struct cargs * args) if (strchr(cnf->home+1, '/') == NULL) { strcpy(dbuf, "/usr"); strncat(dbuf, cnf->home, MAXPATHLEN-5); - if (mkdir(dbuf, cnf->homemode) != -1 || errno == EEXIST) { + if (mkdir(dbuf, _DEF_DIRMODE) != -1 || errno == EEXIST) { chown(dbuf, 0, 0); /* * Skip first "/" and create symlink: @@ -207,7 +200,7 @@ pw_user(struct userconf * cnf, int mode, struct cargs * args) while ((p = strchr(++p, '/')) != NULL) { *p = '\0'; if (stat(dbuf, &st) == -1) { - if (mkdir(dbuf, cnf->homemode) == -1) + if (mkdir(dbuf, _DEF_DIRMODE) == -1) goto direrr; chown(dbuf, 0, 0); } else if (!S_ISDIR(st.st_mode)) @@ -216,7 +209,7 @@ pw_user(struct userconf * cnf, int mode, struct cargs * args) } } if (stat(dbuf, &st) == -1) { - if (mkdir(dbuf, cnf->homemode) == -1) { + if (mkdir(dbuf, _DEF_DIRMODE) == -1) { direrr: err(EX_OSFILE, "mkdir '%s'", dbuf); } chown(dbuf, 0, 0); |