From owner-freebsd-bugs@FreeBSD.ORG Mon Aug 29 21:05:00 2005 Return-Path: X-Original-To: freebsd-bugs@freebsd.org Delivered-To: freebsd-bugs@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 99C7E16A420 for ; Mon, 29 Aug 2005 21:05:00 +0000 (GMT) (envelope-from toby@apple.com) Received: from mail-out4.apple.com (mail-out4.apple.com [17.254.13.23]) by mx1.FreeBSD.org (Postfix) with ESMTP id C1D9843D53 for ; Mon, 29 Aug 2005 21:04:59 +0000 (GMT) (envelope-from toby@apple.com) Received: from mailgate1.apple.com (a17-128-100-225.apple.com [17.128.100.225]) by mail-out4.apple.com (8.12.11/8.12.11) with ESMTP id j7TL4xII015598 for ; Mon, 29 Aug 2005 14:04:59 -0700 (PDT) Received: from relay4.apple.com (relay4.apple.com [17.128.113.34]) by mailgate1.apple.com (Content Technologies SMTPRS 4.3.17) with ESMTP id for ; Mon, 29 Aug 2005 14:04:59 -0700 Received: from [17.202.45.207] (il0204a-dhcp79.apple.com [17.202.45.207]) by relay4.apple.com (8.12.11/8.12.11) with ESMTP id j7TL4xR1023689 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=NOT) for ; Mon, 29 Aug 2005 14:04:59 -0700 (PDT) Mime-Version: 1.0 (Apple Message framework v734) To: freebsd-bugs@freebsd.org Message-Id: Content-Type: multipart/mixed; boundary=Apple-Mail-3-1013409321 From: Toby Peterson Date: Mon, 29 Aug 2005 14:04:57 -0700 X-Mailer: Apple Mail (2.734) Subject: [PATCH] hexdump -s speedup on /dev 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: Mon, 29 Aug 2005 21:05:00 -0000 --Apple-Mail-3-1013409321 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed This patch vastly increases the performance of hexdump -s on devices. Test: hexdump -s 100m /dev/ad0 - Toby --Apple-Mail-3-1013409321 Content-Transfer-Encoding: 7bit Content-Type: application/octet-stream; x-unix-mode=0644; name="hexdump.diff" Content-Disposition: attachment; filename=hexdump.diff ? hexdump ? hexdump.1.gz ? od.1.gz Index: display.c =================================================================== RCS file: /home/ncvs/src/usr.bin/hexdump/display.c,v retrieving revision 1.22 diff -u -r1.22 display.c --- display.c 4 Aug 2004 02:47:32 -0000 1.22 +++ display.c 29 Aug 2005 20:59:10 -0000 @@ -44,6 +44,7 @@ #include #include +#include #include #include #include @@ -384,12 +385,13 @@ return; } } - if (S_ISREG(sb.st_mode)) { - if (fseeko(stdin, skip, SEEK_SET)) - err(1, "%s", fname); + /* try to seek first; fall back on ESPIPE */ + if (fseeko(stdin, skip, SEEK_SET) == 0) { address += skip; skip = 0; } else { + if (errno != ESPIPE) + err(1, "%s", fname); for (cnt = 0; cnt < skip; ++cnt) if (getchar() == EOF) break; --Apple-Mail-3-1013409321--