From owner-freebsd-bugs Thu May 31 16:10:13 2001 Delivered-To: freebsd-bugs@hub.freebsd.org Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by hub.freebsd.org (Postfix) with ESMTP id 1E07E37B423 for ; Thu, 31 May 2001 16:10:08 -0700 (PDT) (envelope-from gnats@FreeBSD.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.11.1/8.11.1) id f4VNA8m07636; Thu, 31 May 2001 16:10:08 -0700 (PDT) (envelope-from gnats) Received: from ns.altadena.net (ns.altadena.net [206.126.144.2]) by hub.freebsd.org (Postfix) with ESMTP id 83BC137B422 for ; Thu, 31 May 2001 16:03:57 -0700 (PDT) (envelope-from pete@ns.altadena.net) Received: (from pete@localhost) by ns.altadena.net (8.11.3/8.8.8) id f4VN0Bh81406; Thu, 31 May 2001 16:00:11 -0700 (PDT) (envelope-from pete) Message-Id: <200105312300.f4VN0Bh81406@ns.altadena.net> Date: Thu, 31 May 2001 16:00:11 -0700 (PDT) From: pete@altadena.net Reply-To: pete@altadena.net To: FreeBSD-gnats-submit@freebsd.org X-Send-Pr-Version: 3.113 Subject: gnu/27803: Enhancement to sort(1) Sender: owner-freebsd-bugs@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.org >Number: 27803 >Category: gnu >Synopsis: Enhancement to sort(1) >Confidential: no >Severity: non-critical >Priority: medium >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Thu May 31 16:10:03 PDT 2001 >Closed-Date: >Last-Modified: >Originator: Pete Carah >Release: FreeBSD 4.3-RELEASE i386 >Organization: Altadena Internet >Environment: System: FreeBSD ns.altadena.net 4.3-RELEASE FreeBSD 4.3-RELEASE #0: Sat Apr 28 22:19:41 PDT 2001 pete@ns.altadena.net:/usr/src/sys/compile/PUFFIN i386 >Description: Enhance sort with -I data type (IP address; parsing and byte ordering handled with system macros, thus possibly unsuitable for some systems. I think freebsd always has netinet/*.h, etc. This probably should be submitted to gnu-bugs instead of here; if submitted there it will need autoconf stuff to detect the presence of network code. >How-To-Repeat: IP addresses normally sorted lexically; this is a pain >Fix: diff -c /usr/src/gnu/usr.bin/sort/sort.c sort/sort.c *** /usr/src/gnu/usr.bin/sort/sort.c Sun Apr 8 02:21:56 2001 --- sort/sort.c Thu May 31 15:55:47 2001 *************** *** 38,43 **** --- 38,48 ---- #include "error.h" #include "xstrtod.h" + /* added for -I - uses inet_addr and ntohl macros */ + #include + #include + #include + #ifdef HAVE_LIMITS_H #include #else *************** *** 99,104 **** --- 104,110 ---- int skipsblanks; /* Skip leading white space at start. */ int eword; /* Zero-origin first word after field. */ int echar; /* Additional characters in field. */ + int ipaddr; /* field is an IP address. */ int skipeblanks; /* Skip trailing white space at finish. */ int *ignore; /* Boolean array of characters to ignore. */ char *translate; /* Translation applied to characters. */ *************** *** 1076,1081 **** --- 1082,1111 ---- return key->reverse ? -diff : diff; continue; } + else if (key->ipaddr) + { + unsigned long a, b; + + if (*lima || *limb) + { + char savea = *lima, saveb = *limb; + *lima = *limb = '\0'; + a = ntohl(inet_addr(texta)); + b = ntohl(inet_addr(textb)); + *lima = savea; + *limb = saveb; + } + else + { + a = ntohl(inet_addr(texta)); + b = ntohl(inet_addr(textb)); + } + + if (a > b) return key->reverse ? -1 : 1; + else if (b > a) return key->reverse ? 1 : -1; + + continue; + } else if (key->month) { diff = getmonth (texta, lena) - getmonth (textb, lenb); *************** *** 1701,1706 **** --- 1731,1740 ---- break; case 'i': key->ignore = nonprinting; + break; + case 'I': + key->ipaddr = 1; + key->skipsblanks = key->skipeblanks = 1; break; case 'M': key->month = 1; >Release-Note: >Audit-Trail: >Unformatted: To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message