+
+int cgit_parse_snapshots_mask(const char *str)
+{
+ 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<(sizeof(snapshot_archives)/sizeof(*snapshot_archives));++f) {
+ const struct snapshot_archive_t* sat = &snapshot_archives[f];
+ if(! ( strncmp(sat->suffix,str,tl) && strncmp(sat->suffix+1,str,tl-1) ) ) {
+ rv |= sat->bit;
+ break;
+ }
+ }
+ str += tl;
+ }
+ return rv;
+}
+