Hello everyone, In the process of migrating the last of a few Linux servers to FreeBSD, we ran in to a bit of a snag with one of our scripts when BSD wc didn't have an equivalent to the Linux -L. This flag tells wc to keep track of the longest line in the input.
Here's a little diff to add this functionality to BSD wc. With this patch, an additional parameter is added to output that shows the length of the longest line My apologies if this is in the wrong format. I don't often post here. Happy Holidays, Sheldon Givens ---snip--- 65,66c65,66 < uintmax_t tlinect, twordct, tcharct; < int doline, doword, dochar, domulti; --- > uintmax_t tlinect, twordct, tcharct, tlongline; > int doline, doword, dochar, domulti, dolongline; 78c78 < while ((ch = getopt(argc, argv, "clmw")) != -1) --- > while ((ch = getopt(argc, argv, "clmwL")) != -1) 93a94,96 > case 'L': > dolongline = 1; > break; 127a131,132 > if (dolongline) > (void)printf(" %7ju", tlongline); 137c142 < uintmax_t linect, wordct, charct; --- > uintmax_t linect, wordct, charct, llcnt, tmpll; 146c151 < linect = wordct = charct = 0; --- > linect = wordct = charct = llcnt = tmpll = 0; 171c176,179 < if (*p == '\n') --- > if (*p == '\n') { > if (tmpll > llcnt) > llcnt = tmpll; > tmpll = 0; 172a181 > } else { tmpll++; } 179a189,192 > if (dolongline) { > tlongline = llcnt; > (void)printf(" %7ju", tlongline); > } 197c210 < return (0); --- > return (0); 231a245 > tmpll++; 234c248,251 < if (wch == L'\n') --- > if (wch == L'\n') { > if (tmpll > llcnt) > llcnt = tmpll; > tmpll = 0; 235a253 > } 258a277,280 > if (dolongline) { > tlongline = llcnt; > (void)printf(" %7ju", llcnt - 1); > } 266c288 < (void)fprintf(stderr, "usage: wc [-clmw] [file ...]\n"); --- > (void)fprintf(stderr, "usage: wc [-clmwL] [file ...]\n"); ---unsnip--- _______________________________________________ freebsd-hackers@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "[EMAIL PROTECTED]"