cloos@acsu.buffalo.edu (James H. Cloos) (10/09/90)
Thanks for all the responces. As someone mailed me a copy of hexl.c
and hexl.el (thanks) & as ftp to tut.cis.ohio-state.edu kept dying on
me, I've not had a chance to check out hex.el; but wrt hexl.el, I
still need to have the nybbles reversed in each byte. I made the
needed changes to hexl.c but do not know enough elisp to make them to
hexl.el. Below is the diff-c output showing the changes I made in
hexl.c; if anyone is willing to make these changes to hexl.el for me,
I would be more than grateful. You will note that I added the option
-rev-nyb to reverse the nybbles (this name seemed consistant with
those already there); the changes are simple & should be obvious.
I would also note that the option -{big,little}-endian does not seem
to be used, except that it defafults to 1 unless you specify
-group-by-64-bits, than it defaults to 0, but is not used in the rest
of the code.
here is hexl.c.diff,
-------------------------------CUT CUT-------------------------------
*** hexl.c.orig Mon Oct 8 15:57:46 1990
--- hexl.c Mon Oct 8 17:18:55 1990
***************
*** 12,18 ****
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)
--- 12,18 ----
extern void exit(), perror();
int base = DEFAULT_BASE, un_flag = FALSE, iso_flag = FALSE, endian = 1;
! int group_by = DEFAULT_GROUPING, reverse_nybble = FALSE;
char *progname;
main(argc, argv)
***************
*** 36,41 ****
--- 36,42 ----
** -big-endian Big Endian
** -little-endian Little Endian
** -un || -de from hexl format to binary.
+ ** -rev-nyb assume in reverse nybble format
** -- End switch list.
** <filename> dump filename
** - (as filename == stdin)
***************
*** 72,77 ****
--- 73,82 ----
{
endian = 0;
--argc; argv++;
+ } else if (!strcmp(*argv, "-rev-nyb"))
+ {
+ reverse_nybble = TRUE;
+ --argc; argv++;
} else if (!strcmp(*argv, "-group-by-8-bits"))
{
group_by = 0x00;
***************
*** 133,139 ****
break;
d = getc(fp);
! c = hexchar(c) * 0x10 + hexchar(d);
(void) putchar(c);
if ((i&group_by) == group_by)
--- 138,147 ----
break;
d = getc(fp);
! if (reverse_nybble)
! c = hexchar(d) * 0x10 + hexchar(c);
! else
! c = hexchar(c) * 0x10 + hexchar(d);
(void) putchar(c);
if ((i&group_by) == group_by)
***************
*** 187,193 ****
else
string[i+1] = (c < 0x20 || c >= 0x7F) ? '.' : c;
! (void) printf("%02x", c);
}
if ((i&group_by) == group_by)
--- 195,204 ----
else
string[i+1] = (c < 0x20 || c >= 0x7F) ? '.' : c;
! if (reverse_nybble)
! (void) printf("%01x%01x", c&0xF, (c&0xF0) >> 4);
! else
! (void) printf("%02x", c);
}
if ((i&group_by) == group_by)
-----------------------------CUT CUT-------------------------------------
Thanks in advance for any help sent!
-JimC
--
James H. Cloos, Jr. Phone: +1 716 673-1250
cloos@acsu.buffalo.edu Snail: PersonalZipCode: 14048-0772, USA
rutgers!ub!cloos