Index: Makefile.inc1 =================================================================== diff --git a/head/Makefile.inc1 b/head/Makefile.inc1 --- a/head/Makefile.inc1 (revision 267841) +++ b/head/Makefile.inc1 (working copy) @@ -247,7 +247,7 @@ DESTDIR= \ BOOTSTRAPPING=${OSRELDATE} \ SSP_CFLAGS= MK_PIE=no \ - MK_HTML=no MK_INFO=no NO_LINT=yes MK_MAN=no \ + MK_HTML=no NO_LINT=yes MK_MAN=no \ -DNO_PIC MK_PROFILE=no -DNO_SHARED \ -DNO_CPU_CFLAGS MK_WARNS=no MK_CTF=no \ MK_CLANG_FULL=no MK_LLDB=no MK_TESTS=no @@ -277,7 +277,7 @@ DESTDIR= \ BOOTSTRAPPING=${OSRELDATE} \ SSP_CFLAGS= MK_PIE=no \ - MK_HTML=no MK_INFO=no -DNO_LINT MK_MAN=no \ + MK_HTML=no -DNO_LINT MK_MAN=no \ -DNO_PIC MK_PROFILE=no -DNO_SHARED \ -DNO_CPU_CFLAGS MK_WARNS=no MK_CTF=no @@ -407,7 +407,7 @@ MK_TESTS=no LIB32WMAKE= ${LIB32WMAKEENV} ${MAKE} ${LIB32WMAKEFLAGS} \ - MK_MAN=no MK_INFO=no MK_HTML=no + MK_MAN=no MK_HTML=no LIB32IMAKE= ${LIB32WMAKE:NINSTALL=*:NDESTDIR=*:N_LDSCRIPTROOT=*} \ MK_TOOLCHAIN=no ${IMAKE_INSTALL} .endif @@ -558,7 +558,7 @@ @echo ">>> stage 4.2: building libraries" @echo "--------------------------------------------------------------" ${_+_}cd ${.CURDIR}; \ - ${WMAKE} -DNO_FSCHG MK_HTML=no MK_INFO=no -DNO_LINT MK_MAN=no \ + ${WMAKE} -DNO_FSCHG MK_HTML=no -DNO_LINT MK_MAN=no \ MK_PROFILE=no MK_TESTS=no libraries _depend: @echo @@ -747,15 +747,12 @@ # # Required install tools to be saved in a scratch dir for safety. # -.if ${MK_INFO} != "no" -_install-info= install-info -.endif .if ${MK_ZONEINFO} != "no" _zoneinfo= zic tzsetup .endif ITOOLS= [ awk cap_mkdb cat chflags chmod chown \ - date echo egrep find grep id install ${_install-info} \ + date echo egrep find grep id install \ ln lockf make mkdir mtree mv pwd_mkdb \ rm sed services_mkdb sh sysctl test true uname wc ${_zoneinfo} \ ${LOCAL_ITOOLS} @@ -1860,7 +1857,7 @@ XDEV_CPUTYPE?=${TARGET_CPUTYPE} .endif -NOFUN=-DNO_FSCHG MK_HTML=no MK_INFO=no -DNO_LINT \ +NOFUN=-DNO_FSCHG MK_HTML=no -DNO_LINT \ MK_MAN=no MK_NLS=no MK_PROFILE=no \ MK_KERBEROS=no MK_RESCUE=no MK_TESTS=no MK_WARNS=no \ TARGET=${XDEV} TARGET_ARCH=${XDEV_ARCH} \ Index: contrib/bmake/mk/own.mk =================================================================== diff --git a/head/contrib/bmake/mk/own.mk b/head/contrib/bmake/mk/own.mk --- a/head/contrib/bmake/mk/own.mk (revision 267841) +++ b/head/contrib/bmake/mk/own.mk (working copy) @@ -237,7 +237,6 @@ .if ${MK_SHARE} == "no" MK_CATPAGES= no MK_DOC= no -MK_INFO= no MK_MAN= no MK_NLS= no .endif Index: gnu/usr.bin/Makefile =================================================================== diff --git a/head/gnu/usr.bin/Makefile b/head/gnu/usr.bin/Makefile --- a/head/gnu/usr.bin/Makefile (revision 267841) +++ b/head/gnu/usr.bin/Makefile (working copy) @@ -14,8 +14,7 @@ ${_groff} \ ${_rcs} \ sdiff \ - ${_tests} \ - ${_texinfo} + ${_tests} .if ${MK_CXX} != "no" _gperf= gperf @@ -28,10 +27,6 @@ _dtc= dtc .endif -.if ${MK_INFO} != "no" -_texinfo= texinfo -.endif - .if ${MK_RCS} != "no" _rcs= rcs .endif Index: gnu/lib/libreadline/history/Makefile =================================================================== diff --git a/head/gnu/lib/libreadline/history/Makefile b/head/gnu/lib/libreadline/history/Makefile --- a/head/gnu/lib/libreadline/history/Makefile (revision 267841) +++ b/head/gnu/lib/libreadline/history/Makefile (working copy) @@ -1,7 +1,5 @@ # $FreeBSD$ -SUBDIR= doc - LIB= history MAN= rlhistory.3 Index: gnu/lib/libreadline/history/doc/Makefile =================================================================== diff --git a/head/gnu/lib/libreadline/history/doc/Makefile b/head/gnu/lib/libreadline/history/doc/Makefile deleted file mode 10644 --- a/head/gnu/lib/libreadline/history/doc/Makefile (revision 267841) +++ /dev/null (working copy) @@ -1,12 +0,0 @@ -# $FreeBSD$ - -SRCDIR= ${.CURDIR}/../../../../../contrib/libreadline/doc - -INFO = history - -INFOSECTION= "Programming & development tools." -INFOENTRY_history= "* History: (history). The GNU History library." - -history.info: history.texi hstech.texi hsuser.texi version.texi fdl.texi - -.include Index: gnu/lib/libreadline/readline/Makefile =================================================================== diff --git a/head/gnu/lib/libreadline/readline/Makefile b/head/gnu/lib/libreadline/readline/Makefile --- a/head/gnu/lib/libreadline/readline/Makefile (revision 267841) +++ b/head/gnu/lib/libreadline/readline/Makefile (working copy) @@ -1,7 +1,5 @@ # $FreeBSD$ -SUBDIR= doc - LIB= readline MAN= doc/readline.3 SHLIBDIR?= /lib Index: gnu/lib/libreadline/readline/doc/Makefile =================================================================== diff --git a/head/gnu/lib/libreadline/readline/doc/Makefile b/head/gnu/lib/libreadline/readline/doc/Makefile deleted file mode 10644 --- a/head/gnu/lib/libreadline/readline/doc/Makefile (revision 267841) +++ /dev/null (working copy) @@ -1,20 +0,0 @@ -# $FreeBSD$ - -SRCDIR= ${.CURDIR}/../../../../../contrib/libreadline/doc - -INFO = readline rluserman - -INFOSECTION= "Programming & development tools." -INFOENTRY_readline= "* Readline: (readline). The GNU Readline library" -INFOENTRY_rluserman= "* Readline: (readline). The GNU readline library API" - -CLEANFILES += readline.texi - -readline.info: rlman.texi rluser.texi rltech.texi version.texi fdl.texi - -readline.texi: rlman.texi - cp -f ${SRCDIR}/rlman.texi ${.TARGET} - -rluserman.info: rluserman.texi version.texi rluser.texi fdl.texi - -.include Index: gnu/lib/libregex/Makefile =================================================================== diff --git a/head/gnu/lib/libregex/Makefile b/head/gnu/lib/libregex/Makefile --- a/head/gnu/lib/libregex/Makefile (revision 267841) +++ b/head/gnu/lib/libregex/Makefile (working copy) @@ -1,7 +1,5 @@ # $FreeBSD$ -SUBDIR= doc - LIB= gnuregex SHLIB_MAJOR= 5 Index: gnu/lib/libregex/doc/Makefile =================================================================== diff --git a/head/gnu/lib/libregex/doc/Makefile b/head/gnu/lib/libregex/doc/Makefile deleted file mode 10644 --- a/head/gnu/lib/libregex/doc/Makefile (revision 267841) +++ /dev/null (working copy) @@ -1,14 +0,0 @@ -# $FreeBSD$ - -INFO = regex -INFOSECTION= "Programming & development tools." -INFOENTRY_regex= "* Regex: (regex). Regular expression library." - -CLEANFILES += regex.texi - -regex.texi: xregex.texi ../regex.h - awk -f ${.CURDIR}/include.awk -v source=${.CURDIR}/../regex.h \ - < ${.CURDIR}/xregex.texi \ - | expand >$@ - -.include Index: gnu/lib/libregex/doc/include.awk =================================================================== diff --git a/head/gnu/lib/libregex/doc/include.awk b/head/gnu/lib/libregex/doc/include.awk deleted file mode 10644 --- a/head/gnu/lib/libregex/doc/include.awk (revision 267841) +++ /dev/null (working copy) @@ -1,19 +0,0 @@ -# Assume `source' is set with -vsource=filename on the command line. -# -/^\[\[\[/ { inclusion = $2; # name of the thing to include. - printing = 0; - while ((getline line < source) > 0) - { - if (match (line, "\\[\\[\\[end " inclusion "\\]\\]\\]")) - printing = 0; - - if (printing) - print line; - - if (match (line,"\\[\\[\\[begin " inclusion "\\]\\]\\]")) - printing = 1; - } - close (source); - next; - } - { print } Index: gnu/lib/libregex/doc/xregex.texi =================================================================== diff --git a/head/gnu/lib/libregex/doc/xregex.texi b/head/gnu/lib/libregex/doc/xregex.texi deleted file mode 10644 --- a/head/gnu/lib/libregex/doc/xregex.texi (revision 267841) +++ /dev/null (working copy) @@ -1,3021 +0,0 @@ -\input texinfo -@c %**start of header -@setfilename regex.info -@settitle Regex -@c %**end of header - -@c \\{fill-paragraph} works better (for me, anyway) if the text in the -@c source file isn't indented. -@paragraphindent 2 - -@c Define a new index for our magic constants. -@defcodeindex cn - -@c Put everything in one index (arbitrarily chosen to be the concept index). -@syncodeindex cn cp -@syncodeindex ky cp -@syncodeindex pg cp -@syncodeindex tp cp -@syncodeindex vr cp - -@c Here is what we use in the Info `dir' file: -@c * Regex: (regex). Regular expression library. - - -@ifinfo -This file documents the GNU regular expression library. - -Copyright (C) 1992, 1993 Free Software Foundation, Inc. - -Permission is granted to make and distribute verbatim copies of this -manual provided the copyright notice and this permission notice are -preserved on all copies. - -@ignore -Permission is granted to process this file through TeX and print the -results, provided the printed document carries a copying permission -notice identical to this one except for the removal of this paragraph -(this paragraph not being relevant to the printed manual). -@end ignore - -Permission is granted to copy and distribute modified versions of this -manual under the conditions for verbatim copying, provided also that the -section entitled ``GNU General Public License'' is included exactly as -in the original, and provided that the entire resulting derived work is -distributed under the terms of a permission notice identical to this one. - -Permission is granted to copy and distribute translations of this manual -into another language, under the above conditions for modified versions, -except that the section entitled ``GNU General Public License'' may be -included in a translation approved by the Free Software Foundation -instead of in the original English. -@end ifinfo - - -@titlepage - -@title Regex -@subtitle edition 0.12a -@subtitle 19 September 1992 -@author Kathryn A. Hargreaves -@author Karl Berry - -@page - -@vskip 0pt plus 1filll -Copyright @copyright{} 1992 Free Software Foundation. - -Permission is granted to make and distribute verbatim copies of this -manual provided the copyright notice and this permission notice are -preserved on all copies. - -Permission is granted to copy and distribute modified versions of this -manual under the conditions for verbatim copying, provided also that the -section entitled ``GNU General Public License'' is included exactly as -in the original, and provided that the entire resulting derived work is -distributed under the terms of a permission notice identical to this -one. - -Permission is granted to copy and distribute translations of this manual -into another language, under the above conditions for modified versions, -except that the section entitled ``GNU General Public License'' may be -included in a translation approved by the Free Software Foundation -instead of in the original English. - -@end titlepage - - -@ifinfo -@node Top, Overview, (dir), (dir) -@top Regular Expression Library - -This manual documents how to program with the GNU regular expression -library. This is edition 0.12a of the manual, 19 September 1992. - -The first part of this master menu lists the major nodes in this Info -document, including the index. The rest of the menu lists all the -lower level nodes in the document. - -@menu -* Overview:: -* Regular Expression Syntax:: -* Common Operators:: -* GNU Operators:: -* GNU Emacs Operators:: -* What Gets Matched?:: -* Programming with Regex:: -* Copying:: Copying and sharing Regex. -* Index:: General index. - --- The Detailed Node Listing --- - -Regular Expression Syntax - -* Syntax Bits:: -* Predefined Syntaxes:: -* Collating Elements vs. Characters:: -* The Backslash Character:: - -Common Operators - -* Match-self Operator:: Ordinary characters. -* Match-any-character Operator:: . -* Concatenation Operator:: Juxtaposition. -* Repetition Operators:: * + ? @{@} -* Alternation Operator:: | -* List Operators:: [...] [^...] -* Grouping Operators:: (...) -* Back-reference Operator:: \digit -* Anchoring Operators:: ^ $ - -Repetition Operators - -* Match-zero-or-more Operator:: * -* Match-one-or-more Operator:: + -* Match-zero-or-one Operator:: ? -* Interval Operators:: @{@} - -List Operators (@code{[} @dots{} @code{]} and @code{[^} @dots{} @code{]}) - -* Character Class Operators:: [:class:] -* Range Operator:: start-end - -Anchoring Operators - -* Match-beginning-of-line Operator:: ^ -* Match-end-of-line Operator:: $ - -GNU Operators - -* Word Operators:: -* Buffer Operators:: - -Word Operators - -* Non-Emacs Syntax Tables:: -* Match-word-boundary Operator:: \b -* Match-within-word Operator:: \B -* Match-beginning-of-word Operator:: \< -* Match-end-of-word Operator:: \> -* Match-word-constituent Operator:: \w -* Match-non-word-constituent Operator:: \W - -Buffer Operators - -* Match-beginning-of-buffer Operator:: \` -* Match-end-of-buffer Operator:: \' - -GNU Emacs Operators - -* Syntactic Class Operators:: - -Syntactic Class Operators - -* Emacs Syntax Tables:: -* Match-syntactic-class Operator:: \sCLASS -* Match-not-syntactic-class Operator:: \SCLASS - -Programming with Regex - -* GNU Regex Functions:: -* POSIX Regex Functions:: -* BSD Regex Functions:: - -GNU Regex Functions - -* GNU Pattern Buffers:: The re_pattern_buffer type. -* GNU Regular Expression Compiling:: re_compile_pattern () -* GNU Matching:: re_match () -* GNU Searching:: re_search () -* Matching/Searching with Split Data:: re_match_2 (), re_search_2 () -* Searching with Fastmaps:: re_compile_fastmap () -* GNU Translate Tables:: The `translate' field. -* Using Registers:: The re_registers type and related fns. -* Freeing GNU Pattern Buffers:: regfree () - -POSIX Regex Functions - -* POSIX Pattern Buffers:: The regex_t type. -* POSIX Regular Expression Compiling:: regcomp () -* POSIX Matching:: regexec () -* Reporting Errors:: regerror () -* Using Byte Offsets:: The regmatch_t type. -* Freeing POSIX Pattern Buffers:: regfree () - -BSD Regex Functions - -* BSD Regular Expression Compiling:: re_comp () -* BSD Searching:: re_exec () -@end menu -@end ifinfo -@node Overview, Regular Expression Syntax, Top, Top -@chapter Overview - -A @dfn{regular expression} (or @dfn{regexp}, or @dfn{pattern}) is a text -string that describes some (mathematical) set of strings. A regexp -@var{r} @dfn{matches} a string @var{s} if @var{s} is in the set of -strings described by @var{r}. - -Using the Regex library, you can: - -@itemize @bullet - -@item -see if a string matches a specified pattern as a whole, and - -@item -search within a string for a substring matching a specified pattern. - -@end itemize - -Some regular expressions match only one string, i.e., the set they -describe has only one member. For example, the regular expression -@samp{foo} matches the string @samp{foo} and no others. Other regular -expressions match more than one string, i.e., the set they describe has -more than one member. For example, the regular expression @samp{f*} -matches the set of strings made up of any number (including zero) of -@samp{f}s. As you can see, some characters in regular expressions match -themselves (such as @samp{f}) and some don't (such as @samp{*}); the -ones that don't match themselves instead let you specify patterns that -describe many different strings. - -To either match or search for a regular expression with the Regex -library functions, you must first compile it with a Regex pattern -compiling function. A @dfn{compiled pattern} is a regular expression -converted to the internal format used by the library functions. Once -you've compiled a pattern, you can use it for matching or searching any -number of times. - -The Regex library consists of two source files: @file{regex.h} and -@file{regex.c}. -@pindex regex.h -@pindex regex.c -Regex provides three groups of functions with which you can operate on -regular expressions. One group---the @sc{gnu} group---is more powerful -but not completely compatible with the other two, namely the @sc{posix} -and Berkeley @sc{unix} groups; its interface was designed specifically -for @sc{gnu}. The other groups have the same interfaces as do the -regular expression functions in @sc{posix} and Berkeley -@sc{unix}. - -We wrote this chapter with programmers in mind, not users of -programs---such as Emacs---that use Regex. We describe the Regex -library in its entirety, not how to write regular expressions that a -particular program understands. - - -@node Regular Expression Syntax, Common Operators, Overview, Top -@chapter Regular Expression Syntax - -@cindex regular expressions, syntax of -@cindex syntax of regular expressions - -@dfn{Characters} are things you can type. @dfn{Operators} are things in -a regular expression that match one or more characters. You compose -regular expressions from operators, which in turn you specify using one -or more characters. - -Most characters represent what we call the match-self operator, i.e., -they match themselves; we call these characters @dfn{ordinary}. Other -characters represent either all or parts of fancier operators; e.g., -@samp{.} represents what we call the match-any-character operator -(which, no surprise, matches (almost) any character); we call these -characters @dfn{special}. Two different things determine what -characters represent what operators: - -@enumerate -@item -the regular expression syntax your program has told the Regex library to -recognize, and - -@item -the context of the character in the regular expression. -@end enumerate - -In the following sections, we describe these things in more detail. - -@menu -* Syntax Bits:: -* Predefined Syntaxes:: -* Collating Elements vs. Characters:: -* The Backslash Character:: -@end menu - - -@node Syntax Bits, Predefined Syntaxes, , Regular Expression Syntax -@section Syntax Bits - -@cindex syntax bits - -In any particular syntax for regular expressions, some characters are -always special, others are sometimes special, and others are never -special. The particular syntax that Regex recognizes for a given -regular expression depends on the value in the @code{syntax} field of -the pattern buffer of that regular expression. - -You get a pattern buffer by compiling a regular expression. @xref{GNU -Pattern Buffers}, and @ref{POSIX Pattern Buffers}, for more information -on pattern buffers. @xref{GNU Regular Expression Compiling}, @ref{POSIX -Regular Expression Compiling}, and @ref{BSD Regular Expression -Compiling}, for more information on compiling. - -Regex considers the value of the @code{syntax} field to be a collection -of bits; we refer to these bits as @dfn{syntax bits}. In most cases, -they affect what characters represent what operators. We describe the -meanings of the operators to which we refer in @ref{Common Operators}, -@ref{GNU Operators}, and @ref{GNU Emacs Operators}. - -For reference, here is the complete list of syntax bits, in alphabetical -order: - -@table @code - -@cnindex RE_BACKSLASH_ESCAPE_IN_LIST -@item RE_BACKSLASH_ESCAPE_IN_LISTS -If this bit is set, then @samp{\} inside a list (@pxref{List Operators} -quotes (makes ordinary, if it's special) the following character; if -this bit isn't set, then @samp{\} is an ordinary character inside lists. -(@xref{The Backslash Character}, for what `\' does outside of lists.) - -@cnindex RE_BK_PLUS_QM -@item RE_BK_PLUS_QM -If this bit is set, then @samp{\+} represents the match-one-or-more -operator and @samp{\?} represents the match-zero-or-more operator; if -this bit isn't set, then @samp{+} represents the match-one-or-more -operator and @samp{?} represents the match-zero-or-one operator. This -bit is irrelevant if @code{RE_LIMITED_OPS} is set. - -@cnindex RE_CHAR_CLASSES -@item RE_CHAR_CLASSES -If this bit is set, then you can use character classes in lists; if this -bit isn't set, then you can't. - -@cnindex RE_CONTEXT_INDEP_ANCHORS -@item RE_CONTEXT_INDEP_ANCHORS -If this bit is set, then @samp{^} and @samp{$} are special anywhere outside -a list; if this bit isn't set, then these characters are special only in -certain contexts. @xref{Match-beginning-of-line Operator}, and -@ref{Match-end-of-line Operator}. - -@cnindex RE_CONTEXT_INDEP_OPS -@item RE_CONTEXT_INDEP_OPS -If this bit is set, then certain characters are special anywhere outside -a list; if this bit isn't set, then those characters are special only in -some contexts and are ordinary elsewhere. Specifically, if this bit -isn't set then @samp{*}, and (if the syntax bit @code{RE_LIMITED_OPS} -isn't set) @samp{+} and @samp{?} (or @samp{\+} and @samp{\?}, depending -on the syntax bit @code{RE_BK_PLUS_QM}) represent repetition operators -only if they're not first in a regular expression or just after an -open-group or alternation operator. The same holds for @samp{@{} (or -@samp{\@{}, depending on the syntax bit @code{RE_NO_BK_BRACES}) if -it is the beginning of a valid interval and the syntax bit -@code{RE_INTERVALS} is set. - -@cnindex RE_CONTEXT_INVALID_OPS -@item RE_CONTEXT_INVALID_OPS -If this bit is set, then repetition and alternation operators can't be -in certain positions within a regular expression. Specifically, the -regular expression is invalid if it has: - -@itemize @bullet - -@item -a repetition operator first in the regular expression or just after a -match-beginning-of-line, open-group, or alternation operator; or - -@item -an alternation operator first or last in the regular expression, just -before a match-end-of-line operator, or just after an alternation or -open-group operator. - -@end itemize - -If this bit isn't set, then you can put the characters representing the -repetition and alternation characters anywhere in a regular expression. -Whether or not they will in fact be operators in certain positions -depends on other syntax bits. - -@cnindex RE_DOT_NEWLINE -@item RE_DOT_NEWLINE -If this bit is set, then the match-any-character operator matches -a newline; if this bit isn't set, then it doesn't. - -@cnindex RE_DOT_NOT_NULL -@item RE_DOT_NOT_NULL -If this bit is set, then the match-any-character operator doesn't match -a null character; if this bit isn't set, then it does. - -@cnindex RE_INTERVALS -@item RE_INTERVALS -If this bit is set, then Regex recognizes interval operators; if this bit -isn't set, then it doesn't. - -@cnindex RE_LIMITED_OPS -@item RE_LIMITED_OPS -If this bit is set, then Regex doesn't recognize the match-one-or-more, -match-zero-or-one or alternation operators; if this bit isn't set, then -it does. - -@cnindex RE_NEWLINE_ALT -@item RE_NEWLINE_ALT -If this bit is set, then newline represents the alternation operator; if -this bit isn't set, then newline is ordinary. - -@cnindex RE_NO_BK_BRACES -@item RE_NO_BK_BRACES -If this bit is set, then @samp{@{} represents the open-interval operator -and @samp{@}} represents the close-interval operator; if this bit isn't -set, then @samp{\@{} represents the open-interval operator and -@samp{\@}} represents the close-interval operator. This bit is relevant -only if @code{RE_INTERVALS} is set. - -@cnindex RE_NO_BK_PARENS -@item RE_NO_BK_PARENS -If this bit is set, then @samp{(} represents the open-group operator and -@samp{)} represents the close-group operator; if this bit isn't set, then -@samp{\(} represents the open-group operator and @samp{\)} represents -the close-group operator. - -@cnindex RE_NO_BK_REFS -@item RE_NO_BK_REFS -If this bit is set, then Regex doesn't recognize @samp{\}@var{digit} as -the back reference operator; if this bit isn't set, then it does. - -@cnindex RE_NO_BK_VBAR -@item RE_NO_BK_VBAR -If this bit is set, then @samp{|} represents the alternation operator; -if this bit isn't set, then @samp{\|} represents the alternation -operator. This bit is irrelevant if @code{RE_LIMITED_OPS} is set. - -@cnindex RE_NO_EMPTY_RANGES -@item RE_NO_EMPTY_RANGES -If this bit is set, then a regular expression with a range whose ending -point collates lower than its starting point is invalid; if this bit -isn't set, then Regex considers such a range to be empty. - -@cnindex RE_UNMATCHED_RIGHT_PAREN_ORD -@item RE_UNMATCHED_RIGHT_PAREN_ORD -If this bit is set and the regular expression has no matching open-group -operator, then Regex considers what would otherwise be a close-group -operator (based on how @code{RE_NO_BK_PARENS} is set) to match @samp{)}. - -@end table - - -@node Predefined Syntaxes, Collating Elements vs. Characters, Syntax Bits, Regular Expression Syntax -@section Predefined Syntaxes - -If you're programming with Regex, you can set a pattern buffer's -(@pxref{GNU Pattern Buffers}, and @ref{POSIX Pattern Buffers}) -@code{syntax} field either to an arbitrary combination of syntax bits -(@pxref{Syntax Bits}) or else to the configurations defined by Regex. -These configurations define the syntaxes used by certain -programs---@sc{gnu} Emacs, -@cindex Emacs -@sc{posix} Awk, -@cindex POSIX Awk -traditional Awk, -@cindex Awk -Grep, -@cindex Grep -@cindex Egrep -Egrep---in addition to syntaxes for @sc{posix} basic and extended -regular expressions. - -The predefined syntaxes--taken directly from @file{regex.h}---are: - -@example -[[[ syntaxes ]]] -@end example - -@node Collating Elements vs. Characters, The Backslash Character, Predefined Syntaxes, Regular Expression Syntax -@section Collating Elements vs.@: Characters - -@sc{posix} generalizes the notion of a character to that of a -collating element. It defines a @dfn{collating element} to be ``a -sequence of one or more bytes defined in the current collating sequence -as a unit of collation.'' - -This generalizes the notion of a character in -two ways. First, a single character can map into two or more collating -elements. For example, the German -@tex -`\ss' -@end tex -@ifinfo -``es-zet'' -@end ifinfo -collates as the collating element @samp{s} followed by another collating -element @samp{s}. Second, two or more characters can map into one -collating element. For example, the Spanish @samp{ll} collates after -@samp{l} and before @samp{m}. - -Since @sc{posix}'s ``collating element'' preserves the essential idea of -a ``character,'' we use the latter, more familiar, term in this document. - -@node The Backslash Character, , Collating Elements vs. Characters, Regular Expression Syntax -@section The Backslash Character - -@cindex \ -The @samp{\} character has one of four different meanings, depending on -the context in which you use it and what syntax bits are set -(@pxref{Syntax Bits}). It can: 1) stand for itself, 2) quote the next -character, 3) introduce an operator, or 4) do nothing. - -@enumerate -@item -It stands for itself inside a list -(@pxref{List Operators}) if the syntax bit -@code{RE_BACKSLASH_ESCAPE_IN_LISTS} is not set. For example, @samp{[\]} -would match @samp{\}. - -@item -It quotes (makes ordinary, if it's special) the next character when you -use it either: - -@itemize @bullet -@item -outside a list,@footnote{Sometimes -you don't have to explicitly quote special characters to make -them ordinary. For instance, most characters lose any special meaning -inside a list (@pxref{List Operators}). In addition, if the syntax bits -@code{RE_CONTEXT_INVALID_OPS} and @code{RE_CONTEXT_INDEP_OPS} -aren't set, then (for historical reasons) the matcher considers special -characters ordinary if they are in contexts where the operations they -represent make no sense; for example, then the match-zero-or-more -operator (represented by @samp{*}) matches itself in the regular -expression @samp{*foo} because there is no preceding expression on which -it can operate. It is poor practice, however, to depend on this -behavior; if you want a special character to be ordinary outside a list, -it's better to always quote it, regardless.} or - -@item -inside a list and the syntax bit @code{RE_BACKSLASH_ESCAPE_IN_LISTS} is set. - -@end itemize - -@item -It introduces an operator when followed by certain ordinary -characters---sometimes only when certain syntax bits are set. See the -cases @code{RE_BK_PLUS_QM}, @code{RE_NO_BK_BRACES}, @code{RE_NO_BK_VAR}, -@code{RE_NO_BK_PARENS}, @code{RE_NO_BK_REF} in @ref{Syntax Bits}. Also: - -@itemize @bullet -@item -@samp{\b} represents the match-word-boundary operator -(@pxref{Match-word-boundary Operator}). - -@item -@samp{\B} represents the match-within-word operator -(@pxref{Match-within-word Operator}). - -@item -@samp{\<} represents the match-beginning-of-word operator @* -(@pxref{Match-beginning-of-word Operator}). - -@item -@samp{\>} represents the match-end-of-word operator -(@pxref{Match-end-of-word Operator}). - -@item -@samp{\w} represents the match-word-constituent operator -(@pxref{Match-word-constituent Operator}). - -@item -@samp{\W} represents the match-non-word-constituent operator -(@pxref{Match-non-word-constituent Operator}). - -@item -@samp{\`} represents the match-beginning-of-buffer -operator and @samp{\'} represents the match-end-of-buffer operator -(@pxref{Buffer Operators}). - -@item -If Regex was compiled with the C preprocessor symbol @code{emacs} -defined, then @samp{\s@var{class}} represents the match-syntactic-class -operator and @samp{\S@var{class}} represents the -match-not-syntactic-class operator (@pxref{Syntactic Class Operators}). - -@end itemize - -@item -In all other cases, Regex ignores @samp{\}. For example, -@samp{\n} matches @samp{n}. - -@end enumerate - -@node Common Operators, GNU Operators, Regular Expression Syntax, Top -@chapter Common Operators - -You compose regular expressions from operators. In the following -sections, we describe the regular expression operators specified by -@sc{posix}; @sc{gnu} also uses these. Most operators have more than one -representation as characters. @xref{Regular Expression Syntax}, for -what characters represent what operators under what circumstances. - -For most operators that can be represented in two ways, one -representation is a single character and the other is that character -preceded by @samp{\}. For example, either @samp{(} or @samp{\(} -represents the open-group operator. Which one does depends on the -setting of a syntax bit, in this case @code{RE_NO_BK_PARENS}. Why is -this so? Historical reasons dictate some of the varying -representations, while @sc{posix} dictates others. - -Finally, almost all characters lose any special meaning inside a list -(@pxref{List Operators}). - -@menu -* Match-self Operator:: Ordinary characters. -* Match-any-character Operator:: . -* Concatenation Operator:: Juxtaposition. -* Repetition Operators:: * + ? @{@} -* Alternation Operator:: | -* List Operators:: [...] [^...] -* Grouping Operators:: (...) -* Back-reference Operator:: \digit -* Anchoring Operators:: ^ $ -@end menu - -@node Match-self Operator, Match-any-character Operator, , Common Operators -@section The Match-self Operator (@var{ordinary character}) - -This operator matches the character itself. All ordinary characters -(@pxref{Regular Expression Syntax}) represent this operator. For -example, @samp{f} is always an ordinary character, so the regular -expression @samp{f} matches only the string @samp{f}. In -particular, it does @emph{not} match the string @samp{ff}. - -@node Match-any-character Operator, Concatenation Operator, Match-self Operator, Common Operators -@section The Match-any-character Operator (@code{.}) - -@cindex @samp{.} - -This operator matches any single printing or nonprinting character -except it won't match a: - -@table @asis -@item newline -if the syntax bit @code{RE_DOT_NEWLINE} isn't set. - -@item null -if the syntax bit @code{RE_DOT_NOT_NULL} is set. - -@end table - -The @samp{.} (period) character represents this operator. For example, -@samp{a.b} matches any three-character string beginning with @samp{a} -and ending with @samp{b}. - -@node Concatenation Operator, Repetition Operators, Match-any-character Operator, Common Operators -@section The Concatenation Operator - -This operator concatenates two regular expressions @var{a} and @var{b}. -No character represents this operator; you simply put @var{b} after -@var{a}. The result is a regular expression that will match a string if -@var{a} matches its first part and @var{b} matches the rest. For -example, @samp{xy} (two match-self operators) matches @samp{xy}. - -@node Repetition Operators, Alternation Operator, Concatenation Operator, Common Operators -@section Repetition Operators - -Repetition operators repeat the preceding regular expression a specified -number of times. - -@menu -* Match-zero-or-more Operator:: * -* Match-one-or-more Operator:: + -* Match-zero-or-one Operator:: ? -* Interval Operators:: @{@} -@end menu - -@node Match-zero-or-more Operator, Match-one-or-more Operator, , Repetition Operators -@subsection The Match-zero-or-more Operator (@code{*}) - -@cindex @samp{*} - -This operator repeats the smallest possible preceding regular expression -as many times as necessary (including zero) to match the pattern. -@samp{*} represents this operator. For example, @samp{o*} -matches any string made up of zero or more @samp{o}s. Since this -operator operates on the smallest preceding regular expression, -@samp{fo*} has a repeating @samp{o}, not a repeating @samp{fo}. So, -@samp{fo*} matches @samp{f}, @samp{fo}, @samp{foo}, and so on. - -Since the match-zero-or-more operator is a suffix operator, it may be -useless as such when no regular expression precedes it. This is the -case when it: - -@itemize @bullet -@item -is first in a regular expression, or - -@item -follows a match-beginning-of-line, open-group, or alternation -operator. - -@end itemize - -@noindent -Three different things can happen in these cases: - -@enumerate -@item -If the syntax bit @code{RE_CONTEXT_INVALID_OPS} is set, then the -regular expression is invalid. - -@item -If @code{RE_CONTEXT_INVALID_OPS} isn't set, but -@code{RE_CONTEXT_INDEP_OPS} is, then @samp{*} represents the -match-zero-or-more operator (which then operates on the empty string). - -@item -Otherwise, @samp{*} is ordinary. - -@end enumerate - -@cindex backtracking -The matcher processes a match-zero-or-more operator by first matching as -many repetitions of the smallest preceding regular expression as it can. -Then it continues to match the rest of the pattern. - -If it can't match the rest of the pattern, it backtracks (as many times -as necessary), each time discarding one of the matches until it can -either match the entire pattern or be certain that it cannot get a -match. For example, when matching @samp{ca*ar} against @samp{caaar}, -the matcher first matches all three @samp{a}s of the string with the -@samp{a*} of the regular expression. However, it cannot then match the -final @samp{ar} of the regular expression against the final @samp{r} of -the string. So it backtracks, discarding the match of the last @samp{a} -in the string. It can then match the remaining @samp{ar}. - - -@node Match-one-or-more Operator, Match-zero-or-one Operator, Match-zero-or-more Operator, Repetition Operators -@subsection The Match-one-or-more Operator (@code{+} or @code{\+}) - -@cindex @samp{+} - -If the syntax bit @code{RE_LIMITED_OPS} is set, then Regex doesn't recognize -this operator. Otherwise, if the syntax bit @code{RE_BK_PLUS_QM} isn't -set, then @samp{+} represents this operator; if it is, then @samp{\+} -does. - -This operator is similar to the match-zero-or-more operator except that -it repeats the preceding regular expression at least once; -@pxref{Match-zero-or-more Operator}, for what it operates on, how some -syntax bits affect it, and how Regex backtracks to match it. - -For example, supposing that @samp{+} represents the match-one-or-more -operator; then @samp{ca+r} matches, e.g., @samp{car} and -@samp{caaaar}, but not @samp{cr}. - -@node Match-zero-or-one Operator, Interval Operators, Match-one-or-more Operator, Repetition Operators -@subsection The Match-zero-or-one Operator (@code{?} or @code{\?}) -@cindex @samp{?} - -If the syntax bit @code{RE_LIMITED_OPS} is set, then Regex doesn't -recognize this operator. Otherwise, if the syntax bit -@code{RE_BK_PLUS_QM} isn't set, then @samp{?} represents this operator; -if it is, then @samp{\?} does. - -This operator is similar to the match-zero-or-more operator except that -it repeats the preceding regular expression once or not at all; -@pxref{Match-zero-or-more Operator}, to see what it operates on, how -some syntax bits affect it, and how Regex backtracks to match it. - -For example, supposing that @samp{?} represents the match-zero-or-one -operator; then @samp{ca?r} matches both @samp{car} and @samp{cr}, but -nothing else. - -@node Interval Operators, , Match-zero-or-one Operator, Repetition Operators -@subsection Interval Operators (@code{@{} @dots{} @code{@}} or @code{\@{} @dots{} @code{\@}}) - -@cindex interval expression -@cindex @samp{@{} -@cindex @samp{@}} -@cindex @samp{\@{} -@cindex @samp{\@}} - -If the syntax bit @code{RE_INTERVALS} is set, then Regex recognizes -@dfn{interval expressions}. They repeat the smallest possible preceding -regular expression a specified number of times. - -If the syntax bit @code{RE_NO_BK_BRACES} is set, @samp{@{} represents -the @dfn{open-interval operator} and @samp{@}} represents the -@dfn{close-interval operator} ; otherwise, @samp{\@{} and @samp{\@}} do. - -Specifically, supposing that @samp{@{} and @samp{@}} represent the -open-interval and close-interval operators; then: - -@table @code -@item @{@var{count}@} -matches exactly @var{count} occurrences of the preceding regular -expression. - -@item @{@var{min,}@} -matches @var{min} or more occurrences of the preceding regular -expression. - -@item @{@var{min, max}@} -matches at least @var{min} but no more than @var{max} occurrences of -the preceding regular expression. - -@end table - -The interval expression (but not necessarily the regular expression that -contains it) is invalid if: - -@itemize @bullet -@item -@var{min} is greater than @var{max}, or - -@item -any of @var{count}, @var{min}, or @var{max} are outside the range -zero to @code{RE_DUP_MAX} (which symbol @file{regex.h} -defines). - -@end itemize - -If the interval expression is invalid and the syntax bit -@code{RE_NO_BK_BRACES} is set, then Regex considers all the -characters in the would-be interval to be ordinary. If that bit -isn't set, then the regular expression is invalid. - -If the interval expression is valid but there is no preceding regular -expression on which to operate, then if the syntax bit -@code{RE_CONTEXT_INVALID_OPS} is set, the regular expression is invalid. -If that bit isn't set, then Regex considers all the characters---other -than backslashes, which it ignores---in the would-be interval to be -ordinary. - - -@node Alternation Operator, List Operators, Repetition Operators, Common Operators -@section The Alternation Operator (@code{|} or @code{\|}) - -@kindex | -@kindex \| -@cindex alternation operator -@cindex or operator - -If the syntax bit @code{RE_LIMITED_OPS} is set, then Regex doesn't -recognize this operator. Otherwise, if the syntax bit -@code{RE_NO_BK_VBAR} is set, then @samp{|} represents this operator; -otherwise, @samp{\|} does. - -Alternatives match one of a choice of regular expressions: -if you put the character(s) representing the alternation operator between -any two regular expressions @var{a} and @var{b}, the result matches -the union of the strings that @var{a} and @var{b} match. For -example, supposing that @samp{|} is the alternation operator, then -@samp{foo|bar|quux} would match any of @samp{foo}, @samp{bar} or -@samp{quux}. - -@ignore -@c Nobody needs to disallow empty alternatives any more. -If the syntax bit @code{RE_NO_EMPTY_ALTS} is set, then if either of the regular -expressions @var{a} or @var{b} is empty, the -regular expression is invalid. More precisely, if this syntax bit is -set, then the alternation operator can't: - -@itemize @bullet -@item -be first or last in a regular expression; - -@item -follow either another alternation operator or an open-group operator -(@pxref{Grouping Operators}); or - -@item -precede a close-group operator. - -@end itemize - -@noindent -For example, supposing @samp{(} and @samp{)} represent the open and -close-group operators, then @samp{|foo}, @samp{foo|}, @samp{foo||bar}, -@samp{foo(|bar)}, and @samp{(foo|)bar} would all be invalid. -@end ignore - -The alternation operator operates on the @emph{largest} possible -surrounding regular expressions. (Put another way, it has the lowest -precedence of any regular expression operator.) -Thus, the only way you can -delimit its arguments is to use grouping. For example, if @samp{(} and -@samp{)} are the open and close-group operators, then @samp{fo(o|b)ar} -would match either @samp{fooar} or @samp{fobar}. (@samp{foo|bar} would -match @samp{foo} or @samp{bar}.) - -@cindex backtracking -The matcher usually tries all combinations of alternatives so as to -match the longest possible string. For example, when matching -@samp{(fooq|foo)*(qbarquux|bar)} against @samp{fooqbarquux}, it cannot -take, say, the first (``depth-first'') combination it could match, since -then it would be content to match just @samp{fooqbar}. - -@comment xx something about leftmost-longest - - -@node List Operators, Grouping Operators, Alternation Operator, Common Operators -@section List Operators (@code{[} @dots{} @code{]} and @code{[^} @dots{} @code{]}) - -@cindex matching list -@cindex @samp{[} -@cindex @samp{]} -@cindex @samp{^} -@cindex @samp{-} -@cindex @samp{\} -@cindex @samp{[^} -@cindex nonmatching list -@cindex matching newline -@cindex bracket expression - -@dfn{Lists}, also called @dfn{bracket expressions}, are a set of one or -more items. An @dfn{item} is a character, -@ignore -(These get added when they get implemented.) -a collating symbol, an equivalence class expression, -@end ignore -a character class expression, or a range expression. The syntax bits -affect which kinds of items you can put in a list. We explain the last -two items in subsections below. Empty lists are invalid. - -A @dfn{matching list} matches a single character represented by one of -the list items. You form a matching list by enclosing one or more items -within an @dfn{open-matching-list operator} (represented by @samp{[}) -and a @dfn{close-list operator} (represented by @samp{]}). - -For example, @samp{[ab]} matches either @samp{a} or @samp{b}. -@samp{[ad]*} matches the empty string and any string composed of just -@samp{a}s and @samp{d}s in any order. Regex considers invalid a regular -expression with a @samp{[} but no matching -@samp{]}. - -@dfn{Nonmatching lists} are similar to matching lists except that they -match a single character @emph{not} represented by one of the list -items. You use an @dfn{open-nonmatching-list operator} (represented by -@samp{[^}@footnote{Regex therefore doesn't consider the @samp{^} to be -the first character in the list. If you put a @samp{^} character first -in (what you think is) a matching list, you'll turn it into a -nonmatching list.}) instead of an open-matching-list operator to start a -nonmatching list. - -For example, @samp{[^ab]} matches any character except @samp{a} or -@samp{b}. - -If the @code{posix_newline} field in the pattern buffer (@pxref{GNU -Pattern Buffers} is set, then nonmatching lists do not match a newline. - -Most characters lose any special meaning inside a list. The special -characters inside a list follow. - -@table @samp -@item ] -ends the list if it's not the first list item. So, if you want to make -the @samp{]} character a list item, you must put it first. - -@item \ -quotes the next character if the syntax bit @code{RE_BACKSLASH_ESCAPE_IN_LISTS} is -set. - -@ignore -Put these in if they get implemented. - -@item [. -represents the open-collating-symbol operator (@pxref{Collating Symbol -Operators}). - -@item .] -represents the close-collating-symbol operator. - -@item [= -represents the open-equivalence-class operator (@pxref{Equivalence Class -Operators}). - -@item =] -represents the close-equivalence-class operator. - -@end ignore - -@item [: -represents the open-character-class operator (@pxref{Character Class -Operators}) if the syntax bit @code{RE_CHAR_CLASSES} is set and what -follows is a valid character class expression. - -@item :] -represents the close-character-class operator if the syntax bit -@code{RE_CHAR_CLASSES} is set and what precedes it is an -open-character-class operator followed by a valid character class name. - -@item - -represents the range operator (@pxref{Range Operator}) if it's -not first or last in a list or the ending point of a range. - -@end table - -@noindent -All other characters are ordinary. For example, @samp{[.*]} matches -@samp{.} and @samp{*}. - -@menu -* Character Class Operators:: [:class:] -* Range Operator:: start-end -@end menu - -@ignore -(If collating symbols and equivalence class expressions get implemented, -then add this.) - -node Collating Symbol Operators -subsubsection Collating Symbol Operators (@code{[.} @dots{} @code{.]}) - -If the syntax bit @code{XX} is set, then you can represent -collating symbols inside lists. You form a @dfn{collating symbol} by -putting a collating element between an @dfn{open-collating-symbol -operator} and an @dfn{close-collating-symbol operator}. @samp{[.} -represents the open-collating-symbol operator and @samp{.]} represents -the close-collating-symbol operator. For example, if @samp{ll} is a -collating element, then @samp{[[.ll.]]} would match @samp{ll}. - -node Equivalence Class Operators -subsubsection Equivalence Class Operators (@code{[=} @dots{} @code{=]}) -@cindex equivalence class expression in regex -@cindex @samp{[=} in regex -@cindex @samp{=]} in regex - -If the syntax bit @code{XX} is set, then Regex recognizes equivalence class -expressions inside lists. A @dfn{equivalence class expression} is a set -of collating elements which all belong to the same equivalence class. -You form an equivalence class expression by putting a collating -element between an @dfn{open-equivalence-class operator} and a -@dfn{close-equivalence-class operator}. @samp{[=} represents the -open-equivalence-class operator and @samp{=]} represents the -close-equivalence-class operator. For example, if @samp{a} and @samp{A} -were an equivalence class, then both @samp{[[=a=]]} and @samp{[[=A=]]} -would match both @samp{a} and @samp{A}. If the collating element in an -equivalence class expression isn't part of an equivalence class, then -the matcher considers the equivalence class expression to be a collating -symbol. - -@end ignore - -@node Character Class Operators, Range Operator, , List Operators -@subsection Character Class Operators (@code{[:} @dots{} @code{:]}) - -@cindex character classes -@cindex @samp{[:} in regex -@cindex @samp{:]} in regex - -If the syntax bit @code{RE_CHARACTER_CLASSES} is set, then Regex -recognizes character class expressions inside lists. A @dfn{character -class expression} matches one character from a given class. You form a -character class expression by putting a character class name between an -@dfn{open-character-class operator} (represented by @samp{[:}) and a -@dfn{close-character-class operator} (represented by @samp{:]}). The -character class names and their meanings are: - -@table @code - -@item alnum -letters and digits - -@item alpha -letters - -@item blank -system-dependent; for @sc{gnu}, a space or tab - -@item cntrl -control characters (in the @sc{ascii} encoding, code 0177 and codes -less than 040) - -@item digit -digits - -@item graph -same as @code{print} except omits space - -@item lower -lowercase letters - -@item print -printable characters (in the @sc{ascii} encoding, space -tilde---codes 040 through 0176) - -@item punct -neither control nor alphanumeric characters - -@item space -space, carriage return, newline, vertical tab, and form feed - -@item upper -uppercase letters - -@item xdigit -hexadecimal digits: @code{0}--@code{9}, @code{a}--@code{f}, @code{A}--@code{F} - -@end table - -@noindent -These correspond to the definitions in the C library's @file{} -facility. For example, @samp{[:alpha:]} corresponds to the standard -facility @code{isalpha}. Regex recognizes character class expressions -only inside of lists; so @samp{[[:alpha:]]} matches any letter, but -@samp{[:alpha:]} outside of a bracket expression and not followed by a -repetition operator matches just itself. - -@node Range Operator, , Character Class Operators, List Operators -@subsection The Range Operator (@code{-}) - -Regex recognizes @dfn{range expressions} inside a list. They represent -those characters -that fall between two elements in the current collating sequence. You -form a range expression by putting a @dfn{range operator} between two -@ignore -(If these get implemented, then substitute this for ``characters.'') -of any of the following: characters, collating elements, collating symbols, -and equivalence class expressions. The starting point of the range and -the ending point of the range don't have to be the same kind of item, -e.g., the starting point could be a collating element and the ending -point could be an equivalence class expression. If a range's ending -point is an equivalence class, then all the collating elements in that -class will be in the range. -@end ignore -characters.@footnote{You can't use a character class for the starting -or ending point of a range, since a character class is not a single -character.} @samp{-} represents the range operator. For example, -@samp{a-f} within a list represents all the characters from @samp{a} -through @samp{f} -inclusively. - -If the syntax bit @code{RE_NO_EMPTY_RANGES} is set, then if the range's -ending point collates less than its starting point, the range (and the -regular expression containing it) is invalid. For example, the regular -expression @samp{[z-a]} would be invalid. If this bit isn't set, then -Regex considers such a range to be empty. - -Since @samp{-} represents the range operator, if you want to make a -@samp{-} character itself -a list item, you must do one of the following: - -@itemize @bullet -@item -Put the @samp{-} either first or last in the list. - -@item -Include a range whose starting point collates strictly lower than -@samp{-} and whose ending point collates equal or higher. Unless a -range is the first item in a list, a @samp{-} can't be its starting -point, but @emph{can} be its ending point. That is because Regex -considers @samp{-} to be the range operator unless it is preceded by -another @samp{-}. For example, in the @sc{ascii} encoding, @samp{)}, -@samp{*}, @samp{+}, @samp{,}, @samp{-}, @samp{.}, and @samp{/} are -contiguous characters in the collating sequence. You might think that -@samp{[)-+--/]} has two ranges: @samp{)-+} and @samp{--/}. Rather, it -has the ranges @samp{)-+} and @samp{+--}, plus the character @samp{/}, so -it matches, e.g., @samp{,}, not @samp{.}. - -@item -Put a range whose starting point is @samp{-} first in the list. - -@end itemize - -For example, @samp{[-a-z]} matches a lowercase letter or a hyphen (in -English, in @sc{ascii}). - - -@node Grouping Operators, Back-reference Operator, List Operators, Common Operators -@section Grouping Operators (@code{(} @dots{} @code{)} or @code{\(} @dots{} @code{\)}) - -@kindex ( -@kindex ) -@kindex \( -@kindex \) -@cindex grouping -@cindex subexpressions -@cindex parenthesizing - -A @dfn{group}, also known as a @dfn{subexpression}, consists of an -@dfn{open-group operator}, any number of other operators, and a -@dfn{close-group operator}. Regex treats this sequence as a unit, just -as mathematics and programming languages treat a parenthesized -expression as a unit. - -Therefore, using @dfn{groups}, you can: - -@itemize @bullet -@item -delimit the argument(s) to an alternation operator (@pxref{Alternation -Operator}) or a repetition operator (@pxref{Repetition -Operators}). - -@item -keep track of the indices of the substring that matched a given group. -@xref{Using Registers}, for a precise explanation. -This lets you: - -@itemize @bullet -@item -use the back-reference operator (@pxref{Back-reference Operator}). - -@item -use registers (@pxref{Using Registers}). - -@end itemize - -@end itemize - -If the syntax bit @code{RE_NO_BK_PARENS} is set, then @samp{(} represents -the open-group operator and @samp{)} represents the -close-group operator; otherwise, @samp{\(} and @samp{\)} do. - -If the syntax bit @code{RE_UNMATCHED_RIGHT_PAREN_ORD} is set and a -close-group operator has no matching open-group operator, then Regex -considers it to match @samp{)}. - - -@node Back-reference Operator, Anchoring Operators, Grouping Operators, Common Operators -@section The Back-reference Operator (@dfn{\}@var{digit}) - -@cindex back references - -If the syntax bit @code{RE_NO_BK_REF} isn't set, then Regex recognizes -back references. A back reference matches a specified preceding group. -The back reference operator is represented by @samp{\@var{digit}} -anywhere after the end of a regular expression's @w{@var{digit}-th} -group (@pxref{Grouping Operators}). - -@var{digit} must be between @samp{1} and @samp{9}. The matcher assigns -numbers 1 through 9 to the first nine groups it encounters. By using -one of @samp{\1} through @samp{\9} after the corresponding group's -close-group operator, you can match a substring identical to the -one that the group does. - -Back references match according to the following (in all examples below, -@samp{(} represents the open-group, @samp{)} the close-group, @samp{@{} -the open-interval and @samp{@}} the close-interval operator): - -@itemize @bullet -@item -If the group matches a substring, the back reference matches an -identical substring. For example, @samp{(a)\1} matches @samp{aa} and -@samp{(bana)na\1bo\1} matches @samp{bananabanabobana}. Likewise, -@samp{(.*)\1} matches any (newline-free if the syntax bit -@code{RE_DOT_NEWLINE} isn't set) string that is composed of two -identical halves; the @samp{(.*)} matches the first half and the -@samp{\1} matches the second half. - -@item -If the group matches more than once (as it might if followed -by, e.g., a repetition operator), then the back reference matches the -substring the group @emph{last} matched. For example, -@samp{((a*)b)*\1\2} matches @samp{aabababa}; first @w{group 1} (the -outer one) matches @samp{aab} and @w{group 2} (the inner one) matches -@samp{aa}. Then @w{group 1} matches @samp{ab} and @w{group 2} matches -@samp{a}. So, @samp{\1} matches @samp{ab} and @samp{\2} matches -@samp{a}. - -@item -If the group doesn't participate in a match, i.e., it is part of an -alternative not taken or a repetition operator allows zero repetitions -of it, then the back reference makes the whole match fail. For example, -@samp{(one()|two())-and-(three\2|four\3)} matches @samp{one-and-three} -and @samp{two-and-four}, but not @samp{one-and-four} or -@samp{two-and-three}. For example, if the pattern matches -@samp{one-and-}, then its @w{group 2} matches the empty string and its -@w{group 3} doesn't participate in the match. So, if it then matches -@samp{four}, then when it tries to back reference @w{group 3}---which it -will attempt to do because @samp{\3} follows the @samp{four}---the match -will fail because @w{group 3} didn't participate in the match. - -@end itemize - -You can use a back reference as an argument to a repetition operator. For -example, @samp{(a(b))\2*} matches @samp{a} followed by two or more -@samp{b}s. Similarly, @samp{(a(b))\2@{3@}} matches @samp{abbbb}. - -If there is no preceding @w{@var{digit}-th} subexpression, the regular -expression is invalid. - - -@node Anchoring Operators, , Back-reference Operator, Common Operators -@section Anchoring Operators - -@cindex anchoring -@cindex regexp anchoring - -These operators can constrain a pattern to match only at the beginning or -end of the entire string or at the beginning or end of a line. - -@menu -* Match-beginning-of-line Operator:: ^ -* Match-end-of-line Operator:: $ -@end menu - - -@node Match-beginning-of-line Operator, Match-end-of-line Operator, , Anchoring Operators -@subsection The Match-beginning-of-line Operator (@code{^}) - -@kindex ^ -@cindex beginning-of-line operator -@cindex anchors - -This operator can match the empty string either at the beginning of the -string or after a newline character. Thus, it is said to @dfn{anchor} -the pattern to the beginning of a line. - -In the cases following, @samp{^} represents this operator. (Otherwise, -@samp{^} is ordinary.) - -@itemize @bullet - -@item -It (the @samp{^}) is first in the pattern, as in @samp{^foo}. - -@cnindex RE_CONTEXT_INDEP_ANCHORS @r{(and @samp{^})} -@item -The syntax bit @code{RE_CONTEXT_INDEP_ANCHORS} is set, and it is outside -a bracket expression. - -@cindex open-group operator and @samp{^} -@cindex alternation operator and @samp{^} -@item -It follows an open-group or alternation operator, as in @samp{a\(^b\)} -and @samp{a\|^b}. @xref{Grouping Operators}, and @ref{Alternation -Operator}. - -@end itemize - -These rules imply that some valid patterns containing @samp{^} cannot be -matched; for example, @samp{foo^bar} if @code{RE_CONTEXT_INDEP_ANCHORS} -is set. - -@vindex not_bol @r{field in pattern buffer} -If the @code{not_bol} field is set in the pattern buffer (@pxref{GNU -Pattern Buffers}), then @samp{^} fails to match at the beginning of the -string. @xref{POSIX Matching}, for when you might find this useful. - -@vindex newline_anchor @r{field in pattern buffer} -If the @code{newline_anchor} field is set in the pattern buffer, then -@samp{^} fails to match after a newline. This is useful when you do not -regard the string to be matched as broken into lines. - - -@node Match-end-of-line Operator, , Match-beginning-of-line Operator, Anchoring Operators -@subsection The Match-end-of-line Operator (@code{$}) - -@kindex $ -@cindex end-of-line operator -@cindex anchors - -This operator can match the empty string either at the end of -the string or before a newline character in the string. Thus, it is -said to @dfn{anchor} the pattern to the end of a line. - -It is always represented by @samp{$}. For example, @samp{foo$} usually -matches, e.g., @samp{foo} and, e.g., the first three characters of -@samp{foo\nbar}. - -Its interaction with the syntax bits and pattern buffer fields is -exactly the dual of @samp{^}'s; see the previous section. (That is, -``beginning'' becomes ``end'', ``next'' becomes ``previous'', and -``after'' becomes ``before''.) - - -@node GNU Operators, GNU Emacs Operators, Common Operators, Top -@chapter GNU Operators - -Following are operators that @sc{gnu} defines (and @sc{posix} doesn't). - -@menu -* Word Operators:: -* Buffer Operators:: -@end menu - -@node Word Operators, Buffer Operators, , GNU Operators -@section Word Operators - -The operators in this section require Regex to recognize parts of words. -Regex uses a syntax table to determine whether or not a character is -part of a word, i.e., whether or not it is @dfn{word-constituent}. - -@menu -* Non-Emacs Syntax Tables:: -* Match-word-boundary Operator:: \b -* Match-within-word Operator:: \B -* Match-beginning-of-word Operator:: \< -* Match-end-of-word Operator:: \> -* Match-word-constituent Operator:: \w -* Match-non-word-constituent Operator:: \W -@end menu - -@node Non-Emacs Syntax Tables, Match-word-boundary Operator, , Word Operators -@subsection Non-Emacs Syntax Tables - -A @dfn{syntax table} is an array indexed by the characters in your -character set. In the @sc{ascii} encoding, therefore, a syntax table -has 256 elements. Regex always uses a @code{char *} variable -@code{re_syntax_table} as its syntax table. In some cases, it -initializes this variable and in others it expects you to initialize it. - -@itemize @bullet -@item -If Regex is compiled with the preprocessor symbols @code{emacs} and -@code{SYNTAX_TABLE} both undefined, then Regex allocates -@code{re_syntax_table} and initializes an element @var{i} either to -@code{Sword} (which it defines) if @var{i} is a letter, number, or -@samp{_}, or to zero if it's not. - -@item -If Regex is compiled with @code{emacs} undefined but @code{SYNTAX_TABLE} -defined, then Regex expects you to define a @code{char *} variable -@code{re_syntax_table} to be a valid syntax table. - -@item -@xref{Emacs Syntax Tables}, for what happens when Regex is compiled with -the preprocessor symbol @code{emacs} defined. - -@end itemize - -@node Match-word-boundary Operator, Match-within-word Operator, Non-Emacs Syntax Tables, Word Operators -@subsection The Match-word-boundary Operator (@code{\b}) - -@cindex @samp{\b} -@cindex word boundaries, matching - -This operator (represented by @samp{\b}) matches the empty string at -either the beginning or the end of a word. For example, @samp{\brat\b} -matches the separate word @samp{rat}. - -@node Match-within-word Operator, Match-beginning-of-word Operator, Match-word-boundary Operator, Word Operators -@subsection The Match-within-word Operator (@code{\B}) - -@cindex @samp{\B} - -This operator (represented by @samp{\B}) matches the empty string within -a word. For example, @samp{c\Brat\Be} matches @samp{crate}, but -@samp{dirty \Brat} doesn't match @samp{dirty rat}. - -@node Match-beginning-of-word Operator, Match-end-of-word Operator, Match-within-word Operator, Word Operators -@subsection The Match-beginning-of-word Operator (@code{\<}) - -@cindex @samp{\<} - -This operator (represented by @samp{\<}) matches the empty string at the -beginning of a word. - -@node Match-end-of-word Operator, Match-word-constituent Operator, Match-beginning-of-word Operator, Word Operators -@subsection The Match-end-of-word Operator (@code{\>}) - -@cindex @samp{\>} - -This operator (represented by @samp{\>}) matches the empty string at the -end of a word. - -@node Match-word-constituent Operator, Match-non-word-constituent Operator, Match-end-of-word Operator, Word Operators -@subsection The Match-word-constituent Operator (@code{\w}) - -@cindex @samp{\w} - -This operator (represented by @samp{\w}) matches any word-constituent -character. - -@node Match-non-word-constituent Operator, , Match-word-constituent Operator, Word Operators -@subsection The Match-non-word-constituent Operator (@code{\W}) - -@cindex @samp{\W} - -This operator (represented by @samp{\W}) matches any character that is -not word-constituent. - - -@node Buffer Operators, , Word Operators, GNU Operators -@section Buffer Operators - -Following are operators which work on buffers. In Emacs, a @dfn{buffer} -is, naturally, an Emacs buffer. For other programs, Regex considers the -entire string to be matched as the buffer. - -@menu -* Match-beginning-of-buffer Operator:: \` -* Match-end-of-buffer Operator:: \' -@end menu - - -@node Match-beginning-of-buffer Operator, Match-end-of-buffer Operator, , Buffer Operators -@subsection The Match-beginning-of-buffer Operator (@code{\`}) - -@cindex @samp{\`} - -This operator (represented by @samp{\`}) matches the empty string at the -beginning of the buffer. - -@node Match-end-of-buffer Operator, , Match-beginning-of-buffer Operator, Buffer Operators -@subsection The Match-end-of-buffer Operator (@code{\'}) - -@cindex @samp{\'} - -This operator (represented by @samp{\'}) matches the empty string at the -end of the buffer. - - -@node GNU Emacs Operators, What Gets Matched?, GNU Operators, Top -@chapter GNU Emacs Operators - -Following are operators that @sc{gnu} defines (and @sc{posix} doesn't) -that you can use only when Regex is compiled with the preprocessor -symbol @code{emacs} defined. - -@menu -* Syntactic Class Operators:: -@end menu - - -@node Syntactic Class Operators, , , GNU Emacs Operators -@section Syntactic Class Operators - -The operators in this section require Regex to recognize the syntactic -classes of characters. Regex uses a syntax table to determine this. - -@menu -* Emacs Syntax Tables:: -* Match-syntactic-class Operator:: \sCLASS -* Match-not-syntactic-class Operator:: \SCLASS -@end menu - -@node Emacs Syntax Tables, Match-syntactic-class Operator, , Syntactic Class Operators -@subsection Emacs Syntax Tables - -A @dfn{syntax table} is an array indexed by the characters in your -character set. In the @sc{ascii} encoding, therefore, a syntax table -has 256 elements. - -If Regex is compiled with the preprocessor symbol @code{emacs} defined, -then Regex expects you to define and initialize the variable -@code{re_syntax_table} to be an Emacs syntax table. Emacs' syntax -tables are more complicated than Regex's own (@pxref{Non-Emacs Syntax -Tables}). @xref{Syntax, , Syntax, emacs, The GNU Emacs User's Manual}, -for a description of Emacs' syntax tables. - -@node Match-syntactic-class Operator, Match-not-syntactic-class Operator, Emacs Syntax Tables, Syntactic Class Operators -@subsection The Match-syntactic-class Operator (@code{\s}@var{class}) - -@cindex @samp{\s} - -This operator matches any character whose syntactic class is represented -by a specified character. @samp{\s@var{class}} represents this operator -where @var{class} is the character representing the syntactic class you -want. For example, @samp{w} represents the syntactic -class of word-constituent characters, so @samp{\sw} matches any -word-constituent character. - -@node Match-not-syntactic-class Operator, , Match-syntactic-class Operator, Syntactic Class Operators -@subsection The Match-not-syntactic-class Operator (@code{\S}@var{class}) - -@cindex @samp{\S} - -This operator is similar to the match-syntactic-class operator except -that it matches any character whose syntactic class is @emph{not} -represented by the specified character. @samp{\S@var{class}} represents -this operator. For example, @samp{w} represents the syntactic class of -word-constituent characters, so @samp{\Sw} matches any character that is -not word-constituent. - - -@node What Gets Matched?, Programming with Regex, GNU Emacs Operators, Top -@chapter What Gets Matched? - -Regex usually matches strings according to the ``leftmost longest'' -rule; that is, it chooses the longest of the leftmost matches. This -does not mean that for a regular expression containing subexpressions -that it simply chooses the longest match for each subexpression, left to -right; the overall match must also be the longest possible one. - -For example, @samp{(ac*)(c*d[ac]*)\1} matches @samp{acdacaaa}, not -@samp{acdac}, as it would if it were to choose the longest match for the -first subexpression. - - -@node Programming with Regex, Copying, What Gets Matched?, Top -@chapter Programming with Regex - -Here we describe how you use the Regex data structures and functions in -C programs. Regex has three interfaces: one designed for @sc{gnu}, one -compatible with @sc{posix} and one compatible with Berkeley @sc{unix}. - -@menu -* GNU Regex Functions:: -* POSIX Regex Functions:: -* BSD Regex Functions:: -@end menu - - -@node GNU Regex Functions, POSIX Regex Functions, , Programming with Regex -@section GNU Regex Functions - -If you're writing code that doesn't need to be compatible with either -@sc{posix} or Berkeley @sc{unix}, you can use these functions. They -provide more options than the other interfaces. - -@menu -* GNU Pattern Buffers:: The re_pattern_buffer type. -* GNU Regular Expression Compiling:: re_compile_pattern () -* GNU Matching:: re_match () -* GNU Searching:: re_search () -* Matching/Searching with Split Data:: re_match_2 (), re_search_2 () -* Searching with Fastmaps:: re_compile_fastmap () -* GNU Translate Tables:: The `translate' field. -* Using Registers:: The re_registers type and related fns. -* Freeing GNU Pattern Buffers:: regfree () -@end menu - - -@node GNU Pattern Buffers, GNU Regular Expression Compiling, , GNU Regex Functions -@subsection GNU Pattern Buffers - -@cindex pattern buffer, definition of -@tindex re_pattern_buffer @r{definition} -@tindex struct re_pattern_buffer @r{definition} - -To compile, match, or search for a given regular expression, you must -supply a pattern buffer. A @dfn{pattern buffer} holds one compiled -regular expression.@footnote{Regular expressions are also referred to as -``patterns,'' hence the name ``pattern buffer.''} - -You can have several different pattern buffers simultaneously, each -holding a compiled pattern for a different regular expression. - -@file{regex.h} defines the pattern buffer @code{struct} as follows: - -@example -[[[ pattern_buffer ]]] -@end example - - -@node GNU Regular Expression Compiling, GNU Matching, GNU Pattern Buffers, GNU Regex Functions -@subsection GNU Regular Expression Compiling - -In @sc{gnu}, you can both match and search for a given regular -expression. To do either, you must first compile it in a pattern buffer -(@pxref{GNU Pattern Buffers}). - -@cindex syntax initialization -@vindex re_syntax_options @r{initialization} -Regular expressions match according to the syntax with which they were -compiled; with @sc{gnu}, you indicate what syntax you want by setting -the variable @code{re_syntax_options} (declared in @file{regex.h} and -defined in @file{regex.c}) before calling the compiling function, -@code{re_compile_pattern} (see below). @xref{Syntax Bits}, and -@ref{Predefined Syntaxes}. - -You can change the value of @code{re_syntax_options} at any time. -Usually, however, you set its value once and then never change it. - -@cindex pattern buffer initialization -@code{re_compile_pattern} takes a pattern buffer as an argument. You -must initialize the following fields: - -@table @code - -@item translate @r{initialization} - -@item translate -@vindex translate @r{initialization} -Initialize this to point to a translate table if you want one, or to -zero if you don't. We explain translate tables in @ref{GNU Translate -Tables}. - -@item fastmap -@vindex fastmap @r{initialization} -Initialize this to nonzero if you want a fastmap, or to zero if you -don't. - -@item buffer -@itemx allocated -@vindex buffer @r{initialization} -@vindex allocated @r{initialization} -@findex malloc -If you want @code{re_compile_pattern} to allocate memory for the -compiled pattern, set both of these to zero. If you have an existing -block of memory (allocated with @code{malloc}) you want Regex to use, -set @code{buffer} to its address and @code{allocated} to its size (in -bytes). - -@code{re_compile_pattern} uses @code{realloc} to extend the space for -the compiled pattern as necessary. - -@end table - -To compile a pattern buffer, use: - -@findex re_compile_pattern -@example -char * -re_compile_pattern (const char *@var{regex}, const int @var{regex_size}, - struct re_pattern_buffer *@var{pattern_buffer}) -@end example - -@noindent -@var{regex} is the regular expression's address, @var{regex_size} is its -length, and @var{pattern_buffer} is the pattern buffer's address. - -If @code{re_compile_pattern} successfully compiles the regular -expression, it returns zero and sets @code{*@var{pattern_buffer}} to the -compiled pattern. It sets the pattern buffer's fields as follows: - -@table @code -@item buffer -@vindex buffer @r{field, set by @code{re_compile_pattern}} -to the compiled pattern. - -@item used -@vindex used @r{field, set by @code{re_compile_pattern}} -to the number of bytes the compiled pattern in @code{buffer} occupies. - -@item syntax -@vindex syntax @r{field, set by @code{re_compile_pattern}} -to the current value of @code{re_syntax_options}. - -@item re_nsub -@vindex re_nsub @r{field, set by @code{re_compile_pattern}} -to the number of subexpressions in @var{regex}. - -@item fastmap_accurate -@vindex fastmap_accurate @r{field, set by @code{re_compile_pattern}} -to zero on the theory that the pattern you're compiling is different -than the one previously compiled into @code{buffer}; in that case (since -you can't make a fastmap without a compiled pattern), -@code{fastmap} would either contain an incompatible fastmap, or nothing -at all. - -@c xx what else? -@end table - -If @code{re_compile_pattern} can't compile @var{regex}, it returns an -error string corresponding to one of the errors listed in @ref{POSIX -Regular Expression Compiling}. - - -@node GNU Matching, GNU Searching, GNU Regular Expression Compiling, GNU Regex Functions -@subsection GNU Matching - -@cindex matching with GNU functions - -Matching the @sc{gnu} way means trying to match as much of a string as -possible starting at a position within it you specify. Once you've compiled -a pattern into a pattern buffer (@pxref{GNU Regular Expression -Compiling}), you can ask the matcher to match that pattern against a -string using: - -@findex re_match -@example -int -re_match (struct re_pattern_buffer *@var{pattern_buffer}, - const char *@var{string}, const int @var{size}, - const int @var{start}, struct re_registers *@var{regs}) -@end example - -@noindent -@var{pattern_buffer} is the address of a pattern buffer containing a -compiled pattern. @var{string} is the string you want to match; it can -contain newline and null characters. @var{size} is the length of that -string. @var{start} is the string index at which you want to -begin matching; the first character of @var{string} is at index zero. -@xref{Using Registers}, for a explanation of @var{regs}; you can safely -pass zero. - -@code{re_match} matches the regular expression in @var{pattern_buffer} -against the string @var{string} according to the syntax in -@var{pattern_buffers}'s @code{syntax} field. (@xref{GNU Regular -Expression Compiling}, for how to set it.) The function returns -@math{-1} if the compiled pattern does not match any part of -@var{string} and @math{-2} if an internal error happens; otherwise, it -returns how many (possibly zero) characters of @var{string} the pattern -matched. - -An example: suppose @var{pattern_buffer} points to a pattern buffer -containing the compiled pattern for @samp{a*}, and @var{string} points -to @samp{aaaaab} (whereupon @var{size} should be 6). Then if @var{start} -is 2, @code{re_match} returns 3, i.e., @samp{a*} would have matched the -last three @samp{a}s in @var{string}. If @var{start} is 0, -@code{re_match} returns 5, i.e., @samp{a*} would have matched all the -@samp{a}s in @var{string}. If @var{start} is either 5 or 6, it returns -zero. - -If @var{start} is not between zero and @var{size}, then -@code{re_match} returns @math{-1}. - - -@node GNU Searching, Matching/Searching with Split Data, GNU Matching, GNU Regex Functions -@subsection GNU Searching - -@cindex searching with GNU functions - -@dfn{Searching} means trying to match starting at successive positions -within a string. The function @code{re_search} does this. - -Before calling @code{re_search}, you must compile your regular -expression. @xref{GNU Regular Expression Compiling}. - -Here is the function declaration: - -@findex re_search -@example -int -re_search (struct re_pattern_buffer *@var{pattern_buffer}, - const char *@var{string}, const int @var{size}, - const int @var{start}, const int @var{range}, - struct re_registers *@var{regs}) -@end example - -@noindent -@vindex start @r{argument to @code{re_search}} -@vindex range @r{argument to @code{re_search}} -whose arguments are the same as those to @code{re_match} (@pxref{GNU -Matching}) except that the two arguments @var{start} and @var{range} -replace @code{re_match}'s argument @var{start}. - -If @var{range} is positive, then @code{re_search} attempts a match -starting first at index @var{start}, then at @math{@var{start} + 1} if -that fails, and so on, up to @math{@var{start} + @var{range}}; if -@var{range} is negative, then it attempts a match starting first at -index @var{start}, then at @math{@var{start} -1} if that fails, and so -on. - -If @var{start} is not between zero and @var{size}, then @code{re_search} -returns @math{-1}. When @var{range} is positive, @code{re_search} -adjusts @var{range} so that @math{@var{start} + @var{range} - 1} is -between zero and @var{size}, if necessary; that way it won't search -outside of @var{string}. Similarly, when @var{range} is negative, -@code{re_search} adjusts @var{range} so that @math{@var{start} + -@var{range} + 1} is between zero and @var{size}, if necessary. - -If the @code{fastmap} field of @var{pattern_buffer} is zero, -@code{re_search} matches starting at consecutive positions; otherwise, -it uses @code{fastmap} to make the search more efficient. -@xref{Searching with Fastmaps}. - -If no match is found, @code{re_search} returns @math{-1}. If -a match is found, it returns the index where the match began. If an -internal error happens, it returns @math{-2}. - - -@node Matching/Searching with Split Data, Searching with Fastmaps, GNU Searching, GNU Regex Functions -@subsection Matching and Searching with Split Data - -Using the functions @code{re_match_2} and @code{re_search_2}, you can -match or search in data that is divided into two strings. - -The function: - -@findex re_match_2 -@example -int -re_match_2 (struct re_pattern_buffer *@var{buffer}, - const char *@var{string1}, const int @var{size1}, - const char *@var{string2}, const int @var{size2}, - const int @var{start}, - struct re_registers *@var{regs}, - const int @var{stop}) -@end example - -@noindent -is similar to @code{re_match} (@pxref{GNU Matching}) except that you -pass @emph{two} data strings and sizes, and an index @var{stop} beyond -which you don't want the matcher to try matching. As with -@code{re_match}, if it succeeds, @code{re_match_2} returns how many -characters of @var{string} it matched. Regard @var{string1} and -@var{string2} as concatenated when you set the arguments @var{start} and -@var{stop} and use the contents of @var{regs}; @code{re_match_2} never -returns a value larger than @math{@var{size1} + @var{size2}}. - -The function: - -@findex re_search_2 -@example -int -re_search_2 (struct re_pattern_buffer *@var{buffer}, - const char *@var{string1}, const int @var{size1}, - const char *@var{string2}, const int @var{size2}, - const int @var{start}, const int @var{range}, - struct re_registers *@var{regs}, - const int @var{stop}) -@end example - -@noindent -is similarly related to @code{re_search}. - - -@node Searching with Fastmaps, GNU Translate Tables, Matching/Searching with Split Data, GNU Regex Functions -@subsection Searching with Fastmaps - -@cindex fastmaps -If you're searching through a long string, you should use a fastmap. -Without one, the searcher tries to match at consecutive positions in the -string. Generally, most of the characters in the string could not start -a match. It takes much longer to try matching at a given position in the -string than it does to check in a table whether or not the character at -that position could start a match. A @dfn{fastmap} is such a table. - -More specifically, a fastmap is an array indexed by the characters in -your character set. Under the @sc{ascii} encoding, therefore, a fastmap -has 256 elements. If you want the searcher to use a fastmap with a -given pattern buffer, you must allocate the array and assign the array's -address to the pattern buffer's @code{fastmap} field. You either can -compile the fastmap yourself or have @code{re_search} do it for you; -when @code{fastmap} is nonzero, it automatically compiles a fastmap the -first time you search using a particular compiled pattern. - -To compile a fastmap yourself, use: - -@findex re_compile_fastmap -@example -int -re_compile_fastmap (struct re_pattern_buffer *@var{pattern_buffer}) -@end example - -@noindent -@var{pattern_buffer} is the address of a pattern buffer. If the -character @var{c} could start a match for the pattern, -@code{re_compile_fastmap} makes -@code{@var{pattern_buffer}->fastmap[@var{c}]} nonzero. It returns -@math{0} if it can compile a fastmap and @math{-2} if there is an -internal error. For example, if @samp{|} is the alternation operator -and @var{pattern_buffer} holds the compiled pattern for @samp{a|b}, then -@code{re_compile_fastmap} sets @code{fastmap['a']} and -@code{fastmap['b']} (and no others). - -@code{re_search} uses a fastmap as it moves along in the string: it -checks the string's characters until it finds one that's in the fastmap. -Then it tries matching at that character. If the match fails, it -repeats the process. So, by using a fastmap, @code{re_search} doesn't -waste time trying to match at positions in the string that couldn't -start a match. - -If you don't want @code{re_search} to use a fastmap, -store zero in the @code{fastmap} field of the pattern buffer before -calling @code{re_search}. - -Once you've initialized a pattern buffer's @code{fastmap} field, you -need never do so again---even if you compile a new pattern in -it---provided the way the field is set still reflects whether or not you -want a fastmap. @code{re_search} will still either do nothing if -@code{fastmap} is null or, if it isn't, compile a new fastmap for the -new pattern. - -@node GNU Translate Tables, Using Registers, Searching with Fastmaps, GNU Regex Functions -@subsection GNU Translate Tables - -If you set the @code{translate} field of a pattern buffer to a translate -table, then the @sc{gnu} Regex functions to which you've passed that -pattern buffer use it to apply a simple transformation -to all the regular expression and string characters at which they look. - -A @dfn{translate table} is an array indexed by the characters in your -character set. Under the @sc{ascii} encoding, therefore, a translate -table has 256 elements. The array's elements are also characters in -your character set. When the Regex functions see a character @var{c}, -they use @code{translate[@var{c}]} in its place, with one exception: the -character after a @samp{\} is not translated. (This ensures that, the -operators, e.g., @samp{\B} and @samp{\b}, are always distinguishable.) - -For example, a table that maps all lowercase letters to the -corresponding uppercase ones would cause the matcher to ignore -differences in case.@footnote{A table that maps all uppercase letters to -the corresponding lowercase ones would work just as well for this -purpose.} Such a table would map all characters except lowercase letters -to themselves, and lowercase letters to the corresponding uppercase -ones. Under the @sc{ascii} encoding, here's how you could initialize -such a table (we'll call it @code{case_fold}): - -@example -for (i = 0; i < 256; i++) - case_fold[i] = i; -for (i = 'a'; i <= 'z'; i++) - case_fold[i] = i - ('a' - 'A'); -@end example - -You tell Regex to use a translate table on a given pattern buffer by -assigning that table's address to the @code{translate} field of that -buffer. If you don't want Regex to do any translation, put zero into -this field. You'll get weird results if you change the table's contents -anytime between compiling the pattern buffer, compiling its fastmap, and -matching or searching with the pattern buffer. - -@node Using Registers, Freeing GNU Pattern Buffers, GNU Translate Tables, GNU Regex Functions -@subsection Using Registers - -A group in a regular expression can match a (posssibly empty) substring -of the string that regular expression as a whole matched. The matcher -remembers the beginning and end of the substring matched by -each group. - -To find out what they matched, pass a nonzero @var{regs} argument to a -@sc{gnu} matching or searching function (@pxref{GNU Matching} and -@ref{GNU Searching}), i.e., the address of a structure of this type, as -defined in @file{regex.h}: - -@c We don't bother to include this directly from regex.h, -@c since it changes so rarely. -@example -@tindex re_registers -@vindex num_regs @r{in @code{struct re_registers}} -@vindex start @r{in @code{struct re_registers}} -@vindex end @r{in @code{struct re_registers}} -struct re_registers -@{ - unsigned num_regs; - regoff_t *start; - regoff_t *end; -@}; -@end example - -Except for (possibly) the @var{num_regs}'th element (see below), the -@var{i}th element of the @code{start} and @code{end} arrays records -information about the @var{i}th group in the pattern. (They're declared -as C pointers, but this is only because not all C compilers accept -zero-length arrays; conceptually, it is simplest to think of them as -arrays.) - -The @code{start} and @code{end} arrays are allocated in various ways, -depending on the value of the @code{regs_allocated} -@vindex regs_allocated -field in the pattern buffer passed to the matcher. - -The simplest and perhaps most useful is to let the matcher (re)allocate -enough space to record information for all the groups in the regular -expression. If @code{regs_allocated} is @code{REGS_UNALLOCATED}, -@vindex REGS_UNALLOCATED -the matcher allocates @math{1 + @var{re_nsub}} (another field in the -pattern buffer; @pxref{GNU Pattern Buffers}). The extra element is set -to @math{-1}, and sets @code{regs_allocated} to @code{REGS_REALLOCATE}. -@vindex REGS_REALLOCATE -Then on subsequent calls with the same pattern buffer and @var{regs} -arguments, the matcher reallocates more space if necessary. - -It would perhaps be more logical to make the @code{regs_allocated} field -part of the @code{re_registers} structure, instead of part of the -pattern buffer. But in that case the caller would be forced to -initialize the structure before passing it. Much existing code doesn't -do this initialization, and it's arguably better to avoid it anyway. - -@code{re_compile_pattern} sets @code{regs_allocated} to -@code{REGS_UNALLOCATED}, -so if you use the GNU regular expression -functions, you get this behavior by default. - -xx document re_set_registers - -@sc{posix}, on the other hand, requires a different interface: the -caller is supposed to pass in a fixed-length array which the matcher -fills. Therefore, if @code{regs_allocated} is @code{REGS_FIXED} -@vindex REGS_FIXED -the matcher simply fills that array. - -The following examples illustrate the information recorded in the -@code{re_registers} structure. (In all of them, @samp{(} represents the -open-group and @samp{)} the close-group operator. The first character -in the string @var{string} is at index 0.) - -@c xx i'm not sure this is all true anymore. - -@itemize @bullet - -@item -If the regular expression has an @w{@var{i}-th} -group not contained within another group that matches a -substring of @var{string}, then the function sets -@code{@w{@var{regs}->}start[@var{i}]} to the index in @var{string} where -the substring matched by the @w{@var{i}-th} group begins, and -@code{@w{@var{regs}->}end[@var{i}]} to the index just beyond that -substring's end. The function sets @code{@w{@var{regs}->}start[0]} and -@code{@w{@var{regs}->}end[0]} to analogous information about the entire -pattern. - -For example, when you match @samp{((a)(b))} against @samp{ab}, you get: - -@itemize @bullet -@item -0 in @code{@w{@var{regs}->}start[0]} and 2 in @code{@w{@var{regs}->}end[0]} - -@item -0 in @code{@w{@var{regs}->}start[1]} and 2 in @code{@w{@var{regs}->}end[1]} - -@item -0 in @code{@w{@var{regs}->}start[2]} and 1 in @code{@w{@var{regs}->}end[2]} - -@item -1 in @code{@w{@var{regs}->}start[3]} and 2 in @code{@w{@var{regs}->}end[3]} -@end itemize - -@item -If a group matches more than once (as it might if followed by, -e.g., a repetition operator), then the function reports the information -about what the group @emph{last} matched. - -For example, when you match the pattern @samp{(a)*} against the string -@samp{aa}, you get: - -@itemize @bullet -@item -0 in @code{@w{@var{regs}->}start[0]} and 2 in @code{@w{@var{regs}->}end[0]} - -@item -1 in @code{@w{@var{regs}->}start[1]} and 2 in @code{@w{@var{regs}->}end[1]} -@end itemize - -@item -If the @w{@var{i}-th} group does not participate in a -successful match, e.g., it is an alternative not taken or a -repetition operator allows zero repetitions of it, then the function -sets @code{@w{@var{regs}->}start[@var{i}]} and -@code{@w{@var{regs}->}end[@var{i}]} to @math{-1}. - -For example, when you match the pattern @samp{(a)*b} against -the string @samp{b}, you get: - -@itemize @bullet -@item -0 in @code{@w{@var{regs}->}start[0]} and 1 in @code{@w{@var{regs}->}end[0]} - -@item -@math{-1} in @code{@w{@var{regs}->}start[1]} and @math{-1} in @code{@w{@var{regs}->}end[1]} -@end itemize - -@item -If the @w{@var{i}-th} group matches a zero-length string, then the -function sets @code{@w{@var{regs}->}start[@var{i}]} and -@code{@w{@var{regs}->}end[@var{i}]} to the index just beyond that -zero-length string. - -For example, when you match the pattern @samp{(a*)b} against the string -@samp{b}, you get: - -@itemize @bullet -@item -0 in @code{@w{@var{regs}->}start[0]} and 1 in @code{@w{@var{regs}->}end[0]} - -@item -0 in @code{@w{@var{regs}->}start[1]} and 0 in @code{@w{@var{regs}->}end[1]} -@end itemize - -@ignore -The function sets @code{@w{@var{regs}->}start[0]} and -@code{@w{@var{regs}->}end[0]} to analogous information about the entire -pattern. - -For example, when you match the pattern @samp{(a*)} against the empty -string, you get: - -@itemize @bullet -@item -0 in @code{@w{@var{regs}->}start[0]} and 0 in @code{@w{@var{regs}->}end[0]} - -@item -0 in @code{@w{@var{regs}->}start[1]} and 0 in @code{@w{@var{regs}->}end[1]} -@end itemize -@end ignore - -@item -If an @w{@var{i}-th} group contains a @w{@var{j}-th} group -in turn not contained within any other group within group @var{i} and -the function reports a match of the @w{@var{i}-th} group, then it -records in @code{@w{@var{regs}->}start[@var{j}]} and -@code{@w{@var{regs}->}end[@var{j}]} the last match (if it matched) of -the @w{@var{j}-th} group. - -For example, when you match the pattern @samp{((a*)b)*} against the -string @samp{abb}, @w{group 2} last matches the empty string, so you -get what it previously matched: - -@itemize @bullet -@item -0 in @code{@w{@var{regs}->}start[0]} and 3 in @code{@w{@var{regs}->}end[0]} - -@item -2 in @code{@w{@var{regs}->}start[1]} and 3 in @code{@w{@var{regs}->}end[1]} - -@item -2 in @code{@w{@var{regs}->}start[2]} and 2 in @code{@w{@var{regs}->}end[2]} -@end itemize - -When you match the pattern @samp{((a)*b)*} against the string -@samp{abb}, @w{group 2} doesn't participate in the last match, so you -get: - -@itemize @bullet -@item -0 in @code{@w{@var{regs}->}start[0]} and 3 in @code{@w{@var{regs}->}end[0]} - -@item -2 in @code{@w{@var{regs}->}start[1]} and 3 in @code{@w{@var{regs}->}end[1]} - -@item -0 in @code{@w{@var{regs}->}start[2]} and 1 in @code{@w{@var{regs}->}end[2]} -@end itemize - -@item -If an @w{@var{i}-th} group contains a @w{@var{j}-th} group -in turn not contained within any other group within group @var{i} -and the function sets -@code{@w{@var{regs}->}start[@var{i}]} and -@code{@w{@var{regs}->}end[@var{i}]} to @math{-1}, then it also sets -@code{@w{@var{regs}->}start[@var{j}]} and -@code{@w{@var{regs}->}end[@var{j}]} to @math{-1}. - -For example, when you match the pattern @samp{((a)*b)*c} against the -string @samp{c}, you get: - -@itemize @bullet -@item -0 in @code{@w{@var{regs}->}start[0]} and 1 in @code{@w{@var{regs}->}end[0]} - -@item -@math{-1} in @code{@w{@var{regs}->}start[1]} and @math{-1} in @code{@w{@var{regs}->}end[1]} - -@item -@math{-1} in @code{@w{@var{regs}->}start[2]} and @math{-1} in @code{@w{@var{regs}->}end[2]} -@end itemize - -@end itemize - -@node Freeing GNU Pattern Buffers, , Using Registers, GNU Regex Functions -@subsection Freeing GNU Pattern Buffers - -To free any allocated fields of a pattern buffer, you can use the -@sc{posix} function described in @ref{Freeing POSIX Pattern Buffers}, -since the type @code{regex_t}---the type for @sc{posix} pattern -buffers---is equivalent to the type @code{re_pattern_buffer}. After -freeing a pattern buffer, you need to again compile a regular expression -in it (@pxref{GNU Regular Expression Compiling}) before passing it to -a matching or searching function. - - -@node POSIX Regex Functions, BSD Regex Functions, GNU Regex Functions, Programming with Regex -@section POSIX Regex Functions - -If you're writing code that has to be @sc{posix} compatible, you'll need -to use these functions. Their interfaces are as specified by @sc{posix}, -draft 1003.2/D11.2. - -@menu -* POSIX Pattern Buffers:: The regex_t type. -* POSIX Regular Expression Compiling:: regcomp () -* POSIX Matching:: regexec () -* Reporting Errors:: regerror () -* Using Byte Offsets:: The regmatch_t type. -* Freeing POSIX Pattern Buffers:: regfree () -@end menu - - -@node POSIX Pattern Buffers, POSIX Regular Expression Compiling, , POSIX Regex Functions -@subsection POSIX Pattern Buffers - -To compile or match a given regular expression the @sc{posix} way, you -must supply a pattern buffer exactly the way you do for @sc{gnu} -(@pxref{GNU Pattern Buffers}). @sc{posix} pattern buffers have type -@code{regex_t}, which is equivalent to the @sc{gnu} pattern buffer -type @code{re_pattern_buffer}. - - -@node POSIX Regular Expression Compiling, POSIX Matching, POSIX Pattern Buffers, POSIX Regex Functions -@subsection POSIX Regular Expression Compiling - -With @sc{posix}, you can only search for a given regular expression; you -can't match it. To do this, you must first compile it in a -pattern buffer, using @code{regcomp}. - -@ignore -Before calling @code{regcomp}, you must initialize this pattern buffer -as you do for @sc{gnu} (@pxref{GNU Regular Expression Compiling}). See -below, however, for how to choose a syntax with which to compile. -@end ignore - -To compile a pattern buffer, use: - -@findex regcomp -@example -int -regcomp (regex_t *@var{preg}, const char *@var{regex}, int @var{cflags}) -@end example - -@noindent -@var{preg} is the initialized pattern buffer's address, @var{regex} is -the regular expression's address, and @var{cflags} is the compilation -flags, which Regex considers as a collection of bits. Here are the -valid bits, as defined in @file{regex.h}: - -@table @code - -@item REG_EXTENDED -@vindex REG_EXTENDED -says to use @sc{posix} Extended Regular Expression syntax; if this isn't -set, then says to use @sc{posix} Basic Regular Expression syntax. -@code{regcomp} sets @var{preg}'s @code{syntax} field accordingly. - -@item REG_ICASE -@vindex REG_ICASE -@cindex ignoring case -says to ignore case; @code{regcomp} sets @var{preg}'s @code{translate} -field to a translate table which ignores case, replacing anything you've -put there before. - -@item REG_NOSUB -@vindex REG_NOSUB -says to set @var{preg}'s @code{no_sub} field; @pxref{POSIX Matching}, -for what this means. - -@item REG_NEWLINE -@vindex REG_NEWLINE -says that a: - -@itemize @bullet - -@item -match-any-character operator (@pxref{Match-any-character -Operator}) doesn't match a newline. - -@item -nonmatching list not containing a newline (@pxref{List -Operators}) matches a newline. - -@item -match-beginning-of-line operator (@pxref{Match-beginning-of-line -Operator}) matches the empty string immediately after a newline, -regardless of how @code{REG_NOTBOL} is set (@pxref{POSIX Matching}, for -an explanation of @code{REG_NOTBOL}). - -@item -match-end-of-line operator (@pxref{Match-beginning-of-line -Operator}) matches the empty string immediately before a newline, -regardless of how @code{REG_NOTEOL} is set (@pxref{POSIX Matching}, -for an explanation of @code{REG_NOTEOL}). - -@end itemize - -@end table - -If @code{regcomp} successfully compiles the regular expression, it -returns zero and sets @code{*@var{pattern_buffer}} to the compiled -pattern. Except for @code{syntax} (which it sets as explained above), it -also sets the same fields the same way as does the @sc{gnu} compiling -function (@pxref{GNU Regular Expression Compiling}). - -If @code{regcomp} can't compile the regular expression, it returns one -of the error codes listed here. (Except when noted differently, the -syntax of in all examples below is basic regular expression syntax.) - -@table @code - -@comment repetitions -@item REG_BADRPT -For example, the consecutive repetition operators @samp{**} in -@samp{a**} are invalid. As another example, if the syntax is extended -regular expression syntax, then the repetition operator @samp{*} with -nothing on which to operate in @samp{*} is invalid. - -@item REG_BADBR -For example, the @var{count} @samp{-1} in @samp{a\@{-1} is invalid. - -@item REG_EBRACE -For example, @samp{a\@{1} is missing a close-interval operator. - -@comment lists -@item REG_EBRACK -For example, @samp{[a} is missing a close-list operator. - -@item REG_ERANGE -For example, the range ending point @samp{z} that collates lower than -does its starting point @samp{a} in @samp{[z-a]} is invalid. Also, the -range with the character class @samp{[:alpha:]} as its starting point in -@samp{[[:alpha:]-|]}. - -@item REG_ECTYPE -For example, the character class name @samp{foo} in @samp{[[:foo:]} is -invalid. - -@comment groups -@item REG_EPAREN -For example, @samp{a\)} is missing an open-group operator and @samp{\(a} -is missing a close-group operator. - -@item REG_ESUBREG -For example, the back reference @samp{\2} that refers to a nonexistent -subexpression in @samp{\(a\)\2} is invalid. - -@comment unfinished business - -@item REG_EEND -Returned when a regular expression causes no other more specific error. - -@item REG_EESCAPE -For example, the trailing backslash @samp{\} in @samp{a\} is invalid, as is the -one in @samp{\}. - -@comment kitchen sink -@item REG_BADPAT -For example, in the extended regular expression syntax, the empty group -@samp{()} in @samp{a()b} is invalid. - -@comment internal -@item REG_ESIZE -Returned when a regular expression needs a pattern buffer larger than -65536 bytes. - -@item REG_ESPACE -Returned when a regular expression makes Regex to run out of memory. - -@end table - - -@node POSIX Matching, Reporting Errors, POSIX Regular Expression Compiling, POSIX Regex Functions -@subsection POSIX Matching - -Matching the @sc{posix} way means trying to match a null-terminated -string starting at its first character. Once you've compiled a pattern -into a pattern buffer (@pxref{POSIX Regular Expression Compiling}), you -can ask the matcher to match that pattern against a string using: - -@findex regexec -@example -int -regexec (const regex_t *@var{preg}, const char *@var{string}, - size_t @var{nmatch}, regmatch_t @var{pmatch}[], int @var{eflags}) -@end example - -@noindent -@var{preg} is the address of a pattern buffer for a compiled pattern. -@var{string} is the string you want to match. - -@xref{Using Byte Offsets}, for an explanation of @var{pmatch}. If you -pass zero for @var{nmatch} or you compiled @var{preg} with the -compilation flag @code{REG_NOSUB} set, then @code{regexec} will ignore -@var{pmatch}; otherwise, you must allocate it to have at least -@var{nmatch} elements. @code{regexec} will record @var{nmatch} byte -offsets in @var{pmatch}, and set to @math{-1} any unused elements up to -@math{@var{pmatch}@code{[@var{nmatch}]} - 1}. - -@var{eflags} specifies @dfn{execution flags}---namely, the two bits -@code{REG_NOTBOL} and @code{REG_NOTEOL} (defined in @file{regex.h}). If -you set @code{REG_NOTBOL}, then the match-beginning-of-line operator -(@pxref{Match-beginning-of-line Operator}) always fails to match. -This lets you match against pieces of a line, as you would need to if, -say, searching for repeated instances of a given pattern in a line; it -would work correctly for patterns both with and without -match-beginning-of-line operators. @code{REG_NOTEOL} works analogously -for the match-end-of-line operator (@pxref{Match-end-of-line -Operator}); it exists for symmetry. - -@code{regexec} tries to find a match for @var{preg} in @var{string} -according to the syntax in @var{preg}'s @code{syntax} field. -(@xref{POSIX Regular Expression Compiling}, for how to set it.) The -function returns zero if the compiled pattern matches @var{string} and -@code{REG_NOMATCH} (defined in @file{regex.h}) if it doesn't. - -@node Reporting Errors, Using Byte Offsets, POSIX Matching, POSIX Regex Functions -@subsection Reporting Errors - -If either @code{regcomp} or @code{regexec} fail, they return a nonzero -error code, the possibilities for which are defined in @file{regex.h}. -@xref{POSIX Regular Expression Compiling}, and @ref{POSIX Matching}, for -what these codes mean. To get an error string corresponding to these -codes, you can use: - -@findex regerror -@example -size_t -regerror (int @var{errcode}, - const regex_t *@var{preg}, - char *@var{errbuf}, - size_t @var{errbuf_size}) -@end example - -@noindent -@var{errcode} is an error code, @var{preg} is the address of the pattern -buffer which provoked the error, @var{errbuf} is the error buffer, and -@var{errbuf_size} is @var{errbuf}'s size. - -@code{regerror} returns the size in bytes of the error string -corresponding to @var{errcode} (including its terminating null). If -@var{errbuf} and @var{errbuf_size} are nonzero, it also returns in -@var{errbuf} the first @math{@var{errbuf_size} - 1} characters of the -error string, followed by a null. -@var{errbuf_size} must be a nonnegative number less than or equal to the -size in bytes of @var{errbuf}. - -You can call @code{regerror} with a null @var{errbuf} and a zero -@var{errbuf_size} to determine how large @var{errbuf} need be to -accommodate @code{regerror}'s error string. - -@node Using Byte Offsets, Freeing POSIX Pattern Buffers, Reporting Errors, POSIX Regex Functions -@subsection Using Byte Offsets - -In @sc{posix}, variables of type @code{regmatch_t} hold analogous -information, but are not identical to, @sc{gnu}'s registers (@pxref{Using -Registers}). To get information about registers in @sc{posix}, pass to -@code{regexec} a nonzero @var{pmatch} of type @code{regmatch_t}, i.e., -the address of a structure of this type, defined in -@file{regex.h}: - -@tindex regmatch_t -@example -typedef struct -@{ - regoff_t rm_so; - regoff_t rm_eo; -@} regmatch_t; -@end example - -When reading in @ref{Using Registers}, about how the matching function -stores the information into the registers, substitute @var{pmatch} for -@var{regs}, @code{@w{@var{pmatch}[@var{i}]->}rm_so} for -@code{@w{@var{regs}->}start[@var{i}]} and -@code{@w{@var{pmatch}[@var{i}]->}rm_eo} for -@code{@w{@var{regs}->}end[@var{i}]}. - -@node Freeing POSIX Pattern Buffers, , Using Byte Offsets, POSIX Regex Functions -@subsection Freeing POSIX Pattern Buffers - -To free any allocated fields of a pattern buffer, use: - -@findex regfree -@example -void -regfree (regex_t *@var{preg}) -@end example - -@noindent -@var{preg} is the pattern buffer whose allocated fields you want freed. -@code{regfree} also sets @var{preg}'s @code{allocated} and @code{used} -fields to zero. After freeing a pattern buffer, you need to again -compile a regular expression in it (@pxref{POSIX Regular Expression -Compiling}) before passing it to the matching function (@pxref{POSIX -Matching}). - - -@node BSD Regex Functions, , POSIX Regex Functions, Programming with Regex -@section BSD Regex Functions - -If you're writing code that has to be Berkeley @sc{unix} compatible, -you'll need to use these functions whose interfaces are the same as those -in Berkeley @sc{unix}. - -@menu -* BSD Regular Expression Compiling:: re_comp () -* BSD Searching:: re_exec () -@end menu - -@node BSD Regular Expression Compiling, BSD Searching, , BSD Regex Functions -@subsection BSD Regular Expression Compiling - -With Berkeley @sc{unix}, you can only search for a given regular -expression; you can't match one. To search for it, you must first -compile it. Before you compile it, you must indicate the regular -expression syntax you want it compiled according to by setting the -variable @code{re_syntax_options} (declared in @file{regex.h} to some -syntax (@pxref{Regular Expression Syntax}). - -To compile a regular expression use: - -@findex re_comp -@example -char * -re_comp (char *@var{regex}) -@end example - -@noindent -@var{regex} is the address of a null-terminated regular expression. -@code{re_comp} uses an internal pattern buffer, so you can use only the -most recently compiled pattern buffer. This means that if you want to -use a given regular expression that you've already compiled---but it -isn't the latest one you've compiled---you'll have to recompile it. If -you call @code{re_comp} with the null string (@emph{not} the empty -string) as the argument, it doesn't change the contents of the pattern -buffer. - -If @code{re_comp} successfully compiles the regular expression, it -returns zero. If it can't compile the regular expression, it returns -an error string. @code{re_comp}'s error messages are identical to those -of @code{re_compile_pattern} (@pxref{GNU Regular Expression -Compiling}). - -@node BSD Searching, , BSD Regular Expression Compiling, BSD Regex Functions -@subsection BSD Searching - -Searching the Berkeley @sc{unix} way means searching in a string -starting at its first character and trying successive positions within -it to find a match. Once you've compiled a pattern using @code{re_comp} -(@pxref{BSD Regular Expression Compiling}), you can ask Regex -to search for that pattern in a string using: - -@findex re_exec -@example -int -re_exec (char *@var{string}) -@end example - -@noindent -@var{string} is the address of the null-terminated string in which you -want to search. - -@code{re_exec} returns either 1 for success or 0 for failure. It -automatically uses a @sc{gnu} fastmap (@pxref{Searching with Fastmaps}). - - -@node Copying, Index, Programming with Regex, Top -@appendix GNU GENERAL PUBLIC LICENSE -@center Version 2, June 1991 - -@display -Copyright @copyright{} 1989, 1991 Free Software Foundation, Inc. -675 Mass Ave, Cambridge, MA 02139, USA - -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. -@end display - -@unnumberedsec Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software---to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - -@iftex -@unnumberedsec TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION -@end iftex -@ifinfo -@center TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION -@end ifinfo - -@enumerate -@item -This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The ``Program'', below, -refers to any such program or work, and a ``work based on the Program'' -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term ``modification''.) Each licensee is addressed as ``you''. - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - -@item -You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - -@item -You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - -@enumerate a -@item -You must cause the modified files to carry prominent notices -stating that you changed the files and the date of any change. - -@item -You must cause any work that you distribute or publish, that in -whole or in part contains or is derived from the Program or any -part thereof, to be licensed as a whole at no charge to all third -parties under the terms of this License. - -@item -If the modified program normally reads commands interactively -when run, you must cause it, when started running for such -interactive use in the most ordinary way, to print or display an -announcement including an appropriate copyright notice and a -notice that there is no warranty (or else, saying that you provide -a warranty) and that users may redistribute the program under -these conditions, and telling the user how to view a copy of this -License. (Exception: if the Program itself is interactive but -does not normally print such an announcement, your work based on -the Program is not required to print an announcement.) -@end enumerate - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - -@item -You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - -@enumerate a -@item -Accompany it with the complete corresponding machine-readable -source code, which must be distributed under the terms of Sections -1 and 2 above on a medium customarily used for software interchange; or, - -@item -Accompany it with a written offer, valid for at least three -years, to give any third party, for a charge no more than your -cost of physically performing source distribution, a complete -machine-readable copy of the corresponding source code, to be -distributed under the terms of Sections 1 and 2 above on a medium -customarily used for software interchange; or, - -@item -Accompany it with the information you received as to the offer -to distribute corresponding source code. (This alternative is -allowed only for noncommercial distribution and only if you -received the program in object code or executable form with such -an offer, in accord with Subsection b above.) -@end enumerate - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - -@item -You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - -@item -You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - -@item -Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - -@item -If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - -@item -If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - -@item -The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and ``any -later version'', you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - -@item -If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - -@iftex -@heading NO WARRANTY -@end iftex -@ifinfo -@center NO WARRANTY -@end ifinfo - -@item -BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM ``AS IS'' WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - -@item -IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. -@end enumerate - -@iftex -@heading END OF TERMS AND CONDITIONS -@end iftex -@ifinfo -@center END OF TERMS AND CONDITIONS -@end ifinfo - -@page -@unnumberedsec Appendix: How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the ``copyright'' line and a pointer to where the full notice is found. - -@smallexample -@var{one line to give the program's name and a brief idea of what it does.} -Copyright (C) 19@var{yy} @var{name of author} - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -@end smallexample - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - -@smallexample -Gnomovision version 69, Copyright (C) 19@var{yy} @var{name of author} -Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. -This is free software, and you are welcome to redistribute it -under certain conditions; type `show c' for details. -@end smallexample - -The hypothetical commands @samp{show w} and @samp{show c} should show -the appropriate parts of the General Public License. Of course, the -commands you use may be called something other than @samp{show w} and -@samp{show c}; they could even be mouse-clicks or menu items---whatever -suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a ``copyright disclaimer'' for the program, if -necessary. Here is a sample; alter the names: - -@example -Yoyodyne, Inc., hereby disclaims all copyright interest in the program -`Gnomovision' (which makes passes at compilers) written by James Hacker. - -@var{signature of Ty Coon}, 1 April 1989 -Ty Coon, President of Vice -@end example - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. - - -@node Index, , Copying, Top -@unnumbered Index - -@printindex cp - -@contents - -@bye Index: gnu/lib/libstdc++/doc/Makefile =================================================================== diff --git a/head/gnu/lib/libstdc++/doc/Makefile b/head/gnu/lib/libstdc++/doc/Makefile deleted file mode 10644 --- a/head/gnu/lib/libstdc++/doc/Makefile (revision 267841) +++ /dev/null (working copy) @@ -1,13 +0,0 @@ -# $FreeBSD$ - -SRCDIR= ${.CURDIR}/../../../../contrib/libstdc++ - -.PATH: ${SRCDIR}/../libio - -INFO = iostream - -INFOENTRY_iostream= "* iostream: (iostream). The GNU C++ I/O library." - -MAKEINFOFLAGS+= -I ${SRCDIR}/../libio - -.include Index: gnu/usr.bin/binutils/Makefile =================================================================== diff --git a/head/gnu/usr.bin/binutils/Makefile b/head/gnu/usr.bin/binutils/Makefile --- a/head/gnu/usr.bin/binutils/Makefile (revision 267841) +++ b/head/gnu/usr.bin/binutils/Makefile (working copy) @@ -2,6 +2,6 @@ SUBDIR= libiberty libbfd libopcodes libbinutils \ addr2line as ld nm objcopy objdump readelf \ - size strings strip doc + size strings strip .include Index: gnu/usr.bin/binutils/doc/Makefile =================================================================== diff --git a/head/gnu/usr.bin/binutils/doc/Makefile b/head/gnu/usr.bin/binutils/doc/Makefile deleted file mode 10644 --- a/head/gnu/usr.bin/binutils/doc/Makefile (revision 267841) +++ /dev/null (working copy) @@ -1,31 +0,0 @@ -# $FreeBSD$ - -.include "../Makefile.inc0" - -.PATH: ${SRCDIR}/gas/doc ${SRCDIR}/ld ${SRCDIR}/bfd/doc - -INFO= as ld binutils -INFOSECTION= "Programming & development tools." -INFOENTRY_as= "* As: (as). The GNU assembler." -INFOENTRY_ld= "* Ld: (ld). The GNU linker." -INFOENTRY_binutils= "* Binutils: (binutils). The GNU Binary Utilities." - -MAKEINFOFLAGS+= --no-validate -MAKEINFOFLAGS+= -I ${SRCDIR}/libiberty -MAKEINFOFLAGS+= -I ${SRCDIR}/bfd/doc - -CLEANFILES= bfdver.texi configdoc.texi config.texi gasver.texi ldver.texi - -as.info: as.texinfo asconfig.texi bfdver.texi c-i386.texi gasver.texi -ld.info: ld.texinfo bfdsumm.texi ldver.texi configdoc.texi - -configdoc.texi: gen-doc.texi - ln -sf ${.ALLSRC} ${.TARGET} - -.PATH: ${SRCDIR}/binutils/doc -binutils.info: binutils.texi config.texi - -bfdver.texi config.texi gasver.texi ldver.texi: - echo "@set VERSION ${VERSION}" > ${.TARGET} - -.include Index: gnu/usr.bin/binutils/doc/asconfig.texi =================================================================== diff --git a/head/gnu/usr.bin/binutils/doc/asconfig.texi b/head/gnu/usr.bin/binutils/doc/asconfig.texi deleted file mode 10644 --- a/head/gnu/usr.bin/binutils/doc/asconfig.texi (revision 267841) +++ /dev/null (working copy) @@ -1,90 +0,0 @@ -@c $FreeBSD$ -@c Copyright 1992, 1993, 1994, 1996, 1997, 1999, 2000, 2001, 2002, -@c 2003, 2005 -@c Free Software Foundation, Inc. -@c This file is part of the documentation for the GAS manual - -@c Configuration settings for all-inclusive version of manual - -@c switches:------------------------------------------------------------ -@c Properties of the manual -@c ======================== -@c Discuss all architectures? -@clear ALL-ARCH -@c A generic form of manual (not tailored to specific target)? -@clear GENERIC -@c Include text on assembler internals? -@set INTERNALS -@c Many object formats supported in this config? -@clear MULTI-OBJ - -@c Object formats of interest -@c ========================== -@clear AOUT -@clear COFF -@set ELF -@clear SOM - -@c CPUs of interest -@c ================ -@clear ALPHA -@clear ARC -@set ARM -@clear BFIN -@clear CRIS -@clear D10V -@clear D30V -@clear H8/300 -@clear HPPA -@clear I370 -@set I80386 -@clear I860 -@clear I960 -@set IA64 -@clear IP2K -@clear M32C -@clear M32R -@clear xc16x -@clear M68HC11 -@clear M680X0 -@clear MCORE -@set MIPS -@clear MMIX -@clear MS1 -@clear MSP430 -@clear PDP11 -@clear PJ -@set PPC -@clear SH -@set SPARC -@clear TIC54X -@clear V850 -@clear VAX -@clear XTENSA -@clear Z80 -@clear Z8000 - -@c Does this version of the assembler use the difference-table kludge? -@clear DIFF-TBL-KLUGE - -@c Do all machines described use IEEE floating point? -@clear IEEEFLOAT - -@c Is a word 32 bits, or 16? -@set W32 -@clear W16 - -@c Do symbols have different characters than usual? -@clear SPECIAL-SYMS - -@c strings:------------------------------------------------------------ -@c Name of the assembler: -@set AS as -@c Name of C compiler: -@set GCC gcc -@c Name of linker: -@set LD ld -@c Text for target machine (best not used in generic case; but just in case...) -@set TARGET machine specific -@c Name of object format NOT SET in generic version -@set OBJ-NAME ELF Index: gnu/usr.bin/cc/Makefile =================================================================== diff --git a/head/gnu/usr.bin/cc/Makefile b/head/gnu/usr.bin/cc/Makefile --- a/head/gnu/usr.bin/cc/Makefile (revision 267841) +++ b/head/gnu/usr.bin/cc/Makefile (working copy) @@ -5,7 +5,7 @@ # The order of some of these are rather important. Some depend on previous # subdirs. -SUBDIR= cc_tools libiberty libcpp libdecnumber cc_int cc cc1 include doc +SUBDIR= cc_tools libiberty libcpp libdecnumber cc_int cc cc1 include .if ${MK_CPP} != "no" SUBDIR+= cpp Index: gnu/usr.bin/cc/doc/Makefile =================================================================== diff --git a/head/gnu/usr.bin/cc/doc/Makefile b/head/gnu/usr.bin/cc/doc/Makefile deleted file mode 10644 --- a/head/gnu/usr.bin/cc/doc/Makefile (revision 267841) +++ /dev/null (working copy) @@ -1,52 +0,0 @@ -# $FreeBSD$ - -.include - -.include "../Makefile.inc" -.include "../Makefile.ver" - -.PATH: ${GCCDIR}/doc ${GCCDIR}/doc/include - -INFO= gcc cpp gccint cppinternals - -INFOSECTION= "Gcc Documentation" -INFOENTRY_gcc= "* gcc: (gcc). The GNU C compiler." -INFOENTRY_cpp= "* cpp: (cpp). The GNU C pre-processor." -INFOENTRY_gccint= "* gccint: (gccint). The GNU compiler family internal documentation." -INFOENTRY_cppinternals= "* cppinternals: (cppinternals). The GNU compiler preprocessor internal documentation." - -gcc.info: gcc.texi gcc-common.texi gcc-vers.texi frontends.texi \ - standards.texi invoke.texi extend.texi md.texi \ - gcov.texi trouble.texi bugreport.texi service.texi \ - contribute.texi compat.texi funding.texi gnu.texi gpl.texi \ - fdl.texi contrib.texi cppenv.texi cppopts.texi \ - implement-c.texi - -gccint.info: gccint.texi gcc-common.texi gcc-vers.texi \ - contribute.texi makefile.texi configterms.texi options.texi \ - portability.texi interface.texi passes.texi c-tree.texi \ - rtl.texi md.texi tm.texi hostconfig.texi fragments.texi \ - configfiles.texi collect2.texi headerdirs.texi funding.texi \ - gnu.texi gpl.texi fdl.texi contrib.texi languages.texi \ - sourcebuild.texi gty.texi libgcc.texi cfg.texi tree-ssa.texi \ - loop.texi - -cpp.info: cpp.texi fdl.texi cppenv.texi cppopts.texi gcc-common.texi \ - gcc-vers.texi - -cppinternals.info: cppinternals.texi gcc-common.texi gcc-vers.texi - -MAKEINFOFLAGS+= -I ${GCCDIR}/doc -I ${GCCDIR}/doc/include - -gcc-vers.texi: - (echo "@set version-GCC $(BASEVER)"; \ - if [ "$(DEVPHASE)" = "experimental" ]; then \ - echo "@set DEVELOPMENT"; \ - else \ - echo "@clear DEVELOPMENT"; \ - fi; \ - echo "@set srcdir $(GCCLIB)/libiberty" ) > ${.TARGET} - -CLEANFILES+= gcc-vers.texi - -.include Index: gnu/usr.bin/diff/Makefile =================================================================== diff --git a/head/gnu/usr.bin/diff/Makefile b/head/gnu/usr.bin/diff/Makefile --- a/head/gnu/usr.bin/diff/Makefile (revision 267841) +++ b/head/gnu/usr.bin/diff/Makefile (working copy) @@ -22,8 +22,6 @@ CFLAGS+=-I${.CURDIR}/../../../contrib/diff/lib CFLAGS+=-I${DESTDIR}/usr/include/gnu -SUBDIR+=doc - DPADD= ${LIBGNUREGEX} LDADD= -lgnuregex Index: gnu/usr.bin/diff/doc/Makefile =================================================================== diff --git a/head/gnu/usr.bin/diff/doc/Makefile b/head/gnu/usr.bin/diff/doc/Makefile deleted file mode 10644 --- a/head/gnu/usr.bin/diff/doc/Makefile (revision 267841) +++ /dev/null (working copy) @@ -1,9 +0,0 @@ -# $FreeBSD$ - -INFO = diff - -INFOENTRY_diff= "* DIFF: (diff). DIFF/PATCH Reference Manual." - -SRCDIR=${.CURDIR}/../../../../contrib/diff/doc - -.include Index: gnu/usr.bin/gdb/Makefile =================================================================== diff --git a/head/gnu/usr.bin/gdb/Makefile b/head/gnu/usr.bin/gdb/Makefile --- a/head/gnu/usr.bin/gdb/Makefile (revision 267841) +++ b/head/gnu/usr.bin/gdb/Makefile (working copy) @@ -1,6 +1,6 @@ # $FreeBSD$ -SUBDIR= doc libgdb gdb gdbtui kgdb +SUBDIR= libgdb gdb gdbtui kgdb .if exists(${.CURDIR}/gdbserver/reg-${MACHINE_CPUARCH}.c) SUBDIR+=gdbserver Index: gnu/usr.bin/gdb/doc/Makefile =================================================================== diff --git a/head/gnu/usr.bin/gdb/doc/Makefile b/head/gnu/usr.bin/gdb/doc/Makefile deleted file mode 10644 --- a/head/gnu/usr.bin/gdb/doc/Makefile (revision 267841) +++ /dev/null (working copy) @@ -1,32 +0,0 @@ -# $FreeBSD$ - -INFO= gdb gdbint stabs -INFOSECTION= "Software development" - -MAKEINFOFLAGS+= --no-validate -MAKEINFOFLAGS+= -I ${CNTRB_GDB}/gdb/doc -MAKEINFOFLAGS+= -I ${CNTRB_GDB}/gdb/mi -MAKEINFOFLAGS+= -I ${CNTRB_RL}/doc - -gdb.info: gdb.texinfo gdb-cfg.texi GDBvn.texi annotate.texinfo fdl.texi \ - gpl.texi inc-hist.texinfo rluser.texinfo - -gdbint.info: gdbint.texinfo gdb-cfg.texi fdl.texi observer.texi - -gdb-cfg.texi: all-cfg.texi - ln -sf ${.ALLSRC} ${.TARGET} - -GDBvn.texi: version.in - echo "@set GDBVN `sed q ${.ALLSRC}`" > ${.TARGET} - -inc-hist.texinfo: hsuser.texi inc-hist.diff - cp -f ${.ALLSRC:M*.texi} ${.TARGET} - patch < ${.ALLSRC:M*.diff} - -rluser.texinfo: rluser.texi - cp -f ${.ALLSRC:M*.texi} ${.TARGET} - -CLEANFILES= gdb-cfg.texi GDBvn.texi inc-hist.texinfo inc-hist.texinfo.orig \ - rluser.texinfo - -.include Index: gnu/usr.bin/gdb/doc/inc-hist.diff =================================================================== diff --git a/head/gnu/usr.bin/gdb/doc/inc-hist.diff b/head/gnu/usr.bin/gdb/doc/inc-hist.diff deleted file mode 10644 --- a/head/gnu/usr.bin/gdb/doc/inc-hist.diff (revision 267841) +++ /dev/null (working copy) @@ -1,31 +0,0 @@ -$FreeBSD$ - ---- inc-hist.texinfo.orig Wed Apr 11 08:20:01 2001 -+++ inc-hist.texinfo Wed Apr 11 08:21:57 2001 -@@ -26,9 +26,9 @@ - @node Using History Interactively - @chapter Using History Interactively - --@ifclear BashFeatures --@defcodeindex bt --@end ifclear -+@c @ifclear BashFeatures -+@c @defcodeindex bt -+@c @end ifclear - - @ifset BashFeatures - This chapter describes how to use the @sc{gnu} History Library -@@ -39,9 +39,10 @@ - @end ifset - @ifclear BashFeatures - This chapter describes how to use the @sc{gnu} History Library interactively, --from a user's standpoint. It should be considered a user's guide. For --information on using the @sc{gnu} History Library in your own programs, --@pxref{Programming with GNU History}. -+from a user's standpoint. -+@c It should be considered a user's guide. For -+@c information on using the @sc{gnu} History Library in your own programs, -+@c @pxref{Programming with GNU History}. - @end ifclear - - @ifset BashFeatures Index: gnu/usr.bin/grep/Makefile =================================================================== diff --git a/head/gnu/usr.bin/grep/Makefile b/head/gnu/usr.bin/grep/Makefile --- a/head/gnu/usr.bin/grep/Makefile (revision 267841) +++ b/head/gnu/usr.bin/grep/Makefile (working copy) @@ -46,8 +46,6 @@ gnugrep.1: grep.1 cp ${.ALLSRC} ${.TARGET} -SUBDIR+=doc - check: all @failed=0; total=0; \ for tst in ${TESTS}; do \ Index: gnu/usr.bin/grep/doc/Makefile =================================================================== diff --git a/head/gnu/usr.bin/grep/doc/Makefile b/head/gnu/usr.bin/grep/doc/Makefile deleted file mode 10644 --- a/head/gnu/usr.bin/grep/doc/Makefile (revision 267841) +++ /dev/null (working copy) @@ -1,6 +0,0 @@ -# $FreeBSD$ - -INFO= grep -INFOSECTION= "System Utilities" - -.include Index: gnu/usr.bin/grep/doc/grep.texi =================================================================== diff --git a/head/gnu/usr.bin/grep/doc/grep.texi b/head/gnu/usr.bin/grep/doc/grep.texi deleted file mode 10644 --- a/head/gnu/usr.bin/grep/doc/grep.texi (revision 267841) +++ /dev/null (working copy) @@ -1,2090 +0,0 @@ -\input texinfo @c -*-texinfo-*- -@c %**start of header -@setfilename grep.info -@settitle grep, print lines matching a pattern -@c %**end of header - -@c This file has the new style title page commands. -@c Run `makeinfo' rather than `texinfo-format-buffer'. - -@c smallbook - -@c tex -@c \overfullrule=0pt -@c end tex - -@include version.texi - -@c Combine indices. -@syncodeindex ky cp -@syncodeindex pg cp -@syncodeindex tp cp - -@defcodeindex op -@syncodeindex op fn -@syncodeindex vr fn - -@ifinfo -@direntry -* grep: (grep). print lines matching a pattern. -@end direntry -This file documents @command{grep}, a pattern matching engine. - - -Published by the Free Software Foundation, -59 Temple Place - Suite 330 -Boston, MA 02111-1307, USA - -@c man begin COPYRIGHT -Copyright @copyright{} 2000, 2001 Free Software Foundation, Inc. - -Permission is granted to make and distribute verbatim copies of -this manual provided the copyright notice and this permission notice -are preserved on all copies. - -@ignore -Permission is granted to process this file through TeX and print the -results, provided the printed document carries a copying permission -notice identical to this one except for the removal of this paragraph -(this paragraph not being relevant to the printed manual). - -@end ignore -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.1 or -any later version published by the Free Software Foundation; with the -Invariant Sections being ``GNU General Public License'' and ``GNU Free -Documentation License'', with no Front-Cover Texts, and with no -Back-Cover Texts. A copy of the license is included in the section -entitled ``GNU Free Documentation License'' (@pxref{Copying}). -@c man end -@end ifinfo - -@setchapternewpage off - -@titlepage -@title grep, searching for a pattern -@subtitle version @value{VERSION}, @value{UPDATED} -@author Alain Magloire et al. - -@page -@vskip 0pt plus 1filll -Copyright @copyright{} 2000, 2001 Free Software Foundation, Inc. - -@sp 2 -Published by the Free Software Foundation, @* -59 Temple Place - Suite 330, @* -Boston, MA 02111-1307, USA - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.1 or -any later version published by the Free Software Foundation; with the -Invariant Sections being ``GNU General Public License'' and ``GNU Free -Documentation License'', with no Front-Cover Texts, and with no -Back-Cover Texts. A copy of the license is included in the section -entitled ``GNU Free Documentation License''. -@end titlepage - - -@ifnottex -@node Top -@top Grep - -@command{grep} searches for lines matching a pattern. - -This document was produced for version @value{VERSION} of @sc{gnu} -@command{grep}. -@end ifnottex - -@menu -* Introduction:: Introduction. -* Invoking:: Invoking @command{grep}; description of options. -* Diagnostics:: Exit status returned by @command{grep}. -* Grep Programs:: @command{grep} programs. -* Regular Expressions:: Regular Expressions. -* Usage:: Examples. -* Reporting Bugs:: Reporting Bugs. -* Copying:: License terms. -* Concept Index:: A menu with all the topics in this manual. -* Index:: A menu with all @command{grep} commands - and command-line options. -@end menu - - -@node Introduction, Invoking, Top, Top -@chapter Introduction - -@cindex Searching for a pattern. - -@command{grep} searches the input files -for lines containing a match to a given -pattern list. When it finds a match in a line, it copies the line to standard -output (by default), or does whatever other sort of output you have requested -with options. - -Though @command{grep} expects to do the matching on text, -it has no limits on input line length other than available memory, -and it can match arbitrary characters within a line. -If the final byte of an input file is not a newline, -@command{grep} silently supplies one. -Since newline is also a separator for the list of patterns, there -is no way to match newline characters in a text. - -@node Invoking -@chapter Invoking @command{grep} - -@command{grep} comes with a rich set of options from @sc{posix.2} and @sc{gnu} -extensions. - -@table @samp - -@item -c -@itemx --count -@opindex -c -@opindex --count -@cindex counting lines -Suppress normal output; instead print a count of matching -lines for each input file. With the @samp{-v}, @samp{--invert-match} option, -count non-matching lines. - -@item -e @var{pattern} -@itemx --regexp=@var{pattern} -@opindex -e -@opindex --regexp=@var{pattern} -@cindex pattern list -Use @var{pattern} as the pattern; useful to protect patterns -beginning with a @samp{-}. - -@item -f @var{file} -@itemx --file=@var{file} -@opindex -f -@opindex --file -@cindex pattern from file -Obtain patterns from @var{file}, one per line. The empty -file contains zero patterns, and therefore matches nothing. - -@item -i -@itemx --ignore-case -@opindex -i -@opindex --ignore-case -@cindex case insensitive search -Ignore case distinctions in both the pattern and the input files. - -@item -l -@itemx --files-with-matches -@opindex -l -@opindex --files-with-matches -@cindex names of matching files -Suppress normal output; instead print the name of each input -file from which output would normally have been printed. -The scanning of every file will stop on the first match. - -@item -n -@itemx --line-number -@opindex -n -@opindex --line-number -@cindex line numbering -Prefix each line of output with the line number within its input file. - -@item -o -@itemx --only-matching -@opindex -o -@opindex --only-matching -@cindex only matching -Print only the part of matching lines that actually matches @var{pattern}. - -@item -q -@itemx --quiet -@itemx --silent -@opindex -q -@opindex --quiet -@opindex --silent -@cindex quiet, silent -Quiet; do not write anything to standard output. Exit immediately with -zero status if any match is found, even if an error was detected. Also -see the @samp{-s} or @samp{--no-messages} option. - -@item -s -@itemx --no-messages -@opindex -s -@opindex --no-messages -@cindex suppress error messages -Suppress error messages about nonexistent or unreadable files. -Portability note: unlike @sc{gnu} @command{grep}, traditional -@command{grep} did not conform to @sc{posix.2}, because traditional -@command{grep} lacked a @samp{-q} option and its @samp{-s} option behaved -like @sc{gnu} @command{grep}'s @samp{-q} option. Shell scripts intended -to be portable to traditional @command{grep} should avoid both -@samp{-q} and @samp{-s} and should redirect -output to @file{/dev/null} instead. - -@item -v -@itemx --invert-match -@opindex -v -@opindex --invert-match -@cindex invert matching -@cindex print non-matching lines -Invert the sense of matching, to select non-matching lines. - -@item -x -@itemx --line-regexp -@opindex -x -@opindex --line-regexp -@cindex match the whole line -Select only those matches that exactly match the whole line. - -@end table - -@section @sc{gnu} Extensions - -@table @samp - -@item -A @var{num} -@itemx --after-context=@var{num} -@opindex -A -@opindex --after-context -@cindex after context -@cindex context lines, after match -Print @var{num} lines of trailing context after matching lines. - -@item -B @var{num} -@itemx --before-context=@var{num} -@opindex -B -@opindex --before-context -@cindex before context -@cindex context lines, before match -Print @var{num} lines of leading context before matching lines. - -@item -C @var{num} -@itemx --context=@var{num} -@opindex -C -@opindex --context -@cindex context -Print @var{num} lines of output context. - -@item --colour[=@var{WHEN}] -@itemx --color[=@var{WHEN}] -@opindex --colour -@cindex highlight, color, colour -The matching string is surrounded by the marker specify in @var{GREP_COLOR}. -@var{WHEN} may be `never', `always', or `auto'. - -@item -@var{num} -@opindex -NUM -Same as @samp{--context=@var{num}} lines of leading and trailing -context. However, grep will never print any given line more than once. - - -@item -V -@itemx --version -@opindex -V -@opindex --version -@cindex Version, printing -Print the version number of @command{grep} to the standard output stream. -This version number should be included in all bug reports. - -@item --help -@opindex --help -@cindex Usage summary, printing -Print a usage message briefly summarizing these command-line options -and the bug-reporting address, then exit. - -@itemx --binary-files=@var{type} -@opindex --binary-files -@cindex binary files -If the first few bytes of a file indicate that the file contains binary -data, assume that the file is of type @var{type}. By default, -@var{type} is @samp{binary}, and @command{grep} normally outputs either -a one-line message saying that a binary file matches, or no message if -there is no match. If @var{type} is @samp{without-match}, -@command{grep} assumes that a binary file does not match; -this is equivalent to the @samp{-I} option. If @var{type} -is @samp{text}, @command{grep} processes a binary file as if it were -text; this is equivalent to the @samp{-a} option. -@emph{Warning:} @samp{--binary-files=text} might output binary garbage, -which can have nasty side effects if the output is a terminal and if the -terminal driver interprets some of it as commands. - -@item -b -@itemx --byte-offset -@opindex -b -@opindex --byte-offset -@cindex byte offset -Print the byte offset within the input file before each line of output. -When @command{grep} runs on @sc{ms-dos} or MS-Windows, the printed -byte offsets -depend on whether the @samp{-u} (@samp{--unix-byte-offsets}) option is -used; see below. - -@item -D @var{action} -@itemx --devices=@var{action} -@opindex -D -@opindex --devices -@cindex device search -If an input file is a device, FIFO or socket, use @var{action} to process it. -By default, @var{action} is @samp{read}, which means that devices are -read just as if they were ordinary files. -If @var{action} is @samp{skip}, devices, FIFOs and sockets are silently -skipped. - -@item -d @var{action} -@itemx --directories=@var{action} -@opindex -d -@opindex --directories -@cindex directory search -If an input file is a directory, use @var{action} to process it. -By default, @var{action} is @samp{read}, which means that directories are -read just as if they were ordinary files (some operating systems -and filesystems disallow this, and will cause @command{grep} to print error -messages for every directory or silently skip them). If @var{action} is -@samp{skip}, directories are silently skipped. If @var{action} is -@samp{recurse}, @command{grep} reads all files under each directory, -recursively; this is equivalent to the @samp{-r} option. - -@item -H -@itemx --with-filename -@opindex -H -@opindex --With-filename -@cindex with filename prefix -Print the filename for each match. - -@item -h -@itemx --no-filename -@opindex -h -@opindex --no-filename -@cindex no filename prefix -Suppress the prefixing of filenames on output when multiple files are searched. - -@item --line-buffered -@opindex --line-buffered -@cindex line buffering -Set the line buffering policy, this can be a performance penality. - -@item --label=@var{LABEL} -@opindex --label -@cindex changing name of standard input -Displays input actually coming from standard input as input coming from file -@var{LABEL}. This is especially useful for tools like zgrep, e.g. -@command{gzip -cd foo.gz |grep --label=foo something} - -@item -L -@itemx --files-without-match -@opindex -L -@opindex --files-without-match -@cindex files which don't match -Suppress normal output; instead print the name of each input -file from which no output would normally have been printed. -The scanning of every file will stop on the first match. - -@item -a -@itemx --text -@opindex -a -@opindex --text -@cindex suppress binary data -@cindex binary files -Process a binary file as if it were text; this is equivalent to the -@samp{--binary-files=text} option. - -@item -I -Process a binary file as if it did not contain matching data; this is -equivalent to the @samp{--binary-files=without-match} option. - -@item -w -@itemx --word-regexp -@opindex -w -@opindex --word-regexp -@cindex matching whole words -Select only those lines containing matches that form -whole words. The test is that the matching substring -must either be at the beginning of the line, or preceded -by a non-word constituent character. Similarly, -it must be either at the end of the line or followed by -a non-word constituent character. Word-constituent -characters are letters, digits, and the underscore. - -@item -r -@itemx -R -@itemx --recursive -@opindex -r -@opindex --recursive -@cindex recursive search -@cindex searching directory trees -For each directory mentioned in the command line, read and process all -files in that directory, recursively. This is the same as the -@samp{--directories=recurse} option. - -@item --include=@var{file_pattern} -@opindex --include -@cindex include files -@cindex searching directory trees -When processing directories recursively, only files matching @var{file_pattern} -will be search. - -@item --exclude=@var{file_pattern} -@opindex --exclude -@cindex exclude files -@cindex searching directory trees -When processing directories recursively, skip files matching @var{file_pattern}. - -@item -m @var{num} -@itemx --max-count=@var{num} -@opindex -m -@opindex --max-count -@cindex max-count -Stop reading a file after @var{num} matching lines. If the input is -standard input from a regular file, and @var{num} matching lines are -output, @command{grep} ensures that the standard input is positioned to -just after the last matching line before exiting, regardless of the -presence of trailing context lines. This enables a calling process -to resume a search. For example, the following shell script makes use -of it: - -@example -while grep -m 1 PATTERN -do - echo xxxx -done < FILE -@end example - -But the following probably will not work because a pipe is not a regular -file: - -@example -# This probably will not work. -cat FILE | -while grep -m 1 PATTERN -do - echo xxxx -done -@end example - -When @command{grep} stops after NUM matching lines, it outputs -any trailing context lines. Since context does not include matching -lines, @command{grep} will stop when it encounters another matching line. -When the @samp{-c} or @samp{--count} option is also used, -@command{grep} does not output a count greater than @var{num}. -When the @samp{-v} or @samp{--invert-match} option is -also used, @command{grep} stops after outputting @var{num} -non-matching lines. - -@item -y -@opindex -y -@cindex case insensitive search, obsolete option -Obsolete synonym for @samp{-i}. - -@item -U -@itemx --binary -@opindex -U -@opindex --binary -@cindex DOS/Windows binary files -@cindex binary files, DOS/Windows -Treat the file(s) as binary. By default, under @sc{ms-dos} -and MS-Windows, @command{grep} guesses the file type by looking -at the contents of the first 32kB read from the file. -If @command{grep} decides the file is a text file, it strips the -@code{CR} characters from the original file contents (to make -regular expressions with @code{^} and @code{$} work correctly). -Specifying @samp{-U} overrules this guesswork, causing all -files to be read and passed to the matching mechanism -verbatim; if the file is a text file with @code{CR/LF} pairs -at the end of each line, this will cause some regular -expressions to fail. This option has no effect on platforms other than -@sc{ms-dos} and MS-Windows. - -@item -u -@itemx --unix-byte-offsets -@opindex -u -@opindex --unix-byte-offsets -@cindex DOS byte offsets -@cindex byte offsets, on DOS/Windows -Report Unix-style byte offsets. This switch causes -@command{grep} to report byte offsets as if the file were Unix style -text file, i.e., the byte offsets ignore the @code{CR} characters which were -stripped. This will produce results identical to running @command{grep} on -a Unix machine. This option has no effect unless @samp{-b} -option is also used; it has no effect on platforms other than @sc{ms-dos} and -MS-Windows. - -@item --mmap -@opindex --mmap -@cindex memory mapped input -If possible, use the @code{mmap} system call to read input, instead of -the default @code{read} system call. In some situations, @samp{--mmap} -yields better performance. However, @samp{--mmap} can cause undefined -behavior (including core dumps) if an input file shrinks while -@command{grep} is operating, or if an I/O error occurs. - -@item -Z -@itemx --null -@opindex -Z -@opindex --null -@cindex zero-terminated file names -Output a zero byte (the @sc{ascii} @code{NUL} character) instead of the -character that normally follows a file name. For example, @samp{grep --lZ} outputs a zero byte after each file name instead of the usual -newline. This option makes the output unambiguous, even in the presence -of file names containing unusual characters like newlines. This option -can be used with commands like @samp{find -print0}, @samp{perl -0}, -@samp{sort -z}, and @samp{xargs -0} to process arbitrary file names, -even those that contain newline characters. - -@item -z -@itemx --null-data -@opindex -z -@opindex --null-data -@cindex zero-terminated lines -Treat the input as a set of lines, each terminated by a zero byte (the -@sc{ascii} @code{NUL} character) instead of a newline. Like the @samp{-Z} -or @samp{--null} option, this option can be used with commands like -@samp{sort -z} to process arbitrary file names. - -@end table - -Several additional options control which variant of the @command{grep} -matching engine is used. @xref{Grep Programs}. - -@section Environment Variables - -Grep's behavior is affected by the following environment variables. - -A locale @code{LC_@var{foo}} is specified by examining the three -environment variables @env{LC_ALL}, @env{LC_@var{foo}}, and @env{LANG}, -in that order. The first of these variables that is set specifies the -locale. For example, if @env{LC_ALL} is not set, but @env{LC_MESSAGES} -is set to @samp{pt_BR}, then Brazilian Portuguese is used for the -@code{LC_MESSAGES} locale. The C locale is used if none of these -environment variables are set, or if the locale catalog is not -installed, or if @command{grep} was not compiled with national language -support (@sc{nls}). - -@cindex environment variables - -@table @env - -@item GREP_OPTIONS -@vindex GREP_OPTIONS -@cindex default options environment variable -This variable specifies default options to be placed in front of any -explicit options. For example, if @code{GREP_OPTIONS} is -@samp{--binary-files=without-match --directories=skip}, @command{grep} -behaves as if the two options @samp{--binary-files=without-match} and -@samp{--directories=skip} had been specified before -any explicit options. Option specifications are separated by -whitespace. A backslash escapes the next character, so it can be used to -specify an option containing whitespace or a backslash. - -@item GREP_COLOR -@vindex GREP_COLOR -@cindex highlight markers -This variable specifies the surrounding markers use to highlight the matching -text. The default is control ascii red. - -@item LC_ALL -@itemx LC_COLLATE -@itemx LANG -@vindex LC_ALL -@vindex LC_COLLATE -@vindex LANG -@cindex character type -@cindex national language support -@cindex NLS -These variables specify the @code{LC_COLLATE} locale, which determines -the collating sequence used to interpret range expressions like -@samp{[a-z]}. - -@item LC_ALL -@itemx LC_CTYPE -@itemx LANG -@vindex LC_ALL -@vindex LC_CTYPE -@vindex LANG -@cindex character type -@cindex national language support -@cindex NLS -These variables specify the @code{LC_CTYPE} locale, which determines the -type of characters, e.g., which characters are whitespace. - -@item LC_ALL -@itemx LC_MESSAGES -@itemx LANG -@vindex LC_ALL -@vindex LC_MESSAGES -@vindex LANG -@cindex language of messages -@cindex message language -@cindex national language support -@cindex NLS -@cindex translation of message language -These variables specify the @code{LC_MESSAGES} locale, which determines -the language that @command{grep} uses for messages. The default C -locale uses American English messages. - -@item POSIXLY_CORRECT -@vindex POSIXLY_CORRECT -If set, @command{grep} behaves as @sc{posix.2} requires; otherwise, -@command{grep} behaves more like other @sc{gnu} programs. @sc{posix.2} -requires that options that -follow file names must be treated as file names; by default, such -options are permuted to the front of the operand list and are treated as -options. Also, @sc{posix.2} requires that unrecognized options be -diagnosed as -``illegal'', but since they are not really against the law the default -is to diagnose them as ``invalid''. @code{POSIXLY_CORRECT} also -disables @code{_@var{N}_GNU_nonoption_argv_flags_}, described below. - -@item _@var{N}_GNU_nonoption_argv_flags_ -@vindex _@var{N}_GNU_nonoption_argv_flags_ -(Here @code{@var{N}} is @command{grep}'s numeric process ID.) If the -@var{i}th character of this environment variable's value is @samp{1}, do -not consider the @var{i}th operand of @command{grep} to be an option, even if -it appears to be one. A shell can put this variable in the environment -for each command it runs, specifying which operands are the results of -file name wildcard expansion and therefore should not be treated as -options. This behavior is available only with the @sc{gnu} C library, and -only when @code{POSIXLY_CORRECT} is not set. - -@end table - -@node Diagnostics -@chapter Diagnostics - -Normally, exit status is 0 if selected lines are found and 1 otherwise. -But the exit status is 2 if an error occurred, unless the @option{-q} or -@option{--quiet} or @option{--silent} option is used and a selected line -is found. - -@node Grep Programs -@chapter @command{grep} programs - -@command{grep} searches the named input files (or standard input if no -files are named, or the file name @file{-} is given) for lines containing -a match to the given pattern. By default, @command{grep} prints the -matching lines. There are four major variants of @command{grep}, -controlled by the following options. - -@table @samp - -@item -G -@itemx --basic-regexp -@opindex -G -@opindex --basic-regexp -@cindex matching basic regular expressions -Interpret the pattern as a basic regular expression. This is the default. - -@item -E -@itemx --extended-regexp -@opindex -E -@opindex --extended-regexp -@cindex matching extended regular expressions -Interpret the pattern as an extended regular expression. - -@item -F -@itemx --fixed-strings -@opindex -F -@opindex --fixed-strings -@cindex matching fixed strings -Interpret the pattern as a list of fixed strings, separated -by newlines, any of which is to be matched. - -@item -P -@itemx --perl-regexp -@opindex -P -@opindex --perl-regexp -@cindex matching Perl regular expressions -Interpret the pattern as a Perl regular expression. - -@end table - -In addition, two variant programs @sc{egrep} and @sc{fgrep} are available. -@sc{egrep} is the same as @samp{grep -E}. @sc{fgrep} is the -same as @samp{grep -F}. - -@node Regular Expressions -@chapter Regular Expressions -@cindex regular expressions - -A @dfn{regular expression} is a pattern that describes a set of strings. -Regular expressions are constructed analogously to arithmetic expressions, -by using various operators to combine smaller expressions. -@command{grep} understands two different versions of regular expression -syntax: ``basic''(BRE) and ``extended''(ERE). In @sc{gnu} @command{grep}, -there is no difference in available functionality using either syntax. -In other implementations, basic regular expressions are less powerful. -The following description applies to extended regular expressions; -differences for basic regular expressions are summarized afterwards. - -The fundamental building blocks are the regular expressions that match -a single character. Most characters, including all letters and digits, -are regular expressions that match themselves. Any metacharacter -with special meaning may be quoted by preceding it with a backslash. - -A regular expression may be followed by one of several -repetition operators: - -@table @samp - -@item . -@opindex . -@cindex dot -@cindex period -The period @samp{.} matches any single character. - -@item ? -@opindex ? -@cindex question mark -@cindex match sub-expression at most once -The preceding item is optional and will be matched at most once. - -@item * -@opindex * -@cindex asterisk -@cindex match sub-expression zero or more times -The preceding item will be matched zero or more times. - -@item + -@opindex + -@cindex plus sign -The preceding item will be matched one or more times. - -@item @{@var{n}@} -@opindex @{n@} -@cindex braces, one argument -@cindex match sub-expression n times -The preceding item is matched exactly @var{n} times. - -@item @{@var{n},@} -@opindex @{n,@} -@cindex braces, second argument omitted -@cindex match sub-expression n or more times -The preceding item is matched n or more times. - -@item @{@var{n},@var{m}@} -@opindex @{n,m@} -@cindex braces, two arguments -The preceding item is matched at least @var{n} times, but not more than -@var{m} times. - -@end table - -Two regular expressions may be concatenated; the resulting regular -expression matches any string formed by concatenating two substrings -that respectively match the concatenated subexpressions. - -Two regular expressions may be joined by the infix operator @samp{|}; the -resulting regular expression matches any string matching either subexpression. - -Repetition takes precedence over concatenation, which in turn -takes precedence over alternation. A whole subexpression may be -enclosed in parentheses to override these precedence rules. - -@section Character Class - -@cindex bracket expression -@cindex character class -A @dfn{bracket expression} is a list of characters enclosed by @samp{[} and -@samp{]}. It matches any single character in that list; if the first -character of the list is the caret @samp{^}, then it matches any character -@strong{not} in the list. For example, the regular expression -@samp{[0123456789]} matches any single digit. - -@cindex range expression -Within a bracket expression, a @dfn{range expression} consists of two -characters separated by a hyphen. It matches any single character that -sorts between the two characters, inclusive, using the locale's -collating sequence and character set. For example, in the default C -locale, @samp{[a-d]} is equivalent to @samp{[abcd]}. Many locales sort -characters in dictionary order, and in these locales @samp{[a-d]} is -typically not equivalent to @samp{[abcd]}; it might be equivalent to -@samp{[aBbCcDd]}, for example. To obtain the traditional interpretation -of bracket expressions, you can use the C locale by setting the -@env{LC_ALL} environment variable to the value @samp{C}. - -Finally, certain named classes of characters are predefined within -bracket expressions, as follows. -Their interpretation depends on the @code{LC_CTYPE} locale; the -interpretation below is that of the C locale, which is the default -if no @code{LC_CTYPE} locale is specified. - -@cindex classes of characters -@cindex character classes -@table @samp - -@item [:alnum:] -@opindex alnum -@cindex alphanumeric characters -Alphanumeric characters: -@samp{[:alpha:]} and @samp{[:digit:]}. - -@item [:alpha:] -@opindex alpha -@cindex alphabetic characters -Alphabetic characters: -@samp{[:lower:]} and @samp{[:upper:]}. - -@item [:blank:] -@opindex blank -@cindex blank characters -Blank characters: -space and tab. - -@item [:cntrl:] -@opindex cntrl -@cindex control characters -Control characters. In @sc{ascii}, these characters have octal codes 000 -through 037, and 177 (@code{DEL}). In other character sets, these are -the equivalent characters, if any. - -@item [:digit:] -@opindex digit -@cindex digit characters -@cindex numeric characters -Digits: @code{0 1 2 3 4 5 6 7 8 9}. - -@item [:graph:] -@opindex graph -@cindex graphic characters -Graphical characters: -@samp{[:alnum:]} and @samp{[:punct:]}. - -@item [:lower:] -@opindex lower -@cindex lower-case letters -Lower-case letters: -@code{a b c d e f g h i j k l m n o p q r s t u v w x y z}. - -@item [:print:] -@opindex print -@cindex printable characters -Printable characters: -@samp{[:alnum:]}, @samp{[:punct:]}, and space. - -@item [:punct:] -@opindex punct -@cindex punctuation characters -Punctuation characters: -@code{!@: " # $ % & ' ( ) * + , - .@: / : ; < = > ?@: @@ [ \ ] ^ _ ` @{ | @} ~}. - -@item [:space:] -@opindex space -@cindex space characters -@cindex whitespace characters -Space characters: -tab, newline, vertical tab, form feed, carriage return, and space. - -@item [:upper:] -@opindex upper -@cindex upper-case letters -Upper-case letters: -@code{A B C D E F G H I J K L M N O P Q R S T U V W X Y Z}. - -@item [:xdigit:] -@opindex xdigit -@cindex xdigit class -@cindex hexadecimal digits -Hexadecimal digits: -@code{0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f}. - -@end table -For example, @samp{[[:alnum:]]} means @samp{[0-9A-Za-z]}, except the latter -depends upon the C locale and the @sc{ascii} character -encoding, whereas the former is independent of locale and character set. -(Note that the brackets in these class names are -part of the symbolic names, and must be included in addition to -the brackets delimiting the bracket list.) - -Most metacharacters lose their special meaning inside lists. - -@table @samp -@item ] -ends the list if it's not the first list item. So, if you want to make -the @samp{]} character a list item, you must put it first. - -@item [. -represents the open collating symbol. - -@item .] -represents the close collating symbol. - -@item [= -represents the open equivalence class. - -@item =] -represents the close equivalence class. - -@item [: -represents the open character class followed by a valid character class name. - -@item :] -represents the close character class followed by a valid character class name. - -@item - -represents the range if it's not first or last in a list or the ending point -of a range. - -@item ^ -represents the characters not in the list. If you want to make the @samp{^} -character a list item, place it anywhere but first. - -@end table - -@section Backslash Character -@cindex backslash - -The @samp{\} when followed by certain ordinary characters take a special -meaning : - -@table @samp - -@item @samp{\b} -Match the empty string at the edge of a word. - -@item @samp{\B} -Match the empty string provided it's not at the edge of a word. - -@item @samp{\<} -Match the empty string at the beginning of word. - -@item @samp{\>} -Match the empty string at the end of word. - -@item @samp{\w} -Match word constituent, it is a synonym for @samp{[[:alnum:]]}. - -@item @samp{\W} -Match non word constituent, it is a synonym for @samp{[^[:alnum:]]}. - -@end table - -For example , @samp{\brat\b} matches the separate word @samp{rat}, -@samp{c\Brat\Be} matches @samp{crate}, but @samp{dirty \Brat} doesn't -match @samp{dirty rat}. - -@section Anchoring -@cindex anchoring - -The caret @samp{^} and the dollar sign @samp{$} are metacharacters that -respectively match the empty string at the beginning and end of a line. - -@section Back-reference -@cindex back-reference - -The back-reference @samp{\@var{n}}, where @var{n} is a single digit, matches -the substring previously matched by the @var{n}th parenthesized subexpression -of the regular expression. For example, @samp{(a)\1} matches @samp{aa}. -When use with alternation if the group does not participate in the match, then -the back-reference makes the whole match fail. For example, @samp{a(.)|b\1} -will not match @samp{ba}. When multiple regular expressions are given with -@samp{-e} or from a file @samp{-f file}, the back-referecences are local to -each expression. - -@section Basic vs Extended -@cindex basic regular expressions - -In basic regular expressions the metacharacters @samp{?}, @samp{+}, -@samp{@{}, @samp{|}, @samp{(}, and @samp{)} lose their special meaning; -instead use the backslashed versions @samp{\?}, @samp{\+}, @samp{\@{}, -@samp{\|}, @samp{\(}, and @samp{\)}. - -@cindex interval specifications -Traditional @command{egrep} did not support the @samp{@{} metacharacter, -and some @command{egrep} implementations support @samp{\@{} instead, so -portable scripts should avoid @samp{@{} in @samp{egrep} patterns and -should use @samp{[@{]} to match a literal @samp{@{}. - -@sc{gnu} @command{egrep} attempts to support traditional usage by -assuming that @samp{@{} is not special if it would be the start of an -invalid interval specification. For example, the shell command -@samp{egrep '@{1'} searches for the two-character string @samp{@{1} -instead of reporting a syntax error in the regular expression. -@sc{posix.2} allows this behavior as an extension, but portable scripts -should avoid it. - -@node Usage -@chapter Usage - -@cindex Usage, examples -Here is an example shell command that invokes @sc{gnu} @command{grep}: - -@example -grep -i 'hello.*world' menu.h main.c -@end example - -@noindent -This lists all lines in the files @file{menu.h} and @file{main.c} that -contain the string @samp{hello} followed by the string @samp{world}; -this is because @samp{.*} matches zero or more characters within a line. -@xref{Regular Expressions}. The @samp{-i} option causes @command{grep} -to ignore case, causing it to match the line @samp{Hello, world!}, which -it would not otherwise match. @xref{Invoking}, for more details about -how to invoke @command{grep}. - -@cindex Using @command{grep}, Q&A -@cindex FAQ about @command{grep} usage -Here are some common questions and answers about @command{grep} usage. - -@enumerate - -@item -How can I list just the names of matching files? - -@example -grep -l 'main' *.c -@end example - -@noindent -lists the names of all C files in the current directory whose contents -mention @samp{main}. - -@item -How do I search directories recursively? - -@example -grep -r 'hello' /home/gigi -@end example - -@noindent -searches for @samp{hello} in all files under the directory -@file{/home/gigi}. For more control of which files are searched, use -@command{find}, @command{grep} and @command{xargs}. For example, -the following command searches only C files: - -@smallexample -find /home/gigi -name '*.c' -print | xargs grep 'hello' /dev/null -@end smallexample - -This differs from the command: - -@example -grep -r 'hello' *.c -@end example - -which merely looks for @samp{hello} in all files in the current -directory whose names end in @samp{.c}. Here the @option{-r} is -probably unnecessary, as recursion occurs only in the unlikely event -that one of @samp{.c} files is a directory. - -@item -What if a pattern has a leading @samp{-}? - -@example -grep -e '--cut here--' * -@end example - -@noindent -searches for all lines matching @samp{--cut here--}. Without @samp{-e}, -@command{grep} would attempt to parse @samp{--cut here--} as a list of -options. - -@item -Suppose I want to search for a whole word, not a part of a word? - -@example -grep -w 'hello' * -@end example - -@noindent -searches only for instances of @samp{hello} that are entire words; it -does not match @samp{Othello}. For more control, use @samp{\<} and -@samp{\>} to match the start and end of words. For example: - -@example -grep 'hello\>' * -@end example - -@noindent -searches only for words ending in @samp{hello}, so it matches the word -@samp{Othello}. - -@item -How do I output context around the matching lines? - -@example -grep -C 2 'hello' * -@end example - -@noindent -prints two lines of context around each matching line. - -@item -How do I force grep to print the name of the file? - -Append @file{/dev/null}: - -@example -grep 'eli' /etc/passwd /dev/null -@end example - -gets you: - -@smallexample -/etc/passwd:eli:DNGUTF58.IMe.:98:11:Eli Smith:/home/do/eli:/bin/bash -@end smallexample - -@item -Why do people use strange regular expressions on @command{ps} output? - -@example -ps -ef | grep '[c]ron' -@end example - -If the pattern had been written without the square brackets, it would -have matched not only the @command{ps} output line for @command{cron}, -but also the @command{ps} output line for @command{grep}. -Note that some platforms @command{ps} limit the ouput to the width -of the screen, grep does not have any limit on the length of a line -except the available memory. - -@item -Why does @command{grep} report ``Binary file matches''? - -If @command{grep} listed all matching ``lines'' from a binary file, it -would probably generate output that is not useful, and it might even -muck up your display. So @sc{gnu} @command{grep} suppresses output from -files that appear to be binary files. To force @sc{gnu} @command{grep} -to output lines even from files that appear to be binary, use the -@samp{-a} or @samp{--binary-files=text} option. To eliminate the -``Binary file matches'' messages, use the @samp{-I} or -@samp{--binary-files=without-match} option. - -@item -Why doesn't @samp{grep -lv} print nonmatching file names? - -@samp{grep -lv} lists the names of all files containing one or more -lines that do not match. To list the names of all files that contain no -matching lines, use the @samp{-L} or @samp{--files-without-match} -option. - -@item -I can do @sc{or} with @samp{|}, but what about @sc{and}? - -@example -grep 'paul' /etc/motd | grep 'franc,ois' -@end example - -@noindent -finds all lines that contain both @samp{paul} and @samp{franc,ois}. - -@item -How can I search in both standard input and in files? - -Use the special file name @samp{-}: - -@example -cat /etc/passwd | grep 'alain' - /etc/motd -@end example - -@item -@cindex palindromes -How to express palindromes in a regular expression? - -It can be done by using the back referecences, for example a palindrome -of 4 chararcters can be written in BRE. - -@example -grep -w -e '\(.\)\(.\).\2\1' file -@end example - -It matches the word "radar" or "civic". - -Guglielmo Bondioni proposed a single RE that finds all the palindromes up to 19 -characters long. - -@example -egrep -e '^(.?)(.?)(.?)(.?)(.?)(.?)(.?)(.?)(.?).?\9\8\7\6\5\4\3\2\1$' file -@end example - -Note this is done by using GNU ERE extensions, it might not be portable on -other greps. - -@item -Why are my expressions whith the vertical bar fail? - -@example -/bin/echo "ba" | egrep '(a)\1|(b)\1' -@end example - -The first alternate branch fails then the first group was not in the match -this will make the second alternate branch fails. For example, "aaba" will -match, the first group participate in the match and can be reuse in the -second branch. - -@item -What do @command{grep, fgrep, egrep} stand for ? - -grep comes from the way line editing was done on Unix. For example, -@command{ed} uses this syntax to print a list of matching lines on the screen. - -@example -global/regular expression/print -g/re/p -@end example - -@command{fgrep} stands for Fixed @command{grep}, @command{egrep} Extended -@command{grep}. - -@end enumerate - -@node Reporting Bugs, Copying, Usage, Top -@chapter Reporting bugs - -@cindex Bugs, reporting -Email bug reports to @email{bug-gnu-utils@@gnu.org}. -Be sure to include the word ``grep'' somewhere in the ``Subject:'' field. - -Large repetition counts in the @samp{@{n,m@}} construct may cause -@command{grep} to use lots of memory. In addition, certain other -obscure regular expressions require exponential time and -space, and may cause grep to run out of memory. -Back-references are very slow, and may require exponential time. - -@node Copying, GNU General Public License, Reporting Bugs, Top -@chapter Copying -@cindex Copying -GNU grep is licensed under the GNU GPL, which makes it @dfn{free -software}. - -Please note that ``free'' in ``free software'' refers to liberty, not -price. As some GNU project advocates like to point out, think of ``free -speech'' rather than ``free beer''. The exact and legally binding -distribution terms are spelled out below; in short, you have the right -(freedom) to run and change grep and distribute it to other people, and -even---if you want---charge money for doing either. The important -restriction is that you have to grant your recipients the same rights -and impose the same restrictions. - -This method of licensing software is also known as @dfn{open source} -because, among other things, it makes sure that all recipients will -receive the source code along with the program, and be able to improve -it. The GNU project prefers the term ``free software'' for reasons -outlined at -@url{http://www.gnu.org/philosophy/free-software-for-freedom.html}. - -The exact license terms are defined by this paragraph and the GNU -General Public License it refers to: - -@quotation -GNU grep is free software; you can redistribute it and/or modify it -under the terms of the GNU General Public License as published by the -Free Software Foundation; either version 2 of the License, or (at your -option) any later version. - -GNU grep is distributed in the hope that it will be useful, but WITHOUT -ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -A copy of the GNU General Public License is included as part of this -manual; if you did not receive it, write to the Free Software -Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -@end quotation - -In addition to this, this manual is free in the same sense: - -@quotation -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.1 or -any later version published by the Free Software Foundation; with the -Invariant Sections being ``GNU General Public License'' and ``GNU Free -Documentation License'', with no Front-Cover Texts, and with no -Back-Cover Texts. A copy of the license is included in the section -entitled ``GNU Free Documentation License''. -@end quotation - -@c #### Maybe we should wrap these licenses in ifinfo? Stallman says -@c that the GFDL needs to be present in the manual, and to me it would -@c suck to include the license for the manual and not the license for -@c the program. - -The full texts of the GNU General Public License and of the GNU Free -Documentation License are available below. - -@menu -* GNU General Public License:: GNU GPL -* GNU Free Documentation License:: GNU FDL -@end menu - -@node GNU General Public License, GNU Free Documentation License, Copying, Copying -@section GNU General Public License -@center Version 2, June 1991 -@cindex GPL, GNU General Public License - -@display -Copyright @copyright{} 1989, 1991 Free Software Foundation, Inc. -675 Mass Ave, Cambridge, MA 02139, USA - -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. -@end display - -@unnumberedsec Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software---to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - -@iftex -@unnumberedsec TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION -@end iftex -@ifinfo -@center TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION -@end ifinfo - -@enumerate -@item -This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The ``Program'', below, -refers to any such program or work, and a ``work based on the Program'' -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term ``modification''.) Each licensee is addressed as ``you''. - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - -@item -You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - -@item -You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - -@enumerate a -@item -You must cause the modified files to carry prominent notices -stating that you changed the files and the date of any change. - -@item -You must cause any work that you distribute or publish, that in -whole or in part contains or is derived from the Program or any -part thereof, to be licensed as a whole at no charge to all third -parties under the terms of this License. - -@item -If the modified program normally reads commands interactively -when run, you must cause it, when started running for such -interactive use in the most ordinary way, to print or display an -announcement including an appropriate copyright notice and a -notice that there is no warranty (or else, saying that you provide -a warranty) and that users may redistribute the program under -these conditions, and telling the user how to view a copy of this -License. (Exception: if the Program itself is interactive but -does not normally print such an announcement, your work based on -the Program is not required to print an announcement.) -@end enumerate - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - -@item -You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - -@enumerate a -@item -Accompany it with the complete corresponding machine-readable -source code, which must be distributed under the terms of Sections -1 and 2 above on a medium customarily used for software interchange; or, - -@item -Accompany it with a written offer, valid for at least three -years, to give any third party, for a charge no more than your -cost of physically performing source distribution, a complete -machine-readable copy of the corresponding source code, to be -distributed under the terms of Sections 1 and 2 above on a medium -customarily used for software interchange; or, - -@item -Accompany it with the information you received as to the offer -to distribute corresponding source code. (This alternative is -allowed only for noncommercial distribution and only if you -received the program in object code or executable form with such -an offer, in accord with Subsection b above.) -@end enumerate - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - -@item -You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - -@item -You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - -@item -Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - -@item -If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - -@item -If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - -@item -The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and ``any -later version'', you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - -@item -If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - -@iftex -@heading NO WARRANTY -@end iftex -@ifinfo -@center NO WARRANTY -@end ifinfo -@cindex no warranty - -@item -BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM ``AS IS'' WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - -@item -IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. -@end enumerate - -@iftex -@heading END OF TERMS AND CONDITIONS -@end iftex -@ifinfo -@center END OF TERMS AND CONDITIONS -@end ifinfo - -@page -@unnumberedsec How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the ``copyright'' line and a pointer to where the full notice is found. - -@smallexample -@var{one line to give the program's name and an idea of what it does.} -Copyright (C) 19@var{yy} @var{name of author} - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -@end smallexample - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - -@smallexample -Gnomovision version 69, Copyright (C) 19@var{yy} @var{name of author} -Gnomovision comes with ABSOLUTELY NO WARRANTY; for details -type `show w'. This is free software, and you are welcome -to redistribute it under certain conditions; type `show c' -for details. -@end smallexample - -The hypothetical commands @samp{show w} and @samp{show c} should show -the appropriate parts of the General Public License. Of course, the -commands you use may be called something other than @samp{show w} and -@samp{show c}; they could even be mouse-clicks or menu items---whatever -suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a ``copyright disclaimer'' for the program, if -necessary. Here is a sample; alter the names: - -@smallexample -@group -Yoyodyne, Inc., hereby disclaims all copyright -interest in the program `Gnomovision' -(which makes passes at compilers) written -by James Hacker. - -@var{signature of Ty Coon}, 1 April 1989 -Ty Coon, President of Vice -@end group -@end smallexample - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. - -@node GNU Free Documentation License, Concept Index, GNU General Public License, Copying -@section GNU Free Documentation License -@center Version 1.1, March 2000 -@cindex FDL, GNU Free Documentation License - -@display -Copyright (C) 2000 Free Software Foundation, Inc. -59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. -@end display -@sp 1 -@enumerate 0 -@item -PREAMBLE - -The purpose of this License is to make a manual, textbook, or other -written document ``free'' in the sense of freedom: to assure everyone -the effective freedom to copy and redistribute it, with or without -modifying it, either commercially or noncommercially. Secondarily, -this License preserves for the author and publisher a way to get -credit for their work, while not being considered responsible for -modifications made by others. - -This License is a kind of ``copyleft'', which means that derivative -works of the document must themselves be free in the same sense. It -complements the GNU General Public License, which is a copyleft -license designed for free software. - -We have designed this License in order to use it for manuals for free -software, because free software needs free documentation: a free -program should come with manuals providing the same freedoms that the -software does. But this License is not limited to software manuals; -it can be used for any textual work, regardless of subject matter or -whether it is published as a printed book. We recommend this License -principally for works whose purpose is instruction or reference. - -@sp 1 -@item -APPLICABILITY AND DEFINITIONS - -This License applies to any manual or other work that contains a -notice placed by the copyright holder saying it can be distributed -under the terms of this License. The ``Document'', below, refers to any -such manual or work. Any member of the public is a licensee, and is -addressed as ``you''. - -A ``Modified Version'' of the Document means any work containing the -Document or a portion of it, either copied verbatim, or with -modifications and/or translated into another language. - -A ``Secondary Section'' is a named appendix or a front-matter section of -the Document that deals exclusively with the relationship of the -publishers or authors of the Document to the Document's overall subject -(or to related matters) and contains nothing that could fall directly -within that overall subject. (For example, if the Document is in part a -textbook of mathematics, a Secondary Section may not explain any -mathematics.) The relationship could be a matter of historical -connection with the subject or with related matters, or of legal, -commercial, philosophical, ethical or political position regarding -them. - -The ``Invariant Sections'' are certain Secondary Sections whose titles -are designated, as being those of Invariant Sections, in the notice -that says that the Document is released under this License. - -The ``Cover Texts'' are certain short passages of text that are listed, -as Front-Cover Texts or Back-Cover Texts, in the notice that says that -the Document is released under this License. - -A ``Transparent'' copy of the Document means a machine-readable copy, -represented in a format whose specification is available to the -general public, whose contents can be viewed and edited directly and -straightforwardly with generic text editors or (for images composed of -pixels) generic paint programs or (for drawings) some widely available -drawing editor, and that is suitable for input to text formatters or -for automatic translation to a variety of formats suitable for input -to text formatters. A copy made in an otherwise Transparent file -format whose markup has been designed to thwart or discourage -subsequent modification by readers is not Transparent. A copy that is -not ``Transparent'' is called ``Opaque''. - -Examples of suitable formats for Transparent copies include plain -ASCII without markup, Texinfo input format, LaTeX input format, SGML -or XML using a publicly available DTD, and standard-conforming simple -HTML designed for human modification. Opaque formats include -PostScript, PDF, proprietary formats that can be read and edited only -by proprietary word processors, SGML or XML for which the DTD and/or -processing tools are not generally available, and the -machine-generated HTML produced by some word processors for output -purposes only. - -The ``Title Page'' means, for a printed book, the title page itself, -plus such following pages as are needed to hold, legibly, the material -this License requires to appear in the title page. For works in -formats which do not have any title page as such, ``Title Page'' means -the text near the most prominent appearance of the work's title, -preceding the beginning of the body of the text. -@sp 1 -@item -VERBATIM COPYING - -You may copy and distribute the Document in any medium, either -commercially or noncommercially, provided that this License, the -copyright notices, and the license notice saying this License applies -to the Document are reproduced in all copies, and that you add no other -conditions whatsoever to those of this License. You may not use -technical measures to obstruct or control the reading or further -copying of the copies you make or distribute. However, you may accept -compensation in exchange for copies. If you distribute a large enough -number of copies you must also follow the conditions in section 3. - -You may also lend copies, under the same conditions stated above, and -you may publicly display copies. -@sp 1 -@item -COPYING IN QUANTITY - -If you publish printed copies of the Document numbering more than 100, -and the Document's license notice requires Cover Texts, you must enclose -the copies in covers that carry, clearly and legibly, all these Cover -Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on -the back cover. Both covers must also clearly and legibly identify -you as the publisher of these copies. The front cover must present -the full title with all words of the title equally prominent and -visible. You may add other material on the covers in addition. -Copying with changes limited to the covers, as long as they preserve -the title of the Document and satisfy these conditions, can be treated -as verbatim copying in other respects. - -If the required texts for either cover are too voluminous to fit -legibly, you should put the first ones listed (as many as fit -reasonably) on the actual cover, and continue the rest onto adjacent -pages. - -If you publish or distribute Opaque copies of the Document numbering -more than 100, you must either include a machine-readable Transparent -copy along with each Opaque copy, or state in or with each Opaque copy -a publicly-accessible computer-network location containing a complete -Transparent copy of the Document, free of added material, which the -general network-using public has access to download anonymously at no -charge using public-standard network protocols. If you use the latter -option, you must take reasonably prudent steps, when you begin -distribution of Opaque copies in quantity, to ensure that this -Transparent copy will remain thus accessible at the stated location -until at least one year after the last time you distribute an Opaque -copy (directly or through your agents or retailers) of that edition to -the public. - -It is requested, but not required, that you contact the authors of the -Document well before redistributing any large number of copies, to give -them a chance to provide you with an updated version of the Document. -@sp 1 -@item -MODIFICATIONS - -You may copy and distribute a Modified Version of the Document under -the conditions of sections 2 and 3 above, provided that you release -the Modified Version under precisely this License, with the Modified -Version filling the role of the Document, thus licensing distribution -and modification of the Modified Version to whoever possesses a copy -of it. In addition, you must do these things in the Modified Version: - -A. Use in the Title Page (and on the covers, if any) a title distinct - from that of the Document, and from those of previous versions - (which should, if there were any, be listed in the History section - of the Document). You may use the same title as a previous version - if the original publisher of that version gives permission.@* -B. List on the Title Page, as authors, one or more persons or entities - responsible for authorship of the modifications in the Modified - Version, together with at least five of the principal authors of the - Document (all of its principal authors, if it has less than five).@* -C. State on the Title page the name of the publisher of the - Modified Version, as the publisher.@* -D. Preserve all the copyright notices of the Document.@* -E. Add an appropriate copyright notice for your modifications - adjacent to the other copyright notices.@* -F. Include, immediately after the copyright notices, a license notice - giving the public permission to use the Modified Version under the - terms of this License, in the form shown in the Addendum below.@* -G. Preserve in that license notice the full lists of Invariant Sections - and required Cover Texts given in the Document's license notice.@* -H. Include an unaltered copy of this License.@* -I. Preserve the section entitled ``History'', and its title, and add to - it an item stating at least the title, year, new authors, and - publisher of the Modified Version as given on the Title Page. If - there is no section entitled ``History'' in the Document, create one - stating the title, year, authors, and publisher of the Document as - given on its Title Page, then add an item describing the Modified - Version as stated in the previous sentence.@* -J. Preserve the network location, if any, given in the Document for - public access to a Transparent copy of the Document, and likewise - the network locations given in the Document for previous versions - it was based on. These may be placed in the ``History'' section. - You may omit a network location for a work that was published at - least four years before the Document itself, or if the original - publisher of the version it refers to gives permission.@* -K. In any section entitled ``Acknowledgements'' or ``Dedications'', - preserve the section's title, and preserve in the section all the - substance and tone of each of the contributor acknowledgements - and/or dedications given therein.@* -L. Preserve all the Invariant Sections of the Document, - unaltered in their text and in their titles. Section numbers - or the equivalent are not considered part of the section titles.@* -M. Delete any section entitled ``Endorsements''. Such a section - may not be included in the Modified Version.@* -N. Do not retitle any existing section as ``Endorsements'' - or to conflict in title with any Invariant Section.@* -@sp 1 -If the Modified Version includes new front-matter sections or -appendices that qualify as Secondary Sections and contain no material -copied from the Document, you may at your option designate some or all -of these sections as invariant. To do this, add their titles to the -list of Invariant Sections in the Modified Version's license notice. -These titles must be distinct from any other section titles. - -You may add a section entitled ``Endorsements'', provided it contains -nothing but endorsements of your Modified Version by various -parties--for example, statements of peer review or that the text has -been approved by an organization as the authoritative definition of a -standard. - -You may add a passage of up to five words as a Front-Cover Text, and a -passage of up to 25 words as a Back-Cover Text, to the end of the list -of Cover Texts in the Modified Version. Only one passage of -Front-Cover Text and one of Back-Cover Text may be added by (or -through arrangements made by) any one entity. If the Document already -includes a cover text for the same cover, previously added by you or -by arrangement made by the same entity you are acting on behalf of, -you may not add another; but you may replace the old one, on explicit -permission from the previous publisher that added the old one. - -The author(s) and publisher(s) of the Document do not by this License -give permission to use their names for publicity for or to assert or -imply endorsement of any Modified Version. -@sp 1 -@item -COMBINING DOCUMENTS - -You may combine the Document with other documents released under this -License, under the terms defined in section 4 above for modified -versions, provided that you include in the combination all of the -Invariant Sections of all of the original documents, unmodified, and -list them all as Invariant Sections of your combined work in its -license notice. - -The combined work need only contain one copy of this License, and -multiple identical Invariant Sections may be replaced with a single -copy. If there are multiple Invariant Sections with the same name but -different contents, make the title of each such section unique by -adding at the end of it, in parentheses, the name of the original -author or publisher of that section if known, or else a unique number. -Make the same adjustment to the section titles in the list of -Invariant Sections in the license notice of the combined work. - -In the combination, you must combine any sections entitled ``History'' -in the various original documents, forming one section entitled -``History''; likewise combine any sections entitled ``Acknowledgements'', -and any sections entitled ``Dedications''. You must delete all sections -entitled ``Endorsements.'' -@sp 1 -@item -COLLECTIONS OF DOCUMENTS - -You may make a collection consisting of the Document and other documents -released under this License, and replace the individual copies of this -License in the various documents with a single copy that is included in -the collection, provided that you follow the rules of this License for -verbatim copying of each of the documents in all other respects. - -You may extract a single document from such a collection, and distribute -it individually under this License, provided you insert a copy of this -License into the extracted document, and follow this License in all -other respects regarding verbatim copying of that document. -@sp 1 -@item -AGGREGATION WITH INDEPENDENT WORKS - -A compilation of the Document or its derivatives with other separate -and independent documents or works, in or on a volume of a storage or -distribution medium, does not as a whole count as a Modified Version -of the Document, provided no compilation copyright is claimed for the -compilation. Such a compilation is called an ``aggregate'', and this -License does not apply to the other self-contained works thus compiled -with the Document, on account of their being thus compiled, if they -are not themselves derivative works of the Document. - -If the Cover Text requirement of section 3 is applicable to these -copies of the Document, then if the Document is less than one quarter -of the entire aggregate, the Document's Cover Texts may be placed on -covers that surround only the Document within the aggregate. -Otherwise they must appear on covers around the whole aggregate. -@sp 1 -@item -TRANSLATION - -Translation is considered a kind of modification, so you may -distribute translations of the Document under the terms of section 4. -Replacing Invariant Sections with translations requires special -permission from their copyright holders, but you may include -translations of some or all Invariant Sections in addition to the -original versions of these Invariant Sections. You may include a -translation of this License provided that you also include the -original English version of this License. In case of a disagreement -between the translation and the original English version of this -License, the original English version will prevail. -@sp 1 -@item -TERMINATION - -You may not copy, modify, sublicense, or distribute the Document except -as expressly provided for under this License. Any other attempt to -copy, modify, sublicense or distribute the Document is void, and will -automatically terminate your rights under this License. However, -parties who have received copies, or rights, from you under this -License will not have their licenses terminated so long as such -parties remain in full compliance. -@sp 1 -@item -FUTURE REVISIONS OF THIS LICENSE - -The Free Software Foundation may publish new, revised versions -of the GNU Free Documentation License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. See -http://www.gnu.org/copyleft/. - -Each version of the License is given a distinguishing version number. -If the Document specifies that a particular numbered version of this -License ``or any later version'' applies to it, you have the option of -following the terms and conditions either of that specified version or -of any later version that has been published (not as a draft) by the -Free Software Foundation. If the Document does not specify a version -number of this License, you may choose any version ever published (not -as a draft) by the Free Software Foundation. - -@end enumerate - -@unnumberedsec ADDENDUM: How to use this License for your documents - -To use this License in a document you have written, include a copy of -the License in the document and put the following copyright and -license notices just after the title page: - -@smallexample -@group - - Copyright (C) @var{year} @var{your name}. - Permission is granted to copy, distribute and/or modify this document - under the terms of the GNU Free Documentation License, Version 1.1 - or any later version published by the Free Software Foundation; - with the Invariant Sections being @var{list their titles}, with the - Front-Cover Texts being @var{list}, and with the Back-Cover Texts being @var{list}. - A copy of the license is included in the section entitled ``GNU - Free Documentation License''. -@end group -@end smallexample -If you have no Invariant Sections, write ``with no Invariant Sections'' -instead of saying which ones are invariant. If you have no -Front-Cover Texts, write ``no Front-Cover Texts'' instead of -``Front-Cover Texts being @var{list}''; likewise for Back-Cover Texts. - -If your document contains nontrivial examples of program code, we -recommend releasing these examples in parallel under your choice of -free software license, such as the GNU General Public License, -to permit their use in free software. - -@page -@node Concept Index, Index, GNU Free Documentation License, Top -@unnumbered Concept Index - -This is a general index of all issues discussed in this manual, with the -exception of the @command{grep} commands and command-line options. - -@printindex cp - -@page -@node Index,, Concept Index, Top -@unnumbered Index - -This is an alphabetical list of all @command{grep} commands, command-line -options, and environment variables. - -@printindex fn - -@contents -@bye Index: gnu/usr.bin/grep/doc/version.texi =================================================================== diff --git a/head/gnu/usr.bin/grep/doc/version.texi b/head/gnu/usr.bin/grep/doc/version.texi deleted file mode 10644 --- a/head/gnu/usr.bin/grep/doc/version.texi (revision 267841) +++ /dev/null (working copy) @@ -1,4 +0,0 @@ -@set UPDATED 23 January 2002 -@set UPDATED-MONTH January 2002 -@set EDITION 2.5.1 -@set VERSION 2.5.1 Index: gnu/usr.bin/gperf/Makefile =================================================================== diff --git a/head/gnu/usr.bin/gperf/Makefile b/head/gnu/usr.bin/gperf/Makefile --- a/head/gnu/usr.bin/gperf/Makefile (revision 267841) +++ b/head/gnu/usr.bin/gperf/Makefile (working copy) @@ -5,8 +5,6 @@ .PATH: ${GPERFDIR}/src ${GPERFDIR}/lib ${GPERFDIR}/doc -SUBDIR= doc - PROG_CXX= gperf SRCS= bool-array.cc hash-table.cc input.cc keyword-list.cc keyword.cc \ main.cc options.cc output.cc positions.cc search.cc version.cc \ Index: gnu/usr.bin/gperf/doc/Makefile =================================================================== diff --git a/head/gnu/usr.bin/gperf/doc/Makefile b/head/gnu/usr.bin/gperf/doc/Makefile deleted file mode 10644 --- a/head/gnu/usr.bin/gperf/doc/Makefile (revision 267841) +++ /dev/null (working copy) @@ -1,9 +0,0 @@ -# $FreeBSD$ - -INFO = gperf -INFOSECTION= "Programming & development tools." -INFOENTRY_gperf= "* Gperf: (gperf). The GNU perfect hash function generator." - -SRCDIR= ${.CURDIR}/../../../../contrib/gperf/doc - -.include Index: gnu/usr.bin/groff/Makefile =================================================================== diff --git a/head/gnu/usr.bin/groff/Makefile b/head/gnu/usr.bin/groff/Makefile --- a/head/gnu/usr.bin/groff/Makefile (revision 267841) +++ b/head/gnu/usr.bin/groff/Makefile (working copy) @@ -1,5 +1,5 @@ # $FreeBSD$ -SUBDIR= contrib doc font man src tmac +SUBDIR= contrib font man src tmac .include Index: gnu/usr.bin/groff/doc/Makefile =================================================================== diff --git a/head/gnu/usr.bin/groff/doc/Makefile b/head/gnu/usr.bin/groff/doc/Makefile deleted file mode 10644 --- a/head/gnu/usr.bin/groff/doc/Makefile (revision 267841) +++ /dev/null (working copy) @@ -1,6 +0,0 @@ -# $FreeBSD$ - -INFO= groff -SRCDIR= ${DIST_DIR} - -.include Index: gnu/usr.bin/texinfo/Makefile =================================================================== diff --git a/head/gnu/usr.bin/texinfo/Makefile b/head/gnu/usr.bin/texinfo/Makefile deleted file mode 10644 --- a/head/gnu/usr.bin/texinfo/Makefile (revision 267841) +++ /dev/null (working copy) @@ -1,7 +0,0 @@ -# -# $FreeBSD$ -# - -SUBDIR= libtxi makeinfo info infokey install-info texindex doc - -.include Index: gnu/usr.bin/texinfo/Makefile.inc =================================================================== diff --git a/head/gnu/usr.bin/texinfo/Makefile.inc b/head/gnu/usr.bin/texinfo/Makefile.inc deleted file mode 10644 --- a/head/gnu/usr.bin/texinfo/Makefile.inc (revision 267841) +++ /dev/null (working copy) @@ -1,9 +0,0 @@ -# $FreeBSD$ - -TXIDIR= ${.CURDIR}/../../../../contrib/texinfo -LIBTXI= ${.OBJDIR}/../libtxi/libtxi.a - -CFLAGS+= -DHAVE_CONFIG_H -DLOCALEDIR=\"/usr/share/locale\" \ - -I${TXIDIR} -I${TXIDIR}/lib - -.include "../Makefile.inc" Index: gnu/usr.bin/texinfo/doc/Makefile =================================================================== diff --git a/head/gnu/usr.bin/texinfo/doc/Makefile b/head/gnu/usr.bin/texinfo/doc/Makefile deleted file mode 10644 --- a/head/gnu/usr.bin/texinfo/doc/Makefile (revision 267841) +++ /dev/null (working copy) @@ -1,11 +0,0 @@ -# $FreeBSD$ - -INFO= info info-stnd texinfo -SRCDIR= ${TXIDIR}/doc - -CLEANFILES= texinfo.texi - -texinfo.texi: texinfo.txi - ln -fs ${.ALLSRC} ${.TARGET} - -.include Index: gnu/usr.bin/texinfo/info/Makefile =================================================================== diff --git a/head/gnu/usr.bin/texinfo/info/Makefile b/head/gnu/usr.bin/texinfo/info/Makefile deleted file mode 10644 --- a/head/gnu/usr.bin/texinfo/info/Makefile (revision 267841) +++ /dev/null (working copy) @@ -1,20 +0,0 @@ -# $FreeBSD$ - -PROG= info -MAN= info.1 info.5 texinfo.5 - -SRCS= dir.c display.c doc.c dribble.c echo-area.c filesys.c \ - footnotes.c gc.c indices.c info-utils.c info.c infodoc.c \ - infomap.c m-x.c man.c nodemenu.c nodes.c search.c session.c \ - signals.c terminal.c tilde.c variables.c window.c - -CFLAGS+= -DINFODIR=\"${INFODIR}:/usr/local/info:.\" - -DPADD= ${LIBTERMCAP} ${LIBTXI} -LDADD= -ltermcap ${LIBTXI} - -NO_PIE= yes - -.include - -.PATH: ${TXIDIR}/info ${TXIDIR}/doc Index: gnu/usr.bin/texinfo/infokey/Makefile =================================================================== diff --git a/head/gnu/usr.bin/texinfo/infokey/Makefile b/head/gnu/usr.bin/texinfo/infokey/Makefile deleted file mode 10644 --- a/head/gnu/usr.bin/texinfo/infokey/Makefile (revision 267841) +++ /dev/null (working copy) @@ -1,13 +0,0 @@ -# $FreeBSD$ - -PROG= infokey -SRCS= infokey.c key.c - -DPADD= ${LIBTXI} -LDADD= ${LIBTXI} - -NO_PIE= yes - -.include - -.PATH: ${TXIDIR}/info ${TXIDIR}/doc Index: gnu/usr.bin/texinfo/install-info/Makefile =================================================================== diff --git a/head/gnu/usr.bin/texinfo/install-info/Makefile b/head/gnu/usr.bin/texinfo/install-info/Makefile deleted file mode 10644 --- a/head/gnu/usr.bin/texinfo/install-info/Makefile (revision 267841) +++ /dev/null (working copy) @@ -1,12 +0,0 @@ -# $FreeBSD$ - -PROG= install-info - -DPADD= ${LIBTXI} -LDADD= ${LIBTXI} - -NO_PIE= yes - -.include - -.PATH: ${TXIDIR}/util ${TXIDIR}/doc Index: gnu/usr.bin/texinfo/libtxi/Makefile =================================================================== diff --git a/head/gnu/usr.bin/texinfo/libtxi/Makefile b/head/gnu/usr.bin/texinfo/libtxi/Makefile deleted file mode 10644 --- a/head/gnu/usr.bin/texinfo/libtxi/Makefile (revision 267841) +++ /dev/null (working copy) @@ -1,10 +0,0 @@ -# $FreeBSD$ - -LIB= txi -INTERNALLIB= - -SRCS= substring.c xexit.c xmalloc.c xstrdup.c - -.include - -.PATH: ${TXIDIR}/lib Index: gnu/usr.bin/texinfo/makeinfo/Makefile =================================================================== diff --git a/head/gnu/usr.bin/texinfo/makeinfo/Makefile b/head/gnu/usr.bin/texinfo/makeinfo/Makefile deleted file mode 10644 --- a/head/gnu/usr.bin/texinfo/makeinfo/Makefile (revision 267841) +++ /dev/null (working copy) @@ -1,15 +0,0 @@ -# $FreeBSD$ - -PROG= makeinfo -SRCS= cmds.c defun.c files.c float.c footnote.c html.c \ - index.c insertion.c lang.c macro.c makeinfo.c multi.c \ - node.c sectioning.c toc.c xml.c xref.c - -DPADD= ${LIBTXI} -LDADD= ${LIBTXI} - -NO_PIE= yes - -.include - -.PATH: $(TXIDIR)/makeinfo $(TXIDIR)/doc Index: gnu/usr.bin/texinfo/texindex/Makefile =================================================================== diff --git a/head/gnu/usr.bin/texinfo/texindex/Makefile b/head/gnu/usr.bin/texinfo/texindex/Makefile deleted file mode 10644 --- a/head/gnu/usr.bin/texinfo/texindex/Makefile (revision 267841) +++ /dev/null (working copy) @@ -1,12 +0,0 @@ -# $FreeBSD$ - -PROG= texindex - -DPADD= ${LIBTXI} -LDADD= ${LIBTXI} - -NO_PIE= yes - -.include - -.PATH: ${TXIDIR}/util ${TXIDIR}/doc Index: kerberos5/Makefile =================================================================== diff --git a/head/kerberos5/Makefile b/head/kerberos5/Makefile --- a/head/kerberos5/Makefile (revision 267841) +++ b/head/kerberos5/Makefile (working copy) @@ -1,6 +1,6 @@ # $FreeBSD$ -SUBDIR= doc lib libexec tools usr.bin usr.sbin +SUBDIR= lib libexec tools usr.bin usr.sbin # These are the programs which depend on Kerberos. KPROGS= lib/libpam \ Index: kerberos5/doc/Makefile =================================================================== diff --git a/head/kerberos5/doc/Makefile b/head/kerberos5/doc/Makefile deleted file mode 10644 --- a/head/kerberos5/doc/Makefile (revision 267841) +++ /dev/null (working copy) @@ -1,6 +0,0 @@ -# $FreeBSD$ - -INFO= heimdal -SRCDIR= ${.CURDIR}/../../crypto/heimdal/doc - -.include Index: lib/libcom_err/Makefile =================================================================== diff --git a/head/lib/libcom_err/Makefile b/head/lib/libcom_err/Makefile --- a/head/lib/libcom_err/Makefile (revision 267841) +++ b/head/lib/libcom_err/Makefile (working copy) @@ -10,8 +10,6 @@ LDFLAGS= -Wl,--no-undefined VERSION_MAP= ${COM_ERRDIR}/version-script.map -SUBDIR= doc - .include .PATH: ${COM_ERRDIR} Index: lib/libcom_err/doc/Makefile =================================================================== diff --git a/head/lib/libcom_err/doc/Makefile b/head/lib/libcom_err/doc/Makefile deleted file mode 10644 --- a/head/lib/libcom_err/doc/Makefile (revision 267841) +++ /dev/null (working copy) @@ -1,7 +0,0 @@ -# $FreeBSD$ - -INFO= com_err -INFOSECTION= "Programming & development tools." -INFOENTRY_com_err= "* libcom_err: (com_err). A Common Error Description Library for UNIX." - -.include Index: lib/libcom_err/doc/com_err.texinfo =================================================================== diff --git a/head/lib/libcom_err/doc/com_err.texinfo b/head/lib/libcom_err/doc/com_err.texinfo deleted file mode 10644 --- a/head/lib/libcom_err/doc/com_err.texinfo (revision 267841) +++ /dev/null (working copy) @@ -1,615 +0,0 @@ -\input texinfo @c -*-texinfo-*- - -@c $FreeBSD$ - -@c Note that although this source file is in texinfo format (more -@c or less), it is not yet suitable for turning into an ``info'' -@c file. Sorry, maybe next time. -@c -@c In order to produce hardcopy documentation from a texinfo file, -@c run ``tex com_err.texinfo'' which will load in texinfo.tex, -@c provided in this distribution. (texinfo.tex is from the Free -@c Software Foundation, and is under different copyright restrictions -@c from the rest of this package.) - -@ifinfo -@barfo -@end ifinfo - -@iftex -@tolerance 10000 - -@c Mutate section headers... -@begingroup - @catcode#=6 - @gdef@secheading#1#2#3{@secheadingi {#3@enspace #1}} -@endgroup -@end iftex - -@c %**start of header (This is for running Texinfo on a region.) -@setfilename com_err -@settitle A Common Error Description Library for UNIX -@c %**end of header (This is for running Texinfo on a region.) - -@ifinfo -This file documents the use of the Common Error Description library. - -Copyright (C) 1987, 1988 Student Information Processing Board of the -Massachusetts Institute of Technology. - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, provided -that the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation, and that the names of M.I.T. and the M.I.T. S.I.P.B. not be -used in advertising or publicity pertaining to distribution of the software -without specific, written prior permission. M.I.T. and the M.I.T. S.I.P.B. -make no representations about the suitability of this software for any -purpose. It is provided "as is" without express or implied warranty. - -Note that the file texinfo.tex, provided with this distribution, is from -the Free Software Foundation, and is under different copyright restrictions -from the remainder of this package. - -@end ifinfo - -@ignore -Permission is granted to process this file through Tex and print the -results, provided the printed document carries copying permission -notice identical to this one except for the removal of this paragraph -(this paragraph not being relevant to the printed manual). - -@end ignore - -@setchapternewpage odd - -@titlepage -@center @titlefont{A Common Error Description} -@center @titlefont{Library for UNIX} -@sp 2 -@center Ken Raeburn -@center Bill Sommerfeld -@sp 1 -@center MIT Student Information Processing Board -@sp 3 -@center last updated 1 January 1989 -@center for version 1.2 -@center ***DRAFT COPY ONLY*** - -@vskip 2in - -@center @b{Abstract} - -UNIX has always had a clean and simple system call interface, with a -standard set of error codes passed between the kernel and user -programs. Unfortunately, the same cannot be said of many of the -libraries layered on top of the primitives provided by the kernel. -Typically, each one has used a different style of indicating errors to -their callers, leading to a total hodgepodge of error handling, and -considerable amounts of work for the programmer. This paper describes -a library and associated utilities which allows a more uniform way for -libraries to return errors to their callers, and for programs to -describe errors and exceptional conditions to their users. - -@page -@vskip 0pt plus 1filll - -Copyright @copyright{} 1987, 1988 by the Student Information Processing -Board of the Massachusetts Institute of Technology. - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, provided -that the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation, and that the names of M.I.T. and the M.I.T. S.I.P.B. not be -used in advertising or publicity pertaining to distribution of the software -without specific, written prior permission. M.I.T. and the M.I.T. S.I.P.B. -make no representations about the suitability of this software for any -purpose. It is provided "as is" without express or implied warranty. - -Note that the file texinfo.tex, provided with this distribution, is from -the Free Software Foundation, and is under different copyright restrictions -from the remainder of this package. - -@end titlepage - -@ifinfo -@node Top, Why com_err?, (dir), (dir) -@comment node-name, next, previous, up -@top General Introduction - -@menu -* Why com_err?:: What is all this for? -* Error codes:: What's an error code, anyway? -* Error table source file:: How to describe an error table. -* The error-table compiler:: How to compile the table. -* Run-time support routines:: How to use from within your program. -* Coding Conventions:: Stylistic issues. -* Building and Installation:: How to build and install. -* Bug Reports:: You have found a bug? Report it. -* Acknowledgements:: Whom to thank... - -@end menu - -@end ifinfo - -@page - -@ifinfo -@node Why com_err?, Error codes, Top, (dir) -@comment node-name, next, previous, up -@end ifinfo - -@section Why com_err? - -In building application software packages, a programmer often has to -deal with a number of libraries, each of which can use a different -error-reporting mechanism. Sometimes one of two values is returned, -indicating simply SUCCESS or FAILURE, with no description of errors -encountered. Sometimes it is an index into a table of text strings, -where the name of the table used is dependent on the library being -used when the error is generated; since each table starts numbering at -0 or 1, additional information as to the source of the error code is -needed to determine which table to look at. Sometimes no text messages are -supplied at all, and the programmer must supply them at any point at which -he may wish to report error conditions. -Often, a global variable is assigned some value describing the error, but -the programmer has to know in each case whether to look at @code{errno}, -@code{h_errno}, the return value from @code{hes_err()}, or whatever other -variables or routines are specified. -And what happens if something -in the procedure of -examining or reporting the error changes the same variable? - -The package we have developed is an attempt to present a common -error-handling mechanism to manipulate the most common form of error code -in a fashion that does not have the problems listed above. - -A list of up to 256 text messages is supplied to a translator we have -written, along with the three- to four-character ``name'' of the error -table. The library using this error table need only call a routine -generated from this error-table source to make the table ``known'' to the -com_err library, and any error code the library generates can be converted -to the corresponding error message. There is also a default format for -error codes accidentally returned before making the table known, which is -of the form @samp{unknown code foo 32}, where @samp{foo} would be the name -of the table. - -@ifinfo -@node Error codes, Error table source file, Why com_err?, (dir) -@comment node-name, next, previous, up -@end ifinfo - -@section Error codes - -Error codes themselves are 32 bit (signed) integers, of which the high -order 24 bits are an identifier of which error table the error code is -from, and the low order 8 bits are a sequential error number within -the table. An error code may thus be easily decomposed into its component -parts. Only the lowest 32 bits of an error code are considered significant -on systems which support wider values. - -Error table 0 is defined to match the UNIX system call error table -(@code{sys_errlist}); this allows @code{errno} values to be used directly -in the library (assuming that @code{errno} is of a type with the same width -as @t{long}). Other error table numbers are formed by compacting together -the first four characters of the error table name. The mapping between -characters in the name and numeric values in the error code are defined in -a system-independent fashion, so that two systems that can pass integral -values between them can reliably pass error codes without loss of meaning; -this should work even if the character sets used are not the same. -(However, if this is to be done, error table 0 should be avoided, since the -local system call error tables may differ.) - -Any variable which is to contain an error code should be declared @t{long}. -The draft proposed American National Standard for C (as of May, 1988) -requires that @t{long} variables be at least 32 bits; any system which does -not support 32-bit @t{long} values cannot make use of this package (nor -much other software that assumes an ANSI-C environment base) without -significant effort. - -@ifinfo -@node Error table source file, The error-table compiler, Error codes, (dir) -@comment node-name, next, previous, up -@end ifinfo - -@section Error table source file - -The error table source file begins with the declaration of the table name, -as - -@example -error_table @var{tablename} -@end example - -Individual error codes are -specified with - -@example -error_code @var{ERROR_NAME}, @var{"text message"} -@end example - -where @samp{ec} can also be used as a short form of @samp{error_code}. To -indicate the end of the table, use @samp{end}. Thus, a (short) sample -error table might be: - -@example - - error_table dsc - - error_code DSC_DUP_MTG_NAME, - "Meeting already exists" - - ec DSC_BAD_PATH, - "A bad meeting pathname was given" - - ec DSC_BAD_MODES, - "Invalid mode for this access control list" - - end - -@end example - -@ifinfo -@node The error-table compiler, Run-time support routines, Error table source file, (dir) -@comment node-name, next, previous, up -@end ifinfo - -@section The error-table compiler - -The error table compiler is named @code{compile_et}. It takes one -argument, the pathname of a file (ending in @samp{.et}, e.g., -@samp{dsc_err.et}) containing an error table source file. It parses the -error table, and generates two output files -- a C header file -(@samp{discuss_err.h}) which contains definitions of the numerical values -of the error codes defined in the error table, and a C source file which -should be compiled and linked with the executable. The header file must be -included in the source of a module which wishes to reference the error -codes defined; the object module generated from the C code may be linked in -to a program which wishes to use the printed forms of the error codes. - -This translator accepts a @kbd{-language @var{lang}} argument, which -determines for which language (or language variant) the output should be -written. At the moment, @var{lang} is currently limited to @kbd{ANSI-C} -and @kbd{K&R-C}, and some abbreviated forms of each. Eventually, this will -be extended to include some support for C++. The default is currently -@kbd{K&R-C}, though the generated sources will have ANSI-C code -conditionalized on the symbol @t{__STDC__}. - -@ifinfo -@node Run-time support routines, Coding Conventions, The error-table compiler, (dir) -@comment node-name, next, previous, up -@end ifinfo - -@section Run-time support routines - -Any source file which uses the routines supplied with or produced by the -com_err package should include the header file @file{}. It -contains declarations and definitions which may be needed on some systems. -(Some functions cannot be referenced properly without the return type -declarations in this file. Some functions may work properly on most -architectures even without the header file, but relying on this is not -recommended.) - -The run-time support routines and variables provided via this package -include the following: - -@example -void initialize_@var{xxxx}_error_table (void); -@end example - -One of these routines is built by the error compiler for each error table. -It makes the @var{xxxx} error table ``known'' to the error reporting -system. By convention, this routine should be called in the initialization -routine of the @var{xxxx} library. If the library has no initialization -routine, some combination of routines which form the core of the library -should ensure that this routine is called. It is not advised to leave it -the caller to make this call. - -There is no harm in calling this routine more than once. - -@example -#define ERROR_TABLE_BASE_@var{xxxx} @var{nnnnn}L -@end example - -This symbol contains the value of the first error code entry in the -specified table. -This rarely needs be used by the -programmer. - -@example -const char *error_message (long code); -@end example - -This routine returns the character string error message associated -with @code{code}; if this is associated with an unknown error table, or -if the code is associated with a known error table but the code is not -in the table, a string of the form @samp{Unknown code @var{xxxx nn}} is -returned, where @var{xxxx} is the error table name produced by -reversing the compaction performed on the error table number implied -by that error code, and @var{nn} is the offset from that base value. - -Although this routine is available for use when needed, its use should be -left to circumstances which render @code{com_err} (below) unusable. - -@example -void com_err (const char *whoami, /* module reporting error */ - long code, /* error code */ - const char *format, /* format for additional detail */ - ...); /* (extra parameters) */ -@end example - -This routine provides an alternate way to print error messages to -standard error; it allows the error message to be passed in as a -parameter, rather than in an external variable. @emph{Provide grammatical -context for ``message.''} - -If @var{format} is @code{(char *)NULL}, the formatted message will not be -printed. @var{format} may not be omitted. - -@example -#include - -void com_err_va (const char *whoami, - long code, - const char *format, - va_list args); -@end example - -This routine provides an interface, equivalent to @code{com_err} above, -which may be used by higher-level variadic functions (functions which -accept variable numbers of arguments). - -@example -#include - -void (*set_com_err_hook (void (*proc) ())) (); - -void (*@var{proc}) (const char *whoami, long code, va_list args); - -void reset_com_err_hook (); -@end example - -These two routines allow a routine to be dynamically substituted for -@samp{com_err}. After @samp{set_com_err_hook} has been called, -calls to @samp{com_err} will turn into calls to the new hook routine. -@samp{reset_com_err_hook} turns off this hook. This may intended to -be used in daemons (to use a routine which calls @var{syslog(3)}), or -in a window system application (which could pop up a dialogue box). - -If a program is to be used in an environment in which simply printing -messages to the @code{stderr} stream would be inappropriate (such as in a -daemon program which runs without a terminal attached), -@code{set_com_err_hook} may be used to redirect output from @code{com_err}. -The following is an example of an error handler which uses @var{syslog(3)} -as supplied in BSD 4.3: - -@example -#include -#include -#include - -/* extern openlog (const char * name, int logopt, int facility); */ -/* extern syslog (int priority, char * message, ...); */ - -void hook (const char * whoami, long code, - const char * format, va_list args) -@{ - char buffer[BUFSIZ]; - static int initialized = 0; - if (!initialized) @{ - openlog (whoami, - LOG_NOWAIT|LOG_CONS|LOG_PID|LOG_NDELAY, - LOG_DAEMON); - initialized = 1; - @} - vsprintf (buffer, format, args); - syslog (LOG_ERR, "%s %s", error_message (code), buffer); -@} -@end example - -After making the call -@code{set_com_err_hook (hook);}, -any calls to @code{com_err} will result in messages being sent to the -@var{syslogd} daemon for logging. -The name of the program, @samp{whoami}, is supplied to the -@samp{openlog()} call, and the message is formatted into a buffer and -passed to @code{syslog}. - -Note that since the extra arguments to @code{com_err} are passed by -reference via the @code{va_list} value @code{args}, the hook routine may -place any form of interpretation on them, including ignoring them. For -consistency, @code{printf}-style interpretation is suggested, via -@code{vsprintf} (or @code{_doprnt} on BSD systems without full support for -the ANSI C library). - -@ifinfo -@node Coding Conventions, Building and Installation, Run-time support routines, (dir) -@comment node-name, next, previous, up -@end ifinfo - -@section Coding Conventions - -The following conventions are just some general stylistic conventions -to follow when writing robust libraries and programs. Conventions -similar to this are generally followed inside the UNIX kernel and most -routines in the Multics operating system. In general, a routine -either succeeds (returning a zero error code, and doing some side -effects in the process), or it fails, doing minimal side effects; in -any event, any invariant which the library assumes must be maintained. - -In general, it is not in the domain of non user-interface library -routines to write error messages to the user's terminal, or halt the -process. Such forms of ``error handling'' should be reserved for -failures of internal invariants and consistancy checks only, as it -provides the user of the library no way to clean up for himself in the -event of total failure. - -Library routines which can fail should be set up to return an error -code. This should usually be done as the return value of the -function; if this is not acceptable, the routine should return a -``null'' value, and put the error code into a parameter passed by -reference. - -Routines which use the first style of interface can be used from -user-interface levels of a program as follows: - -@example -@{ - if ((code = initialize_world(getuid(), random())) != 0) @{ - com_err("demo", code, - "when trying to initialize world"); - exit(1); - @} - if ((database = open_database("my_secrets", &code))==NULL) @{ - com_err("demo", code, - "while opening my_secrets"); - exit(1); - @} -@} -@end example - -A caller which fails to check the return status is in error. It is -possible to look for code which ignores error returns by using lint; -look for error messages of the form ``foobar returns value which is -sometimes ignored'' or ``foobar returns value which is always -ignored.'' - -Since libraries may be built out of other libraries, it is often necessary -for the success of one routine to depend on another. When a lower level -routine returns an error code, the middle level routine has a few possible -options. It can simply return the error code to its caller after doing -some form of cleanup, it can substitute one of its own, or it can take -corrective action of its own and continue normally. For instance, a -library routine which makes a ``connect'' system call to make a network -connection may reflect the system error code @code{ECONNREFUSED} -(Connection refused) to its caller, or it may return a ``server not -available, try again later,'' or it may try a different server. - -Cleanup which is typically necessary may include, but not be limited -to, freeing allocated memory which will not be needed any more, -unlocking concurrancy locks, dropping reference counts, closing file -descriptors, or otherwise undoing anything which the procedure did up -to this point. When there are a lot of things which can go wrong, it -is generally good to write one block of error-handling code which is -branched to, using a goto, in the event of failure. A common source -of errors in UNIX programs is failing to close file descriptors on -error returns; this leaves a number of ``zombied'' file descriptors -open, which eventually causes the process to run out of file -descriptors and fall over. - -@example -@{ - FILE *f1=NULL, *f2=NULL, *f3=NULL; - int status = 0; - - if ( (f1 = fopen(FILE1, "r")) == NULL) @{ - status = errno; - goto error; - @} - - /* - * Crunch for a while - */ - - if ( (f2 = fopen(FILE2, "w")) == NULL) @{ - status = errno; - goto error; - @} - - if ( (f3 = fopen(FILE3, "a+")) == NULL) @{ - status = errno; - goto error; - @} - - /* - * Do more processing. - */ - fclose(f1); - fclose(f2); - fclose(f3); - return 0; - -error: - if (f1) fclose(f1); - if (f2) fclose(f2); - if (f3) fclose(f3); - return status; -@} -@end example - -@ifinfo -@node Building and Installation, Bug Reports, Coding Conventions, (dir) -@comment node-name, next, previous, up -@end ifinfo - -@section Building and Installation - -The distribution of this package will probably be done as a compressed -``tar''-format file available via anonymous FTP from SIPB.MIT.EDU. -Retrieve @samp{pub/com_err.tar.Z} and extract the contents. A subdirectory -@t{profiled} should be created to hold objects compiled for profiling. -Running ``make all'' should then be sufficient to build the library and -error-table compiler. The files @samp{libcom_err.a}, -@samp{libcom_err_p.a}, @samp{com_err.h}, and @samp{compile_et} should be -installed for use; @samp{com_err.3} and @samp{compile_et.1} can also be -installed as manual pages. - -Potential problems: - -@itemize @bullet - -@item Use of @code{strcasecmp}, a routine provided in BSD for -case-insensitive string comparisons. If an equivalent routine is -available, you can modify @code{CFLAGS} in the makefile to define -@code{strcasecmp} to the name of that routine. - -@item Compilers that defined @code{__STDC__} without providing the header -file @code{}. One such example is Metaware's High ``C'' -compiler, as provided at Project Athena on the IBM RT/PC workstation; if -@code{__HIGHC__} is defined, it is assumed that @code{} is not -available, and therefore @code{} must be used. If the symbol -@code{VARARGS} is defined (e.g., in the makefile), @code{} will -be used. - -@item If your linker rejects symbols that are simultaneously defined in two -library files, edit @samp{Makefile} to remove @samp{perror.c} from the -library. This file contains a version of @var{perror(3)} which calls -@code{com_err} instead of calling @code{write} directly. - -@end itemize - -As I do not have access to non-BSD systems, there are probably -bugs present that may interfere with building or using this package on -other systems. If they are reported to me, they can probably be fixed for -the next version. - -@ifinfo -@node Bug Reports, Acknowledgements, Building and Installation, (dir) -@comment node-name, next, previous, up -@end ifinfo - -@section Bug Reports - -Please send any comments or bug reports to the principal author: Ken -Raeburn, @t{Raeburn@@Athena.MIT.EDU}. - -@ifinfo -@node Acknowledgements, , Bug Reports, (dir) -@comment node-name, next, previous, up -@end ifinfo - -@section Acknowledgements - -I would like to thank: Bill Sommerfeld, for his help with some of this -documentation, and catching some of the bugs the first time around; -Honeywell Information Systems, for not killing off the @emph{Multics} -operating system before I had an opportunity to use it; Honeywell's -customers, who persuaded them not to do so, for a while; Ted Anderson of -CMU, for catching some problems before version 1.2 left the nest; Stan -Zanarotti and several others of MIT's Student Information Processing Board, -for getting us started with ``discuss,'' for which this package was -originally written; and everyone I've talked into --- I mean, asked to read -this document and the ``man'' pages. - -@bye Index: share/mk/Makefile =================================================================== diff --git a/head/share/mk/Makefile b/head/share/mk/Makefile --- a/head/share/mk/Makefile (revision 267841) +++ b/head/share/mk/Makefile (working copy) @@ -15,7 +15,6 @@ bsd.endian.mk \ bsd.files.mk \ bsd.incs.mk \ - bsd.info.mk \ bsd.init.mk \ bsd.kmod.mk \ bsd.lib.mk \ Index: share/mk/bsd.README =================================================================== diff --git a/head/share/mk/bsd.README b/head/share/mk/bsd.README --- a/head/share/mk/bsd.README (revision 267841) +++ b/head/share/mk/bsd.README (working copy) @@ -21,7 +21,6 @@ bsd.doc.mk - building troff system documents bsd.files.mk - install of general purpose files bsd.incs.mk - install of include files -bsd.info.mk - building GNU Info hypertext system bsd.init.mk - initialization for the make include files bsd.kmod.mk - building loadable kernel modules bsd.lib.mk - support for building libraries Index: usr.sbin/amd/Makefile =================================================================== diff --git a/head/usr.sbin/amd/Makefile b/head/usr.sbin/amd/Makefile --- a/head/usr.sbin/amd/Makefile (revision 267841) +++ b/head/usr.sbin/amd/Makefile (working copy) @@ -5,7 +5,7 @@ # # $FreeBSD$ -SUBDIR= include libamu amd amq doc fixmount fsinfo hlfsd mk-amd-map pawd \ +SUBDIR= include libamu amd amq fixmount fsinfo hlfsd mk-amd-map pawd \ scripts wire-test .include Index: usr.sbin/amd/doc/Makefile =================================================================== diff --git a/head/usr.sbin/amd/doc/Makefile b/head/usr.sbin/amd/doc/Makefile deleted file mode 10644 --- a/head/usr.sbin/amd/doc/Makefile (revision 267841) +++ /dev/null (working copy) @@ -1,14 +0,0 @@ -# This file is under a "BSD" copyright (c) by David O'Brien 1998. - -# $FreeBSD$ - -.PATH: ${.CURDIR}/../../../contrib/amd/doc - -INFO= am-utils - -INFOSECTION= "AMD Documentation" -INFOENTRY= "* Am-utils: (am-utils). The Amd automounter suite of utilities" - -MAKEINFOFLAGS+= -I ${.CURDIR}/../../../contrib/amd/doc - -.include Index: contrib/texinfo/AUTHORS =================================================================== diff --git a/head/contrib/texinfo/AUTHORS b/head/contrib/texinfo/AUTHORS deleted file mode 10644 --- a/head/contrib/texinfo/AUTHORS (revision 267841) +++ /dev/null (working copy) @@ -1,31 +0,0 @@ -$Id: AUTHORS,v 1.10 2004/04/11 17:56:45 karl Exp $ -Texinfo authors. - - Copyright (C) 2003 Free Software Foundation, Inc. - - Copying and distribution of this file, with or without modification, - are permitted in any medium without royalty provided the copyright - notice and this notice are preserved. - -Akim Demaille texi2dvi. -Alper Ersoy makeinfo: enhancements in all files, especially - html-, xml-, and docbook-related. -Andreas Schwab texinfo.tex, configure.ac, most makeinfo files. -Bob Chassell texinfo.tex, original texinfo.txi. -Brian Fox all makeinfo/* and info/* files, info-stnd.texi. -Dave Love original makeinfo/html.[ch]. -Eli Zaretskii all files. -Karl Berry all files. -Karl Heinz Marbaise original makeinfo language support, most files. -Noah Friedman original texi2dvi. -Paul Rubin original makeinfo/multi.c. -Philippe Martin original makeinfo xml/docbook output. -Richard Stallman original texinfo.tex, install-info.c, - texindex.c, texinfo.txi. -Zack Weinberg texinfo.tex: @macro implementation. - -See http://www.iro.umontreal.ca/contrib/po/HTML/team-LL.html for the -translation teams for a given language LL. - -Many files included in the Texinfo distribution are copied from other -locations, no author information is given for those. See util/srclist*. Index: contrib/texinfo/COPYING =================================================================== diff --git a/head/contrib/texinfo/COPYING b/head/contrib/texinfo/COPYING deleted file mode 10644 --- a/head/contrib/texinfo/COPYING (revision 267841) +++ /dev/null (working copy) @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. Index: contrib/texinfo/ChangeLog =================================================================== diff --git a/head/contrib/texinfo/ChangeLog b/head/contrib/texinfo/ChangeLog deleted file mode 10644 --- a/head/contrib/texinfo/ChangeLog (revision 267841) +++ /dev/null (working copy) @@ -1,5008 +0,0 @@ -2004-12-31 Karl Berry - - * Version 4.8. - -2004-12-21 Karl Berry - - * pretest version 4.7.94. - - * makeinfo/xref.c: doc fix. - -2004-12-20 Karl Berry - - * makeinfo/html.c (cm_node) : need old-style names in the normal - (not no_headers) html case, too, of course. - (add_html_names): canon_white the new name, too. - -2004-12-19 Karl Berry - - * pretest version 4.7.93. - - * automake 1.9.4. - - * makeinfo/xml.c (try_docbook_image): new fn. - (xml_insert_docbook_image): call it, trying additional formats - pdf, svg, etc. - * makeinfo/makeinfo.c (cm_image): check for gif too. - http://www.gnu.org/philosophy/gif.html says: - "we can and will include support for displaying GIF files in GNU - software." Leaving it undocumented, though. - Based on patch from Jens Elkner, 18 Dec 2004 01:56:28 +0100. - -2004-12-19 Torsten Bronger - - * util/texinfo.dtd: define most entities, add . - -2004-12-17 Juan M. Guerrero - - * djgpp/config.bat: remove files like coXXXXXX.tmp created - in the top_srcdir by the gl_FUNC_MKSTEMP test. - -2004-12-15 Karl Berry - - * pretest version 4.7.92. - - * util/texinfo.dtd: merge with makeinfo/texinfo.dtd. - * makeinfo/texinfo.dtd, makeinfo/texinfo.xsl: remove. - -2004-12-15 Stepan Kasal - - * Makefile.am (EXTRA_DIST): Removed po/Makevars.template, sorry. - -2004-12-15 Juan M. Guerrero - - * djgpp/config.sed: adjust for new autoconf. - * makeinfo/node.c (enumerate_filename): make dos_file_names const - instead of static, since it may involve a fn call to pathconf. - -2004-12-15 Karl Berry - - * Makefile.am (EXTRA_DIST): include ChangeLog.46, README.dev, - and po/Makevars.template. From Stepan. - -2004-12-14 Karl Berry - - * doc/texinfo.txi (inforef): try to explain possible uses more - thoroughly. - From: Luc Teirlinck, 13 Dec 2004 21:45:58 -0600. - - * doc/texinfo.txi (pxref): more explanation. - * doc/info-stnd.texi (Basic Windows): put pxref in parens. - help-texinfo mail from adl, 13 Dec 2004 17:07:50 +0100. - -2004-12-13 Andreas Schwab - - * info/echo-area.c (DECLARE_INFO_COMMAND): Add intermediate cast - to avoid warning. - * info/infokey.c (compile): Likewise. - * info/session.c (forward_move_node_structure): Likewise. - (DECLARE_INFO_COMMAND): Likewise. - - * makeinfo/makeinfo.c (init_paragraph): Don't use free_and_clear - to avoid strict aliasing issue. - - * makeinfo/cmds.c (cm_center): Avoid strict aliasing issue. - -2004-12-13 Karl Berry - - * doc/texinfo.txi (HTML Cross-reference Command Expansion): add - @euro{} -> U+20AC. texinfo-pretest mail from Patrice, - 12 Dec 2004 23:49:50 +0100. - -2004-12-12 Karl Berry - - * doc/texinfo.txi (makeinfo options): don't be so suggestive about - skipping xref validation. - emacs-devel mail from: Luc Teirlinck, 12 Dec 2004 13:02:11 -0600. - -2004-12-08 Karl Berry - - * pretest version 4.7.91. - - * info/echo-area.c, info/infokey.c, info/session.c: omit useless - casts to intptr_t, since we're just casting to (void *) next. - intptr_t is not defined with gcc 3.04 on Tru64 Unix V5.1 - (This whole vararg stuff needs to be redone correctly.) - Report from: Svend Tollak Munkejord (via te) - 8 Dec 2004 17:15:17 +0100. - - * doc/texinfo.txi (ref): rewrite last two redundant paragraphs. - -2004-12-07 Karl Berry - - * doc/texinfo.txi (Macro Details): document @c kludge in macro - definitions to work around some newline problems. (From Werner.) - -2004-12-05 Karl Berry - - * makeinfo/html.c (add_escaped_anchor_name): prefix g_t if the - nodename begins with a nonletter. Ugh. - * doc/texinfo.txi (HTML Xref Node Name Expansion): document this. - http://ff0.org/pipermail/texinfo-pretest/2004-December/000210.html - - * doc/texinfo.txi (HTML Xref 8-bit Character Expansion): define - behavior for Unicode code points above 0xfff. - - * makeinfo/makeinfo.c (reader_loop): didn't make it into - HTML 4, remove it. Sigh. - texinfo-pretest mail from wl, 05 Dec 2004 23:39:05 +0100. - -2004-12-02 Karl Berry - - * configure.ac (install-warnings): simplify default case. From te. - -2004-12-01 Karl Berry - - * pretest version 4.7.90. - - * util/texi2dvi (recode): new option, off by default. - Unconditionally calling recode seems problematic, when there - hasn't been a release for years and its Texinfo support is less than - perfect. - -2004-11-30 Karl Berry - - * doc/texinfo.txi (Quotations and Examples): @quotation does not - reduce interparagraph spacing. - - * makeinfo/node.c (cm_node) : do not bother calling - add_html_nodes in the split case, the filename is wrong. - -2004-11-29 Karl Berry - - Support for writing using the old-style node name - to HTML name conversion, to keep the gcc folks happy. - * makeinfo/node.c (add_html_names): new routine, factoring out - common code (plus new code) from cm_node. - (cm_node) : call it. - * makeinfo/makeinfo.h (OLD_HTML_SAFE, OLD_URL_SAFE_CHAR): - (re)define these. - * makeinfo/html.c (add_escaped_anchor_name): take new argument to - optionally output the old-style conversion. - (add_anchor_name): change call. - * index.c: change calls. - * makeinfo/html.h (add_escaped_anchor_name): change decl. - -2004-11-26 Karl Berry - - * makeinfo/makeinfo.c (reader_loop): allow after — - -2004-11-25 Karl Berry - - * doc/texinfo.txi (Fonts): document new command @sansserif. - * doc/texinfo.tex (\sansserif): new command. - * makeinfo/cmds.h (cm_sansserif): new cmd. - * makeinfo/cmds.c (cm_sansserif): new cmd. - (command_table): add it. - * makeinfo/texinfo.dtd (Inline.fonts): add it; also slanted. - * makeinfo/xml.h (SANSSERIF, SLANTED): define these new elements. - * makeinfo/xml.c (texinfoml_element_list): add them. - From: Frank Küster, 21 Oct 2004 23:27:33 +0200, Debian bug#277754. - - * doc/texinfo.txi (Quotations and Examples, end titlepage): state - that there must be only one space between the @end and its - argument. Report from: christoph.sobotka, 26 Oct 2004 22:04:03 +0200. - -2004-11-22 Karl Berry - - * doc/texinfo.txi (euro): new node, documenting new command, - @euro{}, for the Euro currency symbol. - * doc/texinfo.tex (\euro): new command, along with \eurofont to - support it. The following extra font support is also related to - supporting @euro{}: - (\bfstylename): define this. - (\textnominalsize .. \ssecnominalsize): new macros. - (\textfonts .. \ssecfonts): define \curfontsize. - * makeinfo/cmds.c (command_table): add euro. - * makeinfo/lang.c (cm_special_char): handle euro. - (iso8859_15_map): new global. - -2004-11-18 Stepan Kasal - - * doc/texinfo.tex (\ptexnewwrite): Save \newwrite. - (\newwrite): Call it. - -2004-11-17 Karl Berry - - * configure.ac (install-warnings): new --enable option, requested - by te. - -2004-11-11 Karl Berry - - * texinfo.dtd (metainformation): add documentdescription. - (documentdescription): define. - * xml.h (DOCUMENTDESCRIPTION): new value for xml_element. - * xml.c (texinfoml_element_list): define documentdescription. - (docbook_element_list): likewise, but don't know how to handle it. - * cmds.c (cm_documentdescription): insert opening xml tag. - * insertion.c (end_insertion): insert closing xml tag. - - * makeinfo/makeinfo.c (insert_string): declare const char * arg. - * makeinfo/makeinfo.h: likewise. - Report from: Vincent Lefevre, 20 Oct 2004 15:40:39 +0200, - noting a spurious after . - -2004-11-08 Karl Berry - - * doc/texinfo.tex (\pdfmakeoutlines): in the first run through the - toc, define \thischapnum...\thissubsecnum as 0, rather than \empty. - This is so \expnumber doesn't end up trying to expand - \csname sec\empty\endcsname, i.e., \sec, which is the secant function. - Report from: Oliver Beck, help-texinfo, 8 Nov 2004 08:05:55 +0100. - -2004-11-07 Karl Berry - - * makeinfo/makeinfo.c (main) [LC_MESSAGES]: #ifdef the setlocale - using LC_MESSAGES. From te, 6 Nov 2004 23:36:10 +0100. - -2004-11-06 Karl Berry - - * lib/Makefile.am (libtxi_a_SOURCES): add strdup.h. - Report from: Thomas Esser , - 6 Nov 2004 18:11:51 +0100. - -2004-11-01 Karl Berry - - * makeinfo/xref.c (cm_xref): don't include the external file name - in the HTML output, since it's pretty traditional not to - distinguish internal and external links in HTML, and it disturbs - the flow of reading. - From: Han-Wen Nienhuys , 31 Oct 2004 00:13:36 +0200. - (For lilypond.) - -2004-10-31 Karl Berry - - * doc/texinfo.tex (\setmultitablespacing): just let \multistrut be - the same as \strut. Its previous computation was wrong. - See bug-texinfo report from Werner Lemberg, 31 Oct 2004 12:52:20 +0100. - -2004-10-22 Stepan Kasal - - * info/Makefile.am (generated_sources): Add dependencies defining - a total order on the files, to prevent race conditions with - parallel make. - Move the code about generated sources to the end of the file. - -2004-10-20 Stepan Kasal - - * info/Makefile.am (doc.c, key.c, funs.h): Don't distribute them. - of these three files. - (ginfo_SOURCES, nodist_ginfo_SOURCES): Move files. - (infokey_SOURCES, nodist_infokey_SOURCES): Likewise. - (DISTCLEANFILES): Include generated_sources. - -2004-10-20 Stepan Kasal - - BUILT_SOURCES is a special variable for a hack to supplement - the automatic dependency tracking; we need it for funs.h only. - See the explanation in the automake manual. - - * info/Makefile.am (BUILT_SOURCES): All occurences replaced by ... - (generated_sources): ... this new variable. - (BUILT_SOURCES): set to ``funs.h''. - -2004-10-20 Stepan Kasal - - * info/Makefile.am (ginfo_SOURCES): replace $(BUILT_SOURCES) - with ``doc.c funs.h''; this reflects the true situation. - (infokey_SOURCES): Add funs.h. - -2004-10-20 Stepan Kasal - - * info/Makefile.am (EXTRA_DIST): No need to mention the generated - sources here, they are in ginfo_SOURCES or infokey_SOURCES. - -2004-10-19 Stepan Kasal - - * configure.ac: When cross compiling, we have to remove - ./config.status, not "$native_tools"/config.status. - Replace ``echo'' with AC_MSG_NOTICE. Quote the variable - values passed to ``env.'' - -2004-10-17 Karl Berry - - * makeinfo/node.c (cm_node): don't output
after the - navigation line, it's apparently just extra space. - - * configure.ac: Clean environment for native configure. - From: Mark Fortescue , - 17 Oct 2004 19:09:53 +0100. - -2004-10-11 Stepan Kasal - - * configure.ac: Add a short explanation about cross compile. - -2004-10-08 Karl Berry - - * info/Makefile.am (generated_sources): remove. Found by Stepan. - -2004-10-08 Stepan Kasal - - Support cross compiling. Based on research by Mark Fortescue. - Maciej W. Rozycki pointed out this issue previously. - - * configure.ac: If cross compiling, run second configure script - in a subdirectory ${native_tools}. New automake conditional - TOOLS_ONLY is set inside that subdirectory. - * Makefile.am (SUBDIRS): Add $(native_tools); restrict the - SUBDIRS to minimum, if we are inside the $(native_toos) dir. - (distclean-local): Remove directory $(native_tools). - * doc/Makefile.am: If necessary, use makeinfo and install-info - from $(native_tools). - * info/Makefile.am: Similarily with the ``makedoc'' program. - -2004-10-07 Stepan Kasal - - @table command doesn't work inside environment @display. - There is no point in trying to fix it: just give up with a cry. - - * doc/texinfo.tex (\table, \ftable, \vtable): Instead of calling - \tablex directly, call ... - (\tablecheck): ... this new macro which checks for active newline; - if it's found, it reports an error and uses \doignore to recover. - * doc/texinfo.txi (display): mention this. - -2004-10-06 Karl Berry - - * doc/*.texi: more consistent use of dashes. - From Stepan and Benno Schulenberg . - -2004-10-04 Karl Berry - - * makeinfo/makeinfo.c (cm_value): increment and restore - input_text_offset before execute_string on the value, - so cm_xref doesn't complain about missing punctuation. - From: Sergey Poznyakoff , - 04 Oct 2004 15:04:33 +0300. - -2004-10-01 Karl Berry - - * lib/Makefile.am (libtxi_a_SOURCES): add getopt_.h. - - * configure.ac: bump version to 4.7.90, although we're not really - pretesting yet. (I need a distribution to check an - automake issue.) - -2004-09-14 Karl Berry - - * util/srclist.txt (getopt.h): renamed to getopt_.h. - * lib/getopt_.h: new file. - * lib/getopt.h: just include getopt.h. - -2004-09-09 Karl Berry - - * doc/texinfo.txi (Image Syntax): mention @noindent, @center. - -2004-09-06 Stepan Kasal - - * doc/texinfo.tex (\Efloat): Take care to run \scantokens on - \thisshortcaption before writing the lof line to auxfile. - Otherwise, when a newline appears in the argument to - @shortcaption, a literal ^^M is written to the aux file. - Report from Patrice, 1 Aug 2004 15:54:44 +0200. - -2004-09-01 Karl Berry - - * util/gendocs.sh: show commands, allow / in description. - -2004-08-30 Karl Berry - - * makeinfo/makeinfo.c (maybe_escaped_expansion): new routine, like - expansion but does HTML escapes. - * makeinfo/makeinfo.h (maybe_escaped_expansion): declare. - * makeinfo/index.c (cm_printindex): call it. - This is @cindex Kahrs, J@"urgen does not get - gawk.texi:23425: Unknown command `"urgen'. - (in gawk 3.1.4). - Report from: Stepan Kasal , 24 Aug 2004 12:36:34 +0200. - -2004-08-29 Karl Berry - - * makeinfo/node.c (split_file): do not search for output file - along the path when calling find_and_load (can cause seg - fault when cross-compiling). - From: Martin Husemann , 29 Aug 2004 08:40:33 +0200. - http://www.netbsd.org/cgi-bin/query-pr-single.pl?number=26791 - -2004-08-27 Karl Berry - - * doc/texinfo.txi (Macro details): more warnings about macro usage. - Report from: Stepan Kasal , 24 Aug 2004 09:29:35 +0200. - - * doc/texinfo.tex (\Efloat): \vskip\parskip after printing the - caption; previous \printedsomething code to do this had become - obsolete. Reported by Stepan. - - * doc/texinfo.txi (caption shortcaption): show an example for - @shortcaption, and remark that weird commands like @c and @verb - are not allowed. Suggested by Stepan. - -2004-08-27 Stepan Kasal - - * doc/texinfo.tex (\initial): when breaking the column before the - initial, allow for some space at the bottom of the column, so - the baselineskip is preserved (more or less). - Don't give negative penalty, it encouradges creating of underfull - columns with stretched baselineskip. - At the end, the \nobreak should be before \vskip, not after it. - -2004-08-26 Stepan Kasal - - * util/texi2dvi: fix the sed script searching for @documentencoding; - Double-quote some instances of "$filename_???" - -2004-08-26 Akim Demaille - - Let DVI and PDF files honor the document encoding in TeX. - - * util/texi2dvi ($language): Be sure to set its value. - (get_xref_files): Turn this external shell script into a function. - (filename_rcd, $tmpdir_rcd): New. - If the file is in Texinfo, and has @documentencoding, and recode - is available, then run it. - -2004-08-25 Akim Demaille - - * util/Makefile.am (texinfo.cat): Fix for srcdir != builddir. - -2004-08-25 Karl Berry - - * util/texi2dvi: @ is also ok for the first character of xref_files. - -2004-08-20 Karl Berry - - * doc/texinfo.tex (\tablez): accidentally removed assignments - enabling @item and @itemx within @table. - -2004-08-19 Karl Berry - - * doc/texinfo.tex (\multitable): \def\item to \crcr, instead of - \let, to avoid errors with a nested @itemize inside - @multitable. - Report from: Pierre-Luc Veilleux , - 18 Aug 2004 13:26:00 -0400. - -2004-08-19 Stepan Kasal - - * doc/texinfo.tex (\scanmacro): Make backslash active, not other, - as this is the default when processing texinfo files. - Otherwise, a \ inside @copying will eventually print as ``. - -2004-08-18 Stepan Kasal - - * doc/texinfo.tex (\scantxt): " is another active char to be - sanitized. - -2004-08-18 Karl Berry - - * doc/texinfo.txi (exampleindent): document that the default is - different in TeX. - From: Simon Josefsson , 18 Aug 2004 13:44:32 +0200. - -2004-08-14 Karl Berry - - * doc/texinfo.tex (\cslet): equivalent-or-better, and shorter, - version from dak, 12 Aug 2004 19:17:27 +0200. - - * doc/texinfo.txi (makeinfo options): use --no-number-sections - with non-hierarchical manuals. - -2004-08-13 Karl Berry - - * util/texi2dvi: check for -file-line-error, since -style is no - longer part of the name. - -2004-08-07 Karl Berry - - * info/echo-area.c (inform_in_echo_area): avoid buffer overrun. - Report from: Roman Werpachowski , - 7 Aug 2004 01:18:32 +0200. - - * info/echo-area.h (inform_in_echo_area): declare arg as const, - while we're at it. - -2004-08-02 Karl Berry - - * makeinfo/cmds.c (cm_acronym_or_abbr): use strchr, not index. - Report from: Prof Brian Ripley , - 2 Aug 2004 12:47:36 +0100 (BST) - -2004-07-31 Karl Berry - - * doc/texinfo.txi, - * doc/texinfo.tex, - * makeinfo/cmds.c, cmds.h, xml.c, xml.h, - * util/texinfo.dtd: new command @abbr, suggested by Paul Eggert, - who also sent the original documentation. - -2004-07-30 Karl Berry - - * info/infomap.c (initialize_vi_like_keymaps): bind j to - info_next_line and k to info_prev_line. From Eli. - -2004-07-30 Maciej W. Rozycki - - * info/filesys.c (extract_colon_unit): Clean up handling of the - end of string. - -2004-07-27 Karl Berry - - * doc/texinfo.txi (verb): explicitly warn that @verb cannot be - used in xref contexts. - -2004-07-27 Stepan Kasal - - * doc/texinfo.tex (\float): The parameters for @float are - separated by commas; allow a space after each of the commas. - - The TeX code for @caption, @shortcaption and @copying now uses - a similar mechanism to macro definitions. In detail: - - * doc/texinfo.tex (\macrobodyctxt, \macroargctxt): Generalize, ... - (\scanctxt, \scanargctxt): ... and introduce new variants. - (\scanexp): New macro--expand the parameter and call \scantokens. - (\copying, \docopying, \insertcopying): Use \scanargctxt and - \scanexp--this simplifies things a lot. - (\caption, \shortcaption): Redefine, using \scanargctxt via ... - (\docaption, \defcaption): ... these new macros. - (\appendtomacro): Simplify code, using \expandafter. - -2004-07-26 Karl Berry - - Avoid using the path for output files, since this led to problems - when incompatible files created by previous versions were found. - * makeinfo/files.c (find_and_load): introduce second parameter - use_path, set to 0 from the call in handle_delayed_writes, - 1 in all cases. - * makeinfo/files.h: change decl. - * makeinfo/cmds.c, makeinfo.c, node.c: change calls. - From: Thomas Klausner , - 14 Jul 2004 00:31:54 +0200. - -2004-07-25 Werner Lemberg - - Rename @s to @slanted. - - * doc/texinfo.tex (\s): Replace with... - (\slanted): This. - * doc/texinfo.txi: Updated. - - * makeinfo/cmds.c (command_table): Add @slanted, not @s. - (cm_s): Replace with... - (cm_slanted): This. - * makeinfo/cmds.h: Add cm_slanted, not cm_s.. - - * NEWS: Updated. - -2004-07-24 Karl Berry - - * info/echo-area.c (ea_possible_completions), - * info/session.c (forward_move_node_structure), - * info/infokey.c (compile): cast to intptr_t to avoid cast to - pointer from integer of different size. - From Havard Eidnes , 14 Jul 2004 20:38:59 +0200. - -2004-07-19 Alper Ersoy - - * makeinfo/makeinfo.c (main): with XML, instead of directly calling - handle_variable_internal for -D and -U command line flags, hold the - variable declarations until output document is started. - (convert_from_loaded_file): handle variables provided with -D and -U - flags here, just before entering the reader_loop. - (Otherwise, -D/-U with --xml cause a segfault.) - -2004-07-15 Werner Lemberg - - * doc/texinfo.tex (\s): New command to typeset text with a slanted - font. - * doc/texinfo.txi: Document @s. - - * makeinfo/cmds.c (command_table): Add @s. - (cm_s): New function. Currently the same as cm_i -- it probably - has to be adapted to Docbook and XML. - * makeinfo/cmds.h: Add prototype for cm_s. - - * NEWS: Document new command @s. - -2004-07-15 Werner Lemberg - - * doc/texinfo.tex (\TeX): Adjust \spacefactor to make it act like a - lowercase letter, not like a period. - -2004-07-12 Karl Berry - - * texinfo/texinfo.txi (Useful Highlighting): Include - cross-references to each of the commands. Suggestion from - Wolfgang Pausch, 12 Jul 2004 08:26:28 +0200. - - * texinfo/texinfo.txi (Invoking makeinfo), - * makeinfo/makeinfo.c: mention that --if-noFORMAT also processes - @ifnotFORMAT blocks. - Suggestion from Stepan. - -2004-07-11 Karl Berry - - * makeinfo/makeinfo.c (discard_until): leave input_text_offset at - the end of input_text if not found, not at one past the - end of input_text. (Had erroneously put that in the block - only if an error was given.) The result was a null byte - after macro expansions. Report from Werner, - 10 Jul 2004 15:36:40 +0200. - - * makeinfo/node.c (split_file): fwrite Local Variables trailer so - it actually gets into the output of the top-level info - file; don't just insert_string. - Report from: Werner LEMBERG, 11 Jul 2004 08:58:13 +0200. - -2004-07-10 Karl Berry - - * util/texi2pdf: new script. - * util/Makefile.am: install it. - * doc/texinfo.txi: document it. - -2004-07-05 Karl Berry - - * makeinfo/xref.c (cm_email, cm_uref, et al.): - * makeinfo/xml.c (xml_insert_indexentry, xml_insert_indexterm): - * makeinfo/sectioning.c (sectioning_underscore): - * makeinfo/makeinfo.c (cm_listoffloats): use %s, don't pass string to - execute_string. Report from Christian Schenk. - -2004-07-02 Karl Berry - - * makeinfo/makinfo.c (execute_string): don't worry about - mismatched multiline commands if executing_macro. - -2004-06-27 Karl Berry - - * doc/texinfo.tex: Various doc fixes. - (\dosubindsanitize): propagate the same penalty - >10000, don't just use \nobreak. - (\sectionheading): insert a final penalty of - 10001, not 10000. This causes \aboveenvbreak to - insert \parskip glue, cancelling the - \vskip-\parskip done here. Otherwise, when (e.g.) - @section is followed immediately by @example, the - example can be shrunk up above the section title. - -2004-06-14 Karl Berry - - * doc/texinfo.tex (\commondummies, \indexnofonts): dummy-up @comma. - Report from Arnold. - -2004-06-06 Karl Berry - - * makeinfo/index.c (index_add_arg): ensure all elements are always - initialized, including output_file, section, and section_name. - (cm_printindex): don't pass index->output_file to - add_html_block_elt_args if it is null. Also do - not pass spurious extra index_name argument. - - * makeinfo/makeinfo.c (add_char): don't call html_output_head if - only_macro_expansion (e.g., a macro call in the - Top menu). From: Yuri D'Elia , - 05 Jun 2004 21:11:00 +0200. - -2004-06-03 Karl Berry - - * info/session.c (info_menu_digit): use menu, rather than entry, to - avoid seg fault on "0" (the last item), - since menu has already been checked. - From: Malcolm Rowe , - 02 Jun 2004 21:32:37 +0100. - -2004-05-17 Karl Berry - - * util/gendocs.sh, gendocs_template: use package.format.tar.gz - consistently. Before, -, _, and . were all used. - -2004-05-16 Karl Berry - - * lib/Makefile.am (libtxi_a_SOURCES): include strcase.h. - From: "Gerrit P. Haase" , - 15 May 2004 21:50:52 +0200. - - * util/gendocs.sh: force HTML output name, otherwise Emacs fails - with its "@setfilename ../...". - -2004-05-04 Karl Berry - - * util/texi2dvi (TEX): don't use the value when it ends in - "latex"; TEX is also used by mpost. Report from - Yvon.Henel@wanadoo.fr. - -2004-04-29 Karl Berry - - * doc.texinfo.txi (Invoking makeinfo): mention --plaintext. - From Akim. - - * doc/texinfo.tex (\emptyusermacros): can use \asis. - (\identity): remove. - -2004-04-29 Stepan Kasal - - * doc/texinfo.tex (\commondummiesnofonts, \indexnofonts): In order - to correctly transform words like `Dvo\v{r}\'{a}k' to `Dvorak' - for index sorting, one has to define all accent control sequences - as @asis. (Current code would produce `Dvor{a}k'.) - -2004-04-29 Jan Nieuwenhuizen - - * makeinfo/makeinfo.c (remember_error): Try cm_bye not more than - twice. Fixes `Too many errors! Gave up.' looping. - -2004-04-26 Karl Berry - - * lib/system.h (STRCASEEQ, STRNCASEEQ): new #defines for - convenience. - * makeinfo/cmds.c (cm_strong): actually change the output to avoid a - spurious xref. Suggestion from Jan Nieuwenhuizen - , 26 Apr 2004 00:04:04 +0200, emacs-devel. - - * automake 1.8.4. - -2004-04-24 Karl Berry - - * doc/texinfo.tex (\emptyusermacros, \identity): new macros. - (\indexdummiesnofonts): call it. - This is to semi-support macro calls in the arg to @deffn. - Report from: Akim Demaille , 20 Apr 2004 17:48:28 +0200. - -2004-04-21 Karl Berry - - * configure.ac (gl_FUNC_MKSTEMP): rename from UTILS_FUNC_MKSTEMP, - per new gnulib code. - -2004-04-20 Karl Berry - - * makeinfo/tests/copying: force POSIX language setting. - -2004-04-19 Karl Berry - - * makeinfo/cmds.c (cm_code): use for commands other than - @code, so we get typewriter output; and add `...' - for @samp. - Report from: John Blevin , - 16 Apr 2004 11:40:01 -0400. - - * makeinfo/html.c (html_output_head) [CSS_FONT_ROMAN, - CSS_FONT_SMALL_CAPS]: prettify. - -2004-04-18 Karl Berry - - * doc/texinfo.tex (\Orb): define if undefined. - Report from Laurent Siebenmann. - - * util/dir-example: diff updates. - -2004-04-13 Karl Berry - - * doc/texinfo.tex: remove trailing blanks. suggestion from Jim. - -2004-04-12 Paul Eggert - - * doc/Makefile.am (info.1, infokey.1, install-info.1, - makeinfo.1, texi2dvi.1, texindex.1): Don't use $< in ordinary - rules; it's not portable. - * util/Makefile.am (texinfo.cat): Likewise. - -2004-04-12 Karl Berry - - * bootstrap: update from berlios. - -2004-04-11 Karl Berry - - * Version 4.7. - -2004-04-09 Karl Berry - - * makeinfo/makeinfo.c (execute_string): do not free the temporary copy - of input_filename until we're definitely done with - it. It is used in line_error, etc. - - * INSTALL: mention texinfo.tex install step. - - * util/Makefile.am (texinfo.cat): new name instead of just - `catalog'. rename files. - * util/Makefile.am (EXTRA_DIST): texinfo-cat.in now, not - catalog.in. - -2004-04-09 Alper Ersoy - - * makeinfo/insertion.c (begin_insertion): after @copying, do not - discard until a newline if we are looking at one. - (end_insertion): decrement input line number after @end copying. - -2004-04-08 Karl Berry - - * util/Makefile.am: doc fix, as automake.diff is no longer needed. - -2004-04-07 Karl Berry - - * pretest version 4.6.95. - - * doc/texinfo.tex (\dodonode): new macro to remove trailing comma. - (\donode): call it, after removing space-comma. - - * doc/texinfo.txi (indicateurl): new name for url. - (uref): url is now a synonym for uref. - * doc/texinfo.tex (\url, \indicateurl): implement. - * makeinfo/cmds.c (cm_indicate_url): rename from cm_url. - (command_table): make "url" a synonym for "uref". - * makeinfo/cmds.h (cm_indicate_url): declare it. - -2004-04-06 Karl Berry - - * makeinfo/sectioning.c (insert_and_underscore): use `...' quote - instead of "..." in error message. - * info/*.c: likewise. - -2004-04-07 Alper Ersoy - - * makeinfo/cmds.c (cm_colon): check if the character we are erasing - from the output belongs to an XML tag. - -2004-04-07 Alper Ersoy - - * makeinfo/insertion.c (cm_author): use author element in XML output - for attribution. - -2004-04-06 Alper Ersoy - - * makeinfo/makeinfo.c (convert_from_loaded_file): do not call - write_tag_table if the output filename is "-". - -2004-04-06 Alper Ersoy - - * makeinfo/insertion.c (end_insertion):
 blocks implicitly ends
