Bruno Haible <[EMAIL PROTECTED]> writes:

>> Perhaps it's the "else #else" which confused you?  (It certainly confuses
>> me...)
>
> If it confuses even you, then it's late time to make this code more
> readable!

OK, thanks, I installed this.  It's not exactly what you recommended, but
it should be good enough.

2007-03-30  Paul Eggert  <[EMAIL PROTECTED]>

        * lib/write-any-file.c (can_write_any_file): Fix else-else bug
        reported by Bruno Haible.

--- lib/write-any-file.c        23 Mar 2007 17:33:07 -0000      1.1
+++ lib/write-any-file.c        30 Mar 2007 07:08:47 -0000
@@ -34,10 +34,11 @@ bool
 can_write_any_file (void)
 {
   static bool initialized;
-  static bool can;
+  static bool can_write;

   if (! initialized)
     {
+      bool can = false;
 #if defined PRIV_EFFECTIVE && defined PRIV_FILE_DAC_WRITE
       priv_set_t *pset = priv_allocset ();
       if (pset)
@@ -47,13 +48,13 @@ can_write_any_file (void)
             && priv_ismember (pset, PRIV_FILE_DAC_WRITE));
          priv_freeset (pset);
        }
-      else
 #else
       /* In traditional Unix, only root can unlink directories.  */
       can = (geteuid () == 0);
 #endif
+      can_write = can;
       initialized = true;
     }

-  return can;
+  return can_write;
 }


Reply via email to