/*
- * $Id: directory.c,v 1.129 2010-01-21 12:10:19 didg Exp $
+ * $Id: directory.c,v 1.130 2010-01-26 08:14:09 didg Exp $
*
* Copyright (c) 1990,1993 Regents of The University of Michigan.
* All Rights Reserved. See COPYRIGHT.
goto delete_done;
}
- if ( !(err = netatalk_rmdir(fdir->d_u_name))) {
+ err = netatalk_rmdir_all_errors(fdir->d_u_name);
+ if ( err == AFP_OK || err == AFPERR_NOOBJ) {
dirchildremove(curdir, fdir);
cnid_delete(vol->v_cdb, fdir->d_did);
dir_remove( vol, fdir );
- err = AFP_OK;
}
delete_done:
if (dp) {
/*
- $Id: unix.h,v 1.1 2009-10-15 12:06:07 franklahm Exp $
+ $Id: unix.h,v 1.2 2010-01-26 08:14:09 didg Exp $
Copyright (c) 2009 Frank Lahm <franklahm@gmail.com>
This program is free software; you can redistribute it and/or modify
/* vfs/unix.c */
extern int netatalk_unlink(const char *name);
extern char *fullpathname(const char *);
+
+/* rmdir ENOENT not an error */
extern int netatalk_rmdir(const char *name);
+
+extern int netatalk_rmdir_all_errors(const char *name);
+
extern int setfilmode(const char *, mode_t, struct stat *, mode_t);
extern int dir_rx_set(mode_t mode);
extern int stickydirmode(const char *name, const mode_t mode, const int dropbox, const mode_t v_umask);
/*
- * $Id: unix.c,v 1.7 2010-01-20 13:22:13 franklahm Exp $
+ * $Id: unix.c,v 1.8 2010-01-26 08:14:09 didg Exp $
*
* Copyright (c) 1990,1993 Regents of The University of Michigan.
* All Rights Reserved. See COPYRIGHT.
/* -------------------
system rmdir with afp error code.
- ENOENT is not an error.
*/
-int netatalk_rmdir(const char *name)
+int netatalk_rmdir_all_errors(const char *name)
{
if (rmdir(name) < 0) {
switch ( errno ) {
case ENOENT :
- break;
+ return AFPERR_NOOBJ;
case ENOTEMPTY :
return AFPERR_DIRNEMPT;
case EPERM:
return AFP_OK;
}
+/* -------------------
+ system rmdir with afp error code.
+ ENOENT is not an error.
+*/
+int netatalk_rmdir(const char *name)
+{
+ int ret = netatalk_rmdir_all_errors(name);
+ if (ret == AFPERR_NOOBJ)
+ return AFP_OK;
+ return ret;
+}
+
/* -------------------
system unlink with afp error code.
ENOENT is not an error.