=================================================================== RCS file: /home/cvs/OpenXM/src/asir-port/cgi/webasir2.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -p -r1.3 -r1.4 --- OpenXM/src/asir-port/cgi/webasir2.c 2014/08/31 07:53:57 1.3 +++ OpenXM/src/asir-port/cgi/webasir2.c 2014/08/31 10:20:33 1.4 @@ -1,4 +1,4 @@ -/* $OpenXM: OpenXM/src/asir-port/cgi/webasir2.c,v 1.2 2014/08/30 22:47:20 takayama Exp $ +/* $OpenXM: OpenXM/src/asir-port/cgi/webasir2.c,v 1.3 2014/08/31 07:53:57 takayama Exp $ */ /* (httpd-asir2.sm1) run webasir2 @@ -16,7 +16,10 @@ #include #define SIZE 0x10000 +#define MKEY "oxMessageBody=" char *byteArrayToUrlEncoding(char *s,int size); +static int cgiHex(int p); +char *urlEncodedStringToString(char *s); int Debug=1; int SetTimer=0; @@ -30,16 +33,17 @@ int main(int argc,char *argv[]) { int i,j,c; char key[SIZE]; char comm[SIZE]; - char *asircomm; + char asircomm[SIZE]; int quit; char workf[SIZE]; quit = 0; - asircomm="3-2;"; + strcpy(asircomm,"3-2;"); + strcpy(asircomm,"oxMessageBody=1%2B3%3B"); for (i=1; i=0; i--) { @@ -176,6 +187,45 @@ char *byteArrayToUrlEncoding(char *s,int size) { return(r); } + +char *urlEncodedStringToString(char *s) +{ + char *ts; + char *ts2; + int i,j; + int p; + int vstart, vend; + if (s == NULL) return(NULL); + vstart = 0; vend = strlen(s)-1; + ts = (char *) malloc(strlen(s)+2); + if (ts == NULL) ; + j = 0; ts[j] = 0; + for (i=vstart; i<=vend; i++,j++) { + ts[j] = 0; + if (s[i] == '+') { + ts[j] = ' '; ts[j+1] = 0; + }else if (s[i] == '%') { + p = cgiHex(s[i+1])*16+cgiHex(s[i+2]); + i = i+2; + ts[j] = p; ts[j+1] = 0; + }else { + ts[j] = s[i]; ts[j+1] = 0; + } + } + ts2 = (char *) malloc(j); + if (ts2 == NULL) ; + for (i=0; i= '0' && p <= '9') return (p-'0'); + if (p >= 'A' && p <= 'F') return (p-'A'+10); + if (p >= 'a' && p <= 'f') return (p-'a'+10); + if (Debug) fprintf(stderr,"%s\n","Invalid argument to cgiHex."); +} usage() { fprintf(stderr,"webasir2 [--quit] [--asir command_string]\n");