Add the DragonFly cvs id and perform general cleanups on cvs/rcs/sccs ids. Most
[dragonfly.git] / crypto / kerberosIV / appl / bsd / sysv_default.c
1 /* Author: Wietse Venema <wietse@wzv.win.tue.nl> */
2
3 #include "bsd_locl.h"
4
5 RCSID("$Id: sysv_default.c,v 1.11 1999/03/13 21:15:24 assar Exp $");
6
7 #include "sysv_default.h"
8
9  /*
10   * Default values for stuff that can be read from the defaults file. The
11   * SunOS 5.1 documentation is incomplete and often disagrees with reality.
12   */
13
14 static char default_umask_value[] = "022";
15
16 char   *default_console = 0;
17 char   *default_altsh   = "YES";
18 char   *default_passreq = "NO";
19 char   *default_timezone= 0;
20 char   *default_hz      = 0;
21 char   *default_path    = _PATH_DEFPATH;
22 char   *default_supath  = _PATH_DEFSUPATH;
23 char   *default_ulimit  = 0;
24 char   *default_timeout = "180";
25 char   *default_umask   = default_umask_value;
26 char   *default_sleep   = "4";
27 char   *default_maxtrys = "5";
28
29 static struct sysv_default {
30     char  **valptr;
31     char   *prefix;
32     int     prefix_len;
33 } defaults[] = {
34     {&default_console,  "CONSOLE=",     sizeof("CONSOLE=") -1},
35     {&default_altsh,    "ALTSHELL=",    sizeof("ALTSHELL=") -1},
36     {&default_passreq,  "PASSREQ=",     sizeof("PASSREQ=") -1},
37     {&default_timezone, "TIMEZONE=",    sizeof("TIMEZONE=") -1},
38     {&default_hz,       "HZ=",          sizeof("HZ=") -1},
39     {&default_path,     "PATH=",        sizeof("PATH=") -1},
40     {&default_supath,   "SUPATH=",      sizeof("SUPATH=") -1},
41     {&default_ulimit,   "ULIMIT=",      sizeof("ULIMIT=") -1},
42     {&default_timeout,  "TIMEOUT=",     sizeof("TIMEOUT=") -1},
43     {&default_umask,    "UMASK=",       sizeof("UMASK=") -1},
44     {&default_sleep,    "SLEEPTIME=",   sizeof("SLEEPTIME=") -1},
45     {&default_maxtrys,  "MAXTRYS=",     sizeof("MAXTRYS=") -1},
46     {0},
47 };
48
49 #define trim(s) { \
50         char   *cp = s + strlen(s); \
51         while (cp > s && isspace((unsigned char)cp[-1])) \
52             cp--; \
53         *cp = 0; \
54 }
55
56 /* sysv_defaults - read login defaults file */
57
58 void
59 sysv_defaults()
60 {
61     struct sysv_default *dp;
62     FILE   *fp;
63     char    buf[BUFSIZ];
64
65     if ((fp = fopen(_PATH_ETC_DEFAULT_LOGIN, "r"))) {
66
67         /* Stupid quadratic algorithm. */
68
69         while (fgets(buf, sizeof(buf), fp)) {
70
71             /* Skip comments and blank lines. */
72
73             if (buf[0] == '#')
74                 continue;
75             trim(buf);
76             if (buf[0] == 0)
77                 continue;
78
79             /* Assign defaults from file. */
80
81 #define STREQN(x,y,l) (x[0] == y[0] && strncmp(x,y,l) == 0)
82
83             for (dp = defaults; dp->valptr; dp++) {
84                 if (STREQN(buf, dp->prefix, dp->prefix_len)) {
85                     if ((*(dp->valptr) = strdup(buf + dp->prefix_len)) == 0) {
86                         warnx("Insufficient memory resources - try later.");
87                         sleepexit(1);
88                     }
89                     break;
90                 }
91             }
92         }
93         fclose(fp);
94     }
95 }