Microsoft Visual J++. Java


CGI - 3


for(szParam = szBuf;;)

{

//

szPtr = strchr(szParam, '&');

// ,

if(szPtr != NULL)

{

*szPtr = '\0';

DecodeStr(szParam);

//

printf("%s<BR>", szParam);

 

//

szParam = szPtr + 1;

 

// ,

if(szParam >= (szBuf + lSize))

break;

}

else

break;

}

// HTML

printf("</BODY></HTML>");

return;

}

}

 

// ------------------------------------------------

// DecodeStr

// URL

// ------------------------------------------------

void DecodeStr(char *szString)

{

int src;

int dst;

char ch;

 

//

for(src=0, dst=0; szString[src]; src++, dst++)

{

//

ch = szString[src];

 

// "+"

ch = (ch == '+') ? ' ' : ch;

//

szString[dst] = ch;

// "%xx"

if(ch == '%')

{

// "%xx"

//

szString[dst] = DecodeHex(&szString[src + 1]);

src += 2;

}

}

//

szString[dst] = '\0';

}

 

// ------------------------------------------------

// DecodeHex

// "%xx"

// ------------------------------------------------

char DecodeHex(char *str)

{

char ch;

 

//

if(str[0] >= 'A')

ch = ((str[0] & 0xdf) - 'A') + 10;

else

ch = str[0] - '0';

 

// 4

ch <<= 4;

 

//

//

if(str[1] >= 'A')

ch += ((str[1] & 0xdf) - 'A') + 10;

else

ch += str[1] - '0';

 

//

return ch;

}