Unidiff1 files changed, 21 insertions, 0 deletions
|
diff --git a/parsing.c b/parsing.c index 1b22fcf..4173dd4 100644 --- a/ parsing.c+++ b/ parsing.c |
|
@@ -81,2 +81,21 @@ int cgit_read_config(const char *filename, configfn fn) |
81 | |
81 | |
| |
82 | char *convert_query_hexchar(char *txt) |
| |
83 | { |
| |
84 | int d1, d2; |
| |
85 | if (strlen(txt) < 3) { |
| |
86 | *txt = '\0'; |
| |
87 | return txt-1; |
| |
88 | } |
| |
89 | d1 = hextoint(*(txt+1)); |
| |
90 | d2 = hextoint(*(txt+2)); |
| |
91 | if (d1<0 || d2<0) { |
| |
92 | strcpy(txt, txt+3); |
| |
93 | return txt-1; |
| |
94 | } else { |
| |
95 | *txt = d1 * 16 + d2; |
| |
96 | strcpy(txt+1, txt+3); |
| |
97 | return txt; |
| |
98 | } |
| |
99 | } |
| |
100 | |
82 | int cgit_parse_query(char *txt, configfn fn) |
101 | int cgit_parse_query(char *txt, configfn fn) |
@@ -96,2 +115,4 @@ int cgit_parse_query(char *txt, configfn fn) |
96 | *t = ' '; |
115 | *t = ' '; |
| |
116 | } else if (c=='%') { |
| |
117 | t = convert_query_hexchar(t); |
97 | } else if (c=='&') { |
118 | } else if (c=='&') { |
|