Replaced sendfiles with a simpler version that uses send instead of viamail.
authormarkus schnalke <meillo@marmaro.de>
Wed, 8 Feb 2012 16:46:27 +0000 (17:46 +0100)
committermarkus schnalke <meillo@marmaro.de>
Wed, 8 Feb 2012 16:46:27 +0000 (17:46 +0100)
Also moved it from etc/ to uip/. Updated man pages.

Note: The splitting of large messages by sendfile/viamail/or elsewhere
seems not to be available anymore, although it had been documented in the
man page. Either the man pages don't match the code or I've not found this
function yet.

etc/Makefile.in
etc/sendfiles.in [deleted file]
man/mhstore.man1
man/sendfiles.man1
uip/Makefile.in
uip/sendfiles.sh [new file with mode: 0755]

index 5de4e41..10111e7 100644 (file)
@@ -42,12 +42,7 @@ STATIC_FILES = components digestcomps distcomps forwcomps  \
                scan.timely scan.unseen
 
 # templates and scripts from which non-static files are generated
-GENERATED_FILE_SRCS = mhn.defaults.sh mhn.find.sh sendfiles.in
-
-# scripts generated using above GENERATED_FILE_SRCs; don't add binaries
-# to this list, as they'll get installed with INSTALL_SCRIPT and won't
-# be stripped.
-GENERATED_BIN_FILES = sendfiles
+GENERATED_FILE_SRCS = mhn.defaults.sh mhn.find.sh
 
 # non-scripts generated using above GENERATED_FILE_SRCs
 GENERATED_ETC_FILES = mhn.defaults
@@ -60,23 +55,13 @@ DIST = $(STATIC_FILES) $(GENERATED_FILE_SRCS) $(AUX)
 
 # ========= DEPENDENCIES FOR BUILDING ==========
 
-all: $(GENERATED_BIN_FILES) $(GENERATED_ETC_FILES)
+all: $(GENERATED_ETC_FILES)
 
 mhn.defaults: $(srcdir)/mhn.defaults.sh $(MHNSEARCHPROG)
        rm -f $@
        $(srcdir)/mhn.defaults.sh $(MHNSEARCHPATH) $(MHNSEARCHPROG) > $@
 
-sendfiles: $(srcdir)/sendfiles.in Makefile
-       rm -f $@
-       $(SED) -e 's,%libdir%,$(libdir),' < $(srcdir)/sendfiles.in > $@
-
-install: install-bin-files install-etc-files
-
-install-bin-files:
-       $(top_srcdir)/mkinstalldirs $(DESTDIR)$(bindir)
-       for script in $(GENERATED_BIN_FILES); do \
-         $(INSTALL_SCRIPT) $$script $(DESTDIR)$(bindir)/$$script; \
-       done
+install: install-etc-files
 
 install-etc-files:
        $(top_srcdir)/mkinstalldirs $(DESTDIR)$(etcdir)
@@ -98,12 +83,7 @@ install-etc-files:
          fi; \
        done
 
-uninstall: uninstall-bin-files uninstall-etc-files
-
-uninstall-bin-files:
-       for script in $(GENERATED_BIN_FILES); do \
-         rm -f $(DESTDIR)$(bindir)/$$script; \
-       done
+uninstall: uninstall-etc-files
 
 uninstall-etc-files:
        for file in $(STATIC_FILES) $(GENERATED_ETC_FILES); do \
@@ -116,7 +96,7 @@ mostlyclean:
        rm -f *~
 
 clean: mostlyclean
-       rm -f $(GENERATED_ETC_FILES) $(GENERATED_BIN_FILES)
+       rm -f $(GENERATED_ETC_FILES)
 
 distclean: clean
        rm -f Makefile
