2 5cdb1798 2005-10-29 devnull * upas/unesc - interpret =?foo?bar?=char?= escapes
5 5cdb1798 2005-10-29 devnull #include <stdio.h>
6 5cdb1798 2005-10-29 devnull #include <stdlib.h>
9 5cdb1798 2005-10-29 devnull hex(int c)
11 5cdb1798 2005-10-29 devnull if('0' <= c && c <= '9')
12 5cdb1798 2005-10-29 devnull return c - '0';
13 5cdb1798 2005-10-29 devnull if('A' <= c && c <= 'F')
14 5cdb1798 2005-10-29 devnull return c - 'A' + 10;
15 5cdb1798 2005-10-29 devnull if('a' <= c && c <= 'f')
16 5cdb1798 2005-10-29 devnull return c - 'a' + 10;
17 5cdb1798 2005-10-29 devnull return 0;
21 5cdb1798 2005-10-29 devnull main(int argc, char **argv)
25 5cdb1798 2005-10-29 devnull while((c=getchar()) != EOF){
26 5cdb1798 2005-10-29 devnull if(c == '='){
27 5cdb1798 2005-10-29 devnull if((c=getchar()) == '?'){
28 5cdb1798 2005-10-29 devnull while((c=getchar()) != EOF && c != '?')
29 5cdb1798 2005-10-29 devnull continue;
30 5cdb1798 2005-10-29 devnull while((c=getchar()) != EOF && c != '?')
31 5cdb1798 2005-10-29 devnull continue;
32 5cdb1798 2005-10-29 devnull while((c=getchar()) != EOF && c != '?'){
33 5cdb1798 2005-10-29 devnull if(c == '='){
34 5cdb1798 2005-10-29 devnull c = hex(getchar()) << 4;
35 5cdb1798 2005-10-29 devnull c |= hex(getchar());
37 5cdb1798 2005-10-29 devnull putchar(c);
39 5cdb1798 2005-10-29 devnull (void) getchar(); /* consume '=' */
41 5cdb1798 2005-10-29 devnull putchar('=');
42 5cdb1798 2005-10-29 devnull putchar(c);
45 5cdb1798 2005-10-29 devnull putchar(c);