annotate miscellany/sortf/sorts @ 12:441a2190cfae

Lion fix
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 21 Apr 2012 13:10:49 +0900
parents bce86c4163a3
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
bce86c4163a3 Initial revision
kono
parents:
diff changeset
1 #! /bin/csh -f
bce86c4163a3 Initial revision
kono
parents:
diff changeset
2
12
441a2190cfae Lion fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
3 # $Header: /Users/kono/src/CVS/mh/miscellany/sortf/sorts,v 1.1.1.1 2005/04/18 14:46:05 kono Exp $
0
bce86c4163a3 Initial revision
kono
parents:
diff changeset
4 #
bce86c4163a3 Initial revision
kono
parents:
diff changeset
5 # ...USE csh BECAUSE OF msgs[1] AND shift msgs FEATURES...
bce86c4163a3 Initial revision
kono
parents:
diff changeset
6 #
bce86c4163a3 Initial revision
kono
parents:
diff changeset
7 #
bce86c4163a3 Initial revision
kono
parents:
diff changeset
8 # Revised Sept. 1989 Mark-Jason Dominus.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
9 #
bce86c4163a3 Initial revision
kono
parents:
diff changeset
10 # New usage: sorts [-[no]verbose] [-[no]fold] [+folder] [msgs]
bce86c4163a3 Initial revision
kono
parents:
diff changeset
11 #
bce86c4163a3 Initial revision
kono
parents:
diff changeset
12
bce86c4163a3 Initial revision
kono
parents:
diff changeset
13 umask 77 # PROTECT TEMPORARY FILE WITH -rw------- MODE
bce86c4163a3 Initial revision
kono
parents:
diff changeset
14 set mhdir = /usr/local/mh
bce86c4163a3 Initial revision
kono
parents:
diff changeset
15 set temp = /tmp/MSORT$$
bce86c4163a3 Initial revision
kono
parents:
diff changeset
16
bce86c4163a3 Initial revision
kono
parents:
diff changeset
17 #
bce86c4163a3 Initial revision
kono
parents:
diff changeset
18 #set theFolder = \
bce86c4163a3 Initial revision
kono
parents:
diff changeset
19 ## '+'`grep '^Current-Folder' $HOME/mail/context | sed -e 's/.*: //'`
bce86c4163a3 Initial revision
kono
parents:
diff changeset
20 #
bce86c4163a3 Initial revision
kono
parents:
diff changeset
21 # Following code installed 13-14 Sept. 1989 M-J. Dominus
bce86c4163a3 Initial revision
kono
parents:
diff changeset
22 #
bce86c4163a3 Initial revision
kono
parents:
diff changeset
23 #Default arguments:
bce86c4163a3 Initial revision
kono
parents:
diff changeset
24 # Which folder to sort? Default = current folder.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
25 set theFolder = `folder -fast`
bce86c4163a3 Initial revision
kono
parents:
diff changeset
26 # Get help? Default: No help.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
27 set helpflag = 0
bce86c4163a3 Initial revision
kono
parents:
diff changeset
28 # Verbose sort? Default: Shut up.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
29 set vflag = 0
bce86c4163a3 Initial revision
kono
parents:
diff changeset
30 # Case-sensitive sort? Default: Yep.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
31 set foldflag = '-f'
bce86c4163a3 Initial revision
kono
parents:
diff changeset
32 # Which messages? Default: all
bce86c4163a3 Initial revision
kono
parents:
diff changeset
33 set theMessages = 'all'
bce86c4163a3 Initial revision
kono
parents:
diff changeset
34
bce86c4163a3 Initial revision
kono
parents:
diff changeset
35 # Add support for an arglist like: sorts 4-6 8 12-23.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
36 # The *FIRST* time you see a nonflag argument, _set_ theMessages = argument.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
37 # *AFTER* the first time, _append_ the argument to theMessages.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
38 set firstMsgArg = 1
bce86c4163a3 Initial revision
kono
parents:
diff changeset
39
bce86c4163a3 Initial revision
kono
parents:
diff changeset
40 #
bce86c4163a3 Initial revision
kono
parents:
diff changeset
41 # .mh_profile lines override default options.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
42 #
bce86c4163a3 Initial revision
kono
parents:
diff changeset
43 #echo "argv before profile is $argv"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
44 set profileLine = `grep -i '^sorts' $HOME/.mh_profile | sed -e 's/.*: //'`
bce86c4163a3 Initial revision
kono
parents:
diff changeset
45 set argv = ($profileLine $argv)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
46 #echo "argv after profile is $argv"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
47
bce86c4163a3 Initial revision
kono
parents:
diff changeset
48 #
bce86c4163a3 Initial revision
kono
parents:
diff changeset
49 # Command-line arguments override .mh_profile and ordinary defaults.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
50 #
bce86c4163a3 Initial revision
kono
parents:
diff changeset
51 while ("$argv" != '')
bce86c4163a3 Initial revision
kono
parents:
diff changeset
52 if ("$1" == '-verbose') then
bce86c4163a3 Initial revision
kono
parents:
diff changeset
53 set vflag = 1
bce86c4163a3 Initial revision
kono
parents:
diff changeset
54 else if ("$1" == '-noverbose') then
bce86c4163a3 Initial revision
kono
parents:
diff changeset
55 set vflag = 0
bce86c4163a3 Initial revision
kono
parents:
diff changeset
56 else if ("$1" == '-fold') then
bce86c4163a3 Initial revision
kono
parents:
diff changeset
57 set foldflag = '-f'
bce86c4163a3 Initial revision
kono
parents:
diff changeset
58 else if ("$1" == '-nofold') then
bce86c4163a3 Initial revision
kono
parents:
diff changeset
59 set foldflag = ''
bce86c4163a3 Initial revision
kono
parents:
diff changeset
60 else if ("$1" =~ +* ) then
bce86c4163a3 Initial revision
kono
parents:
diff changeset
61 # Measure twice, cut once. -D.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
62 set theFolder = `echo $1 | cut -c2-`
bce86c4163a3 Initial revision
kono
parents:
diff changeset
63 else if ("$1" == '-help') then
bce86c4163a3 Initial revision
kono
parents:
diff changeset
64 set helpflag = 1
bce86c4163a3 Initial revision
kono
parents:
diff changeset
65 else
bce86c4163a3 Initial revision
kono
parents:
diff changeset
66 if ("$firstMsgArg" == '1') then
bce86c4163a3 Initial revision
kono
parents:
diff changeset
67 set theMessages = "$1"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
68 set firstMsgArg = 0
bce86c4163a3 Initial revision
kono
parents:
diff changeset
69 else
bce86c4163a3 Initial revision
kono
parents:
diff changeset
70 set theMessages = ($theMessages $1)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
71 endif
bce86c4163a3 Initial revision
kono
parents:
diff changeset
72 endif
bce86c4163a3 Initial revision
kono
parents:
diff changeset
73 shift
bce86c4163a3 Initial revision
kono
parents:
diff changeset
74 end
bce86c4163a3 Initial revision
kono
parents:
diff changeset
75
bce86c4163a3 Initial revision
kono
parents:
diff changeset
76 if ($helpflag) then
bce86c4163a3 Initial revision
kono
parents:
diff changeset
77 cat <<END_OF_HELP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
78 syntax: sorts [+folder] [msgs] [switches]
bce86c4163a3 Initial revision
kono
parents:
diff changeset
79 switches are:
bce86c4163a3 Initial revision
kono
parents:
diff changeset
80 -[no]verbose
bce86c4163a3 Initial revision
kono
parents:
diff changeset
81 -[no]fold
bce86c4163a3 Initial revision
kono
parents:
diff changeset
82 -(help)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
83 END_OF_HELP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
84 exit
bce86c4163a3 Initial revision
kono
parents:
diff changeset
85 endif
bce86c4163a3 Initial revision
kono
parents:
diff changeset
86 # End of 14 Sept. 1989 argument-parsing additions. M-J.D.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
87
bce86c4163a3 Initial revision
kono
parents:
diff changeset
88 # REMOVE GAPS BEFORE SORTING (IGNORE folder'S OUTPUT):
bce86c4163a3 Initial revision
kono
parents:
diff changeset
89 #
bce86c4163a3 Initial revision
kono
parents:
diff changeset
90 # Commented out 14 Sept. 1989 M-J.D.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
91 #
bce86c4163a3 Initial revision
kono
parents:
diff changeset
92 #$mhdir/folder -pack '+'$theFolder >& /dev/null
bce86c4163a3 Initial revision
kono
parents:
diff changeset
93 ##if ($vflag) echo "folder '`$mhdir/folder -fast`' packed for sorting"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
94 #if ($vflag) echo "folder +$theFolder packed for sorting"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
95
bce86c4163a3 Initial revision
kono
parents:
diff changeset
96 # GET MESSAGE NUMBERS AND SUBJECTS
bce86c4163a3 Initial revision
kono
parents:
diff changeset
97 # THIS OLD STUFF WAS TO OVERRIDE USER'S PROFILE SWITCHES....
bce86c4163a3 Initial revision
kono
parents:
diff changeset
98 # NOW NEED TO REVISE THIS TO USE scan FORMAT FILE!!
bce86c4163a3 Initial revision
kono
parents:
diff changeset
99 # DELETE "Re:" AND STARTS OF BODIES (<<etc. etc.) FROM SUBJECT FIELDS:
bce86c4163a3 Initial revision
kono
parents:
diff changeset
100
bce86c4163a3 Initial revision
kono
parents:
diff changeset
101 if ($vflag) echo "scanning folder for message numbers and subjects"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
102
bce86c4163a3 Initial revision
kono
parents:
diff changeset
103 #$mhdir/scan -noheader -nonumdate -nosize -notime $argv | cut -c1-4,30- | \
bce86c4163a3 Initial revision
kono
parents:
diff changeset
104
bce86c4163a3 Initial revision
kono
parents:
diff changeset
105 $mhdir/scan -noheader '+'$theFolder $theMessages | cut -c1-4,30- | \
bce86c4163a3 Initial revision
kono
parents:
diff changeset
106 sed -e 's/^\(......\)[Rr][Ee]:[ ]*/\1/' -e 's/<<.*//' > $temp
bce86c4163a3 Initial revision
kono
parents:
diff changeset
107 set msgs = "`colrm 5 < $temp`"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
108
bce86c4163a3 Initial revision
kono
parents:
diff changeset
109 # cd TO CURRENT MAIL FOLDER, AND MAKE TEMPORARY DIRECTORY:
bce86c4163a3 Initial revision
kono
parents:
diff changeset
110 set foldir = `$mhdir/mhpath`
bce86c4163a3 Initial revision
kono
parents:
diff changeset
111 chdir $foldir
bce86c4163a3 Initial revision
kono
parents:
diff changeset
112 mkdir MaIlSoRt$$
bce86c4163a3 Initial revision
kono
parents:
diff changeset
113
bce86c4163a3 Initial revision
kono
parents:
diff changeset
114 # GET LIST OF MESSAGES, IN ORDER, BY DATE:
bce86c4163a3 Initial revision
kono
parents:
diff changeset
115 if ($vflag) echo "sorting messages into temporary sub-folder:"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
116 foreach sortmsg (`sort $foldflag +1 $temp | colrm 5`)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
117 # REMOVE LEADING BLANK ON $msgs[1]:
bce86c4163a3 Initial revision
kono
parents:
diff changeset
118 if ($vflag) echo -n "$sortmsg "
bce86c4163a3 Initial revision
kono
parents:
diff changeset
119 mv $sortmsg MaIlSoRt$$/`echo -n $msgs[1]`
bce86c4163a3 Initial revision
kono
parents:
diff changeset
120 shift msgs
bce86c4163a3 Initial revision
kono
parents:
diff changeset
121 end
bce86c4163a3 Initial revision
kono
parents:
diff changeset
122 if ($vflag) echo ""
bce86c4163a3 Initial revision
kono
parents:
diff changeset
123
bce86c4163a3 Initial revision
kono
parents:
diff changeset
124 # MOVE SORTED MESSAGES INTO CURRENT FOLDER AND REMOVE TEMPORARY STUFF:
bce86c4163a3 Initial revision
kono
parents:
diff changeset
125 if ($vflag) echo "moving messages back to original folder"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
126 cd MaIlSoRt$$
bce86c4163a3 Initial revision
kono
parents:
diff changeset
127 mv * $foldir
bce86c4163a3 Initial revision
kono
parents:
diff changeset
128 if ($status == 0) then
bce86c4163a3 Initial revision
kono
parents:
diff changeset
129 cd $foldir
bce86c4163a3 Initial revision
kono
parents:
diff changeset
130 rmdir MaIlSoRt$$
bce86c4163a3 Initial revision
kono
parents:
diff changeset
131 rm $temp
bce86c4163a3 Initial revision
kono
parents:
diff changeset
132 endif