]> Zhao Yanbai Git Server - minix.git/commitdiff
Importing usr.bin/hexdump 89/1089/1
authorThomas Cort <tcort@minix3.org>
Tue, 29 Oct 2013 18:48:38 +0000 (14:48 -0400)
committerThomas Cort <tcort@minix3.org>
Tue, 29 Oct 2013 19:18:45 +0000 (15:18 -0400)
Replaces commands/hexdump as well as commands/od.
No Minix-specific changes were needed.

test/testsh2.sh was modified to match the spacing
used in the output of the NetBSD od command.

Change-Id: I65ee1d30e8cdd546097462df7c38c2d38f3e891d

19 files changed:
commands/Makefile
commands/hexdump/Makefile [deleted file]
commands/od/Makefile [deleted file]
commands/od/od.c [deleted file]
man/man1/Makefile
man/man1/od.1 [deleted file]
releasetools/nbsd_ports
test/testsh2.sh
usr.bin/Makefile
usr.bin/hexdump/Makefile [new file with mode: 0644]
usr.bin/hexdump/conv.c [moved from commands/hexdump/conv.c with 99% similarity]
usr.bin/hexdump/display.c [moved from commands/hexdump/display.c with 99% similarity]
usr.bin/hexdump/hexdump.1 [moved from commands/hexdump/hexdump.1 with 80% similarity]
usr.bin/hexdump/hexdump.c [moved from commands/hexdump/hexdump.c with 79% similarity]
usr.bin/hexdump/hexdump.h [moved from commands/hexdump/hexdump.h with 93% similarity]
usr.bin/hexdump/hexsyntax.c [moved from commands/hexdump/hexsyntax.c with 91% similarity]
usr.bin/hexdump/od.1 [moved from commands/hexdump/od.1 with 90% similarity]
usr.bin/hexdump/odsyntax.c [moved from commands/hexdump/odsyntax.c with 98% similarity]
usr.bin/hexdump/parse.c [moved from commands/hexdump/parse.c with 97% similarity]

index cad684a4e2831c19f6f64afc038cfa40cd538a94..4754ecbf4501f875890f370ee3124c538574e14d 100644 (file)
@@ -10,14 +10,14 @@ SUBDIR=     add_route arp ash at backup btrace \
        dhrystone diff diskctl dumpcore \
        eject factor fbdctl \
        find fix format fortune fsck.mfs \
-       gcore gcov-pull getty grep hexdump host \
+       gcore gcov-pull getty grep host \
        hostaddr id ifconfig ifdef \
        intr ipcrm ipcs irdpd isoread last \
        less loadkeys loadramdisk logger look lp \
        lpd lspci mail MAKEDEV \
        mined mkfifo \
        mount mt netconf \
-       nonamed od patch \
+       nonamed patch \
        ping postinstall poweroff prep printroot \
        profile progressbar pr_routes ps pwdauth \
        ramdisk rarpd rawspeed rcp readclock \