-	the previous paragraph, so avoid 

after the end tag. - - * makeinfo/footnote.c (output_pending_notes): made Footnotes anchor - non translatable, and changed it to "texinfo-footnotes-in-document" to - lessen the chance of getting in the way of another Footnotes anchor. - -2004-04-04 Jim Meyering - - * info/nodes.c (info_load_file_internal): Don't free lowered_name - until *after* using fullpath, since they may be one and the same. - -2004-04-03 Karl Berry - - * doc/texinfo.txi (Image Syntax): had missing @'s in cookies. - - * makeinfo/cmds.c (cm_w): insert a comment at the end of @w, so that - @w{$}Log$ doesn't end up as Log. - Report from rms. - * doc/texinfo.txi (GNU Sample Texts, w): mention this. - -2004-04-02 Karl Berry - - * configure.ac: pretest version 4.6.94. - - * doc/texinfo.txi (Node Line Requirements): discuss whitespace. - - * doc/texinfo.tex (\node, \donode): remove trailing - spaces (before the first comma) in the @node line. - -2004-03-29 Karl Berry - - * util/install-info.c (menu_line_lessp, menu_line_equal): move to - before all uses. - -2004-03-27 Karl Berry - - * info/signals.c (initialize_info_signal_handler) [SA_NOCLDSTOP]: - use instead of HAVE_SIGACTION, since Solaris 2.7+ - with Sun CC don't have sa_handler, sa_flags, sa_mask. - - * info/session.c (search_string_index): remove unused variable. - * info/terminal.c (term_mo): remove unused variable. - * info/display.c (display_clear_display): remove unused variable - display_line. - * util/install-info.c (infilelen_sans_info): remove unused - variable. - - * doc/texinfo.txi: mistakenly had * name: node: in menu items instead - of * name: node. - - * util/install-info.c (menu_item_equal): must declare ret at beginning - of function. From Werner. - -2004-03-27 Jim Meyering - - * info/info-utils.c (info_parse_node): Don't read beyond end - of buffer when looking for ``(line ...)'' in a menu item. - -2004-03-27 Andreas Schwab - - * util/install-info.c (menu_item_equal): Don't scan past - term_char. - -2004-03-26 Karl Berry - - * pretest version 4.6.93. - - * util/install-info.c (menu_item_equal): compare basenames, - so lilypond/ subdir will match. Bug report from Werner, - 21 Mar 2004 08:31:10 +0100. - - * configure.ac (AC_CHECK_DECLS): skip strncasecmp again. - * lib/system.h (strcase.h): change conditional to - !HAVE_STRNCASECMP || !HAVE_STRCASECMP. Extra - !HAVE_DECL seems superfluous. - - * lib/system.h: include last, following Autoconf's - ac_includes_default. - -2004-03-25 Karl Berry - - All these changes are because strncasecmp is only declared in - on IBM AIX 4.2. (Report from Nelson Beebe.) - - * configure.ac (AC_CHECK_DECLS): add memchr; no need to check for - strcasecmp.(gl_STRCASE): call this ... - (AC_REPLACE_FUNCS): ... replacing checks for - strcasecmp and strncasecmp here. - * lib/system.h (memchr) [!HAVE_DECL_MEMCHR]: add conditional - declaration. - (strcase.h) [!HAVE_DECL_STRNCASE]: add conditional include. - (strings.h) [HAVE_STRINGS_H]: include if - available, even if is also available. - * info/session.c (strncasecmp) [M_XENIX]: remove this conditional - declaration, since we haven't been testing for M_XENIX in many - years. - * m4/Makefile.am (EXTRA_DIST): add strcase.m4. - * util/srclist.txt (lib/strcase.h, m4/strcase.m4): add, updating - from gnulib. - -2004-03-24 Karl Berry - - * makeinfo/index.c: - * makeinfo/float.c: avoid use of snprintf, which is not available on - all platforms. Bug report by Nelson and Vin Shelton (22mar03). - - * automake 1.8.3. - -2004-03-23 Karl Berry - - * doc/info-stnd.texi (Searching Commands): typo from jesper. - -2004-03-21 Karl Berry - - * doc/texinfo.tex (\indexnofonts): \definedummyletter needs to - define the control letters to be empty, without - taking any argument; most control letters, such as - @:, don't take arguments, and it won't hurt to - just always ignore them for index sorting. - Report from Arnold. - - * info/doc.h (InfoFunction): cast NULL to VFunction *, to - prevent pgcc from complaining. From Nelson. - -2004-03-20 Karl Berry - - * doc/texinfo.txi (Structuring Command Types): be even more explicit - about @unnumbered vs. @heading. - - * makeinfo/html.c (insert_html_tag_with_attributes): use the same - parameter names (start_or_end and tag) in both stdc and !stdc - cases. Report from Nelson. - - * info/m-x.c (info_execute_command): don't dereference - InfoFunction(command) as a function call if it's NULL. Report - from Nelson, pgcc-5.1-3 complains. - -2004-03-19 Karl Berry - - * info/signals.h [!SA_NOCLDSTOP]: borrow test from coreutils' - sort.c, to avoid using sigset_t when it's not - defined (apparently). - - * makeinfo/html.c (escape_string): escape ", too, for @image's - alttext among others. - * makeinfo/html.h: doc fix. - * doc/texinfo.txi (Image Syntax): making empty alt text, do - escaping. - - * util/dir-example: reorder. - - * doc/texinfo.txi (title subtitle author): using them outside - @titlepage is an error, they're not actually "ignored". - * makeinfo/insertion.c (cm_author): one mdash suffices. - -2004-03-19 Jim Meyering - - * makeinfo/makeinfo.c (add_char): Use memmove, rather than strncpy, - since source and destination strings overlap. - - * makeinfo/float.c (add_new_float): Avoid buffer overrun when - appending `.' to a chapter number. - -2004-03-18 Karl Berry - - * pretest version 4.6.92. - -2004-03-18 Andreas Schwab - - * lib/xmalloc.c: Include "system.h" instead of declaring malloc - and realloc ourselves. - (xmalloc): Change type of size parameter to size_t. - (xrealloc): Likewise. - - * lib/system.h (xmalloc, xrealloc): Change type of size parameter - to size_t. - -2004-03-18 Karl Berry - - * makeinfo/xref.c (cm_xref): ignore any directory part or extension - in html case, warn if nothing left. - * doc/texinfo.txi (HTML Xref Link Basics): ignore directory part in - @xref cmd. - - * lib/getopt.h (__GNUC_PREREQ) [! __GNUC_PREREQ]: change - conditional to the actual symbol, instead of just - __GNUC, else --disable-nls compilation fails under - SunOS 5.8 with gcc 3.2.3 (at least). - Report from Vin Shelton, 15 Mar 2004 08:51:14 -0500. - - * util/texindex.c: add some const declarations. - * util/install-info.c: add some const declarations. - (by no means all) - - * doc/texinfo.txi (HTML Xref *): new nodes. - -2004-03-15 Karl Berry - - * makeinfo/xref.c (cm_xref): need ../ in reference to foreign html - manual, if splitting. - -2004-03-14 Jim Meyering - - * makeinfo/index.c (insert_index_output_line_no): Ensure that `i' - is larger than zero before (not after) using `i-1' as an array index. - - * makeinfo/cmds.c (cm_acronym): Don't write description[-1] - when description is the empty string. - - * makeinfo/makeinfo.c (insert): Avoid buffer under-run when - output_paragraph_offset is zero. - (canon_white): Rewrite not to use strcpy (was used with - overlapping source and destination) - -2004-03-14 Andreas Schwab - - * info/session.c: Fix buffer overflows. - -2004-03-14 Alper Ersoy - - * makeinfo/xref.c (cm_xref): print the fifth arg (or fourth if it's - not available), in parens for the visible text of the HTML link. - -2004-03-14 Alper Ersoy - - * makeinfo/tests/node-expand.txi: - * makeinfo/tests/node-whitespace.txi: added titles to @top. - -2004-03-14 Alper Ersoy - - * makeinfo/sectioning.c (sectioning_underscore): check if title is - pointing to NULL before calling strlen (happens when there is no - @settitle before @top.) - -2004-03-14 Alper Ersoy - - * makeinfo/sectioning.c (sectioning_underscore): warn if both @top and - @settitle are empty. - (sectioning_html, insert_and_underscore): use @settitle argument if - @top is empty. - (insert_and_underscore): removed with_char argument from function - declaration. - - * makeinfo/sectioning.h: insert_and_underscore proto update. - -2004-03-13 Karl Berry - - * pretest version 4.6.91. - - * info/*.[ch]: copyright dates, and final ugly casts. - - * doc/texinfo.txi (Generating HTML): make its own chapter, since we - have lots to say about xrefs now. - - * doc/texinfo.txi (Refilling Paragraphs): @ignore this, just - describe @refill better in the summary. - (Obtaining TeX): make a section of Hardcopy, - instead of its own appendix. - (Command Syntax): subnode of @@-Command List. - This reduction in the number of appendices will hopefully make the - manual less overwhelming. - -2004-03-13 Alper Ersoy - - * info/dir.c: - * info/display.c: - * info/display.h: - * info/doc.h: - * info/dribble.c: - * info/dribble.h: - * info/echo-area.c: - * info/echo-area.h: - * info/filesys.c: - * info/filesys.h: - * info/footnotes.c: - * info/footnotes.h: - * info/gc.c: - * info/gc.h: - * info/indices.c: - * info/indices.h: - * info/info-utils.c: - * info/info-utils.h: - * info/info.c: - * info/info.h: - * info/infodoc.c: - * info/infokey.c: - * info/infomap.c: - * info/infomap.h: - * info/m-x.c: - * info/makedoc.c: - * info/man.c: - * info/man.h: - * info/nodemenu.c: - * info/nodes.c: - * info/nodes.h: - * info/search.c: - * info/search.h: - * info/session.c: - * info/session.h: - * info/signals.c: - * info/terminal.c: - * info/terminal.h: - * info/tilde.c: - * info/tilde.h: - * info/variables.c: - * info/variables.h: - * info/window.c: - * info/window.h: - * lib/system.h: protoized. - -2004-03-12 Karl Berry - - * makeinfo/sectioning.c (sectioning_underscore): don't segfault when - generating xml if @top arg was empty. Report from Pat. - -2004-03-11 Karl Berry - - * doc/texinfo.tex (\pdfoutput): check also for \relax and 0, not - just \undefined, in case pdftex is being run in dvi mode. - Reported by Thomas Esser. - - * lib/Makefile.am (libtxi_a_SOURCES): add getopt_int.h. - -2004-03-11 Alper Ersoy - - * makeinfo/html.c (add_escaped_anchor_name): removed unnecessary - ampersand check. - (fix_filename): removed size calculation and memory reallocation for - filename as it is already PATH_MAX bytes. Added a check so we don't - cross PATH_MAX boundary while expanding not-isalnum to hex values. - - * makeinfo/toc.c (toc_add_entry): generate links following html cross - refs proposal from Patrice Dumas. - -2004-03-11 Alper Ersoy - - * makeinfo/makeinfo.h: changed URL_SAFE_CHAR to isalnum. - - * makeinfo/html.c (add_escaped_anchor_name, add_anchor_name) - (fix_filename): generate links following html cross refs proposal - from Patrice Dumas. - - * makeinfo/xref.c (cm_xref): tweaked references to external manuals, - to better follow html cross refs proposal. - -2004-03-08 Karl Berry - - * pretest version 4.6.90. - - * makeinfo/Makefile.am (makeinfo_SOURCES): include multi.h. - * makeinfo/cmds.c (cm_verb): avoid spurious warning. - -2004-03-06 Alper Ersoy - - * makeinfo/lang.c (cm_special_char): call add_encoded_char for Info - output too. - -2004-03-01 Alper Ersoy - - * makeinfo/cmds.c (cm_minus): use minus entity for HTML too. - -2004-03-01 Alper Ersoy - - * makeinfo/makeinfo.c (reader_loop): disable multiple dashes and - quotes entity substitution for HTML and XML, if escape_html is not - true. - -2004-03-01 Alper Ersoy - - * util/texinfo.dtd: added math element and updated footnote. - -2004-03-01 Alper Ersoy - - * makeinfo/xml.c (xml_insert_footnote): start if not already - started. - -2004-03-01 Alper Ersoy - - * makeinfo/index.c (index_add_arg): make entry node name 'Footnotes' - if the output format is non-split HTML, and we are handling footnotes. - - * makeinfo/footnote.c (output_pending_notes): added anchor at the - start of footnotes block for the non-split HTML output, so @printindex - can refer to that point as the nodename. - -2004-03-01 Alper Ersoy - - * makeinfo/defun.c (defun_internal): use var element for HTML, instead - of i. - -2004-03-01 Alper Ersoy - - * makeinfo/makeinfo.c (cm_image): reset filling_enable to its previous - state after getting the cookie done. - -2004-03-01 Alper Ersoy - - * makeinfo/makeinfo.c (cm_image): insert magic cookie only if there's - a bitmap file (if all we have is a text file, skip the cookie.) - -2004-02-29 Alper Ersoy - - * makeinfo/node.c (cm_node): moved node order handling to ... - (remember_node): here. - -2004-02-29 Alper Ersoy - - * makeinfo/multi.c (draw_horizontal_separator): insert a space before - the newline so it looks different than @subsection's. - -2004-02-29 Alper Ersoy - - * makeinfo/makeinfo.c (insert): do not strip trailing whitespace in - multitables. - -2004-02-29 Alper Ersoy - - * makeinfo/makeinfo.c (execute_string): removed XML tag balance - checks. - -2004-02-28 Alper Ersoy - - * makeinfo/insertion.c (begin_insertion, end_insertion): for rawxml, - rawhtml and rawdocbook blocks, change the state of escaping depending - on raw_output_block in order to avoid problems when these blocks are - used within a @rmacro. - -2004-02-28 Alper Ersoy - - * makeinfo/insertion.c (end_insertion): for quotation use - default_indentation_increment. - -2004-02-28 Alper Ersoy - - * makeinfo/makeinfo.c (info_trailer): call current_document_encoding - here too. - -2004-02-28 Alper Ersoy - - * makeinfo/lang.h: new variable unknown_encoding. - - * makeinfo/lang.c (cm_documentencoding): save and use the encoding - argument even if it's unknown. - - * makeingo/html.c (html_output_head): call current_document_encoding - instead of checking document_encoding_code. - -2004-02-28 Alper Ersoy - - * makeinfo/float.c (cm_listoffloats): simplified entry generation. - -2004-02-28 Alper Ersoy - - * makeinfo/files.h: new members node_order and index_order in - DELAYED_WRITE struct. - - * makeinfo/files.c (register_delayed_write): save current node and - index order. - (handle_delayed_writes): update tag_table positions and index line - numbers by comparing orders, not line numbers they are defined. - - * makeinfo/index.c: made index_counter not static and ... - * makeinfo/index.h: extern. - - * makeinfo/node.h: new member order in TAG_ENTRY struct. - - * makeinfo/node.c (cm_node): keep the order of the node entry. - -2004-02-27 Karl Berry - - * util/gendocs.sh: generate ASCII in static file, not stdout, so - toc/index can get written. - - * util/gendocs_template: XHTML version from - http://www.gnu.org/boilerplate.html, via John Darrington - , 9 Jan 2004 07:24:27 +0800. - -2004-02-27 Jan Nieuwenhuizen - - * doc/texinfo.txi (Image Syntax): Update. - - * makeinfo/makeinfo.c (cm_image): Only insert a period between the - image's NAME and EXTENSION as a second guess, to retain backward - compatibility. - -2004-02-27 Alper Ersoy - - * makeinfo/xml.c (xml_insert_element_with_attribute): if we are - closing either TABLEITEM, ITEM or DEFINITIONITEM during string - execution, update relevant state. - -2004-02-27 Alper Ersoy - - * makeinfo/makeinfo.c (execute_string): moved state updates below - insertion and element stack checks, so any code executed in those - checks will be aware of executing_string. - -2004-02-27 Alper Ersoy - - * makeinfo/xml.c (xml_insert_docbook_image): for Docbook, if paragraph - is open, use inlinemediaobject instead of mediaobject in an - informalfigure. - (xml_insert_element_with_attribute): indent after informalfigure. - -2004-02-27 Alper Ersoy - - * makeinfo/xml.c: - * makeinfo/xml.h: new element INLINEIMAGE. - - * makeinfo/makeinfo.c (cm_image): for XML, use INLINEIMAGE or IMAGE - depending on paragraph state. - -2004-02-27 Alper Ersoy - - * makeinfo/makeinfo.c (cm_image): for Info, enclose text image in - brackets if @image is used inline (ie. paragraph is open). - -2004-02-27 Alper Ersoy - - * makeinfo/cmds.c (cm_noindent_cmd, cm_indent): start paragraph for - Info too. - -2004-02-27 Alper Ersoy - - * makeinfo/makeinfo.c (cm_image): for HTML, if paragraph is not open, - enclose image in a
block. - -2004-02-27 Alper Ersoy - - * makeinfo/cmds.c (cm_noindent_cmd, cm_indent): insert

