ING_DB
This commit is contained in:
parent
f596d60a2c
commit
35e4c4a000
|
|
@ -0,0 +1,80 @@
|
||||||
|
# include <stdio.h>
|
||||||
|
# include "gen.h"
|
||||||
|
# include "../h/dbs.h"
|
||||||
|
# include "../h/aux.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
** GET LINE FROM USER FILE
|
||||||
|
**
|
||||||
|
** Given a user code (a two byte string), this routine returns
|
||||||
|
** the line from AA_USERS into 'buf'. The users
|
||||||
|
** file is automatically opened, and it is closed if getuser
|
||||||
|
** is called with 'code' == 0.
|
||||||
|
**
|
||||||
|
** If 'code' == -1 then getuser will reinitialize itself.
|
||||||
|
** This will guarantee that getuser will reopen the file
|
||||||
|
** if (for example) an interrupt occured during the previous
|
||||||
|
** call.
|
||||||
|
*/
|
||||||
|
getuser(code, buf)
|
||||||
|
register char *code;
|
||||||
|
char buf[];
|
||||||
|
{
|
||||||
|
register int c;
|
||||||
|
register char *bp;
|
||||||
|
static FILE *userf;
|
||||||
|
# ifdef SETBUF
|
||||||
|
char userb[BUFSIZ];
|
||||||
|
# endif
|
||||||
|
extern char *fgetline();
|
||||||
|
|
||||||
|
if (!code)
|
||||||
|
{
|
||||||
|
if (userf)
|
||||||
|
fclose(userf);
|
||||||
|
userf = (FILE *) 0;
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
if (code == (char *) -1)
|
||||||
|
{
|
||||||
|
userf = (FILE *) 0;
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
if (!userf)
|
||||||
|
{
|
||||||
|
if (!(userf = fopen(AAztack(AApath, AA_USERS), "r")))
|
||||||
|
AAsyserr(15002);
|
||||||
|
# ifdef SETBUF
|
||||||
|
setbuf(userf, userb);
|
||||||
|
# endif
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rewind(userf);
|
||||||
|
# ifdef SETBUF
|
||||||
|
setbuf(userf, userb);
|
||||||
|
# endif
|
||||||
|
}
|
||||||
|
|
||||||
|
for ( ; ; )
|
||||||
|
{
|
||||||
|
if (!fgetline(bp = buf, MAXLINE, userf))
|
||||||
|
goto err;
|
||||||
|
while ((c = *bp++) != ':')
|
||||||
|
if (!c)
|
||||||
|
{
|
||||||
|
err:
|
||||||
|
# ifdef SETBUF
|
||||||
|
setbuf(userf, (char *) 0);
|
||||||
|
# endif
|
||||||
|
return (1);
|
||||||
|
}
|
||||||
|
if (AAbequal(bp, code, 2))
|
||||||
|
{
|
||||||
|
# ifdef SETBUF
|
||||||
|
setbuf(userf, (char *) 0);
|
||||||
|
# endif
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue