return;
dhx = strnhash(fn, dp + 1 - fn);
if (!dhx)
- dhx = 1 + dp + 1 - fn;
+ dhx = dp + 1 - fn + 1; /* mirrors the "if (!hx) hx = strlen(fn) + 1" in finddirs_cb */
#if 1
if (!isindirmap(cbdata, dhx))
return;
unsigned int *di;
int bnc, dnc, dic;
int i;
+ Id lastdid = 0;
+ int lastdii = -1;
#ifdef USE_FILEFILTER
int j;
struct filefilter *ff;
#endif
if (data)
{
- Id handle, did;
+ Id did;
char *b = bn[i];
- handle = s - pool->solvables;
- did = repodata_str2dir(data, dn[di[i]], 1);
- if (!did)
+ if (di[i] == lastdii)
+ did = lastdid;
+ else
{
- did = repodata_str2dir(data, "/", 1);
- if (b && b[0] == '/')
- b++; /* work around rpm bug */
+ did = repodata_str2dir(data, dn[di[i]], 1);
+ if (!did)
+ did = repodata_str2dir(data, "/", 1);
+ lastdid = did;
+ lastdii = di[i];
}
- repodata_add_dirstr(data, handle, SOLVABLE_FILELIST, did, b);
+ if (b && *b == '/') /* work around rpm bug */
+ b++;
+ repodata_add_dirstr(data, s - pool->solvables, SOLVABLE_FILELIST, did, b);
}
}
#if 0