Path: utzoo!telly!attcan!utgpu!jarvis.csri.toronto.edu!mailrus!tut.cis.ohio-state.edu!NSFNET-RELAY.AC.UK!lmjm%doc.imperial.ac.uk From: lmjm%doc.imperial.ac.uk@NSFNET-RELAY.AC.UK Newsgroups: gnu.emacs.bug Subject: MMDF patches for etc/movemail.c Message-ID: <8905141340.aa06156@tgould.doc.ic.ac.uk> Date: 14 May 89 12:44:13 GMT Sender: daemon@tut.cis.ohio-state.edu Distribution: gnu Organization: GNUs Not Usenet Lines: 145 X-Unparsable-Date: Sun, 14 May 89 13:40:02 WET DST Here are some patches for the 18.51 version of movemail.c to allow it to use MMDF's locking routines. It needs to be compiled with '-DMMDF' and needs to be linked with the main mmdf library (normally mmdf/lib/libmmdf.a) Sorry that the only machine with gnuemacs and MMDF is only 18.51 so I've not tried these patches on anything newer. *** movemail.c.orig Sun May 14 12:04:54 1989 --- movemail.c Sun May 14 13:24:49 1989 *************** *** 35,40 **** --- 35,43 ---- * get_errmsg - return pointer to system error message * */ + /* Modified May 1989 to support MMDF locking by L.McLoughlin, + * Department of Computing, Imperial College, London, UK + */ #include #include *************** *** 51,56 **** --- 54,64 ---- #include #endif + #ifdef MMDF + extern int lk_open(), lk_close(); + #undef USE_MAIL_FLOCK + #endif + /* Cancel substitutions made by config.h for Emacs. */ #undef open #undef read *************** *** 69,75 **** char buf[1024]; int nread; ! #ifndef MAIL_USE_FLOCK struct stat st; long now; int tem; --- 77,83 ---- char buf[1024]; int nread; ! #if !defined(MAIL_USE_FLOCK) && !defined(MMDF) struct stat st; long now; int tem; *************** *** 84,89 **** --- 92,101 ---- inname = argv[1]; outname = argv[2]; + #ifdef MMDF + mmdf_init( argv[ 0 ] ); + #endif + #ifdef MAIL_USE_POP if (!bcmp (inname, "po:", 3)) { *************** *** 97,103 **** setuid (getuid()); #endif /* MAIL_USE_POP */ ! #ifndef MAIL_USE_FLOCK /* Use a lock file named /usr/spool/mail/$USER.lock: If it exists, the mail file is locked. */ lockname = concat (inname, ".lock", ""); --- 109,115 ---- setuid (getuid()); #endif /* MAIL_USE_POP */ ! #if !defined(MAIL_USE_FLOCK) && !defined(MMDF) /* Use a lock file named /usr/spool/mail/$USER.lock: If it exists, the mail file is locked. */ lockname = concat (inname, ".lock", ""); *************** *** 138,144 **** --- 150,160 ---- #ifdef MAIL_USE_FLOCK indesc = open (inname, O_RDWR); #else /* if not MAIL_USE_FLOCK */ + # ifdef MMDF + indesc = lk_open( inname, O_RDONLY, (char *)0, (char *)0, 10 ); + # else indesc = open (inname, O_RDONLY); + # endif #endif /* not MAIL_USE_FLOCK */ if (indesc < 0) pfatal_with_name (inname); *************** *** 167,173 **** { int saved_errno = errno; (void) unlink (outname); ! #ifndef MAIL_USE_FLOCK (void) unlink (lockname); #endif /* not MAIL_USE_FLOCK */ errno = saved_errno; --- 183,189 ---- { int saved_errno = errno; (void) unlink (outname); ! #if !defined(MAIL_USE_FLOCK) && !defined(MMDF) (void) unlink (lockname); #endif /* not MAIL_USE_FLOCK */ errno = saved_errno; *************** *** 185,191 **** --- 201,211 ---- (void) ftruncate (indesc, 0L); #endif /* STRIDE or XENIX */ #endif /* MAIL_USE_FLOCK */ + #ifdef MMDF + (void) lk_close( indesc, (char *)0, (char *)0, (char *)0 ); + #else close (indesc); + #endif close (outdesc); #ifndef MAIL_USE_FLOCK /* Delete the input file; if we can't, at least get rid of its contents. */ *************** *** 192,198 **** --- 212,220 ---- if (unlink (inname) < 0) if (errno != ENOENT) creat (inname, 0666); + #ifndef MMDF unlink (lockname); + #endif #endif /* not MAIL_USE_FLOCK */ exit (0); } -- Lee McLoughlin 01 589 5111 X 5028 Department of Computing,Imperial College,180 Queens Gate,London SW7 2BZ, UK Janet: lmjm@uk.ac.ic.doc Uucp: lmjm@icdoc.UUCP (or ..!ukc!icdoc!lmjm) DARPA: lmjm@doc.ic.ac.uk (or lmjm%uk.ac.ic.doc@nsfnet-relay.ac.uk)