diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2012-07-11 15:44:07 -0700 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2012-07-11 15:44:07 -0700 |
commit | c214e35e489145bd3a8ab7a353671f947368a7ae (patch) | |
tree | 89544a4e7b9a87d7fefe61f7e2ea53be31a2dbdb | |
parent | 63e47e0749c2e27f76a03167562e4204e2d555f0 (diff) | |
download | emacs-c214e35e489145bd3a8ab7a353671f947368a7ae.tar.gz |
Port 'movemail' again to Solaris and similar hosts.
See Susan Cragin's report in
<http://lists.gnu.org/archive/html/emacs-devel/2012-07/msg00199.html>.
* 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.
-rw-r--r-- | lib-src/ChangeLog | 9 | ||||
-rw-r--r-- | lib-src/movemail.c | 40 |
2 files changed, 30 insertions, 19 deletions
diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog index ce4afdfec1e..28f3403b369 100644 --- a/lib-src/ChangeLog +++ b/lib-src/ChangeLog @@ -1,5 +1,14 @@ 2012-07-11 Paul Eggert <eggert@cs.ucla.edu> + Port 'movemail' again to Solaris and similar hosts. + See Susan Cragin's report in + <http://lists.gnu.org/archive/html/emacs-devel/2012-07/msg00199.html>. + * 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 aa5fd989a6d..fb2111fd621 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. */ |