adflags |= ADFLAGS_HF;
}
- if (ad_openat(adp, sfd, src, adflags | ADFLAGS_NOHF, O_RDONLY) < 0) {
+ if (ad_openat(adp, sfd, src, adflags | ADFLAGS_NOHF, O_RDONLY, O_RDONLY) < 0) {
ret_err = errno;
goto done;
}
/* try to open both forks at once */
adflags = ADFLAGS_DF;
- if ( ad_openat(&ad, dirfd, file, adflags |ADFLAGS_HF|ADFLAGS_NOHF, O_RDONLY) < 0 ) {
+ if ( ad_openat(&ad, dirfd, file, adflags |ADFLAGS_HF|ADFLAGS_NOHF, O_RDONLY, O_RDONLY) < 0 ) {
switch (errno) {
case ENOENT:
err = AFPERR_NOOBJ;
{
int err = 0;
+ if (ad->ad_inited == AD_CLOSED) {
+ LOG(log_warning, logtype_default, "ad_close: double close");
+ return 0;
+ }
+
LOG(log_debug, logtype_default, "ad_close(\"%s\", %s)",
cfrombstr(ad->ad_fullpath),
adflags2logstr(adflags));
ad->ad_fullpath = NULL;
}
+ ad->ad_inited = AD_CLOSED;
+
return err;
}