/*
- * $Id: filedir.c,v 1.58 2009-10-15 10:43:13 didg Exp $
+ * $Id: filedir.c,v 1.69 2010-01-21 14:14:49 didg Exp $
*
* Copyright (c) 1990,1993 Regents of The University of Michigan.
* All Rights Reserved. See COPYRIGHT.
#ifdef HAVE_STRINGS_H
#include <strings.h>
#endif
-#include <dirent.h>
#include <errno.h>
#include <sys/param.h>
#include <atalk/util.h>
#include <atalk/cnid.h>
#include <atalk/logger.h>
+#include <atalk/unix.h>
#include "directory.h"
#include "desktop.h"
uid_t uid;
int ret = AFP_OK;
#ifdef DEBUG
- LOG(log_info, logtype_afpd, "begin matchfile2dirperms:");
-#endif /* DEBUG */
+ LOG(log_debug9, logtype_afpd, "begin matchfile2dirperms:");
+#endif
if (stat(upath, &st ) < 0) {
LOG(log_error, logtype_afpd, "Could not stat %s: %s", upath, strerror(errno));
} /* end else if stat success */
#ifdef DEBUG
- LOG(log_info, logtype_afpd, "end matchfile2dirperms:");
-#endif /* DEBUG */
+ LOG(log_debug9, logtype_afpd, "end matchfile2dirperms:");
+#endif
return ret;
}
#endif
u_int16_t fbitmap, dbitmap, vid;
struct path *s_path;
-#ifdef DEBUG
- LOG(log_info, logtype_afpd, "begin afp_getfildirparams:");
-#endif /* DEBUG */
-
*rbuflen = 0;
ibuf += 2;
return get_afp_errno(AFPERR_NOOBJ);
}
+ LOG(log_debug, logtype_afpd, "getfildirparams(vid:%u, did:%u, name:'%s', f/d:%04x/%04x) {cwd: %s}",
+ ntohs(vid), ntohl(dir->d_did), s_path->u_name, fbitmap, dbitmap, getcwdpath());
+
st = &s_path->st;
if (!s_path->st_valid) {
/* it's a dir and it should be there
return( AFPERR_NOOBJ );
}
+
buflen = 0;
if (S_ISDIR(st->st_mode)) {
if (dbitmap) {
rbuf += sizeof( dbitmap ) + sizeof( u_char );
*rbuf = 0;
-#ifdef DEBUG
- LOG(log_info, logtype_afpd, "end afp_getfildirparams:");
-#endif /* DEBUG */
-
return( AFP_OK );
}
u_int16_t vid, bitmap;
int did, rc;
-#ifdef DEBUG
- LOG(log_info, logtype_afpd, "begin afp_setfildirparams:");
-#endif /* DEBUG */
-
*rbuflen = 0;
ibuf += 2;
memcpy( &vid, ibuf, sizeof(vid));
setvoltime(obj, vol );
}
-#ifdef DEBUG
- LOG(log_info, logtype_afpd, "end afp_setfildirparams:");
-#endif /* DEBUG */
-
return( rc );
}
return AFPERR_PARAM;
if (!vol->vfs->vfs_validupath(vol, name)) {
- LOG(log_info, logtype_afpd, "check_name: illegal name: '%s'", name);
+ LOG(log_error, logtype_afpd, "check_name: illegal name: '%s'", name);
return AFPERR_EXIST;
}
u_int16_t vid;
int isdir = 0;
int rc;
-#ifdef DEBUG
- LOG(log_info, logtype_afpd, "begin afp_rename:");
-#endif /* DEBUG */
*rbuflen = 0;
ibuf += 2;
setvoltime(obj, vol );
}
-#ifdef DEBUG
- LOG(log_info, logtype_afpd, "end afp_rename:");
-#endif /* DEBUG */
-
return( rc );
}
int did, rc;
u_int16_t vid;
-#ifdef DEBUG
- LOG(log_info, logtype_afpd, "begin afp_delete:");
-#endif /* DEBUG */
-
*rbuflen = 0;
ibuf += 2;
} else if (of_findname(s_path)) {
rc = AFPERR_BUSY;
} else {
- rc = deletefile(vol, upath, 1);
+ /* it's a file st_valid should always be true
+ * only test for ENOENT because EACCES needs
+ * to read meta data in deletefile
+ */
+ if (s_path->st_valid && s_path->st_errno == ENOENT) {
+ rc = AFPERR_NOOBJ;
+ }
+ else {
+ rc = deletefile(vol, upath, 1);
+ }
}
if ( rc == AFP_OK ) {
curdir->offcnt--;
setvoltime(obj, vol );
}
-#ifdef DEBUG
- LOG(log_info, logtype_afpd, "end afp_delete:");
-#endif /* DEBUG */
-
return( rc );
}
/* ------------------------ */
int retvalue;
#endif /* DROPKLUDGE */
-#ifdef DEBUG
- LOG(log_info, logtype_afpd, "begin afp_moveandrename:");
-#endif /* DEBUG */
-
*rbuflen = 0;
ibuf += 2;
setvoltime(obj, vol );
}
-#ifdef DEBUG
- LOG(log_info, logtype_afpd, "end afp_moveandrename:");
-#endif /* DEBUG */
-
return( rc );
}
for(i=0, j=0; veto_str[i] != '\0'; i++) {
if (veto_str[i] == '/') {
if ((j>0) && (path[j] == '\0')) {
- LOG(log_info, logtype_afpd, "vetoed file:'%s'", path);
+ LOG(log_debug, logtype_afpd, "vetoed file:'%s'", path);
return 1;
}
j = 0;