#include "inv.h"
void getargs(char *s, Alist *al)
{
al->n = 0;
for (;;) {
while (*s == ' ' || *s == '\t' || *s == '\n')
s++;
if (*s == 0)
break;
if (al->lp == 0) {
al->avail = 50;
al->lp = (char **)malloc(al->avail*sizeof(char*));
} else if (al->n >= al->avail) {
al->avail += 50;
al->lp = (char **)realloc(al->lp, al->avail*sizeof(char*));
}
if (al->lp == 0)
err("not enough memory for keyword list");
al->lp[al->n] = s;
while (*s != 0 && *s != ' ' && *s != '\t' && *s != '\n')
s++;
if (al->lp[al->n] != s)
al->n++;
if (*s == 0)
break;
*s++ = 0;
}
}
# define LINESIZ 1024
# define MAXLINE (20*LINESIZ)
char *getln(FILE *fp)
{
static char *line;
static unsigned linesize = LINESIZ;
unsigned offset;
if (line==0)
if ((line = (char *)malloc(linesize)) == 0)
err("not enough memory for index line");
for (offset = 0;;) {
if (fgets(line+offset, linesize - offset, fp) == 0)
return offset==0? 0: line;
offset += strlen(line+offset);
if (line[--offset] == '\n')
return line;
if ((linesize += LINESIZ) >= MAXLINE)
err("index line too long (>%d chars)", MAXLINE);
if ((line = (char *)realloc(line, linesize)) == 0)
err("not enough memory for index line");
}
return 0; /* for compiler */
}
|