Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ pick(1) — mips UMIPS RISC/os 4.52

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

mark(1)



PICK(1)             RISC/os Reference Manual              PICK(1)



NAME
     pick - select messages by content

SYNOPSIS
     pick [+folder] [msgs] [-and ...] [-or ...] [-not ...]
          [-lbrace ... -rbrace] [--component pattern]
          [-after date] [-before date] [-datefield field]
          [-sequence name ...]  [-public] [-nopublic] [-zero]
          [-nozero] [-list] [-nolist] [-help]

     typically:
          scan `pick -from jones`
          pick -to holloway -sequence select
          show `pick -before friday`

DESCRIPTION
     Pick searches messages within a folder for the specified
     contents, and then identifies those messages.  Two types of
     search primitives are available:  pattern matching and date
     constraint operations.

     A modified grep(1) is used to perform the matching, so the
     full regular expression (see ed(1)) facility is available
     within `pattern'.  With `-search', `pattern' is used
     directly, and with the others, the grep pattern constructed
     is:

          "component[ \t]*:.*pattern"

     This means that the pattern specified for a `-search' will
     be found everywhere in the message, including the header and
     the body, while the other pattern matching requests are lim-
     ited to the single specified component.  The expression

          `--component pattern'

     is a shorthand for specifying

          `-search "component[ \t]*:.*pattern" '

     It is used to pick a component which is not one of "To:",
     "cc:", "Date:", "From:", or "Subject:".  An example is
     `pick --reply-to pooh'.

     Pattern matching is performed on a per-line basis.  Within
     the header of the message, each component is treated as one
     long line, but in the body, each line is separate.
     Lower-case letters in the search pattern will match either
     lower or upper case in the message, while upper case will
     match only upper case.

     Independent of any pattern matching operations requested,



                         Printed 1/15/91                MH Page 1





PICK(1)             RISC/os Reference Manual              PICK(1)



     the switches `-after date' or `-before date' may also be
     used to introduce date/time contraints on all of the mes-
     sages.  By default, the "Date:" field is consulted, but if
     another date yielding field (such as "BB-Posted:" or
     "Delivery-Date:") should be used, the `-datefield field'
     switch may be used.  Pick will actually parse the date
     fields in each of the messages specified in `msgs' (unlike
     the `-date' switch described above which does a pattern
     matching operation), and compare them to the date/time
     specified by use of the `-after' and `-before' switches.  If
     `-after' is given, then only those messages whose "Date:"
     field value is chronologically after the date specified will
     be considered.  The `-before' switch specifies the compli-
     mentary action.

     Both the `-after' and `-before' switches take legal
     822-style date specifications as arguments.  Pick will
     default certain missing fields so that the entire date need
     not be specified.  These fields are (in order of default-
     ing):  timezone, time and timezone, date, date and timezone.
     All defaults are taken from the current date, time, and
     timezone.  In addition to 822-style dates, pick will also
     recognize any of the days of the week ("sunday", "monday",
     and so on), and the special dates "today", "yesterday", and
     "tomorrow".  All days of the week are judged to refer to a
     day in the past (e.g., telling pick "saturday" on a "tues-
     day" means "last saturday" not "this saturday").  Finally,
     in addition to these special specifications, pick will also
     honor a specification of the form "-dd", which means "dd
     days ago".

     Pick supports complex boolean operations on the searching
     primitives with the `-and', `-or', `-not', and
     `-lbrace ... -rbrace' switches.  For example,

          pick -after yesterday -and -lbrace -from freida -or -from fear -rbrace

     identifies messages recently sent by "frieda" or "fear".

     The matching primitives take precedence over the `-not'
     switch, which in turn takes precedence over `-and' which in
     turn takes precedence over `-or'.  To override the default
     precedence, the `-lbrace' and `-rbrace' switches are pro-
     vided, which act just like opening and closing parentheses
     in logical expressions.

     Once the search has been performed, if the `-list' switch is
     given, the message numbers of the selected messages are
     written to the standard output separated by newlines.  This
     is extremely useful for quickly generating arguments for
     other MH programs by using the "backquoting" syntax of the
     shell.  For example, the command



MH Page 2                Printed 1/15/91





PICK(1)             RISC/os Reference Manual              PICK(1)



          scan `pick +todo -after "31 Mar 83 0123 PST"`

     says to scan those messages in the indicated folder which
     meet the appropriate criterion.  Note that since pick 's
     context changes are written out prior to scan 's invocation,
     you need not give the folder argument to scan as well.

     Regardless of the operation of the `-list' switch, the
     `-sequence name' switch may be given once for each sequence
     the user wishes to define.  For each sequence named, that
     sequence will be defined to mean exactly those messages
     selected by pick.  For example,

          pick -from frated -seq fred

     defines a new message sequence for the current folder called
     "fred" which contains exactly those messages that were
     selected.

     Note that whenever pick processes a `-sequence name' switch,
     it sets `-nolist'.

     By default, pick will zero the sequence before adding it.
     This action can be disabled with the `-nozero' switch, which
     means that the messages selected by pick will be added to
     the sequence, if it already exists, and any messages already
     a part of that sequence will remain so.

     The `-public' and `-nopublic' switches are used by pick in
     the same way mark uses them.

FILES
     $HOME/.mh_profile                 The user profile

PROFILE COMPONENTS
     Path:                To determine the user's MH directory
     Current-Folder:      To find the default current folder

SEE ALSO
     mark(1)

DEFAULTS
     `+folder' defaults to the current folder
     `msgs' defaults to all
     `-datefield date'
     `-nopublic' if the folder is read-only, `-public' otherwise
     `-zero'
     `-list' is the default if no `-sequence', `-nolist' otherwise

CONTEXT
     If a folder is given, it will become the current folder.




                         Printed 1/15/91                MH Page 3





PICK(1)             RISC/os Reference Manual              PICK(1)



HISTORY
     In previous versions of MH, the pick command would show,
     scan, or refile the selected messages.  This was rather
     "inverted logic" from the UNIX point of view, so pick was
     changed to define sequences and output those sequences.
     Hence, pick can be used to generate the arguments for all
     other MH commands, instead of giving pick endless switches
     for invoking those commands itself.

     Also, previous versions of pick balked if you didn't specify
     a search string or a date/time constraint.  The current ver-
     sion does not, and merely matches the messages you specify.
     This lets you type something like:

          show `pick last:20 -seq fear`

     instead of typing

          mark -add -nozero -seq fear last:20
          show fear

     Finally, timezones used to be ignored when comparing dates:
     they aren't any more.

BUGS
     The argument to the `-after' and `-before' switches must be
     interpreted as a single token by the shell that invokes
     pick.  Therefore, one must usually place the argument to
     this switch inside double-quotes.  Furthermore, any occu-
     rance of `-datefield' must occur prior to the `-after' or
     `-before' switch it applies to.

     If pick is used in a back-quoted operation, such as

          scan `pick -from jones`

     and pick fails (e.g., no messages are from "jones"), then
     the shell will still run the outer command (e.g., "scan").
     Since no messages were matched, pick produced no output, and
     the argument given to the outer command as a result of
     backquoting pick is empty.  In the case of MH programs, the
     outer command now acts as if the default `msg' or `msgs'
     should be used (e.g., "all" in the case of scan ).  To
     prevent this unexpected behavior, if `-list' was given, and
     if its standard output is not a tty, then pick outputs the
     illegal message number "0" when it fails.  This lets the
     outer command fail gracefully as well.








MH Page 4                Printed 1/15/91



Typewritten Software • bear@typewritten.org • Edmonds, WA 98026