From c214e35e489145bd3a8ab7a353671f947368a7ae Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Wed, 11 Jul 2012 15:44:07 -0700 Subject: [PATCH] Port 'movemail' again to Solaris and similar hosts. See Susan Cragin's report in . * movemail.c (xmalloc): Also define if !DISABLE_DIRECT_ACCESS && !MAIL_USE_MMDF && !MAIL_USE_SYSTEM_LOCK. Move up, so it doesn't need a forward declaration. (main): Rewrite to avoid no-longer-present function 'concat', if !DISABLE_DIRECT_ACCESS && !MAIL_USE_MMDF && !MAIL_USE_SYSTEM_LOCK. --- lib-src/ChangeLog | 9 +++++++++ lib-src/movemail.c | 40 +++++++++++++++++++++------------------- 2 files changed, 30 insertions(+), 19 deletions(-) diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog index ce4afdfec1..28f3403b36 100644 --- a/lib-src/ChangeLog +++ b/lib-src/ChangeLog @@ -1,5 +1,14 @@ 2012-07-11 Paul Eggert + Port 'movemail' again to Solaris and similar hosts. + See Susan Cragin's report in + . + * movemail.c (xmalloc): Also define if !DISABLE_DIRECT_ACCESS && + !MAIL_USE_MMDF && !MAIL_USE_SYSTEM_LOCK. Move up, so it doesn't + need a forward declaration. + (main): Rewrite to avoid no-longer-present function 'concat', if + !DISABLE_DIRECT_ACCESS && !MAIL_USE_MMDF && !MAIL_USE_SYSTEM_LOCK. + Assume strerror. * emacsclient.c, movemail.c, update-game-score.c (strerror) [!HAVE_STRERROR]: Remove. diff --git a/lib-src/movemail.c b/lib-src/movemail.c index aa5fd989a6..fb2111fd62 100644 --- a/lib-src/movemail.c +++ b/lib-src/movemail.c @@ -137,9 +137,6 @@ static _Noreturn void fatal (const char *s1, const char *s2, const char *s3); static void error (const char *s1, const char *s2, const char *s3); static _Noreturn void pfatal_with_name (char *name); static _Noreturn void pfatal_and_delete (char *name); -#ifdef MAIL_USE_MAILLOCK -static void *xmalloc (size_t size); -#endif #ifdef MAIL_USE_POP static int popmail (char *mailbox, char *outfile, int preserve, char *password, int reverse_order); static int pop_retr (popserver server, int msgno, FILE *arg); @@ -148,6 +145,21 @@ static int mbx_delimit_begin (FILE *mbf); static int mbx_delimit_end (FILE *mbf); #endif +#if (MAIL_USE_MAILLOCK \ + || (!defined DISABLE_DIRECT_ACCESS && !defined MAIL_USE_MMDF \ + && !defined MAIL_USE_SYSTEM_LOCK)) +/* 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", 0, 0); + return result; +} +#endif + /* Nonzero means this is name of a lock file to delete on fatal error. */ static char *delete_lockname; @@ -165,7 +177,7 @@ main (int argc, char **argv) int tem; char *lockname; char *tempname; - size_t inname_dirlen; + size_t inname_len, inname_dirlen; int desc; #endif /* not MAIL_USE_SYSTEM_LOCK */ @@ -293,8 +305,11 @@ main (int argc, char **argv) should define MAIL_USE_SYSTEM_LOCK but does not, send a bug report to bug-gnu-emacs@prep.ai.mit.edu so we can fix it. */ - lockname = concat (inname, ".lock", ""); - for (inname_dirlen = strlen (inname); + inname_len = strlen (inname); + lockname = xmalloc (inname_len + sizeof ".lock"); + strcpy (lockname, inname); + strcpy (lockname + inname_len, ".lock"); + for (inname_dirlen = inname_len; inname_dirlen && !IS_DIRECTORY_SEP (inname[inname_dirlen - 1]); inname_dirlen--) continue; @@ -640,19 +655,6 @@ pfatal_and_delete (char *name) unlink (name); fatal ("%s for %s", s, name); } - -#ifdef MAIL_USE_MAILLOCK -/* 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", 0, 0); - return result; -} -#endif /* This is the guts of the interface to the Post Office Protocol. */ -- 2.39.2