home *** CD-ROM | disk | FTP | other *** search
/ Complete Linux / Complete Linux.iso / docs / apps / database / ingres04.lzh / source / iutil / getuser.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-09-18  |  1.2 KB  |  64 lines

  1. # include    <stdio.h>
  2. # include    <ingres.h>
  3. # include    <aux.h>
  4. # include    <sccs.h>
  5.  
  6. SCCSID(@(#)getuser.c    8.1    12/31/84)
  7.  
  8. /*
  9. **  GET LINE FROM USER FILE
  10. **
  11. **    Given a user code (a two byte string), this routine returns
  12. **    the line from .../files/users into `buf'.  The users
  13. **    file is automatically opened, and it is closed if getperm
  14. **    is called with `code' == 0.
  15. **
  16. **    If `code' == -1 then getuser will reinitialize itself.
  17. **    This will guarantee that getuser will reopen the file
  18. **    if (for example) an interrupt occured during the previous
  19. **    call.
  20. */
  21.  
  22. getuser(code, buf)
  23. char    *code;
  24. char    buf[];
  25. {
  26.     static FILE    *userf;
  27.     register char    c;
  28.     register char    *bp;
  29.     extern char    *index();
  30.     
  31.     if (code == 0)
  32.     {
  33.         if (userf != NULL)
  34.             fclose(userf);
  35.         userf = (FILE *)NULL;
  36.         return (0);
  37.     }
  38.     if (code == (char *) -1)
  39.     {
  40.         userf = NULL;
  41.         return (0);
  42.     }
  43.     if (userf == NULL)
  44.     {
  45.         userf = fopen(ztack(Pathname, "/files/users"), "r");
  46.         if (userf == NULL)
  47.             syserr("getuser: open err");
  48.     }
  49.     rewind(userf);
  50.     
  51.     for (;;)
  52.     {
  53.         bp = buf;
  54.         if (fgets(bp, MAXLINE, userf) == NULL)
  55.             return (1);
  56.         *index(bp, '\n') = '\0';
  57.         while ((c = *bp++) != ':')
  58.             if (c == '\0')
  59.                 return (1);
  60.         if (bequal(bp, code, 2))
  61.             return (0);
  62.     }
  63. }
  64.