emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 691015fedb: Fix filelock.c for Haiku


From: Po Lu
Subject: master 691015fedb: Fix filelock.c for Haiku
Date: Sun, 9 Jan 2022 08:36:36 -0500 (EST)

branch: master
commit 691015fedbb94c69fd7d5b0fffe9df9715bb0158
Author: Po Lu <luangruo@yahoo.com>
Commit: Po Lu <luangruo@yahoo.com>

    Fix filelock.c for Haiku
    
    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 | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/filelock.c b/src/filelock.c
index a213c2b3ca..8453f17cd4 100644
--- a/src/filelock.c
+++ b/src/filelock.c
@@ -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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]