5a60528b539c68650b11c667889788cfbe17fe21
[fwknop.git] / client / utils.c
1 /*
2  *****************************************************************************
3  *
4  * File:    utils.c
5  *
6  * Author:  Damien S. Stuart
7  *
8  * Purpose: General/Generic functions for the fwknop client.
9  *
10  * Copyright 2009-2010 Damien Stuart (dstuart@dstuart.org)
11  *
12  *  License (GNU Public License):
13  *
14  *  This program is free software; you can redistribute it and/or
15  *  modify it under the terms of the GNU General Public License
16  *  as published by the Free Software Foundation; either version 2
17  *  of the License, or (at your option) any later version.
18  *
19  *  This program is distributed in the hope that it will be useful,
20  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
21  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
22  *  GNU General Public License for more details.
23  *
24  *  You should have received a copy of the GNU General Public License
25  *  along with this program; if not, write to the Free Software
26  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
27  *  USA
28  *
29  *****************************************************************************
30 */
31 #include <stdio.h>
32 #include <string.h>
33 #include "utils.h"
34
35 /* Generic hex dump function.
36 */
37 void
38 hex_dump(const unsigned char *data, const int size)
39 {
40     int ln, i, j = 0;
41     char ascii_str[17] = {0};
42
43     for(i=0; i<size; i++)
44     {
45         if((i % 16) == 0)
46         {
47             printf(" %s\n  0x%.4x:  ", ascii_str, i);
48             memset(ascii_str, 0x0, 17);
49             j = 0;
50         }
51
52         printf("%.2x ", data[i]);
53
54         ascii_str[j++] = (data[i] < 0x20 || data[i] > 0x7e) ? '.' : data[i];
55
56         if(j == 8)
57             printf(" ");
58     }
59
60     /* Remainder...
61     */
62     ln = strlen(ascii_str);
63     if(ln > 0)
64     {
65         for(i=0; i < 16-ln; i++)
66             printf("   ");
67
68         printf(" %s\n\n", ascii_str);
69     }
70 }
71
72
73 /***EOF***/