diff --git a/commands/hexdump/Makefile b/commands/hexdump/Makefile
deleted file mode 100644 (file)
index ed82a36..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-#      $NetBSD: Makefile,v 1.13 2009/04/14 22:15:21 lukem Exp $
-#      from: @(#)Makefile      8.1 (Berkeley) 6/6/93
-
-PROG=  hexdump
-SRCS=  conv.c display.c hexdump.c hexsyntax.c odsyntax.c parse.c
-MAN=   hexdump.1 #od.1
-
-.ifndef HOSTPROG
-
-LDADD+=        -lutil
-DPADD+=        ${LIBUTIL}
-
-#LINKS=        ${BINDIR}/hexdump ${BINDIR}/od
-.endif
-
-.include <bsd.prog.mk>
diff --git a/commands/od/Makefile b/commands/od/Makefile
deleted file mode 100644 (file)
index dac693a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-PROG=  od
-MAN=
-
-.include <bsd.prog.mk>
diff --git a/commands/od/od.c b/commands/od/od.c
deleted file mode 100644 (file)
index 1a2a2bb..0000000
+++ /dev/null
@@ -1,314 +0,0 @@
-/* od - octal dump                Author: Andy Tanenbaum */
-
-#include <sys/types.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-
-
-int bflag, cflag, dflag, oflag, xflag, hflag, vflag;
-int linenr, width, state, ever;
-int prevwds[8];
-long off;
-char buf[512], buffer[BUFSIZ];
-int next;
-int bytespresent;
-
-int main(int argc, char **argv);
-long offset(int argc, char *argv [], int k);
-void dumpfile(void);
-void wdump(short *words, int k, int radix);
-void bdump(char bytes [16 ], int k, int c);
-void byte(int val, int c);
-int getwords(short **words);
-int same(short *w1, int *w2);
-void outword(int val, int radix);
-void outnum(int num, int radix);
-void addrout(long l);
-char hexit(int k);
-void usage(void);
-
-int main(argc, argv)
-int argc;
-char *argv[];
-{
-  int k, flags;
-  char *p;
-
-  /* Process flags */
-  setbuf(stdout, buffer);
-  flags = 0;
-  p = argv[1];
-  if (argc > 1 && *p == '-') {
-       /* Flags present. */
-       flags++;
-       p++;
-       while (*p) {
-               switch (*p) {
-                   case 'b':   bflag++;        break;
-                   case 'c':   cflag++;        break;
-                   case 'd':   dflag++;        break;
-                   case 'h':   hflag++;        break;
-                   case 'o':   oflag++;        break;
-                   case 'v':   vflag++;        break;  
-                   case 'x':   xflag++;        break;
-                   default:    usage();
-               }
-               p++;
-       }
-  } else {
-       oflag = 1;
-  }
-  if ((bflag | cflag | dflag | oflag | xflag) == 0) oflag = 1;
-  k = (flags ? 2 : 1);
-  if (bflag | cflag) {
-       width = 8;
-  } else if (oflag) {
-       width = 7;
-  } else if (dflag) {
-       width = 6;
-  } else {
-       width = 5;
-  }
-
-  /* Process file name, if any. */
-  p = argv[k];
-  if (k < argc && *p != '+') {
-       /* Explicit file name given. */
-       close(0);
-       if (open(argv[k], O_RDONLY) != 0) {
-               fprintf(stderr, "od: cannot open %s\n", argv[k]);
-               exit(1);
-       }
-       k++;
-  }
-
-  /* Process offset, if any. */
-  if (k < argc) {
-       /* Offset present. */
-       off = offset(argc, argv, k);
-       off = (off / 16L) * 16L;
-       lseek(0, off, SEEK_SET);
-  }
-  dumpfile();
-  addrout(off);
-  printf("\n");
-  return(0);
-}
-
-
-long offset(argc, argv, k)
-int argc;
-char *argv[];
-int k;
-{
-  int dot, radix;
-  char *p, c;
-  long val;
-
-  /* See if the offset is decimal. */
-  dot = 0;
-  p = argv[k];
-  while (*p)
-       if (*p++ == '.') dot = 1;
-
-  /* Convert offset to binary. */
-  radix = (dot ? 10 : 8);
-  val = 0;
-  p = argv[k];
-  if (*p == '+') p++;
-  while (*p != 0 && *p != '.') {
-       c = *p++;
-       if (c < '0' || c > '9') {
-               printf("Bad character in offset: %c\n", c);
-               exit(1);
-       }
-       val = radix * val + c - '0';
-  }
-
-  p = argv[k + 1];
-  if (k + 1 == argc - 1 && *p == 'b') val = 512L * val;
-  return(val);
-}
-
-
-void dumpfile()
-{
-  int k;
-  short *words;
-
-  while ((k = getwords(&words))) {     /* 'k' is # bytes read */
-       if (!vflag) {           /* ensure 'lazy' evaluation */
-               if (k == 16 && ever == 1 && same(words, prevwds)) {
-                       if (state == 0) {
-                               printf("*\n");
-                               state = 1;
-                               off += 16;
-                               continue;
-                       } else if (state == 1) {
-                               off += 16;
-                               continue;
-                       }
-               }
-       }
-       addrout(off);
-       off += k;
-       state = 0;
-       ever = 1;
-       linenr = 1;
-       if (oflag) wdump(words, k, 8);
-       if (dflag) wdump(words, k, 10);
-       if (xflag) wdump(words, k, 16);
-       if (cflag) bdump((char *)words, k, (int)'c');
-       if (bflag) bdump((char *)words, k, (int)'b');
-       for (k = 0; k < 8; k++) prevwds[k] = words[k];
-       for (k = 0; k < 8; k++) words[k] = 0;
-  }
-}
-
-
-void wdump(words, k, radix)
-short *words;
-int k, radix;
-{
-  int i;
-
-  if (linenr++ != 1) printf("       ");
-  for (i = 0; i < (k + 1) / 2; i++) outword(words[i] & 0xFFFF, radix);
-  printf("\n");
-}
-
-
-void bdump(bytes, k, c)
-char bytes[16];
-int k;
-char c;
-{
-  int i;
-
-  if (linenr++ != 1) printf("       ");
-  for (i = 0; i < k; i++) byte(bytes[i] & 0377, c);
-  printf("\n");
-}
-
-void byte(val, c)
-int val;
-char c;
-{
-  if (c == 'b') {
-       printf(" ");
-       outnum(val, 7);
-       return;
-  }
-  if (val == 0)
-       printf("  \\0");
-  else if (val == '\b')
-       printf("  \\b");
-  else if (val == '\f')
-       printf("  \\f");
-  else if (val == '\n')
-       printf("  \\n");
-  else if (val == '\r')
-       printf("  \\r");
-  else if (val == '\t')
-       printf("  \\t");
-  else if (val >= ' ' && val < 0177)
-       printf("   %c", val);
-  else {
-       printf(" ");
-       outnum(val, 7);
-  }
-}
-
-
-int getwords(words)
-short **words;
-{
-  int count;
-
-  if (next >= bytespresent) {
-       bytespresent = read(0, buf, 512);
-       next = 0;
-  }
-  if (next >= bytespresent) return(0);
-  *words = (short *) &buf[next];
-  if (next + 16 <= bytespresent)
-       count = 16;
-  else
-       count = bytespresent - next;
-
-  next += count;
-  return(count);
-}
-
-int same(w1, w2)
-short *w1;
-int *w2;
-{
-  int i;
-  i = 8;
-  while (i--)
-       if (*w1++ != *w2++) return(0);
-  return(1);
-}
-
-void outword(val, radix)
-int val, radix;
-{
-/* Output 'val' in 'radix' in a field of total size 'width'. */
-
-  int i;
-
-  if (radix == 16) i = width - 4;
-  if (radix == 10) i = width - 5;
-  if (radix == 8) i = width - 6;
-  if (i == 1)
-       printf(" ");
-  else if (i == 2)
-       printf("  ");
-  else if (i == 3)
-       printf("   ");
-  else if (i == 4)
-       printf("    ");
-  outnum(val, radix);
-}
-
-
-void outnum(num, radix)
-int num, radix;
-{
-/* Output a number with all leading 0s present.  Octal is 6 places,
- * decimal is 5 places, hex is 4 places.
- */
-  unsigned val;
-
-  val = (unsigned) num;
-  if (radix == 8)
-       printf ("%06o", val);
-  else if (radix == 10)
-       printf ("%05u", val);
-  else if (radix == 16)
-       printf ("%04x", val);
-  else if (radix == 7) {
-       /* special case */
-       printf ("%03o", val);
-  }
-}
-
-
-void addrout(l)
-long l;
-{
-  if (hflag == 0) {
-       printf("%07lo", l);
-  } else {
-       printf("%07lx", l);
-  }
-}
-
-
-void usage()
-{
-  fprintf(stderr, "Usage: od [-bcdhovx] [file] [ [+] offset [.] [b] ]\n");
-}
index 2dd7a8ff2f80b4bb1def04183b9d76b8ee41a7cf..9460797de87eb047fb302dc52e49770bbe4819bb 100644 (file)
@@ -11,7 +11,7 @@ MAN=  ash.1 at.1 \
        last.1 loadfont.1 loadkeys.1 logger.1 \
        look.1 lp.1 lspci.1 mail.1  \
        mixer.1 \
