41 const char **aa = (
const char **)a;
42 const char **bb = (
const char **)b;
43 return strcmp(*aa, *bb);
112 *dnarray = (
char**) malloc(
sizeof(
char*) * i);
119 (*dnarray)[i++] = y->
name;
144 cache->
dirname = strdup(dname);
145 cache->
nents = nents;
146 cache->
t0 = time(NULL);
147 cache->
life = nents / 10 ;
148 cache->
dnarray = (
char**) malloc(
sizeof(
char*) * nents);
150 for (i = 0; i < nents; i++)
151 cache->
dnarray[i] = strdup((*dnarray)[i]);
157 for (i = 0; i < (int)cache->
nents; i++)
173 return (((t1 - cache->
t0) < cache->
life)? 0 : 1);
180 return (((t1 - cache->
t0) < 28700)? 0 : 1);
188 if (dentname != NULL && path[strlen(path) -1] !=
'/')
190 if (dentname != NULL) strcat(path, dentname);
193 else if (strlen(cache->
dirname) == strlen(path) && strcmp(cache->
dirname, path) == 0)
195 else if (strlen(cache->
dirname) != strlen(dname) || strcmp(cache->
dirname, dname) != 0)
203 #define XrdFfsDent_NDENTCACHES 20
#define XrdFfsDent_NDENTCACHES
int XrdFfsDent_cache_search(char *dname, char *dentname)
int XrdFfsDent_dentcache_invalid(struct XrdFfsDentcache *cache)
void XrdFfsDent_cache_init()
struct XrdFfsDentcache XrdFfsDentCaches[XrdFfsDent_NDENTCACHES]
pthread_mutex_t XrdFfsDentCaches_mutex
void XrdFfsDent_names_del(struct XrdFfsDentnames **p)
void XrdFfsDent_names_join(struct XrdFfsDentnames **p, struct XrdFfsDentnames **n)
int XrdFfsDent_dentcache_search(struct XrdFfsDentcache *cache, char *dname, char *dentname)
int XrdFfsDent_dentcache_expired(struct XrdFfsDentcache *cache)
void XrdFfsDent_cache_destroy()
void XrdFfsDent_names_add(struct XrdFfsDentnames **p, char *name)
int XrdFfsDent_cache_fill(char *dname, char ***dnarray, int nents)
int XrdFfsDent_cstr_cmp(const void *a, const void *b)
void XrdFfsDent_dentcache_free(struct XrdFfsDentcache *cache)
int XrdFfsDent_names_extract(struct XrdFfsDentnames **p, char ***dnarray)
void XrdFfsDent_dentcache_fill(struct XrdFfsDentcache *cache, char *dname, char ***dnarray, int nents)
struct XrdFfsDentnames * next