/*====================================================================*
 *
 *   void hexout (void const * memory, size_t extent, char c, char e, FILE * fp);
 *
 *   memory.h
 *
 *   print memory as a series of hexadecimal octets seperated by
 *   character c; normally, character c will be HEX_EXTENDER as
 *   defined in number.h;
 *
 *   for example, hexout (memory, 6, ':', ';', stdout) would print:
 *
 *      00:B0:52:00:00:01;
 *
 *   Motley Tools by Charles Maier <cmaier@cmassoc.net>;
 *   Copyright (c) 2001-2006 by Charles Maier Associates;
 *   Licensed under the Internet Software Consortium License;
 *
 *--------------------------------------------------------------------*/

#ifndef HEXOUT_SOURCE
#define HEXOUT_SOURCE

#include <stdio.h>
#include <ctype.h>

#include "../tools/memory.h"
#include "../tools/number.h"

void hexout (void const * memory, size_t extent, char c, char e, FILE * fp)

{
	byte * offset = (byte *)(memory);
	while (extent--)
	{
		putc (DIGITS_HEX [(* offset >> 4) & 0x0F], fp);
		putc (DIGITS_HEX [(* offset >> 0) & 0x0F], fp);
		if ((extent) && (c))
		{
			putc (c, fp);
		}
		offset++;
	}
	if (e)
	{
		putc (e, fp);
	}
	return;
}

#endif