]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix filelock.c for Haiku
authorPo Lu <luangruo@yahoo.com>
Sun, 9 Jan 2022 13:30:26 +0000 (13:30 +0000)
committerPo Lu <luangruo@yahoo.com>
Sun, 9 Jan 2022 13:34:19 +0000 (13:34 +0000)
This was found during the investigation surrounding bug#53136,
but is not directly related.

* src/filelock.c (lock_if_free): Explictly test err against -1
or -2, and reverse sign of system errors on Haiku.  (No Haiku
error occupies -1 or -2.)

src/filelock.c

index a213c2b3cae5cbc446f2db151f87a256e2d89029..8453f17cd4b2ebed4db57d6c63612f4e08b22e0c 100644 (file)
@@ -608,7 +608,7 @@ lock_if_free (lock_info_type *clasher, char *lfname)
       err = current_lock_owner (clasher, lfname);
       if (err != 0)
        {
-         if (err < 0)
+         if (err == -1 || err == -2)
            return -2 - err; /* We locked it, or someone else has it.  */
          break; /* current_lock_owner returned strange error.  */
        }
@@ -616,7 +616,14 @@ lock_if_free (lock_info_type *clasher, char *lfname)
       /* We deleted a stale lock; try again to lock the file.  */
     }
 
+#if !defined HAIKU \
+  || defined BE_USE_POSITIVE_POSIX_ERRORS
   return err;
+#else
+  /* On Haiku, POSIX error values are negative by default, but this
+     code's callers assume that any errno value is positive.  */
+  return -err;
+#endif
 }
 
 static Lisp_Object