diff options
| -rw-r--r-- | cgit.c | 56 | ||||
| -rw-r--r-- | scan-tree.c | 6 |
2 files changed, 34 insertions, 28 deletions
| @@ -31,6 +31,7 @@ static void process_cached_repolist(const char *path); | |||
| 31 | 31 | ||
| 32 | static void repo_config(struct cgit_repo *repo, const char *name, const char *value) | 32 | static void repo_config(struct cgit_repo *repo, const char *name, const char *value) |
| 33 | { | 33 | { |
| 34 | const char *path; | ||
| 34 | struct string_list_item *item; | 35 | struct string_list_item *item; |
| 35 | 36 | ||
| 36 | if (!strcmp(name, "name")) | 37 | if (!strcmp(name, "name")) |
| @@ -73,8 +74,8 @@ static void repo_config(struct cgit_repo *repo, const char *name, const char *va | |||
| 73 | repo->max_stats = cgit_find_stats_period(value, NULL); | 74 | repo->max_stats = cgit_find_stats_period(value, NULL); |
| 74 | else if (!strcmp(name, "module-link")) | 75 | else if (!strcmp(name, "module-link")) |
| 75 | repo->module_link= xstrdup(value); | 76 | repo->module_link= xstrdup(value); |
| 76 | else if (starts_with(name, "module-link.")) { | 77 | else if (skip_prefix(name, "module-link.", &path)) { |
| 77 | item = string_list_append(&repo->submodules, xstrdup(name + 12)); | 78 | item = string_list_append(&repo->submodules, xstrdup(path)); |
| 78 | item->util = xstrdup(value); | 79 | item->util = xstrdup(value); |
| 79 | } else if (!strcmp(name, "section")) | 80 | } else if (!strcmp(name, "section")) |
| 80 | repo->section = xstrdup(value); | 81 | repo->section = xstrdup(value); |
| @@ -106,14 +107,16 @@ static void repo_config(struct cgit_repo *repo, const char *name, const char *va | |||
| 106 | 107 | ||
| 107 | static void config_cb(const char *name, const char *value) | 108 | static void config_cb(const char *name, const char *value) |
| 108 | { | 109 | { |
| 110 | const char *arg; | ||
| 111 | |||
| 109 | if (!strcmp(name, "section") || !strcmp(name, "repo.group")) | 112 | if (!strcmp(name, "section") || !strcmp(name, "repo.group")) |
| 110 | ctx.cfg.section = xstrdup(value); | 113 | ctx.cfg.section = xstrdup(value); |
| 111 | else if (!strcmp(name, "repo.url")) | 114 | else if (!strcmp(name, "repo.url")) |
| 112 | ctx.repo = cgit_add_repo(value); | 115 | ctx.repo = cgit_add_repo(value); |
| 113 | else if (ctx.repo && !strcmp(name, "repo.path")) | 116 | else if (ctx.repo && !strcmp(name, "repo.path")) |
| 114 | ctx.repo->path = trim_end(value, '/'); | 117 | ctx.repo->path = trim_end(value, '/'); |
| 115 | else if (ctx.repo && starts_with(name, "repo.")) | 118 | else if (ctx.repo && skip_prefix(name, "repo.", &arg)) |
| 116 | repo_config(ctx.repo, name + 5, value); | 119 | repo_config(ctx.repo, arg, value); |
| 117 | else if (!strcmp(name, "readme")) | 120 | else if (!strcmp(name, "readme")) |
| 118 | string_list_append(&ctx.cfg.readme, xstrdup(value)); | 121 | string_list_append(&ctx.cfg.readme, xstrdup(value)); |
| 119 | else if (!strcmp(name, "root-title")) | 122 | else if (!strcmp(name, "root-title")) |
| @@ -280,8 +283,8 @@ static void config_cb(const char *name, const char *value) | |||
| 280 | ctx.cfg.branch_sort = 1; | 283 | ctx.cfg.branch_sort = 1; |
| 281 | if (!strcmp(value, "name")) | 284 | if (!strcmp(value, "name")) |
| 282 | ctx.cfg.branch_sort = 0; | 285 | ctx.cfg.branch_sort = 0; |
| 283 | } else if (starts_with(name, "mimetype.")) | 286 | } else if (skip_prefix(name, "mimetype.", &arg)) |
| 284 | add_mimetype(name + 9, value); | 287 | add_mimetype(arg, value); |
| 285 | else if (!strcmp(name, "include")) | 288 | else if (!strcmp(name, "include")) |
| 286 | parse_configfile(expand_macros(value), config_cb); | 289 | parse_configfile(expand_macros(value), config_cb); |
| 287 | } | 290 | } |
| @@ -470,13 +473,13 @@ static char *find_default_branch(struct cgit_repo *repo) | |||
| 470 | 473 | ||
| 471 | static char *guess_defbranch(void) | 474 | static char *guess_defbranch(void) |
| 472 | { | 475 | { |
| 473 | const char *ref; | 476 | const char *ref, *refname; |
| 474 | struct object_id oid; | 477 | struct object_id oid; |
| 475 | 478 | ||
| 476 | ref = resolve_ref_unsafe("HEAD", 0, oid.hash, NULL); | 479 | ref = resolve_ref_unsafe("HEAD", 0, oid.hash, NULL); |
| 477 | if (!ref || !starts_with(ref, "refs/heads/")) | 480 | if (!ref || !skip_prefix(ref, "refs/heads/", &refname)) |
| 478 | return "master"; | 481 | return "master"; |
| 479 | return xstrdup(ref + 11); | 482 | return xstrdup(refname); |
| 480 | } | 483 | } |
| 481 | 484 | ||
| 482 | /* The caller must free filename and ref after calling this. */ | 485 | /* The caller must free filename and ref after calling this. */ |
| @@ -938,6 +941,7 @@ out: | |||
| 938 | static void cgit_parse_args(int argc, const char **argv) | 941 | static void cgit_parse_args(int argc, const char **argv) |
| 939 | { | 942 | { |
| 940 | int i; | 943 | int i; |
| 944 | const char *arg; | ||
| 941 | int scan = 0; | 945 | int scan = 0; |
| 942 | 946 | ||
| 943 | for (i = 1; i < argc; i++) { | 947 | for (i = 1; i < argc; i++) { |
| @@ -958,28 +962,28 @@ static void cgit_parse_args(int argc, const char **argv) | |||
| 958 | 962 | ||
| 959 | exit(0); | 963 | exit(0); |
| 960 | } | 964 | } |
| 961 | if (starts_with(argv[i], "--cache=")) { | 965 | if (skip_prefix(argv[i], "--cache=", &arg)) { |
| 962 | ctx.cfg.cache_root = xstrdup(argv[i] + 8); | 966 | ctx.cfg.cache_root = xstrdup(arg); |
| 963 | } else if (!strcmp(argv[i], "--nocache")) { | 967 | } else if (!strcmp(argv[i], "--nocache")) { |
| 964 | ctx.cfg.nocache = 1; | 968 | ctx.cfg.nocache = 1; |
| 965 | } else if (!strcmp(argv[i], "--nohttp")) { | 969 | } else if (!strcmp(argv[i], "--nohttp")) { |
| 966 | ctx.env.no_http = "1"; | 970 | ctx.env.no_http = "1"; |
| 967 | } else if (starts_with(argv[i], "--query=")) { | 971 | } else if (skip_prefix(argv[i], "--query=", &arg)) { |
| 968 | ctx.qry.raw = xstrdup(argv[i] + 8); | 972 | ctx.qry.raw = xstrdup(arg); |
| 969 | } else if (starts_with(argv[i], "--repo=")) { | 973 | } else if (skip_prefix(argv[i], "--repo=", &arg)) { |
| 970 | ctx.qry.repo = xstrdup(argv[i] + 7); | 974 | ctx.qry.repo = xstrdup(arg); |
| 971 | } else if (starts_with(argv[i], "--page=")) { | 975 | } else if (skip_prefix(argv[i], "--page=", &arg)) { |
| 972 | ctx.qry.page = xstrdup(argv[i] + 7); | 976 | ctx.qry.page = xstrdup(arg); |
| 973 | } else if (starts_with(argv[i], "--head=")) { | 977 | } else if (skip_prefix(argv[i], "--head=", &arg)) { |
| 974 | ctx.qry.head = xstrdup(argv[i] + 7); | 978 | ctx.qry.head = xstrdup(arg); |
| 975 | ctx.qry.has_symref = 1; | 979 | ctx.qry.has_symref = 1; |
| 976 | } else if (starts_with(argv[i], "--sha1=")) { | 980 | } else if (skip_prefix(argv[i], "--sha1=", &arg)) { |
| 977 | ctx.qry.sha1 = xstrdup(argv[i] + 7); | 981 | ctx.qry.sha1 = xstrdup(arg); |
| 978 | ctx.qry.has_sha1 = 1; | 982 | ctx.qry.has_sha1 = 1; |
| 979 | } else if (starts_with(argv[i], "--ofs=")) { | 983 | } else if (skip_prefix(argv[i], "--ofs=", &arg)) { |
| 980 | ctx.qry.ofs = atoi(argv[i] + 6); | 984 | ctx.qry.ofs = atoi(arg); |
| 981 | } else if (starts_with(argv[i], "--scan-tree=") || | 985 | } else if (skip_prefix(argv[i], "--scan-tree=", &arg) || |
| 982 | starts_with(argv[i], "--scan-path=")) { | 986 | skip_prefix(argv[i], "--scan-path=", &arg)) { |
| 983 | /* | 987 | /* |
| 984 | * HACK: The global snapshot bit mask defines the set | 988 | * HACK: The global snapshot bit mask defines the set |
| 985 | * of allowed snapshot formats, but the config file | 989 | * of allowed snapshot formats, but the config file |
| @@ -993,7 +997,7 @@ static void cgit_parse_args(int argc, const char **argv) | |||
| 993 | */ | 997 | */ |
| 994 | ctx.cfg.snapshots = 0xFF; | 998 | ctx.cfg.snapshots = 0xFF; |
| 995 | scan++; | 999 | scan++; |
| 996 | scan_tree(argv[i] + 12, repo_config); | 1000 | scan_tree(arg, repo_config); |
| 997 | } | 1001 | } |
| 998 | } | 1002 | } |
| 999 | if (scan) { | 1003 | if (scan) { |
diff --git a/scan-tree.c b/scan-tree.c index 1cb4e5d..08f3f1d 100644 --- a/scan-tree.c +++ b/scan-tree.c | |||
| @@ -55,6 +55,8 @@ static void repo_config(const char *name, const char *value) | |||
| 55 | 55 | ||
| 56 | static int gitconfig_config(const char *key, const char *value, void *cb) | 56 | static int gitconfig_config(const char *key, const char *value, void *cb) |
| 57 | { | 57 | { |
| 58 | const char *name; | ||
| 59 | |||
| 58 | if (!strcmp(key, "gitweb.owner")) | 60 | if (!strcmp(key, "gitweb.owner")) |
| 59 | config_fn(repo, "owner", value); | 61 | config_fn(repo, "owner", value); |
| 60 | else if (!strcmp(key, "gitweb.description")) | 62 | else if (!strcmp(key, "gitweb.description")) |
| @@ -63,8 +65,8 @@ static int gitconfig_config(const char *key, const char *value, void *cb) | |||
| 63 | config_fn(repo, "section", value); | 65 | config_fn(repo, "section", value); |
| 64 | else if (!strcmp(key, "gitweb.homepage")) | 66 | else if (!strcmp(key, "gitweb.homepage")) |
| 65 | config_fn(repo, "homepage", value); | 67 | config_fn(repo, "homepage", value); |
| 66 | else if (starts_with(key, "cgit.")) | 68 | else if (skip_prefix(key, "cgit.", &name)) |
| 67 | config_fn(repo, key + 5, value); | 69 | config_fn(repo, name, value); |
| 68 | 70 | ||
| 69 | return 0; | 71 | return 0; |
| 70 | } | 72 | } |