-       mkproto.1 mount.1 mt.1 od.1 \
+       mkproto.1 mount.1 mt.1 \
        ping.1 playwave.1 prep.1 \
        profile.1 ps.1 rcp.1 recwave.1 \
        remsync.1 rget.1 rlogin.1 rsh.1 rz.1 \
diff --git a/man/man1/od.1 b/man/man1/od.1
deleted file mode 100644 (file)
index 6601ab7..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-.TH OD 1
-.SH NAME
-od \- octal dump
-.SH SYNOPSIS
-\fBod\fR [\fB\-bcdhox\fR]\fR [\fIfile\fR] [ [\fB+\fR] \fIoffset\fR [\fB.\fR][\fBb\fR]\fR ]\fR
-.br
-.de FL
-.TP
-\\fB\\$1\\fR
-\\$2
-..
-.de EX
-.TP 20
-\\fB\\$1\\fR
-# \\$2
-..
-.SH OPTIONS
-.TP 5
-.B \-b
-# Dump bytes in octal
-.TP 5
-.B \-c
-# Dump bytes as ASCII characters
-.TP 5
-.B \-d
-# Dump words in decimal
-.TP 5
-.B \-h
-# Print addresses in hex (default is octal)
-.TP 5
-.B \-o
-# Dump words in octal (default)
-.TP 5
-.B \-v
-# Verbose (list duplicate lines)
-.TP 5
-.B \-x
-# Dump words in hex
-.SH EXAMPLES
-.TP 20
-.B od \-ox file
-# Dump \fIfile\fP in octal and hex
-.TP 20
-.B od \-d file +1000
-# Dump \fIfile\fP starting at byte 01000
-.TP 20
-.B od \-c file +10.b
-# Dump \fIfile\fP starting at block 10
-.SH DESCRIPTION
-.PP
-.I Od
-dumps a file in one or more formats.
-If \fIfile\fP is missing, \fIstdin\fR is dumped.
-The \fIoffset\fP argument tells
-.I od
-to skip a certain number of bytes or blocks before starting.
-The offset is in octal bytes, unless it is followed by a 
-\&'.\&' for decimal or \fBb\fP for blocks or both.
index b182cfa1e3edc40ffbf1dd05db0838412d690b89..ccfb793c4b59d760e6218e290003e1fb2beddebd 100644 (file)
 2012/10/17 12:00:00,usr.bin/fsplit
 2013/04/05 12:00:00,usr.bin/ftp
 2013/03/18 12:00:00,usr.bin/head
+2012/10/17 12:00:00,usr.bin/hexdump
 2012/10/17 12:00:00,usr.bin/genassym
 2013/03/09 12:00:00,usr.bin/getopt
 2012/10/17 12:00:00,usr.bin/gzip
index f4b4f7ad814622c8f6682692644530c65cab79b7..4673f4726b3cb6b5aa9614f30ff136fb2a9f16d2 100755 (executable)
@@ -116,18 +116,18 @@ head -1 $f |od >x         # see if od converts ascii to octal ok
 if [ $ARCH = i86 -o $ARCH = i386 ]
 then
 cat >answer <<END
-0000000 064124 020145 064564 062555 064040 071541 061440 066557
-0000020 020145 064164 020145 060567 071154 071565 071440 064541
-0000040 020144 067564 072040 066141 020153 063157 066440 067141
-0000060 020171 064164 067151 071547 000012
+0000000   064124  020145  064564  062555  064040  071541  061440  066557
+0000020   020145  064164  020145  060567  071154  071565  071440  064541
+0000040   020144  067564  072040  066141  020153  063157  066440  067141
+0000060   020171  064164  067151  071547  000012                        
 0000071
 END
 else
 cat >answer <<END
-0000000 052150 062440 072151 066545 020150 060563 020143 067555
-0000020 062440 072150 062440 073541 066162 072563 020163 060551
-0000040 062040 072157 020164 060554 065440 067546 020155 060556
-0000060 074440 072150 064556 063563 005000
+0000000   052150  062440  072151  066545  020150  060563  020143  067555
+0000020   062440  072150  062440  073541  066162  072563  020163  060551
+0000040   062040  072157  020164  060554  065440  067546  020155  060556
+0000060   074440  072150  064556  063563  005000                        
 0000071
 END
 fi
@@ -138,18 +138,18 @@ head -1 $f |od -d >x              # see if od converts ascii to decimal ok
 if [ $ARCH = i86 -o $ARCH = i386 ]
 then
 cat >answer <<END
-0000000 26708 08293 26996 25965 26656 29537 25376 28015
-0000020 08293 26740 08293 24951 29292 29557 29472 26977
-0000040 08292 28532 29728 27745 08299 26223 27936 28257
-0000060 08313 26740 28265 29543 00010
+0000000    26708   08293   26996   25965   26656   29537   25376   28015
+0000020    08293   26740   08293   24951   29292   29557   29472   26977
+0000040    08292   28532   29728   27745   08299   26223   27936   28257
+0000060    08313   26740   28265   29543   00010                        
 0000071
 END
 else
 cat >answer <<END
