Windows: cm_MapRPCErrorRmdir EEXIST == ENOTEMPTY
authorJeffrey Altman <jaltman@your-file-system.com>
Fri, 12 Apr 2013 05:11:22 +0000 (01:11 -0400)
committerJeffrey Altman <jaltman@your-file-system.com>
Wed, 17 Apr 2013 16:42:36 +0000 (09:42 -0700)
If the file server is asked to remove a directory that is not empty
one might expect it to return UAENOTEMPTY but instead it returns UAEEXIST.

The error translation function cm_MapRPCErrorRmdir did not include
EEXIST in the list of errors that convert to CM_ERROR_NOTEMPTY.

Prior to IBM AFS 3.5 the file server did return ENOTEMPTY and if a
particular platform did not define ENOTEMPTY, ENOTEMPTY was defined to
be EEXIST.  To late to change things back now.

Change-Id: I737ff468575a088e9299a5134b31142dd0ba555e
Reviewed-on: http://gerrit.openafs.org/9778
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@your-file-system.com>

src/WINNT/afsd/cm_utils.c

index 109c25d..0836f9d 100644 (file)
@@ -309,6 +309,7 @@ long cm_MapRPCErrorRmdir(long error, cm_req_t *reqp)
     else if (error == EINVAL)
         error = CM_ERROR_INVAL;
     else if (error == ENOTEMPTY
+              || error == EEXIST
               || error == 17           /* AIX */
               || error == 66           /* SunOS 4, Digital UNIX */
               || error == 93           /* Solaris 2, IRIX */