On Fri, Dec 5, 2008 at 3:28 PM, Sheldon Givens <[EMAIL PROTECTED]> wrote: > I've successfully built it in multiple circumstances. The only thing I'm > worried about (I'm on the road now and can't test) is what will occur if wc > is fed a zero-length input... ie, a "touched" file or a echo "" | wc -L. > > On Fri, Dec 5, 2008 at 3:23 PM, Garrett Cooper <[EMAIL PROTECTED]> wrote: >> >> On Fri, Dec 5, 2008 at 3:14 PM, Kostik Belousov <[EMAIL PROTECTED]> >> wrote: >> > On Fri, Dec 05, 2008 at 03:10:56PM -0800, Sheldon Givens wrote: >> >> What's the problem having it? The total code is mere bytes and it eases >> >> the >> >> transition for others who are migrating from Linux. >> >> You're absolutely right in that it can be done with awk (fairly simply, >> >> too) >> >> but it doesn't hurt to explore options. Additionally, with awk, you >> >> can't >> >> get other figures with the same command, which increases ease of use. >> >> IE: What's the equivalent to "wc -clwL" in awk? Would you really rather >> >> run >> >> wc -clw && awk '{if(length>x){x=length}}END{if(x>0){print x}else{print >> >> 0}}'`? >> >> >> >> Isn't wc -L a more elegant solution than awk >> >> '{if(length>x){x=length}}END{if(x>0){print x}else{print 0}}'`? >> >> >> >> Should I continue? >> > >> > Real argument pro is that you have one less thing to worry when you >> > trying to run some script, written on Linux, on the FreeBSD system. >> > >> >> >> >> On Fri, Dec 5, 2008 at 2:48 PM, Garrett Cooper <[EMAIL PROTECTED]> >> >> wrote: >> >> >> >> > On Fri, Dec 5, 2008 at 2:14 PM, Sheldon Givens <[EMAIL PROTECTED]> >> >> > wrote: >> >> > > 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--- >> >> > >> >> > What's the plus side of having this? I can accomplish the same with >> >> > something like awk without the additional overhead, which would be >> >> > guaranteed to be portable. >> >> > -Garrett >> >> Very true. Ok, I've been easily won over :). >> The patch looks largely ok, but have you gone through compiling it in >> your own dev tree (vatting out possible warnings, etc). >> -Garrett
1. Please don't top-post. 2. Solving the problem is easy. Have the value default to something unrealistic (like -1) and simply, set the value to 0, if indeed the value is < 0. Cheers, -Garrett _______________________________________________ freebsd-hackers@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "[EMAIL PROTECTED]"