-0000000 21608 25888 29801 28005 08296 24947 08291 28525
-0000020 25888 29800 25888 30561 27762 30067 08307 24937
-0000040 25632 29807 08308 24940 27424 28518 08301 24942
-0000060 31008 29800 26990 26483 02560
+0000000    21608   25888   29801   28005   08296   24947   08291   28525
+0000020    25888   29800   25888   30561   27762   30067   08307   24937
+0000040    25632   29807   08308   24940   27424   28518   08301   24942
+0000060    31008   29800   26990   26483   02560                        
 0000071
 END
 fi
index 1d99a559e12f7e4a84ff5f43631b66de4534cb3d..cf6652067617d4c738421b15dc2bb29aa24f004d 100644 (file)
@@ -12,7 +12,7 @@ SUBDIR= asa \
        env expand \
        finger fold from \
        fsplit ftp genassym getopt \
-       head indent infocmp join \
+       head hexdump indent infocmp join \
        ldd leave \
        lock login logname lorder m4 \
        machine make man mesg \
diff --git a/usr.bin/hexdump/Makefile b/usr.bin/hexdump/Makefile
new file mode 100644 (file)
index 0000000..b0ee808
--- /dev/null
@@ -0,0 +1,18 @@
+#      $NetBSD: Makefile,v 1.14 2011/08/14 13:45:34 christos Exp $
+#      from: @(#)Makefile      8.1 (Berkeley) 6/6/93
+
+PROG=  hexdump
+SRCS=  conv.c display.c hexdump.c hexsyntax.c odsyntax.c parse.c
+MAN=   hexdump.1 od.1
+
+.ifndef HOSTPROG
+LDADD+=-lutil
+DPADD+=${LIBUTIL}
+
+LINKS= ${BINDIR}/hexdump ${BINDIR}/od
+.endif
+
+COPTS.conv.c += -Wno-format-nonliteral
+COPTS.display.c += -Wno-format-nonliteral
+
+.include <bsd.prog.mk>
similarity index 99%
rename from commands/hexdump/conv.c
rename to usr.bin/hexdump/conv.c
index 8376c0dfcac94a61bcbf9da1907774790f281b67..6b28ffe959e4f0e9f4871e17d60c9ebe9bc8100d 100644 (file)
@@ -34,7 +34,6 @@
 #endif
 
 #include <sys/cdefs.h>
-#if 0
 #if !defined(lint)
 #if 0
 static char sccsid[] = "@(#)conv.c     8.1 (Berkeley) 6/6/93";
@@ -42,7 +41,6 @@ static char sccsid[] = "@(#)conv.c    8.1 (Berkeley) 6/6/93";
 __RCSID("$NetBSD: conv.c,v 1.13 2010/02/09 14:06:37 drochner Exp $");
 #endif
 #endif /* not lint */
-#endif
 
 #include <sys/types.h>
 
similarity index 99%
rename from commands/hexdump/display.c
rename to usr.bin/hexdump/display.c
index 54832f89bc51c0aa1c94820fd849ebf63f4c3412..cb1d973ffbc5ba2c674d691df7d6241a6cf91ec9 100644 (file)
@@ -34,7 +34,6 @@
 #endif
 
 #include <sys/cdefs.h>
-#if 0
 #if !defined(lint)
 #if 0
 static char sccsid[] = "@(#)display.c  8.1 (Berkeley) 6/6/93";
@@ -42,7 +41,6 @@ static char sccsid[] = "@(#)display.c 8.1 (Berkeley) 6/6/93";
 __RCSID("$NetBSD: display.c,v 1.21 2009/01/18 21:34:32 apb Exp $");
 #endif
 #endif /* not lint */
-#endif
 
 #include <sys/param.h>
 #include <sys/stat.h>
similarity index 80%
rename from commands/hexdump/hexdump.1
rename to usr.bin/hexdump/hexdump.1
index c4684f218895b04e0a2932d36891f8a5270cd367..96396f3b79f4290c9c4a62baa9bd215c635add1d 100644 (file)
@@ -1,4 +1,4 @@
-.\"    $NetBSD: hexdump.1,v 1.20 2010/02/27 10:45:23 mbalmer Exp $
+.\"    $NetBSD: hexdump.1,v 1.24 2012/07/06 14:10:06 wiz Exp $
 .\"
 .\" Copyright (c) 1989, 1990, 1993
 .\"    The Regents of the University of California.  All rights reserved.
@@ -29,7 +29,7 @@
 .\"
 .\"    from: @(#)hexdump.1     8.2 (Berkeley) 4/18/94
 .\"
-.Dd February 27, 2010
+.Dd June 24, 2012
 .Dt HEXDUMP 1
 .Os
 .Sh NAME
 .Nd ascii, decimal, hexadecimal, octal dump
 .Sh SYNOPSIS
 .Nm
-.Op Fl bcCdovx
-.Bk -words
+.Op Fl bCcdovx
 .Op Fl e Ar format_string
-.Ek
-.Bk -words
 .Op Fl f Ar format_file
-.Ek
-.Bk -words
 .Op Fl n Ar length
-.Ek
-.Bk -words
 .Op Fl s Ar skip
-.Ek
-.Ar file ...
+.Op Ar
 .Sh DESCRIPTION
-The hexdump utility is a filter which displays the specified files, or
-the standard input, if no files are specified, in a user specified
+The
+.Nm
+utility is a filter which displays each specified
+.Ar file ,
+or the standard input if no
+.Ar file
+arguments are specified, in a user specified
 format.
 .Pp
 The options are as follows:
@@ -63,16 +60,18 @@ The options are as follows:
 Display the input offset in hexadecimal, followed by sixteen
 space-separated, three column, zero-filled, bytes of input data,
 in octal, per line.
+.It Fl C
+.Em Canonical hex+ASCII display .
+Display the input offset in hexadecimal, followed by sixteen
+space-separated, two column, hexadecimal bytes, followed by the
+same sixteen bytes in %_p format enclosed in
+.Sq |
+characters.
 .It Fl c
 .Em One-byte character display .
 Display the input offset in hexadecimal, followed by sixteen
 space-separated, three column, space-filled, characters of input
 data per line.
