memout.c
Author: cmaier@cmassoc.net

    /*====================================================================*
     *
     *   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

[PREV] [HOME] [NEXT]