home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Distributions / ucb / spencer_2bsd.tar.gz / 2bsd.tar / src / fleece.c < prev    next >
C/C++ Source or Header  |  1980-02-17  |  1KB  |  63 lines

  1. /* Copyright (c) 1979 Regents of the University of California */
  2. #include <retrofit.h>
  3. #include <stdio.h>
  4. #include <sys/types.h>
  5. #include <sys/stat.h>
  6.  
  7. /*
  8.  * Look for a particular file name in everyone's home directory.
  9.  *
  10.  * Syntax: fleece name
  11.  * Author: Kurt Shoens (UCB) 1/11/79
  12.  */
  13.  
  14. char    *pwfile    =    "/etc/passwd";
  15.  
  16. main(argc, argv)
  17.     char **argv;
  18. {
  19.     char namebuf[BUFSIZ], home[BUFSIZ], word[BUFSIZ];
  20.     register char *cp;
  21.     struct stat sbuf;
  22.     extern char _sobuf[];
  23.  
  24.     if (argc < 2) {
  25.         fprintf(stderr, "Usage: %s name ...\n", *argv);
  26.         exit(1);
  27.     }
  28.     setbuf(stdout, _sobuf);
  29.     strcpy(word, argv[1]);
  30.     if (freopen(pwfile, "r", stdin) == NULL) {
  31.         perror(pwfile);
  32.         exit(1);
  33.     }
  34.     while (gets(namebuf) != NULL) {
  35.         gethome(namebuf, home);
  36.         cp = home + strlen(home);
  37.         if (cp[-1] != '/')
  38.             *cp++ = '/';
  39.         strcpy(cp, word);
  40.         if (stat(home, &sbuf) >= 0)
  41.             puts(home);
  42.     }
  43.     exit(0);
  44. }
  45.  
  46. /*
  47.  * Find from the given passwd line the user's home directory
  48.  * and copy right.
  49.  */
  50.  
  51. gethome(pwline, home)
  52.     char pwline[], home[];
  53. {
  54.     register char *cp, *cp2;
  55.     register int c;
  56.  
  57.     for (cp = pwline, c = 0; c < 5 && *cp; c += *cp++ == ':')
  58.         ;
  59.     for (cp2 = home; *cp && *cp != ':'; *cp2++ = *cp++)
  60.         ;
  61.     *cp2 = 0;
  62. }
  63.