Mercurial > emacs
view lib-src/hexl.c @ 1819:df06a60f3362
* disass.el (disassemble): Add autoload cookie for this.
* bytecomp.el (byte-decompile-bytecode): Add an autoload for this.
compiled-function-p has been renamed to byte-code-function-p.
* subr.el: Define compiled-function-p as an alias for it.
* bytecomp.el: Register compiled-function-p as obsolete.
* bytecomp.el, byte-opt.el, disass.el, help.el, map-ynp.el: Change
uses.
unread-command-event has been replaced by unread-command-events.
* simple.el (prefix-arg-internal): Use this to push back all
key sequences for processing by the main command loop, instead of
trying to simulate its behavior ourselves.
* bytecomp.el: Document unread-command-event as an obsolete
variable, although nothing but the GNU Emacs 19 sources use it.
Adjust obsolescence message for unread-command-char.
* comint.el (comint-dynamic-list-completions): Change uses of
unread-command-event to work with unread-command-events.
* ebuff-menu.el (electric-buffer-list, Electric-buffer-menu-exit):
Same.
* edebug.el (edebug-outside-excursion): Same.
* ehelp.el (electric-help-command-loop): Same.
* electric.el (Electric-command-loop): Same.
* emerge.el (emerge-show-file-name): Same.
* fortran.el (fortran-abbrev-start,
fortran-window-create-momentarily): Same.
* gnus.el (gnus-Subject-next-article): Same.
* info.el (Info-summary): Same.
* isearch-mode.el (isearch-update, isearch-unread): Same.
* map-ynp.el (map-y-or-n-p): Same.
* mlsupport.el (push-back-character): Same.
* replace.el (perform-replace): Same.
* simula.el (simula-electric-label): Same.
* subr.el (read-quoted-char, momentary-string-display): Same.
* sun-mouse.el (mouse-second-hit): Same.
* terminal.el (te-escape-extended-command-unread): Same.
* vip.el (vip-escape-to-emacs, vip-prefix-arg-value,
vip-prefix-arg-com): Same.
author | Jim Blandy <jimb@redhat.com> |
---|---|
date | Tue, 26 Jan 1993 01:36:02 +0000 |
parents | 7c9f757a985a |
children | 44e193cc8f49 |
line wrap: on
line source
#include <stdio.h> #include <ctype.h> #define DEFAULT_GROUPING 0x01 #define DEFAULT_BASE 16 #undef TRUE #undef FALSE #define TRUE (1) #define FALSE (0) extern void exit(), perror(); int base = DEFAULT_BASE, un_flag = FALSE, iso_flag = FALSE, endian = 1; int group_by = DEFAULT_GROUPING; char *progname; main(argc, argv) int argc; char *argv[]; { register long address; char string[18]; FILE *fp; progname = *argv++; --argc; /* ** -hex hex dump ** -oct Octal dump ** -group-by-8-bits ** -group-by-16-bits ** -group-by-32-bits ** -group-by-64-bits ** -iso iso character set. ** -big-endian Big Endian ** -little-endian Little Endian ** -un || -de from hexl format to binary. ** -- End switch list. ** <filename> dump filename ** - (as filename == stdin) */ while (*argv && *argv[0] == '-' && (*argv)[1]) { /* A switch! */ if (!strcmp(*argv, "--")) { --argc; argv++; break; } else if (!strcmp(*argv, "-un") || !strcmp(*argv, "-de")) { un_flag = TRUE; --argc; argv++; } else if (!strcmp(*argv, "-hex")) { base = 16; --argc; argv++; } else if (!strcmp(*argv, "-iso")) { iso_flag = TRUE; --argc; argv++; } else if (!strcmp(*argv, "-oct")) { base = 8; --argc; argv++; } else if (!strcmp(*argv, "-big-endian")) { endian = 1; --argc; argv++; } else if (!strcmp(*argv, "-little-endian")) { endian = 0; --argc; argv++; } else if (!strcmp(*argv, "-group-by-8-bits")) { group_by = 0x00; --argc; argv++; } else if (!strcmp(*argv, "-group-by-16-bits")) { group_by = 0x01; --argc; argv++; } else if (!strcmp(*argv, "-group-by-32-bits")) { group_by = 0x03; --argc; argv++; } else if (!strcmp(*argv, "-group-by-64-bits")) { group_by = 0x07; endian = 0; --argc; argv++; } else { (void) fprintf(stderr, "%s: invalid switch: \"%s\".\n", progname, *argv); usage(); } } do { if (*argv == NULL) fp = stdin; else { char *filename = *argv++; if (!strcmp(filename, "-")) fp = stdin; else if ((fp = fopen(filename, "r")) == NULL) { perror(filename); continue; } } if (un_flag) { char buf[18]; for (;;) { register int i, c, d; #define hexchar(x) (isdigit(x) ? x - '0' : x - 'a' + 10) (void) fread(buf, 1, 10, fp); /* skip 10 bytes */ for (i=0; i < 16; ++i) { if ((c = getc(fp)) == ' ' || c == EOF) break; d = getc(fp); c = hexchar(c) * 0x10 + hexchar(d); (void) putchar(c); if ((i&group_by) == group_by) (void) getc(fp); } if (c == ' ') { while ((c = getc(fp)) != '\n' && c != EOF) ; if (c == EOF) break; } else { if (i < 16) break; (void) fread(buf, 1, 18, fp); /* skip 18 bytes */ } } } else { address = 0; string[0] = ' '; string[17] = '\0'; for (;;) { register int i, c; for (i=0; i < 16; ++i) { if ((c = getc(fp)) == EOF) { if (!i) break; (void) fputs(" ", stdout); string[i+1] = '\0'; } else { if (!i) (void) printf("%08x: ", address); if (iso_flag) string[i+1] = (c < 0x20 || (c >= 0x7F && c < 0xa0)) ? '.' :c; else string[i+1] = (c < 0x20 || c >= 0x7F) ? '.' : c; (void) printf("%02x", c); } if ((i&group_by) == group_by) (void) putchar(' '); } if (i) (void) puts(string); if (c == EOF) break; address += 0x10; } } if (fp != stdin) (void) close(fp); } while (*argv != NULL); return 0; } usage() { (void) fprintf(stderr, "usage: %s [-de] [-iso]\n", progname); exit(1); }