diff options
Diffstat (limited to 'shared.c')
| -rw-r--r-- | shared.c | 30 |
1 files changed, 30 insertions, 0 deletions
| @@ -10,6 +10,7 @@ | |||
| 10 | 10 | ||
| 11 | struct repolist cgit_repolist; | 11 | struct repolist cgit_repolist; |
| 12 | struct repoinfo *cgit_repo; | 12 | struct repoinfo *cgit_repo; |
| 13 | int cgit_cmd; | ||
| 13 | 14 | ||
| 14 | char *cgit_root_title = "Git repository browser"; | 15 | char *cgit_root_title = "Git repository browser"; |
| 15 | char *cgit_css = "/cgit.css"; | 16 | char *cgit_css = "/cgit.css"; |
| @@ -52,6 +53,18 @@ int cgit_query_ofs = 0; | |||
| 52 | 53 | ||
| 53 | int htmlfd = 0; | 54 | int htmlfd = 0; |
| 54 | 55 | ||
| 56 | |||
| 57 | int cgit_get_cmd_index(const char *cmd) | ||
| 58 | { | ||
| 59 | static char *cmds[] = {"log", "commit", "diff", "tree", "view", "blob", "snapshot", NULL}; | ||
| 60 | int i; | ||
| 61 | |||
| 62 | for(i = 0; cmds[i]; i++) | ||
| 63 | if (!strcmp(cmd, cmds[i])) | ||
| 64 | return i + 1; | ||
| 65 | return 0; | ||
| 66 | } | ||
| 67 | |||
| 55 | int chk_zero(int result, char *msg) | 68 | int chk_zero(int result, char *msg) |
| 56 | { | 69 | { |
| 57 | if (result != 0) | 70 | if (result != 0) |
| @@ -94,6 +107,19 @@ struct repoinfo *add_repo(const char *url) | |||
| 94 | return ret; | 107 | return ret; |
| 95 | } | 108 | } |
| 96 | 109 | ||
| 110 | struct repoinfo *cgit_get_repoinfo(const char *url) | ||
| 111 | { | ||
| 112 | int i; | ||
| 113 | struct repoinfo *repo; | ||
| 114 | |||
| 115 | for (i=0; i<cgit_repolist.count; i++) { | ||
| 116 | repo = &cgit_repolist.repos[i]; | ||
| 117 | if (!strcmp(repo->url, url)) | ||
| 118 | return repo; | ||
| 119 | } | ||
| 120 | return NULL; | ||
| 121 | } | ||
| 122 | |||
| 97 | void cgit_global_config_cb(const char *name, const char *value) | 123 | void cgit_global_config_cb(const char *name, const char *value) |
| 98 | { | 124 | { |
| 99 | if (!strcmp(name, "root-title")) | 125 | if (!strcmp(name, "root-title")) |
| @@ -162,8 +188,12 @@ void cgit_querystring_cb(const char *name, const char *value) | |||
| 162 | { | 188 | { |
| 163 | if (!strcmp(name,"r")) { | 189 | if (!strcmp(name,"r")) { |
| 164 | cgit_query_repo = xstrdup(value); | 190 | cgit_query_repo = xstrdup(value); |
| 191 | cgit_repo = cgit_get_repoinfo(value); | ||
| 165 | } else if (!strcmp(name, "p")) { | 192 | } else if (!strcmp(name, "p")) { |
| 166 | cgit_query_page = xstrdup(value); | 193 | cgit_query_page = xstrdup(value); |
| 194 | cgit_cmd = cgit_get_cmd_index(value); | ||
| 195 | } else if (!strcmp(name, "url")) { | ||
| 196 | cgit_parse_url(value); | ||
| 167 | } else if (!strcmp(name, "q")) { | 197 | } else if (!strcmp(name, "q")) { |
| 168 | cgit_query_search = xstrdup(value); | 198 | cgit_query_search = xstrdup(value); |
| 169 | } else if (!strcmp(name, "h")) { | 199 | } else if (!strcmp(name, "h")) { |