diff --git a/etc/sendfiles.in b/etc/sendfiles.in
deleted file mode 100755 (executable)
index 5582b2a..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-#!/bin/sh
-#
-# Send multiples files and/or directories as a tar/compressed
-# image, in a MIME message.
-#
-
-FROM=
-
-# compression method (none, gzip or compress)
-METHOD=none
-# compression filter
-COMPRESS=cat
-# uncompression filter
-UNCOMPRESS=cat
-# compression description to append to content-type
-CONVERSION=
-
-# default compression method based on installed software
-# prefer compress over gzip for backward compatibility
-if command -v compress >/dev/null 2>&1 ; then
-    METHOD=compress
-elif command -v gzip >/dev/null 2>&1 ; then
-    METHOD=gzip
-fi
-
-# handle command-line options to override compression method
-while [ $# -gt 3 ]; do
-    case "$1" in
-        -gzip)
-            METHOD=gzip
-            shift
-            ;;
-        -compress)
-            METHOD=compress
-            shift
-            ;;
-        -none)
-            METHOD=none
-            shift
-            ;;
-        *)
-            break
-            ;;
-    esac
-done
-
-# set variables based on chosen compression method
-if [ $METHOD = compress ]; then
-    COMPRESS=compress
-    UNCOMPRESS=uncompress
-    CONVERSION="; x-conversions=compress"
-elif [ $METHOD = gzip ]; then
-    COMPRESS="gzip -c"
-    UNCOMPRESS="gzip -dc"
-    CONVERSION="; x-conversions=gzip"
-fi
-
-if [ ! -z "$PERSON" ]; then
-    FROM="-from $PERSON"
-fi
-
-if [ $# -lt 3 ]; then
-    echo 'usage: sendfiles: "mailpath" "subject-string" directory-or-file ...' 1>&2
-    exit 1;
-fi
-
-mailpath="$1"
-echo "mailpath = $mailpath" 1>&2
-shift
-
-subject="$1"
-echo "subject-string = $subject" 1>&2
-shift
-
-echo "files = $*" 1>&2
-
-tar cvf - "$@" | $COMPRESS | \
-    %libdir%/viamail -to "$mailpath" -subject "$subject" \
-        -parameters "type=tar$CONVERSION" \
-        -comment "extract with $UNCOMPRESS | tar xvpf -" \
-        -verbose $FROM
index ddb43f8..395b76a 100644 (file)
@@ -312,6 +312,48 @@ are combined in the correct order.  But if
 can not
 locate every partial necessary to reassemble the message, it will
 not store anything.
+RE
+.PP
+By using the
+.B \-auto
+switch,
+.B mhstore
+will automatically do the extraction for you:
+.PP
+.RS 5
+.nf
+% mhlist 5-8
+ msg part  type/subtype             size description
+   5       message/partial           47K part 1 of 4
+   6       message/partial           47K part 2 of 4
+   7       message/partial           47K part 3 of 4
+   8       message/partial           18K part 4 of 4
+% mhstore 5-8
+reassembling partials 5,6,7,8 to folder inbox as message 9
+% mhlist -verbose 9
+ msg part  type/subtype             size description
+   9       application/octet-stream 118K
+             (extract with uncompress | tar xvpf -)
+             type=tar
+             conversions=compress
+% mhstore -auto 9
+-- tar listing appears here as files are extracted
+.fi
+.RE
+.PP
+As the second
+.B tar
+listing is generated, the files are extracted.
+A prudent user will never put
+.B \-auto
+in the profile.
+The correct procedure is to first use
+.B mhlist
+to find out what will be extracted.  Then
+.B mhstore
+can be invoked with
+.B \-auto
+to perform the extraction.
 .SS "External Access"
 For contents of type message/external-body,
 \fImhstore\fR supports these access-types:
index a2bf7be..f2015b4 100644 (file)
@@ -3,12 +3,12 @@
 .\"
 .TH SENDFILES %manext1% "%nmhdate%" MH.6.8 [%nmhversion%]
 .SH NAME
-sendfiles \- send multiple files via a MIME message
+sendfiles \- send multiple files in a MIME message
 .SH SYNOPSIS
 .HP
 .na
 .B sendfiles
-.I mailpath
+.I recipient
 .I subject
 .I file1
 .RI [ file2
@@ -18,114 +18,15 @@ sendfiles \- send multiple files via a MIME message
 The shell script
 .BR sendfiles ,
 is used to send a collection
-of files and directories via electronic mail.
-.PP
-.RS 5
-sendfiles mailpath \*(lqsubject\*(rq files\0...
-.RE
-.PP
-.B sendfiles
-will archive the files and directories you name
-with the
-.B tar
-command, and then mail the compressed
-archive to the \*(lqmailpath\*(rq with the given \*(lqsubject\*(rq.
-.PP
-Sometimes you want
-.B sendfiles
-to pause after posting a partial
-message.  This is usually the case when you are running
-.B sendmail
-and expect to generate a lot of partial messages.  If the first
-argument given to
+of files via electronic mail.
 .B sendfiles
-starts with a dash, then it is
-interpreted as the number of seconds to pause in between postings,
-e.g.,
-.PP
-.RS 5
-sendfiles -30 mailpath \*(lqsubject\*(rq files\0...
-.RE
-.PP
-will pause 30 seconds in between each posting.
-.PP
-.SS "Extracting the Received Files"
-When these messages are received, invoke
-.B mhstore
-once for
-the list of messages.  The default is for
-.B mhstore
-to store
-the combined parts as a new message in the current folder, although
-this can be changed using storage formatting strings.  You can then
-use
-.B mhlist
-to find out what's inside; possibly followed by
-.B mhstore
-again to write the archive to a file where you can
-subsequently uncompress and untar it.  For instance:
-.PP
-.RS 5
-.nf
-% mhlist 5-8
- msg part  type/subtype             size description
-   5       message/partial           47K part 1 of 4
-   6       message/partial           47K part 2 of 4
-   7       message/partial           47K part 3 of 4
-   8       message/partial           18K part 4 of 4
-% mhstore 5-8
-reassembling partials 5,6,7,8 to folder inbox as message 9
-% mhlist -verbose 9
- msg part  type/subtype             size description
-   9       application/octet-stream 118K
-             (extract with uncompress | tar xvpf -)
-             type=tar
-             conversions=compress
-% mhstore 9
-% uncompress < 9.tar.Z | tar xvpf -
-.fi
-.RE
-.PP
-Alternately, by using the
-.B \-auto
-switch,
-.B mhstore
-will automatically do the extraction for you:
-.PP
-.RS 5
-.nf
-% mhlist 5-8
- msg part  type/subtype             size description
-   5       message/partial           47K part 1 of 4
-   6       message/partial           47K part 2 of 4
-   7       message/partial           47K part 3 of 4
-   8       message/partial           18K part 4 of 4
-% mhstore 5-8
-reassembling partials 5,6,7,8 to folder inbox as message 9
-% mhlist -verbose 9
- msg part  type/subtype             size description
-   9       application/octet-stream 118K
-             (extract with uncompress | tar xvpf -)
-             type=tar
-             conversions=compress
-% mhstore -auto 9
--- tar listing appears here as files are extracted
-.fi
-.RE
+will mail the files in one message with the given \*(lqsubject\*(rq
+to the \*(lqrecipient\*(rq.
+Take care not to generate too large messages, as there usually are
+size limits enforced by the MTAs.
 .PP
-As the second
-.B tar
-listing is generated, the files are extracted.
-A prudent user will never put
-.B \-auto
-in the profile.
-The correct procedure is to first use
-.B mhlist
-to find out what will be extracted.  Then
-.B mhstore
-can be invoked with
-.B \-auto
-to perform the extraction.
+To extract received files, use
+.B mhstore .
 
 .SH FILES
 .fc ^ ~
@@ -135,23 +36,28 @@ to perform the extraction.
 .fi
 
 .SH "PROFILE COMPONENTS"
-.fc ^ ~
-.nf
-.ta 2.4i
-.ta \w'ExtraBigProfileName  'u
-^Path:~^To determine the user's mail storage
-^Current\-Folder:~^To find the default current folder
-.fi
+None
 
 .SH "SEE ALSO"
-mhbuild(1), mhlist(1), mhshow(1), mhstore(1).
-.I "Proposed Standard for Message Encapsulation"
-(RFC\-934)
+send(1), mhlist(1), mhstore(1).
 
 .SH DEFAULTS
 .nf
-.RB ` \-noverbose '
 .fi
 
 .SH CONTEXT
 None
+
+.SH HISTORY
+.PP
+This is a new and simpler version of
+.B sendfiles ,
+which directly invokes
+.B send .
+The old one had invoked
+.B viamail .
+The old version had been able to send whole directories, be automatically
+tarballing them. This new version is not able to do so.
+The old man page had described some kind of automatical splitting of
+large content into `message/partial' parts. However, it appears as if this
+had been removed earlier, only its documentation remained.
index 1634f7b..b36bc75 100644 (file)
@@ -51,7 +51,7 @@ SETGID_MAIL    = @SETGID_MAIL@
 # commands to build
 CMDS = ali anno burst comp dist flist folder forw mmh mark mhbuild \
        mhlist mhmail mhparam mhpath mhshow mhstore msgchk \
-       new packf pick prompter refile repl rmf rmm scan send show \
+       new packf pick prompter refile repl rmf rmm scan send sendfiles show \
        sortm whatnow
 
 # commands that are links to other commands
@@ -74,7 +74,7 @@ SRCS = ali.c aliasbr.c anno.c annosbr.c ap.c burst.c comp.c \
        msgchk.c new.c packf.c pick.c picksbr.c \
        prompter.c rcvdist.c rcvpack.c rcvstore.c rcvtty.c \
        refile.c repl.c replsbr.c rmf.c rmm.c scan.c scansbr.c send.c \
-       sendsbr.c show.c slocal.c sortm.c spost.c termsbr.c \
+       sendsbr.c sendfiles.sh show.c slocal.c sortm.c spost.c termsbr.c \
        whatnow.c whatnowproc.c
 
 # auxiliary files
@@ -207,6 +207,10 @@ scan: scan.o scansbr.o termsbr.o $(LOCALLIBS)
 send: send.o sendsbr.o annosbr.o distsbr.o $(LOCALLIBS)
        $(LINK) send.o sendsbr.o annosbr.o distsbr.o $(LINKLIBS)
 
+sendfiles: sendfiles.sh
+       cp sendfiles.sh sendfiles
+       chmod +x sendfiles
+
 show: show.o mhlsbr.o termsbr.o $(LOCALLIBS)
        $(LINK) show.o mhlsbr.o termsbr.o $(LINKLIBS) $(TERMLIB)
 
diff --git a/uip/sendfiles.sh b/uip/sendfiles.sh
new file mode 100755 (executable)
index 0000000..40d8f72
--- /dev/null
@@ -0,0 +1,35 @@
+#!/bin/sh
+#
+# Send multiples files non-interactively
+
+# adjust if needed
+attachment_header='Attach'
+
+
+if [ $# -lt 3 ]; then
+    echo 'usage: sendfiles RECIPIENT SUBJECT FILES...' 1>&2
+    exit 1;
+fi
+
+rcpt="$1"
+shift
+subject="$1"
+shift
+
+cat 1>&2 <<!
+Recipient: $rcpt
+Subject:   $subject
+Files:     $*
+!
+
+draft=`mktemp /tmp/sendfiles.XXXXXX`
+trap 'rm -f "$draft"' 1 2 3 15
+cat >"$draft" <<!
+To: $rcpt
+Subject: $subject
+!
+for i in "$@" ; do
+       echo "$attachment_header: $i" >>"$draft"
+done
+
+send "$draft"