summaryrefslogtreecommitdiff
path: root/xs_encdec.h
diff options
context:
space:
mode:
Diffstat (limited to 'xs_encdec.h')
-rw-r--r--xs_encdec.h69
1 files changed, 0 insertions, 69 deletions
diff --git a/xs_encdec.h b/xs_encdec.h
index f4ffe22..14cb36e 100644
--- a/xs_encdec.h
+++ b/xs_encdec.h
@@ -4,9 +4,6 @@
4 4
5#define _XS_ENCDEC_H 5#define _XS_ENCDEC_H
6 6
7 xs_str *xs_hex_enc(const xs_val *data, int size);
8 xs_val *xs_hex_dec(const xs_str *hex, int *size);
9 int xs_is_hex(const char *str);
10 xs_str *xs_base64_enc(const xs_val *data, int sz); 7 xs_str *xs_base64_enc(const xs_val *data, int sz);
11 xs_val *xs_base64_dec(const xs_str *data, int *size); 8 xs_val *xs_base64_dec(const xs_str *data, int *size);
12 int xs_is_base64(const char *str); 9 int xs_is_base64(const char *str);
@@ -14,72 +11,6 @@
14 11
15#ifdef XS_IMPLEMENTATION 12#ifdef XS_IMPLEMENTATION
16 13
17/** hex **/
18
19xs_str *xs_hex_enc(const xs_val *data, int size)
20/* returns an hexdump of data */
21{
22 xs_str *s;
23 char *p;
24 int n;
25
26 p = s = xs_realloc(NULL, _xs_blk_size(size * 2 + 1));
27
28 for (n = 0; n < size; n++) {
29 snprintf(p, 3, "%02x", (unsigned char)data[n]);
30 p += 2;
31 }
32
33 *p = '\0';
34
35 return s;
36}
37
38
39xs_val *xs_hex_dec(const xs_str *hex, int *size)
40/* decodes an hexdump into data */
41{
42 int sz = strlen(hex);
43 xs_val *s = NULL;
44 char *p;
45 int n;
46
47 if (sz % 2)
48 return NULL;
49
50 p = s = xs_realloc(NULL, _xs_blk_size(sz / 2 + 1));
51
52 for (n = 0; n < sz; n += 2) {
53 int i;
54 if (sscanf(&hex[n], "%02x", &i) == 0) {
55 /* decoding error */
56 return xs_free(s);
57 }
58 else
59 *p = i;
60
61 p++;
62 }
63
64 *p = '\0';
65 *size = sz / 2;
66
67 return s;
68}
69
70
71int xs_is_hex(const char *str)
72/* returns 1 if str is an hex string */
73{
74 while (*str) {
75 if (strchr("0123456789abcdefABCDEF", *str++) == NULL)
76 return 0;
77 }
78
79 return 1;
80}
81
82
83/** base64 */ 14/** base64 */
84 15
85static char *xs_b64_tbl = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 16static char *xs_b64_tbl = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"