rmmproc.message.id. Added mention of it to rmm man page.
- # rmmproc.messageid -- tries to back up a message/file to a file that's
- # named based on Message ID
+ # rmmproc.messageid -- tries to back up each message/file to a file
+ # that's named based on Message ID
#
# This code is Copyright (c) 2013, by the authors of nmh.
# See the COPYRIGHT file in the root directory of the nmh
# distribution for complete copyright information.
#
#
# This code is Copyright (c) 2013, by the authors of nmh.
# See the COPYRIGHT file in the root directory of the nmh
# distribution for complete copyright information.
#
- # If called on a message, the current directory is the
- # message folder and $1 is the message filename.
- # If called on a file, $1 is the full path to the file.
+ # If called on messages, the current directory is the message folder
+ # and the scripts arguments are is the message filenames. If called
+ # on files, the arguments are the full paths to the files.
#
# The backup directory will be:
#
# The backup directory will be:
- # 1) If input is a message, the folder of the message.
- # 2) If input is a file, the directory of the file.
+ # 1) If input is messages, the folder of the messages.
+ # 2) If input is files, the directories of the files.
# 3) If input is standard input (-), the user's MHPATH directory.
#
# 3) If input is standard input (-), the user's MHPATH directory.
#
- # The backup filename will be:
+ # Each backup filename will be:
# 1) Message-ID with all / and \ converted to periods.
# 1) Message-ID with all / and \ converted to periods.
- # Message-IDs should not contain \, but some
- # filesystems can't handle them. Message-IDs should
- # be unique, so there should be no need to backup a
- # file with the same name, especially if the result of
- # malicious action. If the backup file already
+ # Message-IDs should not contain \, but some filesystems can't
+ # handle them. Message-IDs should be unique, so there should be
+ # no need to backup a file with the same name, especially if the
+ # result of malicious action. If the backup file already
- # NOTE: conversion of some characters in the filename
- # could result in an unintended name collision. If
- # that is a concern, a program that uses mktemp(3) to
- # create a temporary file might be the basis for a
- # remedy.
- #
+ # NOTE: conversion of some characters in the filename could
+ # result in an unintended name collision. If that is a concern,
+ # a program that uses mktemp(3) to create a temporary file might
+ # be the basis for a remedy.
# 2) Concatenation of BACKUP_PREFIX and input filename.
# 2) Concatenation of BACKUP_PREFIX and input filename.
- # NOTE: if a file of that name already exists in the
- # destination directory, it will be overwritten by the
- # mv below.
- #
+ # NOTE: if a file of that name already exists in the destination
+ # directory, it will be overwritten by the mv below.
-if [ "$1" = - ]; then
- #### Input is stdin; put backup in user's MHPATH directory.
- dir=`mhparam path`
- #### If Path is relative, prepend home directory.
- [ `dirname "$dir"` = . ] && dir="$HOME/$dir"
-else
- dir=`dirname "$1"`
-fi
+for i in "$@"; do
+ if [ "$i" = - ]; then
+ #### Input is stdin; put backup in user's MHPATH directory.
+ dir=`mhparam path`
+ #### If Path is relative, prepend home directory.
+ [ `dirname "$dir"` = . ] && dir="$HOME/$dir"
+ else
+ dir=`dirname "$i"`
+ fi
+
+ #### Extract first Message-Id, remove <>, substitute / and \.
+ messageid=`sed -n '
+ /^$/q; /^[Mm][Ee][Ss][Ss][Aa][Gg][Ee]-[Ii][Dd]:/!d
+ s/>.*//; s/.*<//; y#/\\\#..#; p
+ ' "$i"`
-#### Extract first Message-Id, remove <>, substitute / and \.
-messageid=`sed -n '
- /^$/q; /^[Mm][Ee][Ss][Ss][Aa][Gg][Ee]-[Ii][Dd]:/!d
- s/>.*//; s/.*<//; y#/\\\#..#; p
- ' "$1"`
+ if [ "$messageid" -a ! -f "$dir/$messageid" ]; then
+ filename="$dir/$messageid"
+ else
+ #### `mhparam sbackup` is usually ',' but depends on configuration.
+ filename="$dir"/`mhparam sbackup``basename "$i"`
+ fi
-if [ "$messageid" -a ! -f "$dir/$messageid" ]; then
- filename="$dir/$messageid"
-else
- filename="$dir"/`mhparam sbackup``basename "$1"`
-fi
+ mv "$i" "$filename" || status=1
+done
-#### If unable to backup the message, exit with status 1.
-mv "$1" "$filename"
-.TH RMM %manext1% "November 9, 2010" "%nmhversion%"
+.TH RMM %manext1% "February 13, 2013" "%nmhversion%"
the named program or script to handle the files that represent the
messages to be deleted.
.PP
the named program or script to handle the files that represent the
messages to be deleted.
.PP
+An example of a
+.I rmmproc
+script that saves a message based in its Message-ID is provided in
+%etcdir%/rmmproc.messageid. To enable it, simply add a
+.I rmmproc
+component that names it to your profile.
+.PP
Some users of
.B csh
prefer the following:
Some users of
.B csh
prefer the following: