]> git.marmaro.de Git - mmh/commitdiff
Removed rcvtty.
authormarkus schnalke <meillo@marmaro.de>
Fri, 10 Feb 2012 09:56:19 +0000 (10:56 +0100)
committermarkus schnalke <meillo@marmaro.de>
Fri, 10 Feb 2012 09:56:19 +0000 (10:56 +0100)
Its use cases disappeared over time. And as asyncron notifications rip you out
of your working flow, you usually don't want to have them. If you need this
function though, then you can make use of write(1).

docs/COMPLETION-BASH
man/Makefile.in
man/mh-chart.man1
man/mmh-intro.man7
man/rcvdist.man1
man/rcvpack.man1
man/rcvstore.man1
man/rcvtty.man1 [deleted file]
man/slocal.man1
uip/Makefile.in
uip/rcvtty.c [deleted file]

index bc3ac32c4287b30c9cfde35039f3621f213f8e6e..926def428bfc7b8d18d7281993de03d45780eccd 100644 (file)
@@ -157,4 +157,4 @@ _nmh()
     COMPREPLY=( $( compgen -W "${options[*]}" -- $current ) )
     return 0
 }
-[ "$have" ] && complete -F _nmh ali anno burst comp dist flist flists folder folders forw inc mark mhbuild mhl mhlist mhmail mhparam mhpath mhshow mhstore msgchk next packf pick prev prompter rcvdist rcvpack rcvstore rcvtty  refile repl rmf rmm scan send sendfiles show slocal sortm whatnow
+[ "$have" ] && complete -F _nmh ali anno burst comp dist flist flists folder folders forw inc mark mhbuild mhl mhlist mhmail mhparam mhpath mhshow mhstore msgchk next packf pick prev prompter rcvdist rcvpack rcvstore refile repl rmf rmm scan send sendfiles show slocal sortm whatnow
index 8998184a462169b228cd012e9ccf51390731e961..0d8631b987038ae2716dac01dde9b9e5265fcfae 100644 (file)
@@ -52,7 +52,7 @@ MAN1SRC = ali. anno. burst. comp. dist. flist. flists. folder. folders.    \
        forw. inc. mark. mh-chart. mhbuild. mhl. mhlist. mmh.               \
        mhmail. mhparam. mhpath. mhshow. mhstore. msgchk. new. fnext.       \
        fprev. unseen. next. packf. pick. prev. prompter. rcvdist. rcvpack. \
-       rcvstore. rcvtty. refile. repl. rmf. rmm. scan. send. sendfiles.    \
+       rcvstore. refile. repl. rmf. rmm. scan. send. sendfiles.    \
        show. slocal. sortm. whatnow.
 
 MAN5SRC = mh-alias. mh-format. mh-mail. mh-profile. mh-tailor.
index 25e27af66612a6d4d628dcf9333439fc59d73fc1..4da409400c0c918f9bb4e67d35fcc2a4b1ce26f7 100644 (file)
@@ -478,19 +478,6 @@ or
 .RB [ \-version ]
 .RB [ \-help ]
 
-.HP 5
-.B %libdir%/rcvtty
-.RI [ command ]
-.RB [ \-form
-.IR formatfile ]
-.RB [ \-width
-.IR columns ]
-.RB [ \-bell " | " \-nobell ]
-.RB [ \-newline " | " \-nonewline ]
-.RB [ \-biff ]
-.RB [ \-version ]
-.RB [ \-help ]
-
 .HP 5
 .B refile
 .RI [ msgs ]
index bddbda91787ad8fc489db955514e285d2432cec6..84bdc445ca05485af8175362b2b28280c241067d 100644 (file)
@@ -210,7 +210,6 @@ commands:
 ^rcvdist(1)~^\- asynchronously redistribute new mail
 ^rcvpack(1)~^\- append message to file
 ^rcvstore(1)~^\- asynchronously incorporate new mail
-^rcvtty(1)~^\- report new mail
 ^refile(1)~^\- file messages in other folders
 ^repl(1)~^\- reply to a message
 ^rmf(1)~^\- remove folder
index 21bc1dce4bf1da8e75fb717270cf1f2c1f8e81c9..66b4382049fc77ddaf9406447abf13056b81a446 100644 (file)
@@ -75,7 +75,7 @@ profile component.
 .fi
 
 .SH "SEE ALSO"
