diff options
Diffstat (limited to 'ui-shared.c')
| -rw-r--r-- | ui-shared.c | 270 |
1 files changed, 203 insertions, 67 deletions
diff --git a/ui-shared.c b/ui-shared.c index 8a7cc32..ae29615 100644 --- a/ui-shared.c +++ b/ui-shared.c | |||
| @@ -27,7 +27,7 @@ static char *http_date(time_t t) | |||
| 27 | tm->tm_hour, tm->tm_min, tm->tm_sec); | 27 | tm->tm_hour, tm->tm_min, tm->tm_sec); |
| 28 | } | 28 | } |
| 29 | 29 | ||
| 30 | void cgit_print_error(char *msg) | 30 | void cgit_print_error(const char *msg) |
| 31 | { | 31 | { |
| 32 | html("<div class='error'>"); | 32 | html("<div class='error'>"); |
| 33 | html_txt(msg); | 33 | html_txt(msg); |
| @@ -133,7 +133,7 @@ char *cgit_currurl() | |||
| 133 | return fmt("%s/", ctx.cfg.virtual_root); | 133 | return fmt("%s/", ctx.cfg.virtual_root); |
| 134 | } | 134 | } |
| 135 | 135 | ||
| 136 | static void site_url(char *page, char *search, int ofs) | 136 | static void site_url(const char *page, const char *search, int ofs) |
| 137 | { | 137 | { |
| 138 | char *delim = "?"; | 138 | char *delim = "?"; |
| 139 | 139 | ||
| @@ -160,8 +160,8 @@ static void site_url(char *page, char *search, int ofs) | |||
| 160 | } | 160 | } |
| 161 | } | 161 | } |
| 162 | 162 | ||
| 163 | static void site_link(char *page, char *name, char *title, char *class, | 163 | static void site_link(const char *page, const char *name, const char *title, |
| 164 | char *search, int ofs) | 164 | const char *class, const char *search, int ofs) |
| 165 | { | 165 | { |
| 166 | html("<a"); | 166 | html("<a"); |
| 167 | if (title) { | 167 | if (title) { |
| @@ -181,14 +181,14 @@ static void site_link(char *page, char *name, char *title, char *class, | |||
| 181 | html("</a>"); | 181 | html("</a>"); |
| 182 | } | 182 | } |
| 183 | 183 | ||
| 184 | void cgit_index_link(char *name, char *title, char *class, char *pattern, | 184 | void cgit_index_link(const char *name, const char *title, const char *class, |
| 185 | int ofs) | 185 | const char *pattern, int ofs) |
| 186 | { | 186 | { |
| 187 | site_link(NULL, name, title, class, pattern, ofs); | 187 | site_link(NULL, name, title, class, pattern, ofs); |
| 188 | } | 188 | } |
| 189 | 189 | ||
| 190 | static char *repolink(char *title, char *class, char *page, char *head, | 190 | static char *repolink(const char *title, const char *class, const char *page, |
| 191 | char *path) | 191 | const char *head, const char *path) |
| 192 | { | 192 | { |
| 193 | char *delim = "?"; | 193 | char *delim = "?"; |
| 194 | 194 | ||
| @@ -240,8 +240,9 @@ static char *repolink(char *title, char *class, char *page, char *head, | |||
| 240 | return fmt("%s", delim); | 240 | return fmt("%s", delim); |
| 241 | } | 241 | } |
| 242 | 242 | ||
| 243 | static void reporevlink(char *page, char *name, char *title, char *class, | 243 | static void reporevlink(const char *page, const char *name, const char *title, |
| 244 | char *head, char *rev, char *path) | 244 | const char *class, const char *head, const char *rev, |
| 245 | const char *path) | ||
| 245 | { | 246 | { |
| 246 | char *delim; | 247 | char *delim; |
| 247 | 248 | ||
| @@ -256,32 +257,33 @@ static void reporevlink(char *page, char *name, char *title, char *class, | |||
| 256 | html("</a>"); | 257 | html("</a>"); |
| 257 | } | 258 | } |
| 258 | 259 | ||
| 259 | void cgit_summary_link(char *name, char *title, char *class, char *head) | 260 | void cgit_summary_link(const char *name, const char *title, const char *class, |
| 261 | const char *head) | ||
| 260 | { | 262 | { |
| 261 | reporevlink(NULL, name, title, class, head, NULL, NULL); | 263 | reporevlink(NULL, name, title, class, head, NULL, NULL); |
| 262 | } | 264 | } |
| 263 | 265 | ||
| 264 | void cgit_tag_link(char *name, char *title, char *class, char *head, | 266 | void cgit_tag_link(const char *name, const char *title, const char *class, |
| 265 | char *rev) | 267 | const char *head, const char *rev) |
| 266 | { | 268 | { |
| 267 | reporevlink("tag", name, title, class, head, rev, NULL); | 269 | reporevlink("tag", name, title, class, head, rev, NULL); |
| 268 | } | 270 | } |
| 269 | 271 | ||
| 270 | void cgit_tree_link(char *name, char *title, char *class, char *head, | 272 | void cgit_tree_link(const char *name, const char *title, const char *class, |
| 271 | char *rev, char *path) | 273 | const char *head, const char *rev, const char *path) |
| 272 | { | 274 | { |
| 273 | reporevlink("tree", name, title, class, head, rev, path); | 275 | reporevlink("tree", name, title, class, head, rev, path); |
| 274 | } | 276 | } |
| 275 | 277 | ||
| 276 | void cgit_plain_link(char *name, char *title, char *class, char *head, | 278 | void cgit_plain_link(const char *name, const char *title, const char *class, |
| 277 | char *rev, char *path) | 279 | const char *head, const char *rev, const char *path) |
| 278 | { | 280 | { |
| 279 | reporevlink("plain", name, title, class, head, rev, path); | 281 | reporevlink("plain", name, title, class, head, rev, path); |
| 280 | } | 282 | } |
| 281 | 283 | ||
| 282 | void cgit_log_link(char *name, char *title, char *class, char *head, | 284 | void cgit_log_link(const char *name, const char *title, const char *class, |
| 283 | char *rev, char *path, int ofs, char *grep, char *pattern, | 285 | const char *head, const char *rev, const char *path, |
| 284 | int showmsg) | 286 | int ofs, const char *grep, const char *pattern, int showmsg) |
| 285 | { | 287 | { |
| 286 | char *delim; | 288 | char *delim; |
| 287 | 289 | ||
| @@ -316,8 +318,9 @@ void cgit_log_link(char *name, char *title, char *class, char *head, | |||
| 316 | html("</a>"); | 318 | html("</a>"); |
| 317 | } | 319 | } |
| 318 | 320 | ||
| 319 | void cgit_commit_link(char *name, char *title, char *class, char *head, | 321 | void cgit_commit_link(char *name, const char *title, const char *class, |
| 320 | char *rev) | 322 | const char *head, const char *rev, const char *path, |
| 323 | int toggle_ssdiff) | ||
| 321 | { | 324 | { |
| 322 | if (strlen(name) > ctx.cfg.max_msg_len && ctx.cfg.max_msg_len >= 15) { | 325 | if (strlen(name) > ctx.cfg.max_msg_len && ctx.cfg.max_msg_len >= 15) { |
| 323 | name[ctx.cfg.max_msg_len] = '\0'; | 326 | name[ctx.cfg.max_msg_len] = '\0'; |
| @@ -325,23 +328,53 @@ void cgit_commit_link(char *name, char *title, char *class, char *head, | |||
| 325 | name[ctx.cfg.max_msg_len - 2] = '.'; | 328 | name[ctx.cfg.max_msg_len - 2] = '.'; |
| 326 | name[ctx.cfg.max_msg_len - 3] = '.'; | 329 | name[ctx.cfg.max_msg_len - 3] = '.'; |
| 327 | } | 330 | } |
| 328 | reporevlink("commit", name, title, class, head, rev, NULL); | 331 | |
| 332 | char *delim; | ||
| 333 | |||
| 334 | delim = repolink(title, class, "commit", head, path); | ||
| 335 | if (rev && strcmp(rev, ctx.qry.head)) { | ||
| 336 | html(delim); | ||
| 337 | html("id="); | ||
| 338 | html_url_arg(rev); | ||
| 339 | delim = "&"; | ||
| 340 | } | ||
| 341 | if ((ctx.qry.ssdiff && !toggle_ssdiff) || (!ctx.qry.ssdiff && toggle_ssdiff)) { | ||
| 342 | html(delim); | ||
| 343 | html("ss=1"); | ||
| 344 | delim = "&"; | ||
| 345 | } | ||
| 346 | if (ctx.qry.context > 0 && ctx.qry.context != 3) { | ||
| 347 | html(delim); | ||
| 348 | html("context="); | ||
| 349 | htmlf("%d", ctx.qry.context); | ||
| 350 | delim = "&"; | ||
| 351 | } | ||
| 352 | if (ctx.qry.ignorews) { | ||
| 353 | html(delim); | ||
| 354 | html("ignorews=1"); | ||
| 355 | delim = "&"; | ||
| 356 | } | ||
| 357 | html("'>"); | ||
| 358 | html_txt(name); | ||
| 359 | html("</a>"); | ||
| 329 | } | 360 | } |
| 330 | 361 | ||
| 331 | void cgit_refs_link(char *name, char *title, char *class, char *head, | 362 | void cgit_refs_link(const char *name, const char *title, const char *class, |
| 332 | char *rev, char *path) | 363 | const char *head, const char *rev, const char *path) |
| 333 | { | 364 | { |
| 334 | reporevlink("refs", name, title, class, head, rev, path); | 365 | reporevlink("refs", name, title, class, head, rev, path); |
| 335 | } | 366 | } |
| 336 | 367 | ||
| 337 | void cgit_snapshot_link(char *name, char *title, char *class, char *head, | 368 | void cgit_snapshot_link(const char *name, const char *title, const char *class, |
| 338 | char *rev, char *archivename) | 369 | const char *head, const char *rev, |
| 370 | const char *archivename) | ||
| 339 | { | 371 | { |
| 340 | reporevlink("snapshot", name, title, class, head, rev, archivename); | 372 | reporevlink("snapshot", name, title, class, head, rev, archivename); |
| 341 | } | 373 | } |
| 342 | 374 | ||
| 343 | void cgit_diff_link(char *name, char *title, char *class, char *head, | 375 | void cgit_diff_link(const char *name, const char *title, const char *class, |
| 344 | char *new_rev, char *old_rev, char *path) | 376 | const char *head, const char *new_rev, const char *old_rev, |
| 377 | const char *path, int toggle_ssdiff) | ||
| 345 | { | 378 | { |
| 346 | char *delim; | 379 | char *delim; |
| 347 | 380 | ||
| @@ -356,24 +389,99 @@ void cgit_diff_link(char *name, char *title, char *class, char *head, | |||
| 356 | html(delim); | 389 | html(delim); |
| 357 | html("id2="); | 390 | html("id2="); |
| 358 | html_url_arg(old_rev); | 391 | html_url_arg(old_rev); |
| 392 | delim = "&"; | ||
| 393 | } | ||
| 394 | if ((ctx.qry.ssdiff && !toggle_ssdiff) || (!ctx.qry.ssdiff && toggle_ssdiff)) { | ||
| 395 | html(delim); | ||
| 396 | html("ss=1"); | ||
| 397 | delim = "&"; | ||
| 398 | } | ||
| 399 | if (ctx.qry.context > 0 && ctx.qry.context != 3) { | ||
| 400 | html(delim); | ||
| 401 | html("context="); | ||
| 402 | htmlf("%d", ctx.qry.context); | ||
| 403 | delim = "&"; | ||
| 404 | } | ||
| 405 | if (ctx.qry.ignorews) { | ||
| 406 | html(delim); | ||
| 407 | html("ignorews=1"); | ||
| 408 | delim = "&"; | ||
| 359 | } | 409 | } |
| 360 | html("'>"); | 410 | html("'>"); |
| 361 | html_txt(name); | 411 | html_txt(name); |
| 362 | html("</a>"); | 412 | html("</a>"); |
| 363 | } | 413 | } |
| 364 | 414 | ||
| 365 | void cgit_patch_link(char *name, char *title, char *class, char *head, | 415 | void cgit_patch_link(const char *name, const char *title, const char *class, |
| 366 | |||
