summaryrefslogtreecommitdiffabout
path: root/cgit.c
authorLars Hjemli <hjemli@gmail.com>2009-08-24 11:31:49 (UTC)
committer Lars Hjemli <hjemli@gmail.com>2009-08-24 11:31:49 (UTC)
commitee554849ac7209fa8f7486327ec9f3b370e4c876 (patch) (unidiff)
tree63c284ebf72ea401067dd5d4d59ae8ede8f8743c /cgit.c
parent588fb8efc69778b85062e8fc2f482a8de43bad75 (diff)
downloadcgit-ee554849ac7209fa8f7486327ec9f3b370e4c876.zip
cgit-ee554849ac7209fa8f7486327ec9f3b370e4c876.tar.gz
cgit-ee554849ac7209fa8f7486327ec9f3b370e4c876.tar.bz2
cgit.c: respect repo-local 'snapshots' option for --scan-path
The repo-specific 'snapshots' option is bitwise AND'ed with the global 'snapshots' option during parsing, and since the global cgitrc hasn't been parsed when --scan-path is processed the global 'snapshots' will always be 0 (i.e. no repo-specific 'snapshots' setting will have any effect). This patch fixes the issue by setting the global 'snapshots' mask to 0xFF (hence relying on later parsing of the generated cgitrc repolist to do the right thing). Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (limited to 'cgit.c') (more/less context) (ignore whitespace changes)
-rw-r--r--cgit.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/cgit.c b/cgit.c
index 8381630..3fcca2a 100644
--- a/cgit.c
+++ b/cgit.c
@@ -611,24 +611,34 @@ static void cgit_parse_args(int argc, const char **argv)
611 ctx.qry.head = xstrdup(argv[i]+7); 611 ctx.qry.head = xstrdup(argv[i]+7);
612 ctx.qry.has_symref = 1; 612 ctx.qry.has_symref = 1;
613 } 613 }
614 if (!strncmp(argv[i], "--sha1=", 7)) { 614 if (!strncmp(argv[i], "--sha1=", 7)) {
615 ctx.qry.sha1 = xstrdup(argv[i]+7); 615 ctx.qry.sha1 = xstrdup(argv[i]+7);
616 ctx.qry.has_sha1 = 1; 616 ctx.qry.has_sha1 = 1;
617 } 617 }
618 if (!strncmp(argv[i], "--ofs=", 6)) { 618 if (!strncmp(argv[i], "--ofs=", 6)) {
619 ctx.qry.ofs = atoi(argv[i]+6); 619 ctx.qry.ofs = atoi(argv[i]+6);
620 } 620 }
621 if (!strncmp(argv[i], "--scan-tree=", 12) || 621 if (!strncmp(argv[i], "--scan-tree=", 12) ||
622 !strncmp(argv[i], "--scan-path=", 12)) { 622 !strncmp(argv[i], "--scan-path=", 12)) {
623 /* HACK: the global snapshot bitmask defines the
624 * set of allowed snapshot formats, but the config
625 * file hasn't been parsed yet so the mask is
626 * currently 0. By setting all bits high before
627 * scanning we make sure that any in-repo cgitrc
628 * snapshot setting is respected by scan_tree().
629 * BTW: we assume that there'll never be more than
630 * 255 different snapshot formats supported by cgit...
631 */
632 ctx.cfg.snapshots = 0xFF;
623 scan++; 633 scan++;
624 scan_tree(argv[i] + 12, repo_config); 634 scan_tree(argv[i] + 12, repo_config);
625 } 635 }
626 } 636 }
627 if (scan) { 637 if (scan) {
628 qsort(cgit_repolist.repos, cgit_repolist.count, 638 qsort(cgit_repolist.repos, cgit_repolist.count,
629 sizeof(struct cgit_repo), cmp_repos); 639 sizeof(struct cgit_repo), cmp_repos);
630 print_repolist(stdout, &cgit_repolist, 0); 640 print_repolist(stdout, &cgit_repolist, 0);
631 exit(0); 641 exit(0);
632 } 642 }
633} 643}
634 644