[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gawk-diffs] [SCM] gawk branch, feature/better-index, updated. gawk-4.1.
From: |
Arnold Robbins |
Subject: |
[gawk-diffs] [SCM] gawk branch, feature/better-index, updated. gawk-4.1.0-3720-g874ac66 |
Date: |
Mon, 15 Apr 2019 13:55:29 -0400 (EDT) |
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gawk".
The branch, feature/better-index has been updated
via 874ac661e36b277ed145f8a29a419af6d5b728ff (commit)
from 8ded83c76cba4b10377d0f2a70b24d21f18097fd (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://git.sv.gnu.org/cgit/gawk.git/commit/?id=874ac661e36b277ed145f8a29a419af6d5b728ff
commit 874ac661e36b277ed145f8a29a419af6d5b728ff
Author: Arnold D. Robbins <address@hidden>
Date: Mon Apr 15 20:55:19 2019 +0300
More indexing fixes.
diff --git a/doc/gawktexi.in b/doc/gawktexi.in
index 18dab2b..e2e51a1 100644
--- a/doc/gawktexi.in
+++ b/doc/gawktexi.in
@@ -2329,7 +2329,7 @@ of the patterns, @command{awk} performs specified actions
on that line.
the end of the input files.
@cindex @command{awk} @subentry uses for
address@hidden programming address@hidden data-driven vs.@: procedural
address@hidden programming languages @subentry data-driven vs.@: procedural
@cindex @command{awk} programs
Programs in @command{awk} are different from programs in most other languages,
because @command{awk} programs are @dfn{data driven} (i.e., you describe
@@ -2844,7 +2844,7 @@ awk -F "" '@var{program}' @var{files} # correct
@end example
@noindent
address@hidden null strings in @command{gawk} arguments @subentry quoting and
address@hidden null strings @subentry in @command{gawk} arguments, quoting and
Don't use this:
@example
@@ -3999,7 +3999,7 @@ at their beginning. @xref{Changing The Namespace}, for
more information.
@itemx @option{--load} @var{ext}
@cindex @option{-l} option
@cindex @option{--load} option
address@hidden loading, extensions
address@hidden loading extensions
Load a dynamic extension named @var{ext}. Extensions
are stored as system shared libraries.
This option searches for the library using the @env{AWKLIBPATH}
@@ -4676,6 +4676,7 @@ This @value{SECTION} describes a feature that is specific
to @command{gawk}.
@cindex at-sign (@code{@@}) @subentry @code{@@include} directive
@cindex file inclusion, @code{@@include} directive
@cindex including files, @code{@@include} directive
address@hidden @code{@@include} directive @sortas{include directive}
The @code{@@include} keyword can be used to read external @command{awk} source
files. This gives you the ability to split large @command{awk} source files
into smaller, more manageable pieces, and also lets you reuse common
@command{awk}
@@ -4803,8 +4804,9 @@ This @value{SECTION} describes a feature that is specific
to @command{gawk}.
@cindex @code{@@} (at-sign) @subentry @code{@@load} directive
@cindex at-sign (@code{@@}) @subentry @code{@@load} directive
address@hidden loading extensions, @code{@@load} directive
address@hidden loading extensions @subentry @code{@@load} directive
@cindex extensions @subentry loadable @subentry loading, @code{@@load}
directive
address@hidden @code{@@load} directive @sortas{load directive}
The @code{@@load} keyword can be used to read external @command{awk} extensions
(stored as system shared libraries).
This allows you to link in compiled code that may offer superior
@@ -5054,7 +5056,7 @@ regular expressions work, we present more complicated
instances.
@node Regexp Usage
@section How to Use Regular Expressions
address@hidden patterns @subentry regular expressions as
address@hidden patterns @subentry regexp constants as
@cindex regular expressions @subentry as patterns
A regular expression can be used as a pattern by enclosing it in
slashes. Then the regular expression is tested against the
@@ -5455,6 +5457,7 @@ concatenation, we can make a regular expression such as
@samp{U.A}, which
matches any three-character sequence that begins with @samp{U} and ends
with @samp{A}.
address@hidden POSIX mode
@cindex POSIX @command{awk} @subentry period (@code{.}), using
In strict POSIX mode (@pxref{Options}),
@samp{.} does not match the @sc{nul}
@@ -5570,7 +5573,7 @@ Matches @samp{whhy}, @samp{whhhy}, and so on.
@end table
@end table
address@hidden precedence, regexp operators
address@hidden precedence @subentry regexp operators
@cindex regular expressions @subentry operators @subentry precedence of
In regular expressions, the @samp{*}, @samp{+}, and @samp{?} operators,
as well as the braces @address@hidden and @address@hidden,
@@ -6091,7 +6094,7 @@ GNU operators, but this was deemed too confusing. The
current
method of using @samp{\y} for the GNU @samp{\b} appears to be the
lesser of two evils.
address@hidden regular expressions @subentry @command{gawk} @subentry
command-line options
address@hidden regular expressions @subentry @command{gawk}, command-line
options
@cindex @command{gawk} @subentry command-line options, regular expressions and
The various command-line options
(@pxref{Options})
@@ -6926,7 +6929,7 @@ The intervening field, @code{$5}, is created with an
empty value
and @code{NF} is updated with the value six.
@cindex dark corner @subentry @code{NF} variable, decrementing
address@hidden @code{NF} variable, decrementing
address@hidden @code{NF} variable @subentry decrementing
Decrementing @code{NF} throws away the values of the fields
after the new value of @code{NF} and recomputes @code{$0}.
@value{DARKCORNER}
@@ -7859,7 +7862,7 @@ a page of the file. To do this, just set the variable
@code{RS} to
other character could equally well be used, as long as it won't be part
of the data in a record.
address@hidden @code{RS} variable, multiline records and
address@hidden @code{RS} variable @subentry multiline records and
Another technique is to have blank lines separate records. By a special
dispensation, an empty string as the value of @code{RS} indicates that
records are separated by one or more blank lines. When @code{RS} is set
@@ -8858,6 +8861,7 @@ from the default input stream, from a file, or from a
pipe or coprocess.
Use @address@hidden, "READ_TIMEOUT"]} to cause reads to time out
for @var{file}.
address@hidden POSIX mode
@item
Directories on the command line are fatal for standard @command{awk};
@command{gawk} ignores them if not in POSIX mode.
@@ -8952,7 +8956,7 @@ current record (such as @code{$1}), variables, or any
@command{awk}
expression. Numeric values are converted to strings and then printed.
@cindex records @subentry printing
address@hidden lines, blank, printing
address@hidden lines @subentry blank, printing
@cindex text @subentry printing
The simple statement @samp{print} with no items is equivalent to
@samp{print $0}: it prints the entire current record. To print a blank
@@ -9015,7 +9019,7 @@ $ @kbd{awk '@{ print $1, $2 @}' inventory-shipped}
@dots{}
@end example
address@hidden @code{print} statement @subentry commas @subentry omitting
address@hidden @code{print} statement @subentry commas, omitting
@cindex troubleshooting @subentry @code{print} statement, omitting commas
A common mistake in using the @code{print} statement is to omit the comma
between two items. This often has the effect of making the items run
@@ -9190,7 +9194,7 @@ $ @kbd{awk 'BEGIN @{}
@noindent
@cindex dark corner @subentry @code{OFMT} variable
@cindex POSIX @command{awk} @subentry @code{OFMT} variable and
address@hidden @code{OFMT} variable, POSIX @command{awk} and
address@hidden @code{OFMT} variable @subentry POSIX @command{awk} and
According to the POSIX standard, @command{awk}'s behavior is undefined
if @code{OFMT} contains anything but a floating-point conversion specification.
@value{DARKCORNER}
@@ -9736,8 +9740,8 @@ Redirections in @command{awk} are written just like
redirections in shell
commands, except that they are written inside the @command{awk} program.
@c the commas here are part of the see also
address@hidden @code{print} statement @address@hidden of output}
address@hidden @code{printf} statement @address@hidden of output}
address@hidden @code{print} statement @seealso{redirection of output}
address@hidden @code{printf} statement @seealso{redirection of output}
There are four forms of output redirection: output to a file, output
appended to a file, output through a pipe to another command, and output
to a coprocess. We show them all for the @code{print} statement,
@@ -10124,6 +10128,7 @@ special @value{FN}s that @command{gawk} provides:
@itemize @value{BULLET}
@cindex compatibility mode (@command{gawk}) @subentry file names
@cindex file names @subentry in compatibility mode
address@hidden POSIX mode
@item
Recognition of the @value{FN}s for the three standard preopened
files is disabled only in POSIX mode.
@@ -10367,6 +10372,7 @@ if it fails.
@end multitable
@end float
address@hidden POSIX mode
The POSIX standard is very vague; it says that @code{close()}
returns zero on success and a nonzero value otherwise. In general,
different implementations vary in what they report when closing
@@ -10575,7 +10581,7 @@ have different forms, but are internally stored in an
identical manner.
@subsubsection Numeric and String Constants
@cindex constants @subentry numeric
address@hidden numeric constants
address@hidden numeric @subentry constants
A @dfn{numeric constant} stands for a number. This number can be an
integer, a decimal fraction, or a number in scientific (exponential)
address@hidden internal representation of all numbers,
@@ -10657,6 +10663,7 @@ $ @kbd{gawk 'BEGIN @{ print "hello, \}
@print{} hello, world
@end example
address@hidden POSIX mode
In POSIX mode (@pxref{Options}), @command{gawk} does not
allow escaped newlines. Otherwise, it behaves as just described.
@@ -11281,6 +11288,7 @@ the decimal point separator. In the normal @code{"C"}
locale, @command{gawk}
treats @samp{4,321} as 4, while in the Danish locale, it's treated
as the full number including the fractional part, 4.321.
address@hidden POSIX mode
Some earlier versions of @command{gawk} fully complied with this aspect
of the standard. However, many users in non-English locales complained
about this behavior, because their data used a period as the decimal
@@ -12353,6 +12361,7 @@ $ @kbd{echo hello 37 | gawk '@{ print typeof($1),
typeof($2) @}'}
@node Comparison Operators
@subsubsection Comparison Operators
address@hidden operators @subentry comparison
@dfn{Comparison expressions} compare strings or numbers for
relationships such as equality. They are written using @dfn{relational
@@ -12523,6 +12532,7 @@ address@hidden, string comparison is supposed to behave
the same way as if the strings were compared with the C @code{strcoll()}
function.}
address@hidden POSIX mode
Because this behavior differs considerably from existing practice,
@command{gawk} only implemented it when in POSIX mode (@pxref{Options}).
Here is an example to illustrate the difference, in an @code{en_US.UTF-8}
@@ -12554,6 +12564,7 @@ a <= b && a >= b
@end example
@end quotation
address@hidden POSIX mode
As of @value{PVERSION} 4.2, @command{gawk} continues to use locale
collating order for @code{<}, @code{<=}, @code{>}, and @code{>=} only
in POSIX mode.
@@ -12893,7 +12904,7 @@ $ @kbd{awk -f matchit.awk}
@node Precedence
@section Operator Precedence (How Operators Nest)
@cindex precedence
address@hidden operators @subentry precedence
address@hidden operators @subentry precedence of
@dfn{Operator precedence} determines how operators are grouped when
different operators appear close by in one expression. For example,
@@ -13262,7 +13273,7 @@ The empty pattern matches every input record.
@node Regexp Patterns
@subsection Regular Expressions as Patterns
address@hidden patterns @subentry regular expressions as
address@hidden patterns @subentry regexp constants as
@cindex regular expressions @subentry as patterns
Regular expressions are one of the first kinds of patterns presented
@@ -13477,7 +13488,7 @@ $ @kbd{echo Yes | gawk '(/1/,/2/) || /Yes/'}
@error{} gawk: cmd. line:1: ^ syntax error
@end example
address@hidden range patterns, line continuation and
address@hidden range patterns @subentry line continuation and
@cindex dark corner @subentry range patterns, line continuation and
As a minor point of interest, although it is poor style,
POSIX allows you to put a newline after the comma in
@@ -14174,7 +14185,7 @@ while (@var{condition}) @{
@}
@end example
address@hidden loops @subentry @code{continue} statements and
address@hidden loops @subentry @code{continue} statement and
@noindent
The only exception is when the @code{continue} statement
(@pxref{Continue Statement}) is used
@@ -15173,6 +15184,7 @@ while the program runs.
@item PROCINFO["platform"]
@cindex platform running on
address@hidden @code{PROCINFO} array @subentry platform running on
This element gives a string indicating the platform for which
@command{gawk} was compiled. The value will be one of the following:
@@ -16316,7 +16328,7 @@ to use for comparison of array elements. This advanced
feature
is described later in @ref{Array Sorting}.
@end itemize
address@hidden @code{PROCINFO} @subentry values of @code{sorted_in}
address@hidden @code{PROCINFO} array @subentry values of @code{sorted_in}
The following special values for @code{PROCINFO["sorted_in"]} are available:
@table @code
@@ -16626,7 +16638,7 @@ if (4 in foo)
@end group
@end example
address@hidden lint checking @subentry array elements
address@hidden lint checking @subentry array subscripts
It is not an error to delete an element that does not exist.
However, if @option{--lint} is provided on the command line
(@pxref{Options}),
@@ -17180,7 +17192,7 @@ two arguments 11 and 10.
@node Numeric Functions
@subsection Numeric Functions
address@hidden numeric functions
address@hidden numeric @subentry functions
The following list describes all of
the built-in functions that work with numbers.
@@ -17668,9 +17680,9 @@ functions that work with regular expressions, such as
for @code{match()}, the order is the same as for the @samp{~} operator:
@address@hidden ~ @var{regexp}}.
address@hidden @code{RSTART} variable, @code{match()} function and
address@hidden @code{RLENGTH} variable, @code{match()} function and
address@hidden @code{match()} function, @code{RSTART}/@code{RLENGTH} variables
address@hidden @code{RSTART} variable @subentry @code{match()} function and
address@hidden @code{RLENGTH} variable @subentry @code{match()} function and
address@hidden @code{match()} function @subentry @code{RSTART}/@code{RLENGTH}
variables
The @code{match()} function sets the predefined variable @code{RSTART} to
the index. It also sets the predefined variable @code{RLENGTH} to the
length in characters of the matched substring. If no match is found,
@@ -17874,6 +17886,7 @@ If @var{string} does not match @var{fieldsep} at all
(but is not null),
@var{array} has one element only. The value of that element is the original
@var{string}.
address@hidden POSIX mode
In POSIX mode (@pxref{Options}), the fourth argument is not allowed.
@item @code{sprintf(@var{format}, @var{expression1}, @dots{})}
@@ -19243,7 +19256,6 @@ Return the bitwise AND of the arguments. There must be
at least two.
Return the bitwise complement of @var{val}.
@cindexgawkfunc{lshift}
address@hidden left shift
@item @code{lshift(@var{val}, @var{count})}
Return the value of @var{val}, shifted left by @var{count} bits.
@@ -19253,7 +19265,6 @@ Return the value of @var{val}, shifted left by
@var{count} bits.
Return the bitwise OR of the arguments. There must be at least two.
@cindexgawkfunc{rshift}
address@hidden right shift
@item @code{rshift(@var{val}, @var{count})}
Return the value of @var{val}, shifted right by @var{count} bits.
@@ -19623,7 +19634,7 @@ The definition of a function named @var{name} looks
like this:
@cindex names @subentry functions
@cindex functions @subentry names of
address@hidden namespace issues, functions
address@hidden namespace issues @subentry functions
@noindent
Here, @var{name} is the name of the function to define. A valid function
name is like a valid variable name: a sequence of letters, digits, and
@@ -22566,7 +22577,7 @@ use @code{getopt()} to process their arguments.
@cindex libraries of @command{awk} functions @subentry user database @subentry
reading
@cindex functions @subentry library @subentry user database, reading
address@hidden user address@hidden reading
address@hidden user database, reading
@cindex database @subentry users, reading
@cindex @code{PROCINFO} array
The @code{PROCINFO} array
@@ -22924,7 +22935,7 @@ uses these functions.
@cindex @code{PROCINFO} array @subentry group membership and
@cindex @code{getgrent()} function (C library)
@cindex @code{getgrent()} user-defined function
address@hidden address@hidden information about
address@hidden groups, information about
@cindex account information
@cindex group file
@cindex files @subentry group
@@ -27520,6 +27531,7 @@ function should use the @code{isarray()} function
(@pxref{Type Functions})
to check for this, and choose a defined sorting order for subarrays.
address@hidden POSIX mode
All sorting based on @code{PROCINFO["sorted_in"]}
is disabled in POSIX mode,
because the @code{PROCINFO} array is not special in that case.
@@ -28234,7 +28246,7 @@ Multiple @code{BEGIN} and @code{END} rules retain their
separate identities, as do
multiple @code{BEGINFILE} and @code{ENDFILE} rules.
address@hidden patterns @subentry counts @subentry in a profile
address@hidden patterns @subentry counts, in a profile
@item
Pattern--action rules have two counts.
The first count, to the left of the rule, shows how many times
@@ -28333,7 +28345,7 @@ which is correct, but possibly unexpected.
(If a program uses both @samp{print $0} and plain
@samp{print}, that distinction is retained.)
address@hidden profiling @command{awk} programs, dynamically
address@hidden profiling @command{awk} programs @subentry dynamically
@cindex @command{gawk} @subentry dynamic profiling
@cindex @command{gawk} @subentry profiling programs
@cindex dynamic profiling
@@ -28414,8 +28426,8 @@ Once upon a time, the @option{--pretty-print} option
would also run
your program. This is is no longer the case.
@end quotation
address@hidden profiling, pretty-printing, difference with
address@hidden pretty-printing, profiling, difference with
address@hidden profiling, pretty printing, difference with
address@hidden pretty printing @subentry profiling, difference with
There is a significant difference between the output created when
profiling, and that created when pretty-printing. Pretty-printed output
preserves the original comments that were in the program, although their
@@ -28903,7 +28915,7 @@ printf(message, ncustomers)
@end example
address@hidden @code{LC_MESSAGES} locale category, @code{bindtextdomain()}
function (@command{gawk})
address@hidden @code{LC_MESSAGES} locale category @subentry
@code{bindtextdomain()} function (@command{gawk})
@item
During development, you might want to put the @file{.gmo}
file in a private directory for testing. This is done
@@ -30873,7 +30885,7 @@ please report them (@xref{Bugs}).
@section Standard @command{awk}'s Single Namespace
@cindex namespace @subentry definition of
address@hidden namespace @subentry standard @command{awk} @subentry global
address@hidden namespace @subentry standard @command{awk}, global
In standard @command{awk}, there is a single, global, @dfn{namespace}.
This means that @emph{all} function names and global variable names must
be unique. For example, two different @command{awk} source files cannot
@@ -31004,7 +31016,7 @@ of @code{BEGIN}, @code{BEGINFILE}, @code{END}, and
@code{ENDFILE} rules.
@node Naming Rules
@section Namespace and Component Naming Rules
address@hidden naming rules, namespaces and component names
address@hidden naming rules, namespace and component names
@cindex namespace names, naming rules
@cindex component names @subentry naming rules
A number of rules apply to the namespace and component names, as follows.
@@ -31231,8 +31243,8 @@ $ @kbd{gawk -f ns_passwd.awk -f testpasswd.awk}
This @value{SECTION} looks briefly at how the namespace facility interacts
with other important @command{gawk} features.
address@hidden namespaces @subentry interaction with profiler
address@hidden namespaces @subentry interaction with pretty printer
address@hidden namespaces @subentry interaction with @subentry profiler
address@hidden namespaces @subentry interaction with @subentry pretty printer
@cindex profiler, interaction with namespaces
@cindex pretty printer, interaction with namespaces
The profiler and pretty-printer (@pxref{Profiling}) have been enhanced
@@ -31242,14 +31254,14 @@ namespace together, and has @code{@@namespace}
directives in front
of rules as necessary. This allows component names to be
simple identifiers, instead of using qualified identifiers everywhere.
address@hidden namespaces @subentry interaction with debugger
address@hidden namespaces @subentry interaction with @subentry debugger
@cindex debugger @subentry interaction with namespaces
Interaction with the debugger (@pxref{Debugging}) has not had to change
(at least as of this writing). Some of the internal byte codes changed
in order to accommodate namespaces, and the debugger's @code{dump} command
was adjusted to match.
address@hidden namespaces @subentry interaction with extension API
address@hidden namespaces @subentry interaction with @subentry extension API
@cindex extension API @subentry interaction with namespaces
The extension API (@pxref{Dynamic Extensions}) has always allowed for
placing functions into a different namespace, although this was not
@@ -32296,9 +32308,8 @@ word sizes. See
@node Checking for MPFR
@section How To Check If MPFR Is Available
address@hidden MPFR @subentry checking availability of
@cindex checking for MPFR
address@hidden MPFR @subentry checking for
address@hidden MPFR, checking for
Occasionally, you might like to be able to check if @command{gawk}
was invoked with the @option{-M} option, enabling arbitrary-precision
arithmetic. You can do so with the following function, contributed
@@ -32450,6 +32461,7 @@ $ @kbd{echo 0xDeadBeef | gawk '@{ print $1 + 0 @}'}
Thus, @samp{+nan} and @samp{+NaN} are the same.
@end itemize
address@hidden POSIX mode
Besides handling input, @command{gawk} also needs to print ``correct'' values
on
output when a value is either NaN or infinity. Starting with @value{PVERSION}
4.2.2, for such values @command{gawk} prints one of the four strings
@@ -33348,7 +33360,7 @@ to be a @samp{char *} value pointing to data previously
obtained from
@node Registration Functions
@subsection Registration Functions
address@hidden register extension
address@hidden register loadable extension
@cindex extensions @subentry loadable @subentry registration
This @value{SECTION} describes the API functions for
@@ -34028,7 +34040,7 @@ Register the two-way processor pointed to by
@code{two_way_processor} with
@node Printing Messages
@subsection Printing Messages
address@hidden printing messages from extensions
address@hidden printing @subentry messages from extensions
@cindex messages from extensions
You can print different kinds of warning messages from your
@@ -38327,6 +38339,7 @@ a global symbol indicating that they are GPL-compatible
(@pxref{Plugin License}).
@item
address@hidden POSIX mode
In POSIX mode, string comparisons use @code{strcoll()} / @code{wcscoll()}
(@pxref{POSIX String Comparison}).
@@ -38899,7 +38912,7 @@ of IBM in Japan, contributed support for multibyte
characters.
Michael Benzinger contributed the initial code for @code{switch} statements.
@item
address@hidden McPhee, Patrick
address@hidden McPhee, Patrick T.J.@:
Patrick T.J.@: McPhee contributed the code for dynamic loading in Windows32
environments.
(This is no longer supported.)
@@ -39026,7 +39039,10 @@ the appropriate credit where credit is due.
@appendix Installing @command{gawk}
@c last two commas are part of see also
address@hidden operating systems @seealso{GNU/address@hidden PC operating
address@hidden Unix}
address@hidden operating systems
address@hidden operating systems @seealso{GNU/Linux}
address@hidden operating systems @seealso{PC operating systems}
address@hidden operating systems @seealso{Unix}
@cindex @command{gawk} @subentry installing
@cindex installing @command{gawk}
This appendix provides instructions for installing @command{gawk} on the
@@ -39606,7 +39622,7 @@ various non-Unix systems.
@node PC Installation
@appendixsubsec Installation on MS-Windows
address@hidden PC operating address@hidden @command{gawk} on, installing
address@hidden PC operating systems, @command{gawk} on @subentry installing
@cindex operating systems @subentry PC, @command{gawk} on @subentry installing
This @value{SECTION} covers installation and usage of @command{gawk}
on Intel architecture machines running any version of MS-Windows.
@@ -39657,8 +39673,8 @@ type @samp{make mingw32}.
@node PC Using
@appendixsubsubsec Using @command{gawk} on PC Operating Systems
address@hidden operating systems, PC, @command{gawk} on
address@hidden PC operating systems @subentry @command{gawk} on
address@hidden operating systems @subentry PC, @command{gawk} on
address@hidden PC operating systems, @command{gawk} on
Information in this section applies to the MinGW and
DJGPP ports of @command{gawk}. @xref{Cygwin} for information
-----------------------------------------------------------------------
Summary of changes:
doc/gawktexi.in | 116 ++++++++++++++++++++++++++++++++------------------------
1 file changed, 66 insertions(+), 50 deletions(-)
hooks/post-receive
--
gawk
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gawk-diffs] [SCM] gawk branch, feature/better-index, updated. gawk-4.1.0-3720-g874ac66,
Arnold Robbins <=