-.It Fl C
-.Em Canonical hex+ASCII display .
-Display the input offset in hexadecimal, followed by sixteen
-space-separated, two column, hexadecimal bytes, followed by the
-same sixteen bytes in %_p format enclosed in ``|'' characters.
 .It Fl d
 .Em Two-byte decimal display .
 Display the input offset in hexadecimal, followed by eight
@@ -83,7 +82,7 @@ Specify a format string to be used for displaying data.
 .It Fl f Ar format_file
 Specify a file that contains one or more newline separated format strings.
 Empty lines and lines whose first non-blank character is a hash mark
-.Pf ( Cm \&# )
+.Pq Sq #
 are ignored.
 .It Fl n Ar length
 Interpret only
@@ -94,22 +93,22 @@ bytes of input.
 Display the input offset in hexadecimal, followed by eight
 space-separated, six column, zero-filled, two byte quantities of
 input data, in octal, per line.
-.It Fl s Ar offset
+.It Fl s Ar skip
 Skip
-.Ar offset
+.Ar skip
 bytes from the beginning of the input.
 By default,
-.Ar offset
+.Ar skip
 is interpreted as a decimal number.
 With a leading
 .Cm 0x
 or
 .Cm 0X ,
-.Ar offset
-is interpreted as a hexadecimal number,
+.Ar skip
+is interpreted as a hexadecimal number;
 otherwise, with a leading
 .Cm 0 ,
-.Ar offset
+.Ar skip
 is interpreted as an octal number.
 Appending the character
 .Cm b ,
@@ -117,7 +116,7 @@ Appending the character
 or
 .Cm m
 to
-.Ar offset
+.Ar skip
 causes it to be interpreted as a multiple of
 .Li 512 ,
 .Li 1024 ,
@@ -127,13 +126,16 @@ respectively.
 .It Fl v
 The
 .Fl v
-option causes hexdump to display all input data.
+option causes
+.Nm
+to display all input data.
 Without the
 .Fl v
 option, any number of groups of output lines, which would be
 identical to the immediately preceding group of output lines (except
 for the input offsets), are replaced with a line containing a
-single asterisk.
+single asterisk
+.Pq Sq \&* .
 .It Fl x
 .Em Two-byte hexadecimal display .
 Display the input offset in hexadecimal, followed by eight, space
@@ -164,47 +166,61 @@ If specified it defines the number of bytes to be interpreted by
 each iteration of the format.
 .Pp
 If an iteration count and/or a byte count is specified, a single slash
+.Pq Sq /
 must be placed after the iteration count and/or before the byte count
 to disambiguate them.
 Any whitespace before or after the slash is ignored.
 .Pp
 The format is required and must be surrounded by double quote
-(" ") marks.
+.Pq Sq \&"
+marks.
 It is interpreted as a fprintf-style format string (see
 .Xr fprintf 3 ) ,
 with the
 following exceptions:
 .Bl -bullet -offset indent
 .It
-An asterisk (*) may not be used as a field width or precision.
+An asterisk
+.Pq Sq \&*
+may not be used as a field width or precision.
 .It
 A byte count or field precision
 .Em is
-required for each ``s'' conversion
+required for each
+.Sq s
+conversion
 character (unlike the
 .Xr fprintf 3
 default which prints the entire string if the precision is unspecified).
 .It
-The conversion characters ``h'', ``l'', ``n'', ``p'' and ``q'' are
+The conversion characters
+.Sq h ,
+.Sq l ,
+.Sq n ,
+.Sq p ,
+and
+.Sq q
+are
 not supported.
 .It
 The single character escape sequences
 described in the C standard are supported:
 .Bd -ragged -offset indent -compact
-.Bl -column \*[Lt]alert_character\*[Gt]
+.Bl -column Xalert_characterX
 .It NUL        \e0
-.It \*[Lt]alert character\*[Gt]        \ea
-.It \*[Lt]backspace\*[Gt]      \eb
-.It \*[Lt]form-feed\*[Gt]      \ef
-.It \*[Lt]newline\*[Gt]        \en
-.It \*[Lt]carriage return\*[Gt]        \er
-.It \*[Lt]tab\*[Gt]    \et
-.It \*[Lt]vertical tab\*[Gt]   \ev
+.It Aq alert character \ea
+.It Aq backspace       \eb
+.It Aq form-feed       \ef
+.It Aq newline \en
+.It Aq carriage return \er
+.It Aq tab     \et
+.It Aq vertical tab    \ev
 .El
 .Ed
 .El
 .Pp
-Hexdump also supports the following additional conversion strings:
+.Nm
+also supports the following additional conversion strings:
 .Bl -tag -width Fl
 .It Cm \&_a Ns Op Cm dox
 Display the input offset, cumulative across input files, of the
@@ -223,26 +239,26 @@ conversion string except that it is only performed
 once, when all of the input data has been processed.
 .It Cm \&_c
 Output characters in the default character set.
-Nonprinting characters are displayed in three character, zero-padded
+Non-printing characters are displayed in three character, zero-padded
 octal, except for those representable by standard escape notation
 (see above),
 which are displayed as two character strings.
 .It Cm _p
 Output characters in the default character set.
-Nonprinting characters are displayed as a single
-.Dq Cm \&. .
+Non-printing characters are displayed as a single
+.Sq Cm \&. .
 .It Cm _u
 Output US ASCII characters, with the exception that control characters are
 displayed using the following, lower-case, names.
 Characters greater than 0xff, hexadecimal, are displayed as hexadecimal
 strings.
 .Bl -column \&000_nu \&001_so \&002_st \&003_et \&004_eo
-.It \&000\ nul\t001\ soh\t002\ stx\t003\ etx\t004\ eot\t005\ enq
-.It \&006\ ack\t007\ bel\t008\ bs\t009\ ht\t00A\ lf\t00B\ vt
-.It \&00C\ ff\t00D\ cr\t00E\ so\t00F\ si\t010\ dle\t011\ dc1
-.It \&012\ dc2\t013\ dc3\t014\ dc4\t015\ nak\t016\ syn\t017\ etb
-.It \&018\ can\t019\ em\t01A\ sub\t01B\ esc\t01C\ fs\t01D\ gs
-.It \&01E\ rs\t01F\ us\t07F\ del
+.It \&000\ nul Ta 001\ soh Ta 002\ stx Ta 003\ etx Ta 004\ eot Ta 005\ enq
+.It \&006\ ack Ta 007\ bel Ta 008\ bs Ta 009\ ht Ta 00A\ lf Ta 00B\ vt
+.It \&00C\ ff Ta 00D\ cr Ta 00E\ so Ta 00F\ si Ta 010\ dle Ta 011\ dc1
+.It \&012\ dc2 Ta 013\ dc3 Ta 014\ dc4 Ta 015\ nak Ta 016\ syn Ta 017\ etb
+.It \&018\ can Ta 019\ em Ta 01A\ sub Ta 01B\ esc Ta 01C\ fs Ta 01D\ gs
+.It \&01E\ rs Ta 01F\ us Ta 07F\ del
 .El
 .El
 .Pp
@@ -262,7 +278,9 @@ data required by each format unit, which is the iteration count times the
 byte count, or the iteration count times the number of bytes required by
 the format if the byte count is not specified.
 .Pp
-The input is manipulated in ``blocks'', where a block is defined as the
+The input is manipulated in
+.Dq blocks ,
+where a block is defined as the
 largest amount of data specified by any format string.
 Format strings interpreting less than an input block's worth of data,
 whose last format unit both interprets some number of bytes and does
@@ -270,7 +288,9 @@ not have a specified iteration count, have the iteration count
 incremented until the entire input block has been processed or there
 is not enough data remaining in the block to satisfy the format string.
 .Pp
-If, either as a result of user specification or hexdump modifying
+If, either as a result of user specification or
+.Nm
+modifying
 the iteration count as described above, an iteration count is
 greater than one, no trailing whitespace characters are output
 during the last iteration.
@@ -297,23 +317,21 @@ output by an
 conversion character with the same field width
 and precision as the original conversion character or conversion
 string but with any
-.Dq Li \&+ ,
-.Dq \&\ \& ,
-.Dq Li \&#
+.Sq Li \&+ ,
+.Sq \&\ \& ,
+and
+.Sq Li \&#
 conversion flag characters
-removed, and referencing a NULL string.
+removed, and referencing a
+.Dv NULL
+string.
 .Pp
 If no format strings are specified, the default display is equivalent
 to specifying the
 .Fl x
 option.
-.Pp
-.Nm
-exits 0 on success and \*[Gt]0 if an error occurred.
-.Sh MINIX-SPECIFIC notes
-If hexdump is compiled on a compiler that does not support long long (that is,
-ACK), 64-bit (8 byte) integer formats are not supported. Conversions where this
-is the default are changed to use a 32-bit 4 byte) default instead.
+.Sh EXIT STATUS
+.Ex -std
 .Sh EXAMPLES
 Display the input in perusal format:
 .Bd -literal -offset indent
