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]"

Reply via email to