/*
** -----------------------------------------------------------------------------**
** editconf.c
**
** Copyright (C) 2006 Elphel, Inc.
**
** -----------------------------------------------------------------------------**
** This program is free software: you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation, either version 3 of the License, or
** (at your option) any later version.
**
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with this program. If not, see .
** -----------------------------------------------------------------------------**
*/
#include
#include
int hexdigit (char c) {
int i;
i=c-'0';
if ((i>=0) && (i<10)) return i;
i=c-'a'+10;
if ((i>=10) && (i<16)) return i;
i=c-'A'+10;
if ((i>=10) && (i<16)) return i;
return 0; // could be -1??
}
int main(argc, argv)
int argc;
char *argv[];
{
if (argc<2) {printf("unescape returnes unescaped string (argument) to stdout\n"); return 0; }
int i=0;
while (argv[1][i]) {
if ((argv[1][i]=='%') && argv[1][i+1]) { // behavior from Mozilla
printf("%c", (char) (hexdigit(argv[1][i+1])<<4) | hexdigit(argv[1][i+2]));
i+=3;
} else printf("%c",argv[1][i++]);
}
return 0;
}