summaryrefslogtreecommitdiffabout
authorJonathan Bastien-Filiatrault <joe@x2a.org>2007-10-26 22:10:26 (UTC)
committer Jonathan Bastien-Filiatrault <joe@x2a.org>2007-11-05 23:13:30 (UTC)
commitaa5cc328f4894ba6972842b4edbca3017f169050 (patch) (unidiff)
treec8eb7be0f9186d3599a7d36907f473a550fd7529
parent3845e177e4e0b231efb6fda0ac3cd3a2d8f34d4b (diff)
downloadcgit-aa5cc328f4894ba6972842b4edbca3017f169050.zip
cgit-aa5cc328f4894ba6972842b4edbca3017f169050.tar.gz
cgit-aa5cc328f4894ba6972842b4edbca3017f169050.tar.bz2
Set msg_encoding according to the header.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--parsing.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/parsing.c b/parsing.c
index 0412a9c..16b4db7 100644
--- a/parsing.c
+++ b/parsing.c
@@ -213,48 +213,56 @@ struct commitinfo *cgit_parse_commit(struct commit *commit)
213 p += 48; // "parent " + hex[40] + "\n" 213 p += 48; // "parent " + hex[40] + "\n"
214 214
215 if (!strncmp(p, "author ", 7)) { 215 if (!strncmp(p, "author ", 7)) {
216 p += 7; 216 p += 7;
217 t = strchr(p, '<') - 1; 217 t = strchr(p, '<') - 1;
218 ret->author = substr(p, t); 218 ret->author = substr(p, t);
219 p = t; 219 p = t;
220 t = strchr(t, '>') + 1; 220 t = strchr(t, '>') + 1;
221 ret->author_email = substr(p, t); 221 ret->author_email = substr(p, t);
222 ret->author_date = atol(++t); 222 ret->author_date = atol(++t);
223 p = strchr(t, '\n') + 1; 223 p = strchr(t, '\n') + 1;
224 } 224 }
225 225
226 if (!strncmp(p, "committer ", 9)) { 226 if (!strncmp(p, "committer ", 9)) {
227 p += 9; 227 p += 9;
228 t = strchr(p, '<') - 1; 228 t = strchr(p, '<') - 1;
229 ret->committer = substr(p, t); 229 ret->committer = substr(p, t);
230 p = t; 230 p = t;
231 t = strchr(t, '>') + 1; 231 t = strchr(t, '>') + 1;
232 ret->committer_email = substr(p, t); 232 ret->committer_email = substr(p, t);
233 ret->committer_date = atol(++t); 233 ret->committer_date = atol(++t);
234 p = strchr(t, '\n') + 1; 234 p = strchr(t, '\n') + 1;
235 } 235 }
236 236
237 if (!strncmp(p, "encoding ", 9)) {
238 p += 9;
239 t = strchr(p, '\n') + 1;
240 ret->msg_encoding = substr(p, t);
241 p = t;
242 } else
243 ret->msg_encoding = xstrdup(PAGE_ENCODING);
244
237 while (*p && (*p != '\n')) 245 while (*p && (*p != '\n'))
238 p = strchr(p, '\n') + 1; // skip unknown header fields 246 p = strchr(p, '\n') + 1; // skip unknown header fields
239 247
240 while (*p == '\n') 248 while (*p == '\n')
241 p = strchr(p, '\n') + 1; 249 p = strchr(p, '\n') + 1;
242 250
243 t = strchr(p, '\n'); 251 t = strchr(p, '\n');
244 if (t) { 252 if (t) {
245 if (*t == '\0') 253 if (*t == '\0')
246 ret->subject = "** empty **"; 254 ret->subject = "** empty **";
247 else 255 else
248 ret->subject = substr(p, t); 256 ret->subject = substr(p, t);
249 p = t + 1; 257 p = t + 1;
250 258
251 while (*p == '\n') 259 while (*p == '\n')
252 p = strchr(p, '\n') + 1; 260 p = strchr(p, '\n') + 1;
253 ret->msg = xstrdup(p); 261 ret->msg = xstrdup(p);
254 } else 262 } else
255 ret->subject = substr(p, p+strlen(p)); 263 ret->subject = substr(p, p+strlen(p));
256 264
257 return ret; 265 return ret;
258} 266}
259 267
260 268