diff options
author | Joshua Kinard <kumba@gentoo.org> | 2003-06-10 20:13:24 +0000 |
---|---|---|
committer | Joshua Kinard <kumba@gentoo.org> | 2003-06-10 20:13:24 +0000 |
commit | 49bef84c16e66aefc7fbf1ba43ae0aebf3e0d989 (patch) | |
tree | 3d28596fa932aa5bbf72597d767b328c9557ad2b /net-mail | |
parent | Fixed major brokeness in ebuild, read ChangeLog for more info. (diff) | |
download | gentoo-2-49bef84c16e66aefc7fbf1ba43ae0aebf3e0d989.tar.gz gentoo-2-49bef84c16e66aefc7fbf1ba43ae0aebf3e0d989.tar.bz2 gentoo-2-49bef84c16e66aefc7fbf1ba43ae0aebf3e0d989.zip |
Removed mailx-support source from ${FILESDIR} and added to tarball
Diffstat (limited to 'net-mail')
10 files changed, 0 insertions, 952 deletions
diff --git a/net-mail/mailx-support/files/mailx-support-20030215/Makefile b/net-mail/mailx-support/files/mailx-support-20030215/Makefile deleted file mode 100644 index 46a7c6c80aac..000000000000 --- a/net-mail/mailx-support/files/mailx-support-20030215/Makefile +++ /dev/null @@ -1,35 +0,0 @@ -CC ?= gcc -CFLAGS ?= -pipe -RM ?= rm -INSTALL ?= install - -prefix ?= /usr -libexecdir ?= ${prefix}/libexec -mandir ?= ${prefix}/share/man -infodir ?= ${prefix}/share/info - - -PRODUCTS = lockspool # mail.local - -all: ${PRODUCTS} - -clean: - ${RM} -f ${PRODUCTS} *.o - -mail.local: mail.local.o locking.o open_with_exlock.o - ${CC} ${CFLAGS} -o $@ $^ - -lockspool: lockspool.o locking.o open_with_exlock.o - ${CC} ${CFLAGS} -o $@ $^ - -.c.o: - ${CC} ${CFLAGS} -c -o $@ $^ - -install: all - ${INSTALL} -m 0755 -g 0 -o 0 -d ${libexecdir} - ${INSTALL} -m 0755 -g 0 -o 0 -d ${mandir}/man1 - ${INSTALL} -m 4555 -g 0 -o 0 lockspool ${libexecdir}/lockspool - ${INSTALL} -m 0444 -g 0 -o 0 lockspool.1 ${mandir}/man1 -# ${INSTALL} -m 0555 -g 0 -o 0 mail.local ${libexecdir}/mail.local - - diff --git a/net-mail/mailx-support/files/mailx-support-20030215/locking.c b/net-mail/mailx-support/files/mailx-support-20030215/locking.c deleted file mode 100644 index b8cd3b3b6dfe..000000000000 --- a/net-mail/mailx-support/files/mailx-support-20030215/locking.c +++ /dev/null @@ -1,171 +0,0 @@ -/* $OpenBSD: locking.c,v 1.6 2002/07/03 23:39:03 deraadt Exp $ */ - -/* - * Copyright (c) 1996-1998 Theo de Raadt <deraadt@theos.com> - * Copyright (c) 1996-1998 David Mazieres <dm@lcs.mit.edu> - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the authors may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY - * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL - * THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; - * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef lint -static char rcsid[] = "$OpenBSD: locking.c,v 1.6 2002/07/03 23:39:03 deraadt Exp $"; -#endif /* not lint */ - -#include <sys/param.h> -#include <sys/stat.h> -#include <fcntl.h> -#include <pwd.h> -#include <syslog.h> -#include <time.h> -#include <unistd.h> -#include <errno.h> -#include <stdio.h> -#include <string.h> -#include <stdarg.h> -#include "pathnames.h" -#include "mail.local.h" - -static char lpath[MAXPATHLEN]; - -void -rellock(void) -{ - - if (lpath[0]) - unlink(lpath); -} - -int -getlock(char *name, struct passwd *pw) -{ - struct stat sb, fsb; - int lfd=-1; - char buf[8*1024]; - int tries = 0; - - (void)snprintf(lpath, sizeof lpath, "%s/%s.lock", - _PATH_MAILDIR, name); - - if (stat(_PATH_MAILDIR, &sb) != -1 && - (sb.st_mode & S_IWOTH) == S_IWOTH) { - /* - * We have a writeable spool, deal with it as - * securely as possible. - */ - time_t ctim = -1; - - seteuid(pw->pw_uid); - if (lstat(lpath, &sb) != -1) - ctim = sb.st_ctime; - while (1) { - /* - * Deal with existing user.lock files - * or directories or symbolic links that - * should not be here. - */ - if (readlink(lpath, buf, sizeof buf-1) != -1) { - if (lstat(lpath, &sb) != -1 && - S_ISLNK(sb.st_mode)) { - seteuid(sb.st_uid); - unlink(lpath); - seteuid(pw->pw_uid); - } - goto again; - } - if ((lfd = open(lpath, O_CREAT|O_WRONLY|O_EXCL|O_EXLOCK, - S_IRUSR|S_IWUSR)) != -1) - break; -again: - if (tries > 10) { - merr(NOTFATAL, "%s: %s", lpath, - strerror(errno)); - seteuid(0); - return(-1); - } - if (tries > 9 && - (lfd = open(lpath, O_WRONLY|O_EXLOCK, 0)) != -1) { - if (fstat(lfd, &fsb) != -1 && - lstat(lpath, &sb) != -1) { - if (fsb.st_dev == sb.st_dev && - fsb.st_ino == sb.st_ino && - ctim == fsb.st_ctime ) { - seteuid(fsb.st_uid); - baditem(lpath); - seteuid(pw->pw_uid); - } - } - } - sleep(1 << tries); - tries++; - continue; - } - seteuid(0); - } else { - /* - * Only root can write the spool directory. - */ - while (1) { - if ((lfd = open(lpath, O_CREAT|O_WRONLY|O_EXCL, - S_IRUSR|S_IWUSR)) != -1) - break; - if (tries > 9) { - merr(NOTFATAL, "%s: %s", lpath, strerror(errno)); - return(-1); - } - sleep(1 << tries); - tries++; - } - } - return(lfd); -} - -void -baditem(char *path) -{ - char npath[MAXPATHLEN]; - - if (unlink(path) == 0) - return; - snprintf(npath, sizeof npath, "%s/mailXXXXXXXXXX", _PATH_MAILDIR); - if (mktemp(npath) == NULL) - return; - if (rename(path, npath) == -1) - unlink(npath); - else - merr(NOTFATAL, "nasty spool item %s renamed to %s", - path, npath); - /* XXX if we fail to rename, another attempt will happen later */ -} - -void -merr(int isfatal, const char *fmt, ...) -{ - va_list ap; - - va_start(ap, fmt); - vsyslog(LOG_ERR, fmt, ap); - va_end(ap); - if (isfatal) - exit(1); -} diff --git a/net-mail/mailx-support/files/mailx-support-20030215/lockspool.1 b/net-mail/mailx-support/files/mailx-support-20030215/lockspool.1 deleted file mode 100644 index e69de29bb2d1..000000000000 --- a/net-mail/mailx-support/files/mailx-support-20030215/lockspool.1 +++ /dev/null diff --git a/net-mail/mailx-support/files/mailx-support-20030215/lockspool.c b/net-mail/mailx-support/files/mailx-support-20030215/lockspool.c deleted file mode 100644 index 8f392dea89cb..000000000000 --- a/net-mail/mailx-support/files/mailx-support-20030215/lockspool.c +++ /dev/null @@ -1,110 +0,0 @@ -/* $OpenBSD: lockspool.c,v 1.8 2002/07/03 23:39:03 deraadt Exp $ */ - -/* - * Copyright (c) 1998 Theo de Raadt <deraadt@theos.com> - * Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com> - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the authors may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY - * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL - * THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; - * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef lint -static const char rcsid[] = "$OpenBSD: lockspool.c,v 1.8 2002/07/03 23:39:03 deraadt Exp $"; -#endif /* not lint */ - -#include <sys/signal.h> -#include <pwd.h> -#include <syslog.h> -#include <unistd.h> -#include <errno.h> -#include <stdio.h> -#include "mail.local.h" - -void unhold(int); -void usage(void); - -extern char *__progname; - -int -main(int argc, char *argv[]) -{ - struct passwd *pw; - char *from, c; - int holdfd; - - openlog(__progname, LOG_PERROR, LOG_MAIL); - - if (argc != 1 && argc != 2) - usage(); - if (argc == 2 && getuid() != 0) - merr(FATAL, "you must be root to lock someone else's spool"); - - signal(SIGTERM, unhold); - signal(SIGINT, unhold); - signal(SIGHUP, unhold); - signal(SIGPIPE, unhold); - - if (argc == 2) - from = argv[1]; - else - from = getlogin(); - - if (from) { - pw = getpwnam(from); - if (pw == NULL) - exit (1); - } else { - pw = getpwuid(getuid()); - if (pw) - from = pw->pw_name; - else - exit (1); - } - - holdfd = getlock(from, pw); - if (holdfd == -1) { - write(STDOUT_FILENO, "0\n", 2); - exit (1); - } - write(STDOUT_FILENO, "1\n", 2); - - while (read(0, &c, 1) == -1 && errno == EINTR) - ; - rellock(); - exit (0); -} - -void -unhold(int signo) -{ - - rellock(); - _exit(0); -} - -void -usage(void) -{ - - merr(FATAL, "usage: %s [username]", __progname); -} diff --git a/net-mail/mailx-support/files/mailx-support-20030215/mail.local.8 b/net-mail/mailx-support/files/mailx-support-20030215/mail.local.8 deleted file mode 100644 index 7e330e54cfbc..000000000000 --- a/net-mail/mailx-support/files/mailx-support-20030215/mail.local.8 +++ /dev/null @@ -1,191 +0,0 @@ -.\" $OpenBSD: mail.local.8,v 1.23 2002/03/27 15:45:57 mpech Exp $ -.\" Copyright (c) 1990 The Regents of the University of California. -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. All advertising materials mentioning features or use of this software -.\" must display the following acknowledgement: -.\" This product includes software developed by the University of -.\" California, Berkeley and its contributors. -.\" 4. Neither the name of the University nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" from: @(#)mail.local.8 6.8 (Berkeley) 4/27/91 -.\" -.Dd April 27, 1991 -.Dt MAIL.LOCAL 8 -.Os -.Sh NAME -.Nm mail.local -.Nd store mail in a mailbox -.Sh SYNOPSIS -.Nm mail.local -.Op Fl L -.Op Fl l -.Op Fl f Ar from -.Ar user ... -.Sh DESCRIPTION -.Nm -reads the standard input up to an end-of-file and appends it to each -.Ar user Ns 's -.Pa mail -file. -The -.Ar user -must be a valid user name. -.Pp -The options are as follows: -.Bl -tag -width Ds -.It Fl f Ar from -Specify the sender's name. -.It Fl l -For compatibility, request that files named -.Pa username.lock -be used for locking. -(This is the default behavior.) -.It Fl L -Don't create a -.Pa username.lock -file while locking the spool. -.El -.Pp -Individual mail messages in the mailbox are delimited by an empty -line followed by a line beginning with the string -.Dq "From\&\ " . -A line containing the string -.Dq "From\&\ " , -the sender's name and a timestamp are prepended to each delivered mail message. -A blank line is appended to each message. -A greater-than character -.Pq Ql > -is prepended to any line in the message which could be mistaken for a -.Dq "From\&\ " -delimiter line. -.Pp -Significant efforts have been made to ensure that -.Nm -acts as securely as possible if the spool directory is mode 1777 or 755. -The default of mode 755 is more secure, but it prevents mail clients from using -.Pa username.lock -style locking. -The use of 1777 is more flexible in an NFS shared-spool environment, -so many sites use it. -However, it does carry some risks, such as attackers filling the spool disk. -Some of these problems may be alleviated -by making the spool a separate filesystem, and placing quotas on it. -The use of any mode other than 1777 and 755 for the spool directory is -recommended against but may work properly. -.Pp -The mailbox is always locked using -.Xr flock 2 -while mail is appended. -Unless the -.Fl L -flag is specified, a -.Pa username.lock -file is also used. -.Pp -If the -.Xr biff 1 -service is returned by -.Xr getservbyname 3 , -the biff server is notified of delivered mail. -.Pp -The -.Nm -utility exits 0 on success, and >0 if an error occurs. -.Sh ENVIRONMENT -.Bl -tag -width indent -.It Ev TZ -Used to set the appropriate time zone on the timestamp. -.El -.Sh FILES -.Bl -tag -width /tmp/local.XXXXXXXXXX -compact -.It Pa /tmp/local.XXXXXXXXXX -temporary files -.It Pa /var/mail/user -user's mailbox directory -.El -.Sh SEE ALSO -.Xr biff 1 , -.Xr mail 1 , -.Xr flock 2 , -.Xr getservbyname 3 , -.Xr comsat 8 , -.Xr sendmail 8 -.Sh HISTORY -A superset of -.Nm -(handling mailbox reading as well as mail delivery) appeared in -.At v7 -as the program -.Xr mail 1 . -.Sh BUGS -Since -.Xr sendmail 8 -bases its idea of whether a message has been delivered or not -on the return value from -.Nm mail.local , -using quotas in -.Pa /var/mail -can be problematic. -By default, -.Xr sendmail 8 -will ask -.Nm -to deliver a message to multiple recipients if possible. -This causes problems in a quota environment since a message may be -delivered to some users but not others due to disk quotas. -Even though the message was delivered to some of the recipients, -.Nm -will exit with an exit code > 0, causing -.Xr sendmail 8 -to attempt redelivery later. -That means that some users will keep getting the same message every time -.Xr sendmail 8 -runs its queue. -.Pp -If you are running with disk quotas on -.Pa /var/mail -it is imperative that you unset the -.Dq m -mailer flag for the -.Sq local -mailer. -To do this, locate the line beginning with -.Dq Mlocal -in -.Pa /etc/mail/sendmail.cf -and remove the -.Dq m -from the flags section, denoted by -.Dq F= . -Alternately, you can override the default mailer flags by adding the line: -.Pp -.Dl define(`LOCAL_MAILER_FLAGS', `rn9S')dnl -.Pp -to your -.Dq \.mc -file (this is the source file that is used to generate -.Pa /etc/mail/sendmail.cf ) . - diff --git a/net-mail/mailx-support/files/mailx-support-20030215/mail.local.c b/net-mail/mailx-support/files/mailx-support-20030215/mail.local.c deleted file mode 100644 index da300c66f666..000000000000 --- a/net-mail/mailx-support/files/mailx-support-20030215/mail.local.c +++ /dev/null @@ -1,342 +0,0 @@ -/* $OpenBSD: mail.local.c,v 1.24 2002/07/03 23:39:03 deraadt Exp $ */ - -/*- - * Copyright (c) 1996-1998 Theo de Raadt <deraadt@theos.com> - * Copyright (c) 1996-1998 David Mazieres <dm@lcs.mit.edu> - * Copyright (c) 1990 The Regents of the University of California. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef lint -char copyright[] = -"@(#) Copyright (c) 1990 The Regents of the University of California.\n\ - All rights reserved.\n"; -#endif /* not lint */ - -#ifndef lint -#if 0 -static char sccsid[] = "from: @(#)mail.local.c 5.6 (Berkeley) 6/19/91"; -#else -static char rcsid[] = "$OpenBSD: mail.local.c,v 1.24 2002/07/03 23:39:03 deraadt Exp $"; -#endif -#endif /* not lint */ - -#include <sys/param.h> -#include <sys/stat.h> -#include <sys/socket.h> -#include <netinet/in.h> -#include <sys/signal.h> -#include <syslog.h> -#include <fcntl.h> -#include <netdb.h> -#include <pwd.h> -#include <time.h> -#include <unistd.h> -#include <errno.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include "pathnames.h" -#include "mail.local.h" - -int -main(int argc, char *argv[]) -{ - struct passwd *pw; - int ch, fd, eval, lockfile=1, holdme=0; - uid_t uid; - char *from; - - openlog("mail.local", LOG_PERROR, LOG_MAIL); - - from = NULL; - while ((ch = getopt(argc, argv, "lLdf:r:H")) != -1) - switch (ch) { - case 'd': /* backward compatible */ - break; - case 'f': - case 'r': /* backward compatible */ - if (from) - merr(FATAL, "multiple -f options"); - from = optarg; - break; - case 'l': - lockfile=1; - break; - case 'L': - lockfile=0; - break; - case 'H': - holdme=1; - break; - case '?': - default: - usage(); - } - argc -= optind; - argv += optind; - - /* Support -H flag for backwards compat */ - if (holdme) { - execl(_PATH_LOCKSPOOL, "lockspool", (char *)NULL); - merr(FATAL, "execl: lockspool: %s", strerror(errno)); - } else { - if (!*argv) - usage(); - if (geteuid() != 0) - merr(FATAL, "may only be run by the superuser"); - } - - /* - * If from not specified, use the name from getlogin() if the - * uid matches, otherwise, use the name from the password file - * corresponding to the uid. - */ - uid = getuid(); - if (!from && (!(from = getlogin()) || - !(pw = getpwnam(from)) || pw->pw_uid != uid)) - from = (pw = getpwuid(uid)) ? pw->pw_name : "???"; - - fd = store(from); - for (eval = 0; *argv; ++argv) - eval |= deliver(fd, *argv, lockfile); - exit(eval); -} - -int -store(char *from) -{ - FILE *fp = NULL; - time_t tval; - int fd, eline; - size_t len; - char *line, *tbuf; - - if ((tbuf = strdup(_PATH_LOCTMP)) == NULL) - merr(FATAL, "unable to allocate memory"); - if ((fd = mkstemp(tbuf)) == -1 || !(fp = fdopen(fd, "w+"))) - merr(FATAL, "unable to open temporary file"); - (void)unlink(tbuf); - free(tbuf); - - (void)time(&tval); - (void)fprintf(fp, "From %s %s", from, ctime(&tval)); - - for (eline = 1, tbuf = NULL; (line = fgetln(stdin, &len));) { - /* We have to NUL-terminate the line since fgetln does not */ - if (line[len - 1] == '\n') - line[len - 1] = '\0'; - else { - /* No trailing newline, so alloc space and copy */ - if ((tbuf = malloc(len + 1)) == NULL) - merr(FATAL, "unable to allocate memory"); - memcpy(tbuf, line, len); - tbuf[len++] = '\0'; - line = tbuf; - } - if (line[0] == '\0') - eline = 1; - else { - if (eline && line[0] == 'F' && len > 5 && - !memcmp(line, "From ", 5)) - (void)putc('>', fp); - eline = 0; - } - (void)fprintf(fp, "%s\n", line); - if (ferror(fp)) - break; - } - if (tbuf) - free(tbuf); - - /* Output a newline; note, empty messages are allowed. */ - (void)putc('\n', fp); - (void)fflush(fp); - if (ferror(fp)) - merr(FATAL, "temporary file write error"); - return(fd); -} - -int -deliver(int fd, char *name, int lockfile) -{ - struct stat sb, fsb; - struct passwd *pw; - int mbfd=-1, nr, nw, off, rval=1, lfd=-1; - char biffmsg[100], buf[8*1024], path[MAXPATHLEN]; - off_t curoff; - - /* - * Disallow delivery to unknown names -- special mailboxes can be - * handled in the sendmail aliases file. - */ - if (!(pw = getpwnam(name))) { - merr(NOTFATAL, "unknown name: %s", name); - return(1); - } - - (void)snprintf(path, sizeof path, "%s/%s", _PATH_MAILDIR, name); - - if (lockfile) { - lfd = getlock(name, pw); - if (lfd == -1) - return (1); - } - - /* after this point, always exit via bad to remove lockfile */ -retry: - if (lstat(path, &sb)) { - if (errno != ENOENT) { - merr(NOTFATAL, "%s: %s", path, strerror(errno)); - goto bad; - } - if ((mbfd = open(path, O_APPEND|O_CREAT|O_EXCL|O_WRONLY|O_EXLOCK, - S_IRUSR|S_IWUSR)) < 0) { - if (errno == EEXIST) { - /* file appeared since lstat */ - goto retry; - } else { - merr(NOTFATAL, "%s: %s", path, strerror(errno)); - goto bad; - } - } - /* - * Set the owner and group. Historically, binmail repeated - * this at each mail delivery. We no longer do this, assuming - * that if the ownership or permissions were changed there - * was a reason for doing so. - */ - if (fchown(mbfd, pw->pw_uid, pw->pw_gid) < 0) { - merr(NOTFATAL, "chown %u:%u: %s", - pw->pw_uid, pw->pw_gid, name); - goto bad; - } - } else { - if (sb.st_nlink != 1 || !S_ISREG(sb.st_mode)) { - merr(NOTFATAL, "%s: linked or special file", path); - goto bad; - } - if ((mbfd = open(path, O_APPEND|O_WRONLY|O_EXLOCK, - S_IRUSR|S_IWUSR)) < 0) { - merr(NOTFATAL, "%s: %s", path, strerror(errno)); - goto bad; - } - if (fstat(mbfd, &fsb)) { - /* relating error to path may be bad style */ - merr(NOTFATAL, "%s: %s", path, strerror(errno)); - goto bad; - } - if (sb.st_dev != fsb.st_dev || sb.st_ino != fsb.st_ino) { - merr(NOTFATAL, "%s: changed after open", path); - goto bad; - } - /* paranoia? */ - if (fsb.st_nlink != 1 || !S_ISREG(fsb.st_mode)) { - merr(NOTFATAL, "%s: linked or special file", path); - goto bad; - } - } - - curoff = lseek(mbfd, 0, SEEK_END); - (void)snprintf(biffmsg, sizeof biffmsg, "%s@%qd\n", name, curoff); - if (lseek(fd, 0, SEEK_SET) == (off_t)-1) { - merr(NOTFATAL, "temporary file: %s", strerror(errno)); - goto bad; - } - - while ((nr = read(fd, buf, sizeof(buf))) > 0) - for (off = 0; off < nr; off += nw) - if ((nw = write(mbfd, buf + off, nr - off)) < 0) { - merr(NOTFATAL, "%s: %s", path, strerror(errno)); - (void)ftruncate(mbfd, curoff); - goto bad; - } - - if (nr == 0) { - rval = 0; - } else { - (void)ftruncate(mbfd, curoff); - merr(FATAL, "temporary file: %s", strerror(errno)); - } - -bad: - if (lfd != -1) { - rellock(); - close(lfd); - } - - if (mbfd != -1) { - (void)fsync(mbfd); /* Don't wait for update. */ - (void)close(mbfd); /* Implicit unlock. */ - } - - if (!rval) - notifybiff(biffmsg); - return(rval); -} - -void -notifybiff(char *msg) -{ - static struct sockaddr_in addr; - static int f = -1; - struct hostent *hp; - struct servent *sp; - int len; - - if (!addr.sin_family) { - /* Be silent if biff service not available. */ - if (!(sp = getservbyname("biff", "udp"))) - return; - if (!(hp = gethostbyname("localhost"))) { - merr(NOTFATAL, "localhost: %s", strerror(errno)); - return; - } - addr.sin_len = sizeof(struct sockaddr_in); - addr.sin_family = hp->h_addrtype; - addr.sin_port = sp->s_port; - bcopy(hp->h_addr, &addr.sin_addr, hp->h_length); - } - if (f < 0 && (f = socket(AF_INET, SOCK_DGRAM, 0)) == -1) { - merr(NOTFATAL, "socket: %s", strerror(errno)); - return; - } - len = strlen(msg) + 1; - if (sendto(f, msg, len, 0, (struct sockaddr *)&addr, sizeof(addr)) - != len) - merr(NOTFATAL, "sendto biff: %s", strerror(errno)); -} - -void -usage(void) -{ - merr(FATAL, "usage: mail.local [-lL] [-f from] user ..."); -} diff --git a/net-mail/mailx-support/files/mailx-support-20030215/mail.local.h b/net-mail/mailx-support/files/mailx-support-20030215/mail.local.h deleted file mode 100644 index 13502d047687..000000000000 --- a/net-mail/mailx-support/files/mailx-support-20030215/mail.local.h +++ /dev/null @@ -1,47 +0,0 @@ -/* $OpenBSD: mail.local.h,v 1.3 2002/02/16 21:27:30 millert Exp $ */ - -/*- - * Copyright (c) 1990 The Regents of the University of California. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#define FATAL 1 -#define NOTFATAL 0 - -void baditem(char *); -int deliver(int, char *, int); -void merr(int, const char *, ...); -int getlock(char *, struct passwd *); -void notifybiff(char *); -void rellock(void); -int store(char *); -void usage(void); - diff --git a/net-mail/mailx-support/files/mailx-support-20030215/open_with_exlock.c b/net-mail/mailx-support/files/mailx-support-20030215/open_with_exlock.c deleted file mode 100644 index b844d20b5484..000000000000 --- a/net-mail/mailx-support/files/mailx-support-20030215/open_with_exlock.c +++ /dev/null @@ -1,13 +0,0 @@ -#include <fcntl.h> - -int open_with_exlock(const char *path, int flags, mode_t mode) -{ - int fd; - fd = open(path, flags, mode); - if (fd == -1) - return -1; - if (flock(fd, LOCK_EX) == -1) - return -1; - return fd; -} - diff --git a/net-mail/mailx-support/files/mailx-support-20030215/open_with_exlock.h b/net-mail/mailx-support/files/mailx-support-20030215/open_with_exlock.h deleted file mode 100644 index 25a16a8f4e13..000000000000 --- a/net-mail/mailx-support/files/mailx-support-20030215/open_with_exlock.h +++ /dev/null @@ -1,3 +0,0 @@ -#include <sys/types.h> - -int open_with_exlock(const char *path, int flags, mode_t mode); diff --git a/net-mail/mailx-support/files/mailx-support-20030215/pathnames.h b/net-mail/mailx-support/files/mailx-support-20030215/pathnames.h deleted file mode 100644 index e8787bdd6db1..000000000000 --- a/net-mail/mailx-support/files/mailx-support-20030215/pathnames.h +++ /dev/null @@ -1,40 +0,0 @@ -/* $OpenBSD: pathnames.h,v 1.4 2001/01/28 19:34:30 niklas Exp $*/ - -/*- - * Copyright (c) 1990 The Regents of the University of California. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * from: @(#)pathnames.h 5.3 (Berkeley) 1/17/91 - */ -#include <paths.h> - -#define _PATH_LOCTMP "/tmp/local.XXXXXXXXXX" -#define _PATH_LOCKSPOOL "/usr/libexec/lockspool" |