version 1.1, 1996/07/04 20:34:42 |
version 1.2, 1997/01/20 19:43:22 |
|
|
char *record; |
char *record; |
char *fields; |
char *fields; |
Cell *fldtab; |
Cell *fldtab; |
|
char inputFS[100]; /* BUG: unchecked */ |
|
|
#define MAXFLD 200 |
#define MAXFLD 200 |
int nfields = MAXFLD; /* can be set from commandline in main */ |
int nfields = MAXFLD; /* can be set from commandline in main */ |
|
|
char *rr; |
char *rr; |
int nrr; |
int nrr; |
|
|
|
strcpy(inputFS, *FS); /* for subsequent field splitting */ |
if ((sep = **RS) == 0) { |
if ((sep = **RS) == 0) { |
sep = '\n'; |
sep = '\n'; |
while ((c=getc(inf)) == '\n' && c != EOF) /* skip leading \n's */ |
while ((c=getc(inf)) == '\n' && c != EOF) /* skip leading \n's */ |
|
|
r = recloc->sval; |
r = recloc->sval; |
fr = fields; |
fr = fields; |
i = 0; /* number of fields accumulated here */ |
i = 0; /* number of fields accumulated here */ |
if (strlen(*FS) > 1) { /* it's a regular expression */ |
if (strlen(inputFS) > 1) { /* it's a regular expression */ |
i = refldbld(r, *FS); |
i = refldbld(r, inputFS); |
} else if ((sep = **FS) == ' ') { /* default whitespace */ |
} else if ((sep = *inputFS) == ' ') { /* default whitespace */ |
for (i = 0; ; ) { |
for (i = 0; ; ) { |
while (*r == ' ' || *r == '\t' || *r == '\n') |
while (*r == ' ' || *r == '\t' || *r == '\n') |
r++; |
r++; |
|
|
*fr++ = 0; |
*fr++ = 0; |
} |
} |
*fr = 0; |
*fr = 0; |
} else if ((sep = **FS) == 0) { /* new: FS="" => 1 char/field */ |
} else if ((sep = *inputFS) == 0) { /* new: FS="" => 1 char/field */ |
for (i = 0; *r != 0; r++) { |
for (i = 0; *r != 0; r++) { |
char buf[2]; |
char buf[2]; |
i++; |
i++; |
|
|
if (r > rec + recsize - 1) |
if (r > rec + recsize - 1) |
ERROR "built giant record `%.30s...'; try -mr n", record FATAL; |
ERROR "built giant record `%.30s...'; try -mr n", record FATAL; |
*r = '\0'; |
*r = '\0'; |
dprintf( ("in recbld FS=%o, recloc=%p\n", **FS, recloc) ); |
dprintf( ("in recbld inputFS=%s, recloc=%p\n", inputFS, recloc) ); |
recloc->tval = REC | STR | DONTFREE; |
recloc->tval = REC | STR | DONTFREE; |
recloc->sval = record = rec; |
recloc->sval = record = rec; |
dprintf( ("in recbld FS=%o, recloc=%p\n", **FS, recloc) ); |
dprintf( ("in recbld inputFS=%s, recloc=%p\n", inputFS, recloc) ); |
dprintf( ("recbld = |%s|\n", record) ); |
dprintf( ("recbld = |%s|\n", record) ); |
donerec = 1; |
donerec = 1; |
} |
} |