4 * Copyright (c) 2008 James McKenzie <sympathy@madingley.org>,
9 static char rcsid[] = "$Id: expand.c,v 1.6 2008/03/11 17:56:04 james Exp $";
13 * Revision 1.6 2008/03/11 17:56:04 james
14 * *** empty log message ***
16 * Revision 1.5 2008/03/10 11:49:32 james
17 * *** empty log message ***
19 * Revision 1.4 2008/03/07 14:19:29 staffcvs
20 * *** empty log message ***
22 * Revision 1.3 2008/03/07 14:16:44 james
23 * *** empty log message ***
25 * Revision 1.2 2008/03/07 14:13:40 james
26 * *** empty log message ***
28 * Revision 1.1 2008/03/07 13:56:39 james
29 * *** empty log message ***
58 return 0xa + (c - 'a');
65 return 0xA + (c - 'A');
73 return (xdigit_to_i (c) == -1) ? 0 : 1;
95 octal (const char **in)
100 if (!my_isodigit (**in))
103 o += (*((*in)++)) - '0';
110 hex (const char **in)
116 printf ("%c %d\n", **in, x);
117 if (!my_isxdigit (**in))
120 x += xdigit_to_i (*((*in)++));
127 expand (const char *in, int *len)
129 const char *iptr = in;
138 optr = ret = malloc (l + 1);
154 *(optr++) = *(iptr++);
200 *(optr++) = octal (&iptr);
204 *(optr++) = hex (&iptr);
210 *(optr++) = *(iptr++);
214 *(optr++) = *(iptr++);