- for(f=0;f<(sizeof(snapshot_archives)/sizeof(*snapshot_archives));++f) {
- const struct snapshot_archive_t* sat = &snapshot_archives[f];
- filename = fmt("%s-%s%s",repo,hex,sat->suffix);
- htmlf("<a href='%s'>%s</a><br/>",
- cgit_fileurl(repo,"snapshot",filename,
- fmt("id=%s&name=%s",hex,filename)), filename);
+
+ for(f=0; f<snapshot_archives_len; f++) {
+ sat = &snapshot_archives[f];
+ if(!(snapshots & sat->bit))
+ continue;
+ filename = fmt("%s-%s%s", cgit_repobasename(repo), hex,
+ sat->suffix);
+ cgit_snapshot_link(filename, NULL, NULL, (char *)head,
+ (char *)hex, filename);
+ html("<br/>");
+ }
+}
+
+int cgit_parse_snapshots_mask(const char *str)
+{
+ const struct snapshot_archive_t* sat;
+ static const char *delim = " \t,:/|;";
+ int f, tl, rv = 0;
+
+ /* favor legacy setting */
+ if(atoi(str))
+ return 1;
+ for(;;) {
+ str += strspn(str,delim);
+ tl = strcspn(str,delim);
+ if(!tl)
+ break;
+ for(f=0; f<snapshot_archives_len; f++) {
+ sat = &snapshot_archives[f];
+ if(!(strncmp(sat->suffix, str, tl) &&
+ strncmp(sat->suffix+1, str, tl-1))) {
+ rv |= sat->bit;
+ break;
+ }
+ }
+ str += tl;