00001 #ifndef __UTIL_H
00002 #define __UTIL_H
00003
00004 #include<stdlib.h>
00005 #include<assert.h>
00006
00007 static int unhexify(unsigned char *obuf, const char *ibuf)
00008 {
00009 int len = strlen(ibuf) / 2;
00010 assert(!(strlen(ibuf) %1));
00011
00012 while (*ibuf != 0)
00013 {
00014 unsigned char c, c2;
00015 c = *ibuf++;
00016 fprintf(stderr,"%x ",c);
00017 if( c >= '0' && c <= '9' )
00018 c -= '0';
00019 else if( c >= 'a' && c <= 'f' )
00020 c -= 'a' - 10;
00021 else if( c >= 'A' && c <= 'F' )
00022 c -= 'A' - 10;
00023 else
00024 assert( 0 );
00025
00026 c2 = *ibuf++;
00027 if( c2 >= '0' && c2 <= '9' )
00028 c2 -= '0';
00029 else if( c2 >= 'a' && c2 <= 'f' )
00030 c2 -= 'a' - 10;
00031 else if( c2 >= 'A' && c2 <= 'F' )
00032 c2 -= 'A' - 10;
00033 else
00034 assert( 0 );
00035
00036 *obuf++ = ( c << 4 ) | c2;
00037 }
00038
00039 return len;
00040 }
00041
00042 static void hexify(unsigned char *obuf, const unsigned char *ibuf, int len)
00043 {
00044
00045 while (len != 0)
00046 {
00047 unsigned char l, h;
00048 h = (*ibuf) / 16;
00049 l = (*ibuf) % 16;
00050
00051 if( h < 10 )
00052 *obuf++ = '0' + h;
00053 else
00054 *obuf++ = 'a' + h - 10;
00055
00056 if( l < 10 )
00057 *obuf++ = '0' + l;
00058 else
00059 *obuf++ = 'a' + l - 10;
00060
00061 ++ibuf;
00062 len--;
00063 }
00064 }
00065 #endif