-/*
- //if (dstack[cidx].dir == NULL && !resolve_dir(vol, cidx))
- // return NULL;
-
- //if ((of = of_findname(vol, dstack[cidx].dir, mpath))) {
- // adp = of->of_ad;
- //} else {
- */
+ if (!isdir && (of = of_findname(upath, sb ))) {
+ adp = of->of_ad;
+ } else {
if ( ad_open( upath, ADFLAGS_HF | (isdir)?ADFLAGS_DIR:0, O_RDONLY, 0, adp) < 0 ) {
return NULL;
if ( ad_open( upath, ADFLAGS_HF | (isdir)?ADFLAGS_DIR:0, O_RDONLY, 0, adp) < 0 ) {
return NULL;
if (ad_getdate(adp, AD_DATE_CREATE, (u_int32_t*)&c_date) >= 0)
c_date = AD_DATE_TO_UNIX(c_date);
else c_date = sbuf.st_mtime;
if (ad_getdate(adp, AD_DATE_CREATE, (u_int32_t*)&c_date) >= 0)
c_date = AD_DATE_TO_UNIX(c_date);
else c_date = sbuf.st_mtime;
if (ad_getdate(adp, AD_DATE_BACKUP, (u_int32_t*)&b_date) >= 0)
b_date = AD_DATE_TO_UNIX(b_date);
else b_date = sbuf.st_mtime;
if (ad_getdate(adp, AD_DATE_BACKUP, (u_int32_t*)&b_date) >= 0)
b_date = AD_DATE_TO_UNIX(b_date);
else b_date = sbuf.st_mtime;
finfo = (struct finderinfo*)ad_entry(adp, ADEID_FINDERI);
if (finfo->f_type != c1.finfo.f_type)
goto crit_check_ret;
finfo = (struct finderinfo*)ad_entry(adp, ADEID_FINDERI);
if (finfo->f_type != c1.finfo.f_type)
goto crit_check_ret;
finfo = (struct finderinfo*)ad_entry(adp, ADEID_FINDERI);
if (finfo->creator != c1.finfo.creator)
goto crit_check_ret;
finfo = (struct finderinfo*)ad_entry(adp, ADEID_FINDERI);
if (finfo->creator != c1.finfo.creator)
goto crit_check_ret;
finfo = (struct finderinfo*)ad_entry(adp, ADEID_FINDERI);
if ((finfo->attrs & c2.finfo.attrs) != c1.finfo.attrs)
goto crit_check_ret;
finfo = (struct finderinfo*)ad_entry(adp, ADEID_FINDERI);
if ((finfo->attrs & c2.finfo.attrs) != c1.finfo.attrs)
goto crit_check_ret;
finfo = (struct finderinfo*)ad_entry(adp, ADEID_FINDERI);
if ((finfo->label & c2.finfo.label) != c1.finfo.label)
goto crit_check_ret;
finfo = (struct finderinfo*)ad_entry(adp, ADEID_FINDERI);
if ((finfo->label & c2.finfo.label) != c1.finfo.label)
goto crit_check_ret;