From owner-freebsd-bugs@FreeBSD.ORG Sat Sep 8 23:30:02 2007 Return-Path: Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E791416A41A for ; Sat, 8 Sep 2007 23:30:01 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id B716013C46C for ; Sat, 8 Sep 2007 23:30:01 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.14.1/8.14.1) with ESMTP id l88NU1HN081413 for ; Sat, 8 Sep 2007 23:30:01 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.1/8.14.1/Submit) id l88NU1BB081412; Sat, 8 Sep 2007 23:30:01 GMT (envelope-from gnats) Resent-Date: Sat, 8 Sep 2007 23:30:01 GMT Resent-Message-Id: <200709082330.l88NU1BB081412@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Marcin Gryszkalis Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D6D4116A41A for ; Sat, 8 Sep 2007 23:29:13 +0000 (UTC) (envelope-from nobody@FreeBSD.org) Received: from www.freebsd.org (www.freebsd.org [IPv6:2001:4f8:fff6::21]) by mx1.freebsd.org (Postfix) with ESMTP id 9E3EA13C45A for ; Sat, 8 Sep 2007 23:29:13 +0000 (UTC) (envelope-from nobody@FreeBSD.org) Received: from www.freebsd.org (localhost [127.0.0.1]) by www.freebsd.org (8.14.1/8.14.1) with ESMTP id l88NTDYb049764 for ; Sat, 8 Sep 2007 23:29:13 GMT (envelope-from nobody@www.freebsd.org) Received: (from nobody@localhost) by www.freebsd.org (8.14.1/8.14.1/Submit) id l88NTDFF049763; Sat, 8 Sep 2007 23:29:13 GMT (envelope-from nobody) Message-Id: <200709082329.l88NTDFF049763@www.freebsd.org> Date: Sat, 8 Sep 2007 23:29:13 GMT From: Marcin Gryszkalis To: freebsd-gnats-submit@FreeBSD.org X-Send-Pr-Version: www-3.1 Cc: Subject: bin/116209: [patch] decimal suffix in split X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 08 Sep 2007 23:30:02 -0000 >Number: 116209 >Category: bin >Synopsis: [patch] decimal suffix in split >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Sat Sep 08 23:30:01 GMT 2007 >Closed-Date: >Last-Modified: >Originator: Marcin Gryszkalis >Release: FreeBSD 6.2-RELEASE i386 >Organization: >Environment: FreeBSD smb.obligo.pl 6.2-RELEASE-p4 FreeBSD 6.2-RELEASE-p4 #1: Mon Apr 30 19:49:09 CEST 2007 root@smb.obligo.pl:/aux/obj/aux/src/sys/MGKERNEL i386 >Description: This is patch that adds -d flag to use decimal suffixes (00, 01, 02...) instead of traditional (aa, ab). Makes split [more] compatible with GNU split. >How-To-Repeat: >Fix: Patch attached with submission follows: --- split.c Sun Jul 11 16:44:23 2004 +++ split.c.new Sun Sep 9 01:08:21 2007 @@ -71,6 +71,7 @@ char fname[MAXPATHLEN]; /* File name prefix. */ regex_t rgx; int pflag; +int dflag; long sufflen = 2; /* File name suffix length. */ void newfile(void); @@ -88,7 +89,7 @@ setlocale(LC_ALL, ""); - while ((ch = getopt(argc, argv, "-0123456789a:b:l:p:")) != -1) + while ((ch = getopt(argc, argv, "-0123456789a:b:l:p:d")) != -1) switch (ch) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': @@ -147,6 +148,9 @@ errx(EX_USAGE, "%s: illegal line count", optarg); break; + case 'd': /* decimal suffix */ + dflag = 1; + break; default: usage(); } @@ -301,6 +305,8 @@ static long fnum; static int defname; static char *fpnt; + char beg, end; + int pattlen; if (ofd == -1) { if (fname[0] == '\0') { @@ -314,9 +320,19 @@ ofd = fileno(stdout); } + if (dflag) { + beg = '0'; + end = '9'; + } else { + beg = 'a'; + end = 'z'; + } + + pattlen = end - beg + 1; + /* maxfiles = 26^sufflen, but don't use libm. */ for (maxfiles = 1, i = 0; i < sufflen; i++) - if ((maxfiles *= 26) <= 0) + if ((maxfiles *= pattlen) <= 0) errx(EX_USAGE, "suffix is too long (max %ld)", i); /* @@ -324,7 +340,7 @@ * magic characters. */ if (fnum == maxfiles) { - if (!defname || fname[0] == 'z') + if (!defname || fname[0] == end) errx(EX_DATAERR, "too many files"); ++fname[0]; fnum = 0; @@ -334,8 +350,8 @@ tfnum = fnum; i = sufflen - 1; do { - fpnt[i] = tfnum % 26 + 'a'; - tfnum /= 26; + fpnt[i] = tfnum % pattlen + beg; + tfnum /= pattlen; } while (i-- > 0); fpnt[sufflen] = '\0'; >Release-Note: >Audit-Trail: >Unformatted: