comparison lib-src/movemail.c @ 89943:4c90ffeb71c5

Revision: miles@gnu.org--gnu-2004/emacs--unicode--0--patch-15 Merge from emacs--cvs-trunk--0 Patches applied: * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-218 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-220 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-221 Restore deleted tagline in etc/TUTORIAL.ru * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-222 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-228 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-229 Remove TeX output files from the archive * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-230 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-247 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-248 src/lisp.h (CYCLE_CHECK): Macro moved from xfaces.c * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-249 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-256 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-258 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-263 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-264 Update from CVS: lispref/display.texi: emacs -> Emacs. * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-265 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-274 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-275 Update from CVS: man/makefile.w32-in: Revert last change * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-276 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-295 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-296 Allow restarting an existing debugger session that's exited * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-297 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-299 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-300 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-327 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-328 Update from CVS: src/.gdbinit (xsymbol): Fix last change. * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-329 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-344 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-345 Tweak source regexps so that building in place won't cause problems * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-346 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-351 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-352 Update from CVS: lisp/flymake.el: New file. * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-353 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-361 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-362 Support " [...]" style defaults in minibuffer-electric-default-mode * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-363 (read-number): Use canonical format for default in prompt. * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-364 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-367 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-368 Improve display-supports-face-attributes-p on non-ttys * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-369 Rewrite face-differs-from-default-p * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-370 Move `display-supports-face-attributes-p' entirely into C code * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-371 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-372 Simplify face-differs-from-default-p; don't consider :stipple. * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-373 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-374 (tty_supports_face_attributes_p): Ensure attributes differ from default * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-375 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-376 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-377 (Fdisplay_supports_face_attributes_p): Work around bootstrapping problem * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-378 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-380 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-381 Face merging cleanups * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-382 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-384 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-385 src/xfaces.c (push_named_merge_point): Return 0 if a cycle is detected * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-386 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-395 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-396 Tweak arch tagging to make build/install-in-place less annoying * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-397 Work around vc-arch problems when building eshell * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-398 Tweak permissions * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-399 Tweak directory permissions * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-400 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-401 More build-in-place tweaking of arch tagging * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-402 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-403 Yet more build-in-place tweaking of arch tagging * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-404 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-409 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-410 Make sure image types are initialized for lookup too * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-411 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-416 Update from CVS
author Miles Bader <miles@gnu.org>
date Mon, 28 Jun 2004 07:56:49 +0000
parents 68c22ea6027c a47704955f8d
children fa9654493afb
comparison
equal deleted inserted replaced
89942:9cb747ae49af 89943:4c90ffeb71c5
214 #endif 214 #endif
215 case 'p': 215 case 'p':
216 preserve_mail++; 216 preserve_mail++;
217 break; 217 break;
218 default: 218 default:
219 exit(1); 219 exit (EXIT_FAILURE);
220 } 220 }
221 } 221 }
222 222
223 if ( 223 if (
224 #ifdef MAIL_USE_POP 224 #ifdef MAIL_USE_POP
232 fprintf (stderr, "Usage: movemail [-p] inbox destfile%s\n", 232 fprintf (stderr, "Usage: movemail [-p] inbox destfile%s\n",
233 " [POP-password]"); 233 " [POP-password]");
234 #else 234 #else
235 fprintf (stderr, "Usage: movemail [-p] inbox destfile%s\n", ""); 235 fprintf (stderr, "Usage: movemail [-p] inbox destfile%s\n", "");
236 #endif 236 #endif
237 exit (1); 237 exit (EXIT_FAILURE);
238 } 238 }
239 239
240 inname = argv[optind]; 240 inname = argv[optind];
241 outname = argv[optind+1]; 241 outname = argv[optind+1];
242 242
534 /* This has to occur in the child, i.e., in the process that 534 /* This has to occur in the child, i.e., in the process that
535 acquired the lock! */ 535 acquired the lock! */
536 if (spool_name) 536 if (spool_name)
537 mailunlock (); 537 mailunlock ();
538 #endif 538 #endif
539 exit (0); 539 exit (EXIT_SUCCESS);
540 } 540 }
541 541
542 wait (&status); 542 wait (&status);
543 if (!WIFEXITED (status)) 543 if (!WIFEXITED (status))
544 exit (1); 544 exit (EXIT_FAILURE);
545 else if (WRETCODE (status) != 0) 545 else if (WRETCODE (status) != 0)
546 exit (WRETCODE (status)); 546 exit (WRETCODE (status));
547 547
548 #if !defined (MAIL_USE_MMDF) && !defined (MAIL_USE_SYSTEM_LOCK) 548 #if !defined (MAIL_USE_MMDF) && !defined (MAIL_USE_SYSTEM_LOCK)
549 #ifdef MAIL_USE_MAILLOCK 549 #ifdef MAIL_USE_MAILLOCK
552 unlink (lockname); 552 unlink (lockname);
553 #endif /* not MAIL_USE_MMDF and not MAIL_USE_SYSTEM_LOCK */ 553 #endif /* not MAIL_USE_MMDF and not MAIL_USE_SYSTEM_LOCK */
554 554
555 #endif /* ! DISABLE_DIRECT_ACCESS */ 555 #endif /* ! DISABLE_DIRECT_ACCESS */
556 556
557 return 0; 557 return EXIT_SUCCESS;
558 } 558 }
559 559
560 #ifdef MAIL_USE_MAILLOCK 560 #ifdef MAIL_USE_MAILLOCK
561 /* This function uses stat to confirm that the mail directory is 561 /* This function uses stat to confirm that the mail directory is
562 identical to the directory of the input file, rather than just 562 identical to the directory of the input file, rather than just
605 char *s1, *s2; 605 char *s1, *s2;
606 { 606 {
607 if (delete_lockname) 607 if (delete_lockname)
608 unlink (delete_lockname); 608 unlink (delete_lockname);
609 error (s1, s2, 0); 609 error (s1, s2, 0);
610 exit (1); 610 exit (EXIT_FAILURE);
611 } 611 }
612 612
613 /* Print error message. `s1' is printf control string, `s2' and `s3' 613 /* Print error message. `s1' is printf control string, `s2' and `s3'
614 are args for it or null. */ 614 are args for it or null. */
615 615
707 * off of the front of the mailbox name. 707 * off of the front of the mailbox name.
708 * 708 *
709 * If the mailbox is in the form "po:username:hostname", then it is 709 * If the mailbox is in the form "po:username:hostname", then it is
710 * modified by this function -- the second colon is replaced by a 710 * modified by this function -- the second colon is replaced by a
711 * null. 711 * null.
712 *
713 * Return a value suitable for passing to `exit'.
712 */ 714 */
713 715
714 int 716 int
715 popmail (mailbox, outfile, preserve, password, reverse_order) 717 popmail (mailbox, outfile, preserve, password, reverse_order)
716 char *mailbox; 718 char *mailbox;
734 736
735 server = pop_open (hostname, user, password, POP_NO_GETPASS); 737 server = pop_open (hostname, user, password, POP_NO_GETPASS);
736 if (! server) 738 if (! server)
737 { 739 {
738 error ("Error connecting to POP server: %s", pop_error, 0); 740 error ("Error connecting to POP server: %s", pop_error, 0);
739 return (1); 741 return EXIT_FAILURE;
740 } 742 }
741 743
742 if (pop_stat (server, &nmsgs, &nbytes)) 744 if (pop_stat (server, &nmsgs, &nbytes))
743 { 745 {
744 error ("Error getting message count from POP server: %s", pop_error, 0); 746 error ("Error getting message count from POP server: %s", pop_error, 0);
745 return (1); 747 return EXIT_FAILURE;
746 } 748 }
747 749
748 if (!nmsgs) 750 if (!nmsgs)
749 { 751 {
750 pop_close (server); 752 pop_close (server);
751 return (0); 753 return EXIT_SUCCESS;
752 } 754 }
753 755
754 mbfi = open (outfile, O_WRONLY | O_CREAT | O_EXCL, 0666); 756 mbfi = open (outfile, O_WRONLY | O_CREAT | O_EXCL, 0666);
755 if (mbfi < 0) 757 if (mbfi < 0)
756 { 758 {
757 pop_close (server); 759 pop_close (server);
758 error ("Error in open: %s, %s", strerror (errno), outfile); 760 error ("Error in open: %s, %s", strerror (errno), outfile);
759 return (1); 761 return EXIT_FAILURE;
760 } 762 }
761 fchown (mbfi, getuid (), -1); 763 fchown (mbfi, getuid (), -1);
762 764
763 if ((mbf = fdopen (mbfi, "wb")) == NULL) 765 if ((mbf = fdopen (mbfi, "wb")) == NULL)
764 { 766 {
765 pop_close (server); 767 pop_close (server);
766 error ("Error in fdopen: %s", strerror (errno), 0); 768 error ("Error in fdopen: %s", strerror (errno), 0);
767 close (mbfi); 769 close (mbfi);
768 unlink (outfile); 770 unlink (outfile);
769 return (1); 771 return EXIT_FAILURE;
770 } 772 }
771 773
772 if (reverse_order) 774 if (reverse_order)
773 { 775 {
774 start = nmsgs; 776 start = nmsgs;
787 mbx_delimit_begin (mbf); 789 mbx_delimit_begin (mbf);
788 if (pop_retr (server, i, mbf) != OK) 790 if (pop_retr (server, i, mbf) != OK)
789 { 791 {
790 error (Errmsg, 0, 0); 792 error (Errmsg, 0, 0);
791 close (mbfi); 793 close (mbfi);
792 return (1); 794 return EXIT_FAILURE;
793 } 795 }
794 mbx_delimit_end (mbf); 796 mbx_delimit_end (mbf);
795 fflush (mbf); 797 fflush (mbf);
796 if (ferror (mbf)) 798 if (ferror (mbf))
797 { 799 {
798 error ("Error in fflush: %s", strerror (errno), 0); 800 error ("Error in fflush: %s", strerror (errno), 0);
799 pop_close (server); 801 pop_close (server);
800 close (mbfi); 802 close (mbfi);
801 return (1); 803 return EXIT_FAILURE;
802 } 804 }
803 } 805 }
804 806
805 /* On AFS, a call to write only modifies the file in the local 807 /* On AFS, a call to write only modifies the file in the local
806 * workstation's AFS cache. The changes are not written to the server 808 * workstation's AFS cache. The changes are not written to the server
810 812
811 #ifdef BSD_SYSTEM 813 #ifdef BSD_SYSTEM
812 if (fsync (mbfi) < 0) 814 if (fsync (mbfi) < 0)
813 { 815 {
814 error ("Error in fsync: %s", strerror (errno), 0); 816 error ("Error in fsync: %s", strerror (errno), 0);
815 return (1); 817 return EXIT_FAILURE;
816 } 818 }
817 #endif 819 #endif
818 820
819 if (close (mbfi) == -1) 821 if (close (mbfi) == -1)
820 { 822 {
821 error ("Error in close: %s", strerror (errno), 0); 823 error ("Error in close: %s", strerror (errno), 0);
822 return (1); 824 return EXIT_FAILURE;
823 } 825 }
824 826
825 if (! preserve) 827 if (! preserve)
826 for (i = 1; i <= nmsgs; i++) 828 for (i = 1; i <= nmsgs; i++)
827 { 829 {
828 if (pop_delete (server, i)) 830 if (pop_delete (server, i))
829 { 831 {
830 error ("Error from POP server: %s", pop_error, 0); 832 error ("Error from POP server: %s", pop_error, 0);
831 pop_close (server); 833 pop_close (server);
832 return (1); 834 return EXIT_FAILURE;
833 } 835 }
834 } 836 }
835 837
836 if (pop_quit (server)) 838 if (pop_quit (server))
837 { 839 {
838 error ("Error from POP server: %s", pop_error, 0); 840 error ("Error from POP server: %s", pop_error, 0);
839 return (1); 841 return EXIT_FAILURE;
840 } 842 }
841 843
842 return (0); 844 return EXIT_SUCCESS;
843 } 845 }
844 846
845 int 847 int
846 pop_retr (server, msgno, arg) 848 pop_retr (server, msgno, arg)
847 popserver server; 849 popserver server;
955 957
956 #endif /* ! HAVE_STRERROR */ 958 #endif /* ! HAVE_STRERROR */
957 959
958 /* arch-tag: 1c323112-41fe-4fe5-8de9-494de631f73f 960 /* arch-tag: 1c323112-41fe-4fe5-8de9-494de631f73f
959 (do not change this comment) */ 961 (do not change this comment) */
962
963 /* movemail.c ends here */