mirror of
https://github.com/sheumann/hush.git
synced 2025-01-03 00:31:16 +00:00
od: sometime ago I landed BIG od implementation
from coreutils. My fault. This commit contains cleanups and size reductions.
This commit is contained in:
parent
df38188367
commit
601ae1378b
File diff suppressed because it is too large
Load Diff
@ -671,7 +671,7 @@ static char *encodeString(const char *string)
|
|||||||
*
|
*
|
||||||
* $Parameters:
|
* $Parameters:
|
||||||
* (char *) string . . . The first string to decode.
|
* (char *) string . . . The first string to decode.
|
||||||
* (int) flag . . . 1 if require decode '+' as ' ' for CGI
|
* (int) flag . . . 1 if need to decode '+' as ' ' for CGI
|
||||||
*
|
*
|
||||||
* $Return: (char *) . . . . A pointer to the decoded string (same as input).
|
* $Return: (char *) . . . . A pointer to the decoded string (same as input).
|
||||||
*
|
*
|
||||||
@ -685,14 +685,18 @@ static char *decodeString(char *orig, int flag_plus_to_space)
|
|||||||
char *ptr = string;
|
char *ptr = string;
|
||||||
|
|
||||||
while (*ptr) {
|
while (*ptr) {
|
||||||
if (*ptr == '+' && flag_plus_to_space) { *string++ = ' '; ptr++; }
|
if (*ptr == '+' && flag_plus_to_space) {
|
||||||
else if (*ptr != '%') *string++ = *ptr++;
|
*string++ = ' ';
|
||||||
else {
|
ptr++;
|
||||||
|
} else if (*ptr != '%') {
|
||||||
|
*string++ = *ptr++;
|
||||||
|
} else {
|
||||||
unsigned int value1, value2;
|
unsigned int value1, value2;
|
||||||
|
|
||||||
ptr++;
|
ptr++;
|
||||||
if (sscanf(ptr, "%1X", &value1) != 1 ||
|
if (sscanf(ptr, "%1X", &value1) != 1
|
||||||
sscanf(ptr+1, "%1X", &value2) != 1) {
|
|| sscanf(ptr+1, "%1X", &value2) != 1
|
||||||
|
) {
|
||||||
if (!flag_plus_to_space)
|
if (!flag_plus_to_space)
|
||||||
return NULL;
|
return NULL;
|
||||||
*string++ = '%';
|
*string++ = '%';
|
||||||
|
Loading…
Reference in New Issue
Block a user