]> git.eshelyaron.com Git - emacs.git/commitdiff
* movemail.c (popmail): Report fchown failure instead of ignoring it.
authorPaul Eggert <eggert@cs.ucla.edu>
Mon, 21 Feb 2011 22:31:55 +0000 (14:31 -0800)
committerPaul Eggert <eggert@cs.ucla.edu>
Mon, 21 Feb 2011 22:31:55 +0000 (14:31 -0800)
But if the file already has the right ownership, don't worry about it.

lib-src/ChangeLog
lib-src/movemail.c

index d865754cb4075f41676833a753613e9701cf53ca..e0a175e816781f00316804b1a6c8ef224c71a48b 100644 (file)
@@ -1,5 +1,8 @@
 2011-02-21  Paul Eggert  <eggert@cs.ucla.edu>
 
+       * movemail.c (popmail): Report fchown failure instead of ignoring it.
+       But if the file already has the right ownership, don't worry about it.
+
        * make-docfile.c (input_buffer): Rename variables to avoid shadowing.
 
        * movemail.c (main, pop_retr): Rename locals to avoid shadowing.
index a5084f27f22dfecd14d2817a7c5937a8c84e8ffe..bc7fa8824e294775b719c51162c01cdb7d99295e 100644 (file)
@@ -723,7 +723,18 @@ popmail (char *mailbox, char *outfile, int preserve, char *password, int reverse
       error ("Error in open: %s, %s", strerror (errno), outfile);
       return EXIT_FAILURE;
     }
-  fchown (mbfi, getuid (), -1);
+
+  if (fchown (mbfi, getuid (), -1) != 0)
+    {
+      int fchown_errno = errno;
+      struct stat st;
+      if (fstat (mbfi, &st) != 0 || st.st_uid != getuid ())
+       {
+         pop_close (server);
+         error ("Error in fchown: %s, %s", strerror (fchown_errno), outfile);
+         return EXIT_FAILURE;
+       }
+    }
 
   if ((mbf = fdopen (mbfi, "wb")) == NULL)
     {