From owner-freebsd-hackers@FreeBSD.ORG Fri Dec 5 22:48:46 2008 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AD1921065672 for ; Fri, 5 Dec 2008 22:48:46 +0000 (UTC) (envelope-from yanefbsd@gmail.com) Received: from po-out-1718.google.com (po-out-1718.google.com [72.14.252.152]) by mx1.freebsd.org (Postfix) with ESMTP id 802628FC13 for ; Fri, 5 Dec 2008 22:48:46 +0000 (UTC) (envelope-from yanefbsd@gmail.com) Received: by po-out-1718.google.com with SMTP id y22so268948pof.3 for ; Fri, 05 Dec 2008 14:48:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:to :subject:cc:in-reply-to:mime-version:content-type :content-transfer-encoding:content-disposition:references; bh=iS/ULb5valXXqQmfGwqKSXRSZ0Va/DIs4a+nV3JpyNs=; b=drQvryF7nKFya8os0UGpsOZbbX65RVgAOdTiyVZ39VB/leNih0bccUnBHIH6XrOyLy AZ8Kf46vhjGQHeMewMIL3RiXKe4dzegBaki68H1RDLxoZNV4yW3r1q9r4Yc67gbqVyvj N+boV8vnHi+kIy+IdzwRrKefgGzNzOpwSvRYs= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:cc:in-reply-to:mime-version :content-type:content-transfer-encoding:content-disposition :references; b=Nhjaq50YpjeFxPAnnNSqFzCtIt/4/Nh/OPW8qRe9ioyd+ETU407ajUL1m9wStkx6/X IyW5w1+0U8gpVrd/lR1u40OqRcVsaEz04DxY1hpeMbdt5NIjRXB8gNv33rtLfBLVnQg4 hqRDFsNbAxA5LCofooMaouAjyw5529Z/nseqQ= Received: by 10.141.162.1 with SMTP id p1mr224568rvo.190.1228517326253; Fri, 05 Dec 2008 14:48:46 -0800 (PST) Received: by 10.140.158.13 with HTTP; Fri, 5 Dec 2008 14:48:46 -0800 (PST) Message-ID: <7d6fde3d0812051448r1581d666v50d162cae348982a@mail.gmail.com> Date: Fri, 5 Dec 2008 14:48:46 -0800 From: "Garrett Cooper" To: "Sheldon Givens" In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline References: Cc: freebsd-hackers@freebsd.org Subject: Re: Small change to wc X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 05 Dec 2008 22:48:46 -0000 On Fri, Dec 5, 2008 at 2:14 PM, Sheldon Givens 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