|
|
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 r
Length: 1138 (0x472)
Types: TextFile
Names: »range.c«
└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki
└─⟦this⟧ »EUUGD11/euug-87hel/sec8/mcp/src/range.c«
#include <stdio.h>
#include "sysdep.h"
#include "mem.h"
#include "lists.h"
#include "range.h"
extern struct list RangeList;
extern int srangecmp();
static FILE *rgf = NULL;
static char line[BUFSIZ];
static char namebuf[SHORT_BUF+1], modebuf[SHORT_BUF+1];
static struct range rg;
setrgent()
{
rg.rg_name = namebuf;
if( rgf == NULL ) {
rgf = fopen( RANGEFILE, "r" );
if (rgf == NULL) {
perr(RANGEFILE);
goodbye(1);
}
rewind(rgf);
}
else
rewind( rgf );
}
endrgent()
{
if( rgf != NULL ){
(void) fclose( rgf );
rgf = NULL;
}
}
struct range *
getrgent()
{
register char *p;
int n;
if (rgf == NULL)
setrgent();
p = fgets(line, BUFSIZ, rgf);
if (p==NULL)
return(0);
n = sscanf(line, "%s%d%d%s",rg.rg_name,
&rg.rg_from,
&rg.rg_to,
modebuf);
if (n != 4) fatal("badly formatted range file line!");
rg.rg_mode = (modebuf[0] == 'e' ? RG_EXCLUSIVE : RG_SHARED);
return(&rg);
}
struct range *
getrgnam(name)
char *name;
{
int indx, found;
indx = search_list(&RangeList, name, srangecmp, &found);
if (found)
return (struct range *) RangeList.l_list[indx];
return (struct range *) 0;
}