From: Chet Ramey Date: Wed, 7 Dec 2011 14:16:29 +0000 (-0500) Subject: commit bash-20071213 snapshot X-Git-Tag: bash-4.0-alpha~29 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=de00a87845acca774492b2fb37d29f37a361d3c4;p=thirdparty%2Fbash.git commit bash-20071213 snapshot --- diff --git a/CWRU/CWRU.chlog b/CWRU/CWRU.chlog index 53e640173..d67002fb2 100644 --- a/CWRU/CWRU.chlog +++ b/CWRU/CWRU.chlog @@ -15095,9 +15095,31 @@ subst.c include/shtty.h, lib/sh/shtty.c - add ttfd_onechar, ttfd_noecho, ttfd_eightbit, ttfd_nocanon, and ttfd_cbreak to set tty attributes associated with a particular - file descriptor (which is presumed to point to a terminal) + file descriptor (which is presumed to point to a terminal). Support + for fix for bug reported by b_bashbug@thebellsplace.com lib/readline/display.c - make sure we only use rl_invis_chars_first_line when the number of physical characters exceeds the screen width, since that's the only time expand_prompt sets it to a valid value + + 12/12 + ----- +builtins/set.def + - change set_minus_o_option to return EX_USAGE if an invalid option + name is supplied. All callers can handle it. + - change set_builtin to return what set_minus_o_option returns if it's + not EXECUTION_SUCCESS. This allows EX_USAGE errors to abort a + shell running in posix mode + + 12/14 + ----- +builtins/read.def + - generalize the calls to the tty attribute functions to maintain a + local copy of the terminal attributes and use the fd supplied as + the argument to the -u option (default 0). Fix for bug reported + by b_bashbug@thebellsplace.com + +doc/bashref.texi, lib/readline/doc/{history,rlman,rluser,rluserman}.texi + - Slight changes to conform to the latest FSF documentation standards. + Patch from Karl Berry diff --git a/CWRU/CWRU.chlog~ b/CWRU/CWRU.chlog~ index 0dd356aea..24dbb5aa5 100644 --- a/CWRU/CWRU.chlog~ +++ b/CWRU/CWRU.chlog~ @@ -15095,9 +15095,31 @@ subst.c include/shtty.h, lib/sh/shtty.c - add ttfd_onechar, ttfd_noecho, ttfd_eightbit, ttfd_nocanon, and ttfd_cbreak to set tty attributes associated with a particular - file descriptor (which is presumed to point to the terminal) + file descriptor (which is presumed to point to a terminal). Support + for fix for bug reported by b_bashbug@thebellsplace.com lib/readline/display.c - make sure we only use rl_invis_chars_first_line when the number of physical characters exceeds the screen width, since that's the only time expand_prompt sets it to a valid value + + 12/12 + ----- +builtins/set.def + - change set_minus_o_option to return EX_USAGE if an invalid option + name is supplied. All callers can handle it. + - change set_builtin to return what set_minus_o_option returns if it's + not EXECUTION_SUCCESS. This allows EX_USAGE errors to abort a + shell running in posix mode + + 12/14 + ----- +builtins/read.def + - generalize the calls to the tty attribute functions to maintain a + local copy of the terminal attributes and use the fd supplied as + the argument to the -u option (default 0). Fix for bug reported + by b_bashbug@thebellsplace.com + +doc/bashref.texi, lib/readline/doc/{history,rlman,rluser}.texi + - Slight changes to conform to the latest FSF documentation standards. + Patch from Karl Berry diff --git a/builtins/read.def b/builtins/read.def index fbf0fb4e4..797949d3d 100644 --- a/builtins/read.def +++ b/builtins/read.def @@ -87,6 +87,12 @@ $END extern int errno; #endif +struct ttsave +{ + int fd; + TTYSTRUCT *attrs; +}; + #if defined (READLINE) static void reset_attempted_completion_function __P((char *)); static char *edit_line __P((char *)); @@ -97,6 +103,7 @@ static SHELL_VAR *bind_read_variable __P((char *, char *)); #if defined (HANDLE_MULTIBYTE) static int read_mbchar __P((int, char *, int, int, int)); #endif +static void ttyrestore __P((struct ttsave *)); static sighandler sigalrm __P((int)); static void reset_alarm __P((void)); @@ -140,6 +147,8 @@ read_builtin (list) char *e, *t, *t1, *ps2, *tofree; struct stat tsb; SHELL_VAR *var; + TTYSTRUCT ttattrs, ttset; + struct ttsave termsave; #if defined (ARRAY_VARS) WORD_LIST *alist; #endif @@ -366,19 +375,30 @@ read_builtin (list) #endif if (input_is_tty) { - ttsave (); + /* ttsave() */ + termsave.fd = fd; + ttgetattr (fd, &ttattrs); + termsave.attrs = &ttattrs; + + ttset = ttattrs; if (silent) - ttcbreak (); + ttfd_cbreak (fd, &ttset); /* ttcbreak () */ else - ttonechar (); - add_unwind_protect ((Function *)ttrestore, (char *)NULL); + ttfd_onechar (fd, &ttset); /* ttonechar () */ + add_unwind_protect ((Function *)ttyrestore, (char *)&termsave); } } else if (silent) /* turn off echo but leave term in canonical mode */ { - ttsave (); - ttnoecho (); - add_unwind_protect ((Function *)ttrestore, (char *)NULL); + /* ttsave (); */ + termsave.fd = fd; + ttgetattr (fd, &ttattrs); + termsave.attrs = &ttattrs; + + ttset = ttattrs; + ttfd_noecho (fd, &ttset); /* ttnoecho (); */ + + add_unwind_protect ((Function *)ttyrestore, (char *)&termsave); } /* This *must* be the top unwind-protect on the stack, so the manipulation @@ -531,10 +551,10 @@ add_char: else #endif if (input_is_tty) - ttrestore (); + ttyrestore (&termsave); } else if (silent) - ttrestore (); + ttyrestore (&termsave); if (unbuffered_read == 0) zsyncfd (fd); @@ -784,6 +804,14 @@ mbchar_return: } #endif + +static void +ttyrestore (ttp) + struct ttsave *ttp; +{ + ttsetattr (ttp->fd, ttp->attrs); +} + #if defined (READLINE) static rl_completion_func_t *old_attempted_completion_function = 0; diff --git a/builtins/read.def.save1 b/builtins/read.def.save1 index 5bfe00b46..179ba17a6 100644 --- a/builtins/read.def.save1 +++ b/builtins/read.def.save1 @@ -87,6 +87,12 @@ $END extern int errno; #endif +struct ttsave +{ + int fd; + TTYSTRUCT *attrs; +}; + #if defined (READLINE) static void reset_attempted_completion_function __P((char *)); static char *edit_line __P((char *)); @@ -94,6 +100,10 @@ static void set_eol_delim __P((int)); static void reset_eol_delim __P((char *)); #endif static SHELL_VAR *bind_read_variable __P((char *, char *)); +#if defined (HANDLE_MULTIBYTE) +static int read_mbchar __P((int, char *, int, int, int)); +#endif +static void ttyrestore __P((struct ttsave *)); static sighandler sigalrm __P((int)); static void reset_alarm __P((void)); @@ -134,9 +144,11 @@ read_builtin (list) intmax_t intval; char c; char *input_string, *orig_input_string, *ifs_chars, *prompt, *arrayname; - char *e, *t, *t1, *ps2; + char *e, *t, *t1, *ps2, *tofree; struct stat tsb; SHELL_VAR *var; + TTYSTRUCT ttattrs; + struct ttsave termsave; #if defined (ARRAY_VARS) WORD_LIST *alist; #endif @@ -441,7 +453,7 @@ read_builtin (list) } #endif - if (i + 2 >= size) + if (i + 4 >= size) /* XXX was i + 2; use i + 4 for multibyte/read_mbchar */ { input_string = (char *)xrealloc (input_string, size += 128); remove_unwind_protect (); @@ -487,6 +499,15 @@ read_builtin (list) add_char: input_string[i++] = c; + +#if defined (HANDLE_MULTIBYTE) + if (nchars > 0 && MB_CUR_MAX > 1) + { + input_string[i] = '\0'; /* for simplicity and debugging */ + i += read_mbchar (fd, input_string, i, c, unbuffered_read); + } +#endif + nr++; if (nchars > 0 && nr >= nchars) @@ -680,12 +701,13 @@ add_char: #else /* Check whether or not the number of fields is exactly the same as the number of variables. */ + tofree = NULL; if (*input_string) { t1 = input_string; t = get_word_from_string (&input_string, ifs_chars, &e); if (*input_string == 0) - input_string = t; + tofree = input_string = t; else input_string = strip_trailing_ifs_whitespace (t1, ifs_chars, saw_escape); } @@ -700,6 +722,8 @@ add_char: else var = bind_read_variable (list->word->word, input_string); stupidly_hack_special_variables (list->word->word); + FREE (tofree); + if (var) VUNSETATTR (var, att_invisible); xfree (orig_input_string); @@ -721,6 +745,61 @@ bind_read_variable (name, value) #endif /* !ARRAY_VARS */ } +#if defined (HANDLE_MULTIBYTE) +static int +read_mbchar (fd, string, ind, ch, unbuffered) + int fd; + char *string; + int ind, ch, unbuffered; +{ + char mbchar[MB_LEN_MAX + 1]; + int i, n, r; + char c; + size_t ret; + mbstate_t ps, ps_back; + wchar_t wc; + + memset (&ps, '\0', sizeof (mbstate_t)); + memset (&ps_back, '\0', sizeof (mbstate_t)); + + mbchar[0] = ch; + i = 1; + for (n = 0; n <= MB_LEN_MAX; n++) + { + ps_back = ps; + ret = mbrtowc (&wc, mbchar, i, &ps); + if (ret == (size_t)-2) + { + ps = ps_back; + if (unbuffered) + r = zread (fd, &c, 1); + else + r = zreadc (fd, &c); + if (r < 0) + goto mbchar_return; + mbchar[i++] = c; + continue; + } + else if (ret == (size_t)-1 || ret == (size_t)0 || ret > (size_t)0) + break; + } + +mbchar_return: + if (i > 1) /* read a multibyte char */ + /* mbchar[0] is already string[ind-1] */ + for (r = 1; r < i; r++) + string[ind+r-1] = mbchar[r]; + return i - 1; +} +#endif + +static void +ttyrestore (ttp) + struct ttsave *ttp; +{ + ttsetattr (ttp->fd, ttp->attrs); +} + #if defined (READLINE) static rl_completion_func_t *old_attempted_completion_function = 0; diff --git a/builtins/read.def~ b/builtins/read.def~ index 054af6549..a38ccf9bc 100644 --- a/builtins/read.def~ +++ b/builtins/read.def~ @@ -87,6 +87,12 @@ $END extern int errno; #endif +struct ttsave +{ + int fd; + TTYSTRUCT *attrs; +}; + #if defined (READLINE) static void reset_attempted_completion_function __P((char *)); static char *edit_line __P((char *)); @@ -97,6 +103,7 @@ static SHELL_VAR *bind_read_variable __P((char *, char *)); #if defined (HANDLE_MULTIBYTE) static int read_mbchar __P((int, char *, int, int, int)); #endif +static void ttyrestore __P((struct ttsave *)); static sighandler sigalrm __P((int)); static void reset_alarm __P((void)); @@ -140,6 +147,8 @@ read_builtin (list) char *e, *t, *t1, *ps2, *tofree; struct stat tsb; SHELL_VAR *var; + TTYSTRUCT ttattrs, ttset; + struct ttsave termsave; #if defined (ARRAY_VARS) WORD_LIST *alist; #endif @@ -366,19 +375,30 @@ read_builtin (list) #endif if (input_is_tty) { - ttsave (); + /* ttsave() */ + termsave.fd = fd; + ttgetattr (fd, &ttattrs); + termsave.attrs = &ttattrs; + + ttset = ttattrs; if (silent) - ttcbreak (); + ttfd_cbreak (fd, &ttset); /* ttcbreak () */ else - ttonechar (); - add_unwind_protect ((Function *)ttrestore, (char *)NULL); + ttfd_onechar (fd, &ttset); /* ttonechar () */ + add_unwind_protect ((Function *)ttyrestore, (char *)&termsave); } } else if (silent) /* turn off echo but leave term in canonical mode */ { - ttsave (); - ttnoecho (); - add_unwind_protect ((Function *)ttrestore, (char *)NULL); + /* ttsave (); */ + termsave.fd = fd; + ttgetattr (fd, &ttattrs); + termsave.attrs = &ttattrs; + + ttset = ttattrs; + ttfd_noecho (fd, &ttset); /* ttnoecho (); */ + + add_unwind_protect ((Function *)ttyrestore, (char *)&termsave); } /* This *must* be the top unwind-protect on the stack, so the manipulation @@ -692,13 +712,13 @@ add_char: #else /* Check whether or not the number of fields is exactly the same as the number of variables. */ + tofree = NULL; if (*input_string) { t1 = input_string; - tofree = NULL; - tofree = t = get_word_from_string (&input_string, ifs_chars, &e); + t = get_word_from_string (&input_string, ifs_chars, &e); if (*input_string == 0) - input_string = t; + tofree = input_string = t; else input_string = strip_trailing_ifs_whitespace (t1, ifs_chars, saw_escape); } @@ -713,6 +733,8 @@ add_char: else var = bind_read_variable (list->word->word, input_string); stupidly_hack_special_variables (list->word->word); + FREE (tofree); + if (var) VUNSETATTR (var, att_invisible); xfree (orig_input_string); @@ -782,6 +804,14 @@ mbchar_return: } #endif + +static void +ttyrestore (ttp) + struct ttsave *ttp; +{ + ttsetattr (ttp->fd, ttp->attrs); +} + #if defined (READLINE) static rl_completion_func_t *old_attempted_completion_function = 0; diff --git a/builtins/set.def b/builtins/set.def index ee87a2746..5c2d0e1d4 100644 --- a/builtins/set.def +++ b/builtins/set.def @@ -425,7 +425,7 @@ set_minus_o_option (on_or_off, option_name) } sh_invalidoptname (option_name); - return (EXECUTION_FAILURE); + return (EX_USAGE); } static void @@ -580,7 +580,7 @@ int set_builtin (list) WORD_LIST *list; { - int on_or_off, flag_name, force_assignment, opts_changed, rv; + int on_or_off, flag_name, force_assignment, opts_changed, rv, r; register char *arg; char s[3]; @@ -669,10 +669,10 @@ set_builtin (list) list = list->next; /* Skip over option name. */ opts_changed = 1; - if (set_minus_o_option (on_or_off, option_name) != EXECUTION_SUCCESS) + if ((r = set_minus_o_option (on_or_off, option_name)) != EXECUTION_SUCCESS) { set_shellopts (); - return (EXECUTION_FAILURE); + return (r); } } else if (change_flag (flag_name, on_or_off) == FLAG_ERROR) diff --git a/doc/bashref.texi b/doc/bashref.texi index 797740d9d..f33a96f64 100644 --- a/doc/bashref.texi +++ b/doc/bashref.texi @@ -16,7 +16,7 @@ This is Edition @value{EDITION}, last updated @value{UPDATED}, of @cite{The GNU Bash Reference Manual}, for @code{Bash}, Version @value{VERSION}. -Copyright @copyright{} 1988-2005 Free Software Foundation, Inc. +Copyright @copyright{} 1988--2007 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice @@ -26,13 +26,13 @@ are preserved on all copies. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no -Invariant Sections, with the Front-Cover texts being ``A GNU Manual,'' +Invariant Sections, with the Front-Cover texts being ``A GNU Manual'', and with the Back-Cover Texts as in (a) below. A copy of the license is -included in the section entitled ``GNU Free Documentation License.'' +included in the section entitled ``GNU Free Documentation License''. -(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify -this GNU Manual, like GNU software. Copies published by the Free -Software Foundation raise funds for GNU development.'' +(a) The FSF's Back-Cover Text is: ``You are free to copy and modify +this GNU Manual. Buying copies from GNU Press supports the FSF in +developing GNU and promoting software freedom.'' @end quotation @end copying @@ -110,7 +110,7 @@ reference on shell behavior. * Major Differences From The Bourne Shell:: A terse list of the differences between Bash and historical versions of /bin/sh. -* Copying This Manual:: Copying this manual. +* GNU Free Documentation License:: Copying and sharing this documentation. * Indexes:: Various indexes for this manual. @end menu @end ifnottex @@ -7468,12 +7468,8 @@ The SVR4.2 shell behaves differently when invoked as @code{jsh} (it turns on job control). @end itemize -@node Copying This Manual -@appendix Copying This Manual - -@menu -* GNU Free Documentation License:: License for copying this manual. -@end menu +@node GNU Free Documentation License +@appendix GNU Free Documentation License @include fdl.texi diff --git a/doc/bashref.texi~ b/doc/bashref.texi~ index ccb2ef90b..797740d9d 100644 --- a/doc/bashref.texi~ +++ b/doc/bashref.texi~ @@ -102,9 +102,9 @@ reference on shell behavior. * Bash Features:: Features found only in Bash. * Job Control:: What job control is and how Bash allows you to use it. -* Using History Interactively:: Command History Expansion * Command Line Editing:: Chapter describing the command line editing features. +* Using History Interactively:: Command History Expansion * Installing Bash:: How to build and install Bash on your system. * Reporting Bugs:: How to report bugs in Bash. * Major Differences From The Bourne Shell:: A terse list of the differences @@ -5158,9 +5158,11 @@ No other startup files are read. @subsubheading Invoked by remote shell daemon -Bash attempts to determine when it is being run by the remote shell -daemon, usually @code{rshd}. If Bash determines it is being run by -rshd, it reads and executes commands from @file{~/.bashrc}, if that +Bash attempts to determine when it is being run with its standard input +connected to a a network connection, as if by the remote shell +daemon, usually @code{rshd}, or the secure shell daemon @code{sshd}. +If Bash determines it is being run in +this fashion, it reads and executes commands from @file{~/.bashrc}, if that file exists and is readable. It will not do this if invoked as @code{sh}. The @option{--norc} option may be used to inhibit this behavior, and the diff --git a/doc/fdl.texi b/doc/fdl.texi index 47ead9f09..96ce74ea1 100644 --- a/doc/fdl.texi +++ b/doc/fdl.texi @@ -1,13 +1,12 @@ - -@node GNU Free Documentation License -@appendixsec GNU Free Documentation License - -@cindex FDL, GNU Free Documentation License +@c The GNU Free Documentation License. @center Version 1.2, November 2002 +@c This file is intended to be included within another document, +@c hence no sectioning command or @node. + @display Copyright @copyright{} 2000,2001,2002 Free Software Foundation, Inc. -59 Temple Place, Suite 330, Boston, MA 02111-1307, USA +51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -344,7 +343,7 @@ and independent documents or works, in or on a volume of a storage or distribution medium, is called an ``aggregate'' if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. -When the Document is included an aggregate, this License does not +When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document. @@ -408,7 +407,7 @@ as a draft) by the Free Software Foundation. @end enumerate @page -@appendixsubsec ADDENDUM: How to use this License for your documents +@heading 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 @@ -420,14 +419,14 @@ license notices just after the title page: Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; - with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. - A copy of the license is included in the section entitled ``GNU + with no Invariant Sections, no Front-Cover Texts, and no Back-Cover + Texts. A copy of the license is included in the section entitled ``GNU Free Documentation License''. @end group @end smallexample If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, -replace the ``with...Texts.'' line with this: +replace the ``with@dots{}Texts.'' line with this: @smallexample @group diff --git a/doc/version.texi b/doc/version.texi index 77b967117..f8155d4a6 100644 --- a/doc/version.texi +++ b/doc/version.texi @@ -2,9 +2,9 @@ Copyright (C) 1988-2007 Free Software Foundation, Inc. @end ignore -@set LASTCHANGE Wed Dec 5 22:08:02 EST 2007 +@set LASTCHANGE Fri Dec 14 23:10:36 EST 2007 @set EDITION 3.2 @set VERSION 3.2 -@set UPDATED 5 December 2007 +@set UPDATED 14 December 2007 @set UPDATED-MONTH December 2007 diff --git a/doc/version.texi~ b/doc/version.texi~ index c016a52f4..6d3bc7f0a 100644 --- a/doc/version.texi~ +++ b/doc/version.texi~ @@ -2,9 +2,9 @@ Copyright (C) 1988-2007 Free Software Foundation, Inc. @end ignore -@set LASTCHANGE Fri Sep 14 13:44:15 EDT 2007 +@set LASTCHANGE @set EDITION 3.2 @set VERSION 3.2 -@set UPDATED 14 September 2007 -@set UPDATED-MONTH September 2007 +@set UPDATED 5 December 2007 +@set UPDATED-MONTH December 2007 diff --git a/lib/readline/doc/history.texi b/lib/readline/doc/history.texi index 1af40c73d..963e18f17 100644 --- a/lib/readline/doc/history.texi +++ b/lib/readline/doc/history.texi @@ -4,8 +4,6 @@ @settitle GNU History Library @c %**end of header (This is for running Texinfo on a region.) -@setchapternewpage odd - @include version.texi @copying @@ -14,7 +12,7 @@ This document describes the GNU History library a programming tool that provides a consistent user interface for recalling lines of previously typed input. -Copyright @copyright{} 1988-2006 Free Software Foundation, Inc. +Copyright @copyright{} 1988--2007 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice @@ -24,13 +22,13 @@ are preserved on all copies. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no -Invariant Sections, with the Front-Cover texts being ``A GNU Manual,'' +Invariant Sections, with the Front-Cover texts being ``A GNU Manual'', and with the Back-Cover Texts as in (a) below. A copy of the license is -included in the section entitled ``GNU Free Documentation License.'' +included in the section entitled ``GNU Free Documentation License''. -(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify -this GNU Manual, like GNU software. Copies published by the Free -Software Foundation raise funds for GNU development.'' +(a) The FSF's Back-Cover Text is: ``You are free to copy and modify +this GNU Manual. Buying copies from GNU Press supports the FSF in +developing GNU and promoting software freedom.'' @end quotation @end copying @@ -72,7 +70,7 @@ typed input. @menu * Using History Interactively:: GNU History User's Manual. * Programming with GNU History:: GNU History Programmer's Manual. -* Copying This Manual:: Copying This Manual. +* GNU Free Documentation License:: License for copying this manual. * Concept Index:: Index of concepts described in this manual. * Function and Variable Index:: Index of externally visible functions and variables. @@ -84,12 +82,8 @@ typed input. @include hsuser.texi @include hstech.texi -@node Copying This Manual -@appendix Copying This Manual - -@menu -* GNU Free Documentation License:: License for copying this manual. -@end menu +@node GNU Free Documentation License +@appendix GNU Free Documentation License @include fdl.texi diff --git a/lib/readline/doc/history.texi~ b/lib/readline/doc/history.texi~ new file mode 100644 index 000000000..24161447d --- /dev/null +++ b/lib/readline/doc/history.texi~ @@ -0,0 +1,102 @@ +\input texinfo @c -*-texinfo-*- +@c %**start of header (This is for running Texinfo on a region.) +@setfilename history.info +@settitle GNU History Library +@c %**end of header (This is for running Texinfo on a region.) + +@include version.texi + +@copying +This document describes the GNU History library +(version @value{VERSION}, @value{UPDATED}), +a programming tool that provides a consistent user interface for +recalling lines of previously typed input. + +Copyright @copyright{} 1988--2007 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. + +@quotation +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no +Invariant Sections, with the Front-Cover texts being ``A GNU Manual'', +and with the Back-Cover Texts as in (a) below. A copy of the license is +included in the section entitled ``GNU Free Documentation License''. + +(a) The FSF's Back-Cover Text is: ``You are free to copy and modify +this GNU Manual. Buying copies from GNU Press supports the FSF in +developing GNU and promoting software freedom.'' +@end quotation +@end copying + +@dircategory Libraries +@direntry +* History: (history). The GNU history library API. +@end direntry + +@titlepage +@title GNU History Library +@subtitle Edition @value{EDITION}, for @code{History Library} Version @value{VERSION}. +@subtitle @value{UPDATED-MONTH} +@author Chet Ramey, Case Western Reserve University +@author Brian Fox, Free Software Foundation + +@page + +@vskip 0pt plus 1filll +@insertcopying + +@sp 1 +Published by the Free Software Foundation @* +59 Temple Place, Suite 330, @* +Boston, MA 02111-1307 @* +USA @* + +@end titlepage + +@contents + +@ifnottex +@node Top +@top GNU History Library + +This document describes the GNU History library, a programming tool that +provides a consistent user interface for recalling lines of previously +typed input. + +@menu +* Using History Interactively:: GNU History User's Manual. +* Programming with GNU History:: GNU History Programmer's Manual. +* Copying This Manual:: Copying This Manual. +* Concept Index:: Index of concepts described in this manual. +* Function and Variable Index:: Index of externally visible functions + and variables. +@end menu +@end ifnottex + +@syncodeindex fn vr + +@include hsuser.texi +@include hstech.texi + +@node Copying This Manual +@appendix Copying This Manual + +@menu +* GNU Free Documentation License:: License for copying this manual. +@end menu + +@include fdl.texi + +@node Concept Index +@appendix Concept Index +@printindex cp + +@node Function and Variable Index +@appendix Function and Variable Index +@printindex vr + +@bye diff --git a/lib/readline/doc/hstech.texi b/lib/readline/doc/hstech.texi index 47ba8a550..c4e5a7527 100644 --- a/lib/readline/doc/hstech.texi +++ b/lib/readline/doc/hstech.texi @@ -1,7 +1,7 @@ @ignore This file documents the user interface to the GNU History library. -Copyright (C) 1988-2006 Free Software Foundation, Inc. +Copyright (C) 1988-2007 Free Software Foundation, Inc. Authored by Brian Fox and Chet Ramey. Permission is granted to make and distribute verbatim copies of this manual diff --git a/lib/readline/doc/hstech.texi~ b/lib/readline/doc/hstech.texi~ new file mode 100644 index 000000000..47ba8a550 --- /dev/null +++ b/lib/readline/doc/hstech.texi~ @@ -0,0 +1,573 @@ +@ignore +This file documents the user interface to the GNU History library. + +Copyright (C) 1988-2006 Free Software Foundation, Inc. +Authored by Brian Fox and Chet Ramey. + +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 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). + +Permission is granted to copy and distribute modified versions of this +manual under the conditions for verbatim copying, provided also that the +GNU Copyright statement is available to the distributee, 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. +@end ignore + +@node Programming with GNU History +@chapter Programming with GNU History + +This chapter describes how to interface programs that you write +with the @sc{gnu} History Library. +It should be considered a technical guide. +For information on the interactive use of @sc{gnu} History, @pxref{Using +History Interactively}. + +@menu +* Introduction to History:: What is the GNU History library for? +* History Storage:: How information is stored. +* History Functions:: Functions that you can use. +* History Variables:: Variables that control behaviour. +* History Programming Example:: Example of using the GNU History Library. +@end menu + +@node Introduction to History +@section Introduction to History + +Many programs read input from the user a line at a time. The @sc{gnu} +History library is able to keep track of those lines, associate arbitrary +data with each line, and utilize information from previous lines in +composing new ones. + +The programmer using the History library has available functions +for remembering lines on a history list, associating arbitrary data +with a line, removing lines from the list, searching through the list +for a line containing an arbitrary text string, and referencing any line +in the list directly. In addition, a history @dfn{expansion} function +is available which provides for a consistent user interface across +different programs. + +The user using programs written with the History library has the +benefit of a consistent user interface with a set of well-known +commands for manipulating the text of previous lines and using that text +in new commands. The basic history manipulation commands are similar to +the history substitution provided by @code{csh}. + +If the programmer desires, he can use the Readline library, which +includes some history manipulation by default, and has the added +advantage of command line editing. + +Before declaring any functions using any functionality the History +library provides in other code, an application writer should include +the file @code{} in any file that uses the +History library's features. It supplies extern declarations for all +of the library's public functions and variables, and declares all of +the public data structures. + +@node History Storage +@section History Storage + +The history list is an array of history entries. A history entry is +declared as follows: + +@example +typedef void *histdata_t; + +typedef struct _hist_entry @{ + char *line; + char *timestamp; + histdata_t data; +@} HIST_ENTRY; +@end example + +The history list itself might therefore be declared as + +@example +HIST_ENTRY **the_history_list; +@end example + +The state of the History library is encapsulated into a single structure: + +@example +/* + * A structure used to pass around the current state of the history. + */ +typedef struct _hist_state @{ + HIST_ENTRY **entries; /* Pointer to the entries themselves. */ + int offset; /* The location pointer within this array. */ + int length; /* Number of elements within this array. */ + int size; /* Number of slots allocated to this array. */ + int flags; +@} HISTORY_STATE; +@end example + +If the flags member includes @code{HS_STIFLED}, the history has been +stifled. + +@node History Functions +@section History Functions + +This section describes the calling sequence for the various functions +exported by the @sc{gnu} History library. + +@menu +* Initializing History and State Management:: Functions to call when you + want to use history in a + program. +* History List Management:: Functions used to manage the list + of history entries. +* Information About the History List:: Functions returning information about + the history list. +* Moving Around the History List:: Functions used to change the position + in the history list. +* Searching the History List:: Functions to search the history list + for entries containing a string. +* Managing the History File:: Functions that read and write a file + containing the history list. +* History Expansion:: Functions to perform csh-like history + expansion. +@end menu + +@node Initializing History and State Management +@subsection Initializing History and State Management + +This section describes functions used to initialize and manage +the state of the History library when you want to use the history +functions in your program. + +@deftypefun void using_history (void) +Begin a session in which the history functions might be used. This +initializes the interactive variables. +@end deftypefun + +@deftypefun {HISTORY_STATE *} history_get_history_state (void) +Return a structure describing the current state of the input history. +@end deftypefun + +@deftypefun void history_set_history_state (HISTORY_STATE *state) +Set the state of the history list according to @var{state}. +@end deftypefun + +@node History List Management +@subsection History List Management + +These functions manage individual entries on the history list, or set +parameters managing the list itself. + +@deftypefun void add_history (const char *string) +Place @var{string} at the end of the history list. The associated data +field (if any) is set to @code{NULL}. +@end deftypefun + +@deftypefun void add_history_time (const char *string) +Change the time stamp associated with the most recent history entry to +@var{string}. +@end deftypefun + +@deftypefun {HIST_ENTRY *} remove_history (int which) +Remove history entry at offset @var{which} from the history. The +removed element is returned so you can free the line, data, +and containing structure. +@end deftypefun + +@deftypefun {histdata_t} free_history_entry (HIST_ENTRY *histent) +Free the history entry @var{histent} and any history library private +data associated with it. Returns the application-specific data +so the caller can dispose of it. +@end deftypefun + +@deftypefun {HIST_ENTRY *} replace_history_entry (int which, const char *line, histdata_t data) +Make the history entry at offset @var{which} have @var{line} and @var{data}. +This returns the old entry so the caller can dispose of any +application-specific data. In the case +of an invalid @var{which}, a @code{NULL} pointer is returned. +@end deftypefun + +@deftypefun void clear_history (void) +Clear the history list by deleting all the entries. +@end deftypefun + +@deftypefun void stifle_history (int max) +Stifle the history list, remembering only the last @var{max} entries. +@end deftypefun + +@deftypefun int unstifle_history (void) +Stop stifling the history. This returns the previously-set +maximum number of history entries (as set by @code{stifle_history()}). +The value is positive if the history was +stifled, negative if it wasn't. +@end deftypefun + +@deftypefun int history_is_stifled (void) +Returns non-zero if the history is stifled, zero if it is not. +@end deftypefun + +@node Information About the History List +@subsection Information About the History List + +These functions return information about the entire history list or +individual list entries. + +@deftypefun {HIST_ENTRY **} history_list (void) +Return a @code{NULL} terminated array of @code{HIST_ENTRY *} which is the +current input history. Element 0 of this list is the beginning of time. +If there is no history, return @code{NULL}. +@end deftypefun + +@deftypefun int where_history (void) +Returns the offset of the current history element. +@end deftypefun + +@deftypefun {HIST_ENTRY *} current_history (void) +Return the history entry at the current position, as determined by +@code{where_history()}. If there is no entry there, return a @code{NULL} +pointer. +@end deftypefun + +@deftypefun {HIST_ENTRY *} history_get (int offset) +Return the history entry at position @var{offset}, starting from +@code{history_base} (@pxref{History Variables}). +If there is no entry there, or if @var{offset} +is greater than the history length, return a @code{NULL} pointer. +@end deftypefun + +@deftypefun time_t history_get_time (HIST_ENTRY *entry) +Return the time stamp associated with the history entry @var{entry}. +@end deftypefun + +@deftypefun int history_total_bytes (void) +Return the number of bytes that the primary history entries are using. +This function returns the sum of the lengths of all the lines in the +history. +@end deftypefun + +@node Moving Around the History List +@subsection Moving Around the History List + +These functions allow the current index into the history list to be +set or changed. + +@deftypefun int history_set_pos (int pos) +Set the current history offset to @var{pos}, an absolute index +into the list. +Returns 1 on success, 0 if @var{pos} is less than zero or greater +than the number of history entries. +@end deftypefun + +@deftypefun {HIST_ENTRY *} previous_history (void) +Back up the current history offset to the previous history entry, and +return a pointer to that entry. If there is no previous entry, return +a @code{NULL} pointer. +@end deftypefun + +@deftypefun {HIST_ENTRY *} next_history (void) +Move the current history offset forward to the next history entry, and +return the a pointer to that entry. If there is no next entry, return +a @code{NULL} pointer. +@end deftypefun + +@node Searching the History List +@subsection Searching the History List +@cindex History Searching + +These functions allow searching of the history list for entries containing +a specific string. Searching may be performed both forward and backward +from the current history position. The search may be @dfn{anchored}, +meaning that the string must match at the beginning of the history entry. +@cindex anchored search + +@deftypefun int history_search (const char *string, int direction) +Search the history for @var{string}, starting at the current history offset. +If @var{direction} is less than 0, then the search is through +previous entries, otherwise through subsequent entries. +If @var{string} is found, then +the current history index is set to that history entry, and the value +returned is the offset in the line of the entry where +@var{string} was found. Otherwise, nothing is changed, and a -1 is +returned. +@end deftypefun + +@deftypefun int history_search_prefix (const char *string, int direction) +Search the history for @var{string}, starting at the current history +offset. The search is anchored: matching lines must begin with +@var{string}. If @var{direction} is less than 0, then the search is +through previous entries, otherwise through subsequent entries. +If @var{string} is found, then the +current history index is set to that entry, and the return value is 0. +Otherwise, nothing is changed, and a -1 is returned. +@end deftypefun + +@deftypefun int history_search_pos (const char *string, int direction, int pos) +Search for @var{string} in the history list, starting at @var{pos}, an +absolute index into the list. If @var{direction} is negative, the search +proceeds backward from @var{pos}, otherwise forward. Returns the absolute +index of the history element where @var{string} was found, or -1 otherwise. +@end deftypefun + +@node Managing the History File +@subsection Managing the History File + +The History library can read the history from and write it to a file. +This section documents the functions for managing a history file. + +@deftypefun int read_history (const char *filename) +Add the contents of @var{filename} to the history list, a line at a time. +If @var{filename} is @code{NULL}, then read from @file{~/.history}. +Returns 0 if successful, or @code{errno} if not. +@end deftypefun + +@deftypefun int read_history_range (const char *filename, int from, int to) +Read a range of lines from @var{filename}, adding them to the history list. +Start reading at line @var{from} and end at @var{to}. +If @var{from} is zero, start at the beginning. If @var{to} is less than +@var{from}, then read until the end of the file. If @var{filename} is +@code{NULL}, then read from @file{~/.history}. Returns 0 if successful, +or @code{errno} if not. +@end deftypefun + +@deftypefun int write_history (const char *filename) +Write the current history to @var{filename}, overwriting @var{filename} +if necessary. +If @var{filename} is @code{NULL}, then write the history list to +@file{~/.history}. +Returns 0 on success, or @code{errno} on a read or write error. +@end deftypefun + +@deftypefun int append_history (int nelements, const char *filename) +Append the last @var{nelements} of the history list to @var{filename}. +If @var{filename} is @code{NULL}, then append to @file{~/.history}. +Returns 0 on success, or @code{errno} on a read or write error. +@end deftypefun + +@deftypefun int history_truncate_file (const char *filename, int nlines) +Truncate the history file @var{filename}, leaving only the last +@var{nlines} lines. +If @var{filename} is @code{NULL}, then @file{~/.history} is truncated. +Returns 0 on success, or @code{errno} on failure. +@end deftypefun + +@node History Expansion +@subsection History Expansion + +These functions implement history expansion. + +@deftypefun int history_expand (char *string, char **output) +Expand @var{string}, placing the result into @var{output}, a pointer +to a string (@pxref{History Interaction}). Returns: +@table @code +@item 0 +If no expansions took place (or, if the only change in +the text was the removal of escape characters preceding the history expansion +character); +@item 1 +if expansions did take place; +@item -1 +if there was an error in expansion; +@item 2 +if the returned line should be displayed, but not executed, +as with the @code{:p} modifier (@pxref{Modifiers}). +@end table + +If an error ocurred in expansion, then @var{output} contains a descriptive +error message. +@end deftypefun + +@deftypefun {char *} get_history_event (const char *string, int *cindex, int qchar) +Returns the text of the history event beginning at @var{string} + +@var{*cindex}. @var{*cindex} is modified to point to after the event +specifier. At function entry, @var{cindex} points to the index into +@var{string} where the history event specification begins. @var{qchar} +is a character that is allowed to end the event specification in addition +to the ``normal'' terminating characters. +@end deftypefun + +@deftypefun {char **} history_tokenize (const char *string) +Return an array of tokens parsed out of @var{string}, much as the +shell might. The tokens are split on the characters in the +@var{history_word_delimiters} variable, +and shell quoting conventions are obeyed. +@end deftypefun + +@deftypefun {char *} history_arg_extract (int first, int last, const char *string) +Extract a string segment consisting of the @var{first} through @var{last} +arguments present in @var{string}. Arguments are split using +@code{history_tokenize}. +@end deftypefun + +@node History Variables +@section History Variables + +This section describes the externally-visible variables exported by +the @sc{gnu} History Library. + +@deftypevar int history_base +The logical offset of the first entry in the history list. +@end deftypevar + +@deftypevar int history_length +The number of entries currently stored in the history list. +@end deftypevar + +@deftypevar int history_max_entries +The maximum number of history entries. This must be changed using +@code{stifle_history()}. +@end deftypevar + +@deftypevar int history_write_timestamps +If non-zero, timestamps are written to the history file, so they can be +preserved between sessions. The default value is 0, meaning that +timestamps are not saved. +@end deftypevar + +@deftypevar char history_expansion_char +The character that introduces a history event. The default is @samp{!}. +Setting this to 0 inhibits history expansion. +@end deftypevar + +@deftypevar char history_subst_char +The character that invokes word substitution if found at the start of +a line. The default is @samp{^}. +@end deftypevar + +@deftypevar char history_comment_char +During tokenization, if this character is seen as the first character +of a word, then it and all subsequent characters up to a newline are +ignored, suppressing history expansion for the remainder of the line. +This is disabled by default. +@end deftypevar + +@deftypevar {char *} history_word_delimiters +The characters that separate tokens for @code{history_tokenize()}. +The default value is @code{" \t\n()<>;&|"}. +@end deftypevar + +@deftypevar {char *} history_search_delimiter_chars +The list of additional characters which can delimit a history search +string, in addition to space, TAB, @samp{:} and @samp{?} in the case of +a substring search. The default is empty. +@end deftypevar + +@deftypevar {char *} history_no_expand_chars +The list of characters which inhibit history expansion if found immediately +following @var{history_expansion_char}. The default is space, tab, newline, +carriage return, and @samp{=}. +@end deftypevar + +@deftypevar int history_quotes_inhibit_expansion +If non-zero, single-quoted words are not scanned for the history expansion +character. The default value is 0. +@end deftypevar + +@deftypevar {rl_linebuf_func_t *} history_inhibit_expansion_function +This should be set to the address of a function that takes two arguments: +a @code{char *} (@var{string}) +and an @code{int} index into that string (@var{i}). +It should return a non-zero value if the history expansion starting at +@var{string[i]} should not be performed; zero if the expansion should +be done. +It is intended for use by applications like Bash that use the history +expansion character for additional purposes. +By default, this variable is set to @code{NULL}. +@end deftypevar + +@node History Programming Example +@section History Programming Example + +The following program demonstrates simple use of the @sc{gnu} History Library. + +@smallexample +#include +#include + +main (argc, argv) + int argc; + char **argv; +@{ + char line[1024], *t; + int len, done = 0; + + line[0] = 0; + + using_history (); + while (!done) + @{ + printf ("history$ "); + fflush (stdout); + t = fgets (line, sizeof (line) - 1, stdin); + if (t && *t) + @{ + len = strlen (t); + if (t[len - 1] == '\n') + t[len - 1] = '\0'; + @} + + if (!t) + strcpy (line, "quit"); + + if (line[0]) + @{ + char *expansion; + int result; + + result = history_expand (line, &expansion); + if (result) + fprintf (stderr, "%s\n", expansion); + + if (result < 0 || result == 2) + @{ + free (expansion); + continue; + @} + + add_history (expansion); + strncpy (line, expansion, sizeof (line) - 1); + free (expansion); + @} + + if (strcmp (line, "quit") == 0) + done = 1; + else if (strcmp (line, "save") == 0) + write_history ("history_file"); + else if (strcmp (line, "read") == 0) + read_history ("history_file"); + else if (strcmp (line, "list") == 0) + @{ + register HIST_ENTRY **the_list; + register int i; + + the_list = history_list (); + if (the_list) + for (i = 0; the_list[i]; i++) + printf ("%d: %s\n", i + history_base, the_list[i]->line); + @} + else if (strncmp (line, "delete", 6) == 0) + @{ + int which; + if ((sscanf (line + 6, "%d", &which)) == 1) + @{ + HIST_ENTRY *entry = remove_history (which); + if (!entry) + fprintf (stderr, "No such entry %d\n", which); + else + @{ + free (entry->line); + free (entry); + @} + @} + else + @{ + fprintf (stderr, "non-numeric arg given to `delete'\n"); + @} + @} + @} +@} +@end smallexample diff --git a/lib/readline/doc/rlman.texi b/lib/readline/doc/rlman.texi index e14c655f7..18310b2d1 100644 --- a/lib/readline/doc/rlman.texi +++ b/lib/readline/doc/rlman.texi @@ -4,7 +4,6 @@ @settitle GNU Readline Library @comment %**end of header (This is for running Texinfo on a region.) @synindex vr fn -@setchapternewpage odd @include version.texi @@ -14,7 +13,7 @@ This manual describes the GNU Readline Library consistency of user interface across discrete programs which provide a command line interface. -Copyright @copyright{} 1988-2006 Free Software Foundation, Inc. +Copyright @copyright{} 1988--2007 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice @@ -24,13 +23,13 @@ are preserved on all copies. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no -Invariant Sections, with the Front-Cover texts being ``A GNU Manual,'' +Invariant Sections, with the Front-Cover texts being ``A GNU Manual'', and with the Back-Cover Texts as in (a) below. A copy of the license is -included in the section entitled ``GNU Free Documentation License.'' +included in the section entitled ``GNU Free Documentation License''. -(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify -this GNU Manual, like GNU software. Copies published by the Free -Software Foundation raise funds for GNU development.'' +(a) The FSF's Back-Cover Text is: ``You are free to copy and modify +this GNU Manual. Buying copies from GNU Press supports the FSF in +developing GNU and promoting software freedom.'' @end quotation @end copying @@ -71,7 +70,7 @@ provide a command line interface. @menu * Command Line Editing:: GNU Readline User's Manual. * Programming with GNU Readline:: GNU Readline Programmer's Manual. -* Copying This Manual:: Copying this manual. +* GNU Free Documentation License:: License for copying this manual. * Concept Index:: Index of concepts described in this manual. * Function and Variable Index:: Index of externally visible functions and variables. @@ -81,12 +80,8 @@ provide a command line interface. @include rluser.texi @include rltech.texi -@node Copying This Manual -@appendix Copying This Manual - -@menu -* GNU Free Documentation License:: License for copying this manual. -@end menu +@node GNU Free Documentation License +@appendix GNU Free Documentation License @include fdl.texi diff --git a/lib/readline/doc/rlman.texi~ b/lib/readline/doc/rlman.texi~ new file mode 100644 index 000000000..1ca893a96 --- /dev/null +++ b/lib/readline/doc/rlman.texi~ @@ -0,0 +1,100 @@ +\input texinfo @c -*-texinfo-*- +@comment %**start of header (This is for running Texinfo on a region.) +@setfilename readline.info +@settitle GNU Readline Library +@comment %**end of header (This is for running Texinfo on a region.) +@synindex vr fn + +@include version.texi + +@copying +This manual describes the GNU Readline Library +(version @value{VERSION}, @value{UPDATED}), a library which aids in the +consistency of user interface across discrete programs which provide +a command line interface. + +Copyright @copyright{} 1988--2007 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. + +@quotation +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no +Invariant Sections, with the Front-Cover texts being ``A GNU Manual'', +and with the Back-Cover Texts as in (a) below. A copy of the license is +included in the section entitled ``GNU Free Documentation License''. + +(a) The FSF's Back-Cover Text is: ``You are free to copy and modify +this GNU Manual. Buying copies from GNU Press supports the FSF in +developing GNU and promoting software freedom.'' +@end quotation +@end copying + +@dircategory Libraries +@direntry +* Readline: (readline). The GNU readline library API. +@end direntry + +@titlepage +@title GNU Readline Library +@subtitle Edition @value{EDITION}, for @code{Readline Library} Version @value{VERSION}. +@subtitle @value{UPDATED-MONTH} +@author Chet Ramey, Case Western Reserve University +@author Brian Fox, Free Software Foundation + +@page +@vskip 0pt plus 1filll +@insertcopying + +@sp 1 +Published by the Free Software Foundation @* +59 Temple Place, Suite 330, @* +Boston, MA 02111-1307 @* +USA @* + +@end titlepage + +@contents + +@ifnottex +@node Top +@top GNU Readline Library + +This document describes the GNU Readline Library, a utility which aids +in the consistency of user interface across discrete programs which +provide a command line interface. + +@menu +* Command Line Editing:: GNU Readline User's Manual. +* Programming with GNU Readline:: GNU Readline Programmer's Manual. +* Copying This Manual:: Copying this manual. +* Concept Index:: Index of concepts described in this manual. +* Function and Variable Index:: Index of externally visible functions + and variables. +@end menu +@end ifnottex + +@include rluser.texi +@include rltech.texi + +@node Copying This Manual +@appendix Copying This Manual + +@menu +* GNU Free Documentation License:: License for copying this manual. +@end menu + +@include fdl.texi + +@node Concept Index +@unnumbered Concept Index +@printindex cp + +@node Function and Variable Index +@unnumbered Function and Variable Index +@printindex fn + +@bye diff --git a/lib/readline/doc/rltech.texi b/lib/readline/doc/rltech.texi index 0dce841c7..3c6da875a 100644 --- a/lib/readline/doc/rltech.texi +++ b/lib/readline/doc/rltech.texi @@ -1,14 +1,13 @@ @comment %**start of header (This is for running Texinfo on a region.) @setfilename rltech.info @comment %**end of header (This is for running Texinfo on a region.) -@setchapternewpage odd @ifinfo This document describes the GNU Readline Library, a utility for aiding in the consistency of user interface across discrete programs that need to provide a command line interface. -Copyright (C) 1988-2006 Free Software Foundation, Inc. +Copyright (C) 1988-2007 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice diff --git a/lib/readline/doc/rltech.texi~ b/lib/readline/doc/rltech.texi~ index cc838bf02..8ee15261e 100644 --- a/lib/readline/doc/rltech.texi~ +++ b/lib/readline/doc/rltech.texi~ @@ -8,7 +8,7 @@ This document describes the GNU Readline Library, a utility for aiding in the consistency of user interface across discrete programs that need to provide a command line interface. -Copyright (C) 1988-2006 Free Software Foundation, Inc. +Copyright (C) 1988-2007 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice @@ -1087,7 +1087,7 @@ environment variable is used. @deftypefun void rl_free (void *mem) Deallocate the memory pointed to by @var{mem}. @var{mem} must have been allocated by @code{malloc}. -@end +@end deftypefun @deftypefun void rl_replace_line (const char *text, int clear_undo) Replace the contents of @code{rl_line_buffer} with @var{text}. @@ -1839,6 +1839,15 @@ if the application's completion function returns no matches. It should be set only by an application's completion function. @end deftypevar +@deftypevar int rl_sort_completion_matches +If an application sets this variable to 0, Readline will not sort the +list of completions (which implies that it cannot remove any duplicate +completions). The default value is 1, which means that Readline will +sort the completions and, depending on the value of +@code{rl_ignore_completion_duplicates}, will attempt to remove duplicate +matches. +@end deftypevar + @deftypevar int rl_completion_type Set to a character describing the type of completion Readline is currently attempting; see the description of @code{rl_complete_internal()} @@ -1848,6 +1857,13 @@ completion function is called, allowing such functions to present the same interface as @code{rl_complete()}. @end deftypevar +@deftypevar int rl_completion_invoking_key +Set to the final character in the key sequence that invoked one of the +completion functions that call @code{rl_complete_internal()}. This is +set to the appropriate value before any application-specific completion +function is called. +@end deftypevar + @deftypevar int rl_inhibit_completion If this variable is non-zero, completion is inhibited. The completion character will be inserted as any other bound to @code{self-insert}. diff --git a/lib/readline/doc/rluser.texi b/lib/readline/doc/rluser.texi index 0175fa740..886f83719 100644 --- a/lib/readline/doc/rluser.texi +++ b/lib/readline/doc/rluser.texi @@ -1,7 +1,6 @@ @comment %**start of header (This is for running Texinfo on a region.) @setfilename rluser.info @comment %**end of header (This is for running Texinfo on a region.) -@setchapternewpage odd @ignore This file documents the end user interface to the GNU command line @@ -10,7 +9,7 @@ use these features. There is a document entitled "readline.texinfo" which contains both end-user and programmer documentation for the GNU Readline Library. -Copyright (C) 1988-2006 Free Software Foundation, Inc. +Copyright (C) 1988--2007 Free Software Foundation, Inc. Authored by Brian Fox and Chet Ramey. diff --git a/lib/readline/doc/rluser.texi~ b/lib/readline/doc/rluser.texi~ index 9ff4bea68..8851e1b33 100644 --- a/lib/readline/doc/rluser.texi~ +++ b/lib/readline/doc/rluser.texi~ @@ -10,7 +10,7 @@ use these features. There is a document entitled "readline.texinfo" which contains both end-user and programmer documentation for the GNU Readline Library. -Copyright (C) 1988-2006 Free Software Foundation, Inc. +Copyright (C) 1988--2007 Free Software Foundation, Inc. Authored by Brian Fox and Chet Ramey. @@ -471,7 +471,8 @@ attempts word completion. The default is @samp{off}. @item history-preserve-point @vindex history-preserve-point -If set to @samp{on}, the history code attempts to place point at the +If set to @samp{on}, the history code attempts to place the point (the +current cursor position) at the same location on each history line retrieved with @code{previous-history} or @code{next-history}. The default is @samp{off}. @@ -1560,8 +1561,8 @@ completed, and the matching words become the possible completions. After these matches have been generated, any shell function or command specified with the @option{-F} and @option{-C} options is invoked. When the command or function is invoked, the @env{COMP_LINE}, -@env{COMP_POINT}, and @env{COMP_TYPE} variables are assigned values -as described above (@pxref{Bash Variables}). +@env{COMP_POINT}, @env{COMP_KEY}, and @env{COMP_TYPE} variables are +assigned values as described above (@pxref{Bash Variables}). If a shell function is being invoked, the @env{COMP_WORDS} and @env{COMP_CWORD} variables are also set. When the function or command is invoked, the first argument is the diff --git a/lib/readline/doc/rluserman.texi b/lib/readline/doc/rluserman.texi index 086aa8385..14ce07de0 100644 --- a/lib/readline/doc/rluserman.texi +++ b/lib/readline/doc/rluserman.texi @@ -4,8 +4,6 @@ @settitle GNU Readline Library @comment %**end of header (This is for running Texinfo on a region.) -@setchapternewpage odd - @include version.texi @copying @@ -14,7 +12,7 @@ This manual describes the end user interface of the GNU Readline Library consistency of user interface across discrete programs which provide a command line interface. -Copyright @copyright{} 1988-2006 Free Software Foundation, Inc. +Copyright @copyright{} 1988--2007 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice @@ -24,13 +22,13 @@ are preserved on all copies. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no -Invariant Sections, with the Front-Cover texts being ``A GNU Manual,'' +Invariant Sections, with the Front-Cover texts being ``A GNU Manual'', and with the Back-Cover Texts as in (a) below. A copy of the license is -included in the section entitled ``GNU Free Documentation License.'' +included in the section entitled ``GNU Free Documentation License''. -(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify -this GNU Manual, like GNU software. Copies published by the Free -Software Foundation raise funds for GNU development.'' +(a) The FSF's Back-Cover Text is: ``You are free to copy and modify +this GNU Manual. Buying copies from GNU Press supports the FSF in +developing GNU and promoting software freedom.'' @end quotation @end copying @@ -70,18 +68,14 @@ programs which provide a command line interface. @menu * Command Line Editing:: GNU Readline User's Manual. -* Copying This Manual:: Copying This Manual. +* GNU Free Documentation License:: License for copying this manual. @end menu @end ifnottex @include rluser.texi -@node Copying This Manual -@appendix Copying This Manual - -@menu -* GNU Free Documentation License:: License for copying this manual. -@end menu +@node GNU Free Documentation License +@appendix GNU Free Documentation License @include fdl.texi diff --git a/lib/readline/doc/rluserman.texi~ b/lib/readline/doc/rluserman.texi~ new file mode 100644 index 000000000..894292b35 --- /dev/null +++ b/lib/readline/doc/rluserman.texi~ @@ -0,0 +1,88 @@ +\input texinfo @c -*-texinfo-*- +@comment %**start of header (This is for running Texinfo on a region.) +@setfilename rluserman.info +@settitle GNU Readline Library +@comment %**end of header (This is for running Texinfo on a region.) + +@setchapternewpage odd + +@include version.texi + +@copying +This manual describes the end user interface of the GNU Readline Library +(version @value{VERSION}, @value{UPDATED}), a library which aids in the +consistency of user interface across discrete programs which provide +a command line interface. + +Copyright @copyright{} 1988--2007 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. + +@quotation +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no +Invariant Sections, with the Front-Cover texts being ``A GNU Manual'', +and with the Back-Cover Texts as in (a) below. A copy of the license is +included in the section entitled ``GNU Free Documentation License''. + +(a) The FSF's Back-Cover Text is: ``You are free to copy and modify +this GNU Manual. Buying copies from GNU Press supports the FSF in +developing GNU and promoting software freedom.'' +@end quotation +@end copying + +@dircategory Libraries +@direntry +* RLuserman: (rluserman). The GNU readline library User's Manual. +@end direntry + +@titlepage +@title GNU Readline Library User Interface +@subtitle Edition @value{EDITION}, for @code{Readline Library} Version @value{VERSION}. +@subtitle @value{UPDATED-MONTH} +@author Chet Ramey, Case Western Reserve University +@author Brian Fox, Free Software Foundation + +@page +@vskip 0pt plus 1filll +@insertcopying + +@sp 1 +Published by the Free Software Foundation @* +59 Temple Place, Suite 330, @* +Boston, MA 02111-1307 @* +USA @* + +@end titlepage + +@contents + +@ifnottex +@node Top +@top GNU Readline Library + +This document describes the end user interface of the GNU Readline Library, +a utility which aids in the consistency of user interface across discrete +programs which provide a command line interface. + +@menu +* Command Line Editing:: GNU Readline User's Manual. +* Copying This Manual:: Copying This Manual. +@end menu +@end ifnottex + +@include rluser.texi + +@node Copying This Manual +@appendix Copying This Manual + +@menu +* GNU Free Documentation License:: License for copying this manual. +@end menu + +@include fdl.texi + +@bye diff --git a/lib/readline/doc/version.texi b/lib/readline/doc/version.texi index e74809341..f74427efb 100644 --- a/lib/readline/doc/version.texi +++ b/lib/readline/doc/version.texi @@ -4,7 +4,7 @@ Copyright (C) 1988-2007 Free Software Foundation, Inc. @set EDITION 5.2 @set VERSION 5.2 -@set UPDATED 27 February 2007 -@set UPDATED-MONTH February 2007 +@set UPDATED 14 December 2007 +@set UPDATED-MONTH December 2007 -@set LASTCHANGE Tue Feb 27 09:04:57 EST 2007 +@set LASTCHANGE Fri Dec 14 23:24:03 EST 2007 diff --git a/lib/readline/doc/version.texi~ b/lib/readline/doc/version.texi~ index 42cc40360..e74809341 100644 --- a/lib/readline/doc/version.texi~ +++ b/lib/readline/doc/version.texi~ @@ -1,10 +1,10 @@ @ignore -Copyright (C) 1988-2006 Free Software Foundation, Inc. +Copyright (C) 1988-2007 Free Software Foundation, Inc. @end ignore @set EDITION 5.2 @set VERSION 5.2 -@set UPDATED 30 December 2006 -@set UPDATED-MONTH December 2006 +@set UPDATED 27 February 2007 +@set UPDATED-MONTH February 2007 -@set LASTCHANGE Sat Dec 30 19:17:22 EST 2006 +@set LASTCHANGE Tue Feb 27 09:04:57 EST 2007 diff --git a/tests/RUN-ONE-TEST b/tests/RUN-ONE-TEST index 3efcf32d6..72ec06a2c 100755 --- a/tests/RUN-ONE-TEST +++ b/tests/RUN-ONE-TEST @@ -1,4 +1,4 @@ -BUILD_DIR=/usr/local/build/chet/bash/bash-current +BUILD_DIR=/usr/local/build/bash/bash-current THIS_SH=$BUILD_DIR/bash PATH=$PATH:$BUILD_DIR