-rw-r--r-- | ui-snapshot.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/ui-snapshot.c b/ui-snapshot.c index 4d1aa88..dfedd8f 100644 --- a/ui-snapshot.c +++ b/ui-snapshot.c | |||
@@ -127,26 +127,27 @@ void cgit_print_snapshot_links(const char *repo, const char *head, | |||
127 | } | 127 | } |
128 | 128 | ||
129 | int cgit_parse_snapshots_mask(const char *str) | 129 | int cgit_parse_snapshots_mask(const char *str) |
130 | { | 130 | { |
131 | const struct snapshot_archive_t* sat; | 131 | const struct snapshot_archive_t* sat; |
132 | static const char *delim = " \t,:/|;"; | 132 | static const char *delim = " \t,:/|;"; |
133 | int f, tl, rv = 0; | 133 | int f, tl, sl, rv = 0; |
134 | 134 | ||
135 | /* favor legacy setting */ | 135 | /* favor legacy setting */ |
136 | if(atoi(str)) | 136 | if(atoi(str)) |
137 | return 1; | 137 | return 1; |
138 | for(;;) { | 138 | for(;;) { |
139 | str += strspn(str,delim); | 139 | str += strspn(str,delim); |
140 | tl = strcspn(str,delim); | 140 | tl = strcspn(str,delim); |
141 | if(!tl) | 141 | if(!tl) |
142 | break; | 142 | break; |
143 | for(f=0; f<snapshot_archives_len; f++) { | 143 | for(f=0; f<snapshot_archives_len; f++) { |
144 | sat = &snapshot_archives[f]; | 144 | sat = &snapshot_archives[f]; |
145 | if(!(strncmp(sat->suffix, str, tl) && | 145 | sl = strlen(sat->suffix); |
146 | strncmp(sat->suffix+1, str, tl-1))) { | 146 | if((tl == sl && !strncmp(sat->suffix, str, tl)) || |
147 | (tl == sl-1 && !strncmp(sat->suffix+1, str, tl-1))) { | ||
147 | rv |= sat->bit; | 148 | rv |= sat->bit; |
148 | break; | 149 | break; |
149 | } | 150 | } |
150 | } | 151 | } |
151 | str += tl; | 152 | str += tl; |
152 | } | 153 | } |