386BSD 0.1 development
[unix-history] / usr / src / usr.bin / finger / util.c
index 04e163b..a2b6dd3 100644 (file)
@@ -2,21 +2,40 @@
  * Copyright (c) 1989 The Regents of the University of California.
  * All rights reserved.
  *
  * Copyright (c) 1989 The Regents of the University of California.
  * All rights reserved.
  *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley.  The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ * This code is derived from software contributed to Berkeley by
+ * Tony Nardo of the Johns Hopkins University/Applied Physics Lab.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *     This product includes software developed by the University of
+ *     California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
  */
 
 #ifndef lint
  */
 
 #ifndef lint
-static char sccsid[] = "@(#)util.c     5.7 (Berkeley) %G%";
+static char sccsid[] = "@(#)util.c     5.14 (Berkeley) 1/17/91";
 #endif /* not lint */
 
 #include <sys/param.h>
 #endif /* not lint */
 
 #include <sys/param.h>
@@ -24,9 +43,9 @@ static char sccsid[] = "@(#)util.c    5.7 (Berkeley) %G%";
 #include <sys/file.h>
 #include <stdio.h>
 #include <ctype.h>
 #include <sys/file.h>
 #include <stdio.h>
 #include <ctype.h>
-#include <strings.h>
+#include <string.h>
+#include <paths.h>
 #include "finger.h"
 #include "finger.h"
-#include "pathnames.h"
 
 find_idle_and_ttywrite(w)
        register WHERE *w;
 
 find_idle_and_ttywrite(w)
        register WHERE *w;
@@ -40,7 +59,7 @@ find_idle_and_ttywrite(w)
        if (stat(tbuf, &sb) < 0) {
                (void)fprintf(stderr,
                    "finger: %s: %s\n", tbuf, strerror(errno));
        if (stat(tbuf, &sb) < 0) {
                (void)fprintf(stderr,
                    "finger: %s: %s\n", tbuf, strerror(errno));
-               exit(1);
+               return;
        }
        w->idletime = now < sb.st_atime ? 0 : now - sb.st_atime;
 
        }
        w->idletime = now < sb.st_atime ? 0 : now - sb.st_atime;
 
@@ -53,7 +72,7 @@ userinfo(pn, pw)
        register struct passwd *pw;
 {
        register char *p, *t;
        register struct passwd *pw;
 {
        register char *p, *t;
-       char name[256];
+       char *bp, name[1024];
 
        pn->realname = pn->office = pn->officephone = pn->homephone = NULL;
 
 
        pn->realname = pn->office = pn->officephone = pn->homephone = NULL;
 
@@ -63,12 +82,12 @@ userinfo(pn, pw)
        pn->shell = strdup(pw->pw_shell);
 
        /* why do we skip asterisks!?!? */
        pn->shell = strdup(pw->pw_shell);
 
        /* why do we skip asterisks!?!? */
-       (void)strcpy(p = tbuf, pw->pw_gecos);
-       if (*p == '*')
-               ++p;
+       (void)strcpy(bp = tbuf, pw->pw_gecos);
+       if (*bp == '*')
+               ++bp;
 
        /* ampersands get replaced by the login name */
 
        /* ampersands get replaced by the login name */
-       if (!(p = strsep(p, ",")))
+       if (!(p = strsep(&bp, ",")))
                return;
        for (t = name; *t = *p; ++p)
                if (*t == '&') {
                return;
        for (t = name; *t = *p; ++p)
                if (*t == '&') {
@@ -80,11 +99,11 @@ userinfo(pn, pw)
                else
                        ++t;
        pn->realname = strdup(name);
                else
                        ++t;
        pn->realname = strdup(name);
-       pn->office = ((p = strsep((char *)NULL, ",")) && *p) ?
+       pn->office = ((p = strsep(&bp, ",")) && *p) ?
            strdup(p) : NULL;
            strdup(p) : NULL;
-       pn->officephone = ((p = strsep((char *)NULL, ",")) && *p) ?
+       pn->officephone = ((p = strsep(&bp, ",")) && *p) ?
            strdup(p) : NULL;
            strdup(p) : NULL;
-       pn->homephone = ((p = strsep((char *)NULL, ",")) && *p) ?
+       pn->homephone = ((p = strsep(&bp, ",")) && *p) ?
            strdup(p) : NULL;
 }
 
            strdup(p) : NULL;
 }
 
@@ -93,7 +112,7 @@ match(pw, user)
        char *user;
 {
        register char *p, *t;
        char *user;
 {
        register char *p, *t;
-       char name[256];
+       char name[1024];
 
        /* why do we skip asterisks!?!? */
        (void)strcpy(p = tbuf, pw->pw_gecos);
 
        /* why do we skip asterisks!?!? */
        (void)strcpy(p = tbuf, pw->pw_gecos);