for HTML. - -2004-02-26 Alper Ersoy - - * util/texinfo.dtd: moved verbatim to █. - -2004-02-25 Stepan Kasal - - A first step towards general cleanup of sectioning macros: - * doc/texinfo.tex (\genhead): A generalized version of ... - (\numhead, \apphead, unnmhead): ... these, which uses ... - (\chapheadtype, \unmlevel, \maxseclevel): ... these "variables". - -2004-02-25 Karl Berry - - * makeinfo/index.c (cm_printindex): insert cookie in Info output - for benefit of Info readers. - -2004-02-26 Alper Ersoy - - * makeinfo/insertion.c (end_insertion): removed obsolete Docbook - indentation work-around. - -2004-02-25 Alper Ersoy - - * makeinfo/insertion.c (cm_author): new function. - (cm_titlepage_cmds): removed @author parts. - - * makeinfo/cmds.c: made @author call cm_author. - -2004-02-24 Karl Berry - - * doc/texinfo.txi: avoid duplicate index entries within the same - node (from Alper): syncodeindex, lines 9627 and 9633 TEXINPUTS, - lines 14157 and 14202 texinfo-format-buffer 15131 and 15159 - texinfo-format-region 15130 and 15149 - -2004-02-24 Alper Ersoy - - * makeinfo/makeinfo.h: new variable example_indentation_increment. - - * makeinfo/cmds.c (set_default_indentation_increment): renamed to - set_example_indentation_increment. - (cm_exampleindent): call set_example_indentation_increment. - - * makeinfo/insertion.c (begin_insertion, end_insertion): @example, - @display and the like now rely on example_indentation_increment. - -2004-02-24 Alper Ersoy - - * makeinfo/insertion.c (begin_insertion, end_insertion): @float should - not play with indentation. - -2004-02-24 Alper Ersoy - - * makeinfo/float.c (cm_listoffloats): check if we are crossing the - caption boundaries looking for a space to break at. - -2004-02-24 Karl Berry - - * makeinfo/makeinfo.c: TEXINFO_OUTPUT -> TEXINFO_OUTPUT_FORMAT, - after discussion with tar maintainer. - -2004-02-20 Stepan Kasal - - * doc/texinfo.tex (\infochapter, \infosection, etc.): these stubs - of sectioning commands nuked. - -2004-02-24 Stepan Kasal - - * doc/texinfo.tex (\centerchap): Fixed to work again, - don't open group. - (\centerparameters): New macro. - (\centerchfplain): Nuked. - - The following continues with prosecution of @setchapterstyle{open}: - * doc/texinfo.tex (\chfplain): renamed to \chapmacro. - (\CHAPFplain): Nuked. - (\setchapterstyle): Moved next to its deprecated friends. - -2004-02-24 Karl Berry - - * doc/texinfo.tex (\dofloat): start a paragraph. - -2004-02-24 Alper Ersoy - - * makeinfo/insertion.c (cm_caption): check if the innermost - environment is @float. - -2004-02-24 Alper Ersoy - - * info/session.c (info_menu_digit): if the menu entry has a line - number, go to that line. - -2004-02-24 Alper Ersoy - - * info/info.c (main): make sure dir file is not listed for option - --where. - -2004-02-24 Alper Ersoy - - * makeinfo/xml.c (xml_insert_element_with_attribute, xml_add_char) - (xml_begin_table, xml_end_table, xml_begin_table_item) - (xml_continue_table_item): separated ITEM and TABLEITEM states to - handle @table environments better. - -2004-02-24 Alper Ersoy - - * util/texinfo.dtd: added float and friends, updated tableitem and - Inline.reference. - -2004-02-23 Karl Berry - - * doc/texinfo.txi (Structuring Command Types): slightly more info - about headings. Fix other references, too. - - * Makefile.am (EXTRA_DIST): explicitly list every file in djgpp, - so that the CVS directory is not included in the dist.tar.gz. - -2004-02-23 Arnold D. Robbins - - * makeinfo/cmds.c (cm_code): For @samp, using single quotes instead of - double quotes, to match TeX output more closely. - -2004-02-23 Alper Ersoy - - * makeinfo/index.h: new output_file and entry_number members in - index_elt struct. - - * makeinfo/index.c (index_add_arg, cm_printindex): rewrote hyperlink - generation for HTML to avoid duplicate anchors, and to work with - splitting enabled. - -2004-02-20 Alper Ersoy - - * makeinfo/float.c (cm_listoffloats): create HTML hyperlinks with - add_word instead of using @ref to avoid problems with commas in - captions. - -2004-02-20 Alper Ersoy - - * makeinfo/node.c (cm_node): remove whitespace before the node - separator sequence. - -2004-02-20 Alper Ersoy - - * makeinfo/sectioning.c (handle_enum_increment): do not increment - counters for ENUM_SECT_NO heading commands (ie. @unnumbered, - @majorheading, etc.) - -2004-02-20 Alper Ersoy - - * makeinfo/multi.c (multitable_item): unset hsep if item command is - not @headitem. - -2004-02-19 Karl Berry - - * doc/texinfo.tex: More hyphenation exceptions. - (\author, \quotation): implement @author inside - @quotation, for attribution purposes. - -2004-02-19 Alper Ersoy - - * makeinfo/cmds.c (cm_exampleindent): fixed paragraph handling after - @exampleindent lines. - -2004-02-19 Alper Ersoy - - * makeinfo/index.c (index_add_arg): create an anchor where @index is - used in HTML documents. - (cm_printindex): make index text an hyperlink to the created anchor. - -2004-02-19 Alper Ersoy - - * makeinfo/insertion.c (begin_insertion): skip empty lines following - @table, @ftable, @vtable and @itemize lines. - -2004-02-18 Karl Berry - - * lib/substring.c, - * lib/xexit.c, - * lib/xmalloc.c, - * lib/system.h: ANSI-fy. (Other lib files come from gnulib.) - - * doc/texinfo.txi (Definition Commands): describe the argument/@var - situation more accurately. - - * doc/texinfo.txi (Definition Commands): explicitly document the - implicit index entry creation in all cases. - - * doc/texinfo.txi (Printing Indices & Menus, Indices, Predefined - Indices): remove redundancies, make different - purposes clear, etc. - -2004-02-18 Alper Ersoy - - * makeinfo/xml.h: - * makeinfo/xml.c (xml_get_assoc_for_id, xml_associate_title_with_id): - removed these functions. - - * makeinfo/xref.c (cm_xref): do not call xml_get_assoc_for_id. - - * makeinfo/sectioning.c (sectioning_underscore): added xreflabel - attribute to @unnumbered for Docbook. - -2004-02-18 Alper Ersoy - - * makeinfo/xref.c (cm_xref): for Docbook, use lowercase ``see'' when - printing index. - -2004-02-18 Alper Ersoy - - * makeinfo/xml.c (xml_insert_indexentry): removed ``see'' from index - entries as cm_xref takes care of it. - -2004-02-17 Karl Berry - - * doc/info.texi (Help-Int): mention the new line number feature. - * doc/texinfo.txi (Indices): plural correction. - * doc/info-stnd.texi (Invoking Info): matche typo. - (Searching Commands): grammar. - * info/session.c (info_menu_or_ref_item): need to subtract 1 from - the actual line number to get to the right place, - don't really know why. - - * makeinfo/makeinfo.c, info/info.c, util/texindex.c, - utils/install-info.c, util/texi2dvi: update copyright year to - 2004, and do not mark copyright line for translation, since - international law says to always use the English word "copyright". - -2004-02-17 Alper Ersoy - - * makeinfo/insertion.c (end_insertion): use add_html_block_elt instead - of add_word for

