]> git.ipfire.org Git - thirdparty/bash.git/commitdiff
commit bash-20071213 snapshot
authorChet Ramey <chet.ramey@case.edu>
Wed, 7 Dec 2011 14:16:29 +0000 (09:16 -0500)
committerChet Ramey <chet.ramey@case.edu>
Wed, 7 Dec 2011 14:16:29 +0000 (09:16 -0500)
26 files changed:
CWRU/CWRU.chlog
CWRU/CWRU.chlog~
builtins/read.def
builtins/read.def.save1
builtins/read.def~
builtins/set.def
doc/bashref.texi
doc/bashref.texi~
doc/fdl.texi
doc/version.texi
doc/version.texi~
lib/readline/doc/history.texi
lib/readline/doc/history.texi~ [new file with mode: 0644]
lib/readline/doc/hstech.texi
lib/readline/doc/hstech.texi~ [new file with mode: 0644]
lib/readline/doc/rlman.texi
lib/readline/doc/rlman.texi~ [new file with mode: 0644]
lib/readline/doc/rltech.texi
lib/readline/doc/rltech.texi~
lib/readline/doc/rluser.texi
lib/readline/doc/rluser.texi~
lib/readline/doc/rluserman.texi
lib/readline/doc/rluserman.texi~ [new file with mode: 0644]
lib/readline/doc/version.texi
lib/readline/doc/version.texi~
tests/RUN-ONE-TEST

index 53e640173e9fbba040f14a0d903d43a91ba4ec2d..d67002fb25ef565a5d782f1b3cdd1ce0a5caad7b 100644 (file)
@@ -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 <karl@freefriends.org>
index 0dd356aea2d33f9d0c1d83f8d9dd4105ffcecab6..24dbb5aa53b6d9c20a07516c5eb686b1f69f2f9f 100644 (file)
@@ -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 <karl@freefriends.org>
index fbf0fb4e4a4923946156b21e22fda47899e2aa66..797949d3d8a14eaa948c855af1dc28fe8bd07635 100644 (file)
@@ -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;
 
index 5bfe00b465e62307166c279d76c42835abb4170d..179ba17a659e5ecce6b8ef104f1b9e083bf6699d 100644 (file)
@@ -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;
 
index 054af654905544be9f10adbe783f8d8255ffcf73..a38ccf9bc2bb9d57e41d364c94d9c688d3b5cec9 100644 (file)
@@ -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;
 
index ee87a27468ec29290320230593d13285007aebc5..5c2d0e1d472257293e92f1ae6469a4d9d89ab88c 100644 (file)
@@ -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)
index 797740d9dfd4c752c8dc91368a2baf302842632c..f33a96f64c7f82205a8959570513f9e978b10499 100644 (file)
@@ -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
 
index ccb2ef90b2241bc3b99a75dbe6b60f2316df8e90..797740d9dfd4c752c8dc91368a2baf302842632c 100644 (file)
@@ -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
index 47ead9f095e0c01590b11adaa8b647c7a3415adb..96ce74ea1a425be9e510bac225a8f8578c7b2e4b 100644 (file)
@@ -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
index 77b9671179d7a70ea6390f08110b9caeeed95e2f..f8155d4a69a2c86cb89e179ec3d591ac8e151598 100644 (file)
@@ -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
index c016a52f4c331399302c985d4f82aaec6c979160..6d3bc7f0a8d4130270cc8dd68566221e332bfa1d 100644 (file)
@@ -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
index 1af40c73de731b57a7b5535ba05809b5a13c1234..963e18f171e1d1012b2851003edafa4e6414fd88 100644 (file)
@@ -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 (file)
index 0000000..2416144
--- /dev/null
@@ -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
index 47ba8a550c6230ab459d984bfede19ae1ccd12fa..c4e5a7527b36a867bc407023a588161312cd6722 100644 (file)
@@ -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 (file)
index 0000000..47ba8a5
--- /dev/null
@@ -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{<readline/history.h>} 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 <stdio.h>
+#include <readline/history.h>
+
+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
index e14c655f754c3c42900d7cae7b601e992321bff2..18310b2d11824a5f10944091f4a8bf8c4e318ac7 100644 (file)
@@ -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 (file)
index 0000000..1ca893a
--- /dev/null
@@ -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
index 0dce841c7d7358ef8aa8f4e75e16796426d6f7fd..3c6da875ae5aa7c3577430bbce76191918cec4a5 100644 (file)
@@ -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
index cc838bf023b90565a156bedce7eb378fb517226d..8ee15261e81e059ed3d5ad50063573d8b60ce038 100644 (file)
@@ -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}.
index 0175fa740a6730f32019edb0457575159000a8f9..886f837198f3c160c9374e02b31fb6800fe6788b 100644 (file)
@@ -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.
 
index 9ff4bea68dc00efecdbf57cac8905866dea699bc..8851e1b335e89ce2611d3fe1762156418af899ba 100644 (file)
@@ -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
index 086aa83852fcfa114d8a6872ed87eedefbe250dc..14ce07de096267bcfb9f4ffe9c9c7ecc17db16fa 100644 (file)
@@ -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 (file)
index 0000000..894292b
--- /dev/null
@@ -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
index e74809341b8c794b4a8dacb3092fcab54869629d..f74427efb8dfd14a3a8b43b6ebe743678041574c 100644 (file)
@@ -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
index 42cc40360743b97c9985769b862ac67e6aacbf1e..e74809341b8c794b4a8dacb3092fcab54869629d 100644 (file)
@@ -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
index 3efcf32d68e9722024b6ca9d67f9e81b2aa5ac04..72ec06a2c1fd8dde92acea5e8ac773e35f1d061b 100755 (executable)
@@ -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