summaryrefslogtreecommitdiffstats
path: root/pw/pw_user.c
diff options
context:
space:
mode:
authorJung-uk Kim <jkim@FreeBSD.org>2011-03-08 20:13:29 +0000
committerJung-uk Kim <jkim@FreeBSD.org>2011-03-08 20:13:29 +0000
commitcf2f172e3ff127a6d0f06869ff515b3440e78952 (patch)
treed05e0ca3cf330349ceb521feabfb8d1872143d09 /pw/pw_user.c
parent66290069ff7719bfc4be941748b359386c05326b (diff)
downloadpw-darwin-cf2f172e3ff127a6d0f06869ff515b3440e78952.tar.gz
pw-darwin-cf2f172e3ff127a6d0f06869ff515b3440e78952.tar.zst
pw-darwin-cf2f172e3ff127a6d0f06869ff515b3440e78952.zip
Stop hard-coding default directory mode as 0777.
Diffstat (limited to 'pw/pw_user.c')
-rw-r--r--pw/pw_user.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/pw/pw_user.c b/pw/pw_user.c
index dd92c43..db33746 100644
--- a/pw/pw_user.c
+++ b/pw/pw_user.c
@@ -107,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;
@@ -151,13 +150,12 @@ pw_user(struct userconf * cnf, int mode, struct cargs * args)
cnf->home = arg->val;
}
- dmode = S_IRWXU | S_IRWXG | S_IRWXO;
if ((arg = getarg(args, 'M')) != NULL) {
dmode_c = arg->val;
if ((set = setmode(dmode_c)) == NULL)
errx(EX_DATAERR, "invalid directory creation mode '%s'",
dmode_c);
- cnf->homemode = getmode(set, dmode);
+ cnf->homemode = getmode(set, _DEF_DIRMODE);
free(set);
}
@@ -186,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, dmode) != -1 || errno == EEXIST) {
+ if (mkdir(dbuf, _DEF_DIRMODE) != -1 || errno == EEXIST) {
chown(dbuf, 0, 0);
/*
* Skip first "/" and create symlink:
@@ -202,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, dmode) == -1)
+ if (mkdir(dbuf, _DEF_DIRMODE) == -1)
goto direrr;
chown(dbuf, 0, 0);
} else if (!S_ISDIR(st.st_mode))
@@ -211,7 +209,7 @@ pw_user(struct userconf * cnf, int mode, struct cargs * args)
}
}
if (stat(dbuf, &st) == -1) {
- if (mkdir(dbuf, dmode) == -1) {
+ if (mkdir(dbuf, _DEF_DIRMODE) == -1) {
direrr: err(EX_OSFILE, "mkdir '%s'", dbuf);
}
chown(dbuf, 0, 0);