/*====================================================================*
*
* void memout (void const * memory, size_t extent, char const * format, unsigned group, char c, char e, FILE * fp)
*
* memory.h
*
* print memory as a series of octets formatted by format string fmt,
* seperated by character c every mod prints;
*
* for example, memout (memory, IPv4_LEN, "%d", 1, '.', stdout) would print:
*
* 192.168.1.1
*
* another example, memout (memory, IPv6_LEN, "%02x", 2, ':', stdout) would print:
*
* 0032:0045:0000:0000:0000:0000:1123:4456
*
* Motley Tools by Charles Maier <cmaier@cmassoc.net>;
* Copyright (c) 2001-2006 by Charles Maier Associates;
* Licensed under the Internet Software Consortium License;
*
* Contributor(s):
* Nathaniel Houghton <nhoughto@qca.qualcomm.com>
*
*--------------------------------------------------------------------*/
#ifndef MEMOUT_SOURCE
#define MEMOUT_SOURCE
#include <stdio.h>
#include <stddef.h>
#include "../tools/memory.h"
void memout (void const * memory, size_t extent, char const * format, unsigned group, char c, char e, FILE * fp)
{
byte * origin = (byte *) (memory);
byte * offset = (byte *) (memory);
while (extent--)
{
ptrdiff_t count = (offset - origin) + 1;
fprintf (fp, format, * offset);
if ((count % group) == 0 && extent)
{
putc (c, fp);
}
offset++;
}
if (e)
{
putc (c, fp);
}
return;
}
#endif