|
|
1.1 ! root 1: # include <stdio.h> ! 2: # include <ingres.h> ! 3: # include <aux.h> ! 4: # include <sccs.h> ! 5: ! 6: SCCSID(@(#)getnuser.c 7.1 2/5/81) ! 7: ! 8: /* ! 9: ** GETNUSER -- get line from user file based on name ! 10: ** ! 11: ** Given a user name as a string, this routine returns the ! 12: ** corresponding line from .../files/users into a buffer. ! 13: ** ! 14: ** Parameters: ! 15: ** name -- the name of the user ! 16: ** buf -- a buf to dump the line in (declare as ! 17: ** char buf[MAXLINE + 1] ! 18: ** ! 19: ** Returns: ! 20: ** zero -- success ! 21: ** one -- failure (user not present) ! 22: ** ! 23: ** Side effects: ! 24: ** none ! 25: ** ! 26: ** Files: ! 27: ** .../files/users (readable) ! 28: */ ! 29: ! 30: getnuser(name, buf) ! 31: char *name; ! 32: char buf[]; ! 33: { ! 34: FILE *userf; ! 35: register char c; ! 36: register char *bp; ! 37: ! 38: userf = fopen(ztack(Pathname, "/files/users"), "r"); ! 39: if (userf == NULL) ! 40: syserr("getuser: open err"); ! 41: ! 42: for (;;) ! 43: { ! 44: bp = buf; ! 45: while ((c = getc(userf)) != '\n') ! 46: { ! 47: if (c == EOF) ! 48: { ! 49: fclose(userf); ! 50: return (1); ! 51: } ! 52: *bp++ = c; ! 53: } ! 54: *bp++ = '\0'; ! 55: bp = buf; ! 56: while ((c = *bp++) != ':') ! 57: { ! 58: if (c == '\0') ! 59: { ! 60: fclose(userf); ! 61: return (1); ! 62: } ! 63: } ! 64: *--bp = 0; ! 65: if (sequal(buf, name)) ! 66: { ! 67: fclose(userf); ! 68: *bp = ':'; ! 69: return (0); ! 70: } ! 71: } ! 72: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.