Remove overengineering, part 1/many
Signed-off-by: Patrick Georgi <patrick.georgi@secunet.com> Acked-by: Patrick Georgi <patrick.georgi@secunet.com> git-svn-id: svn://svn.coreboot.org/coreboot/trunk@6267 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
committed by
Patrick Georgi
parent
2601697c6f
commit
024ec852c2
@ -46,8 +46,7 @@
|
|||||||
static void addrprint(FILE * outfile, uint64_t address, int width);
|
static void addrprint(FILE * outfile, uint64_t address, int width);
|
||||||
static void hexprint(FILE * outfile, unsigned char byte);
|
static void hexprint(FILE * outfile, unsigned char byte);
|
||||||
static void charprint(FILE * outfile, unsigned char byte,
|
static void charprint(FILE * outfile, unsigned char byte,
|
||||||
unsigned char nonprintable,
|
unsigned char nonprintable);
|
||||||
is_printable_fn_t is_printable_fn);
|
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------
|
/*--------------------------------------------------------------------------
|
||||||
* hexdump
|
* hexdump
|
||||||
@ -70,17 +69,11 @@ void hexdump(const void *mem, int bytes, uint64_t addrprint_start,
|
|||||||
{
|
{
|
||||||
int bytes_left, index, i;
|
int bytes_left, index, i;
|
||||||
const unsigned char *p;
|
const unsigned char *p;
|
||||||
is_printable_fn_t is_printable_fn;
|
|
||||||
|
|
||||||
/* Quietly return if the caller asks us to do something unreasonable. */
|
/* Quietly return if the caller asks us to do something unreasonable. */
|
||||||
if ((format->bytes_per_line <= 0) || (bytes < 0))
|
if ((format->bytes_per_line <= 0) || (bytes < 0))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
is_printable_fn = format->is_printable_fn;
|
|
||||||
|
|
||||||
if (is_printable_fn == NULL)
|
|
||||||
is_printable_fn = default_is_printable_fn;
|
|
||||||
|
|
||||||
p = (const unsigned char *)mem;
|
p = (const unsigned char *)mem;
|
||||||
index = 0;
|
index = 0;
|
||||||
|
|
||||||
@ -112,8 +105,7 @@ void hexdump(const void *mem, int bytes, uint64_t addrprint_start,
|
|||||||
|
|
||||||
/* display the bytes as characters */
|
/* display the bytes as characters */
|
||||||
for (i = 0; i < format->bytes_per_line; i++)
|
for (i = 0; i < format->bytes_per_line; i++)
|
||||||
charprint(outfile, p[index++], format->nonprintable,
|
charprint(outfile, p[index++], format->nonprintable);
|
||||||
is_printable_fn);
|
|
||||||
|
|
||||||
fprintf(outfile, "\n");
|
fprintf(outfile, "\n");
|
||||||
}
|
}
|
||||||
@ -148,8 +140,7 @@ void hexdump(const void *mem, int bytes, uint64_t addrprint_start,
|
|||||||
|
|
||||||
/* display bytes for last line as characters */
|
/* display bytes for last line as characters */
|
||||||
for (i = 0; i < bytes_left; i++)
|
for (i = 0; i < bytes_left; i++)
|
||||||
charprint(outfile, p[index++], format->nonprintable,
|
charprint(outfile, p[index++], format->nonprintable);
|
||||||
is_printable_fn);
|
|
||||||
|
|
||||||
/* pad the rest of the character area with spaces */
|
/* pad the rest of the character area with spaces */
|
||||||
for (; i < format->bytes_per_line; i++)
|
for (; i < format->bytes_per_line; i++)
|
||||||
@ -158,25 +149,6 @@ void hexdump(const void *mem, int bytes, uint64_t addrprint_start,
|
|||||||
fprintf(outfile, "\n");
|
fprintf(outfile, "\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------
|
|
||||||
* default_is_printable_fn
|
|
||||||
*
|
|
||||||
* Determine whether the input character is printable. The proper behavior
|
|
||||||
* for this type of function may be system-dependent. This function takes a
|
|
||||||
* conservative approach. If it is not adequate for your purposes, you can
|
|
||||||
* write your own.
|
|
||||||
*
|
|
||||||
* parameters:
|
|
||||||
* c: the input character
|
|
||||||
*
|
|
||||||
* return value:
|
|
||||||
* Return 1 if the input character is printable. Otherwise return 0.
|
|
||||||
*--------------------------------------------------------------------------*/
|
|
||||||
int default_is_printable_fn(unsigned char c)
|
|
||||||
{
|
|
||||||
return (c >= 0x20) && (c <= 0x7e);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------
|
/*--------------------------------------------------------------------------
|
||||||
* addrprint
|
* addrprint
|
||||||
*
|
*
|
||||||
@ -245,12 +217,9 @@ static void hexprint(FILE * outfile, unsigned char byte)
|
|||||||
* byte: the byte to display
|
* byte: the byte to display
|
||||||
* nonprintable: a substitute character to display if the byte
|
* nonprintable: a substitute character to display if the byte
|
||||||
* represents a nonprintable character
|
* represents a nonprintable character
|
||||||
* is_printable_fn: a function that returns a boolean value indicating
|
|
||||||
* whether a given character is printable
|
|
||||||
*--------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------*/
|
||||||
static void charprint(FILE * outfile, unsigned char byte,
|
static void charprint(FILE * outfile, unsigned char byte,
|
||||||
unsigned char nonprintable,
|
unsigned char nonprintable)
|
||||||
is_printable_fn_t is_printable_fn)
|
|
||||||
{
|
{
|
||||||
fprintf(outfile, "%c", is_printable_fn(byte) ? byte : nonprintable);
|
fprintf(outfile, "%c", ((byte >= 0x20) && (byte <= 0x7e)) ? byte : nonprintable);
|
||||||
}
|
}
|
||||||
|
@ -48,8 +48,6 @@
|
|||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
typedef int (*is_printable_fn_t) (unsigned char c);
|
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------
|
/*--------------------------------------------------------------------------
|
||||||
* hexdump_format_t
|
* hexdump_format_t
|
||||||
*
|
*
|
||||||
@ -75,11 +73,6 @@ typedef int (*is_printable_fn_t) (unsigned char c);
|
|||||||
* characters. It serves as a separator.
|
* characters. It serves as a separator.
|
||||||
* nonprintable: This is a substitute character to display in place
|
* nonprintable: This is a substitute character to display in place
|
||||||
* of nonprintable characters.
|
* of nonprintable characters.
|
||||||
* is_printable_fn: This is a user-supplied function that takes a byte
|
|
||||||
* value as input and returns a boolean value
|
|
||||||
* indicating whether the corresponding character is
|
|
||||||
* printable. A value of NULL will cause
|
|
||||||
* default_is_printable_fn to be used.
|
|
||||||
*--------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------*/
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int bytes_per_line;
|
int bytes_per_line;
|
||||||
@ -89,7 +82,6 @@ typedef struct {
|
|||||||
const char *sep2;
|
const char *sep2;
|
||||||
const char *sep3;
|
const char *sep3;
|
||||||
unsigned char nonprintable;
|
unsigned char nonprintable;
|
||||||
is_printable_fn_t is_printable_fn;
|
|
||||||
} hexdump_format_t;
|
} hexdump_format_t;
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------
|
/*--------------------------------------------------------------------------
|
||||||
@ -111,20 +103,4 @@ typedef struct {
|
|||||||
void hexdump(const void *mem, int bytes, uint64_t addrprint_start,
|
void hexdump(const void *mem, int bytes, uint64_t addrprint_start,
|
||||||
FILE * outfile, const hexdump_format_t * format);
|
FILE * outfile, const hexdump_format_t * format);
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------
|
|
||||||
* default_is_printable_fn
|
|
||||||
*
|
|
||||||
* Determine whether the input character is printable. The proper behavior
|
|
||||||
* for this type of function may be system-dependent. This function appears
|
|
||||||
* to work well on a Linux system. However, if it is not adequate for your
|
|
||||||
* purposes, you can write your own.
|
|
||||||
*
|
|
||||||
* parameters:
|
|
||||||
* c: the input character
|
|
||||||
*
|
|
||||||
* return value:
|
|
||||||
* Return 1 if the input character is printable. Otherwise return 0.
|
|
||||||
*--------------------------------------------------------------------------*/
|
|
||||||
int default_is_printable_fn(unsigned char c);
|
|
||||||
|
|
||||||
#endif /* _HEXDUMP_H */
|
#endif /* _HEXDUMP_H */
|
||||||
|
@ -234,7 +234,7 @@ static const struct lb_header *lbtable = NULL;
|
|||||||
static const struct cmos_option_table *cmos_table = NULL;
|
static const struct cmos_option_table *cmos_table = NULL;
|
||||||
|
|
||||||
static const hexdump_format_t format =
|
static const hexdump_format_t format =
|
||||||
{ 12, 4, " ", " | ", " ", " | ", '.', NULL };
|
{ 12, 4, " ", " | ", " ", " | ", '.' };
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* vtophys
|
* vtophys
|
||||||
|
@ -85,7 +85,7 @@ static const op_fn_t op_fns[] = { op_show_version,
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const hexdump_format_t cmos_dump_format =
|
static const hexdump_format_t cmos_dump_format =
|
||||||
{ 16, 2, "", " | ", " ", " | ", '.', NULL };
|
{ 16, 2, "", " | ", " ", " | ", '.' };
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* main
|
* main
|
||||||
|
Reference in New Issue
Block a user