|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T s
Length: 1855 (0x73f)
Types: TextFile
Names: »sig.c«
└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki
└─⟦this⟧ »EUUGD11/euug-87hel/sec8/mcp/src/sig.c«
#include <sys/types.h>
#include <sys/file.h>
#include <stdio.h>
#include "sysdep.h"
#include "mem.h"
#include "lists.h"
#include "sig.h"
extern struct list SigList;
extern int ssigcmp();
long lseek();
static char sdesc[DESCSIZE+1], sname[SHORT_BUF], ssize[SHORT_BUF];
static char sexp[SHORT_BUF];
struct sig sg = { sname, 0, (time_t)0, sdesc };
int SG_FileDes = UNDEFINED;
setsgent()
{
if (SG_FileDes == UNDEFINED) {
SG_FileDes = open(SIGFILE, O_RDONLY);
if (SG_FileDes < 0) {
perr(SIGFILE);
goodbye(1);
}
}
lseek(SG_FileDes, (long) 0, L_SET)<0 &&
perr("setsgent: lseek failed?!");
return;
}
endsgent()
{
if (SG_FileDes == UNDEFINED)
return;
(void) close(SG_FileDes);
SG_FileDes = UNDEFINED;
return;
}
struct sig *
getsgent()
{
register int i;
char c;
if (SG_FileDes == UNDEFINED)
setsgent();
#ifdef SENDMAIL
zerolist(&sg.sg_aliases);
#endif
i = 0;
while (read(SG_FileDes, &c, 1) != 0) {
c &= 0177;
if (c == ' ')
break;
sname[i++] = c;
}
sname[i] = '\0';
if (i == 0)
return (struct sig *)0;
i = 0;
while (read(SG_FileDes, &c, 1) != 0) {
c &= 0177;
if (c == ' ')
break;
ssize[i++] = c;
}
ssize[i] = '\0';
if (i == 0)
return (struct sig *)0;
i = 0;
while (read(SG_FileDes, &c, 1) != 0) {
c &= 0177;
if (c == '\n')
break;
sexp[i++] = c;
}
sexp[i] = '\0';
if (i == 0)
return (struct sig *)0;
/* result of intermediate assignment used in read() to stifle lint */
sg.sg_dsize = i = atoi(ssize);
sg.sg_exptime = atoi(sexp);
if (read(SG_FileDes, sg.sg_desc, i) != sg.sg_dsize)
fatal1("%s: bad file format", SIGFILE);
sg.sg_desc[sg.sg_dsize] = '\0';
return(&sg);
}
struct sig *
getsgnam(name)
char *name;
{
int indx, found;
indx = search_list(&SigList, name, ssigcmp, &found);
if (found)
return (struct sig *) SigList.l_list[indx];
return (struct sig *) 0;
}