@@ -322,8 +340,12 @@ Display the input in perusal format:
 "\en"
 .Ed
 .Pp
-Implement the \-x option:
+Implement the
+.Fl x
+option:
 .Bd -literal -offset indent
 "%07.7_Ax\en"
 "%07.7_ax  " 8/2 "%04x " "\en"
 .Ed
+.Sh SEE ALSO
+.Xr od 1
similarity index 79%
rename from commands/hexdump/hexdump.c
rename to usr.bin/hexdump/hexdump.c
index 8cbb274bb8205052d25e6cd7dac62e3c98f108e6..2f71835272ef3e43f02825d148b5955ed8d87f81 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: hexdump.c,v 1.15 2010/02/09 14:06:37 drochner Exp $    */
+/*     $NetBSD: hexdump.c,v 1.18 2012/07/06 09:06:43 wiz Exp $ */
 
 /*
  * Copyright (c) 1989, 1993
 #endif
 
 #include <sys/cdefs.h>
-#if 0
 #if !defined(lint)
 __COPYRIGHT("@(#) Copyright (c) 1989, 1993\
  The Regents of the University of California.  All rights reserved.");
 #if 0
 static char sccsid[] = "@(#)hexdump.c  8.1 (Berkeley) 6/6/93";
 #else
-__RCSID("$NetBSD: hexdump.c,v 1.15 2010/02/09 14:06:37 drochner Exp $");
+__RCSID("$NetBSD: hexdump.c,v 1.18 2012/07/06 09:06:43 wiz Exp $");
 #endif
 #endif /* not lint */
-#endif
 
 #include <sys/types.h>
 
@@ -60,8 +58,7 @@ FS *fshead;                           /* head of format strings */
 int blocksize;                         /* data block size */
 int exitval;                           /* final exit value */
 int length = -1;                       /* max bytes to read */
-
-int    main(int, char **);
+static int isod = 0;
 
 int
 main(int argc, char *argv[])
@@ -71,10 +68,15 @@ main(int argc, char *argv[])
 
        setlocale(LC_ALL, "");
 
-       if (!(p = strrchr(argv[0], 'o')) || strcmp(p, "od"))
-               newsyntax(argc, &argv);
-       else
+       isod = 0;
+       p = strrchr(argv[0], 'o');
+       if (p != NULL && strcmp(p, "od") == 0)
+               isod = 1;
+
+       if (isod)
                odsyntax(argc, &argv);
+       else
+               hexsyntax(argc, &argv);
 
        /* figure out the data block size */
        for (blocksize = 0, tfs = fshead; tfs; tfs = tfs->nextfs) {
@@ -90,3 +92,19 @@ main(int argc, char *argv[])
        display();
        exit(exitval);
 }
