]> git.cameronkatri.com Git - pw-darwin.git/commitdiff
Replace the -q option to pwd_mkdb with a test for PW_SCAN_BIG_IDS in
authorSheldon Hearn <sheldonh@FreeBSD.org>
Thu, 2 Dec 1999 16:39:15 +0000 (16:39 +0000)
committerSheldon Hearn <sheldonh@FreeBSD.org>
Thu, 2 Dec 1999 16:39:15 +0000 (16:39 +0000)
the environment.  This allows big ID warnings to be suppressed for
vipw and chpass as well.

Since the environment variable test is only performed for callers
of pw_scan() that do not set pw_big_ids_warning, the test can still
be overriden.  Currently, chpass and pwd_mkdb are the only users
of pw_scan() and neither of them overrides the environment variable
test.

chpass/chpass.1
libc/gen/pw_scan.c

index b36ddbba10e683c6b14da34837ccd8d08723d3ed..41595e1458e4768112c06798c48338fc4e2408a2 100644 (file)
@@ -230,6 +230,12 @@ When the editor terminates, the information is re-read and used to
 update the user database itself.
 Only the user, or the super-user, may edit the information associated
 with the user.
+.Pp
+See
+.Xr pwd_mkdb 8
+for an explanation of the impact of setting the
+.Ev PW_SCAN_BIG_IDS
+environment variable.
 .Sh NIS INTERACTION
 .Nm Chpass
 can also be used in conjunction with NIS, however some restrictions
index 09556a3e320f877ebe8dd72fc21a9ff0def30b27..849effab45d9880f69893bd0619637fae457f9bc 100644 (file)
@@ -60,8 +60,12 @@ static const char rcsid[] =
  * Some software assumes that IDs are short.  We should emit warnings
  * for id's which can not be stored in a short, but we are more liberal
  * by default, warning for IDs greater than USHRT_MAX.
+ *
+ * If pw_big_ids_warning is anything other than -1 on entry to pw_scan()
+ * it will be set based on the existance of PW_SCAN_BIG_IDS in the
+ * environment.
  */
-int    pw_big_ids_warning = 1;
+int    pw_big_ids_warning = -1;
 
 int
 pw_scan(bp, pw)
@@ -72,6 +76,9 @@ pw_scan(bp, pw)
        int root;
        char *p, *sh;
 
+       if (pw_big_ids_warning == -1)
+               pw_big_ids_warning = getenv("PW_SCAN_BIG_IDS") == NULL ? 1 : 0;
+
        pw->pw_fields = 0;
        if (!(pw->pw_name = strsep(&bp, ":")))          /* login */
                goto fmt;