From: Glenn Morris Date: Wed, 18 May 2011 03:39:45 +0000 (-0700) Subject: Remove lib-src/fakemail.c. X-Git-Url: http://git.hcoop.net/bpt/emacs.git/commitdiff_plain/c136e5cdf2e7ea9745727c07146713c582f93cde Remove lib-src/fakemail.c. * lib-src/fakemail.c: Remove file. * lib-src/Makefile.in (UTILITIES): Remove fakemail${EXEEXT}. (fakemail${EXEEXT}): Remove rule. * lib-src/makefile.w32-in ($(BLD)/fakemail.exe, fakemail) ($(BLD)/fakemail.$(O)): Remove. * lisp/mail/sendmail.el (sendmail-program): Fall back to just "sendmail". * lisp/mail/feedmail.el: Update commentary. * doc/emacs/ack.texi (Acknowledgments): Remove fakemail.c. * etc/NEWS: Mention this. * INSTALL: Remove fakemail. --- diff --git a/INSTALL b/INSTALL index b0f4f11dd9..0c69b52278 100644 --- a/INSTALL +++ b/INSTALL @@ -705,8 +705,8 @@ directory of the Emacs distribution. in `./lib-src' to their final destinations, as selected in `./src/epaths.h'. Strictly speaking, not all of the executables in `./lib-src' need be copied. -- The programs `fakemail', `hexl', `movemail', `profile', `rcs2log', - and `vcdiff' are used by Emacs; they do need to be copied. +- The programs `hexl', `movemail', `profile', `rcs2log', and `vcdiff' + are used by Emacs; they do need to be copied. - The programs `etags', `ctags', `emacsclient', and `rcs-checkin' are intended to be run by users; they are handled below. - The programs `make-docfile' and `test-distrib' were diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog index ec0e3b51a0..1f236ef420 100644 --- a/doc/emacs/ChangeLog +++ b/doc/emacs/ChangeLog @@ -1,3 +1,7 @@ +2011-05-18 Glenn Morris + + * ack.texi (Acknowledgments): Remove fakemail.c. + 2011-05-17 Chong Yidong Fixes for fitting text into 7x9 printed manual. diff --git a/doc/emacs/ack.texi b/doc/emacs/ack.texi index debe7149cb..e554c71703 100644 --- a/doc/emacs/ack.texi +++ b/doc/emacs/ack.texi @@ -1016,7 +1016,7 @@ Markus Rost wrote @file{cus-test.el}, a testing framework for customize. @item Guillermo J.@: Rozas wrote @file{scheme.el}, a mode for editing Scheme and -DSSSL code, and @file{fakemail.c}, an interface to the System V mailer. +DSSSL code. @item Ivar Rummelhoff wrote @file{winner.el}, which records recent window diff --git a/etc/NEWS b/etc/NEWS index 9a90688953..98a66259db 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -278,6 +278,10 @@ to enable a minor-mode is deprecated. Instead, use "eval: (minor-mode)". ** The standalone programs lib-src/digest-doc and sorted-doc have been replaced with Lisp commands `doc-file-to-man' and `doc-file-to-info'. +--- +** The standalone program `fakemail' has been removed. +If you need it, feedmail.el ought to provide a superset of the functionality. + ** The variable `focus-follows-mouse' now always defaults to nil. diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog index c4a2df5bdb..27dc3a14d4 100644 --- a/lib-src/ChangeLog +++ b/lib-src/ChangeLog @@ -1,3 +1,11 @@ +2011-05-18 Glenn Morris + + * fakemail.c: Remove file. + * makefile.w32-in ($(BLD)/fakemail.exe, fakemail) + ($(BLD)/fakemail.$(O)): Remove. + * Makefile.in (UTILITIES): Remove fakemail${EXEEXT}. + (fakemail${EXEEXT}): Remove rule. + 2011-04-24 Teodor Zlatanov * makefile.w32-in (obj): Add gnutls.o. diff --git a/lib-src/Makefile.in b/lib-src/Makefile.in index 36366a4d2e..1c2018dbbc 100644 --- a/lib-src/Makefile.in +++ b/lib-src/Makefile.in @@ -117,8 +117,8 @@ STAMP_INST_SCRIPTS = stamp-rcs-checkin stamp-grep-changelog # Things that Emacs runs internally, or during the build process, # which should not be installed in bindir. -UTILITIES = profile${EXEEXT} movemail${EXEEXT} fakemail${EXEEXT} \ - hexl${EXEEXT} update-game-score${EXEEXT} +UTILITIES = profile${EXEEXT} movemail${EXEEXT} hexl${EXEEXT} \ + update-game-score${EXEEXT} DONT_INSTALL= test-distrib${EXEEXT} make-docfile${EXEEXT} @@ -353,9 +353,6 @@ movemail.o: ${srcdir}/movemail.c ../src/config.h pop.o: ${srcdir}/pop.c ${srcdir}/../lib/min-max.h ../src/config.h $(CC) -c ${CPP_CFLAGS} ${MOVE_FLAGS} ${srcdir}/pop.c -fakemail${EXEEXT}: ${srcdir}/fakemail.c ../src/config.h - $(CC) ${ALL_CFLAGS} ${srcdir}/fakemail.c $(LOADLIBES) -o fakemail - emacsclient${EXEEXT}: ${srcdir}/emacsclient.c ../src/config.h $(CC) ${ALL_CFLAGS} ${srcdir}/emacsclient.c \ -DVERSION="\"${version}\"" \ diff --git a/lib-src/fakemail.c b/lib-src/fakemail.c deleted file mode 100644 index 435512125f..0000000000 --- a/lib-src/fakemail.c +++ /dev/null @@ -1,744 +0,0 @@ -/* sendmail-like interface to /bin/mail for system V, - Copyright (C) 1985, 1994, 1999, 2001-2011 Free Software Foundation, Inc. - -Author: Bill Rozas -(according to ack.texi) - -This file is part of GNU Emacs. - -GNU Emacs is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -GNU Emacs is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU Emacs. If not, see . */ - - -#define _XOPEN_SOURCE 500 /* for cuserid */ - -#ifdef HAVE_CONFIG_H -#include -#endif - -#if defined (BSD_SYSTEM) && !defined (USE_FAKEMAIL) -/* This program isnot used in BSD, so just avoid loader complaints. */ -int -main (void) -{ - return 0; -} -#else /* not BSD 4.2 (or newer) */ -#ifdef MSDOS -int -main () -{ - return 0; -} -#else /* not MSDOS */ -/* This conditional contains all the rest of the file. */ - -/* These are defined in config in some versions. */ - -#ifdef static -#undef static -#endif - -#ifdef WINDOWSNT -#include "ntlib.h" -#endif - -#include -#include -#include -#include -#include -#include - -/* This is to declare cuserid. */ -#include - -/* Type definitions */ - -#define boolean int -#define true 1 -#define false 0 - -#define TM_YEAR_BASE 1900 - -/* Nonzero if TM_YEAR is a struct tm's tm_year value that causes - asctime to have well-defined behavior. */ -#ifndef TM_YEAR_IN_ASCTIME_RANGE -# define TM_YEAR_IN_ASCTIME_RANGE(tm_year) \ - (1000 - TM_YEAR_BASE <= (tm_year) && (tm_year) <= 9999 - TM_YEAR_BASE) -#endif - -/* Various lists */ - -struct line_record -{ - char *string; - struct line_record *continuation; -}; -typedef struct line_record *line_list; - -struct header_record -{ - line_list text; - struct header_record *next; - struct header_record *previous; -}; -typedef struct header_record *header; - -struct stream_record -{ - FILE *handle; - int (*action)(FILE *); - struct stream_record *rest_streams; -}; -typedef struct stream_record *stream_list; - -/* A `struct linebuffer' is a structure which holds a line of text. - * `readline' reads a line from a stream into a linebuffer - * and works regardless of the length of the line. - */ - -struct linebuffer -{ - long size; - char *buffer; -}; - -struct linebuffer lb; - -#define new_list() \ - ((line_list) xmalloc (sizeof (struct line_record))) -#define new_header() \ - ((header) xmalloc (sizeof (struct header_record))) -#define new_stream() \ - ((stream_list) xmalloc (sizeof (struct stream_record))) -#define alloc_string(nchars) \ - ((char *) xmalloc ((nchars) + 1)) - -/* Global declarations */ - -#define BUFLEN 1024 -#define KEYWORD_SIZE 256 -#define FROM_PREFIX "From" -#define MY_NAME "fakemail" -#define NIL ((line_list) NULL) -#define INITIAL_LINE_SIZE 200 - -#ifndef MAIL_PROGRAM_NAME -#define MAIL_PROGRAM_NAME "/bin/mail" -#endif - -static const char *my_name; -static char *the_date; -static char *the_user; -static line_list file_preface; -static stream_list the_streams; -static boolean no_problems = true; - -static void fatal (const char *s1) NO_RETURN; - -#ifdef CURRENT_USER -static struct passwd *my_entry; -#define cuserid(s) \ -(my_entry = getpwuid (((int) geteuid ())), \ - my_entry->pw_name) -#endif - -/* Utilities */ - -/* Print error message. `s1' is printf control string, `s2' is arg for it. */ - -static void -error (const char *s1, const char *s2) -{ - printf ("%s: ", my_name); - printf (s1, s2); - printf ("\n"); - no_problems = false; -} - -/* Print error message and exit. */ - -static void -fatal (const char *s1) -{ - error ("%s", s1); - exit (EXIT_FAILURE); -} - -/* Like malloc but get fatal error if memory is exhausted. */ - -static void * -xmalloc (size_t size) -{ - void *result = malloc (size); - if (! result) - fatal ("virtual memory exhausted"); - return result; -} - -static void * -xrealloc (void *ptr, size_t size) -{ - void *result = realloc (ptr, size); - if (! result) - fatal ("virtual memory exhausted"); - return result; -} - -/* Initialize a linebuffer for use */ - -static void -init_linebuffer (struct linebuffer *linebuffer) -{ - linebuffer->size = INITIAL_LINE_SIZE; - linebuffer->buffer = ((char *) xmalloc (INITIAL_LINE_SIZE)); -} - -/* Read a line of text from `stream' into `linebuffer'. - Return the length of the line. */ - -static long -readline (struct linebuffer *linebuffer, FILE *stream) -{ - char *buffer = linebuffer->buffer; - char *p = linebuffer->buffer; - char *end = p + linebuffer->size; - - while (true) - { - int c = getc (stream); - if (p == end) - { - linebuffer->size *= 2; - buffer = (char *) xrealloc (buffer, linebuffer->size); - p = buffer + (p - linebuffer->buffer); - end = buffer + linebuffer->size; - linebuffer->buffer = buffer; - } - if (c < 0 || c == '\n') - { - *p = 0; - break; - } - *p++ = c; - } - - return p - buffer; -} - -/* Extract a colon-terminated keyword from the string FIELD. - Return that keyword as a string stored in a static buffer. - Store the address of the rest of the string into *REST. - - If there is no keyword, return NULL and don't alter *REST. */ - -static char * -get_keyword (register char *field, char **rest) -{ - static char keyword[KEYWORD_SIZE]; - register char *ptr; - register int c; - - ptr = &keyword[0]; - c = (unsigned char) *field++; - if (isspace (c) || c == ':') - return ((char *) NULL); - *ptr++ = (islower (c) ? toupper (c) : c); - while (((c = (unsigned char) *field++) != ':') && ! isspace (c)) - *ptr++ = (islower (c) ? toupper (c) : c); - *ptr++ = '\0'; - while (isspace (c)) - c = (unsigned char) *field++; - if (c != ':') - return ((char *) NULL); - *rest = field; - return &keyword[0]; -} - -/* Nonzero if the string FIELD starts with a colon-terminated keyword. */ - -static boolean -has_keyword (char *field) -{ - char *ignored; - return (get_keyword (field, &ignored) != ((char *) NULL)); -} - -/* Store the string FIELD, followed by any lines in THE_LIST, - into the buffer WHERE. - Concatenate lines, putting just a space between them. - Delete everything contained in parentheses. - When a recipient name contains <...>, we discard - everything except what is inside the <...>. - - We don't pay attention to overflowing WHERE; - the caller has to make it big enough. */ - -static char * -add_field (line_list the_list, register char *field, register char *where) -{ - register char c; - while (true) - { - char *this_recipient_where; - int in_quotes = 0; - - *where++ = ' '; - this_recipient_where = where; - - while ((c = *field++) != '\0') - { - if (c == '\\') - *where++ = c; - else if (c == '"') - { - in_quotes = ! in_quotes; - *where++ = c; - } - else if (in_quotes) - *where++ = c; - else if (c == '(') - { - while (*field && *field != ')') ++field; - if (! (*field++)) break; /* no close */ - continue; - } - else if (c == ',') - { - *where++ = ' '; - /* When we get to the end of one recipient, - don't discard it if the next one has <...>. */ - this_recipient_where = where; - } - else if (c == '<') - /* Discard everything we got before the `<'. */ - where = this_recipient_where; - else if (c == '>') - /* Discard the rest of this name that follows the `>'. */ - { - while (*field && *field != ',') ++field; - if (! (*field++)) break; /* no comma */ - continue; - } - else - *where++ = c; - } - if (the_list == NIL) break; - field = the_list->string; - the_list = the_list->continuation; - } - return where; -} - -static line_list -make_file_preface (void) -{ - char *the_string, *temp; - long idiotic_interface; - struct tm *tm; - long prefix_length; - long user_length; - long date_length; - line_list result; - - prefix_length = strlen (FROM_PREFIX); - time (&idiotic_interface); - /* Convert to a string, checking for out-of-range time stamps. - Don't use 'ctime', as that might dump core if the hardware clock - is set to a bizarre value. */ - tm = localtime (&idiotic_interface); - if (! (tm && TM_YEAR_IN_ASCTIME_RANGE (tm->tm_year) - && (the_date = asctime (tm)))) - fatal ("current time is out of range"); - /* the_date has an unwanted newline at the end */ - date_length = strlen (the_date) - 1; - the_date[date_length] = '\0'; - temp = cuserid ((char *) NULL); - user_length = strlen (temp); - the_user = alloc_string (user_length + 1); - strcpy (the_user, temp); - the_string = alloc_string (3 + prefix_length - + user_length - + date_length); - temp = the_string; - strcpy (temp, FROM_PREFIX); - temp = &temp[prefix_length]; - *temp++ = ' '; - strcpy (temp, the_user); - temp = &temp[user_length]; - *temp++ = ' '; - strcpy (temp, the_date); - result = new_list (); - result->string = the_string; - result->continuation = ((line_list) NULL); - return result; -} - -static void -write_line_list (register line_list the_list, FILE *the_stream) -{ - for ( ; - the_list != ((line_list) NULL) ; - the_list = the_list->continuation) - { - fputs (the_list->string, the_stream); - putc ('\n', the_stream); - } - return; -} - -static int -close_the_streams (void) -{ - register stream_list rem; - for (rem = the_streams; - rem != ((stream_list) NULL); - rem = rem->rest_streams) - if (no_problems && (*rem->action) (rem->handle) != 0) - error ("output error", NULL); - the_streams = ((stream_list) NULL); - return (no_problems ? EXIT_SUCCESS : EXIT_FAILURE); -} - -static void -add_a_stream (FILE *the_stream, int (*closing_action) (FILE *)) -{ - stream_list old = the_streams; - the_streams = new_stream (); - the_streams->handle = the_stream; - the_streams->action = closing_action; - the_streams->rest_streams = old; - return; -} - -static int -my_fclose (FILE *the_file) -{ - putc ('\n', the_file); - fflush (the_file); - if (ferror (the_file)) - return EOF; - return fclose (the_file); -} - -static boolean -open_a_file (char *name) -{ - FILE *the_stream = fopen (name, "a"); - if (the_stream != ((FILE *) NULL)) - { - add_a_stream (the_stream, my_fclose); - if (the_user == ((char *) NULL)) - file_preface = make_file_preface (); - write_line_list (file_preface, the_stream); - return true; - } - return false; -} - -static void -put_string (char *s) -{ - register stream_list rem; - for (rem = the_streams; - rem != ((stream_list) NULL); - rem = rem->rest_streams) - fputs (s, rem->handle); - return; -} - -static void -put_line (const char *string) -{ - register stream_list rem; - for (rem = the_streams; - rem != ((stream_list) NULL); - rem = rem->rest_streams) - { - const char *s = string; - int column = 0; - - /* Divide STRING into lines. */ - while (*s != 0) - { - const char *breakpos; - - /* Find the last char that fits. */ - for (breakpos = s; *breakpos && column < 78; ++breakpos) - { - if (*breakpos == '\t') - column += 8; - else - column++; - } - /* If we didn't reach end of line, break the line. */ - if (*breakpos) - { - /* Back up to just after the last comma that fits. */ - while (breakpos != s && breakpos[-1] != ',') --breakpos; - - if (breakpos == s) - { - /* If no comma fits, move past the first address anyway. */ - while (*breakpos != 0 && *breakpos != ',') ++breakpos; - if (*breakpos != 0) - /* Include the comma after it. */ - ++breakpos; - } - } - /* Output that much, then break the line. */ - fwrite (s, 1, breakpos - s, rem->handle); - column = 8; - - /* Skip whitespace and prepare to print more addresses. */ - s = breakpos; - while (*s == ' ' || *s == '\t') ++s; - if (*s != 0) - fputs ("\n\t", rem->handle); - } - putc ('\n', rem->handle); - } - return; -} - -#define mail_error error - -/* Handle an FCC field. FIELD is the text of the first line (after - the header name), and THE_LIST holds the continuation lines if any. - Call open_a_file for each file. */ - -static void -setup_files (register line_list the_list, register char *field) -{ - register char *start; - register char c; - while (true) - { - while (((c = *field) != '\0') - && (c == ' ' - || c == '\t' - || c == ',')) - field += 1; - if (c != '\0') - { - start = field; - while (((c = *field) != '\0') - && c != ' ' - && c != '\t' - && c != ',') - field += 1; - *field = '\0'; - if (!open_a_file (start)) - mail_error ("Could not open file %s", start); - *field = c; - if (c != '\0') continue; - } - if (the_list == ((line_list) NULL)) - return; - field = the_list->string; - the_list = the_list->continuation; - } -} - -/* Compute the total size of all recipient names stored in THE_HEADER. - The result says how big to make the buffer to pass to parse_header. */ - -static int -args_size (header the_header) -{ - register header old = the_header; - register line_list rem; - register int size = 0; - do - { - char *field; - register char *keyword = get_keyword (the_header->text->string, &field); - if ((strcmp (keyword, "TO") == 0) - || (strcmp (keyword, "CC") == 0) - || (strcmp (keyword, "BCC") == 0)) - { - size += 1 + strlen (field); - for (rem = the_header->text->continuation; - rem != NIL; - rem = rem->continuation) - size += 1 + strlen (rem->string); - } - the_header = the_header->next; - } while (the_header != old); - return size; -} - -/* Scan the header described by the lists THE_HEADER, - and put all recipient names into the buffer WHERE. - Precede each recipient name with a space. - - Also, if the header has any FCC fields, call setup_files for each one. */ - -static void -parse_header (header the_header, register char *where) -{ - register header old = the_header; - do - { - char *field; - register char *keyword = get_keyword (the_header->text->string, &field); - if (strcmp (keyword, "TO") == 0) - where = add_field (the_header->text->continuation, field, where); - else if (strcmp (keyword, "CC") == 0) - where = add_field (the_header->text->continuation, field, where); - else if (strcmp (keyword, "BCC") == 0) - { - where = add_field (the_header->text->continuation, field, where); - the_header->previous->next = the_header->next; - the_header->next->previous = the_header->previous; - } - else if (strcmp (keyword, "FCC") == 0) - setup_files (the_header->text->continuation, field); - the_header = the_header->next; - } while (the_header != old); - *where = '\0'; - return; -} - -/* Read lines from the input until we get a blank line. - Create a list of `header' objects, one for each header field, - each of which points to a list of `line_list' objects, - one for each line in that field. - Continuation lines are grouped in the headers they continue. */ - -static header -read_header (void) -{ - register header the_header = ((header) NULL); - register line_list *next_line = ((line_list *) NULL); - - init_linebuffer (&lb); - - do - { - long length; - register char *line; - - readline (&lb, stdin); - line = lb.buffer; - length = strlen (line); - if (length == 0) break; - - if (has_keyword (line)) - { - register header old = the_header; - the_header = new_header (); - if (old == ((header) NULL)) - { - the_header->next = the_header; - the_header->previous = the_header; - } - else - { - the_header->previous = old; - the_header->next = old->next; - old->next = the_header; - } - next_line = &(the_header->text); - } - - if (next_line == ((line_list *) NULL)) - { - /* Not a valid header */ - exit (EXIT_FAILURE); - } - *next_line = new_list (); - (*next_line)->string = alloc_string (length); - strcpy (((*next_line)->string), line); - next_line = &((*next_line)->continuation); - *next_line = NIL; - - } while (true); - - if (! the_header) - fatal ("input message has no header"); - return the_header->next; -} - -static void -write_header (header the_header) -{ - register header old = the_header; - do - { - register line_list the_list; - for (the_list = the_header->text; - the_list != NIL; - the_list = the_list->continuation) - put_line (the_list->string); - the_header = the_header->next; - } while (the_header != old); - put_line (""); - return; -} - -int -main (int argc, char **argv) -{ - char *command_line; - header the_header; - long name_length; - const char *mail_program_name; - char buf[BUFLEN + 1]; - register int size; - FILE *the_pipe; - - mail_program_name = getenv ("FAKEMAILER"); - if (!(mail_program_name && *mail_program_name)) - mail_program_name = MAIL_PROGRAM_NAME; - name_length = strlen (mail_program_name); - - my_name = MY_NAME; - the_streams = ((stream_list) NULL); - the_date = ((char *) NULL); - the_user = ((char *) NULL); - - the_header = read_header (); - command_line = alloc_string (name_length + args_size (the_header)); - strcpy (command_line, mail_program_name); - parse_header (the_header, &command_line[name_length]); - - the_pipe = popen (command_line, "w"); - if (the_pipe == ((FILE *) NULL)) - fatal ("cannot open pipe to real mailer"); - - add_a_stream (the_pipe, pclose); - - write_header (the_header); - - /* Dump the message itself */ - - while (!feof (stdin)) - { - size = fread (buf, 1, BUFLEN, stdin); - buf[size] = '\0'; - put_string (buf); - } - - if (no_problems && (ferror (stdin) || fclose (stdin) != 0)) - error ("input error", NULL); - - exit (close_the_streams ()); -} - -#endif /* not MSDOS */ -#endif /* not BSD 4.2 (or newer) */ - - -/* fakemail.c ends here */ diff --git a/lib-src/makefile.w32-in b/lib-src/makefile.w32-in index 38d453d525..0e203d18bd 100644 --- a/lib-src/makefile.w32-in +++ b/lib-src/makefile.w32-in @@ -31,8 +31,6 @@ $(BLD)/make-docfile.exe: $(BLD)/make-docfile.$(O) $(BLD)/ntlib.$(O) $(LINK) $(LINK_OUT)$@ $(LINK_FLAGS) $(BLD)/make-docfile.$(O) $(BLD)/ntlib.$(O) $(LIBS) $(BLD)/hexl.exe: $(BLD)/hexl.$(O) $(LINK) $(LINK_OUT)$@ $(LINK_FLAGS) $(BLD)/hexl.$(O) $(LIBS) -$(BLD)/fakemail.exe: $(BLD)/fakemail.$(O) $(BLD)/ntlib.$(O) - $(LINK) $(LINK_OUT)$@ $(LINK_FLAGS) $(BLD)/fakemail.$(O) $(BLD)/ntlib.$(O) $(LIBS) $(BLD)/test-distrib.exe: $(BLD)/test-distrib.$(O) $(LINK) $(LINK_OUT)$@ $(LINK_FLAGS) $(BLD)/test-distrib.$(O) $(LIBS) @@ -42,7 +40,6 @@ etags: stamp_BLD $(BLD)/etags.exe ebrowse: stamp_BLD $(BLD)/ebrowse.exe hexl: stamp_BLD $(BLD)/hexl.exe movemail: stamp_BLD $(BLD)/movemail.exe -fakemail: stamp_BLD $(BLD)/fakemail.exe emacsclient: stamp_BLD $(BLD)/emacsclient.exe $(BLD)/emacsclientw.exe test-distrib: stamp_BLD $(BLD)/test-distrib.exe @@ -406,14 +403,6 @@ $(BLD)/etags.$(O) : \ $(SRC)/ntlib.h \ $(EMACS_ROOT)/lib/getopt.h -$(BLD)/fakemail.$(O) : \ - $(SRC)/fakemail.c \ - $(SRC)/ntlib.h \ - $(EMACS_ROOT)/src/s/ms-w32.h \ - $(EMACS_ROOT)/src/m/intel386.h \ - $(EMACS_ROOT)/lib-src/../src/config.h \ - $(EMACS_ROOT)/nt/inc/pwd.h - $(BLD)/getdate.$(O) : \ $(SRC)/getdate.c \ $(EMACS_ROOT)/src/s/ms-w32.h \ @@ -483,7 +472,7 @@ $(BLD)/timer.$(O) : \ # The following dependencies are for supporting parallel builds, where # we must make sure $(BLD) exists before any compilation starts. # -$(BLD)/make-docfile.$(O) $(BLD)/hexl.$(O) $(BLD)/fakemail.$(O): stamp_BLD +$(BLD)/make-docfile.$(O) $(BLD)/hexl.$(O): stamp_BLD $(BLD)/test-distrib.$(O) $(MOVEMAILOBJS): stamp_BLD diff --git a/lisp/ChangeLog b/lisp/ChangeLog index fa61c6913c..e7c835400a 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,7 @@ 2011-05-18 Glenn Morris + * mail/sendmail.el (sendmail-program): Fall back to just "sendmail". + Rationalize calendar handling of day and month abbrev-arrays. * calendar/calendar.el (calendar-customized-p): New function. (calendar-abbrev-construct, calendar-make-alist): Change what it does. diff --git a/lisp/mail/feedmail.el b/lisp/mail/feedmail.el index 3ef8a6c495..b86bdb178f 100644 --- a/lisp/mail/feedmail.el +++ b/lisp/mail/feedmail.el @@ -13,9 +13,8 @@ ;; A replacement for parts of Emacs' sendmail.el (specifically, ;; it's what handles your outgoing mail after you hit C-c C-c in mail ;; mode). See below for a list of additional features, including the -;; ability to queue messages for later sending. If you are using -;; fakemail as a subprocess, you can switch to feedmail and eliminate -;; the use of fakemail. +;; ability to queue messages for later sending. This replaces +;; the standalone fakemail program that used to be distributed with Emacs. ;; feedmail works with recent versions of Emacs (20.x series) and ;; XEmacs (tested with 20.4 and later betas). It probably no longer @@ -90,12 +89,11 @@ ;; This code does in elisp a superset of the stuff that used to be done ;; by the separate program "fakemail" for processing outbound email. ;; In other words, it takes over after you hit "C-c C-c" in mail mode. -;; By appropriate setting of options, you can still use "fakemail", -;; or you can even revert to sendmail (which is not too popular -;; locally). See the variables at the top of the elisp for how to -;; achieve these effects (there are more features than in this bullet -;; list, so trolling through the variable and function doc strings may -;; be worth your while): +;; By appropriate setting of options, you can even revert to sendmail +;; (which is not too popular locally). See the variables at the top +;; of the elisp for how to achieve these effects (there are more +;; features than in this bullet list, so trolling through the variable +;; and function doc strings may be worth your while): ;; ;; --- you can park outgoing messages into a disk-based queue and ;; stimulate sending them all later (handy for laptop users); diff --git a/lisp/mail/sendmail.el b/lisp/mail/sendmail.el index ed4270d484..bbb02d7b97 100644 --- a/lisp/mail/sendmail.el +++ b/lisp/mail/sendmail.el @@ -48,9 +48,9 @@ ((file-exists-p "/usr/sbin/sendmail") "/usr/sbin/sendmail") ((file-exists-p "/usr/lib/sendmail") "/usr/lib/sendmail") ((file-exists-p "/usr/ucblib/sendmail") "/usr/ucblib/sendmail") - (t "fakemail"))) ; in lib-src, to interface to /bin/mail + (t "sendmail"))) "Program used to send messages." - :version "24.1" ; added executable-find + :version "24.1" ; add executable-find, remove fakemail :group 'mail :type 'file)