PICK(1)		      [mh.6] (MH.6.8)		       PICK(1)

     NAME
	  pick - select	messages by content

     SYNOPSIS
	  pick [+folder] [msgs]	[-and ...] [-or	...] [-not ...]
	       [-lbrace	... -rbrace] [--component pattern]
	       [-cc pattern] [-date pattern] [-from pattern]
	       [-search	pattern] [-subject pattern] [-to 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
	  limited 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.

     Page 1					     (printed 9/30/94)

     PICK(1)		      [mh.6] (MH.6.8)		       PICK(1)

	  Note that since the `-date' switch is	a pattern matching
	  operation (as	described above), to find messages sent	on a
	  certain date the pattern string must match the text of the
	  Date:	field of the message.

	  Independent of any pattern matching operations requested,
	  the switches `-after date' or	`-before date' may also	be
	  used to introduce date/time contraints on all	of the
	  messages.  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.

	  With `-before' and `-after', pick will actually parse	the
	  date fields in each of the messages specified	in `msgs' and
	  compare them to the date/time	specified.  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 complimentary 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
	  defaulting):	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 (24 hours ago), and tomorrow
	  (24 hours from now).	All days of the	week are judged	to
	  refer	to a day in the	past (e.g., telling pick saturday on a
	  tuesday 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

     Page 2					     (printed 9/30/94)

     PICK(1)		      [mh.6] (MH.6.8)		       PICK(1)

	  provided, which act just like	opening	and closing
	  parentheses in logical expressions.

	  If no	search criteria	are given, all the messages specified
	  on the command line are selected (this defaults to all).

	  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

	       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

     Page 3					     (printed 9/30/94)

     PICK(1)		      [mh.6] (MH.6.8)		       PICK(1)

	  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.

     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
	  version 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.

     HELPFUL HINTS
	  Use pick sequence -list to enumerate the messages in a
	  sequence (such as for	use by a shell script).

     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
	  occurance 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`

     Page 4					     (printed 9/30/94)

     PICK(1)		      [mh.6] (MH.6.8)		       PICK(1)

	  and pick selects no messages (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.

	  The pattern syntax [l-r] is not supported; each letter to be
	  matched must be included within the square brackets.

     Page 5					     (printed 9/30/94)

pick(3G)							      pick(3G)

NAME
     pick - puts the system in picking mode

C SPECIFICATION
     void pick(buffer, numnames)
     short buffer[];
     long numnames;

PARAMETERS
     buffer	expects	the array to use for storing names.

     numnames	expects	the maximum number of names to store. This must	not
		exceed the number of elements in buffer.

DESCRIPTION
     pick facilitates the cursor as a pointing object.	When you draw an image
     in	picking	mode, nothing is drawn.	 It places a special viewing matrix on
     the stack,	which discards everything in the image that does not intersect
     a small region around the cursor origin.

     The graphical items that intersect	the picking region are hits and	store
     the contents of the name stack in buffer. Picking does not	work if	you
     issue a new viewport in picking  mode.

SEE ALSO
     endpick, endselect, gselect, picksize, pushname, popname, loadname

NOTE
     This routine is available only in immediate mode.

     In	order to pick a	large point or a wide line in picking mode, the
     selecting region must intersect the displayed point center	or the
     displayed line center respectively.  The displayed	point center is	the
     imaginary point of	size 1 specified by the	same vertex as the displayed
     point.  The displayed line	center is the imaginary	line of	width 1
     specified by the same vertices as the displayed line.  In case of a very
     large point or very wide line, you	may want to consider drawing a filled
     circle or a filled	rectangle respectively instead.

									Page 1