141456Sbostic /*- 2*62031Sbostic * Copyright (c) 1990, 1993 3*62031Sbostic * The Regents of the University of California. All rights reserved. 441456Sbostic * 541456Sbostic * %sccs.include.redist.c% 641456Sbostic */ 741456Sbostic 841456Sbostic #ifndef lint 9*62031Sbostic static char sccsid[] = "@(#)hexsyntax.c 8.1 (Berkeley) 06/06/93"; 1041456Sbostic #endif /* not lint */ 1141456Sbostic 1241456Sbostic #include <sys/types.h> 1355201Sbostic 1441456Sbostic #include <stdio.h> 1555201Sbostic #include <stdlib.h> 1655201Sbostic #include <string.h> 1741456Sbostic #include "hexdump.h" 1841456Sbostic 1941456Sbostic off_t skip; /* bytes to skip */ 2041456Sbostic 2155201Sbostic void 2241456Sbostic newsyntax(argc, argvp) 2341456Sbostic int argc; 2441456Sbostic char ***argvp; 2541456Sbostic { 2641456Sbostic extern enum _vflag vflag; 2741456Sbostic extern FS *fshead; 2855201Sbostic extern int length; 2941456Sbostic int ch; 3041456Sbostic char *p, **argv; 3141456Sbostic 3241456Sbostic argv = *argvp; 3341456Sbostic while ((ch = getopt(argc, argv, "bcde:f:n:os:vx")) != EOF) 3441456Sbostic switch (ch) { 3541456Sbostic case 'b': 3641456Sbostic add("\"%07.7_Ax\n\""); 3741456Sbostic add("\"%07.7_ax \" 16/1 \"%03o \" \"\\n\""); 3841456Sbostic break; 3941456Sbostic case 'c': 4041456Sbostic add("\"%07.7_Ax\n\""); 4141456Sbostic add("\"%07.7_ax \" 16/1 \"%3_c \" \"\\n\""); 4241456Sbostic break; 4341456Sbostic case 'd': 4441456Sbostic add("\"%07.7_Ax\n\""); 4541459Sbostic add("\"%07.7_ax \" 8/2 \" %05u \" \"\\n\""); 4641456Sbostic break; 4741456Sbostic case 'e': 4841456Sbostic add(optarg); 4941456Sbostic break; 5041456Sbostic case 'f': 5141456Sbostic addfile(optarg); 5241456Sbostic break; 5341456Sbostic case 'n': 5455201Sbostic if ((length = atoi(optarg)) < 0) 5555201Sbostic err("%s: bad length value", optarg); 5641456Sbostic break; 5741456Sbostic case 'o': 5841456Sbostic add("\"%07.7_Ax\n\""); 5941459Sbostic add("\"%07.7_ax \" 8/2 \" %06o \" \"\\n\""); 6041456Sbostic break; 6141456Sbostic case 's': 6255201Sbostic if ((skip = strtol(optarg, &p, 0)) < 0) 6355201Sbostic err("%s: bad skip value", optarg); 6441456Sbostic switch(*p) { 6541456Sbostic case 'b': 6641456Sbostic skip *= 512; 6741456Sbostic break; 6841456Sbostic case 'k': 6941456Sbostic skip *= 1024; 7041456Sbostic break; 7141456Sbostic case 'm': 7241456Sbostic skip *= 1048576; 7341456Sbostic break; 7441456Sbostic } 7541456Sbostic break; 7641456Sbostic case 'v': 7741456Sbostic vflag = ALL; 7841456Sbostic break; 7941456Sbostic case 'x': 8041456Sbostic add("\"%07.7_Ax\n\""); 8141459Sbostic add("\"%07.7_ax \" 8/2 \" %04x \" \"\\n\""); 8241456Sbostic break; 8341456Sbostic case '?': 8441456Sbostic usage(); 8541456Sbostic } 8641456Sbostic 8741456Sbostic if (!fshead) { 8841456Sbostic add("\"%07.7_Ax\n\""); 8941456Sbostic add("\"%07.7_ax \" 8/2 \"%04x \" \"\\n\""); 9041456Sbostic } 9141456Sbostic 9241456Sbostic *argvp += optind; 9341456Sbostic } 9441456Sbostic 9555201Sbostic void 9641456Sbostic usage() 9741456Sbostic { 9841456Sbostic (void)fprintf(stderr, 9941456Sbostic "hexdump: [-bcdovx] [-e fmt] [-f fmt_file] [-n length] [-s skip] [file ...]\n"); 10041456Sbostic exit(1); 10141456Sbostic } 102