+char *cache_safe_filename(const char *unsafe)
+{
+ static char buf[4][PATH_MAX];
+ static int bufidx;
+ char *s;
+ char c;
+
+ bufidx++;
+ bufidx &= 3;
+ s = buf[bufidx];
+
+ while(unsafe && (c = *unsafe++) != 0) {
+ if (c == '/' || c == ' ' || c == '&' || c == '|' ||
+ c == '>' || c == '<' || c == '.')
+ c = '_';
+ *s++ = c;
+ }
+ *s = '\0';
+ return buf[bufidx];
+}
+