diff options
author | Lars Hjemli <hjemli@gmail.com> | 2007-01-11 23:24:35 +0000 |
---|---|---|
committer | Lars Hjemli <hjemli@gmail.com> | 2007-01-11 23:24:35 +0000 |
commit | 2c2047ff67a1e0053f95776e5079e432f69cea54 (patch) | |
tree | 0572bd25c3f7ef43494664cca750c940c9e93ef1 /cache.c | |
parent | 83a5f35a2724ee60bfd8c5679b98da7008272254 (diff) | |
download | cgit-2c2047ff67a1e0053f95776e5079e432f69cea54.tar cgit-2c2047ff67a1e0053f95776e5079e432f69cea54.tar.gz cgit-2c2047ff67a1e0053f95776e5079e432f69cea54.zip |
Remove troublesome chars from cachefile names
Add a funtion cache_safe_filename() which replaces possibly bad filename
characters with '_'.
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (limited to 'cache.c')
-rw-r--r-- | cache.c | 16 |
1 files changed, 16 insertions, 0 deletions
@@ -10,6 +10,22 @@ const int NOLOCK = -1; +char *cache_safe_filename(const char *unsafe) +{ + static char buf[PATH_MAX]; + char *s = buf; + char c; + + while(unsafe && (c = *unsafe++) != 0) { + if (c == '/' || c == ' ' || c == '&' || c == '|' || + c == '>' || c == '<' || c == '.') + c = '_'; + *s++ = c; + } + *s = '\0'; + return buf; +} + int cache_exist(struct cacheitem *item) { if (stat(item->name, &item->st)) { |