+
+void
+usage(void)
+{
+       const char *pname = getprogname();
+
+       (void)fprintf(stderr, "usage: %s ", pname);
+       if (isod)
+               (void)fprintf(stderr, "[-aBbcDdeFfHhIiLlOovXx] [-A base] "
+                   "[-j skip] [-N length] [-t type_string] [[+]offset[.][Bb]] "
+                   "[file ...]\n");
+       else
+               (void)fprintf(stderr, "[-bCcdovx] [-e format_string] [-f format_file] "
+                   "[-n length] [-s skip] [file ...]\n");
+       exit(1);
+}
similarity index 93%
rename from commands/hexdump/hexdump.h
rename to usr.bin/hexdump/hexdump.h
index e3a086d979fb0249acfb0da4e73c977647f629f5..6d2c543c17e33518b9fb00a3f5bd9888df598614 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: hexdump.h,v 1.11 2010/02/09 14:06:37 drochner Exp $    */
+/*     $NetBSD: hexdump.h,v 1.13 2011/09/04 20:27:27 joerg Exp $       */
 
 /*
  * Copyright (c) 1989, 1993
@@ -81,21 +81,16 @@ extern enum _vflag vflag;
 
 void    add(const char *);
 void    addfile(char *);
-void    badcnt(char *);
-void    badconv(char *);
-void    badfmt(const char *);
-void    badsfmt(void);
 void    bpad(PR *);
 void    conv_c(PR *, u_char *);
 void    conv_u(PR *, u_char *);
 void    display(void);
 void    doskip(const char *, int);
-/*void  err(const char *, ...);*/
 void    escape(char *);
 u_char *get(void);
-void    newsyntax(int, char ***);
+void    hexsyntax(int, char ***);
 int     next(char **);
 void    odsyntax(int, char ***);
 void    rewrite(FS *);
 int     size(FS *);
-void    usage(void);
+void    usage(void) __attribute__((__noreturn__));
similarity index 91%
rename from commands/hexdump/hexsyntax.c
rename to usr.bin/hexdump/hexsyntax.c
index 7364f5d978afa4e5076333ac24236c35cee8504d..67f84cfdce734598dd40a284513ddd8ea7374ce0 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: hexsyntax.c,v 1.13 2006/01/04 01:30:21 perry Exp $     */
+/*     $NetBSD: hexsyntax.c,v 1.14 2010/11/27 20:46:38 christos Exp $  */
 
 /*-
  * Copyright (c) 1990, 1993
 #endif
 
 #include <sys/cdefs.h>
-#if 0
 #if !defined(lint)
 #if 0
 static char sccsid[] = "@(#)hexsyntax.c        8.2 (Berkeley) 5/4/95";
 #else
-__RCSID("$NetBSD: hexsyntax.c,v 1.13 2006/01/04 01:30:21 perry Exp $");
+__RCSID("$NetBSD: hexsyntax.c,v 1.14 2010/11/27 20:46:38 christos Exp $");
 #endif
 #endif /* not lint */
-#endif
 
 #include <sys/types.h>
 
@@ -57,7 +55,7 @@ __RCSID("$NetBSD: hexsyntax.c,v 1.13 2006/01/04 01:30:21 perry Exp $");
 off_t skip;                            /* bytes to skip */
 
 void
-newsyntax(int argc, char ***argvp)
+hexsyntax(int argc, char ***argvp)
 {
        int ch;
        char *p, **argv;
@@ -129,12 +127,3 @@ newsyntax(int argc, char ***argvp)
 
        *argvp += optind;
 }
-
-void
-usage(void)
-{
-       (void)fprintf(stderr,
-"hexdump: [-bcCdovx] [-e fmt] [-f fmt_file] [-n length] [-s skip] [file ...]\n"
-       );
-       exit(1);
-}
similarity index 90%
rename from commands/hexdump/od.1
rename to usr.bin/hexdump/od.1
index a0fe654df9323176a236efc1006f63db027bb695..ffed1462e11988e9d4fb45fad5724773255599e1 100644 (file)
@@ -1,4 +1,4 @@
-.\"  $NetBSD: od.1,v 1.25 2010/02/09 14:25:39 wiz Exp $
+.\"  $NetBSD: od.1,v 1.27 2012/07/06 09:05:26 wiz Exp $
 .\"
 .\" Copyright (c) 2001 The NetBSD Foundation, Inc.
 .\" All rights reserved.
@@ -27,7 +27,7 @@
 .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 .\" POSSIBILITY OF SUCH DAMAGE.
 .\"/
-.Dd February 9, 2010
+.Dd June 24, 2012
 .Dt OD 1
 .Os
 .Sh NAME
 .Sh SYNOPSIS
 .Nm
 .Op Fl aBbcDdeFfHhIiLlOovXx
-.Bk -words
 .Op Fl A Ar base
 .Op Fl j Ar skip
-.Ek
-.Bk -words
 .Op Fl N Ar length
-.Ek
-.Bk -words
 .Op Fl t Ar type_string
-.Ek
 .Sm off
 .Oo
 .Op Cm \&+
 .Op Cm Bb
 .Sm on
 .Oc
-.Ar file ...
+.Op Ar
 .Sh DESCRIPTION
+The
+.Nm
+utility is a filter which displays each specified
+.Ar file ,
+or the standard input if no
+.Ar file
+arguments are specified, in a user specified
+format.
+.Pp
 The options are as follows:
 .Bl -tag -width Fl
 .It Fl A Ar base
@@ -131,22 +134,22 @@ decimal, per line.
 Display the input offset in octal, followed by eight space-separated,
 six column, space filled, two-byte units of input data, in decimal,
 per line.
-.It Fl j Ar offset
+.It Fl j Ar skip
 Skip
-.Ar offset
+.Ar skip
 bytes from the beginning of the input.
 By default,
-.Ar offset
+.Ar skip
 is interpreted as a decimal number.
 With a leading
 .Cm 0x
 or
 .Cm 0X ,
