Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 31 May 2015 11:55:29 +0000 (UTC)
From:      Baptiste Daroussin <bapt@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r283815 - head/usr.sbin/pw
Message-ID:  <201505311155.t4VBtT2u094106@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: bapt
Date: Sun May 31 11:55:28 2015
New Revision: 283815
URL: https://svnweb.freebsd.org/changeset/base/283815

Log:
  Return early in case we cannot read the configuration file
  
  This drops one level of indentation

Modified:
  head/usr.sbin/pw/pw_conf.c

Modified: head/usr.sbin/pw/pw_conf.c
==============================================================================
--- head/usr.sbin/pw/pw_conf.c	Sun May 31 11:23:19 2015	(r283814)
+++ head/usr.sbin/pw/pw_conf.c	Sun May 31 11:55:28 2015	(r283815)
@@ -241,126 +241,127 @@ read_userconfig(char const * file)
 	if (file == NULL)
 		file = _PATH_PW_CONF;
 
-	if ((fp = fopen(file, "r")) != NULL) {
-		while ((linelen = getline(&buf, &linecap, fp)) > 0) {
-			if (*buf && (p = strtok(buf, " \t\r\n=")) != NULL && *p != '#') {
-				static char const toks[] = " \t\r\n,=";
-				char           *q = strtok(NULL, toks);
-				int             i = 0;
-				mode_t          *modeset;
+	if ((fp = fopen(file, "r")) == NULL)
+		return (&config);
 
-				while (i < _UC_FIELDS && strcmp(p, kwds[i]) != 0)
-					++i;
+	while ((linelen = getline(&buf, &linecap, fp)) > 0) {
+		if (*buf && (p = strtok(buf, " \t\r\n=")) != NULL && *p != '#') {
+			static char const toks[] = " \t\r\n,=";
+			char           *q = strtok(NULL, toks);
+			int             i = 0;
+			mode_t          *modeset;
+
+			while (i < _UC_FIELDS && strcmp(p, kwds[i]) != 0)
+				++i;
 #if debugging
-				if (i == _UC_FIELDS)
-					printf("Got unknown kwd `%s' val=`%s'\n", p, q ? q : "");
-				else
-					printf("Got kwd[%s]=%s\n", p, q);
+			if (i == _UC_FIELDS)
+				printf("Got unknown kwd `%s' val=`%s'\n", p, q ? q : "");
+			else
+				printf("Got kwd[%s]=%s\n", p, q);
 #endif
-				switch (i) {
-				case _UC_DEFAULTPWD:
-					config.default_password = boolean_val(q, 1);
-					break;
-				case _UC_REUSEUID:
-					config.reuse_uids = boolean_val(q, 0);
-					break;
-				case _UC_REUSEGID:
-					config.reuse_gids = boolean_val(q, 0);
-					break;
-				case _UC_NISPASSWD:
-					config.nispasswd = (q == NULL || !boolean_val(q, 1))
-						? NULL : newstr(q);
-					break;
-				case _UC_DOTDIR:
-					config.dotdir = (q == NULL || !boolean_val(q, 1))
-						? NULL : newstr(q);
-					break;
+			switch (i) {
+			case _UC_DEFAULTPWD:
+				config.default_password = boolean_val(q, 1);
+				break;
+			case _UC_REUSEUID:
+				config.reuse_uids = boolean_val(q, 0);
+				break;
+			case _UC_REUSEGID:
+				config.reuse_gids = boolean_val(q, 0);
+				break;
+			case _UC_NISPASSWD:
+				config.nispasswd = (q == NULL || !boolean_val(q, 1))
+					? NULL : newstr(q);
+				break;
+			case _UC_DOTDIR:
+				config.dotdir = (q == NULL || !boolean_val(q, 1))
+					? NULL : newstr(q);
+				break;
 				case _UC_NEWMAIL:
-					config.newmail = (q == NULL || !boolean_val(q, 1))
-						? NULL : newstr(q);
-					break;
-				case _UC_LOGFILE:
-					config.logfile = (q == NULL || !boolean_val(q, 1))
-						? NULL : newstr(q);
-					break;
-				case _UC_HOMEROOT:
-					config.home = (q == NULL || !boolean_val(q, 1))
-						? "/home" : newstr(q);
-					break;
-				case _UC_HOMEMODE:
-					modeset = setmode(q);
-					config.homemode = (q == NULL || !boolean_val(q, 1))
-						? _DEF_DIRMODE : getmode(modeset, _DEF_DIRMODE);
-					free(modeset);
-					break;
-				case _UC_SHELLPATH:
-					config.shelldir = (q == NULL || !boolean_val(q, 1))
-						? "/bin" : newstr(q);
-					break;
-				case _UC_SHELLS:
-					for (i = 0; i < _UC_MAXSHELLS && q != NULL; i++, q = strtok(NULL, toks))
-						system_shells[i] = newstr(q);
-					if (i > 0)
-						while (i < _UC_MAXSHELLS)
-							system_shells[i++] = NULL;
-					break;
-				case _UC_DEFAULTSHELL:
-					config.shell_default = (q == NULL || !boolean_val(q, 1))
-						? (char *) bourne_shell : newstr(q);
-					break;
-				case _UC_DEFAULTGROUP:
-					q = unquote(q);
-					config.default_group = (q == NULL || !boolean_val(q, 1) || GETGRNAM(q) == NULL)
-						? NULL : newstr(q);
-					break;
-				case _UC_EXTRAGROUPS:
-					for (i = 0; q != NULL; q = strtok(NULL, toks)) {
-						if (extendarray(&config.groups, &config.numgroups, i + 2) != -1)
-							config.groups[i++] = newstr(q);
-					}
-					if (i > 0)
-						while (i < config.numgroups)
-							config.groups[i++] = NULL;
-					break;
-				case _UC_DEFAULTCLASS:
-					config.default_class = (q == NULL || !boolean_val(q, 1))
-						? NULL : newstr(q);
-					break;
-				case _UC_MINUID:
-					if ((q = unquote(q)) != NULL && isdigit(*q))
-						config.min_uid = (uid_t) atol(q);
-					break;
-				case _UC_MAXUID:
-					if ((q = unquote(q)) != NULL && isdigit(*q))
-						config.max_uid = (uid_t) atol(q);
-					break;
-				case _UC_MINGID:
-					if ((q = unquote(q)) != NULL && isdigit(*q))
-						config.min_gid = (gid_t) atol(q);
-					break;
-				case _UC_MAXGID:
-					if ((q = unquote(q)) != NULL && isdigit(*q))
-						config.max_gid = (gid_t) atol(q);
-					break;
-				case _UC_EXPIRE:
-					if ((q = unquote(q)) != NULL && isdigit(*q))
-						config.expire_days = atoi(q);
-					break;
-				case _UC_PASSWORD:
-					if ((q = unquote(q)) != NULL && isdigit(*q))
-						config.password_days = atoi(q);
-					break;
-				case _UC_FIELDS:
-				case _UC_NONE:
-					break;
+				config.newmail = (q == NULL || !boolean_val(q, 1))
+					? NULL : newstr(q);
+				break;
+			case _UC_LOGFILE:
+				config.logfile = (q == NULL || !boolean_val(q, 1))
+					? NULL : newstr(q);
+				break;
+			case _UC_HOMEROOT:
+				config.home = (q == NULL || !boolean_val(q, 1))
+					? "/home" : newstr(q);
+				break;
+			case _UC_HOMEMODE:
+				modeset = setmode(q);
+				config.homemode = (q == NULL || !boolean_val(q, 1))
+					? _DEF_DIRMODE : getmode(modeset, _DEF_DIRMODE);
+				free(modeset);
+				break;
+			case _UC_SHELLPATH:
+				config.shelldir = (q == NULL || !boolean_val(q, 1))
+					? "/bin" : newstr(q);
+				break;
+			case _UC_SHELLS:
+				for (i = 0; i < _UC_MAXSHELLS && q != NULL; i++, q = strtok(NULL, toks))
+					system_shells[i] = newstr(q);
+				if (i > 0)
+					while (i < _UC_MAXSHELLS)
+						system_shells[i++] = NULL;
+				break;
+			case _UC_DEFAULTSHELL:
+				config.shell_default = (q == NULL || !boolean_val(q, 1))
+					? (char *) bourne_shell : newstr(q);
+				break;
+			case _UC_DEFAULTGROUP:
+				q = unquote(q);
+				config.default_group = (q == NULL || !boolean_val(q, 1) || GETGRNAM(q) == NULL)
+					? NULL : newstr(q);
+				break;
+			case _UC_EXTRAGROUPS:
+				for (i = 0; q != NULL; q = strtok(NULL, toks)) {
+					if (extendarray(&config.groups, &config.numgroups, i + 2) != -1)
+						config.groups[i++] = newstr(q);
 				}
+				if (i > 0)
+					while (i < config.numgroups)
+						config.groups[i++] = NULL;
+				break;
+			case _UC_DEFAULTCLASS:
+				config.default_class = (q == NULL || !boolean_val(q, 1))
+					? NULL : newstr(q);
+				break;
+			case _UC_MINUID:
+				if ((q = unquote(q)) != NULL && isdigit(*q))
+					config.min_uid = (uid_t) atol(q);
+				break;
+			case _UC_MAXUID:
+				if ((q = unquote(q)) != NULL && isdigit(*q))
+					config.max_uid = (uid_t) atol(q);
+				break;
+			case _UC_MINGID:
+				if ((q = unquote(q)) != NULL && isdigit(*q))
+					config.min_gid = (gid_t) atol(q);
+				break;
+			case _UC_MAXGID:
+				if ((q = unquote(q)) != NULL && isdigit(*q))
+					config.max_gid = (gid_t) atol(q);
+				break;
+			case _UC_EXPIRE:
+				if ((q = unquote(q)) != NULL && isdigit(*q))
+					config.expire_days = atoi(q);
+				break;
+			case _UC_PASSWORD:
+				if ((q = unquote(q)) != NULL && isdigit(*q))
+					config.password_days = atoi(q);
+				break;
+			case _UC_FIELDS:
+			case _UC_NONE:
+				break;
 			}
 		}
 		if (linecap > 0)
 			free(buf);
 		fclose(fp);
 	}
-	return &config;
+	return (&config);
 }
 
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201505311155.t4VBtT2u094106>