-rcvpack(1), rcvstore(1), rcvtty(1), mh\-format(5), slocal(1)
+rcvpack(1), rcvstore(1), mh\-format(5), slocal(1)
 
 .SH BUGS
 Only two return codes are meaningful, others should be.
index 55305f2d48931121e259b552a2871f6b0911a2d7..9ca59a256e5f4c3d4b92fc59d330bba9c980cf90 100644 (file)
@@ -40,7 +40,7 @@ shell scripts.
 .fi
 
 .SH "SEE ALSO"
-rcvdist(1), rcvstore(1), rcvtty(1), slocal(1)
+rcvdist(1), rcvstore(1), slocal(1)
 
 .SH BUGS
 Only two return codes are meaningful, others should be.
index cbc212728c253cc2449a9af63d87f29b0ef2ed2c..571c2fd29c1ac6ed38e32803d38801a4e083355d 100644 (file)
@@ -117,7 +117,7 @@ to force these sequences to be public or private sequences.
 .fi
 
 .SH "SEE ALSO"
-rcvdist(1), rcvpack(1), rcvtty(1), mh\-sequence(7)
+rcvdist(1), rcvpack(1), mh\-sequence(7)
 
 .SH DEFAULTS
 .nf
diff --git a/man/rcvtty.man1 b/man/rcvtty.man1
deleted file mode 100644 (file)
index b3112dd..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-.\"
-.\" %nmhwarning%
-.\"
-.TH RCVTTY %manext1% "%nmhdate%" MH.6.8 [%nmhversion%]
-.SH NAME
-rcvtty  \- report new mail
-.SH SYNOPSIS
-.HP 5
-.na
-.B %libdir%/rcvtty
-.RI [ command ]
-.RB [ \-form
-.IR formatfile ]
-.RB [ \-width
-.IR columns ]
-.RB [ \-bell " | " \-nobell ]
-.RB [ \-newline " | " \-nonewline ]
-.RB [ \-biff ]
-.RB [ \-version ]
-.RB [ \-help ]
-.ad
-.SH DESCRIPTION
-The
-.B rcvtty
-can be used to report new mail.  It is used primarily
-in conjunction with mail filtering agents such as
-.B slocal
-or
-.BR procmail .
-.PP
-The
-.B rcvtty
-program executes the named command with the message as
-its standard input, and writes the resulting output on your terminal.
-.PP
-Alternately, if no command is specified (or is bogus), then
-.B rcvtty
-will instead write a one\-line scan listing.  The default output format
-of this scan listing may be overridden by using the
-.B \-form
-.I formatfile
-option, similar to the
-equivalent options for
-.B scan
-and
-.BR inc .
-See
-.BR mh\-format (5)
-for details.
-.PP
-A newline is output before the message output, and the terminal bell is
-rung after the output.  The
-.B \-nonewline
-and
-.B \-nobell
-options will
-inhibit these functions.
-.PP
-The switch
-.B \-width
-.I columns
-may be given to specify the width of
-the scan line.  The default is to use the width of the terminal.
-.PP
-In addition to the standard format escapes described in
-.BR mh\-format (5),
-.B rcvtty
-also recognizes the following additional
-.I component
-escapes:
-.PP
-.RS 5
-.nf
-.ta \w'Dtimenow  'u +\w'Returns  'u
-Escape Returns Description
-body   string  the (compressed) first part of the body
-dtimenow       date    the current date
-folder string  the name of the current folder
-.fi
-.RE
-.PP
-By default,
-.B rcvtty
-will send its output to every terminal on the
-local machine that is owned by current user, and that has given write
-permission as granted by the command
-.BR mesg (1).
-If the option
-.B \-biff
-is given, then
-.B rcvtty
-will obey the notification status
-set by the command
-.BR biff (1)
-instead.
-
-.SH FILES
-.fc ^ ~
-.nf
-.ta \w'%etcdir%/ExtraBigFileName  'u
-^$HOME/\&.maildelivery~^The file controlling local delivery
-^%etcdir%/maildelivery~^Rather than the standard file
-.fi
-
-.SH CONTEXT
-None
-
-.SH DEFAULTS
-.nf
-.RB ` \-width "' defaults to the width of the terminal"
-.RB ` \-newline '
-.RB ` \-bell '
-.fi
-
-.SH "SEE ALSO"
-rcvdist(1), rcvpack(1), rcvstore(1), mh\-format(5), slocal(1)
-
-.SH BUGS
-Only two return codes are meaningful, others should be.
index 200d280c75080b9dd3ec7554a019b9d93692028e..6421714d0dcb0ee1b161fd702c5beda8916bc1b9 100644 (file)
@@ -315,9 +315,6 @@ From      steve     destroy A       \-
 
 # Put anything not matched yet into mailbox
 default   \-        file    ?       mailbox
-
-# always run rcvtty
-*         \-        pipe    R       %libdir%/rcvtty
 .fi
 
 .SS "Sub-process environment"
@@ -363,7 +360,7 @@ quicker delivery into your maildrop.
 .fi
 
 .SH "SEE ALSO"
-rcvdist(1), rcvpack(1), rcvstore(1), rcvtty(1), mh\-format(5)
+rcvdist(1), rcvpack(1), rcvstore(1), mh\-format(5)
 
 .SH DEFAULTS
 .nf
index 09e39ed66d31dc0caa3d174c732784c7b52944e0..711fd39bd53c0305d3b672d4ba57a8efe4b6ef42 100644 (file)
@@ -59,7 +59,7 @@ LCMDS = flists folders next prev
 
 # misc support binaries
 MISC = ap conflict dp fmtdump rcvdist rcvpack \
-       rcvstore rcvtty slocal spost mhtest
+       rcvstore slocal spost mhtest
 
 # commands with 'S'pecial installation needs
 SCMDS = inc
@@ -72,7 +72,7 @@ SRCS = ali.c aliasbr.c anno.c annosbr.c ap.c burst.c comp.c \
        mhlsbr.c mhmail.c mhmisc.c mhoutsbr.c mhparam.c mhparse.c \
        mhpath.c mhshow.c mhshowsbr.c mhstore.c mhstoresbr.c mhtest.c \
        msgchk.c new.c packf.c pick.c picksbr.c \
-       prompter.c rcvdist.c rcvpack.c rcvstore.c rcvtty.c \
+       prompter.c rcvdist.c rcvpack.c rcvstore.c \
        refile.c repl.c rmf.c rmm.c scan.c scansbr.c send.c \
        sendfiles.sh show.c slocal.c sortm.c spost.c termsbr.c \
        whatnow.c whatnowproc.c
@@ -186,9 +186,6 @@ rcvpack: rcvpack.o dropsbr.o $(LOCALLIBS)
 rcvstore: rcvstore.o $(LOCALLIBS)
        $(LINK) rcvstore.o $(LINKLIBS)
 
-rcvtty: rcvtty.o scansbr.o termsbr.o $(LOCALLIBS)
-       $(LINK) rcvtty.o scansbr.o termsbr.o $(LINKLIBS) $(TERMLIB)
-
 refile: refile.o $(LOCALLIBS)
        $(LINK) refile.o $(LINKLIBS)
 
diff --git a/uip/rcvtty.c b/uip/rcvtty.c
deleted file mode 100644 (file)
index 8166dc9..0000000
+++ /dev/null
@@ -1,333 +0,0 @@
-/*
-** rcvtty.c -- a rcvmail program (a lot like rcvalert) handling IPC ttys
-**
-** This code is Copyright (c) 2002, by the authors of nmh.  See the
-** COPYRIGHT file in the root directory of the nmh distribution for
-** complete copyright information.
-*/
-
-/* Changed to use getutent() and friends.  Assumes that when getutent() exists,
-** a number of other things also exist.  Please check.
-** Ruud de Rooij <ruud@ruud.org>  Sun, 28 May 2000 17:28:55 +0200
-*/
-
-#include <h/mh.h>
-#include <h/signals.h>
-#include <h/rcvmail.h>
-#include <h/scansbr.h>
-#include <h/tws.h>
-#include <signal.h>
-#include <fcntl.h>
-
-#include <utmp.h>
-
-#ifndef HAVE_GETUTENT
-# ifndef UTMP_FILE
-#  ifdef _PATH_UTMP
-#   define UTMP_FILE _PATH_UTMP
-#  else
-#   define UTMP_FILE "/etc/utmp"
-#  endif
-# endif
-#endif
-
-#define SCANFMT \
-"=%2(hour{dtimenow}):%02(min{dtimenow}): %<(size)%5(size) %>%<{encrypted}E%>\
-%<(mymbox{from})%<{to}To:%14(friendly{to})%>%>%<(zero)%17(friendly{from})%>  \
-%{subject}"
-
-static struct swit switches[] = {
-#define BIFFSW  0
-       { "biff", 0 },
-#define FORMSW  1
-       { "form formatfile", 0 },
-#define WIDTHSW 2
-       { "width columns", 0 },
-#define NLSW  3
-       { "newline", 0 },
-#define NNLSW   4
-       { "nonewline", 0 },
-#define BELSW  5
-       { "bell", 0 },
-#define NBELSW  6
-       { "nobell", 0 },
-#define VERSIONSW 7
-       { "version", 0 },
-#define HELPSW  8
-       { "help", 0 },
-       { NULL, 0 }
-};
-
-static jmp_buf myctx;
-static int bell = 1;
-static int newline = 1;
-static int biff = 0;
-static int width = 0;
-static char *form = NULL;
-
-/*
-** static prototypes
-*/
-static RETSIGTYPE alrmser(int);
-static int message_fd(char **);
-static int header_fd(void);
-static void alert(char *, int);
-
-
-int
-main(int argc, char **argv)
-{
-       int md, vecp = 0;
-       char *cp, *user, buf[BUFSIZ], tty[BUFSIZ];
-       char **argp, **arguments, *vec[MAXARGS];
-#ifdef HAVE_GETUTENT
-       struct utmp * utp;
-#else
-       struct utmp ut;
-       register FILE *uf;
-#endif
-
-#ifdef LOCALE
-       setlocale(LC_ALL, "");
-#endif
-       invo_name = mhbasename(argv[0]);
-
-       /* read user profile/context */
-       context_read();
-
-       arguments = getarguments(invo_name, argc, argv, 1);
-       argp = arguments;
-
-       while ((cp = *argp++)) {
-               if (*cp == '-') {
-                       switch (smatch(++cp, switches)) {
-                       case AMBIGSW:
-                               ambigsw(cp, switches);
-                               done(1);
-                       case UNKWNSW:
-                               vec[vecp++] = --cp;
-                               continue;
-
-                       case HELPSW:
-                               snprintf(buf, sizeof(buf), "%s [command ...]",
-                                               invo_name);
-                               print_help(buf, switches, 1);
-                               done(1);
-                       case VERSIONSW:
-                               print_version(invo_name);
-                               done(1);
-
-                       case BIFFSW:
-                               biff = 1;
-                               continue;
-
-                       case FORMSW:
-                               if (!(form = *argp++) || *form == '-')
-                                       adios(NULL, "missing argument to %s",
-                                                       argp[-2]);
-                               continue;
-
-                       case WIDTHSW:
-                               if (!(cp = *argp++) || *cp == '-')
-                                       adios(NULL, "missing argument to %s",
-                                                       argp[-2]);
-                               width = atoi(cp);
-                               continue;
-                       case NLSW:
-                               newline = 1;
-                               continue;
-                       case NNLSW:
-                               newline = 0;
-                               continue;
-                       case BELSW:
-                               bell = 1;
-                               continue;
-                       case NBELSW:
-                               bell = 0;
-                               continue;
-
-                       }
-               }
-               vec[vecp++] = cp;
-       }
-       vec[vecp] = 0;
-
-       if ((md = vecp ? message_fd(vec) : header_fd()) == NOTOK)
-               exit(RCV_MBX);
-
-       user = getusername();
-
-#ifdef HAVE_GETUTENT
-       setutent();
-       while ((utp = getutent()) != NULL) {
-               if (
-#ifdef HAVE_STRUCT_UTMP_UT_TYPE
-                               utp->ut_type == USER_PROCESS &&
-#endif
-                               utp->ut_name[0] != 0 && utp->ut_line[0] != 0
-                               && strncmp(user, utp->ut_name,
-                               sizeof(utp->ut_name)) == 0) {
-                       strncpy(tty, utp->ut_line, sizeof(utp->ut_line));
-                       alert(tty, md);
-               }
-       }
-       endutent();
-#else
-       if ((uf = fopen(UTMP_FILE, "r")) == NULL)
-               exit(RCV_MBX);
-       while (fread((char *) &ut, sizeof(ut), 1, uf) == 1)
-               if (ut.ut_name[0] != 0 &&
-                               strncmp(user, ut.ut_name, sizeof(ut.ut_name))
-                               == 0) {
-                       strncpy(tty, ut.ut_line, sizeof(ut.ut_line));
-                       alert(tty, md);
-               }
-       fclose(uf);
-#endif
-
-       exit(RCV_MOK);
-       return 0;  /* dead code to satisfy the compiler */
-}
-
-
-static RETSIGTYPE
-alrmser(int i)
-{
-#ifndef RELIABLE_SIGNALS
-       SIGNAL(SIGALRM, alrmser);
-#endif
-
-       longjmp(myctx, 1);
-}
-
-
-static int
-message_fd(char **vec)
-{
-       pid_t child_id;
-       int bytes, fd, seconds;
-       char tmpfil[BUFSIZ];
-       struct stat st;
-
-#ifdef HAVE_MKSTEMP
-       fd = mkstemp(strncpy(tmpfil, "/tmp/rcvttyXXXXX", sizeof(tmpfil)));
-#else
-       unlink(mktemp(strncpy(tmpfil, "/tmp/rcvttyXXXXX", sizeof(tmpfil))));
-       if ((fd = open(tmpfil, O_RDWR | O_CREAT | O_TRUNC, 0600)) == NOTOK)
-               return header_fd();
-#endif
-       unlink(tmpfil);
-
-       if ((child_id = fork()) == NOTOK) {
-               /* fork error */
-               close(fd);
-               return header_fd();
-       } else if (child_id) {
-               /* parent process */
-               if (!setjmp(myctx)) {
-                       SIGNAL(SIGALRM, alrmser);
-                       bytes = fstat(fileno(stdin), &st) != NOTOK ?
-                                       (int) st.st_size : 100;
-
-                       /* amount of time to wait depends on message size */
-                       if (bytes <= 100) {
-                               /* give at least 5 minutes */
-                               seconds = 300;
-                       } else if (bytes >= 90000) {
-                               /* but 30 minutes should be long enough */
-                               seconds = 1800;
-                       } else {
-                               seconds = (bytes / 60) + 300;
-                       }
-                       alarm((unsigned int) seconds);
-                       pidwait(child_id, OK);
-                       alarm(0);
-
-                       if (fstat(fd, &st) != NOTOK && st.st_size > (off_t) 0)
-                               return fd;
-               } else {
-                       /*
-                       ** Ruthlessly kill the child and anything
-                       ** else in its process group.
-                       */
-                       KILLPG(child_id, SIGKILL);
-               }
-               close(fd);
-               return header_fd();
-       }
-
-       /* child process */
-       rewind(stdin);
-       if (dup2(fd, 1) == NOTOK || dup2(fd, 2) == NOTOK)
-               _exit(-1);
-       closefds(3);
-       setpgid((pid_t) 0, getpid());  /* put in own process group */
-       execvp(vec[0], vec);
-       _exit(-1);
-       return 1;  /* dead code to satisfy compiler */
-}
-
-
-static int
-header_fd(void)
-{
-       int fd;
-       char *nfs;
-       char *tfile = NULL;
-
-       tfile = m_mktemp2(NULL, invo_name, &fd, NULL);
-       if (tfile == NULL) return NOTOK;
-       unlink(tfile);
-
-       rewind(stdin);
-
-       /* get new format string */
-       nfs = new_fs(form, SCANFMT);
-       scan(stdin, 0, 0, nfs, width, 0, 0, NULL, 0L, 0);
-       if (newline)
-               write(fd, "\n\r", 2);
-       write(fd, scanl, strlen(scanl));
-       if (bell)
-               write(fd, "\007", 1);
-
-       return fd;
-}
-
-
-static void
-alert(char *tty, int md)
-{
-       int i, td, mask;
-       char buffer[BUFSIZ], ttyspec[BUFSIZ];
-       struct stat st;
-
-       snprintf(ttyspec, sizeof(ttyspec), "/dev/%s", tty);
-
-       /*
-       ** The mask depends on whether we are checking for
-       ** write permission based on `biff' or `mesg'.
-       */
-       mask = biff ? S_IEXEC : (S_IWRITE >> 3);
-       if (stat(ttyspec, &st) == NOTOK || (st.st_mode & mask) == 0)
-               return;
-
-       if (!setjmp(myctx)) {
-               SIGNAL(SIGALRM, alrmser);
-               alarm(2);
-               td = open(ttyspec, O_WRONLY);
-               alarm(0);
-               if (td == NOTOK)
-                       return;
-       } else {
-               alarm(0);
-               return;
-       }
-
-       lseek(md, (off_t) 0, SEEK_SET);
-
-       while ((i = read(md, buffer, sizeof(buffer))) > 0)
-               if (write(td, buffer, i) != i)
-                       break;
-
-       close(td);
-}