-.Ar offset
-is interpreted as a hexadecimal number,
+.Ar skip
+is interpreted as a hexadecimal number;
 otherwise, with a leading
 .Cm 0 ,
-.Ar offset
+.Ar skip
 is interpreted as an octal number.
 Appending the character
 .Cm b ,
@@ -154,7 +157,7 @@ Appending the character
 or
 .Cm m
 to
-.Ar offset
+.Ar skip
 causes it to be interpreted as a multiple of
 .Li 512 ,
 .Li 1024 ,
@@ -194,13 +197,15 @@ selects US-ASCII output, with control characters replaced with their
 names instead of as C escape sequences.
 See also the
 .Cm _u
-conversion provided by hexdump(1).
+conversion provided by
+.Xr hexdump 1 .
 .Pp
 .Cm c
 selects a standard character based conversion.
 See also the
 .Cm _c
-conversion provided by hexdump(1).
+conversion provided by
+.Xr hexdump 1 .
 .Pp
 .Cm f
 selects the floating point output format.
@@ -216,7 +221,8 @@ to specify eight byte floating point output.
 The default output format is eight byte floats.
 See also the
 .Cm e
-conversion provided by hexdump(1).
+conversion provided by
+.Xr hexdump 1 .
 .Pp
 .Cm d ,
 .Cm o ,
@@ -256,7 +262,8 @@ See also the
 .Cm u ,
 and
 .Cm x
-conversions provided by hexdump(1).
+conversions provided by
+.Xr hexdump 1 .
 .\"(a|c|f[FLD]?|[doux][C1S2I4L8]?)*
 .It Fl v
 The
@@ -269,7 +276,8 @@ Without the
 option, any number of groups of output lines, which would be
 identical to the immediately preceding group of output lines (except
 for the input offsets), are replaced with a line comprised of a
-single asterisk.
+single asterisk
+.Pq Sq \&* .
 .It Fl X
 Same as
 .Fl H .
@@ -286,18 +294,19 @@ If no options are specified, the
 default display is equivalent to specifying the
 .Fl o
 option.
-.Pp
-.Nm
-exits 0 on success and \*[Gt]0 if an error occurred.
+.Sh EXIT STATUS
+.Ex -std
 .Sh SEE ALSO
 .Xr hexdump 1 ,
 .Xr strings 1
 .Sh HISTORY
-A
+An
 .Nm
-command appears in
+command appeared in
 .At v1 .
 .Pp
-This man page was written in February 2001 by Andrew Brown, shortly
-after he augmented the deprecated od syntax to include things he felt
+This man page was initially written in February 2001 by Andrew Brown, shortly
+after he augmented the deprecated
+.Nm
+syntax to include things he felt
 had been missing for a long time.
similarity index 98%
rename from commands/hexdump/odsyntax.c
rename to usr.bin/hexdump/odsyntax.c
index 5ca9769e3157a7d65d9779d92c5c4a3edc74666a..50770a4b1b202a0e15bb758434a53f15264fe854 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: odsyntax.c,v 1.26 2010/02/09 14:06:37 drochner Exp $   */
+/*     $NetBSD: odsyntax.c,v 1.28 2010/11/27 20:46:38 christos Exp $   */
 
 /*-
  * Copyright (c) 1990, 1993
 #endif
 
 #include <sys/cdefs.h>
-#if 0
 #if !defined(lint)
 #if 0
 static char sccsid[] = "@(#)odsyntax.c 8.2 (Berkeley) 5/4/95";
 #else
-__RCSID("$NetBSD: odsyntax.c,v 1.26 2010/02/09 14:06:37 drochner Exp $");
+__RCSID("$NetBSD: odsyntax.c,v 1.28 2010/11/27 20:46:38 christos Exp $");
 #endif
 #endif /* not lint */
-#endif
 
 #include <sys/types.h>
 
similarity index 97%
rename from commands/hexdump/parse.c
rename to usr.bin/hexdump/parse.c
index cc786f9090ded05dade6c207a8aea3f5fc8b88de..e29d966a566be90ab777764b6949f8b14dcaf300 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: parse.c,v 1.26 2009/01/18 21:34:32 apb Exp $   */
+/*     $NetBSD: parse.c,v 1.27 2011/09/04 20:27:27 joerg Exp $ */
 
 /*
  * Copyright (c) 1989, 1993
 #endif
 
 #include <sys/cdefs.h>
-#if 0
 #if !defined(lint)
 #if 0
 static char sccsid[] = "@(#)parse.c    8.1 (Berkeley) 6/6/93";
 #else
-__RCSID("$NetBSD: parse.c,v 1.26 2009/01/18 21:34:32 apb Exp $");
+__RCSID("$NetBSD: parse.c,v 1.27 2011/09/04 20:27:27 joerg Exp $");
 #endif
 #endif /* not lint */
-#endif
 
 #include <sys/types.h>
 #include <sys/file.h>
@@ -59,6 +57,11 @@ __RCSID("$NetBSD: parse.c,v 1.26 2009/01/18 21:34:32 apb Exp $");
 
 #include "hexdump.h"
 
+__dead static void      badcnt(char *);
+__dead static void      badconv(char *);
+__dead static void      badfmt(const char *);
+__dead static void      badsfmt(void);
+
 FU *endfu;                                     /* format at end-of-data */
 
 void
@@ -520,25 +523,25 @@ escape(char *p1)
        }
 }
 
-void
+static void
 badcnt(char *s)
 {
        errx(1, "%s: bad byte count", s);
 }
 
-void
+static void
 badsfmt(void)
 {
        errx(1, "%%s: requires a precision or a byte count");
 }
 
-void
+static void
 badfmt(const char *fmt)
 {
        errx(1, "\"%s\": bad format", fmt);
 }
 
-void
+static void
 badconv(char *ch)
 {
        errx(1, "%%%s: bad conversion character", ch);