]> mj.ucw.cz Git - libucw.git/commitdiff
Added stk_hexdump(). Very handy for debugging.
authorMartin Mares <mj@ucw.cz>
Thu, 30 Jun 2005 23:17:22 +0000 (23:17 +0000)
committerMartin Mares <mj@ucw.cz>
Thu, 30 Jun 2005 23:17:22 +0000 (23:17 +0000)
lib/stkstring.c
lib/stkstring.h
lib/stkstring.t

index 30cff4c864b6f99aeac28db8ba776ee7ea1d8dda..a8593215ea71d478eba5232dd204340f28f2a844 100644 (file)
@@ -51,6 +51,18 @@ stk_printf_internal(char *fmt, ...)
     }
 }
 
+void
+stk_hexdump_internal(char *dst, byte *src, uns n)
+{
+  for (uns i=0; i<n; i++)
+    {
+      if (i)
+       *dst++ = ' ';
+      dst += sprintf(dst, "%02x", *src++);
+    }
+  *dst = 0;
+}
+
 #ifdef TEST
 
 int main(void)
@@ -62,6 +74,7 @@ int main(void)
   a = stk_strarraycat(arr, 2);
   a = stk_printf("Bew%s!", a);
   puts(a);
+  puts(stk_hexdump(a, 3));
   return 0;
 }
 
index 03f68904692ffe4cb1344b003c8abf9edc2dad21..6337a26b5b2c5f2da0901d7a154f12bfa2b32c67 100644 (file)
 #define stk_strmulticat(s...) ({ char *_s[]={s}; char *_x=alloca(stk_array_len(_s, ARRAY_SIZE(_s)-1)); stk_array_copy(_x, _s, ARRAY_SIZE(_s)-1); _x; })
 #define stk_strarraycat(s,n) ({ char **_s=(s); int _n=(n); char *_x=alloca(stk_array_len(_s,_n)); stk_array_copy(_x, _s, _n); _x; })
 #define stk_printf(f...) ({ uns _l=stk_printf_internal(f); char *_x=alloca(_l); memcpy(_x, stk_printf_buf, _l); _x; })
+#define stk_hexdump(s,n) ({ uns _n=(n); char *_x=alloca(3*_n+1); stk_hexdump_internal(_x,(byte*)(s),_n); _x; })
 
 uns stk_array_len(char **s, uns cnt);
 void stk_array_copy(char *x, char **s, uns cnt);
 uns stk_printf_internal(char *x, ...) FORMAT_CHECK(printf,1,2);
+void stk_hexdump_internal(char *dst, byte *src, uns n);
 
 extern char *stk_printf_buf;
index 62f0047711df3ec8e5ef50e9b0fe8e02a21f8898..9b1e7e507eb795b77008bc1c45ddb9b8ce697698 100644 (file)
@@ -2,3 +2,4 @@
 
 Run:   obj/lib/stkstring-t
 Out:   Beware the Jabberwock, my son!
+       42 65 77