]> git.ipfire.org Git - thirdparty/open-vm-tools.git/commitdiff
file: Report correct error message when file is locked.
authorOliver Kurth <okurth@vmware.com>
Fri, 15 Sep 2017 18:23:38 +0000 (11:23 -0700)
committerOliver Kurth <okurth@vmware.com>
Fri, 15 Sep 2017 18:23:38 +0000 (11:23 -0700)
open-vm-tools/lib/file/fileLockPrimitive.c

index 2987426dc52c398289ff05858778a8e6682f402d..973a1c901c98e0ce1fd1dafb9d6a868e5195352f 100644 (file)
@@ -1565,6 +1565,7 @@ FileLockIntrinsicMandatory(const char *pathName,   // IN:
 {
    int access;
    int loopCount = 0;
+   int errnum;
    FileIOResult result;
    FileLockToken *tokenPtr = Util_SafeMalloc(sizeof *tokenPtr);
 
@@ -1582,6 +1583,7 @@ FileLockIntrinsicMandatory(const char *pathName,   // IN:
                                  lockFile, access,
                                  FILEIO_OPEN_CREATE, 0600,
                                  0);
+      errnum = Err_Errno();
       if (result != FILEIO_LOCK_FAILED) {
          break;
       }
@@ -1593,7 +1595,11 @@ FileLockIntrinsicMandatory(const char *pathName,   // IN:
 
       return tokenPtr;
    } else {
-      *err = FileMapErrorToErrno(__FUNCTION__, Err_Errno());
+      if (result == FILEIO_LOCK_FAILED) {
+         *err = 0;
+      } else {
+         *err = FileMapErrorToErrno(__FUNCTION__, errnum);
+      }
       free(tokenPtr->pathName);
       ASSERT(!FileIO_IsValid(&tokenPtr->u.mandatory.lockFd));
       free(tokenPtr);