mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-05 11:45:45 +00:00
96c0686368
* configure.ac (PTY_OPEN, GC_MARK_SECONDARY_STACK): Use bool for boolean. * lib-src/emacsclient.c, lib-src/etags.c, lib-src/hexl.c (FALSE, TRUE): Remove. All uses replaced with uncapitalized version. * lib-src/emacsclient.c (message): * lib-src/etags.c (make_tag, pfnote, consider_token, make_C_tag, lang_names): * lib-src/hexl.c (un_flag, iso_flag, endian): * lib-src/pop.c (pop_debug, pop_open, pop_multi_first, pop_multi_next) (pop_trash): Use bool for boolean. * lib-src/etags.c (bool): Remove. * lib-src/etags.c (globals, members, declarations, no_line_directive) (no_duplicates): Use 'int' for boolean values that getopt requires to be 'int'. Formerly, these were 'bool' and 'bool' was 'int', but we can no longer rely on this implementation. * lib-src/pop.h (struct _popserver): Use bool_bf for boolean bit-fields. * lwlib/xlwmenuP.h (XlwMenu_part): Use bool_bf for boolean bit-fields. * src/atimer.h, src/lisp.h, src/syssignal.h, src/syswait.h, src/unexelf.c: No need to include <stdbool.h>, since conf_post.h does it now. * src/buffer.h (BUF_COMPUTE_UNCHANGED, DECODE_POSITION) (BUFFER_CHECK_INDIRECTION, GET_OVERLAYS_AT, PER_BUFFER_VALUE_P) (SET_PER_BUFFER_VALUE_P): * src/ccl.c, src/ccl.h (setup_ccl_program): * src/ccl.h (CHECK_CCL_PROGRAM): * src/character.h (MAKE_CHAR_UNIBYTE, CHECK_CHARACTER_CAR) (CHECK_CHARACTER_CDR, CHAR_STRING_ADVANCE, NEXT_CHAR_BOUNDARY) (PREV_CHAR_BOUNDARY, FETCH_STRING_CHAR_ADVANCE) (FETCH_STRING_CHAR_AS_MULTIBYTE_ADVANCE) (FETCH_STRING_CHAR_ADVANCE_NO_CHECK, FETCH_CHAR_ADVANCE) (FETCH_CHAR_ADVANCE_NO_CHECK, INC_POS, DEC_POS, INC_BOTH) (DEC_BOTH, BUF_INC_POS, BUF_DEC_POS): * src/charset.h (CHECK_CHARSET, CHECK_CHARSET_GET_ID) (CHECK_CHARSET_GET_ATTR, CHECK_CHARSET_GET_CHARSET) (CHARSET_FAST_MAP_SET): * src/coding.c (decode_coding_ccl, encode_coding_ccl): * src/coding.h (CHECK_CODING_SYSTEM, CHECK_CODING_SYSTEM_GET_SPEC) (CHECK_CODING_SYSTEM_GET_ID, SJIS_TO_JIS, SJIS_TO_JIS2) (JIS_TO_SJIS, JIS_TO_SJIS2, ENCODE_FILE, DECODE_FILE) (ENCODE_SYSTEM, DECODE_SYSTEM, ENCODE_UTF_8) (decode_coding_c_string): * src/composite.h (COMPOSITION_DECODE_REFS, COMPOSITION_DECODE_RULE): * src/conf_post.h (has_attribute): * src/dispextern.h (trace_redisplay_p): (INC_TEXT_POS, DEC_TEXT_POS, SET_GLYPH_FROM_GLYPH_CODE) (SET_CHAR_GLYPH, SET_CHAR_GLYPH_FROM_GLYPH) (SET_GLYPH_FROM_CHAR_GLYPH): (WINDOW_WANTS_MODELINE_P, WINDOW_WANTS_HEADER_LINE_P) (FACE_SUITABLE_FOR_ASCII_CHAR_P, FACE_SUITABLE_FOR_CHAR_P) (PRODUCE_GLYPHS, reset_mouse_highlight, in_display_vector_p) (cursor_in_mouse_face_p): * src/dispnew.c (adjust_glyph_matrix, clear_glyph_matrix_rows) (blank_row, prepare_desired_row) (build_frame_matrix_from_leaf_window, make_current) (mirror_make_current, mirrored_line_dance, mirror_line_dance) (update_window, scrolling_window, update_frame_line): * src/disptab.h (GLYPH_FOLLOW_ALIASES): * src/editfns.c (Fformat): * src/font.h (FONT_WEIGHT_SYMBOLIC, FONT_SLANT_SYMBOLIC) (FONT_WIDTH_SYMBOLIC, FONT_WEIGHT_FOR_FACE, FONT_SLANT_FOR_FACE) (FONT_WIDTH_FOR_FACE, FONT_WEIGHT_NAME_NUMERIC) (FONT_SLANT_NAME_NUMERIC, FONT_WIDTH_NAME_NUMERIC) (FONT_SET_STYLE, CHECK_FONT, CHECK_FONT_SPEC, CHECK_FONT_ENTITY) (CHECK_FONT_OBJECT, CHECK_FONT_GET_OBJECT, FONT_ADD_LOG) (FONT_DEFERRED_LOG): * src/frame.h (FRAME_W32_P, FRAME_MSDOS_P, FRAME_WINDOW_P): (FRAME_EXTERNAL_TOOL_BAR, FRAME_EXTERNAL_MENU_BAR, FOR_EACH_FRAME) (FRAME_MOUSE_UPDATE): * src/fringe.c (Fdefine_fringe_bitmap): * src/image.c (x_create_bitmap_from_data, x_create_bitmap_mask) (x_create_bitmap_from_xpm_data, xpm_load_image): * src/intervals.h (INTERVAL_HAS_PARENT, INTERVAL_PARENT) (set_interval_parent, RESET_INTERVAL, COPY_INTERVAL_CACHE) (MERGE_INTERVAL_CACHE): * src/keymap.h (KEYMAPP): * src/lisp.h (eassert, USE_LSB_TAG, CHECK_LISP_OBJECT_TYPE) (STRING_SET_UNIBYTE, STRING_SET_MULTIBYTE, DEFSYM, PSEUDOVECTORP) (CHECK_RANGED_INTEGER, CHECK_TYPE_RANGED_INTEGER) (CHECK_NUMBER_COERCE_MARKER, CHECK_NUMBER_OR_FLOAT_COERCE_MARKER) (DEFVAR_LISP, DEFVAR_LISP_NOPRO, DEFVAR_BOOL, DEFVAR_INT) (DEFVAR_BUFFER_DEFAULTS, DEFVAR_KBOARD, QUIT) (RETURN_UNGCPRO, USE_SAFE_ALLOCA, SAFE_NALLOCA, SAFE_FREE) (SAFE_ALLOCA_LISP, FOR_EACH_ALIST_VALUE, functionp): * src/syntax.h (SYNTAX_ENTRY, SYNTAX_WITH_FLAGS, SYNTAX) (UPDATE_SYNTAX_TABLE_FORWARD, UPDATE_SYNTAX_TABLE_BACKWARD) (SETUP_BUFFER_SYNTAX_TABLE): * src/systime.h (timespec_valid_p): * src/term.c (save_and_enable_current_matrix): * src/window.h (WINDOW_MENU_BAR_P, WINDOW_TOOL_BAR_P): * src/xdisp.c (in_display_vector_p, display_tool_bar_line) (redisplay_internal, try_window_reusing_current_matrix) (sync_frame_with_window_matrix_rows, try_window_id) (display_menu_bar, display_tty_menu_item, display_mode_line) (coords_in_mouse_face_p, cursor_in_mouse_face_p): * src/xmenu.c (xmenu_show): * src/xterm.c (use_xim, x_term_init): * src/xterm.h (XSync, GTK_CHECK_VERSION, use_xim, SET_SCROLL_BAR_X_WIDGET) (struct x_bitmap_record): Use bool for booleans. * src/ccl.c (struct buffer_text): * src/ccl.h (struct ccl_program): * src/charset.h (struct charset): * src/cm.h (struct cm): * src/coding.h (struct iso_2022_spec, struct coding_system): * src/dispextern.h (struct glyph, struct glyph_matrix, struct glyph_row) (struct glyph_string, struct face, struct face_cache) (struct bidi_string_data, struct bidi_it) (struct draw_fringe_bitmap_params, struct it, Mouse_HLInfo) (struct image): * src/editfns.c (Fformat): * src/frame.h (struct frame): * src/fringe.c (struct fringe_bitmap): * src/intervals.h (struct interval): * src/keyboard.h (struct kboard): * src/lisp.h (struct Lisp_Symbol, struct Lisp_Misc_Any, struct Lisp_Marker) (struct Lisp_Overlay, struct Lisp_Save_Value, struct Lisp_Free) (struct Lisp_Buffer_Local_Value, union specbinding): * src/macfont.m (struct macfont_info): * src/process.h (struct Lisp_Process): * src/termchar.h (struct tty_display_info): * src/window.h (struct window): * src/xterm.h (struct x_output): Use bool_bf for boolean bit-fields. * src/ccl.c (setup_ccl_program): Now returns bool instead of -1 or 0. All callers changed. * src/ccl.h (struct ccl_program): Remove unused members private_state, src_multibyte, dst_multibyte, cr_consumed, suppress_error, eight_bit_control. (struct ccl_spec): Remove unused members cr_carryover, eight_bit_carryover. * src/conf_post.h: Include <stdbool.h>. (bool_bf): New type. * src/dispextern.h (TRACE, PREPARE_FACE_FOR_DISPLAY): * src/interval.h (RESET_INTERVAL, COPY_INTERVAL_CACHE, MERGE_INTERVAL_CACHE) Surround statement macro with proper 'do { ... } while (false)' brackets. (SET_MATRIX_ROW_ENABLED_P): Assume 2nd arg is bool. (PRODUCE_GLYPHS): Simplify use of boolean. * src/fileio.c (Fcopy_file): If I is an integer, prefer 'if (I != 0)' to 'if (I)'. * src/lisp.h (UNGCPRO): Return void, not int. (FOR_EACH_TAIL): Use void expression, not int expression. * src/region-cache.c: Reindent. * src/region-cache.h: Copy comments from region-cache.c, to fix incorrect remarks about booleans.
284 lines
5.2 KiB
C
284 lines
5.2 KiB
C
/* Convert files for Emacs Hexl mode.
|
|
Copyright (C) 1989, 2001-2013 Free Software Foundation, Inc.
|
|
|
|
Author: Keith Gabryelski
|
|
(according to authors.el)
|
|
|
|
This file is not considered part of GNU Emacs.
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
|
|
|
|
|
#include <config.h>
|
|
|
|
#include <stdio.h>
|
|
#include <ctype.h>
|
|
#ifdef DOS_NT
|
|
#include <fcntl.h>
|
|
#if __DJGPP__ >= 2
|
|
#include <io.h>
|
|
#endif
|
|
#endif
|
|
#ifdef WINDOWSNT
|
|
#include <io.h>
|
|
#endif
|
|
|
|
#define DEFAULT_GROUPING 0x01
|
|
#define DEFAULT_BASE 16
|
|
|
|
int base = DEFAULT_BASE;
|
|
bool un_flag = false, iso_flag = false, endian = true;
|
|
int group_by = DEFAULT_GROUPING;
|
|
char *progname;
|
|
|
|
_Noreturn void usage (void);
|
|
|
|
int
|
|
main (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 = true;
|
|
--argc; argv++;
|
|
}
|
|
else if (!strcmp (*argv, "-little-endian"))
|
|
{
|
|
endian = false;
|
|
--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 = false;
|
|
--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 DOS_NT
|
|
#if (__DJGPP__ >= 2) || (defined WINDOWSNT)
|
|
if (!isatty (fileno (stdout)))
|
|
setmode (fileno (stdout), O_BINARY);
|
|
#else
|
|
(stdout)->_flag &= ~_IOTEXT; /* print binary */
|
|
_setmode (fileno (stdout), O_BINARY);
|
|
#endif
|
|
#endif
|
|
for (;;)
|
|
{
|
|
register int i, c = 0, d;
|
|
|
|
#define hexchar(x) (isdigit (x) ? x - '0' : x - 'a' + 10)
|
|
|
|
/* Skip 10 bytes. */
|
|
if (fread (buf, 1, 10, fp) != 10)
|
|
break;
|
|
|
|
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;
|
|
|
|
/* Skip 18 bytes. */
|
|
if (fread (buf, 1, 18, fp) != 18)
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
#ifdef DOS_NT
|
|
#if (__DJGPP__ >= 2) || (defined WINDOWSNT)
|
|
if (!isatty (fileno (fp)))
|
|
setmode (fileno (fp), O_BINARY);
|
|
#else
|
|
(fp)->_flag &= ~_IOTEXT; /* read binary */
|
|
_setmode (fileno (fp), O_BINARY);
|
|
#endif
|
|
#endif
|
|
address = 0;
|
|
string[0] = ' ';
|
|
string[17] = '\0';
|
|
for (;;)
|
|
{
|
|
register int i, c = 0;
|
|
|
|
for (i=0; i < 16; ++i)
|
|
{
|
|
if ((c = getc (fp)) == EOF)
|
|
{
|
|
if (!i)
|
|
break;
|
|
|
|
fputs (" ", stdout);
|
|
string[i+1] = '\0';
|
|
}
|
|
else
|
|
{
|
|
if (!i)
|
|
printf ("%08lx: ", 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 EXIT_SUCCESS;
|
|
}
|
|
|
|
void
|
|
usage (void)
|
|
{
|
|
fprintf (stderr, "usage: %s [-de] [-iso]\n", progname);
|
|
exit (EXIT_FAILURE);
|
|
}
|
|
|
|
|
|
/* hexl.c ends here */
|