cache_safe_filename() needs more buffers

The single static buffer makes it impossible to use the result of two
different calls to this function simultaneously. Fix it by using 4
buffers.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
This commit is contained in:
Lars Hjemli 2007-05-18 03:54:15 +02:00
vanhempi 30ccdcaa74
commit 72fa5c63f8

11
cache.c
Näytä tiedosto

@ -12,10 +12,15 @@ const int NOLOCK = -1;
char *cache_safe_filename(const char *unsafe) char *cache_safe_filename(const char *unsafe)
{ {
static char buf[PATH_MAX]; static char buf[4][PATH_MAX];
char *s = buf; static int bufidx;
char *s;
char c; char c;
bufidx++;
bufidx &= 3;
s = buf[bufidx];
while(unsafe && (c = *unsafe++) != 0) { while(unsafe && (c = *unsafe++) != 0) {
if (c == '/' || c == ' ' || c == '&' || c == '|' || if (c == '/' || c == ' ' || c == '&' || c == '|' ||
c == '>' || c == '<' || c == '.') c == '>' || c == '<' || c == '.')
@ -23,7 +28,7 @@ char *cache_safe_filename(const char *unsafe)
*s++ = c; *s++ = c;
} }
*s = '\0'; *s = '\0';
return buf; return buf[bufidx];
} }
int cache_exist(struct cacheitem *item) int cache_exist(struct cacheitem *item)