author | Lars Hjemli <hjemli@gmail.com> | 2006-12-28 01:51:46 (UTC) |
---|---|---|
committer | Lars Hjemli <hjemli@gmail.com> | 2006-12-28 01:51:46 (UTC) |
commit | 05b13194b4b40a2614692125d5037ef20c5fb20e (patch) (unidiff) | |
tree | 5f22ac2e53d5ea3cb8fc50e2ca59c524a7180574 | |
parent | 732d68d240b95dc428c92fc94bce9adb8912094e (diff) | |
download | cgit-05b13194b4b40a2614692125d5037ef20c5fb20e.zip cgit-05b13194b4b40a2614692125d5037ef20c5fb20e.tar.gz cgit-05b13194b4b40a2614692125d5037ef20c5fb20e.tar.bz2 |
Handle '+' in querystring
Translate '+' to ' ' in querystring parser (still doesn't handle %xx)
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
-rw-r--r-- | parsing.c | 2 |
1 files changed, 2 insertions, 0 deletions
@@ -71,48 +71,50 @@ int cgit_read_config(const char *filename, configfn fn) | |||
71 | 71 | ||
72 | if (!f) | 72 | if (!f) |
73 | return -1; | 73 | return -1; |
74 | 74 | ||
75 | while((len = read_config_line(f, line, &value, sizeof(line))) > 0) | 75 | while((len = read_config_line(f, line, &value, sizeof(line))) > 0) |
76 | (*fn)(line, value); | 76 | (*fn)(line, value); |
77 | 77 | ||
78 | fclose(f); | 78 | fclose(f); |
79 | return ret; | 79 | return ret; |
80 | } | 80 | } |
81 | 81 | ||
82 | int cgit_parse_query(char *txt, configfn fn) | 82 | int cgit_parse_query(char *txt, configfn fn) |
83 | { | 83 | { |
84 | char *t, *value = NULL, c; | 84 | char *t, *value = NULL, c; |
85 | 85 | ||
86 | if (!txt) | 86 | if (!txt) |
87 | return 0; | 87 | return 0; |
88 | 88 | ||
89 | t = txt = xstrdup(txt); | 89 | t = txt = xstrdup(txt); |
90 | 90 | ||
91 | while((c=*t) != '\0') { | 91 | while((c=*t) != '\0') { |
92 | if (c=='=') { | 92 | if (c=='=') { |
93 | *t = '\0'; | 93 | *t = '\0'; |
94 | value = t+1; | 94 | value = t+1; |
95 | } else if (c=='+') { | ||
96 | *t = ' '; | ||
95 | } else if (c=='&') { | 97 | } else if (c=='&') { |
96 | *t = '\0'; | 98 | *t = '\0'; |
97 | (*fn)(txt, value); | 99 | (*fn)(txt, value); |
98 | txt = t+1; | 100 | txt = t+1; |
99 | value = NULL; | 101 | value = NULL; |
100 | } | 102 | } |
101 | t++; | 103 | t++; |
102 | } | 104 | } |
103 | if (t!=txt) | 105 | if (t!=txt) |
104 | (*fn)(txt, value); | 106 | (*fn)(txt, value); |
105 | return 0; | 107 | return 0; |
106 | } | 108 | } |
107 | 109 | ||
108 | char *substr(const char *head, const char *tail) | 110 | char *substr(const char *head, const char *tail) |
109 | { | 111 | { |
110 | char *buf; | 112 | char *buf; |
111 | 113 | ||
112 | buf = xmalloc(tail - head + 1); | 114 | buf = xmalloc(tail - head + 1); |
113 | strncpy(buf, head, tail - head); | 115 | strncpy(buf, head, tail - head); |
114 | buf[tail - head] = '\0'; | 116 | buf[tail - head] = '\0'; |
115 | return buf; | 117 | return buf; |
116 | } | 118 | } |
117 | 119 | ||
118 | struct commitinfo *cgit_parse_commit(struct commit *commit) | 120 | struct commitinfo *cgit_parse_commit(struct commit *commit) |