1 /*** 2 This file is part of avahi. 3 4 avahi is free software; you can redistribute it and/or modify it 5 under the terms of the GNU Lesser General Public License as 6 published by the Free Software Foundation; either version 2.1 of the 7 License, or (at your option) any later version. 8 9 avahi is distributed in the hope that it will be useful, but WITHOUT 10 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 11 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General 12 Public License for more details. 13 14 You should have received a copy of the GNU Lesser General Public 15 License along with avahi; if not, write to the Free Software 16 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 17 USA. 18 ***/ 19 20 #ifdef HAVE_CONFIG_H 21 #include <config.h> 22 #endif 23 24 #include <string.h> 25 #include <stdio.h> 26 #include <stdlib.h> 27 #include <assert.h> 28 #include <ctype.h> 29 30 #include "avahi-common/avahi-malloc.h" 31 #include "util.h" 32 33 void avahi_hexdump(const void* p, size_t size) { 34 const uint8_t *c = p; 35 assert(p); 36 37 printf("Dumping %lu bytes from %p:\n", (unsigned long) size, p); 38 39 while (size > 0) { 40 unsigned i; 41 42 for (i = 0; i < 16; i++) { 43 if (i < size) 44 printf("%02x ", c[i]); 45 else 46 printf(" "); 47 } 48 49 for (i = 0; i < 16; i++) { 50 if (i < size) 51 printf("%c", c[i] >= 32 && c[i] < 127 ? c[i] : '.'); 52 else 53 printf(" "); 54 } 55 56 printf("\n"); 57 58 c += 16; 59 60 if (size <= 16) 61 break; 62 63 size -= 16; 64 } 65 } 66 67 char *avahi_format_mac_address(char *r, size_t l, const uint8_t* mac, size_t size) { 68 char *t = r; 69 unsigned i; 70 static const char hex[] = "0123456789abcdef"; 71 72 assert(r); 73 assert(l > 0); 74 assert(mac); 75 76 if (size <= 0) { 77 *r = 0; 78 return r; 79 } 80 81 for (i = 0; i < size; i++) { 82 if (l < 3) 83 break; 84 85 *(t++) = hex[*mac >> 4]; 86 *(t++) = hex[*mac & 0xF]; 87 *(t++) = ':'; 88 89 l -= 3; 90 91 mac++; 92 } 93 94 if (t > r) 95 *(t-1) = 0; 96 else 97 *r = 0; 98 99 return r; 100 } 101 102 char *avahi_strup(char *s) { 103 char *c; 104 assert(s); 105 106 for (c = s; *c; c++) 107 *c = (char) toupper(*c); 108 109 return s; 110 } 111 112 char *avahi_strdown(char *s) { 113 char *c; 114 assert(s); 115 116 for (c = s; *c; c++) 117 *c = (char) tolower(*c); 118 119 return s; 120 } 121