Blame


1 2277c5d7 2004-03-21 devnull #include "std.h"
2 2277c5d7 2004-03-21 devnull #include "dat.h"
3 2277c5d7 2004-03-21 devnull
4 2277c5d7 2004-03-21 devnull static int
5 2277c5d7 2004-03-21 devnull unhex(char c)
6 2277c5d7 2004-03-21 devnull {
7 2277c5d7 2004-03-21 devnull if('0' <= c && c <= '9')
8 2277c5d7 2004-03-21 devnull return c-'0';
9 2277c5d7 2004-03-21 devnull if('a' <= c && c <= 'f')
10 2277c5d7 2004-03-21 devnull return c-'a'+10;
11 2277c5d7 2004-03-21 devnull if('A' <= c && c <= 'F')
12 2277c5d7 2004-03-21 devnull return c-'A'+10;
13 2277c5d7 2004-03-21 devnull abort();
14 2277c5d7 2004-03-21 devnull return -1;
15 2277c5d7 2004-03-21 devnull }
16 2277c5d7 2004-03-21 devnull
17 2277c5d7 2004-03-21 devnull int
18 2277c5d7 2004-03-21 devnull hexparse(char *hex, uchar *dat, int ndat)
19 2277c5d7 2004-03-21 devnull {
20 2277c5d7 2004-03-21 devnull int i, n;
21 2277c5d7 2004-03-21 devnull
22 2277c5d7 2004-03-21 devnull n = strlen(hex);
23 2277c5d7 2004-03-21 devnull if(n%2)
24 2277c5d7 2004-03-21 devnull return -1;
25 2277c5d7 2004-03-21 devnull n /= 2;
26 2277c5d7 2004-03-21 devnull if(n > ndat)
27 2277c5d7 2004-03-21 devnull return -1;
28 2277c5d7 2004-03-21 devnull if(hex[strspn(hex, "0123456789abcdefABCDEF")] != '\0')
29 2277c5d7 2004-03-21 devnull return -1;
30 2277c5d7 2004-03-21 devnull for(i=0; i<n; i++)
31 2277c5d7 2004-03-21 devnull dat[i] = (unhex(hex[2*i])<<4)|unhex(hex[2*i+1]);
32 2277c5d7 2004-03-21 devnull return n;
33 2277c5d7 2004-03-21 devnull }
34 2277c5d7 2004-03-21 devnull
35 2277c5d7 2004-03-21 devnull char*
36 2277c5d7 2004-03-21 devnull estrappend(char *s, char *fmt, ...)
37 2277c5d7 2004-03-21 devnull {
38 2277c5d7 2004-03-21 devnull char *t;
39 2277c5d7 2004-03-21 devnull va_list arg;
40 2277c5d7 2004-03-21 devnull
41 2277c5d7 2004-03-21 devnull va_start(arg, fmt);
42 2277c5d7 2004-03-21 devnull t = vsmprint(fmt, arg);
43 2277c5d7 2004-03-21 devnull if(t == nil)
44 2277c5d7 2004-03-21 devnull sysfatal("out of memory");
45 2277c5d7 2004-03-21 devnull va_end(arg);
46 2277c5d7 2004-03-21 devnull s = erealloc(s, strlen(s)+strlen(t)+1);
47 2277c5d7 2004-03-21 devnull strcat(s, t);
48 2277c5d7 2004-03-21 devnull free(t);
49 2277c5d7 2004-03-21 devnull return s;
50 2277c5d7 2004-03-21 devnull }
51 2277c5d7 2004-03-21 devnull
52 2277c5d7 2004-03-21 devnull