version 1.11, 1998/07/24 00:32:24 |
version 1.12, 1999/05/24 17:57:19 |
|
|
*/ |
*/ |
u_char dtable[NBINS], itable[NBINS], alltable[NBINS]; |
u_char dtable[NBINS], itable[NBINS], alltable[NBINS]; |
int SINGL_FLD = 0, SEP_FLAG = 0, UNIQUE = 0; |
int SINGL_FLD = 0, SEP_FLAG = 0, UNIQUE = 0; |
struct coldesc clist[(ND+1)*2]; |
struct coldesc *clist; |
int ncols = 0; |
int ncols = 0; |
extern struct coldesc clist[(ND+1)*2]; |
int ND = 10; /* limit on number of -k options. */ |
extern int ncols; |
|
|
|
char devstdin[] = _PATH_STDIN; |
char devstdin[] = _PATH_STDIN; |
char toutpath[_POSIX_PATH_MAX]; |
char toutpath[_POSIX_PATH_MAX]; |
|
|
static void onsig __P((int)); |
static void onsig __P((int)); |
static void usage __P((char *)); |
static void usage __P((char *)); |
|
|
|
#define CHECK_NFIELDS \ |
|
if (++nfields == ND) { \ |
|
ND += 10; \ |
|
if ((p = realloc(fldtab, ND)) == NULL) \ |
|
errx(2, "cannot allocate memory"); \ |
|
ftpos = p + (ftpos - fldtab); \ |
|
fldtab = p; \ |
|
} |
|
|
int |
int |
main(argc, argv) |
main(argc, argv) |
int argc; |
int argc; |
|
|
{ |
{ |
int (*get)(); |
int (*get)(); |
int ch, i, stdinflag = 0, tmp = 0; |
int ch, i, stdinflag = 0, tmp = 0; |
char cflag = 0, mflag = 0; |
char nfields = 0, cflag = 0, mflag = 0; |
char *outfile, *outpath = 0; |
char *outfile, *outpath = 0; |
struct field fldtab[ND+2], *ftpos; |
struct field *fldtab, *ftpos; |
union f_handle filelist; |
union f_handle filelist; |
FILE *outfp = NULL; |
FILE *outfp = NULL; |
|
void *p; |
|
|
memset(fldtab, 0, (ND+2)*sizeof(struct field)); |
if ((clist = calloc((ND+1)*2, sizeof(struct coldesc))) == NULL || |
|
(ftpos = fldtab = calloc(ND+2, sizeof(struct field))) == NULL) |
|
errx(2, "cannot allocate memory"); |
memset(d_mask, 0, NBINS); |
memset(d_mask, 0, NBINS); |
d_mask[REC_D = '\n'] = REC_D_F; |
d_mask[REC_D = '\n'] = REC_D_F; |
SINGL_FLD = SEP_FLAG = 0; |
SINGL_FLD = SEP_FLAG = 0; |
d_mask['\t'] = d_mask[' '] = BLANK | FLD_D; |
d_mask['\t'] = d_mask[' '] = BLANK | FLD_D; |
ftpos = fldtab; |
|
fixit(&argc, argv); |
fixit(&argc, argv); |
if (!issetugid() && (outfile = getenv("TMPDIR"))) |
if (!issetugid() && (outfile = getenv("TMPDIR"))) |
tmpdir = outfile; |
tmpdir = outfile; |
|
|
outpath = optarg; |
outpath = optarg; |
break; |
break; |
case 'k': |
case 'k': |
|
CHECK_NFIELDS; |
setfield(optarg, ++ftpos, fldtab->flags); |
setfield(optarg, ++ftpos, fldtab->flags); |
break; |
break; |
case 't': |
case 't': |
|
|
fldtab[0].icol.num = 1; |
fldtab[0].icol.num = 1; |
} else { |
} else { |
if (!fldtab[1].icol.num) { |
if (!fldtab[1].icol.num) { |
|
CHECK_NFIELDS; |
fldtab[0].flags &= ~(BI|BT); |
fldtab[0].flags &= ~(BI|BT); |
setfield("1", ++ftpos, fldtab->flags); |
setfield("1", ++ftpos, fldtab->flags); |
} |
} |