diff options
| author | 2007-05-15 06:40:33 (JST) | |
|---|---|---|
| committer | 2007-05-15 06:40:33 (JST) | |
| commit | 5ec6e02bd1cc0c05b7cfd0d53371e7d176daec39 (patch) | |
| tree | 5c844c0ba53cfd2e838368ffbbd4583ac63d3608 | |
| parent | 9ecde6568a9e39c942f4c5585ffa494c5df870e4 (diff) | |
| download | cgit-5ec6e02bd1cc0c05b7cfd0d53371e7d176daec39.zip cgit-5ec6e02bd1cc0c05b7cfd0d53371e7d176daec39.tar.gz | |
Add include-parameter to config files
This parameter can be used to include another config-file, like
a standalone repository listing.
Suggested in a patch by Kristian Høgsberg <krh@bitplanet.net>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| -rw-r--r-- | cgitrc | 7 | ||||
| -rw-r--r-- | parsing.c | 14 | ||||
| -rw-r--r-- | shared.c | 2 |
3 files changed, 15 insertions, 8 deletions
| @@ -63,8 +63,11 @@ | |||
| 63 | #cache-root=/var/cache/cgit | 63 | #cache-root=/var/cache/cgit |
| 64 | 64 | ||
| 65 | 65 | ||
| 66 | ## Include another config-file | ||
| 67 | #include=/var/cgit/repolist | ||
| 68 | |||
| 66 | ## | 69 | ## |
| 67 | ## Time-To-Live settings: specifies how long (in minutes) different pages | 70 | ## Time-To-Live settings: specifies how long (in minutes) different pages |
| 68 | ## should be cached (0 for instant expiration, -1 for immortal pages) | 71 | ## should be cached (0 for instant expiration, -1 for immortal pages) |
| 69 | ## | 72 | ## |
| 70 | 73 | ||
| @@ -74,7 +77,7 @@ | |||
| 74 | ## ttl for repo summary page | 77 | ## ttl for repo summary page |
| 75 | #cache-repo-ttl=5 | 78 | #cache-repo-ttl=5 |
| 76 | 79 | ||
| 77 | ## ttl for other dynamic pages | 80 | ## ttl for other dynamic pages |
| 78 | #cache-dynamic-ttl=5 | 81 | #cache-dynamic-ttl=5 |
| 79 | 82 | ||
| 80 | ## ttl for static pages (addressed by SHA-1) | 83 | ## ttl for static pages (addressed by SHA-1) |
| @@ -64,19 +64,21 @@ int read_config_line(FILE *f, char *line, const char **value, int bufsize) | |||
| 64 | 64 | ||
| 65 | int cgit_read_config(const char *filename, configfn fn) | 65 | int cgit_read_config(const char *filename, configfn fn) |
| 66 | { | 66 | { |
| 67 | int ret = 0, len; | 67 | static int nesting; |
| 68 | int len; | ||
| 68 | char line[256]; | 69 | char line[256]; |
| 69 | const char *value; | 70 | const char *value; |
| 70 | FILE *f = fopen(filename, "r"); | 71 | FILE *f; |
| 71 | 72 | ||
| 72 | if (!f) | 73 | /* cancel the reading of yet another configfile after 16 invocations */ |
| 74 | if (nesting++ > 16) | ||
| 75 | return -1; | ||
| 76 | if (!(f = fopen(filename, "r"))) | ||
| 73 | return -1; | 77 | return -1; |
| 74 | |||
| 75 | while((len = read_config_line(f, line, &value, sizeof(line))) > 0) | 78 | while((len = read_config_line(f, line, &value, sizeof(line))) > 0) |
| 76 | (*fn)(line, value); | 79 | (*fn)(line, value); |
| 77 | |||
| 78 | fclose(f); | 80 | fclose(f); |
| 79 | return ret; | 81 | return 0; |
| 80 | } | 82 | } |
| 81 | 83 | ||
| 82 | char *convert_query_hexchar(char *txt) | 84 | char *convert_query_hexchar(char *txt) |
| @@ -137,6 +137,8 @@ void cgit_global_config_cb(const char *name, const char *value) | |||
| 137 | cgit_repo->snapshots = atoi(value); | 137 | cgit_repo->snapshots = atoi(value); |
| 138 | else if (cgit_repo && !strcmp(name, "repo.module-link")) | 138 | else if (cgit_repo && !strcmp(name, "repo.module-link")) |
| 139 | cgit_repo->module_link= xstrdup(value); | 139 | cgit_repo->module_link= xstrdup(value); |
| 140 | else if (!strcmp(name, "include")) | ||
| 141 | cgit_read_config(value, cgit_global_config_cb); | ||
| 140 | } | 142 | } |
| 141 | 143 | ||
| 142 | void cgit_repo_config_cb(const char *name, const char *value) | 144 | void cgit_repo_config_cb(const char *name, const char *value) |
