Mercurial > emacs
view lib-src/hexl.c @ 11597:d6d53a54da18
(vc-backend-checkout): Pass vc-checkout-switches arg
properly to vc-do-command.
(vc-update-change-log): Use vc-buffer-backend in menu-enable.
(vc-file-clearprops, vc-workfile-version): Functions moved to vc-hooks.el.
Add branch support for RCS; treat CVS more like RCS and SCCS.
(vc-next-action-on-file): changed CVS handling, such that C-x C-q
works as with RCS and SCCS.
(vc-consult-rcs-headers): New function.
(vc-branch-version): New per-file property, refers
to the RCS version selected by `rcs -b'.
(vc-workfile-version): New function. Also new per-file property
(vc-consult-headers): New parameter variable.
(vc-mistrust-permissions): Default set to `nil'.
(vc-locking-user): Property is now cached. The other functions
update it as necessary. Attempts to use RCS headers if enabled.
(vc-log-info, vc-parse-buffer): Various bug fixes. Added support
for property `vc-branch-version'.
(vc-backend-checkout): RCS case: if no explicit version
is specified, check out `vc-workfile-version'. After check-out,
set `vc-workfile-version' according to the version number
reported by "co".
(vc-backend-checkin): RCS case: remove any remaining locks
if a new branch was created. After every check-in, adjust
the current branch using `rcs -b' (this cannot be avoided).
CVS case: allow for explicit checkin, but only on the trunk.
(vc-next-action-on-file, vc-backend-checkout, vc-backend-checkin,
vc-backend-revert, vc-backend-diff): Explicitly use
vc-workfile-version as the default version to operate on.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Wed, 26 Apr 1995 10:12:24 +0000 |
parents | dd3b83e4ceb0 |
children | aca392dc5b0f |
line wrap: on
line source
#include <stdio.h> #include <ctype.h> #ifdef MSDOS #include <fcntl.h> #endif #define DEFAULT_GROUPING 0x01 #define DEFAULT_BASE 16 #undef TRUE #undef FALSE #define TRUE (1) #define FALSE (0) int base = DEFAULT_BASE, un_flag = FALSE, iso_flag = FALSE, endian = 1; int group_by = DEFAULT_GROUPING; char *progname; void usage(); int 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 { 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]; #ifdef MSDOS (stdout)->_flag &= ~_IOTEXT; /* print binary */ _setmode (fileno (stdout), O_BINARY); #endif for (;;) { register int i, c, d; #define hexchar(x) (isdigit (x) ? x - '0' : x - 'a' + 10) 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); putchar (c); if ((i&group_by) == group_by) getc (fp); } if (c == ' ') { while ((c = getc (fp)) != '\n' && c != EOF) ; if (c == EOF) break; } else { if (i < 16) break; fread (buf, 1, 18, fp); /* skip 18 bytes */ } } } else { #ifdef MSDOS (fp)->_flag &= ~_IOTEXT; /* read binary */ _setmode (fileno (fp), O_BINARY); #endif 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; fputs (" ", stdout); string[i+1] = '\0'; } else { if (!i) 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; printf ("%02x", c); } if ((i&group_by) == group_by) putchar (' '); } if (i) puts (string); if (c == EOF) break; address += 0x10; } } if (fp != stdin) fclose (fp); } while (*argv != NULL); return 0; } void usage () { fprintf (stderr, "usage: %s [-de] [-iso]\n", progname); exit (1); }