Annotation of 43BSDReno/contrib/mh/conf/doc/pick.rf, revision 1.1.1.1

1.1       root        1: .\"    @(MHWARNING)
                      2: .TH PICK 1 "April 22, 1986" MH [mh.6]
                      3: .UC 6
                      4: .SH NAME
                      5: pick \- select messages by content
                      6: .SH SYNOPSIS
                      7: .in +.5i
                      8: .ti -.5i
                      9: .ie t \{\
                     10: .ta .4i 1.8i
                     11: .nf
                     12: .in .5i
                     13: ^pick~^^\0\-cc~^ \%[+folder] \%[msgs] \%[\-help]
                     14: ^^^\0\-date~^ \%[\-before\ date] \%[\-after\ date] \%[\-datefield\ field]
                     15: ^^^\0\-from~^
                     16: ^^^\s+2\b'\(lt\(bv\(bv\(lk\(bv\(bv\(lb'\s0\-search~\s+2\b'\(rt\(bv\(bv\(rk\(bv\(bv\(rb'\s0^ pattern \%[\-and\ ...] \%[\-or\ ...] \%[\-not\ ...] \%[\-lbrace\ ...\ \-rbrace]
                     17: ^^^\0\-subject~^
                     18: ^^^\0\-to~^ \%[\-sequence\ name\ ...] \%[\-public] \%[\-nopublic] \%[\-zero] \%[\-nozero]
                     19: ^^^\0\-\|\-component~^ \%[\-list] \%[\-nolist]
                     20: .fi
                     21: .re
                     22: .in 1i
                     23: .\}
                     24: .el \{\
                     25: .ti .5i
                     26: pick
                     27: \%[+folder] \%[msgs]
                     28: \%[\-and\ ...] \%[\-or\ ...] \%[\-not\ ...] \%[\-lbrace\ ...\ \-rbrace]
                     29: \%[\-\|\-component\ pattern]
                     30: \%[\-after\ date] \%[\-before\ date] \%[\-datefield\ field]
                     31: \%[\-sequence\ name\ ...]
                     32: \%[\-public] \%[\-nopublic]
                     33: \%[\-zero] \%[\-nozero]
                     34: \%[\-list] \%[\-nolist]
                     35: \%[\-help]
                     36: .\}
                     37: 
                     38: .ti .5i
                     39: typically:
                     40: .br
                     41: scan\0`pick\0\-from\0jones`
                     42: .br
                     43: pick\0\-to\0holloway\0\-sequence\0select
                     44: .br
                     45: show\0`pick\0\-before\0friday`
                     46: .in -.5i
                     47: .SH DESCRIPTION
                     48: \fIPick\fR searches messages within a folder for the specified
                     49: contents, and then identifies those messages.
                     50: Two types of search primitives are available:
                     51: pattern matching and date constraint operations.
                     52: 
                     53: A modified \fIgrep\fR(1) is used to perform the matching, so the
                     54: full regular expression (see \fIed\fR(1)) facility is available
                     55: within `pattern'.
                     56: With `\-search', `pattern' is used directly,
                     57: and with the others, the grep pattern constructed is:
                     58: 
                     59: .ti +.5i
                     60: \*(lqcomponent[ \\t]*:\&.*pattern\*(rq
                     61: 
                     62: This means that the pattern specified for a `\-search' will be
                     63: found everywhere in the message, including the header and the body,
                     64: while the other pattern matching requests are limited to the single
                     65: specified component.
                     66: The expression
                     67: 
                     68: .ti +.5i
                     69: `\-\|\-component\ pattern'
                     70: 
                     71: is a shorthand for specifying
                     72: 
                     73: .ti +.5i
                     74: `\-search \*(lqcomponent[ \\t]*:\&.*pattern\*(rq\ '
                     75: 
                     76: It is used to pick a component which is not one of
                     77: \*(lqTo:\*(rq, \*(lqcc:\*(rq, \*(lqDate:\*(rq, \*(lqFrom:\*(rq,
                     78: or \*(lqSubject:\*(rq.
                     79: An example is `pick\0\-\|\-reply\-to\0pooh'.
                     80: 
                     81: Pattern matching is performed on a per\-line basis.
                     82: Within the header of
                     83: the message, each component is treated as one long line, but in
                     84: the body, each line is separate.
                     85: Lower\-case letters in the
                     86: search pattern will match either lower or upper case in the
                     87: message, while upper case will match only upper case.
                     88: 
                     89: Independent of any pattern matching operations requested,
                     90: the switches `\-after date' or `\-before date' may also be used
                     91: to introduce date/time contraints on all of the messages.
                     92: By default, the \*(lqDate:\*(rq field is consulted,
                     93: but if another date yielding field
                     94: (such as \*(lqBB\-Posted:\*(rq or \*(lqDelivery\-Date:\*(rq) should be used,
                     95: the `\-datefield\ field' switch may be used.
                     96: \fIPick\fR will actually parse the date fields in each of the messages
                     97: specified in `msgs'
                     98: (unlike the `\-date' switch described above which does a pattern matching
                     99: operation),
                    100: and compare them to the date/time specified by use of the `\-after'
                    101: and `\-before' switches.
                    102: If `\-after' is given,
                    103: then only those messages whose \*(lqDate:\*(rq field value
                    104: is chronologically after
                    105: the date specified will be considered.
                    106: The `\-before' switch specifies the complimentary action.
                    107: 
                    108: Both the `\-after' and `\-before' switches take legal 822\-style date
                    109: specifications as arguments.
                    110: \fIPick\fR will default certain missing fields so that the entire date
                    111: need not be specified.
                    112: These fields are (in order of defaulting):
                    113: timezone, time and timezone, date, date and timezone.
                    114: All defaults are taken from the current date, time, and timezone.
                    115: In addition to 822\-style dates,
                    116: \fIpick\fR will also recognize any of the days of the week
                    117: (\*(lqsunday\*(rq, \*(lqmonday\*(rq, and so on),
                    118: and the special dates
                    119: \*(lqtoday\*(rq, \*(lqyesterday\*(rq, and \*(lqtomorrow\*(rq.
                    120: All days of the week are judged to refer to a day in the past
                    121: (e.g., telling \fIpick\fR \*(lqsaturday\*(rq on
                    122: a \*(lqtuesday\*(rq means \*(lqlast\ saturday\*(rq
                    123: not \*(lqthis\ saturday\*(rq).
                    124: Finally, in addition to these special specifications,
                    125: \fIpick\fR will also honor a specification of the form \*(lq\-dd\*(rq,
                    126: which means \*(lqdd days ago\*(rq.
                    127: 
                    128: \fIPick\fR supports complex boolean operations on the searching primitives
                    129: with the `\-and', `\-or', `\-not', and `\-lbrace\ ...\ \-rbrace' switches.
                    130: For example,
                    131: 
                    132: .ti +.5i
                    133: pick\0\-after\0yesterday\0\-and\0\-lbrace\0\-from\0freida\0\-or\0\-from\0fear\0\-rbrace
                    134: 
                    135: identifies messages recently sent by \*(lqfrieda\*(rq or \*(lqfear\*(rq.
                    136: 
                    137: The matching primitives take precedence over the `\-not' switch,
                    138: which in turn takes precedence over `\-and'
                    139: which in turn takes precedence over `\-or'.
                    140: To override the default precedence,
                    141: the `\-lbrace' and `\-rbrace' switches are provided,
                    142: which act just like opening and closing parentheses in logical expressions.
                    143: 
                    144: Once the search has been performed,
                    145: if the `\-list' switch is given,
                    146: the message numbers of the selected messages are written to the standard
                    147: output separated by newlines.
                    148: This is \fIextremely\fR useful for quickly generating arguments for other
                    149: \fIMH\fR programs by using the \*(lqbackquoting\*(rq syntax of the shell.
                    150: For example,
                    151: the command
                    152: 
                    153: .ti +.5i
                    154: scan\0`pick\0+todo\0\-after\0\*(lq31 Mar 83 0123 PST\*(rq`
                    155: 
                    156: says to \fIscan\fR those messages in the indicated folder which meet the
                    157: appropriate criterion.
                    158: Note that since \fIpick\fR\0's context changes are written out prior to
                    159: \fIscan\fR\0's invocation,
                    160: you need not give the folder argument to \fIscan\fR as well.
                    161: 
                    162: Regardless of the operation of the `\-list' switch,
                    163: the `\-sequence name' switch may be given once for each sequence the user
                    164: wishes to define.
                    165: For each sequence named,
                    166: that sequence will be defined to mean exactly those messages selected by
                    167: \fIpick\fR.
                    168: For example,
                    169: 
                    170: .ti +.5i
                    171: pick\0\-from\0frated\0\-seq\0fred
                    172: 
                    173: defines a new message sequence for the current folder called \*(lqfred\*(rq
                    174: which contains exactly those messages that were selected.
                    175: 
                    176: Note that whenever \fIpick\fR processes a `\-sequence\ name' switch,
                    177: it sets `\-nolist'.
                    178: 
                    179: By default, \fIpick\fR will zero the sequence before adding it.
                    180: This action can be disabled with the `\-nozero' switch,
                    181: which means that the messages selected by \fIpick\fR will be added to the
                    182: sequence, if it already exists, and any messages already a part of that
                    183: sequence will remain so.
                    184: 
                    185: The `\-public' and `\-nopublic' switches are used by \fIpick\fR in the same
                    186: way \fImark\fR uses them.
                    187: .Fi
                    188: ^$HOME/\&.mh\(ruprofile~^The user profile
                    189: .Pr
                    190: ^Path:~^To determine the user's MH directory
                    191: .Ps
                    192: ^Current\-Folder:~^To find the default current folder
                    193: .Sa
                    194: mark(1)
                    195: .De
                    196: `+folder' defaults to the current folder
                    197: .Ds
                    198: `msgs' defaults to all
                    199: .Ds
                    200: `\-datefield date'
                    201: .Ds
                    202: `\-nopublic' if the folder is read\-only, `\-public' otherwise
                    203: .Ds
                    204: `\-zero'
                    205: .Ds
                    206: `\-list' is the default if no `\-sequence', `\-nolist' otherwise
                    207: .Co
                    208: If a folder is given, it will become the current folder.
                    209: .Hi
                    210: In previous versions of \fIMH\fR,
                    211: the \fIpick\fR command would \fIshow\fR, \fIscan\fR, or \fIrefile\fR the
                    212: selected messages.
                    213: This was rather \*(lqinverted logic\*(rq from the UNIX point of view,
                    214: so \fIpick\fR was changed to define sequences and output those sequences.
                    215: Hence, \fIpick\fR can be used to generate the arguments for all other
                    216: \fIMH\fR commands,
                    217: instead of giving \fIpick\fR endless switches for invoking those commands
                    218: itself.
                    219: 
                    220: Also, previous versions of \fIpick\fR balked if you didn't specify a search
                    221: string or a date/time constraint.
                    222: The current version does not, and merely matches the messages you specify.
                    223: This lets you type something like:
                    224: 
                    225: .ti +.5i
                    226: show\0`pick\0last:20\0\-seq\0fear`
                    227: 
                    228: instead of typing
                    229: 
                    230: .in +.5i
                    231: .nf
                    232: mark\0\-add\0\-nozero\0\-seq\0fear\0last:20
                    233: show\0fear
                    234: .fi
                    235: .in -.5i
                    236: 
                    237: Finally,
                    238: timezones used to be ignored when comparing dates:
                    239: they aren't any more.
                    240: .Bu
                    241: The argument to the `\-after' and `\-before' switches must be interpreted
                    242: as a single token by the shell that invokes \fIpick\fR.
                    243: Therefore,
                    244: one must usually place the argument to this switch inside double\-quotes.
                    245: Furthermore,
                    246: any occurance of `\-datefield' must occur prior to the `\-after'
                    247: or `\-before' switch it applies to.
                    248: 
                    249: If \fIpick\fR is used in a back\-quoted operation,
                    250: such as
                    251: 
                    252: .ti +.5i
                    253: scan\0`pick\0\-from\0jones`
                    254: 
                    255: and \fIpick\fR fails (e.g., no messages are from \*(lqjones\*(rq),
                    256: then the shell will still run the outer command (e.g., \*(lqscan\*(rq).
                    257: Since no messages were matched,
                    258: \fIpick\fR produced no output,
                    259: and the argument given to the outer command as a result of backquoting
                    260: \fIpick\fR is empty.
                    261: In the case of \fIMH\fR programs,
                    262: the outer command now acts as if the default `msg' or `msgs' should be used
                    263: (e.g., \*(lqall\*(rq in the case of \fIscan\fR\0).
                    264: To prevent this unexpected behavior,
                    265: if `\-list' was given,
                    266: and if its standard output is not a tty,
                    267: then \fIpick\fR outputs the illegal message number \*(lq0\*(rq when it fails.
                    268: This lets the outer command fail gracefully as well.
                    269: .En

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.