URI: 
       tunesc.c - plan9port - [fork] Plan 9 from user space
  HTML git clone git://src.adamsgaard.dk/plan9port
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
       tunesc.c (788B)
       ---
            1 /*
            2  *        upas/unesc - interpret =?foo?bar?=char?= escapes
            3  */
            4 
            5 #include <stdio.h>
            6 #include <stdlib.h>
            7 
            8 int
            9 hex(int c)
           10 {
           11         if('0' <= c && c <= '9')
           12                 return c - '0';
           13         if('A' <= c && c <= 'F')
           14                 return c - 'A' + 10;
           15         if('a' <= c && c <= 'f')
           16                 return c - 'a' + 10;
           17         return 0;
           18 }
           19 
           20 int
           21 main(int argc, char **argv)
           22 {
           23         int c;
           24 
           25         while((c=getchar()) != EOF){
           26                 if(c == '='){
           27                         if((c=getchar()) == '?'){
           28                                 while((c=getchar()) != EOF && c != '?')
           29                                         continue;
           30                                 while((c=getchar()) != EOF && c != '?')
           31                                         continue;
           32                                 while((c=getchar()) != EOF && c != '?'){
           33                                         if(c == '='){
           34                                                 c = hex(getchar()) << 4;
           35                                                 c |= hex(getchar());
           36                                         }
           37                                         putchar(c);
           38                                 }
           39                                 (void) getchar();        /* consume '=' */
           40                         }else{
           41                                 putchar('=');
           42                                 putchar(c);
           43                         }
           44                 }else
           45                         putchar(c);
           46         }
           47         exit(0);
           48 }