X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/7543028ea0375c194aea1dadadcb286b571be4ab..5cb4031d8f4101d80e936a9a13839ea1820db938:/lib-src/fakemail.c diff --git a/lib-src/fakemail.c b/lib-src/fakemail.c index 73898c6fb8..a4ac44cf96 100644 --- a/lib-src/fakemail.c +++ b/lib-src/fakemail.c @@ -1,5 +1,5 @@ /* sendmail-like interface to /bin/mail for system V, - Copyright (C) 1985, 1994 Free Software Foundation, Inc. + Copyright (C) 1985, 1994, 1999 Free Software Foundation, Inc. This file is part of GNU Emacs. @@ -18,9 +18,12 @@ along with GNU Emacs; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - #define NO_SHORTNAMES -#include <../src/config.h> +#define _XOPEN_SOURCE 500 /* for cuserid */ + +#ifdef HAVE_CONFIG_H +#include +#endif #if defined (BSD_SYSTEM) && !defined (BSD4_1) && !defined (USE_FAKEMAIL) /* This program isnot used in BSD, so just avoid loader complaints. */ @@ -45,13 +48,6 @@ main () #undef static #endif -#ifdef read -#undef read -#undef write -#undef open -#undef close -#endif - #ifdef WINDOWSNT #include "ntlib.h" #endif @@ -89,7 +85,7 @@ struct header_record struct header_record *previous; }; typedef struct header_record *header; - + struct stream_record { FILE *handle; @@ -210,8 +206,7 @@ init_linebuffer (linebuffer) } /* Read a line of text from `stream' into `linebuffer'. - * Return the length of the line. - */ + Return the length of the line. */ long readline (linebuffer, stream) @@ -228,7 +223,7 @@ readline (linebuffer, stream) if (p == end) { linebuffer->size *= 2; - buffer = ((char *) xrealloc (buffer, linebuffer->size)); + buffer = ((char *) xrealloc ((long *)buffer, linebuffer->size)); p = buffer + (p - linebuffer->buffer); end = buffer + linebuffer->size; linebuffer->buffer = buffer; @@ -257,18 +252,18 @@ get_keyword (field, rest) { static char keyword[KEYWORD_SIZE]; register char *ptr; - register char c; + register int c; ptr = &keyword[0]; - c = *field++; + c = (unsigned char) *field++; if (isspace (c) || c == ':') return ((char *) NULL); *ptr++ = (islower (c) ? toupper (c) : c); - while (((c = *field++) != ':') && ! isspace (c)) + while (((c = (unsigned char) *field++) != ':') && ! isspace (c)) *ptr++ = (islower (c) ? toupper (c) : c); *ptr++ = '\0'; while (isspace (c)) - c = *field++; + c = (unsigned char) *field++; if (c != ':') return ((char *) NULL); *rest = field; @@ -599,6 +594,7 @@ args_size (the_header) Also, if the header has any FCC fields, call setup_files for each one. */ +void parse_header (the_header, where) header the_header; register char *where; @@ -625,13 +621,13 @@ parse_header (the_header, where) *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. */ - + header read_header () { @@ -731,7 +727,7 @@ main (argc, argv) 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");