--- ray/src/cal/rcalc.c 2004/12/09 22:09:40 1.15 +++ ray/src/cal/rcalc.c 2005/06/14 01:25:02 1.19 @@ -1,5 +1,5 @@ #ifndef lint -static const char RCSid[] = "$Id: rcalc.c,v 1.15 2004/12/09 22:09:40 greg Exp $"; +static const char RCSid[] = "$Id: rcalc.c,v 1.19 2005/06/14 01:25:02 greg Exp $"; #endif /* * rcalc.c - record calculator program. @@ -25,7 +25,7 @@ static const char RCSid[] = "$Id: rcalc.c,v 1.15 2004/ #define isblnk(c) (igneol ? isspace(c) : (c)==' '||(c)=='\t') -#define INBSIZ 4096 /* longest record */ +#define INBSIZ 16384 /* longest record */ #define MAXCOL 32 /* number of columns recorded */ /* field type specifications */ @@ -189,10 +189,14 @@ char *argv[] break; case 'd': bocols = 1; + SET_FILE_BINARY(stdout); break; case 'f': bocols = -1; + SET_FILE_BINARY(stdout); break; + default: + goto userr; } break; case 'w': @@ -208,12 +212,20 @@ char *argv[] eputs(" [-b][-l][-n][-p][-w][-u][-tS][-s svar=sval][-e expr][-f source][-i infmt][-o outfmt] [file]\n"); quit(1); } - + if (bocols) + SET_FILE_BINARY(stdout); if (noinput) { /* produce a single output record */ + if (i < argc) { + eputs(argv[0]); + eputs(": file argument(s) incompatible with -n\n"); + quit(1); + } eclock++; putout(); quit(0); } + if (nbicols) + SET_FILE_BINARY(stdin); if (blnkeq) /* for efficiency */ nbsynch(); @@ -634,9 +646,12 @@ getrec(void) /* get next record from file */ register struct field *f; while (ipb.chr != EOF) { - if (blnkeq) /* beware of nbsynch() */ + if (blnkeq) { /* beware of nbsynch() */ while (isblnk(ipb.chr)) resetinp(); + if (ipb.chr == EOF) + return(0); + } eatline = (!igneol && ipb.chr != '\n'); clearrec(); /* start with fresh record */ for (f = inpfmt; f != NULL; f = f->next)