]> code.delx.au - gnu-emacs/blobdiff - lib-src/movemail.c
* xselect.c (TRACE3) [!defined TRACE_SELECTION]: Remove; not used.
[gnu-emacs] / lib-src / movemail.c
index 65675f24b9fd5a15b85e7d4ae2512e37749a8c36..4a894c1cba1a450648b153b0d4e4a6632a095449 100644 (file)
@@ -80,13 +80,6 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 #undef access
 #endif /* MSDOS */
 
-#ifndef DIRECTORY_SEP
-#define DIRECTORY_SEP '/'
-#endif
-#ifndef IS_DIRECTORY_SEP
-#define IS_DIRECTORY_SEP(_c_) ((_c_) == DIRECTORY_SEP)
-#endif
-
 #ifdef WINDOWSNT
 #include "ntlib.h"
 #undef access
@@ -269,6 +262,13 @@ main (int argc, char **argv)
   if (! spool_name)
 #endif
     {
+      #ifndef DIRECTORY_SEP
+       #define DIRECTORY_SEP '/'
+      #endif
+      #ifndef IS_DIRECTORY_SEP
+       #define IS_DIRECTORY_SEP(_c_) ((_c_) == DIRECTORY_SEP)
+      #endif
+
       /* Use a lock file named after our first argument with .lock appended:
         If it exists, the mail file is locked.  */
       /* Note: this locking mechanism is *required* by the mailer
@@ -670,13 +670,7 @@ xmalloc (unsigned int size)
 
 #define NOTOK (-1)
 #define OK 0
-#define DONE 1
 
-static char *progname;
-static FILE *sfi;
-static FILE *sfo;
-static char ibuffer[BUFSIZ];
-static char obuffer[BUFSIZ];
 static char Errmsg[200];       /* POP errors, at least, can exceed
                                   the original length of 80.  */
 
@@ -736,7 +730,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)
     {
@@ -860,17 +865,16 @@ pop_retr (popserver server, int msgno, FILE *arg)
   return (OK);
 }
 
-/* Do this as a macro instead of using strcmp to save on execution time. */
-#define IS_FROM_LINE(a) ((a[0] == 'F') \
-                        && (a[1] == 'r') \
-                        && (a[2] == 'o') \
-                        && (a[3] == 'm') \
-                        && (a[4] == ' '))
-
 static int
 mbx_write (char *line, int len, FILE *mbf)
 {
 #ifdef MOVEMAIL_QUOTE_POP_FROM_LINES
+  /* Do this as a macro instead of using strcmp to save on execution time. */
+  # define IS_FROM_LINE(a) ((a[0] == 'F')      \
+                           && (a[1] == 'r')    \
+                           && (a[2] == 'o')    \
+                           && (a[3] == 'm')    \
+                           && (a[4] == ' '))
   if (IS_FROM_LINE (line))
     {
       if (fputc ('>', mbf) == EOF)