~ubuntu-branches/ubuntu/trusty/mh-book/trusty

« back to all changes in this revision

Viewing changes to download/split/mh/bin/pickthis

  • Committer: Bazaar Package Importer
  • Author(s): Peter S Galbraith
  • Date: 2001-03-26 12:42:56 UTC
  • Revision ID: james.westby@ubuntu.com-20010326124256-philz6gf517qz8bo
Tags: upstream-9910
ImportĀ upstreamĀ versionĀ 9910

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#! /bin/sh
 
2
# $Id: pickthis 1.11 1997/06/06 04:16:35 jpeek book4 $
 
3
### pickthis - search messages (default: all) for one with same subject
 
4
### Usage: pickthis [+search-folder|@search-folder] [msgs to search]
 
5
##
 
6
##  pickthis GRABS THE Subject: HEADER FIELD FROM THE CURRENT MESSAGE,
 
7
##  STRIPS OFF ANY Re:, RE:, ETC. FROM THE FRONT OF THE SUBJECT,
 
8
##  THEN SEARCHES FOR OTHER MESSAGES WITH THAT SUBJECT.  
 
9
##  IT STORES THE LIST OF MESSAGES IN THE SEQUENCE NAMED picked
 
10
##  (SO YOU CAN USE THEM LATER); IT scanS THE SEQUENCE BEFORE IT QUITS.
 
11
##
 
12
##  BY DEFAULT, pickthis SEARCHES ALL MESSAGES IN THE CURRENT FOLDER.
 
13
##  WITH A LIST OF MESSAGES (EXAMPLE: pickthis cur:50), IT'LL SEARCH THOSE.
 
14
##  IF YOU NAME A FOLDER, IT'LL GET THE SUBJECT OF THE CURRENT MESSAGE
 
15
##  IN THE *CURRENT* FOLDER, THEN SEARCH FOR THAT MESSAGE IN THE NAMED
 
16
##  FOLDER.  FOR EXAMPLE, IF THE CURRENT MESSAGE SUBJECT IS "bar baz",
 
17
##  YOU CAN CHECK FOR MESSAGES WITH THE SAME SUBJECT IN YOUR "old"
 
18
##  FOLDER BY TYPING pickthis +old -- IF THERE ARE MATCHES, pickthis
 
19
##  WILL CHANGE YOUR CURRENT FOLDER TO +old, ELSE IT STAYS THE SAME.
 
20
##
 
21
##  BUG: pick WILL FIND A MESSAGE SUBJECT *CONTAINING* THE SUBJECT YOU'RE
 
22
##  LOOKING FOR.  FOR EXAMPLE, IF THE CURRENT MESSAGE SUBJECT IS "exmh",
 
23
##  pickthis WILL ALSO FIND MESSAGES WITH THE SUBJECT "xmh vs. exmh", ETC.
 
24
##  I DON'T KNOW HOW TO CHANGE THE WAY THAT pick WORKS. :-(
 
25
#
 
26
#   USE AT YOUR OWN RISK.  SEEMS TO WORK, BUT IT'S YOUR RESPONSIBILITY!
 
27
#   PLEASE TELL ME ABOUT BUGS AND FIXES: Jerry Peek, jpeek@jpeek.com
 
28
 
29
#                             NO WARRANTY
 
30
 
31
#   BECAUSE THIS PROGRAM IS AVAILABLE FREE OF CHARGE, THERE IS NO WARRANTY
 
32
# FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
 
33
# OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
 
34
# PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
 
35
# OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 
36
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
 
37
# TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
 
38
# PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
 
39
# REPAIR OR CORRECTION.
 
40
 
41
#   IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
 
42
# WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
 
43
# REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
 
44
# INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
 
45
# OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
 
46
# TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
 
47
# YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
 
48
# PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
 
49
# POSSIBILITY OF SUCH DAMAGES.
 
50
 
 
51
 
 
52
myname="`basename $0`"  # NAME OF THIS SCRIPT WITHOUT LEADING PATH
 
53
 
 
54
msg=`mhpath cur`
 
55
# IF mhpath RETURNED ZERO STATUS AND THE START OF A PATHNAME, OK.
 
56
# ELSE, COMPLAIN:
 
57
case "$?$msg" in
 
58
0/?*) ;;
 
59
*)  echo "$myname quitting: can't get current message?" 1>&2
 
60
    exit 1
 
61
    ;;
 
62
esac
 
63
 
 
64
# GET SUBJECT OF THIS MESSAGE WITHOUT ANY Re: ON FRONT.
 
65
# scan SQUEEZES MULTIPLE SPACES TO ONE SPACE, SO WE CAN'T USE IT. :-(
 
66
# THIS DOESN'T HANDLE MULTI-LINE SUBJECTS...
 
67
# ESCAPE METACHARACTERS LIKE [, ], ETC. FOR pick:
 
68
subj=`sed -n -e '
 
69
    1,/^$/ {
 
70
        /^[Ss][Uu][Bb][Jj][Ee][Cc][Tt]:[    ]*/ {
 
71
            s///
 
72
            /^[Rr][Ee]:/ {
 
73
            :rezap
 
74
                    s/^[Rr][Ee]: *//
 
75
                    /^[Rr][Ee]:/b rezap
 
76
            }
 
77
            s/[][*.$^\\]/\\\\&/g
 
78
            p
 
79
            q
 
80
        }
 
81
    }' "$msg"`
 
82
# IF sed RETURNED ZERO STATUS AND AT LEAST ONE CHARACTER IN $subj, OK.
 
83
case "$?$subj" in
 
84
0?*) ;;
 
85
*)  echo "$myname quitting: can't find subject of current message?" 1>&2
 
86
    exit 1
 
87
    ;;
 
88
esac
 
89
 
 
90
# SEARCH FOR MESSAGE AND scan IF WE FOUND ANY.  DEFAULT TO all MSGS IN FOLDER.
 
91
# (THE WEIRD ${1+"$@"} GETS ANY ARGS AND WORKS AROUND A PROBLEM IN EARLY sh'S.)
 
92
if pick -subject "$subj" ${1+"$@"} -seq picked
 
93
then
 
94
    # THIS exitS WITH scan'S EXIT STATUS:
 
95
    scan picked
 
96
    exit
 
97
else
 
98
    exit 1
 
99
fi