Bug#1087222: exipick.8: Some remarks and editorial changes for this man page

Bjarni Ingi Gislason bjarniig at simnet.is
Sat Nov 9 21:04:44 GMT 2024


Package: exim4-base
Version: 4.98-2
Severity: minor
Tags: patch

   * What led up to the situation?

     Checking for defects with

test-[g|n]roff -mandoc -t -K utf8 -rF0 -rHY=0 -ww -b -z < "man page"

  [Use "groff -e ' $' <file>" to find trailing spaces.]

  ["test-groff" is a script in the repository for "groff"; is not shipped]
(local copy and "troff" slightly changed by me).

  [The fate of "test-nroff" was decided in groff bug #55941.]

   * What was the outcome of this action?


troff: backtrace: '<stdin>':11: macro 'Vb'
troff: backtrace: file '<stdin>':64
troff:<stdin>:64: warning: font name 'CW' is deprecated


   * What outcome did you expect instead?

     No output (no warnings).

-.-

  General remarks and further material, if a diff-file exist, are in the
attachments.


-- System Information:
Debian Release: trixie/sid
  APT prefers testing
  APT policy: (500, 'testing')
Architecture: amd64 (x86_64)

Kernel: Linux 6.11.5-amd64 (SMP w/2 CPU threads; PREEMPT)
Locale: LANG=is_IS.iso88591, LC_CTYPE=is_IS.iso88591 (charmap=ISO-8859-1), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: sysvinit (via /sbin/init)

Versions of packages exim4-base depends on:
ii  adduser                        3.137
ii  anacron                        2.3-40
ii  cron [cron-daemon]             3.0pl1-189
ii  debconf [debconf-2.0]          1.5.87
ii  exim4-config [exim4-config-2]  4.98-2
ii  libc6                          2.40-3
ii  libdb5.3t64                    5.3.28+dfsg2-9
ii  libfile-fcntllock-perl         0.22-4+b4
ii  netbase                        6.4
ii  perl                           5.40.0-6

Versions of packages exim4-base recommends:
pn  bsd-mailx | mailx  <none>
ii  psmisc             23.7-1

Versions of packages exim4-base suggests:
pn  exim4-doc-html | exim4-doc-info  <none>
pn  eximon4                          <none>
ii  file                             1:5.45-3+b1
ii  mutt [mail-reader]               2.2.13-1
ii  neomutt [mail-reader]            20241002+dfsg-1
ii  openssl                          3.3.2-2
pn  spf-tools-perl                   <none>
pn  swaks                            <none>

-- debconf information excluded
-------------- next part --------------
  Any program (person), that produces man pages, should check the output
for defects by using (both groff and nroff)

[gn]roff -mandoc -t -ww -b -z -K utf8  <man page>

  The same goes for man pages that are used as an input.

  For a style guide use

  mandoc -T lint

-.-

  So any 'generator' should check its products with the above mentioned
'groff', 'mandoc',  and additionally with 'nroff ...'.

  This is just a simple quality control measure.

  The 'generator' may have to be corrected to get a better man page,
the source file may, and any additional file may.

  Common defects:

  Input text line longer than 80 bytes.

  Not removing trailing spaces (in in- and output).
  The reason for these trailing spaces should be found and eliminated.

  Not beginning each input sentence on a new line.
Lines should thus be shorter.

  See man-pages(7), item 'semantic newline'.

-.-

The difference between the formatted output of the original and patched file
can be seen with:

  nroff -mandoc <file1> > <out1>
  nroff -mandoc <file2> > <out2>
  diff -u <out1> <out2>

and for groff, using

"printf '%s\n%s\n' '.kern 0' '.ss 12 0' | groff -mandoc -Z - "

instead of 'nroff -mandoc'

  Add the option '-t', if the file contains a table.

  Read the output of 'diff -u' with 'less -R' or similar.

-.-.

  If 'man' (man-db) is used to check the manual for warnings,
the following must be set:

  The option "-warnings=w"

  The environmental variable:

export MAN_KEEP_STDERR=yes (or any non-empty value)

  or

  (produce only warnings):

export MANROFFOPT="-ww -b -z"

export MAN_KEEP_STDERR=yes (or any non-empty value)

-.-.

Output from "mandoc -T lint exipick.8": (possibly shortened list)

mandoc: exipick.8:96:124: STYLE: input text line longer than 80 bytes: Show the count and t...
mandoc: exipick.8:104:125: STYLE: input text line longer than 80 bytes: Display all messages...
mandoc: exipick.8:111:122: STYLE: input text line longer than 80 bytes: Display only message...
mandoc: exipick.8:118:108: STYLE: input text line longer than 80 bytes: Same as above, but s...
mandoc: exipick.8:156:90: STYLE: input text line longer than 80 bytes: Use \fIconfig\fR to ...
mandoc: exipick.8:157:94: STYLE: input text line longer than 80 bytes: or \f(CW\*(C`\-\-inp...
mandoc: exipick.8:169:147: STYLE: input text line longer than 80 bytes: Same as \f(CW\*(C`$s...
mandoc: exipick.8:172:148: STYLE: input text line longer than 80 bytes: Same as \f(CW\*(C`\-...
mandoc: exipick.8:187:119: STYLE: input text line longer than 80 bytes: Set the name of the ...
mandoc: exipick.8:188:92: STYLE: input text line longer than 80 bytes: the value of \f(CW\*...
mandoc: exipick.8:203:143: STYLE: input text line longer than 80 bytes: Same as \f(CW\*(C`$r...
mandoc: exipick.8:215:476: STYLE: input text line longer than 80 bytes: Set the path to the ...
mandoc: exipick.8:224:138: STYLE: input text line longer than 80 bytes: Show the value for \...
mandoc: exipick.8:253:276: STYLE: input text line longer than 80 bytes: Multiple criteria ca...
mandoc: exipick.8:260:138: STYLE: input text line longer than 80 bytes: Boolean variables ar...
mandoc: exipick.8:268:252: STYLE: input text line longer than 80 bytes: Valid comparisons ar...
mandoc: exipick.8:277:418: STYLE: input text line longer than 80 bytes: The string operators...
mandoc: exipick.8:286:573: STYLE: input text line longer than 80 bytes: There are many ways ...
mandoc: exipick.8:289:491: STYLE: input text line longer than 80 bytes: With a few exception...
mandoc: exipick.8:291:346: STYLE: input text line longer than 80 bytes: Internally, all vari...
mandoc: exipick.8:317:120: STYLE: input text line longer than 80 bytes: Optional saved infor...
mandoc: exipick.8:321:148: STYLE: input text line longer than 80 bytes: The value of AUTH= p...
mandoc: exipick.8:325:139: STYLE: input text line longer than 80 bytes: Value of the header(...
mandoc: exipick.8:357:629: STYLE: input text line longer than 80 bytes: This is a pseudo var...
mandoc: exipick.8:373:158: STYLE: input text line longer than 80 bytes: This will always mat...
mandoc: exipick.8:381:123: STYLE: input text line longer than 80 bytes: TRUE if there was an...
mandoc: exipick.8:385:120: STYLE: input text line longer than 80 bytes: TRUE if there was an...
mandoc: exipick.8:401:123: STYLE: input text line longer than 80 bytes: The number of bytes ...
mandoc: exipick.8:409:153: STYLE: input text line longer than 80 bytes: The message's body. ...
mandoc: exipick.8:421:119: STYLE: input text line longer than 80 bytes: The unique message i...
mandoc: exipick.8:425:119: STYLE: input text line longer than 80 bytes: A concatenation of a...
mandoc: exipick.8:429:130: STYLE: input text line longer than 80 bytes: A concatenation of a...
mandoc: exipick.8:441:99: STYLE: input text line longer than 80 bytes: The group id under w...
mandoc: exipick.8:449:98: STYLE: input text line longer than 80 bytes: The user id under wh...
mandoc: exipick.8:453:128: STYLE: input text line longer than 80 bytes: The address of the l...
mandoc: exipick.8:457:108: STYLE: input text line longer than 80 bytes: The local port numbe...
mandoc: exipick.8:473:222: STYLE: input text line longer than 80 bytes: The list of envelope...
mandoc: exipick.8:481:258: STYLE: input text line longer than 80 bytes: The list of delivere...
mandoc: exipick.8:485:334: STYLE: input text line longer than 80 bytes: The number of envelo...
mandoc: exipick.8:489:222: STYLE: input text line longer than 80 bytes: The list of undelive...
mandoc: exipick.8:493:84: STYLE: input text line longer than 80 bytes: The number of envelo...
mandoc: exipick.8:497:128: STYLE: input text line longer than 80 bytes: The contents of the ...
mandoc: exipick.8:501:115: STYLE: input text line longer than 80 bytes: The value of the mes...
mandoc: exipick.8:505:135: STYLE: input text line longer than 80 bytes: The sender's address...
mandoc: exipick.8:525:117: STYLE: input text line longer than 80 bytes: The name of the auth...
mandoc: exipick.8:533:81: STYLE: input text line longer than 80 bytes: The port number that...
mandoc: exipick.8:537:159: STYLE: input text line longer than 80 bytes: The identification r...
mandoc: exipick.8:545:81: STYLE: input text line longer than 80 bytes: TRUE if the envelope...
mandoc: exipick.8:549:166: STYLE: input text line longer than 80 bytes: This non-standard va...
mandoc: exipick.8:553:115: STYLE: input text line longer than 80 bytes: The value of the act...
mandoc: exipick.8:557:100: STYLE: input text line longer than 80 bytes: The spam score of th...
mandoc: exipick.8:561:140: STYLE: input text line longer than 80 bytes: The spam score of th...
mandoc: exipick.8:573:91: STYLE: input text line longer than 80 bytes: The value of the Dis...
mandoc: exipick.8:577:88: STYLE: input text line longer than 80 bytes: The value of the Ser...

-.-.


Use the word (in)valid instead of (il)legal,
if not related to legal matters.
See "www.gnu.org/prep/standards".
Think about translations into other languages!

exipick.8:291:Internally, all variables are represented as strings, meaning any operator will work on any variable.  This means that \f(CW\*(C`$sender_host_name > 4\*(C'\fR is a legal criterion, even if it does not produce meaningful results.  Variables in the list below are marked with a 'type' to help in choosing which types of operators make sense to use.

-.-.

Wrong distance between sentences in the input file.

  Separate the sentences and subordinate clauses; each begins on a new
line.  See man-pages(7) ("Conventions for source file layout") and
"info groff" ("Input Conventions").

  The best procedure is to always start a new sentence on a new line,
at least, if you are typing on a computer.

Remember coding: Only one command ("sentence") on each (logical) line.

E-mail: Easier to quote exactly the relevant lines.

Generally: Easier to edit the sentence.

Patches: Less unaffected text.

Search for two adjacent words is easier, when they belong to the same line,
and the same phrase.

  The amount of space between sentences in the output can then be
controlled with the ".ss" request.

156:Use \fIconfig\fR to determine the proper spool directory. (See \f(CW\*(C`\-\-spool\*(C'\fR
200:Name of the queue (default: ''). See "named queues" in the spec.
215:Set the path to the exim spool to use.  This value will have the arguments to \f(CW\*(C`\-\-queue\*(C'\fR, and \f(CW\*(C`\-\-input\*(C'\fR or \fIinput\fR appended, or be ignored if \f(CW\*(C`\-\-input\*(C'\fR is a full path. If not specified, \fBexipick\fR uses the value from \f(CW\*(C`exim [\-C config] \-n \-bP spool_directory\*(C'\fR, and if this call fails, the  \fI/opt/exim/spool\fR from build time (\fILocal/Makefile\fR) is used. See also \f(CW\*(C`\-\-config\*(C'\fR.
286:There are many ways to negate tests, each having a reason for existing.  Many tests can be negated using native operators.  For instance, >1 is the opposite of <=1 and eq and ne are opposites.  In addition, each individual test can be negated by adding a ! at the beginning of the test.  For instance, \f(CW\*(C`!$acl_m1 =~ /^DENY$/\*(C'\fR is the same as \f(CW\*(C`$acl_m1 !~ /^DENY$/\*(C'\fR.  Finally, every test can be specified by using the command line argument \f(CW\*(C`\-\-not\*(C'\fR.  This is functionally equivalent to adding a ! to the beginning of every test.
298:\&    . \- Standard variable matching Exim\*(Aqs content definition

-.-.

Split lines longer than 80 characters into two or more lines.
Appropriate break points are the end of a sentence and a subordinate
clause; after punctuation marks.

N.B.

  The number of lines affected can be too large to be in a patch.


Line 75, length 324

\&\fBexipick\fR is a tool to display messages in an Exim queue.  It is very similar to exiqgrep and is, in fact, a drop in replacement for exiqgrep.  \fBexipick\fR allows you to select messages to be displayed using any piece of data stored in an Exim spool file.  Matching messages can be displayed in a variety of formats.

Line 96, length 124

Show the count and total size of all messages which either originated from localhost or have a received protocol of 'local':

Line 104, length 125

Display all messages received on the MSA port, ordered first by the sender's email domain and then by the size of the emails:

Line 111, length 122

Display only messages whose every recipient is in the example.com domain, also listing the IP address of the sending host:

Line 118, length 108

Same as above, but show values for all defined variables starting with sender_ and the number of recipients:

Line 156, length 90

Use \fIconfig\fR to determine the proper spool directory. (See \f(CW\*(C`\-\-spool\*(C'\fR

Line 157, length 94

or \f(CW\*(C`\-\-input\*(C'\fR for alternative ways to specify the directories to operate on.)

Line 169, length 147

Same as \f(CW\*(C`$sender_address =~ /<regexp>/\*(C'\fR (exiqgrep).  Note that this preserves the default case sensitivity of exiqgrep's interface.

Line 172, length 148

Same as \f(CW\*(C`\-\-input\-dir Finput\*(C'\fR.  \fIFinput\fR is where exim copies frozen messages when compiled with SUPPORT_MOVE_FROZEN_MESSAGES.

Line 187, length 119

Set the name of the directory under the spool directory.  By default this is \fIinput\fR.  If this starts with \fI/\fR,

Line 188, length 92

the value of \f(CW\*(C`\-\-spool\*(C'\fR is ignored.  See also \f(CW\*(C`\-\-finput\*(C'\fR.

Line 203, length 143

Same as \f(CW\*(C`$recipients =~ /<regexp>/\*(C'\fR (exiqgrep).  Note that this preserves the default case sensitivity of exiqgrep's interface.

Line 215, length 476

Set the path to the exim spool to use.  This value will have the arguments to \f(CW\*(C`\-\-queue\*(C'\fR, and \f(CW\*(C`\-\-input\*(C'\fR or \fIinput\fR appended, or be ignored if \f(CW\*(C`\-\-input\*(C'\fR is a full path. If not specified, \fBexipick\fR uses the value from \f(CW\*(C`exim [\-C config] \-n \-bP spool_directory\*(C'\fR, and if this call fails, the  \fI/opt/exim/spool\fR from build time (\fILocal/Makefile\fR) is used. See also \f(CW\*(C`\-\-config\*(C'\fR.

Line 224, length 138

Show the value for \fIvariable\fR for each displayed message.  \fIvariable\fR will be a regular expression if it begins with a circumflex.

Line 251, length 485

\&\fBExipick\fR decides which messages to display by applying a test against each message.  The rules take the general form of "\fIVARIABLE\fR \fIOPERATOR\fR \fIVALUE\fR".  For example, \f(CW\*(C`$message_age > 60\*(C'\fR.  When \fBexipick\fR is deciding which messages to display, it checks the \f(CW$message_age\fR variable for each message.  If a message's age is greater than 60, the message will be displayed.  If the message's age is 60 or less seconds, it will not be displayed.

Line 253, length 276

Multiple criteria can be used.  The order they are specified does not matter.  By default all criteria must evaluate to true for a message to be displayed.  If the \f(CW\*(C`\-\-or\*(C'\fR option is used, a message is displayed as long as any of the criteria evaluate to true.

Line 260, length 138

Boolean variables are checked simply by being true or false.  There is no real operator except negation.  Examples of valid boolean tests:

Line 268, length 252

Valid comparisons are <, <=, >, >=, ==, and !=.  Numbers can be integers or floats.  Any number in a test suffixed with d, h, m, s, M, K, or B will be multiplied by 86400, 3600, 60, 1, 1048576, 1024, or 1 respectively.  Examples of valid numeric tests:

Line 277, length 418

The string operators are =, eq, ne, =~, and !~.  With the exception of \f(CW\*(C`=\*(C'\fR, the operators all match the functionality of the like-named perl operators.  eq and ne match a string exactly.  !~, =~, and = apply a perl regular expression to a string.  The \f(CW\*(C`=\*(C'\fR operator behaves just like =~ but you are not required to place // around the regular expression.  Examples of valid string tests:

Line 286, length 573

There are many ways to negate tests, each having a reason for existing.  Many tests can be negated using native operators.  For instance, >1 is the opposite of <=1 and eq and ne are opposites.  In addition, each individual test can be negated by adding a ! at the beginning of the test.  For instance, \f(CW\*(C`!$acl_m1 =~ /^DENY$/\*(C'\fR is the same as \f(CW\*(C`$acl_m1 !~ /^DENY$/\*(C'\fR.  Finally, every test can be specified by using the command line argument \f(CW\*(C`\-\-not\*(C'\fR.  This is functionally equivalent to adding a ! to the beginning of every test.

Line 289, length 491

With a few exceptions the available variables match Exim's internal expansion variables in both name and exact contents.  There are a few notable additions and format deviations which are noted below.  Although a brief explanation is offered below, Exim's spec.txt should be consulted for full details.  It is important to remember that not every variable will be defined for every message.  For example, \f(CW$sender_host_port\fR is not defined for messages not received from a remote host.

Line 291, length 346

Internally, all variables are represented as strings, meaning any operator will work on any variable.  This means that \f(CW\*(C`$sender_host_name > 4\*(C'\fR is a legal criterion, even if it does not produce meaningful results.  Variables in the list below are marked with a 'type' to help in choosing which types of operators make sense to use.

Line 302, length 121

.ie n .IP "S . \fR\fB$acl_c0\fR\fB\fR\-\fB\fR\fB$acl_c9\fR\fB\fR, \fB\fR\fB$acl_m0\fR\fB\fR\-\fB\fR\fB$acl_m9\fR\fB\fR" 4

Line 303, length 127

.el .IP "S . \fR\f(CB$acl_c0\fR\fB\fR\-\fB\fR\f(CB$acl_c9\fR\fB\fR, \fB\fR\f(CB$acl_m0\fR\fB\fR\-\fB\fR\f(CB$acl_m9\fR\fB\fR" 4

Line 317, length 120

Optional saved information from authenticators, or the login name of the calling process for locally submitted messages.

Line 321, length 148

The value of AUTH= param for smtp messages, or a generated value from the calling processes login and qualify domain for locally submitted messages.

Line 325, length 139

Value of the header(s) with the same name with any RFC2047 words decoded if present.  See section 11.5 of Exim's spec.txt for full details.

Line 357, length 629

This is a pseudo variable which allows you to apply a test against each address in \f(CW$recipients\fR individually.  Whereas \f(CW\*(C`$recipients =~ /@aol.com/\*(C'\fR will match if any recipient address contains aol.com, \f(CW\*(C`$each_recipients =~ /@aol.com$/\*(C'\fR will only be true if every recipient matches that pattern.  Note that this obeys \f(CW\*(C`\-\-and\*(C'\fR or \f(CW\*(C`\-\-or\*(C'\fR being set.  Using it with \f(CW\*(C`\-\-or\*(C'\fR is very similar to just matching against \f(CW$recipients\fR, but with the added benefit of being able to use anchors at the beginning and end of each recipient address.

Line 373, length 158

This will always match the contents of the corresponding \f(CW$bheader_\fR* variable currently (the same behaviour Exim displays when iconv is not installed).

Line 381, length 123

TRUE if there was an attempt to look up the host's name from its IP address, but an error occurred that during the attempt.

Line 385, length 120

TRUE if there was an attempt to look up the host's name from its IP address, but the attempt returned a negative result.

Line 401, length 123

The number of bytes in the longest line that was received as part of the message, not counting line termination characters.

Line 409, length 153

The message's body.  Unlike Exim's variable of the same name, this variable contains the entire message body.  Newlines and nulls are replaced by spaces.

Line 419, length 82

.el .IP "S . \fR\f(CB$message_exim_id\fR\fB\fR, \fB\fR\f(CB$message_id\fR\fB\fR" 4

Line 421, length 119

The unique message id that is used by Exim to identify the message.  \f(CW$message_id\fR is deprecated as of Exim 4.53.

Line 425, length 119

A concatenation of all the header lines except for lines added by routers or transports.  RFC2047 decoding is performed

Line 429, length 130

A concatenation of all the header lines except for lines added by routers or transports.  No decoding or translation is performed.

Line 441, length 99

The group id under which the process that called Exim was running as when the message was received.

Line 449, length 98

The user id under which the process that called Exim was running as when the message was received.

Line 450, length 91

.ie n .IP "S . \fR\fB$received_ip_address\fR\fB\fR, \fB\fR\fB$interface_address\fR\fB\fR" 4

Line 451, length 93

.el .IP "S . \fR\f(CB$received_ip_address\fR\fB\fR, \fB\fR\f(CB$interface_address\fR\fB\fR" 4

Line 453, length 128

The address of the local IP interface for network-originated messages.  \f(CW$interface_address\fR is deprecated as of Exim 4.64

Line 454, length 82

.ie n .IP "N . \fR\fB$received_port\fR\fB\fR, \fB\fR\fB$interface_port\fR\fB\fR" 4

Line 455, length 84

.el .IP "N . \fR\f(CB$received_port\fR\fB\fR, \fB\fR\f(CB$interface_port\fR\fB\fR" 4

Line 457, length 108

The local port number if network-originated messages.  \f(CW$interface_port\fR is deprecated as of Exim 4.64

Line 473, length 222

The list of envelope recipients for a message.  Unlike Exim's version, this variable always contains every recipient of the message.  The recipients are separated by a comma and a space.  See also \f(CW$each_recipients\fR.

Line 481, length 258

The list of delivered envelope recipients for a message.  This non-standard variable is in the same format as \f(CW$recipients\fR and contains the list of already-delivered recipients including any generated addresses.  See also \f(CW$each_recipients_del\fR.

Line 485, length 334

The number of envelope recipients for the message which have already been delivered.  Note that this is the count of original recipients to which the message has been delivered.  It does not include generated addresses so it is possible that this number will be less than the number of addresses in the \f(CW$recipients_del\fR string.

Line 489, length 222

The list of undelivered envelope recipients for a message.  This non-standard variable is in the same format as \f(CW$recipients\fR and contains the list of undelivered recipients.  See also \f(CW$each_recipients_undel\fR.

Line 493, length 84

The number of envelope recipients for the message which have not yet been delivered.

Line 497, length 128

The contents of the Reply-To: header line if one exists and it is not empty, or otherwise the contents of the From: header line.

Line 501, length 115

The value of the message's header(s) with the same name.  See section 11.5 of Exim's spec.txt for full description.

Line 505, length 135

The sender's address that was received in the message's envelope.  For bounce messages, the value of this variable is the empty string.

Line 525, length 117

The name of the authenticator driver which successfully authenticated the client from which the message was received.

Line 533, length 81

The port number that was used on the remote host for network-originated messages.

Line 537, length 159

The identification received in response to an RFC 1413 request for remote messages, the login name of the user that called Exim for locally generated messages.

Line 545, length 81

TRUE if the envelope sender of this message was set by an untrusted local caller.

Line 549, length 166

This non-standard variable contains the formatted size string.  That is, for a message whose \f(CW$message_size\fR is 66566 bytes, \f(CW$shown_message_size\fR is 65K.

Line 553, length 115

The value of the active host name when the message was received, as specified by the "smtp_active_hostname" option.

Line 557, length 100

The spam score of the message, for example '3.4' or '30.5'.  (Requires exiscan or WITH_CONTENT_SCAN)

Line 561, length 140

The spam score of the message, multiplied by ten, as an integer value.  For instance '34' or '305'.  (Requires exiscan or WITH_CONTENT_SCAN)

Line 573, length 91

The value of the Distinguished Name of the certificate if Exim is configured to request one

Line 577, length 88

The value of the Server Name Indication TLS extension sent by a client, if one was sent.


-.-.

Add a zero (0) in front of a decimal fraction that begins with a period
(.)

7:.if t .sp .5v

-.-.

Output from "test-groff  -mandoc -t -K utf8 -rF0 -rHY=0 -ww -b -z ":

troff: backtrace: '<stdin>':11: macro 'Vb'
troff: backtrace: file '<stdin>':64
troff:<stdin>:64: warning: font name 'CW' is deprecated

-------------- next part --------------
--- exipick.8	2024-11-09 20:03:16.398134194 +0000
+++ exipick.8.new	2024-11-09 20:53:33.243339076 +0000
@@ -4,16 +4,26 @@
 .\" Standard preamble:
 .\" ========================================================================
 .de Sp \" Vertical space (when we can't use .PP)
-.if t .sp .5v
+.if t .sp 0.5v
 .if n .sp
 ..
 .de Vb \" Begin verbatim text
-.ft CW
+.ie \\n(.g \{\
+.  ds prev-font \fP
+.  ie t .ftr CW CR
+.  el .ftr CW R
+.\}
+.el .ft CW
+.
 .nf
 .ne \\$1
 ..
 .de Ve \" End verbatim text
-.ft R
+.ie \\n(.g \{\
+.ft \\*[prev-font]
+.\}
+.el .ft R
+.
 .fi
 ..
 .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>.
@@ -153,8 +163,10 @@ Same as \f(CW\*(C`\-bpu \-\-unsorted\*(C
 Same as \f(CW\*(C`\-bp\*(C'\fR, but only show undelivered messages (exim)
 .IP "\fB\-C\fR | \fB\-\-config\fR \fIconfig\fR" 4
 .IX Item "-C | --config config"
-Use \fIconfig\fR to determine the proper spool directory. (See \f(CW\*(C`\-\-spool\*(C'\fR
-or \f(CW\*(C`\-\-input\*(C'\fR for alternative ways to specify the directories to operate on.)
+Use \fIconfig\fR to determine the proper spool directory.
+(See \f(CW\*(C`\-\-spool\*(C'\fR or
+\f(CW\*(C`\-\-input\*(C'\fR for alternative ways to specify the directories
+to operate on.)
 .IP \fB\-c\fR 4
 .IX Item "-c"
 Show a count of matching messages (exiqgrep)
@@ -197,7 +209,8 @@ Same as \f(CW\*(C`$message_age > <second
 Display messages matching any criteria
 .IP "\fB\-\-queue\fR \fIname\fR" 4
 .IX Item "--queue name"
-Name of the queue (default: ''). See "named queues" in the spec.
+Name of the queue (default: '').
+See "named queues" in the spec.
 .IP "\fB\-r\fR \fIregexp\fR" 4
 .IX Item "-r regexp"
 Same as \f(CW\*(C`$recipients =~ /<regexp>/\*(C'\fR (exiqgrep).  Note that this preserves the default case sensitivity of exiqgrep's interface.
@@ -212,7 +225,17 @@ Display messages in reverse order (exiqg
 Same as \f(CW\*(C`$shown_message_size eq <string>\*(C'\fR (exiqgrep)
 .IP "\fB\-\-spool\fR \fIpath\fR" 4
 .IX Item "--spool path"
-Set the path to the exim spool to use.  This value will have the arguments to \f(CW\*(C`\-\-queue\*(C'\fR, and \f(CW\*(C`\-\-input\*(C'\fR or \fIinput\fR appended, or be ignored if \f(CW\*(C`\-\-input\*(C'\fR is a full path. If not specified, \fBexipick\fR uses the value from \f(CW\*(C`exim [\-C config] \-n \-bP spool_directory\*(C'\fR, and if this call fails, the  \fI/opt/exim/spool\fR from build time (\fILocal/Makefile\fR) is used. See also \f(CW\*(C`\-\-config\*(C'\fR.
+Set the path to the exim spool to use.
+This value will have the arguments to \f(CW\*(C`\-\-queue\*(C'\fR,
+and \f(CW\*(C`\-\-input\*(C'\fR or \fIinput\fR appended,
+or be ignored if \f(CW\*(C`\-\-input\*(C'\fR is a full path.
+If not specified,
+\fBexipick\fR uses the value from \f(CW\*(C`exim [\-C config] \-n \-bP
+spool_directory\*(C'\fR,
+and if this call fails, the \fI/opt/exim/spool\fR
+from build time (\fILocal/Makefile\fR) is used.
+See also
+\f(CW\*(C`\-\-config\*(C'\fR.
 .IP \fB\-\-show\-rules\fR 4
 .IX Item "--show-rules"
 Show the internal representation of each criterion specified
@@ -283,12 +306,34 @@ The string operators are =, eq, ne, =~,
 .Ve
 .IP NEGATION 4
 .IX Item "NEGATION"
-There are many ways to negate tests, each having a reason for existing.  Many tests can be negated using native operators.  For instance, >1 is the opposite of <=1 and eq and ne are opposites.  In addition, each individual test can be negated by adding a ! at the beginning of the test.  For instance, \f(CW\*(C`!$acl_m1 =~ /^DENY$/\*(C'\fR is the same as \f(CW\*(C`$acl_m1 !~ /^DENY$/\*(C'\fR.  Finally, every test can be specified by using the command line argument \f(CW\*(C`\-\-not\*(C'\fR.  This is functionally equivalent to adding a ! to the beginning of every test.
+There are many ways to negate tests, each having a reason for existing.
+Many tests can be negated using native operators.
+For instance, >1 is the opposite of <=1 and eq and ne are opposites.
+In addition, each individual test can be negated by adding a ! at the
+beginning of the test.
+For instance, \f(CW\*(C`!$acl_m1 =~ /^DENY$/\*(C'\fR is the same as
+\f(CW\*(C`$acl_m1 !~ /^DENY$/\*(C'\fR.
+Finally, every test can be specified by using the command line argument
+\f(CW\*(C`\-\-not\*(C'\fR.
+This is functionally equivalent to adding a ! to the beginning of every test.
 .SH VARIABLES
 .IX Header "VARIABLES"
-With a few exceptions the available variables match Exim's internal expansion variables in both name and exact contents.  There are a few notable additions and format deviations which are noted below.  Although a brief explanation is offered below, Exim's spec.txt should be consulted for full details.  It is important to remember that not every variable will be defined for every message.  For example, \f(CW$sender_host_port\fR is not defined for messages not received from a remote host.
+With a few exceptions the available variables match Exim's internal
+expansion variables in both name and exact contents.
+There are a few notable additions and format deviations which are noted
+below.
+Although a brief explanation is offered below,
+Exim's spec.txt should be consulted for full details.
+It is important to remember that not every variable will be defined for
+every message.
+For example, \f(CW$sender_host_port\fR is not defined for messages not
+received from a remote host.
 .PP
-Internally, all variables are represented as strings, meaning any operator will work on any variable.  This means that \f(CW\*(C`$sender_host_name > 4\*(C'\fR is a legal criterion, even if it does not produce meaningful results.  Variables in the list below are marked with a 'type' to help in choosing which types of operators make sense to use.
+Internally, all variables are represented as strings, meaning any operator will work on any
+variable.
+This means that \f(CW\*(C`$sender_host_name > 4\*(C'\fR is a valid criterion, even if it does not produce meaningful
+results.
+Variables in the list below are marked with a 'type' to help in choosing which types of operators make sense to use.
 .PP
 .Vb 7
 \&  Identifiers


More information about the Pkg-exim4-maintainers mailing list