home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume6 / shadow-2.pt3 / login.c < prev    next >
C/C++ Source or Header  |  1989-02-03  |  729b  |  46 lines

  1. #include <stdio.h>
  2. #include <ctype.h>
  3. #include <string.h>
  4.  
  5. void    setenv ();
  6.  
  7. void    login (name)
  8. char    *name;
  9. {
  10.     char    buf[BUFSIZ];
  11.     char    *envp[32];
  12.     int    envc;
  13.     char    *cp;
  14.     int    i;
  15.  
  16.     memset (buf, 0, BUFSIZ);
  17.  
  18.     fputs ("login: ", stdout);
  19.  
  20.     if (fgets (buf, BUFSIZ, stdin) != buf)
  21.         exit (1);
  22.  
  23.     buf[strlen (buf) - 1] = '\0';    /* remove \n [ must be there ] */
  24.  
  25.     for (cp = buf;*cp == ' ' || *cp == '\t';cp++)
  26.         ;
  27.  
  28.     for (i = 0;i < BUFSIZ - 1 && isgraph (*cp);name[i++] = *cp++)
  29.         ;
  30.  
  31.     if (*cp)
  32.         cp++;
  33.  
  34.     name[i] = '\0';
  35.  
  36.     if (*cp != '\0') {        /* process new variables */
  37.         for (envc = 0;envc < 32;envc++) {
  38.             envp[envc] = strtok (envc == 0 ? cp:(char *) 0, " \t,");
  39.  
  40.             if (envp[envc] == (char *) 0)
  41.                 break;
  42.         }
  43.         setenv (envc, envp);
  44.     }
  45. }
  46.