#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 */ }