ending @example and the like. - * makeinfo/float.c (cm_listoffloats): use add_html_block_elt for
  • . - -2004-02-17 Alper Ersoy - - * makeinfo/insertion.c (begin_insertion): do not expand @copying for - HTML and Info too. - (cm_insert_copying): expand copying_text for all formats here. - - * makeinfo/html.c (html_output_head): use text_expansion for copying - text. - -2004-02-17 Karl Berry - - * doc/texinfo.txi (float): mention @multitable and @image - as typical contents. From Arnold. - -2004-02-17 Alper Ersoy - - * makeinfo/xml.c (xml_insert_element_with_attribute): removed check - to see if current element contains para before calling xml_start_para, - as that check is performed in xml_start_para too. - -2004-02-17 Alper Ersoy - - * makeinfo/insertion.c (end_insertion): indent float caption. - -2004-02-17 Alper Ersoy - - * makeinfo/insertion.c (begin_insertion): for XML and Docbook, do not - expand @copying text. Instead of calling @anchor, use for XML. - (cm_copying): removed ugly copying_text manipulation for Docbook. - Warn if there is no @copying before @insertcopying. - - * makeinfo/xml.c: made floats contain para. - (xml_start_para): check if current element can contain para. - (xml_add_char): removed @copying checks. - -2004-02-17 Alper Ersoy - - * makeinfo/insertion.c (end_insertion): if the output format is XML, - do not call close_insertion_paragraph after @end menu. - -2004-02-17 Alper Ersoy - - * makeinfo/xml.c (xml_insert_element_with_attribute): indentation - fixes for @multitable. - -2004-02-17 Alper Ersoy - - * makeinfo/multi.c (do_multitable): remove trailing newline when the - output format is Docbook or XML, as output_paragraph becomes unusable - later for xml_indent during select_output_environment. - -2004-02-16 Alper Ersoy - - * makeinfo/cmds.c (cm_bye): do not call flush_output as text appended - by convert_from_loaded_file may need to play with output_paragraph. - -2004-02-16 Alper Ersoy - - * makeinfo/xml.c (xml_end_document): insert newline after - only if indentation is disabled (otherwise xml_indent takes care of - the newline.) - (xml_insert_indexentry): disable warnings when executing implicit - @xref commands for Docbook, otherwise makeinfo will warn about - missing punctuation. - -2004-02-16 Alper Ersoy - - * makeinfo/insertion.c (begin_insertion): eat one newline after - @xml/@docbook blocks for proper indentation. - -2004-02-16 Alper Ersoy - - * makeinfo/cmds.c (cm_center): fixed line wrapping after the @center - command. - -2004-02-15 Alper Ersoy - - * makeinfo/xml.c (xml_begin_document): disabled warnings around the - implicit register_delayed_write("@documentencoding") call. - -2004-02-15 Alper Ersoy - - * makeinfo/insertion.c (begin_insertion, end_insertion): when handling - @xml, @html and @docbook blocks, do not touch para elements, and keep - whitespace as-is. - -2004-02-15 Alper Ersoy - - * makeinfo/xml.h: made xml_keep_space extern. - -2004-02-15 Alper Ersoy - - * makeinfo/cmds.c (cm_noindent_cmd, cm_indent): implicitly start - para element for Docbook and XML. - -2004-02-15 Karl Berry - - * doc/texinfo.tex (\hyphenation): add more hyphenation exceptions, - gleaned from the log in TUGboat. - * doc/info-stnd.texi: document new option --where. - * info/info.c (main): in print_where_p case, ensure we don't try - to print NULL. - -2004-02-14 Karl Berry - - * doc/texinfo.tex (\addtokens): had two identical definitions, - remove one. - (\maketoks): no space token after |ENDTOKS|, - although I guess it hasn't mattered. - (\entry): make clear what is the argument to - \pdfgettoks and what is output. - (\appendtomacro): use our own token registers, - for safety. - (\listoffloatsdoentry): fully expand the page - number, and don't expand the lof text. - -2004-02-14 Alper Ersoy - - * makeinfo/cmds.c (cm_strong): - * makeinfo/xml.c (xml_begin_index): cast output_paragraph to char, to - avoid warnings with -pedantic. - -2004-02-13 Alper Ersoy - - * makeinfo/cmds.c: - * makeinfo/cmds.h: - * makeinfo/defun.c: - * makeinfo/defun.h: - * makeinfo/files.c: - * makeinfo/files.h: - * makeinfo/float.c: - * makeinfo/float.h: - * makeinfo/footnote.c: - * makeinfo/footnote.h: - * makeinfo/html.c: - * makeinfo/html.h: - * makeinfo/index.c: - * makeinfo/index.h: - * makeinfo/insertion.c: - * makeinfo/insertion.h: - * makeinfo/lang.c: - * makeinfo/lang.h: - * makeinfo/macro.c: - * makeinfo/macro.h: - * makeinfo/makeinfo.c: - * makeinfo/makeinfo.h: - * makeinfo/multi.c: - * makeinfo/node.c: - * makeinfo/node.h: - * makeinfo/sectioning.c: - * makeinfo/sectioning.h: - * makeinfo/toc.c: - * makeinfo/toc.h: - * makeinfo/xml.c: - * makeinfo/xml.h: - * makeinfo/xref.c: - * makeinfo/xref.h: protoized functions. - -2004-02-13 Alper Ersoy - - * makeinfo/multi.h: new file. - -2004-02-13 Karl Berry - - * doc/texinfo.tex (\caption): make \long. - * doc/texinfo.txi (Nodes): mention that changing node names is bad. - (caption shortcaption, listoffloats): write these, finishing the - first cut at @float documentation. - -2004-02-12 Alper Ersoy - - * makeinfo/cmds.c (cm_verb): end @verb only if delimiter is followed - by a closing brace. - -2004-02-12 Alper Ersoy - - * makeinfo/lang.c (cm_accent_generic): warn if accented character is - whitespace. - -2004-02-12 Alper Ersoy - - * makeinfo/insertionc. (end_insertion): decrement current_indent - only if the output format is Info. - -2004-02-12 Alper Ersoy - - * makeinfo/insertion.c (end_insertion): adjusted caption styles for - label and type conditions. - (begin_insertion, end_insertion): indent first paragraphs inside - @float, even if first paragraph in a chapter. Increment/decrement - current_indent. - -2004-02-12 Alper Ersoy - - * makeinfo/tests/defxcond: look for `--' instead of `-'. - -2004-02-12 Karl Berry - - * makeinfo/float.c (cm_listoffloats): change warning wording. - -2004-02-11 Karl Berry - - * doc/texinfo.tex (\dofloat): initialize caption macros here, not - globally. - (\Efloat): rewrite for more consistent caption - line, matching documentation. - (\appendtomacro): new macro. - (\currentparindent): this \newdimen was not used; removed. - * doc/texinfo.txi (float): continue documenting. - - * makeinfo/files.c (register_delayed_write): change wording of msgs. - -2004-02-10 Karl Berry - - * makeinfo/defun.c: --- (which gets reduced to --) - instead of -- (which gets reduced to -). - Report from Akim Demaille , 09 Feb 2004 18:06:29 +0100. - -2004-02-09 Karl Berry - - * doc/texinfo.tex (\pickupwholefraction): allow the fraction to be - an integer without a decimal point, like `1'. Report from: Dumas - Patrice , 9 Feb 2004 16:46:30 +0100. - * makeinfo/multi.c (setup_multitable_parameters): compute width - and pass it, for clarity. - -2004-02-07 Alper Ersoy - - * makeinfo/insertion.c (cm_insert_copying): insert double newlines - instead of one in non XML outputs. - -2004-02-07 Alper Ersoy - - * makeinfo/cmds.c (cm_code): do not decrement in_fixed_width_font as - it gets decremented elsewhere. - -2004-02-07 Alper Ersoy - - * makeinfo/makeinfo.c (next_nonwhitespace_character): also check - global input_text since filestack does not contain it. - -2004-02-07 Alper Ersoy - - * makeinfo/makeinfo.c (next_nonwhitespace_character): go through the - whole filestack looking for the next character. - -2004-02-06 Karl Berry - - * doc/texinfo.tex (\indexnofonts): define \bullet .. \result, so - they can be used in @?index commands. - Report from: Akim Demaille , 06 Feb 2004 13:34:15 +0100. - -2004-02-05 Karl Berry - - * makeinfo/xref.c (add_xref_punctuation): if we insert anything, - make it a period. - (cm_xref): include command name in error message. - * doc/texinfo.txi (ref): mention generating a period, if needed. - Too many complaints when we made a warning for @ref not followed - by period or comma. - -2004-02-05 Alper Ersoy - - * info/info-utils.c (info_parse_node): look for ``(line '' instead of - skipping any non-digit characters. - -2004-02-05 Alper Ersoy - - * makeinfo/index.c (insert_index_output_line_no): made ``(line NNN)'' not - translatable for Info output. - -2004-02-03 Alper Ersoy - - * makeinfo/makeinfo.c (flush_output): increment node_line_number too. - - * makeinfo/makeinfo.h: new variable node_line_number to hold the last - output line number the current node. - - * makeinfo/nodes.c (cm_node): reset node_line_number just before the - node start cookie. - - * makeinfo/files.h: new node member in DELAYED_WRITE struct. - * makeinfo/files.c (register_delayed_write): save current node name if - there's one. - (handle_delayed_writes): adjust line numbers in indices only if the - output is plaintext, or the index entry appears in the changed node. - - * makeinfo/index.c (index_add_arg, cm_printindex): use - node_line_number instead of output_line_number if the output is an - Info file. - -2004-02-03 Alper Ersoy - - * info/info-utils.h: new line_number member in REFERENCE struct. - - * info/info-utils.c (info_parse_node): parse (line ...) strings - from menu items. - (info_references_internal): save parsed line number in the entry. - - * info/session.c (info_menu_of_ref_item): if selected entry has a line - number associated with it, jump to that line after updating window. - -2004-02-02 Alper Ersoy - - * makeinfo/xml.c (add_xref_punctuation): new function that inserts - necessary punctuation after @ref and @pxref commands. - (cm_xref): call add_xref_punctuation when multiple parameters are - given, make use of next_nonwhitespace_character function in the END - case. - (cm_ref): do not call cm_xref in the END case. - -2004-02-02 Alper Ersoy - - * makeinfo/makeinfo.c (next_nonwhitespace_character): new function. - -2004-02-02 Alper Ersoy - - * makeinfo/cmds.c (cm_code): call xml_start_para instead of tweaking - in_fixed_width_font, and use entities rather than quotes. - -2004-02-02 Arnold D. Robbins - - * makeinfo/cmds.c (cm_TeX, cm_LaTeX): Add docbook support. - (cm_code): Add opening and closing single quotes for @samp in the - Docbook output. - * makeinfo/xml.c (xml_begin_document): Add `tex' and `latex' entities. - * makeinfo/xref.c (cm_xref): Add `See' and `see' strings for docbook - and xml. - -2004-01-31 Alper Ersoy - - * makeinfo/makeinfo.c (main): fixed ``--option: makeinfo'' messages. - -2004-01-31 Alper Ersoy - - * makeinfo/cmds.c (cm_TeX, cm_LaTeX): really ignore the arguments as - the warning suggests. - -2004-01-31 Alper Ersoy - - * makeinfo/cmds.c (cm_TeX, cm_LaTeX): warn if there are any arguments. - -2004-01-31 Alper Ersoy - - * makeinfo/files.c (pop_path_from_include_path): do not mock with - include_files_path address directly, as it confuses realloc. - -2004-01-31 Alper Ersoy - - * makeinfo/makeinfo.c (main, usage): new --output-indent option. - -2004-01-31 Alper Ersoy - - * makeinfo/xml.c (xml_add_char): break long lines in paragraphs - when the output format is Docbook. - -2004-01-31 Alper Ersoy - - * makeinfo/files.c (prepend_to_include_path, append_to_include_path) - (pop_path_from_include_path): new functions to manipulate - include_files_path. - - * makeinfo/makeinfo.c (convert_from_file): prepend the loaded file's - path to include_files_path in order to make relative include files to - be found, then remove afterwards. - (main): make use of new functions for -I and -P options. - -2004-01-30 Alper Ersoy - - * util/texinfo.dtd: added exdent element. - -2004-01-29 Alper Ersoy - - * makeinfo/makeinfo.c (convert_from_loaded_file): call - xml_begin_document after opening the output stream for writing. - - * makeinfo/files.c (register_delayed_write): use delayed_command - instead of command in messages as it may differ from the actual - command name. Check the usability of current_output_filename. - -2004-01-28 Karl Berry - - * doc/texinfo.txi (HTML Splitting): describe when two nodes are - written to one output file. - - * doc/texinfo.tex (\TeX): \edef using original \TeX definition. - -2004-01-28 Alper Ersoy - - * makeinfo/defun.c (process_defun_args, defun_internal): - * makeinfo/insertion.c (begin_insertion, end_insertion): execute XML - only blocks for Docbook also. - - * makeinfo/xml.c: added Docbook elements for definition commands. - (xml_begin_def_term): for Docbook, generate an Info-like @defun line. - (xml_insert_element_with_attribute): do not indent DEFINITION and - DEFINITIONTERM when the output is Docbook. - -2004-01-25 Alper Ersoy - - * makeinfo/xml.c: changed majorheading and the like with bridgehead - for Docbook. - - * makeinfo/sectioning.c (sectioning_underscore): do not start sections - with @majorheading and the like, only insert title. - -2004-01-25 Alper Ersoy - - * makeinfo/xml.c: - * makeinfo/xml.h: new element EXDENT. - - * makeinfo/cmds.c (cm_comment): save the paragraph state. - (cm_exdent): use EXDENT element for XML, LINEANNOTATION for Docbook. - - * makeinfo/html.c (html_output_head): - * makeinfo/xml.c (xml_begin_document): erase output_paragraph. - - * makeinfo/insertion.c (begin_insertion): canonize whitespace around - copying text. - (cm_insert_copying): comment fixes. Do not append newline if the - output is Docbook. - - * makeinfo/makeinfo.c (close_paragraph): return if Docbook too. - - * makeinfo/sectioning.c (sectioning_underscore): removed newline from - the end of titles. - - * makeinfo/lang.c (cm_documentencoding): insert encoding attribute - into XML and Docbook prologs when handling delayed writes. - - * makeinfo/xml.c (xml_begin_document): register a delayed write for - @documentencoding when writing the prolog. - (xml_end_para): removed docbook checks. - (xml_insert_element_with_attribute): skip indentation if - xml_keep_space is true, indent after table element. When the output - is Docbook, do not insert xml:space attribute, and do not remove from - the end of group element and keep_space blocks. - (xml_add_char): join lines in a paragraph for Docbook too. - -2004-01-24 Alper Ersoy - - * makeinfo/multi.c (out_char): simple use add_char for XML and Docbook - outputs too. - - * makeinfo/makeinfo.c (close_paragraph): just return when the output - format is XML. - - * makeinfo/makeinfo.h: new variable xml_indendation_increment. - - * makeinfo/cmds.c (cm_comment): insert a newline before the comment, - if there is not already one. - (cm_noindent_cmd): skip whitespace after the command. - - * makeinfo/xml.c: - * makeinfo/xml.h: new element DETAILMENU. - - * makeinfo/xml.c: menuentry and menucomment should not contain para. - (xml_indent, xml_indent_end_para): use xml_indentation_increment - value, and indent only if it is a positive number. - (xml_start_para): apply indentation for XML output too. - (xml_end_para): add newline if xml_indentation_increment is positive. - (xml_insert_element_with_attribute): major indentation fixes. - (xml_start_menu_entry): skip whitespace at the start of menu comments. - (xml_add_char): fixed paragraph detection in menus, and added a check - to detect multiple whitespaces after newline in menu comments. Do not - return when inside multitable to avoid concatenation of two lines - without a space char in between. - - * makeinfo/insertion.c (cm_insert_copying, cm_lisp, cm_smalllisp) - (cm_format, cm_smallformat, cm_display, cm_smalldisplay, cm_example) - (cm_smallexample): do not insert newline when the output is XML. - (end_insertion): ditto for the above mentioned block commands and - @group. Do not increment in_fixed_font for XML output. - (begin_insertion, end_insertion): enclose @detailmenu in a detailmenu - element. - - * util/texinfo.dtd: added detailmenu, and fixed menucomment and - tableitem definitions. - -2004-01-23 Alper Ersoy - - * util/Makefile.am: substituted catalog in EXTRA_DIST with catalog.in, - and added catalog to CLEANFILES. - -2004-01-23 Alper Ersoy - - * makeinfo/files.h: new input_filename member in delayed_write struct. - - * makeinfo/files.c (register_delayed_write): added input_filename to - saved variables, and adjusted line_number saving. - (handle_delayed_writes): set input_filename and line_number for - correct warning and error messages. - -2004-01-23 Alper Ersoy - - * makeinfo/float.c (cm_listoffloats): - * makeinfo/index.c (cm_printindex): decrement line_number only if - not handling delayed writes. - - * makeinfo/float.c (float_type_exists): check if float has a label. - -2004-01-23 Alper Ersoy - - * makeinfo/makeinfo.c (main): updated copyright year in --version text. - -2004-01-23 Alper Ersoy - - * makeinfo/tests/Makefile.am: commented top2.texi to fix distcheck. - -2004-01-23 Alper Ersoy - - * makeinfo/xml.c (xml_begin_document): use PUBLIC id for TexinfoML - instead of SYSTEM. - -2004-01-23 Alper Ersoy - - * makeinfo/Makefile.am: removed texinfo.dtd and texinfo.xsl and ... - - * util/Makefile.am: added here. - -2004-01-23 Alper Ersoy - - * utils/catalog.in: catalog file for texinfo.dtd. - -2004-01-23 Alper Ersoy - - * makeinfo/texinfo.dtd: - * makeinfo/texinfo.xsl: moved to ... - - * utils/texinfo.dtd: - * utils/texinfo.xsl: here. - -2004-01-23 Alper Ersoy - - * makeinfo/texinfo.dtd: added ordm and ordf entities and dmn element. - updated indexterm location in tables. - -2004-01-22 Karl Berry - - * doc/texinfo.tex (\dofloat): handle empty float type and empty - float label separately, matching makeinfo behavior. - * doc/texinfo.txi (Floats): new section, not yet fully written. - (Special Displays): new chapter to hold it. - (Footnotes, Images): move these sections to the new chapter. - (@@-Command Summary): list new commands. - * NEWS: mention new commands here too. - -2004-01-21 Alper Ersoy - - * makeinfo/xml.c (xml_begin_index): move data to a temporary location - for delayed use and insert back when handling delayed writes. - - * makeinfo/index.c (cm_printindex): call xml_begin_index when not - handling delayed writes too. - -2004-01-19 Karl Berry - - * doc/texinfo.tex: doc fix. - -2004-01-18 Karl Berry - - * doc/texinfo.tex (\commondummies): dummify @tie and remaining - @ commands. - (\tocindent): reduce to 15pt to match \defaultparindent. - (\setref): use XR as control sequence prefix - instead of just X; seems nicer. Change calls. - - Finish implementing @listoffloats: - (\xrdef): keep lists of each float type. - (\dofloat): save the floattype in the aux file. - (\Efloat): write the lof text to the aux file. - (\iffloat, \doiffloat, \listoffloats, - \listoffloatsdo, \listoffloatsentry): new macros. - * bootstrap: autoheader should come after aclocal, I think. - -2004-01-17 Karl Berry - - * doc/texinfo.tex (\doitemize): rename from \itemizey. - (\itemizeitem): do not set \parskip=0 if the last - thing was a \nobreak (e.g., from \sectionheading). - Report from: Jesper Harder , - 17 Jan 2004 22:03:51 +0100. - - * doc/texinfo.txi (email): no angle brackets in TeX output. - Report from: Jesper Harder , - 17 Jan 2004 21:03:21 +0100. - -2004-01-17 Alper Ersoy - - * makeinfo/float.c (cm_listoffloats): Prefixed captions with - float_type. For HTML, used an