summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2011-04-08 16:26:23 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2011-04-08 16:26:23 +0000
commitee523abdace8337d05ec4a179fcdf5de3fe0f634 (patch)
treee23bdc714c7fa934f1532a705e92afe36a71466f
parentb667555541a4d65bb9dae6f0e0f240e6a05b148e (diff)
2011-04-08 Joel Sherrill <joel.sherrill@oarcorp.com>
* RTEMS_Makefiles/Makefile.readline-4.3, readline-4.3/CHANGELOG-ReadLine, readline-4.3/CHANGES, readline-4.3/COPYING, readline-4.3/ChangeLog, readline-4.3/INSTALL, readline-4.3/MANIFEST, readline-4.3/Makefile.in, readline-4.3/README, readline-4.3/USAGE, readline-4.3/aclocal.m4, readline-4.3/ansi_stdlib.h, readline-4.3/bind.c, readline-4.3/callback.c, readline-4.3/chardefs.h, readline-4.3/compat.c, readline-4.3/complete.c, readline-4.3/config.h.in, readline-4.3/configure, readline-4.3/configure.in, readline-4.3/display.c, readline-4.3/emacs_keymap.c, readline-4.3/funmap.c, readline-4.3/histexpand.c, readline-4.3/histfile.c, readline-4.3/histlib.h, readline-4.3/history.c, readline-4.3/history.h, readline-4.3/histsearch.c, readline-4.3/input.c, readline-4.3/isearch.c, readline-4.3/keymaps.c, readline-4.3/keymaps.h, readline-4.3/kill.c, readline-4.3/macro.c, readline-4.3/mbutil.c, readline-4.3/misc.c, readline-4.3/nls.c, readline-4.3/parens.c, readline-4.3/posixdir.h, readline-4.3/posixjmp.h, readline-4.3/posixstat.h, readline-4.3/readline.c, readline-4.3/readline.h, readline-4.3/rlconf.h, readline-4.3/rldefs.h, readline-4.3/rlmbutil.h, readline-4.3/rlprivate.h, readline-4.3/rlshell.h, readline-4.3/rlstdc.h, readline-4.3/rltty.c, readline-4.3/rltty.h, readline-4.3/rltypedefs.h, readline-4.3/rlwinsize.h, readline-4.3/savestring.c, readline-4.3/search.c, readline-4.3/shell.c, readline-4.3/signals.c, readline-4.3/tcap.h, readline-4.3/terminal.c, readline-4.3/text.c, readline-4.3/tilde.c, readline-4.3/tilde.h, readline-4.3/undo.c, readline-4.3/util.c, readline-4.3/vi_keymap.c, readline-4.3/vi_mode.c, readline-4.3/xmalloc.c, readline-4.3/xmalloc.h, readline-4.3/doc/Makefile.in, readline-4.3/doc/hist.texinfo, readline-4.3/doc/history.3, readline-4.3/doc/hstech.texinfo, readline-4.3/doc/hsuser.texinfo, readline-4.3/doc/manvers.texinfo, readline-4.3/doc/readline.3, readline-4.3/doc/rlman.texinfo, readline-4.3/doc/rltech.texinfo, readline-4.3/doc/rluser.texinfo, readline-4.3/doc/rluserman.texinfo, readline-4.3/doc/texi2dvi, readline-4.3/doc/texi2html, readline-4.3/doc/texinfo.tex, readline-4.3/examples/Inputrc, readline-4.3/examples/Makefile.in, readline-4.3/examples/excallback.c, readline-4.3/examples/fileman.c, readline-4.3/examples/histexamp.c, readline-4.3/examples/manexamp.c, readline-4.3/examples/readlinebuf.h, readline-4.3/examples/rl.c, readline-4.3/examples/rlcat.c, readline-4.3/examples/rlfe.c, readline-4.3/examples/rltest.c, readline-4.3/examples/rlversion.c, readline-4.3/shlib/Makefile.in, readline-4.3/support/config.guess, readline-4.3/support/config.sub, readline-4.3/support/install.sh, readline-4.3/support/mkdirs, readline-4.3/support/mkdist, readline-4.3/support/shlib-install, readline-4.3/support/shobj-conf, readline-4.3/support/wcwidth.c, readline-4.3.orig/CHANGELOG, readline-4.3.orig/CHANGES, readline-4.3.orig/COPYING, readline-4.3.orig/INSTALL, readline-4.3.orig/MANIFEST, readline-4.3.orig/Makefile.in, readline-4.3.orig/README, readline-4.3.orig/USAGE, readline-4.3.orig/aclocal.m4, readline-4.3.orig/ansi_stdlib.h, readline-4.3.orig/bind.c, readline-4.3.orig/callback.c, readline-4.3.orig/chardefs.h, readline-4.3.orig/compat.c, readline-4.3.orig/complete.c, readline-4.3.orig/config.h.in, readline-4.3.orig/configure, readline-4.3.orig/configure.in, readline-4.3.orig/display.c, readline-4.3.orig/emacs_keymap.c, readline-4.3.orig/funmap.c, readline-4.3.orig/histexpand.c, readline-4.3.orig/histfile.c, readline-4.3.orig/histlib.h, readline-4.3.orig/history.c, readline-4.3.orig/history.h, readline-4.3.orig/histsearch.c, readline-4.3.orig/input.c, readline-4.3.orig/isearch.c, readline-4.3.orig/keymaps.c, readline-4.3.orig/keymaps.h, readline-4.3.orig/kill.c, readline-4.3.orig/macro.c, readline-4.3.orig/mbutil.c, readline-4.3.orig/misc.c, readline-4.3.orig/nls.c, readline-4.3.orig/parens.c, readline-4.3.orig/posixdir.h, readline-4.3.orig/posixjmp.h, readline-4.3.orig/posixstat.h, readline-4.3.orig/readline.c, readline-4.3.orig/readline.h, readline-4.3.orig/rlconf.h, readline-4.3.orig/rldefs.h, readline-4.3.orig/rlmbutil.h, readline-4.3.orig/rlprivate.h, readline-4.3.orig/rlshell.h, readline-4.3.orig/rlstdc.h, readline-4.3.orig/rltty.c, readline-4.3.orig/rltty.h, readline-4.3.orig/rltypedefs.h, readline-4.3.orig/rlwinsize.h, readline-4.3.orig/savestring.c, readline-4.3.orig/search.c, readline-4.3.orig/shell.c, readline-4.3.orig/signals.c, readline-4.3.orig/tcap.h, readline-4.3.orig/terminal.c, readline-4.3.orig/text.c, readline-4.3.orig/tilde.c, readline-4.3.orig/tilde.h, readline-4.3.orig/undo.c, readline-4.3.orig/util.c, readline-4.3.orig/vi_keymap.c, readline-4.3.orig/vi_mode.c, readline-4.3.orig/xmalloc.c, readline-4.3.orig/xmalloc.h, readline-4.3.orig/doc/Makefile.in, readline-4.3.orig/doc/hist.texinfo, readline-4.3.orig/doc/history.0, readline-4.3.orig/doc/history.3, readline-4.3.orig/doc/history.dvi, readline-4.3.orig/doc/history.html, readline-4.3.orig/doc/history.info, readline-4.3.orig/doc/history.ps, readline-4.3.orig/doc/history_3.ps, readline-4.3.orig/doc/hstech.texinfo, readline-4.3.orig/doc/hsuser.texinfo, readline-4.3.orig/doc/manvers.texinfo, readline-4.3.orig/doc/readline.0, readline-4.3.orig/doc/readline.3, readline-4.3.orig/doc/readline.dvi, readline-4.3.orig/doc/readline.html, readline-4.3.orig/doc/readline.info, readline-4.3.orig/doc/readline.ps, readline-4.3.orig/doc/readline_3.ps, readline-4.3.orig/doc/rlman.texinfo, readline-4.3.orig/doc/rltech.texinfo, readline-4.3.orig/doc/rluser.texinfo, readline-4.3.orig/doc/rluserman.dvi, readline-4.3.orig/doc/rluserman.html, readline-4.3.orig/doc/rluserman.info, readline-4.3.orig/doc/rluserman.ps, readline-4.3.orig/doc/rluserman.texinfo, readline-4.3.orig/doc/texi2dvi, readline-4.3.orig/doc/texi2html, readline-4.3.orig/doc/texinfo.tex, readline-4.3.orig/examples/Inputrc, readline-4.3.orig/examples/Makefile.in, readline-4.3.orig/examples/excallback.c, readline-4.3.orig/examples/fileman.c, readline-4.3.orig/examples/histexamp.c, readline-4.3.orig/examples/manexamp.c, readline-4.3.orig/examples/readlinebuf.h, readline-4.3.orig/examples/rl.c, readline-4.3.orig/examples/rlcat.c, readline-4.3.orig/examples/rlfe.c, readline-4.3.orig/examples/rltest.c, readline-4.3.orig/examples/rlversion.c, readline-4.3.orig/shlib/Makefile.in, readline-4.3.orig/support/config.guess, readline-4.3.orig/support/config.sub, readline-4.3.orig/support/install.sh, readline-4.3.orig/support/mkdirs, readline-4.3.orig/support/mkdist, readline-4.3.orig/support/shlib-install, readline-4.3.orig/support/shobj-conf, readline-4.3.orig/support/wcwidth.c, readline-doc-4.3/MANIFEST.doc, readline-doc-4.3/doc/history.0, readline-doc-4.3/doc/history.dvi, readline-doc-4.3/doc/history.html, readline-doc-4.3/doc/history.info, readline-doc-4.3/doc/history.ps, readline-doc-4.3/doc/history_3.ps, readline-doc-4.3/doc/readline.0, readline-doc-4.3/doc/readline.dvi, readline-doc-4.3/doc/readline.html, readline-doc-4.3/doc/readline.info, readline-doc-4.3/doc/readline.ps, readline-doc-4.3/doc/readline_3.ps, readline-doc-4.3/doc/rluserman.dvi, readline-doc-4.3/doc/rluserman.html, readline-doc-4.3/doc/rluserman.info, readline-doc-4.3/doc/rluserman.ps: Removed.
-rw-r--r--ChangeLog140
-rw-r--r--RTEMS_Makefiles/Makefile.readline-4.318
-rw-r--r--readline-4.3.orig/CHANGELOG699
-rw-r--r--readline-4.3.orig/CHANGES612
-rw-r--r--readline-4.3.orig/COPYING339
-rw-r--r--readline-4.3.orig/INSTALL273
-rw-r--r--readline-4.3.orig/MANIFEST126
-rw-r--r--readline-4.3.orig/Makefile.in520
-rw-r--r--readline-4.3.orig/README172
-rw-r--r--readline-4.3.orig/USAGE37
-rw-r--r--readline-4.3.orig/aclocal.m41792
-rw-r--r--readline-4.3.orig/ansi_stdlib.h54
-rw-r--r--readline-4.3.orig/bind.c2150
-rw-r--r--readline-4.3.orig/callback.c156
-rw-r--r--readline-4.3.orig/chardefs.h159
-rw-r--r--readline-4.3.orig/compat.c113
-rw-r--r--readline-4.3.orig/complete.c2004
-rw-r--r--readline-4.3.orig/config.h.in200
-rwxr-xr-xreadline-4.3.orig/configure5865
-rw-r--r--readline-4.3.orig/configure.in206
-rw-r--r--readline-4.3.orig/display.c2196
-rw-r--r--readline-4.3.orig/doc/Makefile.in234
-rw-r--r--readline-4.3.orig/doc/hist.texinfo110
-rw-r--r--readline-4.3.orig/doc/history.0660
-rw-r--r--readline-4.3.orig/doc/history.3640
-rw-r--r--readline-4.3.orig/doc/history.dvibin48868 -> 0 bytes
-rw-r--r--readline-4.3.orig/doc/history.html1639
-rw-r--r--readline-4.3.orig/doc/history.info840
-rw-r--r--readline-4.3.orig/doc/history.ps1658
-rw-r--r--readline-4.3.orig/doc/history_3.ps800
-rw-r--r--readline-4.3.orig/doc/hstech.texinfo550
-rw-r--r--readline-4.3.orig/doc/hsuser.texinfo437
-rw-r--r--readline-4.3.orig/doc/manvers.texinfo10
-rw-r--r--readline-4.3.orig/doc/readline.0997
-rw-r--r--readline-4.3.orig/doc/readline.31272
-rw-r--r--readline-4.3.orig/doc/readline.dvibin235920 -> 0 bytes
-rw-r--r--readline-4.3.orig/doc/readline.html5908
-rw-r--r--readline-4.3.orig/doc/readline.info3638
-rw-r--r--readline-4.3.orig/doc/readline.ps5200
-rw-r--r--readline-4.3.orig/doc/readline_3.ps1294
-rw-r--r--readline-4.3.orig/doc/rlman.texinfo108
-rw-r--r--readline-4.3.orig/doc/rltech.texinfo2165
-rw-r--r--readline-4.3.orig/doc/rluser.texinfo1796
-rw-r--r--readline-4.3.orig/doc/rluserman.dvibin62592 -> 0 bytes
-rw-r--r--readline-4.3.orig/doc/rluserman.html2184
-rw-r--r--readline-4.3.orig/doc/rluserman.info1260
-rw-r--r--readline-4.3.orig/doc/rluserman.ps2001
-rw-r--r--readline-4.3.orig/doc/rluserman.texinfo94
-rwxr-xr-xreadline-4.3.orig/doc/texi2dvi568
-rwxr-xr-xreadline-4.3.orig/doc/texi2html5429
-rw-r--r--readline-4.3.orig/doc/texinfo.tex5992
-rw-r--r--readline-4.3.orig/emacs_keymap.c873
-rw-r--r--readline-4.3.orig/examples/Inputrc81
-rw-r--r--readline-4.3.orig/examples/Makefile.in104
-rw-r--r--readline-4.3.orig/examples/excallback.c188
-rw-r--r--readline-4.3.orig/examples/fileman.c485
-rw-r--r--readline-4.3.orig/examples/histexamp.c112
-rw-r--r--readline-4.3.orig/examples/manexamp.c112
-rw-r--r--readline-4.3.orig/examples/readlinebuf.h139
-rw-r--r--readline-4.3.orig/examples/rl.c151
-rw-r--r--readline-4.3.orig/examples/rlcat.c174
-rw-r--r--readline-4.3.orig/examples/rlfe.c1042
-rw-r--r--readline-4.3.orig/examples/rltest.c87
-rw-r--r--readline-4.3.orig/examples/rlversion.c43
-rw-r--r--readline-4.3.orig/funmap.c253
-rw-r--r--readline-4.3.orig/histexpand.c1491
-rw-r--r--readline-4.3.orig/histfile.c479
-rw-r--r--readline-4.3.orig/histlib.h82
-rw-r--r--readline-4.3.orig/history.c381
-rw-r--r--readline-4.3.orig/history.h246
-rw-r--r--readline-4.3.orig/histsearch.c195
-rw-r--r--readline-4.3.orig/input.c540
-rw-r--r--readline-4.3.orig/isearch.c560
-rw-r--r--readline-4.3.orig/keymaps.c150
-rw-r--r--readline-4.3.orig/keymaps.h103
-rw-r--r--readline-4.3.orig/kill.c652
-rw-r--r--readline-4.3.orig/macro.c262
-rw-r--r--readline-4.3.orig/mbutil.c337
-rw-r--r--readline-4.3.orig/misc.c496
-rw-r--r--readline-4.3.orig/nls.c225
-rw-r--r--readline-4.3.orig/parens.c179
-rw-r--r--readline-4.3.orig/posixdir.h57
-rw-r--r--readline-4.3.orig/posixjmp.h40
-rw-r--r--readline-4.3.orig/posixstat.h142
-rw-r--r--readline-4.3.orig/readline.c973
-rw-r--r--readline-4.3.orig/readline.h799
-rw-r--r--readline-4.3.orig/rlconf.h60
-rw-r--r--readline-4.3.orig/rldefs.h156
-rw-r--r--readline-4.3.orig/rlmbutil.h108
-rw-r--r--readline-4.3.orig/rlprivate.h284
-rw-r--r--readline-4.3.orig/rlshell.h34
-rw-r--r--readline-4.3.orig/rlstdc.h45
-rw-r--r--readline-4.3.orig/rltty.c911
-rw-r--r--readline-4.3.orig/rltty.h82
-rw-r--r--readline-4.3.orig/rltypedefs.h88
-rw-r--r--readline-4.3.orig/rlwinsize.h57
-rw-r--r--readline-4.3.orig/savestring.c36
-rw-r--r--readline-4.3.orig/search.c465
-rw-r--r--readline-4.3.orig/shell.c196
-rw-r--r--readline-4.3.orig/shlib/Makefile.in437
-rw-r--r--readline-4.3.orig/signals.c398
-rwxr-xr-xreadline-4.3.orig/support/config.guess1393
-rw-r--r--readline-4.3.orig/support/config.sub1497
-rwxr-xr-xreadline-4.3.orig/support/install.sh247
-rwxr-xr-xreadline-4.3.orig/support/mkdirs48
-rwxr-xr-xreadline-4.3.orig/support/mkdist120
-rwxr-xr-xreadline-4.3.orig/support/shlib-install156
-rwxr-xr-xreadline-4.3.orig/support/shobj-conf458
-rw-r--r--readline-4.3.orig/support/wcwidth.c236
-rw-r--r--readline-4.3.orig/tcap.h60
-rw-r--r--readline-4.3.orig/terminal.c662
-rw-r--r--readline-4.3.orig/text.c1540
-rw-r--r--readline-4.3.orig/tilde.c458
-rw-r--r--readline-4.3.orig/tilde.h78
-rw-r--r--readline-4.3.orig/undo.c263
-rw-r--r--readline-4.3.orig/util.c338
-rw-r--r--readline-4.3.orig/vi_keymap.c877
-rw-r--r--readline-4.3.orig/vi_mode.c1485
-rw-r--r--readline-4.3.orig/xmalloc.c88
-rw-r--r--readline-4.3.orig/xmalloc.h46
-rw-r--r--readline-4.3/CHANGELOG-ReadLine699
-rw-r--r--readline-4.3/CHANGES612
-rw-r--r--readline-4.3/COPYING339
-rw-r--r--readline-4.3/ChangeLog5
-rw-r--r--readline-4.3/INSTALL273
-rw-r--r--readline-4.3/MANIFEST126
-rw-r--r--readline-4.3/Makefile.in520
-rw-r--r--readline-4.3/README172
-rw-r--r--readline-4.3/USAGE37
-rw-r--r--readline-4.3/aclocal.m41792
-rw-r--r--readline-4.3/ansi_stdlib.h54
-rw-r--r--readline-4.3/bind.c2150
-rw-r--r--readline-4.3/callback.c156
-rw-r--r--readline-4.3/chardefs.h159
-rw-r--r--readline-4.3/compat.c113
-rw-r--r--readline-4.3/complete.c2004
-rw-r--r--readline-4.3/config.h.in200
-rwxr-xr-xreadline-4.3/configure5865
-rw-r--r--readline-4.3/configure.in206
-rw-r--r--readline-4.3/display.c2196
-rw-r--r--readline-4.3/doc/Makefile.in234
-rw-r--r--readline-4.3/doc/hist.texinfo110
-rw-r--r--readline-4.3/doc/history.3640
-rw-r--r--readline-4.3/doc/hstech.texinfo550
-rw-r--r--readline-4.3/doc/hsuser.texinfo437
-rw-r--r--readline-4.3/doc/manvers.texinfo10
-rw-r--r--readline-4.3/doc/readline.31272
-rw-r--r--readline-4.3/doc/rlman.texinfo108
-rw-r--r--readline-4.3/doc/rltech.texinfo2165
-rw-r--r--readline-4.3/doc/rluser.texinfo1796
-rw-r--r--readline-4.3/doc/rluserman.texinfo94
-rwxr-xr-xreadline-4.3/doc/texi2dvi568
-rwxr-xr-xreadline-4.3/doc/texi2html5429
-rw-r--r--readline-4.3/doc/texinfo.tex5992
-rw-r--r--readline-4.3/emacs_keymap.c873
-rw-r--r--readline-4.3/examples/Inputrc81
-rw-r--r--readline-4.3/examples/Makefile.in104
-rw-r--r--readline-4.3/examples/excallback.c188
-rw-r--r--readline-4.3/examples/fileman.c485
-rw-r--r--readline-4.3/examples/histexamp.c112
-rw-r--r--readline-4.3/examples/manexamp.c112
-rw-r--r--readline-4.3/examples/readlinebuf.h139
-rw-r--r--readline-4.3/examples/rl.c151
-rw-r--r--readline-4.3/examples/rlcat.c174
-rw-r--r--readline-4.3/examples/rlfe.c1042
-rw-r--r--readline-4.3/examples/rltest.c87
-rw-r--r--readline-4.3/examples/rlversion.c43
-rw-r--r--readline-4.3/funmap.c253
-rw-r--r--readline-4.3/histexpand.c1491
-rw-r--r--readline-4.3/histfile.c479
-rw-r--r--readline-4.3/histlib.h82
-rw-r--r--readline-4.3/history.c381
-rw-r--r--readline-4.3/history.h246
-rw-r--r--readline-4.3/histsearch.c195
-rw-r--r--readline-4.3/input.c540
-rw-r--r--readline-4.3/isearch.c560
-rw-r--r--readline-4.3/keymaps.c150
-rw-r--r--readline-4.3/keymaps.h103
-rw-r--r--readline-4.3/kill.c652
-rw-r--r--readline-4.3/macro.c262
-rw-r--r--readline-4.3/mbutil.c337
-rw-r--r--readline-4.3/misc.c496
-rw-r--r--readline-4.3/nls.c225
-rw-r--r--readline-4.3/parens.c179
-rw-r--r--readline-4.3/posixdir.h57
-rw-r--r--readline-4.3/posixjmp.h40
-rw-r--r--readline-4.3/posixstat.h142
-rw-r--r--readline-4.3/readline.c973
-rw-r--r--readline-4.3/readline.h799
-rw-r--r--readline-4.3/rlconf.h60
-rw-r--r--readline-4.3/rldefs.h156
-rw-r--r--readline-4.3/rlmbutil.h108
-rw-r--r--readline-4.3/rlprivate.h284
-rw-r--r--readline-4.3/rlshell.h34
-rw-r--r--readline-4.3/rlstdc.h45
-rw-r--r--readline-4.3/rltty.c911
-rw-r--r--readline-4.3/rltty.h82
-rw-r--r--readline-4.3/rltypedefs.h88
-rw-r--r--readline-4.3/rlwinsize.h57
-rw-r--r--readline-4.3/savestring.c36
-rw-r--r--readline-4.3/search.c465
-rw-r--r--readline-4.3/shell.c196
-rw-r--r--readline-4.3/shlib/Makefile.in437
-rw-r--r--readline-4.3/signals.c400
-rwxr-xr-xreadline-4.3/support/config.guess1393
-rw-r--r--readline-4.3/support/config.sub1498
-rwxr-xr-xreadline-4.3/support/install.sh247
-rwxr-xr-xreadline-4.3/support/mkdirs48
-rwxr-xr-xreadline-4.3/support/mkdist120
-rwxr-xr-xreadline-4.3/support/shlib-install156
-rwxr-xr-xreadline-4.3/support/shobj-conf458
-rw-r--r--readline-4.3/support/wcwidth.c236
-rw-r--r--readline-4.3/tcap.h60
-rw-r--r--readline-4.3/terminal.c662
-rw-r--r--readline-4.3/text.c1540
-rw-r--r--readline-4.3/tilde.c458
-rw-r--r--readline-4.3/tilde.h78
-rw-r--r--readline-4.3/undo.c263
-rw-r--r--readline-4.3/util.c338
-rw-r--r--readline-4.3/vi_keymap.c877
-rw-r--r--readline-4.3/vi_mode.c1485
-rw-r--r--readline-4.3/xmalloc.c88
-rw-r--r--readline-4.3/xmalloc.h46
-rw-r--r--readline-doc-4.3/MANIFEST.doc21
-rw-r--r--readline-doc-4.3/doc/history.0660
-rw-r--r--readline-doc-4.3/doc/history.dvibin48868 -> 0 bytes
-rw-r--r--readline-doc-4.3/doc/history.html1639
-rw-r--r--readline-doc-4.3/doc/history.info840
-rw-r--r--readline-doc-4.3/doc/history.ps1658
-rw-r--r--readline-doc-4.3/doc/history_3.ps800
-rw-r--r--readline-doc-4.3/doc/readline.0997
-rw-r--r--readline-doc-4.3/doc/readline.dvibin235920 -> 0 bytes
-rw-r--r--readline-doc-4.3/doc/readline.html5908
-rw-r--r--readline-doc-4.3/doc/readline.info3638
-rw-r--r--readline-doc-4.3/doc/readline.ps5200
-rw-r--r--readline-doc-4.3/doc/readline_3.ps1294
-rw-r--r--readline-doc-4.3/doc/rluserman.dvibin62592 -> 0 bytes
-rw-r--r--readline-doc-4.3/doc/rluserman.html2184
-rw-r--r--readline-doc-4.3/doc/rluserman.info1260
-rw-r--r--readline-doc-4.3/doc/rluserman.ps2001
240 files changed, 140 insertions, 181641 deletions
diff --git a/ChangeLog b/ChangeLog
index c877d9d..96b4f78 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,145 @@
2011-04-08 Joel Sherrill <joel.sherrill@oarcorp.com>
+ * RTEMS_Makefiles/Makefile.readline-4.3,
+ readline-4.3/CHANGELOG-ReadLine, readline-4.3/CHANGES,
+ readline-4.3/COPYING, readline-4.3/ChangeLog, readline-4.3/INSTALL,
+ readline-4.3/MANIFEST, readline-4.3/Makefile.in, readline-4.3/README,
+ readline-4.3/USAGE, readline-4.3/aclocal.m4,
+ readline-4.3/ansi_stdlib.h, readline-4.3/bind.c,
+ readline-4.3/callback.c, readline-4.3/chardefs.h,
+ readline-4.3/compat.c, readline-4.3/complete.c,
+ readline-4.3/config.h.in, readline-4.3/configure,
+ readline-4.3/configure.in, readline-4.3/display.c,
+ readline-4.3/emacs_keymap.c, readline-4.3/funmap.c,
+ readline-4.3/histexpand.c, readline-4.3/histfile.c,
+ readline-4.3/histlib.h, readline-4.3/history.c,
+ readline-4.3/history.h, readline-4.3/histsearch.c,
+ readline-4.3/input.c, readline-4.3/isearch.c, readline-4.3/keymaps.c,
+ readline-4.3/keymaps.h, readline-4.3/kill.c, readline-4.3/macro.c,
+ readline-4.3/mbutil.c, readline-4.3/misc.c, readline-4.3/nls.c,
+ readline-4.3/parens.c, readline-4.3/posixdir.h,
+ readline-4.3/posixjmp.h, readline-4.3/posixstat.h,
+ readline-4.3/readline.c, readline-4.3/readline.h,
+ readline-4.3/rlconf.h, readline-4.3/rldefs.h,
+ readline-4.3/rlmbutil.h, readline-4.3/rlprivate.h,
+ readline-4.3/rlshell.h, readline-4.3/rlstdc.h, readline-4.3/rltty.c,
+ readline-4.3/rltty.h, readline-4.3/rltypedefs.h,
+ readline-4.3/rlwinsize.h, readline-4.3/savestring.c,
+ readline-4.3/search.c, readline-4.3/shell.c, readline-4.3/signals.c,
+ readline-4.3/tcap.h, readline-4.3/terminal.c, readline-4.3/text.c,
+ readline-4.3/tilde.c, readline-4.3/tilde.h, readline-4.3/undo.c,
+ readline-4.3/util.c, readline-4.3/vi_keymap.c,
+ readline-4.3/vi_mode.c, readline-4.3/xmalloc.c,
+ readline-4.3/xmalloc.h, readline-4.3/doc/Makefile.in,
+ readline-4.3/doc/hist.texinfo, readline-4.3/doc/history.3,
+ readline-4.3/doc/hstech.texinfo, readline-4.3/doc/hsuser.texinfo,
+ readline-4.3/doc/manvers.texinfo, readline-4.3/doc/readline.3,
+ readline-4.3/doc/rlman.texinfo, readline-4.3/doc/rltech.texinfo,
+ readline-4.3/doc/rluser.texinfo, readline-4.3/doc/rluserman.texinfo,
+ readline-4.3/doc/texi2dvi, readline-4.3/doc/texi2html,
+ readline-4.3/doc/texinfo.tex, readline-4.3/examples/Inputrc,
+ readline-4.3/examples/Makefile.in,
+ readline-4.3/examples/excallback.c, readline-4.3/examples/fileman.c,
+ readline-4.3/examples/histexamp.c, readline-4.3/examples/manexamp.c,
+ readline-4.3/examples/readlinebuf.h, readline-4.3/examples/rl.c,
+ readline-4.3/examples/rlcat.c, readline-4.3/examples/rlfe.c,
+ readline-4.3/examples/rltest.c, readline-4.3/examples/rlversion.c,
+ readline-4.3/shlib/Makefile.in, readline-4.3/support/config.guess,
+ readline-4.3/support/config.sub, readline-4.3/support/install.sh,
+ readline-4.3/support/mkdirs, readline-4.3/support/mkdist,
+ readline-4.3/support/shlib-install, readline-4.3/support/shobj-conf,
+ readline-4.3/support/wcwidth.c, readline-4.3.orig/CHANGELOG,
+ readline-4.3.orig/CHANGES, readline-4.3.orig/COPYING,
+ readline-4.3.orig/INSTALL, readline-4.3.orig/MANIFEST,
+ readline-4.3.orig/Makefile.in, readline-4.3.orig/README,
+ readline-4.3.orig/USAGE, readline-4.3.orig/aclocal.m4,
+ readline-4.3.orig/ansi_stdlib.h, readline-4.3.orig/bind.c,
+ readline-4.3.orig/callback.c, readline-4.3.orig/chardefs.h,
+ readline-4.3.orig/compat.c, readline-4.3.orig/complete.c,
+ readline-4.3.orig/config.h.in, readline-4.3.orig/configure,
+ readline-4.3.orig/configure.in, readline-4.3.orig/display.c,
+ readline-4.3.orig/emacs_keymap.c, readline-4.3.orig/funmap.c,
+ readline-4.3.orig/histexpand.c, readline-4.3.orig/histfile.c,
+ readline-4.3.orig/histlib.h, readline-4.3.orig/history.c,
+ readline-4.3.orig/history.h, readline-4.3.orig/histsearch.c,
+ readline-4.3.orig/input.c, readline-4.3.orig/isearch.c,
+ readline-4.3.orig/keymaps.c, readline-4.3.orig/keymaps.h,
+ readline-4.3.orig/kill.c, readline-4.3.orig/macro.c,
+ readline-4.3.orig/mbutil.c, readline-4.3.orig/misc.c,
+ readline-4.3.orig/nls.c, readline-4.3.orig/parens.c,
+ readline-4.3.orig/posixdir.h, readline-4.3.orig/posixjmp.h,
+ readline-4.3.orig/posixstat.h, readline-4.3.orig/readline.c,
+ readline-4.3.orig/readline.h, readline-4.3.orig/rlconf.h,
+ readline-4.3.orig/rldefs.h, readline-4.3.orig/rlmbutil.h,
+ readline-4.3.orig/rlprivate.h, readline-4.3.orig/rlshell.h,
+ readline-4.3.orig/rlstdc.h, readline-4.3.orig/rltty.c,
+ readline-4.3.orig/rltty.h, readline-4.3.orig/rltypedefs.h,
+ readline-4.3.orig/rlwinsize.h, readline-4.3.orig/savestring.c,
+ readline-4.3.orig/search.c, readline-4.3.orig/shell.c,
+ readline-4.3.orig/signals.c, readline-4.3.orig/tcap.h,
+ readline-4.3.orig/terminal.c, readline-4.3.orig/text.c,
+ readline-4.3.orig/tilde.c, readline-4.3.orig/tilde.h,
+ readline-4.3.orig/undo.c, readline-4.3.orig/util.c,
+ readline-4.3.orig/vi_keymap.c, readline-4.3.orig/vi_mode.c,
+ readline-4.3.orig/xmalloc.c, readline-4.3.orig/xmalloc.h,
+ readline-4.3.orig/doc/Makefile.in,
+ readline-4.3.orig/doc/hist.texinfo, readline-4.3.orig/doc/history.0,
+ readline-4.3.orig/doc/history.3, readline-4.3.orig/doc/history.dvi,
+ readline-4.3.orig/doc/history.html,
+ readline-4.3.orig/doc/history.info, readline-4.3.orig/doc/history.ps,
+ readline-4.3.orig/doc/history_3.ps,
+ readline-4.3.orig/doc/hstech.texinfo,
+ readline-4.3.orig/doc/hsuser.texinfo,
+ readline-4.3.orig/doc/manvers.texinfo,
+ readline-4.3.orig/doc/readline.0, readline-4.3.orig/doc/readline.3,
+ readline-4.3.orig/doc/readline.dvi,
+ readline-4.3.orig/doc/readline.html,
+ readline-4.3.orig/doc/readline.info,
+ readline-4.3.orig/doc/readline.ps,
+ readline-4.3.orig/doc/readline_3.ps,
+ readline-4.3.orig/doc/rlman.texinfo,
+ readline-4.3.orig/doc/rltech.texinfo,
+ readline-4.3.orig/doc/rluser.texinfo,
+ readline-4.3.orig/doc/rluserman.dvi,
+ readline-4.3.orig/doc/rluserman.html,
+ readline-4.3.orig/doc/rluserman.info,
+ readline-4.3.orig/doc/rluserman.ps,
+ readline-4.3.orig/doc/rluserman.texinfo,
+ readline-4.3.orig/doc/texi2dvi, readline-4.3.orig/doc/texi2html,
+ readline-4.3.orig/doc/texinfo.tex,
+ readline-4.3.orig/examples/Inputrc,
+ readline-4.3.orig/examples/Makefile.in,
+ readline-4.3.orig/examples/excallback.c,
+ readline-4.3.orig/examples/fileman.c,
+ readline-4.3.orig/examples/histexamp.c,
+ readline-4.3.orig/examples/manexamp.c,
+ readline-4.3.orig/examples/readlinebuf.h,
+ readline-4.3.orig/examples/rl.c, readline-4.3.orig/examples/rlcat.c,
+ readline-4.3.orig/examples/rlfe.c,
+ readline-4.3.orig/examples/rltest.c,
+ readline-4.3.orig/examples/rlversion.c,
+ readline-4.3.orig/shlib/Makefile.in,
+ readline-4.3.orig/support/config.guess,
+ readline-4.3.orig/support/config.sub,
+ readline-4.3.orig/support/install.sh,
+ readline-4.3.orig/support/mkdirs, readline-4.3.orig/support/mkdist,
+ readline-4.3.orig/support/shlib-install,
+ readline-4.3.orig/support/shobj-conf,
+ readline-4.3.orig/support/wcwidth.c, readline-doc-4.3/MANIFEST.doc,
+ readline-doc-4.3/doc/history.0, readline-doc-4.3/doc/history.dvi,
+ readline-doc-4.3/doc/history.html, readline-doc-4.3/doc/history.info,
+ readline-doc-4.3/doc/history.ps, readline-doc-4.3/doc/history_3.ps,
+ readline-doc-4.3/doc/readline.0, readline-doc-4.3/doc/readline.dvi,
+ readline-doc-4.3/doc/readline.html,
+ readline-doc-4.3/doc/readline.info, readline-doc-4.3/doc/readline.ps,
+ readline-doc-4.3/doc/readline_3.ps,
+ readline-doc-4.3/doc/rluserman.dvi,
+ readline-doc-4.3/doc/rluserman.html,
+ readline-doc-4.3/doc/rluserman.info,
+ readline-doc-4.3/doc/rluserman.ps: Removed.
+
+2011-04-08 Joel Sherrill <joel.sherrill@oarcorp.com>
+
* RTEMS_Makefiles/Makefile.readline-6.2, readline-6.2/CHANGELOG,
readline-6.2/CHANGES, readline-6.2/COPYING, readline-6.2/INSTALL,
readline-6.2/MANIFEST, readline-6.2/Makefile.in, readline-6.2/NEWS,
diff --git a/RTEMS_Makefiles/Makefile.readline-4.3 b/RTEMS_Makefiles/Makefile.readline-4.3
deleted file mode 100644
index 36644d2..0000000
--- a/RTEMS_Makefiles/Makefile.readline-4.3
+++ /dev/null
@@ -1,18 +0,0 @@
-include ../RTEMS_Makefiles/Makefile.common
-
-#
-# Running make distclean cleans up documentation files that require
-# special tools to regenerate. Work around this problem by just
-# copying the documentation files from another directory.
-#
-all:
- bash_cv_have_mbstate_t=yes ./configure \
- --host=$(RTEMS_CPU)-rtems \
- --prefix=$(exec_prefix) \
- --libdir=$(exec_prefix)/$(RTEMS_BSP)/lib \
- --includedir=$(exec_prefix)/$(RTEMS_BSP)/lib/include \
- --disable-shared
- cp ../readline-doc-4.3/doc/????* doc
- make
- cd doc ; make
- make install
diff --git a/readline-4.3.orig/CHANGELOG b/readline-4.3.orig/CHANGELOG
deleted file mode 100644
index 350defa..0000000
--- a/readline-4.3.orig/CHANGELOG
+++ /dev/null
@@ -1,699 +0,0 @@
-[Readline-specific changelog. Descriptions of changes to the source are
- found in the bash changelog.]
-
- 6/9
- ---
-Makefile.in
- - quote value of ${INSTALL_DATA} when passing it to makes in
- subdirectories
-
- 7/1
- ---
-Makefile.in
- - don't pass INSTALL_DATA to a make in the `doc' subdirectory; let
- autoconf set the value itself in the Makefile
- - removed a stray `-' before $(RANLIB) in the `install' recipe
-
-doc/Makefile.in
- - add a VPATH assignment so the documentation is not remade if it's
- already up-to-date in the distribution
-
-configure.in
- - call AC_SUBST(LOCAL_LDFLAGS), since Makefile.in contains
- @LOCAL_LDFLAGS@
-
- 7/9
- ---
-
-config.h.in
- - add define lines for STRUCT_WINSIZE_IN_SYS_IOCTL and
- STRUCT_WINSIZE_IN_TERMIOS
-
-configure.in
- - call BASH_STRUCT_WINSIZE to look for the definition of
- `struct winsize'
-
- 7/17
- ----
-configure.in
- - call AC_MINIX
-
-config.h.in
- - add define line for AC_MINIX
-
- 7/18
- ----
-Makefile.in
- - add `install-shared' and `uninstall-shared' targets
-
- 8/4
- ---
-Makefile.in
- - install and uninstall libhistory.a in the `install' and
- `uninstall' targets
-
- 9/4
- ---
-configure.in
- - bumped LIBVERSION up to 2.1.1, indicating that this is patch
- level 1 to release 2.1
-
-
- 9/16
- ----
-Makefile.in
- - `make distclean' now descends into the `examples' subdir
-
-doc/Makefile.in
- - the `distclean' and `maintainer-clean' targets should remove
- Makefile
-
-examples/Makefile.in
- - added the various clean targets
-
- 4/2
- ---
-configure.in
- - bumped LIBVERSION up to 2.2
-
- 4/18
- ----
-[readline-2.2 released]
-
- 4/20
- ----
-Makefile.in
- - make `libhistory.a' a dependency of `install'
- - fixed a typo in the recipe for `install' that copied libreadline.a
- to libhistory.old right after installing it
-
- 4/27
- ----
-doc/Makefile.in
- - install {readline,history}.info out of the source directory if
- they are not found in the current (build) directory -- only an
- issue if the libraries are built in a different directory than
- the source directory
-
- 5/1
- ---
-support/shobj-conf
- - script from the bash distribution to do shared object and library
- configuration
-
-shlib/Makefile.in
- - new directory and makefile to handle building shared versions of
- libreadline and libhistory, controlled by support/shobj-conf
-
- 5/7
- ---
-doc/Makefile.in
- - set SHELL to /bin/sh, rather than relying on make to be correct
-
- 5/14
- ----
-savestring.c
- - new file, moved from shell.c, for backwards compatibility
-
-Makefile.in, shlib/Makefile.in
- - make sure savestring.c is compiled and added to libreadline and
- libhistory
-
-[THERE ARE NO MORE #ifdef SHELL LINES IN THE C SOURCE FILES.]
-
- 5/15
- ----
-README
- - updated description of shared library creation for the new scheme
-
-[THERE ARE NO MORE #ifdef SHELL LINES IN ANY OF THE SOURCE FILES.]
-
-Makefile.in
- - bumped SHLIB_MAJOR up to 4 since we've augmented the library
- API
- - rlconf.h is now one of the installed headers, so applications can
- find out whether things like vi-mode are available in the installed
- libreadline
-
- 5/20
- ----
-configure.in
- - changed RL_LIBRARY_VERSION to 4.0 to match the version of the
- installed shared libraries
-
- 6/5
- ---
-rlstdc.h
- - new file
-
-Makefile.in
- - rlstdc.h is now one of the installed headers
-
- 8/3
- ---
-shlib/Makefile.in
- - made the suffix rule that creates xx.so from xx.c write the
- compiler output to `a.o', which is then mv'd to xx.so, because
- some compilers (Sun WSpro 4.2, for example) don't allow any
- suffixes other than `.o' for `cc -c' (not even `a.out')
-
- 9/15
- ----
-
-Makefile.in
- - AR and ARFLAGS are now substituted by configure, used in recipes
- that build the libraries
-
-configure.in
- - use AC_CHECK_PROG to check for ar
- - set ARFLAGS if it has not already been set in the environment
-
- 10/5
- ----
-Makefile.in
- - removed savestring.o from object file list
-
- 10/28
- -----
-shlib/Makefile.in
- - don't use a fixed filename in the .c.so suffix rule to avoid
- problems with parallel makes
-
- 12/21
- -----
-support/shlib-install
- - new script to install shared readline and history libraries
-
-shlib/Makefile.in
- - changed to call shlib-install for install and uninstall targets
-
-[readline-4.0-beta1 frozen]
-
- 12/22
- -----
-configure.in
- - call AC_SUBST for SHOBJ_XLDFLAGS and SHLIB_LIBS
-
-shlib/Makefile.in
- - SHOBJ_XLDFLAGS and SHLIB_LIBS are now substituted by configure
- - add $(SHLIB_LIBS) at end of command line that builds the shared
- libraries (currently needed only by AIX 4.2)
-
- 12/31
- -----
-MANIFEST, MANIFEST.doc
- - the TOC html files are no longer generated and no longer part of
- the distribution
-
- 2/18/1999
- ---------
-configure.in
- - set MAKE_SHELL to /bin/sh and substitute into the Makefiles
-
-Makefile.in,{doc,examples,shlib}/Makefile.in
- - set SHELL from @MAKE_SHELL@
-
-[readline-4.0 released]
-
- 3/11
- ----
-doc/Makefile.in
- - removed references to HTMLTOC, since separate HTML table-of-contents
- files are no longer created
-
-examples/Makefile.in
- - remove `*.exe' in clean target for MS-DOS
-
-Makefile.in
- - make `readline' target depend on ./libreadline.a
- - configure now substitutes TERMCAP_LIB into Makefile.in
- - use ${TERMCAP_LIB} instead of -ltermcap in recipe for `readline'
- - clean target now removes readline and readline.exe in case they
- get built
-
-configure.in
- - use `pwd.exe' to set BUILD_DIR on MS-DOS DJGPP
-
- 3/15
- ----
-support/shlib-install
- - Irix 5.x and Irix 6.x should install shared libraries like Solaris 2
- - changes for installing on hp-ux 1[01].x
-
- 3/23
- ----
-configure.in
- - make sure that the $CC argument to shobj-conf is quoted
-
- 4/8
- ---
-
-xmalloc.h, rlprivate.h, rlshell.h
- - new files
-
-Makefile.in,shlib/Makefile.in
- - add dependencies on xmalloc.h, rlshell.h
- - add xmalloc.h, rlprivate.h, rlshell.h to list of header files
-
-MANIFEST
- - add xmalloc.h, rlprivate.h, rlshell.h
-
- 4/9
- ---
-Makefile.in,shlib/Makefile.in
- - add dependencies on rlprivate.h
-
- 4/13
- ----
-doc/Makefile.in
- - add variable, PSDVI, which is the desired resolution of the
- generated postscript files. Set to 300 because I don't have
- any 600-dpi printers
- - set LANGUAGE= before calling makeinfo, so messages are in English
- - add rluserman.{info,dvi,ps,html} to appropriate variables
- - add rules to create rluserman.{info,dvi,ps,html}
- - install and uninstall rluserman.info, but don't update the directory
- file in $(infodir) yet
-
-MANIFEST
- - add doc/rluserman.{texinfo,info,dvi,ps,html}
-
- 4/30
- ----
-configure.in
- - updated library version to 4.1
-
- 5/3
- ---
-configure.in
- - SHLIB_MAJOR and SHLIB_MINOR shared library version numbers are
- constructed from $LIBRARY_VERSION and substituted into Makefiles
-
- 5/5
- ---
-support/shlib-install
- - OSF/1 installs shared libraries like Solaris
-
-Makefile.in
- - broke the header file install and uninstall into two new targets:
- install-headers and uninstall-headers
- - install and uninstall depend on install-headers and uninstall-headers
- respectively
- - changed install-shared and uninstall-shared targets to depend on
- install-headers and uninstall-headers, respectively, so users may
- choose to install only the shared libraries. I'm not sure about
- the uninstall one yet -- maybe it should check whether or not
- the static libraries are installed and not remove the header files
- if they are
-
- 9/3
- ---
-configure.in, config.h.in
- - added test for memmove (for later use)
- - changed version to 4.1-beta1
-
- 9/13
- ----
-examples/rlfe.c
- - Per Bothner's `rlfe' readline front-end program
-
-examples/Makefile.in
- - added rules to build rlfe
-
- 9/21
- ----
-support/shlib-install
- - changes to handle FreeBSD-3.x elf or a.out shared libraries, which
- have different semantics and need different naming conventions
-
- 1/24/2000
- ---------
-doc/Makefile.in
- - remove *.bt and *.bts on `make clean'
-
- 2/4
- ---
-
-
-configure.in
- - changed LIBVERSION to 4.1-beta5
-
- 3/17/2000
- ---------
-[readline-4.1 released]
-
- 3/23
- ----
-Makefile.in
- - remove the `-t' argument to ranlib in the install recipe; some
- ranlibs don't have it and attempt to create a file named `-t'
-
- 3/27
- ----
-support/shlib-install
- - install shared libraries unwritable by anyone on HP-UX
- - changed symlinks to relative pathnames on all platforms
-
-shlib/Makefile.in
- - added missing `includedir' assignment, substituted by configure
-
-Makefile.in
- - added missing @SET_MAKE@ so configure can set $MAKE appropriately
-
-configure.in
- - add call to AC_PROG_MAKE_SET
-
- 8/30
- ----
-shlib/Makefile.in
- - change the soname bound into the shared libraries, so it includes
- only the major version number. If it includes the minor version,
- programs depending on it must be rebuilt (which may or may not be
- a bad thing)
-
- 9/6
- ---
-examples/rlfe.c
- - add -l option to log input and output (-a option appends to logfile)
- - add -n option to set readline application name
- - add -v, -h options for version and help information
- - change a few things because getopt() is now used to parse arguments
-
- 9/12
- ----
-support/shlib-install
- - fix up the libname on HPUX 11
-
- 10/18
- -----
-configure.in
- - changed library version to 4.2-alpha
-
- 10/30
- -----
-configure.in
- - add -fsigned-char to LOCAL_CFLAGS for Linux running on the IBM
- S/390
-
-Makefile.in
- - added new file, rltypedefs.h, installed by default with `make install'
-
- 11/2
- ----
-compat.c
- - new file, with backwards-compatibility function definitions
-
-Makefile.in,shlib/Makefile.in
- - make sure that compat.o/compat.so are built and linked apppropriately
-
-support/shobj-conf
- - picked up bash version, which means that shared libs built on
- linux and BSD/OS 4.x will have an soname that does not include
- the minor version number
-
- 11/13
- -----
-examples/rlfe.c
- - rlfe can perform filename completion for relative pathnames in the
- inferior process's context if the OS supports /proc/PID/cwd (linux
- does it OK, Solaris is slightly warped, none of the BSDs have it)
-
- 11/17/2000
- ----------
-[readline-4.2-alpha released]
-
- 11/27
- -----
-Makefile.in,shlib/Makefile.in
- - added dependencies for rltypedefs.h
-
-shlib/Makefile.in
- - changed dependencies on histlib.h to $(topdir)/histlib.h
-
- 1/22
- ----
-configure.in
- - changed release version to 4.2-beta
-
- 2/2
- ---
-examples/Makefile.in
- - build histexamp as part of the examples
-
- 2/5
- ---
-doc/Makefile.in
- - don't remove the dvi, postscript, html, info, and text `objects'
- on a `make distclean', only on a `make maintainer-clean'
-
- 3/6
- ---
-doc/history.{0,3}, doc/history_3.ps
- - new manual page for history library
-
-doc/Makefile.in
- - rules to install and uninstall history.3 in ${man3dir}
- - rules to build history.0 and history_3.ps
-
- 4/2
- ---
-configure.in
- - changed LIBVERSION to `4.2'
-
- 4/5
- ---
-[readline-4.2 frozen]
-
- 4/9
- ---
-[readline-4.2 released]
-
- 5/2
- ---
-Makefile.in,{doc,examples,shlib}/Makefile.in
- - added support for DESTDIR installation root prefix, to support
- building packages
-
-doc/Makefile.in
- - add an info `dir' file entry for rluserman.info on `make install'
- - change man1ext to `.1' and man3ext to `.3'
- - install man pages with a $(man3ext) extension in the target directory
- - add support for installing html documentation if `htmldir' has a
- value
-
-Makefile.in
- - on `make install', install from the `shlib' directory, too
- - on `make uninstall', uninstall in the `doc' and `shlib'
- subdirectories, too
-
-support/shlib-install
- - add `freebsdelf*', `freebsdaout*', Hurd, `sysv4*', `sysv5*', `dgux*'
- targets for symlink creation
-
- 5/7
- ---
-configure.in, config.h.in
- - check for <limits.h>, define HAVE_LIMITS_H if found
-
- 5/8
- ---
-aclocal.m4
- - pick up change to BASH_CHECK_LIB_TERMCAP that adds check for
- libtinfo (termcap-specific portion of ncurses-5.2)
-
- 5/9
- ---
-configure.in
- - call AC_C_CONST to find out whether or not the compiler supports
- `const'
-
-config.h.in
- - placeholder for `const' define, if any
-
- 5/10
- ----
-configure.in
- - fix AC_CHECK_PROG(ar, ...) test to specify right value for the
- case where ar is not found; should produce a better error message
-
- 5/14
- ----
-configure.in,config.h.in
- - check for vsnprintf, define HAVE_VSNPRINTF if found
-
- 5/21
- ----
-configure.in, config.h.in
- - add checks for size_t, ssize_t
-
- 5/30
- ----
-configure.in
- - update autoconf to version 2.50, use in AC_PREREQ
- - changed AC_INIT to new flavor
- - added AC_CONFIG_SRCDIR
- - AC_CONFIG_HEADER -> AC_CONFIG_HEADERS
- - call AC_C_PROTOTYPES
- - AC_RETSIGTYPE -> AC_TYPE_SIGNAL
-
- 8/22
- ----
-configure.in
- - updated the version number to 4.2a
-
-Makefile.in,shlib/Makefile.in
- - make sure tilde.o is built -DREADLINE_LIBRARY when being built as
- part of the standalone library, so it picks up the right include
- files
-
- 8/23
- ----
-support/shlib-install
- - support for Darwin/MacOS X shared library installation
-
- 9/24
- ----
-examples/readlinebuf.h
- - a new file, a C++ streambuf interface that uses readline for I/O.
- Donated by Dimitris Vyzovitis <vyzo@media.mit.edu>
-
- 10/9
- ----
-configure.in
- - replaced call to BASH_HAVE_TIOCGWINSZ with AC_HEADER_TIOCGWINSZ
-
-[readline-4.2a-beta1 frozen]
-
- 10/15
- -----
-configure.in, config.h.in
- - check for <memory.h>, define HAVE_MEMORY_H if found
- - check for <strings.h>, define HAVE_STRINGS_H if found
-
- 10/18
- -----
-configure.in, config.h.in
- - check for isascii, define HAVE_ISASCII if found
-
-configure.in
- - changed the macro names from bash as appropriate:
- BASH_SIGNAL_CHECK -> BASH_SYS_SIGNAL_VINTAGE
- BASH_REINSTALL_SIGHANDLERS -> BASH_SYS_REINSTALL_SIGHANDLERS
- BASH_MISC_SPEED_T -> BASH_CHECK_SPEED_T
-
- 10/22
- -----
-configure.in
- - check for isxdigit with AC_CHECK_FUNCS
-
-config.h.in
- - new define for HAVE_ISXDIGIT
-
- 10/29
- -----
-configure.in, config.h.in
- - check for strpbrk with AC_CHECK_FUNCS, define HAVE_STRPBRK if found
-
- 11/1
- ----
-Makefile.in
- - make sure DESTDIR is passed to install and uninstall makes in
- subdirectories
- - when saving old copies of installed libraries, make sure we use
- DESTDIR for the old installation tree
-
-[readline-4.2a-rc1 frozen]
-
- 11/2
- ----
-Makefile.in, shlib/Makefile.in
- - don't put -I$(includedir) into CFLAGS
-
- 11/15
- -----
-[readline-4.2a released]
-
- 11/20
- -----
-examples/rlcat.c
- - new file
-
-examples/Makefile.in
- - changes for rlcat
-
- 11/28
- -----
-configure.in
- - default TERMCAP_LIB to -lcurses if $prefer_curses == yes (as when
- --with-curses is supplied)
-
-examples/Makefile.in
- - substitute @LDFLAGS@ in LDFLAGS assignment
-
- 11/29
- -----
-config.h.in
- - add necessary defines for multibyte include files and functions
- - add code to define HANDLE_MULTIBYTE if prerequisites are met
-
-configure.in
- - call BASH_CHECK_MULTIBYTE
-
- 12/14
- -----
-config.h.in
- - add #undef PROTOTYPES, filled in by AC_C_PROTOTYPES
-
- 12/17
- -----
-config.h.in
- - moved HANDLE_MULTIBYTE code to rlmbutil.h
-
-rlmbutil.h, mbutil.c
- - new files
-
-Makefile.in, shlib/Makefile.in
- - added rules for mbutil.c
-
- 12/20
- -----
-configure.in
- - added --enable-shared, --enable-static options to configure to
- say which libraries are built by default (both default to yes)
- - if SHLIB_STATUS == 'unsupported', turn off default shared library
- building
- - substitute new STATIC_TARGET, SHARED_TARGET, STATIC_INSTALL_TARGET,
- and SHARED_INSTALL_TARGET
-
-Makefile.in
- - `all' target now depends on (substituted) @STATIC_TARGET@ and
- @SHARED_TARGET@
- - `install' target now depends on (substituted) @STATIC_INSTALL_TARGET@
- and @SHARED_INSTALL_TARGET@
-
-INSTALL, README
- - updated with new info about --enable-shared and --enable-static
-
- 1/10/2002
- ---------
-configure.in
- - bumped the library version number to 4.3
-
- 1/24
- ----
-Makefile.in,shlib/Makefile.in
- - changes for new file, text.c, with character and text handling
- functions from readline.c
-
- 2/20
- ----
-{configure.config.h}.in
- - call AC_C_CHAR_UNSIGNED, define __CHAR_UNSIGNED__ if chars are
- unsigned by default
-
- 5/20
- ----
-doc/Makefile.in
- - new maybe-clean target that removes the generated documentation if
- the build directory differs from the source directory
- - distclean target now depends on maybe-clean
diff --git a/readline-4.3.orig/CHANGES b/readline-4.3.orig/CHANGES
deleted file mode 100644
index bc9fe94..0000000
--- a/readline-4.3.orig/CHANGES
+++ /dev/null
@@ -1,612 +0,0 @@
-This document details the changes between this version, readline-4.3,
-and the previous version, readline-4.2a.
-
-1. Changes to Readline
-
-a. Fixed output of comment-begin character when listing variable values.
-
-b. Added some default key bindings for common escape sequences produced by
- HOME and END keys.
-
-c. Fixed the mark handling code to be more emacs-compatible.
-
-d. A bug was fixed in the code that prints possible completions to keep it
- from printing empty strings in certain circumstances.
-
-e. Change the key sequence printing code to print ESC as M\- if ESC is a
- meta-prefix character -- it's easier for users to understand than \e.
-
-f. Fixed unstifle_history() to return values that match the documentation.
-
-g. Fixed the event loop (rl_event_hook) to handle the case where the input
- file descriptor is invalidated.
-
-h. Fixed the prompt display code to work better when the application has a
- custom redisplay function.
-
-i. Changes to make reading and writing the history file a little faster, and
- to cope with huge history files without calling abort(3) from xmalloc.
-
-j. The vi-mode `S' and `s' commands are now undone correctly.
-
-k. Fixed a problem which caused the display to be messed up when the last
- line of a multi-line prompt (possibly containing invisible characters)
- was longer than the screen width.
-
-2. New Features in Readline
-
-a. Support for key `subsequences': allows, e.g., ESC and ESC-a to both
- be bound to readline functions. Now the arrow keys may be used in vi
- insert mode.
-
-b. When listing completions, and the number of lines displayed is more than
- the screen length, readline uses an internal pager to display the results.
- This is controlled by the `page-completions' variable (default on).
-
-c. New code to handle editing and displaying multibyte characters.
-
-d. The behavior introduced in bash-2.05a of deciding whether or not to
- append a slash to a completed name that is a symlink to a directory has
- been made optional, controlled by the `mark-symlinked-directories'
- variable (default is the 2.05a behavior).
-
-e. The `insert-comment' command now acts as a toggle if given a numeric
- argument: if the first characters on the line don't specify a
- comment, insert one; if they do, delete the comment text
-
-f. New application-settable completion variable:
- rl_completion_mark_symlink_dirs, allows an application's completion
- function to temporarily override the user's preference for appending
- slashes to names which are symlinks to directories.
-
-g. New function available to application completion functions:
- rl_completion_mode, to tell how the completion function was invoked
- and decide which argument to supply to rl_complete_internal (to list
- completions, etc.).
-
-h. Readline now has an overwrite mode, toggled by the `overwrite-mode'
- bindable command, which could be bound to `Insert'.
-
-i. New application-settable completion variable:
- rl_completion_suppress_append, inhibits appending of
- rl_completion_append_character to completed words.
-
-j. New key bindings when reading an incremental search string: ^W yanks
- the currently-matched word out of the current line into the search
- string; ^Y yanks the rest of the current line into the search string,
- DEL or ^H deletes characters from the search string.
-
--------------------------------------------------------------------------------
-This document details the changes between this version, readline-4.2a,
-and the previous version, readline-4.2.
-
-1. Changes to Readline
-
-a. More `const' and type casting fixes.
-
-b. Changed rl_message() to use vsnprintf(3) (if available) to fix buffer
- overflow problems.
-
-c. The completion code no longer appends a `/' or ` ' to a match when
- completing a symbolic link that resolves to a directory name, unless
- the match does not add anything to the word being completed. This
- means that a tab will complete the word up to the full name, but not
- add anything, and a subsequent tab will add a slash.
-
-d. Fixed a trivial typo that made the vi-mode `dT' command not work.
-
-e. Fixed the tty code so that ^S and ^Q can be inserted with rl_quoted_insert.
-
-f. Fixed the tty code so that ^V works more than once.
-
-g. Changed the use of __P((...)) for function prototypes to PARAMS((...))
- because the use of __P in typedefs conflicted g++ and glibc.
-
-h. The completion code now attempts to do a better job of preserving the
- case of the word the user typed if ignoring case in completions.
-
-i. Readline defaults to not echoing the input and lets the terminal
- initialization code enable echoing if there is a controlling terminal.
-
-j. The key binding code now processes only two hex digits after a `\x'
- escape sequence, and the documentation was changed to note that the
- octal and hex escape sequences result in an eight-bit value rather
- than strict ASCII.
-
-k. Fixed a few places where negative array subscripts could have occurred.
-
-l. Fixed the vi-mode code to use a better method to determine the bounds of
- the array used to hold the marks, and to avoid out-of-bounds references.
-
-m. Fixed the defines in chardefs.h to work better when chars are signed.
-
-n. Fixed configure.in to use the new names for bash autoconf macros.
-
-o. Readline no longer attempts to define its own versions of some ctype
- macros if they are implemented as functions in libc but not as macros in
- <ctype.h>.
-
-p. Fixed a problem where rl_backward could possibly set point to before
- the beginning of the line.
-
-q. Fixed Makefile to not put -I/usr/include into CFLAGS, since it can cause
- include file problems.
-
-2. New Features in Readline
-
-a. Added extern declaration for rl_get_termcap to readline.h, making it a
- public function (it was always there, just not in readline.h).
-
-b. New #defines in readline.h: RL_READLINE_VERSION, currently 0x0402,
- RL_VERSION_MAJOR, currently 4, and RL_VERSION_MINOR, currently 2.
-
-c. New readline variable: rl_readline_version, mirrors RL_READLINE_VERSION.
-
-d. New bindable boolean readline variable: match-hidden-files. Controls
- completion of files beginning with a `.' (on Unix). Enabled by default.
-
-e. The history expansion code now allows any character to terminate a
- `:first-' modifier, like csh.
-
-f. The incremental search code remembers the last search string and uses
- it if ^R^R is typed without a search string.
-
-h. New bindable variable `history-preserve-point'. If set, the history
- code attempts to place the user at the same location on each history
- line retrived with previous-history or next-history.
-
--------------------------------------------------------------------------------
-This document details the changes between this version, readline-4.2,
-and the previous version, readline-4.1.
-
-1. Changes to Readline
-
-a. When setting the terminal attributes on systems using `struct termio',
- readline waits for output to drain before changing the attributes.
-
-b. A fix was made to the history word tokenization code to avoid attempts to
- dereference a null pointer.
-
-c. Readline now defaults rl_terminal_name to $TERM if the calling application
- has left it unset, and tries to initialize with the resultant value.
-
-d. Instead of calling (*rl_getc_function)() directly to get input in certain
- places, readline now calls rl_read_key() consistently.
-
-e. Fixed a bug in the completion code that allowed a backslash to quote a
- single quote inside a single-quoted string.
-
-f. rl_prompt is no longer assigned directly from the argument to readline(),
- but uses memory allocated by readline. This allows constant strings to
- be passed to readline without problems arising when the prompt processing
- code wants to modify the string.
-
-g. Fixed a bug that caused non-interactive history searches to return the
- wrong line when performing multiple searches backward for the same string.
-
-h. Many variables, function arguments, and function return values are now
- declared `const' where appropriate, to improve behavior when linking with
- C++ code.
-
-i. The control character detection code now works better on systems where
- `char' is unsigned by default.
-
-j. The vi-mode numeric argument is now capped at 999999, just like emacs mode.
-
-k. The Function, CPFunction, CPPFunction, and VFunction typedefs have been
- replaced with a set of specific prototyped typedefs, though they are
- still in the readline header files for backwards compatibility.
-
-m. Nearly all of the (undocumented) internal global variables in the library
- now have an _rl_ prefix -- there were a number that did not, like
- screenheight, screenwidth, alphabetic, etc.
-
-n. The ding() convenience function has been renamed to rl_ding(), though the
- old function is still defined for backwards compatibility.
-
-o. The completion convenience functions filename_completion_function,
- username_completion_function, and completion_matches now have an rl_
- prefix, though the old names are still defined for backwards compatibility.
-
-p. The functions shared by readline and bash (linkage is satisfied from bash
- when compiling with bash, and internally otherwise) now have an sh_ prefix.
-
-q. Changed the shared library creation procedure on Linux and BSD/OS 4.x so
- that the `soname' contains only the major version number rather than the
- major and minor numbers.
-
-r. Fixed a redisplay bug that occurred when the prompt spanned more than one
- physical line and contained invisible characters.
-
-s. Added a missing `includedir' variable to the Makefile.
-
-t. When installing the shared libraries, make sure symbolic links are relative.
-
-u. Added configure test so that it can set `${MAKE}' appropriately.
-
-v. Fixed a bug in rl_forward that could cause the point to be set to before
- the beginning of the line in vi mode.
-
-w. Fixed a bug in the callback read-char interface to make it work when a
- readline function pushes some input onto the input stream with
- rl_execute_next (like the incremental search functions).
-
-x. Fixed a file descriptor leak in the history file manipulation code that
- was tripped when attempting to truncate a non-regular file (like
- /dev/null).
-
-y. Changes to make all of the exported readline functions declared in
- readline.h have an rl_ prefix (rltty_set_default_bindings is now
- rl_tty_set_default_bindings, crlf is now rl_crlf, etc.)
-
-z. The formatted documentation included in the base readline distribution
- is no longer removed on a `make distclean'.
-
-aa. Some changes were made to avoid gcc warnings with -Wall.
-
-bb. rl_get_keymap_by_name now finds keymaps case-insensitively, so
- `set keymap EMACS' works.
-
-cc. The history file writing and truncation functions now return a useful
- status on error.
-
-dd. Fixed a bug that could cause applications to dereference a NULL pointer
- if a NULL second argument was passed to history_expand().
-
-ee. If a hook function assigned to rl_event_hook sets rl_done to a non-zero
- value, rl_read_key() now immediately returns '\n' (which is assumed to
- be bound to accept-line).
-
-2. New Features in Readline
-
-a. The blink timeout for paren matching is now settable by applications,
- via the rl_set_paren_blink_timeout() function.
-
-b. _rl_executing_macro has been renamed to rl_executing_macro, which means
- it's now part of the public interface.
-
-c. Readline has a new variable, rl_readline_state, which is a bitmap that
- encapsulates the current state of the library; intended for use by
- callbacks and hook functions.
-
-d. rlfe has a new -l option to log input and output (-a appends to logfile),
- a new -n option to set the readline application name, and -v and -h
- options for version and help information.
-
-e. rlfe can now perform filename completion for the inferior process if the
- OS has a /proc/<PID>/cwd that can be read with readlink(2) to get the
- inferior's current working directory.
-
-f. A new file, rltypedefs.h, contains the new typedefs for function pointers
- and is installed by `make install'.
-
-g. New application-callable function rl_set_prompt(const char *prompt):
- expands its prompt string argument and sets rl_prompt to the result.
-
-h. New application-callable function rl_set_screen_size(int rows, int cols):
- public method for applications to set readline's idea of the screen
- dimensions.
-
-i. The history example program (examples/histexamp.c) is now built as one
- of the examples.
-
-j. The documentation has been updated to cover nearly all of the public
- functions and variables declared in readline.h.
-
-k. New function, rl_get_screen_size (int *rows, int *columns), returns
- readline's idea of the screen dimensions.
-
-l. The timeout in rl_gather_tyi (readline keyboard input polling function)
- is now settable via a function (rl_set_keyboard_input_timeout()).
-
-m. Renamed the max_input_history variable to history_max_entries; the old
- variable is maintained for backwards compatibility.
-
-n. The list of characters that separate words for the history tokenizer is
- now settable with a variable: history_word_delimiters. The default
- value is as before.
-
-o. There is a new history.3 manual page documenting the history library.
-
--------------------------------------------------------------------------------
-This document details the changes between this version, readline-4.1,
-and the previous version, readline-4.0.
-
-1. Changes to Readline
-
-a. Changed the HTML documents so that the table-of-contents is no longer
- a separate file.
-
-b. Changes to the shared object configuration for: Irix 5.x, Irix 6.x,
- OSF/1.
-
-c. The shared library major and minor versions are now constructed
- automatically by configure and substituted into the makefiles.
-
-d. It's now possible to install the shared libraries separately from the
- static libraries.
-
-e. The history library tries to truncate the history file only if it is a
- regular file.
-
-f. A bug that caused _rl_dispatch to address negative array indices on
- systems with signed chars was fixed.
-
-g. rl-yank-nth-arg now leaves the history position the same as when it was
- called.
-
-h. Changes to the completion code to handle MS-DOS drive-letter:pathname
- filenames.
-
-i. Completion is now case-insensitive by default on MS-DOS.
-
-j. Fixes to the history file manipulation code for MS-DOS.
-
-k. Readline attempts to bind the arrow keys to appropriate defaults on MS-DOS.
-
-l. Some fixes were made to the redisplay code for better operation on MS-DOS.
-
-m. The quoted-insert code will now insert tty special chars like ^C.
-
-n. A bug was fixed that caused the display code to reference memory before
- the start of the prompt string.
-
-o. More support for __EMX__ (OS/2).
-
-p. A bug was fixed in readline's signal handling that could cause infinite
- recursion in signal handlers.
-
-q. A bug was fixed that caused the point to be less than zero when rl_forward
- was given a very large numeric argument.
-
-r. The vi-mode code now gets characters via the application-settable value
- of rl_getc_function rather than calling rl_getc directly.
-
-s. The history file code now uses O_BINARY mode when reading and writing
- the history file on cygwin32.
-
-t. Fixed a bug in the redisplay code for lines with more than 256 line
- breaks.
-
-u. A bug was fixed which caused invisible character markers to not be
- stripped from the prompt string if the terminal was in no-echo mode.
-
-v. Readline no longer tries to get the variables it needs for redisplay
- from the termcap entry if the calling application has specified its
- own redisplay function. Readline treats the terminal as `dumb' in
- this case.
-
-w. Fixes to the SIGWINCH code so that a multiple-line prompt with escape
- sequences is redrawn correctly.
-
-x. Changes to the install and install-shared targets so that the libraries
- and header files are installed separately.
-
-2. New Features in Readline
-
-a. A new Readline `user manual' is in doc/rluserman.texinfo.
-
-b. Parentheses matching is now always compiled into readline, and enabled
- or disabled when the value of the `blink-matching-paren' variable is
- changed.
-
-c. MS-DOS systems now use ~/_inputrc as the last-ditch inputrc filename.
-
-d. MS-DOS systems now use ~/_history as the default history file.
-
-e. history-search-{forward,backward} now leave the point at the end of the
- line when the string to search for is empty, like
- {reverse,forward}-search-history.
-
-f. history-search-{forward,backward} now leave the last history line found
- in the readline buffer if the second or subsequent search fails.
-
-g. New function for use by applications: rl_on_new_line_with_prompt, used
- when an application displays the prompt itself before calling readline().
-
-h. New variable for use by applications: rl_already_prompted. An application
- that displays the prompt itself before calling readline() must set this to
- a non-zero value.
-
-i. A new variable, rl_gnu_readline_p, always 1. The intent is that an
- application can verify whether or not it is linked with the `real'
- readline library or some substitute.
-
-j. Per Bothner's `rlfe' (pronounced `Ralphie') readline front-end program
- is included in the examples subdirectory, though it is not built
- by default.
-
--------------------------------------------------------------------------------
-This document details the changes between this version, readline-4.0,
-and the previous version, readline-2.2.
-
-1. Changes to Readline
-
-a. The version number is now 4.0, to match the major and minor version
- numbers on the shared readline and history libraries. Future
- releases will maintain the identical numbering.
-
-b. Fixed a typo in the `make install' recipe that copied libreadline.a
- to libhistory.old right after installing it.
-
-c. The readline and history info files are now installed out of the source
- directory if they are not found in the build directory.
-
-d. The library no longer exports a function named `savestring' -- backwards
- compatibility be damned.
-
-e. There is no longer any #ifdef SHELL code in the source files.
-
-f. Some changes were made to the key binding code to fix memory leaks and
- better support Win32 systems.
-
-g. Fixed a silly typo in the paren matching code -- it's microseconds, not
- milliseconds.
-
-h. The readline library should be compilable by C++ compilers.
-
-i. The readline.h public header file now includes function prototypes for
- all readline functions, and some changes were made to fix errors in the
- source files uncovered by the use of prototypes.
-
-j. The maximum numeric argument is now clamped at 1000000.
-
-k. Fixes to rl_yank_last_arg to make it behave better.
-
-l. Fixed a bug in the display code that caused core dumps if the prompt
- string length exceeded 1024 characters.
-
-m. The menu completion code was fixed to properly insert a single completion
- if there is only one match.
-
-n. A bug was fixed that caused the display code to improperly display tabs
- after newlines.
-
-o. A fix was made to the completion code in which a typo caused the wrong
- value to be passed to the function that computed the longest common
- prefix of the list of matches.
-
-p. The completion code now checks the value of rl_filename_completion_desired,
- which is set by application-supplied completion functions to indicate
- that filename completion is being performed, to decide whether or not to
- call an application-supplied `ignore completions' function.
-
-q. Code was added to the history library to catch history substitutions
- using `&' without a previous history substitution or search having been
- performed.
-
-
-2. New Features in Readline
-
-a. There is a new script, support/shobj-conf, to do system-specific shared
- object and library configuration. It generates variables for configure
- to substitute into makefiles. The README file provides a detailed
- explanation of the shared library creation process.
-
-b. Shared libraries and objects are now built in the `shlib' subdirectory.
- There is a shlib/Makefile.in to control the build process. `make shared'
- from the top-level directory is still the right way to build shared
- versions of the libraries.
-
-c. rlconf.h is now installed, so applications can find out which features
- have been compiled into the installed readline and history libraries.
-
-d. rlstdc.h is now an installed header file.
-
-e. Many changes to the signal handling:
- o Readline now catches SIGQUIT and cleans up the tty before returning;
- o A new variable, rl_catch_signals, is available to application writers
- to indicate to readline whether or not it should install its own
- signal handlers for SIGINT, SIGTERM, SIGQUIT, SIGALRM, SIGTSTP,
- SIGTTIN, and SIGTTOU;
- o A new variable, rl_catch_sigwinch, is available to application
- writers to indicate to readline whether or not it should install its
- own signal handler for SIGWINCH, which will chain to the calling
- applications's SIGWINCH handler, if one is installed;
- o There is a new function, rl_free_line_state, for application signal
- handlers to call to free up the state associated with the current
- line after receiving a signal;
- o There is a new function, rl_cleanup_after_signal, to clean up the
- display and terminal state after receiving a signal;
- o There is a new function, rl_reset_after_signal, to reinitialize the
- terminal and display state after an application signal handler
- returns and readline continues
-
-f. There is a new function, rl_resize_terminal, to reset readline's idea of
- the screen size after a SIGWINCH.
-
-g. New public functions: rl_save_prompt and rl_restore_prompt. These were
- previously private functions with a `_' prefix. These functions are
- used when an application wants to write a message to the `message area'
- with rl_message and have the prompt restored correctly when the message
- is erased.
-
-h. New function hook: rl_pre_input_hook, called just before readline starts
- reading input, after initialization.
-
-i. New function hook: rl_display_matches_hook, called when readline would
- display the list of completion matches. The new function
- rl_display_match_list is what readline uses internally, and is available
- for use by application functions called via this hook.
-
-j. New bindable function, delete-char-or-list, like tcsh.
-
-k. A new variable, rl_erase_empty_line, which, if set by an application using
- readline, will cause readline to erase, prompt and all, lines on which the
- only thing typed was a newline.
-
-l. There is a new script, support/shlib-install, to install and uninstall
- the shared readline and history libraries.
-
-m. A new bindable variable, `isearch-terminators', which is a string
- containing the set of characters that should terminate an incremental
- search without being executed as a command.
-
-n. A new bindable function, forward-backward-delete-char.
-
--------------------------------------------------------------------------------
-This document details the changes between this version, readline-2.2,
-and the previous version, readline-2.1.
-
-1. Changes to Readline
-
-a. Added a missing `extern' to a declaration in readline.h that kept
- readline from compiling cleanly on some systems.
-
-b. The history file is now opened with mode 0600 when it is written for
- better security.
-
-c. Changes were made to the SIGWINCH handling code so that prompt redisplay
- is done better.
-
-d. ^G now interrupts incremental searches correctly.
-
-e. A bug that caused a core dump when the set of characters to be quoted
- when completing words was empty was fixed.
-
-f. Fixed a problem in the readline test program rltest.c that caused a core
- dump.
-
-g. The code that handles parser directives in inputrc files now displays
- more error messages.
-
-h. The history expansion code was fixed so that the appearance of the
- history comment character at the beginning of a word inhibits history
- expansion for that word and the rest of the input line.
-
-i. The code that prints completion listings now behaves better if one or
- more of the filenames contains non-printable characters.
-
-j. The time delay when showing matching parentheses is now 0.5 seconds.
-
-
-2. New Features in Readline
-
-a. There is now an option for `iterative' yank-last-arg handline, so a user
- can keep entering `M-.', yanking the last argument of successive history
- lines.
-
-b. New variable, `print-completions-horizontally', which causes completion
- matches to be displayed across the screen (like `ls -x') rather than up
- and down the screen (like `ls').
-
-c. New variable, `completion-ignore-case', which causes filename completion
- and matching to be performed case-insensitively.
-
-d. There is a new bindable command, `magic-space', which causes history
- expansion to be performed on the current readline buffer and a space to
- be inserted into the result.
-
-e. There is a new bindable command, `menu-complete', which enables tcsh-like
- menu completion (successive executions of menu-complete insert a single
- completion match, cycling through the list of possible completions).
-
-f. There is a new bindable command, `paste-from-clipboard', for use on Win32
- systems, to insert the text from the Win32 clipboard into the editing
- buffer.
-
-g. The key sequence translation code now understands printf-style backslash
- escape sequences, including \NNN octal escapes. These escape sequences
- may be used in key sequence definitions or macro values.
-
-h. An `$include' inputrc file parser directive has been added.
diff --git a/readline-4.3.orig/COPYING b/readline-4.3.orig/COPYING
deleted file mode 100644
index 1bf1526..0000000
--- a/readline-4.3.orig/COPYING
+++ /dev/null
@@ -1,339 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- Appendix: How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) 19yy <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) 19yy name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/readline-4.3.orig/INSTALL b/readline-4.3.orig/INSTALL
deleted file mode 100644
index adb27a9..0000000
--- a/readline-4.3.orig/INSTALL
+++ /dev/null
@@ -1,273 +0,0 @@
-Basic Installation
-==================
-
-These are installation instructions for Readline-4.3.
-
-The simplest way to compile readline is:
-
- 1. `cd' to the directory containing the readline source code and type
- `./configure' to configure readline for your system. If you're
- using `csh' on an old version of System V, you might need to type
- `sh ./configure' instead to prevent `csh' from trying to execute
- `configure' itself.
-
- Running `configure' takes some time. While running, it prints some
- messages telling which features it is checking for.
-
- 2. Type `make' to compile readline and build the static readline
- and history libraries. If supported, the shared readline and history
- libraries will be built also. See below for instructions on compiling
- the other parts of the distribution. Typing `make everything' will
- cause the static and shared libraries (if supported) and the example
- programs to be built.
-
- 3. Type `make install' to install the static readline and history
- libraries, the readline include files, the documentation, and, if
- supported, the shared readline and history libraries.
-
- 4. You can remove the created libraries and object files from the
- build directory by typing `make clean'. To also remove the
- files that `configure' created (so you can compile readline for
- a different kind of computer), type `make distclean'. There is
- also a `make maintainer-clean' target, but that is intended mainly
- for the readline developers, and should be used with care.
-
-The `configure' shell script attempts to guess correct values for
-various system-dependent variables used during compilation. It
-uses those values to create a `Makefile' in the build directory,
-and Makefiles in the `doc', `shlib', and `examples'
-subdirectories. It also creates a `config.h' file containing
-system-dependent definitions. Finally, it creates a shell script
-`config.status' that you can run in the future to recreate the
-current configuration, a file `config.cache' that saves the
-results of its tests to speed up reconfiguring, and a file
-`config.log' containing compiler output (useful mainly for
-debugging `configure').
-
-If you need to do unusual things to compile readline, please try
-to figure out how `configure' could check whether to do them, and
-mail diffs or instructions to <bug-readline@gnu.org> so they can
-be considered for the next release. If at some point
-`config.cache' contains results you don't want to keep, you may
-remove or edit it.
-
-The file `configure.in' is used to create `configure' by a
-program called `autoconf'. You only need `configure.in' if you
-want to change it or regenerate `configure' using a newer version
-of `autoconf'. The readline `configure.in' requires autoconf
-version 2.50 or newer.
-
-Compilers and Options
-=====================
-
-Some systems require unusual options for compilation or linking that
-the `configure' script does not know about. You can give `configure'
-initial values for variables by setting them in the environment. Using
-a Bourne-compatible shell, you can do that on the command line like
-this:
-
- CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
-
-Or on systems that have the `env' program, you can do it like this:
-
- env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
-
-Compiling For Multiple Architectures
-====================================
-
-You can compile readline for more than one kind of computer at the
-same time, by placing the object files for each architecture in their
-own directory. To do this, you must use a version of `make' that
-supports the `VPATH' variable, such as GNU `make'. `cd' to the
-directory where you want the object files and executables to go and run
-the `configure' script. `configure' automatically checks for the
-source code in the directory that `configure' is in and in `..'.
-
-If you have to use a `make' that does not supports the `VPATH'
-variable, you have to compile readline for one architecture at a
-time in the source code directory. After you have installed
-readline for one architecture, use `make distclean' before
-reconfiguring for another architecture.
-
-Installation Names
-==================
-
-By default, `make install' will install the readline libraries in
-`/usr/local/lib', the include files in
-`/usr/local/include/readline', the man pages in `/usr/local/man',
-and the info files in `/usr/local/info'. You can specify an
-installation prefix other than `/usr/local' by giving `configure'
-the option `--prefix=PATH' or by supplying a value for the
-DESTDIR variable when running `make install'.
-
-You can specify separate installation prefixes for
-architecture-specific files and architecture-independent files.
-If you give `configure' the option `--exec-prefix=PATH', the
-readline Makefiles will use PATH as the prefix for installing the
-libraries. Documentation and other data files will still use the
-regular prefix.
-
-Specifying the System Type
-==========================
-
-There may be some features `configure' can not figure out
-automatically, but need to determine by the type of host readline
-will run on. Usually `configure' can figure that out, but if it
-prints a message saying it can not guess the host type, give it
-the `--host=TYPE' option. TYPE can either be a short name for
-the system type, such as `sun4', or a canonical name with three
-fields: CPU-COMPANY-SYSTEM (e.g., i386-unknown-freebsd4.2).
-
-See the file `config.sub' for the possible values of each field.
-
-Sharing Defaults
-================
-
-If you want to set default values for `configure' scripts to share,
-you can create a site shell script called `config.site' that gives
-default values for variables like `CC', `cache_file', and `prefix'.
-`configure' looks for `PREFIX/share/config.site' if it exists, then
-`PREFIX/etc/config.site' if it exists. Or, you can set the
-`CONFIG_SITE' environment variable to the location of the site script.
-A warning: the readline `configure' looks for a site script, but not
-all `configure' scripts do.
-
-Operation Controls
-==================
-
-`configure' recognizes the following options to control how it
-operates.
-
-`--cache-file=FILE'
- Use and save the results of the tests in FILE instead of
- `./config.cache'. Set FILE to `/dev/null' to disable caching, for
- debugging `configure'.
-
-`--help'
- Print a summary of the options to `configure', and exit.
-
-`--quiet'
-`--silent'
-`-q'
- Do not print messages saying which checks are being made.
-
-`--srcdir=DIR'
- Look for the package's source code in directory DIR. Usually
- `configure' can determine that directory automatically.
-
-`--version'
- Print the version of Autoconf used to generate the `configure'
- script, and exit.
-
-`configure' also accepts some other, not widely useful, options.
-
-Optional Features
-=================
-
-The readline `configure' recognizes a single `--with-PACKAGE' option:
-
-`--with-curses'
- This tells readline that it can find the termcap library functions
- (tgetent, et al.) in the curses library, rather than a separate
- termcap library. Readline uses the termcap functions, but does not
- link with the termcap or curses library itself, allowing applications
- which link with readline the to choose an appropriate library.
- This option tells readline to link the example programs with the
- curses library rather than libtermcap.
-
-`configure' also recognizes two `--enable-FEATURE' options:
-
-`--enable-shared'
- Build the shared libraries by default on supported platforms. The
- default is `yes'.
-
-`--enable-static'
- Build the static libraries by default. The default is `yes'.
-
-Shared Libraries
-================
-
-There is support for building shared versions of the readline and
-history libraries. The configure script creates a Makefile in
-the `shlib' subdirectory, and typing `make shared' will cause
-shared versions of the readline and history libraries to be built
-on supported platforms.
-
-If `configure' is given the `--enable-shared' option, it will attempt
-to build the shared libraries by default on supported platforms.
-
-Configure calls the script support/shobj-conf to test whether or
-not shared library creation is supported and to generate the values
-of variables that are substituted into shlib/Makefile. If you
-try to build shared libraries on an unsupported platform, `make'
-will display a message asking you to update support/shobj-conf for
-your platform.
-
-If you need to update support/shobj-conf, you will need to create
-a `stanza' for your operating system and compiler. The script uses
-the value of host_os and ${CC} as determined by configure. For
-instance, FreeBSD 4.2 with any version of gcc is identified as
-`freebsd4.2-gcc*'.
-
-In the stanza for your operating system-compiler pair, you will need to
-define several variables. They are:
-
-SHOBJ_CC The C compiler used to compile source files into shareable
- object files. This is normally set to the value of ${CC}
- by configure, and should not need to be changed.
-
-SHOBJ_CFLAGS Flags to pass to the C compiler ($SHOBJ_CC) to create
- position-independent code. If you are using gcc, this
- should probably be set to `-fpic'.
-
-SHOBJ_LD The link editor to be used to create the shared library from
- the object files created by $SHOBJ_CC. If you are using
- gcc, a value of `gcc' will probably work.
-
-SHOBJ_LDFLAGS Flags to pass to SHOBJ_LD to enable shared object creation.
- If you are using gcc, `-shared' may be all that is necessary.
- These should be the flags needed for generic shared object
- creation.
-
-SHLIB_XLDFLAGS Additional flags to pass to SHOBJ_LD for shared library
- creation. Many systems use the -R option to the link
- editor to embed a path within the library for run-time
- library searches. A reasonable value for such systems would
- be `-R$(libdir)'.
-
-SHLIB_LIBS Any additional libraries that shared libraries should be
- linked against when they are created.
-
-SHLIB_LIBSUFF The suffix to add to `libreadline' and `libhistory' when
- generating the filename of the shared library. Many systems
- use `so'; HP-UX uses `sl'.
-
-SHLIB_LIBVERSION The string to append to the filename to indicate the version
- of the shared library. It should begin with $(SHLIB_LIBSUFF),
- and possibly include version information that allows the
- run-time loader to load the version of the shared library
- appropriate for a particular program. Systems using shared
- libraries similar to SunOS 4.x use major and minor library
- version numbers; for those systems a value of
- `$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' is appropriate.
- Systems based on System V Release 4 don't use minor version
- numbers; use `$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' on those systems.
- Other Unix versions use different schemes.
-
-SHLIB_STATUS Set this to `supported' when you have defined the other
- necessary variables. Make uses this to determine whether
- or not shared library creation should be attempted. If
- shared libraries are not supported, this will be set to
- `unsupported'.
-
-You should look at the existing stanzas in support/shobj-conf for ideas.
-
-Once you have updated support/shobj-conf, re-run configure and type
-`make shared' or `make'. The shared libraries will be created in the
-shlib subdirectory.
-
-If shared libraries are created, `make install' will install them.
-You may install only the shared libraries by running `make
-install-shared' from the top-level build directory. Running `make
-install' in the shlib subdirectory will also work. If you don't want
-to install any created shared libraries, run `make install-static'.
diff --git a/readline-4.3.orig/MANIFEST b/readline-4.3.orig/MANIFEST
deleted file mode 100644
index 1507eda..0000000
--- a/readline-4.3.orig/MANIFEST
+++ /dev/null
@@ -1,126 +0,0 @@
-#
-# Master distribution manifest for the standalone readline distribution
-#
-doc d
-examples d
-support d
-shlib d
-COPYING f
-README f
-MANIFEST f
-INSTALL f
-CHANGELOG f
-CHANGES f
-USAGE f
-aclocal.m4 f
-config.h.in f
-configure f
-configure.in f
-Makefile.in f
-ansi_stdlib.h f
-chardefs.h f
-history.h f
-histlib.h f
-keymaps.h f
-posixdir.h f
-posixjmp.h f
-posixstat.h f
-readline.h f
-rlconf.h f
-rldefs.h f
-rlmbutil.h f
-rlprivate.h f
-rlshell.h f
-rlstdc.h f
-rltty.h f
-rltypedefs.h f
-rlwinsize.h f
-tcap.h f
-tilde.h f
-xmalloc.h f
-bind.c f
-callback.c f
-compat.c f
-complete.c f
-display.c f
-emacs_keymap.c f
-funmap.c f
-input.c f
-isearch.c f
-keymaps.c f
-kill.c f
-macro.c f
-mbutil.c f
-misc.c f
-nls.c f
-parens.c f
-readline.c f
-rltty.c f
-savestring.c f
-search.c f
-shell.c f
-signals.c f
-terminal.c f
-text.c f
-tilde.c f
-undo.c f
-util.c f
-vi_keymap.c f
-vi_mode.c f
-xmalloc.c f
-history.c f
-histexpand.c f
-histfile.c f
-histsearch.c f
-shlib/Makefile.in f
-support/config.guess f
-support/config.sub f
-support/install.sh f
-support/mkdirs f
-support/mkdist f
-support/shobj-conf f
-support/shlib-install f
-support/wcwidth.c f
-doc/Makefile.in f
-doc/texinfo.tex f
-doc/manvers.texinfo f
-doc/rlman.texinfo f
-doc/rltech.texinfo f
-doc/rluser.texinfo f
-doc/rluserman.texinfo f
-doc/hist.texinfo f
-doc/hstech.texinfo f
-doc/hsuser.texinfo f
-doc/readline.3 f
-doc/history.3 f
-doc/texi2dvi f
-doc/texi2html f
-examples/Makefile.in f
-examples/excallback.c f
-examples/fileman.c f
-examples/manexamp.c f
-examples/readlinebuf.h f
-examples/rlcat.c f
-examples/rlfe.c f
-examples/rltest.c f
-examples/rl.c f
-examples/rlversion.c f
-examples/histexamp.c f
-examples/Inputrc f
-# formatted documentation, from MANIFEST.doc
-doc/readline.ps f
-doc/history.ps f
-doc/rluserman.ps f
-doc/readline.dvi f
-doc/history.dvi f
-doc/rluserman.dvi f
-doc/readline.info f
-doc/history.info f
-doc/rluserman.info f
-doc/readline.html f
-doc/history.html f
-doc/rluserman.html f
-doc/readline.0 f
-doc/history.0 f
-doc/readline_3.ps f
-doc/history_3.ps f
diff --git a/readline-4.3.orig/Makefile.in b/readline-4.3.orig/Makefile.in
deleted file mode 100644
index 0ff0c31..0000000
--- a/readline-4.3.orig/Makefile.in
+++ /dev/null
@@ -1,520 +0,0 @@
-## -*- text -*- ##
-# Master Makefile for the GNU readline library.
-# Copyright (C) 1994 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA.
-RL_LIBRARY_VERSION = @LIBVERSION@
-RL_LIBRARY_NAME = readline
-
-srcdir = @srcdir@
-VPATH = .:@srcdir@
-top_srcdir = @top_srcdir@
-BUILD_DIR = @BUILD_DIR@
-
-INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_DATA = @INSTALL_DATA@
-
-CC = @CC@
-RANLIB = @RANLIB@
-AR = @AR@
-ARFLAGS = @ARFLAGS@
-RM = rm -f
-CP = cp
-MV = mv
-
-@SET_MAKE@
-SHELL = @MAKE_SHELL@
-
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-
-bindir = @bindir@
-libdir = @libdir@
-mandir = @mandir@
-includedir = @includedir@
-
-infodir = @infodir@
-
-man3dir = $(mandir)/man3
-
-# Support an alternate destination root directory for package building
-DESTDIR =
-
-# Programs to make tags files.
-ETAGS = etags -tw
-CTAGS = ctags -tw
-
-CFLAGS = @CFLAGS@
-LOCAL_CFLAGS = @LOCAL_CFLAGS@ -DRL_LIBRARY_VERSION='"$(RL_LIBRARY_VERSION)"'
-CPPFLAGS = @CPPFLAGS@
-
-DEFS = @DEFS@
-LOCAL_DEFS = @LOCAL_DEFS@
-
-TERMCAP_LIB = @TERMCAP_LIB@
-
-# For libraries which include headers from other libraries.
-INCLUDES = -I. -I$(srcdir)
-
-XCCFLAGS = $(DEFS) $(LOCAL_DEFS) $(CPPFLAGS) $(INCLUDES)
-CCFLAGS = $(XCCFLAGS) $(LOCAL_CFLAGS) $(CFLAGS)
-
-# could add -Werror here
-GCC_LINT_FLAGS = -ansi -Wall -Wshadow -Wpointer-arith -Wcast-qual \
- -Wwrite-strings -Wstrict-prototypes \
- -Wmissing-prototypes -Wno-implicit -pedantic
-GCC_LINT_CFLAGS = $(XCCFLAGS) $(GCC_LINT_FLAGS) @CFLAGS@ @LOCAL_CFLAGS@
-
-.c.o:
- ${RM} $@
- $(CC) -c $(CCFLAGS) $<
-
-# The name of the main library target.
-LIBRARY_NAME = libreadline.a
-STATIC_LIBS = libreadline.a libhistory.a
-
-# The C code source files for this library.
-CSOURCES = $(srcdir)/readline.c $(srcdir)/funmap.c $(srcdir)/keymaps.c \
- $(srcdir)/vi_mode.c $(srcdir)/parens.c $(srcdir)/rltty.c \
- $(srcdir)/complete.c $(srcdir)/bind.c $(srcdir)/isearch.c \
- $(srcdir)/display.c $(srcdir)/signals.c $(srcdir)/emacs_keymap.c \
- $(srcdir)/vi_keymap.c $(srcdir)/util.c $(srcdir)/kill.c \
- $(srcdir)/undo.c $(srcdir)/macro.c $(srcdir)/input.c \
- $(srcdir)/callback.c $(srcdir)/terminal.c $(srcdir)/xmalloc.c \
- $(srcdir)/history.c $(srcdir)/histsearch.c $(srcdir)/histexpand.c \
- $(srcdir)/histfile.c $(srcdir)/nls.c $(srcdir)/search.c \
- $(srcdir)/shell.c $(srcdir)/savestring.c $(srcdir)/tilde.c \
- $(srcdir)/text.c $(srcdir)/misc.c $(srcdir)/compat.c \
- $(srcdir)/mbutil.c
-
-# The header files for this library.
-HSOURCES = readline.h rldefs.h chardefs.h keymaps.h history.h histlib.h \
- posixstat.h posixdir.h posixjmp.h tilde.h rlconf.h rltty.h \
- ansi_stdlib.h tcap.h rlstdc.h xmalloc.h rlprivate.h rlshell.h \
- rltypedefs.h rlmbutil.h
-
-HISTOBJ = history.o histexpand.o histfile.o histsearch.o shell.o mbutil.o
-TILDEOBJ = tilde.o
-OBJECTS = readline.o vi_mode.o funmap.o keymaps.o parens.o search.o \
- rltty.o complete.o bind.o isearch.o display.o signals.o \
- util.o kill.o undo.o macro.o input.o callback.o terminal.o \
- text.o nls.o misc.o compat.o xmalloc.o $(HISTOBJ) $(TILDEOBJ)
-
-# The texinfo files which document this library.
-DOCSOURCE = doc/rlman.texinfo doc/rltech.texinfo doc/rluser.texinfo
-DOCOBJECT = doc/readline.dvi
-DOCSUPPORT = doc/Makefile
-DOCUMENTATION = $(DOCSOURCE) $(DOCOBJECT) $(DOCSUPPORT)
-
-CREATED_MAKEFILES = Makefile doc/Makefile examples/Makefile shlib/Makefile
-CREATED_CONFIGURE = config.status config.h config.cache config.log \
- stamp-config stamp-h
-CREATED_TAGS = TAGS tags
-
-INSTALLED_HEADERS = readline.h chardefs.h keymaps.h history.h tilde.h \
- rlstdc.h rlconf.h rltypedefs.h
-
-##########################################################################
-TARGETS = @STATIC_TARGET@ @SHARED_TARGET@
-INSTALL_TARGETS = @STATIC_INSTALL_TARGET@ @SHARED_INSTALL_TARGET@
-
-all: $(TARGETS)
-
-everything: all examples
-
-static: $(STATIC_LIBS)
-
-libreadline.a: $(OBJECTS)
- $(RM) $@
- $(AR) $(ARFLAGS) $@ $(OBJECTS)
- -test -n "$(RANLIB)" && $(RANLIB) $@
-
-libhistory.a: $(HISTOBJ) xmalloc.o
- $(RM) $@
- $(AR) $(ARFLAGS) $@ $(HISTOBJ) xmalloc.o
- -test -n "$(RANLIB)" && $(RANLIB) $@
-
-# Since tilde.c is shared between readline and bash, make sure we compile
-# it with the right flags when it's built as part of readline
-tilde.o: tilde.c
- rm -f $@
- $(CC) $(CCFLAGS) -DREADLINE_LIBRARY -c $(srcdir)/tilde.c
-
-readline: $(OBJECTS) readline.h rldefs.h chardefs.h ./libreadline.a
- $(CC) $(CCFLAGS) -o $@ ./examples/rl.c ./libreadline.a ${TERMCAP_LIB}
-
-lint: force
- $(MAKE) $(MFLAGS) CCFLAGS='$(GCC_LINT_CFLAGS)' static
-
-Makefile makefile: config.status $(srcdir)/Makefile.in
- CONFIG_FILES=Makefile CONFIG_HEADERS= $(SHELL) ./config.status
-
-Makefiles makefiles: config.status $(srcdir)/Makefile.in
- @for mf in $(CREATED_MAKEFILES); do \
- CONFIG_FILES=$$mf CONFIG_HEADERS= $(SHELL) ./config.status ; \
- done
-
-config.status: configure
- $(SHELL) ./config.status --recheck
-
-config.h: stamp-h
-
-stamp-h: config.status $(srcdir)/config.h.in
- CONFIG_FILES= CONFIG_HEADERS=config.h ./config.status
- echo > $@
-
-#$(srcdir)/configure: $(srcdir)/configure.in ## Comment-me-out in distribution
-# cd $(srcdir) && autoconf ## Comment-me-out in distribution
-
-
-shared: force
- -test -d shlib || mkdir shlib
- -( cd shlib ; ${MAKE} ${MFLAGS} all )
-
-documentation: force
- -test -d doc || mkdir doc
- -( cd doc && $(MAKE) $(MFLAGS) )
-
-examples: force
- -test -d examples || mkdir examples
- -(cd examples && ${MAKE} ${MFLAGS} all )
-
-force:
-
-install-headers: installdirs ${INSTALLED_HEADERS}
- for f in ${INSTALLED_HEADERS}; do \
- $(INSTALL_DATA) $(srcdir)/$$f $(DESTDIR)$(includedir)/readline ; \
- done
-
-uninstall-headers:
- -test -n "$(includedir)" && cd $(DESTDIR)$(includedir)/readline && \
- ${RM} ${INSTALLED_HEADERS}
-
-maybe-uninstall-headers: uninstall-headers
-
-install: $(INSTALL_TARGETS)
-
-install-static: installdirs $(STATIC_LIBS) install-headers
- -$(MV) $(DESTDIR)$(libdir)/libreadline.a $(DESTDIR)$(libdir)/libreadline.old
- $(INSTALL_DATA) libreadline.a $(DESTDIR)$(libdir)/libreadline.a
- -test -n "$(RANLIB)" && $(RANLIB) $(DESTDIR)$(libdir)/libreadline.a
- -$(MV) $(DESTDIR)$(libdir)/libhistory.a $(DESTDIR)$(libdir)/libhistory.old
- $(INSTALL_DATA) libhistory.a $(DESTDIR)$(libdir)/libhistory.a
- -test -n "$(RANLIB)" && $(RANLIB) $(DESTDIR)$(libdir)/libhistory.a
- -( if test -d doc ; then \
- cd doc && \
- ${MAKE} ${MFLAGS} infodir=$(infodir) DESTDIR=${DESTDIR} install; \
- fi )
-
-installdirs: $(srcdir)/support/mkdirs
- -$(SHELL) $(srcdir)/support/mkdirs $(DESTDIR)$(includedir) \
- $(DESTDIR)$(includedir)/readline $(DESTDIR)$(libdir) \
- $(DESTDIR)$(infodir) $(DESTDIR)$(man3dir)
-
-uninstall: uninstall-headers
- -test -n "$(DESTDIR)$(libdir)" && cd $(DESTDIR)$(libdir) && \
- ${RM} libreadline.a libreadline.old libhistory.a libhistory.old $(SHARED_LIBS)
- -( if test -d doc ; then \
- cd doc && \
- ${MAKE} ${MFLAGS} infodir=$(infodir) DESTDIR=${DESTDIR} $@; \
- fi )
- -( cd shlib; ${MAKE} ${MFLAGS} DESTDIR=${DESTDIR} uninstall )
-
-install-shared: installdirs install-headers shared
- -( cd shlib ; ${MAKE} ${MFLAGS} DESTDIR=${DESTDIR} install )
-
-uninstall-shared: maybe-uninstall-headers
- -( cd shlib; ${MAKE} ${MFLAGS} DESTDIR=${DESTDIR} uninstall )
-
-TAGS: force
- $(ETAGS) $(CSOURCES) $(HSOURCES)
-
-tags: force
- $(CTAGS) $(CSOURCES) $(HSOURCES)
-
-clean: force
- $(RM) $(OBJECTS) $(STATIC_LIBS)
- $(RM) readline readline.exe
- -( cd shlib && $(MAKE) $(MFLAGS) $@ )
- -( cd doc && $(MAKE) $(MFLAGS) $@ )
- -( cd examples && $(MAKE) $(MFLAGS) $@ )
-
-mostlyclean: clean
- -( cd shlib && $(MAKE) $(MFLAGS) $@ )
- -( cd doc && $(MAKE) $(MFLAGS) $@ )
- -( cd examples && $(MAKE) $(MFLAGS) $@ )
-
-distclean maintainer-clean: clean
- -( cd shlib && $(MAKE) $(MFLAGS) $@ )
- -( cd doc && $(MAKE) $(MFLAGS) $@ )
- -( cd examples && $(MAKE) $(MFLAGS) $@ )
- $(RM) Makefile
- $(RM) $(CREATED_CONFIGURE)
- $(RM) $(CREATED_TAGS)
-
-info dvi:
- -( cd doc && $(MAKE) $(MFLAGS) $@ )
-
-install-info:
-check:
-installcheck:
-
-dist: force
- @echo Readline distributions are created using $(srcdir)/support/mkdist.
- @echo Here is a sample of the necessary commands:
- @echo bash $(srcdir)/support/mkdist -m $(srcdir)/MANIFEST -s $(srcdir) -r $(RL_LIBRARY_NAME) $(RL_LIBRARY_VERSION)
- @echo tar cf $(RL_LIBRARY_NAME)-${RL_LIBRARY_VERSION}.tar ${RL_LIBRARY_NAME}-$(RL_LIBRARY_VERSION)
- @echo gzip $(RL_LIBRARY_NAME)-$(RL_LIBRARY_VERSION).tar
-
-# Tell versions [3.59,3.63) of GNU make not to export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
-
-# Dependencies
-bind.o: ansi_stdlib.h posixstat.h
-bind.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h
-bind.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h
-bind.o: history.h
-callback.o: rlconf.h
-callback.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h
-callback.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h
-compat.o: rlstdc.h
-complete.o: ansi_stdlib.h posixdir.h posixstat.h
-complete.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h
-complete.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h
-display.o: ansi_stdlib.h posixstat.h
-display.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h
-display.o: tcap.h
-display.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h
-display.o: history.h rlstdc.h
-funmap.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h
-funmap.o: rlconf.h ansi_stdlib.h rlstdc.h
-funmap.o: ${BUILD_DIR}/config.h
-histexpand.o: ansi_stdlib.h
-histexpand.o: history.h histlib.h rlstdc.h rltypedefs.h
-histexpand.o: ${BUILD_DIR}/config.h
-histfile.o: ansi_stdlib.h
-histfile.o: history.h histlib.h rlstdc.h rltypedefs.h
-histfile.o: ${BUILD_DIR}/config.h
-history.o: ansi_stdlib.h
-history.o: history.h histlib.h rlstdc.h rltypedefs.h
-history.o: ${BUILD_DIR}/config.h
-histsearch.o: ansi_stdlib.h
-histsearch.o: history.h histlib.h rlstdc.h rltypedefs.h
-histsearch.o: ${BUILD_DIR}/config.h
-input.o: ansi_stdlib.h
-input.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h
-input.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h
-isearch.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h
-isearch.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h
-isearch.o: ansi_stdlib.h history.h rlstdc.h
-keymaps.o: emacs_keymap.c vi_keymap.c
-keymaps.o: keymaps.h rltypedefs.h chardefs.h rlconf.h ansi_stdlib.h
-keymaps.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h
-keymaps.o: ${BUILD_DIR}/config.h rlstdc.h
-kill.o: ansi_stdlib.h
-kill.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h
-kill.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h
-kill.o: history.h rlstdc.h
-macro.o: ansi_stdlib.h
-macro.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h
-macro.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h
-macro.o: history.h rlstdc.h
-mbutil.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h
-mbutil.o: readline.h keymaps.h rltypedefs.h chardefs.h rlstdc.h
-misc.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h
-misc.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h
-misc.o: history.h rlstdc.h ansi_stdlib.h
-nls.o: ansi_stdlib.h
-nls.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h
-nls.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h
-nls.o: history.h rlstdc.h
-parens.o: rlconf.h
-parens.o: ${BUILD_DIR}/config.h
-parens.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h
-readline.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h
-readline.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h
-readline.o: history.h rlstdc.h
-readline.o: posixstat.h ansi_stdlib.h posixjmp.h
-rltty.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h
-rltty.o: rltty.h
-rltty.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h
-search.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h
-search.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h
-search.o: ansi_stdlib.h history.h rlstdc.h
-shell.o: ${BUILD_DIR}/config.h
-shell.o: ansi_stdlib.h
-signals.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h
-signals.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h
-signals.o: history.h rlstdc.h
-terminal.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h
-terminal.o: tcap.h
-terminal.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h
-terminal.o: history.h rlstdc.h
-text.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h
-text.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h
-text.o: history.h rlstdc.h ansi_stdlib.h
-tilde.o: ansi_stdlib.h
-tilde.o: ${BUILD_DIR}/config.h
-tilde.o: tilde.h
-undo.o: ansi_stdlib.h
-undo.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h
-undo.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h
-undo.o: history.h rlstdc.h
-util.o: posixjmp.h ansi_stdlib.h
-util.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h
-util.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h
-vi_mode.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h
-vi_mode.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h
-vi_mode.o: history.h ansi_stdlib.h rlstdc.h
-xmalloc.o: ${BUILD_DIR}/config.h
-xmalloc.o: ansi_stdlib.h
-
-bind.o: rlshell.h
-histfile.o: rlshell.h
-nls.o: rlshell.h
-readline.o: rlshell.h
-shell.o: rlshell.h
-terminal.o: rlshell.h
-histexpand.o: rlshell.h
-
-bind.o: rlprivate.h
-callback.o: rlprivate.h
-complete.o: rlprivate.h
-display.o: rlprivate.h
-input.o: rlprivate.h
-isearch.o: rlprivate.h
-kill.o: rlprivate.h
-macro.o: rlprivate.h
-mbutil.o: rlprivate.h
-misc.o: rlprivate.h
-nls.o: rlprivate.h
-parens.o: rlprivate.h
-readline.o: rlprivate.h
-rltty.o: rlprivate.h
-search.o: rlprivate.h
-signals.o: rlprivate.h
-terminal.o: rlprivate.h
-text.o: rlprivate.h
-undo.o: rlprivate.h
-util.o: rlprivate.h
-vi_mode.o: rlprivate.h
-
-bind.o: xmalloc.h
-complete.o: xmalloc.h
-display.o: xmalloc.h
-funmap.o: xmalloc.h
-histexpand.o: xmalloc.h
-histfile.o: xmalloc.h
-history.o: xmalloc.h
-input.o: xmalloc.h
-isearch.o: xmalloc.h
-keymaps.o: xmalloc.h
-kill.o: xmalloc.h
-macro.o: xmalloc.h
-mbutil.o: xmalloc.h
-misc.o: xmalloc.h
-readline.o: xmalloc.h
-savestring.o: xmalloc.h
-search.o: xmalloc.h
-shell.o: xmalloc.h
-terminal.o: xmalloc.h
-text.o: xmalloc.h
-tilde.o: xmalloc.h
-undo.o: xmalloc.h
-util.o: xmalloc.h
-vi_mode.o: xmalloc.h
-xmalloc.o: xmalloc.h
-
-complete.o: rlmbutil.h
-display.o: rlmbutil.h
-histexpand.o: rlmbutil.h
-input.o: rlmbutil.h
-isearch.o: rlmbutil.h
-mbutil.o: rlmbutil.h
-misc.o: rlmbutil.h
-readline.o: rlmbutil.h
-search.o: rlmbutil.h
-text.o: rlmbutil.h
-vi_mode.o: rlmbutil.h
-
-bind.o: $(srcdir)/bind.c
-callback.o: $(srcdir)/callback.c
-compat.o: $(srcdir)/compat.c
-complete.o: $(srcdir)/complete.c
-display.o: $(srcdir)/display.c
-funmap.o: $(srcdir)/funmap.c
-input.o: $(srcdir)/input.c
-isearch.o: $(srcdir)/isearch.c
-keymaps.o: $(srcdir)/keymaps.c $(srcdir)/emacs_keymap.c $(srcdir)/vi_keymap.c
-kill.o: $(srcdir)/kill.c
-macro.o: $(srcdir)/macro.c
-mbutil.o: $(srcdir)/mbutil.c
-misc.o: $(srcdir)/misc.c
-nls.o: $(srcdir)/nls.c
-parens.o: $(srcdir)/parens.c
-readline.o: $(srcdir)/readline.c
-rltty.o: $(srcdir)/rltty.c
-savestring.o: $(srcdir)/savestring.c
-search.o: $(srcdir)/search.c
-shell.o: $(srcdir)/shell.c
-signals.o: $(srcdir)/signals.c
-terminal.o: $(srcdir)/terminal.c
-text.o: $(srcdir)/text.c
-tilde.o: $(srcdir)/tilde.c
-undo.o: $(srcdir)/undo.c
-util.o: $(srcdir)/util.c
-vi_mode.o: $(srcdir)/vi_mode.c
-xmalloc.o: $(srcdir)/xmalloc.c
-
-histexpand.o: $(srcdir)/histexpand.c
-histfile.o: $(srcdir)/histfile.c
-history.o: $(srcdir)/history.c
-histsearch.o: $(srcdir)/histsearch.c
-
-bind.o: bind.c
-callback.o: callback.c
-compat.o: compat.c
-complete.o: complete.c
-display.o: display.c
-funmap.o: funmap.c
-input.o: input.c
-isearch.o: isearch.c
-keymaps.o: keymaps.c emacs_keymap.c vi_keymap.c
-kill.o: kill.c
-macro.o: macro.c
-mbutil.o: mbutil.c
-misc.o: misc.c
-nls.o: nls.c
-parens.o: parens.c
-readline.o: readline.c
-rltty.o: rltty.c
-savestring.o: savestring.c
-search.o: search.c
-shell.o: shell.c
-signals.o: signals.c
-terminal.o: terminal.c
-text.o: text.c
-tilde.o: tilde.c
-undo.o: undo.c
-util.o: util.c
-vi_mode.o: vi_mode.c
-xmalloc.o: xmalloc.c
-
-histexpand.o: histexpand.c
-histfile.o: histfile.c
-history.o: history.c
-histsearch.o: histsearch.c
diff --git a/readline-4.3.orig/README b/readline-4.3.orig/README
deleted file mode 100644
index 7aa9394..0000000
--- a/readline-4.3.orig/README
+++ /dev/null
@@ -1,172 +0,0 @@
-Introduction
-============
-
-This is the Gnu Readline library, version 4.3.
-
-The Readline library provides a set of functions for use by applications
-that allow users to edit command lines as they are typed in. Both
-Emacs and vi editing modes are available. The Readline library includes
-additional functions to maintain a list of previously-entered command
-lines, to recall and perhaps reedit those lines, and perform csh-like
-history expansion on previous commands.
-
-The history facilites are also placed into a separate library, the
-History library, as part of the build process. The History library
-may be used without Readline in applications which desire its
-capabilities.
-
-The Readline library is free software, distributed under the terms of
-the [GNU] General Public License, version 2. For more information, see
-the file COPYING.
-
-To build the library, try typing `./configure', then `make'. The
-configuration process is automated, so no further intervention should
-be necessary. Readline builds with `gcc' by default if it is
-available. If you want to use `cc' instead, type
-
- CC=cc ./configure
-
-if you are using a Bourne-style shell. If you are not, the following
-may work:
-
- env CC=cc ./configure
-
-Read the file INSTALL in this directory for more information about how
-to customize and control the build process.
-
-The file rlconf.h contains C preprocessor defines that enable and disable
-certain Readline features.
-
-The special make target `everything' will build the static and shared
-libraries (if the target platform supports them) and the examples.
-
-Examples
-========
-
-There are several example programs that use Readline features in the
-examples directory. The `rl' program is of particular interest. It
-is a command-line interface to Readline, suitable for use in shell
-scripts in place of `read'.
-
-Shared Libraries
-================
-
-There is skeletal support for building shared versions of the
-Readline and History libraries. The configure script creates
-a Makefile in the `shlib' subdirectory, and typing `make shared'
-will cause shared versions of the Readline and History libraries
-to be built on supported platforms.
-
-If `configure' is given the `--enable-shared' option, it will attempt
-to build the shared libraries by default on supported platforms.
-
-Configure calls the script support/shobj-conf to test whether or
-not shared library creation is supported and to generate the values
-of variables that are substituted into shlib/Makefile. If you
-try to build shared libraries on an unsupported platform, `make'
-will display a message asking you to update support/shobj-conf for
-your platform.
-
-If you need to update support/shobj-conf, you will need to create
-a `stanza' for your operating system and compiler. The script uses
-the value of host_os and ${CC} as determined by configure. For
-instance, FreeBSD 4.2 with any version of gcc is identified as
-`freebsd4.2-gcc*'.
-
-In the stanza for your operating system-compiler pair, you will need to
-define several variables. They are:
-
-SHOBJ_CC The C compiler used to compile source files into shareable
- object files. This is normally set to the value of ${CC}
- by configure, and should not need to be changed.
-
-SHOBJ_CFLAGS Flags to pass to the C compiler ($SHOBJ_CC) to create
- position-independent code. If you are using gcc, this
- should probably be set to `-fpic'.
-
-SHOBJ_LD The link editor to be used to create the shared library from
- the object files created by $SHOBJ_CC. If you are using
- gcc, a value of `gcc' will probably work.
-
-SHOBJ_LDFLAGS Flags to pass to SHOBJ_LD to enable shared object creation.
- If you are using gcc, `-shared' may be all that is necessary.
- These should be the flags needed for generic shared object
- creation.
-
-SHLIB_XLDFLAGS Additional flags to pass to SHOBJ_LD for shared library
- creation. Many systems use the -R option to the link
- editor to embed a path within the library for run-time
- library searches. A reasonable value for such systems would
- be `-R$(libdir)'.
-
-SHLIB_LIBS Any additional libraries that shared libraries should be
- linked against when they are created.
-
-SHLIB_LIBSUFF The suffix to add to `libreadline' and `libhistory' when
- generating the filename of the shared library. Many systems
- use `so'; HP-UX uses `sl'.
-
-SHLIB_LIBVERSION The string to append to the filename to indicate the version
- of the shared library. It should begin with $(SHLIB_LIBSUFF),
- and possibly include version information that allows the
- run-time loader to load the version of the shared library
- appropriate for a particular program. Systems using shared
- libraries similar to SunOS 4.x use major and minor library
- version numbers; for those systems a value of
- `$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' is appropriate.
- Systems based on System V Release 4 don't use minor version
- numbers; use `$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' on those systems.
- Other Unix versions use different schemes.
-
-SHLIB_STATUS Set this to `supported' when you have defined the other
- necessary variables. Make uses this to determine whether
- or not shared library creation should be attempted.
-
-You should look at the existing stanzas in support/shobj-conf for ideas.
-
-Once you have updated support/shobj-conf, re-run configure and type
-`make shared'. The shared libraries will be created in the shlib
-subdirectory.
-
-If shared libraries are created, `make install' will install them.
-You may install only the shared libraries by running `make
-install-shared' from the top-level build directory. Running `make
-install' in the shlib subdirectory will also work. If you don't want
-to install any created shared libraries, run `make install-static'.
-
-Documentation
-=============
-
-The documentation for the Readline and History libraries appears in
-the `doc' subdirectory. There are three texinfo files and a
-Unix-style manual page describing the facilities available in the
-Readline library. The texinfo files include both user and
-programmer's manuals. HTML versions of the manuals appear in the
-`doc' subdirectory as well.
-
-Reporting Bugs
-==============
-
-Bug reports for Readline should be sent to:
-
- bug-readline@gnu.org
-
-When reporting a bug, please include the following information:
-
- * the version number and release status of Readline (e.g., 4.2-release)
- * the machine and OS that it is running on
- * a list of the compilation flags or the contents of `config.h', if
- appropriate
- * a description of the bug
- * a recipe for recreating the bug reliably
- * a fix for the bug if you have one!
-
-If you would like to contact the Readline maintainer directly, send mail
-to bash-maintainers@gnu.org.
-
-Since Readline is developed along with bash, the bug-bash@gnu.org mailing
-list (mirrored to the Usenet newsgroup gnu.bash.bug) often contains
-Readline bug reports and fixes.
-
-Chet Ramey
-chet@po.cwru.edu
diff --git a/readline-4.3.orig/USAGE b/readline-4.3.orig/USAGE
deleted file mode 100644
index edc9f54..0000000
--- a/readline-4.3.orig/USAGE
+++ /dev/null
@@ -1,37 +0,0 @@
-From rms@gnu.org Thu Jul 22 20:37:55 1999
-Flags: 10
-Return-Path: rms@gnu.org
-Received: from arthur.INS.CWRU.Edu (root@arthur.INS.CWRU.Edu [129.22.8.215]) by odin.INS.CWRU.Edu with ESMTP (8.8.6+cwru/CWRU-2.4-ins)
- id UAA25349; Thu, 22 Jul 1999 20:37:54 -0400 (EDT) (from rms@gnu.org for <chet@odin.INS.CWRU.Edu>)
-Received: from nike.ins.cwru.edu (root@nike.INS.CWRU.Edu [129.22.8.219]) by arthur.INS.CWRU.Edu with ESMTP (8.8.8+cwru/CWRU-3.6)
- id UAA05311; Thu, 22 Jul 1999 20:37:51 -0400 (EDT) (from rms@gnu.org for <chet@po.cwru.edu>)
-Received: from pele.santafe.edu (pele.santafe.edu [192.12.12.119]) by nike.ins.cwru.edu with ESMTP (8.8.7/CWRU-2.5-bsdi)
- id UAA13350; Thu, 22 Jul 1999 20:37:50 -0400 (EDT) (from rms@gnu.org for <chet@nike.ins.cwru.edu>)
-Received: from wijiji.santafe.edu (wijiji [192.12.12.5])
- by pele.santafe.edu (8.9.1/8.9.1) with ESMTP id SAA10831
- for <chet@nike.ins.cwru.edu>; Thu, 22 Jul 1999 18:37:47 -0600 (MDT)
-Received: (from rms@localhost)
- by wijiji.santafe.edu (8.9.1b+Sun/8.9.1) id SAA01089;
- Thu, 22 Jul 1999 18:37:46 -0600 (MDT)
-Date: Thu, 22 Jul 1999 18:37:46 -0600 (MDT)
-Message-Id: <199907230037.SAA01089@wijiji.santafe.edu>
-X-Authentication-Warning: wijiji.santafe.edu: rms set sender to rms@gnu.org using -f
-From: Richard Stallman <rms@gnu.org>
-To: chet@nike.ins.cwru.edu
-Subject: Use of Readline
-Reply-to: rms@gnu.org
-
-I think Allbery's suggestion is a good one. So please add this text
-in a suitable place. Please don't put it in the GPL itself; that
-should be the same as the GPL everywhere else. Putting it in the
-README and/or the documentation would be a good idea.
-
-
-======================================================================
-Our position on the use of Readline through a shared-library linking
-mechanism is that there is no legal difference between shared-library
-linking and static linking--either kind of linking combines various
-modules into a single larger work. The conditions for using Readline
-in a larger work are stated in section 3 of the GNU GPL.
-
-
diff --git a/readline-4.3.orig/aclocal.m4 b/readline-4.3.orig/aclocal.m4
deleted file mode 100644
index d1ad025..0000000
--- a/readline-4.3.orig/aclocal.m4
+++ /dev/null
@@ -1,1792 +0,0 @@
-dnl
-dnl Bash specific tests
-dnl
-dnl Some derived from PDKSH 5.1.3 autoconf tests
-dnl
-
-AC_DEFUN(BASH_C_LONG_LONG,
-[AC_CACHE_CHECK(for long long, ac_cv_c_long_long,
-[if test "$GCC" = yes; then
- ac_cv_c_long_long=yes
-else
-AC_TRY_RUN([
-int
-main()
-{
-long long foo = 0;
-exit(sizeof(long long) < sizeof(long));
-}
-], ac_cv_c_long_long=yes, ac_cv_c_long_long=no)
-fi])
-if test $ac_cv_c_long_long = yes; then
- AC_DEFINE(HAVE_LONG_LONG, 1, [Define if the `long long' type works.])
-fi
-])
-
-dnl
-dnl This is very similar to AC_C_LONG_DOUBLE, with the fix for IRIX
-dnl (< changed to <=) added.
-dnl
-AC_DEFUN(BASH_C_LONG_DOUBLE,
-[AC_CACHE_CHECK(for long double, ac_cv_c_long_double,
-[if test "$GCC" = yes; then
- ac_cv_c_long_double=yes
-else
-AC_TRY_RUN([
-int
-main()
-{
- /* The Stardent Vistra knows sizeof(long double), but does not
- support it. */
- long double foo = 0.0;
- /* On Ultrix 4.3 cc, long double is 4 and double is 8. */
- /* On IRIX 5.3, the compiler converts long double to double with a warning,
- but compiles this successfully. */
- exit(sizeof(long double) <= sizeof(double));
-}
-], ac_cv_c_long_double=yes, ac_cv_c_long_double=no)
-fi])
-if test $ac_cv_c_long_double = yes; then
- AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if the `long double' type works.])
-fi
-])
-
-dnl
-dnl Check for <inttypes.h>. This is separated out so that it can be
-dnl AC_REQUIREd.
-dnl
-dnl BASH_HEADER_INTTYPES
-AC_DEFUN(BASH_HEADER_INTTYPES,
-[
- AC_CHECK_HEADERS(inttypes.h)
-])
-
-dnl
-dnl check for typedef'd symbols in header files, but allow the caller to
-dnl specify the include files to be checked in addition to the default
-dnl
-dnl BASH_CHECK_TYPE(TYPE, HEADERS, DEFAULT[, VALUE-IF-FOUND])
-AC_DEFUN(BASH_CHECK_TYPE,
-[
-AC_REQUIRE([AC_HEADER_STDC])dnl
-AC_REQUIRE([BASH_HEADER_INTTYPES])
-AC_MSG_CHECKING(for $1)
-AC_CACHE_VAL(bash_cv_type_$1,
-[AC_EGREP_CPP($1, [#include <sys/types.h>
-#if STDC_HEADERS
-#include <stdlib.h>
-#include <stddef.h>
-#endif
-#if HAVE_INTTYPES_H
-#include <inttypes.h>
-#endif
-$2
-], bash_cv_type_$1=yes, bash_cv_type_$1=no)])
-AC_MSG_RESULT($bash_cv_type_$1)
-ifelse($#, 4, [if test $bash_cv_type_$1 = yes; then
- AC_DEFINE($4)
- fi])
-if test $bash_cv_type_$1 = no; then
- AC_DEFINE_UNQUOTED($1, $3)
-fi
-])
-
-dnl
-dnl BASH_CHECK_DECL(FUNC)
-dnl
-dnl Check for a declaration of FUNC in stdlib.h and inttypes.h like
-dnl AC_CHECK_DECL
-dnl
-AC_DEFUN(BASH_CHECK_DECL,
-[
-AC_REQUIRE([AC_HEADER_STDC])
-AC_REQUIRE([BASH_HEADER_INTTYPES])
-AC_CACHE_CHECK([for declaration of $1], bash_cv_decl_$1,
-[AC_TRY_LINK(
-[
-#if STDC_HEADERS
-# include <stdlib.h>
-#endif
-#if HAVE_INTTYPES_H
-# include <inttypes.h>
-#endif
-],
-[return !$1;],
-bash_cv_decl_$1=yes, bash_cv_decl_$1=no)])
-bash_tr_func=HAVE_DECL_`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-if test $bash_cv_decl_$1 = yes; then
- AC_DEFINE_UNQUOTED($bash_tr_func, 1)
-else
- AC_DEFINE_UNQUOTED($bash_tr_func, 0)
-fi
-])
-
-AC_DEFUN(BASH_DECL_PRINTF,
-[AC_MSG_CHECKING(for declaration of printf in <stdio.h>)
-AC_CACHE_VAL(bash_cv_printf_declared,
-[AC_TRY_RUN([
-#include <stdio.h>
-#ifdef __STDC__
-typedef int (*_bashfunc)(const char *, ...);
-#else
-typedef int (*_bashfunc)();
-#endif
-main()
-{
-_bashfunc pf;
-pf = (_bashfunc) printf;
-exit(pf == 0);
-}
-], bash_cv_printf_declared=yes, bash_cv_printf_declared=no,
- [AC_MSG_WARN(cannot check printf declaration if cross compiling -- defaulting to yes)
- bash_cv_printf_declared=yes]
-)])
-AC_MSG_RESULT($bash_cv_printf_declared)
-if test $bash_cv_printf_declared = yes; then
-AC_DEFINE(PRINTF_DECLARED)
-fi
-])
-
-AC_DEFUN(BASH_DECL_SBRK,
-[AC_MSG_CHECKING(for declaration of sbrk in <unistd.h>)
-AC_CACHE_VAL(bash_cv_sbrk_declared,
-[AC_EGREP_HEADER(sbrk, unistd.h,
- bash_cv_sbrk_declared=yes, bash_cv_sbrk_declared=no)])
-AC_MSG_RESULT($bash_cv_sbrk_declared)
-if test $bash_cv_sbrk_declared = yes; then
-AC_DEFINE(SBRK_DECLARED)
-fi
-])
-
-dnl
-dnl Check for sys_siglist[] or _sys_siglist[]
-dnl
-AC_DEFUN(BASH_DECL_UNDER_SYS_SIGLIST,
-[AC_MSG_CHECKING([for _sys_siglist in signal.h or unistd.h])
-AC_CACHE_VAL(bash_cv_decl_under_sys_siglist,
-[AC_TRY_COMPILE([
-#include <sys/types.h>
-#include <signal.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif], [ char *msg = _sys_siglist[2]; ],
- bash_cv_decl_under_sys_siglist=yes, bash_cv_decl_under_sys_siglist=no,
- [AC_MSG_WARN(cannot check for _sys_siglist[] if cross compiling -- defaulting to no)])])dnl
-AC_MSG_RESULT($bash_cv_decl_under_sys_siglist)
-if test $bash_cv_decl_under_sys_siglist = yes; then
-AC_DEFINE(UNDER_SYS_SIGLIST_DECLARED)
-fi
-])
-
-AC_DEFUN(BASH_UNDER_SYS_SIGLIST,
-[AC_REQUIRE([BASH_DECL_UNDER_SYS_SIGLIST])
-AC_MSG_CHECKING([for _sys_siglist in system C library])
-AC_CACHE_VAL(bash_cv_under_sys_siglist,
-[AC_TRY_RUN([
-#include <sys/types.h>
-#include <signal.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#ifndef UNDER_SYS_SIGLIST_DECLARED
-extern char *_sys_siglist[];
-#endif
-main()
-{
-char *msg = (char *)_sys_siglist[2];
-exit(msg == 0);
-}],
- bash_cv_under_sys_siglist=yes, bash_cv_under_sys_siglist=no,
- [AC_MSG_WARN(cannot check for _sys_siglist[] if cross compiling -- defaulting to no)
- bash_cv_under_sys_siglist=no])])
-AC_MSG_RESULT($bash_cv_under_sys_siglist)
-if test $bash_cv_under_sys_siglist = yes; then
-AC_DEFINE(HAVE_UNDER_SYS_SIGLIST)
-fi
-])
-
-AC_DEFUN(BASH_SYS_SIGLIST,
-[AC_REQUIRE([AC_DECL_SYS_SIGLIST])
-AC_MSG_CHECKING([for sys_siglist in system C library])
-AC_CACHE_VAL(bash_cv_sys_siglist,
-[AC_TRY_RUN([
-#include <sys/types.h>
-#include <signal.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#ifndef SYS_SIGLIST_DECLARED
-extern char *sys_siglist[];
-#endif
-main()
-{
-char *msg = sys_siglist[2];
-exit(msg == 0);
-}],
- bash_cv_sys_siglist=yes, bash_cv_sys_siglist=no,
- [AC_MSG_WARN(cannot check for sys_siglist if cross compiling -- defaulting to no)
- bash_cv_sys_siglist=no])])
-AC_MSG_RESULT($bash_cv_sys_siglist)
-if test $bash_cv_sys_siglist = yes; then
-AC_DEFINE(HAVE_SYS_SIGLIST)
-fi
-])
-
-dnl Check for the various permutations of sys_siglist and make sure we
-dnl compile in siglist.o if they're not defined
-AC_DEFUN(BASH_CHECK_SYS_SIGLIST, [
-AC_REQUIRE([BASH_SYS_SIGLIST])
-AC_REQUIRE([BASH_DECL_UNDER_SYS_SIGLIST])
-AC_REQUIRE([BASH_FUNC_STRSIGNAL])
-if test "$bash_cv_sys_siglist" = no && test "$bash_cv_under_sys_siglist" = no && test "$bash_cv_have_strsignal" = no; then
- SIGLIST_O=siglist.o
-else
- SIGLIST_O=
-fi
-AC_SUBST([SIGLIST_O])
-])
-
-dnl Check for sys_errlist[] and sys_nerr, check for declaration
-AC_DEFUN(BASH_SYS_ERRLIST,
-[AC_MSG_CHECKING([for sys_errlist and sys_nerr])
-AC_CACHE_VAL(bash_cv_sys_errlist,
-[AC_TRY_LINK([#include <errno.h>],
-[extern char *sys_errlist[];
- extern int sys_nerr;
- char *msg = sys_errlist[sys_nerr - 1];],
- bash_cv_sys_errlist=yes, bash_cv_sys_errlist=no)])dnl
-AC_MSG_RESULT($bash_cv_sys_errlist)
-if test $bash_cv_sys_errlist = yes; then
-AC_DEFINE(HAVE_SYS_ERRLIST)
-fi
-])
-
-dnl
-dnl Check if dup2() does not clear the close on exec flag
-dnl
-AC_DEFUN(BASH_FUNC_DUP2_CLOEXEC_CHECK,
-[AC_MSG_CHECKING(if dup2 fails to clear the close-on-exec flag)
-AC_CACHE_VAL(bash_cv_dup2_broken,
-[AC_TRY_RUN([
-#include <sys/types.h>
-#include <fcntl.h>
-main()
-{
- int fd1, fd2, fl;
- fd1 = open("/dev/null", 2);
- if (fcntl(fd1, 2, 1) < 0)
- exit(1);
- fd2 = dup2(fd1, 1);
- if (fd2 < 0)
- exit(2);
- fl = fcntl(fd2, 1, 0);
- /* fl will be 1 if dup2 did not reset the close-on-exec flag. */
- exit(fl != 1);
-}
-], bash_cv_dup2_broken=yes, bash_cv_dup2_broken=no,
- [AC_MSG_WARN(cannot check dup2 if cross compiling -- defaulting to no)
- bash_cv_dup2_broken=no])
-])
-AC_MSG_RESULT($bash_cv_dup2_broken)
-if test $bash_cv_dup2_broken = yes; then
-AC_DEFINE(DUP2_BROKEN)
-fi
-])
-
-AC_DEFUN(BASH_FUNC_STRSIGNAL,
-[AC_MSG_CHECKING([for the existence of strsignal])
-AC_CACHE_VAL(bash_cv_have_strsignal,
-[AC_TRY_LINK([#include <sys/types.h>
-#include <signal.h>],
-[char *s = (char *)strsignal(2);],
- bash_cv_have_strsignal=yes, bash_cv_have_strsignal=no)])
-AC_MSG_RESULT($bash_cv_have_strsignal)
-if test $bash_cv_have_strsignal = yes; then
-AC_DEFINE(HAVE_STRSIGNAL)
-fi
-])
-
-dnl Check to see if opendir will open non-directories (not a nice thing)
-AC_DEFUN(BASH_FUNC_OPENDIR_CHECK,
-[AC_REQUIRE([AC_HEADER_DIRENT])dnl
-AC_MSG_CHECKING(if opendir() opens non-directories)
-AC_CACHE_VAL(bash_cv_opendir_not_robust,
-[AC_TRY_RUN([
-#include <stdio.h>
-#include <sys/types.h>
-#include <fcntl.h>
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-#if defined(HAVE_DIRENT_H)
-# include <dirent.h>
-#else
-# define dirent direct
-# ifdef HAVE_SYS_NDIR_H
-# include <sys/ndir.h>
-# endif /* SYSNDIR */
-# ifdef HAVE_SYS_DIR_H
-# include <sys/dir.h>
-# endif /* SYSDIR */
-# ifdef HAVE_NDIR_H
-# include <ndir.h>
-# endif
-#endif /* HAVE_DIRENT_H */
-main()
-{
-DIR *dir;
-int fd, err;
-err = mkdir("/tmp/bash-aclocal", 0700);
-if (err < 0) {
- perror("mkdir");
- exit(1);
-}
-unlink("/tmp/bash-aclocal/not_a_directory");
-fd = open("/tmp/bash-aclocal/not_a_directory", O_WRONLY|O_CREAT|O_EXCL, 0666);
-write(fd, "\n", 1);
-close(fd);
-dir = opendir("/tmp/bash-aclocal/not_a_directory");
-unlink("/tmp/bash-aclocal/not_a_directory");
-rmdir("/tmp/bash-aclocal");
-exit (dir == 0);
-}], bash_cv_opendir_not_robust=yes,bash_cv_opendir_not_robust=no,
- [AC_MSG_WARN(cannot check opendir if cross compiling -- defaulting to no)
- bash_cv_opendir_not_robust=no]
-)])
-AC_MSG_RESULT($bash_cv_opendir_not_robust)
-if test $bash_cv_opendir_not_robust = yes; then
-AC_DEFINE(OPENDIR_NOT_ROBUST)
-fi
-])
-
-dnl
-AC_DEFUN(BASH_TYPE_SIGHANDLER,
-[AC_MSG_CHECKING([whether signal handlers are of type void])
-AC_CACHE_VAL(bash_cv_void_sighandler,
-[AC_TRY_COMPILE([#include <sys/types.h>
-#include <signal.h>
-#ifdef signal
-#undef signal
-#endif
-#ifdef __cplusplus
-extern "C"
-#endif
-void (*signal ()) ();],
-[int i;], bash_cv_void_sighandler=yes, bash_cv_void_sighandler=no)])dnl
-AC_MSG_RESULT($bash_cv_void_sighandler)
-if test $bash_cv_void_sighandler = yes; then
-AC_DEFINE(VOID_SIGHANDLER)
-fi
-])
-
-dnl
-dnl A signed 16-bit integer quantity
-dnl
-AC_DEFUN(BASH_TYPE_BITS16_T,
-[
-if test "$ac_cv_sizeof_short" = 2; then
- AC_CHECK_TYPE(bits16_t, short)
-elif test "$ac_cv_sizeof_char" = 2; then
- AC_CHECK_TYPE(bits16_t, char)
-else
- AC_CHECK_TYPE(bits16_t, short)
-fi
-])
-
-dnl
-dnl An unsigned 16-bit integer quantity
-dnl
-AC_DEFUN(BASH_TYPE_U_BITS16_T,
-[
-if test "$ac_cv_sizeof_short" = 2; then
- AC_CHECK_TYPE(u_bits16_t, unsigned short)
-elif test "$ac_cv_sizeof_char" = 2; then
- AC_CHECK_TYPE(u_bits16_t, unsigned char)
-else
- AC_CHECK_TYPE(u_bits16_t, unsigned short)
-fi
-])
-
-dnl
-dnl A signed 32-bit integer quantity
-dnl
-AC_DEFUN(BASH_TYPE_BITS32_T,
-[
-if test "$ac_cv_sizeof_int" = 4; then
- AC_CHECK_TYPE(bits32_t, int)
-elif test "$ac_cv_sizeof_long" = 4; then
- AC_CHECK_TYPE(bits32_t, long)
-else
- AC_CHECK_TYPE(bits32_t, int)
-fi
-])
-
-dnl
-dnl An unsigned 32-bit integer quantity
-dnl
-AC_DEFUN(BASH_TYPE_U_BITS32_T,
-[
-if test "$ac_cv_sizeof_int" = 4; then
- AC_CHECK_TYPE(u_bits32_t, unsigned int)
-elif test "$ac_cv_sizeof_long" = 4; then
- AC_CHECK_TYPE(u_bits32_t, unsigned long)
-else
- AC_CHECK_TYPE(u_bits32_t, unsigned int)
-fi
-])
-
-AC_DEFUN(BASH_TYPE_PTRDIFF_T,
-[
-if test "$ac_cv_sizeof_int" = "$ac_cv_sizeof_char_p"; then
- AC_CHECK_TYPE(ptrdiff_t, int)
-elif test "$ac_cv_sizeof_long" = "$ac_cv_sizeof_char_p"; then
- AC_CHECK_TYPE(ptrdiff_t, long)
-elif test "$ac_cv_type_long_long" = yes && test "$ac_cv_sizeof_long_long" = "$ac_cv_sizeof_char_p"; then
- AC_CHECK_TYPE(ptrdiff_t, [long long])
-else
- AC_CHECK_TYPE(ptrdiff_t, int)
-fi
-])
-
-dnl
-dnl A signed 64-bit quantity
-dnl
-AC_DEFUN(BASH_TYPE_BITS64_T,
-[
-if test "$ac_cv_sizeof_char_p" = 8; then
- AC_CHECK_TYPE(bits64_t, char *)
-elif test "$ac_cv_sizeof_double" = 8; then
- AC_CHECK_TYPE(bits64_t, double)
-elif test -n "$ac_cv_type_long_long" && test "$ac_cv_sizeof_long_long" = 8; then
- AC_CHECK_TYPE(bits64_t, [long long])
-elif test "$ac_cv_sizeof_long" = 8; then
- AC_CHECK_TYPE(bits64_t, long)
-else
- AC_CHECK_TYPE(bits64_t, double)
-fi
-])
-
-AC_DEFUN(BASH_TYPE_LONG_LONG,
-[
-AC_CACHE_CHECK([for long long], bash_cv_type_long_long,
-[AC_TRY_LINK([
-long long ll = 1; int i = 63;],
-[
-long long llm = (long long) -1;
-return ll << i | ll >> i | llm / ll | llm % ll;
-], bash_cv_type_long_long='long long', bash_cv_type_long_long='long')])
-if test "$bash_cv_type_long_long" = 'long long'; then
- AC_DEFINE(HAVE_LONG_LONG, 1)
-fi
-])
-
-AC_DEFUN(BASH_TYPE_UNSIGNED_LONG_LONG,
-[
-AC_CACHE_CHECK([for unsigned long long], bash_cv_type_unsigned_long_long,
-[AC_TRY_LINK([
-unsigned long long ull = 1; int i = 63;],
-[
-unsigned long long ullmax = (unsigned long long) -1;
-return ull << i | ull >> i | ullmax / ull | ullmax % ull;
-], bash_cv_type_unsigned_long_long='unsigned long long',
- bash_cv_type_unsigned_long_long='unsigned long')])
-if test "$bash_cv_type_unsigned_long_long" = 'unsigned long long'; then
- AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1)
-fi
-])
-
-dnl
-dnl Type of struct rlimit fields: some systems (OSF/1, NetBSD, RISC/os 5.0)
-dnl have a rlim_t, others (4.4BSD based systems) use quad_t, others use
-dnl long and still others use int (HP-UX 9.01, SunOS 4.1.3). To simplify
-dnl matters, this just checks for rlim_t, quad_t, or long.
-dnl
-AC_DEFUN(BASH_TYPE_RLIMIT,
-[AC_MSG_CHECKING(for size and type of struct rlimit fields)
-AC_CACHE_VAL(bash_cv_type_rlimit,
-[AC_TRY_COMPILE([#include <sys/types.h>
-#include <sys/resource.h>],
-[rlim_t xxx;], bash_cv_type_rlimit=rlim_t,[
-AC_TRY_RUN([
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/resource.h>
-main()
-{
-#ifdef HAVE_QUAD_T
- struct rlimit rl;
- if (sizeof(rl.rlim_cur) == sizeof(quad_t))
- exit(0);
-#endif
- exit(1);
-}], bash_cv_type_rlimit=quad_t, bash_cv_type_rlimit=long,
- [AC_MSG_WARN(cannot check quad_t if cross compiling -- defaulting to long)
- bash_cv_type_rlimit=long])])
-])
-AC_MSG_RESULT($bash_cv_type_rlimit)
-if test $bash_cv_type_rlimit = quad_t; then
-AC_DEFINE(RLIMTYPE, quad_t)
-elif test $bash_cv_type_rlimit = rlim_t; then
-AC_DEFINE(RLIMTYPE, rlim_t)
-fi
-])
-
-AC_DEFUN(BASH_FUNC_LSTAT,
-[dnl Cannot use AC_CHECK_FUNCS(lstat) because Linux defines lstat() as an
-dnl inline function in <sys/stat.h>.
-AC_CACHE_CHECK([for lstat], bash_cv_func_lstat,
-[AC_TRY_LINK([
-#include <sys/types.h>
-#include <sys/stat.h>
-],[ lstat(".",(struct stat *)0); ],
-bash_cv_func_lstat=yes, bash_cv_func_lstat=no)])
-if test $bash_cv_func_lstat = yes; then
- AC_DEFINE(HAVE_LSTAT)
-fi
-])
-
-AC_DEFUN(BASH_FUNC_INET_ATON,
-[
-AC_CACHE_CHECK([for inet_aton], bash_cv_func_inet_aton,
-[AC_TRY_LINK([
-#include <sys/types.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-struct in_addr ap;], [ inet_aton("127.0.0.1", &ap); ],
-bash_cv_func_inet_aton=yes, bash_cv_func_inet_aton=no)])
-if test $bash_cv_func_inet_aton = yes; then
- AC_DEFINE(HAVE_INET_ATON)
-else
- AC_LIBOBJ(inet_aton)
-fi
-])
-
-AC_DEFUN(BASH_FUNC_GETENV,
-[AC_MSG_CHECKING(to see if getenv can be redefined)
-AC_CACHE_VAL(bash_cv_getenv_redef,
-[AC_TRY_RUN([
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-#ifndef __STDC__
-# ifndef const
-# define const
-# endif
-#endif
-char *
-getenv (name)
-#if defined (__linux__) || defined (__bsdi__) || defined (convex)
- const char *name;
-#else
- char const *name;
-#endif /* !__linux__ && !__bsdi__ && !convex */
-{
-return "42";
-}
-main()
-{
-char *s;
-/* The next allows this program to run, but does not allow bash to link
- when it redefines getenv. I'm not really interested in figuring out
- why not. */
-#if defined (NeXT)
-exit(1);
-#endif
-s = getenv("ABCDE");
-exit(s == 0); /* force optimizer to leave getenv in */
-}
-], bash_cv_getenv_redef=yes, bash_cv_getenv_redef=no,
- [AC_MSG_WARN(cannot check getenv redefinition if cross compiling -- defaulting to yes)
- bash_cv_getenv_redef=yes]
-)])
-AC_MSG_RESULT($bash_cv_getenv_redef)
-if test $bash_cv_getenv_redef = yes; then
-AC_DEFINE(CAN_REDEFINE_GETENV)
-fi
-])
-
-# We should check for putenv before calling this
-AC_DEFUN(BASH_FUNC_STD_PUTENV,
-[
-AC_REQUIRE([AC_HEADER_STDC])
-AC_REQUIRE([AC_C_PROTOTYPES])
-AC_CACHE_CHECK([for standard-conformant putenv declaration], bash_cv_std_putenv,
-[AC_TRY_LINK([
-#if STDC_HEADERS
-#include <stdlib.h>
-#include <stddef.h>
-#endif
-#ifndef __STDC__
-# ifndef const
-# define const
-# endif
-#endif
-#ifdef PROTOTYPES
-extern int putenv (char *);
-#else
-extern int putenv ();
-#endif
-],
-[return (putenv == 0);],
-bash_cv_std_putenv=yes, bash_cv_std_putenv=no
-)])
-if test $bash_cv_std_putenv = yes; then
-AC_DEFINE(HAVE_STD_PUTENV)
-fi
-])
-
-# We should check for unsetenv before calling this
-AC_DEFUN(BASH_FUNC_STD_UNSETENV,
-[
-AC_REQUIRE([AC_HEADER_STDC])
-AC_REQUIRE([AC_C_PROTOTYPES])
-AC_CACHE_CHECK([for standard-conformant unsetenv declaration], bash_cv_std_unsetenv,
-[AC_TRY_LINK([
-#if STDC_HEADERS
-#include <stdlib.h>
-#include <stddef.h>
-#endif
-#ifndef __STDC__
-# ifndef const
-# define const
-# endif
-#endif
-#ifdef PROTOTYPES
-extern int unsetenv (const char *);
-#else
-extern int unsetenv ();
-#endif
-],
-[return (unsetenv == 0);],
-bash_cv_std_unsetenv=yes, bash_cv_std_unsetenv=no
-)])
-if test $bash_cv_std_unsetenv = yes; then
-AC_DEFINE(HAVE_STD_UNSETENV)
-fi
-])
-
-AC_DEFUN(BASH_FUNC_ULIMIT_MAXFDS,
-[AC_MSG_CHECKING(whether ulimit can substitute for getdtablesize)
-AC_CACHE_VAL(bash_cv_ulimit_maxfds,
-[AC_TRY_RUN([
-main()
-{
-long maxfds = ulimit(4, 0L);
-exit (maxfds == -1L);
-}
-], bash_cv_ulimit_maxfds=yes, bash_cv_ulimit_maxfds=no,
- [AC_MSG_WARN(cannot check ulimit if cross compiling -- defaulting to no)
- bash_cv_ulimit_maxfds=no]
-)])
-AC_MSG_RESULT($bash_cv_ulimit_maxfds)
-if test $bash_cv_ulimit_maxfds = yes; then
-AC_DEFINE(ULIMIT_MAXFDS)
-fi
-])
-
-AC_DEFUN(BASH_FUNC_GETCWD,
-[AC_MSG_CHECKING([if getcwd() calls popen()])
-AC_CACHE_VAL(bash_cv_getcwd_calls_popen,
-[AC_TRY_RUN([
-#include <stdio.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-
-#ifndef __STDC__
-#ifndef const
-#define const
-#endif
-#endif
-
-int popen_called;
-
-FILE *
-popen(command, type)
- const char *command;
- const char *type;
-{
- popen_called = 1;
- return (FILE *)NULL;
-}
-
-FILE *_popen(command, type)
- const char *command;
- const char *type;
-{
- return (popen (command, type));
-}
-
-int
-pclose(stream)
-FILE *stream;
-{
- return 0;
-}
-
-int
-_pclose(stream)
-FILE *stream;
-{
- return 0;
-}
-
-main()
-{
- char lbuf[32];
- popen_called = 0;
- getcwd(lbuf, 32);
- exit (popen_called);
-}
-], bash_cv_getcwd_calls_popen=no, bash_cv_getcwd_calls_popen=yes,
- [AC_MSG_WARN(cannot check whether getcwd calls popen if cross compiling -- defaulting to no)
- bash_cv_getcwd_calls_popen=no]
-)])
-AC_MSG_RESULT($bash_cv_getcwd_calls_popen)
-if test $bash_cv_getcwd_calls_popen = yes; then
-AC_DEFINE(GETCWD_BROKEN)
-AC_LIBOBJ(getcwd)
-fi
-])
-
-dnl
-dnl This needs BASH_CHECK_SOCKLIB, but since that's not called on every
-dnl system, we can't use AC_PREREQ
-dnl
-AC_DEFUN(BASH_FUNC_GETHOSTBYNAME,
-[if test "X$bash_cv_have_gethostbyname" = "X"; then
-_bash_needmsg=yes
-else
-AC_MSG_CHECKING(for gethostbyname in socket library)
-_bash_needmsg=
-fi
-AC_CACHE_VAL(bash_cv_have_gethostbyname,
-[AC_TRY_LINK([#include <netdb.h>],
-[ struct hostent *hp;
- hp = gethostbyname("localhost");
-], bash_cv_have_gethostbyname=yes, bash_cv_have_gethostbyname=no)]
-)
-if test "X$_bash_needmsg" = Xyes; then
- AC_MSG_CHECKING(for gethostbyname in socket library)
-fi
-AC_MSG_RESULT($bash_cv_have_gethostbyname)
-if test "$bash_cv_have_gethostbyname" = yes; then
-AC_DEFINE(HAVE_GETHOSTBYNAME)
-fi
-])
-
-AC_DEFUN(BASH_FUNC_FNMATCH_EXTMATCH,
-[AC_MSG_CHECKING(if fnmatch does extended pattern matching with FNM_EXTMATCH)
-AC_CACHE_VAL(bash_cv_fnm_extmatch,
-[AC_TRY_RUN([
-#include <fnmatch.h>
-
-main()
-{
-#ifdef FNM_EXTMATCH
- exit (0);
-#else
- exit (1);
-#endif
-}
-], bash_cv_fnm_extmatch=yes, bash_cv_fnm_extmatch=no,
- [AC_MSG_WARN(cannot check FNM_EXTMATCH if cross compiling -- defaulting to no)
- bash_cv_fnm_extmatch=no])
-])
-AC_MSG_RESULT($bash_cv_fnm_extmatch)
-if test $bash_cv_fnm_extmatch = yes; then
-AC_DEFINE(HAVE_LIBC_FNM_EXTMATCH)
-fi
-])
-
-AC_DEFUN(BASH_FUNC_POSIX_SETJMP,
-[AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE])
-AC_MSG_CHECKING(for presence of POSIX-style sigsetjmp/siglongjmp)
-AC_CACHE_VAL(bash_cv_func_sigsetjmp,
-[AC_TRY_RUN([
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#include <sys/types.h>
-#include <signal.h>
-#include <setjmp.h>
-
-main()
-{
-#if !defined (_POSIX_VERSION) || !defined (HAVE_POSIX_SIGNALS)
-exit (1);
-#else
-
-int code;
-sigset_t set, oset;
-sigjmp_buf xx;
-
-/* get the mask */
-sigemptyset(&set);
-sigemptyset(&oset);
-sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &set);
-sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &oset);
-
-/* save it */
-code = sigsetjmp(xx, 1);
-if (code)
- exit(0); /* could get sigmask and compare to oset here. */
-
-/* change it */
-sigaddset(&set, SIGINT);
-sigprocmask(SIG_BLOCK, &set, (sigset_t *)NULL);
-
-/* and siglongjmp */
-siglongjmp(xx, 10);
-exit(1);
-#endif
-}], bash_cv_func_sigsetjmp=present, bash_cv_func_sigsetjmp=missing,
- [AC_MSG_WARN(cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing)
- bash_cv_func_sigsetjmp=missing]
-)])
-AC_MSG_RESULT($bash_cv_func_sigsetjmp)
-if test $bash_cv_func_sigsetjmp = present; then
-AC_DEFINE(HAVE_POSIX_SIGSETJMP)
-fi
-])
-
-AC_DEFUN(BASH_FUNC_STRCOLL,
-[
-AC_MSG_CHECKING(whether or not strcoll and strcmp differ)
-AC_CACHE_VAL(bash_cv_func_strcoll_broken,
-[AC_TRY_RUN([
-#include <stdio.h>
-#if defined (HAVE_LOCALE_H)
-#include <locale.h>
-#endif
-
-main(c, v)
-int c;
-char *v[];
-{
- int r1, r2;
- char *deflocale, *defcoll;
-
-#ifdef HAVE_SETLOCALE
- deflocale = setlocale(LC_ALL, "");
- defcoll = setlocale(LC_COLLATE, "");
-#endif
-
-#ifdef HAVE_STRCOLL
- /* These two values are taken from tests/glob-test. */
- r1 = strcoll("abd", "aXd");
-#else
- r1 = 0;
-#endif
- r2 = strcmp("abd", "aXd");
-
- /* These two should both be greater than 0. It is permissible for
- a system to return different values, as long as the sign is the
- same. */
-
- /* Exit with 1 (failure) if these two values are both > 0, since
- this tests whether strcoll(3) is broken with respect to strcmp(3)
- in the default locale. */
- exit (r1 > 0 && r2 > 0);
-}
-], bash_cv_func_strcoll_broken=yes, bash_cv_func_strcoll_broken=no,
- [AC_MSG_WARN(cannot check strcoll if cross compiling -- defaulting to no)
- bash_cv_func_strcoll_broken=no]
-)])
-AC_MSG_RESULT($bash_cv_func_strcoll_broken)
-if test $bash_cv_func_strcoll_broken = yes; then
-AC_DEFINE(STRCOLL_BROKEN)
-fi
-])
-
-AC_DEFUN(BASH_FUNC_PRINTF_A_FORMAT,
-[AC_MSG_CHECKING([for printf floating point output in hex notation])
-AC_CACHE_VAL(bash_cv_printf_a_format,
-[AC_TRY_RUN([
-#include <stdio.h>
-#include <string.h>
-
-int
-main()
-{
- double y = 0.0;
- char abuf[1024];
-
- sprintf(abuf, "%A", y);
- exit(strchr(abuf, 'P') == (char *)0);
-}
-], bash_cv_printf_a_format=yes, bash_cv_printf_a_format=no,
- [AC_MSG_WARN(cannot check printf if cross compiling -- defaulting to no)
- bash_cv_printf_a_format=no]
-)])
-AC_MSG_RESULT($bash_cv_printf_a_format)
-if test $bash_cv_printf_a_format = yes; then
-AC_DEFINE(HAVE_PRINTF_A_FORMAT)
-fi
-])
-
-AC_DEFUN(BASH_STRUCT_TERMIOS_LDISC,
-[
-AC_CHECK_MEMBER(struct termios.c_line, AC_DEFINE(TERMIOS_LDISC), ,[
-#include <sys/types.h>
-#include <termios.h>
-])
-])
-
-AC_DEFUN(BASH_STRUCT_TERMIO_LDISC,
-[
-AC_CHECK_MEMBER(struct termio.c_line, AC_DEFINE(TERMIO_LDISC), ,[
-#include <sys/types.h>
-#include <termio.h>
-])
-])
-
-dnl
-dnl Like AC_STRUCT_ST_BLOCKS, but doesn't muck with LIBOBJS
-dnl
-dnl sets bash_cv_struct_stat_st_blocks
-dnl
-dnl unused for now; we'll see how AC_CHECK_MEMBERS works
-dnl
-AC_DEFUN(BASH_STRUCT_ST_BLOCKS,
-[
-AC_MSG_CHECKING([for struct stat.st_blocks])
-AC_CACHE_VAL(bash_cv_struct_stat_st_blocks,
-[AC_TRY_COMPILE(
-[
-#include <sys/types.h>
-#include <sys/stat.h>
-],
-[
-main()
-{
-static struct stat a;
-if (a.st_blocks) return 0;
-return 0;
-}
-], bash_cv_struct_stat_st_blocks=yes, bash_cv_struct_stat_st_blocks=no)
-])
-AC_MSG_RESULT($bash_cv_struct_stat_st_blocks)
-if test "$bash_cv_struct_stat_st_blocks" = "yes"; then
-AC_DEFINE(HAVE_STRUCT_STAT_ST_BLOCKS)
-fi
-])
-
-AC_DEFUN(BASH_CHECK_LIB_TERMCAP,
-[
-if test "X$bash_cv_termcap_lib" = "X"; then
-_bash_needmsg=yes
-else
-AC_MSG_CHECKING(which library has the termcap functions)
-_bash_needmsg=
-fi
-AC_CACHE_VAL(bash_cv_termcap_lib,
-[AC_CHECK_LIB(termcap, tgetent, bash_cv_termcap_lib=libtermcap,
- [AC_CHECK_LIB(tinfo, tgetent, bash_cv_termcap_lib=libtinfo,
- [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses,
- [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses,
- bash_cv_termcap_lib=gnutermcap)])])])])
-if test "X$_bash_needmsg" = "Xyes"; then
-AC_MSG_CHECKING(which library has the termcap functions)
-fi
-AC_MSG_RESULT(using $bash_cv_termcap_lib)
-if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then
-LDFLAGS="$LDFLAGS -L./lib/termcap"
-TERMCAP_LIB="./lib/termcap/libtermcap.a"
-TERMCAP_DEP="./lib/termcap/libtermcap.a"
-elif test $bash_cv_termcap_lib = libtermcap && test -z "$prefer_curses"; then
-TERMCAP_LIB=-ltermcap
-TERMCAP_DEP=
-elif test $bash_cv_termcap_lib = libtinfo; then
-TERMCAP_LIB=-ltinfo
-TERMCAP_DEP=
-elif test $bash_cv_termcap_lib = libncurses; then
-TERMCAP_LIB=-lncurses
-TERMCAP_DEP=
-else
-TERMCAP_LIB=-lcurses
-TERMCAP_DEP=
-fi
-])
-
-dnl
-dnl Check for the presence of getpeername in libsocket.
-dnl If libsocket is present, check for libnsl and add it to LIBS if
-dnl it's there, since most systems with libsocket require linking
-dnl with libnsl as well. This should only be called if getpeername
-dnl was not found in libc.
-dnl
-dnl NOTE: IF WE FIND GETPEERNAME, WE ASSUME THAT WE HAVE BIND/CONNECT
-dnl AS WELL
-dnl
-AC_DEFUN(BASH_CHECK_LIB_SOCKET,
-[
-if test "X$bash_cv_have_socklib" = "X"; then
-_bash_needmsg=
-else
-AC_MSG_CHECKING(for socket library)
-_bash_needmsg=yes
-fi
-AC_CACHE_VAL(bash_cv_have_socklib,
-[AC_CHECK_LIB(socket, getpeername,
- bash_cv_have_socklib=yes, bash_cv_have_socklib=no, -lnsl)])
-if test "X$_bash_needmsg" = Xyes; then
- AC_MSG_RESULT($bash_cv_have_socklib)
- _bash_needmsg=
-fi
-if test $bash_cv_have_socklib = yes; then
- # check for libnsl, add it to LIBS if present
- if test "X$bash_cv_have_libnsl" = "X"; then
- _bash_needmsg=
- else
- AC_MSG_CHECKING(for libnsl)
- _bash_needmsg=yes
- fi
- AC_CACHE_VAL(bash_cv_have_libnsl,
- [AC_CHECK_LIB(nsl, t_open,
- bash_cv_have_libnsl=yes, bash_cv_have_libnsl=no)])
- if test "X$_bash_needmsg" = Xyes; then
- AC_MSG_RESULT($bash_cv_have_libnsl)
- _bash_needmsg=
- fi
- if test $bash_cv_have_libnsl = yes; then
- LIBS="-lsocket -lnsl $LIBS"
- else
- LIBS="-lsocket $LIBS"
- fi
- AC_DEFINE(HAVE_LIBSOCKET)
- AC_DEFINE(HAVE_GETPEERNAME)
-fi
-])
-
-AC_DEFUN(BASH_STRUCT_DIRENT_D_INO,
-[AC_REQUIRE([AC_HEADER_DIRENT])
-AC_MSG_CHECKING(if struct dirent has a d_ino member)
-AC_CACHE_VAL(bash_cv_dirent_has_dino,
-[AC_TRY_COMPILE([
-#include <stdio.h>
-#include <sys/types.h>
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-#if defined(HAVE_DIRENT_H)
-# include <dirent.h>
-#else
-# define dirent direct
-# ifdef HAVE_SYS_NDIR_H
-# include <sys/ndir.h>
-# endif /* SYSNDIR */
-# ifdef HAVE_SYS_DIR_H
-# include <sys/dir.h>
-# endif /* SYSDIR */
-# ifdef HAVE_NDIR_H
-# include <ndir.h>
-# endif
-#endif /* HAVE_DIRENT_H */
-],[
-struct dirent d; int z; z = d.d_ino;
-], bash_cv_dirent_has_dino=yes, bash_cv_dirent_has_dino=no)])
-AC_MSG_RESULT($bash_cv_dirent_has_dino)
-if test $bash_cv_dirent_has_dino = yes; then
-AC_DEFINE(STRUCT_DIRENT_HAS_D_INO)
-fi
-])
-
-AC_DEFUN(BASH_STRUCT_DIRENT_D_FILENO,
-[AC_REQUIRE([AC_HEADER_DIRENT])
-AC_MSG_CHECKING(if struct dirent has a d_fileno member)
-AC_CACHE_VAL(bash_cv_dirent_has_d_fileno,
-[AC_TRY_COMPILE([
-#include <stdio.h>
-#include <sys/types.h>
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-#if defined(HAVE_DIRENT_H)
-# include <dirent.h>
-#else
-# define dirent direct
-# ifdef HAVE_SYS_NDIR_H
-# include <sys/ndir.h>
-# endif /* SYSNDIR */
-# ifdef HAVE_SYS_DIR_H
-# include <sys/dir.h>
-# endif /* SYSDIR */
-# ifdef HAVE_NDIR_H
-# include <ndir.h>
-# endif
-#endif /* HAVE_DIRENT_H */
-],[
-struct dirent d; int z; z = d.d_fileno;
-], bash_cv_dirent_has_d_fileno=yes, bash_cv_dirent_has_d_fileno=no)])
-AC_MSG_RESULT($bash_cv_dirent_has_d_fileno)
-if test $bash_cv_dirent_has_d_fileno = yes; then
-AC_DEFINE(STRUCT_DIRENT_HAS_D_FILENO)
-fi
-])
-
-AC_DEFUN(BASH_STRUCT_TIMEVAL,
-[AC_MSG_CHECKING(for struct timeval in sys/time.h and time.h)
-AC_CACHE_VAL(bash_cv_struct_timeval,
-[
-AC_EGREP_HEADER(struct timeval, sys/time.h,
- bash_cv_struct_timeval=yes,
- AC_EGREP_HEADER(struct timeval, time.h,
- bash_cv_struct_timeval=yes,
- bash_cv_struct_timeval=no))
-])
-AC_MSG_RESULT($bash_cv_struct_timeval)
-if test $bash_cv_struct_timeval = yes; then
- AC_DEFINE(HAVE_TIMEVAL)
-fi
-])
-
-AC_DEFUN(BASH_STRUCT_WINSIZE,
-[AC_MSG_CHECKING(for struct winsize in sys/ioctl.h and termios.h)
-AC_CACHE_VAL(bash_cv_struct_winsize_header,
-[AC_TRY_COMPILE([#include <sys/types.h>
-#include <sys/ioctl.h>], [struct winsize x;],
- bash_cv_struct_winsize_header=ioctl_h,
- [AC_TRY_COMPILE([#include <sys/types.h>
-#include <termios.h>], [struct winsize x;],
- bash_cv_struct_winsize_header=termios_h, bash_cv_struct_winsize_header=other)
-])])
-if test $bash_cv_struct_winsize_header = ioctl_h; then
- AC_MSG_RESULT(sys/ioctl.h)
- AC_DEFINE(STRUCT_WINSIZE_IN_SYS_IOCTL)
-elif test $bash_cv_struct_winsize_header = termios_h; then
- AC_MSG_RESULT(termios.h)
- AC_DEFINE(STRUCT_WINSIZE_IN_TERMIOS)
-else
- AC_MSG_RESULT(not found)
-fi
-])
-
-dnl Check type of signal routines (posix, 4.2bsd, 4.1bsd or v7)
-AC_DEFUN(BASH_SYS_SIGNAL_VINTAGE,
-[AC_REQUIRE([AC_TYPE_SIGNAL])
-AC_MSG_CHECKING(for type of signal functions)
-AC_CACHE_VAL(bash_cv_signal_vintage,
-[
- AC_TRY_LINK([#include <signal.h>],[
- sigset_t ss;
- struct sigaction sa;
- sigemptyset(&ss); sigsuspend(&ss);
- sigaction(SIGINT, &sa, (struct sigaction *) 0);
- sigprocmask(SIG_BLOCK, &ss, (sigset_t *) 0);
- ], bash_cv_signal_vintage=posix,
- [
- AC_TRY_LINK([#include <signal.h>], [
- int mask = sigmask(SIGINT);
- sigsetmask(mask); sigblock(mask); sigpause(mask);
- ], bash_cv_signal_vintage=4.2bsd,
- [
- AC_TRY_LINK([
- #include <signal.h>
- RETSIGTYPE foo() { }], [
- int mask = sigmask(SIGINT);
- sigset(SIGINT, foo); sigrelse(SIGINT);
- sighold(SIGINT); sigpause(SIGINT);
- ], bash_cv_signal_vintage=svr3, bash_cv_signal_vintage=v7
- )]
- )]
-)
-])
-AC_MSG_RESULT($bash_cv_signal_vintage)
-if test "$bash_cv_signal_vintage" = posix; then
-AC_DEFINE(HAVE_POSIX_SIGNALS)
-elif test "$bash_cv_signal_vintage" = "4.2bsd"; then
-AC_DEFINE(HAVE_BSD_SIGNALS)
-elif test "$bash_cv_signal_vintage" = svr3; then
-AC_DEFINE(HAVE_USG_SIGHOLD)
-fi
-])
-
-dnl Check if the pgrp of setpgrp() can't be the pid of a zombie process.
-AC_DEFUN(BASH_SYS_PGRP_SYNC,
-[AC_REQUIRE([AC_FUNC_GETPGRP])
-AC_MSG_CHECKING(whether pgrps need synchronization)
-AC_CACHE_VAL(bash_cv_pgrp_pipe,
-[AC_TRY_RUN([
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-main()
-{
-# ifdef GETPGRP_VOID
-# define getpgID() getpgrp()
-# else
-# define getpgID() getpgrp(0)
-# define setpgid(x,y) setpgrp(x,y)
-# endif
- int pid1, pid2, fds[2];
- int status;
- char ok;
-
- switch (pid1 = fork()) {
- case -1:
- exit(1);
- case 0:
- setpgid(0, getpid());
- exit(0);
- }
- setpgid(pid1, pid1);
-
- sleep(2); /* let first child die */
-
- if (pipe(fds) < 0)
- exit(2);
-
- switch (pid2 = fork()) {
- case -1:
- exit(3);
- case 0:
- setpgid(0, pid1);
- ok = getpgID() == pid1;
- write(fds[1], &ok, 1);
- exit(0);
- }
- setpgid(pid2, pid1);
-
- close(fds[1]);
- if (read(fds[0], &ok, 1) != 1)
- exit(4);
- wait(&status);
- wait(&status);
- exit(ok ? 0 : 5);
-}
-], bash_cv_pgrp_pipe=no,bash_cv_pgrp_pipe=yes,
- [AC_MSG_WARN(cannot check pgrp synchronization if cross compiling -- defaulting to no)
- bash_cv_pgrp_pipe=no])
-])
-AC_MSG_RESULT($bash_cv_pgrp_pipe)
-if test $bash_cv_pgrp_pipe = yes; then
-AC_DEFINE(PGRP_PIPE)
-fi
-])
-
-AC_DEFUN(BASH_SYS_REINSTALL_SIGHANDLERS,
-[AC_REQUIRE([AC_TYPE_SIGNAL])
-AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE])
-AC_MSG_CHECKING([if signal handlers must be reinstalled when invoked])
-AC_CACHE_VAL(bash_cv_must_reinstall_sighandlers,
-[AC_TRY_RUN([
-#include <signal.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-
-typedef RETSIGTYPE sigfunc();
-
-int nsigint;
-
-#ifdef HAVE_POSIX_SIGNALS
-sigfunc *
-set_signal_handler(sig, handler)
- int sig;
- sigfunc *handler;
-{
- struct sigaction act, oact;
- act.sa_handler = handler;
- act.sa_flags = 0;
- sigemptyset (&act.sa_mask);
- sigemptyset (&oact.sa_mask);
- sigaction (sig, &act, &oact);
- return (oact.sa_handler);
-}
-#else
-#define set_signal_handler(s, h) signal(s, h)
-#endif
-
-RETSIGTYPE
-sigint(s)
-int s;
-{
- nsigint++;
-}
-
-main()
-{
- nsigint = 0;
- set_signal_handler(SIGINT, sigint);
- kill((int)getpid(), SIGINT);
- kill((int)getpid(), SIGINT);
- exit(nsigint != 2);
-}
-], bash_cv_must_reinstall_sighandlers=no, bash_cv_must_reinstall_sighandlers=yes,
- [AC_MSG_WARN(cannot check signal handling if cross compiling -- defaulting to no)
- bash_cv_must_reinstall_sighandlers=no]
-)])
-AC_MSG_RESULT($bash_cv_must_reinstall_sighandlers)
-if test $bash_cv_must_reinstall_sighandlers = yes; then
-AC_DEFINE(MUST_REINSTALL_SIGHANDLERS)
-fi
-])
-
-dnl check that some necessary job control definitions are present
-AC_DEFUN(BASH_SYS_JOB_CONTROL_MISSING,
-[AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE])
-AC_MSG_CHECKING(for presence of necessary job control definitions)
-AC_CACHE_VAL(bash_cv_job_control_missing,
-[AC_TRY_RUN([
-#include <sys/types.h>
-#ifdef HAVE_SYS_WAIT_H
-#include <sys/wait.h>
-#endif
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#include <signal.h>
-
-/* Add more tests in here as appropriate. */
-main()
-{
-/* signal type */
-#if !defined (HAVE_POSIX_SIGNALS) && !defined (HAVE_BSD_SIGNALS)
-exit(1);
-#endif
-
-/* signals and tty control. */
-#if !defined (SIGTSTP) || !defined (SIGSTOP) || !defined (SIGCONT)
-exit (1);
-#endif
-
-/* process control */
-#if !defined (WNOHANG) || !defined (WUNTRACED)
-exit(1);
-#endif
-
-/* Posix systems have tcgetpgrp and waitpid. */
-#if defined (_POSIX_VERSION) && !defined (HAVE_TCGETPGRP)
-exit(1);
-#endif
-
-#if defined (_POSIX_VERSION) && !defined (HAVE_WAITPID)
-exit(1);
-#endif
-
-/* Other systems have TIOCSPGRP/TIOCGPRGP and wait3. */
-#if !defined (_POSIX_VERSION) && !defined (HAVE_WAIT3)
-exit(1);
-#endif
-
-exit(0);
-}], bash_cv_job_control_missing=present, bash_cv_job_control_missing=missing,
- [AC_MSG_WARN(cannot check job control if cross-compiling -- defaulting to missing)
- bash_cv_job_control_missing=missing]
-)])
-AC_MSG_RESULT($bash_cv_job_control_missing)
-if test $bash_cv_job_control_missing = missing; then
-AC_DEFINE(JOB_CONTROL_MISSING)
-fi
-])
-
-dnl check whether named pipes are present
-dnl this requires a previous check for mkfifo, but that is awkward to specify
-AC_DEFUN(BASH_SYS_NAMED_PIPES,
-[AC_MSG_CHECKING(for presence of named pipes)
-AC_CACHE_VAL(bash_cv_sys_named_pipes,
-[AC_TRY_RUN([
-#include <sys/types.h>
-#include <sys/stat.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-
-/* Add more tests in here as appropriate. */
-main()
-{
-int fd, err;
-
-#if defined (HAVE_MKFIFO)
-exit (0);
-#endif
-
-#if !defined (S_IFIFO) && (defined (_POSIX_VERSION) && !defined (S_ISFIFO))
-exit (1);
-#endif
-
-#if defined (NeXT)
-exit (1);
-#endif
-err = mkdir("/tmp/bash-aclocal", 0700);
-if (err < 0) {
- perror ("mkdir");
- exit(1);
-}
-fd = mknod ("/tmp/bash-aclocal/sh-np-autoconf", 0666 | S_IFIFO, 0);
-if (fd == -1) {
- rmdir ("/tmp/bash-aclocal");
- exit (1);
-}
-close(fd);
-unlink ("/tmp/bash-aclocal/sh-np-autoconf");
-rmdir ("/tmp/bash-aclocal");
-exit(0);
-}], bash_cv_sys_named_pipes=present, bash_cv_sys_named_pipes=missing,
- [AC_MSG_WARN(cannot check for named pipes if cross-compiling -- defaulting to missing)
- bash_cv_sys_named_pipes=missing]
-)])
-AC_MSG_RESULT($bash_cv_sys_named_pipes)
-if test $bash_cv_sys_named_pipes = missing; then
-AC_DEFINE(NAMED_PIPES_MISSING)
-fi
-])
-
-AC_DEFUN(BASH_SYS_DEFAULT_MAIL_DIR,
-[AC_MSG_CHECKING(for default mail directory)
-AC_CACHE_VAL(bash_cv_mail_dir,
-[if test -d /var/mail; then
- bash_cv_mail_dir=/var/mail
- elif test -d /var/spool/mail; then
- bash_cv_mail_dir=/var/spool/mail
- elif test -d /usr/mail; then
- bash_cv_mail_dir=/usr/mail
- elif test -d /usr/spool/mail; then
- bash_cv_mail_dir=/usr/spool/mail
- else
- bash_cv_mail_dir=unknown
- fi
-])
-AC_MSG_RESULT($bash_cv_mail_dir)
-AC_DEFINE_UNQUOTED(DEFAULT_MAIL_DIRECTORY, "$bash_cv_mail_dir")
-])
-
-AC_DEFUN(BASH_HAVE_TIOCGWINSZ,
-[AC_MSG_CHECKING(for TIOCGWINSZ in sys/ioctl.h)
-AC_CACHE_VAL(bash_cv_tiocgwinsz_in_ioctl,
-[AC_TRY_COMPILE([#include <sys/types.h>
-#include <sys/ioctl.h>], [int x = TIOCGWINSZ;],
- bash_cv_tiocgwinsz_in_ioctl=yes,bash_cv_tiocgwinsz_in_ioctl=no)])
-AC_MSG_RESULT($bash_cv_tiocgwinsz_in_ioctl)
-if test $bash_cv_tiocgwinsz_in_ioctl = yes; then
-AC_DEFINE(GWINSZ_IN_SYS_IOCTL)
-fi
-])
-
-AC_DEFUN(BASH_HAVE_TIOCSTAT,
-[AC_MSG_CHECKING(for TIOCSTAT in sys/ioctl.h)
-AC_CACHE_VAL(bash_cv_tiocstat_in_ioctl,
-[AC_TRY_COMPILE([#include <sys/types.h>
-#include <sys/ioctl.h>], [int x = TIOCSTAT;],
- bash_cv_tiocstat_in_ioctl=yes,bash_cv_tiocstat_in_ioctl=no)])
-AC_MSG_RESULT($bash_cv_tiocstat_in_ioctl)
-if test $bash_cv_tiocstat_in_ioctl = yes; then
-AC_DEFINE(TIOCSTAT_IN_SYS_IOCTL)
-fi
-])
-
-AC_DEFUN(BASH_HAVE_FIONREAD,
-[AC_MSG_CHECKING(for FIONREAD in sys/ioctl.h)
-AC_CACHE_VAL(bash_cv_fionread_in_ioctl,
-[AC_TRY_COMPILE([#include <sys/types.h>
-#include <sys/ioctl.h>], [int x = FIONREAD;],
- bash_cv_fionread_in_ioctl=yes,bash_cv_fionread_in_ioctl=no)])
-AC_MSG_RESULT($bash_cv_fionread_in_ioctl)
-if test $bash_cv_fionread_in_ioctl = yes; then
-AC_DEFINE(FIONREAD_IN_SYS_IOCTL)
-fi
-])
-
-dnl
-dnl See if speed_t is declared in <sys/types.h>. Some versions of linux
-dnl require a definition of speed_t each time <termcap.h> is included,
-dnl but you can only get speed_t if you include <termios.h> (on some
-dnl versions) or <sys/types.h> (on others).
-dnl
-AC_DEFUN(BASH_CHECK_SPEED_T,
-[AC_MSG_CHECKING(for speed_t in sys/types.h)
-AC_CACHE_VAL(bash_cv_speed_t_in_sys_types,
-[AC_TRY_COMPILE([#include <sys/types.h>], [speed_t x;],
- bash_cv_speed_t_in_sys_types=yes,bash_cv_speed_t_in_sys_types=no)])
-AC_MSG_RESULT($bash_cv_speed_t_in_sys_types)
-if test $bash_cv_speed_t_in_sys_types = yes; then
-AC_DEFINE(SPEED_T_IN_SYS_TYPES)
-fi
-])
-
-AC_DEFUN(BASH_CHECK_GETPW_FUNCS,
-[AC_MSG_CHECKING(whether getpw functions are declared in pwd.h)
-AC_CACHE_VAL(bash_cv_getpw_declared,
-[AC_EGREP_CPP(getpwuid,
-[
-#include <sys/types.h>
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-#include <pwd.h>
-],
-bash_cv_getpw_declared=yes,bash_cv_getpw_declared=no)])
-AC_MSG_RESULT($bash_cv_getpw_declared)
-if test $bash_cv_getpw_declared = yes; then
-AC_DEFINE(HAVE_GETPW_DECLS)
-fi
-])
-
-AC_DEFUN(BASH_CHECK_DEV_FD,
-[AC_MSG_CHECKING(whether /dev/fd is available)
-AC_CACHE_VAL(bash_cv_dev_fd,
-[if test -d /dev/fd && test -r /dev/fd/0; then
- bash_cv_dev_fd=standard
- elif test -d /proc/self/fd && test -r /proc/self/fd/0; then
- bash_cv_dev_fd=whacky
- else
- bash_cv_dev_fd=absent
- fi
-])
-AC_MSG_RESULT($bash_cv_dev_fd)
-if test $bash_cv_dev_fd = "standard"; then
- AC_DEFINE(HAVE_DEV_FD)
- AC_DEFINE(DEV_FD_PREFIX, "/dev/fd/")
-elif test $bash_cv_dev_fd = "whacky"; then
- AC_DEFINE(HAVE_DEV_FD)
- AC_DEFINE(DEV_FD_PREFIX, "/proc/self/fd/")
-fi
-])
-
-AC_DEFUN(BASH_CHECK_DEV_STDIN,
-[AC_MSG_CHECKING(whether /dev/stdin stdout stderr are available)
-AC_CACHE_VAL(bash_cv_dev_stdin,
-[if test -d /dev/fd && test -r /dev/stdin; then
- bash_cv_dev_stdin=present
- elif test -d /proc/self/fd && test -r /dev/stdin; then
- bash_cv_dev_stdin=present
- else
- bash_cv_dev_stdin=absent
- fi
-])
-AC_MSG_RESULT($bash_cv_dev_stdin)
-if test $bash_cv_dev_stdin = "present"; then
- AC_DEFINE(HAVE_DEV_STDIN)
-fi
-])
-
-dnl
-dnl Check if HPUX needs _KERNEL defined for RLIMIT_* definitions
-dnl
-AC_DEFUN(BASH_CHECK_KERNEL_RLIMIT,
-[AC_MSG_CHECKING([whether $host_os needs _KERNEL for RLIMIT defines])
-AC_CACHE_VAL(bash_cv_kernel_rlimit,
-[AC_TRY_COMPILE([
-#include <sys/types.h>
-#include <sys/resource.h>
-],
-[
- int f;
- f = RLIMIT_DATA;
-], bash_cv_kernel_rlimit=no,
-[AC_TRY_COMPILE([
-#include <sys/types.h>
-#define _KERNEL
-#include <sys/resource.h>
-#undef _KERNEL
-],
-[
- int f;
- f = RLIMIT_DATA;
-], bash_cv_kernel_rlimit=yes, bash_cv_kernel_rlimit=no)]
-)])
-AC_MSG_RESULT($bash_cv_kernel_rlimit)
-if test $bash_cv_kernel_rlimit = yes; then
-AC_DEFINE(RLIMIT_NEEDS_KERNEL)
-fi
-])
-
-dnl
-dnl Check for 64-bit off_t -- used for malloc alignment
-dnl
-dnl C does not allow duplicate case labels, so the compile will fail if
-dnl sizeof(off_t) is > 4.
-dnl
-AC_DEFUN(BASH_CHECK_OFF_T_64,
-[AC_CACHE_CHECK(for 64-bit off_t, bash_cv_off_t_64,
-AC_TRY_COMPILE([
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#include <sys/types.h>
-],[
-switch (0) case 0: case (sizeof (off_t) <= 4):;
-], bash_cv_off_t_64=no, bash_cv_off_t_64=yes))
-if test $bash_cv_off_t_64 = yes; then
- AC_DEFINE(HAVE_OFF_T_64)
-fi])
-
-AC_DEFUN(BASH_CHECK_RTSIGS,
-[AC_MSG_CHECKING(for unusable real-time signals due to large values)
-AC_CACHE_VAL(bash_cv_unusable_rtsigs,
-[AC_TRY_RUN([
-#include <sys/types.h>
-#include <signal.h>
-
-#ifndef NSIG
-# define NSIG 64
-#endif
-
-main ()
-{
- int n_sigs = 2 * NSIG;
-#ifdef SIGRTMIN
- int rtmin = SIGRTMIN;
-#else
- int rtmin = 0;
-#endif
-
- exit(rtmin < n_sigs);
-}], bash_cv_unusable_rtsigs=yes, bash_cv_unusable_rtsigs=no,
- [AC_MSG_WARN(cannot check real-time signals if cross compiling -- defaulting to yes)
- bash_cv_unusable_rtsigs=yes]
-)])
-AC_MSG_RESULT($bash_cv_unusable_rtsigs)
-if test $bash_cv_unusable_rtsigs = yes; then
-AC_DEFINE(UNUSABLE_RT_SIGNALS)
-fi
-])
-
-dnl
-dnl check for availability of multibyte characters and functions
-dnl
-AC_DEFUN(BASH_CHECK_MULTIBYTE,
-[
-AC_CHECK_HEADERS(wctype.h)
-AC_CHECK_HEADERS(wchar.h)
-AC_CHECK_HEADERS(langinfo.h)
-
-AC_CHECK_FUNC(mbsrtowcs, AC_DEFINE(HAVE_MBSRTOWCS))
-AC_CHECK_FUNC(wcwidth, AC_DEFINE(HAVE_WCWIDTH))
-
-AC_CACHE_CHECK([for mbstate_t], bash_cv_have_mbstate_t,
-[AC_TRY_RUN([
-#include <wchar.h>
-int
-main ()
-{
- mbstate_t ps;
- return 0;
-}], bash_cv_have_mbstate_t=yes, bash_cv_have_mbstate_t=no)])
-if test $bash_cv_have_mbstate_t = yes; then
- AC_DEFINE(HAVE_MBSTATE_T)
-fi
-
-AC_CACHE_CHECK([for nl_langinfo and CODESET], bash_cv_langinfo_codeset,
-[AC_TRY_LINK(
-[#include <langinfo.h>],
-[char* cs = nl_langinfo(CODESET);],
-bash_cv_langinfo_codeset=yes, bash_cv_langinfo_codeset=no)])
-if test $bash_cv_langinfo_codeset = yes; then
- AC_DEFINE(HAVE_LANGINFO_CODESET)
-fi
-
-])
-
-dnl need: prefix exec_prefix libdir includedir CC TERMCAP_LIB
-dnl require:
-dnl AC_PROG_CC
-dnl BASH_CHECK_LIB_TERMCAP
-
-AC_DEFUN(RL_LIB_READLINE_VERSION,
-[
-AC_REQUIRE([BASH_CHECK_LIB_TERMCAP])
-
-AC_MSG_CHECKING([version of installed readline library])
-
-# What a pain in the ass this is.
-
-# save cpp and ld options
-_save_CFLAGS="$CFLAGS"
-_save_LDFLAGS="$LDFLAGS"
-_save_LIBS="$LIBS"
-
-# Don't set ac_cv_rl_prefix if the caller has already assigned a value. This
-# allows the caller to do something like $_rl_prefix=$withval if the user
-# specifies --with-installed-readline=PREFIX as an argument to configure
-
-if test -z "$ac_cv_rl_prefix"; then
-test "x$prefix" = xNONE && ac_cv_rl_prefix=$ac_default_prefix || ac_cv_rl_prefix=${prefix}
-fi
-
-eval ac_cv_rl_includedir=${ac_cv_rl_prefix}/include
-eval ac_cv_rl_libdir=${ac_cv_rl_prefix}/lib
-
-LIBS="$LIBS -lreadline ${TERMCAP_LIB}"
-CFLAGS="$CFLAGS -I${ac_cv_rl_includedir}"
-LDFLAGS="$LDFLAGS -L${ac_cv_rl_libdir}"
-
-AC_TRY_RUN([
-#include <stdio.h>
-#include <readline/readline.h>
-
-main()
-{
- FILE *fp;
- fp = fopen("conftest.rlv", "w");
- if (fp == 0) exit(1);
- fprintf(fp, "%s\n", rl_library_version ? rl_library_version : "0.0");
- fclose(fp);
- exit(0);
-}
-],
-ac_cv_rl_version=`cat conftest.rlv`,
-ac_cv_rl_version='0.0',
-ac_cv_rl_version='4.2')
-
-CFLAGS="$_save_CFLAGS"
-LDFLAGS="$_save_LDFLAGS"
-LIBS="$_save_LIBS"
-
-RL_MAJOR=0
-RL_MINOR=0
-
-# (
-case "$ac_cv_rl_version" in
-2*|3*|4*|5*|6*|7*|8*|9*)
- RL_MAJOR=`echo $ac_cv_rl_version | sed 's:\..*$::'`
- RL_MINOR=`echo $ac_cv_rl_version | sed -e 's:^.*\.::' -e 's:[[a-zA-Z]]*$::'`
- ;;
-esac
-
-# (((
-case $RL_MAJOR in
-[[0-9][0-9]]) _RL_MAJOR=$RL_MAJOR ;;
-[[0-9]]) _RL_MAJOR=0$RL_MAJOR ;;
-*) _RL_MAJOR=00 ;;
-esac
-
-# (((
-case $RL_MINOR in
-[[0-9][0-9]]) _RL_MINOR=$RL_MINOR ;;
-[[0-9]]) _RL_MINOR=0$RL_MINOR ;;
-*) _RL_MINOR=00 ;;
-esac
-
-RL_VERSION="0x${_RL_MAJOR}${_RL_MINOR}"
-
-# Readline versions greater than 4.2 have these defines in readline.h
-
-if test $ac_cv_rl_version = '0.0' ; then
- AC_MSG_WARN([Could not test version of installed readline library.])
-elif test $RL_MAJOR -gt 4 || { test $RL_MAJOR = 4 && test $RL_MINOR -gt 2 ; } ; then
- # set these for use by the caller
- RL_PREFIX=$ac_cv_rl_prefix
- RL_LIBDIR=$ac_cv_rl_libdir
- RL_INCLUDEDIR=$ac_cv_rl_includedir
- AC_MSG_RESULT($ac_cv_rl_version)
-else
-
-AC_DEFINE_UNQUOTED(RL_READLINE_VERSION, $RL_VERSION, [encoded version of the installed readline library])
-AC_DEFINE_UNQUOTED(RL_VERSION_MAJOR, $RL_MAJOR, [major version of installed readline library])
-AC_DEFINE_UNQUOTED(RL_VERSION_MINOR, $RL_MINOR, [minor version of installed readline library])
-
-AC_SUBST(RL_VERSION)
-AC_SUBST(RL_MAJOR)
-AC_SUBST(RL_MINOR)
-
-# set these for use by the caller
-RL_PREFIX=$ac_cv_rl_prefix
-RL_LIBDIR=$ac_cv_rl_libdir
-RL_INCLUDEDIR=$ac_cv_rl_includedir
-
-AC_MSG_RESULT($ac_cv_rl_version)
-
-fi
-])
diff --git a/readline-4.3.orig/ansi_stdlib.h b/readline-4.3.orig/ansi_stdlib.h
deleted file mode 100644
index db13cd2..0000000
--- a/readline-4.3.orig/ansi_stdlib.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* ansi_stdlib.h -- An ANSI Standard stdlib.h. */
-/* A minimal stdlib.h containing extern declarations for those functions
- that bash uses. */
-
-/* Copyright (C) 1993 Free Software Foundation, Inc.
-
- This file is part of GNU Bash, the Bourne Again SHell.
-
- Bash is free software; you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free
- Software Foundation; either version 2, or (at your option) any later
- version.
-
- Bash is distributed in the hope that it will be useful, but WITHOUT ANY
- WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- for more details.
-
- You should have received a copy of the GNU General Public License along
- with Bash; see the file COPYING. If not, write to the Free Software
- Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if !defined (_STDLIB_H_)
-#define _STDLIB_H_ 1
-
-/* String conversion functions. */
-extern int atoi ();
-
-extern double atof ();
-extern double strtod ();
-
-/* Memory allocation functions. */
-/* Generic pointer type. */
-#ifndef PTR_T
-
-#if defined (__STDC__)
-# define PTR_T void *
-#else
-# define PTR_T char *
-#endif
-
-#endif /* PTR_T */
-
-extern PTR_T malloc ();
-extern PTR_T realloc ();
-extern void free ();
-
-/* Other miscellaneous functions. */
-extern void abort ();
-extern void exit ();
-extern char *getenv ();
-extern void qsort ();
-
-#endif /* _STDLIB_H */
diff --git a/readline-4.3.orig/bind.c b/readline-4.3.orig/bind.c
deleted file mode 100644
index 65ef401..0000000
--- a/readline-4.3.orig/bind.c
+++ /dev/null
@@ -1,2150 +0,0 @@
-/* bind.c -- key binding and startup file support for the readline library. */
-
-/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <fcntl.h>
-#if defined (HAVE_SYS_FILE_H)
-# include <sys/file.h>
-#endif /* HAVE_SYS_FILE_H */
-
-#if defined (HAVE_UNISTD_H)
-# include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#include <errno.h>
-
-#if !defined (errno)
-extern int errno;
-#endif /* !errno */
-
-#include "posixstat.h"
-
-/* System-specific feature definitions and include files. */
-#include "rldefs.h"
-
-/* Some standard library routines. */
-#include "readline.h"
-#include "history.h"
-
-#include "rlprivate.h"
-#include "rlshell.h"
-#include "xmalloc.h"
-
-#if !defined (strchr) && !defined (__STDC__)
-extern char *strchr (), *strrchr ();
-#endif /* !strchr && !__STDC__ */
-
-/* Variables exported by this file. */
-Keymap rl_binding_keymap;
-
-static char *_rl_read_file PARAMS((char *, size_t *));
-static void _rl_init_file_error PARAMS((const char *));
-static int _rl_read_init_file PARAMS((const char *, int));
-static int glean_key_from_name PARAMS((char *));
-static int substring_member_of_array PARAMS((char *, const char **));
-
-static int currently_reading_init_file;
-
-/* used only in this file */
-static int _rl_prefer_visible_bell = 1;
-
-/* **************************************************************** */
-/* */
-/* Binding keys */
-/* */
-/* **************************************************************** */
-
-/* rl_add_defun (char *name, rl_command_func_t *function, int key)
- Add NAME to the list of named functions. Make FUNCTION be the function
- that gets called. If KEY is not -1, then bind it. */
-int
-rl_add_defun (name, function, key)
- const char *name;
- rl_command_func_t *function;
- int key;
-{
- if (key != -1)
- rl_bind_key (key, function);
- rl_add_funmap_entry (name, function);
- return 0;
-}
-
-/* Bind KEY to FUNCTION. Returns non-zero if KEY is out of range. */
-int
-rl_bind_key (key, function)
- int key;
- rl_command_func_t *function;
-{
- if (key < 0)
- return (key);
-
- if (META_CHAR (key) && _rl_convert_meta_chars_to_ascii)
- {
- if (_rl_keymap[ESC].type == ISKMAP)
- {
- Keymap escmap;
-
- escmap = FUNCTION_TO_KEYMAP (_rl_keymap, ESC);
- key = UNMETA (key);
- escmap[key].type = ISFUNC;
- escmap[key].function = function;
- return (0);
- }
- return (key);
- }
-
- _rl_keymap[key].type = ISFUNC;
- _rl_keymap[key].function = function;
- rl_binding_keymap = _rl_keymap;
- return (0);
-}
-
-/* Bind KEY to FUNCTION in MAP. Returns non-zero in case of invalid
- KEY. */
-int
-rl_bind_key_in_map (key, function, map)
- int key;
- rl_command_func_t *function;
- Keymap map;
-{
- int result;
- Keymap oldmap;
-
- oldmap = _rl_keymap;
- _rl_keymap = map;
- result = rl_bind_key (key, function);
- _rl_keymap = oldmap;
- return (result);
-}
-
-/* Make KEY do nothing in the currently selected keymap.
- Returns non-zero in case of error. */
-int
-rl_unbind_key (key)
- int key;
-{
- return (rl_bind_key (key, (rl_command_func_t *)NULL));
-}
-
-/* Make KEY do nothing in MAP.
- Returns non-zero in case of error. */
-int
-rl_unbind_key_in_map (key, map)
- int key;
- Keymap map;
-{
- return (rl_bind_key_in_map (key, (rl_command_func_t *)NULL, map));
-}
-
-/* Unbind all keys bound to FUNCTION in MAP. */
-int
-rl_unbind_function_in_map (func, map)
- rl_command_func_t *func;
- Keymap map;
-{
- register int i, rval;
-
- for (i = rval = 0; i < KEYMAP_SIZE; i++)
- {
- if (map[i].type == ISFUNC && map[i].function == func)
- {
- map[i].function = (rl_command_func_t *)NULL;
- rval = 1;
- }
- }
- return rval;
-}
-
-int
-rl_unbind_command_in_map (command, map)
- const char *command;
- Keymap map;
-{
- rl_command_func_t *func;
-
- func = rl_named_function (command);
- if (func == 0)
- return 0;
- return (rl_unbind_function_in_map (func, map));
-}
-
-/* Bind the key sequence represented by the string KEYSEQ to
- FUNCTION. This makes new keymaps as necessary. The initial
- place to do bindings is in MAP. */
-int
-rl_set_key (keyseq, function, map)
- const char *keyseq;
- rl_command_func_t *function;
- Keymap map;
-{
- return (rl_generic_bind (ISFUNC, keyseq, (char *)function, map));
-}
-
-/* Bind the key sequence represented by the string KEYSEQ to
- the string of characters MACRO. This makes new keymaps as
- necessary. The initial place to do bindings is in MAP. */
-int
-rl_macro_bind (keyseq, macro, map)
- const char *keyseq, *macro;
- Keymap map;
-{
- char *macro_keys;
- int macro_keys_len;
-
- macro_keys = (char *)xmalloc ((2 * strlen (macro)) + 1);
-
- if (rl_translate_keyseq (macro, macro_keys, &macro_keys_len))
- {
- free (macro_keys);
- return -1;
- }
- rl_generic_bind (ISMACR, keyseq, macro_keys, map);
- return 0;
-}
-
-/* Bind the key sequence represented by the string KEYSEQ to
- the arbitrary pointer DATA. TYPE says what kind of data is
- pointed to by DATA, right now this can be a function (ISFUNC),
- a macro (ISMACR), or a keymap (ISKMAP). This makes new keymaps
- as necessary. The initial place to do bindings is in MAP. */
-int
-rl_generic_bind (type, keyseq, data, map)
- int type;
- const char *keyseq;
- char *data;
- Keymap map;
-{
- char *keys;
- int keys_len;
- register int i;
- KEYMAP_ENTRY k;
-
- k.function = 0;
-
- /* If no keys to bind to, exit right away. */
- if (!keyseq || !*keyseq)
- {
- if (type == ISMACR)
- free (data);
- return -1;
- }
-
- keys = (char *)xmalloc (1 + (2 * strlen (keyseq)));
-
- /* Translate the ASCII representation of KEYSEQ into an array of
- characters. Stuff the characters into KEYS, and the length of
- KEYS into KEYS_LEN. */
- if (rl_translate_keyseq (keyseq, keys, &keys_len))
- {
- free (keys);
- return -1;
- }
-
- /* Bind keys, making new keymaps as necessary. */
- for (i = 0; i < keys_len; i++)
- {
- unsigned char uc = keys[i];
- int ic;
-
- ic = uc;
- if (ic < 0 || ic >= KEYMAP_SIZE)
- return -1;
-
- if (_rl_convert_meta_chars_to_ascii && META_CHAR (ic))
- {
- ic = UNMETA (ic);
- if (map[ESC].type == ISKMAP)
- map = FUNCTION_TO_KEYMAP (map, ESC);
- }
-
- if ((i + 1) < keys_len)
- {
- if (map[ic].type != ISKMAP)
- {
- /* We allow subsequences of keys. If a keymap is being
- created that will `shadow' an existing function or macro
- key binding, we save that keybinding into the ANYOTHERKEY
- index in the new map. The dispatch code will look there
- to find the function to execute if the subsequence is not
- matched. ANYOTHERKEY was chosen to be greater than
- UCHAR_MAX. */
- k = map[ic];
-
- map[ic].type = ISKMAP;
- map[ic].function = KEYMAP_TO_FUNCTION (rl_make_bare_keymap());
- }
- map = FUNCTION_TO_KEYMAP (map, ic);
- /* The dispatch code will return this function if no matching
- key sequence is found in the keymap. This (with a little
- help from the dispatch code in readline.c) allows `a' to be
- mapped to something, `abc' to be mapped to something else,
- and the function bound to `a' to be executed when the user
- types `abx', leaving `bx' in the input queue. */
- if (k.function /* && k.type == ISFUNC */)
- {
- map[ANYOTHERKEY] = k;
- k.function = 0;
- }
- }
- else
- {
- if (map[ic].type == ISMACR)
- free ((char *)map[ic].function);
- else if (map[ic].type == ISKMAP)
- {
- map = FUNCTION_TO_KEYMAP (map, ic);
- ic = ANYOTHERKEY;
- }
-
- map[ic].function = KEYMAP_TO_FUNCTION (data);
- map[ic].type = type;
- }
-
- rl_binding_keymap = map;
- }
- free (keys);
- return 0;
-}
-
-/* Translate the ASCII representation of SEQ, stuffing the values into ARRAY,
- an array of characters. LEN gets the final length of ARRAY. Return
- non-zero if there was an error parsing SEQ. */
-int
-rl_translate_keyseq (seq, array, len)
- const char *seq;
- char *array;
- int *len;
-{
- register int i, c, l, temp;
-
- for (i = l = 0; c = seq[i]; i++)
- {
- if (c == '\\')
- {
- c = seq[++i];
-
- if (c == 0)
- break;
-
- /* Handle \C- and \M- prefixes. */
- if ((c == 'C' || c == 'M') && seq[i + 1] == '-')
- {
- /* Handle special case of backwards define. */
- if (strncmp (&seq[i], "C-\\M-", 5) == 0)
- {
- array[l++] = ESC; /* ESC is meta-prefix */
- i += 5;
- array[l++] = CTRL (_rl_to_upper (seq[i]));
- if (seq[i] == '\0')
- i--;
- }
- else if (c == 'M')
- {
- i++;
- array[l++] = ESC; /* ESC is meta-prefix */
- }
- else if (c == 'C')
- {
- i += 2;
- /* Special hack for C-?... */
- array[l++] = (seq[i] == '?') ? RUBOUT : CTRL (_rl_to_upper (seq[i]));
- }
- continue;
- }
-
- /* Translate other backslash-escaped characters. These are the
- same escape sequences that bash's `echo' and `printf' builtins
- handle, with the addition of \d -> RUBOUT. A backslash
- preceding a character that is not special is stripped. */
- switch (c)
- {
- case 'a':
- array[l++] = '\007';
- break;
- case 'b':
- array[l++] = '\b';
- break;
- case 'd':
- array[l++] = RUBOUT; /* readline-specific */
- break;
- case 'e':
- array[l++] = ESC;
- break;
- case 'f':
- array[l++] = '\f';
- break;
- case 'n':
- array[l++] = NEWLINE;
- break;
- case 'r':
- array[l++] = RETURN;
- break;
- case 't':
- array[l++] = TAB;
- break;
- case 'v':
- array[l++] = 0x0B;
- break;
- case '\\':
- array[l++] = '\\';
- break;
- case '0': case '1': case '2': case '3':
- case '4': case '5': case '6': case '7':
- i++;
- for (temp = 2, c -= '0'; ISOCTAL (seq[i]) && temp--; i++)
- c = (c * 8) + OCTVALUE (seq[i]);
- i--; /* auto-increment in for loop */
- array[l++] = c & largest_char;
- break;
- case 'x':
- i++;
- for (temp = 2, c = 0; ISXDIGIT ((unsigned char)seq[i]) && temp--; i++)
- c = (c * 16) + HEXVALUE (seq[i]);
- if (temp == 2)
- c = 'x';
- i--; /* auto-increment in for loop */
- array[l++] = c & largest_char;
- break;
- default: /* backslashes before non-special chars just add the char */
- array[l++] = c;
- break; /* the backslash is stripped */
- }
- continue;
- }
-
- array[l++] = c;
- }
-
- *len = l;
- array[l] = '\0';
- return (0);
-}
-
-char *
-rl_untranslate_keyseq (seq)
- int seq;
-{
- static char kseq[16];
- int i, c;
-
- i = 0;
- c = seq;
- if (META_CHAR (c))
- {
- kseq[i++] = '\\';
- kseq[i++] = 'M';
- kseq[i++] = '-';
- c = UNMETA (c);
- }
- else if (CTRL_CHAR (c))
- {
- kseq[i++] = '\\';
- kseq[i++] = 'C';
- kseq[i++] = '-';
- c = _rl_to_lower (UNCTRL (c));
- }
- else if (c == RUBOUT)
- {
- kseq[i++] = '\\';
- kseq[i++] = 'C';
- kseq[i++] = '-';
- c = '?';
- }
-
- if (c == ESC)
- {
- kseq[i++] = '\\';
- c = 'e';
- }
- else if (c == '\\' || c == '"')
- {
- kseq[i++] = '\\';
- }
-
- kseq[i++] = (unsigned char) c;
- kseq[i] = '\0';
- return kseq;
-}
-
-static char *
-_rl_untranslate_macro_value (seq)
- char *seq;
-{
- char *ret, *r, *s;
- int c;
-
- r = ret = (char *)xmalloc (7 * strlen (seq) + 1);
- for (s = seq; *s; s++)
- {
- c = *s;
- if (META_CHAR (c))
- {
- *r++ = '\\';
- *r++ = 'M';
- *r++ = '-';
- c = UNMETA (c);
- }
- else if (CTRL_CHAR (c) && c != ESC)
- {
- *r++ = '\\';
- *r++ = 'C';
- *r++ = '-';
- c = _rl_to_lower (UNCTRL (c));
- }
- else if (c == RUBOUT)
- {
- *r++ = '\\';
- *r++ = 'C';
- *r++ = '-';
- c = '?';
- }
-
- if (c == ESC)
- {
- *r++ = '\\';
- c = 'e';
- }
- else if (c == '\\' || c == '"')
- *r++ = '\\';
-
- *r++ = (unsigned char)c;
- }
- *r = '\0';
- return ret;
-}
-
-/* Return a pointer to the function that STRING represents.
- If STRING doesn't have a matching function, then a NULL pointer
- is returned. */
-rl_command_func_t *
-rl_named_function (string)
- const char *string;
-{
- register int i;
-
- rl_initialize_funmap ();
-
- for (i = 0; funmap[i]; i++)
- if (_rl_stricmp (funmap[i]->name, string) == 0)
- return (funmap[i]->function);
- return ((rl_command_func_t *)NULL);
-}
-
-/* Return the function (or macro) definition which would be invoked via
- KEYSEQ if executed in MAP. If MAP is NULL, then the current keymap is
- used. TYPE, if non-NULL, is a pointer to an int which will receive the
- type of the object pointed to. One of ISFUNC (function), ISKMAP (keymap),
- or ISMACR (macro). */
-rl_command_func_t *
-rl_function_of_keyseq (keyseq, map, type)
- const char *keyseq;
- Keymap map;
- int *type;
-{
- register int i;
-
- if (!map)
- map = _rl_keymap;
-
- for (i = 0; keyseq && keyseq[i]; i++)
- {
- unsigned char ic = keyseq[i];
-
- if (META_CHAR (ic) && _rl_convert_meta_chars_to_ascii)
- {
- if (map[ESC].type != ISKMAP)
- {
- if (type)
- *type = map[ESC].type;
-
- return (map[ESC].function);
- }
- else
- {
- map = FUNCTION_TO_KEYMAP (map, ESC);
- ic = UNMETA (ic);
- }
- }
-
- if (map[ic].type == ISKMAP)
- {
- /* If this is the last key in the key sequence, return the
- map. */
- if (!keyseq[i + 1])
- {
- if (type)
- *type = ISKMAP;
-
- return (map[ic].function);
- }
- else
- map = FUNCTION_TO_KEYMAP (map, ic);
- }
- else
- {
- if (type)
- *type = map[ic].type;
-
- return (map[ic].function);
- }
- }
- return ((rl_command_func_t *) NULL);
-}
-
-/* The last key bindings file read. */
-static char *last_readline_init_file = (char *)NULL;
-
-/* The file we're currently reading key bindings from. */
-static const char *current_readline_init_file;
-static int current_readline_init_include_level;
-static int current_readline_init_lineno;
-
-/* Read FILENAME into a locally-allocated buffer and return the buffer.
- The size of the buffer is returned in *SIZEP. Returns NULL if any
- errors were encountered. */
-static char *
-_rl_read_file (filename, sizep)
- char *filename;
- size_t *sizep;
-{
- struct stat finfo;
- size_t file_size;
- char *buffer;
- int i, file;
-
- if ((stat (filename, &finfo) < 0) || (file = open (filename, O_RDONLY, 0666)) < 0)
- return ((char *)NULL);
-
- file_size = (size_t)finfo.st_size;
-
- /* check for overflow on very large files */
- if (file_size != finfo.st_size || file_size + 1 < file_size)
- {
- if (file >= 0)
- close (file);
-#if defined (EFBIG)
- errno = EFBIG;
-#endif
- return ((char *)NULL);
- }
-
- /* Read the file into BUFFER. */
- buffer = (char *)xmalloc (file_size + 1);
- i = read (file, buffer, file_size);
- close (file);
-
- if (i < 0)
- {
- free (buffer);
- return ((char *)NULL);
- }
-
- buffer[i] = '\0';
- if (sizep)
- *sizep = i;
-
- return (buffer);
-}
-
-/* Re-read the current keybindings file. */
-int
-rl_re_read_init_file (count, ignore)
- int count, ignore;
-{
- int r;
- r = rl_read_init_file ((const char *)NULL);
- rl_set_keymap_from_edit_mode ();
- return r;
-}
-
-/* Do key bindings from a file. If FILENAME is NULL it defaults
- to the first non-null filename from this list:
- 1. the filename used for the previous call
- 2. the value of the shell variable `INPUTRC'
- 3. ~/.inputrc
- If the file existed and could be opened and read, 0 is returned,
- otherwise errno is returned. */
-int
-rl_read_init_file (filename)
- const char *filename;
-{
- /* Default the filename. */
- if (filename == 0)
- {
- filename = last_readline_init_file;
- if (filename == 0)
- filename = sh_get_env_value ("INPUTRC");
- if (filename == 0)
- filename = DEFAULT_INPUTRC;
- }
-
- if (*filename == 0)
- filename = DEFAULT_INPUTRC;
-
-#if defined (__MSDOS__)
- if (_rl_read_init_file (filename, 0) == 0)
- return 0;
- filename = "~/_inputrc";
-#endif
- return (_rl_read_init_file (filename, 0));
-}
-
-static int
-_rl_read_init_file (filename, include_level)
- const char *filename;
- int include_level;
-{
- register int i;
- char *buffer, *openname, *line, *end;
- size_t file_size;
-
- current_readline_init_file = filename;
- current_readline_init_include_level = include_level;
-
- openname = tilde_expand (filename);
- buffer = _rl_read_file (openname, &file_size);
- free (openname);
-
- if (buffer == 0)
- return (errno);
-
- if (include_level == 0 && filename != last_readline_init_file)
- {
- FREE (last_readline_init_file);
- last_readline_init_file = savestring (filename);
- }
-
- currently_reading_init_file = 1;
-
- /* Loop over the lines in the file. Lines that start with `#' are
- comments; all other lines are commands for readline initialization. */
- current_readline_init_lineno = 1;
- line = buffer;
- end = buffer + file_size;
- while (line < end)
- {
- /* Find the end of this line. */
- for (i = 0; line + i != end && line[i] != '\n'; i++);
-
-#if defined (__CYGWIN__)
- /* ``Be liberal in what you accept.'' */
- if (line[i] == '\n' && line[i-1] == '\r')
- line[i - 1] = '\0';
-#endif
-
- /* Mark end of line. */
- line[i] = '\0';
-
- /* Skip leading whitespace. */
- while (*line && whitespace (*line))
- {
- line++;
- i--;
- }
-
- /* If the line is not a comment, then parse it. */
- if (*line && *line != '#')
- rl_parse_and_bind (line);
-
- /* Move to the next line. */
- line += i + 1;
- current_readline_init_lineno++;
- }
-
- free (buffer);
- currently_reading_init_file = 0;
- return (0);
-}
-
-static void
-_rl_init_file_error (msg)
- const char *msg;
-{
- if (currently_reading_init_file)
- fprintf (stderr, "readline: %s: line %d: %s\n", current_readline_init_file,
- current_readline_init_lineno, msg);
- else
- fprintf (stderr, "readline: %s\n", msg);
-}
-
-/* **************************************************************** */
-/* */
-/* Parser Directives */
-/* */
-/* **************************************************************** */
-
-typedef int _rl_parser_func_t PARAMS((char *));
-
-/* Things that mean `Control'. */
-const char *_rl_possible_control_prefixes[] = {
- "Control-", "C-", "CTRL-", (const char *)NULL
-};
-
-const char *_rl_possible_meta_prefixes[] = {
- "Meta", "M-", (const char *)NULL
-};
-
-/* Conditionals. */
-
-/* Calling programs set this to have their argv[0]. */
-const char *rl_readline_name = "other";
-
-/* Stack of previous values of parsing_conditionalized_out. */
-static unsigned char *if_stack = (unsigned char *)NULL;
-static int if_stack_depth;
-static int if_stack_size;
-
-/* Push _rl_parsing_conditionalized_out, and set parser state based
- on ARGS. */
-static int
-parser_if (args)
- char *args;
-{
- register int i;
-
- /* Push parser state. */
- if (if_stack_depth + 1 >= if_stack_size)
- {
- if (!if_stack)
- if_stack = (unsigned char *)xmalloc (if_stack_size = 20);
- else
- if_stack = (unsigned char *)xrealloc (if_stack, if_stack_size += 20);
- }
- if_stack[if_stack_depth++] = _rl_parsing_conditionalized_out;
-
- /* If parsing is turned off, then nothing can turn it back on except
- for finding the matching endif. In that case, return right now. */
- if (_rl_parsing_conditionalized_out)
- return 0;
-
- /* Isolate first argument. */
- for (i = 0; args[i] && !whitespace (args[i]); i++);
-
- if (args[i])
- args[i++] = '\0';
-
- /* Handle "$if term=foo" and "$if mode=emacs" constructs. If this
- isn't term=foo, or mode=emacs, then check to see if the first
- word in ARGS is the same as the value stored in rl_readline_name. */
- if (rl_terminal_name && _rl_strnicmp (args, "term=", 5) == 0)
- {
- char *tem, *tname;
-
- /* Terminals like "aaa-60" are equivalent to "aaa". */
- tname = savestring (rl_terminal_name);
- tem = strchr (tname, '-');
- if (tem)
- *tem = '\0';
-
- /* Test the `long' and `short' forms of the terminal name so that
- if someone has a `sun-cmd' and does not want to have bindings
- that will be executed if the terminal is a `sun', they can put
- `$if term=sun-cmd' into their .inputrc. */
- _rl_parsing_conditionalized_out = _rl_stricmp (args + 5, tname) &&
- _rl_stricmp (args + 5, rl_terminal_name);
- free (tname);
- }
-#if defined (VI_MODE)
- else if (_rl_strnicmp (args, "mode=", 5) == 0)
- {
- int mode;
-
- if (_rl_stricmp (args + 5, "emacs") == 0)
- mode = emacs_mode;
- else if (_rl_stricmp (args + 5, "vi") == 0)
- mode = vi_mode;
- else
- mode = no_mode;
-
- _rl_parsing_conditionalized_out = mode != rl_editing_mode;
- }
-#endif /* VI_MODE */
- /* Check to see if the first word in ARGS is the same as the
- value stored in rl_readline_name. */
- else if (_rl_stricmp (args, rl_readline_name) == 0)
- _rl_parsing_conditionalized_out = 0;
- else
- _rl_parsing_conditionalized_out = 1;
- return 0;
-}
-
-/* Invert the current parser state if there is anything on the stack. */
-static int
-parser_else (args)
- char *args;
-{
- register int i;
-
- if (if_stack_depth == 0)
- {
- _rl_init_file_error ("$else found without matching $if");
- return 0;
- }
-
- /* Check the previous (n - 1) levels of the stack to make sure that
- we haven't previously turned off parsing. */
- for (i = 0; i < if_stack_depth - 1; i++)
- if (if_stack[i] == 1)
- return 0;
-
- /* Invert the state of parsing if at top level. */
- _rl_parsing_conditionalized_out = !_rl_parsing_conditionalized_out;
- return 0;
-}
-
-/* Terminate a conditional, popping the value of
- _rl_parsing_conditionalized_out from the stack. */
-static int
-parser_endif (args)
- char *args;
-{
- if (if_stack_depth)
- _rl_parsing_conditionalized_out = if_stack[--if_stack_depth];
- else
- _rl_init_file_error ("$endif without matching $if");
- return 0;
-}
-
-static int
-parser_include (args)
- char *args;
-{
- const char *old_init_file;
- char *e;
- int old_line_number, old_include_level, r;
-
- if (_rl_parsing_conditionalized_out)
- return (0);
-
- old_init_file = current_readline_init_file;
- old_line_number = current_readline_init_lineno;
- old_include_level = current_readline_init_include_level;
-
- e = strchr (args, '\n');
- if (e)
- *e = '\0';
- r = _rl_read_init_file ((const char *)args, old_include_level + 1);
-
- current_readline_init_file = old_init_file;
- current_readline_init_lineno = old_line_number;
- current_readline_init_include_level = old_include_level;
-
- return r;
-}
-
-/* Associate textual names with actual functions. */
-static struct {
- const char *name;
- _rl_parser_func_t *function;
-} parser_directives [] = {
- { "if", parser_if },
- { "endif", parser_endif },
- { "else", parser_else },
- { "include", parser_include },
- { (char *)0x0, (_rl_parser_func_t *)0x0 }
-};
-
-/* Handle a parser directive. STATEMENT is the line of the directive
- without any leading `$'. */
-static int
-handle_parser_directive (statement)
- char *statement;
-{
- register int i;
- char *directive, *args;
-
- /* Isolate the actual directive. */
-
- /* Skip whitespace. */
- for (i = 0; whitespace (statement[i]); i++);
-
- directive = &statement[i];
-
- for (; statement[i] && !whitespace (statement[i]); i++);
-
- if (statement[i])
- statement[i++] = '\0';
-
- for (; statement[i] && whitespace (statement[i]); i++);
-
- args = &statement[i];
-
- /* Lookup the command, and act on it. */
- for (i = 0; parser_directives[i].name; i++)
- if (_rl_stricmp (directive, parser_directives[i].name) == 0)
- {
- (*parser_directives[i].function) (args);
- return (0);
- }
-
- /* display an error message about the unknown parser directive */
- _rl_init_file_error ("unknown parser directive");
- return (1);
-}
-
-/* Read the binding command from STRING and perform it.
- A key binding command looks like: Keyname: function-name\0,
- a variable binding command looks like: set variable value.
- A new-style keybinding looks like "\C-x\C-x": exchange-point-and-mark. */
-int
-rl_parse_and_bind (string)
- char *string;
-{
- char *funname, *kname;
- register int c, i;
- int key, equivalency;
-
- while (string && whitespace (*string))
- string++;
-
- if (!string || !*string || *string == '#')
- return 0;
-
- /* If this is a parser directive, act on it. */
- if (*string == '$')
- {
- handle_parser_directive (&string[1]);
- return 0;
- }
-
- /* If we aren't supposed to be parsing right now, then we're done. */
- if (_rl_parsing_conditionalized_out)
- return 0;
-
- i = 0;
- /* If this keyname is a complex key expression surrounded by quotes,
- advance to after the matching close quote. This code allows the
- backslash to quote characters in the key expression. */
- if (*string == '"')
- {
- int passc = 0;
-
- for (i = 1; c = string[i]; i++)
- {
- if (passc)
- {
- passc = 0;
- continue;
- }
-
- if (c == '\\')
- {
- passc++;
- continue;
- }
-
- if (c == '"')
- break;
- }
- /* If we didn't find a closing quote, abort the line. */
- if (string[i] == '\0')
- {
- _rl_init_file_error ("no closing `\"' in key binding");
- return 1;
- }
- }
-
- /* Advance to the colon (:) or whitespace which separates the two objects. */
- for (; (c = string[i]) && c != ':' && c != ' ' && c != '\t'; i++ );
-
- equivalency = (c == ':' && string[i + 1] == '=');
-
- /* Mark the end of the command (or keyname). */
- if (string[i])
- string[i++] = '\0';
-
- /* If doing assignment, skip the '=' sign as well. */
- if (equivalency)
- string[i++] = '\0';
-
- /* If this is a command to set a variable, then do that. */
- if (_rl_stricmp (string, "set") == 0)
- {
- char *var = string + i;
- char *value;
-
- /* Make VAR point to start of variable name. */
- while (*var && whitespace (*var)) var++;
-
- /* Make VALUE point to start of value string. */
- value = var;
- while (*value && !whitespace (*value)) value++;
- if (*value)
- *value++ = '\0';
- while (*value && whitespace (*value)) value++;
-
- rl_variable_bind (var, value);
- return 0;
- }
-
- /* Skip any whitespace between keyname and funname. */
- for (; string[i] && whitespace (string[i]); i++);
- funname = &string[i];
-
- /* Now isolate funname.
- For straight function names just look for whitespace, since
- that will signify the end of the string. But this could be a
- macro definition. In that case, the string is quoted, so skip
- to the matching delimiter. We allow the backslash to quote the
- delimiter characters in the macro body. */
- /* This code exists to allow whitespace in macro expansions, which
- would otherwise be gobbled up by the next `for' loop.*/
- /* XXX - it may be desirable to allow backslash quoting only if " is
- the quoted string delimiter, like the shell. */
- if (*funname == '\'' || *funname == '"')
- {
- int delimiter = string[i++], passc;
-
- for (passc = 0; c = string[i]; i++)
- {
- if (passc)
- {
- passc = 0;
- continue;
- }
-
- if (c == '\\')
- {
- passc = 1;
- continue;
- }
-
- if (c == delimiter)
- break;
- }
- if (c)
- i++;
- }
-
- /* Advance to the end of the string. */
- for (; string[i] && !whitespace (string[i]); i++);
-
- /* No extra whitespace at the end of the string. */
- string[i] = '\0';
-
- /* Handle equivalency bindings here. Make the left-hand side be exactly
- whatever the right-hand evaluates to, including keymaps. */
- if (equivalency)
- {
- return 0;
- }
-
- /* If this is a new-style key-binding, then do the binding with
- rl_set_key (). Otherwise, let the older code deal with it. */
- if (*string == '"')
- {
- char *seq;
- register int j, k, passc;
-
- seq = (char *)xmalloc (1 + strlen (string));
- for (j = 1, k = passc = 0; string[j]; j++)
- {
- /* Allow backslash to quote characters, but leave them in place.
- This allows a string to end with a backslash quoting another
- backslash, or with a backslash quoting a double quote. The
- backslashes are left in place for rl_translate_keyseq (). */
- if (passc || (string[j] == '\\'))
- {
- seq[k++] = string[j];
- passc = !passc;
- continue;
- }
-
- if (string[j] == '"')
- break;
-
- seq[k++] = string[j];
- }
- seq[k] = '\0';
-
- /* Binding macro? */
- if (*funname == '\'' || *funname == '"')
- {
- j = strlen (funname);
-
- /* Remove the delimiting quotes from each end of FUNNAME. */
- if (j && funname[j - 1] == *funname)
- funname[j - 1] = '\0';
-
- rl_macro_bind (seq, &funname[1], _rl_keymap);
- }
- else
- rl_set_key (seq, rl_named_function (funname), _rl_keymap);
-
- free (seq);
- return 0;
- }
-
- /* Get the actual character we want to deal with. */
- kname = strrchr (string, '-');
- if (!kname)
- kname = string;
- else
- kname++;
-
- key = glean_key_from_name (kname);
-
- /* Add in control and meta bits. */
- if (substring_member_of_array (string, _rl_possible_control_prefixes))
- key = CTRL (_rl_to_upper (key));
-
- if (substring_member_of_array (string, _rl_possible_meta_prefixes))
- key = META (key);
-
- /* Temporary. Handle old-style keyname with macro-binding. */
- if (*funname == '\'' || *funname == '"')
- {
- char useq[2];
- int fl = strlen (funname);
-
- useq[0] = key; useq[1] = '\0';
- if (fl && funname[fl - 1] == *funname)
- funname[fl - 1] = '\0';
-
- rl_macro_bind (useq, &funname[1], _rl_keymap);
- }
-#if defined (PREFIX_META_HACK)
- /* Ugly, but working hack to keep prefix-meta around. */
- else if (_rl_stricmp (funname, "prefix-meta") == 0)
- {
- char seq[2];
-
- seq[0] = key;
- seq[1] = '\0';
- rl_generic_bind (ISKMAP, seq, (char *)emacs_meta_keymap, _rl_keymap);
- }
-#endif /* PREFIX_META_HACK */
- else
- rl_bind_key (key, rl_named_function (funname));
- return 0;
-}
-
-/* Simple structure for boolean readline variables (i.e., those that can
- have one of two values; either "On" or 1 for truth, or "Off" or 0 for
- false. */
-
-#define V_SPECIAL 0x1
-
-static struct {
- const char *name;
- int *value;
- int flags;
-} boolean_varlist [] = {
- { "blink-matching-paren", &rl_blink_matching_paren, V_SPECIAL },
- { "byte-oriented", &rl_byte_oriented, 0 },
- { "completion-ignore-case", &_rl_completion_case_fold, 0 },
- { "convert-meta", &_rl_convert_meta_chars_to_ascii, 0 },
- { "disable-completion", &rl_inhibit_completion, 0 },
- { "enable-keypad", &_rl_enable_keypad, 0 },
- { "expand-tilde", &rl_complete_with_tilde_expansion, 0 },
- { "history-preserve-point", &_rl_history_preserve_point, 0 },
- { "horizontal-scroll-mode", &_rl_horizontal_scroll_mode, 0 },
- { "input-meta", &_rl_meta_flag, 0 },
- { "mark-directories", &_rl_complete_mark_directories, 0 },
- { "mark-modified-lines", &_rl_mark_modified_lines, 0 },
- { "mark-symlinked-directories", &_rl_complete_mark_symlink_dirs, 0 },
- { "match-hidden-files", &_rl_match_hidden_files, 0 },
- { "meta-flag", &_rl_meta_flag, 0 },
- { "output-meta", &_rl_output_meta_chars, 0 },
- { "page-completions", &_rl_page_completions, 0 },
- { "prefer-visible-bell", &_rl_prefer_visible_bell, V_SPECIAL },
- { "print-completions-horizontally", &_rl_print_completions_horizontally, 0 },
- { "show-all-if-ambiguous", &_rl_complete_show_all, 0 },
-#if defined (VISIBLE_STATS)
- { "visible-stats", &rl_visible_stats, 0 },
-#endif /* VISIBLE_STATS */
- { (char *)NULL, (int *)NULL }
-};
-
-static int
-find_boolean_var (name)
- const char *name;
-{
- register int i;
-
- for (i = 0; boolean_varlist[i].name; i++)
- if (_rl_stricmp (name, boolean_varlist[i].name) == 0)
- return i;
- return -1;
-}
-
-/* Hooks for handling special boolean variables, where a
- function needs to be called or another variable needs
- to be changed when they're changed. */
-static void
-hack_special_boolean_var (i)
- int i;
-{
- const char *name;
-
- name = boolean_varlist[i].name;
-
- if (_rl_stricmp (name, "blink-matching-paren") == 0)
- _rl_enable_paren_matching (rl_blink_matching_paren);
- else if (_rl_stricmp (name, "prefer-visible-bell") == 0)
- {
- if (_rl_prefer_visible_bell)
- _rl_bell_preference = VISIBLE_BELL;
- else
- _rl_bell_preference = AUDIBLE_BELL;
- }
-}
-
-typedef int _rl_sv_func_t PARAMS((const char *));
-
-/* These *must* correspond to the array indices for the appropriate
- string variable. (Though they're not used right now.) */
-#define V_BELLSTYLE 0
-#define V_COMBEGIN 1
-#define V_EDITMODE 2
-#define V_ISRCHTERM 3
-#define V_KEYMAP 4
-
-#define V_STRING 1
-#define V_INT 2
-
-/* Forward declarations */
-static int sv_bell_style PARAMS((const char *));
-static int sv_combegin PARAMS((const char *));
-static int sv_compquery PARAMS((const char *));
-static int sv_editmode PARAMS((const char *));
-static int sv_isrchterm PARAMS((const char *));
-static int sv_keymap PARAMS((const char *));
-
-static struct {
- const char *name;
- int flags;
- _rl_sv_func_t *set_func;
-} string_varlist[] = {
- { "bell-style", V_STRING, sv_bell_style },
- { "comment-begin", V_STRING, sv_combegin },
- { "completion-query-items", V_INT, sv_compquery },
- { "editing-mode", V_STRING, sv_editmode },
- { "isearch-terminators", V_STRING, sv_isrchterm },
- { "keymap", V_STRING, sv_keymap },
- { (char *)NULL, 0 }
-};
-
-static int
-find_string_var (name)
- const char *name;
-{
- register int i;
-
- for (i = 0; string_varlist[i].name; i++)
- if (_rl_stricmp (name, string_varlist[i].name) == 0)
- return i;
- return -1;
-}
-
-/* A boolean value that can appear in a `set variable' command is true if
- the value is null or empty, `on' (case-insenstive), or "1". Any other
- values result in 0 (false). */
-static int
-bool_to_int (value)
- char *value;
-{
- return (value == 0 || *value == '\0' ||
- (_rl_stricmp (value, "on") == 0) ||
- (value[0] == '1' && value[1] == '\0'));
-}
-
-int
-rl_variable_bind (name, value)
- const char *name, *value;
-{
- register int i;
- int v;
-
- /* Check for simple variables first. */
- i = find_boolean_var (name);
- if (i >= 0)
- {
- *boolean_varlist[i].value = bool_to_int (value);
- if (boolean_varlist[i].flags & V_SPECIAL)
- hack_special_boolean_var (i);
- return 0;
- }
-
- i = find_string_var (name);
-
- /* For the time being, unknown variable names or string names without a
- handler function are simply ignored. */
- if (i < 0 || string_varlist[i].set_func == 0)
- return 0;
-
- v = (*string_varlist[i].set_func) (value);
- return v;
-}
-
-static int
-sv_editmode (value)
- const char *value;
-{
- if (_rl_strnicmp (value, "vi", 2) == 0)
- {
-#if defined (VI_MODE)
- _rl_keymap = vi_insertion_keymap;
- rl_editing_mode = vi_mode;
-#endif /* VI_MODE */
- return 0;
- }
- else if (_rl_strnicmp (value, "emacs", 5) == 0)
- {
- _rl_keymap = emacs_standard_keymap;
- rl_editing_mode = emacs_mode;
- return 0;
- }
- return 1;
-}
-
-static int
-sv_combegin (value)
- const char *value;
-{
- if (value && *value)
- {
- FREE (_rl_comment_begin);
- _rl_comment_begin = savestring (value);
- return 0;
- }
- return 1;
-}
-
-static int
-sv_compquery (value)
- const char *value;
-{
- int nval = 100;
-
- if (value && *value)
- {
- nval = atoi (value);
- if (nval < 0)
- nval = 0;
- }
- rl_completion_query_items = nval;
- return 0;
-}
-
-static int
-sv_keymap (value)
- const char *value;
-{
- Keymap kmap;
-
- kmap = rl_get_keymap_by_name (value);
- if (kmap)
- {
- rl_set_keymap (kmap);
- return 0;
- }
- return 1;
-}
-
-static int
-sv_bell_style (value)
- const char *value;
-{
- if (value == 0 || *value == '\0')
- _rl_bell_preference = AUDIBLE_BELL;
- else if (_rl_stricmp (value, "none") == 0 || _rl_stricmp (value, "off") == 0)
- _rl_bell_preference = NO_BELL;
- else if (_rl_stricmp (value, "audible") == 0 || _rl_stricmp (value, "on") == 0)
- _rl_bell_preference = AUDIBLE_BELL;
- else if (_rl_stricmp (value, "visible") == 0)
- _rl_bell_preference = VISIBLE_BELL;
- else
- return 1;
- return 0;
-}
-
-static int
-sv_isrchterm (value)
- const char *value;
-{
- int beg, end, delim;
- char *v;
-
- if (value == 0)
- return 1;
-
- /* Isolate the value and translate it into a character string. */
- v = savestring (value);
- FREE (_rl_isearch_terminators);
- if (v[0] == '"' || v[0] == '\'')
- {
- delim = v[0];
- for (beg = end = 1; v[end] && v[end] != delim; end++)
- ;
- }
- else
- {
- for (beg = end = 0; whitespace (v[end]) == 0; end++)
- ;
- }
-
- v[end] = '\0';
-
- /* The value starts at v + beg. Translate it into a character string. */
- _rl_isearch_terminators = (char *)xmalloc (2 * strlen (v) + 1);
- rl_translate_keyseq (v + beg, _rl_isearch_terminators, &end);
- _rl_isearch_terminators[end] = '\0';
-
- free (v);
- return 0;
-}
-
-/* Return the character which matches NAME.
- For example, `Space' returns ' '. */
-
-typedef struct {
- const char *name;
- int value;
-} assoc_list;
-
-static assoc_list name_key_alist[] = {
- { "DEL", 0x7f },
- { "ESC", '\033' },
- { "Escape", '\033' },
- { "LFD", '\n' },
- { "Newline", '\n' },
- { "RET", '\r' },
- { "Return", '\r' },
- { "Rubout", 0x7f },
- { "SPC", ' ' },
- { "Space", ' ' },
- { "Tab", 0x09 },
- { (char *)0x0, 0 }
-};
-
-static int
-glean_key_from_name (name)
- char *name;
-{
- register int i;
-
- for (i = 0; name_key_alist[i].name; i++)
- if (_rl_stricmp (name, name_key_alist[i].name) == 0)
- return (name_key_alist[i].value);
-
- return (*(unsigned char *)name); /* XXX was return (*name) */
-}
-
-/* Auxiliary functions to manage keymaps. */
-static struct {
- const char *name;
- Keymap map;
-} keymap_names[] = {
- { "emacs", emacs_standard_keymap },
- { "emacs-standard", emacs_standard_keymap },
- { "emacs-meta", emacs_meta_keymap },
- { "emacs-ctlx", emacs_ctlx_keymap },
-#if defined (VI_MODE)
- { "vi", vi_movement_keymap },
- { "vi-move", vi_movement_keymap },
- { "vi-command", vi_movement_keymap },
- { "vi-insert", vi_insertion_keymap },
-#endif /* VI_MODE */
- { (char *)0x0, (Keymap)0x0 }
-};
-
-Keymap
-rl_get_keymap_by_name (name)
- const char *name;
-{
- register int i;
-
- for (i = 0; keymap_names[i].name; i++)
- if (_rl_stricmp (name, keymap_names[i].name) == 0)
- return (keymap_names[i].map);
- return ((Keymap) NULL);
-}
-
-char *
-rl_get_keymap_name (map)
- Keymap map;
-{
- register int i;
- for (i = 0; keymap_names[i].name; i++)
- if (map == keymap_names[i].map)
- return ((char *)keymap_names[i].name);
- return ((char *)NULL);
-}
-
-void
-rl_set_keymap (map)
- Keymap map;
-{
- if (map)
- _rl_keymap = map;
-}
-
-Keymap
-rl_get_keymap ()
-{
- return (_rl_keymap);
-}
-
-void
-rl_set_keymap_from_edit_mode ()
-{
- if (rl_editing_mode == emacs_mode)
- _rl_keymap = emacs_standard_keymap;
-#if defined (VI_MODE)
- else if (rl_editing_mode == vi_mode)
- _rl_keymap = vi_insertion_keymap;
-#endif /* VI_MODE */
-}
-
-char *
-rl_get_keymap_name_from_edit_mode ()
-{
- if (rl_editing_mode == emacs_mode)
- return "emacs";
-#if defined (VI_MODE)
- else if (rl_editing_mode == vi_mode)
- return "vi";
-#endif /* VI_MODE */
- else
- return "none";
-}
-
-/* **************************************************************** */
-/* */
-/* Key Binding and Function Information */
-/* */
-/* **************************************************************** */
-
-/* Each of the following functions produces information about the
- state of keybindings and functions known to Readline. The info
- is always printed to rl_outstream, and in such a way that it can
- be read back in (i.e., passed to rl_parse_and_bind (). */
-
-/* Print the names of functions known to Readline. */
-void
-rl_list_funmap_names ()
-{
- register int i;
- const char **funmap_names;
-
- funmap_names = rl_funmap_names ();
-
- if (!funmap_names)
- return;
-
- for (i = 0; funmap_names[i]; i++)
- fprintf (rl_outstream, "%s\n", funmap_names[i]);
-
- free (funmap_names);
-}
-
-static char *
-_rl_get_keyname (key)
- int key;
-{
- char *keyname;
- int i, c;
-
- keyname = (char *)xmalloc (8);
-
- c = key;
- /* Since this is going to be used to write out keysequence-function
- pairs for possible inclusion in an inputrc file, we don't want to
- do any special meta processing on KEY. */
-
-#if 1
- /* XXX - Experimental */
- /* We might want to do this, but the old version of the code did not. */
-
- /* If this is an escape character, we don't want to do any more processing.
- Just add the special ESC key sequence and return. */
- if (c == ESC)
- {
- keyname[0] = '\\';
- keyname[1] = 'e';
- keyname[2] = '\0';
- return keyname;
- }
-#endif
-
- /* RUBOUT is translated directly into \C-? */
- if (key == RUBOUT)
- {
- keyname[0] = '\\';
- keyname[1] = 'C';
- keyname[2] = '-';
- keyname[3] = '?';
- keyname[4] = '\0';
- return keyname;
- }
-
- i = 0;
- /* Now add special prefixes needed for control characters. This can
- potentially change C. */
- if (CTRL_CHAR (c))
- {
- keyname[i++] = '\\';
- keyname[i++] = 'C';
- keyname[i++] = '-';
- c = _rl_to_lower (UNCTRL (c));
- }
-
- /* XXX experimental code. Turn the characters that are not ASCII or
- ISO Latin 1 (128 - 159) into octal escape sequences (\200 - \237).
- This changes C. */
- if (c >= 128 && c <= 159)
- {
- keyname[i++] = '\\';
- keyname[i++] = '2';
- c -= 128;
- keyname[i++] = (c / 8) + '0';
- c = (c % 8) + '0';
- }
-
- /* Now, if the character needs to be quoted with a backslash, do that. */
- if (c == '\\' || c == '"')
- keyname[i++] = '\\';
-
- /* Now add the key, terminate the string, and return it. */
- keyname[i++] = (char) c;
- keyname[i] = '\0';
-
- return keyname;
-}
-
-/* Return a NULL terminated array of strings which represent the key
- sequences that are used to invoke FUNCTION in MAP. */
-char **
-rl_invoking_keyseqs_in_map (function, map)
- rl_command_func_t *function;
- Keymap map;
-{
- register int key;
- char **result;
- int result_index, result_size;
-
- result = (char **)NULL;
- result_index = result_size = 0;
-
- for (key = 0; key < KEYMAP_SIZE; key++)
- {
- switch (map[key].type)
- {
- case ISMACR:
- /* Macros match, if, and only if, the pointers are identical.
- Thus, they are treated exactly like functions in here. */
- case ISFUNC:
- /* If the function in the keymap is the one we are looking for,
- then add the current KEY to the list of invoking keys. */
- if (map[key].function == function)
- {
- char *keyname;
-
- keyname = _rl_get_keyname (key);
-
- if (result_index + 2 > result_size)
- {
- result_size += 10;
- result = (char **)xrealloc (result, result_size * sizeof (char *));
- }
-
- result[result_index++] = keyname;
- result[result_index] = (char *)NULL;
- }
- break;
-
- case ISKMAP:
- {
- char **seqs;
- register int i;
-
- /* Find the list of keyseqs in this map which have FUNCTION as
- their target. Add the key sequences found to RESULT. */
- if (map[key].function)
- seqs =
- rl_invoking_keyseqs_in_map (function, FUNCTION_TO_KEYMAP (map, key));
- else
- break;
-
- if (seqs == 0)
- break;
-
- for (i = 0; seqs[i]; i++)
- {
- char *keyname = (char *)xmalloc (6 + strlen (seqs[i]));
-
- if (key == ESC)
-#if 0
- sprintf (keyname, "\\e");
-#else
- /* XXX - experimental */
- sprintf (keyname, "\\M-");
-#endif
- else if (CTRL_CHAR (key))
- sprintf (keyname, "\\C-%c", _rl_to_lower (UNCTRL (key)));
- else if (key == RUBOUT)
- sprintf (keyname, "\\C-?");
- else if (key == '\\' || key == '"')
- {
- keyname[0] = '\\';
- keyname[1] = (char) key;
- keyname[2] = '\0';
- }
- else
- {
- keyname[0] = (char) key;
- keyname[1] = '\0';
- }
-
- strcat (keyname, seqs[i]);
- free (seqs[i]);
-
- if (result_index + 2 > result_size)
- {
- result_size += 10;
- result = (char **)xrealloc (result, result_size * sizeof (char *));
- }
-
- result[result_index++] = keyname;
- result[result_index] = (char *)NULL;
- }
-
- free (seqs);
- }
- break;
- }
- }
- return (result);
-}
-
-/* Return a NULL terminated array of strings which represent the key
- sequences that can be used to invoke FUNCTION using the current keymap. */
-char **
-rl_invoking_keyseqs (function)
- rl_command_func_t *function;
-{
- return (rl_invoking_keyseqs_in_map (function, _rl_keymap));
-}
-
-/* Print all of the functions and their bindings to rl_outstream. If
- PRINT_READABLY is non-zero, then print the output in such a way
- that it can be read back in. */
-void
-rl_function_dumper (print_readably)
- int print_readably;
-{
- register int i;
- const char **names;
- const char *name;
-
- names = rl_funmap_names ();
-
- fprintf (rl_outstream, "\n");
-
- for (i = 0; name = names[i]; i++)
- {
- rl_command_func_t *function;
- char **invokers;
-
- function = rl_named_function (name);
- invokers = rl_invoking_keyseqs_in_map (function, _rl_keymap);
-
- if (print_readably)
- {
- if (!invokers)
- fprintf (rl_outstream, "# %s (not bound)\n", name);
- else
- {
- register int j;
-
- for (j = 0; invokers[j]; j++)
- {
- fprintf (rl_outstream, "\"%s\": %s\n",
- invokers[j], name);
- free (invokers[j]);
- }
-
- free (invokers);
- }
- }
- else
- {
- if (!invokers)
- fprintf (rl_outstream, "%s is not bound to any keys\n",
- name);
- else
- {
- register int j;
-
- fprintf (rl_outstream, "%s can be found on ", name);
-
- for (j = 0; invokers[j] && j < 5; j++)
- {
- fprintf (rl_outstream, "\"%s\"%s", invokers[j],
- invokers[j + 1] ? ", " : ".\n");
- }
-
- if (j == 5 && invokers[j])
- fprintf (rl_outstream, "...\n");
-
- for (j = 0; invokers[j]; j++)
- free (invokers[j]);
-
- free (invokers);
- }
- }
- }
-}
-
-/* Print all of the current functions and their bindings to
- rl_outstream. If an explicit argument is given, then print
- the output in such a way that it can be read back in. */
-int
-rl_dump_functions (count, key)
- int count, key;
-{
- if (rl_dispatching)
- fprintf (rl_outstream, "\r\n");
- rl_function_dumper (rl_explicit_arg);
- rl_on_new_line ();
- return (0);
-}
-
-static void
-_rl_macro_dumper_internal (print_readably, map, prefix)
- int print_readably;
- Keymap map;
- char *prefix;
-{
- register int key;
- char *keyname, *out;
- int prefix_len;
-
- for (key = 0; key < KEYMAP_SIZE; key++)
- {
- switch (map[key].type)
- {
- case ISMACR:
- keyname = _rl_get_keyname (key);
- out = _rl_untranslate_macro_value ((char *)map[key].function);
-
- if (print_readably)
- fprintf (rl_outstream, "\"%s%s\": \"%s\"\n", prefix ? prefix : "",
- keyname,
- out ? out : "");
- else
- fprintf (rl_outstream, "%s%s outputs %s\n", prefix ? prefix : "",
- keyname,
- out ? out : "");
- free (keyname);
- free (out);
- break;
- case ISFUNC:
- break;
- case ISKMAP:
- prefix_len = prefix ? strlen (prefix) : 0;
- if (key == ESC)
- {
- keyname = (char *)xmalloc (3 + prefix_len);
- if (prefix)
- strcpy (keyname, prefix);
- keyname[prefix_len] = '\\';
- keyname[prefix_len + 1] = 'e';
- keyname[prefix_len + 2] = '\0';
- }
- else
- {
- keyname = _rl_get_keyname (key);
- if (prefix)
- {
- out = (char *)xmalloc (strlen (keyname) + prefix_len + 1);
- strcpy (out, prefix);
- strcpy (out + prefix_len, keyname);
- free (keyname);
- keyname = out;
- }
- }
-
- _rl_macro_dumper_internal (print_readably, FUNCTION_TO_KEYMAP (map, key), keyname);
- free (keyname);
- break;
- }
- }
-}
-
-void
-rl_macro_dumper (print_readably)
- int print_readably;
-{
- _rl_macro_dumper_internal (print_readably, _rl_keymap, (char *)NULL);
-}
-
-int
-rl_dump_macros (count, key)
- int count, key;
-{
- if (rl_dispatching)
- fprintf (rl_outstream, "\r\n");
- rl_macro_dumper (rl_explicit_arg);
- rl_on_new_line ();
- return (0);
-}
-
-void
-rl_variable_dumper (print_readably)
- int print_readably;
-{
- int i;
- const char *kname;
-
- for (i = 0; boolean_varlist[i].name; i++)
- {
- if (print_readably)
- fprintf (rl_outstream, "set %s %s\n", boolean_varlist[i].name,
- *boolean_varlist[i].value ? "on" : "off");
- else
- fprintf (rl_outstream, "%s is set to `%s'\n", boolean_varlist[i].name,
- *boolean_varlist[i].value ? "on" : "off");
- }
-
- /* bell-style */
- switch (_rl_bell_preference)
- {
- case NO_BELL:
- kname = "none"; break;
- case VISIBLE_BELL:
- kname = "visible"; break;
- case AUDIBLE_BELL:
- default:
- kname = "audible"; break;
- }
- if (print_readably)
- fprintf (rl_outstream, "set bell-style %s\n", kname);
- else
- fprintf (rl_outstream, "bell-style is set to `%s'\n", kname);
-
- /* comment-begin */
- if (print_readably)
- fprintf (rl_outstream, "set comment-begin %s\n", _rl_comment_begin ? _rl_comment_begin : RL_COMMENT_BEGIN_DEFAULT);
- else
- fprintf (rl_outstream, "comment-begin is set to `%s'\n", _rl_comment_begin ? _rl_comment_begin : RL_COMMENT_BEGIN_DEFAULT);
-
- /* completion-query-items */
- if (print_readably)
- fprintf (rl_outstream, "set completion-query-items %d\n", rl_completion_query_items);
- else
- fprintf (rl_outstream, "completion-query-items is set to `%d'\n", rl_completion_query_items);
-
- /* editing-mode */
- if (print_readably)
- fprintf (rl_outstream, "set editing-mode %s\n", (rl_editing_mode == emacs_mode) ? "emacs" : "vi");
- else
- fprintf (rl_outstream, "editing-mode is set to `%s'\n", (rl_editing_mode == emacs_mode) ? "emacs" : "vi");
-
- /* isearch-terminators */
- if (_rl_isearch_terminators)
- {
- char *disp;
-
- disp = _rl_untranslate_macro_value (_rl_isearch_terminators);
-
- if (print_readably)
- fprintf (rl_outstream, "set isearch-terminators \"%s\"\n", disp);
- else
- fprintf (rl_outstream, "isearch-terminators is set to \"%s\"\n", disp);
-
- free (disp);
- }
-
- /* keymap */
- kname = rl_get_keymap_name (_rl_keymap);
- if (kname == 0)
- kname = rl_get_keymap_name_from_edit_mode ();
- if (print_readably)
- fprintf (rl_outstream, "set keymap %s\n", kname ? kname : "none");
- else
- fprintf (rl_outstream, "keymap is set to `%s'\n", kname ? kname : "none");
-}
-
-/* Print all of the current variables and their values to
- rl_outstream. If an explicit argument is given, then print
- the output in such a way that it can be read back in. */
-int
-rl_dump_variables (count, key)
- int count, key;
-{
- if (rl_dispatching)
- fprintf (rl_outstream, "\r\n");
- rl_variable_dumper (rl_explicit_arg);
- rl_on_new_line ();
- return (0);
-}
-
-/* Bind key sequence KEYSEQ to DEFAULT_FUNC if KEYSEQ is unbound. Right
- now, this is always used to attempt to bind the arrow keys, hence the
- check for rl_vi_movement_mode. */
-void
-_rl_bind_if_unbound (keyseq, default_func)
- const char *keyseq;
- rl_command_func_t *default_func;
-{
- rl_command_func_t *func;
-
- if (keyseq)
- {
- func = rl_function_of_keyseq (keyseq, _rl_keymap, (int *)NULL);
-#if defined (VI_MODE)
- if (!func || func == rl_do_lowercase_version || func == rl_vi_movement_mode)
-#else
- if (!func || func == rl_do_lowercase_version)
-#endif
- rl_set_key (keyseq, default_func, _rl_keymap);
- }
-}
-
-/* Return non-zero if any members of ARRAY are a substring in STRING. */
-static int
-substring_member_of_array (string, array)
- char *string;
- const char **array;
-{
- while (*array)
- {
- if (_rl_strindex (string, *array))
- return (1);
- array++;
- }
- return (0);
-}
diff --git a/readline-4.3.orig/callback.c b/readline-4.3.orig/callback.c
deleted file mode 100644
index a8f4323..0000000
--- a/readline-4.3.orig/callback.c
+++ /dev/null
@@ -1,156 +0,0 @@
-/* callback.c -- functions to use readline as an X `callback' mechanism. */
-
-/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include "rlconf.h"
-
-#if defined (READLINE_CALLBACKS)
-
-#include <sys/types.h>
-
-#ifdef HAVE_STDLIB_H
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif
-
-#include <stdio.h>
-
-/* System-specific feature definitions and include files. */
-#include "rldefs.h"
-#include "readline.h"
-#include "rlprivate.h"
-
-/* **************************************************************** */
-/* */
-/* Callback Readline Functions */
-/* */
-/* **************************************************************** */
-
-/* Allow using readline in situations where a program may have multiple
- things to handle at once, and dispatches them via select(). Call
- rl_callback_handler_install() with the prompt and a function to call
- whenever a complete line of input is ready. The user must then
- call rl_callback_read_char() every time some input is available, and
- rl_callback_read_char() will call the user's function with the complete
- text read in at each end of line. The terminal is kept prepped and
- signals handled all the time, except during calls to the user's function. */
-
-rl_vcpfunc_t *rl_linefunc; /* user callback function */
-static int in_handler; /* terminal_prepped and signals set? */
-
-/* Make sure the terminal is set up, initialize readline, and prompt. */
-static void
-_rl_callback_newline ()
-{
- rl_initialize ();
-
- if (in_handler == 0)
- {
- in_handler = 1;
-
- (*rl_prep_term_function) (_rl_meta_flag);
-
-#if defined (HANDLE_SIGNALS)
- rl_set_signals ();
-#endif
- }
-
- readline_internal_setup ();
-}
-
-/* Install a readline handler, set up the terminal, and issue the prompt. */
-void
-rl_callback_handler_install (prompt, linefunc)
- const char *prompt;
- rl_vcpfunc_t *linefunc;
-{
- rl_set_prompt (prompt);
- rl_linefunc = linefunc;
- _rl_callback_newline ();
-}
-
-/* Read one character, and dispatch to the handler if it ends the line. */
-void
-rl_callback_read_char ()
-{
- char *line;
- int eof;
-
- if (rl_linefunc == NULL)
- {
- fprintf (stderr, "readline: readline_callback_read_char() called with no handler!\r\n");
- abort ();
- }
-
- eof = readline_internal_char ();
-
- /* We loop in case some function has pushed input back with rl_execute_next. */
- for (;;)
- {
- if (rl_done)
- {
- line = readline_internal_teardown (eof);
-
- (*rl_deprep_term_function) ();
-#if defined (HANDLE_SIGNALS)
- rl_clear_signals ();
-#endif
- in_handler = 0;
- (*rl_linefunc) (line);
-
- /* If the user did not clear out the line, do it for him. */
- if (rl_line_buffer[0])
- _rl_init_line_state ();
-
- /* Redisplay the prompt if readline_handler_{install,remove}
- not called. */
- if (in_handler == 0 && rl_linefunc)
- _rl_callback_newline ();
- }
- if (rl_pending_input)
- eof = readline_internal_char ();
- else
- break;
- }
-}
-
-/* Remove the handler, and make sure the terminal is in its normal state. */
-void
-rl_callback_handler_remove ()
-{
- rl_linefunc = NULL;
- if (in_handler)
- {
- in_handler = 0;
- (*rl_deprep_term_function) ();
-#if defined (HANDLE_SIGNALS)
- rl_clear_signals ();
-#endif
- }
-}
-
-#endif
diff --git a/readline-4.3.orig/chardefs.h b/readline-4.3.orig/chardefs.h
deleted file mode 100644
index a537be2..0000000
--- a/readline-4.3.orig/chardefs.h
+++ /dev/null
@@ -1,159 +0,0 @@
-/* chardefs.h -- Character definitions for readline. */
-
-/* Copyright (C) 1994 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#ifndef _CHARDEFS_H_
-#define _CHARDEFS_H_
-
-#include <ctype.h>
-
-#if defined (HAVE_CONFIG_H)
-# if defined (HAVE_STRING_H)
-# if ! defined (STDC_HEADERS) && defined (HAVE_MEMORY_H)
-# include <memory.h>
-# endif
-# include <string.h>
-# endif /* HAVE_STRING_H */
-# if defined (HAVE_STRINGS_H)
-# include <strings.h>
-# endif /* HAVE_STRINGS_H */
-#else
-# include <string.h>
-#endif /* !HAVE_CONFIG_H */
-
-#ifndef whitespace
-#define whitespace(c) (((c) == ' ') || ((c) == '\t'))
-#endif
-
-#ifdef CTRL
-# undef CTRL
-#endif
-#ifdef UNCTRL
-# undef UNCTRL
-#endif
-
-/* Some character stuff. */
-#define control_character_threshold 0x020 /* Smaller than this is control. */
-#define control_character_mask 0x1f /* 0x20 - 1 */
-#define meta_character_threshold 0x07f /* Larger than this is Meta. */
-#define control_character_bit 0x40 /* 0x000000, must be off. */
-#define meta_character_bit 0x080 /* x0000000, must be on. */
-#define largest_char 255 /* Largest character value. */
-
-#define CTRL_CHAR(c) ((c) < control_character_threshold && (((c) & 0x80) == 0))
-#define META_CHAR(c) ((c) > meta_character_threshold && (c) <= largest_char)
-
-#define CTRL(c) ((c) & control_character_mask)
-#define META(c) ((c) | meta_character_bit)
-
-#define UNMETA(c) ((c) & (~meta_character_bit))
-#define UNCTRL(c) _rl_to_upper(((c)|control_character_bit))
-
-#if defined STDC_HEADERS || (!defined (isascii) && !defined (HAVE_ISASCII))
-# define IN_CTYPE_DOMAIN(c) 1
-#else
-# define IN_CTYPE_DOMAIN(c) isascii(c)
-#endif
-
-#if !defined (isxdigit) && !defined (HAVE_ISXDIGIT)
-# define isxdigit(c) (isdigit((c)) || ((c) >= 'a' && (c) <= 'f') || ((c) >= 'A' && (c) <= 'F'))
-#endif
-
-#define NON_NEGATIVE(c) ((unsigned char)(c) == (c))
-
-/* Some systems define these; we want our definitions. */
-#undef ISPRINT
-
-#define ISALNUM(c) (IN_CTYPE_DOMAIN (c) && isalnum (c))
-#define ISALPHA(c) (IN_CTYPE_DOMAIN (c) && isalpha (c))
-#define ISDIGIT(c) (IN_CTYPE_DOMAIN (c) && isdigit (c))
-#define ISLOWER(c) (IN_CTYPE_DOMAIN (c) && islower (c))
-#define ISPRINT(c) (IN_CTYPE_DOMAIN (c) && isprint (c))
-#define ISUPPER(c) (IN_CTYPE_DOMAIN (c) && isupper (c))
-#define ISXDIGIT(c) (IN_CTYPE_DOMAIN (c) && isxdigit (c))
-
-#define _rl_lowercase_p(c) (NON_NEGATIVE(c) && ISLOWER(c))
-#define _rl_uppercase_p(c) (NON_NEGATIVE(c) && ISUPPER(c))
-#define _rl_digit_p(c) ((c) >= '0' && (c) <= '9')
-
-#define _rl_pure_alphabetic(c) (NON_NEGATIVE(c) && ISALPHA(c))
-#define ALPHABETIC(c) (NON_NEGATIVE(c) && ISALNUM(c))
-
-#ifndef _rl_to_upper
-# define _rl_to_upper(c) (_rl_lowercase_p(c) ? toupper((unsigned char)c) : (c))
-# define _rl_to_lower(c) (_rl_uppercase_p(c) ? tolower((unsigned char)c) : (c))
-#endif
-
-#ifndef _rl_digit_value
-# define _rl_digit_value(x) ((x) - '0')
-#endif
-
-#ifndef _rl_isident
-# define _rl_isident(c) (ISALNUM(c) || (c) == '_')
-#endif
-
-#ifndef ISOCTAL
-# define ISOCTAL(c) ((c) >= '0' && (c) <= '7')
-#endif
-#define OCTVALUE(c) ((c) - '0')
-
-#define HEXVALUE(c) \
- (((c) >= 'a' && (c) <= 'f') \
- ? (c)-'a'+10 \
- : (c) >= 'A' && (c) <= 'F' ? (c)-'A'+10 : (c)-'0')
-
-#ifndef NEWLINE
-#define NEWLINE '\n'
-#endif
-
-#ifndef RETURN
-#define RETURN CTRL('M')
-#endif
-
-#ifndef RUBOUT
-#define RUBOUT 0x7f
-#endif
-
-#ifndef TAB
-#define TAB '\t'
-#endif
-
-#ifdef ABORT_CHAR
-#undef ABORT_CHAR
-#endif
-#define ABORT_CHAR CTRL('G')
-
-#ifdef PAGE
-#undef PAGE
-#endif
-#define PAGE CTRL('L')
-
-#ifdef SPACE
-#undef SPACE
-#endif
-#define SPACE ' ' /* XXX - was 0x20 */
-
-#ifdef ESC
-#undef ESC
-#endif
-#define ESC CTRL('[')
-
-#endif /* _CHARDEFS_H_ */
diff --git a/readline-4.3.orig/compat.c b/readline-4.3.orig/compat.c
deleted file mode 100644
index a66d210..0000000
--- a/readline-4.3.orig/compat.c
+++ /dev/null
@@ -1,113 +0,0 @@
-/* compat.c -- backwards compatibility functions. */
-
-/* Copyright (C) 2000 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <stdio.h>
-
-#include "rlstdc.h"
-#include "rltypedefs.h"
-
-extern void rl_free_undo_list PARAMS((void));
-extern int rl_maybe_save_line PARAMS((void));
-extern int rl_maybe_unsave_line PARAMS((void));
-extern int rl_maybe_replace_line PARAMS((void));
-
-extern int rl_crlf PARAMS((void));
-extern int rl_ding PARAMS((void));
-extern int rl_alphabetic PARAMS((int));
-
-extern char **rl_completion_matches PARAMS((const char *, rl_compentry_func_t *));
-extern char *rl_username_completion_function PARAMS((const char *, int));
-extern char *rl_filename_completion_function PARAMS((const char *, int));
-
-/* Provide backwards-compatible entry points for old function names. */
-
-void
-free_undo_list ()
-{
- rl_free_undo_list ();
-}
-
-int
-maybe_replace_line ()
-{
- return rl_maybe_replace_line ();
-}
-
-int
-maybe_save_line ()
-{
- return rl_maybe_save_line ();
-}
-
-int
-maybe_unsave_line ()
-{
- return rl_maybe_unsave_line ();
-}
-
-int
-ding ()
-{
- return rl_ding ();
-}
-
-int
-crlf ()
-{
- return rl_crlf ();
-}
-
-int
-alphabetic (c)
- int c;
-{
- return rl_alphabetic (c);
-}
-
-char **
-completion_matches (s, f)
- const char *s;
- rl_compentry_func_t *f;
-{
- return rl_completion_matches (s, f);
-}
-
-char *
-username_completion_function (s, i)
- const char *s;
- int i;
-{
- return rl_username_completion_function (s, i);
-}
-
-char *
-filename_completion_function (s, i)
- const char *s;
- int i;
-{
- return rl_filename_completion_function (s, i);
-}
diff --git a/readline-4.3.orig/complete.c b/readline-4.3.orig/complete.c
deleted file mode 100644
index 21a9d70..0000000
--- a/readline-4.3.orig/complete.c
+++ /dev/null
@@ -1,2004 +0,0 @@
-/* complete.c -- filename completion for readline. */
-
-/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <sys/types.h>
-#include <fcntl.h>
-#if defined (HAVE_SYS_FILE_H)
-#include <sys/file.h>
-#endif
-
-#if defined (HAVE_UNISTD_H)
-# include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#include <stdio.h>
-
-#include <errno.h>
-#if !defined (errno)
-extern int errno;
-#endif /* !errno */
-
-#include <pwd.h>
-
-#include "posixdir.h"
-#include "posixstat.h"
-
-/* System-specific feature definitions and include files. */
-#include "rldefs.h"
-#include "rlmbutil.h"
-
-/* Some standard library routines. */
-#include "readline.h"
-#include "xmalloc.h"
-#include "rlprivate.h"
-
-#ifdef __STDC__
-typedef int QSFUNC (const void *, const void *);
-#else
-typedef int QSFUNC ();
-#endif
-
-#ifdef HAVE_LSTAT
-# define LSTAT lstat
-#else
-# define LSTAT stat
-#endif
-
-/* Unix version of a hidden file. Could be different on other systems. */
-#define HIDDEN_FILE(fname) ((fname)[0] == '.')
-
-/* Most systems don't declare getpwent in <pwd.h> if _POSIX_SOURCE is
- defined. */
-#if !defined (HAVE_GETPW_DECLS) || defined (_POSIX_SOURCE)
-extern struct passwd *getpwent PARAMS((void));
-#endif /* !HAVE_GETPW_DECLS || _POSIX_SOURCE */
-
-/* If non-zero, then this is the address of a function to call when
- completing a word would normally display the list of possible matches.
- This function is called instead of actually doing the display.
- It takes three arguments: (char **matches, int num_matches, int max_length)
- where MATCHES is the array of strings that matched, NUM_MATCHES is the
- number of strings in that array, and MAX_LENGTH is the length of the
- longest string in that array. */
-rl_compdisp_func_t *rl_completion_display_matches_hook = (rl_compdisp_func_t *)NULL;
-
-#if defined (VISIBLE_STATS)
-# if !defined (X_OK)
-# define X_OK 1
-# endif
-static int stat_char PARAMS((char *));
-#endif
-
-static char *rl_quote_filename PARAMS((char *, int, char *));
-
-static void set_completion_defaults PARAMS((int));
-static int get_y_or_n PARAMS((int));
-static int _rl_internal_pager PARAMS((int));
-static char *printable_part PARAMS((char *));
-static int print_filename PARAMS((char *, char *));
-
-static char **gen_completion_matches PARAMS((char *, int, int, rl_compentry_func_t *, int, int));
-
-static char **remove_duplicate_matches PARAMS((char **));
-static void insert_match PARAMS((char *, int, int, char *));
-static int append_to_match PARAMS((char *, int, int, int));
-static void insert_all_matches PARAMS((char **, int, char *));
-static void display_matches PARAMS((char **));
-static int compute_lcd_of_matches PARAMS((char **, int, const char *));
-static int postprocess_matches PARAMS((char ***, int));
-
-static char *make_quoted_replacement PARAMS((char *, int, char *));
-
-/* **************************************************************** */
-/* */
-/* Completion matching, from readline's point of view. */
-/* */
-/* **************************************************************** */
-
-/* Variables known only to the readline library. */
-
-/* If non-zero, non-unique completions always show the list of matches. */
-int _rl_complete_show_all = 0;
-
-/* If non-zero, completed directory names have a slash appended. */
-int _rl_complete_mark_directories = 1;
-
-/* If non-zero, the symlinked directory completion behavior introduced in
- readline-4.2a is disabled, and symlinks that point to directories have
- a slash appended (subject to the value of _rl_complete_mark_directories).
- This is user-settable via the mark-symlinked-directories variable. */
-int _rl_complete_mark_symlink_dirs = 0;
-
-/* If non-zero, completions are printed horizontally in alphabetical order,
- like `ls -x'. */
-int _rl_print_completions_horizontally;
-
-/* Non-zero means that case is not significant in filename completion. */
-#if defined (__MSDOS__) && !defined (__DJGPP__)
-int _rl_completion_case_fold = 1;
-#else
-int _rl_completion_case_fold;
-#endif
-
-/* If non-zero, don't match hidden files (filenames beginning with a `.' on
- Unix) when doing filename completion. */
-int _rl_match_hidden_files = 1;
-
-/* Global variables available to applications using readline. */
-
-#if defined (VISIBLE_STATS)
-/* Non-zero means add an additional character to each filename displayed
- during listing completion iff rl_filename_completion_desired which helps
- to indicate the type of file being listed. */
-int rl_visible_stats = 0;
-#endif /* VISIBLE_STATS */
-
-/* If non-zero, then this is the address of a function to call when
- completing on a directory name. The function is called with
- the address of a string (the current directory name) as an arg. */
-rl_icppfunc_t *rl_directory_completion_hook = (rl_icppfunc_t *)NULL;
-
-rl_icppfunc_t *rl_directory_rewrite_hook = (rl_icppfunc_t *)NULL;
-
-/* Non-zero means readline completion functions perform tilde expansion. */
-int rl_complete_with_tilde_expansion = 0;
-
-/* Pointer to the generator function for completion_matches ().
- NULL means to use rl_filename_completion_function (), the default filename
- completer. */
-rl_compentry_func_t *rl_completion_entry_function = (rl_compentry_func_t *)NULL;
-
-/* Pointer to alternative function to create matches.
- Function is called with TEXT, START, and END.
- START and END are indices in RL_LINE_BUFFER saying what the boundaries
- of TEXT are.
- If this function exists and returns NULL then call the value of
- rl_completion_entry_function to try to match, otherwise use the
- array of strings returned. */
-rl_completion_func_t *rl_attempted_completion_function = (rl_completion_func_t *)NULL;
-
-/* Non-zero means to suppress normal filename completion after the
- user-specified completion function has been called. */
-int rl_attempted_completion_over = 0;
-
-/* Set to a character indicating the type of completion being performed
- by rl_complete_internal, available for use by application completion
- functions. */
-int rl_completion_type = 0;
-
-/* Up to this many items will be displayed in response to a
- possible-completions call. After that, we ask the user if
- she is sure she wants to see them all. */
-int rl_completion_query_items = 100;
-
-int _rl_page_completions = 1;
-
-/* The basic list of characters that signal a break between words for the
- completer routine. The contents of this variable is what breaks words
- in the shell, i.e. " \t\n\"\\'`@$><=" */
-const char *rl_basic_word_break_characters = " \t\n\"\\'`@$><=;|&{("; /* }) */
-
-/* List of basic quoting characters. */
-const char *rl_basic_quote_characters = "\"'";
-
-/* The list of characters that signal a break between words for
- rl_complete_internal. The default list is the contents of
- rl_basic_word_break_characters. */
-const char *rl_completer_word_break_characters = (const char *)NULL;
-
-/* List of characters which can be used to quote a substring of the line.
- Completion occurs on the entire substring, and within the substring
- rl_completer_word_break_characters are treated as any other character,
- unless they also appear within this list. */
-const char *rl_completer_quote_characters = (const char *)NULL;
-
-/* List of characters that should be quoted in filenames by the completer. */
-const char *rl_filename_quote_characters = (const char *)NULL;
-
-/* List of characters that are word break characters, but should be left
- in TEXT when it is passed to the completion function. The shell uses
- this to help determine what kind of completing to do. */
-const char *rl_special_prefixes = (const char *)NULL;
-
-/* If non-zero, then disallow duplicates in the matches. */
-int rl_ignore_completion_duplicates = 1;
-
-/* Non-zero means that the results of the matches are to be treated
- as filenames. This is ALWAYS zero on entry, and can only be changed
- within a completion entry finder function. */
-int rl_filename_completion_desired = 0;
-
-/* Non-zero means that the results of the matches are to be quoted using
- double quotes (or an application-specific quoting mechanism) if the
- filename contains any characters in rl_filename_quote_chars. This is
- ALWAYS non-zero on entry, and can only be changed within a completion
- entry finder function. */
-int rl_filename_quoting_desired = 1;
-
-/* This function, if defined, is called by the completer when real
- filename completion is done, after all the matching names have been
- generated. It is passed a (char**) known as matches in the code below.
- It consists of a NULL-terminated array of pointers to potential
- matching strings. The 1st element (matches[0]) is the maximal
- substring that is common to all matches. This function can re-arrange
- the list of matches as required, but all elements of the array must be
- free()'d if they are deleted. The main intent of this function is
- to implement FIGNORE a la SunOS csh. */
-rl_compignore_func_t *rl_ignore_some_completions_function = (rl_compignore_func_t *)NULL;
-
-/* Set to a function to quote a filename in an application-specific fashion.
- Called with the text to quote, the type of match found (single or multiple)
- and a pointer to the quoting character to be used, which the function can
- reset if desired. */
-rl_quote_func_t *rl_filename_quoting_function = rl_quote_filename;
-
-/* Function to call to remove quoting characters from a filename. Called
- before completion is attempted, so the embedded quotes do not interfere
- with matching names in the file system. Readline doesn't do anything
- with this; it's set only by applications. */
-rl_dequote_func_t *rl_filename_dequoting_function = (rl_dequote_func_t *)NULL;
-
-/* Function to call to decide whether or not a word break character is
- quoted. If a character is quoted, it does not break words for the
- completer. */
-rl_linebuf_func_t *rl_char_is_quoted_p = (rl_linebuf_func_t *)NULL;
-
-/* If non-zero, the completion functions don't append anything except a
- possible closing quote. This is set to 0 by rl_complete_internal and
- may be changed by an application-specific completion function. */
-int rl_completion_suppress_append = 0;
-
-/* Character appended to completed words when at the end of the line. The
- default is a space. */
-int rl_completion_append_character = ' ';
-
-/* If non-zero, a slash will be appended to completed filenames that are
- symbolic links to directory names, subject to the value of the
- mark-directories variable (which is user-settable). This exists so
- that application completion functions can override the user's preference
- (set via the mark-symlinked-directories variable) if appropriate.
- It's set to the value of _rl_complete_mark_symlink_dirs in
- rl_complete_internal before any application-specific completion
- function is called, so without that function doing anything, the user's
- preferences are honored. */
-int rl_completion_mark_symlink_dirs;
-
-/* If non-zero, inhibit completion (temporarily). */
-int rl_inhibit_completion;
-
-/* Variables local to this file. */
-
-/* Local variable states what happened during the last completion attempt. */
-static int completion_changed_buffer;
-
-/*************************************/
-/* */
-/* Bindable completion functions */
-/* */
-/*************************************/
-
-/* Complete the word at or before point. You have supplied the function
- that does the initial simple matching selection algorithm (see
- rl_completion_matches ()). The default is to do filename completion. */
-int
-rl_complete (ignore, invoking_key)
- int ignore, invoking_key;
-{
- if (rl_inhibit_completion)
- return (_rl_insert_char (ignore, invoking_key));
- else if (rl_last_func == rl_complete && !completion_changed_buffer)
- return (rl_complete_internal ('?'));
- else if (_rl_complete_show_all)
- return (rl_complete_internal ('!'));
- else
- return (rl_complete_internal (TAB));
-}
-
-/* List the possible completions. See description of rl_complete (). */
-int
-rl_possible_completions (ignore, invoking_key)
- int ignore, invoking_key;
-{
- return (rl_complete_internal ('?'));
-}
-
-int
-rl_insert_completions (ignore, invoking_key)
- int ignore, invoking_key;
-{
- return (rl_complete_internal ('*'));
-}
-
-/* Return the correct value to pass to rl_complete_internal performing
- the same tests as rl_complete. This allows consecutive calls to an
- application's completion function to list possible completions and for
- an application-specific completion function to honor the
- show-all-if-ambiguous readline variable. */
-int
-rl_completion_mode (cfunc)
- rl_command_func_t *cfunc;
-{
- if (rl_last_func == cfunc && !completion_changed_buffer)
- return '?';
- else if (_rl_complete_show_all)
- return '!';
- else
- return TAB;
-}
-
-/************************************/
-/* */
-/* Completion utility functions */
-/* */
-/************************************/
-
-/* Set default values for readline word completion. These are the variables
- that application completion functions can change or inspect. */
-static void
-set_completion_defaults (what_to_do)
- int what_to_do;
-{
- /* Only the completion entry function can change these. */
- rl_filename_completion_desired = 0;
- rl_filename_quoting_desired = 1;
- rl_completion_type = what_to_do;
- rl_completion_suppress_append = 0;
-
- /* The completion entry function may optionally change this. */
- rl_completion_mark_symlink_dirs = _rl_complete_mark_symlink_dirs;
-}
-
-/* The user must press "y" or "n". Non-zero return means "y" pressed. */
-static int
-get_y_or_n (for_pager)
- int for_pager;
-{
- int c;
-
- for (;;)
- {
- RL_SETSTATE(RL_STATE_MOREINPUT);
- c = rl_read_key ();
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
-
- if (c == 'y' || c == 'Y' || c == ' ')
- return (1);
- if (c == 'n' || c == 'N' || c == RUBOUT)
- return (0);
- if (c == ABORT_CHAR)
- _rl_abort_internal ();
- if (for_pager && (c == NEWLINE || c == RETURN))
- return (2);
- if (for_pager && (c == 'q' || c == 'Q'))
- return (0);
- rl_ding ();
- }
-}
-
-static int
-_rl_internal_pager (lines)
- int lines;
-{
- int i;
-
- fprintf (rl_outstream, "--More--");
- fflush (rl_outstream);
- i = get_y_or_n (1);
- _rl_erase_entire_line ();
- if (i == 0)
- return -1;
- else if (i == 2)
- return (lines - 1);
- else
- return 0;
-}
-
-#if defined (VISIBLE_STATS)
-/* Return the character which best describes FILENAME.
- `@' for symbolic links
- `/' for directories
- `*' for executables
- `=' for sockets
- `|' for FIFOs
- `%' for character special devices
- `#' for block special devices */
-static int
-stat_char (filename)
- char *filename;
-{
- struct stat finfo;
- int character, r;
-
-#if defined (HAVE_LSTAT) && defined (S_ISLNK)
- r = lstat (filename, &finfo);
-#else
- r = stat (filename, &finfo);
-#endif
-
- if (r == -1)
- return (0);
-
- character = 0;
- if (S_ISDIR (finfo.st_mode))
- character = '/';
-#if defined (S_ISCHR)
- else if (S_ISCHR (finfo.st_mode))
- character = '%';
-#endif /* S_ISCHR */
-#if defined (S_ISBLK)
- else if (S_ISBLK (finfo.st_mode))
- character = '#';
-#endif /* S_ISBLK */
-#if defined (S_ISLNK)
- else if (S_ISLNK (finfo.st_mode))
- character = '@';
-#endif /* S_ISLNK */
-#if defined (S_ISSOCK)
- else if (S_ISSOCK (finfo.st_mode))
- character = '=';
-#endif /* S_ISSOCK */
-#if defined (S_ISFIFO)
- else if (S_ISFIFO (finfo.st_mode))
- character = '|';
-#endif
- else if (S_ISREG (finfo.st_mode))
- {
- if (access (filename, X_OK) == 0)
- character = '*';
- }
- return (character);
-}
-#endif /* VISIBLE_STATS */
-
-/* Return the portion of PATHNAME that should be output when listing
- possible completions. If we are hacking filename completion, we
- are only interested in the basename, the portion following the
- final slash. Otherwise, we return what we were passed. Since
- printing empty strings is not very informative, if we're doing
- filename completion, and the basename is the empty string, we look
- for the previous slash and return the portion following that. If
- there's no previous slash, we just return what we were passed. */
-static char *
-printable_part (pathname)
- char *pathname;
-{
- char *temp, *x;
-
- if (rl_filename_completion_desired == 0) /* don't need to do anything */
- return (pathname);
-
- temp = strrchr (pathname, '/');
-#if defined (__MSDOS__)
- if (temp == 0 && ISALPHA ((unsigned char)pathname[0]) && pathname[1] == ':')
- temp = pathname + 1;
-#endif
-
- if (temp == 0 || *temp == '\0')
- return (pathname);
- /* If the basename is NULL, we might have a pathname like '/usr/src/'.
- Look for a previous slash and, if one is found, return the portion
- following that slash. If there's no previous slash, just return the
- pathname we were passed. */
- else if (temp[1] == '\0')
- {
- for (x = temp - 1; x > pathname; x--)
- if (*x == '/')
- break;
- return ((*x == '/') ? x + 1 : pathname);
- }
- else
- return ++temp;
-}
-
-/* Output TO_PRINT to rl_outstream. If VISIBLE_STATS is defined and we
- are using it, check for and output a single character for `special'
- filenames. Return the number of characters we output. */
-
-#define PUTX(c) \
- do { \
- if (CTRL_CHAR (c)) \
- { \
- putc ('^', rl_outstream); \
- putc (UNCTRL (c), rl_outstream); \
- printed_len += 2; \
- } \
- else if (c == RUBOUT) \
- { \
- putc ('^', rl_outstream); \
- putc ('?', rl_outstream); \
- printed_len += 2; \
- } \
- else \
- { \
- putc (c, rl_outstream); \
- printed_len++; \
- } \
- } while (0)
-
-static int
-print_filename (to_print, full_pathname)
- char *to_print, *full_pathname;
-{
- int printed_len = 0;
-#if !defined (VISIBLE_STATS)
- char *s;
-
- for (s = to_print; *s; s++)
- {
- PUTX (*s);
- }
-#else
- char *s, c, *new_full_pathname;
- int extension_char, slen, tlen;
-
- for (s = to_print; *s; s++)
- {
- PUTX (*s);
- }
-
- if (rl_filename_completion_desired && rl_visible_stats)
- {
- /* If to_print != full_pathname, to_print is the basename of the
- path passed. In this case, we try to expand the directory
- name before checking for the stat character. */
- if (to_print != full_pathname)
- {
- /* Terminate the directory name. */
- c = to_print[-1];
- to_print[-1] = '\0';
-
- /* If setting the last slash in full_pathname to a NUL results in
- full_pathname being the empty string, we are trying to complete
- files in the root directory. If we pass a null string to the
- bash directory completion hook, for example, it will expand it
- to the current directory. We just want the `/'. */
- s = tilde_expand (full_pathname && *full_pathname ? full_pathname : "/");
- if (rl_directory_completion_hook)
- (*rl_directory_completion_hook) (&s);
-
- slen = strlen (s);
- tlen = strlen (to_print);
- new_full_pathname = (char *)xmalloc (slen + tlen + 2);
- strcpy (new_full_pathname, s);
- new_full_pathname[slen] = '/';
- strcpy (new_full_pathname + slen + 1, to_print);
-
- extension_char = stat_char (new_full_pathname);
-
- free (new_full_pathname);
- to_print[-1] = c;
- }
- else
- {
- s = tilde_expand (full_pathname);
- extension_char = stat_char (s);
- }
-
- free (s);
- if (extension_char)
- {
- putc (extension_char, rl_outstream);
- printed_len++;
- }
- }
-#endif /* VISIBLE_STATS */
- return printed_len;
-}
-
-static char *
-rl_quote_filename (s, rtype, qcp)
- char *s;
- int rtype;
- char *qcp;
-{
- char *r;
-
- r = (char *)xmalloc (strlen (s) + 2);
- *r = *rl_completer_quote_characters;
- strcpy (r + 1, s);
- if (qcp)
- *qcp = *rl_completer_quote_characters;
- return r;
-}
-
-/* Find the bounds of the current word for completion purposes, and leave
- rl_point set to the end of the word. This function skips quoted
- substrings (characters between matched pairs of characters in
- rl_completer_quote_characters). First we try to find an unclosed
- quoted substring on which to do matching. If one is not found, we use
- the word break characters to find the boundaries of the current word.
- We call an application-specific function to decide whether or not a
- particular word break character is quoted; if that function returns a
- non-zero result, the character does not break a word. This function
- returns the opening quote character if we found an unclosed quoted
- substring, '\0' otherwise. FP, if non-null, is set to a value saying
- which (shell-like) quote characters we found (single quote, double
- quote, or backslash) anywhere in the string. DP, if non-null, is set to
- the value of the delimiter character that caused a word break. */
-
-char
-_rl_find_completion_word (fp, dp)
- int *fp, *dp;
-{
- int scan, end, found_quote, delimiter, pass_next, isbrk;
- char quote_char;
-
- end = rl_point;
- found_quote = delimiter = 0;
- quote_char = '\0';
-
- if (rl_completer_quote_characters)
- {
- /* We have a list of characters which can be used in pairs to
- quote substrings for the completer. Try to find the start
- of an unclosed quoted substring. */
- /* FOUND_QUOTE is set so we know what kind of quotes we found. */
- for (scan = pass_next = 0; scan < end; scan++)
- {
- if (pass_next)
- {
- pass_next = 0;
- continue;
- }
-
- /* Shell-like semantics for single quotes -- don't allow backslash
- to quote anything in single quotes, especially not the closing
- quote. If you don't like this, take out the check on the value
- of quote_char. */
- if (quote_char != '\'' && rl_line_buffer[scan] == '\\')
- {
- pass_next = 1;
- found_quote |= RL_QF_BACKSLASH;
- continue;
- }
-
- if (quote_char != '\0')
- {
- /* Ignore everything until the matching close quote char. */
- if (rl_line_buffer[scan] == quote_char)
- {
- /* Found matching close. Abandon this substring. */
- quote_char = '\0';
- rl_point = end;
- }
- }
- else if (strchr (rl_completer_quote_characters, rl_line_buffer[scan]))
- {
- /* Found start of a quoted substring. */
- quote_char = rl_line_buffer[scan];
- rl_point = scan + 1;
- /* Shell-like quoting conventions. */
- if (quote_char == '\'')
- found_quote |= RL_QF_SINGLE_QUOTE;
- else if (quote_char == '"')
- found_quote |= RL_QF_DOUBLE_QUOTE;
- else
- found_quote |= RL_QF_OTHER_QUOTE;
- }
- }
- }
-
- if (rl_point == end && quote_char == '\0')
- {
- /* We didn't find an unclosed quoted substring upon which to do
- completion, so use the word break characters to find the
- substring on which to complete. */
-#if defined (HANDLE_MULTIBYTE)
- while (rl_point = _rl_find_prev_mbchar (rl_line_buffer, rl_point, MB_FIND_ANY))
-#else
- while (--rl_point)
-#endif
- {
- scan = rl_line_buffer[rl_point];
-
- if (strchr (rl_completer_word_break_characters, scan) == 0)
- continue;
-
- /* Call the application-specific function to tell us whether
- this word break character is quoted and should be skipped. */
- if (rl_char_is_quoted_p && found_quote &&
- (*rl_char_is_quoted_p) (rl_line_buffer, rl_point))
- continue;
-
- /* Convoluted code, but it avoids an n^2 algorithm with calls
- to char_is_quoted. */
- break;
- }
- }
-
- /* If we are at an unquoted word break, then advance past it. */
- scan = rl_line_buffer[rl_point];
-
- /* If there is an application-specific function to say whether or not
- a character is quoted and we found a quote character, let that
- function decide whether or not a character is a word break, even
- if it is found in rl_completer_word_break_characters. Don't bother
- if we're at the end of the line, though. */
- if (scan)
- {
- if (rl_char_is_quoted_p)
- isbrk = (found_quote == 0 ||
- (*rl_char_is_quoted_p) (rl_line_buffer, rl_point) == 0) &&
- strchr (rl_completer_word_break_characters, scan) != 0;
- else
- isbrk = strchr (rl_completer_word_break_characters, scan) != 0;
-
- if (isbrk)
- {
- /* If the character that caused the word break was a quoting
- character, then remember it as the delimiter. */
- if (rl_basic_quote_characters &&
- strchr (rl_basic_quote_characters, scan) &&
- (end - rl_point) > 1)
- delimiter = scan;
-
- /* If the character isn't needed to determine something special
- about what kind of completion to perform, then advance past it. */
- if (rl_special_prefixes == 0 || strchr (rl_special_prefixes, scan) == 0)
- rl_point++;
- }
- }
-
- if (fp)
- *fp = found_quote;
- if (dp)
- *dp = delimiter;
-
- return (quote_char);
-}
-
-static char **
-gen_completion_matches (text, start, end, our_func, found_quote, quote_char)
- char *text;
- int start, end;
- rl_compentry_func_t *our_func;
- int found_quote, quote_char;
-{
- char **matches, *temp;
-
- /* If the user wants to TRY to complete, but then wants to give
- up and use the default completion function, they set the
- variable rl_attempted_completion_function. */
- if (rl_attempted_completion_function)
- {
- matches = (*rl_attempted_completion_function) (text, start, end);
-
- if (matches || rl_attempted_completion_over)
- {
- rl_attempted_completion_over = 0;
- return (matches);
- }
- }
-
- /* Beware -- we're stripping the quotes here. Do this only if we know
- we are doing filename completion and the application has defined a
- filename dequoting function. */
- temp = (char *)NULL;
-
- if (found_quote && our_func == rl_filename_completion_function &&
- rl_filename_dequoting_function)
- {
- /* delete single and double quotes */
- temp = (*rl_filename_dequoting_function) (text, quote_char);
- text = temp; /* not freeing text is not a memory leak */
- }
-
- matches = rl_completion_matches (text, our_func);
- FREE (temp);
- return matches;
-}
-
-/* Filter out duplicates in MATCHES. This frees up the strings in
- MATCHES. */
-static char **
-remove_duplicate_matches (matches)
- char **matches;
-{
- char *lowest_common;
- int i, j, newlen;
- char dead_slot;
- char **temp_array;
-
- /* Sort the items. */
- for (i = 0; matches[i]; i++)
- ;
-
- /* Sort the array without matches[0], since we need it to
- stay in place no matter what. */
- if (i)
- qsort (matches+1, i-1, sizeof (char *), (QSFUNC *)_rl_qsort_string_compare);
-
- /* Remember the lowest common denominator for it may be unique. */
- lowest_common = savestring (matches[0]);
-
- for (i = newlen = 0; matches[i + 1]; i++)
- {
- if (strcmp (matches[i], matches[i + 1]) == 0)
- {
- free (matches[i]);
- matches[i] = (char *)&dead_slot;
- }
- else
- newlen++;
- }
-
- /* We have marked all the dead slots with (char *)&dead_slot.
- Copy all the non-dead entries into a new array. */
- temp_array = (char **)xmalloc ((3 + newlen) * sizeof (char *));
- for (i = j = 1; matches[i]; i++)
- {
- if (matches[i] != (char *)&dead_slot)
- temp_array[j++] = matches[i];
- }
- temp_array[j] = (char *)NULL;
-
- if (matches[0] != (char *)&dead_slot)
- free (matches[0]);
-
- /* Place the lowest common denominator back in [0]. */
- temp_array[0] = lowest_common;
-
- /* If there is one string left, and it is identical to the
- lowest common denominator, then the LCD is the string to
- insert. */
- if (j == 2 && strcmp (temp_array[0], temp_array[1]) == 0)
- {
- free (temp_array[1]);
- temp_array[1] = (char *)NULL;
- }
- return (temp_array);
-}
-
-/* Find the common prefix of the list of matches, and put it into
- matches[0]. */
-static int
-compute_lcd_of_matches (match_list, matches, text)
- char **match_list;
- int matches;
- const char *text;
-{
- register int i, c1, c2, si;
- int low; /* Count of max-matched characters. */
-#if defined (HANDLE_MULTIBYTE)
- int v;
- mbstate_t ps1, ps2;
- wchar_t wc1, wc2;
-#endif
-
- /* If only one match, just use that. Otherwise, compare each
- member of the list with the next, finding out where they
- stop matching. */
- if (matches == 1)
- {
- match_list[0] = match_list[1];
- match_list[1] = (char *)NULL;
- return 1;
- }
-
- for (i = 1, low = 100000; i < matches; i++)
- {
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- memset (&ps1, 0, sizeof (mbstate_t));
- memset (&ps2, 0, sizeof (mbstate_t));
- }
-#endif
- if (_rl_completion_case_fold)
- {
- for (si = 0;
- (c1 = _rl_to_lower(match_list[i][si])) &&
- (c2 = _rl_to_lower(match_list[i + 1][si]));
- si++)
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- v = mbrtowc (&wc1, match_list[i]+si, strlen (match_list[i]+si), &ps1);
- mbrtowc (&wc2, match_list[i+1]+si, strlen (match_list[i+1]+si), &ps2);
- wc1 = towlower (wc1);
- wc2 = towlower (wc2);
- if (wc1 != wc2)
- break;
- else if (v > 1)
- si += v - 1;
- }
- else
-#endif
- if (c1 != c2)
- break;
- }
- else
- {
- for (si = 0;
- (c1 = match_list[i][si]) &&
- (c2 = match_list[i + 1][si]);
- si++)
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- mbstate_t ps_back = ps1;
- if (!_rl_compare_chars (match_list[i], si, &ps1, match_list[i+1], si, &ps2))
- break;
- else if ((v = _rl_get_char_len (&match_list[i][si], &ps_back)) > 1)
- si += v - 1;
- }
- else
-#endif
- if (c1 != c2)
- break;
- }
-
- if (low > si)
- low = si;
- }
-
- /* If there were multiple matches, but none matched up to even the
- first character, and the user typed something, use that as the
- value of matches[0]. */
- if (low == 0 && text && *text)
- {
- match_list[0] = (char *)xmalloc (strlen (text) + 1);
- strcpy (match_list[0], text);
- }
- else
- {
- match_list[0] = (char *)xmalloc (low + 1);
-
- /* XXX - this might need changes in the presence of multibyte chars */
-
- /* If we are ignoring case, try to preserve the case of the string
- the user typed in the face of multiple matches differing in case. */
- if (_rl_completion_case_fold)
- {
- /* sort the list to get consistent answers. */
- qsort (match_list+1, matches, sizeof(char *), (QSFUNC *)_rl_qsort_string_compare);
-
- si = strlen (text);
- if (si <= low)
- {
- for (i = 1; i <= matches; i++)
- if (strncmp (match_list[i], text, si) == 0)
- {
- strncpy (match_list[0], match_list[i], low);
- break;
- }
- /* no casematch, use first entry */
- if (i > matches)
- strncpy (match_list[0], match_list[1], low);
- }
- else
- /* otherwise, just use the text the user typed. */
- strncpy (match_list[0], text, low);
- }
- else
- strncpy (match_list[0], match_list[1], low);
-
- match_list[0][low] = '\0';
- }
-
- return matches;
-}
-
-static int
-postprocess_matches (matchesp, matching_filenames)
- char ***matchesp;
- int matching_filenames;
-{
- char *t, **matches, **temp_matches;
- int nmatch, i;
-
- matches = *matchesp;
-
- if (matches == 0)
- return 0;
-
- /* It seems to me that in all the cases we handle we would like
- to ignore duplicate possiblilities. Scan for the text to
- insert being identical to the other completions. */
- if (rl_ignore_completion_duplicates)
- {
- temp_matches = remove_duplicate_matches (matches);
- free (matches);
- matches = temp_matches;
- }
-
- /* If we are matching filenames, then here is our chance to
- do clever processing by re-examining the list. Call the
- ignore function with the array as a parameter. It can
- munge the array, deleting matches as it desires. */
- if (rl_ignore_some_completions_function && matching_filenames)
- {
- for (nmatch = 1; matches[nmatch]; nmatch++)
- ;
- (void)(*rl_ignore_some_completions_function) (matches);
- if (matches == 0 || matches[0] == 0)
- {
- FREE (matches);
- *matchesp = (char **)0;
- return 0;
- }
- else
- {
- /* If we removed some matches, recompute the common prefix. */
- for (i = 1; matches[i]; i++)
- ;
- if (i > 1 && i < nmatch)
- {
- t = matches[0];
- compute_lcd_of_matches (matches, i - 1, t);
- FREE (t);
- }
- }
- }
-
- *matchesp = matches;
- return (1);
-}
-
-/* A convenience function for displaying a list of strings in
- columnar format on readline's output stream. MATCHES is the list
- of strings, in argv format, LEN is the number of strings in MATCHES,
- and MAX is the length of the longest string in MATCHES. */
-void
-rl_display_match_list (matches, len, max)
- char **matches;
- int len, max;
-{
- int count, limit, printed_len, lines;
- int i, j, k, l;
- char *temp;
-
- /* How many items of MAX length can we fit in the screen window? */
- max += 2;
- limit = _rl_screenwidth / max;
- if (limit != 1 && (limit * max == _rl_screenwidth))
- limit--;
-
- /* Avoid a possible floating exception. If max > _rl_screenwidth,
- limit will be 0 and a divide-by-zero fault will result. */
- if (limit == 0)
- limit = 1;
-
- /* How many iterations of the printing loop? */
- count = (len + (limit - 1)) / limit;
-
- /* Watch out for special case. If LEN is less than LIMIT, then
- just do the inner printing loop.
- 0 < len <= limit implies count = 1. */
-
- /* Sort the items if they are not already sorted. */
- if (rl_ignore_completion_duplicates == 0)
- qsort (matches + 1, len, sizeof (char *), (QSFUNC *)_rl_qsort_string_compare);
-
- rl_crlf ();
-
- lines = 0;
- if (_rl_print_completions_horizontally == 0)
- {
- /* Print the sorted items, up-and-down alphabetically, like ls. */
- for (i = 1; i <= count; i++)
- {
- for (j = 0, l = i; j < limit; j++)
- {
- if (l > len || matches[l] == 0)
- break;
- else
- {
- temp = printable_part (matches[l]);
- printed_len = print_filename (temp, matches[l]);
-
- if (j + 1 < limit)
- for (k = 0; k < max - printed_len; k++)
- putc (' ', rl_outstream);
- }
- l += count;
- }
- rl_crlf ();
- lines++;
- if (_rl_page_completions && lines >= (_rl_screenheight - 1) && i < count)
- {
- lines = _rl_internal_pager (lines);
- if (lines < 0)
- return;
- }
- }
- }
- else
- {
- /* Print the sorted items, across alphabetically, like ls -x. */
- for (i = 1; matches[i]; i++)
- {
- temp = printable_part (matches[i]);
- printed_len = print_filename (temp, matches[i]);
- /* Have we reached the end of this line? */
- if (matches[i+1])
- {
- if (i && (limit > 1) && (i % limit) == 0)
- {
- rl_crlf ();
- lines++;
- if (_rl_page_completions && lines >= _rl_screenheight - 1)
- {
- lines = _rl_internal_pager (lines);
- if (lines < 0)
- return;
- }
- }
- else
- for (k = 0; k < max - printed_len; k++)
- putc (' ', rl_outstream);
- }
- }
- rl_crlf ();
- }
-}
-
-/* Display MATCHES, a list of matching filenames in argv format. This
- handles the simple case -- a single match -- first. If there is more
- than one match, we compute the number of strings in the list and the
- length of the longest string, which will be needed by the display
- function. If the application wants to handle displaying the list of
- matches itself, it sets RL_COMPLETION_DISPLAY_MATCHES_HOOK to the
- address of a function, and we just call it. If we're handling the
- display ourselves, we just call rl_display_match_list. We also check
- that the list of matches doesn't exceed the user-settable threshold,
- and ask the user if he wants to see the list if there are more matches
- than RL_COMPLETION_QUERY_ITEMS. */
-static void
-display_matches (matches)
- char **matches;
-{
- int len, max, i;
- char *temp;
-
- /* Move to the last visible line of a possibly-multiple-line command. */
- _rl_move_vert (_rl_vis_botlin);
-
- /* Handle simple case first. What if there is only one answer? */
- if (matches[1] == 0)
- {
- temp = printable_part (matches[0]);
- rl_crlf ();
- print_filename (temp, matches[0]);
- rl_crlf ();
-
- rl_forced_update_display ();
- rl_display_fixed = 1;
-
- return;
- }
-
- /* There is more than one answer. Find out how many there are,
- and find the maximum printed length of a single entry. */
- for (max = 0, i = 1; matches[i]; i++)
- {
- temp = printable_part (matches[i]);
- len = strlen (temp);
-
- if (len > max)
- max = len;
- }
-
- len = i - 1;
-
- /* If the caller has defined a display hook, then call that now. */
- if (rl_completion_display_matches_hook)
- {
- (*rl_completion_display_matches_hook) (matches, len, max);
- return;
- }
-
- /* If there are many items, then ask the user if she really wants to
- see them all. */
- if (len >= rl_completion_query_items)
- {
- rl_crlf ();
- fprintf (rl_outstream, "Display all %d possibilities? (y or n)", len);
- fflush (rl_outstream);
- if (get_y_or_n (0) == 0)
- {
- rl_crlf ();
-
- rl_forced_update_display ();
- rl_display_fixed = 1;
-
- return;
- }
- }
-
- rl_display_match_list (matches, len, max);
-
- rl_forced_update_display ();
- rl_display_fixed = 1;
-}
-
-static char *
-make_quoted_replacement (match, mtype, qc)
- char *match;
- int mtype;
- char *qc; /* Pointer to quoting character, if any */
-{
- int should_quote, do_replace;
- char *replacement;
-
- /* If we are doing completion on quoted substrings, and any matches
- contain any of the completer_word_break_characters, then auto-
- matically prepend the substring with a quote character (just pick
- the first one from the list of such) if it does not already begin
- with a quote string. FIXME: Need to remove any such automatically
- inserted quote character when it no longer is necessary, such as
- if we change the string we are completing on and the new set of
- matches don't require a quoted substring. */
- replacement = match;
-
- should_quote = match && rl_completer_quote_characters &&
- rl_filename_completion_desired &&
- rl_filename_quoting_desired;
-
- if (should_quote)
- should_quote = should_quote && (!qc || !*qc ||
- (rl_completer_quote_characters && strchr (rl_completer_quote_characters, *qc)));
-
- if (should_quote)
- {
- /* If there is a single match, see if we need to quote it.
- This also checks whether the common prefix of several
- matches needs to be quoted. */
- should_quote = rl_filename_quote_characters
- ? (_rl_strpbrk (match, rl_filename_quote_characters) != 0)
- : 0;
-
- do_replace = should_quote ? mtype : NO_MATCH;
- /* Quote the replacement, since we found an embedded
- word break character in a potential match. */
- if (do_replace != NO_MATCH && rl_filename_quoting_function)
- replacement = (*rl_filename_quoting_function) (match, do_replace, qc);
- }
- return (replacement);
-}
-
-static void
-insert_match (match, start, mtype, qc)
- char *match;
- int start, mtype;
- char *qc;
-{
- char *replacement;
- char oqc;
-
- oqc = qc ? *qc : '\0';
- replacement = make_quoted_replacement (match, mtype, qc);
-
- /* Now insert the match. */
- if (replacement)
- {
- /* Don't double an opening quote character. */
- if (qc && *qc && start && rl_line_buffer[start - 1] == *qc &&
- replacement[0] == *qc)
- start--;
- /* If make_quoted_replacement changed the quoting character, remove
- the opening quote and insert the (fully-quoted) replacement. */
- else if (qc && (*qc != oqc) && start && rl_line_buffer[start - 1] == oqc &&
- replacement[0] != oqc)
- start--;
- _rl_replace_text (replacement, start, rl_point - 1);
- if (replacement != match)
- free (replacement);
- }
-}
-
-/* Append any necessary closing quote and a separator character to the
- just-inserted match. If the user has specified that directories
- should be marked by a trailing `/', append one of those instead. The
- default trailing character is a space. Returns the number of characters
- appended. If NONTRIVIAL_MATCH is set, we test for a symlink (if the OS
- has them) and don't add a suffix for a symlink to a directory. A
- nontrivial match is one that actually adds to the word being completed.
- The variable rl_completion_mark_symlink_dirs controls this behavior
- (it's initially set to the what the user has chosen, indicated by the
- value of _rl_complete_mark_symlink_dirs, but may be modified by an
- application's completion function). */
-static int
-append_to_match (text, delimiter, quote_char, nontrivial_match)
- char *text;
- int delimiter, quote_char, nontrivial_match;
-{
- char temp_string[4], *filename;
- int temp_string_index, s;
- struct stat finfo;
-
- temp_string_index = 0;
- if (quote_char && rl_point && rl_line_buffer[rl_point - 1] != quote_char)
- temp_string[temp_string_index++] = quote_char;
-
- if (delimiter)
- temp_string[temp_string_index++] = delimiter;
- else if (rl_completion_suppress_append == 0 && rl_completion_append_character)
- temp_string[temp_string_index++] = rl_completion_append_character;
-
- temp_string[temp_string_index++] = '\0';
-
- if (rl_filename_completion_desired)
- {
- filename = tilde_expand (text);
- s = (nontrivial_match && rl_completion_mark_symlink_dirs == 0)
- ? LSTAT (filename, &finfo)
- : stat (filename, &finfo);
- if (s == 0 && S_ISDIR (finfo.st_mode))
- {
- if (_rl_complete_mark_directories)
- {
- /* This is clumsy. Avoid putting in a double slash if point
- is at the end of the line and the previous character is a
- slash. */
- if (rl_point && rl_line_buffer[rl_point] == '\0' && rl_line_buffer[rl_point - 1] == '/')
- ;
- else if (rl_line_buffer[rl_point] != '/')
- rl_insert_text ("/");
- }
- }
-#ifdef S_ISLNK
- /* Don't add anything if the filename is a symlink and resolves to a
- directory. */
- else if (s == 0 && S_ISLNK (finfo.st_mode) &&
- stat (filename, &finfo) == 0 && S_ISDIR (finfo.st_mode))
- ;
-#endif
- else
- {
- if (rl_point == rl_end && temp_string_index)
- rl_insert_text (temp_string);
- }
- free (filename);
- }
- else
- {
- if (rl_point == rl_end && temp_string_index)
- rl_insert_text (temp_string);
- }
-
- return (temp_string_index);
-}
-
-static void
-insert_all_matches (matches, point, qc)
- char **matches;
- int point;
- char *qc;
-{
- int i;
- char *rp;
-
- rl_begin_undo_group ();
- /* remove any opening quote character; make_quoted_replacement will add
- it back. */
- if (qc && *qc && point && rl_line_buffer[point - 1] == *qc)
- point--;
- rl_delete_text (point, rl_point);
- rl_point = point;
-
- if (matches[1])
- {
- for (i = 1; matches[i]; i++)
- {
- rp = make_quoted_replacement (matches[i], SINGLE_MATCH, qc);
- rl_insert_text (rp);
- rl_insert_text (" ");
- if (rp != matches[i])
- free (rp);
- }
- }
- else
- {
- rp = make_quoted_replacement (matches[0], SINGLE_MATCH, qc);
- rl_insert_text (rp);
- rl_insert_text (" ");
- if (rp != matches[0])
- free (rp);
- }
- rl_end_undo_group ();
-}
-
-void
-_rl_free_match_list (matches)
- char **matches;
-{
- register int i;
-
- if (matches == 0)
- return;
-
- for (i = 0; matches[i]; i++)
- free (matches[i]);
- free (matches);
-}
-
-/* Complete the word at or before point.
- WHAT_TO_DO says what to do with the completion.
- `?' means list the possible completions.
- TAB means do standard completion.
- `*' means insert all of the possible completions.
- `!' means to do standard completion, and list all possible completions if
- there is more than one. */
-int
-rl_complete_internal (what_to_do)
- int what_to_do;
-{
- char **matches;
- rl_compentry_func_t *our_func;
- int start, end, delimiter, found_quote, i, nontrivial_lcd;
- char *text, *saved_line_buffer;
- char quote_char;
-
- RL_SETSTATE(RL_STATE_COMPLETING);
-
- set_completion_defaults (what_to_do);
-
- saved_line_buffer = rl_line_buffer ? savestring (rl_line_buffer) : (char *)NULL;
- our_func = rl_completion_entry_function
- ? rl_completion_entry_function
- : rl_filename_completion_function;
-
- /* We now look backwards for the start of a filename/variable word. */
- end = rl_point;
- found_quote = delimiter = 0;
- quote_char = '\0';
-
- if (rl_point)
- /* This (possibly) changes rl_point. If it returns a non-zero char,
- we know we have an open quote. */
- quote_char = _rl_find_completion_word (&found_quote, &delimiter);
-
- start = rl_point;
- rl_point = end;
-
- text = rl_copy_text (start, end);
- matches = gen_completion_matches (text, start, end, our_func, found_quote, quote_char);
- /* nontrivial_lcd is set if the common prefix adds something to the word
- being completed. */
- nontrivial_lcd = matches && strcmp (text, matches[0]) != 0;
- free (text);
-
- if (matches == 0)
- {
- rl_ding ();
- FREE (saved_line_buffer);
- completion_changed_buffer = 0;
- RL_UNSETSTATE(RL_STATE_COMPLETING);
- return (0);
- }
-
- /* If we are matching filenames, the attempted completion function will
- have set rl_filename_completion_desired to a non-zero value. The basic
- rl_filename_completion_function does this. */
- i = rl_filename_completion_desired;
-
- if (postprocess_matches (&matches, i) == 0)
- {
- rl_ding ();
- FREE (saved_line_buffer);
- completion_changed_buffer = 0;
- RL_UNSETSTATE(RL_STATE_COMPLETING);
- return (0);
- }
-
- switch (what_to_do)
- {
- case TAB:
- case '!':
- /* Insert the first match with proper quoting. */
- if (*matches[0])
- insert_match (matches[0], start, matches[1] ? MULT_MATCH : SINGLE_MATCH, &quote_char);
-
- /* If there are more matches, ring the bell to indicate.
- If we are in vi mode, Posix.2 says to not ring the bell.
- If the `show-all-if-ambiguous' variable is set, display
- all the matches immediately. Otherwise, if this was the
- only match, and we are hacking files, check the file to
- see if it was a directory. If so, and the `mark-directories'
- variable is set, add a '/' to the name. If not, and we
- are at the end of the line, then add a space. */
- if (matches[1])
- {
- if (what_to_do == '!')
- {
- display_matches (matches);
- break;
- }
- else if (rl_editing_mode != vi_mode)
- rl_ding (); /* There are other matches remaining. */
- }
- else
- append_to_match (matches[0], delimiter, quote_char, nontrivial_lcd);
-
- break;
-
- case '*':
- insert_all_matches (matches, start, &quote_char);
- break;
-
- case '?':
- display_matches (matches);
- break;
-
- default:
- fprintf (stderr, "\r\nreadline: bad value %d for what_to_do in rl_complete\n", what_to_do);
- rl_ding ();
- FREE (saved_line_buffer);
- RL_UNSETSTATE(RL_STATE_COMPLETING);
- return 1;
- }
-
- _rl_free_match_list (matches);
-
- /* Check to see if the line has changed through all of this manipulation. */
- if (saved_line_buffer)
- {
- completion_changed_buffer = strcmp (rl_line_buffer, saved_line_buffer) != 0;
- free (saved_line_buffer);
- }
-
- RL_UNSETSTATE(RL_STATE_COMPLETING);
- return 0;
-}
-
-/***************************************************************/
-/* */
-/* Application-callable completion match generator functions */
-/* */
-/***************************************************************/
-
-/* Return an array of (char *) which is a list of completions for TEXT.
- If there are no completions, return a NULL pointer.
- The first entry in the returned array is the substitution for TEXT.
- The remaining entries are the possible completions.
- The array is terminated with a NULL pointer.
-
- ENTRY_FUNCTION is a function of two args, and returns a (char *).
- The first argument is TEXT.
- The second is a state argument; it should be zero on the first call, and
- non-zero on subsequent calls. It returns a NULL pointer to the caller
- when there are no more matches.
- */
-char **
-rl_completion_matches (text, entry_function)
- const char *text;
- rl_compentry_func_t *entry_function;
-{
- /* Number of slots in match_list. */
- int match_list_size;
-
- /* The list of matches. */
- char **match_list;
-
- /* Number of matches actually found. */
- int matches;
-
- /* Temporary string binder. */
- char *string;
-
- matches = 0;
- match_list_size = 10;
- match_list = (char **)xmalloc ((match_list_size + 1) * sizeof (char *));
- match_list[1] = (char *)NULL;
-
- while (string = (*entry_function) (text, matches))
- {
- if (matches + 1 == match_list_size)
- match_list = (char **)xrealloc
- (match_list, ((match_list_size += 10) + 1) * sizeof (char *));
-
- match_list[++matches] = string;
- match_list[matches + 1] = (char *)NULL;
- }
-
- /* If there were any matches, then look through them finding out the
- lowest common denominator. That then becomes match_list[0]. */
- if (matches)
- compute_lcd_of_matches (match_list, matches, text);
- else /* There were no matches. */
- {
- free (match_list);
- match_list = (char **)NULL;
- }
- return (match_list);
-}
-
-/* A completion function for usernames.
- TEXT contains a partial username preceded by a random
- character (usually `~'). */
-char *
-rl_username_completion_function (text, state)
- const char *text;
- int state;
-{
-#if defined (__WIN32__) || defined (__OPENNT)
- return (char *)NULL;
-#else /* !__WIN32__ && !__OPENNT) */
- static char *username = (char *)NULL;
- static struct passwd *entry;
- static int namelen, first_char, first_char_loc;
- char *value;
-
- if (state == 0)
- {
- FREE (username);
-
- first_char = *text;
- first_char_loc = first_char == '~';
-
- username = savestring (&text[first_char_loc]);
- namelen = strlen (username);
- setpwent ();
- }
-
- while (entry = getpwent ())
- {
- /* Null usernames should result in all users as possible completions. */
- if (namelen == 0 || (STREQN (username, entry->pw_name, namelen)))
- break;
- }
-
- if (entry == 0)
- {
- endpwent ();
- return ((char *)NULL);
- }
- else
- {
- value = (char *)xmalloc (2 + strlen (entry->pw_name));
-
- *value = *text;
-
- strcpy (value + first_char_loc, entry->pw_name);
-
- if (first_char == '~')
- rl_filename_completion_desired = 1;
-
- return (value);
- }
-#endif /* !__WIN32__ && !__OPENNT */
-}
-
-/* Okay, now we write the entry_function for filename completion. In the
- general case. Note that completion in the shell is a little different
- because of all the pathnames that must be followed when looking up the
- completion for a command. */
-char *
-rl_filename_completion_function (text, state)
- const char *text;
- int state;
-{
- static DIR *directory = (DIR *)NULL;
- static char *filename = (char *)NULL;
- static char *dirname = (char *)NULL;
- static char *users_dirname = (char *)NULL;
- static int filename_len;
- char *temp;
- int dirlen;
- struct dirent *entry;
-
- /* If we don't have any state, then do some initialization. */
- if (state == 0)
- {
- /* If we were interrupted before closing the directory or reading
- all of its contents, close it. */
- if (directory)
- {
- closedir (directory);
- directory = (DIR *)NULL;
- }
- FREE (dirname);
- FREE (filename);
- FREE (users_dirname);
-
- filename = savestring (text);
- if (*text == 0)
- text = ".";
- dirname = savestring (text);
-
- temp = strrchr (dirname, '/');
-
-#if defined (__MSDOS__)
- /* special hack for //X/... */
- if (dirname[0] == '/' && dirname[1] == '/' && ISALPHA ((unsigned char)dirname[2]) && dirname[3] == '/')
- temp = strrchr (dirname + 3, '/');
-#endif
-
- if (temp)
- {
- strcpy (filename, ++temp);
- *temp = '\0';
- }
-#if defined (__MSDOS__)
- /* searches from current directory on the drive */
- else if (ISALPHA ((unsigned char)dirname[0]) && dirname[1] == ':')
- {
- strcpy (filename, dirname + 2);
- dirname[2] = '\0';
- }
-#endif
- else
- {
- dirname[0] = '.';
- dirname[1] = '\0';
- }
-
- /* We aren't done yet. We also support the "~user" syntax. */
-
- /* Save the version of the directory that the user typed. */
- users_dirname = savestring (dirname);
-
- if (*dirname == '~')
- {
- temp = tilde_expand (dirname);
- free (dirname);
- dirname = temp;
- }
-
- if (rl_directory_rewrite_hook)
- (*rl_directory_rewrite_hook) (&dirname);
-
- if (rl_directory_completion_hook && (*rl_directory_completion_hook) (&dirname))
- {
- free (users_dirname);
- users_dirname = savestring (dirname);
- }
-
- directory = opendir (dirname);
- filename_len = strlen (filename);
-
- rl_filename_completion_desired = 1;
- }
-
- /* At this point we should entertain the possibility of hacking wildcarded
- filenames, like /usr/man/man<WILD>/te<TAB>. If the directory name
- contains globbing characters, then build an array of directories, and
- then map over that list while completing. */
- /* *** UNIMPLEMENTED *** */
-
- /* Now that we have some state, we can read the directory. */
-
- entry = (struct dirent *)NULL;
- while (directory && (entry = readdir (directory)))
- {
- /* Special case for no filename. If the user has disabled the
- `match-hidden-files' variable, skip filenames beginning with `.'.
- All other entries except "." and ".." match. */
- if (filename_len == 0)
- {
- if (_rl_match_hidden_files == 0 && HIDDEN_FILE (entry->d_name))
- continue;
-
- if (entry->d_name[0] != '.' ||
- (entry->d_name[1] &&
- (entry->d_name[1] != '.' || entry->d_name[2])))
- break;
- }
- else
- {
- /* Otherwise, if these match up to the length of filename, then
- it is a match. */
- if (_rl_completion_case_fold)
- {
- if ((_rl_to_lower (entry->d_name[0]) == _rl_to_lower (filename[0])) &&
- (((int)D_NAMLEN (entry)) >= filename_len) &&
- (_rl_strnicmp (filename, entry->d_name, filename_len) == 0))
- break;
- }
- else
- {
- if ((entry->d_name[0] == filename[0]) &&
- (((int)D_NAMLEN (entry)) >= filename_len) &&
- (strncmp (filename, entry->d_name, filename_len) == 0))
- break;
- }
- }
- }
-
- if (entry == 0)
- {
- if (directory)
- {
- closedir (directory);
- directory = (DIR *)NULL;
- }
- if (dirname)
- {
- free (dirname);
- dirname = (char *)NULL;
- }
- if (filename)
- {
- free (filename);
- filename = (char *)NULL;
- }
- if (users_dirname)
- {
- free (users_dirname);
- users_dirname = (char *)NULL;
- }
-
- return (char *)NULL;
- }
- else
- {
- /* dirname && (strcmp (dirname, ".") != 0) */
- if (dirname && (dirname[0] != '.' || dirname[1]))
- {
- if (rl_complete_with_tilde_expansion && *users_dirname == '~')
- {
- dirlen = strlen (dirname);
- temp = (char *)xmalloc (2 + dirlen + D_NAMLEN (entry));
- strcpy (temp, dirname);
- /* Canonicalization cuts off any final slash present. We
- may need to add it back. */
- if (dirname[dirlen - 1] != '/')
- {
- temp[dirlen++] = '/';
- temp[dirlen] = '\0';
- }
- }
- else
- {
- dirlen = strlen (users_dirname);
- temp = (char *)xmalloc (2 + dirlen + D_NAMLEN (entry));
- strcpy (temp, users_dirname);
- /* Make sure that temp has a trailing slash here. */
- if (users_dirname[dirlen - 1] != '/')
- temp[dirlen++] = '/';
- }
-
- strcpy (temp + dirlen, entry->d_name);
- }
- else
- temp = savestring (entry->d_name);
-
- return (temp);
- }
-}
-
-/* An initial implementation of a menu completion function a la tcsh. The
- first time (if the last readline command was not rl_menu_complete), we
- generate the list of matches. This code is very similar to the code in
- rl_complete_internal -- there should be a way to combine the two. Then,
- for each item in the list of matches, we insert the match in an undoable
- fashion, with the appropriate character appended (this happens on the
- second and subsequent consecutive calls to rl_menu_complete). When we
- hit the end of the match list, we restore the original unmatched text,
- ring the bell, and reset the counter to zero. */
-int
-rl_menu_complete (count, ignore)
- int count, ignore;
-{
- rl_compentry_func_t *our_func;
- int matching_filenames, found_quote;
-
- static char *orig_text;
- static char **matches = (char **)0;
- static int match_list_index = 0;
- static int match_list_size = 0;
- static int orig_start, orig_end;
- static char quote_char;
- static int delimiter;
-
- /* The first time through, we generate the list of matches and set things
- up to insert them. */
- if (rl_last_func != rl_menu_complete)
- {
- /* Clean up from previous call, if any. */
- FREE (orig_text);
- if (matches)
- _rl_free_match_list (matches);
-
- match_list_index = match_list_size = 0;
- matches = (char **)NULL;
-
- /* Only the completion entry function can change these. */
- set_completion_defaults ('%');
-
- our_func = rl_completion_entry_function
- ? rl_completion_entry_function
- : rl_filename_completion_function;
-
- /* We now look backwards for the start of a filename/variable word. */
- orig_end = rl_point;
- found_quote = delimiter = 0;
- quote_char = '\0';
-
- if (rl_point)
- /* This (possibly) changes rl_point. If it returns a non-zero char,
- we know we have an open quote. */
- quote_char = _rl_find_completion_word (&found_quote, &delimiter);
-
- orig_start = rl_point;
- rl_point = orig_end;
-
- orig_text = rl_copy_text (orig_start, orig_end);
- matches = gen_completion_matches (orig_text, orig_start, orig_end,
- our_func, found_quote, quote_char);
-
- /* If we are matching filenames, the attempted completion function will
- have set rl_filename_completion_desired to a non-zero value. The basic
- rl_filename_completion_function does this. */
- matching_filenames = rl_filename_completion_desired;
-
- if (matches == 0 || postprocess_matches (&matches, matching_filenames) == 0)
- {
- rl_ding ();
- FREE (matches);
- matches = (char **)0;
- FREE (orig_text);
- orig_text = (char *)0;
- completion_changed_buffer = 0;
- return (0);
- }
-
- for (match_list_size = 0; matches[match_list_size]; match_list_size++)
- ;
- /* matches[0] is lcd if match_list_size > 1, but the circular buffer
- code below should take care of it. */
- }
-
- /* Now we have the list of matches. Replace the text between
- rl_line_buffer[orig_start] and rl_line_buffer[rl_point] with
- matches[match_list_index], and add any necessary closing char. */
-
- if (matches == 0 || match_list_size == 0)
- {
- rl_ding ();
- FREE (matches);
- matches = (char **)0;
- completion_changed_buffer = 0;
- return (0);
- }
-
- match_list_index = (match_list_index + count) % match_list_size;
- if (match_list_index < 0)
- match_list_index += match_list_size;
-
- if (match_list_index == 0 && match_list_size > 1)
- {
- rl_ding ();
- insert_match (orig_text, orig_start, MULT_MATCH, &quote_char);
- }
- else
- {
- insert_match (matches[match_list_index], orig_start, SINGLE_MATCH, &quote_char);
- append_to_match (matches[match_list_index], delimiter, quote_char,
- strcmp (orig_text, matches[match_list_index]));
- }
-
- completion_changed_buffer = 1;
- return (0);
-}
diff --git a/readline-4.3.orig/config.h.in b/readline-4.3.orig/config.h.in
deleted file mode 100644
index c53c2a1..0000000
--- a/readline-4.3.orig/config.h.in
+++ /dev/null
@@ -1,200 +0,0 @@
-/* config.h.in. Maintained by hand. */
-
-/* Define if on MINIX. */
-#undef _MINIX
-
-/* Define as the return type of signal handlers (int or void). */
-#undef RETSIGTYPE
-
-/* Characteristics of the compiler. */
-#undef const
-
-#undef size_t
-
-#undef ssize_t
-
-#undef PROTOTYPES
-
-#undef __CHAR_UNSIGNED__
-
-/* Define if the `S_IS*' macros in <sys/stat.h> do not work properly. */
-#undef STAT_MACROS_BROKEN
-
-#undef VOID_SIGHANDLER
-
-/* Define if you have the isascii function. */
-#undef HAVE_ISASCII
-
-/* Define if you have the isxdigit function. */
-#undef HAVE_ISXDIGIT
-
-/* Define if you have the lstat function. */
-#undef HAVE_LSTAT
-
-/* Define if you have the mbsrtowcs function. */
-#undef HAVE_MBSRTOWCS
-
-/* Define if you have the memmove function. */
-#undef HAVE_MEMMOVE
-
-/* Define if you have the putenv function. */
-#undef HAVE_PUTENV
-
-/* Define if you have the select function. */
-#undef HAVE_SELECT
-
-/* Define if you have the setenv function. */
-#undef HAVE_SETENV
-
-/* Define if you have the setlocale function. */
-#undef HAVE_SETLOCALE
-
-/* Define if you have the strcasecmp function. */
-#undef HAVE_STRCASECMP
-
-/* Define if you have the strcoll function. */
-#undef HAVE_STRCOLL
-
-#undef STRCOLL_BROKEN
-
-/* Define if you have the strpbrk function. */
-#undef HAVE_STRPBRK
-
-/* Define if you have the tcgetattr function. */
-#undef HAVE_TCGETATTR
-
-/* Define if you have the vsnprintf function. */
-#undef HAVE_VSNPRINTF
-
-/* Define if you have the wcwidth function. */
-#undef HAVE_WCWIDTH
-
-/* Define if you have the <dirent.h> header file. */
-#undef HAVE_DIRENT_H
-
-/* Define if you have the <langinfo.h> header file. */
-#undef HAVE_LANGINFO_H
-
-/* Define if you have the <limits.h> header file. */
-#undef HAVE_LIMITS_H
-
-/* Define if you have the <locale.h> header file. */
-#undef HAVE_LOCALE_H
-
-/* Define if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
-
-/* Define if you have the <ndir.h> header file. */
-#undef HAVE_NDIR_H
-
-/* Define if you have the <stdarg.h> header file. */
-#undef HAVE_STDARG_H
-
-/* Define if you have the <stdlib.h> header file. */
-#undef HAVE_STDLIB_H
-
-/* Define if you have the <string.h> header file. */
-#undef HAVE_STRING_H
-
-/* Define if you have the <strings.h> header file. */
-#undef HAVE_STRINGS_H
-
-/* Define if you have the <sys/dir.h> header file. */
-#undef HAVE_SYS_DIR_H
-
-/* Define if you have the <sys/file.h> header file. */
-#undef HAVE_SYS_FILE_H
-
-/* Define if you have the <sys/ndir.h> header file. */
-#undef HAVE_SYS_NDIR_H
-
-/* Define if you have the <sys/pte.h> header file. */
-#undef HAVE_SYS_PTE_H
-
-/* Define if you have the <sys/ptem.h> header file. */
-#undef HAVE_SYS_PTEM_H
-
-/* Define if you have the <sys/select.h> header file. */
-#undef HAVE_SYS_SELECT_H
-
-/* Define if you have the <sys/stream.h> header file. */
-#undef HAVE_SYS_STREAM_H
-
-/* Define if you have the <termcap.h> header file. */
-#undef HAVE_TERMCAP_H
-
-/* Define if you have the <termio.h> header file. */
-#undef HAVE_TERMIO_H
-
-/* Define if you have the <termios.h> header file. */
-#undef HAVE_TERMIOS_H
-
-/* Define if you have the <unistd.h> header file. */
-#undef HAVE_UNISTD_H
-
-/* Define if you have the <varargs.h> header file. */
-#undef HAVE_VARARGS_H
-
-/* Define if you have the <wchar.h> header file. */
-#undef HAVE_WCHAR_H
-
-/* Define if you have the <varargs.h> header file. */
-#undef HAVE_WCTYPE_H
-
-#undef HAVE_MBSTATE_T
-
-/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
-#undef HAVE_LANGINFO_CODESET
-
-/* Definitions pulled in from aclocal.m4. */
-#undef VOID_SIGHANDLER
-
-#undef GWINSZ_IN_SYS_IOCTL
-
-#undef STRUCT_WINSIZE_IN_SYS_IOCTL
-
-#undef STRUCT_WINSIZE_IN_TERMIOS
-
-#undef TIOCSTAT_IN_SYS_IOCTL
-
-#undef FIONREAD_IN_SYS_IOCTL
-
-#undef SPEED_T_IN_SYS_TYPES
-
-#undef HAVE_GETPW_DECLS
-
-#undef STRUCT_DIRENT_HAS_D_INO
-
-#undef STRUCT_DIRENT_HAS_D_FILENO
-
-#undef HAVE_BSD_SIGNALS
-
-#undef HAVE_POSIX_SIGNALS
-
-#undef HAVE_USG_SIGHOLD
-
-#undef MUST_REINSTALL_SIGHANDLERS
-
-#undef HAVE_POSIX_SIGSETJMP
-
-/* modify settings or make new ones based on what autoconf tells us. */
-
-/* Ultrix botches type-ahead when switching from canonical to
- non-canonical mode, at least through version 4.3 */
-#if !defined (HAVE_TERMIOS_H) || !defined (HAVE_TCGETATTR) || defined (ultrix)
-# define TERMIOS_MISSING
-#endif
-
-#if defined (STRCOLL_BROKEN)
-# undef HAVE_STRCOLL
-#endif
-
-#if defined (__STDC__) && defined (HAVE_STDARG_H)
-# define PREFER_STDARG
-# define USE_VARARGS
-#else
-# if defined (HAVE_VARARGS_H)
-# define PREFER_VARARGS
-# define USE_VARARGS
-# endif
-#endif
diff --git a/readline-4.3.orig/configure b/readline-4.3.orig/configure
deleted file mode 100755
index fc3769f..0000000
--- a/readline-4.3.orig/configure
+++ /dev/null
@@ -1,5865 +0,0 @@
-#! /bin/sh
-# From configure.in for Readline 4.3, version 2.45, from autoconf version 2.52.
-# Guess values for system-dependent variables and create Makefiles.
-# Generated by Autoconf 2.52 for readline 4.3.
-#
-# Report bugs to <bug-readline@gnu.org>.
-#
-# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
-# Free Software Foundation, Inc.
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
-
-# Be Bourne compatible
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
- emulate sh
- NULLCMD=:
-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
- set -o posix
-fi
-
-# Name of the executable.
-as_me=`echo "$0" |sed 's,.*[\\/],,'`
-
-if expr a : '\(a\)' >/dev/null 2>&1; then
- as_expr=expr
-else
- as_expr=false
-fi
-
-rm -f conf$$ conf$$.exe conf$$.file
-echo >conf$$.file
-if ln -s conf$$.file conf$$ 2>/dev/null; then
- # We could just check for DJGPP; but this test a) works b) is more generic
- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
- if test -f conf$$.exe; then
- # Don't use ln at all; we don't have any links
- as_ln_s='cp -p'
- else
- as_ln_s='ln -s'
- fi
-elif ln conf$$.file conf$$ 2>/dev/null; then
- as_ln_s=ln
-else
- as_ln_s='cp -p'
-fi
-rm -f conf$$ conf$$.exe conf$$.file
-
-as_executable_p="test -f"
-
-# Support unset when possible.
-if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
- as_unset=unset
-else
- as_unset=false
-fi
-
-# NLS nuisances.
-$as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; }
-$as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; }
-$as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; }
-$as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; }
-$as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; }
-$as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; }
-$as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; }
-$as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; }
-
-# IFS
-# We need space, tab and new line, in precisely that order.
-as_nl='
-'
-IFS=" $as_nl"
-
-# CDPATH.
-$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; }
-
-# Name of the host.
-# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
-# so uname gets run too.
-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
-
-exec 6>&1
-
-#
-# Initializations.
-#
-ac_default_prefix=/usr/local
-cross_compiling=no
-subdirs=
-MFLAGS= MAKEFLAGS=
-SHELL=${CONFIG_SHELL-/bin/sh}
-
-# Maximum number of lines to put in a shell here document.
-# This variable seems obsolete. It should probably be removed, and
-# only ac_max_sed_lines should be used.
-: ${ac_max_here_lines=38}
-
-ac_unique_file="readline.h"
-# Factoring default headers for most tests.
-ac_includes_default="\
-#include <stdio.h>
-#if HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#if HAVE_SYS_STAT_H
-# include <sys/stat.h>
-#endif
-#if STDC_HEADERS
-# include <stdlib.h>
-# include <stddef.h>
-#else
-# if HAVE_STDLIB_H
-# include <stdlib.h>
-# endif
-#endif
-#if HAVE_STRING_H
-# if !STDC_HEADERS && HAVE_MEMORY_H
-# include <memory.h>
-# endif
-# include <string.h>
-#endif
-#if HAVE_STRINGS_H
-# include <strings.h>
-#endif
-#if HAVE_INTTYPES_H
-# include <inttypes.h>
-#else
-# if HAVE_STDINT_H
-# include <stdint.h>
-# endif
-#endif
-#if HAVE_UNISTD_H
-# include <unistd.h>
-#endif"
-
-# Initialize some variables set by options.
-ac_init_help=
-ac_init_version=false
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-cache_file=/dev/null
-exec_prefix=NONE
-no_create=
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-verbose=
-x_includes=NONE
-x_libraries=NONE
-
-# Installation directory options.
-# These are left unexpanded so users can "make install exec_prefix=/foo"
-# and all the variables that are supposed to be based on exec_prefix
-# by default will actually change.
-# Use braces instead of parens because sh, perl, etc. also accept them.
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datadir='${prefix}/share'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-libdir='${exec_prefix}/lib'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-infodir='${prefix}/info'
-mandir='${prefix}/man'
-
-# Identity of this package.
-PACKAGE_NAME='readline'
-PACKAGE_TARNAME='readline'
-PACKAGE_VERSION='4.3'
-PACKAGE_STRING='readline 4.3'
-PACKAGE_BUGREPORT='bug-readline@gnu.org'
-
-ac_prev=
-for ac_option
-do
- # If the previous option needs an argument, assign it.
- if test -n "$ac_prev"; then
- eval "$ac_prev=\$ac_option"
- ac_prev=
- continue
- fi
-
- ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
-
- # Accept the important Cygnus configure options, so we can diagnose typos.
-
- case $ac_option in
-
- -bindir | --bindir | --bindi | --bind | --bin | --bi)
- ac_prev=bindir ;;
- -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
- bindir=$ac_optarg ;;
-
- -build | --build | --buil | --bui | --bu)
- ac_prev=build_alias ;;
- -build=* | --build=* | --buil=* | --bui=* | --bu=*)
- build_alias=$ac_optarg ;;
-
- -cache-file | --cache-file | --cache-fil | --cache-fi \
- | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
- ac_prev=cache_file ;;
- -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
- | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
- cache_file=$ac_optarg ;;
-
- --config-cache | -C)
- cache_file=config.cache ;;
-
- -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
- ac_prev=datadir ;;
- -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
- | --da=*)
- datadir=$ac_optarg ;;
-
- -disable-* | --disable-*)
- ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid feature name: $ac_feature" >&2
- { (exit 1); exit 1; }; }
- ac_feature=`echo $ac_feature | sed 's/-/_/g'`
- eval "enable_$ac_feature=no" ;;
-
- -enable-* | --enable-*)
- ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid feature name: $ac_feature" >&2
- { (exit 1); exit 1; }; }
- ac_feature=`echo $ac_feature | sed 's/-/_/g'`
- case $ac_option in
- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
- *) ac_optarg=yes ;;
- esac
- eval "enable_$ac_feature='$ac_optarg'" ;;
-
- -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
- | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
- | --exec | --exe | --ex)
- ac_prev=exec_prefix ;;
- -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
- | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
- | --exec=* | --exe=* | --ex=*)
- exec_prefix=$ac_optarg ;;
-
- -gas | --gas | --ga | --g)
- # Obsolete; use --with-gas.
- with_gas=yes ;;
-
- -help | --help | --hel | --he | -h)
- ac_init_help=long ;;
- -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
- ac_init_help=recursive ;;
- -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
- ac_init_help=short ;;
-
- -host | --host | --hos | --ho)
- ac_prev=host_alias ;;
- -host=* | --host=* | --hos=* | --ho=*)
- host_alias=$ac_optarg ;;
-
- -includedir | --includedir | --includedi | --included | --include \
- | --includ | --inclu | --incl | --inc)
- ac_prev=includedir ;;
- -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
- | --includ=* | --inclu=* | --incl=* | --inc=*)
- includedir=$ac_optarg ;;
-
- -infodir | --infodir | --infodi | --infod | --info | --inf)
- ac_prev=infodir ;;
- -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
- infodir=$ac_optarg ;;
-
- -libdir | --libdir | --libdi | --libd)
- ac_prev=libdir ;;
- -libdir=* | --libdir=* | --libdi=* | --libd=*)
- libdir=$ac_optarg ;;
-
- -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
- | --libexe | --libex | --libe)
- ac_prev=libexecdir ;;
- -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
- | --libexe=* | --libex=* | --libe=*)
- libexecdir=$ac_optarg ;;
-
- -localstatedir | --localstatedir | --localstatedi | --localstated \
- | --localstate | --localstat | --localsta | --localst \
- | --locals | --local | --loca | --loc | --lo)
- ac_prev=localstatedir ;;
- -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
- | --localstate=* | --localstat=* | --localsta=* | --localst=* \
- | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
- localstatedir=$ac_optarg ;;
-
- -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
- ac_prev=mandir ;;
- -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
- mandir=$ac_optarg ;;
-
- -nfp | --nfp | --nf)
- # Obsolete; use --without-fp.
- with_fp=no ;;
-
- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
- | --no-cr | --no-c)
- no_create=yes ;;
-
- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
- no_recursion=yes ;;
-
- -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
- | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
- | --oldin | --oldi | --old | --ol | --o)
- ac_prev=oldincludedir ;;
- -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
- | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
- | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
- oldincludedir=$ac_optarg ;;
-
- -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
- ac_prev=prefix ;;
- -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
- prefix=$ac_optarg ;;
-
- -program-prefix | --program-prefix | --program-prefi | --program-pref \
- | --program-pre | --program-pr | --program-p)
- ac_prev=program_prefix ;;
- -program-prefix=* | --program-prefix=* | --program-prefi=* \
- | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
- program_prefix=$ac_optarg ;;
-
- -program-suffix | --program-suffix | --program-suffi | --program-suff \
- | --program-suf | --program-su | --program-s)
- ac_prev=program_suffix ;;
- -program-suffix=* | --program-suffix=* | --program-suffi=* \
- | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
- program_suffix=$ac_optarg ;;
-
- -program-transform-name | --program-transform-name \
- | --program-transform-nam | --program-transform-na \
- | --program-transform-n | --program-transform- \
- | --program-transform | --program-transfor \
- | --program-transfo | --program-transf \
- | --program-trans | --program-tran \
- | --progr-tra | --program-tr | --program-t)
- ac_prev=program_transform_name ;;
- -program-transform-name=* | --program-transform-name=* \
- | --program-transform-nam=* | --program-transform-na=* \
- | --program-transform-n=* | --program-transform-=* \
- | --program-transform=* | --program-transfor=* \
- | --program-transfo=* | --program-transf=* \
- | --program-trans=* | --program-tran=* \
- | --progr-tra=* | --program-tr=* | --program-t=*)
- program_transform_name=$ac_optarg ;;
-
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil)
- silent=yes ;;
-
- -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
- ac_prev=sbindir ;;
- -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
- | --sbi=* | --sb=*)
- sbindir=$ac_optarg ;;
-
- -sharedstatedir | --sharedstatedir | --sharedstatedi \
- | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
- | --sharedst | --shareds | --shared | --share | --shar \
- | --sha | --sh)
- ac_prev=sharedstatedir ;;
- -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
- | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
- | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
- | --sha=* | --sh=*)
- sharedstatedir=$ac_optarg ;;
-
- -site | --site | --sit)
- ac_prev=site ;;
- -site=* | --site=* | --sit=*)
- site=$ac_optarg ;;
-
- -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
- ac_prev=srcdir ;;
- -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
- srcdir=$ac_optarg ;;
-
- -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
- | --syscon | --sysco | --sysc | --sys | --sy)
- ac_prev=sysconfdir ;;
- -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
- | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
- sysconfdir=$ac_optarg ;;
-
- -target | --target | --targe | --targ | --tar | --ta | --t)
- ac_prev=target_alias ;;
- -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
- target_alias=$ac_optarg ;;
-
- -v | -verbose | --verbose | --verbos | --verbo | --verb)
- verbose=yes ;;
-
- -version | --version | --versio | --versi | --vers | -V)
- ac_init_version=: ;;
-
- -with-* | --with-*)
- ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid package name: $ac_package" >&2
- { (exit 1); exit 1; }; }
- ac_package=`echo $ac_package| sed 's/-/_/g'`
- case $ac_option in
- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
- *) ac_optarg=yes ;;
- esac
- eval "with_$ac_package='$ac_optarg'" ;;
-
- -without-* | --without-*)
- ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid package name: $ac_package" >&2
- { (exit 1); exit 1; }; }
- ac_package=`echo $ac_package | sed 's/-/_/g'`
- eval "with_$ac_package=no" ;;
-
- --x)
- # Obsolete; use --with-x.
- with_x=yes ;;
-
- -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
- | --x-incl | --x-inc | --x-in | --x-i)
- ac_prev=x_includes ;;
- -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
- | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
- x_includes=$ac_optarg ;;
-
- -x-libraries | --x-libraries | --x-librarie | --x-librari \
- | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
- ac_prev=x_libraries ;;
- -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
- | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
- x_libraries=$ac_optarg ;;
-
- -*) { echo "$as_me: error: unrecognized option: $ac_option
-Try \`$0 --help' for more information." >&2
- { (exit 1); exit 1; }; }
- ;;
-
- *=*)
- ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
- # Reject names that are not valid shell variable names.
- expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
- { (exit 1); exit 1; }; }
- ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
- eval "$ac_envvar='$ac_optarg'"
- export $ac_envvar ;;
-
- *)
- # FIXME: should be removed in autoconf 3.0.
- echo "$as_me: WARNING: you should use --build, --host, --target" >&2
- expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
- echo "$as_me: WARNING: invalid host type: $ac_option" >&2
- : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
- ;;
-
- esac
-done
-
-if test -n "$ac_prev"; then
- ac_option=--`echo $ac_prev | sed 's/_/-/g'`
- { echo "$as_me: error: missing argument to $ac_option" >&2
- { (exit 1); exit 1; }; }
-fi
-
-# Be sure to have absolute paths.
-for ac_var in exec_prefix prefix
-do
- eval ac_val=$`echo $ac_var`
- case $ac_val in
- [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
- *) { echo "$as_me: error: expected an absolute path for --$ac_var: $ac_val" >&2
- { (exit 1); exit 1; }; };;
- esac
-done
-
-# Be sure to have absolute paths.
-for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
- localstatedir libdir includedir oldincludedir infodir mandir
-do
- eval ac_val=$`echo $ac_var`
- case $ac_val in
- [\\/$]* | ?:[\\/]* ) ;;
- *) { echo "$as_me: error: expected an absolute path for --$ac_var: $ac_val" >&2
- { (exit 1); exit 1; }; };;
- esac
-done
-
-# There might be people who depend on the old broken behavior: `$host'
-# used to hold the argument of --host etc.
-build=$build_alias
-host=$host_alias
-target=$target_alias
-
-# FIXME: should be removed in autoconf 3.0.
-if test "x$host_alias" != x; then
- if test "x$build_alias" = x; then
- cross_compiling=maybe
- echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
- If a cross compiler is detected then cross compile mode will be used." >&2
- elif test "x$build_alias" != "x$host_alias"; then
- cross_compiling=yes
- fi
-fi
-
-ac_tool_prefix=
-test -n "$host_alias" && ac_tool_prefix=$host_alias-
-
-test "$silent" = yes && exec 6>/dev/null
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
- ac_srcdir_defaulted=yes
- # Try the directory containing this script, then its parent.
- ac_prog=$0
- ac_confdir=`echo "$ac_prog" | sed 's%[\\/][^\\/][^\\/]*$%%'`
- test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
- srcdir=$ac_confdir
- if test ! -r $srcdir/$ac_unique_file; then
- srcdir=..
- fi
-else
- ac_srcdir_defaulted=no
-fi
-if test ! -r $srcdir/$ac_unique_file; then
- if test "$ac_srcdir_defaulted" = yes; then
- { echo "$as_me: error: cannot find sources in $ac_confdir or .." >&2
- { (exit 1); exit 1; }; }
- else
- { echo "$as_me: error: cannot find sources in $srcdir" >&2
- { (exit 1); exit 1; }; }
- fi
-fi
-srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
-ac_env_build_alias_set=${build_alias+set}
-ac_env_build_alias_value=$build_alias
-ac_cv_env_build_alias_set=${build_alias+set}
-ac_cv_env_build_alias_value=$build_alias
-ac_env_host_alias_set=${host_alias+set}
-ac_env_host_alias_value=$host_alias
-ac_cv_env_host_alias_set=${host_alias+set}
-ac_cv_env_host_alias_value=$host_alias
-ac_env_target_alias_set=${target_alias+set}
-ac_env_target_alias_value=$target_alias
-ac_cv_env_target_alias_set=${target_alias+set}
-ac_cv_env_target_alias_value=$target_alias
-ac_env_CC_set=${CC+set}
-ac_env_CC_value=$CC
-ac_cv_env_CC_set=${CC+set}
-ac_cv_env_CC_value=$CC
-ac_env_CFLAGS_set=${CFLAGS+set}
-ac_env_CFLAGS_value=$CFLAGS
-ac_cv_env_CFLAGS_set=${CFLAGS+set}
-ac_cv_env_CFLAGS_value=$CFLAGS
-ac_env_LDFLAGS_set=${LDFLAGS+set}
-ac_env_LDFLAGS_value=$LDFLAGS
-ac_cv_env_LDFLAGS_set=${LDFLAGS+set}
-ac_cv_env_LDFLAGS_value=$LDFLAGS
-ac_env_CPPFLAGS_set=${CPPFLAGS+set}
-ac_env_CPPFLAGS_value=$CPPFLAGS
-ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}
-ac_cv_env_CPPFLAGS_value=$CPPFLAGS
-ac_env_CPP_set=${CPP+set}
-ac_env_CPP_value=$CPP
-ac_cv_env_CPP_set=${CPP+set}
-ac_cv_env_CPP_value=$CPP
-
-#
-# Report the --help message.
-#
-if test "$ac_init_help" = "long"; then
- # Omit some internal or obsolete options to make the list less imposing.
- # This message is too long to be a string in the A/UX 3.1 sh.
- cat <<EOF
-\`configure' configures readline 4.3 to adapt to many kinds of systems.
-
-Usage: $0 [OPTION]... [VAR=VALUE]...
-
-To assign environment variables (e.g., CC, CFLAGS...), specify them as
-VAR=VALUE. See below for descriptions of some of the useful variables.
-
-Defaults for the options are specified in brackets.
-
-Configuration:
- -h, --help display this help and exit
- --help=short display options specific to this package
- --help=recursive display the short help of all the included packages
- -V, --version display version information and exit
- -q, --quiet, --silent do not print \`checking...' messages
- --cache-file=FILE cache test results in FILE [disabled]
- -C, --config-cache alias for \`--cache-file=config.cache'
- -n, --no-create do not create output files
- --srcdir=DIR find the sources in DIR [configure dir or \`..']
-
-EOF
-
- cat <<EOF
-Installation directories:
- --prefix=PREFIX install architecture-independent files in PREFIX
- [$ac_default_prefix]
- --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
- [PREFIX]
-
-By default, \`make install' will install all the files in
-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
-an installation prefix other than \`$ac_default_prefix' using \`--prefix',
-for instance \`--prefix=\$HOME'.
-
-For better control, use the options below.
-
-Fine tuning of the installation directories:
- --bindir=DIR user executables [EPREFIX/bin]
- --sbindir=DIR system admin executables [EPREFIX/sbin]
- --libexecdir=DIR program executables [EPREFIX/libexec]
- --datadir=DIR read-only architecture-independent data [PREFIX/share]
- --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
- --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
- --localstatedir=DIR modifiable single-machine data [PREFIX/var]
- --libdir=DIR object code libraries [EPREFIX/lib]
- --includedir=DIR C header files [PREFIX/include]
- --oldincludedir=DIR C header files for non-gcc [/usr/include]
- --infodir=DIR info documentation [PREFIX/info]
- --mandir=DIR man documentation [PREFIX/man]
-EOF
-
- cat <<\EOF
-
-System types:
- --build=BUILD configure for building on BUILD [guessed]
- --host=HOST build programs to run on HOST [BUILD]
-EOF
-fi
-
-if test -n "$ac_init_help"; then
- case $ac_init_help in
- short | recursive ) echo "Configuration of readline 4.3:";;
- esac
- cat <<\EOF
-
-Optional Features:
- --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
- --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
- --enable-shared build shared libraries [default=YES]
- --enable-static build static libraries [default=YES]
-
-Optional Packages:
- --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
- --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
- --with-curses use the curses library instead of the termcap
- library
-
-Some influential environment variables:
- CC C compiler command
- CFLAGS C compiler flags
- LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
- nonstandard directory <lib dir>
- CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have
- headers in a nonstandard directory <include dir>
- CPP C preprocessor
-
-Use these variables to override the choices made by `configure' or to help
-it to find libraries and programs with nonstandard names/locations.
-
-Report bugs to <bug-readline@gnu.org>.
-EOF
-fi
-
-if test "$ac_init_help" = "recursive"; then
- # If there are subdirs, report their specific --help.
- ac_popdir=`pwd`
- for ac_subdir in : $ac_subdirs_all; do test "x$ac_subdir" = x: && continue
- cd $ac_subdir
- # A "../" for each directory in /$ac_subdir.
- ac_dots=`echo $ac_subdir |
- sed 's,^\./,,;s,[^/]$,&/,;s,[^/]*/,../,g'`
-
- case $srcdir in
- .) # No --srcdir option. We are building in place.
- ac_sub_srcdir=$srcdir ;;
- [\\/]* | ?:[\\/]* ) # Absolute path.
- ac_sub_srcdir=$srcdir/$ac_subdir ;;
- *) # Relative path.
- ac_sub_srcdir=$ac_dots$srcdir/$ac_subdir ;;
- esac
-
- # Check for guested configure; otherwise get Cygnus style configure.
- if test -f $ac_sub_srcdir/configure.gnu; then
- echo
- $SHELL $ac_sub_srcdir/configure.gnu --help=recursive
- elif test -f $ac_sub_srcdir/configure; then
- echo
- $SHELL $ac_sub_srcdir/configure --help=recursive
- elif test -f $ac_sub_srcdir/configure.ac ||
- test -f $ac_sub_srcdir/configure.in; then
- echo
- $ac_configure --help
- else
- echo "$as_me: WARNING: no configuration information is in $ac_subdir" >&2
- fi
- cd $ac_popdir
- done
-fi
-
-test -n "$ac_init_help" && exit 0
-if $ac_init_version; then
- cat <<\EOF
-readline configure 4.3
-generated by GNU Autoconf 2.52
-
-Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
-Free Software Foundation, Inc.
-This configure script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it.
-EOF
- exit 0
-fi
-exec 5>config.log
-cat >&5 <<EOF
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-
-It was created by readline $as_me 4.3, which was
-generated by GNU Autoconf 2.52. Invocation command line was
-
- $ $0 $@
-
-EOF
-{
-cat <<_ASUNAME
-## ---------- ##
-## Platform. ##
-## ---------- ##
-
-hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
-/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
-
-/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
-/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
-hostinfo = `(hostinfo) 2>/dev/null || echo unknown`
-/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
-/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
-/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
-
-PATH = $PATH
-
-_ASUNAME
-} >&5
-
-cat >&5 <<EOF
-## ------------ ##
-## Core tests. ##
-## ------------ ##
-
-EOF
-
-# Keep a trace of the command line.
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Also quote any args containing shell meta-characters.
-ac_configure_args=
-ac_sep=
-for ac_arg
-do
- case $ac_arg in
- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
- | --no-cr | --no-c) ;;
- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
- ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"`
- ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
- ac_sep=" " ;;
- *) ac_configure_args="$ac_configure_args$ac_sep$ac_arg"
- ac_sep=" " ;;
- esac
- # Get rid of the leading space.
-done
-
-# When interrupted or exit'd, cleanup temporary files, and complete
-# config.log. We remove comments because anyway the quotes in there
-# would cause problems or look ugly.
-trap 'exit_status=$?
- # Save into config.log some information that might help in debugging.
- echo >&5
- echo "## ----------------- ##" >&5
- echo "## Cache variables. ##" >&5
- echo "## ----------------- ##" >&5
- echo >&5
- # The following way of writing the cache mishandles newlines in values,
-{
- (set) 2>&1 |
- case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
- *ac_space=\ *)
- sed -n \
- "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
- ;;
- *)
- sed -n \
- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
- ;;
- esac;
-} >&5
- sed "/^$/d" confdefs.h >conftest.log
- if test -s conftest.log; then
- echo >&5
- echo "## ------------ ##" >&5
- echo "## confdefs.h. ##" >&5
- echo "## ------------ ##" >&5
- echo >&5
- cat conftest.log >&5
- fi
- (echo; echo) >&5
- test "$ac_signal" != 0 &&
- echo "$as_me: caught signal $ac_signal" >&5
- echo "$as_me: exit $exit_status" >&5
- rm -rf conftest* confdefs* core core.* *.core conf$$* $ac_clean_files &&
- exit $exit_status
- ' 0
-for ac_signal in 1 2 13 15; do
- trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
-done
-ac_signal=0
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -rf conftest* confdefs.h
-# AIX cpp loses on an empty file, so make sure it contains at least a newline.
-echo >confdefs.h
-
-# Let the site file select an alternate cache file if it wants to.
-# Prefer explicitly selected file to automatically selected ones.
-if test -z "$CONFIG_SITE"; then
- if test "x$prefix" != xNONE; then
- CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
- else
- CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
- fi
-fi
-for ac_site_file in $CONFIG_SITE; do
- if test -r "$ac_site_file"; then
- { echo "$as_me:879: loading site script $ac_site_file" >&5
-echo "$as_me: loading site script $ac_site_file" >&6;}
- cat "$ac_site_file" >&5
- . "$ac_site_file"
- fi
-done
-
-if test -r "$cache_file"; then
- # Some versions of bash will fail to source /dev/null (special
- # files actually), so we avoid doing that.
- if test -f "$cache_file"; then
- { echo "$as_me:890: loading cache $cache_file" >&5
-echo "$as_me: loading cache $cache_file" >&6;}
- case $cache_file in
- [\\/]* | ?:[\\/]* ) . $cache_file;;
- *) . ./$cache_file;;
- esac
- fi
-else
- { echo "$as_me:898: creating cache $cache_file" >&5
-echo "$as_me: creating cache $cache_file" >&6;}
- >$cache_file
-fi
-
-# Check that the precious variables saved in the cache have kept the same
-# value.
-ac_cache_corrupted=false
-for ac_var in `(set) 2>&1 |
- sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
- eval ac_old_set=\$ac_cv_env_${ac_var}_set
- eval ac_new_set=\$ac_env_${ac_var}_set
- eval ac_old_val="\$ac_cv_env_${ac_var}_value"
- eval ac_new_val="\$ac_env_${ac_var}_value"
- case $ac_old_set,$ac_new_set in
- set,)
- { echo "$as_me:914: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
- ac_cache_corrupted=: ;;
- ,set)
- { echo "$as_me:918: error: \`$ac_var' was not set in the previous run" >&5
-echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
- ac_cache_corrupted=: ;;
- ,);;
- *)
- if test "x$ac_old_val" != "x$ac_new_val"; then
- { echo "$as_me:924: error: \`$ac_var' has changed since the previous run:" >&5
-echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
- { echo "$as_me:926: former value: $ac_old_val" >&5
-echo "$as_me: former value: $ac_old_val" >&2;}
- { echo "$as_me:928: current value: $ac_new_val" >&5
-echo "$as_me: current value: $ac_new_val" >&2;}
- ac_cache_corrupted=:
- fi;;
- esac
- # Pass precious variables to config.status. It doesn't matter if
- # we pass some twice (in addition to the command line arguments).
- if test "$ac_new_set" = set; then
- case $ac_new_val in
- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
- ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"`
- ac_configure_args="$ac_configure_args '$ac_arg'"
- ;;
- *) ac_configure_args="$ac_configure_args $ac_var=$ac_new_val"
- ;;
- esac
- fi
-done
-if $ac_cache_corrupted; then
- { echo "$as_me:947: error: changes in the environment can compromise the build" >&5
-echo "$as_me: error: changes in the environment can compromise the build" >&2;}
- { { echo "$as_me:949: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
-echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
- { (exit 1); exit 1; }; }
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
- *c*,-n*) ECHO_N= ECHO_C='
-' ECHO_T=' ' ;;
- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
- *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
-esac
-echo "#! $SHELL" >conftest.sh
-echo "exit 0" >>conftest.sh
-chmod +x conftest.sh
-if { (echo "$as_me:969: PATH=\".;.\"; conftest.sh") >&5
- (PATH=".;."; conftest.sh) 2>&5
- ac_status=$?
- echo "$as_me:972: \$? = $ac_status" >&5
- (exit $ac_status); }; then
- ac_path_separator=';'
-else
- ac_path_separator=:
-fi
-PATH_SEPARATOR="$ac_path_separator"
-rm -f conftest.sh
-
-ac_aux_dir=
-for ac_dir in ./support $srcdir/./support; do
- if test -f $ac_dir/install-sh; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install-sh -c"
- break
- elif test -f $ac_dir/install.sh; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install.sh -c"
- break
- elif test -f $ac_dir/shtool; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/shtool install -c"
- break
- fi
-done
-if test -z "$ac_aux_dir"; then
- { { echo "$as_me:998: error: cannot find install-sh or install.sh in ./support $srcdir/./support" >&5
-echo "$as_me: error: cannot find install-sh or install.sh in ./support $srcdir/./support" >&2;}
- { (exit 1); exit 1; }; }
-fi
-ac_config_guess="$SHELL $ac_aux_dir/config.guess"
-ac_config_sub="$SHELL $ac_aux_dir/config.sub"
-ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
-
-ac_config_headers="$ac_config_headers config.h"
-
-LIBVERSION=4.3
-
-# Make sure we can run config.sub.
-$ac_config_sub sun4 >/dev/null 2>&1 ||
- { { echo "$as_me:1012: error: cannot run $ac_config_sub" >&5
-echo "$as_me: error: cannot run $ac_config_sub" >&2;}
- { (exit 1); exit 1; }; }
-
-echo "$as_me:1016: checking build system type" >&5
-echo $ECHO_N "checking build system type... $ECHO_C" >&6
-if test "${ac_cv_build+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_cv_build_alias=$build_alias
-test -z "$ac_cv_build_alias" &&
- ac_cv_build_alias=`$ac_config_guess`
-test -z "$ac_cv_build_alias" &&
- { { echo "$as_me:1025: error: cannot guess build type; you must specify one" >&5
-echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
- { (exit 1); exit 1; }; }
-ac_cv_build=`$ac_config_sub $ac_cv_build_alias` ||
- { { echo "$as_me:1029: error: $ac_config_sub $ac_cv_build_alias failed." >&5
-echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed." >&2;}
- { (exit 1); exit 1; }; }
-
-fi
-echo "$as_me:1034: result: $ac_cv_build" >&5
-echo "${ECHO_T}$ac_cv_build" >&6
-build=$ac_cv_build
-build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-
-echo "$as_me:1041: checking host system type" >&5
-echo $ECHO_N "checking host system type... $ECHO_C" >&6
-if test "${ac_cv_host+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_cv_host_alias=$host_alias
-test -z "$ac_cv_host_alias" &&
- ac_cv_host_alias=$ac_cv_build_alias
-ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
- { { echo "$as_me:1050: error: $ac_config_sub $ac_cv_host_alias failed" >&5
-echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
- { (exit 1); exit 1; }; }
-
-fi
-echo "$as_me:1055: result: $ac_cv_host" >&5
-echo "${ECHO_T}$ac_cv_host" >&6
-host=$ac_cv_host
-host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-
-opt_curses=no
-
-# Check whether --with-curses or --without-curses was given.
-if test "${with_curses+set}" = set; then
- withval="$with_curses"
- opt_curses=$withval
-fi;
-
-if test "$opt_curses" = "yes"; then
- prefer_curses=yes
-fi
-
-opt_static_libs=yes
-opt_shared_libs=yes
-
-# Check whether --enable-shared or --disable-shared was given.
-if test "${enable_shared+set}" = set; then
- enableval="$enable_shared"
- opt_shared_libs=$enableval
-fi;
-# Check whether --enable-static or --disable-static was given.
-if test "${enable_static+set}" = set; then
- enableval="$enable_static"
- opt_static_libs=$enableval
-fi;
-
-echo ""
-echo "Beginning configuration for readline-$LIBVERSION for ${host_cpu}-${host_vendor}-${host_os}"
-echo ""
-
-# We want these before the checks, so the checks can modify their values.
-test -z "$CFLAGS" && CFLAGS=-g auto_cflags=1
-
-echo "$as_me:1095: checking whether ${MAKE-make} sets \${MAKE}" >&5
-echo $ECHO_N "checking whether ${MAKE-make} sets \${MAKE}... $ECHO_C" >&6
-set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'`
-if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.make <<\EOF
-all:
- @echo 'ac_maketemp="${MAKE}"'
-EOF
-# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
-eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=`
-if test -n "$ac_maketemp"; then
- eval ac_cv_prog_make_${ac_make}_set=yes
-else
- eval ac_cv_prog_make_${ac_make}_set=no
-fi
-rm -f conftest.make
-fi
-if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
- echo "$as_me:1115: result: yes" >&5
-echo "${ECHO_T}yes" >&6
- SET_MAKE=
-else
- echo "$as_me:1119: result: no" >&5
-echo "${ECHO_T}no" >&6
- SET_MAKE="MAKE=${MAKE-make}"
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}gcc; ac_word=$2
-echo "$as_me:1132: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
- ac_save_IFS=$IFS; IFS=$ac_path_separator
-ac_dummy="$PATH"
-for ac_dir in $ac_dummy; do
- IFS=$ac_save_IFS
- test -z "$ac_dir" && ac_dir=.
- $as_executable_p "$ac_dir/$ac_word" || continue
-ac_cv_prog_CC="${ac_tool_prefix}gcc"
-echo "$as_me:1147: found $ac_dir/$ac_word" >&5
-break
-done
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- echo "$as_me:1155: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6
-else
- echo "$as_me:1158: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-fi
-if test -z "$ac_cv_prog_CC"; then
- ac_ct_CC=$CC
- # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-echo "$as_me:1167: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$ac_ct_CC"; then
- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
- ac_save_IFS=$IFS; IFS=$ac_path_separator
-ac_dummy="$PATH"
-for ac_dir in $ac_dummy; do
- IFS=$ac_save_IFS
- test -z "$ac_dir" && ac_dir=.
- $as_executable_p "$ac_dir/$ac_word" || continue
-ac_cv_prog_ac_ct_CC="gcc"
-echo "$as_me:1182: found $ac_dir/$ac_word" >&5
-break
-done
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
- echo "$as_me:1190: result: $ac_ct_CC" >&5
-echo "${ECHO_T}$ac_ct_CC" >&6
-else
- echo "$as_me:1193: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- CC=$ac_ct_CC
-else
- CC="$ac_cv_prog_CC"
-fi
-
-if test -z "$CC"; then
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}cc; ac_word=$2
-echo "$as_me:1206: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
- ac_save_IFS=$IFS; IFS=$ac_path_separator
-ac_dummy="$PATH"
-for ac_dir in $ac_dummy; do
- IFS=$ac_save_IFS
- test -z "$ac_dir" && ac_dir=.
- $as_executable_p "$ac_dir/$ac_word" || continue
-ac_cv_prog_CC="${ac_tool_prefix}cc"
-echo "$as_me:1221: found $ac_dir/$ac_word" >&5
-break
-done
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- echo "$as_me:1229: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6
-else
- echo "$as_me:1232: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-fi
-if test -z "$ac_cv_prog_CC"; then
- ac_ct_CC=$CC
- # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-echo "$as_me:1241: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$ac_ct_CC"; then
- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
- ac_save_IFS=$IFS; IFS=$ac_path_separator
-ac_dummy="$PATH"
-for ac_dir in $ac_dummy; do
- IFS=$ac_save_IFS
- test -z "$ac_dir" && ac_dir=.
- $as_executable_p "$ac_dir/$ac_word" || continue
-ac_cv_prog_ac_ct_CC="cc"
-echo "$as_me:1256: found $ac_dir/$ac_word" >&5
-break
-done
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
- echo "$as_me:1264: result: $ac_ct_CC" >&5
-echo "${ECHO_T}$ac_ct_CC" >&6
-else
- echo "$as_me:1267: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- CC=$ac_ct_CC
-else
- CC="$ac_cv_prog_CC"
-fi
-
-fi
-if test -z "$CC"; then
- # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-echo "$as_me:1280: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
- ac_prog_rejected=no
- ac_save_IFS=$IFS; IFS=$ac_path_separator
-ac_dummy="$PATH"
-for ac_dir in $ac_dummy; do
- IFS=$ac_save_IFS
- test -z "$ac_dir" && ac_dir=.
- $as_executable_p "$ac_dir/$ac_word" || continue
-if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
- ac_prog_rejected=yes
- continue
-fi
-ac_cv_prog_CC="cc"
-echo "$as_me:1300: found $ac_dir/$ac_word" >&5
-break
-done
-
-if test $ac_prog_rejected = yes; then
- # We found a bogon in the path, so make sure we never use it.
- set dummy $ac_cv_prog_CC
- shift
- if test $# != 0; then
- # We chose a different compiler from the bogus one.
- # However, it has the same basename, so the bogon will be chosen
- # first if we set CC to just the basename; use the full file name.
- shift
- set dummy "$ac_dir/$ac_word" ${1+"$@"}
- shift
- ac_cv_prog_CC="$@"
- fi
-fi
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- echo "$as_me:1322: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6
-else
- echo "$as_me:1325: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-fi
-if test -z "$CC"; then
- if test -n "$ac_tool_prefix"; then
- for ac_prog in cl
- do
- # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-echo "$as_me:1336: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
- ac_save_IFS=$IFS; IFS=$ac_path_separator
-ac_dummy="$PATH"
-for ac_dir in $ac_dummy; do
- IFS=$ac_save_IFS
- test -z "$ac_dir" && ac_dir=.
- $as_executable_p "$ac_dir/$ac_word" || continue
-ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-echo "$as_me:1351: found $ac_dir/$ac_word" >&5
-break
-done
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- echo "$as_me:1359: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6
-else
- echo "$as_me:1362: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- test -n "$CC" && break
- done
-fi
-if test -z "$CC"; then
- ac_ct_CC=$CC
- for ac_prog in cl
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo "$as_me:1375: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$ac_ct_CC"; then
- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
- ac_save_IFS=$IFS; IFS=$ac_path_separator
-ac_dummy="$PATH"
-for ac_dir in $ac_dummy; do
- IFS=$ac_save_IFS
- test -z "$ac_dir" && ac_dir=.
- $as_executable_p "$ac_dir/$ac_word" || continue
-ac_cv_prog_ac_ct_CC="$ac_prog"
-echo "$as_me:1390: found $ac_dir/$ac_word" >&5
-break
-done
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
- echo "$as_me:1398: result: $ac_ct_CC" >&5
-echo "${ECHO_T}$ac_ct_CC" >&6
-else
- echo "$as_me:1401: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- test -n "$ac_ct_CC" && break
-done
-
- CC=$ac_ct_CC
-fi
-
-fi
-
-test -z "$CC" && { { echo "$as_me:1413: error: no acceptable cc found in \$PATH" >&5
-echo "$as_me: error: no acceptable cc found in \$PATH" >&2;}
- { (exit 1); exit 1; }; }
-
-# Provide some information about the compiler.
-echo "$as_me:1418:" \
- "checking for C compiler version" >&5
-ac_compiler=`set X $ac_compile; echo $2`
-{ (eval echo "$as_me:1421: \"$ac_compiler --version </dev/null >&5\"") >&5
- (eval $ac_compiler --version </dev/null >&5) 2>&5
- ac_status=$?
- echo "$as_me:1424: \$? = $ac_status" >&5
- (exit $ac_status); }
-{ (eval echo "$as_me:1426: \"$ac_compiler -v </dev/null >&5\"") >&5
- (eval $ac_compiler -v </dev/null >&5) 2>&5
- ac_status=$?
- echo "$as_me:1429: \$? = $ac_status" >&5
- (exit $ac_status); }
-{ (eval echo "$as_me:1431: \"$ac_compiler -V </dev/null >&5\"") >&5
- (eval $ac_compiler -V </dev/null >&5) 2>&5
- ac_status=$?
- echo "$as_me:1434: \$? = $ac_status" >&5
- (exit $ac_status); }
-
-cat >conftest.$ac_ext <<_ACEOF
-#line 1438 "configure"
-#include "confdefs.h"
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files a.out a.exe"
-# Try to create an executable without -o first, disregard a.out.
-# It will help us diagnose broken compilers, and finding out an intuition
-# of exeext.
-echo "$as_me:1454: checking for C compiler default output" >&5
-echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6
-ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
-if { (eval echo "$as_me:1457: \"$ac_link_default\"") >&5
- (eval $ac_link_default) 2>&5
- ac_status=$?
- echo "$as_me:1460: \$? = $ac_status" >&5
- (exit $ac_status); }; then
- # Find the output, starting from the most likely. This scheme is
-# not robust to junk in `.', hence go to wildcards (a.*) only as a last
-# resort.
-for ac_file in `ls a.exe conftest.exe 2>/dev/null;
- ls a.out conftest 2>/dev/null;
- ls a.* conftest.* 2>/dev/null`; do
- case $ac_file in
- *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;;
- a.out ) # We found the default executable, but exeext='' is most
- # certainly right.
- break;;
- *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
- # FIXME: I believe we export ac_cv_exeext for Libtool --akim.
- export ac_cv_exeext
- break;;
- * ) break;;
- esac
-done
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-{ { echo "$as_me:1483: error: C compiler cannot create executables" >&5
-echo "$as_me: error: C compiler cannot create executables" >&2;}
- { (exit 77); exit 77; }; }
-fi
-
-ac_exeext=$ac_cv_exeext
-echo "$as_me:1489: result: $ac_file" >&5
-echo "${ECHO_T}$ac_file" >&6
-
-# Check the compiler produces executables we can run. If not, either
-# the compiler is broken, or we cross compile.
-echo "$as_me:1494: checking whether the C compiler works" >&5
-echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6
-# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
-# If not cross compiling, check that we can run a simple program.
-if test "$cross_compiling" != yes; then
- if { ac_try='./$ac_file'
- { (eval echo "$as_me:1500: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:1503: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cross_compiling=no
- else
- if test "$cross_compiling" = maybe; then
- cross_compiling=yes
- else
- { { echo "$as_me:1510: error: cannot run C compiled programs.
-If you meant to cross compile, use \`--host'." >&5
-echo "$as_me: error: cannot run C compiled programs.
-If you meant to cross compile, use \`--host'." >&2;}
- { (exit 1); exit 1; }; }
- fi
- fi
-fi
-echo "$as_me:1518: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-
-rm -f a.out a.exe conftest$ac_cv_exeext
-ac_clean_files=$ac_clean_files_save
-# Check the compiler produces executables we can run. If not, either
-# the compiler is broken, or we cross compile.
-echo "$as_me:1525: checking whether we are cross compiling" >&5
-echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
-echo "$as_me:1527: result: $cross_compiling" >&5
-echo "${ECHO_T}$cross_compiling" >&6
-
-echo "$as_me:1530: checking for executable suffix" >&5
-echo $ECHO_N "checking for executable suffix... $ECHO_C" >&6
-if { (eval echo "$as_me:1532: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:1535: \$? = $ac_status" >&5
- (exit $ac_status); }; then
- # If both `conftest.exe' and `conftest' are `present' (well, observable)
-# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
-# work properly (i.e., refer to `conftest.exe'), while it won't with
-# `rm'.
-for ac_file in `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do
- case $ac_file in
- *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;;
- *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
- export ac_cv_exeext
- break;;
- * ) break;;
- esac
-done
-else
- { { echo "$as_me:1551: error: cannot compute EXEEXT: cannot compile and link" >&5
-echo "$as_me: error: cannot compute EXEEXT: cannot compile and link" >&2;}
- { (exit 1); exit 1; }; }
-fi
-
-rm -f conftest$ac_cv_exeext
-echo "$as_me:1557: result: $ac_cv_exeext" >&5
-echo "${ECHO_T}$ac_cv_exeext" >&6
-
-rm -f conftest.$ac_ext
-EXEEXT=$ac_cv_exeext
-ac_exeext=$EXEEXT
-echo "$as_me:1563: checking for object suffix" >&5
-echo $ECHO_N "checking for object suffix... $ECHO_C" >&6
-if test "${ac_cv_objext+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 1569 "configure"
-#include "confdefs.h"
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.o conftest.obj
-if { (eval echo "$as_me:1581: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:1584: \$? = $ac_status" >&5
- (exit $ac_status); }; then
- for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
- case $ac_file in
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb ) ;;
- *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
- break;;
- esac
-done
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-{ { echo "$as_me:1596: error: cannot compute OBJEXT: cannot compile" >&5
-echo "$as_me: error: cannot compute OBJEXT: cannot compile" >&2;}
- { (exit 1); exit 1; }; }
-fi
-
-rm -f conftest.$ac_cv_objext conftest.$ac_ext
-fi
-echo "$as_me:1603: result: $ac_cv_objext" >&5
-echo "${ECHO_T}$ac_cv_objext" >&6
-OBJEXT=$ac_cv_objext
-ac_objext=$OBJEXT
-echo "$as_me:1607: checking whether we are using the GNU C compiler" >&5
-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
-if test "${ac_cv_c_compiler_gnu+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 1613 "configure"
-#include "confdefs.h"
-
-int
-main ()
-{
-#ifndef __GNUC__
- choke me
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:1628: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:1631: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:1634: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:1637: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_compiler_gnu=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_compiler_gnu=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
-fi
-echo "$as_me:1649: result: $ac_cv_c_compiler_gnu" >&5
-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
-GCC=`test $ac_compiler_gnu = yes && echo yes`
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-CFLAGS="-g"
-echo "$as_me:1655: checking whether $CC accepts -g" >&5
-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
-if test "${ac_cv_prog_cc_g+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 1661 "configure"
-#include "confdefs.h"
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:1673: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:1676: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:1679: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:1682: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_prog_cc_g=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_prog_cc_g=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:1692: result: $ac_cv_prog_cc_g" >&5
-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
-if test "$ac_test_CFLAGS" = set; then
- CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
- if test "$GCC" = yes; then
- CFLAGS="-g -O2"
- else
- CFLAGS="-g"
- fi
-else
- if test "$GCC" = yes; then
- CFLAGS="-O2"
- else
- CFLAGS=
- fi
-fi
-# Some people use a C++ compiler to compile C. Since we use `exit',
-# in C++ we need to declare it. In case someone uses the same compiler
-# for both compiling C and C++ we need to have the C++ compiler decide
-# the declaration of exit, since it's the most demanding environment.
-cat >conftest.$ac_ext <<_ACEOF
-#ifndef __cplusplus
- choke me
-#endif
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:1719: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:1722: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:1725: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:1728: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- for ac_declaration in \
- ''\
- '#include <stdlib.h>' \
- 'extern "C" void std::exit (int) throw (); using std::exit;' \
- 'extern "C" void std::exit (int); using std::exit;' \
- 'extern "C" void exit (int) throw ();' \
- 'extern "C" void exit (int);' \
- 'void exit (int);'
-do
- cat >conftest.$ac_ext <<_ACEOF
-#line 1740 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-$ac_declaration
-int
-main ()
-{
-exit (42);
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:1753: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:1756: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:1759: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:1762: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- :
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-continue
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
- cat >conftest.$ac_ext <<_ACEOF
-#line 1772 "configure"
-#include "confdefs.h"
-$ac_declaration
-int
-main ()
-{
-exit (42);
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:1784: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:1787: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:1790: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:1793: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- break
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-done
-rm -f conftest*
-if test -n "$ac_declaration"; then
- echo '#ifdef __cplusplus' >>confdefs.h
- echo $ac_declaration >>confdefs.h
- echo '#endif' >>confdefs.h
-fi
-
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-echo "$as_me:1825: checking how to run the C preprocessor" >&5
-echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
- CPP=
-fi
-if test -z "$CPP"; then
- if test "${ac_cv_prog_CPP+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- # Double quotes because CPP needs to be expanded
- for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
- do
- ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
- # Use a header file that comes with gcc, so configuring glibc
- # with a fresh cross-compiler works.
- # On the NeXT, cc -E runs the code through the compiler's parser,
- # not just through cpp. "Syntax error" is here to catch this case.
- cat >conftest.$ac_ext <<_ACEOF
-#line 1846 "configure"
-#include "confdefs.h"
-#include <assert.h>
- Syntax error
-_ACEOF
-if { (eval echo "$as_me:1851: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:1857: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- :
-else
- echo "$as_me: failed program was:" >&5
- cat conftest.$ac_ext >&5
- # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.$ac_ext
-
- # OK, works on sane cases. Now check whether non-existent headers
- # can be detected and how.
- cat >conftest.$ac_ext <<_ACEOF
-#line 1880 "configure"
-#include "confdefs.h"
-#include <ac_nonexistent.h>
-_ACEOF
-if { (eval echo "$as_me:1884: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:1890: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- # Broken: success on invalid input.
-continue
-else
- echo "$as_me: failed program was:" >&5
- cat conftest.$ac_ext >&5
- # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then
- break
-fi
-
- done
- ac_cv_prog_CPP=$CPP
-
-fi
- CPP=$ac_cv_prog_CPP
-else
- ac_cv_prog_CPP=$CPP
-fi
-echo "$as_me:1927: result: $CPP" >&5
-echo "${ECHO_T}$CPP" >&6
-ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
- # Use a header file that comes with gcc, so configuring glibc
- # with a fresh cross-compiler works.
- # On the NeXT, cc -E runs the code through the compiler's parser,
- # not just through cpp. "Syntax error" is here to catch this case.
- cat >conftest.$ac_ext <<_ACEOF
-#line 1937 "configure"
-#include "confdefs.h"
-#include <assert.h>
- Syntax error
-_ACEOF
-if { (eval echo "$as_me:1942: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:1948: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- :
-else
- echo "$as_me: failed program was:" >&5
- cat conftest.$ac_ext >&5
- # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.$ac_ext
-
- # OK, works on sane cases. Now check whether non-existent headers
- # can be detected and how.
- cat >conftest.$ac_ext <<_ACEOF
-#line 1971 "configure"
-#include "confdefs.h"
-#include <ac_nonexistent.h>
-_ACEOF
-if { (eval echo "$as_me:1975: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:1981: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- # Broken: success on invalid input.
-continue
-else
- echo "$as_me: failed program was:" >&5
- cat conftest.$ac_ext >&5
- # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then
- :
-else
- { { echo "$as_me:2009: error: C preprocessor \"$CPP\" fails sanity check" >&5
-echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;}
- { (exit 1); exit 1; }; }
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-echo "$as_me:2020: checking for minix/config.h" >&5
-echo $ECHO_N "checking for minix/config.h... $ECHO_C" >&6
-if test "${ac_cv_header_minix_config_h+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 2026 "configure"
-#include "confdefs.h"
-#include <minix/config.h>
-_ACEOF
-if { (eval echo "$as_me:2030: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:2036: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- ac_cv_header_minix_config_h=yes
-else
- echo "$as_me: failed program was:" >&5
- cat conftest.$ac_ext >&5
- ac_cv_header_minix_config_h=no
-fi
-rm -f conftest.err conftest.$ac_ext
-fi
-echo "$as_me:2055: result: $ac_cv_header_minix_config_h" >&5
-echo "${ECHO_T}$ac_cv_header_minix_config_h" >&6
-if test $ac_cv_header_minix_config_h = yes; then
- MINIX=yes
-else
- MINIX=
-fi
-
-if test "$MINIX" = yes; then
-
-cat >>confdefs.h <<\EOF
-#define _POSIX_SOURCE 1
-EOF
-
-cat >>confdefs.h <<\EOF
-#define _POSIX_1_SOURCE 2
-EOF
-
-cat >>confdefs.h <<\EOF
-#define _MINIX 1
-EOF
-
-fi
-
-# If we're using gcc and the user hasn't specified CFLAGS, add -O to CFLAGS.
-test -n "$GCC" && test -n "$auto_cflags" && CFLAGS="$CFLAGS -O"
-
-if test $ac_cv_c_compiler_gnu = yes; then
- echo "$as_me:2083: checking whether $CC needs -traditional" >&5
-echo $ECHO_N "checking whether $CC needs -traditional... $ECHO_C" >&6
-if test "${ac_cv_prog_gcc_traditional+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_pattern="Autoconf.*'x'"
- cat >conftest.$ac_ext <<_ACEOF
-#line 2090 "configure"
-#include "confdefs.h"
-#include <sgtty.h>
-Autoconf TIOCGETP
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- egrep "$ac_pattern" >/dev/null 2>&1; then
- ac_cv_prog_gcc_traditional=yes
-else
- ac_cv_prog_gcc_traditional=no
-fi
-rm -f conftest*
-
- if test $ac_cv_prog_gcc_traditional = no; then
- cat >conftest.$ac_ext <<_ACEOF
-#line 2105 "configure"
-#include "confdefs.h"
-#include <termio.h>
-Autoconf TCGETA
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- egrep "$ac_pattern" >/dev/null 2>&1; then
- ac_cv_prog_gcc_traditional=yes
-fi
-rm -f conftest*
-
- fi
-fi
-echo "$as_me:2118: result: $ac_cv_prog_gcc_traditional" >&5
-echo "${ECHO_T}$ac_cv_prog_gcc_traditional" >&6
- if test $ac_cv_prog_gcc_traditional = yes; then
- CC="$CC -traditional"
- fi
-fi
-
-# Find a good install program. We prefer a C program (faster),
-# so one script is as good as another. But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AmigaOS /C/install, which installs bootblocks on floppy discs
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# ./install, which can be erroneously created by make from ./install.sh.
-echo "$as_me:2137: checking for a BSD compatible install" >&5
-echo $ECHO_N "checking for a BSD compatible install... $ECHO_C" >&6
-if test -z "$INSTALL"; then
-if test "${ac_cv_path_install+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_save_IFS=$IFS; IFS=$ac_path_separator
- for ac_dir in $PATH; do
- IFS=$ac_save_IFS
- # Account for people who put trailing slashes in PATH elements.
- case $ac_dir/ in
- / | ./ | .// | /cC/* \
- | /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* \
- | /usr/ucb/* ) ;;
- *)
- # OSF1 and SCO ODT 3.0 have their own names for install.
- # Don't use installbsd from OSF since it installs stuff as root
- # by default.
- for ac_prog in ginstall scoinst install; do
- if $as_executable_p "$ac_dir/$ac_prog"; then
- if test $ac_prog = install &&
- grep dspmsg "$ac_dir/$ac_prog" >/dev/null 2>&1; then
- # AIX install. It has an incompatible calling convention.
- :
- elif test $ac_prog = install &&
- grep pwplus "$ac_dir/$ac_prog" >/dev/null 2>&1; then
- # program-specific install script used by HP pwplus--don't use.
- :
- else
- ac_cv_path_install="$ac_dir/$ac_prog -c"
- break 2
- fi
- fi
- done
- ;;
- esac
- done
-
-fi
- if test "${ac_cv_path_install+set}" = set; then
- INSTALL=$ac_cv_path_install
- else
- # As a last resort, use the slow shell script. We don't cache a
- # path for INSTALL within a source directory, because that will
- # break other packages using the cache if that directory is
- # removed, or if the path is relative.
- INSTALL=$ac_install_sh
- fi
-fi
-echo "$as_me:2186: result: $INSTALL" >&5
-echo "${ECHO_T}$INSTALL" >&6
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-# Extract the first word of "ar", so it can be a program name with args.
-set dummy ar; ac_word=$2
-echo "$as_me:2199: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_AR+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$AR"; then
- ac_cv_prog_AR="$AR" # Let the user override the test.
-else
- ac_save_IFS=$IFS; IFS=$ac_path_separator
-ac_dummy="$PATH"
-for ac_dir in $ac_dummy; do
- IFS=$ac_save_IFS
- test -z "$ac_dir" && ac_dir=.
- $as_executable_p "$ac_dir/$ac_word" || continue
-ac_cv_prog_AR=""
-echo "$as_me:2214: found $ac_dir/$ac_word" >&5
-break
-done
-
- test -z "$ac_cv_prog_AR" && ac_cv_prog_AR="ar"
-fi
-fi
-AR=$ac_cv_prog_AR
-if test -n "$AR"; then
- echo "$as_me:2223: result: $AR" >&5
-echo "${ECHO_T}$AR" >&6
-else
- echo "$as_me:2226: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-test -n "$ARFLAGS" || ARFLAGS="cr"
-if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-echo "$as_me:2234: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_RANLIB+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$RANLIB"; then
- ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-else
- ac_save_IFS=$IFS; IFS=$ac_path_separator
-ac_dummy="$PATH"
-for ac_dir in $ac_dummy; do
- IFS=$ac_save_IFS
- test -z "$ac_dir" && ac_dir=.
- $as_executable_p "$ac_dir/$ac_word" || continue
-ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
-echo "$as_me:2249: found $ac_dir/$ac_word" >&5
-break
-done
-
-fi
-fi
-RANLIB=$ac_cv_prog_RANLIB
-if test -n "$RANLIB"; then
- echo "$as_me:2257: result: $RANLIB" >&5
-echo "${ECHO_T}$RANLIB" >&6
-else
- echo "$as_me:2260: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-fi
-if test -z "$ac_cv_prog_RANLIB"; then
- ac_ct_RANLIB=$RANLIB
- # Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
-echo "$as_me:2269: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$ac_ct_RANLIB"; then
- ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
-else
- ac_save_IFS=$IFS; IFS=$ac_path_separator
-ac_dummy="$PATH"
-for ac_dir in $ac_dummy; do
- IFS=$ac_save_IFS
- test -z "$ac_dir" && ac_dir=.
- $as_executable_p "$ac_dir/$ac_word" || continue
-ac_cv_prog_ac_ct_RANLIB="ranlib"
-echo "$as_me:2284: found $ac_dir/$ac_word" >&5
-break
-done
-
- test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
-fi
-fi
-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
-if test -n "$ac_ct_RANLIB"; then
- echo "$as_me:2293: result: $ac_ct_RANLIB" >&5
-echo "${ECHO_T}$ac_ct_RANLIB" >&6
-else
- echo "$as_me:2296: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- RANLIB=$ac_ct_RANLIB
-else
- RANLIB="$ac_cv_prog_RANLIB"
-fi
-
-MAKE_SHELL=/bin/sh
-
-echo "$as_me:2307: checking for $CC option to accept ANSI C" >&5
-echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
-if test "${ac_cv_prog_cc_stdc+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_cv_prog_cc_stdc=no
-ac_save_CC=$CC
-cat >conftest.$ac_ext <<_ACEOF
-#line 2315 "configure"
-#include "confdefs.h"
-#include <stdarg.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
- char **p;
- int i;
-{
- return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
- char *s;
- va_list v;
- va_start (v,p);
- s = g (p, va_arg (v,int));
- va_end (v);
- return s;
-}
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
- ;
- return 0;
-}
-_ACEOF
-# Don't try gcc -ansi; that turns off useful extensions and
-# breaks some systems' header files.
-# AIX -qlanglvl=ansi
-# Ultrix and OSF/1 -std1
-# HP-UX 10.20 and later -Ae
-# HP-UX older versions -Aa -D_HPUX_SOURCE
-# SVR4 -Xc -D__EXTENSIONS__
-for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
- CC="$ac_save_CC $ac_arg"
- rm -f conftest.$ac_objext
-if { (eval echo "$as_me:2364: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:2367: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:2370: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:2373: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_prog_cc_stdc=$ac_arg
-break
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-fi
-rm -f conftest.$ac_objext
-done
-rm -f conftest.$ac_ext conftest.$ac_objext
-CC=$ac_save_CC
-
-fi
-
-case "x$ac_cv_prog_cc_stdc" in
- x|xno)
- echo "$as_me:2390: result: none needed" >&5
-echo "${ECHO_T}none needed" >&6 ;;
- *)
- echo "$as_me:2393: result: $ac_cv_prog_cc_stdc" >&5
-echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
- CC="$CC $ac_cv_prog_cc_stdc" ;;
-esac
-
-echo "$as_me:2398: checking for an ANSI C-conforming const" >&5
-echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6
-if test "${ac_cv_c_const+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 2404 "configure"
-#include "confdefs.h"
-
-int
-main ()
-{
-/* FIXME: Include the comments suggested by Paul. */
-#ifndef __cplusplus
- /* Ultrix mips cc rejects this. */
- typedef int charset[2];
- const charset x;
- /* SunOS 4.1.1 cc rejects this. */
- char const *const *ccp;
- char **p;
- /* NEC SVR4.0.2 mips cc rejects this. */
- struct point {int x, y;};
- static struct point const zero = {0,0};
- /* AIX XL C 1.02.0.0 rejects this.
- It does not let you subtract one const X* pointer from another in
- an arm of an if-expression whose if-part is not a constant
- expression */
- const char *g = "string";
- ccp = &g + (g ? g-g : 0);
- /* HPUX 7.0 cc rejects these. */
- ++ccp;
- p = (char**) ccp;
- ccp = (char const *const *) p;
- { /* SCO 3.2v4 cc rejects this. */
- char *t;
- char const *s = 0 ? (char *) 0 : (char const *) 0;
-
- *t++ = 0;
- }
- { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */
- int x[] = {25, 17};
- const int *foo = &x[0];
- ++foo;
- }
- { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
- typedef const int *iptr;
- iptr p = 0;
- ++p;
- }
- { /* AIX XL C 1.02.0.0 rejects this saying
- "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
- struct s { int j; const int *ap[3]; };
- struct s *b; b->j = 5;
- }
- { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
- const int foo = 10;
- }
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:2462: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:2465: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:2468: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:2471: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_c_const=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_c_const=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:2481: result: $ac_cv_c_const" >&5
-echo "${ECHO_T}$ac_cv_c_const" >&6
-if test $ac_cv_c_const = no; then
-
-cat >>confdefs.h <<\EOF
-#define const
-EOF
-
-fi
-
-echo "$as_me:2491: checking for function prototypes" >&5
-echo $ECHO_N "checking for function prototypes... $ECHO_C" >&6
-if test "$ac_cv_prog_cc_stdc" != no; then
- echo "$as_me:2494: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-
-cat >>confdefs.h <<\EOF
-#define PROTOTYPES 1
-EOF
-
-else
- echo "$as_me:2502: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-echo "$as_me:2506: checking for ANSI C header files" >&5
-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
-if test "${ac_cv_header_stdc+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 2512 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-_ACEOF
-if { (eval echo "$as_me:2520: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:2526: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- ac_cv_header_stdc=yes
-else
- echo "$as_me: failed program was:" >&5
- cat conftest.$ac_ext >&5
- ac_cv_header_stdc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
- # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
- cat >conftest.$ac_ext <<_ACEOF
-#line 2548 "configure"
-#include "confdefs.h"
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- egrep "memchr" >/dev/null 2>&1; then
- :
-else
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
- cat >conftest.$ac_ext <<_ACEOF
-#line 2566 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- egrep "free" >/dev/null 2>&1; then
- :
-else
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
- # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
- if test "$cross_compiling" = yes; then
- :
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 2587 "configure"
-#include "confdefs.h"
-#include <ctype.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \
- || ('j' <= (c) && (c) <= 'r') \
- || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
- int i;
- for (i = 0; i < 256; i++)
- if (XOR (islower (i), ISLOWER (i))
- || toupper (i) != TOUPPER (i))
- exit(2);
- exit (0);
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:2613: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:2616: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:2618: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:2621: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- :
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_header_stdc=no
-fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-fi
-echo "$as_me:2634: result: $ac_cv_header_stdc" >&5
-echo "${ECHO_T}$ac_cv_header_stdc" >&6
-if test $ac_cv_header_stdc = yes; then
-
-cat >>confdefs.h <<\EOF
-#define STDC_HEADERS 1
-EOF
-
-fi
-
-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
- inttypes.h stdint.h unistd.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:2650: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 2656 "configure"
-#include "confdefs.h"
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:2662: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:2665: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:2668: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:2671: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_Header=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_Header=no"
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:2681: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-EOF
-
-fi
-done
-
-echo "$as_me:2691: checking whether char is unsigned" >&5
-echo $ECHO_N "checking whether char is unsigned... $ECHO_C" >&6
-if test "${ac_cv_c_char_unsigned+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 2697 "configure"
-#include "confdefs.h"
-$ac_includes_default
-int
-main ()
-{
-int _array_ [1 - 2 * !(((char) -1) < 0)]
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:2709: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:2712: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:2715: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:2718: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_c_char_unsigned=no
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_c_char_unsigned=yes
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:2728: result: $ac_cv_c_char_unsigned" >&5
-echo "${ECHO_T}$ac_cv_c_char_unsigned" >&6
-if test $ac_cv_c_char_unsigned = yes && test "$GCC" != yes; then
- cat >>confdefs.h <<\EOF
-#define __CHAR_UNSIGNED__ 1
-EOF
-
-fi
-
-echo "$as_me:2737: checking return type of signal handlers" >&5
-echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6
-if test "${ac_cv_type_signal+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 2743 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <signal.h>
-#ifdef signal
-# undef signal
-#endif
-#ifdef __cplusplus
-extern "C" void (*signal (int, void (*)(int)))(int);
-#else
-void (*signal ()) ();
-#endif
-
-int
-main ()
-{
-int i;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:2765: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:2768: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:2771: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:2774: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_type_signal=void
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_type_signal=int
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:2784: result: $ac_cv_type_signal" >&5
-echo "${ECHO_T}$ac_cv_type_signal" >&6
-
-cat >>confdefs.h <<EOF
-#define RETSIGTYPE $ac_cv_type_signal
-EOF
-
-echo "$as_me:2791: checking for size_t" >&5
-echo $ECHO_N "checking for size_t... $ECHO_C" >&6
-if test "${ac_cv_type_size_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 2797 "configure"
-#include "confdefs.h"
-$ac_includes_default
-int
-main ()
-{
-if ((size_t *) 0)
- return 0;
-if (sizeof (size_t))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:2812: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:2815: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:2818: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:2821: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_type_size_t=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_type_size_t=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:2831: result: $ac_cv_type_size_t" >&5
-echo "${ECHO_T}$ac_cv_type_size_t" >&6
-if test $ac_cv_type_size_t = yes; then
- :
-else
-
-cat >>confdefs.h <<EOF
-#define size_t unsigned
-EOF
-
-fi
-
-echo "$as_me:2843: checking for ssize_t" >&5
-echo $ECHO_N "checking for ssize_t... $ECHO_C" >&6
-if test "${ac_cv_type_ssize_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 2849 "configure"
-#include "confdefs.h"
-$ac_includes_default
-int
-main ()
-{
-if ((ssize_t *) 0)
- return 0;
-if (sizeof (ssize_t))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:2864: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:2867: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:2870: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:2873: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_type_ssize_t=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_type_ssize_t=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:2883: result: $ac_cv_type_ssize_t" >&5
-echo "${ECHO_T}$ac_cv_type_ssize_t" >&6
-if test $ac_cv_type_ssize_t = yes; then
- :
-else
-
-cat >>confdefs.h <<EOF
-#define ssize_t int
-EOF
-
-fi
-
-echo "$as_me:2895: checking whether stat file-mode macros are broken" >&5
-echo $ECHO_N "checking whether stat file-mode macros are broken... $ECHO_C" >&6
-if test "${ac_cv_header_stat_broken+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 2901 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <sys/stat.h>
-
-#if defined(S_ISBLK) && defined(S_IFDIR)
-# if S_ISBLK (S_IFDIR)
-You lose.
-# endif
-#endif
-
-#if defined(S_ISBLK) && defined(S_IFCHR)
-# if S_ISBLK (S_IFCHR)
-You lose.
-# endif
-#endif
-
-#if defined(S_ISLNK) && defined(S_IFREG)
-# if S_ISLNK (S_IFREG)
-You lose.
-# endif
-#endif
-
-#if defined(S_ISSOCK) && defined(S_IFREG)
-# if S_ISSOCK (S_IFREG)
-You lose.
-# endif
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- egrep "You lose" >/dev/null 2>&1; then
- ac_cv_header_stat_broken=yes
-else
- ac_cv_header_stat_broken=no
-fi
-rm -f conftest*
-
-fi
-echo "$as_me:2940: result: $ac_cv_header_stat_broken" >&5
-echo "${ECHO_T}$ac_cv_header_stat_broken" >&6
-if test $ac_cv_header_stat_broken = yes; then
-
-cat >>confdefs.h <<\EOF
-#define STAT_MACROS_BROKEN 1
-EOF
-
-fi
-
-ac_header_dirent=no
-for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do
- as_ac_Header=`echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
-echo "$as_me:2953: checking for $ac_hdr that defines DIR" >&5
-echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 2959 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <$ac_hdr>
-
-int
-main ()
-{
-if ((DIR *) 0)
-return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:2974: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:2977: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:2980: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:2983: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_Header=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_Header=no"
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:2993: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_hdr" | $as_tr_cpp` 1
-EOF
-
-ac_header_dirent=$ac_hdr; break
-fi
-
-done
-# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
-if test $ac_header_dirent = dirent.h; then
- echo "$as_me:3006: checking for opendir in -ldir" >&5
-echo $ECHO_N "checking for opendir in -ldir... $ECHO_C" >&6
-if test "${ac_cv_lib_dir_opendir+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldir $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 3014 "configure"
-#include "confdefs.h"
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char opendir ();
-int
-main ()
-{
-opendir ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:3033: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:3036: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:3039: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3042: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_dir_opendir=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_dir_opendir=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:3053: result: $ac_cv_lib_dir_opendir" >&5
-echo "${ECHO_T}$ac_cv_lib_dir_opendir" >&6
-if test $ac_cv_lib_dir_opendir = yes; then
- LIBS="$LIBS -ldir"
-fi
-
-else
- echo "$as_me:3060: checking for opendir in -lx" >&5
-echo $ECHO_N "checking for opendir in -lx... $ECHO_C" >&6
-if test "${ac_cv_lib_x_opendir+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lx $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 3068 "configure"
-#include "confdefs.h"
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char opendir ();
-int
-main ()
-{
-opendir ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:3087: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:3090: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:3093: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3096: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_x_opendir=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_x_opendir=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:3107: result: $ac_cv_lib_x_opendir" >&5
-echo "${ECHO_T}$ac_cv_lib_x_opendir" >&6
-if test $ac_cv_lib_x_opendir = yes; then
- LIBS="$LIBS -lx"
-fi
-
-fi
-
-for ac_func in lstat memmove putenv select setenv setlocale \
- strcasecmp strpbrk tcgetattr vsnprintf isascii isxdigit
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:3119: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3125 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
-
-int
-main ()
-{
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-f = $ac_func;
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:3156: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:3159: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:3162: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3165: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:3175: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-EOF
-
-fi
-done
-
-echo "$as_me:3185: checking for working strcoll" >&5
-echo $ECHO_N "checking for working strcoll... $ECHO_C" >&6
-if test "${ac_cv_func_strcoll_works+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test "$cross_compiling" = yes; then
- ac_cv_func_strcoll_works=no
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3194 "configure"
-#include "confdefs.h"
-$ac_includes_default
-int
-main ()
-{
-exit (strcoll ("abc", "def") >= 0 ||
- strcoll ("ABC", "DEF") >= 0 ||
- strcoll ("123", "456") >= 0)
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:3208: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:3211: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:3213: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3216: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_func_strcoll_works=yes
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_func_strcoll_works=no
-fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-echo "$as_me:3228: result: $ac_cv_func_strcoll_works" >&5
-echo "${ECHO_T}$ac_cv_func_strcoll_works" >&6
-if test $ac_cv_func_strcoll_works = yes; then
-
-cat >>confdefs.h <<\EOF
-#define HAVE_STRCOLL 1
-EOF
-
-fi
-
-for ac_header in unistd.h stdlib.h varargs.h stdarg.h string.h strings.h \
- limits.h sys/ptem.h sys/pte.h sys/stream.h sys/select.h \
- termcap.h termios.h termio.h sys/file.h locale.h memory.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:3243: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3249 "configure"
-#include "confdefs.h"
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:3253: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:3259: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- eval "$as_ac_Header=yes"
-else
- echo "$as_me: failed program was:" >&5
- cat conftest.$ac_ext >&5
- eval "$as_ac_Header=no"
-fi
-rm -f conftest.err conftest.$ac_ext
-fi
-echo "$as_me:3278: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-EOF
-
-fi
-done
-
-echo "$as_me:3288: checking for type of signal functions" >&5
-echo $ECHO_N "checking for type of signal functions... $ECHO_C" >&6
-if test "${bash_cv_signal_vintage+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
- cat >conftest.$ac_ext <<_ACEOF
-#line 3295 "configure"
-#include "confdefs.h"
-#include <signal.h>
-int
-main ()
-{
-
- sigset_t ss;
- struct sigaction sa;
- sigemptyset(&ss); sigsuspend(&ss);
- sigaction(SIGINT, &sa, (struct sigaction *) 0);
- sigprocmask(SIG_BLOCK, &ss, (sigset_t *) 0);
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:3313: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:3316: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:3319: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3322: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- bash_cv_signal_vintage=posix
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-
- cat >conftest.$ac_ext <<_ACEOF
-#line 3330 "configure"
-#include "confdefs.h"
-#include <signal.h>
-int
-main ()
-{
-
- int mask = sigmask(SIGINT);
- sigsetmask(mask); sigblock(mask); sigpause(mask);
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:3345: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:3348: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:3351: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3354: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- bash_cv_signal_vintage=4.2bsd
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-
- cat >conftest.$ac_ext <<_ACEOF
-#line 3362 "configure"
-#include "confdefs.h"
-
- #include <signal.h>
- RETSIGTYPE foo() { }
-int
-main ()
-{
-
- int mask = sigmask(SIGINT);
- sigset(SIGINT, foo); sigrelse(SIGINT);
- sighold(SIGINT); sigpause(SIGINT);
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:3380: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:3383: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:3386: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3389: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- bash_cv_signal_vintage=svr3
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-bash_cv_signal_vintage=v7
-
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-echo "$as_me:3408: result: $bash_cv_signal_vintage" >&5
-echo "${ECHO_T}$bash_cv_signal_vintage" >&6
-if test "$bash_cv_signal_vintage" = posix; then
-cat >>confdefs.h <<\EOF
-#define HAVE_POSIX_SIGNALS 1
-EOF
-
-elif test "$bash_cv_signal_vintage" = "4.2bsd"; then
-cat >>confdefs.h <<\EOF
-#define HAVE_BSD_SIGNALS 1
-EOF
-
-elif test "$bash_cv_signal_vintage" = svr3; then
-cat >>confdefs.h <<\EOF
-#define HAVE_USG_SIGHOLD 1
-EOF
-
-fi
-
-echo "$as_me:3427: checking if signal handlers must be reinstalled when invoked" >&5
-echo $ECHO_N "checking if signal handlers must be reinstalled when invoked... $ECHO_C" >&6
-if test "${bash_cv_must_reinstall_sighandlers+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test "$cross_compiling" = yes; then
- { echo "$as_me:3433: WARNING: cannot check signal handling if cross compiling -- defaulting to no" >&5
-echo "$as_me: WARNING: cannot check signal handling if cross compiling -- defaulting to no" >&2;}
- bash_cv_must_reinstall_sighandlers=no
-
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3439 "configure"
-#include "confdefs.h"
-
-#include <signal.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-
-typedef RETSIGTYPE sigfunc();
-
-int nsigint;
-
-#ifdef HAVE_POSIX_SIGNALS
-sigfunc *
-set_signal_handler(sig, handler)
- int sig;
- sigfunc *handler;
-{
- struct sigaction act, oact;
- act.sa_handler = handler;
- act.sa_flags = 0;
- sigemptyset (&act.sa_mask);
- sigemptyset (&oact.sa_mask);
- sigaction (sig, &act, &oact);
- return (oact.sa_handler);
-}
-#else
-#define set_signal_handler(s, h) signal(s, h)
-#endif
-
-RETSIGTYPE
-sigint(s)
-int s;
-{
- nsigint++;
-}
-
-main()
-{
- nsigint = 0;
- set_signal_handler(SIGINT, sigint);
- kill((int)getpid(), SIGINT);
- kill((int)getpid(), SIGINT);
- exit(nsigint != 2);
-}
-
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:3487: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:3490: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:3492: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3495: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- bash_cv_must_reinstall_sighandlers=no
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-bash_cv_must_reinstall_sighandlers=yes
-fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-
-echo "$as_me:3508: result: $bash_cv_must_reinstall_sighandlers" >&5
-echo "${ECHO_T}$bash_cv_must_reinstall_sighandlers" >&6
-if test $bash_cv_must_reinstall_sighandlers = yes; then
-cat >>confdefs.h <<\EOF
-#define MUST_REINSTALL_SIGHANDLERS 1
-EOF
-
-fi
-
-echo "$as_me:3517: checking for presence of POSIX-style sigsetjmp/siglongjmp" >&5
-echo $ECHO_N "checking for presence of POSIX-style sigsetjmp/siglongjmp... $ECHO_C" >&6
-if test "${bash_cv_func_sigsetjmp+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test "$cross_compiling" = yes; then
- { echo "$as_me:3523: WARNING: cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing" >&5
-echo "$as_me: WARNING: cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing" >&2;}
- bash_cv_func_sigsetjmp=missing
-
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3529 "configure"
-#include "confdefs.h"
-
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#include <sys/types.h>
-#include <signal.h>
-#include <setjmp.h>
-
-main()
-{
-#if !defined (_POSIX_VERSION) || !defined (HAVE_POSIX_SIGNALS)
-exit (1);
-#else
-
-int code;
-sigset_t set, oset;
-sigjmp_buf xx;
-
-/* get the mask */
-sigemptyset(&set);
-sigemptyset(&oset);
-sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &set);
-sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &oset);
-
-/* save it */
-code = sigsetjmp(xx, 1);
-if (code)
- exit(0); /* could get sigmask and compare to oset here. */
-
-/* change it */
-sigaddset(&set, SIGINT);
-sigprocmask(SIG_BLOCK, &set, (sigset_t *)NULL);
-
-/* and siglongjmp */
-siglongjmp(xx, 10);
-exit(1);
-#endif
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:3571: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:3574: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:3576: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3579: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- bash_cv_func_sigsetjmp=present
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-bash_cv_func_sigsetjmp=missing
-fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-
-echo "$as_me:3592: result: $bash_cv_func_sigsetjmp" >&5
-echo "${ECHO_T}$bash_cv_func_sigsetjmp" >&6
-if test $bash_cv_func_sigsetjmp = present; then
-cat >>confdefs.h <<\EOF
-#define HAVE_POSIX_SIGSETJMP 1
-EOF
-
-fi
-
-echo "$as_me:3601: checking for lstat" >&5
-echo $ECHO_N "checking for lstat... $ECHO_C" >&6
-if test "${bash_cv_func_lstat+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3607 "configure"
-#include "confdefs.h"
-
-#include <sys/types.h>
-#include <sys/stat.h>
-
-int
-main ()
-{
- lstat(".",(struct stat *)0);
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:3622: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:3625: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:3628: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3631: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- bash_cv_func_lstat=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-bash_cv_func_lstat=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:3641: result: $bash_cv_func_lstat" >&5
-echo "${ECHO_T}$bash_cv_func_lstat" >&6
-if test $bash_cv_func_lstat = yes; then
- cat >>confdefs.h <<\EOF
-#define HAVE_LSTAT 1
-EOF
-
-fi
-
-echo "$as_me:3650: checking whether or not strcoll and strcmp differ" >&5
-echo $ECHO_N "checking whether or not strcoll and strcmp differ... $ECHO_C" >&6
-if test "${bash_cv_func_strcoll_broken+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test "$cross_compiling" = yes; then
- { echo "$as_me:3656: WARNING: cannot check strcoll if cross compiling -- defaulting to no" >&5
-echo "$as_me: WARNING: cannot check strcoll if cross compiling -- defaulting to no" >&2;}
- bash_cv_func_strcoll_broken=no
-
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3662 "configure"
-#include "confdefs.h"
-
-#include <stdio.h>
-#if defined (HAVE_LOCALE_H)
-#include <locale.h>
-#endif
-
-main(c, v)
-int c;
-char *v[];
-{
- int r1, r2;
- char *deflocale, *defcoll;
-
-#ifdef HAVE_SETLOCALE
- deflocale = setlocale(LC_ALL, "");
- defcoll = setlocale(LC_COLLATE, "");
-#endif
-
-#ifdef HAVE_STRCOLL
- /* These two values are taken from tests/glob-test. */
- r1 = strcoll("abd", "aXd");
-#else
- r1 = 0;
-#endif
- r2 = strcmp("abd", "aXd");
-
- /* These two should both be greater than 0. It is permissible for
- a system to return different values, as long as the sign is the
- same. */
-
- /* Exit with 1 (failure) if these two values are both > 0, since
- this tests whether strcoll(3) is broken with respect to strcmp(3)
- in the default locale. */
- exit (r1 > 0 && r2 > 0);
-}
-
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:3702: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:3705: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:3707: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3710: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- bash_cv_func_strcoll_broken=yes
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-bash_cv_func_strcoll_broken=no
-fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-
-echo "$as_me:3723: result: $bash_cv_func_strcoll_broken" >&5
-echo "${ECHO_T}$bash_cv_func_strcoll_broken" >&6
-if test $bash_cv_func_strcoll_broken = yes; then
-cat >>confdefs.h <<\EOF
-#define STRCOLL_BROKEN 1
-EOF
-
-fi
-
-echo "$as_me:3732: checking whether getpw functions are declared in pwd.h" >&5
-echo $ECHO_N "checking whether getpw functions are declared in pwd.h... $ECHO_C" >&6
-if test "${bash_cv_getpw_declared+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3738 "configure"
-#include "confdefs.h"
-
-#include <sys/types.h>
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-#include <pwd.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- egrep "getpwuid" >/dev/null 2>&1; then
- bash_cv_getpw_declared=yes
-else
- bash_cv_getpw_declared=no
-fi
-rm -f conftest*
-
-fi
-
-echo "$as_me:3758: result: $bash_cv_getpw_declared" >&5
-echo "${ECHO_T}$bash_cv_getpw_declared" >&6
-if test $bash_cv_getpw_declared = yes; then
-cat >>confdefs.h <<\EOF
-#define HAVE_GETPW_DECLS 1
-EOF
-
-fi
-
-echo "$as_me:3767: checking POSIX termios" >&5
-echo $ECHO_N "checking POSIX termios... $ECHO_C" >&6
-if test "${ac_cv_sys_posix_termios+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3773 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <unistd.h>
-#include <termios.h>
-int
-main ()
-{
-/* SunOS 4.0.3 has termios.h but not the library calls. */
- tcgetattr(0, 0);
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:3788: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:3791: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:3794: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3797: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_sys_posix_termios=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_sys_posix_termios=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:3807: result: $ac_cv_sys_posix_termios" >&5
-echo "${ECHO_T}$ac_cv_sys_posix_termios" >&6
-
-if test $ac_cv_sys_posix_termios = yes; then
- echo "$as_me:3811: checking whether termios.h defines TIOCGWINSZ" >&5
-echo $ECHO_N "checking whether termios.h defines TIOCGWINSZ... $ECHO_C" >&6
-if test "${ac_cv_sys_tiocgwinsz_in_termios_h+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3817 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <termios.h>
-#ifdef TIOCGWINSZ
- yes
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- egrep "yes" >/dev/null 2>&1; then
- ac_cv_sys_tiocgwinsz_in_termios_h=yes
-else
- ac_cv_sys_tiocgwinsz_in_termios_h=no
-fi
-rm -f conftest*
-
-fi
-echo "$as_me:3835: result: $ac_cv_sys_tiocgwinsz_in_termios_h" >&5
-echo "${ECHO_T}$ac_cv_sys_tiocgwinsz_in_termios_h" >&6
-
-fi
-if test $ac_cv_sys_tiocgwinsz_in_termios_h != yes; then
- echo "$as_me:3840: checking whether sys/ioctl.h defines TIOCGWINSZ" >&5
-echo $ECHO_N "checking whether sys/ioctl.h defines TIOCGWINSZ... $ECHO_C" >&6
-if test "${ac_cv_sys_tiocgwinsz_in_sys_ioctl_h+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3846 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <sys/ioctl.h>
-#ifdef TIOCGWINSZ
- yes
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- egrep "yes" >/dev/null 2>&1; then
- ac_cv_sys_tiocgwinsz_in_sys_ioctl_h=yes
-else
- ac_cv_sys_tiocgwinsz_in_sys_ioctl_h=no
-fi
-rm -f conftest*
-
-fi
-echo "$as_me:3864: result: $ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&5
-echo "${ECHO_T}$ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&6
-
- if test $ac_cv_sys_tiocgwinsz_in_sys_ioctl_h = yes; then
-
-cat >>confdefs.h <<\EOF
-#define GWINSZ_IN_SYS_IOCTL 1
-EOF
-
- fi
-fi
-
-echo "$as_me:3876: checking whether signal handlers are of type void" >&5
-echo $ECHO_N "checking whether signal handlers are of type void... $ECHO_C" >&6
-if test "${bash_cv_void_sighandler+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3882 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <signal.h>
-#ifdef signal
-#undef signal
-#endif
-#ifdef __cplusplus
-extern "C"
-#endif
-void (*signal ()) ();
-int
-main ()
-{
-int i;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:3902: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:3905: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:3908: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3911: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- bash_cv_void_sighandler=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-bash_cv_void_sighandler=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:3921: result: $bash_cv_void_sighandler" >&5
-echo "${ECHO_T}$bash_cv_void_sighandler" >&6
-if test $bash_cv_void_sighandler = yes; then
-cat >>confdefs.h <<\EOF
-#define VOID_SIGHANDLER 1
-EOF
-
-fi
-
-echo "$as_me:3930: checking for TIOCSTAT in sys/ioctl.h" >&5
-echo $ECHO_N "checking for TIOCSTAT in sys/ioctl.h... $ECHO_C" >&6
-if test "${bash_cv_tiocstat_in_ioctl+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3936 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <sys/ioctl.h>
-int
-main ()
-{
-int x = TIOCSTAT;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:3949: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:3952: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:3955: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3958: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- bash_cv_tiocstat_in_ioctl=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-bash_cv_tiocstat_in_ioctl=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-
-echo "$as_me:3969: result: $bash_cv_tiocstat_in_ioctl" >&5
-echo "${ECHO_T}$bash_cv_tiocstat_in_ioctl" >&6
-if test $bash_cv_tiocstat_in_ioctl = yes; then
-cat >>confdefs.h <<\EOF
-#define TIOCSTAT_IN_SYS_IOCTL 1
-EOF
-
-fi
-
-echo "$as_me:3978: checking for FIONREAD in sys/ioctl.h" >&5
-echo $ECHO_N "checking for FIONREAD in sys/ioctl.h... $ECHO_C" >&6
-if test "${bash_cv_fionread_in_ioctl+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3984 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <sys/ioctl.h>
-int
-main ()
-{
-int x = FIONREAD;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:3997: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:4000: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:4003: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4006: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- bash_cv_fionread_in_ioctl=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-bash_cv_fionread_in_ioctl=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-
-echo "$as_me:4017: result: $bash_cv_fionread_in_ioctl" >&5
-echo "${ECHO_T}$bash_cv_fionread_in_ioctl" >&6
-if test $bash_cv_fionread_in_ioctl = yes; then
-cat >>confdefs.h <<\EOF
-#define FIONREAD_IN_SYS_IOCTL 1
-EOF
-
-fi
-
-echo "$as_me:4026: checking for speed_t in sys/types.h" >&5
-echo $ECHO_N "checking for speed_t in sys/types.h... $ECHO_C" >&6
-if test "${bash_cv_speed_t_in_sys_types+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 4032 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-int
-main ()
-{
-speed_t x;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:4044: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:4047: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:4050: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4053: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- bash_cv_speed_t_in_sys_types=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-bash_cv_speed_t_in_sys_types=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-
-echo "$as_me:4064: result: $bash_cv_speed_t_in_sys_types" >&5
-echo "${ECHO_T}$bash_cv_speed_t_in_sys_types" >&6
-if test $bash_cv_speed_t_in_sys_types = yes; then
-cat >>confdefs.h <<\EOF
-#define SPEED_T_IN_SYS_TYPES 1
-EOF
-
-fi
-
-echo "$as_me:4073: checking for struct winsize in sys/ioctl.h and termios.h" >&5
-echo $ECHO_N "checking for struct winsize in sys/ioctl.h and termios.h... $ECHO_C" >&6
-if test "${bash_cv_struct_winsize_header+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 4079 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <sys/ioctl.h>
-int
-main ()
-{
-struct winsize x;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:4092: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:4095: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:4098: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4101: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- bash_cv_struct_winsize_header=ioctl_h
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-cat >conftest.$ac_ext <<_ACEOF
-#line 4108 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <termios.h>
-int
-main ()
-{
-struct winsize x;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:4121: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:4124: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:4127: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4130: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- bash_cv_struct_winsize_header=termios_h
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-bash_cv_struct_winsize_header=other
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-
-if test $bash_cv_struct_winsize_header = ioctl_h; then
- echo "$as_me:4145: result: sys/ioctl.h" >&5
-echo "${ECHO_T}sys/ioctl.h" >&6
- cat >>confdefs.h <<\EOF
-#define STRUCT_WINSIZE_IN_SYS_IOCTL 1
-EOF
-
-elif test $bash_cv_struct_winsize_header = termios_h; then
- echo "$as_me:4152: result: termios.h" >&5
-echo "${ECHO_T}termios.h" >&6
- cat >>confdefs.h <<\EOF
-#define STRUCT_WINSIZE_IN_TERMIOS 1
-EOF
-
-else
- echo "$as_me:4159: result: not found" >&5
-echo "${ECHO_T}not found" >&6
-fi
-
-echo "$as_me:4163: checking if struct dirent has a d_ino member" >&5
-echo $ECHO_N "checking if struct dirent has a d_ino member... $ECHO_C" >&6
-if test "${bash_cv_dirent_has_dino+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 4169 "configure"
-#include "confdefs.h"
-
-#include <stdio.h>
-#include <sys/types.h>
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-#if defined(HAVE_DIRENT_H)
-# include <dirent.h>
-#else
-# define dirent direct
-# ifdef HAVE_SYS_NDIR_H
-# include <sys/ndir.h>
-# endif /* SYSNDIR */
-# ifdef HAVE_SYS_DIR_H
-# include <sys/dir.h>
-# endif /* SYSDIR */
-# ifdef HAVE_NDIR_H
-# include <ndir.h>
-# endif
-#endif /* HAVE_DIRENT_H */
-
-int
-main ()
-{
-
-struct dirent d; int z; z = d.d_ino;
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:4203: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:4206: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:4209: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4212: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- bash_cv_dirent_has_dino=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-bash_cv_dirent_has_dino=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-
-echo "$as_me:4223: result: $bash_cv_dirent_has_dino" >&5
-echo "${ECHO_T}$bash_cv_dirent_has_dino" >&6
-if test $bash_cv_dirent_has_dino = yes; then
-cat >>confdefs.h <<\EOF
-#define STRUCT_DIRENT_HAS_D_INO 1
-EOF
-
-fi
-
-echo "$as_me:4232: checking if struct dirent has a d_fileno member" >&5
-echo $ECHO_N "checking if struct dirent has a d_fileno member... $ECHO_C" >&6
-if test "${bash_cv_dirent_has_d_fileno+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 4238 "configure"
-#include "confdefs.h"
-
-#include <stdio.h>
-#include <sys/types.h>
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-#if defined(HAVE_DIRENT_H)
-# include <dirent.h>
-#else
-# define dirent direct
-# ifdef HAVE_SYS_NDIR_H
-# include <sys/ndir.h>
-# endif /* SYSNDIR */
-# ifdef HAVE_SYS_DIR_H
-# include <sys/dir.h>
-# endif /* SYSDIR */
-# ifdef HAVE_NDIR_H
-# include <ndir.h>
-# endif
-#endif /* HAVE_DIRENT_H */
-
-int
-main ()
-{
-
-struct dirent d; int z; z = d.d_fileno;
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:4272: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:4275: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:4278: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4281: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- bash_cv_dirent_has_d_fileno=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-bash_cv_dirent_has_d_fileno=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-
-echo "$as_me:4292: result: $bash_cv_dirent_has_d_fileno" >&5
-echo "${ECHO_T}$bash_cv_dirent_has_d_fileno" >&6
-if test $bash_cv_dirent_has_d_fileno = yes; then
-cat >>confdefs.h <<\EOF
-#define STRUCT_DIRENT_HAS_D_FILENO 1
-EOF
-
-fi
-
-case "$host_os" in
-aix*) prefer_curses=yes ;;
-esac
-
-if test "X$bash_cv_termcap_lib" = "X"; then
-_bash_needmsg=yes
-else
-echo "$as_me:4308: checking which library has the termcap functions" >&5
-echo $ECHO_N "checking which library has the termcap functions... $ECHO_C" >&6
-_bash_needmsg=
-fi
-if test "${bash_cv_termcap_lib+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- echo "$as_me:4315: checking for tgetent in -ltermcap" >&5
-echo $ECHO_N "checking for tgetent in -ltermcap... $ECHO_C" >&6
-if test "${ac_cv_lib_termcap_tgetent+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-ltermcap $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 4323 "configure"
-#include "confdefs.h"
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char tgetent ();
-int
-main ()
-{
-tgetent ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:4342: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:4345: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:4348: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4351: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_termcap_tgetent=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_termcap_tgetent=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:4362: result: $ac_cv_lib_termcap_tgetent" >&5
-echo "${ECHO_T}$ac_cv_lib_termcap_tgetent" >&6
-if test $ac_cv_lib_termcap_tgetent = yes; then
- bash_cv_termcap_lib=libtermcap
-else
- echo "$as_me:4367: checking for tgetent in -ltinfo" >&5
-echo $ECHO_N "checking for tgetent in -ltinfo... $ECHO_C" >&6
-if test "${ac_cv_lib_tinfo_tgetent+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-ltinfo $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 4375 "configure"
-#include "confdefs.h"
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char tgetent ();
-int
-main ()
-{
-tgetent ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:4394: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:4397: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:4400: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4403: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_tinfo_tgetent=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_tinfo_tgetent=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:4414: result: $ac_cv_lib_tinfo_tgetent" >&5
-echo "${ECHO_T}$ac_cv_lib_tinfo_tgetent" >&6
-if test $ac_cv_lib_tinfo_tgetent = yes; then
- bash_cv_termcap_lib=libtinfo
-else
- echo "$as_me:4419: checking for tgetent in -lcurses" >&5
-echo $ECHO_N "checking for tgetent in -lcurses... $ECHO_C" >&6
-if test "${ac_cv_lib_curses_tgetent+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lcurses $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 4427 "configure"
-#include "confdefs.h"
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char tgetent ();
-int
-main ()
-{
-tgetent ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:4446: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:4449: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:4452: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4455: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_curses_tgetent=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_curses_tgetent=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:4466: result: $ac_cv_lib_curses_tgetent" >&5
-echo "${ECHO_T}$ac_cv_lib_curses_tgetent" >&6
-if test $ac_cv_lib_curses_tgetent = yes; then
- bash_cv_termcap_lib=libcurses
-else
- echo "$as_me:4471: checking for tgetent in -lncurses" >&5
-echo $ECHO_N "checking for tgetent in -lncurses... $ECHO_C" >&6
-if test "${ac_cv_lib_ncurses_tgetent+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lncurses $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 4479 "configure"
-#include "confdefs.h"
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char tgetent ();
-int
-main ()
-{
-tgetent ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:4498: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:4501: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:4504: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4507: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_ncurses_tgetent=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_ncurses_tgetent=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:4518: result: $ac_cv_lib_ncurses_tgetent" >&5
-echo "${ECHO_T}$ac_cv_lib_ncurses_tgetent" >&6
-if test $ac_cv_lib_ncurses_tgetent = yes; then
- bash_cv_termcap_lib=libncurses
-else
- bash_cv_termcap_lib=gnutermcap
-fi
-
-fi
-
-fi
-
-fi
-
-fi
-
-if test "X$_bash_needmsg" = "Xyes"; then
-echo "$as_me:4535: checking which library has the termcap functions" >&5
-echo $ECHO_N "checking which library has the termcap functions... $ECHO_C" >&6
-fi
-echo "$as_me:4538: result: using $bash_cv_termcap_lib" >&5
-echo "${ECHO_T}using $bash_cv_termcap_lib" >&6
-if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then
-LDFLAGS="$LDFLAGS -L./lib/termcap"
-TERMCAP_LIB="./lib/termcap/libtermcap.a"
-TERMCAP_DEP="./lib/termcap/libtermcap.a"
-elif test $bash_cv_termcap_lib = libtermcap && test -z "$prefer_curses"; then
-TERMCAP_LIB=-ltermcap
-TERMCAP_DEP=
-elif test $bash_cv_termcap_lib = libtinfo; then
-TERMCAP_LIB=-ltinfo
-TERMCAP_DEP=
-elif test $bash_cv_termcap_lib = libncurses; then
-TERMCAP_LIB=-lncurses
-TERMCAP_DEP=
-else
-TERMCAP_LIB=-lcurses
-TERMCAP_DEP=
-fi
-
-if test "$TERMCAP_LIB" = "./lib/termcap/libtermcap.a"; then
- if test "$prefer_curses" = yes; then
- TERMCAP_LIB=-lcurses
- else
- TERMCAP_LIB=-ltermcap #default
- fi
-fi
-
-for ac_header in wctype.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:4569: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 4575 "configure"
-#include "confdefs.h"
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:4579: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:4585: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- eval "$as_ac_Header=yes"
-else
- echo "$as_me: failed program was:" >&5
- cat conftest.$ac_ext >&5
- eval "$as_ac_Header=no"
-fi
-rm -f conftest.err conftest.$ac_ext
-fi
-echo "$as_me:4604: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-EOF
-
-fi
-done
-
-for ac_header in wchar.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:4617: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 4623 "configure"
-#include "confdefs.h"
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:4627: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:4633: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- eval "$as_ac_Header=yes"
-else
- echo "$as_me: failed program was:" >&5
- cat conftest.$ac_ext >&5
- eval "$as_ac_Header=no"
-fi
-rm -f conftest.err conftest.$ac_ext
-fi
-echo "$as_me:4652: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-EOF
-
-fi
-done
-
-for ac_header in langinfo.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:4665: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 4671 "configure"
-#include "confdefs.h"
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:4675: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:4681: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- eval "$as_ac_Header=yes"
-else
- echo "$as_me: failed program was:" >&5
- cat conftest.$ac_ext >&5
- eval "$as_ac_Header=no"
-fi
-rm -f conftest.err conftest.$ac_ext
-fi
-echo "$as_me:4700: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-EOF
-
-fi
-done
-
-echo "$as_me:4710: checking for mbsrtowcs" >&5
-echo $ECHO_N "checking for mbsrtowcs... $ECHO_C" >&6
-if test "${ac_cv_func_mbsrtowcs+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 4716 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char mbsrtowcs (); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char mbsrtowcs ();
-char (*f) ();
-
-int
-main ()
-{
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined (__stub_mbsrtowcs) || defined (__stub___mbsrtowcs)
-choke me
-#else
-f = mbsrtowcs;
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:4747: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:4750: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:4753: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4756: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_func_mbsrtowcs=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_func_mbsrtowcs=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:4766: result: $ac_cv_func_mbsrtowcs" >&5
-echo "${ECHO_T}$ac_cv_func_mbsrtowcs" >&6
-if test $ac_cv_func_mbsrtowcs = yes; then
- cat >>confdefs.h <<\EOF
-#define HAVE_MBSRTOWCS 1
-EOF
-
-fi
-
-echo "$as_me:4775: checking for wcwidth" >&5
-echo $ECHO_N "checking for wcwidth... $ECHO_C" >&6
-if test "${ac_cv_func_wcwidth+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 4781 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char wcwidth (); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char wcwidth ();
-char (*f) ();
-
-int
-main ()
-{
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined (__stub_wcwidth) || defined (__stub___wcwidth)
-choke me
-#else
-f = wcwidth;
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:4812: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:4815: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:4818: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4821: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_func_wcwidth=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_func_wcwidth=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:4831: result: $ac_cv_func_wcwidth" >&5
-echo "${ECHO_T}$ac_cv_func_wcwidth" >&6
-if test $ac_cv_func_wcwidth = yes; then
- cat >>confdefs.h <<\EOF
-#define HAVE_WCWIDTH 1
-EOF
-
-fi
-
-echo "$as_me:4840: checking for mbstate_t" >&5
-echo $ECHO_N "checking for mbstate_t... $ECHO_C" >&6
-if test "${bash_cv_have_mbstate_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test "$cross_compiling" = yes; then
- { { echo "$as_me:4846: error: cannot run test program while cross compiling" >&5
-echo "$as_me: error: cannot run test program while cross compiling" >&2;}
- { (exit 1); exit 1; }; }
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 4851 "configure"
-#include "confdefs.h"
-
-#include <wchar.h>
-int
-main ()
-{
- mbstate_t ps;
- return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:4863: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:4866: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:4868: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4871: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- bash_cv_have_mbstate_t=yes
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-bash_cv_have_mbstate_t=no
-fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-echo "$as_me:4883: result: $bash_cv_have_mbstate_t" >&5
-echo "${ECHO_T}$bash_cv_have_mbstate_t" >&6
-if test $bash_cv_have_mbstate_t = yes; then
- cat >>confdefs.h <<\EOF
-#define HAVE_MBSTATE_T 1
-EOF
-
-fi
-
-echo "$as_me:4892: checking for nl_langinfo and CODESET" >&5
-echo $ECHO_N "checking for nl_langinfo and CODESET... $ECHO_C" >&6
-if test "${bash_cv_langinfo_codeset+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 4898 "configure"
-#include "confdefs.h"
-#include <langinfo.h>
-int
-main ()
-{
-char* cs = nl_langinfo(CODESET);
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:4910: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:4913: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:4916: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4919: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- bash_cv_langinfo_codeset=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-bash_cv_langinfo_codeset=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:4929: result: $bash_cv_langinfo_codeset" >&5
-echo "${ECHO_T}$bash_cv_langinfo_codeset" >&6
-if test $bash_cv_langinfo_codeset = yes; then
- cat >>confdefs.h <<\EOF
-#define HAVE_LANGINFO_CODESET 1
-EOF
-
-fi
-
-case "$host_cpu" in
-*cray*) LOCAL_CFLAGS=-DCRAY ;;
-*s390*) LOCAL_CFLAGS=-fsigned-char ;;
-esac
-
-case "$host_os" in
-isc*) LOCAL_CFLAGS=-Disc386 ;;
-esac
-
-# shared library configuration section
-#
-# Shared object configuration section. These values are generated by
-# ${srcdir}/support/shobj-conf
-#
-if test -f ${srcdir}/support/shobj-conf; then
- echo "$as_me:4953: checking configuration for building shared libraries" >&5
-echo $ECHO_N "checking configuration for building shared libraries... $ECHO_C" >&6
- eval `${CONFIG_SHELL-/bin/sh} ${srcdir}/support/shobj-conf -C "${CC}" -c ${host_cpu} -o ${host_os} -v ${host_vendor}`
-
- echo "$as_me:4957: result: $SHLIB_STATUS" >&5
-echo "${ECHO_T}$SHLIB_STATUS" >&6
-
- # SHLIB_STATUS is either `supported' or `unsupported'. If it's
- # `unsupported', turn off any default shared library building
- if test "$SHLIB_STATUS" = 'unsupported'; then
- opt_shared_libs=no
- fi
-
- # shared library versioning
- # quoted for m4 so I can use character classes
- SHLIB_MAJOR=`expr "$LIBVERSION" : '\([0-9]\)\..*'`
- SHLIB_MINOR=`expr "$LIBVERSION" : '[0-9]\.\([0-9]\).*'`
-
-fi
-
-if test "$opt_static_libs" = "yes"; then
- STATIC_TARGET=static
- STATIC_INSTALL_TARGET=install-static
-fi
-if test "$opt_shared_libs" = "yes"; then
- SHARED_TARGET=shared
- SHARED_INSTALL_TARGET=install-shared
-fi
-
-case "$host_os" in
-msdosdjgpp*) BUILD_DIR=`pwd.exe` ;; # to prevent //d/path/file
-*) BUILD_DIR=`pwd` ;;
-esac
-
-ac_config_files="$ac_config_files Makefile doc/Makefile examples/Makefile shlib/Makefile"
-ac_config_commands="$ac_config_commands default"
-cat >confcache <<\_ACEOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs, see configure's option --config-cache.
-# It is not useful on other systems. If it contains results you don't
-# want to keep, you may remove or edit it.
-#
-# config.status only pays attention to the cache file if you give it
-# the --recheck option to rerun configure.
-#
-# `ac_cv_env_foo' variables (set or unset) will be overriden when
-# loading this file, other *unset* `ac_cv_foo' will be assigned the
-# following values.
-
-_ACEOF
-
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, don't put newlines in cache variables' values.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-{
- (set) 2>&1 |
- case `(ac_space=' '; set | grep ac_space) 2>&1` in
- *ac_space=\ *)
- # `set' does not quote correctly, so add quotes (double-quote
- # substitution turns \\\\ into \\, and sed turns \\ into \).
- sed -n \
- "s/'/'\\\\''/g;
- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
- ;;
- *)
- # `set' quotes correctly as required by POSIX, so do not add quotes.
- sed -n \
- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
- ;;
- esac;
-} |
- sed '
- t clear
- : clear
- s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
- t end
- /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
- : end' >>confcache
-if cmp -s $cache_file confcache; then :; else
- if test -w $cache_file; then
- test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
- cat confcache >$cache_file
- else
- echo "not updating unwritable cache $cache_file"
- fi
-fi
-rm -f confcache
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-# VPATH may cause trouble with some makes, so we remove $(srcdir),
-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
-# trailing colons and then remove the whole line if VPATH becomes empty
-# (actually we leave an empty line to preserve line numbers).
-if test "x$srcdir" = x.; then
- ac_vpsub='/^[ ]*VPATH[ ]*=/{
-s/:*\$(srcdir):*/:/;
-s/:*\${srcdir}:*/:/;
-s/:*@srcdir@:*/:/;
-s/^\([^=]*=[ ]*\):*/\1/;
-s/:*$//;
-s/^[^=]*=[ ]*$//;
-}'
-fi
-
-DEFS=-DHAVE_CONFIG_H
-
-: ${CONFIG_STATUS=./config.status}
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ echo "$as_me:5068: creating $CONFIG_STATUS" >&5
-echo "$as_me: creating $CONFIG_STATUS" >&6;}
-cat >$CONFIG_STATUS <<_ACEOF
-#! $SHELL
-# Generated automatically by configure.
-# Run this file to recreate the current configuration.
-# Compiler output produced by configure, useful for debugging
-# configure, is in config.log if it exists.
-
-debug=false
-SHELL=\${CONFIG_SHELL-$SHELL}
-ac_cs_invocation="\$0 \$@"
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF
-# Be Bourne compatible
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
- emulate sh
- NULLCMD=:
-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
- set -o posix
-fi
-
-# Name of the executable.
-as_me=`echo "$0" |sed 's,.*[\\/],,'`
-
-if expr a : '\(a\)' >/dev/null 2>&1; then
- as_expr=expr
-else
- as_expr=false
-fi
-
-rm -f conf$$ conf$$.exe conf$$.file
-echo >conf$$.file
-if ln -s conf$$.file conf$$ 2>/dev/null; then
- # We could just check for DJGPP; but this test a) works b) is more generic
- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
- if test -f conf$$.exe; then
- # Don't use ln at all; we don't have any links
- as_ln_s='cp -p'
- else
- as_ln_s='ln -s'
- fi
-elif ln conf$$.file conf$$ 2>/dev/null; then
- as_ln_s=ln
-else
- as_ln_s='cp -p'
-fi
-rm -f conf$$ conf$$.exe conf$$.file
-
-as_executable_p="test -f"
-
-# Support unset when possible.
-if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
- as_unset=unset
-else
- as_unset=false
-fi
-
-# NLS nuisances.
-$as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; }
-$as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; }
-$as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; }
-$as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; }
-$as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; }
-$as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; }
-$as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; }
-$as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; }
-
-# IFS
-# We need space, tab and new line, in precisely that order.
-as_nl='
-'
-IFS=" $as_nl"
-
-# CDPATH.
-$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; }
-
-exec 6>&1
-
-_ACEOF
-
-# Files that config.status was made for.
-if test -n "$ac_config_files"; then
- echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
-fi
-
-if test -n "$ac_config_headers"; then
- echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
-fi
-
-if test -n "$ac_config_links"; then
- echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
-fi
-
-if test -n "$ac_config_commands"; then
- echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
-fi
-
-cat >>$CONFIG_STATUS <<\EOF
-
-ac_cs_usage="\
-\`$as_me' instantiates files from templates according to the
-current configuration.
-
-Usage: $0 [OPTIONS] [FILE]...
-
- -h, --help print this help, then exit
- -V, --version print version number, then exit
- -d, --debug don't remove temporary files
- --recheck update $as_me by reconfiguring in the same conditions
- --file=FILE[:TEMPLATE]
- instantiate the configuration file FILE
- --header=FILE[:TEMPLATE]
- instantiate the configuration header FILE
-
-Configuration files:
-$config_files
-
-Configuration headers:
-$config_headers
-
-Configuration commands:
-$config_commands
-
-Report bugs to <bug-autoconf@gnu.org>."
-EOF
-
-cat >>$CONFIG_STATUS <<EOF
-ac_cs_version="\\
-readline config.status 4.3
-configured by $0, generated by GNU Autoconf 2.52,
- with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
-
-Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
-Free Software Foundation, Inc.
-This config.status script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it."
-srcdir=$srcdir
-INSTALL="$INSTALL"
-EOF
-
-cat >>$CONFIG_STATUS <<\EOF
-# If no file are specified by the user, then we need to provide default
-# value. By we need to know if files were specified by the user.
-ac_need_defaults=:
-while test $# != 0
-do
- case $1 in
- --*=*)
- ac_option=`expr "x$1" : 'x\([^=]*\)='`
- ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
- shift
- set dummy "$ac_option" "$ac_optarg" ${1+"$@"}
- shift
- ;;
- -*);;
- *) # This is not an option, so the user has probably given explicit
- # arguments.
- ac_need_defaults=false;;
- esac
-
- case $1 in
- # Handling of the options.
-EOF
-cat >>$CONFIG_STATUS <<EOF
- -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
- echo "running $SHELL $0 " $ac_configure_args " --no-create --no-recursion"
- exec $SHELL $0 $ac_configure_args --no-create --no-recursion ;;
-EOF
-cat >>$CONFIG_STATUS <<\EOF
- --version | --vers* | -V )
- echo "$ac_cs_version"; exit 0 ;;
- --he | --h)
- # Conflict between --help and --header
- { { echo "$as_me:5244: error: ambiguous option: $1
-Try \`$0 --help' for more information." >&5
-echo "$as_me: error: ambiguous option: $1
-Try \`$0 --help' for more information." >&2;}
- { (exit 1); exit 1; }; };;
- --help | --hel | -h )
- echo "$ac_cs_usage"; exit 0 ;;
- --debug | --d* | -d )
- debug=: ;;
- --file | --fil | --fi | --f )
- shift
- CONFIG_FILES="$CONFIG_FILES $1"
- ac_need_defaults=false;;
- --header | --heade | --head | --hea )
- shift
- CONFIG_HEADERS="$CONFIG_HEADERS $1"
- ac_need_defaults=false;;
-
- # This is an error.
- -*) { { echo "$as_me:5263: error: unrecognized option: $1
-Try \`$0 --help' for more information." >&5
-echo "$as_me: error: unrecognized option: $1
-Try \`$0 --help' for more information." >&2;}
- { (exit 1); exit 1; }; } ;;
-
- *) ac_config_targets="$ac_config_targets $1" ;;
-
- esac
- shift
-done
-
-exec 5>>config.log
-cat >&5 << _ACEOF
-
-## ----------------------- ##
-## Running config.status. ##
-## ----------------------- ##
-
-This file was extended by $as_me (readline 4.3) 2.52, executed with
- CONFIG_FILES = $CONFIG_FILES
- CONFIG_HEADERS = $CONFIG_HEADERS
- CONFIG_LINKS = $CONFIG_LINKS
- CONFIG_COMMANDS = $CONFIG_COMMANDS
- > $ac_cs_invocation
-on `(hostname || uname -n) 2>/dev/null | sed 1q`
-
-_ACEOF
-EOF
-
-cat >>$CONFIG_STATUS <<\EOF
-for ac_config_target in $ac_config_targets
-do
- case "$ac_config_target" in
- # Handling of arguments.
- "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
- "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
- "examples/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;;
- "shlib/Makefile" ) CONFIG_FILES="$CONFIG_FILES shlib/Makefile" ;;
- "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
- "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
- *) { { echo "$as_me:5304: error: invalid argument: $ac_config_target" >&5
-echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
- { (exit 1); exit 1; }; };;
- esac
-done
-
-# If the user did not use the arguments to specify the items to instantiate,
-# then the envvar interface is used. Set only those that are not.
-# We use the long form for the default assignment because of an extremely
-# bizarre bug on SunOS 4.1.3.
-if $ac_need_defaults; then
- test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
- test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
- test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
-fi
-
-# Create a temporary directory, and hook for its removal unless debugging.
-$debug ||
-{
- trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
- trap '{ (exit 1); exit 1; }' 1 2 13 15
-}
-
-# Create a (secure) tmp directory for tmp files.
-: ${TMPDIR=/tmp}
-{
- tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` &&
- test -n "$tmp" && test -d "$tmp"
-} ||
-{
- tmp=$TMPDIR/cs$$-$RANDOM
- (umask 077 && mkdir $tmp)
-} ||
-{
- echo "$me: cannot create a temporary directory in $TMPDIR" >&2
- { (exit 1); exit 1; }
-}
-
-EOF
-
-cat >>$CONFIG_STATUS <<EOF
-
-#
-# CONFIG_FILES section.
-#
-
-# No need to generate the scripts if there are no CONFIG_FILES.
-# This happens for instance when ./config.status config.h
-if test -n "\$CONFIG_FILES"; then
- # Protect against being on the right side of a sed subst in config.status.
- sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
- s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
-s,@SHELL@,$SHELL,;t t
-s,@exec_prefix@,$exec_prefix,;t t
-s,@prefix@,$prefix,;t t
-s,@program_transform_name@,$program_transform_name,;t t
-s,@bindir@,$bindir,;t t
-s,@sbindir@,$sbindir,;t t
-s,@libexecdir@,$libexecdir,;t t
-s,@datadir@,$datadir,;t t
-s,@sysconfdir@,$sysconfdir,;t t
-s,@sharedstatedir@,$sharedstatedir,;t t
-s,@localstatedir@,$localstatedir,;t t
-s,@libdir@,$libdir,;t t
-s,@includedir@,$includedir,;t t
-s,@oldincludedir@,$oldincludedir,;t t
-s,@infodir@,$infodir,;t t
-s,@mandir@,$mandir,;t t
-s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t
-s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
-s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
-s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t
-s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
-s,@build_alias@,$build_alias,;t t
-s,@host_alias@,$host_alias,;t t
-s,@target_alias@,$target_alias,;t t
-s,@ECHO_C@,$ECHO_C,;t t
-s,@ECHO_N@,$ECHO_N,;t t
-s,@ECHO_T@,$ECHO_T,;t t
-s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
-s,@DEFS@,$DEFS,;t t
-s,@LIBS@,$LIBS,;t t
-s,@build@,$build,;t t
-s,@build_cpu@,$build_cpu,;t t
-s,@build_vendor@,$build_vendor,;t t
-s,@build_os@,$build_os,;t t
-s,@host@,$host,;t t
-s,@host_cpu@,$host_cpu,;t t
-s,@host_vendor@,$host_vendor,;t t
-s,@host_os@,$host_os,;t t
-s,@SET_MAKE@,$SET_MAKE,;t t
-s,@CC@,$CC,;t t
-s,@CFLAGS@,$CFLAGS,;t t
-s,@LDFLAGS@,$LDFLAGS,;t t
-s,@CPPFLAGS@,$CPPFLAGS,;t t
-s,@ac_ct_CC@,$ac_ct_CC,;t t
-s,@EXEEXT@,$EXEEXT,;t t
-s,@OBJEXT@,$OBJEXT,;t t
-s,@CPP@,$CPP,;t t
-s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
-s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
-s,@INSTALL_DATA@,$INSTALL_DATA,;t t
-s,@AR@,$AR,;t t
-s,@RANLIB@,$RANLIB,;t t
-s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
-s,@MAKE_SHELL@,$MAKE_SHELL,;t t
-s,@SHOBJ_CC@,$SHOBJ_CC,;t t
-s,@SHOBJ_CFLAGS@,$SHOBJ_CFLAGS,;t t
-s,@SHOBJ_LD@,$SHOBJ_LD,;t t
-s,@SHOBJ_LDFLAGS@,$SHOBJ_LDFLAGS,;t t
-s,@SHOBJ_XLDFLAGS@,$SHOBJ_XLDFLAGS,;t t
-s,@SHOBJ_LIBS@,$SHOBJ_LIBS,;t t
-s,@SHOBJ_STATUS@,$SHOBJ_STATUS,;t t
-s,@SHLIB_STATUS@,$SHLIB_STATUS,;t t
-s,@SHLIB_XLDFLAGS@,$SHLIB_XLDFLAGS,;t t
-s,@SHLIB_LIBSUFF@,$SHLIB_LIBSUFF,;t t
-s,@SHLIB_LIBVERSION@,$SHLIB_LIBVERSION,;t t
-s,@SHLIB_LIBS@,$SHLIB_LIBS,;t t
-s,@SHLIB_MAJOR@,$SHLIB_MAJOR,;t t
-s,@SHLIB_MINOR@,$SHLIB_MINOR,;t t
-s,@STATIC_TARGET@,$STATIC_TARGET,;t t
-s,@SHARED_TARGET@,$SHARED_TARGET,;t t
-s,@STATIC_INSTALL_TARGET@,$STATIC_INSTALL_TARGET,;t t
-s,@SHARED_INSTALL_TARGET@,$SHARED_INSTALL_TARGET,;t t
-s,@BUILD_DIR@,$BUILD_DIR,;t t
-s,@LOCAL_CFLAGS@,$LOCAL_CFLAGS,;t t
-s,@LOCAL_LDFLAGS@,$LOCAL_LDFLAGS,;t t
-s,@LOCAL_DEFS@,$LOCAL_DEFS,;t t
-s,@ARFLAGS@,$ARFLAGS,;t t
-s,@LIBVERSION@,$LIBVERSION,;t t
-s,@TERMCAP_LIB@,$TERMCAP_LIB,;t t
-CEOF
-
-EOF
-
- cat >>$CONFIG_STATUS <<\EOF
- # Split the substitutions into bite-sized pieces for seds with
- # small command number limits, like on Digital OSF/1 and HP-UX.
- ac_max_sed_lines=48
- ac_sed_frag=1 # Number of current file.
- ac_beg=1 # First line for current file.
- ac_end=$ac_max_sed_lines # Line after last line for current file.
- ac_more_lines=:
- ac_sed_cmds=
- while $ac_more_lines; do
- if test $ac_beg -gt 1; then
- sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
- else
- sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
- fi
- if test ! -s $tmp/subs.frag; then
- ac_more_lines=false
- else
- # The purpose of the label and of the branching condition is to
- # speed up the sed processing (if there are no `@' at all, there
- # is no need to browse any of the substitutions).
- # These are the two extra sed commands mentioned above.
- (echo ':t
- /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
- if test -z "$ac_sed_cmds"; then
- ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
- else
- ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
- fi
- ac_sed_frag=`expr $ac_sed_frag + 1`
- ac_beg=$ac_end
- ac_end=`expr $ac_end + $ac_max_sed_lines`
- fi
- done
- if test -z "$ac_sed_cmds"; then
- ac_sed_cmds=cat
- fi
-fi # test -n "$CONFIG_FILES"
-
-EOF
-cat >>$CONFIG_STATUS <<\EOF
-for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
- case $ac_file in
- - | *:- | *:-:* ) # input from stdin
- cat >$tmp/stdin
- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
- * ) ac_file_in=$ac_file.in ;;
- esac
-
- # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
- ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$ac_file" : 'X\(//\)[^/]' \| \
- X"$ac_file" : 'X\(//\)$' \| \
- X"$ac_file" : 'X\(/\)' \| \
- . : '\(.\)' 2>/dev/null ||
-echo X"$ac_file" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
- /^X\(\/\/\)$/{ s//\1/; q; }
- /^X\(\/\).*/{ s//\1/; q; }
- s/.*/./; q'`
- if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
- { case "$ac_dir" in
- [\\/]* | ?:[\\/]* ) as_incr_dir=;;
- *) as_incr_dir=.;;
-esac
-as_dummy="$ac_dir"
-for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do
- case $as_mkdir_dir in
- # Skip DOS drivespec
- ?:) as_incr_dir=$as_mkdir_dir ;;
- *)
- as_incr_dir=$as_incr_dir/$as_mkdir_dir
- test -d "$as_incr_dir" || mkdir "$as_incr_dir"
- ;;
- esac
-done; }
-
- ac_dir_suffix="/`echo $ac_dir|sed 's,^\./,,'`"
- # A "../" for each directory in $ac_dir_suffix.
- ac_dots=`echo "$ac_dir_suffix" | sed 's,/[^/]*,../,g'`
- else
- ac_dir_suffix= ac_dots=
- fi
-
- case $srcdir in
- .) ac_srcdir=.
- if test -z "$ac_dots"; then
- ac_top_srcdir=.
- else
- ac_top_srcdir=`echo $ac_dots | sed 's,/$,,'`
- fi ;;
- [\\/]* | ?:[\\/]* )
- ac_srcdir=$srcdir$ac_dir_suffix;
- ac_top_srcdir=$srcdir ;;
- *) # Relative path.
- ac_srcdir=$ac_dots$srcdir$ac_dir_suffix
- ac_top_srcdir=$ac_dots$srcdir ;;
- esac
-
- case $INSTALL in
- [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
- *) ac_INSTALL=$ac_dots$INSTALL ;;
- esac
-
- if test x"$ac_file" != x-; then
- { echo "$as_me:5549: creating $ac_file" >&5
-echo "$as_me: creating $ac_file" >&6;}
- rm -f "$ac_file"
- fi
- # Let's still pretend it is `configure' which instantiates (i.e., don't
- # use $as_me), people would be surprised to read:
- # /* config.h. Generated automatically by config.status. */
- configure_input="Generated automatically from `echo $ac_file_in |
- sed 's,.*/,,'` by configure."
-
- # First look for the input files in the build tree, otherwise in the
- # src tree.
- ac_file_inputs=`IFS=:
- for f in $ac_file_in; do
- case $f in
- -) echo $tmp/stdin ;;
- [\\/$]*)
- # Absolute (can't be DOS-style, as IFS=:)
- test -f "$f" || { { echo "$as_me:5567: error: cannot find input file: $f" >&5
-echo "$as_me: error: cannot find input file: $f" >&2;}
- { (exit 1); exit 1; }; }
- echo $f;;
- *) # Relative
- if test -f "$f"; then
- # Build tree
- echo $f
- elif test -f "$srcdir/$f"; then
- # Source tree
- echo $srcdir/$f
- else
- # /dev/null tree
- { { echo "$as_me:5580: error: cannot find input file: $f" >&5
-echo "$as_me: error: cannot find input file: $f" >&2;}
- { (exit 1); exit 1; }; }
- fi;;
- esac
- done` || { (exit 1); exit 1; }
-EOF
-cat >>$CONFIG_STATUS <<EOF
- sed "$ac_vpsub
-$extrasub
-EOF
-cat >>$CONFIG_STATUS <<\EOF
-:t
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-s,@configure_input@,$configure_input,;t t
-s,@srcdir@,$ac_srcdir,;t t
-s,@top_srcdir@,$ac_top_srcdir,;t t
-s,@INSTALL@,$ac_INSTALL,;t t
-" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
- rm -f $tmp/stdin
- if test x"$ac_file" != x-; then
- mv $tmp/out $ac_file
- else
- cat $tmp/out
- rm -f $tmp/out
- fi
-
-done
-EOF
-cat >>$CONFIG_STATUS <<\EOF
-
-#
-# CONFIG_HEADER section.
-#
-
-# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
-# NAME is the cpp macro being defined and VALUE is the value it is being given.
-#
-# ac_d sets the value in "#define NAME VALUE" lines.
-ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)'
-ac_dB='[ ].*$,\1#\2'
-ac_dC=' '
-ac_dD=',;t'
-# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
-ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
-ac_uB='$,\1#\2define\3'
-ac_uC=' '
-ac_uD=',;t'
-
-for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
- case $ac_file in
- - | *:- | *:-:* ) # input from stdin
- cat >$tmp/stdin
- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
- * ) ac_file_in=$ac_file.in ;;
- esac
-
- test x"$ac_file" != x- && { echo "$as_me:5641: creating $ac_file" >&5
-echo "$as_me: creating $ac_file" >&6;}
-
- # First look for the input files in the build tree, otherwise in the
- # src tree.
- ac_file_inputs=`IFS=:
- for f in $ac_file_in; do
- case $f in
- -) echo $tmp/stdin ;;
- [\\/$]*)
- # Absolute (can't be DOS-style, as IFS=:)
- test -f "$f" || { { echo "$as_me:5652: error: cannot find input file: $f" >&5
-echo "$as_me: error: cannot find input file: $f" >&2;}
- { (exit 1); exit 1; }; }
- echo $f;;
- *) # Relative
- if test -f "$f"; then
- # Build tree
- echo $f
- elif test -f "$srcdir/$f"; then
- # Source tree
- echo $srcdir/$f
- else
- # /dev/null tree
- { { echo "$as_me:5665: error: cannot find input file: $f" >&5
-echo "$as_me: error: cannot find input file: $f" >&2;}
- { (exit 1); exit 1; }; }
- fi;;
- esac
- done` || { (exit 1); exit 1; }
- # Remove the trailing spaces.
- sed 's/[ ]*$//' $ac_file_inputs >$tmp/in
-
-EOF
-
-# Transform confdefs.h into two sed scripts, `conftest.defines' and
-# `conftest.undefs', that substitutes the proper values into
-# config.h.in to produce config.h. The first handles `#define'
-# templates, and the second `#undef' templates.
-# And first: Protect against being on the right side of a sed subst in
-# config.status. Protect against being in an unquoted here document
-# in config.status.
-rm -f conftest.defines conftest.undefs
-# Using a here document instead of a string reduces the quoting nightmare.
-# Putting comments in sed scripts is not portable.
-#
-# `end' is used to avoid that the second main sed command (meant for
-# 0-ary CPP macros) applies to n-ary macro definitions.
-# See the Autoconf documentation for `clear'.
-cat >confdef2sed.sed <<\EOF
-s/[\\&,]/\\&/g
-s,[\\$`],\\&,g
-t clear
-: clear
-s,^[ ]*#[ ]*define[ ][ ]*\(\([^ (][^ (]*\)([^)]*)\)[ ]*\(.*\)$,${ac_dA}\2${ac_dB}\1${ac_dC}\3${ac_dD},gp
-t end
-s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
-: end
-EOF
-# If some macros were called several times there might be several times
-# the same #defines, which is useless. Nevertheless, we may not want to
-# sort them, since we want the *last* AC-DEFINE to be honored.
-uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines
-sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs
-rm -f confdef2sed.sed
-
-# This sed command replaces #undef with comments. This is necessary, for
-# example, in the case of _POSIX_SOURCE, which is predefined and required
-# on some systems where configure will not decide to define it.
-cat >>conftest.undefs <<\EOF
-s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
-EOF
-
-# Break up conftest.defines because some shells have a limit on the size
-# of here documents, and old seds have small limits too (100 cmds).
-echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
-echo ' if egrep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
-echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
-echo ' :' >>$CONFIG_STATUS
-rm -f conftest.tail
-while grep . conftest.defines >/dev/null
-do
- # Write a limited-size here document to $tmp/defines.sed.
- echo ' cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
- # Speed up: don't consider the non `#define' lines.
- echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS
- # Work around the forget-to-reset-the-flag bug.
- echo 't clr' >>$CONFIG_STATUS
- echo ': clr' >>$CONFIG_STATUS
- sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS
- echo 'CEOF
- sed -f $tmp/defines.sed $tmp/in >$tmp/out
- rm -f $tmp/in
- mv $tmp/out $tmp/in
-' >>$CONFIG_STATUS
- sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail
- rm -f conftest.defines
- mv conftest.tail conftest.defines
-done
-rm -f conftest.defines
-echo ' fi # egrep' >>$CONFIG_STATUS
-echo >>$CONFIG_STATUS
-
-# Break up conftest.undefs because some shells have a limit on the size
-# of here documents, and old seds have small limits too (100 cmds).
-echo ' # Handle all the #undef templates' >>$CONFIG_STATUS
-rm -f conftest.tail
-while grep . conftest.undefs >/dev/null
-do
- # Write a limited-size here document to $tmp/undefs.sed.
- echo ' cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
- # Speed up: don't consider the non `#undef'
- echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS
- # Work around the forget-to-reset-the-flag bug.
- echo 't clr' >>$CONFIG_STATUS
- echo ': clr' >>$CONFIG_STATUS
- sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS
- echo 'CEOF
- sed -f $tmp/undefs.sed $tmp/in >$tmp/out
- rm -f $tmp/in
- mv $tmp/out $tmp/in
-' >>$CONFIG_STATUS
- sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail
- rm -f conftest.undefs
- mv conftest.tail conftest.undefs
-done
-rm -f conftest.undefs
-
-cat >>$CONFIG_STATUS <<\EOF
- # Let's still pretend it is `configure' which instantiates (i.e., don't
- # use $as_me), people would be surprised to read:
- # /* config.h. Generated automatically by config.status. */
- if test x"$ac_file" = x-; then
- echo "/* Generated automatically by configure. */" >$tmp/config.h
- else
- echo "/* $ac_file. Generated automatically by configure. */" >$tmp/config.h
- fi
- cat $tmp/in >>$tmp/config.h
- rm -f $tmp/in
- if test x"$ac_file" != x-; then
- if cmp -s $ac_file $tmp/config.h 2>/dev/null; then
- { echo "$as_me:5782: $ac_file is unchanged" >&5
-echo "$as_me: $ac_file is unchanged" >&6;}
- else
- ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$ac_file" : 'X\(//\)[^/]' \| \
- X"$ac_file" : 'X\(//\)$' \| \
- X"$ac_file" : 'X\(/\)' \| \
- . : '\(.\)' 2>/dev/null ||
-echo X"$ac_file" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
- /^X\(\/\/\)$/{ s//\1/; q; }
- /^X\(\/\).*/{ s//\1/; q; }
- s/.*/./; q'`
- if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
- { case "$ac_dir" in
- [\\/]* | ?:[\\/]* ) as_incr_dir=;;
- *) as_incr_dir=.;;
-esac
-as_dummy="$ac_dir"
-for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do
- case $as_mkdir_dir in
- # Skip DOS drivespec
- ?:) as_incr_dir=$as_mkdir_dir ;;
- *)
- as_incr_dir=$as_incr_dir/$as_mkdir_dir
- test -d "$as_incr_dir" || mkdir "$as_incr_dir"
- ;;
- esac
-done; }
-
- fi
- rm -f $ac_file
- mv $tmp/config.h $ac_file
- fi
- else
- cat $tmp/config.h
- rm -f $tmp/config.h
- fi
-done
-EOF
-cat >>$CONFIG_STATUS <<\EOF
-
-#
-# CONFIG_COMMANDS section.
-#
-for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue
- ac_dest=`echo "$ac_file" | sed 's,:.*,,'`
- ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'`
-
- case $ac_dest in
- default )
-# Makefile uses this timestamp file to record whether config.h is up to date.
-echo > stamp-h
- ;;
- esac
-done
-EOF
-
-cat >>$CONFIG_STATUS <<\EOF
-
-{ (exit 0); exit 0; }
-EOF
-chmod +x $CONFIG_STATUS
-ac_clean_files=$ac_clean_files_save
-
-# configure is writing to config.log, and then calls config.status.
-# config.status does its own redirection, appending to config.log.
-# Unfortunately, on DOS this fails, as config.log is still kept open
-# by configure, so config.status won't be able to write to it; its
-# output is simply discarded. So we exec the FD to /dev/null,
-# effectively closing config.log, so it can be properly (re)opened and
-# appended to by config.status. When coming back to configure, we
-# need to make the FD available again.
-if test "$no_create" != yes; then
- ac_cs_success=:
- exec 5>/dev/null
- $SHELL $CONFIG_STATUS || ac_cs_success=false
- exec 5>>config.log
- # Use ||, not &&, to avoid exiting from the if with $? = 1, which
- # would make configure fail if this is the last instruction.
- $ac_cs_success || { (exit 1); exit 1; }
-fi
-
diff --git a/readline-4.3.orig/configure.in b/readline-4.3.orig/configure.in
deleted file mode 100644
index bc78f8a..0000000
--- a/readline-4.3.orig/configure.in
+++ /dev/null
@@ -1,206 +0,0 @@
-dnl
-dnl Configure script for readline library
-dnl
-dnl report bugs to chet@po.cwru.edu
-dnl
-dnl Process this file with autoconf to produce a configure script.
-AC_REVISION([for Readline 4.3, version 2.45, from autoconf version] AC_ACVERSION)
-
-AC_INIT(readline, 4.3, bug-readline@gnu.org)
-
-dnl make sure we are using a recent autoconf version
-AC_PREREQ(2.50)
-
-AC_CONFIG_SRCDIR(readline.h)
-AC_CONFIG_AUX_DIR(./support)
-AC_CONFIG_HEADERS(config.h)
-
-dnl update the value of RL_READLINE_VERSION in readline.h when this changes
-LIBVERSION=4.3
-
-AC_CANONICAL_HOST
-
-dnl configure defaults
-opt_curses=no
-
-dnl arguments to configure
-AC_ARG_WITH(curses, AC_HELP_STRING([--with-curses], [use the curses library instead of the termcap library]), opt_curses=$withval)
-
-if test "$opt_curses" = "yes"; then
- prefer_curses=yes
-fi
-
-dnl option parsing for optional features
-opt_static_libs=yes
-opt_shared_libs=yes
-
-AC_ARG_ENABLE(shared, AC_HELP_STRING([--enable-shared], [build shared libraries [[default=YES]]]), opt_shared_libs=$enableval)
-AC_ARG_ENABLE(static, AC_HELP_STRING([--enable-static], [build static libraries [[default=YES]]]), opt_static_libs=$enableval)
-
-echo ""
-echo "Beginning configuration for readline-$LIBVERSION for ${host_cpu}-${host_vendor}-${host_os}"
-echo ""
-
-# We want these before the checks, so the checks can modify their values.
-test -z "$CFLAGS" && CFLAGS=-g auto_cflags=1
-
-AC_PROG_MAKE_SET
-AC_PROG_CC
-dnl AC_AIX
-AC_MINIX
-
-# If we're using gcc and the user hasn't specified CFLAGS, add -O to CFLAGS.
-test -n "$GCC" && test -n "$auto_cflags" && CFLAGS="$CFLAGS -O"
-
-AC_PROG_GCC_TRADITIONAL
-AC_PROG_INSTALL
-AC_CHECK_PROG(AR, ar, , ar)
-dnl Set default for ARFLAGS, since autoconf does not have a macro for it.
-dnl This allows people to set it when running configure or make
-test -n "$ARFLAGS" || ARFLAGS="cr"
-AC_PROG_RANLIB
-
-MAKE_SHELL=/bin/sh
-AC_SUBST(MAKE_SHELL)
-
-AC_C_CONST
-AC_C_PROTOTYPES
-AC_C_CHAR_UNSIGNED
-
-AC_TYPE_SIGNAL
-
-AC_TYPE_SIZE_T
-AC_CHECK_TYPE(ssize_t, int)
-
-AC_HEADER_STAT
-AC_HEADER_DIRENT
-
-AC_CHECK_FUNCS(lstat memmove putenv select setenv setlocale \
- strcasecmp strpbrk tcgetattr vsnprintf isascii isxdigit)
-
-AC_FUNC_STRCOLL
-
-AC_CHECK_HEADERS(unistd.h stdlib.h varargs.h stdarg.h string.h strings.h \
- limits.h sys/ptem.h sys/pte.h sys/stream.h sys/select.h \
- termcap.h termios.h termio.h sys/file.h locale.h memory.h )
-
-BASH_SYS_SIGNAL_VINTAGE
-BASH_SYS_REINSTALL_SIGHANDLERS
-
-BASH_FUNC_POSIX_SETJMP
-BASH_FUNC_LSTAT
-BASH_FUNC_STRCOLL
-
-BASH_CHECK_GETPW_FUNCS
-
-AC_HEADER_TIOCGWINSZ
-
-BASH_TYPE_SIGHANDLER
-BASH_HAVE_TIOCSTAT
-BASH_HAVE_FIONREAD
-BASH_CHECK_SPEED_T
-BASH_STRUCT_WINSIZE
-BASH_STRUCT_DIRENT_D_INO
-BASH_STRUCT_DIRENT_D_FILENO
-
-dnl yuck
-case "$host_os" in
-aix*) prefer_curses=yes ;;
-esac
-BASH_CHECK_LIB_TERMCAP
-if test "$TERMCAP_LIB" = "./lib/termcap/libtermcap.a"; then
- if test "$prefer_curses" = yes; then
- TERMCAP_LIB=-lcurses
- else
- TERMCAP_LIB=-ltermcap #default
- fi
-fi
-
-BASH_CHECK_MULTIBYTE
-
-case "$host_cpu" in
-*cray*) LOCAL_CFLAGS=-DCRAY ;;
-*s390*) LOCAL_CFLAGS=-fsigned-char ;;
-esac
-
-case "$host_os" in
-isc*) LOCAL_CFLAGS=-Disc386 ;;
-esac
-
-# shared library configuration section
-#
-# Shared object configuration section. These values are generated by
-# ${srcdir}/support/shobj-conf
-#
-if test -f ${srcdir}/support/shobj-conf; then
- AC_MSG_CHECKING(configuration for building shared libraries)
- eval `${CONFIG_SHELL-/bin/sh} ${srcdir}/support/shobj-conf -C "${CC}" -c ${host_cpu} -o ${host_os} -v ${host_vendor}`
- AC_SUBST(SHOBJ_CC)
- AC_SUBST(SHOBJ_CFLAGS)
- AC_SUBST(SHOBJ_LD)
- AC_SUBST(SHOBJ_LDFLAGS)
- AC_SUBST(SHOBJ_XLDFLAGS)
- AC_SUBST(SHOBJ_LIBS)
- AC_SUBST(SHOBJ_STATUS)
- AC_SUBST(SHLIB_STATUS)
- AC_SUBST(SHLIB_XLDFLAGS)
- AC_SUBST(SHLIB_LIBSUFF)
- AC_SUBST(SHLIB_LIBVERSION)
- AC_SUBST(SHLIB_LIBS)
- AC_MSG_RESULT($SHLIB_STATUS)
-
- # SHLIB_STATUS is either `supported' or `unsupported'. If it's
- # `unsupported', turn off any default shared library building
- if test "$SHLIB_STATUS" = 'unsupported'; then
- opt_shared_libs=no
- fi
-
- # shared library versioning
- # quoted for m4 so I can use character classes
- SHLIB_MAJOR=[`expr "$LIBVERSION" : '\([0-9]\)\..*'`]
- SHLIB_MINOR=[`expr "$LIBVERSION" : '[0-9]\.\([0-9]\).*'`]
- AC_SUBST(SHLIB_MAJOR)
- AC_SUBST(SHLIB_MINOR)
-fi
-
-if test "$opt_static_libs" = "yes"; then
- STATIC_TARGET=static
- STATIC_INSTALL_TARGET=install-static
-fi
-if test "$opt_shared_libs" = "yes"; then
- SHARED_TARGET=shared
- SHARED_INSTALL_TARGET=install-shared
-fi
-
-AC_SUBST(STATIC_TARGET)
-AC_SUBST(SHARED_TARGET)
-AC_SUBST(STATIC_INSTALL_TARGET)
-AC_SUBST(SHARED_INSTALL_TARGET)
-
-case "$host_os" in
-msdosdjgpp*) BUILD_DIR=`pwd.exe` ;; # to prevent //d/path/file
-*) BUILD_DIR=`pwd` ;;
-esac
-
-AC_SUBST(BUILD_DIR)
-
-AC_SUBST(CFLAGS)
-AC_SUBST(LOCAL_CFLAGS)
-AC_SUBST(LOCAL_LDFLAGS)
-AC_SUBST(LOCAL_DEFS)
-
-AC_SUBST(AR)
-AC_SUBST(ARFLAGS)
-
-AC_SUBST(host_cpu)
-AC_SUBST(host_os)
-
-AC_SUBST(LIBVERSION)
-
-AC_SUBST(TERMCAP_LIB)
-
-AC_OUTPUT([Makefile doc/Makefile examples/Makefile shlib/Makefile],
-[
-# Makefile uses this timestamp file to record whether config.h is up to date.
-echo > stamp-h
-])
diff --git a/readline-4.3.orig/display.c b/readline-4.3.orig/display.c
deleted file mode 100644
index 5150ea6..0000000
--- a/readline-4.3.orig/display.c
+++ /dev/null
@@ -1,2196 +0,0 @@
-/* display.c -- readline redisplay facility. */
-
-/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <sys/types.h>
-
-#if defined (HAVE_UNISTD_H)
-# include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-
-#include "posixstat.h"
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#include <stdio.h>
-
-/* System-specific feature definitions and include files. */
-#include "rldefs.h"
-#include "rlmbutil.h"
-
-/* Termcap library stuff. */
-#include "tcap.h"
-
-/* Some standard library routines. */
-#include "readline.h"
-#include "history.h"
-
-#include "rlprivate.h"
-#include "xmalloc.h"
-
-#if !defined (strchr) && !defined (__STDC__)
-extern char *strchr (), *strrchr ();
-#endif /* !strchr && !__STDC__ */
-
-#if defined (HACK_TERMCAP_MOTION)
-extern char *_rl_term_forward_char;
-#endif
-
-static void update_line PARAMS((char *, char *, int, int, int, int));
-static void space_to_eol PARAMS((int));
-static void delete_chars PARAMS((int));
-static void insert_some_chars PARAMS((char *, int, int));
-static void cr PARAMS((void));
-
-#if defined (HANDLE_MULTIBYTE)
-static int _rl_col_width PARAMS((char *, int, int));
-static int *_rl_wrapped_line;
-#else
-# define _rl_col_width(l, s, e) (((e) <= (s)) ? 0 : (e) - (s))
-#endif
-
-static int *inv_lbreaks, *vis_lbreaks;
-static int inv_lbsize, vis_lbsize;
-
-/* Heuristic used to decide whether it is faster to move from CUR to NEW
- by backing up or outputting a carriage return and moving forward. */
-#define CR_FASTER(new, cur) (((new) + 1) < ((cur) - (new)))
-
-/* **************************************************************** */
-/* */
-/* Display stuff */
-/* */
-/* **************************************************************** */
-
-/* This is the stuff that is hard for me. I never seem to write good
- display routines in C. Let's see how I do this time. */
-
-/* (PWP) Well... Good for a simple line updater, but totally ignores
- the problems of input lines longer than the screen width.
-
- update_line and the code that calls it makes a multiple line,
- automatically wrapping line update. Careful attention needs
- to be paid to the vertical position variables. */
-
-/* Keep two buffers; one which reflects the current contents of the
- screen, and the other to draw what we think the new contents should
- be. Then compare the buffers, and make whatever changes to the
- screen itself that we should. Finally, make the buffer that we
- just drew into be the one which reflects the current contents of the
- screen, and place the cursor where it belongs.
-
- Commands that want to can fix the display themselves, and then let
- this function know that the display has been fixed by setting the
- RL_DISPLAY_FIXED variable. This is good for efficiency. */
-
-/* Application-specific redisplay function. */
-rl_voidfunc_t *rl_redisplay_function = rl_redisplay;
-
-/* Global variables declared here. */
-/* What YOU turn on when you have handled all redisplay yourself. */
-int rl_display_fixed = 0;
-
-int _rl_suppress_redisplay = 0;
-
-/* The stuff that gets printed out before the actual text of the line.
- This is usually pointing to rl_prompt. */
-char *rl_display_prompt = (char *)NULL;
-
-/* Pseudo-global variables declared here. */
-/* The visible cursor position. If you print some text, adjust this. */
-int _rl_last_c_pos = 0;
-int _rl_last_v_pos = 0;
-
-/* Number of lines currently on screen minus 1. */
-int _rl_vis_botlin = 0;
-
-/* Variables used only in this file. */
-/* The last left edge of text that was displayed. This is used when
- doing horizontal scrolling. It shifts in thirds of a screenwidth. */
-static int last_lmargin;
-
-/* The line display buffers. One is the line currently displayed on
- the screen. The other is the line about to be displayed. */
-static char *visible_line = (char *)NULL;
-static char *invisible_line = (char *)NULL;
-
-/* A buffer for `modeline' messages. */
-static char msg_buf[128];
-
-/* Non-zero forces the redisplay even if we thought it was unnecessary. */
-static int forced_display;
-
-/* Default and initial buffer size. Can grow. */
-static int line_size = 1024;
-
-/* Variables to keep track of the expanded prompt string, which may
- include invisible characters. */
-
-static char *local_prompt, *local_prompt_prefix;
-static int prompt_visible_length, prompt_prefix_length;
-
-/* The number of invisible characters in the line currently being
- displayed on the screen. */
-static int visible_wrap_offset;
-
-/* The number of invisible characters in the prompt string. Static so it
- can be shared between rl_redisplay and update_line */
-static int wrap_offset;
-
-/* The index of the last invisible character in the prompt string. */
-static int prompt_last_invisible;
-
-/* The length (buffer offset) of the first line of the last (possibly
- multi-line) buffer displayed on the screen. */
-static int visible_first_line_len;
-
-/* Number of invisible characters on the first physical line of the prompt.
- Only valid when the number of physical characters in the prompt exceeds
- (or is equal to) _rl_screenwidth. */
-static int prompt_invis_chars_first_line;
-
-static int prompt_last_screen_line;
-
-/* Expand the prompt string S and return the number of visible
- characters in *LP, if LP is not null. This is currently more-or-less
- a placeholder for expansion. LIP, if non-null is a place to store the
- index of the last invisible character in the returned string. NIFLP,
- if non-zero, is a place to store the number of invisible characters in
- the first prompt line. */
-
-/* Current implementation:
- \001 (^A) start non-visible characters
- \002 (^B) end non-visible characters
- all characters except \001 and \002 (following a \001) are copied to
- the returned string; all characters except those between \001 and
- \002 are assumed to be `visible'. */
-
-static char *
-expand_prompt (pmt, lp, lip, niflp)
- char *pmt;
- int *lp, *lip, *niflp;
-{
- char *r, *ret, *p;
- int l, rl, last, ignoring, ninvis, invfl;
-
- /* Short-circuit if we can. */
- if (strchr (pmt, RL_PROMPT_START_IGNORE) == 0)
- {
- r = savestring (pmt);
- if (lp)
- *lp = strlen (r);
- return r;
- }
-
- l = strlen (pmt);
- r = ret = (char *)xmalloc (l + 1);
-
- invfl = 0; /* invisible chars in first line of prompt */
-
- for (rl = ignoring = last = ninvis = 0, p = pmt; p && *p; p++)
- {
- /* This code strips the invisible character string markers
- RL_PROMPT_START_IGNORE and RL_PROMPT_END_IGNORE */
- if (*p == RL_PROMPT_START_IGNORE)
- {
- ignoring++;
- continue;
- }
- else if (ignoring && *p == RL_PROMPT_END_IGNORE)
- {
- ignoring = 0;
- last = r - ret - 1;
- continue;
- }
- else
- {
- *r++ = *p;
- if (!ignoring)
- rl++;
- else
- ninvis++;
- if (rl == _rl_screenwidth)
- invfl = ninvis;
- }
- }
-
- if (rl < _rl_screenwidth)
- invfl = ninvis;
-
- *r = '\0';
- if (lp)
- *lp = rl;
- if (lip)
- *lip = last;
- if (niflp)
- *niflp = invfl;
- return ret;
-}
-
-/* Just strip out RL_PROMPT_START_IGNORE and RL_PROMPT_END_IGNORE from
- PMT and return the rest of PMT. */
-char *
-_rl_strip_prompt (pmt)
- char *pmt;
-{
- char *ret;
-
- ret = expand_prompt (pmt, (int *)NULL, (int *)NULL, (int *)NULL);
- return ret;
-}
-
-/*
- * Expand the prompt string into the various display components, if
- * necessary.
- *
- * local_prompt = expanded last line of string in rl_display_prompt
- * (portion after the final newline)
- * local_prompt_prefix = portion before last newline of rl_display_prompt,
- * expanded via expand_prompt
- * prompt_visible_length = number of visible characters in local_prompt
- * prompt_prefix_length = number of visible characters in local_prompt_prefix
- *
- * This function is called once per call to readline(). It may also be
- * called arbitrarily to expand the primary prompt.
- *
- * The return value is the number of visible characters on the last line
- * of the (possibly multi-line) prompt.
- */
-int
-rl_expand_prompt (prompt)
- char *prompt;
-{
- char *p, *t;
- int c;
-
- /* Clear out any saved values. */
- FREE (local_prompt);
- FREE (local_prompt_prefix);
-
- local_prompt = local_prompt_prefix = (char *)0;
- prompt_last_invisible = prompt_visible_length = 0;
-
- if (prompt == 0 || *prompt == 0)
- return (0);
-
- p = strrchr (prompt, '\n');
- if (!p)
- {
- /* The prompt is only one logical line, though it might wrap. */
- local_prompt = expand_prompt (prompt, &prompt_visible_length,
- &prompt_last_invisible,
- &prompt_invis_chars_first_line);
- local_prompt_prefix = (char *)0;
- return (prompt_visible_length);
- }
- else
- {
- /* The prompt spans multiple lines. */
- t = ++p;
- local_prompt = expand_prompt (p, &prompt_visible_length,
- &prompt_last_invisible,
- &prompt_invis_chars_first_line);
- c = *t; *t = '\0';
- /* The portion of the prompt string up to and including the
- final newline is now null-terminated. */
- local_prompt_prefix = expand_prompt (prompt, &prompt_prefix_length,
- (int *)NULL,
- &prompt_invis_chars_first_line);
- *t = c;
- return (prompt_prefix_length);
- }
-}
-
-/* Initialize the VISIBLE_LINE and INVISIBLE_LINE arrays, and their associated
- arrays of line break markers. MINSIZE is the minimum size of VISIBLE_LINE
- and INVISIBLE_LINE; if it is greater than LINE_SIZE, LINE_SIZE is
- increased. If the lines have already been allocated, this ensures that
- they can hold at least MINSIZE characters. */
-static void
-init_line_structures (minsize)
- int minsize;
-{
- register int n;
-
- if (invisible_line == 0) /* initialize it */
- {
- if (line_size < minsize)
- line_size = minsize;
- visible_line = (char *)xmalloc (line_size);
- invisible_line = (char *)xmalloc (line_size);
- }
- else if (line_size < minsize) /* ensure it can hold MINSIZE chars */
- {
- line_size *= 2;
- if (line_size < minsize)
- line_size = minsize;
- visible_line = (char *)xrealloc (visible_line, line_size);
- invisible_line = (char *)xrealloc (invisible_line, line_size);
- }
-
- for (n = minsize; n < line_size; n++)
- {
- visible_line[n] = 0;
- invisible_line[n] = 1;
- }
-
- if (vis_lbreaks == 0)
- {
- /* should be enough. */
- inv_lbsize = vis_lbsize = 256;
- inv_lbreaks = (int *)xmalloc (inv_lbsize * sizeof (int));
- vis_lbreaks = (int *)xmalloc (vis_lbsize * sizeof (int));
-#if defined (HANDLE_MULTIBYTE)
- _rl_wrapped_line = (int *)xmalloc (vis_lbsize * sizeof (int));
-#endif
- inv_lbreaks[0] = vis_lbreaks[0] = 0;
- }
-}
-
-/* Basic redisplay algorithm. */
-void
-rl_redisplay ()
-{
- register int in, out, c, linenum, cursor_linenum;
- register char *line;
- int c_pos, inv_botlin, lb_botlin, lb_linenum;
- int newlines, lpos, temp;
- char *prompt_this_line;
-#if defined (HANDLE_MULTIBYTE)
- wchar_t wc;
- size_t wc_bytes;
- int wc_width;
- mbstate_t ps;
- int _rl_wrapped_multicolumn = 0;
-#endif
-
- if (!readline_echoing_p)
- return;
-
- if (!rl_display_prompt)
- rl_display_prompt = "";
-
- if (invisible_line == 0)
- {
- init_line_structures (0);
- rl_on_new_line ();
- }
-
- /* Draw the line into the buffer. */
- c_pos = -1;
-
- line = invisible_line;
- out = inv_botlin = 0;
-
- /* Mark the line as modified or not. We only do this for history
- lines. */
- if (_rl_mark_modified_lines && current_history () && rl_undo_list)
- {
- line[out++] = '*';
- line[out] = '\0';
- }
-
- /* If someone thought that the redisplay was handled, but the currently
- visible line has a different modification state than the one about
- to become visible, then correct the caller's misconception. */
- if (visible_line[0] != invisible_line[0])
- rl_display_fixed = 0;
-
- /* If the prompt to be displayed is the `primary' readline prompt (the
- one passed to readline()), use the values we have already expanded.
- If not, use what's already in rl_display_prompt. WRAP_OFFSET is the
- number of non-visible characters in the prompt string. */
- if (rl_display_prompt == rl_prompt || local_prompt)
- {
- int local_len = local_prompt ? strlen (local_prompt) : 0;
- if (local_prompt_prefix && forced_display)
- _rl_output_some_chars (local_prompt_prefix, strlen (local_prompt_prefix));
-
- if (local_len > 0)
- {
- temp = local_len + out + 2;
- if (temp >= line_size)
- {
- line_size = (temp + 1024) - (temp % 1024);
- visible_line = (char *)xrealloc (visible_line, line_size);
- line = invisible_line = (char *)xrealloc (invisible_line, line_size);
- }
- strncpy (line + out, local_prompt, local_len);
- out += local_len;
- }
- line[out] = '\0';
- wrap_offset = local_len - prompt_visible_length;
- }
- else
- {
- int pmtlen;
- prompt_this_line = strrchr (rl_display_prompt, '\n');
- if (!prompt_this_line)
- prompt_this_line = rl_display_prompt;
- else
- {
- prompt_this_line++;
- pmtlen = prompt_this_line - rl_display_prompt; /* temp var */
- if (forced_display)
- {
- _rl_output_some_chars (rl_display_prompt, pmtlen);
- /* Make sure we are at column zero even after a newline,
- regardless of the state of terminal output processing. */
- if (pmtlen < 2 || prompt_this_line[-2] != '\r')
- cr ();
- }
- }
-
- pmtlen = strlen (prompt_this_line);
- temp = pmtlen + out + 2;
- if (temp >= line_size)
- {
- line_size = (temp + 1024) - (temp % 1024);
- visible_line = (char *)xrealloc (visible_line, line_size);
- line = invisible_line = (char *)xrealloc (invisible_line, line_size);
- }
- strncpy (line + out, prompt_this_line, pmtlen);
- out += pmtlen;
- line[out] = '\0';
- wrap_offset = prompt_invis_chars_first_line = 0;
- }
-
-#define CHECK_INV_LBREAKS() \
- do { \
- if (newlines >= (inv_lbsize - 2)) \
- { \
- inv_lbsize *= 2; \
- inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \
- } \
- } while (0)
-
-#if defined (HANDLE_MULTIBYTE)
-#define CHECK_LPOS() \
- do { \
- lpos++; \
- if (lpos >= _rl_screenwidth) \
- { \
- if (newlines >= (inv_lbsize - 2)) \
- { \
- inv_lbsize *= 2; \
- inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \
- _rl_wrapped_line = (int *)xrealloc (_rl_wrapped_line, inv_lbsize * sizeof (int)); \
- } \
- inv_lbreaks[++newlines] = out; \
- _rl_wrapped_line[newlines] = _rl_wrapped_multicolumn; \
- lpos = 0; \
- } \
- } while (0)
-#else
-#define CHECK_LPOS() \
- do { \
- lpos++; \
- if (lpos >= _rl_screenwidth) \
- { \
- if (newlines >= (inv_lbsize - 2)) \
- { \
- inv_lbsize *= 2; \
- inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \
- } \
- inv_lbreaks[++newlines] = out; \
- lpos = 0; \
- } \
- } while (0)
-#endif
-
- /* inv_lbreaks[i] is where line i starts in the buffer. */
- inv_lbreaks[newlines = 0] = 0;
- lpos = out - wrap_offset;
-#if defined (HANDLE_MULTIBYTE)
- memset (_rl_wrapped_line, 0, vis_lbsize);
-#endif
-
- /* prompt_invis_chars_first_line is the number of invisible characters in
- the first physical line of the prompt.
- wrap_offset - prompt_invis_chars_first_line is the number of invis
- chars on the second line. */
-
- /* what if lpos is already >= _rl_screenwidth before we start drawing the
- contents of the command line? */
- while (lpos >= _rl_screenwidth)
- {
- /* fix from Darin Johnson <darin@acuson.com> for prompt string with
- invisible characters that is longer than the screen width. The
- prompt_invis_chars_first_line variable could be made into an array
- saying how many invisible characters there are per line, but that's
- probably too much work for the benefit gained. How many people have
- prompts that exceed two physical lines? */
- temp = ((newlines + 1) * _rl_screenwidth) +
-#if 0
- ((newlines == 0) ? prompt_invis_chars_first_line : 0) +
-#else
- ((newlines == 0 && local_prompt_prefix == 0) ? prompt_invis_chars_first_line : 0) +
-#endif
- ((newlines == 1) ? wrap_offset : 0);
-
- inv_lbreaks[++newlines] = temp;
- lpos -= _rl_screenwidth;
- }
-
- prompt_last_screen_line = newlines;
-
- /* Draw the rest of the line (after the prompt) into invisible_line, keeping
- track of where the cursor is (c_pos), the number of the line containing
- the cursor (lb_linenum), the last line number (lb_botlin and inv_botlin).
- It maintains an array of line breaks for display (inv_lbreaks).
- This handles expanding tabs for display and displaying meta characters. */
- lb_linenum = 0;
-#if defined (HANDLE_MULTIBYTE)
- in = 0;
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- memset (&ps, 0, sizeof (mbstate_t));
- wc_bytes = mbrtowc (&wc, rl_line_buffer, rl_end, &ps);
- }
- else
- wc_bytes = 1;
- while (in < rl_end)
-#else
- for (in = 0; in < rl_end; in++)
-#endif
- {
- c = (unsigned char)rl_line_buffer[in];
-
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- if (wc_bytes == (size_t)-1 || wc_bytes == (size_t)-2)
- {
- /* Byte sequence is invalid or shortened. Assume that the
- first byte represents a character. */
- wc_bytes = 1;
- /* Assume that a character occupies a single column. */
- wc_width = 1;
- memset (&ps, 0, sizeof (mbstate_t));
- }
- else if (wc_bytes == (size_t)0)
- break; /* Found '\0' */
- else
- {
- temp = wcwidth (wc);
- wc_width = (temp < 0) ? 1 : temp;
- }
- }
-#endif
-
- if (out + 8 >= line_size) /* XXX - 8 for \t */
- {
- line_size *= 2;
- visible_line = (char *)xrealloc (visible_line, line_size);
- invisible_line = (char *)xrealloc (invisible_line, line_size);
- line = invisible_line;
- }
-
- if (in == rl_point)
- {
- c_pos = out;
- lb_linenum = newlines;
- }
-
-#if defined (HANDLE_MULTIBYTE)
- if (META_CHAR (c) && _rl_output_meta_chars == 0) /* XXX - clean up */
-#else
- if (META_CHAR (c))
-#endif
- {
- if (_rl_output_meta_chars == 0)
- {
- sprintf (line + out, "\\%o", c);
-
- if (lpos + 4 >= _rl_screenwidth)
- {
- temp = _rl_screenwidth - lpos;
- CHECK_INV_LBREAKS ();
- inv_lbreaks[++newlines] = out + temp;
- lpos = 4 - temp;
- }
- else
- lpos += 4;
-
- out += 4;
- }
- else
- {
- line[out++] = c;
- CHECK_LPOS();
- }
- }
-#if defined (DISPLAY_TABS)
- else if (c == '\t')
- {
- register int newout;
-
-#if 0
- newout = (out | (int)7) + 1;
-#else
- newout = out + 8 - lpos % 8;
-#endif
- temp = newout - out;
- if (lpos + temp >= _rl_screenwidth)
- {
- register int temp2;
- temp2 = _rl_screenwidth - lpos;
- CHECK_INV_LBREAKS ();
- inv_lbreaks[++newlines] = out + temp2;
- lpos = temp - temp2;
- while (out < newout)
- line[out++] = ' ';
- }
- else
- {
- while (out < newout)
- line[out++] = ' ';
- lpos += temp;
- }
- }
-#endif
- else if (c == '\n' && _rl_horizontal_scroll_mode == 0 && _rl_term_up && *_rl_term_up)
- {
- line[out++] = '\0'; /* XXX - sentinel */
- CHECK_INV_LBREAKS ();
- inv_lbreaks[++newlines] = out;
- lpos = 0;
- }
- else if (CTRL_CHAR (c) || c == RUBOUT)
- {
- line[out++] = '^';
- CHECK_LPOS();
- line[out++] = CTRL_CHAR (c) ? UNCTRL (c) : '?';
- CHECK_LPOS();
- }
- else
- {
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- register int i;
-
- _rl_wrapped_multicolumn = 0;
-
- if (_rl_screenwidth < lpos + wc_width)
- for (i = lpos; i < _rl_screenwidth; i++)
- {
- /* The space will be removed in update_line() */
- line[out++] = ' ';
- _rl_wrapped_multicolumn++;
- CHECK_LPOS();
- }
- if (in == rl_point)
- {
- c_pos = out;
- lb_linenum = newlines;
- }
- for (i = in; i < in+wc_bytes; i++)
- line[out++] = rl_line_buffer[i];
- for (i = 0; i < wc_width; i++)
- CHECK_LPOS();
- }
- else
- {
- line[out++] = c;
- CHECK_LPOS();
- }
-#else
- line[out++] = c;
- CHECK_LPOS();
-#endif
- }
-
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- in += wc_bytes;
- wc_bytes = mbrtowc (&wc, rl_line_buffer + in, rl_end - in, &ps);
- }
- else
- in++;
-#endif
-
- }
- line[out] = '\0';
- if (c_pos < 0)
- {
- c_pos = out;
- lb_linenum = newlines;
- }
-
- inv_botlin = lb_botlin = newlines;
- CHECK_INV_LBREAKS ();
- inv_lbreaks[newlines+1] = out;
- cursor_linenum = lb_linenum;
-
- /* C_POS == position in buffer where cursor should be placed.
- CURSOR_LINENUM == line number where the cursor should be placed. */
-
- /* PWP: now is when things get a bit hairy. The visible and invisible
- line buffers are really multiple lines, which would wrap every
- (screenwidth - 1) characters. Go through each in turn, finding
- the changed region and updating it. The line order is top to bottom. */
-
- /* If we can move the cursor up and down, then use multiple lines,
- otherwise, let long lines display in a single terminal line, and
- horizontally scroll it. */
-
- if (_rl_horizontal_scroll_mode == 0 && _rl_term_up && *_rl_term_up)
- {
- int nleft, pos, changed_screen_line;
-
- if (!rl_display_fixed || forced_display)
- {
- forced_display = 0;
-
- /* If we have more than a screenful of material to display, then
- only display a screenful. We should display the last screen,
- not the first. */
- if (out >= _rl_screenchars)
- {
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- out = _rl_find_prev_mbchar (line, _rl_screenchars, MB_FIND_ANY);
- else
- out = _rl_screenchars - 1;
- }
-
- /* The first line is at character position 0 in the buffer. The
- second and subsequent lines start at inv_lbreaks[N], offset by
- OFFSET (which has already been calculated above). */
-
-#define W_OFFSET(line, offset) ((line) == 0 ? offset : 0)
-#define VIS_LLEN(l) ((l) > _rl_vis_botlin ? 0 : (vis_lbreaks[l+1] - vis_lbreaks[l]))
-#define INV_LLEN(l) (inv_lbreaks[l+1] - inv_lbreaks[l])
-#define VIS_CHARS(line) (visible_line + vis_lbreaks[line])
-#define VIS_LINE(line) ((line) > _rl_vis_botlin) ? "" : VIS_CHARS(line)
-#define INV_LINE(line) (invisible_line + inv_lbreaks[line])
-
- /* For each line in the buffer, do the updating display. */
- for (linenum = 0; linenum <= inv_botlin; linenum++)
- {
- update_line (VIS_LINE(linenum), INV_LINE(linenum), linenum,
- VIS_LLEN(linenum), INV_LLEN(linenum), inv_botlin);
-
- /* If this is the line with the prompt, we might need to
- compensate for invisible characters in the new line. Do
- this only if there is not more than one new line (which
- implies that we completely overwrite the old visible line)
- and the new line is shorter than the old. Make sure we are
- at the end of the new line before clearing. */
- if (linenum == 0 &&
- inv_botlin == 0 && _rl_last_c_pos == out &&
- (wrap_offset > visible_wrap_offset) &&
- (_rl_last_c_pos < visible_first_line_len))
- {
- nleft = _rl_screenwidth + wrap_offset - _rl_last_c_pos;
- if (nleft)
- _rl_clear_to_eol (nleft);
- }
-
- /* Since the new first line is now visible, save its length. */
- if (linenum == 0)
- visible_first_line_len = (inv_botlin > 0) ? inv_lbreaks[1] : out - wrap_offset;
- }
-
- /* We may have deleted some lines. If so, clear the left over
- blank ones at the bottom out. */
- if (_rl_vis_botlin > inv_botlin)
- {
- char *tt;
- for (; linenum <= _rl_vis_botlin; linenum++)
- {
- tt = VIS_CHARS (linenum);
- _rl_move_vert (linenum);
- _rl_move_cursor_relative (0, tt);
- _rl_clear_to_eol
- ((linenum == _rl_vis_botlin) ? strlen (tt) : _rl_screenwidth);
- }
- }
- _rl_vis_botlin = inv_botlin;
-
- /* CHANGED_SCREEN_LINE is set to 1 if we have moved to a
- different screen line during this redisplay. */
- changed_screen_line = _rl_last_v_pos != cursor_linenum;
- if (changed_screen_line)
- {
- _rl_move_vert (cursor_linenum);
- /* If we moved up to the line with the prompt using _rl_term_up,
- the physical cursor position on the screen stays the same,
- but the buffer position needs to be adjusted to account
- for invisible characters. */
- if (cursor_linenum == 0 && wrap_offset)
- _rl_last_c_pos += wrap_offset;
- }
-
- /* We have to reprint the prompt if it contains invisible
- characters, since it's not generally OK to just reprint
- the characters from the current cursor position. But we
- only need to reprint it if the cursor is before the last
- invisible character in the prompt string. */
- nleft = prompt_visible_length + wrap_offset;
- if (cursor_linenum == 0 && wrap_offset > 0 && _rl_last_c_pos > 0 &&
- _rl_last_c_pos <= prompt_last_invisible && local_prompt)
- {
-#if defined (__MSDOS__)
- putc ('\r', rl_outstream);
-#else
- if (_rl_term_cr)
- tputs (_rl_term_cr, 1, _rl_output_character_function);
-#endif
- _rl_output_some_chars (local_prompt, nleft);
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- _rl_last_c_pos = _rl_col_width(local_prompt, 0, nleft);
- else
- _rl_last_c_pos = nleft;
- }
-
- /* Where on that line? And where does that line start
- in the buffer? */
- pos = inv_lbreaks[cursor_linenum];
- /* nleft == number of characters in the line buffer between the
- start of the line and the cursor position. */
- nleft = c_pos - pos;
-
- /* Since _rl_backspace() doesn't know about invisible characters in the
- prompt, and there's no good way to tell it, we compensate for
- those characters here and call _rl_backspace() directly. */
- if (wrap_offset && cursor_linenum == 0 && nleft < _rl_last_c_pos)
- {
- _rl_backspace (_rl_last_c_pos - nleft);
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- _rl_last_c_pos = _rl_col_width (&visible_line[pos], 0, nleft);
- else
- _rl_last_c_pos = nleft;
- }
-
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- _rl_move_cursor_relative (nleft, &invisible_line[pos]);
- else if (nleft != _rl_last_c_pos)
- _rl_move_cursor_relative (nleft, &invisible_line[pos]);
- }
- }
- else /* Do horizontal scrolling. */
- {
-#define M_OFFSET(margin, offset) ((margin) == 0 ? offset : 0)
- int lmargin, ndisp, nleft, phys_c_pos, t;
-
- /* Always at top line. */
- _rl_last_v_pos = 0;
-
- /* Compute where in the buffer the displayed line should start. This
- will be LMARGIN. */
-
- /* The number of characters that will be displayed before the cursor. */
- ndisp = c_pos - wrap_offset;
- nleft = prompt_visible_length + wrap_offset;
- /* Where the new cursor position will be on the screen. This can be
- longer than SCREENWIDTH; if it is, lmargin will be adjusted. */
- phys_c_pos = c_pos - (last_lmargin ? last_lmargin : wrap_offset);
- t = _rl_screenwidth / 3;
-
- /* If the number of characters had already exceeded the screenwidth,
- last_lmargin will be > 0. */
-
- /* If the number of characters to be displayed is more than the screen
- width, compute the starting offset so that the cursor is about
- two-thirds of the way across the screen. */
- if (phys_c_pos > _rl_screenwidth - 2)
- {
- lmargin = c_pos - (2 * t);
- if (lmargin < 0)
- lmargin = 0;
- /* If the left margin would be in the middle of a prompt with
- invisible characters, don't display the prompt at all. */
- if (wrap_offset && lmargin > 0 && lmargin < nleft)
- lmargin = nleft;
- }
- else if (ndisp < _rl_screenwidth - 2) /* XXX - was -1 */
- lmargin = 0;
- else if (phys_c_pos < 1)
- {
- /* If we are moving back towards the beginning of the line and
- the last margin is no longer correct, compute a new one. */
- lmargin = ((c_pos - 1) / t) * t; /* XXX */
- if (wrap_offset && lmargin > 0 && lmargin < nleft)
- lmargin = nleft;
- }
- else
- lmargin = last_lmargin;
-
- /* If the first character on the screen isn't the first character
- in the display line, indicate this with a special character. */
- if (lmargin > 0)
- line[lmargin] = '<';
-
- /* If SCREENWIDTH characters starting at LMARGIN do not encompass
- the whole line, indicate that with a special character at the
- right edge of the screen. If LMARGIN is 0, we need to take the
- wrap offset into account. */
- t = lmargin + M_OFFSET (lmargin, wrap_offset) + _rl_screenwidth;
- if (t < out)
- line[t - 1] = '>';
-
- if (!rl_display_fixed || forced_display || lmargin != last_lmargin)
- {
- forced_display = 0;
- update_line (&visible_line[last_lmargin],
- &invisible_line[lmargin],
- 0,
- _rl_screenwidth + visible_wrap_offset,
- _rl_screenwidth + (lmargin ? 0 : wrap_offset),
- 0);
-
- /* If the visible new line is shorter than the old, but the number
- of invisible characters is greater, and we are at the end of
- the new line, we need to clear to eol. */
- t = _rl_last_c_pos - M_OFFSET (lmargin, wrap_offset);
- if ((M_OFFSET (lmargin, wrap_offset) > visible_wrap_offset) &&
- (_rl_last_c_pos == out) &&
- t < visible_first_line_len)
- {
- nleft = _rl_screenwidth - t;
- _rl_clear_to_eol (nleft);
- }
- visible_first_line_len = out - lmargin - M_OFFSET (lmargin, wrap_offset);
- if (visible_first_line_len > _rl_screenwidth)
- visible_first_line_len = _rl_screenwidth;
-
- _rl_move_cursor_relative (c_pos - lmargin, &invisible_line[lmargin]);
- last_lmargin = lmargin;
- }
- }
- fflush (rl_outstream);
-
- /* Swap visible and non-visible lines. */
- {
- char *vtemp = visible_line;
- int *itemp = vis_lbreaks, ntemp = vis_lbsize;
-
- visible_line = invisible_line;
- invisible_line = vtemp;
-
- vis_lbreaks = inv_lbreaks;
- inv_lbreaks = itemp;
-
- vis_lbsize = inv_lbsize;
- inv_lbsize = ntemp;
-
- rl_display_fixed = 0;
- /* If we are displaying on a single line, and last_lmargin is > 0, we
- are not displaying any invisible characters, so set visible_wrap_offset
- to 0. */
- if (_rl_horizontal_scroll_mode && last_lmargin)
- visible_wrap_offset = 0;
- else
- visible_wrap_offset = wrap_offset;
- }
-}
-
-/* PWP: update_line() is based on finding the middle difference of each
- line on the screen; vis:
-
- /old first difference
- /beginning of line | /old last same /old EOL
- v v v v
-old: eddie> Oh, my little gruntle-buggy is to me, as lurgid as
-new: eddie> Oh, my little buggy says to me, as lurgid as
- ^ ^ ^ ^
- \beginning of line | \new last same \new end of line
- \new first difference
-
- All are character pointers for the sake of speed. Special cases for
- no differences, as well as for end of line additions must be handled.
-
- Could be made even smarter, but this works well enough */
-static void
-update_line (old, new, current_line, omax, nmax, inv_botlin)
- register char *old, *new;
- int current_line, omax, nmax, inv_botlin;
-{
- register char *ofd, *ols, *oe, *nfd, *nls, *ne;
- int temp, lendiff, wsatend, od, nd;
- int current_invis_chars;
- int col_lendiff, col_temp;
-#if defined (HANDLE_MULTIBYTE)
- mbstate_t ps_new, ps_old;
- int new_offset, old_offset, tmp;
-#endif
-
- /* If we're at the right edge of a terminal that supports xn, we're
- ready to wrap around, so do so. This fixes problems with knowing
- the exact cursor position and cut-and-paste with certain terminal
- emulators. In this calculation, TEMP is the physical screen
- position of the cursor. */
- temp = _rl_last_c_pos - W_OFFSET(_rl_last_v_pos, visible_wrap_offset);
- if (temp == _rl_screenwidth && _rl_term_autowrap && !_rl_horizontal_scroll_mode
- && _rl_last_v_pos == current_line - 1)
- {
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- wchar_t wc;
- mbstate_t ps;
- int tempwidth, bytes;
- size_t ret;
-
- /* This fixes only double-column characters, but if the wrapped
- character comsumes more than three columns, spaces will be
- inserted in the string buffer. */
- if (_rl_wrapped_line[current_line] > 0)
- _rl_clear_to_eol (_rl_wrapped_line[current_line]);
-
- memset (&ps, 0, sizeof (mbstate_t));
- ret = mbrtowc (&wc, new, MB_CUR_MAX, &ps);
- if (ret == (size_t)-1 || ret == (size_t)-2)
- {
- tempwidth = 1;
- ret = 1;
- }
- else if (ret == 0)
- tempwidth = 0;
- else
- tempwidth = wcwidth (wc);
-
- if (tempwidth > 0)
- {
- int count;
- bytes = ret;
- for (count = 0; count < bytes; count++)
- putc (new[count], rl_outstream);
- _rl_last_c_pos = tempwidth;
- _rl_last_v_pos++;
- memset (&ps, 0, sizeof (mbstate_t));
- ret = mbrtowc (&wc, old, MB_CUR_MAX, &ps);
- if (ret != 0 && bytes != 0)
- {
- if (ret == (size_t)-1 || ret == (size_t)-2)
- memmove (old+bytes, old+1, strlen (old+1));
- else
- memmove (old+bytes, old+ret, strlen (old+ret));
- memcpy (old, new, bytes);
- }
- }
- else
- {
- putc (' ', rl_outstream);
- _rl_last_c_pos = 1;
- _rl_last_v_pos++;
- if (old[0] && new[0])
- old[0] = new[0];
- }
- }
- else
-#endif
- {
- if (new[0])
- putc (new[0], rl_outstream);
- else
- putc (' ', rl_outstream);
- _rl_last_c_pos = 1; /* XXX */
- _rl_last_v_pos++;
- if (old[0] && new[0])
- old[0] = new[0];
- }
- }
-
-
- /* Find first difference. */
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- memset (&ps_new, 0, sizeof(mbstate_t));
- memset (&ps_old, 0, sizeof(mbstate_t));
-
- new_offset = old_offset = 0;
- for (ofd = old, nfd = new;
- (ofd - old < omax) && *ofd &&
- _rl_compare_chars(old, old_offset, &ps_old, new, new_offset, &ps_new); )
- {
- old_offset = _rl_find_next_mbchar (old, old_offset, 1, MB_FIND_ANY);
- new_offset = _rl_find_next_mbchar (new, new_offset, 1, MB_FIND_ANY);
- ofd = old + old_offset;
- nfd = new + new_offset;
- }
- }
- else
-#endif
- for (ofd = old, nfd = new;
- (ofd - old < omax) && *ofd && (*ofd == *nfd);
- ofd++, nfd++)
- ;
-
- /* Move to the end of the screen line. ND and OD are used to keep track
- of the distance between ne and new and oe and old, respectively, to
- move a subtraction out of each loop. */
- for (od = ofd - old, oe = ofd; od < omax && *oe; oe++, od++);
- for (nd = nfd - new, ne = nfd; nd < nmax && *ne; ne++, nd++);
-
- /* If no difference, continue to next line. */
- if (ofd == oe && nfd == ne)
- return;
-
- wsatend = 1; /* flag for trailing whitespace */
-
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- ols = old + _rl_find_prev_mbchar (old, oe - old, MB_FIND_ANY);
- nls = new + _rl_find_prev_mbchar (new, ne - new, MB_FIND_ANY);
- while ((ols > ofd) && (nls > nfd))
- {
- memset (&ps_old, 0, sizeof (mbstate_t));
- memset (&ps_new, 0, sizeof (mbstate_t));
-
- _rl_adjust_point (old, ols - old, &ps_old);
- _rl_adjust_point (new, nls - new, &ps_new);
-
- if (_rl_compare_chars (old, ols - old, &ps_old, new, nls - new, &ps_new) == 0)
- break;
-
- if (*ols == ' ')
- wsatend = 0;
-
- ols = old + _rl_find_prev_mbchar (old, ols - old, MB_FIND_ANY);
- nls = new + _rl_find_prev_mbchar (new, nls - new, MB_FIND_ANY);
- }
- }
- else
- {
-#endif /* HANDLE_MULTIBYTE */
- ols = oe - 1; /* find last same */
- nls = ne - 1;
- while ((ols > ofd) && (nls > nfd) && (*ols == *nls))
- {
- if (*ols != ' ')
- wsatend = 0;
- ols--;
- nls--;
- }
-#if defined (HANDLE_MULTIBYTE)
- }
-#endif
-
- if (wsatend)
- {
- ols = oe;
- nls = ne;
- }
-#if defined (HANDLE_MULTIBYTE)
- /* This may not work for stateful encoding, but who cares? To handle
- stateful encoding properly, we have to scan each string from the
- beginning and compare. */
- else if (_rl_compare_chars (ols, 0, NULL, nls, 0, NULL) == 0)
-#else
- else if (*ols != *nls)
-#endif
- {
- if (*ols) /* don't step past the NUL */
- {
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- ols = old + _rl_find_next_mbchar (old, ols - old, 1, MB_FIND_ANY);
- else
- ols++;
- }
- if (*nls)
- {
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- nls = new + _rl_find_next_mbchar (new, nls - new, 1, MB_FIND_ANY);
- else
- nls++;
- }
- }
-
- /* count of invisible characters in the current invisible line. */
- current_invis_chars = W_OFFSET (current_line, wrap_offset);
- if (_rl_last_v_pos != current_line)
- {
- _rl_move_vert (current_line);
- if (current_line == 0 && visible_wrap_offset)
- _rl_last_c_pos += visible_wrap_offset;
- }
-
- /* If this is the first line and there are invisible characters in the
- prompt string, and the prompt string has not changed, and the current
- cursor position is before the last invisible character in the prompt,
- and the index of the character to move to is past the end of the prompt
- string, then redraw the entire prompt string. We can only do this
- reliably if the terminal supports a `cr' capability.
-
- This is not an efficiency hack -- there is a problem with redrawing
- portions of the prompt string if they contain terminal escape
- sequences (like drawing the `unbold' sequence without a corresponding
- `bold') that manifests itself on certain terminals. */
-
- lendiff = local_prompt ? strlen (local_prompt) : 0;
- od = ofd - old; /* index of first difference in visible line */
- if (current_line == 0 && !_rl_horizontal_scroll_mode &&
- _rl_term_cr && lendiff > prompt_visible_length && _rl_last_c_pos > 0 &&
- od >= lendiff && _rl_last_c_pos <= prompt_last_invisible)
- {
-#if defined (__MSDOS__)
- putc ('\r', rl_outstream);
-#else
- tputs (_rl_term_cr, 1, _rl_output_character_function);
-#endif
- _rl_output_some_chars (local_prompt, lendiff);
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- _rl_last_c_pos = _rl_col_width (local_prompt, 0, lendiff);
- else
- _rl_last_c_pos = lendiff;
- }
-
- _rl_move_cursor_relative (od, old);
-
- /* if (len (new) > len (old))
- lendiff == difference in buffer
- col_lendiff == difference on screen
- When not using multibyte characters, these are equal */
- lendiff = (nls - nfd) - (ols - ofd);
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- col_lendiff = _rl_col_width (new, nfd - new, nls - new) - _rl_col_width (old, ofd - old, ols - old);
- else
- col_lendiff = lendiff;
-
- /* If we are changing the number of invisible characters in a line, and
- the spot of first difference is before the end of the invisible chars,
- lendiff needs to be adjusted. */
- if (current_line == 0 && !_rl_horizontal_scroll_mode &&
- current_invis_chars != visible_wrap_offset)
- {
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- lendiff += visible_wrap_offset - current_invis_chars;
- col_lendiff += visible_wrap_offset - current_invis_chars;
- }
- else
- {
- lendiff += visible_wrap_offset - current_invis_chars;
- col_lendiff = lendiff;
- }
- }
-
- /* Insert (diff (len (old), len (new)) ch. */
- temp = ne - nfd;
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- col_temp = _rl_col_width (new, nfd - new, ne - new);
- else
- col_temp = temp;
-
- if (col_lendiff > 0) /* XXX - was lendiff */
- {
- /* Non-zero if we're increasing the number of lines. */
- int gl = current_line >= _rl_vis_botlin && inv_botlin > _rl_vis_botlin;
- /* Sometimes it is cheaper to print the characters rather than
- use the terminal's capabilities. If we're growing the number
- of lines, make sure we actually cause the new line to wrap
- around on auto-wrapping terminals. */
- if (_rl_terminal_can_insert && ((2 * col_temp) >= col_lendiff || _rl_term_IC) && (!_rl_term_autowrap || !gl))
- {
- /* If lendiff > prompt_visible_length and _rl_last_c_pos == 0 and
- _rl_horizontal_scroll_mode == 1, inserting the characters with
- _rl_term_IC or _rl_term_ic will screw up the screen because of the
- invisible characters. We need to just draw them. */
- if (*ols && (!_rl_horizontal_scroll_mode || _rl_last_c_pos > 0 ||
- lendiff <= prompt_visible_length || !current_invis_chars))
- {
- insert_some_chars (nfd, lendiff, col_lendiff);
- _rl_last_c_pos += col_lendiff;
- }
- else if (*ols == 0)
- {
- /* At the end of a line the characters do not have to
- be "inserted". They can just be placed on the screen. */
- /* However, this screws up the rest of this block, which
- assumes you've done the insert because you can. */
- _rl_output_some_chars (nfd, lendiff);
- _rl_last_c_pos += col_lendiff;
- }
- else
- {
- /* We have horizontal scrolling and we are not inserting at
- the end. We have invisible characters in this line. This
- is a dumb update. */
- _rl_output_some_chars (nfd, temp);
- _rl_last_c_pos += col_temp;
- return;
- }
- /* Copy (new) chars to screen from first diff to last match. */
- temp = nls - nfd;
- if ((temp - lendiff) > 0)
- {
- _rl_output_some_chars (nfd + lendiff, temp - lendiff);
-#if 0
- _rl_last_c_pos += _rl_col_width (nfd+lendiff, 0, temp-lendiff) - col_lendiff;
-#else
- _rl_last_c_pos += _rl_col_width (nfd+lendiff, 0, temp-col_lendiff);
-#endif
- }
- }
- else
- {
- /* cannot insert chars, write to EOL */
- _rl_output_some_chars (nfd, temp);
- _rl_last_c_pos += col_temp;
- }
- }
- else /* Delete characters from line. */
- {
- /* If possible and inexpensive to use terminal deletion, then do so. */
- if (_rl_term_dc && (2 * col_temp) >= -col_lendiff)
- {
- /* If all we're doing is erasing the invisible characters in the
- prompt string, don't bother. It screws up the assumptions
- about what's on the screen. */
- if (_rl_horizontal_scroll_mode && _rl_last_c_pos == 0 &&
- -lendiff == visible_wrap_offset)
- col_lendiff = 0;
-
- if (col_lendiff)
- delete_chars (-col_lendiff); /* delete (diff) characters */
-
- /* Copy (new) chars to screen from first diff to last match */
- temp = nls - nfd;
- if (temp > 0)
- {
- _rl_output_some_chars (nfd, temp);
- _rl_last_c_pos += _rl_col_width (nfd, 0, temp);;
- }
- }
- /* Otherwise, print over the existing material. */
- else
- {
- if (temp > 0)
- {
- _rl_output_some_chars (nfd, temp);
- _rl_last_c_pos += col_temp;
- }
- lendiff = (oe - old) - (ne - new);
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- col_lendiff = _rl_col_width (old, 0, oe - old) - _rl_col_width (new, 0, ne - new);
- else
- col_lendiff = lendiff;
-
- if (col_lendiff)
- {
- if (_rl_term_autowrap && current_line < inv_botlin)
- space_to_eol (col_lendiff);
- else
- _rl_clear_to_eol (col_lendiff);
- }
- }
- }
-}
-
-/* Tell the update routines that we have moved onto a new (empty) line. */
-int
-rl_on_new_line ()
-{
- if (visible_line)
- visible_line[0] = '\0';
-
- _rl_last_c_pos = _rl_last_v_pos = 0;
- _rl_vis_botlin = last_lmargin = 0;
- if (vis_lbreaks)
- vis_lbreaks[0] = vis_lbreaks[1] = 0;
- visible_wrap_offset = 0;
- return 0;
-}
-
-/* Tell the update routines that we have moved onto a new line with the
- prompt already displayed. Code originally from the version of readline
- distributed with CLISP. */
-int
-rl_on_new_line_with_prompt ()
-{
- int prompt_size, i, l, real_screenwidth, newlines;
- char *prompt_last_line;
-
- /* Initialize visible_line and invisible_line to ensure that they can hold
- the already-displayed prompt. */
- prompt_size = strlen (rl_prompt) + 1;
- init_line_structures (prompt_size);
-
- /* Make sure the line structures hold the already-displayed prompt for
- redisplay. */
- strcpy (visible_line, rl_prompt);
- strcpy (invisible_line, rl_prompt);
-
- /* If the prompt contains newlines, take the last tail. */
- prompt_last_line = strrchr (rl_prompt, '\n');
- if (!prompt_last_line)
- prompt_last_line = rl_prompt;
-
- l = strlen (prompt_last_line);
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- _rl_last_c_pos = _rl_col_width (prompt_last_line, 0, l);
- else
- _rl_last_c_pos = l;
-
- /* Dissect prompt_last_line into screen lines. Note that here we have
- to use the real screenwidth. Readline's notion of screenwidth might be
- one less, see terminal.c. */
- real_screenwidth = _rl_screenwidth + (_rl_term_autowrap ? 0 : 1);
- _rl_last_v_pos = l / real_screenwidth;
- /* If the prompt length is a multiple of real_screenwidth, we don't know
- whether the cursor is at the end of the last line, or already at the
- beginning of the next line. Output a newline just to be safe. */
- if (l > 0 && (l % real_screenwidth) == 0)
- _rl_output_some_chars ("\n", 1);
- last_lmargin = 0;
-
- newlines = 0; i = 0;
- while (i <= l)
- {
- _rl_vis_botlin = newlines;
- vis_lbreaks[newlines++] = i;
- i += real_screenwidth;
- }
- vis_lbreaks[newlines] = l;
- visible_wrap_offset = 0;
-
- return 0;
-}
-
-/* Actually update the display, period. */
-int
-rl_forced_update_display ()
-{
- if (visible_line)
- {
- register char *temp = visible_line;
-
- while (*temp)
- *temp++ = '\0';
- }
- rl_on_new_line ();
- forced_display++;
- (*rl_redisplay_function) ();
- return 0;
-}
-
-/* Move the cursor from _rl_last_c_pos to NEW, which are buffer indices.
- DATA is the contents of the screen line of interest; i.e., where
- the movement is being done. */
-void
-_rl_move_cursor_relative (new, data)
- int new;
- const char *data;
-{
- register int i;
-
- /* If we don't have to do anything, then return. */
-#if defined (HANDLE_MULTIBYTE)
- /* If we have multibyte characters, NEW is indexed by the buffer point in
- a multibyte string, but _rl_last_c_pos is the display position. In
- this case, NEW's display position is not obvious. */
- if ((MB_CUR_MAX == 1 || rl_byte_oriented ) && _rl_last_c_pos == new) return;
-#else
- if (_rl_last_c_pos == new) return;
-#endif
-
- /* It may be faster to output a CR, and then move forwards instead
- of moving backwards. */
- /* i == current physical cursor position. */
- i = _rl_last_c_pos - W_OFFSET(_rl_last_v_pos, visible_wrap_offset);
- if (new == 0 || CR_FASTER (new, _rl_last_c_pos) ||
- (_rl_term_autowrap && i == _rl_screenwidth))
- {
-#if defined (__MSDOS__)
- putc ('\r', rl_outstream);
-#else
- tputs (_rl_term_cr, 1, _rl_output_character_function);
-#endif /* !__MSDOS__ */
- _rl_last_c_pos = 0;
- }
-
- if (_rl_last_c_pos < new)
- {
- /* Move the cursor forward. We do it by printing the command
- to move the cursor forward if there is one, else print that
- portion of the output buffer again. Which is cheaper? */
-
- /* The above comment is left here for posterity. It is faster
- to print one character (non-control) than to print a control
- sequence telling the terminal to move forward one character.
- That kind of control is for people who don't know what the
- data is underneath the cursor. */
-#if defined (HACK_TERMCAP_MOTION)
- if (_rl_term_forward_char)
- {
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- int width;
- width = _rl_col_width (data, _rl_last_c_pos, new);
- for (i = 0; i < width; i++)
- tputs (_rl_term_forward_char, 1, _rl_output_character_function);
- }
- else
- {
- for (i = _rl_last_c_pos; i < new; i++)
- tputs (_rl_term_forward_char, 1, _rl_output_character_function);
- }
- }
- else if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- tputs (_rl_term_cr, 1, _rl_output_character_function);
- for (i = 0; i < new; i++)
- putc (data[i], rl_outstream);
- }
- else
- for (i = _rl_last_c_pos; i < new; i++)
- putc (data[i], rl_outstream);
-
-#else /* !HACK_TERMCAP_MOTION */
-
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- tputs (_rl_term_cr, 1, _rl_output_character_function);
- for (i = 0; i < new; i++)
- putc (data[i], rl_outstream);
- }
- else
- for (i = _rl_last_c_pos; i < new; i++)
- putc (data[i], rl_outstream);
-
-#endif /* !HACK_TERMCAP_MOTION */
-
- }
-#if defined (HANDLE_MULTIBYTE)
- /* NEW points to the buffer point, but _rl_last_c_pos is the display point.
- The byte length of the string is probably bigger than the column width
- of the string, which means that if NEW == _rl_last_c_pos, then NEW's
- display point is less than _rl_last_c_pos. */
- else if (_rl_last_c_pos >= new)
-#else
- else if (_rl_last_c_pos > new)
-#endif
- {
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- tputs (_rl_term_cr, 1, _rl_output_character_function);
- for (i = 0; i < new; i++)
- putc (data[i], rl_outstream);
- }
- else
- _rl_backspace (_rl_last_c_pos - new);
- }
-
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- _rl_last_c_pos = _rl_col_width (data, 0, new);
- else
- _rl_last_c_pos = new;
-}
-
-/* PWP: move the cursor up or down. */
-void
-_rl_move_vert (to)
- int to;
-{
- register int delta, i;
-
- if (_rl_last_v_pos == to || to > _rl_screenheight)
- return;
-
- if ((delta = to - _rl_last_v_pos) > 0)
- {
- for (i = 0; i < delta; i++)
- putc ('\n', rl_outstream);
-#if defined (__MSDOS__)
- putc ('\r', rl_outstream);
-#else
- tputs (_rl_term_cr, 1, _rl_output_character_function);
-#endif
- _rl_last_c_pos = 0;
- }
- else
- { /* delta < 0 */
- if (_rl_term_up && *_rl_term_up)
- for (i = 0; i < -delta; i++)
- tputs (_rl_term_up, 1, _rl_output_character_function);
- }
-
- _rl_last_v_pos = to; /* Now TO is here */
-}
-
-/* Physically print C on rl_outstream. This is for functions which know
- how to optimize the display. Return the number of characters output. */
-int
-rl_show_char (c)
- int c;
-{
- int n = 1;
- if (META_CHAR (c) && (_rl_output_meta_chars == 0))
- {
- fprintf (rl_outstream, "M-");
- n += 2;
- c = UNMETA (c);
- }
-
-#if defined (DISPLAY_TABS)
- if ((CTRL_CHAR (c) && c != '\t') || c == RUBOUT)
-#else
- if (CTRL_CHAR (c) || c == RUBOUT)
-#endif /* !DISPLAY_TABS */
- {
- fprintf (rl_outstream, "C-");
- n += 2;
- c = CTRL_CHAR (c) ? UNCTRL (c) : '?';
- }
-
- putc (c, rl_outstream);
- fflush (rl_outstream);
- return n;
-}
-
-int
-rl_character_len (c, pos)
- register int c, pos;
-{
- unsigned char uc;
-
- uc = (unsigned char)c;
-
- if (META_CHAR (uc))
- return ((_rl_output_meta_chars == 0) ? 4 : 1);
-
- if (uc == '\t')
- {
-#if defined (DISPLAY_TABS)
- return (((pos | 7) + 1) - pos);
-#else
- return (2);
-#endif /* !DISPLAY_TABS */
- }
-
- if (CTRL_CHAR (c) || c == RUBOUT)
- return (2);
-
- return ((ISPRINT (uc)) ? 1 : 2);
-}
-
-/* How to print things in the "echo-area". The prompt is treated as a
- mini-modeline. */
-
-#if defined (USE_VARARGS)
-int
-#if defined (PREFER_STDARG)
-rl_message (const char *format, ...)
-#else
-rl_message (va_alist)
- va_dcl
-#endif
-{
- va_list args;
-#if defined (PREFER_VARARGS)
- char *format;
-#endif
-
-#if defined (PREFER_STDARG)
- va_start (args, format);
-#else
- va_start (args);
- format = va_arg (args, char *);
-#endif
-
-#if defined (HAVE_VSNPRINTF)
- vsnprintf (msg_buf, sizeof (msg_buf) - 1, format, args);
-#else
- vsprintf (msg_buf, format, args);
- msg_buf[sizeof(msg_buf) - 1] = '\0'; /* overflow? */
-#endif
- va_end (args);
-
- rl_display_prompt = msg_buf;
- (*rl_redisplay_function) ();
- return 0;
-}
-#else /* !USE_VARARGS */
-int
-rl_message (format, arg1, arg2)
- char *format;
-{
- sprintf (msg_buf, format, arg1, arg2);
- msg_buf[sizeof(msg_buf) - 1] = '\0'; /* overflow? */
- rl_display_prompt = msg_buf;
- (*rl_redisplay_function) ();
- return 0;
-}
-#endif /* !USE_VARARGS */
-
-/* How to clear things from the "echo-area". */
-int
-rl_clear_message ()
-{
- rl_display_prompt = rl_prompt;
- (*rl_redisplay_function) ();
- return 0;
-}
-
-int
-rl_reset_line_state ()
-{
- rl_on_new_line ();
-
- rl_display_prompt = rl_prompt ? rl_prompt : "";
- forced_display = 1;
- return 0;
-}
-
-static char *saved_local_prompt;
-static char *saved_local_prefix;
-static int saved_last_invisible;
-static int saved_visible_length;
-
-void
-rl_save_prompt ()
-{
- saved_local_prompt = local_prompt;
- saved_local_prefix = local_prompt_prefix;
- saved_last_invisible = prompt_last_invisible;
- saved_visible_length = prompt_visible_length;
-
- local_prompt = local_prompt_prefix = (char *)0;
- prompt_last_invisible = prompt_visible_length = 0;
-}
-
-void
-rl_restore_prompt ()
-{
- FREE (local_prompt);
- FREE (local_prompt_prefix);
-
- local_prompt = saved_local_prompt;
- local_prompt_prefix = saved_local_prefix;
- prompt_last_invisible = saved_last_invisible;
- prompt_visible_length = saved_visible_length;
-}
-
-char *
-_rl_make_prompt_for_search (pchar)
- int pchar;
-{
- int len;
- char *pmt;
-
- rl_save_prompt ();
-
- if (saved_local_prompt == 0)
- {
- len = (rl_prompt && *rl_prompt) ? strlen (rl_prompt) : 0;
- pmt = (char *)xmalloc (len + 2);
- if (len)
- strcpy (pmt, rl_prompt);
- pmt[len] = pchar;
- pmt[len+1] = '\0';
- }
- else
- {
- len = *saved_local_prompt ? strlen (saved_local_prompt) : 0;
- pmt = (char *)xmalloc (len + 2);
- if (len)
- strcpy (pmt, saved_local_prompt);
- pmt[len] = pchar;
- pmt[len+1] = '\0';
- local_prompt = savestring (pmt);
- prompt_last_invisible = saved_last_invisible;
- prompt_visible_length = saved_visible_length + 1;
- }
- return pmt;
-}
-
-/* Quick redisplay hack when erasing characters at the end of the line. */
-void
-_rl_erase_at_end_of_line (l)
- int l;
-{
- register int i;
-
- _rl_backspace (l);
- for (i = 0; i < l; i++)
- putc (' ', rl_outstream);
- _rl_backspace (l);
- for (i = 0; i < l; i++)
- visible_line[--_rl_last_c_pos] = '\0';
- rl_display_fixed++;
-}
-
-/* Clear to the end of the line. COUNT is the minimum
- number of character spaces to clear, */
-void
-_rl_clear_to_eol (count)
- int count;
-{
- if (_rl_term_clreol)
- tputs (_rl_term_clreol, 1, _rl_output_character_function);
- else if (count)
- space_to_eol (count);
-}
-
-/* Clear to the end of the line using spaces. COUNT is the minimum
- number of character spaces to clear, */
-static void
-space_to_eol (count)
- int count;
-{
- register int i;
-
- for (i = 0; i < count; i++)
- putc (' ', rl_outstream);
-
- _rl_last_c_pos += count;
-}
-
-void
-_rl_clear_screen ()
-{
- if (_rl_term_clrpag)
- tputs (_rl_term_clrpag, 1, _rl_output_character_function);
- else
- rl_crlf ();
-}
-
-/* Insert COUNT characters from STRING to the output stream at column COL. */
-static void
-insert_some_chars (string, count, col)
- char *string;
- int count, col;
-{
- /* DEBUGGING */
- if (MB_CUR_MAX == 1 || rl_byte_oriented)
- if (count != col)
- fprintf(stderr, "readline: debug: insert_some_chars: count (%d) != col (%d)\n", count, col);
-
- /* If IC is defined, then we do not have to "enter" insert mode. */
- if (_rl_term_IC)
- {
- char *buffer;
-
- buffer = tgoto (_rl_term_IC, 0, col);
- tputs (buffer, 1, _rl_output_character_function);
- _rl_output_some_chars (string, count);
- }
- else
- {
- register int i;
-
- /* If we have to turn on insert-mode, then do so. */
- if (_rl_term_im && *_rl_term_im)
- tputs (_rl_term_im, 1, _rl_output_character_function);
-
- /* If there is a special command for inserting characters, then
- use that first to open up the space. */
- if (_rl_term_ic && *_rl_term_ic)
- {
- for (i = col; i--; )
- tputs (_rl_term_ic, 1, _rl_output_character_function);
- }
-
- /* Print the text. */
- _rl_output_some_chars (string, count);
-
- /* If there is a string to turn off insert mode, we had best use
- it now. */
- if (_rl_term_ei && *_rl_term_ei)
- tputs (_rl_term_ei, 1, _rl_output_character_function);
- }
-}
-
-/* Delete COUNT characters from the display line. */
-static void
-delete_chars (count)
- int count;
-{
- if (count > _rl_screenwidth) /* XXX */
- return;
-
- if (_rl_term_DC && *_rl_term_DC)
- {
- char *buffer;
- buffer = tgoto (_rl_term_DC, count, count);
- tputs (buffer, count, _rl_output_character_function);
- }
- else
- {
- if (_rl_term_dc && *_rl_term_dc)
- while (count--)
- tputs (_rl_term_dc, 1, _rl_output_character_function);
- }
-}
-
-void
-_rl_update_final ()
-{
- int full_lines;
-
- full_lines = 0;
- /* If the cursor is the only thing on an otherwise-blank last line,
- compensate so we don't print an extra CRLF. */
- if (_rl_vis_botlin && _rl_last_c_pos == 0 &&
- visible_line[vis_lbreaks[_rl_vis_botlin]] == 0)
- {
- _rl_vis_botlin--;
- full_lines = 1;
- }
- _rl_move_vert (_rl_vis_botlin);
- /* If we've wrapped lines, remove the final xterm line-wrap flag. */
- if (full_lines && _rl_term_autowrap && (VIS_LLEN(_rl_vis_botlin) == _rl_screenwidth))
- {
- char *last_line;
-
- last_line = &visible_line[vis_lbreaks[_rl_vis_botlin]];
- _rl_move_cursor_relative (_rl_screenwidth - 1, last_line);
- _rl_clear_to_eol (0);
- putc (last_line[_rl_screenwidth - 1], rl_outstream);
- }
- _rl_vis_botlin = 0;
- rl_crlf ();
- fflush (rl_outstream);
- rl_display_fixed++;
-}
-
-/* Move to the start of the current line. */
-static void
-cr ()
-{
- if (_rl_term_cr)
- {
-#if defined (__MSDOS__)
- putc ('\r', rl_outstream);
-#else
- tputs (_rl_term_cr, 1, _rl_output_character_function);
-#endif
- _rl_last_c_pos = 0;
- }
-}
-
-/* Redraw the last line of a multi-line prompt that may possibly contain
- terminal escape sequences. Called with the cursor at column 0 of the
- line to draw the prompt on. */
-static void
-redraw_prompt (t)
- char *t;
-{
- char *oldp, *oldl, *oldlprefix;
- int oldlen, oldlast, oldplen, oldninvis;
-
- /* Geez, I should make this a struct. */
- oldp = rl_display_prompt;
- oldl = local_prompt;
- oldlprefix = local_prompt_prefix;
- oldlen = prompt_visible_length;
- oldplen = prompt_prefix_length;
- oldlast = prompt_last_invisible;
- oldninvis = prompt_invis_chars_first_line;
-
- rl_display_prompt = t;
- local_prompt = expand_prompt (t, &prompt_visible_length,
- &prompt_last_invisible,
- &prompt_invis_chars_first_line);
- local_prompt_prefix = (char *)NULL;
- rl_forced_update_display ();
-
- rl_display_prompt = oldp;
- local_prompt = oldl;
- local_prompt_prefix = oldlprefix;
- prompt_visible_length = oldlen;
- prompt_prefix_length = oldplen;
- prompt_last_invisible = oldlast;
- prompt_invis_chars_first_line = oldninvis;
-}
-
-/* Redisplay the current line after a SIGWINCH is received. */
-void
-_rl_redisplay_after_sigwinch ()
-{
- char *t;
-
- /* Clear the current line and put the cursor at column 0. Make sure
- the right thing happens if we have wrapped to a new screen line. */
- if (_rl_term_cr)
- {
-#if defined (__MSDOS__)
- putc ('\r', rl_outstream);
-#else
- tputs (_rl_term_cr, 1, _rl_output_character_function);
-#endif
- _rl_last_c_pos = 0;
-#if defined (__MSDOS__)
- space_to_eol (_rl_screenwidth);
- putc ('\r', rl_outstream);
-#else
- if (_rl_term_clreol)
- tputs (_rl_term_clreol, 1, _rl_output_character_function);
- else
- {
- space_to_eol (_rl_screenwidth);
- tputs (_rl_term_cr, 1, _rl_output_character_function);
- }
-#endif
- if (_rl_last_v_pos > 0)
- _rl_move_vert (0);
- }
- else
- rl_crlf ();
-
- /* Redraw only the last line of a multi-line prompt. */
- t = strrchr (rl_display_prompt, '\n');
- if (t)
- redraw_prompt (++t);
- else
- rl_forced_update_display ();
-}
-
-void
-_rl_clean_up_for_exit ()
-{
- if (readline_echoing_p)
- {
- _rl_move_vert (_rl_vis_botlin);
- _rl_vis_botlin = 0;
- fflush (rl_outstream);
- rl_restart_output (1, 0);
- }
-}
-
-void
-_rl_erase_entire_line ()
-{
- cr ();
- _rl_clear_to_eol (0);
- cr ();
- fflush (rl_outstream);
-}
-
-/* return the `current display line' of the cursor -- the number of lines to
- move up to get to the first screen line of the current readline line. */
-int
-_rl_current_display_line ()
-{
- int ret, nleft;
-
- /* Find out whether or not there might be invisible characters in the
- editing buffer. */
- if (rl_display_prompt == rl_prompt)
- nleft = _rl_last_c_pos - _rl_screenwidth - rl_visible_prompt_length;
- else
- nleft = _rl_last_c_pos - _rl_screenwidth;
-
- if (nleft > 0)
- ret = 1 + nleft / _rl_screenwidth;
- else
- ret = 0;
-
- return ret;
-}
-
-#if defined (HANDLE_MULTIBYTE)
-/* Calculate the number of screen columns occupied by STR from START to END.
- In the case of multibyte characters with stateful encoding, we have to
- scan from the beginning of the string to take the state into account. */
-static int
-_rl_col_width (str, start, end)
- char *str;
- int start, end;
-{
- wchar_t wc;
- mbstate_t ps = {0};
- int tmp, point, width, max;
-
- if (end <= start)
- return 0;
-
- point = 0;
- max = end;
-
- while (point < start)
- {
- tmp = mbrlen (str + point, max, &ps);
- if ((size_t)tmp == (size_t)-1 || (size_t)tmp == (size_t)-2)
- {
- /* In this case, the bytes are invalid or too short to compose a
- multibyte character, so we assume that the first byte represents
- a single character. */
- point++;
- max--;
-
- /* Clear the state of the byte sequence, because in this case the
- effect of mbstate is undefined. */
- memset (&ps, 0, sizeof (mbstate_t));
- }
- else if (tmp == 0)
- break; /* Found '\0' */
- else
- {
- point += tmp;
- max -= tmp;
- }
- }
-
- /* If START is not a byte that starts a character, then POINT will be
- greater than START. In this case, assume that (POINT - START) gives
- a byte count that is the number of columns of difference. */
- width = point - start;
-
- while (point < end)
- {
- tmp = mbrtowc (&wc, str + point, max, &ps);
- if ((size_t)tmp == (size_t)-1 || (size_t)tmp == (size_t)-2)
- {
- /* In this case, the bytes are invalid or too short to compose a
- multibyte character, so we assume that the first byte represents
- a single character. */
- point++;
- max--;
-
- /* and assume that the byte occupies a single column. */
- width++;
-
- /* Clear the state of the byte sequence, because in this case the
- effect of mbstate is undefined. */
- memset (&ps, 0, sizeof (mbstate_t));
- }
- else if (tmp == 0)
- break; /* Found '\0' */
- else
- {
- point += tmp;
- max -= tmp;
- tmp = wcwidth(wc);
- width += (tmp >= 0) ? tmp : 1;
- }
- }
-
- width += point - end;
-
- return width;
-}
-#endif /* HANDLE_MULTIBYTE */
-
diff --git a/readline-4.3.orig/doc/Makefile.in b/readline-4.3.orig/doc/Makefile.in
deleted file mode 100644
index 8a85ae1..0000000
--- a/readline-4.3.orig/doc/Makefile.in
+++ /dev/null
@@ -1,234 +0,0 @@
-# This makefile for Readline library documentation is in -*- text -*- mode.
-# Emacs likes it that way.
-
-# Copyright (C) 1996 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA.
-
-topdir = @top_srcdir@
-srcdir = @srcdir@
-VPATH = .:@srcdir@
-
-prefix = @prefix@
-infodir = @infodir@
-
-mandir = @mandir@
-manpfx = man
-
-man1ext = .1
-man1dir = $(mandir)/$(manpfx)1
-man3ext = .3
-man3dir = $(mandir)/$(manpfx)3
-
-# set this to a value to have the HTML documentation installed
-htmldir =
-
-# Support an alternate destination root directory for package building
-DESTDIR =
-
-SHELL = @MAKE_SHELL@
-RM = rm -f
-
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-
-BUILD_DIR = @BUILD_DIR@
-TEXINPUTDIR = $(srcdir)
-
-MAKEINFO = LANGUAGE= makeinfo
-TEXI2DVI = $(srcdir)/texi2dvi
-TEXI2HTML = $(srcdir)/texi2html
-QUIETPS = #set this to -q to shut up dvips
-PAPERSIZE = letter
-PSDPI = 300 # I don't have any 600-dpi printers
-DVIPS = dvips -D ${PSDPI} $(QUIETPS) -t ${PAPERSIZE} -o $@ # tricky
-
-RLSRC = $(srcdir)/rlman.texinfo $(srcdir)/rluser.texinfo \
- $(srcdir)/rltech.texinfo $(srcdir)/manvers.texinfo \
- $(srcdir)/rluserman.texinfo
-HISTSRC = $(srcdir)/hist.texinfo $(srcdir)/hsuser.texinfo \
- $(srcdir)/hstech.texinfo $(srcdir)/manvers.texinfo
-
-# This should be a program that converts troff to an ascii-readable format
-NROFF = groff -Tascii
-
-# This should be a program that converts troff to postscript
-GROFF = groff
-
-DVIOBJ = readline.dvi history.dvi rluserman.dvi
-INFOOBJ = readline.info history.info rluserman.info
-PSOBJ = readline.ps history.ps rluserman.ps readline_3.ps history_3.ps
-HTMLOBJ = readline.html history.html rluserman.html
-TEXTOBJ = readline.0 history.0
-
-INTERMEDIATE_OBJ = rlman.dvi hist.dvi rluserman.dvi
-
-DIST_DOCS = $(DVIOBJ) $(PSOBJ) $(HTMLOBJ) $(INFOOBJ) $(TEXTOBJ)
-
-.SUFFIXES: .0 .3 .ps .txt .dvi
-
-.3.0:
- $(RM) $@
- -${NROFF} -man $< > $@
-
-all: info dvi html ps text
-nodvi: info html text
-
-readline.dvi: $(RLSRC)
- TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/rlman.texinfo
- mv rlman.dvi readline.dvi
-
-readline.info: $(RLSRC)
- $(MAKEINFO) --no-split -I $(TEXINPUTDIR) -o $@ $(srcdir)/rlman.texinfo
-
-rluserman.dvi: $(RLSRC)
- TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/rluserman.texinfo
-
-rluserman.info: $(RLSRC)
- $(MAKEINFO) --no-split -I $(TEXINPUTDIR) -o $@ $(srcdir)/rluserman.texinfo
-
-history.dvi: ${HISTSRC}
- TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/hist.texinfo
- mv hist.dvi history.dvi
-
-history.info: ${HISTSRC}
- $(MAKEINFO) --no-split -I $(TEXINPUTDIR) -o $@ $(srcdir)/hist.texinfo
-
-readline.ps: readline.dvi
- $(RM) $@
- $(DVIPS) readline.dvi
-
-rluserman.ps: rluserman.dvi
- $(RM) $@
- $(DVIPS) rluserman.dvi
-
-history.ps: history.dvi
- $(RM) $@
- $(DVIPS) history.dvi
-
-#
-# This leaves readline.html and rlman.html -- rlman.html is for www.gnu.org
-#
-readline.html: ${RLSRC}
- $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/rlman.texinfo
- sed -e 's:rlman.html:readline.html:g' rlman.html > readline.html
-
-rluserman.html: ${RLSRC}
- $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/rluserman.texinfo
-
-history.html: ${HISTSRC}
- $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/hist.texinfo
- sed -e 's:hist.html:history.html:g' hist.html > history.html
- $(RM) hist.html
-
-info: $(INFOOBJ)
-dvi: $(DVIOBJ)
-ps: $(PSOBJ)
-html: $(HTMLOBJ)
-text: $(TEXTOBJ)
-
-readline.0: readline.3
-
-readline_3.ps: readline.3
- ${RM} $@
- ${GROFF} -man < $(srcdir)/readline.3 > $@
-
-history.0: history.3
-
-history_3.ps: history.3
- ${RM} $@
- ${GROFF} -man < $(srcdir)/history.3 > $@
-
-clean:
- $(RM) *.aux *.cp *.fn *.ky *.log *.pg *.toc *.tp *.vr *.cps *.pgs \
- *.fns *.kys *.tps *.vrs *.bt *.bts *.o core *.core
-
-mostlyclean: clean
-
-distclean: clean maybe-clean
- $(RM) $(INTERMEDIATE_OBJ)
- $(RM) Makefile
-
-maybe-clean:
- -if test "X$(topdir)" != "X$(BUILD_DIR)"; then \
- $(RM) $(DIST_DOCS); \
- fi
-
-maintainer-clean: clean
- $(RM) $(DIST_DOCS)
- $(RM) $(INTERMEDIATE_OBJ)
- $(RM) Makefile
-
-installdirs: $(topdir)/support/mkdirs
- -$(SHELL) $(topdir)/support/mkdirs $(DESTDIR)$(infodir) $(DESTDIR)$(man3dir)
- -if test -n "${htmldir}" ; then \
- $(SHELL) $(topdir)/support/mkdirs $(DESTDIR)$(htmldir) ; \
- fi
-
-install: installdirs
- if test -f readline.info; then \
- ${INSTALL_DATA} readline.info $(DESTDIR)$(infodir)/readline.info; \
- else \
- ${INSTALL_DATA} $(srcdir)/readline.info $(DESTDIR)$(infodir)/readline.info; \
- fi
- if test -f rluserman.info; then \
- ${INSTALL_DATA} rluserman.info $(DESTDIR)$(infodir)/rluserman.info; \
- else \
- ${INSTALL_DATA} $(srcdir)/rluserman.info $(DESTDIR)$(infodir)/rluserman.info; \
- fi
- if test -f history.info; then \
- ${INSTALL_DATA} history.info $(DESTDIR)$(infodir)/history.info; \
- else \
- ${INSTALL_DATA} $(srcdir)/history.info $(DESTDIR)$(infodir)/history.info; \
- fi
- -if $(SHELL) -c 'install-info --version' >/dev/null 2>&1; then \
- install-info --dir-file=$(DESTDIR)$(infodir)/dir \
- $(DESTDIR)$(infodir)/readline.info ; \
- install-info --dir-file=$(DESTDIR)$(infodir)/dir \
- $(DESTDIR)$(infodir)/history.info ; \
- install-info --dir-file=$(DESTDIR)$(infodir)/dir \
- $(DESTDIR)$(infodir)/rluserman.info ; \
- else true; fi
- -${INSTALL_DATA} $(srcdir)/readline.3 $(DESTDIR)$(man3dir)/readline$(man3ext)
- -${INSTALL_DATA} $(srcdir)/history.3 $(DESTDIR)$(man3dir)/history$(man3ext)
- -if test -n "${htmldir}" ; then \
- if test -f readline.html; then \
- ${INSTALL_DATA} readline.html $(DESTDIR)$(htmldir)/readline.html; \
- else \
- ${INSTALL_DATA} $(srcdir)/readline.html $(DESTDIR)$(htmldir)/readline.html; \
- fi ; \
- if test -f history.html; then \
- ${INSTALL_DATA} history.html $(DESTDIR)$(htmldir)/history.html; \
- else \
- ${INSTALL_DATA} $(srcdir)/history.html $(DESTDIR)$(htmldir)/history.html; \
- fi ; \
- if test -f rluserman.html; then \
- ${INSTALL_DATA} rluserman.html $(DESTDIR)$(htmldir)/rluserman.html; \
- else \
- ${INSTALL_DATA} $(srcdir)/rluserman.html $(DESTDIR)$(htmldir)/rluserman.html; \
- fi ; \
- fi
-
-uninstall:
- $(RM) $(DESTDIR)$(infodir)/readline.info
- $(RM) $(DESTDIR)$(infodir)/rluserman.info
- $(RM) $(DESTDIR)$(infodir)/history.info
- $(RM) $(DESTDIR)$(man3dir)/readline$(man3ext)
- $(RM) $(DESTDIR)$(man3dir)/history$(man3ext)
- -if test -n "${htmldir}" ; then \
- $(RM) $(DESTDIR)$(htmldir)/readline.html ; \
- $(RM) $(DESTDIR)$(htmldir)/rluserman.html ; \
- $(RM) $(DESTDIR)$(htmldir)/history.html ; \
- fi
diff --git a/readline-4.3.orig/doc/hist.texinfo b/readline-4.3.orig/doc/hist.texinfo
deleted file mode 100644
index 63ceb16..0000000
--- a/readline-4.3.orig/doc/hist.texinfo
+++ /dev/null
@@ -1,110 +0,0 @@
-\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.)
-
-@setchapternewpage odd
-
-@include manvers.texinfo
-
-@ifinfo
-@dircategory Libraries
-@direntry
-* History: (history). The GNU history library API
-@end direntry
-
-This document describes the GNU History library, a programming tool that
-provides a consistent user interface for recalling lines of previously
-typed input.
-
-Copyright (C) 1988-2002 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-pare preserved on all copies.
-
-@ignore
-Permission is granted to process this file through TeX and print the
-results, provided the printed document carries copying permission
-notice identical to this one except for the removal of this paragraph
-(this paragraph not being relevant to the printed manual).
-@end ignore
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the entire
-resulting derived work is distributed under the terms of a permission
-notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that this permission notice may be stated in a translation approved
-by the Free Software Foundation.
-@end ifinfo
-
-@titlepage
-@title GNU History Library
-@subtitle Edition @value{EDITION}, for @code{History Library} Version @value{VERSION}.
-@subtitle @value{UPDATE-MONTH}
-@author Brian Fox, Free Software Foundation
-@author Chet Ramey, Case Western Reserve University
-
-@page
-This document describes the GNU History library, a programming tool that
-provides a consistent user interface for recalling lines of previously
-typed input.
-
-Published by the Free Software Foundation @*
-59 Temple Place, Suite 330, @*
-Boston, MA 02111 USA
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the entire
-resulting derived work is distributed under the terms of a permission
-notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that this permission notice may be stated in a translation approved
-by the Free Software Foundation.
-
-@vskip 0pt plus 1filll
-Copyright @copyright{} 1988-2002 Free Software Foundation, Inc.
-@end titlepage
-
-@ifinfo
-@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.
-* Concept Index:: Index of concepts described in this manual.
-* Function and Variable Index:: Index of externally visible functions
- and variables.
-@end menu
-@end ifinfo
-
-@syncodeindex fn vr
-
-@include hsuser.texinfo
-@include hstech.texinfo
-
-@node Concept Index
-@appendix Concept Index
-@printindex cp
-
-@node Function and Variable Index
-@appendix Function and Variable Index
-@printindex vr
-
-@contents
-@bye
diff --git a/readline-4.3.orig/doc/history.0 b/readline-4.3.orig/doc/history.0
deleted file mode 100644
index 324c363..0000000
--- a/readline-4.3.orig/doc/history.0
+++ /dev/null
@@ -1,660 +0,0 @@
-
-
-
-HISTORY(3) HISTORY(3)
-
-
-NNAAMMEE
- history - GNU History Library
-
-CCOOPPYYRRIIGGHHTT
- The GNU History Library is Copyright (C) 1989-2002 by the
- Free Software Foundation, Inc.
-
-DDEESSCCRRIIPPTTIIOONN
- Many programs read input from the user a line at a time.
- The GNU History library is able to keep track of those
- lines, associate arbitrary data with each line, and uti-
- lize information from previous lines in composing new
- ones.
-
-
-HHIISSTTOORRYY EEXXPPAANNSSIIOONN
- The history library supports a history expansion feature
- that is identical to the history expansion in bbaasshh.. This
- section describes what syntax features are available.
-
- History expansions introduce words from the history list
- into the input stream, making it easy to repeat commands,
- insert the arguments to a previous command into the cur-
- rent input line, or fix errors in previous commands
- quickly.
-
- History expansion is usually performed immediately after a
- complete line is read. It takes place in two parts. The
- first is to determine which line from the history list to
- use during substitution. The second is to select portions
- of that line for inclusion into the current one. The line
- selected from the history is the _e_v_e_n_t, and the portions
- of that line that are acted upon are _w_o_r_d_s. Various _m_o_d_i_-
- _f_i_e_r_s are available to manipulate the selected words. The
- line is broken into words in the same fashion as bbaasshh does
- when reading input, so that several words that would oth-
- erwise be separated are considered one word when sur-
- rounded by quotes (see the description of hhiissttoorryy__ttookk--
- eenniizzee(()) below). History expansions are introduced by the
- appearance of the history expansion character, which is !!
- by default. Only backslash (\\) and single quotes can
- quote the history expansion character.
-
- EEvveenntt DDeessiiggnnaattoorrss
- An event designator is a reference to a command line entry
- in the history list.
-
- !! Start a history substitution, except when followed
- by a bbllaannkk, newline, = or (.
- !!_n Refer to command line _n.
- !!--_n Refer to the current command line minus _n.
- !!!! Refer to the previous command. This is a synonym
- for `!-1'.
-
-
-
-
-GNU History 4.3 2002 January 31 1
-
-
-
-
-
-HISTORY(3) HISTORY(3)
-
-
- !!_s_t_r_i_n_g
- Refer to the most recent command starting with
- _s_t_r_i_n_g.
- !!??_s_t_r_i_n_g[[??]]
- Refer to the most recent command containing _s_t_r_i_n_g.
- The trailing ?? may be omitted if _s_t_r_i_n_g is followed
- immediately by a newline.
- ^^_s_t_r_i_n_g_1^^_s_t_r_i_n_g_2^^
- Quick substitution. Repeat the last command,
- replacing _s_t_r_i_n_g_1 with _s_t_r_i_n_g_2. Equivalent to
- ``!!:s/_s_t_r_i_n_g_1/_s_t_r_i_n_g_2/'' (see MMooddiiffiieerrss below).
- !!## The entire command line typed so far.
-
- WWoorrdd DDeessiiggnnaattoorrss
- Word designators are used to select desired words from the
- event. A :: separates the event specification from the
- word designator. It may be omitted if the word designator
- begins with a ^^, $$, **, --, or %%. Words are numbered from
- the beginning of the line, with the first word being
- denoted by 0 (zero). Words are inserted into the current
- line separated by single spaces.
-
- 00 ((zzeerroo))
- The zeroth word. For the shell, this is the com-
- mand word.
- _n The _nth word.
- ^^ The first argument. That is, word 1.
- $$ The last argument.
- %% The word matched by the most recent `?_s_t_r_i_n_g?'
- search.
- _x--_y A range of words; `-_y' abbreviates `0-_y'.
- ** All of the words but the zeroth. This is a synonym
- for `_1_-_$'. It is not an error to use ** if there is
- just one word in the event; the empty string is
- returned in that case.
- xx** Abbreviates _x_-_$.
- xx-- Abbreviates _x_-_$ like xx**, but omits the last word.
-
- If a word designator is supplied without an event specifi-
- cation, the previous command is used as the event.
-
- MMooddiiffiieerrss
- After the optional word designator, there may appear a
- sequence of one or more of the following modifiers, each
- preceded by a `:'.
-
- hh Remove a trailing file name component, leaving only
- the head.
- tt Remove all leading file name components, leaving
- the tail.
- rr Remove a trailing suffix of the form _._x_x_x, leaving
- the basename.
- ee Remove all but the trailing suffix.
- pp Print the new command but do not execute it.
-
-
-
-GNU History 4.3 2002 January 31 2
-
-
-
-
-
-HISTORY(3) HISTORY(3)
-
-
- qq Quote the substituted words, escaping further sub-
- stitutions.
- xx Quote the substituted words as with qq, but break
- into words at bbllaannkkss and newlines.
- ss//_o_l_d//_n_e_w//
- Substitute _n_e_w for the first occurrence of _o_l_d in
- the event line. Any delimiter can be used in place
- of /. The final delimiter is optional if it is the
- last character of the event line. The delimiter
- may be quoted in _o_l_d and _n_e_w with a single back-
- slash. If & appears in _n_e_w, it is replaced by _o_l_d.
- A single backslash will quote the &. If _o_l_d is
- null, it is set to the last _o_l_d substituted, or, if
- no previous history substitutions took place, the
- last _s_t_r_i_n_g in a !!??_s_t_r_i_n_g[[??]] search.
- && Repeat the previous substitution.
- gg Cause changes to be applied over the entire event
- line. This is used in conjunction with `::ss' (e.g.,
- `::ggss//_o_l_d//_n_e_w//') or `::&&'. If used with `::ss', any
- delimiter can be used in place of /, and the final
- delimiter is optional if it is the last character
- of the event line.
-
-PPRROOGGRRAAMMMMIINNGG WWIITTHH HHIISSTTOORRYY FFUUNNCCTTIIOONNSS
- This section describes how to use the History library in
- other programs.
-
- IInnttrroodduuccttiioonn ttoo HHiissttoorryy
- The programmer using the History library has available
- functions for remembering lines on a history list, associ-
- ating 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 _e_x_p_a_n_s_i_o_n function
- is available which provides for a consistent user inter-
- face 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 previ-
- ous lines and using that text in new commands. The basic
- history manipulation commands are identical to the history
- substitution provided by bbaasshh.
-
- 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 edit-
- ing.
-
- Before declaring any functions using any functionality the
- History library provides in other code, an application
- writer should include the file _<_r_e_a_d_l_i_n_e_/_h_i_s_t_o_r_y_._h_> in any
- file that uses the History library's features. It sup-
- plies extern declarations for all of the library's public
-
-
-
-GNU History 4.3 2002 January 31 3
-
-
-
-
-
-HISTORY(3) HISTORY(3)
-
-
- functions and variables, and declares all of the public
- data structures.
-
-
- HHiissttoorryy SSttoorraaggee
- The history list is an array of history entries. A his-
- tory entry is declared as follows:
-
- _t_y_p_e_d_e_f _v_o_i_d _* hhiissttddaattaa__tt;;
-
- typedef struct _hist_entry {
- char *line;
- histdata_t data;
- } HIST_ENTRY;
-
- The history list itself might therefore be declared as
-
- _H_I_S_T___E_N_T_R_Y _*_* tthhee__hhiissttoorryy__lliisstt;;
-
- The state of the History library is encapsulated into a
- single structure:
-
- /*
- * 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;
-
- If the flags member includes HHSS__SSTTIIFFLLEEDD, the history has
- been stifled.
-
-HHiissttoorryy FFuunnccttiioonnss
- This section describes the calling sequence for the vari-
- ous functions exported by the GNU History library.
-
- IInniittiiaalliizziinngg HHiissttoorryy aanndd SSttaattee MMaannaaggeemmeenntt
- 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.
-
- _v_o_i_d uussiinngg__hhiissttoorryy (_v_o_i_d)
- Begin a session in which the history functions might be
- used. This initializes the interactive variables.
-
- _H_I_S_T_O_R_Y___S_T_A_T_E _* hhiissttoorryy__ggeett__hhiissttoorryy__ssttaattee (_v_o_i_d)
- Return a structure describing the current state of the
- input history.
-
- _v_o_i_d hhiissttoorryy__sseett__hhiissttoorryy__ssttaattee (_H_I_S_T_O_R_Y___S_T_A_T_E _*_s_t_a_t_e)
-
-
-
-GNU History 4.3 2002 January 31 4
-
-
-
-
-
-HISTORY(3) HISTORY(3)
-
-
- Set the state of the history list according to _s_t_a_t_e.
-
-
- HHiissttoorryy LLiisstt MMaannaaggeemmeenntt
- These functions manage individual entries on the history
- list, or set parameters managing the list itself.
-
- _v_o_i_d aadddd__hhiissttoorryy (_c_o_n_s_t _c_h_a_r _*_s_t_r_i_n_g)
- Place _s_t_r_i_n_g at the end of the history list. The associ-
- ated data field (if any) is set to NNUULLLL.
-
- _H_I_S_T___E_N_T_R_Y _* rreemmoovvee__hhiissttoorryy (_i_n_t _w_h_i_c_h)
- Remove history entry at offset _w_h_i_c_h from the history.
- The removed element is returned so you can free the line,
- data, and containing structure.
-
- _H_I_S_T___E_N_T_R_Y _* rreeppllaaccee__hhiissttoorryy__eennttrryy (_i_n_t _w_h_i_c_h_, _c_o_n_s_t _c_h_a_r
- _*_l_i_n_e_, _h_i_s_t_d_a_t_a___t _d_a_t_a)
- Make the history entry at offset _w_h_i_c_h have _l_i_n_e and _d_a_t_a.
- This returns the old entry so you can dispose of the data.
- In the case of an invalid _w_h_i_c_h, a NNUULLLL pointer is
- returned.
-
- _v_o_i_d cclleeaarr__hhiissttoorryy (_v_o_i_d)
- Clear the history list by deleting all the entries.
-
- _v_o_i_d ssttiiffllee__hhiissttoorryy (_i_n_t _m_a_x)
- Stifle the history list, remembering only the last _m_a_x
- entries.
-
- _i_n_t uunnssttiiffllee__hhiissttoorryy (_v_o_i_d)
- Stop stifling the history. This returns the previously-
- set maximum number of history entries (as set by ssttii--
- ffllee__hhiissttoorryy(())). history was stifled. The value is posi-
- tive if the history was stifled, negative if it wasn't.
-
- _i_n_t hhiissttoorryy__iiss__ssttiifflleedd (_v_o_i_d)
- Returns non-zero if the history is stifled, zero if it is
- not.
-
-
- IInnffoorrmmaattiioonn AAbboouutt tthhee HHiissttoorryy LLiisstt
- These functions return information about the entire his-
- tory list or individual list entries.
-
- _H_I_S_T___E_N_T_R_Y _*_* hhiissttoorryy__lliisstt (_v_o_i_d)
- Return a NNUULLLL terminated array of _H_I_S_T___E_N_T_R_Y _* which is
- the current input history. Element 0 of this list is the
- beginning of time. If there is no history, return NNUULLLL.
-
- _i_n_t wwhheerree__hhiissttoorryy (_v_o_i_d)
- Returns the offset of the current history element.
-
- _H_I_S_T___E_N_T_R_Y _* ccuurrrreenntt__hhiissttoorryy (_v_o_i_d)
-
-
-
-GNU History 4.3 2002 January 31 5
-
-
-
-
-
-HISTORY(3) HISTORY(3)
-
-
- Return the history entry at the current position, as
- determined by wwhheerree__hhiissttoorryy(()). If there is no entry
- there, return a NNUULLLL pointer.
-
- _H_I_S_T___E_N_T_R_Y _* hhiissttoorryy__ggeett (_i_n_t _o_f_f_s_e_t)
- Return the history entry at position _o_f_f_s_e_t, starting from
- hhiissttoorryy__bbaassee. If there is no entry there, or if _o_f_f_s_e_t is
- greater than the history length, return a NNUULLLL pointer.
-
- _i_n_t hhiissttoorryy__ttoottaall__bbyytteess (_v_o_i_d)
- 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.
-
-
- MMoovviinngg AArroouunndd tthhee HHiissttoorryy LLiisstt
- These functions allow the current index into the history
- list to be set or changed.
-
- _i_n_t hhiissttoorryy__sseett__ppooss (_i_n_t _p_o_s)
- Set the current history offset to _p_o_s, an absolute index
- into the list. Returns 1 on success, 0 if _p_o_s is less
- than zero or greater than the number of history entries.
-
- _H_I_S_T___E_N_T_R_Y _* pprreevviioouuss__hhiissttoorryy (_v_o_i_d)
- 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 NNUULLLL pointer.
-
- _H_I_S_T___E_N_T_R_Y _* nneexxtt__hhiissttoorryy (_v_o_i_d)
- Move the current history offset forward to the next his-
- tory entry, and return the a pointer to that entry. If
- there is no next entry, return a NNUULLLL pointer.
-
-
- SSeeaarrcchhiinngg tthhee HHiissttoorryy LLiisstt
- 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 his-
- tory position. The search may be _a_n_c_h_o_r_e_d, meaning that
- the string must match at the beginning of the history
- entry.
-
- _i_n_t hhiissttoorryy__sseeaarrcchh (_c_o_n_s_t _c_h_a_r _*_s_t_r_i_n_g_, _i_n_t _d_i_r_e_c_t_i_o_n)
- Search the history for _s_t_r_i_n_g, starting at the current
- history offset. If _d_i_r_e_c_t_i_o_n is less than 0, then the
- search is through previous entries, otherwise through sub-
- sequent entries. If _s_t_r_i_n_g 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
- _s_t_r_i_n_g was found. Otherwise, nothing is changed, and a -1
- is returned.
-
- _i_n_t hhiissttoorryy__sseeaarrcchh__pprreeffiixx (_c_o_n_s_t _c_h_a_r _*_s_t_r_i_n_g_, _i_n_t
-
-
-
-GNU History 4.3 2002 January 31 6
-
-
-
-
-
-HISTORY(3) HISTORY(3)
-
-
- _d_i_r_e_c_t_i_o_n)
- Search the history for _s_t_r_i_n_g, starting at the current
- history offset. The search is anchored: matching lines
- must begin with _s_t_r_i_n_g. If _d_i_r_e_c_t_i_o_n is less than 0, then
- the search is through previous entries, otherwise through
- subsequent entries. If _s_t_r_i_n_g 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.
-
- _i_n_t hhiissttoorryy__sseeaarrcchh__ppooss (_c_o_n_s_t _c_h_a_r _*_s_t_r_i_n_g_, _i_n_t _d_i_r_e_c_t_i_o_n_,
- _i_n_t _p_o_s)
- Search for _s_t_r_i_n_g in the history list, starting at _p_o_s, an
- absolute index into the list. If _d_i_r_e_c_t_i_o_n is negative,
- the search proceeds backward from _p_o_s, otherwise forward.
- Returns the absolute index of the history element where
- _s_t_r_i_n_g was found, or -1 otherwise.
-
-
- MMaannaaggiinngg tthhee HHiissttoorryy FFiillee
- The History library can read the history from and write it
- to a file. This section documents the functions for man-
- aging a history file.
-
- _i_n_t rreeaadd__hhiissttoorryy (_c_o_n_s_t _c_h_a_r _*_f_i_l_e_n_a_m_e)
- Add the contents of _f_i_l_e_n_a_m_e to the history list, a line
- at a time. If _f_i_l_e_n_a_m_e is NNUULLLL, then read from _~_/_._h_i_s_-
- _t_o_r_y. Returns 0 if successful, or eerrrrnnoo if not.
-
- _i_n_t rreeaadd__hhiissttoorryy__rraannggee (_c_o_n_s_t _c_h_a_r _*_f_i_l_e_n_a_m_e_, _i_n_t _f_r_o_m_,
- _i_n_t _t_o)
- Read a range of lines from _f_i_l_e_n_a_m_e, adding them to the
- history list. Start reading at line _f_r_o_m and end at _t_o.
- If _f_r_o_m is zero, start at the beginning. If _t_o is less
- than _f_r_o_m, then read until the end of the file. If _f_i_l_e_-
- _n_a_m_e is NNUULLLL, then read from _~_/_._h_i_s_t_o_r_y. Returns 0 if
- successful, or eerrrrnnoo if not.
-
- _i_n_t wwrriittee__hhiissttoorryy (_c_o_n_s_t _c_h_a_r _*_f_i_l_e_n_a_m_e)
- Write the current history to _f_i_l_e_n_a_m_e, overwriting _f_i_l_e_-
- _n_a_m_e if necessary. If _f_i_l_e_n_a_m_e is NNUULLLL, then write the
- history list to _~_/_._h_i_s_t_o_r_y. Returns 0 on success, or
- eerrrrnnoo on a read or write error.
-
-
- _i_n_t aappppeenndd__hhiissttoorryy (_i_n_t _n_e_l_e_m_e_n_t_s_, _c_o_n_s_t _c_h_a_r _*_f_i_l_e_n_a_m_e)
- Append the last _n_e_l_e_m_e_n_t_s of the history list to _f_i_l_e_n_a_m_e.
- If _f_i_l_e_n_a_m_e is NNUULLLL, then append to _~_/_._h_i_s_t_o_r_y. Returns 0
- on success, or eerrrrnnoo on a read or write error.
-
- _i_n_t hhiissttoorryy__ttrruunnccaattee__ffiillee (_c_o_n_s_t _c_h_a_r _*_f_i_l_e_n_a_m_e_, _i_n_t
- _n_l_i_n_e_s)
- Truncate the history file _f_i_l_e_n_a_m_e, leaving only the last
- _n_l_i_n_e_s lines. If _f_i_l_e_n_a_m_e is NNUULLLL, then _~_/_._h_i_s_t_o_r_y is
-
-
-
-GNU History 4.3 2002 January 31 7
-
-
-
-
-
-HISTORY(3) HISTORY(3)
-
-
- truncated. Returns 0 on success, or eerrrrnnoo on failure.
-
-
- HHiissttoorryy EExxppaannssiioonn
- These functions implement history expansion.
-
- _i_n_t hhiissttoorryy__eexxppaanndd (_c_h_a_r _*_s_t_r_i_n_g_, _c_h_a_r _*_*_o_u_t_p_u_t)
- Expand _s_t_r_i_n_g, placing the result into _o_u_t_p_u_t, a pointer
- to a string. Returns:
- 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);
- 1 if expansions did take place;
- -1 if there was an error in expansion;
- 2 if the returned line should be displayed,
- but not executed, as with the ::pp modifier.
- If an error ocurred in expansion, then _o_u_t_p_u_t contains a
- descriptive error message.
-
- _c_h_a_r _* ggeett__hhiissttoorryy__eevveenntt (_c_o_n_s_t _c_h_a_r _*_s_t_r_i_n_g_, _i_n_t _*_c_i_n_d_e_x_,
- _i_n_t _q_c_h_a_r)
- Returns the text of the history event beginning at _s_t_r_i_n_g
- + _*_c_i_n_d_e_x. _*_c_i_n_d_e_x is modified to point to after the
- event specifier. At function entry, _c_i_n_d_e_x points to the
- index into _s_t_r_i_n_g where the history event specification
- begins. _q_c_h_a_r is a character that is allowed to end the
- event specification in addition to the ``normal'' termi-
- nating characters.
-
- _c_h_a_r _*_* hhiissttoorryy__ttookkeenniizzee (_c_o_n_s_t _c_h_a_r _*_s_t_r_i_n_g)
- Return an array of tokens parsed out of _s_t_r_i_n_g, much as
- the shell might. The tokens are split on the characters
- in the hhiissttoorryy__wwoorrdd__ddeelliimmiitteerrss variable, and shell quoting
- conventions are obeyed.
-
- _c_h_a_r _* hhiissttoorryy__aarrgg__eexxttrraacctt (_i_n_t _f_i_r_s_t_, _i_n_t _l_a_s_t_, _c_o_n_s_t
- _c_h_a_r _*_s_t_r_i_n_g)
- Extract a string segment consisting of the _f_i_r_s_t through
- _l_a_s_t arguments present in _s_t_r_i_n_g. Arguments are split
- using hhiissttoorryy__ttookkeenniizzee(()).
-
-
- HHiissttoorryy VVaarriiaabblleess
- This section describes the externally-visible variables
- exported by the GNU History Library.
-
- _i_n_t hhiissttoorryy__bbaassee
- The logical offset of the first entry in the history list.
-
- _i_n_t hhiissttoorryy__lleennggtthh
- The number of entries currently stored in the history
- list.
-
-
-
-
-GNU History 4.3 2002 January 31 8
-
-
-
-
-
-HISTORY(3) HISTORY(3)
-
-
- _i_n_t hhiissttoorryy__mmaaxx__eennttrriieess
- The maximum number of history entries. This must be
- changed using ssttiiffllee__hhiissttoorryy(()).
-
- _c_h_a_r hhiissttoorryy__eexxppaannssiioonn__cchhaarr
- The character that introduces a history event. The
- default is !!. Setting this to 0 inhibits history expan-
- sion.
-
- _c_h_a_r hhiissttoorryy__ssuubbsstt__cchhaarr
- The character that invokes word substitution if found at
- the start of a line. The default is ^^.
-
- _c_h_a_r hhiissttoorryy__ccoommmmeenntt__cchhaarr
- 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 his-
- tory expansion for the remainder of the line. This is
- disabled by default.
-
- _c_h_a_r _* hhiissttoorryy__wwoorrdd__ddeelliimmiitteerrss
- The characters that separate tokens for hhiissttoorryy__ttookk--
- eenniizzee(()). The default value is "" \\tt\\nn(())<<>>;;&&||"".
-
- _c_h_a_r _* hhiissttoorryy__nnoo__eexxppaanndd__cchhaarrss
- The list of characters which inhibit history expansion if
- found immediately following hhiissttoorryy__eexxppaannssiioonn__cchhaarr. The
- default is space, tab, newline, \\rr, and ==.
-
- _c_h_a_r _* hhiissttoorryy__sseeaarrcchh__ddeelliimmiitteerr__cchhaarrss
- The list of additional characters which can delimit a his-
- tory search string, in addition to space, tab, _: and _? in
- the case of a substring search. The default is empty.
-
- _i_n_t hhiissttoorryy__qquuootteess__iinnhhiibbiitt__eexxppaannssiioonn
- If non-zero, single-quoted words are not scanned for the
- history expansion character. The default value is 0.
-
- _r_l___l_i_n_e_b_u_f___f_u_n_c___t _* hhiissttoorryy__iinnhhiibbiitt__eexxppaannssiioonn__ffuunnccttiioonn
- This should be set to the address of a function that takes
- two arguments: a cchhaarr ** (_s_t_r_i_n_g) and an iinntt index into
- that string (_i). It should return a non-zero value if the
- history expansion starting at _s_t_r_i_n_g_[_i_] should not be per-
- formed; zero if the expansion should be done. It is
- intended for use by applications like bbaasshh that use the
- history expansion character for additional purposes. By
- default, this variable is set to NNUULLLL.
-
-FFIILLEESS
- _~_/_._h_i_s_t_o_r_y
- Default filename for reading and writing saved his-
- tory
-
-
-
-
-
-GNU History 4.3 2002 January 31 9
-
-
-
-
-
-HISTORY(3) HISTORY(3)
-
-
-SSEEEE AALLSSOO
- _T_h_e _G_n_u _R_e_a_d_l_i_n_e _L_i_b_r_a_r_y, Brian Fox and Chet Ramey
- _T_h_e _G_n_u _H_i_s_t_o_r_y _L_i_b_r_a_r_y, Brian Fox and Chet Ramey
- _b_a_s_h(1)
- _r_e_a_d_l_i_n_e(3)
-
-AAUUTTHHOORRSS
- Brian Fox, Free Software Foundation
- bfox@gnu.org
-
- Chet Ramey, Case Western Reserve University
- chet@ins.CWRU.Edu
-
-BBUUGG RREEPPOORRTTSS
- If you find a bug in the hhiissttoorryy library, you should
- report it. But first, you should make sure that it really
- is a bug, and that it appears in the latest version of the
- hhiissttoorryy library that you have.
-
- Once you have determined that a bug actually exists, mail
- a bug report to _b_u_g_-_r_e_a_d_l_i_n_e@_g_n_u_._o_r_g. If you have a fix,
- you are welcome to mail that as well! Suggestions and
- `philosophical' bug reports may be mailed to _b_u_g_-_r_e_a_d_-
- _l_i_n_e@_g_n_u_._o_r_g or posted to the Usenet newsgroup
- ggnnuu..bbaasshh..bbuugg.
-
- Comments and bug reports concerning this manual page
- should be directed to _c_h_e_t_@_i_n_s_._C_W_R_U_._E_d_u.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-GNU History 4.3 2002 January 31 10
-
-
diff --git a/readline-4.3.orig/doc/history.3 b/readline-4.3.orig/doc/history.3
deleted file mode 100644
index ed0cb9f..0000000
--- a/readline-4.3.orig/doc/history.3
+++ /dev/null
@@ -1,640 +0,0 @@
-.\"
-.\" MAN PAGE COMMENTS to
-.\"
-.\" Chet Ramey
-.\" Information Network Services
-.\" Case Western Reserve University
-.\" chet@ins.CWRU.Edu
-.\"
-.\" Last Change: Thu Jan 31 16:08:07 EST 2002
-.\"
-.TH HISTORY 3 "2002 January 31" "GNU History 4.3"
-.\"
-.\" File Name macro. This used to be `.PN', for Path Name,
-.\" but Sun doesn't seem to like that very much.
-.\"
-.de FN
-\fI\|\\$1\|\fP
-..
-.ds lp \fR\|(\fP
-.ds rp \fR\|)\fP
-.\" FnN return-value fun-name N arguments
-.de Fn1
-\fI\\$1\fP \fB\\$2\fP \\*(lp\fI\\$3\fP\\*(rp
-.br
-..
-.de Fn2
-.if t \fI\\$1\fP \fB\\$2\fP \\*(lp\fI\\$3,\|\\$4\fP\\*(rp
-.if n \fI\\$1\fP \fB\\$2\fP \\*(lp\fI\\$3, \\$4\fP\\*(rp
-.br
-..
-.de Fn3
-.if t \fI\\$1\fP \fB\\$2\fP \\*(lp\fI\\$3,\|\\$4,\|\\$5\fP\|\\*(rp
-.if n \fI\\$1\fP \fB\\$2\fP \\*(lp\fI\\$3, \\$4, \\$5\fP\\*(rp
-.br
-..
-.de Vb
-\fI\\$1\fP \fB\\$2\fP
-.br
-..
-.SH NAME
-history \- GNU History Library
-.SH COPYRIGHT
-.if t The GNU History Library is Copyright \(co 1989-2002 by the Free Software Foundation, Inc.
-.if n The GNU History Library is Copyright (C) 1989-2002 by the Free Software Foundation, Inc.
-.SH DESCRIPTION
-Many programs read input from the user a line at a time. The 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.
-.PP
-.SH "HISTORY EXPANSION"
-.PP
-The history library supports a history expansion feature that
-is identical to the history expansion in
-.BR bash.
-This section describes what syntax features are available.
-.PP
-History expansions introduce words from the history list into
-the input stream, making it easy to repeat commands, insert the
-arguments to a previous command into the current input line, or
-fix errors in previous commands quickly.
-.PP
-History expansion is usually performed immediately after a complete line
-is read.
-It takes place in two parts.
-The first is to determine which line from the history list
-to use during substitution.
-The second is to select portions of that line for inclusion into
-the current one.
-The line selected from the history is the \fIevent\fP,
-and the portions of that line that are acted upon are \fIwords\fP.
-Various \fImodifiers\fP are available to manipulate the selected words.
-The line is broken into words in the same fashion as \fBbash\fP
-does when reading input,
-so that several words that would otherwise be separated
-are considered one word when surrounded by quotes (see the
-description of \fBhistory_tokenize()\fP below).
-History expansions are introduced by the appearance of the
-history expansion character, which is \^\fB!\fP\^ by default.
-Only backslash (\^\fB\e\fP\^) and single quotes can quote
-the history expansion character.
-.SS Event Designators
-.PP
-An event designator is a reference to a command line entry in the
-history list.
-.PP
-.PD 0
-.TP
-.B !
-Start a history substitution, except when followed by a
-.BR blank ,
-newline, = or (.
-.TP
-.B !\fIn\fR
-Refer to command line
-.IR n .
-.TP
-.B !\-\fIn\fR
-Refer to the current command line minus
-.IR n .
-.TP
-.B !!
-Refer to the previous command. This is a synonym for `!\-1'.
-.TP
-.B !\fIstring\fR
-Refer to the most recent command starting with
-.IR string .
-.TP
-.B !?\fIstring\fR\fB[?]\fR
-Refer to the most recent command containing
-.IR string .
-The trailing \fB?\fP may be omitted if
-.I string
-is followed immediately by a newline.
-.TP
-.B \d\s+2^\s-2\u\fIstring1\fP\d\s+2^\s-2\u\fIstring2\fP\d\s+2^\s-2\u
-Quick substitution. Repeat the last command, replacing
-.I string1
-with
-.IR string2 .
-Equivalent to
-``!!:s/\fIstring1\fP/\fIstring2\fP/''
-(see \fBModifiers\fP below).
-.TP
-.B !#
-The entire command line typed so far.
-.PD
-.SS Word Designators
-.PP
-Word designators are used to select desired words from the event.
-A
-.B :
-separates the event specification from the word designator.
-It may be omitted if the word designator begins with a
-.BR ^ ,
-.BR $ ,
-.BR * ,
-.BR \- ,
-or
-.BR % .
-Words are numbered from the beginning of the line,
-with the first word being denoted by 0 (zero).
-Words are inserted into the current line separated by single spaces.
-.PP
-.PD 0
-.TP
-.B 0 (zero)
-The zeroth word. For the shell, this is the command
-word.
-.TP
-.I n
-The \fIn\fRth word.
-.TP
-.B ^
-The first argument. That is, word 1.
-.TP
-.B $
-The last argument.
-.TP
-.B %
-The word matched by the most recent `?\fIstring\fR?' search.
-.TP
-.I x\fB\-\fPy
-A range of words; `\-\fIy\fR' abbreviates `0\-\fIy\fR'.
-.TP
-.B *
-All of the words but the zeroth. This is a synonym
-for `\fI1\-$\fP'. It is not an error to use
-.B *
-if there is just one
-word in the event; the empty string is returned in that case.
-.TP
-.B x*
-Abbreviates \fIx\-$\fP.
-.TP
-.B x\-
-Abbreviates \fIx\-$\fP like \fBx*\fP, but omits the last word.
-.PD
-.PP
-If a word designator is supplied without an event specification, the
-previous command is used as the event.
-.SS Modifiers
-.PP
-After the optional word designator, there may appear a sequence of
-one or more of the following modifiers, each preceded by a `:'.
-.PP
-.PD 0
-.PP
-.TP
-.B h
-Remove a trailing file name component, leaving only the head.
-.TP
-.B t
-Remove all leading file name components, leaving the tail.
-.TP
-.B r
-Remove a trailing suffix of the form \fI.xxx\fP, leaving the
-basename.
-.TP
-.B e
-Remove all but the trailing suffix.
-.TP
-.B p
-Print the new command but do not execute it.
-.TP
-.B q
-Quote the substituted words, escaping further substitutions.
-.TP
-.B x
-Quote the substituted words as with
-.BR q ,
-but break into words at
-.B blanks
-and newlines.
-.TP
-.B s/\fIold\fP/\fInew\fP/
-Substitute
-.I new
-for the first occurrence of
-.I old
-in the event line. Any delimiter can be used in place of /. The
-final delimiter is optional if it is the last character of the
-event line. The delimiter may be quoted in
-.I old
-and
-.I new
-with a single backslash. If & appears in
-.IR new ,
-it is replaced by
-.IR old .
-A single backslash will quote the &. If
-.I old
-is null, it is set to the last
-.I old
-substituted, or, if no previous history substitutions took place,
-the last
-.I string
-in a
-.B !?\fIstring\fR\fB[?]\fR
-search.
-.TP
-.B &
-Repeat the previous substitution.
-.TP
-.B g
-Cause changes to be applied over the entire event line. This is
-used in conjunction with `\fB:s\fP' (e.g., `\fB:gs/\fIold\fP/\fInew\fP/\fR')
-or `\fB:&\fP'. If used with
-`\fB:s\fP', any delimiter can be used
-in place of /, and the final delimiter is optional
-if it is the last character of the event line.
-.PD
-.SH "PROGRAMMING WITH HISTORY FUNCTIONS"
-This section describes how to use the History library in other programs.
-.SS Introduction to History
-.PP
-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 \fIexpansion\fP function
-is available which provides for a consistent user interface across
-different programs.
-.PP
-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
-identical to
-the history substitution provided by \fBbash\fP.
-.PP
-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.
-.PP
-Before declaring any functions using any functionality the History
-library provides in other code, an application writer should include
-the file
-.FN <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.
-
-.SS History Storage
-.PP
-The history list is an array of history entries. A history entry is
-declared as follows:
-.PP
-.Vb "typedef void *" histdata_t;
-.PP
-.nf
-typedef struct _hist_entry {
- char *line;
- histdata_t data;
-} HIST_ENTRY;
-.fi
-.PP
-The history list itself might therefore be declared as
-.PP
-.Vb "HIST_ENTRY **" the_history_list;
-.PP
-The state of the History library is encapsulated into a single structure:
-.PP
-.nf
-/*
- * 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;
-.fi
-.PP
-If the flags member includes \fBHS_STIFLED\fP, the history has been
-stifled.
-.SH "History Functions"
-.PP
-This section describes the calling sequence for the various functions
-exported by the GNU History library.
-.SS 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.
-
-.Fn1 void using_history void
-Begin a session in which the history functions might be used. This
-initializes the interactive variables.
-
-.Fn1 "HISTORY_STATE *" history_get_history_state void
-Return a structure describing the current state of the input history.
-
-.Fn1 void history_set_history_state "HISTORY_STATE *state"
-Set the state of the history list according to \fIstate\fP.
-
-.SS History List Management
-
-These functions manage individual entries on the history list, or set
-parameters managing the list itself.
-
-.Fn1 void add_history "const char *string"
-Place \fIstring\fP at the end of the history list. The associated data
-field (if any) is set to \fBNULL\fP.
-
-.Fn1 "HIST_ENTRY *" remove_history "int which"
-Remove history entry at offset \fIwhich\fP from the history. The
-removed element is returned so you can free the line, data,
-and containing structure.
-
-.Fn3 "HIST_ENTRY *" replace_history_entry "int which" "const char *line" "histdata_t data"
-Make the history entry at offset \fIwhich\fP have \fIline\fP and \fIdata\fP.
-This returns the old entry so you can dispose of the data. In the case
-of an invalid \fIwhich\fP, a \fBNULL\fP pointer is returned.
-
-.Fn1 void clear_history "void"
-Clear the history list by deleting all the entries.
-
-.Fn1 void stifle_history "int max"
-Stifle the history list, remembering only the last \fImax\fP entries.
-
-.Fn1 int unstifle_history "void"
-Stop stifling the history. This returns the previously-set
-maximum number of history entries (as set by \fBstifle_history()\fP).
-history was stifled. The value is positive if the history was
-stifled, negative if it wasn't.
-
-.Fn1 int history_is_stifled "void"
-Returns non-zero if the history is stifled, zero if it is not.
-
-.SS Information About the History List
-
-These functions return information about the entire history list or
-individual list entries.
-
-.Fn1 "HIST_ENTRY **" history_list "void"
-Return a \fBNULL\fP terminated array of \fIHIST_ENTRY *\fP which is the
-current input history. Element 0 of this list is the beginning of time.
-If there is no history, return \fBNULL\fP.
-
-.Fn1 int where_history "void"
-Returns the offset of the current history element.
-
-.Fn1 "HIST_ENTRY *" current_history "void"
-Return the history entry at the current position, as determined by
-\fBwhere_history()\fP. If there is no entry there, return a \fBNULL\fP
-pointer.
-
-.Fn1 "HIST_ENTRY *" history_get "int offset"
-Return the history entry at position \fIoffset\fP, starting from
-\fBhistory_base\fP.
-If there is no entry there, or if \fIoffset\fP
-is greater than the history length, return a \fBNULL\fP pointer.
-
-.Fn1 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.
-
-.SS Moving Around the History List
-
-These functions allow the current index into the history list to be
-set or changed.
-
-.Fn1 int history_set_pos "int pos"
-Set the current history offset to \fIpos\fP, an absolute index
-into the list.
-Returns 1 on success, 0 if \fIpos\fP is less than zero or greater
-than the number of history entries.
-
-.Fn1 "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 \fBNULL\fP pointer.
-
-.Fn1 "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 \fBNULL\fP pointer.
-
-.SS Searching the History List
-
-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 \fIanchored\fP,
-meaning that the string must match at the beginning of the history entry.
-
-.Fn2 int history_search "const char *string" "int direction"
-Search the history for \fIstring\fP, starting at the current history offset.
-If \fIdirection\fP is less than 0, then the search is through
-previous entries, otherwise through subsequent entries.
-If \fIstring\fP 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
-\fIstring\fP was found. Otherwise, nothing is changed, and a -1 is
-returned.
-
-.Fn2 int history_search_prefix "const char *string" "int direction"
-Search the history for \fIstring\fP, starting at the current history
-offset. The search is anchored: matching lines must begin with
-\fIstring\fP. If \fIdirection\fP is less than 0, then the search is
-through previous entries, otherwise through subsequent entries.
-If \fIstring\fP 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.
-
-.Fn3 int history_search_pos "const char *string" "int direction" "int pos"
-Search for \fIstring\fP in the history list, starting at \fIpos\fP, an
-absolute index into the list. If \fIdirection\fP is negative, the search
-proceeds backward from \fIpos\fP, otherwise forward. Returns the absolute
-index of the history element where \fIstring\fP was found, or -1 otherwise.
-
-.SS 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.
-
-.Fn1 int read_history "const char *filename"
-Add the contents of \fIfilename\fP to the history list, a line at a time.
-If \fIfilename\fP is \fBNULL\fP, then read from \fI~/.history\fP.
-Returns 0 if successful, or \fBerrno\fP if not.
-
-.Fn3 int read_history_range "const char *filename" "int from" "int to"
-Read a range of lines from \fIfilename\fP, adding them to the history list.
-Start reading at line \fIfrom\fP and end at \fIto\fP.
-If \fIfrom\fP is zero, start at the beginning. If \fIto\fP is less than
-\fIfrom\fP, then read until the end of the file. If \fIfilename\fP is
-\fBNULL\fP, then read from \fI~/.history\fP. Returns 0 if successful,
-or \fBerrno\fP if not.
-
-.Fn1 int write_history "const char *filename"
-Write the current history to \fIfilename\fP, overwriting \fIfilename\fP
-if necessary.
-If \fIfilename\fP is \fBNULL\fP, then write the history list to \fI~/.history\fP.
-Returns 0 on success, or \fBerrno\fP on a read or write error.
-
-
-.Fn2 int append_history "int nelements" "const char *filename"
-Append the last \fInelements\fP of the history list to \fIfilename\fP.
-If \fIfilename\fP is \fBNULL\fP, then append to \fI~/.history\fP.
-Returns 0 on success, or \fBerrno\fP on a read or write error.
-
-.Fn2 int history_truncate_file "const char *filename" "int nlines"
-Truncate the history file \fIfilename\fP, leaving only the last
-\fInlines\fP lines.
-If \fIfilename\fP is \fBNULL\fP, then \fI~/.history\fP is truncated.
-Returns 0 on success, or \fBerrno\fP on failure.
-
-.SS History Expansion
-
-These functions implement history expansion.
-
-.Fn2 int history_expand "char *string" "char **output"
-Expand \fIstring\fP, placing the result into \fIoutput\fP, a pointer
-to a string. Returns:
-.RS
-.PD 0
-.TP
-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);
-.TP
-1
-if expansions did take place;
-.TP
--1
-if there was an error in expansion;
-.TP
-2
-if the returned line should be displayed, but not executed,
-as with the \fB:p\fP modifier.
-.PD
-.RE
-If an error ocurred in expansion, then \fIoutput\fP contains a descriptive
-error message.
-
-.Fn3 "char *" get_history_event "const char *string" "int *cindex" "int qchar"
-Returns the text of the history event beginning at \fIstring\fP +
-\fI*cindex\fP. \fI*cindex\fP is modified to point to after the event
-specifier. At function entry, \fIcindex\fP points to the index into
-\fIstring\fP where the history event specification begins. \fIqchar\fP
-is a character that is allowed to end the event specification in addition
-to the ``normal'' terminating characters.
-
-.Fn1 "char **" history_tokenize "const char *string"
-Return an array of tokens parsed out of \fIstring\fP, much as the
-shell might.
-The tokens are split on the characters in the
-\fBhistory_word_delimiters\fP variable,
-and shell quoting conventions are obeyed.
-
-.Fn3 "char *" history_arg_extract "int first" "int last" "const char *string"
-Extract a string segment consisting of the \fIfirst\fP through \fIlast\fP
-arguments present in \fIstring\fP. Arguments are split using
-\fBhistory_tokenize()\fP.
-
-.SS History Variables
-
-This section describes the externally-visible variables exported by
-the GNU History Library.
-
-.Vb int history_base
-The logical offset of the first entry in the history list.
-
-.Vb int history_length
-The number of entries currently stored in the history list.
-
-.Vb int history_max_entries
-The maximum number of history entries. This must be changed using
-\fBstifle_history()\fP.
-
-.Vb char history_expansion_char
-The character that introduces a history event. The default is \fB!\fP.
-Setting this to 0 inhibits history expansion.
-
-.Vb char history_subst_char
-The character that invokes word substitution if found at the start of
-a line. The default is \fB^\fP.
-
-.Vb 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.
-
-.Vb "char *" history_word_delimiters
-The characters that separate tokens for \fBhistory_tokenize()\fP.
-The default value is \fB"\ \et\en()<>;&|"\fP.
-
-.Vb "char *" history_no_expand_chars
-The list of characters which inhibit history expansion if found immediately
-following \fBhistory_expansion_char\fP. The default is space, tab, newline,
-\fB\er\fP, and \fB=\fP.
-
-.Vb "char *" history_search_delimiter_chars
-The list of additional characters which can delimit a history search
-string, in addition to space, tab, \fI:\fP and \fI?\fP in the case of
-a substring search. The default is empty.
-
-.Vb int history_quotes_inhibit_expansion
-If non-zero, single-quoted words are not scanned for the history expansion
-character. The default value is 0.
-
-.Vb "rl_linebuf_func_t *" history_inhibit_expansion_function
-This should be set to the address of a function that takes two arguments:
-a \fBchar *\fP (\fIstring\fP)
-and an \fBint\fP index into that string (\fIi\fP).
-It should return a non-zero value if the history expansion starting at
-\fIstring[i]\fP should not be performed; zero if the expansion should
-be done.
-It is intended for use by applications like \fBbash\fP that use the history
-expansion character for additional purposes.
-By default, this variable is set to \fBNULL\fP.
-.SH FILES
-.PD 0
-.TP
-.FN ~/.history
-Default filename for reading and writing saved history
-.PD
-.SH "SEE ALSO"
-.PD 0
-.TP
-\fIThe Gnu Readline Library\fP, Brian Fox and Chet Ramey
-.TP
-\fIThe Gnu History Library\fP, Brian Fox and Chet Ramey
-.TP
-\fIbash\fP(1)
-.TP
-\fIreadline\fP(3)
-.PD
-.SH AUTHORS
-Brian Fox, Free Software Foundation
-.br
-bfox@gnu.org
-.PP
-Chet Ramey, Case Western Reserve University
-.br
-chet@ins.CWRU.Edu
-.SH BUG REPORTS
-If you find a bug in the
-.B history
-library, you should report it. But first, you should
-make sure that it really is a bug, and that it appears in the latest
-version of the
-.B history
-library that you have.
-.PP
-Once you have determined that a bug actually exists, mail a
-bug report to \fIbug\-readline\fP@\fIgnu.org\fP.
-If you have a fix, you are welcome to mail that
-as well! Suggestions and `philosophical' bug reports may be mailed
-to \fPbug-readline\fP@\fIgnu.org\fP or posted to the Usenet
-newsgroup
-.BR gnu.bash.bug .
-.PP
-Comments and bug reports concerning
-this manual page should be directed to
-.IR chet@ins.CWRU.Edu .
diff --git a/readline-4.3.orig/doc/history.dvi b/readline-4.3.orig/doc/history.dvi
deleted file mode 100644
index bf7444e..0000000
--- a/readline-4.3.orig/doc/history.dvi
+++ /dev/null
Binary files differ
diff --git a/readline-4.3.orig/doc/history.html b/readline-4.3.orig/doc/history.html
deleted file mode 100644
index 5afe15b..0000000
--- a/readline-4.3.orig/doc/history.html
+++ /dev/null
@@ -1,1639 +0,0 @@
-<HTML>
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<!-- Created on June, 27 2002 by texi2html 1.64 -->
-<!--
-Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
- Karl Berry <karl@freefriends.org>
- Olaf Bachmann <obachman@mathematik.uni-kl.de>
- and many others.
-Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>
-Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
-
--->
-<HEAD>
-<TITLE>GNU History Library: </TITLE>
-
-<META NAME="description" CONTENT="GNU History Library: ">
-<META NAME="keywords" CONTENT="GNU History Library: ">
-<META NAME="resource-type" CONTENT="document">
-<META NAME="distribution" CONTENT="global">
-<META NAME="Generator" CONTENT="texi2html 1.64">
-
-</HEAD>
-
-<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
-
-<A NAME="SEC_Top"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1>GNU History Library</H1></P><P>
-
-This document describes the GNU History library, a programming tool that
-provides a consistent user interface for recalling lines of previously
-typed input.
-</P><P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC1">1. Using History Interactively</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">GNU History User's Manual.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC6">2. Programming with GNU History</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">GNU History Programmer's Manual.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC19">A. Concept Index</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Index of concepts described in this manual.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC20">B. Function and Variable Index</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Index of externally visible functions
- and variables.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<HR SIZE=1>
-<A NAME="SEC1"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC2"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<A NAME="Using History Interactively"></A>
-<H1> 1. Using History Interactively </H1>
-<!--docid::SEC1::-->
-<P>
-
-This chapter describes how to use the GNU History Library interactively,
-from a user's standpoint. It should be considered a user's guide. For
-information on using the GNU History Library in your own programs,
-see section <A HREF="history.html#SEC6">2. Programming with GNU History</A>.
-</P><P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC2">1.1 History Expansion</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">What it feels like using History as a user.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<A NAME="History Interaction"></A>
-<HR SIZE="6">
-<A NAME="SEC2"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC1"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC3"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC1"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 1.1 History Expansion </H2>
-<!--docid::SEC2::-->
-<P>
-
-The History library provides a history expansion feature that is similar
-to the history expansion provided by <CODE>csh</CODE>. This section
-describes the syntax used to manipulate the history information.
-</P><P>
-
-History expansions introduce words from the history list into
-the input stream, making it easy to repeat commands, insert the
-arguments to a previous command into the current input line, or
-fix errors in previous commands quickly.
-</P><P>
-
-History expansion takes place in two parts. The first is to determine
-which line from the history list should be used during substitution.
-The second is to select portions of that line for inclusion into the
-current one. The line selected from the history is called the
-<EM>event</EM>, and the portions of that line that are acted upon are
-called <EM>words</EM>. Various <EM>modifiers</EM> are available to manipulate
-the selected words. The line is broken into words in the same fashion
-that Bash does, so that several words
-surrounded by quotes are considered one word.
-History expansions are introduced by the appearance of the
-history expansion character, which is <SAMP>`!'</SAMP> by default.
-</P><P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC3">1.1.1 Event Designators</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">How to specify which history line to use.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC4">1.1.2 Word Designators</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Specifying which words are of interest.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC5">1.1.3 Modifiers</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Modifying the results of substitution.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<A NAME="Event Designators"></A>
-<HR SIZE="6">
-<A NAME="SEC3"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC2"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC4"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC2"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.1.1 Event Designators </H3>
-<!--docid::SEC3::-->
-<P>
-
-An event designator is a reference to a command line entry in the
-history list.
-<A NAME="IDX1"></A>
-</P><P>
-
-<DL COMPACT>
-
-<DT><CODE>!</CODE>
-<DD>Start a history substitution, except when followed by a space, tab,
-the end of the line, <SAMP>`='</SAMP> or <SAMP>`('</SAMP>.
-<P>
-
-<DT><CODE>!<VAR>n</VAR></CODE>
-<DD>Refer to command line <VAR>n</VAR>.
-<P>
-
-<DT><CODE>!-<VAR>n</VAR></CODE>
-<DD>Refer to the command <VAR>n</VAR> lines back.
-<P>
-
-<DT><CODE>!!</CODE>
-<DD>Refer to the previous command. This is a synonym for <SAMP>`!-1'</SAMP>.
-<P>
-
-<DT><CODE>!<VAR>string</VAR></CODE>
-<DD>Refer to the most recent command starting with <VAR>string</VAR>.
-<P>
-
-<DT><CODE>!?<VAR>string</VAR>[?]</CODE>
-<DD>Refer to the most recent command containing <VAR>string</VAR>. The trailing
-<SAMP>`?'</SAMP> may be omitted if the <VAR>string</VAR> is followed immediately by
-a newline.
-<P>
-
-<DT><CODE>^<VAR>string1</VAR>^<VAR>string2</VAR>^</CODE>
-<DD>Quick Substitution. Repeat the last command, replacing <VAR>string1</VAR>
-with <VAR>string2</VAR>. Equivalent to
-<CODE>!!:s/<VAR>string1</VAR>/<VAR>string2</VAR>/</CODE>.
-<P>
-
-<DT><CODE>!#</CODE>
-<DD>The entire command line typed so far.
-<P>
-
-</DL>
-<P>
-
-<A NAME="Word Designators"></A>
-<HR SIZE="6">
-<A NAME="SEC4"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC3"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC5"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC5"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC2"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.1.2 Word Designators </H3>
-<!--docid::SEC4::-->
-<P>
-
-Word designators are used to select desired words from the event.
-A <SAMP>`:'</SAMP> separates the event specification from the word designator. It
-may be omitted if the word designator begins with a <SAMP>`^'</SAMP>, <SAMP>`$'</SAMP>,
-<SAMP>`*'</SAMP>, <SAMP>`-'</SAMP>, or <SAMP>`%'</SAMP>. Words are numbered from the beginning
-of the line, with the first word being denoted by 0 (zero). Words are
-inserted into the current line separated by single spaces.
-</P><P>
-
-For example,
-</P><P>
-
-<DL COMPACT>
-<DT><CODE>!!</CODE>
-<DD>designates the preceding command. When you type this, the preceding
-command is repeated in toto.
-<P>
-
-<DT><CODE>!!:$</CODE>
-<DD>designates the last argument of the preceding command. This may be
-shortened to <CODE>!$</CODE>.
-<P>
-
-<DT><CODE>!fi:2</CODE>
-<DD>designates the second argument of the most recent command starting with
-the letters <CODE>fi</CODE>.
-</DL>
-<P>
-
-Here are the word designators:
-
-<DL COMPACT>
-
-<DT><CODE>0 (zero)</CODE>
-<DD>The <CODE>0</CODE>th word. For many applications, this is the command word.
-<P>
-
-<DT><CODE><VAR>n</VAR></CODE>
-<DD>The <VAR>n</VAR>th word.
-<P>
-
-<DT><CODE>^</CODE>
-<DD>The first argument; that is, word 1.
-<P>
-
-<DT><CODE>$</CODE>
-<DD>The last argument.
-<P>
-
-<DT><CODE>%</CODE>
-<DD>The word matched by the most recent <SAMP>`?<VAR>string</VAR>?'</SAMP> search.
-<P>
-
-<DT><CODE><VAR>x</VAR>-<VAR>y</VAR></CODE>
-<DD>A range of words; <SAMP>`-<VAR>y</VAR>'</SAMP> abbreviates <SAMP>`0-<VAR>y</VAR>'</SAMP>.
-<P>
-
-<DT><CODE>*</CODE>
-<DD>All of the words, except the <CODE>0</CODE>th. This is a synonym for <SAMP>`1-$'</SAMP>.
-It is not an error to use <SAMP>`*'</SAMP> if there is just one word in the event;
-the empty string is returned in that case.
-<P>
-
-<DT><CODE><VAR>x</VAR>*</CODE>
-<DD>Abbreviates <SAMP>`<VAR>x</VAR>-$'</SAMP>
-<P>
-
-<DT><CODE><VAR>x</VAR>-</CODE>
-<DD>Abbreviates <SAMP>`<VAR>x</VAR>-$'</SAMP> like <SAMP>`<VAR>x</VAR>*'</SAMP>, but omits the last word.
-<P>
-
-</DL>
-<P>
-
-If a word designator is supplied without an event specification, the
-previous command is used as the event.
-</P><P>
-
-<A NAME="Modifiers"></A>
-<HR SIZE="6">
-<A NAME="SEC5"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC4"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC2"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.1.3 Modifiers </H3>
-<!--docid::SEC5::-->
-<P>
-
-After the optional word designator, you can add a sequence of one or more
-of the following modifiers, each preceded by a <SAMP>`:'</SAMP>.
-</P><P>
-
-<DL COMPACT>
-
-<DT><CODE>h</CODE>
-<DD>Remove a trailing pathname component, leaving only the head.
-<P>
-
-<DT><CODE>t</CODE>
-<DD>Remove all leading pathname components, leaving the tail.
-<P>
-
-<DT><CODE>r</CODE>
-<DD>Remove a trailing suffix of the form <SAMP>`.<VAR>suffix</VAR>'</SAMP>, leaving
-the basename.
-<P>
-
-<DT><CODE>e</CODE>
-<DD>Remove all but the trailing suffix.
-<P>
-
-<DT><CODE>p</CODE>
-<DD>Print the new command but do not execute it.
-<P>
-
-<DT><CODE>s/<VAR>old</VAR>/<VAR>new</VAR>/</CODE>
-<DD>Substitute <VAR>new</VAR> for the first occurrence of <VAR>old</VAR> in the
-event line. Any delimiter may be used in place of <SAMP>`/'</SAMP>.
-The delimiter may be quoted in <VAR>old</VAR> and <VAR>new</VAR>
-with a single backslash. If <SAMP>`&#38;'</SAMP> appears in <VAR>new</VAR>,
-it is replaced by <VAR>old</VAR>. A single backslash will quote
-the <SAMP>`&#38;'</SAMP>. The final delimiter is optional if it is the last
-character on the input line.
-<P>
-
-<DT><CODE>&#38;</CODE>
-<DD>Repeat the previous substitution.
-<P>
-
-<DT><CODE>g</CODE>
-<DD>Cause changes to be applied over the entire event line. Used in
-conjunction with <SAMP>`s'</SAMP>, as in <CODE>gs/<VAR>old</VAR>/<VAR>new</VAR>/</CODE>,
-or with <SAMP>`&#38;'</SAMP>.
-<P>
-
-</DL>
-<P>
-
-<A NAME="Programming with GNU History"></A>
-<HR SIZE="6">
-<A NAME="SEC6"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC5"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC7"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1> 2. Programming with GNU History </H1>
-<!--docid::SEC6::-->
-<P>
-
-This chapter describes how to interface programs that you write
-with the GNU History Library.
-It should be considered a technical guide.
-For information on the interactive use of GNU History, see section <A HREF="history.html#SEC1">1. Using History Interactively</A>.
-</P><P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC7">2.1 Introduction to History</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">What is the GNU History library for?</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC8">2.2 History Storage</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">How information is stored.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC9">2.3 History Functions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions that you can use.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC17">2.4 History Variables</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Variables that control behaviour.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC18">2.5 History Programming Example</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Example of using the GNU History Library.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<A NAME="Introduction to History"></A>
-<HR SIZE="6">
-<A NAME="SEC7"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC8"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 2.1 Introduction to History </H2>
-<!--docid::SEC7::-->
-<P>
-
-Many programs read input from the user a line at a time. The 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.
-</P><P>
-
-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 <EM>expansion</EM> function
-is available which provides for a consistent user interface across
-different programs.
-</P><P>
-
-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</CODE>.
-</P><P>
-
-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.
-</P><P>
-
-Before declaring any functions using any functionality the History
-library provides in other code, an application writer should include
-the file <CODE>&#60;readline/history.h&#62;</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.
-</P><P>
-
-<A NAME="History Storage"></A>
-<HR SIZE="6">
-<A NAME="SEC8"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC7"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 2.2 History Storage </H2>
-<!--docid::SEC8::-->
-<P>
-
-The history list is an array of history entries. A history entry is
-declared as follows:
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>typedef void *histdata_t;
-
-typedef struct _hist_entry {
- char *line;
- histdata_t data;
-} HIST_ENTRY;
-</pre></td></tr></table></P><P>
-
-The history list itself might therefore be declared as
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>HIST_ENTRY **the_history_list;
-</pre></td></tr></table></P><P>
-
-The state of the History library is encapsulated into a single structure:
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>/*
- * 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;
-</pre></td></tr></table></P><P>
-
-If the flags member includes <CODE>HS_STIFLED</CODE>, the history has been
-stifled.
-</P><P>
-
-<A NAME="History Functions"></A>
-<HR SIZE="6">
-<A NAME="SEC9"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC8"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC10"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 2.3 History Functions </H2>
-<!--docid::SEC9::-->
-<P>
-
-This section describes the calling sequence for the various functions
-exported by the GNU History library.
-</P><P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC10">2.3.1 Initializing History and State Management</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions to call when you
- want to use history in a
- program.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions used to manage the list
- of history entries.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC12">2.3.3 Information About the History List</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions returning information about
- the history list.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC13">2.3.4 Moving Around the History List</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions used to change the position
- in the history list.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC14">2.3.5 Searching the History List</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions to search the history list
- for entries containing a string.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC15">2.3.6 Managing the History File</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions that read and write a file
- containing the history list.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC16">2.3.7 History Expansion</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions to perform csh-like history
- expansion.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<A NAME="Initializing History and State Management"></A>
-<HR SIZE="6">
-<A NAME="SEC10"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC11"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.3.1 Initializing History and State Management </H3>
-<!--docid::SEC10::-->
-<P>
-
-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.
-</P><P>
-
-<A NAME="IDX2"></A>
-<DL>
-<DT><U>Function:</U> void <B>using_history</B> <I>(void)</I>
-<DD>Begin a session in which the history functions might be used. This
-initializes the interactive variables.
-</DL>
-</P><P>
-
-<A NAME="IDX3"></A>
-<DL>
-<DT><U>Function:</U> HISTORY_STATE * <B>history_get_history_state</B> <I>(void)</I>
-<DD>Return a structure describing the current state of the input history.
-</DL>
-</P><P>
-
-<A NAME="IDX4"></A>
-<DL>
-<DT><U>Function:</U> void <B>history_set_history_state</B> <I>(HISTORY_STATE *state)</I>
-<DD>Set the state of the history list according to <VAR>state</VAR>.
-</DL>
-</P><P>
-
-<A NAME="History List Management"></A>
-<HR SIZE="6">
-<A NAME="SEC11"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC10"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC12"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC12"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.3.2 History List Management </H3>
-<!--docid::SEC11::-->
-<P>
-
-These functions manage individual entries on the history list, or set
-parameters managing the list itself.
-</P><P>
-
-<A NAME="IDX5"></A>
-<DL>
-<DT><U>Function:</U> void <B>add_history</B> <I>(const char *string)</I>
-<DD>Place <VAR>string</VAR> at the end of the history list. The associated data
-field (if any) is set to <CODE>NULL</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX6"></A>
-<DL>
-<DT><U>Function:</U> HIST_ENTRY * <B>remove_history</B> <I>(int which)</I>
-<DD>Remove history entry at offset <VAR>which</VAR> from the history. The
-removed element is returned so you can free the line, data,
-and containing structure.
-</DL>
-</P><P>
-
-<A NAME="IDX7"></A>
-<DL>
-<DT><U>Function:</U> HIST_ENTRY * <B>replace_history_entry</B> <I>(int which, const char *line, histdata_t data)</I>
-<DD>Make the history entry at offset <VAR>which</VAR> have <VAR>line</VAR> and <VAR>data</VAR>.
-This returns the old entry so you can dispose of the data. In the case
-of an invalid <VAR>which</VAR>, a <CODE>NULL</CODE> pointer is returned.
-</DL>
-</P><P>
-
-<A NAME="IDX8"></A>
-<DL>
-<DT><U>Function:</U> void <B>clear_history</B> <I>(void)</I>
-<DD>Clear the history list by deleting all the entries.
-</DL>
-</P><P>
-
-<A NAME="IDX9"></A>
-<DL>
-<DT><U>Function:</U> void <B>stifle_history</B> <I>(int max)</I>
-<DD>Stifle the history list, remembering only the last <VAR>max</VAR> entries.
-</DL>
-</P><P>
-
-<A NAME="IDX10"></A>
-<DL>
-<DT><U>Function:</U> int <B>unstifle_history</B> <I>(void)</I>
-<DD>Stop stifling the history. This returns the previously-set
-maximum number of history entries (as set by <CODE>stifle_history()</CODE>).
-The value is positive if the history was
-stifled, negative if it wasn't.
-</DL>
-</P><P>
-
-<A NAME="IDX11"></A>
-<DL>
-<DT><U>Function:</U> int <B>history_is_stifled</B> <I>(void)</I>
-<DD>Returns non-zero if the history is stifled, zero if it is not.
-</DL>
-</P><P>
-
-<A NAME="Information About the History List"></A>
-<HR SIZE="6">
-<A NAME="SEC12"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC11"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC13"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC13"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.3.3 Information About the History List </H3>
-<!--docid::SEC12::-->
-<P>
-
-These functions return information about the entire history list or
-individual list entries.
-</P><P>
-
-<A NAME="IDX12"></A>
-<DL>
-<DT><U>Function:</U> HIST_ENTRY ** <B>history_list</B> <I>(void)</I>
-<DD>Return a <CODE>NULL</CODE> terminated array of <CODE>HIST_ENTRY *</CODE> which is the
-current input history. Element 0 of this list is the beginning of time.
-If there is no history, return <CODE>NULL</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX13"></A>
-<DL>
-<DT><U>Function:</U> int <B>where_history</B> <I>(void)</I>
-<DD>Returns the offset of the current history element.
-</DL>
-</P><P>
-
-<A NAME="IDX14"></A>
-<DL>
-<DT><U>Function:</U> HIST_ENTRY * <B>current_history</B> <I>(void)</I>
-<DD>Return the history entry at the current position, as determined by
-<CODE>where_history()</CODE>. If there is no entry there, return a <CODE>NULL</CODE>
-pointer.
-</DL>
-</P><P>
-
-<A NAME="IDX15"></A>
-<DL>
-<DT><U>Function:</U> HIST_ENTRY * <B>history_get</B> <I>(int offset)</I>
-<DD>Return the history entry at position <VAR>offset</VAR>, starting from
-<CODE>history_base</CODE> (see section <A HREF="history.html#SEC17">2.4 History Variables</A>).
-If there is no entry there, or if <VAR>offset</VAR>
-is greater than the history length, return a <CODE>NULL</CODE> pointer.
-</DL>
-</P><P>
-
-<A NAME="IDX16"></A>
-<DL>
-<DT><U>Function:</U> int <B>history_total_bytes</B> <I>(void)</I>
-<DD>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.
-</DL>
-</P><P>
-
-<A NAME="Moving Around the History List"></A>
-<HR SIZE="6">
-<A NAME="SEC13"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC12"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC14"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC14"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.3.4 Moving Around the History List </H3>
-<!--docid::SEC13::-->
-<P>
-
-These functions allow the current index into the history list to be
-set or changed.
-</P><P>
-
-<A NAME="IDX17"></A>
-<DL>
-<DT><U>Function:</U> int <B>history_set_pos</B> <I>(int pos)</I>
-<DD>Set the current history offset to <VAR>pos</VAR>, an absolute index
-into the list.
-Returns 1 on success, 0 if <VAR>pos</VAR> is less than zero or greater
-than the number of history entries.
-</DL>
-</P><P>
-
-<A NAME="IDX18"></A>
-<DL>
-<DT><U>Function:</U> HIST_ENTRY * <B>previous_history</B> <I>(void)</I>
-<DD>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</CODE> pointer.
-</DL>
-</P><P>
-
-<A NAME="IDX19"></A>
-<DL>
-<DT><U>Function:</U> HIST_ENTRY * <B>next_history</B> <I>(void)</I>
-<DD>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</CODE> pointer.
-</DL>
-</P><P>
-
-<A NAME="Searching the History List"></A>
-<HR SIZE="6">
-<A NAME="SEC14"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC13"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC15"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC15"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.3.5 Searching the History List </H3>
-<!--docid::SEC14::-->
-<P>
-
-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 <EM>anchored</EM>,
-meaning that the string must match at the beginning of the history entry.
-<A NAME="IDX20"></A>
-</P><P>
-
-<A NAME="IDX21"></A>
-<DL>
-<DT><U>Function:</U> int <B>history_search</B> <I>(const char *string, int direction)</I>
-<DD>Search the history for <VAR>string</VAR>, starting at the current history offset.
-If <VAR>direction</VAR> is less than 0, then the search is through
-previous entries, otherwise through subsequent entries.
-If <VAR>string</VAR> 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</VAR> was found. Otherwise, nothing is changed, and a -1 is
-returned.
-</DL>
-</P><P>
-
-<A NAME="IDX22"></A>
-<DL>
-<DT><U>Function:</U> int <B>history_search_prefix</B> <I>(const char *string, int direction)</I>
-<DD>Search the history for <VAR>string</VAR>, starting at the current history
-offset. The search is anchored: matching lines must begin with
-<VAR>string</VAR>. If <VAR>direction</VAR> is less than 0, then the search is
-through previous entries, otherwise through subsequent entries.
-If <VAR>string</VAR> 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.
-</DL>
-</P><P>
-
-<A NAME="IDX23"></A>
-<DL>
-<DT><U>Function:</U> int <B>history_search_pos</B> <I>(const char *string, int direction, int pos)</I>
-<DD>Search for <VAR>string</VAR> in the history list, starting at <VAR>pos</VAR>, an
-absolute index into the list. If <VAR>direction</VAR> is negative, the search
-proceeds backward from <VAR>pos</VAR>, otherwise forward. Returns the absolute
-index of the history element where <VAR>string</VAR> was found, or -1 otherwise.
-</DL>
-</P><P>
-
-<A NAME="Managing the History File"></A>
-<HR SIZE="6">
-<A NAME="SEC15"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC14"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC16"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC16"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.3.6 Managing the History File </H3>
-<!--docid::SEC15::-->
-<P>
-
-The History library can read the history from and write it to a file.
-This section documents the functions for managing a history file.
-</P><P>
-
-<A NAME="IDX24"></A>
-<DL>
-<DT><U>Function:</U> int <B>read_history</B> <I>(const char *filename)</I>
-<DD>Add the contents of <VAR>filename</VAR> to the history list, a line at a time.
-If <VAR>filename</VAR> is <CODE>NULL</CODE>, then read from <TT>`~/.history'</TT>.
-Returns 0 if successful, or <CODE>errno</CODE> if not.
-</DL>
-</P><P>
-
-<A NAME="IDX25"></A>
-<DL>
-<DT><U>Function:</U> int <B>read_history_range</B> <I>(const char *filename, int from, int to)</I>
-<DD>Read a range of lines from <VAR>filename</VAR>, adding them to the history list.
-Start reading at line <VAR>from</VAR> and end at <VAR>to</VAR>.
-If <VAR>from</VAR> is zero, start at the beginning. If <VAR>to</VAR> is less than
-<VAR>from</VAR>, then read until the end of the file. If <VAR>filename</VAR> is
-<CODE>NULL</CODE>, then read from <TT>`~/.history'</TT>. Returns 0 if successful,
-or <CODE>errno</CODE> if not.
-</DL>
-</P><P>
-
-<A NAME="IDX26"></A>
-<DL>
-<DT><U>Function:</U> int <B>write_history</B> <I>(const char *filename)</I>
-<DD>Write the current history to <VAR>filename</VAR>, overwriting <VAR>filename</VAR>
-if necessary.
-If <VAR>filename</VAR> is <CODE>NULL</CODE>, then write the history list to
-<TT>`~/.history'</TT>.
-Returns 0 on success, or <CODE>errno</CODE> on a read or write error.
-</DL>
-</P><P>
-
-<A NAME="IDX27"></A>
-<DL>
-<DT><U>Function:</U> int <B>append_history</B> <I>(int nelements, const char *filename)</I>
-<DD>Append the last <VAR>nelements</VAR> of the history list to <VAR>filename</VAR>.
-If <VAR>filename</VAR> is <CODE>NULL</CODE>, then append to <TT>`~/.history'</TT>.
-Returns 0 on success, or <CODE>errno</CODE> on a read or write error.
-</DL>
-</P><P>
-
-<A NAME="IDX28"></A>
-<DL>
-<DT><U>Function:</U> int <B>history_truncate_file</B> <I>(const char *filename, int nlines)</I>
-<DD>Truncate the history file <VAR>filename</VAR>, leaving only the last
-<VAR>nlines</VAR> lines.
-If <VAR>filename</VAR> is <CODE>NULL</CODE>, then <TT>`~/.history'</TT> is truncated.
-Returns 0 on success, or <CODE>errno</CODE> on failure.
-</DL>
-</P><P>
-
-<A NAME="History Expansion"></A>
-<HR SIZE="6">
-<A NAME="SEC16"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC15"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.3.7 History Expansion </H3>
-<!--docid::SEC16::-->
-<P>
-
-These functions implement history expansion.
-</P><P>
-
-<A NAME="IDX29"></A>
-<DL>
-<DT><U>Function:</U> int <B>history_expand</B> <I>(char *string, char **output)</I>
-<DD>Expand <VAR>string</VAR>, placing the result into <VAR>output</VAR>, a pointer
-to a string (see section <A HREF="history.html#SEC2">1.1 History Expansion</A>). Returns:
-<DL COMPACT>
-<DT><CODE>0</CODE>
-<DD>If no expansions took place (or, if the only change in
-the text was the removal of escape characters preceding the history expansion
-character);
-<DT><CODE>1</CODE>
-<DD>if expansions did take place;
-<DT><CODE>-1</CODE>
-<DD>if there was an error in expansion;
-<DT><CODE>2</CODE>
-<DD>if the returned line should be displayed, but not executed,
-as with the <CODE>:p</CODE> modifier (see section <A HREF="history.html#SEC5">1.1.3 Modifiers</A>).
-</DL>
-<P>
-
-If an error ocurred in expansion, then <VAR>output</VAR> contains a descriptive
-error message.
-</DL>
-</P><P>
-
-<A NAME="IDX30"></A>
-<DL>
-<DT><U>Function:</U> char * <B>get_history_event</B> <I>(const char *string, int *cindex, int qchar)</I>
-<DD>Returns the text of the history event beginning at <VAR>string</VAR> +
-<VAR>*cindex</VAR>. <VAR>*cindex</VAR> is modified to point to after the event
-specifier. At function entry, <VAR>cindex</VAR> points to the index into
-<VAR>string</VAR> where the history event specification begins. <VAR>qchar</VAR>
-is a character that is allowed to end the event specification in addition
-to the "normal" terminating characters.
-</DL>
-</P><P>
-
-<A NAME="IDX31"></A>
-<DL>
-<DT><U>Function:</U> char ** <B>history_tokenize</B> <I>(const char *string)</I>
-<DD>Return an array of tokens parsed out of <VAR>string</VAR>, much as the
-shell might. The tokens are split on the characters in the
-<VAR>history_word_delimiters</VAR> variable,
-and shell quoting conventions are obeyed.
-</DL>
-</P><P>
-
-<A NAME="IDX32"></A>
-<DL>
-<DT><U>Function:</U> char * <B>history_arg_extract</B> <I>(int first, int last, const char *string)</I>
-<DD>Extract a string segment consisting of the <VAR>first</VAR> through <VAR>last</VAR>
-arguments present in <VAR>string</VAR>. Arguments are split using
-<CODE>history_tokenize</CODE>.
-</DL>
-</P><P>
-
-<A NAME="History Variables"></A>
-<HR SIZE="6">
-<A NAME="SEC17"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC16"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC18"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC18"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 2.4 History Variables </H2>
-<!--docid::SEC17::-->
-<P>
-
-This section describes the externally-visible variables exported by
-the GNU History Library.
-</P><P>
-
-<A NAME="IDX33"></A>
-<DL>
-<DT><U>Variable:</U> int <B>history_base</B>
-<DD>The logical offset of the first entry in the history list.
-</DL>
-</P><P>
-
-<A NAME="IDX34"></A>
-<DL>
-<DT><U>Variable:</U> int <B>history_length</B>
-<DD>The number of entries currently stored in the history list.
-</DL>
-</P><P>
-
-<A NAME="IDX35"></A>
-<DL>
-<DT><U>Variable:</U> int <B>history_max_entries</B>
-<DD>The maximum number of history entries. This must be changed using
-<CODE>stifle_history()</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX36"></A>
-<DL>
-<DT><U>Variable:</U> char <B>history_expansion_char</B>
-<DD>The character that introduces a history event. The default is <SAMP>`!'</SAMP>.
-Setting this to 0 inhibits history expansion.
-</DL>
-</P><P>
-
-<A NAME="IDX37"></A>
-<DL>
-<DT><U>Variable:</U> char <B>history_subst_char</B>
-<DD>The character that invokes word substitution if found at the start of
-a line. The default is <SAMP>`^'</SAMP>.
-</DL>
-</P><P>
-
-<A NAME="IDX38"></A>
-<DL>
-<DT><U>Variable:</U> char <B>history_comment_char</B>
-<DD>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.
-</DL>
-</P><P>
-
-<A NAME="IDX39"></A>
-<DL>
-<DT><U>Variable:</U> char * <B>history_word_delimiters</B>
-<DD>The characters that separate tokens for <CODE>history_tokenize()</CODE>.
-The default value is <CODE>" \t\n()<>;&|"</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX40"></A>
-<DL>
-<DT><U>Variable:</U> char * <B>history_no_expand_chars</B>
-<DD>The list of characters which inhibit history expansion if found immediately
-following <VAR>history_expansion_char</VAR>. The default is space, tab, newline,
-carriage return, and <SAMP>`='</SAMP>.
-</DL>
-</P><P>
-
-<A NAME="IDX41"></A>
-<DL>
-<DT><U>Variable:</U> char * <B>history_search_delimiter_chars</B>
-<DD>The list of additional characters which can delimit a history search
-string, in addition to space, TAB, <SAMP>`:'</SAMP> and <SAMP>`?'</SAMP> in the case of
-a substring search. The default is empty.
-</DL>
-</P><P>
-
-<A NAME="IDX42"></A>
-<DL>
-<DT><U>Variable:</U> int <B>history_quotes_inhibit_expansion</B>
-<DD>If non-zero, single-quoted words are not scanned for the history expansion
-character. The default value is 0.
-</DL>
-</P><P>
-
-<A NAME="IDX43"></A>
-<DL>
-<DT><U>Variable:</U> rl_linebuf_func_t * <B>history_inhibit_expansion_function</B>
-<DD>This should be set to the address of a function that takes two arguments:
-a <CODE>char *</CODE> (<VAR>string</VAR>)
-and an <CODE>int</CODE> index into that string (<VAR>i</VAR>).
-It should return a non-zero value if the history expansion starting at
-<VAR>string[i]</VAR> 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</CODE>.
-</DL>
-</P><P>
-
-<A NAME="History Programming Example"></A>
-<HR SIZE="6">
-<A NAME="SEC18"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 2.5 History Programming Example </H2>
-<!--docid::SEC18::-->
-<P>
-
-The following program demonstrates simple use of the GNU History Library.
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>#include &#60;stdio.h&#62;
-#include &#60;readline/history.h&#62;
-
-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 &#38;&#38; *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, &#38;expansion);
- if (result)
- fprintf (stderr, "%s\n", expansion);
-
- if (result &#60; 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]-&#62;line);
- }
- else if (strncmp (line, "delete", 6) == 0)
- {
- int which;
- if ((sscanf (line + 6, "%d", &#38;which)) == 1)
- {
- HIST_ENTRY *entry = remove_history (which);
- if (!entry)
- fprintf (stderr, "No such entry %d\n", which);
- else
- {
- free (entry-&#62;line);
- free (entry);
- }
- }
- else
- {
- fprintf (stderr, "non-numeric arg given to `delete'\n");
- }
- }
- }
-}
-</FONT></pre></td></tr></table></P><P>
-
-<A NAME="Concept Index"></A>
-<HR SIZE="6">
-<A NAME="SEC19"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC18"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC20"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC20"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1> A. Concept Index </H1>
-<!--docid::SEC19::-->
-<table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="history.html#cp_A" style="text-decoration:none"><b>A</b></A>
- &nbsp;
-<A HREF="history.html#cp_E" style="text-decoration:none"><b>E</b></A>
- &nbsp;
-<A HREF="history.html#cp_H" style="text-decoration:none"><b>H</b></A>
- &nbsp;
-</td></tr></table><br><P></P>
-<TABLE border=0>
-<TR><TD></TD><TH ALIGN=LEFT>Index Entry</TH><TH ALIGN=LEFT> Section</TH></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="cp_A"></A>A</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX20">anchored search</A></TD><TD valign=top><A HREF="history.html#SEC14">2.3.5 Searching the History List</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="cp_E"></A>E</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#SEC3">event designators</A></TD><TD valign=top><A HREF="history.html#SEC3">1.1.1 Event Designators</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="cp_H"></A>H</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX1">history events</A></TD><TD valign=top><A HREF="history.html#SEC3">1.1.1 Event Designators</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#SEC2">history expansion</A></TD><TD valign=top><A HREF="history.html#SEC2">1.1 History Expansion</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#SEC14">History Searching</A></TD><TD valign=top><A HREF="history.html#SEC14">2.3.5 Searching the History List</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-</TABLE><P></P><table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="history.html#cp_A" style="text-decoration:none"><b>A</b></A>
- &nbsp;
-<A HREF="history.html#cp_E" style="text-decoration:none"><b>E</b></A>
- &nbsp;
-<A HREF="history.html#cp_H" style="text-decoration:none"><b>H</b></A>
- &nbsp;
-</td></tr></table><br><P>
-
-<A NAME="Function and Variable Index"></A>
-<HR SIZE="6">
-<A NAME="SEC20"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1> B. Function and Variable Index </H1>
-<!--docid::SEC20::-->
-<table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="history.html#vr_A" style="text-decoration:none"><b>A</b></A>
- &nbsp;
-<A HREF="history.html#vr_C" style="text-decoration:none"><b>C</b></A>
- &nbsp;
-<A HREF="history.html#vr_G" style="text-decoration:none"><b>G</b></A>
- &nbsp;
-<A HREF="history.html#vr_H" style="text-decoration:none"><b>H</b></A>
- &nbsp;
-<A HREF="history.html#vr_N" style="text-decoration:none"><b>N</b></A>
- &nbsp;
-<A HREF="history.html#vr_P" style="text-decoration:none"><b>P</b></A>
- &nbsp;
-<A HREF="history.html#vr_R" style="text-decoration:none"><b>R</b></A>
- &nbsp;
-<A HREF="history.html#vr_S" style="text-decoration:none"><b>S</b></A>
- &nbsp;
-<A HREF="history.html#vr_U" style="text-decoration:none"><b>U</b></A>
- &nbsp;
-<A HREF="history.html#vr_W" style="text-decoration:none"><b>W</b></A>
- &nbsp;
-</td></tr></table><br><P></P>
-<TABLE border=0>
-<TR><TD></TD><TH ALIGN=LEFT>Index Entry</TH><TH ALIGN=LEFT> Section</TH></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="vr_A"></A>A</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX5"><CODE>add_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX27"><CODE>append_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC15">2.3.6 Managing the History File</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="vr_C"></A>C</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX8"><CODE>clear_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX14"><CODE>current_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC12">2.3.3 Information About the History List</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="vr_G"></A>G</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX30"><CODE>get_history_event</CODE></A></TD><TD valign=top><A HREF="history.html#SEC16">2.3.7 History Expansion</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="vr_H"></A>H</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX32"><CODE>history_arg_extract</CODE></A></TD><TD valign=top><A HREF="history.html#SEC16">2.3.7 History Expansion</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX33"><CODE>history_base</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX38"><CODE>history_comment_char</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX29"><CODE>history_expand</CODE></A></TD><TD valign=top><A HREF="history.html#SEC16">2.3.7 History Expansion</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX36"><CODE>history_expansion_char</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX15"><CODE>history_get</CODE></A></TD><TD valign=top><A HREF="history.html#SEC12">2.3.3 Information About the History List</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX3"><CODE>history_get_history_state</CODE></A></TD><TD valign=top><A HREF="history.html#SEC10">2.3.1 Initializing History and State Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX43"><CODE>history_inhibit_expansion_function</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX11"><CODE>history_is_stifled</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX34"><CODE>history_length</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX12"><CODE>history_list</CODE></A></TD><TD valign=top><A HREF="history.html#SEC12">2.3.3 Information About the History List</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX35"><CODE>history_max_entries</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX40"><CODE>history_no_expand_chars</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX42"><CODE>history_quotes_inhibit_expansion</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX21"><CODE>history_search</CODE></A></TD><TD valign=top><A HREF="history.html#SEC14">2.3.5 Searching the History List</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX41"><CODE>history_search_delimiter_chars</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX23"><CODE>history_search_pos</CODE></A></TD><TD valign=top><A HREF="history.html#SEC14">2.3.5 Searching the History List</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX22"><CODE>history_search_prefix</CODE></A></TD><TD valign=top><A HREF="history.html#SEC14">2.3.5 Searching the History List</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX4"><CODE>history_set_history_state</CODE></A></TD><TD valign=top><A HREF="history.html#SEC10">2.3.1 Initializing History and State Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX17"><CODE>history_set_pos</CODE></A></TD><TD valign=top><A HREF="history.html#SEC13">2.3.4 Moving Around the History List</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX37"><CODE>history_subst_char</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX31"><CODE>history_tokenize</CODE></A></TD><TD valign=top><A HREF="history.html#SEC16">2.3.7 History Expansion</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX16"><CODE>history_total_bytes</CODE></A></TD><TD valign=top><A HREF="history.html#SEC12">2.3.3 Information About the History List</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX28"><CODE>history_truncate_file</CODE></A></TD><TD valign=top><A HREF="history.html#SEC15">2.3.6 Managing the History File</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX39"><CODE>history_word_delimiters</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="vr_N"></A>N</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX19"><CODE>next_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC13">2.3.4 Moving Around the History List</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="vr_P"></A>P</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX18"><CODE>previous_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC13">2.3.4 Moving Around the History List</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="vr_R"></A>R</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX24"><CODE>read_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC15">2.3.6 Managing the History File</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX25"><CODE>read_history_range</CODE></A></TD><TD valign=top><A HREF="history.html#SEC15">2.3.6 Managing the History File</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX6"><CODE>remove_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX7"><CODE>replace_history_entry</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="vr_S"></A>S</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX9"><CODE>stifle_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="vr_U"></A>U</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX10"><CODE>unstifle_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX2"><CODE>using_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC10">2.3.1 Initializing History and State Management</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="vr_W"></A>W</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX13"><CODE>where_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC12">2.3.3 Information About the History List</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX26"><CODE>write_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC15">2.3.6 Managing the History File</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-</TABLE><P></P><table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="history.html#vr_A" style="text-decoration:none"><b>A</b></A>
- &nbsp;
-<A HREF="history.html#vr_C" style="text-decoration:none"><b>C</b></A>
- &nbsp;
-<A HREF="history.html#vr_G" style="text-decoration:none"><b>G</b></A>
- &nbsp;
-<A HREF="history.html#vr_H" style="text-decoration:none"><b>H</b></A>
- &nbsp;
-<A HREF="history.html#vr_N" style="text-decoration:none"><b>N</b></A>
- &nbsp;
-<A HREF="history.html#vr_P" style="text-decoration:none"><b>P</b></A>
- &nbsp;
-<A HREF="history.html#vr_R" style="text-decoration:none"><b>R</b></A>
- &nbsp;
-<A HREF="history.html#vr_S" style="text-decoration:none"><b>S</b></A>
- &nbsp;
-<A HREF="history.html#vr_U" style="text-decoration:none"><b>U</b></A>
- &nbsp;
-<A HREF="history.html#vr_W" style="text-decoration:none"><b>W</b></A>
- &nbsp;
-</td></tr></table><br><P>
-
-<HR SIZE="6">
-<A NAME="SEC_Contents"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1>Table of Contents</H1>
-<UL>
-<A NAME="TOC1" HREF="history.html#SEC1">1. Using History Interactively</A>
-<BR>
-<UL>
-<A NAME="TOC2" HREF="history.html#SEC2">1.1 History Expansion</A>
-<BR>
-<UL>
-<A NAME="TOC3" HREF="history.html#SEC3">1.1.1 Event Designators</A>
-<BR>
-<A NAME="TOC4" HREF="history.html#SEC4">1.1.2 Word Designators</A>
-<BR>
-<A NAME="TOC5" HREF="history.html#SEC5">1.1.3 Modifiers</A>
-<BR>
-</UL>
-</UL>
-<A NAME="TOC6" HREF="history.html#SEC6">2. Programming with GNU History</A>
-<BR>
-<UL>
-<A NAME="TOC7" HREF="history.html#SEC7">2.1 Introduction to History</A>
-<BR>
-<A NAME="TOC8" HREF="history.html#SEC8">2.2 History Storage</A>
-<BR>
-<A NAME="TOC9" HREF="history.html#SEC9">2.3 History Functions</A>
-<BR>
-<UL>
-<A NAME="TOC10" HREF="history.html#SEC10">2.3.1 Initializing History and State Management</A>
-<BR>
-<A NAME="TOC11" HREF="history.html#SEC11">2.3.2 History List Management</A>
-<BR>
-<A NAME="TOC12" HREF="history.html#SEC12">2.3.3 Information About the History List</A>
-<BR>
-<A NAME="TOC13" HREF="history.html#SEC13">2.3.4 Moving Around the History List</A>
-<BR>
-<A NAME="TOC14" HREF="history.html#SEC14">2.3.5 Searching the History List</A>
-<BR>
-<A NAME="TOC15" HREF="history.html#SEC15">2.3.6 Managing the History File</A>
-<BR>
-<A NAME="TOC16" HREF="history.html#SEC16">2.3.7 History Expansion</A>
-<BR>
-</UL>
-<A NAME="TOC17" HREF="history.html#SEC17">2.4 History Variables</A>
-<BR>
-<A NAME="TOC18" HREF="history.html#SEC18">2.5 History Programming Example</A>
-<BR>
-</UL>
-<A NAME="TOC19" HREF="history.html#SEC19">A. Concept Index</A>
-<BR>
-<A NAME="TOC20" HREF="history.html#SEC20">B. Function and Variable Index</A>
-<BR>
-</UL>
-<HR SIZE=1>
-<A NAME="SEC_OVERVIEW"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1>Short Table of Contents</H1>
-<BLOCKQUOTE>
-<A NAME="TOC1" HREF="history.html#SEC1">1. Using History Interactively</A>
-<BR>
-<A NAME="TOC6" HREF="history.html#SEC6">2. Programming with GNU History</A>
-<BR>
-<A NAME="TOC19" HREF="history.html#SEC19">A. Concept Index</A>
-<BR>
-<A NAME="TOC20" HREF="history.html#SEC20">B. Function and Variable Index</A>
-<BR>
-
-</BLOCKQUOTE>
-<HR SIZE=1>
-<A NAME="SEC_About"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1>About this document</H1>
-This document was generated by <I>Chet Ramey</I> on <I>June, 27 2002</I>
-using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
-"><I>texi2html</I></A>
-<P></P>
-The buttons in the navigation panels have the following meaning:
-<P></P>
-<table border = "1">
-<TR>
-<TH> Button </TH>
-<TH> Name </TH>
-<TH> Go to </TH>
-<TH> From 1.2.3 go to</TH>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ &lt; ] </TD>
-<TD ALIGN="CENTER">
-Back
-</TD>
-<TD>
-previous section in reading order
-</TD>
-<TD>
-1.2.2
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ &gt; ] </TD>
-<TD ALIGN="CENTER">
-Forward
-</TD>
-<TD>
-next section in reading order
-</TD>
-<TD>
-1.2.4
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ &lt;&lt; ] </TD>
-<TD ALIGN="CENTER">
-FastBack
-</TD>
-<TD>
-previous or up-and-previous section
-</TD>
-<TD>
-1.1
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ Up ] </TD>
-<TD ALIGN="CENTER">
-Up
-</TD>
-<TD>
-up section
-</TD>
-<TD>
-1.2
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ &gt;&gt; ] </TD>
-<TD ALIGN="CENTER">
-FastForward
-</TD>
-<TD>
-next or up-and-next section
-</TD>
-<TD>
-1.3
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [Top] </TD>
-<TD ALIGN="CENTER">
-Top
-</TD>
-<TD>
-cover (top) of document
-</TD>
-<TD>
- &nbsp;
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [Contents] </TD>
-<TD ALIGN="CENTER">
-Contents
-</TD>
-<TD>
-table of contents
-</TD>
-<TD>
- &nbsp;
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [Index] </TD>
-<TD ALIGN="CENTER">
-Index
-</TD>
-<TD>
-concept index
-</TD>
-<TD>
- &nbsp;
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ ? ] </TD>
-<TD ALIGN="CENTER">
-About
-</TD>
-<TD>
-this page
-</TD>
-<TD>
- &nbsp;
-</TD>
-</TR>
-</TABLE>
-<P></P>
-where the <STRONG> Example </STRONG> assumes that the current position
-is at <STRONG> Subsubsection One-Two-Three </STRONG> of a document of
-the following structure:
-<UL>
-<LI> 1. Section One </LI>
-<UL>
-<LI>1.1 Subsection One-One</LI>
-<UL>
-<LI> ... </LI>
-</UL>
-<LI>1.2 Subsection One-Two</LI>
-<UL>
-<LI>1.2.1 Subsubsection One-Two-One
-</LI><LI>1.2.2 Subsubsection One-Two-Two
-</LI><LI>1.2.3 Subsubsection One-Two-Three &nbsp; &nbsp; <STRONG>
-&lt;== Current Position </STRONG>
-</LI><LI>1.2.4 Subsubsection One-Two-Four
-</LI></UL>
-<LI>1.3 Subsection One-Three</LI>
-<UL>
-<LI> ... </LI>
-</UL>
-<LI>1.4 Subsection One-Four</LI>
-</UL>
-</UL>
-
-<HR SIZE=1>
-<BR>
-<FONT SIZE="-1">
-This document was generated
-by <I>Chet Ramey</I> on <I>June, 27 2002</I>
-using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
-"><I>texi2html</I></A>
-
-</BODY>
-</HTML>
diff --git a/readline-4.3.orig/doc/history.info b/readline-4.3.orig/doc/history.info
deleted file mode 100644
index 98c0002..0000000
--- a/readline-4.3.orig/doc/history.info
+++ /dev/null
@@ -1,840 +0,0 @@
-This is history.info, produced by makeinfo version 4.1 from
-/usr/homes/chet/src/bash/readline-src/doc/hist.texinfo.
-
-INFO-DIR-SECTION Libraries
-START-INFO-DIR-ENTRY
-* History: (history). The GNU history library API
-END-INFO-DIR-ENTRY
-
- This document describes the GNU History library, a programming tool
-that provides a consistent user interface for recalling lines of
-previously typed input.
-
- Copyright (C) 1988-2002 Free Software Foundation, Inc.
-
- Permission is granted to make and distribute verbatim copies of this
-manual provided the copyright notice and this permission notice pare
-preserved on all copies.
-
- Permission is granted to copy and distribute modified versions of
-this manual under the conditions for verbatim copying, provided that
-the entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
- Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be stated in a
-translation approved by the Free Software Foundation.
-
-
-File: history.info, Node: Top, Next: Using History Interactively, Up: (dir)
-
-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.
-* Concept Index:: Index of concepts described in this manual.
-* Function and Variable Index:: Index of externally visible functions
- and variables.
-
-
-File: history.info, Node: Using History Interactively, Next: Programming with GNU History, Prev: Top, Up: Top
-
-Using History Interactively
-***************************
-
- This chapter describes how to use the GNU History Library
-interactively, from a user's standpoint. It should be considered a
-user's guide. For information on using the GNU History Library in your
-own programs, *note Programming with GNU History::.
-
-* Menu:
-
-* History Interaction:: What it feels like using History as a user.
-
-
-File: history.info, Node: History Interaction, Up: Using History Interactively
-
-History Expansion
-=================
-
- The History library provides a history expansion feature that is
-similar to the history expansion provided by `csh'. This section
-describes the syntax used to manipulate the history information.
-
- History expansions introduce words from the history list into the
-input stream, making it easy to repeat commands, insert the arguments
-to a previous command into the current input line, or fix errors in
-previous commands quickly.
-
- History expansion takes place in two parts. The first is to
-determine which line from the history list should be used during
-substitution. The second is to select portions of that line for
-inclusion into the current one. The line selected from the history is
-called the "event", and the portions of that line that are acted upon
-are called "words". Various "modifiers" are available to manipulate
-the selected words. The line is broken into words in the same fashion
-that Bash does, so that several words surrounded by quotes are
-considered one word. History expansions are introduced by the
-appearance of the history expansion character, which is `!' by default.
-
-* Menu:
-
-* Event Designators:: How to specify which history line to use.
-* Word Designators:: Specifying which words are of interest.
-* Modifiers:: Modifying the results of substitution.
-
-
-File: history.info, Node: Event Designators, Next: Word Designators, Up: History Interaction
-
-Event Designators
------------------
-
- An event designator is a reference to a command line entry in the
-history list.
-
-`!'
- Start a history substitution, except when followed by a space, tab,
- the end of the line, `=' or `('.
-
-`!N'
- Refer to command line N.
-
-`!-N'
- Refer to the command N lines back.
-
-`!!'
- Refer to the previous command. This is a synonym for `!-1'.
-
-`!STRING'
- Refer to the most recent command starting with STRING.
-
-`!?STRING[?]'
- Refer to the most recent command containing STRING. The trailing
- `?' may be omitted if the STRING is followed immediately by a
- newline.
-
-`^STRING1^STRING2^'
- Quick Substitution. Repeat the last command, replacing STRING1
- with STRING2. Equivalent to `!!:s/STRING1/STRING2/'.
-
-`!#'
- The entire command line typed so far.
-
-
-File: history.info, Node: Word Designators, Next: Modifiers, Prev: Event Designators, Up: History Interaction
-
-Word Designators
-----------------
-
- Word designators are used to select desired words from the event. A
-`:' separates the event specification from the word designator. It may
-be omitted if the word designator begins with a `^', `$', `*', `-', or
-`%'. Words are numbered from the beginning of the line, with the first
-word being denoted by 0 (zero). Words are inserted into the current
-line separated by single spaces.
-
- For example,
-
-`!!'
- designates the preceding command. When you type this, the
- preceding command is repeated in toto.
-
-`!!:$'
- designates the last argument of the preceding command. This may be
- shortened to `!$'.
-
-`!fi:2'
- designates the second argument of the most recent command starting
- with the letters `fi'.
-
- Here are the word designators:
-
-`0 (zero)'
- The `0'th word. For many applications, this is the command word.
-
-`N'
- The Nth word.
-
-`^'
- The first argument; that is, word 1.
-
-`$'
- The last argument.
-
-`%'
- The word matched by the most recent `?STRING?' search.
-
-`X-Y'
- A range of words; `-Y' abbreviates `0-Y'.
-
-`*'
- All of the words, except the `0'th. This is a synonym for `1-$'.
- It is not an error to use `*' if there is just one word in the
- event; the empty string is returned in that case.
-
-`X*'
- Abbreviates `X-$'
-
-`X-'
- Abbreviates `X-$' like `X*', but omits the last word.
-
- If a word designator is supplied without an event specification, the
-previous command is used as the event.
-
-
-File: history.info, Node: Modifiers, Prev: Word Designators, Up: History Interaction
-
-Modifiers
----------
-
- After the optional word designator, you can add a sequence of one or
-more of the following modifiers, each preceded by a `:'.
-
-`h'
- Remove a trailing pathname component, leaving only the head.
-
-`t'
- Remove all leading pathname components, leaving the tail.
-
-`r'
- Remove a trailing suffix of the form `.SUFFIX', leaving the
- basename.
-
-`e'
- Remove all but the trailing suffix.
-
-`p'
- Print the new command but do not execute it.
-
-`s/OLD/NEW/'
- Substitute NEW for the first occurrence of OLD in the event line.
- Any delimiter may be used in place of `/'. The delimiter may be
- quoted in OLD and NEW with a single backslash. If `&' appears in
- NEW, it is replaced by OLD. A single backslash will quote the
- `&'. The final delimiter is optional if it is the last character
- on the input line.
-
-`&'
- Repeat the previous substitution.
-
-`g'
- Cause changes to be applied over the entire event line. Used in
- conjunction with `s', as in `gs/OLD/NEW/', or with `&'.
-
-
-File: history.info, Node: Programming with GNU History, Next: Concept Index, Prev: Using History Interactively, Up: Top
-
-Programming with GNU History
-****************************
-
- This chapter describes how to interface programs that you write with
-the GNU History Library. It should be considered a technical guide.
-For information on the interactive use of GNU History, *note 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.
-
-
-File: history.info, Node: Introduction to History, Next: History Storage, Up: Programming with GNU History
-
-Introduction to History
-=======================
-
- Many programs read input from the user a line at a time. The 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 "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 `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 `<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.
-
-
-File: history.info, Node: History Storage, Next: History Functions, Prev: Introduction to History, Up: Programming with GNU History
-
-History Storage
-===============
-
- The history list is an array of history entries. A history entry is
-declared as follows:
-
- typedef void *histdata_t;
-
- typedef struct _hist_entry {
- char *line;
- histdata_t data;
- } HIST_ENTRY;
-
- The history list itself might therefore be declared as
-
- HIST_ENTRY **the_history_list;
-
- The state of the History library is encapsulated into a single
-structure:
-
- /*
- * 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;
-
- If the flags member includes `HS_STIFLED', the history has been
-stifled.
-
-
-File: history.info, Node: History Functions, Next: History Variables, Prev: History Storage, Up: Programming with GNU History
-
-History Functions
-=================
-
- This section describes the calling sequence for the various functions
-exported by the 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.
-
-
-File: history.info, Node: Initializing History and State Management, Next: History List Management, Up: History Functions
-
-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.
-
- - Function: void using_history (void)
- Begin a session in which the history functions might be used. This
- initializes the interactive variables.
-
- - Function: HISTORY_STATE * history_get_history_state (void)
- Return a structure describing the current state of the input
- history.
-
- - Function: void history_set_history_state (HISTORY_STATE *state)
- Set the state of the history list according to STATE.
-
-
-File: history.info, Node: History List Management, Next: Information About the History List, Prev: Initializing History and State Management, Up: History Functions
-
-History List Management
------------------------
-
- These functions manage individual entries on the history list, or set
-parameters managing the list itself.
-
- - Function: void add_history (const char *string)
- Place STRING at the end of the history list. The associated data
- field (if any) is set to `NULL'.
-
- - Function: HIST_ENTRY * remove_history (int which)
- Remove history entry at offset WHICH from the history. The
- removed element is returned so you can free the line, data, and
- containing structure.
-
- - Function: HIST_ENTRY * replace_history_entry (int which, const char
- *line, histdata_t data)
- Make the history entry at offset WHICH have LINE and DATA. This
- returns the old entry so you can dispose of the data. In the case
- of an invalid WHICH, a `NULL' pointer is returned.
-
- - Function: void clear_history (void)
- Clear the history list by deleting all the entries.
-
- - Function: void stifle_history (int max)
- Stifle the history list, remembering only the last MAX entries.
-
- - Function: int unstifle_history (void)
- Stop stifling the history. This returns the previously-set
- maximum number of history entries (as set by `stifle_history()').
- The value is positive if the history was stifled, negative if it
- wasn't.
-
- - Function: int history_is_stifled (void)
- Returns non-zero if the history is stifled, zero if it is not.
-
-
-File: history.info, Node: Information About the History List, Next: Moving Around the History List, Prev: History List Management, Up: History Functions
-
-Information About the History List
-----------------------------------
-
- These functions return information about the entire history list or
-individual list entries.
-
- - Function: HIST_ENTRY ** history_list (void)
- Return a `NULL' terminated array of `HIST_ENTRY *' which is the
- current input history. Element 0 of this list is the beginning of
- time. If there is no history, return `NULL'.
-
- - Function: int where_history (void)
- Returns the offset of the current history element.
-
- - Function: HIST_ENTRY * current_history (void)
- Return the history entry at the current position, as determined by
- `where_history()'. If there is no entry there, return a `NULL'
- pointer.
-
- - Function: HIST_ENTRY * history_get (int offset)
- Return the history entry at position OFFSET, starting from
- `history_base' (*note History Variables::). If there is no entry
- there, or if OFFSET is greater than the history length, return a
- `NULL' pointer.
-
- - Function: 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.
-
-
-File: history.info, Node: Moving Around the History List, Next: Searching the History List, Prev: Information About the History List, Up: History Functions
-
-Moving Around the History List
-------------------------------
-
- These functions allow the current index into the history list to be
-set or changed.
-
- - Function: int history_set_pos (int pos)
- Set the current history offset to POS, an absolute index into the
- list. Returns 1 on success, 0 if POS is less than zero or greater
- than the number of history entries.
-
- - Function: 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 `NULL' pointer.
-
- - Function: 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 `NULL' pointer.
-
-
-File: history.info, Node: Searching the History List, Next: Managing the History File, Prev: Moving Around the History List, Up: History Functions
-
-Searching the History List
---------------------------
-
- 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
-"anchored", meaning that the string must match at the beginning of the
-history entry.
-
- - Function: int history_search (const char *string, int direction)
- Search the history for STRING, starting at the current history
- offset. If DIRECTION is less than 0, then the search is through
- previous entries, otherwise through subsequent entries. If 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 STRING was found. Otherwise, nothing is changed, and
- a -1 is returned.
-
- - Function: int history_search_prefix (const char *string, int
- direction)
- Search the history for STRING, starting at the current history
- offset. The search is anchored: matching lines must begin with
- STRING. If DIRECTION is less than 0, then the search is through
- previous entries, otherwise through subsequent entries. If 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.
-
- - Function: int history_search_pos (const char *string, int direction,
- int pos)
- Search for STRING in the history list, starting at POS, an
- absolute index into the list. If DIRECTION is negative, the search
- proceeds backward from POS, otherwise forward. Returns the
- absolute index of the history element where STRING was found, or
- -1 otherwise.
-
-
-File: history.info, Node: Managing the History File, Next: History Expansion, Prev: Searching the History List, Up: History Functions
-
-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.
-
- - Function: int read_history (const char *filename)
- Add the contents of FILENAME to the history list, a line at a time.
- If FILENAME is `NULL', then read from `~/.history'. Returns 0 if
- successful, or `errno' if not.
-
- - Function: int read_history_range (const char *filename, int from,
- int to)
- Read a range of lines from FILENAME, adding them to the history
- list. Start reading at line FROM and end at TO. If FROM is zero,
- start at the beginning. If TO is less than FROM, then read until
- the end of the file. If FILENAME is `NULL', then read from
- `~/.history'. Returns 0 if successful, or `errno' if not.
-
- - Function: int write_history (const char *filename)
- Write the current history to FILENAME, overwriting FILENAME if
- necessary. If FILENAME is `NULL', then write the history list to
- `~/.history'. Returns 0 on success, or `errno' on a read or write
- error.
-
- - Function: int append_history (int nelements, const char *filename)
- Append the last NELEMENTS of the history list to FILENAME. If
- FILENAME is `NULL', then append to `~/.history'. Returns 0 on
- success, or `errno' on a read or write error.
-
- - Function: int history_truncate_file (const char *filename, int
- nlines)
- Truncate the history file FILENAME, leaving only the last NLINES
- lines. If FILENAME is `NULL', then `~/.history' is truncated.
- Returns 0 on success, or `errno' on failure.
-
-
-File: history.info, Node: History Expansion, Prev: Managing the History File, Up: History Functions
-
-History Expansion
------------------
-
- These functions implement history expansion.
-
- - Function: int history_expand (char *string, char **output)
- Expand STRING, placing the result into OUTPUT, a pointer to a
- string (*note History Interaction::). Returns:
- `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);
-
- `1'
- if expansions did take place;
-
- `-1'
- if there was an error in expansion;
-
- `2'
- if the returned line should be displayed, but not executed,
- as with the `:p' modifier (*note Modifiers::).
-
- If an error ocurred in expansion, then OUTPUT contains a
- descriptive error message.
-
- - Function: char * get_history_event (const char *string, int *cindex,
- int qchar)
- Returns the text of the history event beginning at STRING +
- *CINDEX. *CINDEX is modified to point to after the event
- specifier. At function entry, CINDEX points to the index into
- STRING where the history event specification begins. QCHAR is a
- character that is allowed to end the event specification in
- addition to the "normal" terminating characters.
-
- - Function: char ** history_tokenize (const char *string)
- Return an array of tokens parsed out of STRING, much as the shell
- might. The tokens are split on the characters in the
- HISTORY_WORD_DELIMITERS variable, and shell quoting conventions
- are obeyed.
-
- - Function: char * history_arg_extract (int first, int last, const
- char *string)
- Extract a string segment consisting of the FIRST through LAST
- arguments present in STRING. Arguments are split using
- `history_tokenize'.
-
-
-File: history.info, Node: History Variables, Next: History Programming Example, Prev: History Functions, Up: Programming with GNU History
-
-History Variables
-=================
-
- This section describes the externally-visible variables exported by
-the GNU History Library.
-
- - Variable: int history_base
- The logical offset of the first entry in the history list.
-
- - Variable: int history_length
- The number of entries currently stored in the history list.
-
- - Variable: int history_max_entries
- The maximum number of history entries. This must be changed using
- `stifle_history()'.
-
- - Variable: char history_expansion_char
- The character that introduces a history event. The default is `!'.
- Setting this to 0 inhibits history expansion.
-
- - Variable: char history_subst_char
- The character that invokes word substitution if found at the start
- of a line. The default is `^'.
-
- - Variable: 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.
-
- - Variable: char * history_word_delimiters
- The characters that separate tokens for `history_tokenize()'. The
- default value is `" \t\n()<>;&|"'.
-
- - Variable: char * history_no_expand_chars
- The list of characters which inhibit history expansion if found
- immediately following HISTORY_EXPANSION_CHAR. The default is
- space, tab, newline, carriage return, and `='.
-
- - Variable: char * history_search_delimiter_chars
- The list of additional characters which can delimit a history
- search string, in addition to space, TAB, `:' and `?' in the case
- of a substring search. The default is empty.
-
- - Variable: int history_quotes_inhibit_expansion
- If non-zero, single-quoted words are not scanned for the history
- expansion character. The default value is 0.
-
- - Variable: rl_linebuf_func_t * history_inhibit_expansion_function
- This should be set to the address of a function that takes two
- arguments: a `char *' (STRING) and an `int' index into that string
- (I). It should return a non-zero value if the history expansion
- starting at 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 `NULL'.
-
-
-File: history.info, Node: History Programming Example, Prev: History Variables, Up: Programming with GNU History
-
-History Programming Example
-===========================
-
- The following program demonstrates simple use of the GNU History
-Library.
-
- #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");
- }
- }
- }
- }
-
-
-File: history.info, Node: Concept Index, Next: Function and Variable Index, Prev: Programming with GNU History, Up: Top
-
-Concept Index
-*************
-
-* Menu:
-
-* anchored search: Searching the History List.
-* event designators: Event Designators.
-* history events: Event Designators.
-* history expansion: History Interaction.
-* History Searching: Searching the History List.
-
-
-File: history.info, Node: Function and Variable Index, Prev: Concept Index, Up: Top
-
-Function and Variable Index
-***************************
-
-* Menu:
-
-* add_history: History List Management.
-* append_history: Managing the History File.
-* clear_history: History List Management.
-* current_history: Information About the History List.
-* get_history_event: History Expansion.
-* history_arg_extract: History Expansion.
-* history_base: History Variables.
-* history_comment_char: History Variables.
-* history_expand: History Expansion.
-* history_expansion_char: History Variables.
-* history_get: Information About the History List.
-* history_get_history_state: Initializing History and State Management.
-* history_inhibit_expansion_function: History Variables.
-* history_is_stifled: History List Management.
-* history_length: History Variables.
-* history_list: Information About the History List.
-* history_max_entries: History Variables.
-* history_no_expand_chars: History Variables.
-* history_quotes_inhibit_expansion: History Variables.
-* history_search: Searching the History List.
-* history_search_delimiter_chars: History Variables.
-* history_search_pos: Searching the History List.
-* history_search_prefix: Searching the History List.
-* history_set_history_state: Initializing History and State Management.
-* history_set_pos: Moving Around the History List.
-* history_subst_char: History Variables.
-* history_tokenize: History Expansion.
-* history_total_bytes: Information About the History List.
-* history_truncate_file: Managing the History File.
-* history_word_delimiters: History Variables.
-* next_history: Moving Around the History List.
-* previous_history: Moving Around the History List.
-* read_history: Managing the History File.
-* read_history_range: Managing the History File.
-* remove_history: History List Management.
-* replace_history_entry: History List Management.
-* stifle_history: History List Management.
-* unstifle_history: History List Management.
-* using_history: Initializing History and State Management.
-* where_history: Information About the History List.
-* write_history: Managing the History File.
-
-
-
-Tag Table:
-Node: Top1136
-Node: Using History Interactively1716
-Node: History Interaction2223
-Node: Event Designators3642
-Node: Word Designators4569
-Node: Modifiers6198
-Node: Programming with GNU History7336
-Node: Introduction to History8061
-Node: History Storage9746
-Node: History Functions10857
-Node: Initializing History and State Management11841
-Node: History List Management12641
-Node: Information About the History List14235
-Node: Moving Around the History List15591
-Node: Searching the History List16580
-Node: Managing the History File18498
-Node: History Expansion20304
-Node: History Variables22199
-Node: History Programming Example24766
-Node: Concept Index27488
-Node: Function and Variable Index27974
-
-End Tag Table
diff --git a/readline-4.3.orig/doc/history.ps b/readline-4.3.orig/doc/history.ps
deleted file mode 100644
index a35bcf4..0000000
--- a/readline-4.3.orig/doc/history.ps
+++ /dev/null
@@ -1,1658 +0,0 @@
-%!PS-Adobe-2.0
-%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software
-%%Title: history.dvi
-%%Pages: 20
-%%PageOrder: Ascend
-%%BoundingBox: 0 0 612 792
-%%EndComments
-%DVIPSWebPage: (www.radicaleye.com)
-%DVIPSCommandLine: dvips -D 300 -t letter -o history.ps history.dvi
-%DVIPSParameters: dpi=300, compressed
-%DVIPSSource: TeX output 2002.06.27:1354
-%%BeginProcSet: texc.pro
-%!
-/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
-N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
-mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
-0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
-landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
-mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
-matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
-exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
-statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
-N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
-/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
-/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
-array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
-df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
-definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
-}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
-B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
-1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3
-1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
-0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
-sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
-rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
-gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
-/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
-/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
-A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
-get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
-ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
-fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
-{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
-chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
-1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
-forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
-/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
-}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
-bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
-mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
-SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
-userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
-1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
-index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
-/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
-/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
-(LaserWriter 16/600)]{A length product length le{A length product exch 0
-exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
-end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
-grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
-imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
-exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
-fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
-delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
-B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
-p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
-rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
-
-%%EndProcSet
-TeXDict begin 40258431 52099146 1000 300 300 (history.dvi)
-@start
-%DVIPSBitmapFont: Fa cmti10 10.95 1
-/Fa 1 47 df<127012F8A212F012E005057B840E>46 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fb cmbxti10 14.4 1
-/Fb 1 47 df<120E123FEA7F80A212FFA21300127E123C0909798815>46
-D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fc cmtt9 9 26
-/Fc 26 123 df<EAFFFEA30F037E7E14>95 D<EA1FC0EA7FF0EA7078EA2018EA001CA2EA
-07FC121FEA3C1C127012E0A3EA707C383FFF80EA0F8F11107E8F14>97
-D<12FCA2121CA513F8EA1DFEEA1F07EA1E03001C1380EB01C0A6EB0380001E1300EA1F0E
-EA1DFCEA0CF81217809614>I<EA03F8EA0FFEEA1C0EEA3804EA7000126012E0A4126012
-70EA380EEA1C1EEA0FFCEA03F00F107E8F14>I<137EA2130EA5EA07CEEA0FFEEA1C3EEA
-301EEA700E12E0A61270EA301EEA383E381FEFC0EA07CF12177F9614>I<EA07E0EA0FF0
-EA1C38EA301CEA700CEAE00EA2EAFFFEA2EAE00012601270EA380EEA1C1EEA0FFCEA03F0
-0F107E8F14>I<13FCEA01FEEA038EEA07041300A3EA7FFE12FFEA0700ACEAFFF8A20F17
-7F9614>I<EA07CF381FFF80EA383B38301800EA701CA3EA3018EA3838EA3FF0EA37C000
-70C7FCA2EA3FF86C7E487EEA700F38E00380A438700700EA3C1EEA1FFCEA07F011197F8F
-14>I<12FCA2121CA51378EA1DFEEA1F86EA1E07121CAA38FF8FE0A21317809614>I<1206
-120FA21206C7FCA4B4FCA21207ACEAFFF8A20D187C9714>I<12FCA2121CA5EBFF80A2EB
-1C005B5B5BEA1DC0EA1FE0A2EA1E70EA1C38133C131C7F38FF1F80A21117809614>107
-D<EAFF80A21203B3EAFFFEA20F177E9614>I<EAFB8EEAFFDF383CF380A2EA38E3AA38FE
-FBE013791310808F14>I<EAFC78EAFDFEEA1F86EA1E07121CAA38FF8FE0A21310808F14>
-I<EA07C0EA1FF0EA3C78EA701CA2EAE00EA6EA701CEA783CEA3C78EA1FF0EA07C00F107E
-8F14>I<EAFCF8EAFDFEEA1F07EA1E03001C1380EB01C0A6EB0380001E1300EA1F0EEA1D
-FCEA1CF890C7FCA6B47EA21218808F14>I<EA03E7EA0FF7EA1C1FEA300F1270487EA6EA
-700F1230EA1C3FEA0FF7EA07C7EA0007A6EB3FE0A213187F8F14>I<EAFE1FEB7F80EA0E
-E3380F810090C7FCA2120EA8EAFFF0A211107F8F14>I<EA0FD8EA3FF8EA603812C0A2EA
-F000EA7F80EA3FF0EA07F8EA001CEA600612E012F0EAF81CEAFFF8EACFE00F107E8F14>
-I<1206120EA4EA7FFC12FFEA0E00A8130EA3131CEA07F8EA01F00F157F9414>I<EAFC3F
-A2EA1C07AB131F380FFFE0EA03E71310808F14>I<38FE3F80A2383C1E00EA1C1CA36C5A
-A3EA0630EA0770A36C5AA311107F8F14>I<38FE3F80A238700700EA380EA3EA39CEA3EA
-1B6C121AA3EA1E7CA2EA0E3811107F8F14>I<EA7E3FA2EA1E3CEA0E78EA07705B12036C
-5A12037FEA0770EA0E781338487E38FE3F80A211107F8F14>I<38FE3F80A2381C0E005B
-A2120E5BA212071330A2EA0370A25B1201A25BA3485A12730077C7FC127E123C11187F8F
-14>I<EA3FFF5AEA700E131C1338EA007013E0EA01C0EA0380EA0700120EEA1C07123812
-70B5FCA210107F8F14>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fd cmti9 9 1
-/Fd 1 47 df<1230127812F0126005047C830C>46 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fe cmr9 9 24
-/Fe 24 122 df<EA07E0EA1C38EA381CEA300CEA700EEA6006A2EAE007AAEA6006A2EA70
-0EEA300CEA381CEA1C38EA07E010187F9713>48 D<12035AB4FC1207B3A2EA7FF80D187D
-9713>I<EA01F8EA0704EA0C06EA180E123013001270126012E0EAE3E0EAE418EAE80CEA
-F00EEAE0061307A31260A2EA7006EA300EEA180CEA0C38EA07E010187F9713>54
-D<1240EA7FFF13FEA2EA4004EA80081310A2EA00201340A21380120113005AA25A1206A2
-120EA5120410197E9813>I<EA07E0EA1818EA300CEA20061260A21270EA780CEA3E18EA
-1F30EA07C0EA03E0EA0CF8EA307CEA601E130FEAC0071303A3EA6002EA2004EA1818EA07
-E010187F9713>I<EA07E0EA1C30EA3018EA700CEA600EEAE006A21307A31260EA700FEA
-3017EA1827EA07C7EA00071306130E130C12701318EA6030EA3060EA0F8010187F9713>
-I<39FFE1FFC0390E001C00AB380FFFFC380E001CAC39FFE1FFC01A1A7F991D>72
-D<EA0FC2EA1836EA200EEA600612C01302A3EAE0001270127EEA3FE0EA1FF8EA03FCEA00
-7E130E130713031280A3EAC0021306EAE004EAD818EA87E0101A7E9915>83
-D<EA1FC0EA38707FEA101C1200A2EA03FCEA1E1C1238127012E01480A2133CEA705F381F
-8F0011107F8F13>97 D<EA07F8EA1C1C1238EA700813005AA612701304EA3808EA1C18EA
-07E00E107F8F11>99 D<133F1307A9EA03E7EA0C17EA180F487E127012E0A6126012706C
-5AEA1C373807C7E0131A7F9915>I<EA07C0EA1C30EA30181270EA600C12E0EAFFFCEAE0
-00A41260EA7004EA3808EA1C18EA07E00E107F8F11>I<EA0FCF3818718038303000EA70
-38A4EA30306C5AEA2FC00060C7FCA21270EA3FF013FC6C7EEA600FEAC003A4EA6006EA38
-1CEA07E011187F8F13>103 D<12FC121CA9137CEA1D87381E0380A2121CAB38FF9FF014
-1A809915>I<1218123CA212181200A612FC121CAE12FF081A80990A>I<EAFC7CEA1D8738
-1E0380A2121CAB38FF9FF01410808F15>110 D<EA07E0EA1C38EA300CEA700EEA6006EA
-E007A6EA6006EA700EEA381CEA1C38EA07E010107F8F13>I<EAFCFCEA1D07381E038038
-1C01C0A2EB00E0A6EB01C01480381E0300EA1D06EA1CF890C7FCA6B47E1317808F15>I<
-EAFC78EA1D9CEA1E1C1308EA1C00ABEAFF800E10808F0F>114 D<EA1F20EA60E0EA4020
-12C0A2EAF000127FEA3FC0EA1FE0EA00F0EA8070133012C01320EAF040EA8F800C107F8F
-0F>I<1208A41218A21238EAFFC0EA3800A81320A41218EA1C40EA07800B177F960F>I<38
-FF0F80383C0700EA1C061304A26C5AA26C5AA3EA03A0A2EA01C0A36C5A11107F8F14>
-118 D<38FE3F80383C1E00EA1C086C5AEA0F306C5A6C5A12017F1203EA0270487E1208EA
-181CEA381E38FC3FC012107F8F14>120 D<38FF0F80383C0700EA1C061304A26C5AA26C
-5AA3EA03A0A2EA01C0A36C5AA248C7FCA212E112E212E4127811177F8F14>I
-E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Ff cmss10 10.95 2
-/Ff 2 42 df<13E0EA01C0EA0380120713005A121EA2121C123CA212381278A3127012F0
-AE12701278A31238123CA2121C121EA27E7E13801203EA01C0EA00E00B2E7CA112>40
-D<12E012707E123C121C121E7EA27E1380A2120313C0A3120113E0AE13C01203A3138012
-07A213005AA2121E121C123C12385A5A0B2E7EA112>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fg cmbx10 12 27
-/Fg 27 123 df<EB07F8EB7FFC3801FC0E3803F01F48485AEA0FC0A3141E140C91C7FCA2
-ECFF80B6FCA2380FC01FB2397FF8FFF0A21C237FA220>12 D<90380FFF80137F3801FC1F
-3803F03FEA07E0EA0FC0141FA7B6FCA2380FC01FB2397FF8FFF0A21C237FA220>I<EA07
-FE381FFF80383F07E06D7E130180121E1200A2133FEA03FDEA1F81EA3E01127C12F8A4EA
-7C02EA7E0C391FF87F803807E03F19167E951C>97 D<B47EA2121FABEB87F0EBBFFCEBF0
-3EEBC01F9038800F8015C0140715E0A715C0A2140F15809038C01F00381E707E381C3FFC
-38180FE01B237EA220>I<EBFF80000713E0380F83F0EA1F03123E127E387C01E090C7FC
-12FCA6127C127EA2003E13186C1330380FC0603807FFC0C6130015167E9519>I<49B4FC
-A2EB003FAB13FE3807FFBF380FC1FF48C67E003E7F127E127CA212FCA7127C127E123E6C
-5B380F81FF3907FF3FE0EA01FC1B237EA220>I<13FE3807FF80380F83C0381E01E0383E
-00F0127E007C13F8147812FCB512F8A200FCC7FCA3127CA26C1318A26C1330380F80E038
-03FFC0C6130015167E951A>I<EB1F80EBFFE03801F1F0EA03E31207EA0FC3EBC1E0EBC0
-00A6EAFFFEA2EA0FC0B2EA7FFCA214237EA212>I<9038FE0F803903FF9FC0380F83E338
-1F01F3391E00F000003E7FA5001E5BEA1F01380F83E0380BFF80D808FEC7FC0018C8FCA2
-121C381FFFE014FC6C13FF7E001F1480397C001FC00078130F00F81307A3007CEB0F806C
-EB1F00381F807E6CB45A000113E01A217F951D>I<B47EA2121FABEB83F0EB8FFCEB987E
-EBA03EEBC03FA21380AE39FFF1FFE0A21B237DA220>I<121E123FEA7F80A4EA3F00121E
-C7FCA6EAFF80A2121FB2EAFFF0A20C247EA30F>I<B47EA2121FABECFF80A2EC3C001430
-14E0EB81C00183C7FC1386139E13BE13FFEBDF80EB8FC01307806D7E6D7E130080147E39
-FFE1FFC0A21A237EA21E>107 D<EAFF80A2121FB3ADEAFFF0A20C237EA20F>I<3AFF03F8
-03F890390FFE0FFE3A1F183F183F9039201F201F014001C01380A201801380AE3BFFF0FF
-F0FFF0A22C167D9531>I<38FF03F0EB0FFC381F187EEB203EEB403FA21380AE39FFF1FF
-E0A21B167D9520>I<13FF000713E0380F81F0381F00F8003E137C48133EA300FC133FA7
-007C133E007E137E003E137C6C13F8380F81F03807FFE0C6130018167E951D>I<38FF87
-F0EBBFFC381FF07EEBC01F9038800F8015C0A2EC07E0A715C0140FA2EC1F8001C01300EB
-F07EEBBFFCEB8FE00180C7FCA8EAFFF0A21B207E9520>I<EBFE033807FF07380FC1CF38
-1F00DF48137F007E7FA2127C12FCA7127EA2003E5B6C5BEA0FC13807FF3FEA00FC1300A8
-903801FFE0A21B207E951E>I<38FF0F80EB1FE0381F33F013631343A2EBC1E0EB8000AD
-EAFFF8A214167E9518>I<3807F980EA1FFFEA3807EA7003EAF001A26CC7FCB4FC13F8EA
-7FFE6C7E6C1380120738003FC0EAC007130312E0A200F0138038FC0F00EAEFFEEAC3F812
-167E9517>I<487EA41203A21207A2120F123FB5FCA2EA1F80ABEB8180A5380F830013C3
-EA07FEEA01F811207F9F16>I<38FF81FFA2381F803FAF5C5C380FC1BF3907FF3FE0EA01
-FC1B167D9520>I<39FFF01FE0A2391FC00700000F1306EBE00E0007130C13F000035BA2
-6C6C5AA26C6C5AA2EBFEE0EB7EC0137F6D5AA26DC7FCA2130EA21B167F951E>I<3AFFF3
-FF83FCA23A1F807C00E0D80FC014C08001E013010007017F1380A2D803F0EB0300ECCF83
-01F81387D801F913C61487D800FD13ECEBFF0315FC017F5BEB7E01013E5BEB3C00A20118
-136026167F9529>I<39FFF07FC0A2390FC01C006C6C5A6D5A00035B6C6C5A3800FD8013
-7F91C7FC7F6D7E497EEB37E0EB67F013C33801C1F8380380FC48487E000E137F39FF81FF
-E0A21B167F951E>I<39FFF01FE0A2391FC00700000F1306EBE00E0007130C13F000035B
-A26C6C5AA26C6C5AA2EBFEE0EB7EC0137F6D5AA26DC7FCA2130EA2130CA25B1278EAFC38
-13305BEA69C0EA7F80001FC8FC1B207F951E>I<387FFFF0A2387C07E038700FC0EA601F
-00E0138038C03F005B137EC65A1201485AEBF030EA07E0120FEBC070EA1F80003F1360EB
-00E0EA7E03B5FCA214167E9519>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fh cmtt10 12 27
-/Fh 27 119 df<13E0A538F0E1E0EAFCE7387EEFC0381FFF00EA07FCEA01F0EA07FCEA1F
-FF387EEFC038FCE7E0EAF0E13800E000A513157D991A>42 D<1338137CA2136C13EEA313
-C6A2EA01C7A438038380A4380701C0A213FFA24813E0EA0E00A4481370387F01FC38FF83
-FE387F01FC171E7F9D1A>65 D<B512F8A3381C0038A51400A2130EA3EA1FFEA3EA1C0EA3
-90C7FCA3141CA5B512FCA3161E7E9D1A>69 D<38FF83FEA3381C0070AA381FFFF0A3381C
-0070AB38FF83FEA3171E7F9D1A>72 D<B51280A33801C000B3A6B51280A3111E7C9D1A>
-I<38FE03FE12FFA2381D8070A213C0121CA213E0A213601370A213301338A21318131CA2
-130C130EA21306A213071303A238FF81F0A21380171E7F9D1A>78
-D<EA0FFE383FFF804813C0EA7C07EA700100F013E0EAE000B1EAF001A2007013C0EA7C07
-EA7FFF6C1380380FFE00131E7D9D1A>I<EAFFFC13FF1480381C07C0EB01E0EB00F01470
-A414F0EB01E0EB07C0381FFF8014001480381C07C01301EB00E0A514E214E7A338FF807E
-A21438181E7F9D1A>82 D<3803F1C0EA0FFDEA3FFFEA7C0FEA700312E01301A390C7FC12
-701278123FEA1FF0EA07FE3800FF80EB0FC0EB01E013001470A2126012E0A214E0EAF001
-38FC03C0B5128000EF1300EAE3FC141E7D9D1A>I<387FFFFEB5FCA238E0380EA5000013
-00B33803FF80A3171E7F9D1A>I<38FF01FEA3381C00706C13E0A2380701C0A213830003
-138013C700011300A2EA00EEA2137CA21338AA48B4FCA3171E7F9D1A>89
-D<387FFFC0B512E0A26C13C013047D7E1A>95 D<EA1FF0EA3FFC487EEA780FEA30073800
-0380A2137FEA07FF121FEA3F83EA7803127012E0A3EA7007EA780F383FFFFCEA1FFDEA07
-F016157D941A>97 D<12FEA3120EA6133EEBFF80000F13E0EBC1F0EB8070EB0038120E14
-1CA7000F13381478EB80F0EBC1E0EBFFC0000E138038063E00161E7F9D1A>I<EBFF8000
-0313C0000F13E0EA1F01383C00C04813001270A25AA51270A2007813707E381F01F0380F
-FFE0000313C03800FE0014157D941A>I<EB1FC0A31301A6EA01F1EA07FDEA0FFFEA1E0F
-EA3C07EA7803EA700112E0A7EA7003A2EA3807EA3E0F381FFFFCEA07FDEA01F1161E7E9D
-1A>I<EA01F8EA07FF481380381E07C0EA3C01387800E01270481370A2B512F0A300E0C7
-FC1270A2007813707E381F01F0380FFFE0000313803800FE0014157D941A>I<EB07E0EB
-1FF0EB3FF8EB7878EBF030EBE000A4387FFFF0B5FCA23800E000AF383FFF804813C06C13
-80151E7F9D1A>I<12FEA3120EA6133EEBFF80000F13C013C1EB80E01300120EAC38FFE3
-FE13E713E3171E7F9D1A>104 D<EA01C0487EA36C5AC8FCA5EA7FE0A31200AF387FFF80
-B512C06C1380121F7C9E1A>I<EAFFE0A31200B3A6B512E0A3131E7D9D1A>108
-D<EAFE3EEBFF80B512C0EA0FC1EB80E01300120EAC38FFE3FE13E713E317157F941A>
-110 D<EA01F0EA07FCEA1FFF383E0F80EA3C07387803C0EA700138E000E0A6EAF0010070
-13C0EA7803383C0780EA3E0F381FFF00EA07FCEA01F013157D941A>I<387F81F838FF8F
-FC387F9FFE3803FE1EEBF80CEBE000A25B5BAAEA7FFFB5FC7E17157F941A>114
-D<487E1203A6387FFFE0B5FCA238038000AA1470A43801C1E013FF6C1380EB3F00141C7F
-9B1A>116 D<38FE0FE0A3EA0E00AD1301EA0F033807FFFE7EEA00FC17157F941A>I<387F
-C7FC00FF13FE007F13FC380E00E0A3380701C0A338038380A33801C700A3EA00EEA3137C
-A2133817157F941A>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fi cmbx12 13.14 41
-/Fi 41 123 df<EB07FCEB3FFF9038FE0780D803F013C03807E00FA2EA0FC0A3EC030091
-C7FCA3EC7FE0B6FCA2380FC007B3A239FFFC7FFEA21F267FA522>12
-D<123C127E12FFA4127E123C08087C8711>46 D<131C133C13FC12FFA21200B3AA387FFF
-FCA216237CA21F>49 D<48B4FC000713C0381E07F0383803F8386001FC387C00FE12FE14
-FF147FA2127C003813FFC7FC14FEA2EB01FC14F8EB03F0EB07E01480EB0F00131E5B1370
-EBE003EA01C038038007380700061206380FFFFE5A5A4813FCB5FCA218237DA21F>I<48
-B4FC000713E0381E03F0383801F8003C13FC387E00FEA3123EEA1C01000013FCA2EB03F8
-EB07F0EB0FC03801FF00A2380007E0EB01F014F8EB00FC14FE14FFA21210127C12FEA214
-FEA2387C01FC007013F8383E07F0380FFFC00001130018237DA21F>I<14381478A214F8
-1301130313071306130C131C13381330136013E0EA01C01380EA03005A120E5A12185A12
-705AB612C0A2390001F800A790387FFFC0A21A237EA21F>I<0018130C001F137CEBFFF8
-14F014E014C01480EBFC000018C7FCA513FF001B13E0381F03F0381C00F8000813FCC712
-7EA3147FA2127812FCA3147E5A006013FC1270383801F8381E07E03807FFC03801FE0018
-237DA21F>I<EB1FC0EB7FF03801F0383803E00C3807803E000F137EEA1F005AA2007E13
-3C1400A338FE3FC0EB7FF0EB80F800FF13FCEB007C147E5A147FA4127EA4003E137E123F
-6C137C380F80F83807C1F03803FFC038007F0018237DA21F>I<1230123C003FB512C0A2
-15804814005C5C38600018A200E05B485B5CC6485AA249C7FC1306130EA25BA2133CA25B
-A213F8A41201A66C5A13601A257DA41F>I<141CA2143EA3147FA24A7EA39038019FC0A2
-9038031FE0140F01077FEB0607A2010C7F1403011C7FEB1801A2496C7EA2017FB5FCA290
-39E0007F8049133FA2484880151F00038190C7120FA2486E7ED8FFF090B51280A229257E
-A42E>65 D<B612E015FC3903F800FFED1FC0ED07E06F7E6F7E82150082A2167FA31780AA
-1700A316FEA24B5A5E4B5A4B5AED1FC0EDFF80B648C7FC15E029257EA42F>68
-D<B7FCA23903F8007FED0F8015071503A21501A3ED00C01406A21600A2140E141EEBFFFE
-A2EBF81E140E1406A21660A291C7FC16C0A415011503A2ED0F80153FB7FCA223257EA428
->I<B612FEA23803F800151F8181A281A3ED01801403A292C7FCA25C5C90B5FCA2EBF80F
-8080A491C8FCAAB512F0A221257EA427>I<B500E0B512E0A23B03F80003F800AF90B6FC
-A29038F80003B0B500E0B512E0A22B257EA430>72 D<B512E0A23803F800B3AFB512E0A2
-13257EA417>I<B512F0A2D803F8C7FCB3A31503A31506A3150EA2151E153E157CEC03FC
-B6FCA220257EA425>76 D<D8FFF8EDFFF86D5C0003EEFE00017EEC037EA36D1406A26D6C
-130CA26D6C1318A26D6C1330A36D6C1360A26D6C13C0A2903900FC0180A291387E0300A3
-EC3F06A2EC1F8CA2EC0FD8A2EC07F0A36E5AEA07803CFFFC01C01FFFF8A235257EA43A>
-I<01FF1380000713E3380F80F7381E001F48130F481307140312F81401A27E91C7FCB4FC
-EA7FE013FE383FFFE014F86C13FE00077F6C1480C67E010313C0EB003FEC0FE01407A200
-C01303A315C07E6C13076C14806CEB0F0038FFC03E38E3FFF838803FE01B257DA422>83
-D<B53B81FFFE01FFF0A23D07F0001FC0000F007013066C6C010F5CA26F7E6C6C5EA26D49
-6C1338000017304B7E017F01195CA291388030FE013F5E829139C0607F01011F5E03E013
-8190280FE0C03F83C7FCA29139F1801FC3010715C617E69139FB000FEE010315EC02FF14
-FC6D486D5AA24A130301005DA24A130102785CA202306D5A3C257FA43F>87
-D<EA07FF001F13E0383E03F0383F00F880147E121EC7FCA3EB1FFE3803FE7EEA0FC0EA1F
-00123E127E5AA314BEEA7E01383F073E391FFE1FE03807F00F1B187E971E>97
-D<EAFFC0A2120FACEBC1FCEBCFFF9038FC0FC09038F007E09038C003F0A2EC01F8A215FC
-A815F8A2EC03F013E09038F007E090381C1F80390E0FFF00380C03F81E267FA522>I<EB
-7FE03803FFF83807C07C381F80FC13005A007E1378140012FEA8127E127F6C130CEA1F80
-EBC0183807E0703803FFE038007F0016187E971B>I<ECFFC0A2140FAC137F3803FFCF38
-0FE0FF381F803F383F000FA2127EA212FEA8127EA27E141F381F803F380FC0EF3903FFCF
-FC3800FE0F1E267EA522>I<137F3803FFC03807C1F0380F80F8EA1F0048137C127E147E
-12FEA2B512FEA248C7FCA3127EA214067E6C130C380F80183807E0703803FFE038007F80
-17187E971C>I<EB1FC0EB7FF0EA01F83803E1F8120713C1380FC0F01400A7B5FCA2EA0F
-C0B3A2EAFFFEA215267EA513>I<3901FF07C00007EBDFE0380F83F1EA1F01393E00F800
-007E7FA6003E5B6C485A380F83E0EBFFC0001190C7FC0030C8FCA21238123C383FFFE06C
-13FC806C7F481480383C003F48EB0FC000F81307A4007CEB0F806CEB1F00381F807E3807
-FFF8C613C01B247E971F>I<EAFFC0A2120FAC14FE9038C3FF809038CE0FC013D89038D0
-07E013E0A213C0AF39FFFC7FFEA21F267EA522>I<120FEA1F80EA3FC0A4EA1F80EA0F00
-C7FCA7EA7FC0A2120FB3A2EAFFF8A20D277EA611>I<EAFFC0A2120FB3B0EAFFFCA20E26
-7EA511>108 D<26FF80FE137F903A83FF81FFC03B0F8E0FC707E0019813CC903A9007E8
-03F001A013F0A201C013E0AF3BFFFC7FFE3FFFA230187E9733>I<38FF80FE903883FF80
-390F8E0FC0139890389007E013A0A213C0AF39FFFC7FFEA21F187E9722>I<EB7F803803
-FFF03807C0F8381F807E48487EA2007EEB1F80A200FE14C0A8007E1480A26CEB3F00A238
-1F807E6C6C5A3803FFF038007F801A187E971F>I<38FFC1FCEBCFFF390FFC1FC09038F0
-07E001C013F0140315F8140115FCA8EC03F8A215F0EBE0079038F00FE09038DC1F809038
-CFFF00EBC3F801C0C7FCA9EAFFFCA21E237F9722>I<38FF83E0EB8FF8380F8C7CEB90FC
-13B013A01478EBE0005BAEEAFFFEA216187F9719>114 D<3807F8C0EA1FFFEA3C07EA70
-01EAF000A300FC1300B47EEA7FFC7F383FFF80000F13C0120338001FE01303EAC001A212
-E014C0EAF00338FC078038EFFF00EAC3FC13187E9718>I<13C0A41201A312031207120F
-121FB512C0A2380FC000AC1460A63807E0C013E13801FF8038007E0013237FA218>I<39
-FFC07FE0A2000F1307B0140FA200071317EBE0673903FFC7FE38007F071F187E9722>I<
-39FFF80FF8A2390FC001C015803907E00300A26D5A00031306EBF80E0001130C13FC0000
-5B13FEEB7E30A26D5AA214E06D5AA26D5AA26DC7FCA21D187F9720>I<39FFF83FF0A239
-0FC00F003807E00E6C6C5A6D5A6C6C5A00001360EB7EC06D5AA2131F6D7E497E80EB33F8
-1361EBE0FC3801C07E3803807F3907003F8048131F39FFC07FF8A21D187F9720>120
-D<39FFF80FF8A2390FC001C015803907E00300A26D5A00031306EBF80E0001130C13FC00
-005B13FEEB7E30A26D5AA214E06D5AA26D5AA26DC7FCA21306A25B1230EA781CEAFC185B
-1370EA68E0EA7FC0001FC8FC1D237F9720>I<387FFFF8A2387C03F0EA700738600FE000
-E013C0EB1F80EAC03F1400137EEA00FE5B485A0003130C13F0EA07E0120FEBC01C381F80
-18003F1338387F0078387E01F8B5FCA216187E971B>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fj cmsl10 10.95 30
-/Fj 30 122 df<903803F07C90381E0DC69038380F0FEB701E01E0130EEC0C003801C01C
-A548485A007FB512C03903803800A448485AA6000E5BA648485A001E7F38FF8FFC20207E
-9F1B>11 D<EB03E0EB1C181338EB703C13E014383801C000A5485A387FFFF038038070A4
-380700E0A6380E01C0A6381C0380001E13C038FF0FF016207E9F19>I<903803F03F9039
-1E09E0809039380F80C09039701F01E0EBE03E021E13C02601C01CC7FCA548485A007FB6
-12803903803803A43A0700700700A6000EEBE00EA64848485A001EEBE01E3AFF8FF8FFC0
-23207E9F26>14 D<13201360A4383061C0383C4380380E4E00EA0778EA01E0A2EA07B8EA
-1C9CEA708FEAE083EA0180A490C7FC12147AA117>42 D<13181338EA01F8EA0E701200A5
-13E0A6EA01C0A6EA0380A6EA07001380EAFFFC0E1E7B9D17>49 D<EB3F80EBC1E0380100
-70000213785AA2000F137C1380A2EB00781206C712F814F0EB01E014C0EB0380EB070013
-0E5B5B13605B485A380300201206000813405A383FFFC0481380B5FC161E7E9D17>I<13
-FFEA01FE1380A5EA0300A61206A65AA65AA65AA65AA6B4FCA2102D7EA10D>91
-D<13FFEA01FEEA0006A5130CA61318A61330A61360A613C0A6EA0180A6EAFF00A2102D82
-A10D>93 D<EA07F8EA0C0CEA1E061307121C1200A313FFEA07C7EA1E07EA3C0E127800F0
-1310A3131EEB2E2038784F40381F878014147D9317>97 D<13FEEA0383380E0780121C00
-38130090C7FC12785AA45AA37E5BEA70026C5AEA1C18EA07E011147D9314>99
-D<1438EB01F8EB00781438A21470A614E013FCEA0382EA0601121CEA3C00383801C01278
-12F0A438E00380A412F0EA700738380F00381C37803807C7E015207D9F19>I<13F8EA07
-0EEA0E07381C038012381278127012F0B5FC00F0C7FCA25AA46C5AEA7002EA3004EA1C18
-EA07E011147D9314>I<EB07C0EB1C60EB30F01360EBE0E0EBC0001201A5485AEA3FFCEA
-0380A448C7FCA6120EA65A121EEAFFC014207F9F0E>I<140EEB3E11EBE1A33801C1C238
-0381E0EA07801301120FA3380703C01480EB8700EA04FC48C7FCA21218121CEA0FFF14C0
-14E0381800F04813305A5AA3006013606C13C0381C0700EA07FC181F809417>I<13E012
-0712011200A2485AA6485AEB8F80EB90E013A0EBC0601380000713E01300A5380E01C0A6
-381C0380001E13C038FF8FF014207E9F19>I<EA01C0EA03E0A213C0EA0180C7FCA6EA03
-80121F12071203A2EA0700A6120EA65A121EEAFF800B1F7F9E0C>I<13E0120712011200
-A2EA01C0A6EA0380A6EA0700A6120EA65A121EEAFF800B207F9F0C>108
-D<390387C07C391F9861863907A072073903C03403EB80380007EB7807EB0070A5000EEB
-E00EA64848485A001EEBE01E3AFFCFFCFFC022147E9326>I<38038F80381F90E0EA07A0
-3803C0601380000713E01300A5380E01C0A6381C0380001E13C038FF8FF014147E9319>
-I<13FCEA0387380E0180381C00C04813E0A24813F012F0A438E001E0A214C0130300F013
-8038700700EA380E6C5AEA07E014147D9317>I<EBE3E03807EC383801F01C6C487E140F
-48487E1580A53903800F00A2140E141E141C5C38074070EB61C0011FC7FC90C8FCA3120E
-A4121EEAFFC0191D809319>I<EBFC2038038260EA0702381E01E0123C003813C0127812
-F0A438E00380A212F0A21307127038380F00EA1C37EA07C7EA0007A3130EA4131EEBFFC0
-131D7D9318>I<EA038E381FB380EA07C71203EB8300EA078090C7FCA5120EA65A121EEA
-FFC011147E9312>I<EA01F9EA0607EA080312181301EA3802EA3C00121F13F0EA07FCEA
-01FEEA001FEA40071303A212601306EAF004EAC818EA87E010147F9312>I<1380EA0100
-A35A5A5A121EEAFFF8EA0E00A45AA65A1310A41320A2EA1840EA0F800D1C7C9B12>I<38
-1C0380EAFC1FEA3C07EA1C03A238380700A6EA700EA4131EA25BEA305E381F9F8011147B
-9319>I<38FF83F8381E00E0001C13C01480121E380E01005B13025B12075BA25BEA0390
-13A013E05B5B120190C7FC15147C9318>I<39FF9FE1FC393C078070391C030060148015
-401580EA0E0790380D81001309EB19C21311380F21C4EA0720EB40C814E8EB80F0A26C48
-5A1460000213401E147C9321>I<381FF0FF3803C0780001137014403800E0C0EBE180EB
-73001376133CA2131C132E134E1387EA0107380203801204380C01C0383C03E038FE07FC
-18147F9318>I<390FF83F803901E00E00EBC00C140813E000005B143014205C13705CA2
-0171C7FC1339133A133E133C133813181310A25BA25BEA70C0EAF08000F1C8FC12E61278
-191D809318>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fk cmcsc10 10.95 3
-/Fk 3 118 df<EB7E083803819838070078000C1338001C13185A00781308127000F013
-00A5EB03FEEB00381270127812387E120C1207380380D838007F0817177E961D>103
-D<38FC01FC381E007014201217EA1380A2EA11C0EA10E0A213701338A2131C130E1307A2
-EB03A0EB01E0A213001460123800FE132016177E961C>110 D<38FF81FC381C00701420
-B0000C1340120E6C138038018300EA007C16177E961C>117 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fl cmbx12 17.28 36
-/Fl 36 122 df<EB01C01303130F137FEA1FFFB5FC13BFEAE03F1200B3B1007FB512F0A3
-1C2E7AAD28>49 D<EB3FE03801FFFE0007EBFF80D80F8013C0391E003FE00038EB1FF000
-7CEB0FF8007EEB07FCB4FC018013FEA21403A2EA7F00003E1307C7FC15FCA2EC0FF8A215
-F0EC1FE015C0EC3F80EC7F00147E14F8495A495A495A49C7FC011E130E5B133849131E49
-131C485A48C7123C48B512FC5A5A5A4814F8B6FCA31F2E7CAD28>I<1578A215FCA34A7E
-A24A7EA24A7FA34A7FEC0E7F021E7FEC1C3FA202387F151F02787FEC700FA202E07F1507
-010180ECC003A249486C7EA201078191C7FC498191B6FCA24981011CC7123F013C810138
-141FA24981160F01F081491407A2484881486C1403B549B512FCA336317DB03D>65
-D<B712C016FC16FFD801FEC77FEE7FE0707E161F707EA2831607A4160FA25FA24C5A4C5A
-4C5A4B485ADB1FFEC7FC90B65AEEFF8049C7EA3FE0EE0FF0EE07FCA2707E83821880A718
-005E5F16074C5A4C5AEEFFF0B812C094C7FC16F831317DB039>I<913A03FF800180023F
-EBF00349B5EAFC0701079038003F0FD91FF8EB079FD93FC0EB01FFD9FF807F4848C8127F
-4848153F0007161F49150F485A001F1607A2485A1703127FA24992C7FCA212FFA9127FA2
-7FEF0380123FA26C7E1707000F17006C7E6D150E0003161E6C6C151C6C6C6C1478D93FC0
-5CD91FF8EB03E0D907FFEB3F800101D9FFFEC7FCD9003F13F80203138031317CB03A>I<
-B812E0A3C6903880007FEE0FF016031601A21600A21770A31738A21507A21700A35D5D5D
-91B5FCA3EC803F818181A592C8FCACB612C0A32D317EB033>70 D<DA03FF1303027FEBF0
-0749B5EAFC0F01079038007E1FD91FF0EB0FBFD97FC0EB03FF49487F4848C87E485A0007
-824848815B001F82A2484881A2127FA24992C7FC12FFAA0307B512F8127F7FDB00011300
-123FA26C7EA2120F7F6C7E12036C7E6C6C7E6D6C5BD91FF8497ED907FFEB3E3F01019038
-FFFC1F6D6CEBF00F0203EB800335317CB03F>I<B6D8807FB512C0A3C60180C7387FC000
-B391B7FCA30280C7127FB3A3B6D8807FB512C0A33A317EB03F>I<B61280A3C6EB8000B3
-B3A7B61280A319317EB01E>I<B56C49B512C08080C66D90390003E0006E6E5AEBEFFC13
-E780EBE3FF01E17F01E07F6E7E143F816E7E6E7E6E7E14036E7E16806E13C0ED7FE0ED3F
-F0151F16F8ED0FFCED07FEED03FF6F13818117C1EE7FE1EE3FF1EE1FF9EE0FFD160717FF
-828282177F173FA2171F170F486C1507B500E014031701A23A317EB03F>78
-D<B712E016FEEEFF80C6D9800013E0EE3FF0EE0FF8EE07FCA2EE03FEA217FFA717FEA2EE
-07FC17F8160FEE3FE0EEFFC091B6120016F80280C8FCB3A2B67EA330317EB037>80
-D<007FB8FCA39039C00FF801D87E00EC003F007C82007882A200708200F01780A3481603
-A5C792C7FCB3AA017FB6FCA331307DAF38>84 D<B6D88003B51280A3C60180C73807C000
-715AB3AE137F4DC7FC80013F150EA26D6C5C6D6C5C6D6C5C6D6C495A903A00FF801FC002
-3FB55A020F49C8FC020013E039317EB03E>I<B500FC91B5FCA3000390C8EA03C06C1780
-6E14076C170080017F150EA26E141E013F151C6E143C011F153880010F5D8001075DA26E
-130101035D6E13036D5D15806D4AC7FCA26F5A027F130EEDE01E023F131CEDF03C021F13
-3815F8020F5BA2EDFCF002075B15FF6E5BA26E5BA26E90C8FCA3157EA2153CA238317EB0
-3D>I<EBFFF0000313FF390F803F809038C00FE0486C6C7EA26E7ED80FC07FEA0780C7FC
-A414FF131FEBFFE33803FC03EA0FF0EA1FC0123FEA7F80A2EAFF00A31407A2387F800D39
-3FC01DFE3A1FE078FFF03907FFE07FC6EB803F24207E9F27>97 D<EA01F812FFA3120F12
-07ADEC3FE0ECFFFC9038FBE07F9039FF001F8049EB0FC04914E049EB07F016F8A2ED03FC
-A316FEA816FCA3ED07F8A216F06DEB0FE06D14C001E7EB3F809039C3C0FE00903880FFF8
-9038003FC027327EB12D>I<EB0FFF017F13C03901FC01F03803F0033907E007F8120FEA
-1FC0003FEB03F0EC01E04848C7FCA312FFA8127FA36C6C131CA2001F14386C7E00071470
-3903F001E03901FC07C039007FFF00EB0FF81E207D9F24>I<ED0FC0EC07FFA3EC007F15
-3FADEB07F8EB3FFF9038FE07BF3903F801FF3907E0007F120F4848133F123FA2485AA312
-FFA8127FA36C7EA2121F6C6C137F000714FF2603F00313E03A01FC0F3FFE38007FFEEB0F
-F027327DB12D>I<EB0FFC90387FFF803901FC0FC03903F003E03907E001F0000F14F839
-1FC000FC003F14FEA24848137E157FA212FFA290B6FCA20180C7FCA4127FA36C6C130712
-1F150E6C7E6C6C131C6C6C13783900FE03E090383FFFC0903807FE0020207E9F25>I<EB
-01FE90380FFF8090381FC3C090387F07E09038FE0FF0120113FC1203EC07E0EC018091C7
-FCA8B512FCA3D803FCC7FCB3A8387FFFF0A31C327EB119>I<90391FF007C09039FFFE3F
-E03A01F83F79F03907E00FC3000F14E19039C007E0E0001FECF000A2003F80A5001F5CA2
-000F5CEBE00F00075C2603F83FC7FC3806FFFE380E1FF090C9FC121EA2121F7F90B57E6C
-14F015FC6C806C801680000F15C0003FC7127F007EEC1FE0007C140F00FC1407A4007EEC
-0FC0003E1580003F141FD80FC0EB7E003907F803FC0001B512F0D8001F90C7FC242F7E9F
-28>I<EA01F812FFA3120F1207ADEC07F8EC3FFEEC783F02C013809039F9801FC0EBFB00
-01FE14E05BA35BB3B500C3B5FCA328327DB12D>I<EA03C0487E487E487EA46C5A6C5A6C
-5AC8FCA9EA01F8127FA31207B3A7B51280A311337DB217>I<EA01F812FFA3120F1207B3
-B3A6B512C0A312327DB117>108 D<2703F007F8EB1FE000FFD93FFEEBFFF8913A783F01
-E0FC02C090388300FE280FF1801FC6137F2607F30013CC01F602F8148001FC5CA3495CB3
-B500C3B5380FFFFCA33E207D9F43>I<3903F007F800FFEB3FFEEC783F02C013803A0FF1
-801FC03807F30001F614E013FCA35BB3B500C3B5FCA328207D9F2D>I<EB07FC90387FFF
-C03901FC07F03903F001F848486C7E4848137E001F147F003F158049133F007F15C0A300
-FF15E0A8007F15C0A36C6CEB7F80A2001F15006C6C13FE00075C3903F803F83901FE0FF0
-39007FFFC0D907FCC7FC23207E9F28>I<3901F83FE000FFEBFFFC9038FBE07F9039FF00
-3F80D80FFEEB1FC06C48EB0FE04914F0ED07F8A216FC1503A216FEA816FC1507A216F8A2
-ED0FF06D14E06DEB1FC06DEB3F809039FBC0FE009038F8FFF8EC3FC091C8FCABB512C0A3
-272E7E9F2D>I<3803F03F00FFEB7FC09038F1C3E01487390FF30FF0EA07F6A29038FC07
-E0EC03C091C7FCA25BB2B512E0A31C207E9F21>114 D<3801FF86000713FEEA1F00003C
-133E48131E140E12F8A36C90C7FCB47E13FC387FFFC06C13F0806C7F00077F00017FEA00
-3F01001380143F0060131F00E0130FA27E15007E6C131E6C131C38FF807838F3FFF038C0
-7F8019207D9F20>I<131CA5133CA3137CA213FC120112031207381FFFFEB5FCA2D803FC
-C7FCB0EC0380A71201EC0700EA00FEEB7F0EEB3FFCEB07F0192E7FAD1F>I<D801F8EB07
-E000FFEB03FFA3000FEB003F0007141FB3153FA20003147FA26C6CEBDFF03A00FE039FFF
-90387FFF1FEB0FFC28207D9F2D>I<B5EB1FFCA3D80FF8EB03C0000715806D1307000315
-007F0001140E7F6C5CA2EC803C017F1338ECC078013F1370ECE0F0011F5B14F1010F5B14
-F9903807FB80A214FF6D90C7FCA26D5AA26D5AA21478A226207E9F2B>I<B53A1FFFE03F
-F8A33C0FF000FE0007806D150300076EEB0700816D5D00039138FF800EA26C6C486D5A15
-DF01FF153C6C9039038FE038A2D97F876D5A150702C714F0D93FCF6D5AECCE03D91FFEEB
-F9C09138FC01FD16FF010F5D4A7EA26D486DC7FCA20103147E4A133EA26D48131C35207E
-9F3A>I<3A7FFF807FFCA33A03FC000F006C6C131E6C6C5BEC803890387FC078013F5B90
-381FE1E090380FF3C0ECFF806D90C7FC6D5A13016D7E81815B903803DFE09038078FF081
-90380F07FC90381E03FEEB3C01496C7E4914804848EB7FC00003EC3FE026FFFC01B5FCA3
-28207F9F2B>I<B5EB1FFCA3D80FF8EB03C0000715806D1307000315007F0001140E7F6C
-5CA2EC803C017F1338ECC078013F1370ECE0F0011F5B14F1010F5B14F9903807FB80A214
-FF6D90C7FCA26D5AA26D5AA21478A21470A214F05C1301007C5BEAFE035C49C8FC5BEAFC
-1EEA787CEA3FF0EA0FC0262E7E9F2B>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fm cmsy10 10.95 1
-/Fm 1 14 df<14FE903807FFC090381F01F0903878003C01E0130ED80180130348C7EA01
-800006EC00C0481560A2481530481518A248150CA4481506A90060150CA46C1518A26C15
-306C1560A26C15C06CEC01806C6CEB0300D800E0130E0178133C90381F01F0903807FFC0
-D900FEC7FC272B7DA02E>13 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fn cmbx12 14.4 44
-/Fn 44 122 df<123C127FEAFF80A213C0A3127F123E1200A2EA0180A3EA0300A2120612
-0E5A5A12100A157B8813>44 D<121C127FA2EAFF80A3EA7F00A2121C09097B8813>46
-D<130E131E137EEA07FE12FFA212F81200B3ABB512FEA317277BA622>49
-D<EBFF80000713F04813FC381E03FE393800FF80007C133F00FE14C06C131F15E0140FA2
-127E003C131FC7FC15C0A2EC3F801500147E5C5C495A495AEB078049C7FC131E4913E013
-705B3901C001C0EA0380EA0600000FB5FC5A5A5AB61280A31B277DA622>I<EB7F803803
-FFF04813FC380F81FE381F007FEA3F80EC3F80A3121F1300C7EA7F00A2147E5C495AEB07
-F0EBFFC0A2EB01F8EB007E801580EC1FC0A215E0A2123C127EB4FCA215C0143F48148000
-7CEB7F00383F01FE6CB45A000713F0C613801B277DA622>I<140FA25C5C5C5C5BA2EB03
-BFEB073F130E131C133C1338137013E0EA01C0EA038012071300120E5A5A5A12F0B612F8
-A3C7EA7F00A890381FFFF8A31D277EA622>I<00181303381F801FEBFFFE5C5C5C14C091
-C7FC001CC8FCA7EB7FC0381DFFF8381F80FC381E003F1208C7EA1F8015C0A215E0A21218
-127C12FEA315C05A0078EB3F80A26CEB7F00381F01FE6CB45A000313F0C613801B277DA6
-22>I<EC0780A24A7EA34A7EA24A7EA3EC77F8A2ECF7FC14E3A2903801C1FEA201037F14
-80A249486C7EA24980010E133FA2496D7EA2013FB57EA39039700007F8A201F080491303
-000181491301A2000381D8FFFE013F13FCA32E297EA833>65 D<B612F815FF16C03A03F8
-001FE0ED0FF0ED07F8150316FCA21501A3150316F8A2ED07F0150FED1FC0EDFF8090B5EA
-FE00EDFFC09039F8000FF0ED03F8ED01FC16FE1500A216FFA616FE1501ED03FC1507ED1F
-F8B712E016C0EDFE0028297DA830>I<91387FE003903907FFFC07011FEBFF0F90397FF0
-0F9F9039FF0001FFD801FC7F4848147F4848143F4848141F485A160F485A1607127FA290
-C9FC5AA97E7F1607123FA26C7E160E6C7E6C6C141C6C6C143C6C6C14786CB4EB01F09039
-7FF007C0011FB512800107EBFE009038007FF028297CA831>I<B712E0A33903FC001FED
-07F01501A215001670A3913801C0781638A302031300A2140F90B5FCA3EBFC0F1403A202
-01130EA3161C91C7FCA3163C1638167816F815011503151FB712F0A327297EA82C>69
-D<B712C0A33903FC003FED0FE015031501A21500A316F0913801C070A316001403A2140F
-90B5FCA3EBFC0F1403A21401A491C8FCA9B512FCA324297EA82A>I<91387FE003903907
-FFFC07011FEBFF0F90397FF00F9F9039FF0001FFD801FC7F484880484880484880485A82
-485A82127FA290CAFC5AA892B512F87E7F03001300123FA26C7EA26C7E6C7E6C7E6C7E6C
-B45B90387FF007011FB5129F0107EBFE0F9039007FF0032D297CA835>I<B5D8F00FB5FC
-A3D803FCC7EA3FC0AF90B7FCA301FCC7123FB1B5D8F00FB5FCA330297EA835>I<B512F0
-A33803FC00B3B1B512F0A314297EA819>I<D8FFFCEC7FFF7F7F00036DEB01C080EBBFE0
-139F80EB8FF8EB87FCEB83FEEB81FF01801380147F15C0EC3FE0EC1FF0EC0FF8EC07FC14
-0315FEEC01FF6E1381ED7FC1ED3FE1ED1FF1150F16F9ED07FDED03FF8181167FA2163F16
-1F160F1607D8FFFE14031601A230297EA835>78 D<B612F815FF16C03A03FC003FE0ED07
-F0ED03F816FC150116FEA716FC150316F8ED07F0ED3FE090B61280EDFE0001FCC8FCB0B5
-12F0A327297EA82E>80 D<B612E015FE6F7E3A03FC003FE0ED0FF06F7E6F7E150182A65E
-4B5A1507ED0FE0ED3FC090B500FEC7FCA29039FC00FF80ED3FC06F7E6F7E6F7EA9170EA2
-1503923801FC1CB538F000FEEE7FF8EE0FE02F297EA832>82 D<9038FF80600003EBF0E0
-000F13F8381F80FD383F001F003E1307481303A200FC1301A214007EA26C140013C0EA7F
-FCEBFFE06C13F86C13FE80000714806C14C0C6FC010F13E0EB007FEC1FF0140F140700E0
-1303A46C14E0A26C13076C14C0B4EB0F80EBE03F39E3FFFE0000E15B38C01FF01C297CA8
-25>I<B500F0EBFFFEA3D803FCC7EA0380B3AA0001ED07007F0000150E137F6D143CD91F
-C05B90390FF003F06DB55A01001480DA1FFCC7FC2F297EA834>85
-D<B500F0EB7FFFA3D803FEC7EA01C00001ED0380A26D14076C16006E5B017F140E80013F
-5CA26E133C011F14386E1378010F14708001075CA26D6C485AA2ECFE0301015CECFF076D
-91C7FC1587EC7F8EA215DEEC3FDC15FC6E5AA26E5AA36E5AA26E5AA230297FA833>I<B5
-3CE07FFFE01FFFC0A32803FC0003FCC7EA7000A26D6D7E000160A26D6E13016C604B1380
-02801503017F5F4B13C0D93FC0013F49C7FCA2913AE00E1FE00F011F160E17F09126F01C
-0F131E010F161C033C13F8902707F838075BA2037813FC902703FC70035BA2913AFEE001
-FEF001015E02FF14FF4B7E6D5EA26E486D5AA36EC76CC8FCA2023E80021E141EA242297F
-A845>I<3803FF80000F13F0381F01FC383F80FE147F801580EA1F00C7FCA4EB3FFF3801
-FC3FEA0FE0EA1F80EA3F00127E5AA4145F007E13DF393F839FFC381FFE0F3803FC031E1B
-7E9A21>97 D<EAFFE0A3120FACEBE1FE9038EFFF809038FE07E09038F803F09038F001F8
-9038E000FCA2157EA2157FA8157EA315FCA29038F001F89038F803F090389C0FE090380F
-FF80390E01FC00202A7EA925>I<EB3FF03801FFFC3803F03E380FC07FEA1F80EA3F00A2
-48133E007E90C7FCA212FEA7127EA2127F6CEB03801380001FEB0700380FE00E3803F83C
-3801FFF838003FC0191B7E9A1E>I<EC7FF0A31407ACEB3F873801FFF73807F03F380FC0
-0F381F8007EA3F00A2127EA312FEA8127EA27EA2381F800F380FC01F3907E07FFF3801FF
-E738007F87202A7EA925>I<EB3FC03801FFF03803E07C380F803E001F7F130048EB0F80
-127E15C0A200FE1307A2B6FCA248C8FCA3127EA2127F6CEB01C07E390F8003803907C007
-003803F01E3800FFFCEB3FE01A1B7E9A1F>I<EB07F8EB3FFCEB7E3E3801FC7FEA03F813
-F01207143E1400A7B512C0A33807F000B3A3387FFF80A3182A7EA915>I<9038FF80F000
-03EBE3F8390FC1FE1C391F007C7C48137E003EEB3E10007EEB3F00A6003E133E003F137E
-6C137C380FC1F8380BFFE00018138090C8FC1238A2123C383FFFF814FF6C14C06C14E06C
-14F0121F383C0007007CEB01F8481300A4007CEB01F0A2003FEB07E0390FC01F806CB512
-0038007FF01E287E9A22>I<EAFFE0A3120FAC147E9038E1FF809038E30FC001E413E0EB
-E80701F813F013F0A213E0B039FFFE3FFFA3202A7DA925>I<1207EA0F80EA1FC0EA3FE0
-A3EA1FC0EA0F80EA0700C7FCA7EAFFE0A3120FB3A3EAFFFEA30F2B7EAA12>I<EAFFE0A3
-120FB3B2EAFFFEA30F2A7EA912>108 D<26FFC07FEB1FC0903AC1FFC07FF0903AC307E0
-C1F8D80FC49038F101FC9039C803F20001D801FE7F01D05BA201E05BB03CFFFE3FFF8FFF
-E0A3331B7D9A38>I<38FFC07E9038C1FF809038C30FC0D80FC413E0EBC80701D813F013
-D0A213E0B039FFFE3FFFA3201B7D9A25>I<EB3FE03801FFFC3803F07E390FC01F80391F
-800FC0393F0007E0A2007EEB03F0A300FE14F8A8007E14F0A26CEB07E0A2391F800FC039
-0FC01F803907F07F003801FFFC38003FE01D1B7E9A22>I<38FFE1FE9038EFFF809038FE
-0FE0390FF803F09038F001F801E013FC140015FEA2157FA8157E15FEA215FC140101F013
-F89038F807F09038FC0FE09038EFFF809038E1FC0001E0C7FCA9EAFFFEA320277E9A25>
-I<38FFC1F0EBC7FCEBC63E380FCC7F13D813D0A2EBF03EEBE000B0B5FCA3181B7F9A1B>
-114 D<3803FE30380FFFF0EA3E03EA7800127000F01370A27E00FE1300EAFFE06CB4FC14
-C06C13E06C13F0000713F8C6FCEB07FC130000E0137C143C7E14387E6C137038FF01E038
-E7FFC000C11300161B7E9A1B>I<13E0A41201A31203A21207120F381FFFE0B5FCA2380F
-E000AD1470A73807F0E0000313C03801FF8038007F0014267FA51A>I<39FFE07FF0A300
-0F1307B2140FA2000713173903F067FF3801FFC738007F87201B7D9A25>I<39FFFC03FF
-A3390FF000F0000714E07F0003EB01C0A2EBFC0300011480EBFE070000140013FFEB7F0E
-A2149EEB3F9C14FC6D5AA26D5AA36D5AA26D5AA2201B7F9A23>I<3BFFFC7FFC1FFCA33B
-0FE00FE001C02607F007EB0380A201F8EBF00700031600EC0FF801FC5C0001150EEC1FFC
-2600FE1C5B15FE9039FF387E3C017F1438EC787F6D486C5A16F0ECE01F011F5CA26D486C
-5AA2EC800701075CA22E1B7F9A31>I<39FFFC1FFEA33907F003803803F8079038FC0F00
-3801FE1E00005BEB7F3814F86D5A6D5A130F806D7E130F497EEB3CFEEB38FFEB787F9038
-F03F803901E01FC0D803C013E0EB800F39FFF03FFFA3201B7F9A23>I<39FFFC03FFA339
-0FF000F0000714E07F0003EB01C0A2EBFC0300011480EBFE070000140013FFEB7F0EA214
-9EEB3F9C14FC6D5AA26D5AA36D5AA26D5AA25CA21307003890C7FCEA7C0FEAFE0E131E13
-1C5BEA74F0EA3FE0EA0F8020277F9A23>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fo cmtt10 10.95 76
-/Fo 76 127 df<127012F8B012701200A5127012F8A31270051C779B18>33
-D<EA4010EAE038EAF078EAE038AAEA60300D0E7B9C18>I<EA0306EA078FA6387FFFC0B5
-12E0A26C13C0380F1E00A6387FFFC0B512E0A26C13C0381E3C00A6EA0C18131C7E9B18>
-I<13C01201A3EA03F0EA0FFCEA3FFEEA7DCFEA71C738E1C38013C7A338F1C0001279123F
-6C7EEA0FF8EA01FC13DE13CF13C73861C38012F1A212E1EBC7001271EA79DEEA3FFEEA1F
-F8EA07E0EA01C0A3120011247D9F18>I<EA3803387C0780A2EAEE0F1400A25B131EA213
-3EEA7C3CA2EA387CEA0078A213F85B12015BA212035BA21207EB8380EB87C0120FEB0EE0
-A2121F121EA2123E383C07C0A23818038013247E9F18>I<EA01C0EA07E0487EEA0E7048
-7EA4EB73F813F313E3380FC1C0EBC38013831303381F0700EA3F87EA7B8EEA71CEEAE1FC
-12E0137CEB7870A2EA70FE387FFFE0EA3FC7380F03C0151C7F9B18>I<1238127CA2127E
-123E120EA3121CA2123812F812F012C0070E789B18>I<137013F0EA01E0EA03C0EA0780
-EA0F00121E121C5AA25AA45AA81270A47EA27E121E7EEA0780EA03C0EA01F0120013700C
-24799F18>I<126012F012787E7E7EEA07801203EA01C0A2EA00E0A41370A813E0A4EA01
-C0A2EA03801207EA0F00121E5A5A5A12600C247C9F18>I<EA01C0A4EA41C138F1C780EA
-FDDF387FFF00EA1FFCEA07F0A2EA1FFCEA7FFF38FDDF80EAF1C73841C100EA01C0A41114
-7D9718>I<136013F0A7387FFFC0B512E0A26C13C03800F000A7136013147E9718>I<121C
-123E127E127F123F121F1207120E121E127C12F81260080C788518>I<387FFFC0B512E0
-A26C13C013047E8F18>I<1230127812FCA2127812300606778518>I<1303EB0780A2130F
-14005B131EA2133E133C137C1378A213F85B12015B12035BA212075B120F90C7FCA25A12
-1E123E123CA2127C127812F85AA2126011247D9F18>I<EA01F0EA07FC487EEA1F1FEA1C
-0738380380007813C0EA7001A238E000E0A9EAF001007013C0A2EA780300381380381C07
-00EA1F1FEA0FFE6C5AEA01F0131C7E9B18>I<EA01801203A21207120F123F12FF12FB12
-431203B0EA7FFCEAFFFEEA7FFC0F1C7B9B18>I<EA03F0EA0FFEEA3FFF387C0F80387003
-C0EAE00138F000E0A21260C7FCA2EB01C0A21303EB0780EB0F00131E5B5B5B485AEA07C0
-485A381E00E05AEA7FFFB5FC7E131C7E9B18>I<131F5B1377A213E7120113C7EA038712
-071307120E121E123C1238127812F0B512F8A338000700A6EB7FF0A3151C7F9B18>52
-D<137E48B4FC00071380380F83C0EA1E03121C3838018090C7FC5AA2EAE1F8EAE7FEB5FC
-38FE078038F803C0EAF001EB00E05AA21270A3383801C0EA3C03381E0780380FFF006C5A
-EA01F8131C7E9B18>54 D<1230127812FCA2127812301200A81230127812FCA212781230
-0614779318>58 D<1218123C127EA2123C12181200A81218123C127EA2123E121E120E12
-1C123C127812F01260071A789318>I<14C0EB03E01307EB1FC0EB3F80EBFE00485AEA07
-F0485AEA3F8048C7FC12FCA2127F6C7EEA0FE06C7EEA01FC6C7EEB3F80EB1FC0EB07E013
-03EB00C013187E9918>I<387FFFC0B512E0A26C13C0C8FCA4387FFFC0B512E0A26C13C0
-130C7E9318>I<126012F87E127F6C7EEA0FE06C7EEA01FC6C7EEB3F80EB1FC0EB07E0A2
-EB1FC0EB3F80EBFE00485AEA07F0485AEA3F8048C7FC12FC5A126013187E9918>I<EA0F
-F0EA3FFC48B4FCEA700F38F00380A2EA600738000F00133E5BEA01F05B485AA55BC8FCA5
-EA0380487EA36C5A111C7D9B18>I<137013F8A213D8A2EA01DCA3138CEA038EA4EA0707
-A5380FFF80A3EA0E03381C01C0A3387F07F000FF13F8007F13F0151C7F9B18>65
-D<EA7FF8EAFFFE6C7E381C0F80EB03C0A2EB01E01300A214F01470A814F014E0A2130114
-C01303EB0F80387FFF00485AEA7FF8141C7F9B18>68 D<B512F0A3381C0070A41400A213
-0EA3EA1FFEA3EA1C0EA390C7FCA21438A5B512F8A3151C7F9B18>I<B512F0A3381C0070
-A41400A2130EA3EA1FFEA3EA1C0EA390C7FCA7EAFFC0A3141C7E9B18>I<387F07F038FF
-8FF8387F07F0381C01C0A9EA1FFFA3EA1C01AA387F07F038FF8FF8387F07F0151C7F9B18
->72 D<EA7FFFB512806C1300EA01C0B3A4EA7FFFB512806C1300111C7D9B18>I<EAFFC0
-A3001CC7FCB114E0A5B5FCA3131C7E9B18>76 D<387E07F038FF0FF8387F07F0381D81C0
-A313C1121CA213E1A313611371A213311339A31319A2131D130DA3EA7F07EAFF87EA7F03
-151C7F9B18>78 D<EA0FFE383FFF804813C0EA7803EA700100F013E0EAE000B0EAF00100
-7013C0EA7C07EA7FFF6C1380380FFE00131C7E9B18>I<EAFFFEEBFF8014C0EA1C03EB01
-E013001470A514E01301EB03C0EA1FFF1480EBFE00001CC7FCA8B47EA3141C7F9B18>I<
-EA7FF8EAFFFE6C7E381C0F80130314C01301A313031480130F381FFF005BA2EA1C0F7FEB
-0380A5149CA3387F01F8EAFF81387F00F0161C7F9B18>82 D<3803F1C0EA1FFF5AEA7C0F
-EA7003EAE001A390C7FC12701278123FEA1FF0EA07FEC67EEB0F80EB03C01301EB00E0A2
-126012E0130100F013C038F80780B5FCEBFE00EAE7F8131C7E9B18>I<387FFFF8B5FCA2
-38E07038A400001300B2EA07FFA3151C7F9B18>I<38FF83FEA3381C0070B36C13E0EA0F
-01380783C03803FF806C1300EA007C171C809B18>I<38FE03F8EAFF07EAFE03381C01C0
-EA1E03000E1380EA0F0700071300A2EA038EA2EA01DCA3EA00F8A21370A9EA01FC487E6C
-5A151C7F9B18>89 D<EAFFF8A3EAE000B3ACEAFFF8A30D24779F18>91
-D<126012F0A27E1278127C123CA2123E121E121F7EA27F12077F1203A27F12017F12007F
-1378A2137C133C133E131EA2131F7F14801307A2EB030011247D9F18>I<EAFFF8A3EA00
-38B3ACEAFFF8A30D247F9F18>I<EA0180EA07C0EA1FF0EA7EFCEAF83EEAE00E0F067C9B
-18>I<387FFFC0B512E0A26C13C013047E7F18>I<1206121E123E12381270A212E0A312F8
-12FC127CA21238070E789E18>I<EA0FF0EA1FFC487EEA3C0FEA180738000380A213FF12
-07121FEA7F03127812E0A3EAF007EA780F383FFFF8EA1FFDEA07F015147E9318>I<127E
-12FE127E120EA5133EEBFF80000F13C0EBC1E01380EB0070120E1438A6000F1370A2EB80
-E013C1EBFFC0000E138038063E00151C809B18>I<EA01FEEA07FF001F1380EA3E073838
-030048C7FCA25AA61270EB01C01238EA3E03381FFF8000071300EA01FC12147D9318>I<
-EB1F80133F131F1303A5EA03E3EA0FFBEA1FFFEA3C1FEA380FEA7007130312E0A6EA7007
-A2EA380FEA3C1F381FFFF0380FFBF83803E3F0151C7E9B18>I<EA01F0EA07FCEA1FFEEA
-3E0F38380780EA7003A238E001C0A2B5FCA300E0C7FC1270EB01C01238EA3E07381FFF80
-00071300EA01F812147D9318>I<EB1F80EB7FC0EBFFE013E13801C0C01400A3387FFFC0
-B5FCA23801C000AEEA7FFFA3131C7F9B18>I<3801E1F03807FFF85A381E1E30381C0E00
-487EA5EA1C0EEA1E1EEA1FFC5BEA39E00038C7FC7EEA1FFEEBFFC04813E0387801F03870
-0070481338A4007813F0EA7E03381FFFC06C13803801FC00151F7F9318>I<127E12FE12
-7E120EA5133EEBFF80000F13C013C1EB80E01300120EAB387FC7FC38FFE7FE387FC7FC17
-1C809B18>I<EA0380EA07C0A3EA0380C7FCA4EA7FC012FF127F1201AEB5FCA3101D7C9C
-18>I<127E12FE127E120EA5EB3FF0A3EB0780EB0F00131E5B5B5BEA0FF87F139C130EEA
-0E0F7FEB038014C0387FC7F812FF127F151C7F9B18>107 D<EAFFC0A31201B3A4B51280
-A3111C7D9B18>I<38F9C1C038FFF7F013FF383E3E38EA3C3CA2EA3838AB38FE3E3EEB7E
-7EEB3E3E1714809318>I<EA7E3E38FEFF80007F13C0EA0FC1EB80E01300120EAB387FC7
-FC38FFE7FE387FC7FC1714809318>I<EA01F0EA0FFE487E383E0F80EA3803387001C0A2
-38E000E0A5EAF001007013C0EA7803383C0780EA3E0F381FFF006C5AEA01F013147E9318
->I<EA7E3E38FEFF80007F13C0380FC1E01380EB0070120E1438A6000F1370A2EB80E013
-C1EBFFC0000E1380EB3E0090C7FCA7EA7FC0487E6C5A151E809318>I<3801F380EA07FB
-EA1FFFEA3E1FEA380FEA7007A2EAE003A6EA7007A2EA380FEA3C1FEA1FFFEA0FFBEA03E3
-EA0003A7EB1FF0EB3FF8EB1FF0151E7E9318>I<38FF0FC0EB3FE0EB7FF0EA07F0EBE060
-EBC0005BA290C7FCA9EAFFFC7F5B14147E9318>I<EA07F7EA3FFF5AEA780FEAE007A300
-7CC7FCEA7FE0EA1FFCEA03FEEA001F38600780EAE003A212F038F80F00B5FC13FCEAE7F0
-11147D9318>I<487E1203A4387FFFC0B5FCA238038000A9144014E0A33801C1C013FF6C
-1380EB3E0013197F9818>I<387E07E0EAFE0FEA7E07EA0E00AC1301EA0F033807FFFC6C
-13FE3801FCFC1714809318>I<387F8FF000FF13F8007F13F0381C01C0380E0380A33807
-0700A3138FEA038EA3EA01DCA3EA00F8A2137015147F9318>I<38FF07F8138F13073838
-00E0A4381C01C0137113F9A213D9EA1DDD000D1380A3138DEA0F8FA23807070015147F93
-18>I<387F8FF0139F138F380F0700EA078EEA039EEA01DC13F81200137013F07FEA01DC
-EA039E138EEA0707000E1380387F8FF000FF13F8007F13F015147F9318>I<387F8FF000
-FF13F8007F13F0380E01C0EB0380A21207EB0700A2EA0387A2138EEA01CEA213CC120013
-DC1378A31370A313F05B1279EA7BC0EA7F806CC7FC121E151E7F9318>I<383FFFF05AA2
-387001E0EB03C0EB078038000F00131E5B13F8485AEA03C0485A380F0070121E5A5AB512
-F0A314147F9318>I<EB07E0131F137FEB780013E0AB1201EA7FC0485AA26C7EEA01E012
-00AB1378EB7FE0131F130713247E9F18>I<126012F0B3B012600424769F18>I<127CB4FC
-13C01203C67EAB7FEB7FC0EB3FE0A2EB7FC0EBF0005BABEA03C012FF90C7FC127C13247E
-9F18>I<EA060CEA1F1EEA3FBEEAFBF8EAF1F0EA60C00F067C9B18>I
-E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fp cmr10 10.95 74
-/Fp 74 123 df<90381F83E09038F06E303901C07878380380F8903800F03048EB7000A7
-B612803907007000B2383FE3FF1D20809F1B>11 D<133FEBE0C0EA01C0380381E0EA0701
-A290C7FCA6B512E0EA0700B2383FC3FC1620809F19>I<EB3FE013E0EA01C1EA0381EA07
-00A8B5FCEA0700B2383FE7FC1620809F19>I<90381F81F89038F04F043901C07C063903
-80F80FEB00F05A0270C7FCA6B7FC3907007007B23A3FE3FE3FE02320809F26>I<EA7038
-EAF87CEAFC7EA2EA743AEA0402A3EA0804A2EA1008A2EA2010EA40200F0E7F9F17>34
-D<127012F812FCA212741204A31208A21210A212201240060E7C9F0D>39
-D<13401380EA01005A12061204120C5AA212381230A212701260A412E0AC1260A4127012
-30A212381218A27E120412067E7EEA008013400A2E7BA112>I<7E12407E12307E120812
-0C7EA212077EA213801201A413C0AC1380A412031300A25A1206A25A120812185A12205A
-5A0A2E7EA112>I<127012F012F8A212781208A31210A31220A21240050E7C840D>44
-D<EAFFF0A20C02808A0F>I<127012F8A3127005057C840D>I<EA03F0EA0E1C487EEA1806
-EA380738700380A400F013C0AD00701380A3EA780700381300EA1806EA1C0E6C5AEA03F0
-121F7E9D17>48 D<13801203120F12F31203B3A6EA07C0EA7FFE0F1E7C9D17>I<EA03F0
-EA0C1CEA100E487E00401380128000F013C0EAF803A3EA200712001480A2EB0F00130E5B
-5B5B13605B485A48C7FC000613405A5A00101380EA3FFF5AB5FC121E7E9D17>I<EA03F0
-EA0C1CEA100EEA200F007813801307A2EA380F12001400A2131E131C1370EA07F0EA003C
-130E130FEB0780A214C0122012F8A300F013801240EB0F00EA200EEA183CEA07F0121F7E
-9D17>I<1306A2130EA2131E132EA2134E138EA2EA010E1202A212041208A212101220A2
-124012C0B512F038000E00A7EBFFE0141E7F9D17>I<EA1803EA1FFE5B5B13E00010C7FC
-A6EA11F0EA161CEA180EEA10071480EA0003A214C0A3127012F0A200E013801240EB0700
-EA20066C5AEA0838EA07E0121F7E9D17>I<137CEA0182EA0701380E0380EA0C07121838
-38030090C7FC12781270A2EAF1F0EAF21CEAF406EAF807EB0380A200F013C0A51270A214
-801238EB07001218EA0C0E6C5AEA01F0121F7E9D17>I<1240387FFFE014C0A238400080
-38800100A21302485AA25B5BA25BA21360A213E05B1201A41203A76C5A131F7E9D17>I<
-EA03F0EA0C0CEA1006EA3003382001801260A3127038780300123EEA3F06EA1FC8EA0FF0
-EA03F8487EEA0C7EEA103F38300F80EA6007EB01C012C01300A31480EA600100201300EA
-1002EA0C0CEA03F0121F7E9D17>I<EA03F0EA0E18487E487E13071270EB038012F0A214
-C0A5EA7007A21238EA180BEA0E13EA03E338000380A3EB07001230EA7806130EEA700CEA
-2018EA1070EA0FC0121F7E9D17>I<127012F8A312701200AA127012F8A3127005147C93
-0D>I<127012F8A312701200AA127012F012F8A212781208A31210A31220A21240051D7C
-930D>I<5B497EA3497EA3EB09E0A3EB10F0A3EB2078A3497EA2EBC03EEB801EA248B5FC
-EB000FA20002EB0780A348EB03C0A2120C001E14E039FF801FFE1F207F9F22>65
-D<B512E0380F0078141EA2801580A515005C141E147CEBFFF0EB007C141FEC0F80EC07C0
-140315E0A515C014071580EC0F00143EB512F01B1F7E9E20>I<90380FE0109038381C30
-9038E002703803C00139078000F048C71270121E15305A1510127C127800F81400A91278
-007C1410123CA26C1420A27E6C6C13406C6C13803900E00300EB380CEB0FF01C217E9F21
->I<B512F83807801EEC0780EC03C0EC01E0EC00F015701578A2153CA3153EA8153CA215
-7C1578A215F0EC01E0EC03C0EC0780EC1E00B512F81F1F7F9E23>I<B61280380F000F14
-031401140015C01540A314401500A214C0130113FF130113001440A3EC0020A31540A315
-C01401EC0380140FB6FC1B1F7E9E1F>I<B61280380780071401A2140015C01540A4EC20
-00A3146014E013FF138014601420A391C7FCA87FEAFFFE1A1F7F9E1E>I<90380FE02090
-387818609038E004E03803800238070001481300001E1460A25A1520127C127800F81400
-A7EC7FFCEC03E000781301127C123CA27EA27E7E380380023900E0046090387818209038
-0FE0001E217D9F24>I<39FFF07FF8390F000780AD90B5FCEB0007AF39FFF07FF81D1F7E
-9E22>I<EAFFF0EA0F00B3ABEAFFF00C1F7E9E10>I<EAFFF8EA0F8090C7FCB21402A41406
-1404A2140C141C147CB512FC171F7E9E1C>76 D<B46CEB07FE000715C0A2D805C0130BA2
-D804E01313A301701323A26D1343A36D1383A290380E0103A3EB0702A3EB0384A2EB01C8
-A3EB00F0A21460121FD8FFE0EB7FFE271F7F9E2A>I<B4EB0FF8390F8003E0EC0080EA0B
-C0EA09E0A2EA08F01378A27F7FA27FEB0780A2EB03C0EB01E0A2EB00F01478A2143C141E
-A2140F1407A214031401123E38FF80001D1F7E9E22>I<EB1FE0EB70383801C00E48487E
-39070003804814C0001EEB01E048EB00F0A2007C14F8A20078147800F8147CA900781478
-007C14F8A2003C14F0003E1301001E14E06CEB03C06C148039038007003801E01E380070
-38EB1FE01E217E9F23>I<B512E0380F007C141E80EC0780A215C0A41580A2EC0F00141E
-147CEBFFE090C8FCAEEAFFF01A1F7E9E1F>I<EB1FE0EB70383801C00E48487E39070003
-804814C0001EEB01E0003E14F0003C1300007C14F8A20078147800F8147CA90078147800
-7C14F8A2003C14F0383E0781391E0841E0390F1023C00007148039039017003801D01E39
-00783804EB1FF8EB001CEC0C0CEC0E1CEC0FF8A2140715F0EC01E01E297E9F23>I<B512
-E0380F80780007131E80EC0780A215C0A41580A2EC0F00141E1478EBFFE0EB8060143814
-3C141C141EA3141FA315011581140F390FC0078239FFFC03C4C812F820207F9E22>I<38
-03F040380C0CC0EA1803EA3001EA6000A212E01440A36C13007E127CEA7F80EA3FF86CB4
-FC00071380C613C0EB1FE013031301EB00F014707EA46C136014E06C13C038F8018038C6
-0300EA81FC14217E9F19>I<007FB512E038780F010060EB006000401420A200C0143000
-801410A400001400B3497E3803FFFC1C1F7E9E21>I<39FFF00FF8390F0003E0EC0080B3
-A46CEB01001380120314026C6C5A6C6C5AEB3830EB0FC01D207E9E22>I<39FFF003FE39
-1F8000F86CC7126015206C6C1340A36C6C1380A2EBE00100011400A23800F002A213F8EB
-7804A26D5AA36D5AA2131F6D5AA2EB07C0A36D5AA36DC7FC1F207F9E22>I<3BFFF07FF8
-1FF03B1F000FC007C06C903907800180170015C001805C00071502EC09E013C000035DEC
-19F01410D801E05CA2EC2078D800F05CA2EC403C01785CA2EC801E017C1460013C144090
-383D000F133F6D5CA2011E1307010E91C7FCA2010C7F010413022C207F9E2F>I<12FFA2
-12C0B3B3A512FFA2082D7CA10D>91 D<EA0804EA1008EA2010A2EA4020A2EA8040A3EAB8
-5CEAFC7EA2EA7C3EEA381C0F0E7A9F17>I<12FFA21203B3B3A512FFA2082D80A10D>I<12
-0812101220A21240A21280A312B812FCA2127C1238060E7D9F0D>96
-D<EA1FE0EA3030EA7818131CEA300E1200A313FEEA0F8EEA1E0E1238127800F01310A313
-1E127838386720380F83C014147E9317>I<121C12FC121CAA137CEA1D87381E0180EB00
-C0001C13E01470A21478A6147014F014E0001E13C0381A018038198700EA107C15207E9F
-19>I<EA01FCEA0706EA1C0F123813060078C7FC127012F0A61270127800381380A2381C
-0100EA0706EA01F811147F9314>I<EB01C0130F1301AAEA01F1EA070DEA0C03EA180112
-381278127012F0A61270A21238EA1803120CEA070D3801F1F815207F9F19>I<EA03F0EA
-0E1C487E487EA238700380A212F0B5FC00F0C7FCA41270A26C1380A2381C0100EA0706EA
-01F811147F9314>I<137CEA01C6EA030F1207EA0E061300A7EAFFF0EA0E00B2EA7FE010
-20809F0E>I<14E03803E330EA0E3CEA1C1C38380E00EA780FA5EA380E6C5AEA1E38EA33
-E00020C7FCA21230A2EA3FFE381FFF8014C0383001E038600070481330A4006013606C13
-C0381C03803803FC00141F7F9417>I<121C12FC121CAA137C1386EA1D03001E1380A212
-1CAE38FF8FF014207E9F19>I<1238127CA31238C7FCA6121C12FC121CB1EAFF80091F7F
-9E0C>I<13E0EA01F0A3EA00E01300A61370EA07F012001370B3A31260EAF06013C0EA61
-80EA3F000C28829E0E>I<121C12FC121CAAEB1FE0EB0780EB060013045B5B5B136013E0
-EA1DF0EA1E70EA1C38133C131C7F130F7F148014C038FF9FF014207E9F18>I<121C12FC
-121CB3ABEAFF8009207F9F0C>I<391C3E03E039FCC30C30391D019018001EEBE01CA200
-1C13C0AE3AFF8FF8FF8021147E9326>I<EA1C7CEAFC86EA1D03001E1380A2121CAE38FF
-8FF014147E9319>I<EA01F8EA070E381C0380383801C0A2387000E0A200F013F0A60070
-13E0A2383801C0A2381C038038070E00EA01F814147F9317>I<EA1C7CEAFD87381E0180
-14C0381C00E014F014701478A6147014F014E0381E01C0EB0380381D8700EA1C7C90C7FC
-A8B47E151D7E9319>I<3801F04038070CC0EA0E02EA1C03EA38011278127012F0A61270
-12781238EA1C03EA0C05EA0709EA01F1EA0001A8EB0FF8151D7F9318>I<EA1CF0EAFD18
-EA1E3CA21318EA1C00AEEAFFC00E147E9312>I<EA0FC8EA3038EA6018EAC008A3EAE000
-127CEA3FE0EA1FF0EA07F8EA003CEA800E130612C0A21304EAE00CEAD818EA87E00F147F
-9312>I<1202A31206A2120EA2123EEAFFF8EA0E00AB1304A5EA07081203EA01F00E1C7F
-9B12>I<381C0380EAFC1FEA1C03AE1307120CEA061B3803E3F014147E9319>I<38FF83F8
-383E00E0001C13C06C1380A338070100A21383EA0382A2EA01C4A213E4EA00E8A21370A3
-132015147F9318>I<39FF9FE1FC393C078070391C030060EC8020000E1440A214C0D807
-04138014E0A239038861001471A23801D032143A143E3800E01CA2EB6018EB40081E147F
-9321>I<38FF87F8381E03C0380E0180EB0300EA0702EA0384EA01C813D8EA00F0137013
-7813F8139CEA010E1202EA060738040380000C13C0003C13E038FE07FC16147F9318>I<
-38FF83F8383E00E0001C13C06C1380A338070100A21383EA0382A2EA01C4A213E4EA00E8
-A21370A31320A25BA3EAF080A200F1C7FC1262123C151D7F9318>I<EA7FFFEA700E1260
-EA401C133813781370EA00E0120113C0EA038012071301120E121EEA1C03EA3802EA7006
-130EEAFFFE10147F9314>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fq cmbx12 20.736 13
-/Fq 13 122 df<DB1FFC14C00203B5EAC001021FECF003027FECFC07903B01FFFC00FE0F
-010701C0EB1F9F4948C7EA07FFD93FF880494814004948157F485B4A153F4890C9121F48
-5A000F170F5B001F1707A2485A1803A2127FA24993C8FCA212FFAA041FB61280127FA27F
-DC0001EBC000123FA36C7EA26C7EA26C7E7E6C7F806C7F6D6C5CEB3FFCD90FFF5C6D01C0
-EB1FBF010101FCEBFF1F6D6CB5EAFE0F021FECF8030203ECE0009126001FFEC9FC413D7B
-BB4C>71 D<B6D8F803B612E0A426007FF0C70001EBC000B3A491B8FCA402F0C71201B3A7
-B6D8F803B612E0A4433B7CBA4C>I<B612FEA426007FF0C9FCB3ADEF03C0A517071880A3
-170FA3171FA2173F177F17FF5E04071300163FB9FCA4323B7DBA3A>76
-D<B500F00207B512E0808080D8007F92390007E0006E6F5A81017B7F81137901787F6E7E
-6E7E81141F6E7E6E7F6E7F82806E7F6F7E6F7E826F7E816F13806F13C017E06F13F081EE
-7FF8EE3FFC17FEEE1FFF827013837013C318E37013F382EF7FFBEF3FFFA283838383A283
-83187F183FA201FC161FB500FC150F18071803A2433B7CBA4C>78
-D<B600F80107B512E0A426007FF0C83807E000725AB3B3A3013F4C5AA280011F4CC7FCA2
-6D6C151E0107163E6E5D6D6C5D6D6D13019026007FE0EB0FE0DA3FFCEB7FC0020FB65A02
-034AC8FCDA007F13F003071380433C7DBA4A>85 D<EB3FFE48B512E0000714F8390FE007
-FC9038F001FE486C6C7E6F7E82153F6C48806C5A6C5AC8FCA491B5FC131F90387FF83F38
-03FF803807FC00EA0FF0485A123F485AA2485AA4157F6C7E15DF3A3FE0039FF03B1FF80F
-0FFFE03807FFFE0001497E39003FE0002B267DA52F>97 D<13FE12FFA412071203B04AB4
-FC021F13F0027F13FC9138FC03FE9039FFF000FF02C0EB3F8091C7EA1FC04915E0EE0FF0
-17F8A2EE07FCA317FEA917FCA3160F17F817F0161F6D15E06EEB3FC06EEB7F80D9F9E0EB
-FF009039F0FC07FE91387FFFF8D9E01F13E09026C003FEC7FC2F3C7DBB36>I<EA01E0EA
-07F8487EA2487EA46C5AA26C5AEA01E0C8FCAB13FE127FA412071203B3AAB512F0A4143D
-7DBC1A>105 D<903801FFC0010F13F8017F13FFD9FF807F3A03FE003FE0D807F8EB0FF0
-48486D7EA248486D7E003F81A248486D7EA400FF1680A9007F1600A36C6C495AA2001F5D
-6D1307000F5D6C6C495AD803FEEB3FE03A00FF80FF806DB5C7FC010F13F8010113C02926
-7DA530>111 D<3901FC03F000FFEB0FFC4AB4FC91383C3F80EC707F00079038E0FFC000
-035BEBFD80A201FFEB7F809138003F00151E92C7FC5BB3A3B512FCA422267DA528>114
-D<90383FF0383903FFFE7848EBFFF8381FC00F383F0003003E13005A157812FCA27E6C14
-0013C013FC387FFFF06C13FEECFF806C14C06C14E0000314F0C614F8011F13FCEB007FEC
-07FE0070130100F01300157E7EA27E157C6C14FC6C14F890388001F09038F00FE000F9B5
-12C0D8F07F130038C01FF81F267DA526>I<130FA55BA45BA25BA25B5A5A5A001FEBFFF0
-B6FCA3000190C7FCB3153CA86C14781480017F13F090383FC1E090381FFFC06D13809038
-01FE001E377EB626>I<B500F0EBFFFCA4D803FEC7EA1F806D15006C151E806C5DA26E13
-7C017F14786E13F8013F5CECF001011F5CECF803010F5CA2ECFC0701075CECFE0F010391
-C7FC6E5A6D131E15BE6D13BC15FC6E5AA36E5AA26E5AA26E5AA26E5AA2140F92C8FC5C14
-1E0008133E007F133C147C38FF807814F8EB81F0EB83E06C485A387C1F80D83FFFC9FCEA
-1FFCEA07F02E377EA533>121 D E
-%EndDVIPSBitmapFont
-end
-%%EndProlog
-%%BeginSetup
-%%Feature: *Resolution 300dpi
-TeXDict begin
-%%BeginPaperSize: Letter
-letter
-%%EndPaperSize
-
-%%EndSetup
-%%Page: 1 1
-1 0 bop 75 659 a Fq(GNU)33 b(History)f(Library)p 75 709
-1800 17 v 960 757 a Fp(Edition)16 b(4.3,)e(for)h Fo(History)f(Library)g
-Fp(V)l(ersion)i(4.3.)1643 811 y(Marc)o(h)e(2002)75 2467
-y Fn(Brian)23 b(F)-6 b(o)n(x,)23 b(F)-6 b(ree)23 b(Soft)n(w)n(are)f(F)
--6 b(oundation)75 2534 y(Chet)22 b(Ramey)-6 b(,)23 b(Case)e(W)-6
-b(estern)23 b(Reserv)n(e)f(Univ)n(ersit)n(y)p 75 2570
-1800 9 v eop
-%%Page: 2 2
-2 1 bop 75 217 a Fp(This)21 b(do)q(cumen)o(t)g(describ)q(es)h(the)f
-(GNU)f(History)g(library)l(,)j(a)d(programming)g(to)q(ol)g(that)g(pro)o
-(vides)h(a)75 271 y(consisten)o(t)15 b(user)h(in)o(terface)f(for)g
-(recalling)i(lines)f(of)f(previously)i(t)o(yp)q(ed)e(input.)75
-339 y(Published)i(b)o(y)f(the)f(F)l(ree)g(Soft)o(w)o(are)f(F)l
-(oundation)75 394 y(59)h(T)l(emple)h(Place,)f(Suite)i(330,)75
-448 y(Boston,)d(MA)h(02111)f(USA)75 516 y(P)o(ermission)j(is)f(gran)o
-(ted)g(to)f(mak)o(e)h(and)g(distribute)i(v)o(erbatim)d(copies)i(of)f
-(this)h(man)o(ual)f(pro)o(vided)h(the)75 570 y(cop)o(yrigh)o(t)e
-(notice)h(and)f(this)h(p)q(ermission)g(notice)g(are)f(preserv)o(ed)h
-(on)f(all)h(copies.)75 638 y(P)o(ermission)c(is)h(gran)o(ted)e(to)g
-(cop)o(y)h(and)g(distribute)h(mo)q(di\014ed)g(v)o(ersions)f(of)f(this)h
-(man)o(ual)g(under)h(the)f(con-)75 692 y(ditions)k(for)e(v)o(erbatim)h
-(cop)o(ying,)g(pro)o(vided)h(that)e(the)h(en)o(tire)h(resulting)g
-(deriv)o(ed)g(w)o(ork)e(is)h(distributed)75 747 y(under)h(the)f(terms)g
-(of)g(a)f(p)q(ermission)j(notice)f(iden)o(tical)h(to)e(this)g(one.)75
-814 y(P)o(ermission)i(is)g(gran)o(ted)f(to)g(cop)o(y)h(and)f
-(distribute)i(translations)f(of)f(this)h(man)o(ual)g(in)o(to)f(another)
-g(lan-)75 869 y(guage,)e(under)h(the)f(ab)q(o)o(v)o(e)g(conditions)i
-(for)d(mo)q(di\014ed)j(v)o(ersions,)e(except)h(that)f(this)h(p)q
-(ermission)g(notice)75 924 y(ma)o(y)f(b)q(e)i(stated)f(in)h(a)f
-(translation)g(appro)o(v)o(ed)g(b)o(y)g(the)g(F)l(ree)h(Soft)o(w)o(are)
-d(F)l(oundation.)75 2661 y(Cop)o(yrigh)o(t)301 2660 y(c)289
-2661 y Fm(\015)h Fp(1988-2002)f(F)l(ree)i(Soft)o(w)o(are)f(F)l
-(oundation,)h(Inc.)p eop
-%%Page: 1 3
-1 2 bop 75 -58 a Fp(Chapter)15 b(1:)k(Using)d(History)f(In)o(teractiv)o
-(ely)1007 b(1)75 149 y Fl(1)41 b(Using)26 b(History)h(In)n(teractiv)n
-(ely)137 289 y Fp(This)17 b(c)o(hapter)g(describ)q(es)h(ho)o(w)e(to)g
-(use)h(the)g Fk(gnu)f Fp(History)g(Library)h(in)o(teractiv)o(ely)l(,)h
-(from)e(a)g(user's)75 344 y(standp)q(oin)o(t.)38 b(It)21
-b(should)h(b)q(e)g(considered)g(a)f(user's)g(guide.)38
-b(F)l(or)21 b(information)g(on)g(using)h(the)f Fk(gnu)75
-398 y Fp(History)c(Library)h(in)h(y)o(our)e(o)o(wn)g(programs,)f(see)i
-(Chapter)f(2)h([Programming)e(with)i(GNU)f(History],)75
-453 y(page)e(5.)75 600 y Fn(1.1)33 b(History)22 b(Expansion)137
-704 y Fp(The)c(History)g(library)h(pro)o(vides)f(a)f(history)h
-(expansion)h(feature)e(that)h(is)g(similar)h(to)e(the)h(history)75
-759 y(expansion)12 b(pro)o(vided)g(b)o(y)f Fo(csh)p Fp(.)18
-b(This)11 b(section)h(describ)q(es)g(the)g(syn)o(tax)e(used)h(to)g
-(manipulate)h(the)f(history)75 814 y(information.)137
-888 y(History)k(expansions)h(in)o(tro)q(duce)h(w)o(ords)d(from)g(the)i
-(history)f(list)h(in)o(to)f(the)h(input)g(stream,)e(making)75
-943 y(it)h(easy)g(to)g(rep)q(eat)g(commands,)g(insert)h(the)f(argumen)o
-(ts)f(to)h(a)g(previous)h(command)f(in)o(to)g(the)g(curren)o(t)75
-998 y(input)h(line,)h(or)d(\014x)i(errors)e(in)i(previous)g(commands)f
-(quic)o(kly)l(.)137 1072 y(History)j(expansion)i(tak)o(es)d(place)i(in)
-h(t)o(w)o(o)d(parts.)28 b(The)19 b(\014rst)f(is)g(to)g(determine)i
-(whic)o(h)f(line)h(from)75 1127 y(the)h(history)f(list)i(should)g(b)q
-(e)f(used)g(during)h(substitution.)37 b(The)21 b(second)g(is)g(to)f
-(select)i(p)q(ortions)e(of)75 1182 y(that)15 b(line)i(for)d(inclusion)k
-(in)o(to)d(the)h(curren)o(t)f(one.)20 b(The)c(line)g(selected)h(from)e
-(the)g(history)g(is)h(called)h(the)75 1237 y Fj(ev)o(en)o(t)p
-Fp(,)c(and)h(the)g(p)q(ortions)g(of)f(that)g(line)i(that)e(are)g(acted)
-h(up)q(on)g(are)f(called)j Fj(w)o(ords)p Fp(.)i(V)l(arious)c
-Fj(mo)q(di\014ers)75 1292 y Fp(are)i(a)o(v)m(ailable)i(to)e(manipulate)
-i(the)e(selected)i(w)o(ords.)23 b(The)17 b(line)h(is)f(brok)o(en)f(in)o
-(to)h(w)o(ords)e(in)j(the)e(same)75 1346 y(fashion)c(that)e(Bash)i(do)q
-(es,)g(so)f(that)g(sev)o(eral)g(w)o(ords)g(surrounded)h(b)o(y)f(quotes)
-h(are)f(considered)h(one)g(w)o(ord.)75 1401 y(History)18
-b(expansions)h(are)g(in)o(tro)q(duced)g(b)o(y)f(the)h(app)q(earance)g
-(of)f(the)g(history)h(expansion)g(c)o(haracter,)75 1456
-y(whic)o(h)d(is)g(`)p Fo(!)p Fp(')e(b)o(y)h(default.)75
-1583 y Fi(1.1.1)30 b(Ev)n(en)n(t)21 b(Designators)137
-1687 y Fp(An)16 b(ev)o(en)o(t)f(designator)g(is)g(a)g(reference)h(to)f
-(a)g(command)g(line)i(en)o(try)d(in)i(the)g(history)f(list.)75
-1777 y Fo(!)216 b Fp(Start)16 b(a)g(history)h(substitution,)g(except)h
-(when)f(follo)o(w)o(ed)g(b)o(y)f(a)h(space,)g(tab,)f(the)h(end)g(of)315
-1832 y(the)e(line,)i(`)p Fo(=)p Fp(')d(or)h(`)p Fo(\()p
-Fp('.)75 1919 y Fo(!)p Fj(n)191 b Fp(Refer)15 b(to)f(command)h(line)i
-Fj(n)p Fp(.)75 2006 y Fo(!-)p Fj(n)167 b Fp(Refer)15
-b(to)f(the)i(command)f Fj(n)g Fp(lines)i(bac)o(k.)75
-2094 y Fo(!!)192 b Fp(Refer)15 b(to)f(the)i(previous)f(command.)20
-b(This)c(is)g(a)f(synon)o(ym)g(for)f(`)p Fo(!-1)p Fp('.)75
-2181 y Fo(!)p Fj(string)102 b Fp(Refer)15 b(to)f(the)i(most)e(recen)o
-(t)h(command)g(starting)g(with)g Fj(string)p Fp(.)75
-2268 y Fo(!?)p Fj(string)t Fo([?])315 2323 y Fp(Refer)h(to)g(the)h
-(most)f(recen)o(t)h(command)g(con)o(taining)g Fj(string)p
-Fp(.)25 b(The)17 b(trailing)g(`)p Fo(?)p Fp(')f(ma)o(y)g(b)q(e)315
-2377 y(omitted)f(if)h(the)f Fj(string)k Fp(is)d(follo)o(w)o(ed)f
-(immediately)i(b)o(y)e(a)g(newline.)75 2464 y Fo(^)p
-Fj(string1)t Fo(^)p Fj(string2)t Fo(^)315 2519 y Fp(Quic)o(k)i
-(Substitution.)23 b(Rep)q(eat)16 b(the)g(last)f(command,)h(replacing)h
-Fj(string1)i Fp(with)e Fj(string2)p Fp(.)315 2574 y(Equiv)m(alen)o(t)g
-(to)d Fo(!!:s/)p Fj(string1)t Fo(/)p Fj(string2)t Fo(/)p
-Fp(.)75 2661 y Fo(!#)192 b Fp(The)15 b(en)o(tire)h(command)f(line)i(t)o
-(yp)q(ed)f(so)e(far.)p eop
-%%Page: 2 4
-2 3 bop 75 -58 a Fp(2)1347 b(GNU)15 b(History)g(Library)75
-149 y Fi(1.1.2)30 b(W)-5 b(ord)20 b(Designators)137 247
-y Fp(W)l(ord)d(designators)g(are)g(used)h(to)f(select)h(desired)h(w)o
-(ords)d(from)h(the)g(ev)o(en)o(t.)26 b(A)18 b(`)p Fo(:)p
-Fp(')e(separates)h(the)75 302 y(ev)o(en)o(t)j(sp)q(eci\014cation)h
-(from)e(the)h(w)o(ord)f(designator.)34 b(It)20 b(ma)o(y)f(b)q(e)h
-(omitted)g(if)g(the)g(w)o(ord)f(designator)75 357 y(b)q(egins)f(with)g
-(a)e(`)p Fo(^)p Fp(',)h(`)p Fo($)p Fp(',)f(`)p Fo(*)p
-Fp(',)g(`)p Fo(-)p Fp(',)g(or)h(`)p Fo(\045)p Fp('.)24
-b(W)l(ords)17 b(are)g(n)o(um)o(b)q(ered)g(from)g(the)g(b)q(eginning)i
-(of)e(the)g(line,)75 411 y(with)j(the)g(\014rst)f(w)o(ord)h(b)q(eing)h
-(denoted)f(b)o(y)g(0)f(\(zero\).)33 b(W)l(ords)20 b(are)f(inserted)i
-(in)o(to)f(the)g(curren)o(t)f(line)75 466 y(separated)c(b)o(y)g(single)
-i(spaces.)137 535 y(F)l(or)e(example,)75 616 y Fo(!!)192
-b Fp(designates)18 b(the)g(preceding)i(command.)28 b(When)18
-b(y)o(ou)g(t)o(yp)q(e)g(this,)h(the)f(preceding)h(com-)315
-671 y(mand)c(is)h(rep)q(eated)g(in)g(toto.)75 752 y Fo(!!:$)144
-b Fp(designates)12 b(the)f(last)g(argumen)o(t)f(of)h(the)g(preceding)i
-(command.)19 b(This)11 b(ma)o(y)g(b)q(e)h(shortened)315
-807 y(to)j Fo(!$)p Fp(.)75 887 y Fo(!fi:2)120 b Fp(designates)15
-b(the)g(second)g(argumen)o(t)f(of)g(the)h(most)f(recen)o(t)g(command)h
-(starting)f(with)h(the)315 942 y(letters)g Fo(fi)p Fp(.)137
-1024 y(Here)h(are)f(the)g(w)o(ord)f(designators:)75 1105
-y Fo(0)h(\(zero\))57 b Fp(The)15 b Fo(0)p Fp(th)g(w)o(ord.)20
-b(F)l(or)14 b(man)o(y)h(applications,)h(this)g(is)g(the)f(command)g(w)o
-(ord.)75 1186 y Fj(n)215 b Fp(The)15 b Fj(n)p Fp(th)h(w)o(ord.)75
-1267 y Fo(^)216 b Fp(The)15 b(\014rst)g(argumen)o(t;)f(that)h(is,)g(w)o
-(ord)g(1.)75 1348 y Fo($)216 b Fp(The)15 b(last)h(argumen)o(t.)75
-1429 y Fo(\045)216 b Fp(The)15 b(w)o(ord)g(matc)o(hed)g(b)o(y)g(the)g
-(most)g(recen)o(t)g(`)p Fo(?)p Fj(string)t Fo(?)p Fp(')f(searc)o(h.)75
-1510 y Fj(x)p Fo(-)p Fj(y)168 b Fp(A)15 b(range)g(of)g(w)o(ords;)f(`)p
-Fo(-)p Fj(y)t Fp(')g(abbreviates)i(`)p Fo(0-)p Fj(y)t
-Fp('.)75 1591 y Fo(*)216 b Fp(All)15 b(of)f(the)f(w)o(ords,)g(except)i
-(the)f Fo(0)p Fp(th.)19 b(This)14 b(is)h(a)e(synon)o(ym)h(for)f(`)p
-Fo(1-$)p Fp('.)18 b(It)c(is)g(not)g(an)g(error)315 1645
-y(to)g(use)h(`)p Fo(*)p Fp(')f(if)i(there)e(is)i(just)e(one)h(w)o(ord)f
-(in)i(the)f(ev)o(en)o(t;)f(the)h(empt)o(y)g(string)g(is)g(returned)g
-(in)315 1700 y(that)f(case.)75 1781 y Fj(x)s Fo(*)189
-b Fp(Abbreviates)16 b(`)p Fj(x)p Fo(-$)p Fp(')75 1862
-y Fj(x)p Fo(-)192 b Fp(Abbreviates)16 b(`)p Fj(x)p Fo(-$)p
-Fp(')e(lik)o(e)i(`)p Fj(x)s Fo(*)p Fp(',)e(but)i(omits)f(the)g(last)g
-(w)o(ord.)137 1943 y(If)i(a)g(w)o(ord)f(designator)h(is)h(supplied)h
-(without)e(an)g(ev)o(en)o(t)f(sp)q(eci\014cation,)j(the)e(previous)h
-(command)75 1998 y(is)e(used)f(as)g(the)h(ev)o(en)o(t.)75
-2113 y Fi(1.1.3)30 b(Mo)r(di\014ers)137 2210 y Fp(After)10
-b(the)h(optional)g(w)o(ord)e(designator,)i(y)o(ou)f(can)h(add)f(a)g
-(sequence)i(of)e(one)g(or)g(more)g(of)g(the)g(follo)o(wing)75
-2265 y(mo)q(di\014ers,)16 b(eac)o(h)f(preceded)i(b)o(y)e(a)g(`)p
-Fo(:)p Fp('.)75 2346 y Fo(h)216 b Fp(Remo)o(v)o(e)14
-b(a)h(trailing)h(pathname)f(comp)q(onen)o(t,)g(lea)o(ving)h(only)g(the)
-f(head.)75 2427 y Fo(t)216 b Fp(Remo)o(v)o(e)14 b(all)i(leading)h
-(pathname)e(comp)q(onen)o(ts,)g(lea)o(ving)h(the)f(tail.)75
-2508 y Fo(r)216 b Fp(Remo)o(v)o(e)14 b(a)h(trailing)h(su\016x)f(of)g
-(the)g(form)g(`)p Fo(.)p Fj(su\016x)s Fp(',)f(lea)o(ving)i(the)f
-(basename.)75 2589 y Fo(e)216 b Fp(Remo)o(v)o(e)14 b(all)i(but)g(the)f
-(trailing)h(su\016x.)75 2670 y Fo(p)216 b Fp(Prin)o(t)15
-b(the)g(new)h(command)f(but)g(do)g(not)g(execute)h(it.)p
-eop
-%%Page: 3 5
-3 4 bop 75 -58 a Fp(Chapter)15 b(1:)k(Using)d(History)f(In)o(teractiv)o
-(ely)1007 b(3)75 149 y Fo(s/)p Fj(old)r Fo(/)p Fj(new)t
-Fo(/)315 204 y Fp(Substitute)17 b Fj(new)j Fp(for)c(the)h(\014rst)e(o)q
-(ccurrence)j(of)e Fj(old)i Fp(in)f(the)g(ev)o(en)o(t)f(line.)25
-b(An)o(y)16 b(delimiter)315 259 y(ma)o(y)c(b)q(e)h(used)g(in)g(place)g
-(of)f(`)p Fo(/)p Fp('.)18 b(The)13 b(delimiter)h(ma)o(y)e(b)q(e)h
-(quoted)f(in)i Fj(old)g Fp(and)f Fj(new)k Fp(with)12
-b(a)315 314 y(single)j(bac)o(kslash.)20 b(If)15 b(`)p
-Fo(&)p Fp(')e(app)q(ears)h(in)h Fj(new)p Fp(,)f(it)g(is)h(replaced)g(b)
-o(y)f Fj(old)p Fp(.)20 b(A)14 b(single)i(bac)o(kslash)315
-369 y(will)j(quote)e(the)h(`)p Fo(&)p Fp('.)25 b(The)17
-b(\014nal)i(delimiter)g(is)f(optional)g(if)f(it)h(is)g(the)f(last)g(c)o
-(haracter)g(on)315 423 y(the)e(input)h(line.)75 503 y
-Fo(&)216 b Fp(Rep)q(eat)15 b(the)g(previous)h(substitution.)75
-583 y Fo(g)216 b Fp(Cause)19 b(c)o(hanges)h(to)e(b)q(e)i(applied)h(o)o
-(v)o(er)e(the)g(en)o(tire)h(ev)o(en)o(t)f(line.)34 b(Used)20
-b(in)g(conjunction)315 638 y(with)c(`)p Fo(s)p Fp(',)d(as)i(in)h
-Fo(gs/)p Fj(old)r Fo(/)p Fj(new)t Fo(/)p Fp(,)f(or)g(with)g(`)p
-Fo(&)p Fp('.)p eop
-%%Page: 4 6
-4 5 bop 75 -58 a Fp(4)1347 b(GNU)15 b(History)g(Library)p
-eop
-%%Page: 5 7
-5 6 bop 75 -58 a Fp(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(History)889 b(5)75 149 y Fl(2)41 b(Programming)28 b(with)e(GNU)i
-(History)137 269 y Fp(This)17 b(c)o(hapter)f(describ)q(es)i(ho)o(w)e
-(to)f(in)o(terface)i(programs)e(that)g(y)o(ou)h(write)g(with)h(the)f
-Fk(gnu)g Fp(History)75 324 y(Library)l(.)24 b(It)17 b(should)g(b)q(e)g
-(considered)h(a)e(tec)o(hnical)i(guide.)25 b(F)l(or)15
-b(information)i(on)f(the)h(in)o(teractiv)o(e)g(use)75
-379 y(of)e Fk(gnu)g Fp(History)l(,)g(see)g(Chapter)g(1)g([Using)g
-(History)g(In)o(teractiv)o(ely],)h(page)f(1.)75 509 y
-Fn(2.1)33 b(In)n(tro)r(duction)24 b(to)e(History)137
-607 y Fp(Man)o(y)11 b(programs)f(read)h(input)i(from)d(the)i(user)f(a)g
-(line)i(at)e(a)g(time.)19 b(The)12 b Fk(gnu)f Fp(History)g(library)h
-(is)g(able)75 661 y(to)i(k)o(eep)g(trac)o(k)g(of)g(those)g(lines,)i
-(asso)q(ciate)e(arbitrary)g(data)g(with)g(eac)o(h)h(line,)h(and)e
-(utilize)j(information)75 716 y(from)d(previous)i(lines)h(in)f(comp)q
-(osing)g(new)f(ones.)137 784 y(The)f(programmer)f(using)h(the)g
-(History)g(library)g(has)g(a)o(v)m(ailable)h(functions)g(for)e(remem)o
-(b)q(ering)h(lines)75 839 y(on)c(a)g(history)h(list,)g(asso)q(ciating)g
-(arbitrary)f(data)f(with)i(a)f(line,)j(remo)o(ving)d(lines)i(from)d
-(the)i(list,)h(searc)o(hing)75 894 y(through)17 b(the)h(list)g(for)f(a)
-h(line)h(con)o(taining)f(an)g(arbitrary)f(text)g(string,)h(and)g
-(referencing)h(an)o(y)e(line)i(in)75 949 y(the)c(list)i(directly)l(.)22
-b(In)16 b(addition,)g(a)f(history)g Fj(expansion)h Fp(function)h(is)e
-(a)o(v)m(ailable)i(whic)o(h)g(pro)o(vides)f(for)e(a)75
-1003 y(consisten)o(t)h(user)h(in)o(terface)f(across)g(di\013eren)o(t)g
-(programs.)137 1072 y(The)f(user)h(using)f(programs)f(written)h(with)g
-(the)g(History)g(library)h(has)f(the)g(b)q(ene\014t)h(of)e(a)h
-(consisten)o(t)75 1126 y(user)20 b(in)o(terface)f(with)h(a)f(set)h(of)f
-(w)o(ell-kno)o(wn)h(commands)g(for)e(manipulating)k(the)d(text)g(of)g
-(previous)75 1181 y(lines)c(and)f(using)h(that)e(text)g(in)i(new)f
-(commands.)19 b(The)14 b(basic)h(history)e(manipulation)j(commands)d
-(are)75 1236 y(similar)j(to)f(the)g(history)g(substitution)h(pro)o
-(vided)g(b)o(y)g Fo(csh)p Fp(.)137 1304 y(If)f(the)g(programmer)f
-(desires,)h(he)g(can)g(use)g(the)g(Readline)h(library)l(,)g(whic)o(h)f
-(includes)j(some)c(history)75 1359 y(manipulation)j(b)o(y)e(default,)g
-(and)h(has)f(the)g(added)h(adv)m(an)o(tage)f(of)f(command)h(line)i
-(editing.)137 1427 y(Before)i(declaring)i(an)o(y)d(functions)i(using)g
-(an)o(y)f(functionalit)o(y)h(the)f(History)g(library)h(pro)o(vides)f
-(in)75 1482 y(other)14 b(co)q(de,)h(an)f(application)i(writer)e(should)
-i(include)g(the)f(\014le)g Fo(<readline/history.h>)d
-Fp(in)j(an)o(y)f(\014le)75 1537 y(that)d(uses)h(the)h(History)e
-(library's)i(features.)18 b(It)12 b(supplies)i(extern)e(declarations)h
-(for)e(all)i(of)f(the)g(library's)75 1591 y(public)17
-b(functions)f(and)g(v)m(ariables,)g(and)f(declares)h(all)g(of)f(the)h
-(public)h(data)d(structures.)75 1722 y Fn(2.2)33 b(History)22
-b(Storage)137 1819 y Fp(The)16 b(history)f(list)h(is)g(an)f(arra)o(y)f
-(of)g(history)i(en)o(tries.)k(A)15 b(history)g(en)o(try)g(is)h
-(declared)g(as)f(follo)o(ws:)195 1885 y Fo(typedef)23
-b(void)g(*histdata_t;)195 1988 y(typedef)g(struct)g(_hist_entry)f({)243
-2040 y(char)h(*line;)243 2092 y(histdata_t)f(data;)195
-2144 y(})i(HIST_ENTRY;)137 2212 y Fp(The)16 b(history)f(list)h(itself)g
-(migh)o(t)f(therefore)g(b)q(e)h(declared)g(as)195 2277
-y Fo(HIST_ENTRY)22 b(**the_history_list;)137 2345 y Fp(The)16
-b(state)e(of)h(the)g(History)g(library)h(is)g(encapsulated)g(in)o(to)f
-(a)g(single)i(structure:)195 2411 y Fo(/*)219 2462 y(*)24
-b(A)f(structure)g(used)g(to)h(pass)f(around)g(the)h(current)f(state)g
-(of)g(the)h(history.)219 2514 y(*/)195 2566 y(typedef)f(struct)g
-(_hist_state)f({)243 2618 y(HIST_ENTRY)g(**entries;)h(/*)g(Pointer)g
-(to)h(the)f(entries)g(themselves.)g(*/)243 2670 y(int)g(offset;)262
-b(/*)23 b(The)h(location)f(pointer)f(within)h(this)h(array.)f(*/)p
-eop
-%%Page: 6 8
-6 7 bop 75 -58 a Fp(6)1347 b(GNU)15 b(History)g(Library)243
-149 y Fo(int)23 b(length;)262 b(/*)23 b(Number)g(of)h(elements)f
-(within)g(this)g(array.)g(*/)243 201 y(int)g(size;)310
-b(/*)23 b(Number)g(of)h(slots)f(allocated)g(to)g(this)h(array.)f(*/)243
-253 y(int)g(flags;)195 305 y(})h(HISTORY_STATE;)137 372
-y Fp(If)16 b(the)f(\015ags)g(mem)o(b)q(er)g(includes)j
-Fo(HS_STIFLED)p Fp(,)13 b(the)i(history)h(has)f(b)q(een)h(sti\015ed.)75
-498 y Fn(2.3)33 b(History)22 b(F)-6 b(unctions)137 593
-y Fp(This)13 b(section)g(describ)q(es)h(the)e(calling)i(sequence)g(for)
-e(the)g(v)m(arious)h(functions)g(exp)q(orted)f(b)o(y)h(the)f
-Fk(gnu)75 648 y Fp(History)j(library)l(.)75 758 y Fi(2.3.1)30
-b(Initializing)20 b(History)h(and)f(State)g(Managemen)n(t)137
-853 y Fp(This)e(section)g(describ)q(es)h(functions)f(used)g(to)e
-(initialize)21 b(and)c(manage)g(the)g(state)g(of)g(the)g(History)75
-908 y(library)f(when)g(y)o(ou)f(w)o(an)o(t)f(to)g(use)i(the)f(history)g
-(functions)h(in)g(y)o(our)f(program.)1762 1021 y(F)l(unction)-1861
-b Fh(void)20 b Fg(using)p 333 1021 18 3 v 20 w(history)j
-Ff(\()p Fo(void)p Ff(\))195 1075 y Fp(Begin)e(a)f(session)g(in)h(whic)o
-(h)g(the)f(history)g(functions)g(migh)o(t)g(b)q(e)h(used.)34
-b(This)21 b(initializes)i(the)195 1130 y(in)o(teractiv)o(e)16
-b(v)m(ariables.)1762 1243 y(F)l(unction)-1861 b Fh(HISTORY_STATE)21
-b(*)e Fg(history)p 657 1243 V 21 w(get)p 755 1243 V 21
-w(history)p 951 1243 V 21 w(state)j Ff(\()p Fo(void)p
-Ff(\))195 1298 y Fp(Return)15 b(a)g(structure)g(describing)i(the)e
-(curren)o(t)g(state)f(of)h(the)g(input)i(history)l(.)1762
-1411 y(F)l(unction)-1861 b Fh(void)20 b Fg(history)p
-377 1411 V 20 w(set)p 468 1411 V 21 w(history)p 664 1411
-V 21 w(state)j Ff(\()p Fo(HISTORY_STATE)13 b(*state)p
-Ff(\))195 1466 y Fp(Set)i(the)h(state)e(of)h(the)g(history)g(list)h
-(according)g(to)e Fj(state)p Fp(.)75 1575 y Fi(2.3.2)30
-b(History)20 b(List)h(Managemen)n(t)137 1671 y Fp(These)11
-b(functions)h(manage)e(individual)k(en)o(tries)d(on)g(the)g(history)f
-(list,)i(or)f(set)f(parameters)g(managing)75 1725 y(the)15
-b(list)h(itself.)1762 1838 y(F)l(unction)-1861 b Fh(void)20
-b Fg(add)p 294 1838 V 20 w(history)j Ff(\()p Fo(const)14
-b(char)g(*string)p Ff(\))195 1893 y Fp(Place)i Fj(string)i
-Fp(at)d(the)g(end)h(of)e(the)h(history)g(list.)21 b(The)15
-b(asso)q(ciated)g(data)g(\014eld)h(\(if)f(an)o(y\))f(is)i(set)f(to)195
-1948 y Fo(NULL)p Fp(.)1762 2061 y(F)l(unction)-1861 b
-Fh(HIST_ENTRY)21 b(*)e Fg(remo)n(v)n(e)p 584 2061 V 20
-w(history)k Ff(\()p Fo(int)14 b(which)p Ff(\))195 2115
-y Fp(Remo)o(v)o(e)22 b(history)g(en)o(try)h(at)f(o\013set)g
-Fj(whic)o(h)h Fp(from)f(the)h(history)l(.)43 b(The)23
-b(remo)o(v)o(ed)f(elemen)o(t)h(is)195 2170 y(returned)16
-b(so)e(y)o(ou)h(can)h(free)f(the)g(line,)i(data,)d(and)h(con)o(taining)
-h(structure.)1762 2283 y(F)l(unction)-1861 b Fh(HIST_ENTRY)21
-b(*)e Fg(replace)p 580 2283 V 22 w(history)p 777 2283
-V 20 w(en)n(try)24 b Ff(\()p Fo(int)14 b(which,)g(const)h(char)283
-2338 y(*line,)f(histdata_t)g(data)p Ff(\))195 2393 y
-Fp(Mak)o(e)f(the)h(history)g(en)o(try)f(at)g(o\013set)g
-Fj(whic)o(h)i Fp(ha)o(v)o(e)e Fj(line)18 b Fp(and)c Fj(data)p
-Fp(.)19 b(This)14 b(returns)g(the)g(old)g(en)o(try)195
-2448 y(so)19 b(y)o(ou)f(can)i(disp)q(ose)g(of)e(the)i(data.)30
-b(In)20 b(the)f(case)g(of)g(an)g(in)o(v)m(alid)i Fj(whic)o(h)p
-Fp(,)g(a)d Fo(NULL)h Fp(p)q(oin)o(ter)g(is)195 2502 y(returned.)1762
-2615 y(F)l(unction)-1861 b Fh(void)20 b Fg(clear)p 320
-2615 V 21 w(history)j Ff(\()p Fo(void)p Ff(\))195 2670
-y Fp(Clear)15 b(the)h(history)f(list)h(b)o(y)f(deleting)i(all)f(the)f
-(en)o(tries.)p eop
-%%Page: 7 9
-7 8 bop 75 -58 a Fp(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(History)889 b(7)1762 149 y(F)l(unction)-1861 b Fh(void)20
-b Fg(sti\015e)p 320 149 18 3 v 21 w(history)j Ff(\()p
-Fo(int)14 b(max)p Ff(\))195 204 y Fp(Sti\015e)i(the)f(history)h(list,)f
-(remem)o(b)q(ering)h(only)g(the)f(last)g Fj(max)j Fp(en)o(tries.)1762
-302 y(F)l(unction)-1861 b Fh(int)20 b Fg(unsti\015e)p
-358 302 V 21 w(history)i Ff(\()p Fo(void)p Ff(\))195
-357 y Fp(Stop)14 b(sti\015ing)g(the)g(history)l(.)20
-b(This)14 b(returns)f(the)h(previously-set)h(maxim)o(um)f(n)o(um)o(b)q
-(er)g(of)f(history)195 411 y(en)o(tries)h(\(as)e(set)i(b)o(y)f
-Fo(stifle_history\(\))p Fp(\).)k(The)c(v)m(alue)i(is)f(p)q(ositiv)o(e)g
-(if)g(the)g(history)f(w)o(as)f(sti\015ed,)195 466 y(negativ)o(e)j(if)h
-(it)f(w)o(asn't.)1762 564 y(F)l(unction)-1861 b Fh(int)20
-b Fg(history)p 351 564 V 20 w(is)p 409 564 V 21 w(sti\015ed)k
-Ff(\()p Fo(void)p Ff(\))195 619 y Fp(Returns)15 b(non-zero)g(if)h(the)f
-(history)g(is)h(sti\015ed,)g(zero)f(if)g(it)h(is)g(not.)75
-719 y Fi(2.3.3)30 b(Information)19 b(Ab)r(out)i(the)f(History)h(List)
-137 811 y Fp(These)13 b(functions)h(return)f(information)g(ab)q(out)f
-(the)h(en)o(tire)h(history)e(list)i(or)e(individual)k(list)e(en)o
-(tries.)1762 909 y(F)l(unction)-1861 b Fh(HIST_ENTRY)21
-b(**)e Fg(history)p 605 909 V 21 w(list)24 b Ff(\()p
-Fo(void)p Ff(\))195 964 y Fp(Return)15 b(a)g Fo(NULL)f
-Fp(terminated)i(arra)o(y)e(of)h Fo(HIST_ENTRY)f(*)h Fp(whic)o(h)h(is)f
-(the)h(curren)o(t)f(input)h(history)l(.)195 1018 y(Elemen)o(t)g(0)f(of)
-f(this)i(list)g(is)g(the)f(b)q(eginning)i(of)e(time.)20
-b(If)c(there)f(is)h(no)f(history)l(,)g(return)g Fo(NULL)p
-Fp(.)1762 1116 y(F)l(unction)-1861 b Fh(int)20 b Fg(where)p
-325 1116 V 20 w(history)j Ff(\()p Fo(void)p Ff(\))195
-1171 y Fp(Returns)15 b(the)g(o\013set)f(of)h(the)g(curren)o(t)g
-(history)g(elemen)o(t.)1762 1268 y(F)l(unction)-1861
-b Fh(HIST_ENTRY)21 b(*)e Fg(curren)n(t)p 587 1268 V 21
-w(history)k Ff(\()p Fo(void)p Ff(\))195 1323 y Fp(Return)12
-b(the)h(history)f(en)o(try)g(at)g(the)g(curren)o(t)h(p)q(osition,)g(as)
-f(determined)i(b)o(y)e Fo(where_history\(\))p Fp(.)195
-1378 y(If)j(there)h(is)f(no)h(en)o(try)e(there,)h(return)g(a)g
-Fo(NULL)g Fp(p)q(oin)o(ter.)1762 1475 y(F)l(unction)-1861
-b Fh(HIST_ENTRY)21 b(*)e Fg(history)p 579 1475 V 21 w(get)j
-Ff(\()p Fo(int)15 b(offset)p Ff(\))195 1530 y Fp(Return)20
-b(the)h(history)g(en)o(try)f(at)h(p)q(osition)g Fj(o\013set)p
-Fp(,)g(starting)f(from)g Fo(history_base)f Fp(\(see)i(Sec-)195
-1585 y(tion)15 b(2.4)f([History)g(V)l(ariables],)h(page)g(10\).)j(If)d
-(there)g(is)g(no)g(en)o(try)f(there,)h(or)f(if)h Fj(o\013set)g
-Fp(is)g(greater)195 1640 y(than)g(the)g(history)g(length,)h(return)f(a)
-g Fo(NULL)g Fp(p)q(oin)o(ter.)1762 1737 y(F)l(unction)-1861
-b Fh(int)20 b Fg(history)p 351 1737 V 20 w(total)p 487
-1737 V 22 w(b)n(ytes)j Ff(\()p Fo(void)p Ff(\))195 1792
-y Fp(Return)13 b(the)h(n)o(um)o(b)q(er)g(of)g(b)o(ytes)f(that)g(the)h
-(primary)g(history)g(en)o(tries)g(are)g(using.)20 b(This)14
-b(function)195 1847 y(returns)h(the)g(sum)h(of)e(the)i(lengths)f(of)g
-(all)h(the)g(lines)g(in)g(the)g(history)l(.)75 1947 y
-Fi(2.3.4)30 b(Mo)n(ving)21 b(Around)f(the)h(History)g(List)137
-2040 y Fp(These)16 b(functions)g(allo)o(w)f(the)g(curren)o(t)h(index)g
-(in)o(to)f(the)h(history)f(list)h(to)e(b)q(e)i(set)f(or)g(c)o(hanged.)
-1762 2137 y(F)l(unction)-1861 b Fh(int)20 b Fg(history)p
-351 2137 V 20 w(set)p 442 2137 V 21 w(p)r(os)h Ff(\()p
-Fo(int)15 b(pos)p Ff(\))195 2192 y Fp(Set)j(the)h(curren)o(t)f(history)
-g(o\013set)g(to)f Fj(p)q(os)p Fp(,)i(an)f(absolute)h(index)h(in)o(to)e
-(the)g(list.)30 b(Returns)18 b(1)g(on)195 2247 y(success,)d(0)g(if)h
-Fj(p)q(os)h Fp(is)f(less)g(than)f(zero)g(or)g(greater)f(than)h(the)g(n)
-o(um)o(b)q(er)h(of)e(history)i(en)o(tries.)1762 2344
-y(F)l(unction)-1861 b Fh(HIST_ENTRY)21 b(*)e Fg(previous)p
-615 2344 V 20 w(history)k Ff(\()p Fo(void)p Ff(\))195
-2399 y Fp(Bac)o(k)14 b(up)h(the)g(curren)o(t)f(history)g(o\013set)g(to)
-f(the)i(previous)g(history)f(en)o(try)l(,)g(and)h(return)f(a)g(p)q(oin)
-o(ter)195 2454 y(to)h(that)f(en)o(try)l(.)20 b(If)15
-b(there)g(is)h(no)f(previous)h(en)o(try)l(,)f(return)g(a)g
-Fo(NULL)g Fp(p)q(oin)o(ter.)1762 2552 y(F)l(unction)-1861
-b Fh(HIST_ENTRY)21 b(*)e Fg(next)p 514 2552 V 21 w(history)k
-Ff(\()p Fo(void)p Ff(\))195 2606 y Fp(Mo)o(v)o(e)17 b(the)h(curren)o(t)
-f(history)h(o\013set)f(forw)o(ard)f(to)h(the)h(next)g(history)g(en)o
-(try)l(,)g(and)g(return)f(the)h(a)195 2661 y(p)q(oin)o(ter)e(to)e(that)
-h(en)o(try)l(.)k(If)d(there)f(is)h(no)f(next)g(en)o(try)l(,)g(return)g
-(a)g Fo(NULL)g Fp(p)q(oin)o(ter.)p eop
-%%Page: 8 10
-8 9 bop 75 -58 a Fp(8)1347 b(GNU)15 b(History)g(Library)75
-149 y Fi(2.3.5)30 b(Searc)n(hing)21 b(the)f(History)h(List)137
-245 y Fp(These)14 b(functions)g(allo)o(w)g(searc)o(hing)g(of)e(the)i
-(history)f(list)h(for)f(en)o(tries)h(con)o(taining)g(a)f(sp)q(eci\014c)
-i(string.)75 300 y(Searc)o(hing)f(ma)o(y)g(b)q(e)g(p)q(erformed)g(b)q
-(oth)g(forw)o(ard)e(and)i(bac)o(kw)o(ard)f(from)g(the)h(curren)o(t)g
-(history)f(p)q(osition.)75 355 y(The)j(searc)o(h)f(ma)o(y)g(b)q(e)i
-Fj(anc)o(hored)p Fp(,)e(meaning)h(that)f(the)h(string)g(m)o(ust)f(matc)
-o(h)g(at)g(the)h(b)q(eginning)i(of)d(the)75 410 y(history)g(en)o(try)l
-(.)1762 524 y(F)l(unction)-1861 b Fh(int)20 b Fg(history)p
-351 524 18 3 v 20 w(searc)n(h)j Ff(\()p Fo(const)14 b(char)h(*string,)f
-(int)h(direction)p Ff(\))195 578 y Fp(Searc)o(h)g(the)f(history)g(for)g
-Fj(string)p Fp(,)g(starting)g(at)g(the)h(curren)o(t)f(history)g
-(o\013set.)19 b(If)c Fj(direction)g Fp(is)g(less)195
-633 y(than)20 b(0,)g(then)h(the)f(searc)o(h)f(is)i(through)f(previous)g
-(en)o(tries,)i(otherwise)e(through)f(subsequen)o(t)195
-688 y(en)o(tries.)h(If)c Fj(string)j Fp(is)d(found,)f(then)g(the)h
-(curren)o(t)f(history)g(index)h(is)g(set)f(to)g(that)f(history)h(en)o
-(try)l(,)195 743 y(and)i(the)g(v)m(alue)h(returned)f(is)g(the)g
-(o\013set)e(in)j(the)f(line)h(of)e(the)h(en)o(try)g(where)g
-Fj(string)j Fp(w)o(as)c(found.)195 798 y(Otherwise,)g(nothing)f(is)h(c)
-o(hanged,)f(and)h(a)e(-1)h(is)h(returned.)1762 912 y(F)l(unction)-1861
-b Fh(int)20 b Fg(history)p 351 912 V 20 w(searc)n(h)p
-527 912 V 21 w(pre\014x)i Ff(\()p Fo(const)14 b(char)h(*string,)f(int)h
-(direction)p Ff(\))195 966 y Fp(Searc)o(h)20 b(the)h(history)f(for)g
-Fj(string)p Fp(,)h(starting)e(at)h(the)g(curren)o(t)h(history)f
-(o\013set.)34 b(The)20 b(searc)o(h)g(is)195 1021 y(anc)o(hored:)g(matc)
-o(hing)14 b(lines)j(m)o(ust)d(b)q(egin)i(with)f Fj(string)p
-Fp(.)20 b(If)15 b Fj(direction)h Fp(is)f(less)g(than)g(0,)f(then)h(the)
-195 1076 y(searc)o(h)g(is)i(through)e(previous)h(en)o(tries,)g
-(otherwise)g(through)f(subsequen)o(t)h(en)o(tries.)22
-b(If)16 b Fj(string)j Fp(is)195 1131 y(found,)e(then)g(the)f(curren)o
-(t)h(history)f(index)i(is)f(set)f(to)g(that)g(en)o(try)l(,)g(and)h(the)
-f(return)h(v)m(alue)h(is)f(0.)195 1186 y(Otherwise,)f(nothing)f(is)h(c)
-o(hanged,)f(and)h(a)e(-1)h(is)h(returned.)1762 1300 y(F)l(unction)-1861
-b Fh(int)20 b Fg(history)p 351 1300 V 20 w(searc)n(h)p
-527 1300 V 21 w(p)r(os)h Ff(\()p Fo(const)14 b(char)h(*string,)f(int)h
-(direction,)f(int)283 1355 y(pos)p Ff(\))195 1409 y Fp(Searc)o(h)j(for)
-g Fj(string)k Fp(in)d(the)f(history)g(list,)h(starting)e(at)h
-Fj(p)q(os)p Fp(,)g(an)g(absolute)h(index)g(in)o(to)f(the)h(list.)195
-1464 y(If)g Fj(direction)i Fp(is)e(negativ)o(e,)h(the)f(searc)o(h)g
-(pro)q(ceeds)g(bac)o(kw)o(ard)g(from)f Fj(p)q(os)p Fp(,)h(otherwise)h
-(forw)o(ard.)195 1519 y(Returns)j(the)g(absolute)g(index)h(of)f(the)g
-(history)g(elemen)o(t)h(where)f Fj(string)k Fp(w)o(as)21
-b(found,)j(or)d(-1)195 1574 y(otherwise.)75 1684 y Fi(2.3.6)30
-b(Managing)20 b(the)g(History)h(File)137 1780 y Fp(The)16
-b(History)g(library)h(can)e(read)h(the)g(history)g(from)f(and)h(write)g
-(it)g(to)f(a)h(\014le.)22 b(This)17 b(section)f(do)q(cu-)75
-1835 y(men)o(ts)f(the)g(functions)h(for)f(managing)g(a)g(history)g
-(\014le.)1762 1949 y(F)l(unction)-1861 b Fh(int)20 b
-Fg(read)p 286 1949 V 20 w(history)i Ff(\()p Fo(const)15
-b(char)f(*filename)p Ff(\))195 2003 y Fp(Add)h(the)g(con)o(ten)o(ts)f
-(of)h Fj(\014lename)j Fp(to)c(the)h(history)g(list,)g(a)g(line)h(at)f
-(a)f(time.)20 b(If)15 b Fj(\014lename)k Fp(is)c Fo(NULL)p
-Fp(,)195 2058 y(then)h(read)f(from)f(`)p Fo(~/.history)p
-Fp('.)k(Returns)d(0)f(if)i(successful,)g(or)f Fo(errno)f
-Fp(if)i(not.)1762 2172 y(F)l(unction)-1861 b Fh(int)20
-b Fg(read)p 286 2172 V 20 w(history)p 481 2172 V 20 w(range)i
-Ff(\()p Fo(const)14 b(char)h(*filename,)f(int)h(from,)f(int)h(to)p
-Ff(\))195 2227 y Fp(Read)f(a)f(range)h(of)f(lines)j(from)d
-Fj(\014lename)p Fp(,)i(adding)g(them)f(to)f(the)h(history)g(list.)20
-b(Start)13 b(reading)i(at)195 2282 y(line)g Fj(from)d
-Fp(and)h(end)h(at)f Fj(to)p Fp(.)18 b(If)c Fj(from)e
-Fp(is)i(zero,)f(start)f(at)g(the)h(b)q(eginning.)22 b(If)13
-b Fj(to)i Fp(is)e(less)h(than)f Fj(from)p Fp(,)195 2337
-y(then)i(read)g(un)o(til)i(the)e(end)g(of)g(the)g(\014le.)21
-b(If)15 b Fj(\014lename)k Fp(is)d Fo(NULL)p Fp(,)e(then)h(read)g(from)f
-(`)p Fo(~/.history)p Fp('.)195 2392 y(Returns)h(0)g(if)g(successful,)h
-(or)f Fo(errno)g Fp(if)g(not.)1762 2506 y(F)l(unction)-1861
-b Fh(int)20 b Fg(write)p 304 2506 V 22 w(history)i Ff(\()p
-Fo(const)15 b(char)f(*filename)p Ff(\))195 2560 y Fp(W)l(rite)k(the)f
-(curren)o(t)g(history)h(to)f Fj(\014lename)p Fp(,)h(o)o(v)o(erwriting)f
-Fj(\014lename)k Fp(if)d(necessary)l(.)27 b(If)18 b Fj(\014lename)195
-2615 y Fp(is)f Fo(NULL)p Fp(,)e(then)h(write)h(the)f(history)g(list)h
-(to)e(`)p Fo(~/.history)p Fp('.)21 b(Returns)16 b(0)f(on)h(success,)h
-(or)f Fo(errno)195 2670 y Fp(on)f(a)g(read)g(or)g(write)g(error.)p
-eop
-%%Page: 9 11
-9 10 bop 75 -58 a Fp(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(History)889 b(9)1762 149 y(F)l(unction)-1861 b Fh(int)20
-b Fg(app)r(end)p 360 149 18 3 v 19 w(history)j Ff(\()p
-Fo(int)14 b(nelements,)g(const)h(char)f(*filename)p Ff(\))195
-204 y Fp(App)q(end)19 b(the)e(last)g Fj(nelemen)o(ts)k
-Fp(of)16 b(the)i(history)f(list)h(to)f Fj(\014lename)p
-Fp(.)27 b(If)18 b Fj(\014lename)j Fp(is)d Fo(NULL)p Fp(,)f(then)195
-259 y(app)q(end)f(to)f(`)p Fo(~/.history)p Fp('.)j(Returns)c(0)h(on)g
-(success,)h(or)e Fo(errno)h Fp(on)g(a)g(read)g(or)g(write)g(error.)1762
-404 y(F)l(unction)-1861 b Fh(int)20 b Fg(history)p 351
-404 V 20 w(truncate)p 582 404 V 21 w(\014le)k Ff(\()p
-Fo(const)14 b(char)h(*filename,)e(int)i(nlines)p Ff(\))195
-459 y Fp(T)l(runcate)k(the)h(history)f(\014le)h Fj(\014lename)p
-Fp(,)h(lea)o(ving)f(only)g(the)f(last)g Fj(nlines)k Fp(lines.)34
-b(If)20 b Fj(\014lename)i Fp(is)195 513 y Fo(NULL)p Fp(,)14
-b(then)i(`)p Fo(~/.history)p Fp(')d(is)j(truncated.)j(Returns)c(0)g(on)
-g(success,)h(or)e Fo(errno)h Fp(on)g(failure.)75 644
-y Fi(2.3.7)30 b(History)20 b(Expansion)137 750 y Fp(These)c(functions)g
-(implemen)o(t)g(history)f(expansion.)1762 895 y(F)l(unction)-1861
-b Fh(int)20 b Fg(history)p 351 895 V 20 w(expand)j Ff(\()p
-Fo(char)14 b(*string,)g(char)h(**output)p Ff(\))195 949
-y Fp(Expand)j Fj(string)p Fp(,)f(placing)h(the)g(result)f(in)o(to)g
-Fj(output)p Fp(,)h(a)e(p)q(oin)o(ter)i(to)f(a)g(string)g(\(see)g
-(Section)h(1.1)195 1004 y([History)d(In)o(teraction],)f(page)h(1\).)20
-b(Returns:)195 1098 y Fo(0)216 b Fp(If)19 b(no)g(expansions)g(to)q(ok)f
-(place)i(\(or,)e(if)i(the)e(only)i(c)o(hange)e(in)i(the)f(text)f(w)o
-(as)g(the)435 1152 y(remo)o(v)m(al)d(of)g(escap)q(e)h(c)o(haracters)e
-(preceding)i(the)f(history)g(expansion)h(c)o(haracter\);)195
-1241 y Fo(1)216 b Fp(if)16 b(expansions)g(did)g(tak)o(e)e(place;)195
-1330 y Fo(-1)192 b Fp(if)16 b(there)f(w)o(as)f(an)h(error)g(in)h
-(expansion;)195 1419 y Fo(2)216 b Fp(if)14 b(the)g(returned)g(line)i
-(should)f(b)q(e)f(displa)o(y)o(ed,)h(but)f(not)f(executed,)i(as)e(with)
-h(the)g Fo(:p)435 1474 y Fp(mo)q(di\014er)i(\(see)f(Section)h(1.1.3)e
-([Mo)q(di\014ers],)h(page)g(2\).)195 1568 y(If)g(an)h(error)e(o)q
-(curred)i(in)g(expansion,)f(then)h Fj(output)g Fp(con)o(tains)f(a)g
-(descriptiv)o(e)i(error)d(message.)1762 1713 y(F)l(unction)-1861
-b Fh(char)20 b(*)f Fg(get)p 324 1713 V 21 w(history)p
-520 1713 V 20 w(ev)n(en)n(t)25 b Ff(\()p Fo(const)14
-b(char)h(*string,)f(int)g(*cindex,)g(int)283 1767 y(qchar)p
-Ff(\))195 1822 y Fp(Returns)22 b(the)h(text)f(of)h(the)f(history)h(ev)o
-(en)o(t)g(b)q(eginning)h(at)f Fj(string)j Fo(+)d Fj(*cindex)p
-Fp(.)43 b Fj(*cindex)27 b Fp(is)195 1877 y(mo)q(di\014ed)16
-b(to)e(p)q(oin)o(t)h(to)f(after)g(the)h(ev)o(en)o(t)f(sp)q(eci\014er.)
-22 b(A)o(t)14 b(function)h(en)o(try)l(,)g Fj(cindex)k
-Fp(p)q(oin)o(ts)c(to)f(the)195 1932 y(index)19 b(in)o(to)f
-Fj(string)k Fp(where)c(the)g(history)g(ev)o(en)o(t)g(sp)q
-(eci\014cation)h(b)q(egins.)30 b Fj(qc)o(har)21 b Fp(is)d(a)g(c)o
-(haracter)195 1987 y(that)13 b(is)h(allo)o(w)o(ed)g(to)e(end)i(the)g
-(ev)o(en)o(t)f(sp)q(eci\014cation)j(in)e(addition)g(to)f(the)h
-(\\normal")f(terminating)195 2041 y(c)o(haracters.)1762
-2186 y(F)l(unction)-1861 b Fh(char)20 b(**)f Fg(history)p
-448 2186 V 21 w(tok)n(enize)25 b Ff(\()p Fo(const)14
-b(char)h(*string)p Ff(\))195 2241 y Fp(Return)g(an)g(arra)o(y)g(of)g
-(tok)o(ens)g(parsed)g(out)g(of)g Fj(string)p Fp(,)g(m)o(uc)o(h)h(as)f
-(the)g(shell)i(migh)o(t.)k(The)15 b(tok)o(ens)195 2296
-y(are)h(split)h(on)e(the)h(c)o(haracters)g(in)g(the)g
-Fj(history)p 1007 2296 14 2 v 17 w(w)o(ord)p 1122 2296
-V 15 w(delimiters)k Fp(v)m(ariable,)d(and)f(shell)i(quoting)195
-2351 y(con)o(v)o(en)o(tions)d(are)g(ob)q(ey)o(ed.)1762
-2496 y(F)l(unction)-1861 b Fh(char)20 b(*)f Fg(history)p
-422 2496 18 3 v 21 w(arg)p 524 2496 V 19 w(extract)24
-b Ff(\()p Fo(int)14 b(first,)h(int)g(last,)f(const)g(char)283
-2550 y(*string)p Ff(\))195 2605 y Fp(Extract)19 b(a)h(string)g(segmen)o
-(t)g(consisting)h(of)f(the)g Fj(\014rst)h Fp(through)f
-Fj(last)h Fp(argumen)o(ts)e(presen)o(t)h(in)195 2660
-y Fj(string)p Fp(.)g(Argumen)o(ts)15 b(are)f(split)j(using)f
-Fo(history_tokenize)p Fp(.)p eop
-%%Page: 10 12
-10 11 bop 75 -58 a Fp(10)1324 b(GNU)15 b(History)g(Library)75
-149 y Fn(2.4)33 b(History)22 b(V)-6 b(ariables)137 251
-y Fp(This)18 b(section)f(describ)q(es)i(the)e(externally-visible)k(v)m
-(ariables)d(exp)q(orted)f(b)o(y)g(the)g Fk(gnu)g Fp(History)g(Li-)75
-306 y(brary)l(.)1773 438 y(V)l(ariable)-1861 b Fh(int)20
-b Fg(history)p 351 438 18 3 v 20 w(base)195 493 y Fp(The)15
-b(logical)i(o\013set)d(of)h(the)g(\014rst)g(en)o(try)g(in)h(the)f
-(history)g(list.)1773 625 y(V)l(ariable)-1861 b Fh(int)20
-b Fg(history)p 351 625 V 20 w(length)195 680 y Fp(The)15
-b(n)o(um)o(b)q(er)h(of)f(en)o(tries)g(curren)o(tly)h(stored)f(in)h(the)
-f(history)g(list.)1773 812 y(V)l(ariable)-1861 b Fh(int)20
-b Fg(history)p 351 812 V 20 w(max)p 478 812 V 20 w(en)n(tries)195
-867 y Fp(The)j(maxim)o(um)g(n)o(um)o(b)q(er)g(of)g(history)g(en)o
-(tries.)43 b(This)24 b(m)o(ust)e(b)q(e)i(c)o(hanged)f(using)h
-Fo(stifle_)195 922 y(history\(\))p Fp(.)1773 1054 y(V)l(ariable)-1861
-b Fh(char)20 b Fg(history)p 377 1054 V 20 w(expansion)p
-644 1054 V 21 w(c)n(har)195 1109 y Fp(The)e(c)o(haracter)f(that)g(in)o
-(tro)q(duces)h(a)f(history)h(ev)o(en)o(t.)27 b(The)18
-b(default)g(is)g(`)p Fo(!)p Fp('.)26 b(Setting)18 b(this)g(to)f(0)195
-1164 y(inhibits)g(history)f(expansion.)1773 1296 y(V)l(ariable)-1861
-b Fh(char)20 b Fg(history)p 377 1296 V 20 w(subst)p 529
-1296 V 20 w(c)n(har)195 1351 y Fp(The)h(c)o(haracter)e(that)h(in)o(v)o
-(ok)o(es)g(w)o(ord)g(substitution)h(if)g(found)f(at)g(the)h(start)e(of)
-h(a)g(line.)37 b(The)195 1406 y(default)16 b(is)f(`)p
-Fo(^)p Fp('.)1773 1538 y(V)l(ariable)-1861 b Fh(char)20
-b Fg(history)p 377 1538 V 20 w(commen)n(t)p 627 1538
-V 19 w(c)n(har)195 1593 y Fp(During)f(tok)o(enization,)h(if)f(this)h(c)
-o(haracter)e(is)h(seen)h(as)e(the)h(\014rst)g(c)o(haracter)f(of)g(a)h
-(w)o(ord,)g(then)195 1648 y(it)j(and)g(all)g(subsequen)o(t)h(c)o
-(haracters)d(up)j(to)e(a)g(newline)i(are)f(ignored,)h(suppressing)g
-(history)195 1702 y(expansion)16 b(for)f(the)g(remainder)h(of)f(the)g
-(line.)21 b(This)16 b(is)g(disabled)h(b)o(y)e(default.)1773
-1835 y(V)l(ariable)-1861 b Fh(char)20 b(*)f Fg(history)p
-422 1835 V 21 w(w)n(ord)p 567 1835 V 20 w(delimiters)195
-1889 y Fp(The)14 b(c)o(haracters)f(that)g(separate)g(tok)o(ens)h(for)f
-Fo(history_tokenize\(\))p Fp(.)k(The)d(default)g(v)m(alue)h(is)f
-Fo(")195 1944 y(\\t\\n\(\)<>;&|")p Fp(.)1773 2077 y(V)l(ariable)-1861
-b Fh(char)20 b(*)f Fg(history)p 422 2077 V 21 w(no)p
-504 2077 V 20 w(expand)p 704 2077 V 20 w(c)n(hars)195
-2131 y Fp(The)c(list)h(of)e(c)o(haracters)g(whic)o(h)i(inhibit)h
-(history)e(expansion)h(if)f(found)h(immediately)g(follo)o(wing)195
-2186 y Fj(history)p 336 2186 14 2 v 16 w(expansion)p
-547 2186 V 18 w(c)o(har)p Fp(.)j(The)d(default)f(is)h(space,)f(tab,)g
-(newline,)h(carriage)f(return,)g(and)h(`)p Fo(=)p Fp('.)1773
-2318 y(V)l(ariable)-1861 b Fh(char)20 b(*)f Fg(history)p
-422 2318 18 3 v 21 w(searc)n(h)p 599 2318 V 20 w(delimiter)p
-843 2318 V 23 w(c)n(hars)195 2373 y Fp(The)13 b(list)h(of)f(additional)
-h(c)o(haracters)e(whic)o(h)i(can)g(delimit)g(a)f(history)g(searc)o(h)g
-(string,)g(in)h(addition)195 2428 y(to)h(space,)g(T)l(AB,)g(`)p
-Fo(:)p Fp(')f(and)h(`)p Fo(?)p Fp(')g(in)h(the)f(case)g(of)g(a)g
-(substring)g(searc)o(h.)20 b(The)c(default)f(is)h(empt)o(y)l(.)1773
-2560 y(V)l(ariable)-1861 b Fh(int)20 b Fg(history)p 351
-2560 V 20 w(quotes)p 533 2560 V 21 w(inhibit)p 717 2560
-V 23 w(expansion)195 2615 y Fp(If)15 b(non-zero,)f(single-quoted)j(w)o
-(ords)c(are)i(not)f(scanned)h(for)f(the)h(history)g(expansion)g(c)o
-(haracter.)195 2670 y(The)g(default)h(v)m(alue)h(is)e(0.)p
-eop
-%%Page: 11 13
-11 12 bop 75 -58 a Fp(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(History)867 b(11)1773 149 y(V)l(ariable)-1861 b Fh(rl_linebuf_func_t)
-22 b(*)d Fg(history)p 762 149 18 3 v 21 w(inhibit)p 946
-149 V 23 w(expansion)p 1216 149 V 20 w(function)195 204
-y Fp(This)e(should)h(b)q(e)f(set)g(to)f(the)g(address)h(of)f(a)h
-(function)g(that)f(tak)o(es)g(t)o(w)o(o)f(argumen)o(ts:)22
-b(a)17 b Fo(char)d(*)195 259 y Fp(\()p Fj(string)t Fp(\))e(and)i(an)f
-Fo(int)g Fp(index)i(in)o(to)e(that)f(string)i(\()p Fj(i)r
-Fp(\).)19 b(It)14 b(should)g(return)f(a)g(non-zero)h(v)m(alue)g(if)g
-(the)195 314 y(history)h(expansion)g(starting)f(at)g
-Fj(string[i])i Fp(should)g(not)e(b)q(e)h(p)q(erformed;)g(zero)f(if)h
-(the)g(expansion)195 369 y(should)i(b)q(e)g(done.)22
-b(It)16 b(is)h(in)o(tended)g(for)e(use)i(b)o(y)f(applications)h(lik)o
-(e)g(Bash)f(that)g(use)g(the)g(history)195 423 y(expansion)g(c)o
-(haracter)f(for)f(additional)j(purp)q(oses.)j(By)c(default,)f(this)h(v)
-m(ariable)g(is)g(set)f(to)f Fo(NULL)p Fp(.)75 543 y Fn(2.5)33
-b(History)22 b(Programming)h(Example)137 637 y Fp(The)16
-b(follo)o(wing)g(program)e(demonstrates)g(simple)j(use)e(of)g(the)g
-Fk(gnu)g Fp(History)g(Library)l(.)195 698 y Fo(#include)23
-b(<stdio.h>)195 750 y(#include)g(<readline/history.h>)195
-854 y(main)g(\(argc,)g(argv\))314 906 y(int)h(argc;)314
-958 y(char)g(**argv;)195 1010 y({)243 1061 y(char)f(line[1024],)f(*t;)
-243 1113 y(int)h(len,)g(done)h(=)g(0;)243 1217 y(line[0])f(=)g(0;)243
-1321 y(using_history)f(\(\);)243 1373 y(while)h(\(!done\))290
-1425 y({)338 1477 y(printf)g(\("history$)g("\);)338 1528
-y(fflush)g(\(stdout\);)338 1580 y(t)h(=)g(fgets)f(\(line,)g(sizeof)g
-(\(line\))g(-)h(1,)f(stdin\);)338 1632 y(if)h(\(t)f(&&)h(*t\))386
-1684 y({)434 1736 y(len)f(=)h(strlen)f(\(t\);)434 1788
-y(if)g(\(t[len)g(-)h(1])g(==)f('\\n'\))481 1840 y(t[len)h(-)f(1])h(=)g
-('\\0';)386 1892 y(})338 1995 y(if)g(\(!t\))386 2047
-y(strcpy)f(\(line,)g("quit"\);)338 2151 y(if)h(\(line[0]\))386
-2203 y({)434 2255 y(char)f(*expansion;)434 2307 y(int)g(result;)434
-2411 y(result)g(=)g(history_expand)f(\(line,)h(&expansion\);)434
-2462 y(if)g(\(result\))481 2514 y(fprintf)g(\(stderr,)g("\045s\\n",)g
-(expansion\);)434 2618 y(if)g(\(result)g(<)h(0)g(||)f(result)g(==)h
-(2\))481 2670 y({)p eop
-%%Page: 12 14
-12 13 bop 75 -58 a Fp(12)1324 b(GNU)15 b(History)g(Library)529
-149 y Fo(free)23 b(\(expansion\);)529 201 y(continue;)481
-253 y(})434 357 y(add_history)f(\(expansion\);)434 409
-y(strncpy)h(\(line,)g(expansion,)f(sizeof)h(\(line\))g(-)h(1\);)434
-461 y(free)f(\(expansion\);)386 513 y(})338 616 y(if)h(\(strcmp)f
-(\(line,)g("quit"\))g(==)g(0\))386 668 y(done)g(=)h(1;)338
-720 y(else)f(if)h(\(strcmp)f(\(line,)g("save"\))g(==)h(0\))386
-772 y(write_history)e(\("history_file"\);)338 824 y(else)h(if)h
-(\(strcmp)f(\(line,)g("read"\))g(==)h(0\))386 876 y(read_history)e
-(\("history_file"\);)338 928 y(else)h(if)h(\(strcmp)f(\(line,)g
-("list"\))g(==)h(0\))386 980 y({)434 1032 y(register)e(HIST_ENTRY)h
-(**the_list;)434 1083 y(register)f(int)i(i;)434 1187
-y(the_list)e(=)i(history_list)e(\(\);)434 1239 y(if)h(\(the_list\))481
-1291 y(for)h(\(i)f(=)h(0;)g(the_list[i];)e(i++\))529
-1343 y(printf)h(\("\045d:)g(\045s\\n",)g(i)h(+)g(history_base,)e
-(the_list[i]->line\);)386 1395 y(})338 1447 y(else)h(if)h(\(strncmp)f
-(\(line,)g("delete",)g(6\))g(==)h(0\))386 1499 y({)434
-1550 y(int)f(which;)434 1602 y(if)g(\(\(sscanf)g(\(line)g(+)h(6,)f
-("\045d",)h(&which\)\))e(==)i(1\))481 1654 y({)529 1706
-y(HIST_ENTRY)f(*entry)g(=)g(remove_history)f(\(which\);)529
-1758 y(if)i(\(!entry\))577 1810 y(fprintf)f(\(stderr,)f("No)i(such)f
-(entry)g(\045d\\n",)g(which\);)529 1862 y(else)577 1914
-y({)625 1966 y(free)g(\(entry->line\);)625 2017 y(free)g(\(entry\);)577
-2069 y(})481 2121 y(})434 2173 y(else)481 2225 y({)529
-2277 y(fprintf)g(\(stderr,)g("non-numeric)f(arg)h(given)h(to)f
-(`delete'\\n"\);)481 2329 y(})386 2381 y(})290 2433 y(})195
-2484 y(})p eop
-%%Page: 13 15
-13 14 bop 75 -58 a Fp(App)q(endix)17 b(A:)e(Concept)g(Index)1196
-b(13)75 149 y Fl(App)r(endix)25 b(A)41 b(Concept)27 b(Index)75
-321 y Fn(A)75 383 y Fe(anc)o(hored)14 b(searc)o(h)s Fd(.)8
-b(.)e(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)16
-b Fe(8)75 507 y Fn(E)75 568 y Fe(ev)o(en)o(t)d(designators)g
-Fd(.)6 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)23 b
-Fe(1)1012 321 y Fn(H)1012 431 y Fe(history)15 b(ev)o(en)o(ts)d
-Fd(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)24
-b Fe(1)1012 500 y(history)15 b(expansion)8 b Fd(.)g(.)e(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)21 b Fe(1)1012 568 y(History)14 b(Searc)o(hing)6
-b Fd(.)j(.)d(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)19 b
-Fe(8)p eop
-%%Page: 14 16
-14 15 bop 75 -58 a Fp(14)1324 b(GNU)15 b(History)g(Library)p
-eop
-%%Page: 15 17
-15 16 bop 75 -58 a Fp(App)q(endix)17 b(B:)e(F)l(unction)h(and)g(V)l
-(ariable)g(Index)919 b(15)75 149 y Fl(App)r(endix)25
-b(B)41 b(F)-7 b(unction)26 b(and)h(V)-7 b(ariable)26
-b(Index)75 321 y Fn(A)75 382 y Fc(add_histor)o(y)8 b
-Fd(.)e(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)23
-b Fe(6)75 428 y Fc(append_his)o(to)o(ry)8 b Fd(.)s(.)f(.)f(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)21 b Fe(9)75 557 y Fn(C)75 618
-y Fc(clear_hist)o(or)o(y)6 b Fd(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)22 b Fe(6)75 664 y Fc(current_hi)o(st)o(ory)7
-b Fd(.)s(.)f(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)20 b
-Fe(7)75 793 y Fn(G)75 854 y Fc(get_histor)o(y_)o(eve)o(nt)5
-b Fd(.)t(.)h(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)19 b Fe(9)75
-984 y Fn(H)75 1044 y Fc(history_ar)o(g_)o(ext)o(ra)o(ct)5
-b Fd(.)s(.)h(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)18 b Fe(9)75 1090 y Fc(history_ba)o(se)
-6 b Fd(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)22
-b Fe(10)75 1136 y Fc(history_co)o(mm)o(ent)o(_c)o(har)s
-Fd(.)s(.)6 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)16 b Fe(10)75 1182 y Fc(history_ex)o(pa)o(nd)8
-b Fd(.)s(.)f(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)21
-b Fe(9)75 1227 y Fc(history_ex)o(pa)o(nsi)o(on)o(_ch)o(ar)8
-b Fd(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)24 b Fe(10)75 1273 y Fc(history_ge)o(t)8
-b Fd(.)e(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)23
-b Fe(7)75 1319 y Fc(history_ge)o(t_)o(his)o(to)o(ry_)o(sta)o(te)6
-b Fd(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)22 b Fe(6)75 1364 y Fc(history_in)o(hi)o(bit)o(_e)o(xpa)o(nsi)o(on)
-o(_fu)o(nc)o(tio)o(n)9 b Fd(.)d(.)g(.)g(.)g(.)g(.)h(.)24
-b Fe(11)75 1410 y Fc(history_is)o(_s)o(tif)o(le)o(d)6
-b Fd(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)18 b Fe(7)75 1456
-y Fc(history_le)o(ng)o(th)8 b Fd(.)s(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)21 b Fe(10)75 1501 y Fc(history_li)o(st)6 b Fd(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)23 b Fe(7)75
-1547 y Fc(history_ma)o(x_)o(ent)o(ri)o(es)t Fd(.)s(.)6
-b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)17 b Fe(10)75 1593 y Fc(history_no)o(_e)o(xpa)o(nd)o
-(_ch)o(ars)7 b Fd(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)g(.)h(.)23 b Fe(10)75 1638 y Fc(history_qu)o(ot)o(es_)o
-(in)o(hib)o(it_)o(ex)o(pan)o(si)o(on)t Fd(.)s(.)6 b(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)17 b Fe(10)75 1684 y Fc(history_se)o(ar)o(ch)8
-b Fd(.)s(.)f(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)21
-b Fe(8)75 1730 y Fc(history_se)o(ar)o(ch_)o(de)o(lim)o(ite)o(r_)o(cha)o
-(rs)5 b Fd(.)s(.)h(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)18
-b Fe(10)75 1776 y Fc(history_se)o(ar)o(ch_)o(po)o(s)6
-b Fd(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)18 b Fe(8)75 1821
-y Fc(history_se)o(ar)o(ch_)o(pr)o(efi)o(x)s Fd(.)t(.)6
-b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)16 b Fe(8)75 1867 y Fc(history_se)o(t_)o(his)o(to)o(ry_)
-o(sta)o(te)6 b Fd(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)22 b Fe(6)75 1913 y Fc(history_se)o(t_)o(pos)7
-b Fd(.)s(.)f(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)20 b
-Fe(7)1012 321 y Fc(history_sub)o(st)o(_ch)o(ar)t Fd(.)t(.)6
-b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)g(.)19 b Fe(10)1012 368 y Fc(history_tok)o(en)o(ize)
-6 b Fd(.)t(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)20 b Fe(9)1012
-414 y Fc(history_tot)o(al)o(_by)o(te)o(s)5 b Fd(.)s(.)h(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)18 b Fe(7)1012 460 y Fc(history_tru)o(nc)o(ate)o(_f)o(ile)s
-Fd(.)s(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)17 b Fe(9)1012 507 y Fc(history_wor)o(d_)o(del)
-o(im)o(ite)o(rs)7 b Fd(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)24 b Fe(10)1012 640 y Fn(N)1012
-702 y Fc(next_histor)o(y)7 b Fd(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)g(.)h(.)f(.)23 b Fe(7)1012 836 y Fn(P)1012 898 y
-Fc(previous_hi)o(st)o(ory)6 b Fd(.)t(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)20 b Fe(7)1012 1031 y Fn(R)1012 1094 y Fc(read_histor)o(y)7
-b Fd(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)23
-b Fe(8)1012 1140 y Fc(read_histor)o(y_)o(ran)o(ge)5 b
-Fd(.)s(.)h(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)19 b Fe(8)1012 1186
-y Fc(remove_hist)o(or)o(y)9 b Fd(.)s(.)d(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)22 b Fe(6)1012 1233 y Fc(replace_his)o(to)o(ry_)o(en)o(try)s
-Fd(.)s(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)17 b Fe(6)1012 1366 y Fn(S)1012
-1429 y Fc(stifle_hist)o(or)o(y)9 b Fd(.)s(.)d(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)22 b Fe(7)1012 1562 y Fn(U)1012 1624
-y Fc(unstifle_hi)o(st)o(ory)6 b Fd(.)t(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)20 b Fe(7)1012 1671 y Fc(using_histo)o(ry)6 b Fd(.)g(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)22 b Fe(6)1012 1804
-y Fn(W)1012 1866 y Fc(where_histo)o(ry)6 b Fd(.)g(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)h(.)22 b Fe(7)1012 1913 y Fc(write_histo)o(ry)6
-b Fd(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)22
-b Fe(8)p eop
-%%Page: 16 18
-16 17 bop 75 -58 a Fp(16)1324 b(GNU)15 b(History)g(Library)p
-eop
-%%Page: -1 19
--1 18 bop 1862 -58 a Fp(i)75 149 y Fl(T)-7 b(able)27
-b(of)f(Con)n(ten)n(ts)75 320 y Fn(1)67 b(Using)22 b(History)h(In)n
-(teractiv)n(ely)9 b Fb(.)k(.)d(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)h(.)31 b Fn(1)224 389 y Fp(1.1)45 b(History)15
-b(Expansion)5 b Fa(.)j(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)19 b Fp(1)374 444 y(1.1.1)44
-b(Ev)o(en)o(t)14 b(Designators)e Fa(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)26 b Fp(1)374 499 y(1.1.2)44 b(W)l(ord)15
-b(Designators)5 b Fa(.)h(.)i(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)19 b Fp(2)374 553 y(1.1.3)44 b(Mo)q(di\014ers)t Fa(.)8
-b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)19 b Fp(2)75 675 y Fn(2)67 b(Programming)23
-b(with)g(GNU)f(History)16 b Fb(.)10 b(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f
-(.)g(.)38 b Fn(5)224 743 y Fp(2.1)45 b(In)o(tro)q(duction)16
-b(to)f(History)10 b Fa(.)d(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)24 b Fp(5)224 798 y(2.2)45 b(History)15
-b(Storage)c Fa(.)d(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)26 b Fp(5)224 853
-y(2.3)45 b(History)15 b(F)l(unctions)d Fa(.)c(.)f(.)h(.)f(.)h(.)f(.)h
-(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)26
-b Fp(6)374 907 y(2.3.1)44 b(Initializing)18 b(History)d(and)h(State)e
-(Managemen)o(t)g Fa(.)7 b(.)h(.)g(.)f(.)h(.)f(.)29 b
-Fp(6)374 962 y(2.3.2)44 b(History)15 b(List)h(Managemen)o(t)d
-Fa(.)7 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)h(.)f(.)h(.)f(.)29 b Fp(6)374 1017 y(2.3.3)44
-b(Information)15 b(Ab)q(out)g(the)h(History)f(List)c
-Fa(.)d(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)26
-b Fp(7)374 1072 y(2.3.4)44 b(Mo)o(ving)15 b(Around)g(the)g(History)g
-(List)c Fa(.)d(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)25 b Fp(7)374 1127 y(2.3.5)44 b(Searc)o(hing)16
-b(the)f(History)g(List)7 b Fa(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)22
-b Fp(8)374 1181 y(2.3.6)44 b(Managing)15 b(the)g(History)g(File)6
-b Fa(.)i(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)20 b Fp(8)374 1236 y(2.3.7)44
-b(History)15 b(Expansion)9 b Fa(.)f(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)24 b Fp(9)224 1291 y(2.4)45 b(History)15 b(V)l(ariables)6
-b Fa(.)i(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)21 b Fp(10)224 1346 y(2.5)45 b(History)15
-b(Programming)f(Example)7 b Fa(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h
-(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)22
-b Fp(11)75 1467 y Fn(App)r(endix)i(A)67 b(Concept)22
-b(Index)17 b Fb(.)10 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)h(.)f(.)g(.)38 b Fn(13)75 1602 y(App)r(endix)24 b(B)67
-b(F)-6 b(unction)25 b(and)e(V)-6 b(ariable)24 b(Index)16
-b Fb(.)10 b(.)g(.)g(.)38 b Fn(15)p eop
-%%Page: -2 20
--2 19 bop 75 -58 a Fp(ii)1346 b(GNU)15 b(History)g(Library)p
-eop
-%%Trailer
-end
-userdict /end-hook known{end-hook}if
-%%EOF
diff --git a/readline-4.3.orig/doc/history_3.ps b/readline-4.3.orig/doc/history_3.ps
deleted file mode 100644
index f5231a5..0000000
--- a/readline-4.3.orig/doc/history_3.ps
+++ /dev/null
@@ -1,800 +0,0 @@
-%!PS-Adobe-3.0
-%%Creator: groff version 1.16.1
-%%CreationDate: Mon Mar 18 10:17:27 2002
-%%DocumentNeededResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%DocumentSuppliedResources: procset grops 1.16 1
-%%Pages: 7
-%%PageOrder: Ascend
-%%Orientation: Portrait
-%%EndComments
-%%BeginProlog
-%%BeginResource: procset grops 1.16 1
-/setpacking where{
-pop
-currentpacking
-true setpacking
-}if
-/grops 120 dict dup begin
-/SC 32 def
-/A/show load def
-/B{0 SC 3 -1 roll widthshow}bind def
-/C{0 exch ashow}bind def
-/D{0 exch 0 SC 5 2 roll awidthshow}bind def
-/E{0 rmoveto show}bind def
-/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
-/G{0 rmoveto 0 exch ashow}bind def
-/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/I{0 exch rmoveto show}bind def
-/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
-/K{0 exch rmoveto 0 exch ashow}bind def
-/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/M{rmoveto show}bind def
-/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
-/O{rmoveto 0 exch ashow}bind def
-/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/Q{moveto show}bind def
-/R{moveto 0 SC 3 -1 roll widthshow}bind def
-/S{moveto 0 exch ashow}bind def
-/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/SF{
-findfont exch
-[exch dup 0 exch 0 exch neg 0 0]makefont
-dup setfont
-[exch/setfont cvx]cvx bind def
-}bind def
-/MF{
-findfont
-[5 2 roll
-0 3 1 roll
-neg 0 0]makefont
-dup setfont
-[exch/setfont cvx]cvx bind def
-}bind def
-/level0 0 def
-/RES 0 def
-/PL 0 def
-/LS 0 def
-/MANUAL{
-statusdict begin/manualfeed true store end
-}bind def
-/PLG{
-gsave newpath clippath pathbbox grestore
-exch pop add exch pop
-}bind def
-/BP{
-/level0 save def
-1 setlinecap
-1 setlinejoin
-72 RES div dup scale
-LS{
-90 rotate
-}{
-0 PL translate
-}ifelse
-1 -1 scale
-}bind def
-/EP{
-level0 restore
-showpage
-}bind def
-/DA{
-newpath arcn stroke
-}bind def
-/SN{
-transform
-.25 sub exch .25 sub exch
-round .25 add exch round .25 add exch
-itransform
-}bind def
-/DL{
-SN
-moveto
-SN
-lineto stroke
-}bind def
-/DC{
-newpath 0 360 arc closepath
-}bind def
-/TM matrix def
-/DE{
-TM currentmatrix pop
-translate scale newpath 0 0 .5 0 360 arc closepath
-TM setmatrix
-}bind def
-/RC/rcurveto load def
-/RL/rlineto load def
-/ST/stroke load def
-/MT/moveto load def
-/CL/closepath load def
-/FL{
-currentgray exch setgray fill setgray
-}bind def
-/BL/fill load def
-/LW/setlinewidth load def
-/RE{
-findfont
-dup maxlength 1 index/FontName known not{1 add}if dict begin
-{
-1 index/FID ne{def}{pop pop}ifelse
-}forall
-/Encoding exch def
-dup/FontName exch def
-currentdict end definefont pop
-}bind def
-/DEFS 0 def
-/EBEGIN{
-moveto
-DEFS begin
-}bind def
-/EEND/end load def
-/CNT 0 def
-/level1 0 def
-/PBEGIN{
-/level1 save def
-translate
-div 3 1 roll div exch scale
-neg exch neg exch translate
-0 setgray
-0 setlinecap
-1 setlinewidth
-0 setlinejoin
-10 setmiterlimit
-[]0 setdash
-/setstrokeadjust where{
-pop
-false setstrokeadjust
-}if
-/setoverprint where{
-pop
-false setoverprint
-}if
-newpath
-/CNT countdictstack def
-userdict begin
-/showpage{}def
-}bind def
-/PEND{
-clear
-countdictstack CNT sub{end}repeat
-level1 restore
-}bind def
-end def
-/setpacking where{
-pop
-setpacking
-}if
-%%EndResource
-%%IncludeResource: font Times-Roman
-%%IncludeResource: font Times-Bold
-%%IncludeResource: font Times-Italic
-grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
-def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron
-/scaron/zcaron/Ydieresis/trademark/quotesingle/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
-/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
-/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
-/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
-/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
-/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
-/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
-/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
-/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
-/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
-/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
-/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
-/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
-/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
-/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
-/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
-/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
-/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
-/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
-/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
-/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
-/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
-/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
-/Times-Italic@0 ENC0/Times-Italic RE/Times-Bold@0 ENC0/Times-Bold RE
-/Times-Roman@0 ENC0/Times-Roman RE
-%%EndProlog
-%%Page: 1 1
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF(HIST)72 48 Q(OR)-.18 E 357.18(Y\(3\) HIST)-.65 F
-(OR)-.18 E(Y\(3\))-.65 E/F1 10.95/Times-Bold@0 SF -.219(NA)72 84 S(ME)
-.219 E F0(history \255 GNU History Library)108 96 Q F1(COPYRIGHT)72
-112.8 Q F0(The GNU History Library is Cop)108 124.8 Q
-(yright \251 1989-2002 by the Free Softw)-.1 E(are F)-.1 E
-(oundation, Inc.)-.15 E F1(DESCRIPTION)72 141.6 Q F0(Man)108 153.6 Q
-2.81(yp)-.15 G .31(rograms read input from the user a line at a time.)
--2.81 F .309(The GNU History library is able to k)5.309 F .309
-(eep track of)-.1 F .024(those lines, associate arbitrary data with eac\
-h line, and utilize information from pre)108 165.6 R .024
-(vious lines in composing)-.25 F(ne)108 177.6 Q 2.5(wo)-.25 G(nes.)-2.5
-E F1(HIST)72 199.2 Q(OR)-.197 E 2.738(YE)-.383 G(XP)-2.738 E(ANSION)-.81
-E F0 .823(The history library supports a history e)108 211.2 R .822
-(xpansion feature that is identical to the history e)-.15 F .822
-(xpansion in)-.15 F/F2 10/Times-Bold@0 SF(bash.)3.322 E F0
-(This section describes what syntax features are a)108 223.2 Q -.25(va)
--.2 G(ilable.).25 E 1.305(History e)108 240 R 1.305
-(xpansions introduce w)-.15 F 1.306(ords from the history list into the\
- input stream, making it easy to repeat)-.1 F .21
-(commands, insert the ar)108 252 R .21(guments to a pre)-.18 F .209
-(vious command into the current input line, or \214x errors in pre)-.25
-F(vious)-.25 E(commands quickly)108 264 Q(.)-.65 E 1.296(History e)108
-280.8 R 1.297(xpansion is usually performed immediately after a complet\
-e line is read.)-.15 F 1.297(It tak)6.297 F 1.297(es place in tw)-.1 F
-(o)-.1 E 2.855(parts. The)108 292.8 R .354(\214rst is to determine whic\
-h line from the history list to use during substitution.)2.855 F .354
-(The second is to)5.354 F .116
-(select portions of that line for inclusion into the current one.)108
-304.8 R .117(The line selected from the history is the)5.116 F/F3 10
-/Times-Italic@0 SF -.15(ev)2.617 G(ent).15 E F0(,)A .846
-(and the portions of that line that are acted upon are)108 316.8 R F3
-(wor)3.346 E(ds)-.37 E F0 5.846(.V)C(arious)-6.956 E F3(modi\214er)3.346
-E(s)-.1 E F0 .846(are a)3.346 F -.25(va)-.2 G .845(ilable to manipulate)
-.25 F .304(the selected w)108 328.8 R 2.804(ords. The)-.1 F .304
-(line is brok)2.804 F .304(en into w)-.1 F .304(ords in the same f)-.1 F
-.304(ashion as)-.1 F F2(bash)2.804 E F0 .305
-(does when reading input, so)2.804 F .539(that se)108 340.8 R -.15(ve)
--.25 G .539(ral w).15 F .539(ords that w)-.1 F .539
-(ould otherwise be separated are considered one w)-.1 F .538
-(ord when surrounded by quotes)-.1 F .307(\(see the description of)108
-352.8 R F2(history_tok)2.807 E(enize\(\))-.1 E F0(belo)2.807 E 2.807
-(w\). History)-.25 F -.15(ex)2.807 G .307
-(pansions are introduced by the appearance of).15 F .52(the history e)
-108 364.8 R .52(xpansion character)-.15 F 3.02(,w)-.4 G .52(hich is)
--3.02 F F2(!)3.853 E F0 .52(by def)3.853 F 3.02(ault. Only)-.1 F .52
-(backslash \()3.02 F F2(\\).833 E F0 3.02(\)a).833 G .52
-(nd single quotes can quote the)-3.02 F(history e)108 376.8 Q
-(xpansion character)-.15 E(.)-.55 E F2(Ev)87 393.6 Q(ent Designators)-.1
-E F0(An e)108 405.6 Q -.15(ve)-.25 G(nt designator is a reference to a \
-command line entry in the history list.).15 E F2(!)108 422.4 Q F0
-(Start a history substitution, e)32.67 E(xcept when follo)-.15 E
-(wed by a)-.25 E F2(blank)2.5 E F0 2.5(,n)C -.25(ew)-2.5 G
-(line, = or \(.).25 E F2(!)108 434.4 Q F3(n)A F0(Refer to command line)
-27.67 E F3(n)2.5 E F0(.).24 E F2<21ad>108 446.4 Q F3(n)A F0
-(Refer to the current command line minus)21.97 E F3(n)2.5 E F0(.).24 E
-F2(!!)108 458.4 Q F0(Refer to the pre)29.34 E(vious command.)-.25 E
-(This is a synon)5 E(ym for `!\2551'.)-.15 E F2(!)108 470.4 Q F3(string)
-A F0(Refer to the most recent command starting with)9.33 E F3(string)2.5
-E F0(.).22 E F2(!?)108 482.4 Q F3(string)A F2([?])A F0 1.057
-(Refer to the most recent command containing)144 494.4 R F3(string)3.557
-E F0 6.057(.T).22 G 1.057(he trailing)-6.057 F F2(?)3.557 E F0 1.057
-(may be omitted if)3.557 F F3(string)3.557 E F0(is)3.557 E(follo)144
-506.4 Q(wed immediately by a ne)-.25 E(wline.)-.25 E/F4 12/Times-Bold@0
-SF(^)108 523.4 Q F3(string1)-5 I F4(^)5 I F3(string2)-5 I F4(^)5 I F0
-2.66(Quick substitution.)144 530.4 R 2.66
-(Repeat the last command, replacing)7.66 F F3(string1)5.16 E F0(with)
-5.16 E F3(string2)5.16 E F0 7.66(.E).02 G(qui)-7.66 E -.25(va)-.25 G
-2.66(lent to).25 F -.74(``)144 542.4 S(!!:s/).74 E F3(string1)A F0(/)A
-F3(string2)A F0(/')A 2.5('\()-.74 G(see)-2.5 E F2(Modi\214ers)2.5 E F0
-(belo)2.5 E(w\).)-.25 E F2(!#)108 554.4 Q F0
-(The entire command line typed so f)27.67 E(ar)-.1 E(.)-.55 E F2 -.75
-(Wo)87 571.2 S(rd Designators).75 E F0 -.8(Wo)108 583.2 S 1.313
-(rd designators are used to select desired w).8 F 1.314(ords from the e)
--.1 F -.15(ve)-.25 G 3.814(nt. A).15 F F2(:)3.814 E F0 1.314
-(separates the e)3.814 F -.15(ve)-.25 G 1.314(nt speci\214cation).15 F
-.53(from the w)108 595.2 R .529(ord designator)-.1 F 5.529(.I)-.55 G
-3.029(tm)-5.529 G .529(ay be omitted if the w)-3.029 F .529
-(ord designator be)-.1 F .529(gins with a)-.15 F F2(^)3.029 E F0(,)A F2
-($)3.029 E F0(,)A F2(*)3.029 E F0(,)A F2<ad>3.029 E F0 3.029(,o)C(r)
--3.029 E F2(%)3.029 E F0 5.529(.W)C(ords)-6.329 E 1.3
-(are numbered from the be)108 607.2 R 1.3
-(ginning of the line, with the \214rst w)-.15 F 1.301
-(ord being denoted by 0 \(zero\).)-.1 F -.8(Wo)6.301 G 1.301(rds are).8
-F(inserted into the current line separated by single spaces.)108 619.2 Q
-F2 2.5(0\()108 636 S(zer)-2.5 E(o\))-.18 E F0(The zeroth w)144 648 Q 2.5
-(ord. F)-.1 F(or the shell, this is the command w)-.15 E(ord.)-.1 E F3
-(n)108 660 Q F0(The)31 E F3(n)2.5 E F0(th w)A(ord.)-.1 E F2(^)108 672 Q
-F0(The \214rst ar)32.67 E 2.5(gument. That)-.18 F(is, w)2.5 E(ord 1.)-.1
-E F2($)108 684 Q F0(The last ar)31 E(gument.)-.18 E F2(%)108 696 Q F0
-(The w)26 E(ord matched by the most recent `?)-.1 E F3(string)A F0
-(?' search.)A F3(x)108 708 Q F2<ad>A F3(y)A F0 2.5(Ar)21.42 G(ange of w)
--2.5 E(ords; `\255)-.1 E F3(y)A F0 2.5('a)C(bbre)-2.5 E(viates `0\255)
--.25 E F3(y)A F0('.)A(GNU History 4.3)72 768 Q(2002 January 31)131.79 E
-(1)195.95 E EP
-%%Page: 2 2
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF(HIST)72 48 Q(OR)-.18 E 357.18(Y\(3\) HIST)-.65 F
-(OR)-.18 E(Y\(3\))-.65 E/F1 10/Times-Bold@0 SF(*)108 84 Q F0 .316
-(All of the w)31 F .316(ords b)-.1 F .316(ut the zeroth.)-.2 F .315
-(This is a synon)5.315 F .315(ym for `)-.15 F/F2 10/Times-Italic@0 SF
-(1\255$)A F0 2.815('. It)B .315(is not an error to use)2.815 F F1(*)
-2.815 E F0 .315(if there is)2.815 F(just one w)144 96 Q(ord in the e)-.1
-E -.15(ve)-.25 G(nt; the empty string is returned in that case.).15 E F1
-(x*)108 108 Q F0(Abbre)26 E(viates)-.25 E F2(x\255$)2.5 E F0(.)A F1
-<78ad>108 120 Q F0(Abbre)25.3 E(viates)-.25 E F2(x\255$)2.5 E F0(lik)2.5
-E(e)-.1 E F1(x*)2.5 E F0 2.5(,b)C(ut omits the last w)-2.7 E(ord.)-.1 E
-(If a w)108 136.8 Q(ord designator is supplied without an e)-.1 E -.15
-(ve)-.25 G(nt speci\214cation, the pre).15 E
-(vious command is used as the e)-.25 E -.15(ve)-.25 G(nt.).15 E F1
-(Modi\214ers)87 153.6 Q F0 .183(After the optional w)108 165.6 R .183
-(ord designator)-.1 F 2.683(,t)-.4 G .184
-(here may appear a sequence of one or more of the follo)-2.683 F .184
-(wing modi\214ers,)-.25 F(each preceded by a `:'.)108 177.6 Q F1(h)108
-194.4 Q F0(Remo)30.44 E .3 -.15(ve a t)-.15 H
-(railing \214le name component, lea).15 E(ving only the head.)-.2 E F1
-(t)108 206.4 Q F0(Remo)32.67 E .3 -.15(ve a)-.15 H
-(ll leading \214le name components, lea).15 E(ving the tail.)-.2 E F1(r)
-108 218.4 Q F0(Remo)31.56 E .3 -.15(ve a t)-.15 H(railing suf).15 E
-(\214x of the form)-.25 E F2(.xxx)2.5 E F0 2.5(,l)C(ea)-2.5 E
-(ving the basename.)-.2 E F1(e)108 230.4 Q F0(Remo)31.56 E .3 -.15(ve a)
--.15 H(ll b).15 E(ut the trailing suf)-.2 E(\214x.)-.25 E F1(p)108 242.4
-Q F0(Print the ne)30.44 E 2.5(wc)-.25 G(ommand b)-2.5 E(ut do not e)-.2
-E -.15(xe)-.15 G(cute it.).15 E F1(q)108 254.4 Q F0
-(Quote the substituted w)30.44 E(ords, escaping further substitutions.)
--.1 E F1(x)108 266.4 Q F0(Quote the substituted w)31 E(ords as with)-.1
-E F1(q)2.5 E F0 2.5(,b)C(ut break into w)-2.7 E(ords at)-.1 E F1(blanks)
-2.5 E F0(and ne)2.5 E(wlines.)-.25 E F1(s/)108 278.4 Q F2(old)A F1(/)A
-F2(ne)A(w)-.15 E F1(/)A F0(Substitute)144 290.4 Q F2(ne)2.814 E(w)-.15 E
-F0 .314(for the \214rst occurrence of)2.814 F F2(old)2.814 E F0 .314
-(in the e)2.814 F -.15(ve)-.25 G .314(nt line.).15 F(An)5.314 E 2.814
-(yd)-.15 G .314(elimiter can be used in place)-2.814 F .616(of /.)144
-302.4 R .617
-(The \214nal delimiter is optional if it is the last character of the e)
-5.616 F -.15(ve)-.25 G .617(nt line.).15 F .617(The delimiter may)5.617
-F .75(be quoted in)144 314.4 R F2(old)3.25 E F0(and)3.25 E F2(ne)3.25 E
-(w)-.15 E F0 .75(with a single backslash.)3.25 F .749(If & appears in)
-5.75 F F2(ne)3.249 E(w)-.15 E F0 3.249(,i).31 G 3.249(ti)-3.249 G 3.249
-(sr)-3.249 G .749(eplaced by)-3.249 F F2(old)3.249 E F0 5.749(.A).77 G
-.369(single backslash will quote the &.)144 326.4 R(If)5.369 E F2(old)
-2.869 E F0 .37(is null, it is set to the last)2.869 F F2(old)2.87 E F0
-.37(substituted, or)2.87 F 2.87(,i)-.4 G 2.87(fn)-2.87 G 2.87(op)-2.87 G
-(re)-2.87 E(vi-)-.25 E(ous history substitutions took place, the last)
-144 338.4 Q F2(string)2.5 E F0(in a)2.5 E F1(!?)2.5 E F2(string)A F1
-([?])A F0(search.)5 E F1(&)108 350.4 Q F0(Repeat the pre)27.67 E
-(vious substitution.)-.25 E F1(g)108 362.4 Q F0 .398
-(Cause changes to be applied o)31 F -.15(ve)-.15 G 2.898(rt).15 G .398
-(he entire e)-2.898 F -.15(ve)-.25 G .398(nt line.).15 F .397
-(This is used in conjunction with `)5.398 F F1(:s)A F0 2.897('\()C
-(e.g.,)-2.897 E(`)144 374.4 Q F1(:gs/)A F2(old)A F1(/)A F2(ne)A(w)-.15 E
-F1(/)A F0 1.218('\) or `)B F1(:&)A F0 3.718('. If)B 1.218(used with `)
-3.718 F F1(:s)A F0 1.218(', an)B 3.718(yd)-.15 G 1.219
-(elimiter can be used in place of /, and the \214nal)-3.718 F
-(delimiter is optional if it is the last character of the e)144 386.4 Q
--.15(ve)-.25 G(nt line.).15 E/F3 10.95/Times-Bold@0 SF(PR)72 403.2 Q
-(OGRAMMING WITH HIST)-.329 E(OR)-.197 E 2.738(YF)-.383 G(UNCTIONS)-2.738
-E F0(This section describes ho)108 415.2 Q 2.5(wt)-.25 G 2.5(ou)-2.5 G
-(se the History library in other programs.)-2.5 E F1(Intr)87 432 Q
-(oduction to History)-.18 E F0 .797
-(The programmer using the History library has a)108 444 R -.25(va)-.2 G
-.796(ilable functions for remembering lines on a history list,).25 F
-.307(associating arbitrary data with a line, remo)108 456 R .308
-(ving lines from the list, searching through the list for a line con-)
--.15 F .303(taining an arbitrary te)108 468 R .303
-(xt string, and referencing an)-.15 F 2.803(yl)-.15 G .303
-(ine in the list directly)-2.803 F 5.303(.I)-.65 G 2.803(na)-5.303 G
-.303(ddition, a history)-2.803 F F2 -.2(ex)2.802 G(pansion).2 E F0
-(function is a)108 480 Q -.25(va)-.2 G(ilable which pro).25 E
-(vides for a consistent user interf)-.15 E(ace across dif)-.1 E
-(ferent programs.)-.25 E .059(The user using programs written with the \
-History library has the bene\214t of a consistent user interf)108 496.8
-R .059(ace with a)-.1 F .918(set of well-kno)108 508.8 R .917
-(wn commands for manipulating the te)-.25 F .917(xt of pre)-.15 F .917
-(vious lines and using that te)-.25 F .917(xt in ne)-.15 F 3.417(wc)-.25
-G(om-)-3.417 E 4.183(mands. The)108 520.8 R 1.684(basic history manipul\
-ation commands are identical to the history substitution pro)4.183 F
-1.684(vided by)-.15 F F1(bash)108 532.8 Q F0(.)A .904
-(If the programmer desires, he can use the Readline library)108 549.6 R
-3.403(,w)-.65 G .903(hich includes some history manipulation by)-3.403 F
-(def)108 561.6 Q(ault, and has the added adv)-.1 E
-(antage of command line editing.)-.25 E .39(Before declaring an)108
-578.4 R 2.89(yf)-.15 G .39(unctions using an)-2.89 F 2.89(yf)-.15 G .39
-(unctionality the History library pro)-2.89 F .39
-(vides in other code, an appli-)-.15 F .067
-(cation writer should include the \214le)108 590.4 R F2(<r)4.233 E
-(eadline/history)-.37 E(.h>)-.55 E F0 .067(in an)4.233 F 2.566<798c>-.15
-G .066(le that uses the History library')-2.566 F 2.566(sf)-.55 G
-(eatures.)-2.566 E .538(It supplies e)108 602.4 R .538
-(xtern declarations for all of the library')-.15 F 3.038(sp)-.55 G .538
-(ublic functions and v)-3.038 F .539(ariables, and declares all of the)
--.25 F(public data structures.)108 614.4 Q F1(History Storage)87 643.2 Q
-F0(The history list is an array of history entries.)108 655.2 Q 2.5(Ah)5
-G(istory entry is declared as follo)-2.5 E(ws:)-.25 E F2(typedef void *)
-108 672 Q F1(histdata_t;)2.5 E F0(typedef struct _hist_entry {)108 688.8
-Q(char *line;)113 700.8 Q(histdata_t data;)113 712.8 Q 2.5(}H)108 724.8
-S(IST_ENTR)-2.5 E -.92(Y;)-.65 G(GNU History 4.3)72 768 Q
-(2002 January 31)131.79 E(2)195.95 E EP
-%%Page: 3 3
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF(HIST)72 48 Q(OR)-.18 E 357.18(Y\(3\) HIST)-.65 F
-(OR)-.18 E(Y\(3\))-.65 E
-(The history list itself might therefore be declared as)108 84 Q/F1 10
-/Times-Italic@0 SF(HIST_ENTR)108 100.8 Q 2.5(Y*)-.18 G(*)-2.5 E/F2 10
-/Times-Bold@0 SF(the_history_list;)2.5 E F0(The state of the History li\
-brary is encapsulated into a single structure:)108 117.6 Q(/*)108 134.4
-Q 2.5(*As)110.5 146.4 S
-(tructure used to pass around the current state of the history)-2.5 E(.)
--.65 E(*/)110.5 158.4 Q(typedef struct _hist_state {)108 170.4 Q
-(HIST_ENTR)113 182.4 Q 2.5(Y*)-.65 G
-(*entries; /* Pointer to the entries themselv)-2.5 E(es. */)-.15 E
-(int of)113 194.4 Q 25(fset; /*)-.25 F
-(The location pointer within this array)2.5 E 2.5(.*)-.65 G(/)-2.5 E
-(int length;)113 206.4 Q(/* Number of elements within this array)27.5 E
-2.5(.*)-.65 G(/)-2.5 E(int size;)113 218.4 Q
-(/* Number of slots allocated to this array)32.5 E 2.5(.*)-.65 G(/)-2.5
-E(int \215ags;)113 230.4 Q 2.5(}H)108 242.4 S(IST)-2.5 E(OR)-.18 E(Y_ST)
--.65 E -1.11(AT)-.93 G(E;)1.11 E(If the \215ags member includes)108
-259.2 Q F2(HS_STIFLED)2.5 E F0 2.5(,t)C(he history has been sti\215ed.)
--2.5 E/F3 10.95/Times-Bold@0 SF(History Functions)72 276 Q F0
-(This section describes the calling sequence for the v)108 288 Q
-(arious functions e)-.25 E(xported by the GNU History library)-.15 E(.)
--.65 E F2(Initializing History and State Management)87 304.8 Q F0 1.274
-(This section describes functions used to initialize and manage the sta\
-te of the History library when you)108 316.8 R -.1(wa)108 328.8 S
-(nt to use the history functions in your program.).1 E F1(void)108 352.8
-Q F2(using_history)2.5 E F0(\()4.166 E F1(void)A F0(\))1.666 E(Be)108
-364.8 Q(gin a session in which the history functions might be used.)-.15
-E(This initializes the interacti)5 E .3 -.15(ve v)-.25 H(ariables.)-.1 E
-F1(HIST)108 388.8 Q(OR)-.18 E(Y_ST)-.18 E -.37(AT)-.5 G 2.5(E*).37 G F2
-(history_get_history_state)A F0(\()4.166 E F1(void)A F0(\))1.666 E
-(Return a structure describing the current state of the input history)
-108 400.8 Q(.)-.65 E F1(void)108 424.8 Q F2(history_set_history_state)
-2.5 E F0(\()4.166 E F1(HIST)A(OR)-.18 E(Y_ST)-.18 E -.37(AT)-.5 G 2.5
-(E*).37 G(state)-2.5 E F0(\))1.666 E
-(Set the state of the history list according to)108 436.8 Q F1(state)2.5
-E F0(.)A F2(History List Management)87 465.6 Q F0
-(These functions manage indi)108 477.6 Q(vidual entries on the history \
-list, or set parameters managing the list itself.)-.25 E F1(void)108
-501.6 Q F2(add_history)2.5 E F0(\()4.166 E F1(const c)A(har *string)-.15
-E F0(\))1.666 E(Place)108 513.6 Q F1(string)2.5 E F0
-(at the end of the history list.)2.5 E
-(The associated data \214eld \(if an)5 E(y\) is set to)-.15 E F2(NULL)
-2.5 E F0(.)A F1(HIST_ENTR)108 537.6 Q 2.5(Y*)-.18 G F2 -.18(re)C(mo).18
-E -.1(ve)-.1 G(_history).1 E F0(\()4.166 E F1(int whic)A(h)-.15 E F0(\))
-1.666 E(Remo)108 549.6 Q .352 -.15(ve h)-.15 H .052(istory entry at of)
-.15 F(fset)-.25 E F1(whic)2.553 E(h)-.15 E F0 .053(from the history)
-2.553 F 5.053(.T)-.65 G .053(he remo)-5.053 F -.15(ve)-.15 G 2.553(de)
-.15 G .053(lement is returned so you can free the)-2.553 F
-(line, data, and containing structure.)108 561.6 Q F1(HIST_ENTR)108
-585.6 Q 2.5(Y*)-.18 G F2 -.18(re)C(place_history_entry).18 E F0(\()4.166
-E F1(int whic)A -.834(h, const)-.15 F -.15(ch)2.5 G(ar *line).15 E 1.666
-(,h)-.1 G(istdata_t data)-1.666 E F0(\))3.332 E(Mak)108 597.6 Q 2.868
-(et)-.1 G .368(he history entry at of)-2.868 F(fset)-.25 E F1(whic)2.868
-E(h)-.15 E F0(ha)2.868 E -.15(ve)-.2 G F1(line)3.018 E F0(and)2.868 E F1
-(data)2.868 E F0 5.367(.T)C .367
-(his returns the old entry so you can dispose of)-5.367 F(the data.)108
-609.6 Q(In the case of an in)5 E -.25(va)-.4 G(lid).25 E F1(whic)2.5 E
-(h)-.15 E F0 2.5(,a)C F2(NULL)A F0(pointer is returned.)2.5 E F1(void)
-108 633.6 Q F2(clear_history)2.5 E F0(\()4.166 E F1(void)A F0(\))1.666 E
-(Clear the history list by deleting all the entries.)108 645.6 Q F1
-(void)108 669.6 Q F2(sti\215e_history)2.5 E F0(\()4.166 E F1(int max)A
-F0(\))1.666 E(Sti\215e the history list, remembering only the last)108
-681.6 Q F1(max)2.5 E F0(entries.)2.5 E F1(int)108 705.6 Q F2
-(unsti\215e_history)2.5 E F0(\()4.166 E F1(void)A F0(\))1.666 E .46
-(Stop sti\215ing the history)108 717.6 R 5.46(.T)-.65 G .46
-(his returns the pre)-5.46 F .46
-(viously-set maximum number of history entries \(as set by)-.25 F F2
-(sti-)2.96 E(\215e_history\(\))108 729.6 Q F0 2.5(\). history)B -.1(wa)
-2.5 G 2.5(ss).1 G 2.5(ti\215ed. The)-2.5 F -.25(va)2.5 G(lue is positi)
-.25 E .3 -.15(ve i)-.25 H 2.5(ft).15 G(he history w)-2.5 E
-(as sti\215ed, ne)-.1 E -.05(ga)-.15 G(ti).05 E .3 -.15(ve i)-.25 H 2.5
-(fi).15 G 2.5(tw)-2.5 G(asn')-2.6 E(t.)-.18 E(GNU History 4.3)72 768 Q
-(2002 January 31)131.79 E(3)195.95 E EP
-%%Page: 4 4
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF(HIST)72 48 Q(OR)-.18 E 357.18(Y\(3\) HIST)-.65 F
-(OR)-.18 E(Y\(3\))-.65 E/F1 10/Times-Italic@0 SF(int)108 84 Q/F2 10
-/Times-Bold@0 SF(history_is_sti\215ed)2.5 E F0(\()4.166 E F1(void)A F0
-(\))1.666 E
-(Returns non-zero if the history is sti\215ed, zero if it is not.)108 96
-Q F2(Inf)87 124.8 Q(ormation About the History List)-.25 E F0(These fun\
-ctions return information about the entire history list or indi)108
-136.8 Q(vidual list entries.)-.25 E F1(HIST_ENTR)108 160.8 Q 2.5(Y*)-.18
-G(*)-2.5 E F2(history_list)2.5 E F0(\()4.166 E F1(void)A F0(\))1.666 E
-.708(Return a)108 172.8 R F2(NULL)3.208 E F0 .708(terminated array of)
-3.208 F F1(HIST_ENTR)3.208 E 3.208(Y*)-.18 G F0 .708
-(which is the current input history)B 5.707(.E)-.65 G .707
-(lement 0 of this)-5.707 F(list is the be)108 184.8 Q(ginning of time.)
--.15 E(If there is no history)5 E 2.5(,r)-.65 G(eturn)-2.5 E F2(NULL)2.5
-E F0(.)A F1(int)108 208.8 Q F2(wher)2.5 E(e_history)-.18 E F0(\()4.166 E
-F1(void)A F0(\))1.666 E(Returns the of)108 220.8 Q
-(fset of the current history element.)-.25 E F1(HIST_ENTR)108 244.8 Q
-2.5(Y*)-.18 G F2(curr)A(ent_history)-.18 E F0(\()4.166 E F1(void)A F0
-(\))1.666 E 1.373
-(Return the history entry at the current position, as determined by)108
-256.8 R F2(wher)3.873 E(e_history\(\))-.18 E F0 6.373(.I)C 3.873(ft)
--6.373 G 1.374(here is no entry)-3.873 F(there, return a)108 268.8 Q F2
-(NULL)2.5 E F0(pointer)2.5 E(.)-.55 E F1(HIST_ENTR)108 292.8 Q 2.5(Y*)
--.18 G F2(history_get)A F0(\()4.166 E F1(int of)A(fset)-.18 E F0(\))
-1.666 E .288(Return the history entry at position)108 304.8 R F1(of)
-2.787 E(fset)-.18 E F0 2.787(,s)C .287(tarting from)-2.787 F F2
-(history_base)2.787 E F0 5.287(.I)C 2.787(ft)-5.287 G .287
-(here is no entry there, or if)-2.787 F F1(of)2.787 E(fset)-.18 E F0
-(is greater than the history length, return a)108 316.8 Q F2(NULL)2.5 E
-F0(pointer)2.5 E(.)-.55 E F1(int)108 340.8 Q F2(history_total_bytes)2.5
-E F0(\()4.166 E F1(void)A F0(\))1.666 E .391
-(Return the number of bytes that the primary history entries are using.)
-108 352.8 R .392(This function returns the sum of the)5.392 F
-(lengths of all the lines in the history)108 364.8 Q(.)-.65 E F2(Mo)87
-393.6 Q(ving Ar)-.1 E(ound the History List)-.18 E F0
-(These functions allo)108 405.6 Q 2.5(wt)-.25 G(he current inde)-2.5 E
-2.5(xi)-.15 G(nto the history list to be set or changed.)-2.5 E F1(int)
-108 429.6 Q F2(history_set_pos)2.5 E F0(\()4.166 E F1(int pos)A F0(\))
-1.666 E .79(Set the current history of)108 441.6 R .79(fset to)-.25 F F1
-(pos)3.29 E F0 3.29(,a)C 3.29(na)-3.29 G .79(bsolute inde)-3.29 F 3.29
-(xi)-.15 G .79(nto the list.)-3.29 F .79(Returns 1 on success, 0 if)5.79
-F F1(pos)3.29 E F0 .79(is less)3.29 F
-(than zero or greater than the number of history entries.)108 453.6 Q F1
-(HIST_ENTR)108 477.6 Q 2.5(Y*)-.18 G F2(pr)A -.15(ev)-.18 G
-(ious_history).15 E F0(\()4.166 E F1(void)A F0(\))1.666 E .207
-(Back up the current history of)108 489.6 R .207(fset to the pre)-.25 F
-.207(vious history entry)-.25 F 2.708(,a)-.65 G .208
-(nd return a pointer to that entry)-2.708 F 5.208(.I)-.65 G 2.708(ft)
--5.208 G .208(here is)-2.708 F(no pre)108 501.6 Q(vious entry)-.25 E 2.5
-(,r)-.65 G(eturn a)-2.5 E F2(NULL)2.5 E F0(pointer)2.5 E(.)-.55 E F1
-(HIST_ENTR)108 525.6 Q 2.5(Y*)-.18 G F2(next_history)A F0(\()4.166 E F1
-(void)A F0(\))1.666 E(Mo)108 537.6 Q 1.047 -.15(ve t)-.15 H .747
-(he current history of).15 F .747(fset forw)-.25 F .746(ard to the ne)
--.1 F .746(xt history entry)-.15 F 3.246(,a)-.65 G .746
-(nd return the a pointer to that entry)-3.246 F 5.746(.I)-.65 G(f)-5.746
-E(there is no ne)108 549.6 Q(xt entry)-.15 E 2.5(,r)-.65 G(eturn a)-2.5
-E F2(NULL)2.5 E F0(pointer)2.5 E(.)-.55 E F2(Sear)87 578.4 Q
-(ching the History List)-.18 E F0 .005(These functions allo)108 590.4 R
-2.505(ws)-.25 G .006(earching of the history list for entries containin\
-g a speci\214c string.)-2.505 F .006(Searching may be)5.006 F 1.452
-(performed both forw)108 602.4 R 1.452(ard and backw)-.1 F 1.451
-(ard from the current history position.)-.1 F 1.451(The search may be)
-6.451 F F1(anc)3.951 E(hor)-.15 E(ed)-.37 E F0(,)A
-(meaning that the string must match at the be)108 614.4 Q
-(ginning of the history entry)-.15 E(.)-.65 E F1(int)108 638.4 Q F2
-(history_sear)2.5 E(ch)-.18 E F0(\()4.166 E F1(const c)A(har *string)
--.15 E 1.666(,i)-.1 G(nt dir)-1.666 E(ection)-.37 E F0(\))1.666 E .155
-(Search the history for)108 650.4 R F1(string)2.655 E F0 2.656(,s)C .156
-(tarting at the current history of)-2.656 F 2.656(fset. If)-.25 F F1
-(dir)2.656 E(ection)-.37 E F0 .156(is less than 0, then the search)2.656
-F .802(is through pre)108 662.4 R .802
-(vious entries, otherwise through subsequent entries.)-.25 F(If)5.801 E
-F1(string)3.301 E F0 .801(is found, then the current his-)3.301 F .064
-(tory inde)108 674.4 R 2.564(xi)-.15 G 2.564(ss)-2.564 G .064
-(et to that history entry)-2.564 F 2.564(,a)-.65 G .064(nd the v)-2.564
-F .064(alue returned is the of)-.25 F .064
-(fset in the line of the entry where)-.25 F F1(string)2.565 E F0 -.1(wa)
-108 686.4 S 2.5(sf).1 G 2.5(ound. Otherwise,)-2.5 F
-(nothing is changed, and a -1 is returned.)2.5 E F1(int)108 710.4 Q F2
-(history_sear)2.5 E(ch_pr)-.18 E(e\214x)-.18 E F0(\()4.166 E F1(const c)
-A(har *string)-.15 E 1.666(,i)-.1 G(nt dir)-1.666 E(ection)-.37 E F0(\))
-1.666 E .684(Search the history for)108 722.4 R F1(string)3.183 E F0
-3.183(,s)C .683(tarting at the current history of)-3.183 F 3.183
-(fset. The)-.25 F .683(search is anchored: matching lines)3.183 F
-(GNU History 4.3)72 768 Q(2002 January 31)131.79 E(4)195.95 E EP
-%%Page: 5 5
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF(HIST)72 48 Q(OR)-.18 E 357.18(Y\(3\) HIST)-.65 F
-(OR)-.18 E(Y\(3\))-.65 E 1.063(must be)108 84 R 1.063(gin with)-.15 F/F1
-10/Times-Italic@0 SF(string)3.563 E F0 6.063(.I)C(f)-6.063 E F1(dir)
-3.563 E(ection)-.37 E F0 1.064
-(is less than 0, then the search is through pre)3.563 F 1.064
-(vious entries, otherwise)-.25 F 1.115(through subsequent entries.)108
-96 R(If)6.115 E F1(string)3.615 E F0 1.115
-(is found, then the current history inde)3.615 F 3.614(xi)-.15 G 3.614
-(ss)-3.614 G 1.114(et to that entry)-3.614 F 3.614(,a)-.65 G 1.114
-(nd the)-3.614 F(return v)108 108 Q(alue is 0.)-.25 E
-(Otherwise, nothing is changed, and a -1 is returned.)5 E F1(int)108 132
-Q/F2 10/Times-Bold@0 SF(history_sear)2.5 E(ch_pos)-.18 E F0(\()4.166 E
-F1(const c)A(har *string)-.15 E 1.666(,i)-.1 G(nt dir)-1.666 E -.834
-(ection, int)-.37 F(pos)2.5 E F0(\))3.332 E .603(Search for)108 144 R F1
-(string)3.103 E F0 .603(in the history list, starting at)3.103 F F1(pos)
-3.104 E F0 3.104(,a)C 3.104(na)-3.104 G .604(bsolute inde)-3.104 F 3.104
-(xi)-.15 G .604(nto the list.)-3.104 F(If)5.604 E F1(dir)3.104 E(ection)
--.37 E F0 .604(is ne)3.104 F -.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G(,)
-.15 E .608(the search proceeds backw)108 156 R .608(ard from)-.1 F F1
-(pos)3.108 E F0 3.108(,o)C .608(therwise forw)-3.108 F 3.108
-(ard. Returns)-.1 F .608(the absolute inde)3.108 F 3.108(xo)-.15 G 3.108
-(ft)-3.108 G .608(he history ele-)-3.108 F(ment where)108 168 Q F1
-(string)2.5 E F0 -.1(wa)2.5 G 2.5(sf).1 G(ound, or -1 otherwise.)-2.5 E
-F2(Managing the History File)87 196.8 Q F0 .035(The History library can\
- read the history from and write it to a \214le.)108 208.8 R .036
-(This section documents the functions for)5.035 F
-(managing a history \214le.)108 220.8 Q F1(int)108 244.8 Q F2 -.18(re)
-2.5 G(ad_history).18 E F0(\()4.166 E F1(const c)A(har *\214lename)-.15 E
-F0(\))1.666 E .151(Add the contents of)108 256.8 R F1(\214lename)2.651 E
-F0 .151(to the history list, a line at a time.)2.651 F(If)5.15 E F1
-(\214lename)2.65 E F0(is)2.65 E F2(NULL)2.65 E F0 2.65(,t)C .15
-(hen read from)-2.65 F F1(~/.his-)2.65 E(tory)108 268.8 Q F0 5(.R)C
-(eturns 0 if successful, or)-5 E F2(err)2.5 E(no)-.15 E F0(if not.)2.5 E
-F1(int)108 292.8 Q F2 -.18(re)2.5 G(ad_history_range).18 E F0(\()4.166 E
-F1(const c)A(har *\214lename)-.15 E 1.666(,i)-.1 G(nt fr)-1.666 E -.834
-(om, int)-.45 F(to)2.5 E F0(\))3.332 E .052(Read a range of lines from)
-108 304.8 R F1(\214lename)2.553 E F0 2.553(,a)C .053
-(dding them to the history list.)-2.553 F .053(Start reading at line)
-5.053 F F1(fr)2.553 E(om)-.45 E F0 .053(and end at)2.553 F F1(to)2.553 E
-F0(.)A(If)108 316.8 Q F1(fr)2.889 E(om)-.45 E F0 .389
-(is zero, start at the be)2.889 F 2.889(ginning. If)-.15 F F1(to)2.889 E
-F0 .389(is less than)2.889 F F1(fr)2.889 E(om)-.45 E F0 2.889(,t)C .388
-(hen read until the end of the \214le.)-2.889 F(If)5.388 E F1
-(\214lename)2.888 E F0(is)108 328.8 Q F2(NULL)2.5 E F0 2.5(,t)C
-(hen read from)-2.5 E F1(~/.history)2.5 E F0 5(.R)C
-(eturns 0 if successful, or)-5 E F2(err)2.5 E(no)-.15 E F0(if not.)2.5 E
-F1(int)108 352.8 Q F2(write_history)2.5 E F0(\()4.166 E F1(const c)A
-(har *\214lename)-.15 E F0(\))1.666 E .961(Write the current history to)
-108 364.8 R F1(\214lename)3.461 E F0 3.461(,o)C -.15(ve)-3.611 G
-(rwriting).15 E F1(\214lename)3.461 E F0 .961(if necessary)3.461 F 5.961
-(.I)-.65 G(f)-5.961 E F1(\214lename)3.462 E F0(is)3.462 E F2(NULL)3.462
-E F0 3.462(,t)C .962(hen write)-3.462 F(the history list to)108 376.8 Q
-F1(~/.history)2.5 E F0 5(.R)C(eturns 0 on success, or)-5 E F2(err)2.5 E
-(no)-.15 E F0(on a read or write error)2.5 E(.)-.55 E F1(int)108 412.8 Q
-F2(append_history)2.5 E F0(\()4.166 E F1(int nelements,)A(const c)1.666
-E(har *\214lename)-.15 E F0(\))1.666 E .839(Append the last)108 424.8 R
-F1(nelements)3.339 E F0 .839(of the history list to)3.339 F F1
-(\214lename)3.339 E F0 5.839(.I)C(f)-5.839 E F1(\214lename)3.339 E F0
-(is)3.339 E F2(NULL)3.339 E F0 3.339(,t)C .838(hen append to)-3.339 F F1
-(~/.history)3.338 E F0(.)A(Returns 0 on success, or)108 436.8 Q F2(err)
-2.5 E(no)-.15 E F0(on a read or write error)2.5 E(.)-.55 E F1(int)108
-460.8 Q F2(history_truncate_\214le)2.5 E F0(\()4.166 E F1(const c)A
-(har *\214lename)-.15 E 1.666(,i)-.1 G(nt nlines)-1.666 E F0(\))1.666 E
--.35(Tr)108 472.8 S .38(uncate the history \214le).35 F F1(\214lename)
-2.88 E F0 2.88(,l)C(ea)-2.88 E .38(ving only the last)-.2 F F1(nlines)
-2.881 E F0 2.881(lines. If)2.881 F F1(\214lename)2.881 E F0(is)2.881 E
-F2(NULL)2.881 E F0 2.881(,t)C(hen)-2.881 E F1(~/.history)2.881 E F0(is)
-2.881 E 2.5(truncated. Returns)108 484.8 R 2.5(0o)2.5 G 2.5(ns)-2.5 G
-(uccess, or)-2.5 E F2(err)2.5 E(no)-.15 E F0(on f)2.5 E(ailure.)-.1 E F2
-(History Expansion)87 513.6 Q F0(These functions implement history e)108
-525.6 Q(xpansion.)-.15 E F1(int)108 549.6 Q F2(history_expand)2.5 E F0
-(\()4.166 E F1 -.15(ch)C(ar *string).15 E 1.666(,c)-.1 G(har **output)
--1.816 E F0(\))1.666 E(Expand)108 561.6 Q F1(string)2.5 E F0 2.5(,p)C
-(lacing the result into)-2.5 E F1(output)2.5 E F0 2.5(,ap)C
-(ointer to a string.)-2.5 E(Returns:)5 E 31(0I)144 573.6 S 3.066(fn)-31
-G 3.066(oe)-3.066 G .566(xpansions took place \(or)-3.216 F 3.065(,i)-.4
-G 3.065(ft)-3.065 G .565(he only change in the te)-3.065 F .565(xt w)
--.15 F .565(as the remo)-.1 F -.25(va)-.15 G 3.065(lo).25 G 3.065(fe)
--3.065 G(scape)-3.065 E(characters preceding the history e)180 585.6 Q
-(xpansion character\);)-.15 E 31(1i)144 597.6 S 2.5(fe)-31 G
-(xpansions did tak)-2.65 E 2.5(ep)-.1 G(lace;)-2.5 E 25.17(-1 if)144
-609.6 R(there w)2.5 E(as an error in e)-.1 E(xpansion;)-.15 E 31(2i)144
-621.6 S 2.5(ft)-31 G(he returned line should be displayed, b)-2.5 E
-(ut not e)-.2 E -.15(xe)-.15 G(cuted, as with the).15 E F2(:p)2.5 E F0
-(modi\214er)2.5 E(.)-.55 E(If an error ocurred in e)108 633.6 Q
-(xpansion, then)-.15 E F1(output)2.5 E F0(contains a descripti)2.5 E .3
--.15(ve e)-.25 H(rror message.).15 E F1 -.15(ch)108 657.6 S(ar *).15 E
-F2(get_history_e)2.5 E -.1(ve)-.15 G(nt).1 E F0(\()4.166 E F1(const c)A
-(har *string)-.15 E 1.666(,i)-.1 G(nt *cinde)-1.666 E -.834(x, int)-.2 F
-(qc)2.5 E(har)-.15 E F0(\))3.332 E .262(Returns the te)108 669.6 R .262
-(xt of the history e)-.15 F -.15(ve)-.25 G .262(nt be).15 F .263
-(ginning at)-.15 F F1(string)2.763 E F0(+)2.763 E F1(*cinde)2.763 E(x)
--.2 E F0(.)A F1(*cinde)5.263 E(x)-.2 E F0 .263
-(is modi\214ed to point to after the)2.763 F -2.15 -.25(ev e)108 681.6 T
-.71(nt speci\214er).25 F 5.71(.A)-.55 G 3.21(tf)-5.71 G .71
-(unction entry)-3.21 F(,)-.65 E F1(cinde)3.21 E(x)-.2 E F0 .709
-(points to the inde)3.21 F 3.209(xi)-.15 G(nto)-3.209 E F1(string)3.209
-E F0 .709(where the history e)3.209 F -.15(ve)-.25 G .709
-(nt speci\214ca-).15 F .527(tion be)108 693.6 R(gins.)-.15 E F1(qc)5.527
-E(har)-.15 E F0 .527(is a character that is allo)3.027 F .527
-(wed to end the e)-.25 F -.15(ve)-.25 G .528
-(nt speci\214cation in addition to the `).15 F(`normal')-.74 E(')-.74 E
-(terminating characters.)108 705.6 Q F1 -.15(ch)108 729.6 S(ar **).15 E
-F2(history_tok)2.5 E(enize)-.1 E F0(\()4.166 E F1(const c)A(har *string)
--.15 E F0(\))1.666 E(GNU History 4.3)72 768 Q(2002 January 31)131.79 E
-(5)195.95 E EP
-%%Page: 6 6
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF(HIST)72 48 Q(OR)-.18 E 357.18(Y\(3\) HIST)-.65 F
-(OR)-.18 E(Y\(3\))-.65 E .239(Return an array of tok)108 84 R .239
-(ens parsed out of)-.1 F/F1 10/Times-Italic@0 SF(string)2.739 E F0 2.739
-(,m)C .238(uch as the shell might.)-2.739 F .238(The tok)5.238 F .238
-(ens are split on the charac-)-.1 F(ters in the)108 96 Q/F2 10
-/Times-Bold@0 SF(history_w)2.5 E(ord_delimiters)-.1 E F0 -.25(va)2.5 G
-(riable, and shell quoting con).25 E -.15(ve)-.4 G(ntions are obe).15 E
-(yed.)-.15 E F1 -.15(ch)108 120 S(ar *).15 E F2(history_ar)2.5 E
-(g_extract)-.1 E F0(\()4.166 E F1(int \214r)A -.834(st, int)-.1 F -.834
-(last, const)2.5 F -.15(ch)2.5 G(ar *string).15 E F0(\))3.332 E .025
-(Extract a string se)108 132 R .025(gment consisting of the)-.15 F F1
-<8c72>2.526 E(st)-.1 E F0(through)2.526 E F1(last)2.526 E F0(ar)2.526 E
-.026(guments present in)-.18 F F1(string)2.526 E F0 5.026(.A)C -.18(rg)
--5.026 G .026(uments are split).18 F(using)108 144 Q F2(history_tok)2.5
-E(enize\(\))-.1 E F0(.)A F2(History V)87 172.8 Q(ariables)-.92 E F0
-(This section describes the e)108 184.8 Q(xternally-visible v)-.15 E
-(ariables e)-.25 E(xported by the GNU History Library)-.15 E(.)-.65 E F1
-(int)108 208.8 Q F2(history_base)2.5 E F0(The logical of)108 220.8 Q
-(fset of the \214rst entry in the history list.)-.25 E F1(int)108 244.8
-Q F2(history_length)2.5 E F0
-(The number of entries currently stored in the history list.)108 256.8 Q
-F1(int)108 280.8 Q F2(history_max_entries)2.5 E F0
-(The maximum number of history entries.)108 292.8 Q
-(This must be changed using)5 E F2(sti\215e_history\(\))2.5 E F0(.)A F1
--.15(ch)108 316.8 S(ar).15 E F2(history_expansion_char)2.5 E F0
-(The character that introduces a history e)108 328.8 Q -.15(ve)-.25 G
-2.5(nt. The).15 F(def)2.5 E(ault is)-.1 E F2(!)2.5 E F0 5(.S)C
-(etting this to 0 inhibits history e)-5 E(xpansion.)-.15 E F1 -.15(ch)
-108 352.8 S(ar).15 E F2(history_subst_char)2.5 E F0
-(The character that in)108 364.8 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(sw).1 G
-(ord substitution if found at the start of a line.)-2.6 E(The def)5 E
-(ault is)-.1 E F2(^)2.5 E F0(.)A F1 -.15(ch)108 388.8 S(ar).15 E F2
-(history_comment_char)2.5 E F0 .117(During tok)108 400.8 R .117
-(enization, if this character is seen as the \214rst character of a w)
--.1 F .117(ord, then it and all subsequent char)-.1 F(-)-.2 E .276
-(acters up to a ne)108 412.8 R .276
-(wline are ignored, suppressing history e)-.25 F .276
-(xpansion for the remainder of the line.)-.15 F .277(This is dis-)5.276
-F(abled by def)108 424.8 Q(ault.)-.1 E F1 -.15(ch)108 448.8 S(ar *).15 E
-F2(history_w)2.5 E(ord_delimiters)-.1 E F0
-(The characters that separate tok)108 460.8 Q(ens for)-.1 E F2
-(history_tok)2.5 E(enize\(\))-.1 E F0 5(.T)C(he def)-5 E(ault v)-.1 E
-(alue is)-.25 E F2 2.5("\\)2.5 G(t\\n\(\)<>;&|")-2.5 E F0(.)A F1 -.15
-(ch)108 484.8 S(ar *).15 E F2(history_no_expand_chars)2.5 E F0 2.054
-(The list of characters which inhibit history e)108 496.8 R 2.054
-(xpansion if found immediately follo)-.15 F(wing)-.25 E F2
-(history_expan-)4.554 E(sion_char)108 508.8 Q F0 5(.T)C(he def)-5 E
-(ault is space, tab, ne)-.1 E(wline,)-.25 E F2(\\r)2.5 E F0 2.5(,a)C(nd)
--2.5 E F2(=)2.5 E F0(.)A F1 -.15(ch)108 532.8 S(ar *).15 E F2
-(history_sear)2.5 E(ch_delimiter_chars)-.18 E F0 .401(The list of addit\
-ional characters which can delimit a history search string, in addition\
- to space, tab,)108 544.8 R F1(:)2.901 E F0(and)2.901 E F1(?)2.902 E F0
-(in the case of a substring search.)108 556.8 Q(The def)5 E
-(ault is empty)-.1 E(.)-.65 E F1(int)108 580.8 Q F2
-(history_quotes_inhibit_expansion)2.5 E F0 .625
-(If non-zero, single-quoted w)108 592.8 R .625
-(ords are not scanned for the history e)-.1 F .624(xpansion character)
--.15 F 5.624(.T)-.55 G .624(he def)-5.624 F .624(ault v)-.1 F .624
-(alue is)-.25 F(0.)108 604.8 Q F1(rl_lineb)108 628.8 Q(uf_func_t *)-.2 E
-F2(history_inhibit_expansion_function)2.5 E F0 .347
-(This should be set to the address of a function that tak)108 640.8 R
-.348(es tw)-.1 F 2.848(oa)-.1 G -.18(rg)-2.848 G .348(uments: a).18 F F2
-.348(char *)2.848 F F0(\()2.848 E F1(string)A F0 2.848(\)a)C .348(nd an)
--2.848 F F2(int)2.848 E F0(inde)2.848 E(x)-.15 E .228
-(into that string \()108 652.8 R F1(i)A F0 2.728(\). It)B .227
-(should return a non-zero v)2.727 F .227(alue if the history e)-.25 F
-.227(xpansion starting at)-.15 F F1(string[i])2.727 E F0 .227
-(should not)2.727 F .019(be performed; zero if the e)108 664.8 R .019
-(xpansion should be done.)-.15 F .019
-(It is intended for use by applications lik)5.019 F(e)-.1 E F2(bash)
-2.519 E F0 .019(that use)2.519 F(the history e)108 676.8 Q
-(xpansion character for additional purposes.)-.15 E(By def)5 E
-(ault, this v)-.1 E(ariable is set to)-.25 E F2(NULL)2.5 E F0(.)A/F3
-10.95/Times-Bold@0 SF(FILES)72 693.6 Q F1(~/.history)109.666 705.6 Q F0
-(Def)144 717.6 Q(ault \214lename for reading and writing sa)-.1 E -.15
-(ve)-.2 G 2.5(dh).15 G(istory)-2.5 E(GNU History 4.3)72 768 Q
-(2002 January 31)131.79 E(6)195.95 E EP
-%%Page: 7 7
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF(HIST)72 48 Q(OR)-.18 E 357.18(Y\(3\) HIST)-.65 F
-(OR)-.18 E(Y\(3\))-.65 E/F1 10.95/Times-Bold@0 SF(SEE ALSO)72 84 Q/F2 10
-/Times-Italic@0 SF(The Gnu Readline Libr)108 96 Q(ary)-.15 E F0 2.5(,B)C
-(rian F)-2.5 E(ox and Chet Rame)-.15 E(y)-.15 E F2(The Gnu History Libr)
-108 108 Q(ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E(ox and Chet Rame)-.15 E
-(y)-.15 E F2(bash)108 120 Q F0(\(1\))A F2 -.37(re)108 132 S(adline).37 E
-F0(\(3\))A F1 -.548(AU)72 148.8 S(THORS).548 E F0(Brian F)108 160.8 Q
-(ox, Free Softw)-.15 E(are F)-.1 E(oundation)-.15 E(bfox@gnu.or)108
-172.8 Q(g)-.18 E(Chet Rame)108 189.6 Q 1.3 -.65(y, C)-.15 H(ase W).65 E
-(estern Reserv)-.8 E 2.5(eU)-.15 G(ni)-2.5 E -.15(ve)-.25 G(rsity).15 E
-(chet@ins.CWR)108 201.6 Q(U.Edu)-.4 E F1 -.11(BU)72 218.4 S 2.738(GR).11
-G(EPOR)-2.738 E(TS)-.438 E F0 .16(If you \214nd a b)108 230.4 R .16
-(ug in the)-.2 F/F3 10/Times-Bold@0 SF(history)2.66 E F0(library)2.66 E
-2.66(,y)-.65 G .16(ou should report it.)-2.66 F .16
-(But \214rst, you should mak)5.16 F 2.66(es)-.1 G .16
-(ure that it really is)-2.66 F 2.5(ab)108 242.4 S
-(ug, and that it appears in the latest v)-2.7 E(ersion of the)-.15 E F3
-(history)2.5 E F0(library that you ha)2.5 E -.15(ve)-.2 G(.).15 E .704
-(Once you ha)108 259.2 R 1.004 -.15(ve d)-.2 H .704(etermined that a b)
-.15 F .704(ug actually e)-.2 F .704(xists, mail a b)-.15 F .705
-(ug report to)-.2 F F2 -.2(bu)3.205 G(g\255r).2 E(eadline)-.37 E F0(@)A
-F2(gnu.or)A(g)-.37 E F0 5.705(.I)C 3.205(fy)-5.705 G(ou)-3.205 E(ha)108
-271.2 Q 1.81 -.15(ve a \214)-.2 H 1.51
-(x, you are welcome to mail that as well!).15 F 1.509
-(Suggestions and `philosophical' b)6.509 F 1.509(ug reports may be)-.2 F
-(mailed to)108 283.2 Q F2 -.2(bu)2.5 G(g-r).2 E(eadline)-.37 E F0(@)A F2
-(gnu.or)A(g)-.37 E F0(or posted to the Usenet ne)2.5 E(wsgroup)-.25 E F3
-(gnu.bash.b)2.5 E(ug)-.2 E F0(.)A(Comments and b)108 300 Q
-(ug reports concerning this manual page should be directed to)-.2 E F2
--.15(ch)2.5 G(et@ins.CWR).15 E -.25(U.)-.4 G(Edu).25 E F0(.).25 E
-(GNU History 4.3)72 768 Q(2002 January 31)131.79 E(7)195.95 E EP
-%%Trailer
-end
-%%EOF
diff --git a/readline-4.3.orig/doc/hstech.texinfo b/readline-4.3.orig/doc/hstech.texinfo
deleted file mode 100644
index 9494446..0000000
--- a/readline-4.3.orig/doc/hstech.texinfo
+++ /dev/null
@@ -1,550 +0,0 @@
-@ignore
-This file documents the user interface to the GNU History library.
-
-Copyright (C) 1988-2002 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;
- 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 {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 {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 you can dispose of the 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 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 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_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 {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 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
diff --git a/readline-4.3.orig/doc/hsuser.texinfo b/readline-4.3.orig/doc/hsuser.texinfo
deleted file mode 100644
index 418bfa8..0000000
--- a/readline-4.3.orig/doc/hsuser.texinfo
+++ /dev/null
@@ -1,437 +0,0 @@
-@ignore
-This file documents the user interface to the GNU History library.
-
-Copyright (C) 1988-2002 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 Using History Interactively
-@chapter Using History Interactively
-
-@ifclear BashFeatures
-@defcodeindex bt
-@end ifclear
-
-@ifset BashFeatures
-This chapter describes how to use the @sc{gnu} History Library
-interactively, from a user's standpoint.
-It should be considered a user's guide.
-For information on using the @sc{gnu} History Library in other programs,
-see the @sc{gnu} Readline Library Manual.
-@end ifset
-@ifclear BashFeatures
-This chapter describes how to use the @sc{gnu} History Library interactively,
-from a user's standpoint. It should be considered a user's guide. For
-information on using the @sc{gnu} History Library in your own programs,
-@pxref{Programming with GNU History}.
-@end ifclear
-
-@ifset BashFeatures
-@menu
-* Bash History Facilities:: How Bash lets you manipulate your command
- history.
-* Bash History Builtins:: The Bash builtin commands that manipulate
- the command history.
-* History Interaction:: What it feels like using History as a user.
-@end menu
-@end ifset
-@ifclear BashFeatures
-@menu
-* History Interaction:: What it feels like using History as a user.
-@end menu
-@end ifclear
-
-@ifset BashFeatures
-@node Bash History Facilities
-@section Bash History Facilities
-@cindex command history
-@cindex history list
-
-When the @option{-o history} option to the @code{set} builtin
-is enabled (@pxref{The Set Builtin}),
-the shell provides access to the @dfn{command history},
-the list of commands previously typed.
-The value of the @env{HISTSIZE} shell variable is used as the
-number of commands to save in a history list.
-The text of the last @env{$HISTSIZE}
-commands (default 500) is saved.
-The shell stores each command in the history list prior to
-parameter and variable expansion
-but after history expansion is performed, subject to the
-values of the shell variables
-@env{HISTIGNORE} and @env{HISTCONTROL}.
-
-When the shell starts up, the history is initialized from the
-file named by the @env{HISTFILE} variable (default @file{~/.bash_history}).
-The file named by the value of @env{HISTFILE} is truncated, if
-necessary, to contain no more than the number of lines specified by
-the value of the @env{HISTFILESIZE} variable.
-When an interactive shell exits, the last
-@env{$HISTSIZE} lines are copied from the history list to the file
-named by @env{$HISTFILE}.
-If the @code{histappend} shell option is set (@pxref{Bash Builtins}),
-the lines are appended to the history file,
-otherwise the history file is overwritten.
-If @env{HISTFILE}
-is unset, or if the history file is unwritable, the history is
-not saved. After saving the history, the history file is truncated
-to contain no more than @env{$HISTFILESIZE}
-lines. If @env{HISTFILESIZE} is not set, no truncation is performed.
-
-The builtin command @code{fc} may be used to list or edit and re-execute
-a portion of the history list.
-The @code{history} builtin may be used to display or modify the history
-list and manipulate the history file.
-When using command-line editing, search commands
-are available in each editing mode that provide access to the
-history list (@pxref{Commands For History}).
-
-The shell allows control over which commands are saved on the history
-list. The @env{HISTCONTROL} and @env{HISTIGNORE}
-variables may be set to cause the shell to save only a subset of the
-commands entered.
-The @code{cmdhist}
-shell option, if enabled, causes the shell to attempt to save each
-line of a multi-line command in the same history entry, adding
-semicolons where necessary to preserve syntactic correctness.
-The @code{lithist}
-shell option causes the shell to save the command with embedded newlines
-instead of semicolons.
-The @code{shopt} builtin is used to set these options.
-@xref{Bash Builtins}, for a description of @code{shopt}.
-
-@node Bash History Builtins
-@section Bash History Builtins
-@cindex history builtins
-
-Bash provides two builtin commands which manipulate the
-history list and history file.
-
-@table @code
-
-@item fc
-@btindex fc
-@example
-@code{fc [-e @var{ename}] [-nlr] [@var{first}] [@var{last}]}
-@code{fc -s [@var{pat}=@var{rep}] [@var{command}]}
-@end example
-
-Fix Command. In the first form, a range of commands from @var{first} to
-@var{last} is selected from the history list. Both @var{first} and
-@var{last} may be specified as a string (to locate the most recent
-command beginning with that string) or as a number (an index into the
-history list, where a negative number is used as an offset from the
-current command number). If @var{last} is not specified it is set to
-@var{first}. If @var{first} is not specified it is set to the previous
-command for editing and @minus{}16 for listing. If the @option{-l} flag is
-given, the commands are listed on standard output. The @option{-n} flag
-suppresses the command numbers when listing. The @option{-r} flag
-reverses the order of the listing. Otherwise, the editor given by
-@var{ename} is invoked on a file containing those commands. If
-@var{ename} is not given, the value of the following variable expansion
-is used: @code{$@{FCEDIT:-$@{EDITOR:-vi@}@}}. This says to use the
-value of the @env{FCEDIT} variable if set, or the value of the
-@env{EDITOR} variable if that is set, or @code{vi} if neither is set.
-When editing is complete, the edited commands are echoed and executed.
-
-In the second form, @var{command} is re-executed after each instance
-of @var{pat} in the selected command is replaced by @var{rep}.
-
-A useful alias to use with the @code{fc} command is @code{r='fc -s'}, so
-that typing @samp{r cc} runs the last command beginning with @code{cc}
-and typing @samp{r} re-executes the last command (@pxref{Aliases}).
-
-@item history
-@btindex history
-@example
-history [@var{n}]
-history -c
-history -d @var{offset}
-history [-anrw] [@var{filename}]
-history -ps @var{arg}
-@end example
-
-With no options, display the history list with line numbers.
-Lines prefixed with a @samp{*} have been modified.
-An argument of @var{n} lists only the last @var{n} lines.
-Options, if supplied, have the following meanings:
-
-@table @code
-@item -c
-Clear the history list. This may be combined
-with the other options to replace the history list completely.
-
-@item -d @var{offset}
-Delete the history entry at position @var{offset}.
-@var{offset} should be specified as it appears when the history is
-displayed.
-
-@item -a
-Append the new
-history lines (history lines entered since the beginning of the
-current Bash session) to the history file.
-
-@item -n
-Append the history lines not already read from the history file
-to the current history list. These are lines appended to the history
-file since the beginning of the current Bash session.
-
-@item -r
-Read the current history file and append its contents to
-the history list.
-
-@item -w
-Write out the current history to the history file.
-
-@item -p
-Perform history substitution on the @var{arg}s and display the result
-on the standard output, without storing the results in the history list.
-
-@item -s
-The @var{arg}s are added to the end of
-the history list as a single entry.
-
-@end table
-
-When any of the @option{-w}, @option{-r}, @option{-a}, or @option{-n} options is
-used, if @var{filename}
-is given, then it is used as the history file. If not, then
-the value of the @env{HISTFILE} variable is used.
-
-@end table
-@end ifset
-
-@node History Interaction
-@section History Expansion
-@cindex history expansion
-
-The History library provides a history expansion feature that is similar
-to the history expansion provided by @code{csh}. This section
-describes the syntax used to manipulate the history information.
-
-History expansions introduce words from the history list into
-the input stream, making it easy to repeat commands, insert the
-arguments to a previous command into the current input line, or
-fix errors in previous commands quickly.
-
-History expansion takes place in two parts. The first is to determine
-which line from the history list should be used during substitution.
-The second is to select portions of that line for inclusion into the
-current one. The line selected from the history is called the
-@dfn{event}, and the portions of that line that are acted upon are
-called @dfn{words}. Various @dfn{modifiers} are available to manipulate
-the selected words. The line is broken into words in the same fashion
-that Bash does, so that several words
-surrounded by quotes are considered one word.
-History expansions are introduced by the appearance of the
-history expansion character, which is @samp{!} by default.
-@ifset BashFeatures
-Only @samp{\} and @samp{'} may be used to escape the history expansion
-character.
-@end ifset
-
-@ifset BashFeatures
-Several shell options settable with the @code{shopt}
-builtin (@pxref{Bash Builtins}) may be used to tailor
-the behavior of history expansion. If the
-@code{histverify} shell option is enabled, and Readline
-is being used, history substitutions are not immediately passed to
-the shell parser.
-Instead, the expanded line is reloaded into the Readline
-editing buffer for further modification.
-If Readline is being used, and the @code{histreedit}
-shell option is enabled, a failed history expansion will be
-reloaded into the Readline editing buffer for correction.
-The @option{-p} option to the @code{history} builtin command
-may be used to see what a history expansion will do before using it.
-The @option{-s} option to the @code{history} builtin may be used to
-add commands to the end of the history list without actually executing
-them, so that they are available for subsequent recall.
-This is most useful in conjunction with Readline.
-
-The shell allows control of the various characters used by the
-history expansion mechanism with the @code{histchars} variable.
-@end ifset
-
-@menu
-* Event Designators:: How to specify which history line to use.
-* Word Designators:: Specifying which words are of interest.
-* Modifiers:: Modifying the results of substitution.
-@end menu
-
-@node Event Designators
-@subsection Event Designators
-@cindex event designators
-
-An event designator is a reference to a command line entry in the
-history list.
-@cindex history events
-
-@table @asis
-
-@item @code{!}
-Start a history substitution, except when followed by a space, tab,
-the end of the line, @samp{=} or @samp{(}.
-
-@item @code{!@var{n}}
-Refer to command line @var{n}.
-
-@item @code{!-@var{n}}
-Refer to the command @var{n} lines back.
-
-@item @code{!!}
-Refer to the previous command. This is a synonym for @samp{!-1}.
-
-@item @code{!@var{string}}
-Refer to the most recent command starting with @var{string}.
-
-@item @code{!?@var{string}[?]}
-Refer to the most recent command containing @var{string}. The trailing
-@samp{?} may be omitted if the @var{string} is followed immediately by
-a newline.
-
-@item @code{^@var{string1}^@var{string2}^}
-Quick Substitution. Repeat the last command, replacing @var{string1}
-with @var{string2}. Equivalent to
-@code{!!:s/@var{string1}/@var{string2}/}.
-
-@item @code{!#}
-The entire command line typed so far.
-
-@end table
-
-@node Word Designators
-@subsection Word Designators
-
-Word designators are used to select desired words from the event.
-A @samp{:} separates the event specification from the word designator. It
-may be omitted if the word designator begins with a @samp{^}, @samp{$},
-@samp{*}, @samp{-}, or @samp{%}. Words are numbered from the beginning
-of the line, with the first word being denoted by 0 (zero). Words are
-inserted into the current line separated by single spaces.
-
-@need 0.75
-For example,
-
-@table @code
-@item !!
-designates the preceding command. When you type this, the preceding
-command is repeated in toto.
-
-@item !!:$
-designates the last argument of the preceding command. This may be
-shortened to @code{!$}.
-
-@item !fi:2
-designates the second argument of the most recent command starting with
-the letters @code{fi}.
-@end table
-
-@need 0.75
-Here are the word designators:
-
-@table @code
-
-@item 0 (zero)
-The @code{0}th word. For many applications, this is the command word.
-
-@item @var{n}
-The @var{n}th word.
-
-@item ^
-The first argument; that is, word 1.
-
-@item $
-The last argument.
-
-@item %
-The word matched by the most recent @samp{?@var{string}?} search.
-
-@item @var{x}-@var{y}
-A range of words; @samp{-@var{y}} abbreviates @samp{0-@var{y}}.
-
-@item *
-All of the words, except the @code{0}th. This is a synonym for @samp{1-$}.
-It is not an error to use @samp{*} if there is just one word in the event;
-the empty string is returned in that case.
-
-@item @var{x}*
-Abbreviates @samp{@var{x}-$}
-
-@item @var{x}-
-Abbreviates @samp{@var{x}-$} like @samp{@var{x}*}, but omits the last word.
-
-@end table
-
-If a word designator is supplied without an event specification, the
-previous command is used as the event.
-
-@node Modifiers
-@subsection Modifiers
-
-After the optional word designator, you can add a sequence of one or more
-of the following modifiers, each preceded by a @samp{:}.
-
-@table @code
-
-@item h
-Remove a trailing pathname component, leaving only the head.
-
-@item t
-Remove all leading pathname components, leaving the tail.
-
-@item r
-Remove a trailing suffix of the form @samp{.@var{suffix}}, leaving
-the basename.
-
-@item e
-Remove all but the trailing suffix.
-
-@item p
-Print the new command but do not execute it.
-
-@ifset BashFeatures
-@item q
-Quote the substituted words, escaping further substitutions.
-
-@item x
-Quote the substituted words as with @samp{q},
-but break into words at spaces, tabs, and newlines.
-@end ifset
-
-@item s/@var{old}/@var{new}/
-Substitute @var{new} for the first occurrence of @var{old} in the
-event line. Any delimiter may be used in place of @samp{/}.
-The delimiter may be quoted in @var{old} and @var{new}
-with a single backslash. If @samp{&} appears in @var{new},
-it is replaced by @var{old}. A single backslash will quote
-the @samp{&}. The final delimiter is optional if it is the last
-character on the input line.
-
-@item &
-Repeat the previous substitution.
-
-@item g
-Cause changes to be applied over the entire event line. Used in
-conjunction with @samp{s}, as in @code{gs/@var{old}/@var{new}/},
-or with @samp{&}.
-
-@end table
diff --git a/readline-4.3.orig/doc/manvers.texinfo b/readline-4.3.orig/doc/manvers.texinfo
deleted file mode 100644
index 1206cf0..0000000
--- a/readline-4.3.orig/doc/manvers.texinfo
+++ /dev/null
@@ -1,10 +0,0 @@
-@ignore
-Copyright (C) 1988-2002 Free Software Foundation, Inc.
-@end ignore
-
-@set EDITION 4.3
-@set VERSION 4.3
-@set UPDATED 2002 March 4
-@set UPDATE-MONTH March 2002
-
-@set LASTCHANGE Mon Mar 4 12:00:16 EST 2002
diff --git a/readline-4.3.orig/doc/readline.0 b/readline-4.3.orig/doc/readline.0
deleted file mode 100644
index 87beeac..0000000
--- a/readline-4.3.orig/doc/readline.0
+++ /dev/null
@@ -1,997 +0,0 @@
-READLINE(3) READLINE(3)
-
-
-
-NNAAMMEE
- readline - get a line from a user with editing
-
-SSYYNNOOPPSSIISS
- ##iinncclluuddee <<ssttddiioo..hh>>
- ##iinncclluuddee <<rreeaaddlliinnee//rreeaaddlliinnee..hh>>
- ##iinncclluuddee <<rreeaaddlliinnee//hhiissttoorryy..hh>>
-
- _c_h_a_r _*
- rreeaaddlliinnee (_c_o_n_s_t _c_h_a_r _*_p_r_o_m_p_t);
-
-CCOOPPYYRRIIGGHHTT
- Readline is Copyright (C) 1989-2002 by the Free Software
- Foundation, Inc.
-
-DDEESSCCRRIIPPTTIIOONN
- rreeaaddlliinnee will read a line from the terminal and return it,
- using pprroommpptt as a prompt. If pprroommpptt is NNUULLLL or the empty
- string, no prompt is issued. The line returned is allo-
- cated with _m_a_l_l_o_c(3); the caller must free it when fin-
- ished. The line returned has the final newline removed,
- so only the text of the line remains.
-
- rreeaaddlliinnee offers editing capabilities while the user is
- entering the line. By default, the line editing commands
- are similar to those of emacs. A vi-style line editing
- interface is also available.
-
- This manual page describes only the most basic use of
- rreeaaddlliinnee. Much more functionality is available; see _T_h_e
- _G_N_U _R_e_a_d_l_i_n_e _L_i_b_r_a_r_y and _T_h_e _G_N_U _H_i_s_t_o_r_y _L_i_b_r_a_r_y for addi-
- tional information.
-
-RREETTUURRNN VVAALLUUEE
- rreeaaddlliinnee returns the text of the line read. A blank line
- returns the empty string. If EEOOFF is encountered while
- reading a line, and the line is empty, NNUULLLL is returned.
- If an EEOOFF is read with a non-empty line, it is treated as
- a newline.
-
-NNOOTTAATTIIOONN
- An emacs-style notation is used to denote keystrokes.
- Control keys are denoted by C-_k_e_y, e.g., C-n means Con-
- trol-N. Similarly, _m_e_t_a keys are denoted by M-_k_e_y, so M-x
- means Meta-X. (On keyboards without a _m_e_t_a key, M-_x means
- ESC _x, i.e., press the Escape key then the _x key. This
- makes ESC the _m_e_t_a _p_r_e_f_i_x. The combination M-C-_x means
- ESC-Control-_x, or press the Escape key then hold the Con-
- trol key while pressing the _x key.)
-
- Readline commands may be given numeric _a_r_g_u_m_e_n_t_s, which
- normally act as a repeat count. Sometimes, however, it is
- the sign of the argument that is significant. Passing a
- negative argument to a command that acts in the forward
- direction (e.g., kkiillll--lliinnee) causes that command to act in
- a backward direction. Commands whose behavior with argu-
- ments deviates from this are noted.
-
- When a command is described as _k_i_l_l_i_n_g text, the text
- deleted is saved for possible future retrieval (_y_a_n_k_i_n_g).
- The killed text is saved in a _k_i_l_l _r_i_n_g. Consecutive
- kills cause the text to be accumulated into one unit,
- which can be yanked all at once. Commands which do not
- kill text separate the chunks of text on the kill ring.
-
-IINNIITTIIAALLIIZZAATTIIOONN FFIILLEE
- Readline is customized by putting commands in an initial-
- ization file (the _i_n_p_u_t_r_c file). The name of this file is
- taken from the value of the IINNPPUUTTRRCC environment variable.
- If that variable is unset, the default is _~_/_._i_n_p_u_t_r_c.
- When a program which uses the readline library starts up,
- the init file is read, and the key bindings and variables
- are set. There are only a few basic constructs allowed in
- the readline init file. Blank lines are ignored. Lines
- beginning with a ## are comments. Lines beginning with a $$
- indicate conditional constructs. Other lines denote key
- bindings and variable settings. Each program using this
- library may add its own commands and bindings.
-
- For example, placing
-
- M-Control-u: universal-argument
- or
- C-Meta-u: universal-argument
-
- into the _i_n_p_u_t_r_c would make M-C-u execute the readline
- command _u_n_i_v_e_r_s_a_l_-_a_r_g_u_m_e_n_t.
-
- The following symbolic character names are recognized
- while processing key bindings: _D_E_L, _E_S_C, _E_S_C_A_P_E, _L_F_D, _N_E_W_-
- _L_I_N_E, _R_E_T, _R_E_T_U_R_N, _R_U_B_O_U_T, _S_P_A_C_E, _S_P_C, and _T_A_B.
-
- In addition to command names, readline allows keys to be
- bound to a string that is inserted when the key is pressed
- (a _m_a_c_r_o).
-
-
- KKeeyy BBiinnddiinnggss
- The syntax for controlling key bindings in the _i_n_p_u_t_r_c
- file is simple. All that is required is the name of the
- command or the text of a macro and a key sequence to which
- it should be bound. The name may be specified in one of
- two ways: as a symbolic key name, possibly with _M_e_t_a_- or
- _C_o_n_t_r_o_l_- prefixes, or as a key sequence.
-
- When using the form kkeeyynnaammee:_f_u_n_c_t_i_o_n_-_n_a_m_e or _m_a_c_r_o, _k_e_y_-
- _n_a_m_e is the name of a key spelled out in English. For
- example:
-
- Control-u: universal-argument
- Meta-Rubout: backward-kill-word
- Control-o: "> output"
-
- In the above example, _C_-_u is bound to the function uunniivveerr--
- ssaall--aarrgguummeenntt, _M_-_D_E_L is bound to the function bbaacckk--
- wwaarrdd--kkiillll--wwoorrdd, and _C_-_o is bound to run the macro
- expressed on the right hand side (that is, to insert the
- text ``> output'' into the line).
-
- In the second form, ""kkeeyysseeqq"":_f_u_n_c_t_i_o_n_-_n_a_m_e or _m_a_c_r_o, kkeeyy--
- sseeqq differs from kkeeyynnaammee above in that strings denoting an
- entire key sequence may be specified by placing the
- sequence within double quotes. Some GNU Emacs style key
- escapes can be used, as in the following example, but the
- symbolic character names are not recognized.
-
- "\C-u": universal-argument
- "\C-x\C-r": re-read-init-file
- "\e[11~": "Function Key 1"
-
- In this example, _C_-_u is again bound to the function uunnii--
- vveerrssaall--aarrgguummeenntt. _C_-_x _C_-_r is bound to the function
- rree--rreeaadd--iinniitt--ffiillee, and _E_S_C _[ _1 _1 _~ is bound to insert the
- text ``Function Key 1''.
-
- The full set of GNU Emacs style escape sequences available
- when specifying key sequences is
- \\CC-- control prefix
- \\MM-- meta prefix
- \\ee an escape character
- \\\\ backslash
- \\"" literal ", a double quote
- \\'' literal ', a single quote
-
- In addition to the GNU Emacs style escape sequences, a
- second set of backslash escapes is available:
- \\aa alert (bell)
- \\bb backspace
- \\dd delete
- \\ff form feed
- \\nn newline
- \\rr carriage return
- \\tt horizontal tab
- \\vv vertical tab
- \\_n_n_n the eight-bit character whose value is the
- octal value _n_n_n (one to three digits)
- \\xx_H_H the eight-bit character whose value is the
- hexadecimal value _H_H (one or two hex digits)
-
- When entering the text of a macro, single or double quotes
- should be used to indicate a macro definition. Unquoted
- text is assumed to be a function name. In the macro body,
- the backslash escapes described above are expanded. Back-
- slash will quote any other character in the macro text,
- including " and '.
-
- BBaasshh allows the current readline key bindings to be dis-
- played or modified with the bbiinndd builtin command. The
- editing mode may be switched during interactive use by
- using the --oo option to the sseett builtin command. Other
- programs using this library provide similar mechanisms.
- The _i_n_p_u_t_r_c file may be edited and re-read if a program
- does not provide any other means to incorporate new bind-
- ings.
-
- VVaarriiaabblleess
- Readline has variables that can be used to further cus-
- tomize its behavior. A variable may be set in the _i_n_p_u_t_r_c
- file with a statement of the form
-
- sseett _v_a_r_i_a_b_l_e_-_n_a_m_e _v_a_l_u_e
-
- Except where noted, readline variables can take the values
- OOnn or OOffff (without regard to case). The variables and
- their default values are:
-
- bbeellll--ssttyyllee ((aauuddiibbllee))
- Controls what happens when readline wants to ring
- the terminal bell. If set to nnoonnee, readline never
- rings the bell. If set to vviissiibbllee, readline uses a
- visible bell if one is available. If set to aauuddii--
- bbllee, readline attempts to ring the terminal's bell.
- ccoommmmeenntt--bbeeggiinn ((````##''''))
- The string that is inserted in vvii mode when the
- iinnsseerrtt--ccoommmmeenntt command is executed. This command
- is bound to MM--## in emacs mode and to ## in vi com-
- mand mode.
- ccoommpplleettiioonn--iiggnnoorree--ccaassee ((OOffff))
- If set to OOnn, readline performs filename matching
- and completion in a case-insensitive fashion.
- ccoommpplleettiioonn--qquueerryy--iitteemmss ((110000))
- This determines when the user is queried about
- viewing the number of possible completions gener-
- ated by the ppoossssiibbllee--ccoommpplleettiioonnss command. It may
- be set to any integer value greater than or equal
- to zero. If the number of possible completions is
- greater than or equal to the value of this vari-
- able, the user is asked whether or not he wishes to
- view them; otherwise they are simply listed on the
- terminal.
- ccoonnvveerrtt--mmeettaa ((OOnn))
- If set to OOnn, readline will convert characters with
- the eighth bit set to an ASCII key sequence by
- stripping the eighth bit and prefixing it with an
- escape character (in effect, using escape as the
- _m_e_t_a _p_r_e_f_i_x).
- ddiissaabbllee--ccoommpplleettiioonn ((OOffff))
- If set to OOnn, readline will inhibit word comple-
- tion. Completion characters will be inserted into
- the line as if they had been mapped to sseellff--iinnsseerrtt.
- eeddiittiinngg--mmooddee ((eemmaaccss))
- Controls whether readline begins with a set of key
- bindings similar to emacs or vi. eeddiittiinngg--mmooddee can
- be set to either eemmaaccss or vvii.
- eennaabbllee--kkeeyyppaadd ((OOffff))
- When set to OOnn, readline will try to enable the
- application keypad when it is called. Some systems
- need this to enable the arrow keys.
- eexxppaanndd--ttiillddee ((OOffff))
- If set to oonn, tilde expansion is performed when
- readline attempts word completion.
- hhiissttoorryy--pprreesseerrvvee--ppooiinntt
- If set to oonn, the history code attempts to place
- point at the same location on each history line
- retrived with pprreevviioouuss--hhiissttoorryy or nneexxtt--hhiissttoorryy.
- hhoorriizzoonnttaall--ssccrroollll--mmooddee ((OOffff))
- When set to OOnn, makes readline use a single line
- for display, scrolling the input horizontally on a
- single screen line when it becomes longer than the
- screen width rather than wrapping to a new line.
- iinnppuutt--mmeettaa ((OOffff))
- If set to OOnn, readline will enable eight-bit input
- (that is, it will not clear the eighth bit in the
- characters it reads), regardless of what the termi-
- nal claims it can support. The name mmeettaa--ffllaagg is a
- synonym for this variable.
- iisseeaarrcchh--tteerrmmiinnaattoorrss ((````CC--[[ CC--JJ''''))
- The string of characters that should terminate an
- incremental search without subsequently executing
- the character as a command. If this variable has
- not been given a value, the characters _E_S_C and _C_-_J
- will terminate an incremental search.
- kkeeyymmaapp ((eemmaaccss))
- Set the current readline keymap. The set of legal
- keymap names is _e_m_a_c_s_, _e_m_a_c_s_-_s_t_a_n_d_a_r_d_, _e_m_a_c_s_-_m_e_t_a_,
- _e_m_a_c_s_-_c_t_l_x_, _v_i_, _v_i_-_m_o_v_e_, _v_i_-_c_o_m_m_a_n_d, and _v_i_-_i_n_s_e_r_t.
- _v_i is equivalent to _v_i_-_c_o_m_m_a_n_d; _e_m_a_c_s is equivalent
- to _e_m_a_c_s_-_s_t_a_n_d_a_r_d. The default value is _e_m_a_c_s.
- The value of eeddiittiinngg--mmooddee also affects the default
- keymap.
- mmaarrkk--ddiirreeccttoorriieess ((OOnn))
- If set to OOnn, completed directory names have a
- slash appended.
- mmaarrkk--mmooddiiffiieedd--lliinneess ((OOffff))
- If set to OOnn, history lines that have been modified
- are displayed with a preceding asterisk (**).
- mmaarrkk--ssyymmlliinnkkeedd--ddiirreeccttoorriieess ((OOffff))
- If set to OOnn, completed names which are symbolic
- links to directories have a slash appended (subject
- to the value of mmaarrkk--ddiirreeccttoorriieess).
- mmaattcchh--hhiiddddeenn--ffiilleess ((OOnn))
- This variable, when set to OOnn, causes readline to
- match files whose names begin with a `.' (hidden
- files) when performing filename completion, unless
- the leading `.' is supplied by the user in the
- filename to be completed.
- oouuttppuutt--mmeettaa ((OOffff))
- If set to OOnn, readline will display characters with
- the eighth bit set directly rather than as a meta-
- prefixed escape sequence.
- ppaaggee--ccoommpplleettiioonnss ((OOnn))
- If set to OOnn, readline uses an internal _m_o_r_e-like
- pager to display a screenful of possible comple-
- tions at a time.
- pprriinntt--ccoommpplleettiioonnss--hhoorriizzoonnttaallllyy ((OOffff))
- If set to OOnn, readline will display completions
- with matches sorted horizontally in alphabetical
- order, rather than down the screen.
- sshhooww--aallll--iiff--aammbbiigguuoouuss ((OOffff))
- This alters the default behavior of the completion
- functions. If set to oonn, words which have more
- than one possible completion cause the matches to
- be listed immediately instead of ringing the bell.
- vviissiibbllee--ssttaattss ((OOffff))
- If set to OOnn, a character denoting a file's type as
- reported by _s_t_a_t(2) is appended to the filename
- when listing possible completions.
-
- CCoonnddiittiioonnaall CCoonnssttrruuccttss
- Readline implements a facility similar in spirit to the
- conditional compilation features of the C preprocessor
- which allows key bindings and variable settings to be per-
- formed as the result of tests. There are four parser
- directives used.
-
- $$iiff The $$iiff construct allows bindings to be made based
- on the editing mode, the terminal being used, or
- the application using readline. The text of the
- test extends to the end of the line; no characters
- are required to isolate it.
-
- mmooddee The mmooddee== form of the $$iiff directive is used
- to test whether readline is in emacs or vi
- mode. This may be used in conjunction with
- the sseett kkeeyymmaapp command, for instance, to set
- bindings in the _e_m_a_c_s_-_s_t_a_n_d_a_r_d and _e_m_a_c_s_-
- _c_t_l_x keymaps only if readline is starting
- out in emacs mode.
-
- tteerrmm The tteerrmm== form may be used to include termi-
- nal-specific key bindings, perhaps to bind
- the key sequences output by the terminal's
- function keys. The word on the right side
- of the == is tested against the full name of
- the terminal and the portion of the terminal
- name before the first --. This allows _s_u_n to
- match both _s_u_n and _s_u_n_-_c_m_d, for instance.
-
- aapppplliiccaattiioonn
- The aapppplliiccaattiioonn construct is used to include
- application-specific settings. Each program
- using the readline library sets the _a_p_p_l_i_c_a_-
- _t_i_o_n _n_a_m_e, and an initialization file can
- test for a particular value. This could be
- used to bind key sequences to functions use-
- ful for a specific program. For instance,
- the following command adds a key sequence
- that quotes the current or previous word in
- Bash:
-
- $$iiff Bash
- # Quote the current or previous word
- "\C-xq": "\eb\"\ef\""
- $$eennddiiff
-
- $$eennddiiff This command, as seen in the previous example, ter-
- minates an $$iiff command.
-
- $$eellssee Commands in this branch of the $$iiff directive are
- executed if the test fails.
-
- $$iinncclluuddee
- This directive takes a single filename as an argu-
- ment and reads commands and bindings from that
- file. For example, the following directive would
- read _/_e_t_c_/_i_n_p_u_t_r_c:
-
- $$iinncclluuddee _/_e_t_c_/_i_n_p_u_t_r_c
-
-SSEEAARRCCHHIINNGG
- Readline provides commands for searching through the com-
- mand history for lines containing a specified string.
- There are two search modes: _i_n_c_r_e_m_e_n_t_a_l and _n_o_n_-_i_n_c_r_e_m_e_n_-
- _t_a_l.
-
- Incremental searches begin before the user has finished
- typing the search string. As each character of the search
- string is typed, readline displays the next entry from the
- history matching the string typed so far. An incremental
- search requires only as many characters as needed to find
- the desired history entry. To search backward in the his-
- tory for a particular string, type CC--rr. Typing CC--ss
- searches forward through the history. The characters pre-
- sent in the value of the iisseeaarrcchh--tteerrmmiinnaattoorrss variable are
- used to terminate an incremental search. If that variable
- has not been assigned a value the _E_s_c_a_p_e and CC--JJ charac-
- ters will terminate an incremental search. CC--GG will abort
- an incremental search and restore the original line. When
- the search is terminated, the history entry containing the
- search string becomes the current line.
-
- To find other matching entries in the history list, type
- CC--ss or CC--rr as appropriate. This will search backward or
- forward in the history for the next line matching the
- search string typed so far. Any other key sequence bound
- to a readline command will terminate the search and exe-
- cute that command. For instance, a newline will terminate
- the search and accept the line, thereby executing the com-
- mand from the history list. A movement command will ter-
- minate the search, make the last line found the current
- line, and begin editing.
-
- Non-incremental searches read the entire search string
- before starting to search for matching history lines. The
- search string may be typed by the user or be part of the
- contents of the current line.
-
-EEDDIITTIINNGG CCOOMMMMAANNDDSS
- The following is a list of the names of the commands and
- the default key sequences to which they are bound. Com-
- mand names without an accompanying key sequence are
- unbound by default.
-
- In the following descriptions, _p_o_i_n_t refers to the current
- cursor position, and _m_a_r_k refers to a cursor position
- saved by the sseett--mmaarrkk command. The text between the point
- and mark is referred to as the _r_e_g_i_o_n.
-
- CCoommmmaannddss ffoorr MMoovviinngg
- bbeeggiinnnniinngg--ooff--lliinnee ((CC--aa))
- Move to the start of the current line.
- eenndd--ooff--lliinnee ((CC--ee))
- Move to the end of the line.
- ffoorrwwaarrdd--cchhaarr ((CC--ff))
- Move forward a character.
- bbaacckkwwaarrdd--cchhaarr ((CC--bb))
- Move back a character.
- ffoorrwwaarrdd--wwoorrdd ((MM--ff))
- Move forward to the end of the next word. Words
- are composed of alphanumeric characters (letters
- and digits).
- bbaacckkwwaarrdd--wwoorrdd ((MM--bb))
- Move back to the start of the current or previous
- word. Words are composed of alphanumeric charac-
- ters (letters and digits).
- cclleeaarr--ssccrreeeenn ((CC--ll))
- Clear the screen leaving the current line at the
- top of the screen. With an argument, refresh the
- current line without clearing the screen.
- rreeddrraaww--ccuurrrreenntt--lliinnee
- Refresh the current line.
-
- CCoommmmaannddss ffoorr MMaanniippuullaattiinngg tthhee HHiissttoorryy
- aacccceepptt--lliinnee ((NNeewwlliinnee,, RReettuurrnn))
- Accept the line regardless of where the cursor is.
- If this line is non-empty, it may be added to the
- history list for future recall with aadddd__hhiissttoorryy(()).
- If the line is a modified history line, the history
- line is restored to its original state.
- pprreevviioouuss--hhiissttoorryy ((CC--pp))
- Fetch the previous command from the history list,
- moving back in the list.
- nneexxtt--hhiissttoorryy ((CC--nn))
- Fetch the next command from the history list, mov-
- ing forward in the list.
- bbeeggiinnnniinngg--ooff--hhiissttoorryy ((MM--<<))
- Move to the first line in the history.
- eenndd--ooff--hhiissttoorryy ((MM-->>))
- Move to the end of the input history, i.e., the
- line currently being entered.
- rreevveerrssee--sseeaarrcchh--hhiissttoorryy ((CC--rr))
- Search backward starting at the current line and
- moving `up' through the history as necessary. This
- is an incremental search.
- ffoorrwwaarrdd--sseeaarrcchh--hhiissttoorryy ((CC--ss))
- Search forward starting at the current line and
- moving `down' through the history as necessary.
- This is an incremental search.
- nnoonn--iinnccrreemmeennttaall--rreevveerrssee--sseeaarrcchh--hhiissttoorryy ((MM--pp))
- Search backward through the history starting at the
- current line using a non-incremental search for a
- string supplied by the user.
- nnoonn--iinnccrreemmeennttaall--ffoorrwwaarrdd--sseeaarrcchh--hhiissttoorryy ((MM--nn))
- Search forward through the history using a non-
- incremental search for a string supplied by the
- user.
- hhiissttoorryy--sseeaarrcchh--ffoorrwwaarrdd
- Search forward through the history for the string
- of characters between the start of the current line
- and the current cursor position (the _p_o_i_n_t). This
- is a non-incremental search.
- hhiissttoorryy--sseeaarrcchh--bbaacckkwwaarrdd
- Search backward through the history for the string
- of characters between the start of the current line
- and the point. This is a non-incremental search.
- yyaannkk--nntthh--aarrgg ((MM--CC--yy))
- Insert the first argument to the previous command
- (usually the second word on the previous line) at
- point. With an argument _n, insert the _nth word
- from the previous command (the words in the previ-
- ous command begin with word 0). A negative argu-
- ment inserts the _nth word from the end of the pre-
- vious command.
- yyaannkk--llaasstt--aarrgg ((MM--..,, MM--__))
- Insert the last argument to the previous command
- (the last word of the previous history entry).
- With an argument, behave exactly like yyaannkk--nntthh--aarrgg.
- Successive calls to yyaannkk--llaasstt--aarrgg move back through
- the history list, inserting the last argument of
- each line in turn.
-
- CCoommmmaannddss ffoorr CChhaannggiinngg TTeexxtt
- ddeelleettee--cchhaarr ((CC--dd))
- Delete the character at point. If point is at the
- beginning of the line, there are no characters in
- the line, and the last character typed was not
- bound to ddeelleettee--cchhaarr, then return EEOOFF.
- bbaacckkwwaarrdd--ddeelleettee--cchhaarr ((RRuubboouutt))
- Delete the character behind the cursor. When given
- a numeric argument, save the deleted text on the
- kill ring.
- ffoorrwwaarrdd--bbaacckkwwaarrdd--ddeelleettee--cchhaarr
- Delete the character under the cursor, unless the
- cursor is at the end of the line, in which case the
- character behind the cursor is deleted.
- qquuootteedd--iinnsseerrtt ((CC--qq,, CC--vv))
- Add the next character that you type to the line
- verbatim. This is how to insert characters like
- CC--qq, for example.
- ttaabb--iinnsseerrtt ((MM--TTAABB))
- Insert a tab character.
- sseellff--iinnsseerrtt ((aa,, bb,, AA,, 11,, !!,, ......))
- Insert the character typed.
- ttrraannssppoossee--cchhaarrss ((CC--tt))
- Drag the character before point forward over the
- character at point, moving point forward as well.
- If point is at the end of the line, then this
- transposes the two characters before point. Nega-
- tive arguments have no effect.
- ttrraannssppoossee--wwoorrddss ((MM--tt))
- Drag the word before point past the word after
- point, moving point over that word as well. If
- point is at the end of the line, this transposes
- the last two words on the line.
- uuppccaassee--wwoorrdd ((MM--uu))
- Uppercase the current (or following) word. With a
- negative argument, uppercase the previous word, but
- do not move point.
- ddoowwnnccaassee--wwoorrdd ((MM--ll))
- Lowercase the current (or following) word. With a
- negative argument, lowercase the previous word, but
- do not move point.
- ccaappiittaalliizzee--wwoorrdd ((MM--cc))
- Capitalize the current (or following) word. With a
- negative argument, capitalize the previous word,
- but do not move point.
- oovveerrwwrriittee--mmooddee
- Toggle overwrite mode. With an explicit positive
- numeric argument, switches to overwrite mode. With
- an explicit non-positive numeric argument, switches
- to insert mode. This command affects only eemmaaccss
- mode; vvii mode does overwrite differently. Each
- call to _r_e_a_d_l_i_n_e_(_) starts in insert mode. In over-
- write mode, characters bound to sseellff--iinnsseerrtt replace
- the text at point rather than pushing the text to
- the right. Characters bound to bbaacckk--
- wwaarrdd--ddeelleettee--cchhaarr replace the character before point
- with a space. By default, this command is unbound.
-
- KKiilllliinngg aanndd YYaannkkiinngg
- kkiillll--lliinnee ((CC--kk))
- Kill the text from point to the end of the line.
- bbaacckkwwaarrdd--kkiillll--lliinnee ((CC--xx RRuubboouutt))
- Kill backward to the beginning of the line.
- uunniixx--lliinnee--ddiissccaarrdd ((CC--uu))
- Kill backward from point to the beginning of the
- line. The killed text is saved on the kill-ring.
- kkiillll--wwhhoollee--lliinnee
- Kill all characters on the current line, no matter
- where point is.
- kkiillll--wwoorrdd ((MM--dd))
- Kill from point the end of the current word, or if
- between words, to the end of the next word. Word
- boundaries are the same as those used by ffoorr--
- wwaarrdd--wwoorrdd.
- bbaacckkwwaarrdd--kkiillll--wwoorrdd ((MM--RRuubboouutt))
- Kill the word behind point. Word boundaries are
- the same as those used by bbaacckkwwaarrdd--wwoorrdd.
- uunniixx--wwoorrdd--rruubboouutt ((CC--ww))
- Kill the word behind point, using white space as a
- word boundary. The killed text is saved on the
- kill-ring.
- ddeelleettee--hhoorriizzoonnttaall--ssppaaccee ((MM--\\))
- Delete all spaces and tabs around point.
- kkiillll--rreeggiioonn
- Kill the text between the point and _m_a_r_k (saved
- cursor position). This text is referred to as the
- _r_e_g_i_o_n.
- ccooppyy--rreeggiioonn--aass--kkiillll
- Copy the text in the region to the kill buffer.
- ccooppyy--bbaacckkwwaarrdd--wwoorrdd
- Copy the word before point to the kill buffer. The
- word boundaries are the same as bbaacckkwwaarrdd--wwoorrdd.
- ccooppyy--ffoorrwwaarrdd--wwoorrdd
- Copy the word following point to the kill buffer.
- The word boundaries are the same as ffoorrwwaarrdd--wwoorrdd.
- yyaannkk ((CC--yy))
- Yank the top of the kill ring into the buffer at
- point.
- yyaannkk--ppoopp ((MM--yy))
- Rotate the kill ring, and yank the new top. Only
- works following yyaannkk or yyaannkk--ppoopp.
-
- NNuummeerriicc AArrgguummeennttss
- ddiiggiitt--aarrgguummeenntt ((MM--00,, MM--11,, ......,, MM----))
- Add this digit to the argument already accumulat-
- ing, or start a new argument. M-- starts a nega-
- tive argument.
- uunniivveerrssaall--aarrgguummeenntt
- This is another way to specify an argument. If
- this command is followed by one or more digits,
- optionally with a leading minus sign, those digits
- define the argument. If the command is followed by
- digits, executing uunniivveerrssaall--aarrgguummeenntt again ends the
- numeric argument, but is otherwise ignored. As a
- special case, if this command is immediately fol-
- lowed by a character that is neither a digit or
- minus sign, the argument count for the next command
- is multiplied by four. The argument count is ini-
- tially one, so executing this function the first
- time makes the argument count four, a second time
- makes the argument count sixteen, and so on.
-
- CCoommpplleettiinngg
- ccoommpplleettee ((TTAABB))
- Attempt to perform completion on the text before
- point. The actual completion performed is applica-
- tion-specific. BBaasshh, for instance, attempts com-
- pletion treating the text as a variable (if the
- text begins with $$), username (if the text begins
- with ~~), hostname (if the text begins with @@), or
- command (including aliases and functions) in turn.
- If none of these produces a match, filename comple-
- tion is attempted. GGddbb, on the other hand, allows
- completion of program functions and variables, and
- only attempts filename completion under certain
- circumstances.
- ppoossssiibbllee--ccoommpplleettiioonnss ((MM--??))
- List the possible completions of the text before
- point.
- iinnsseerrtt--ccoommpplleettiioonnss ((MM--**))
- Insert all completions of the text before point
- that would have been generated by ppoossssiibbllee--ccoommppllee--
- ttiioonnss.
- mmeennuu--ccoommpplleettee
- Similar to ccoommpplleettee, but replaces the word to be
- completed with a single match from the list of pos-
- sible completions. Repeated execution of mmeennuu--ccoomm--
- pplleettee steps through the list of possible comple-
- tions, inserting each match in turn. At the end of
- the list of completions, the bell is rung (subject
- to the setting of 00aanndd tthhee oorriiggiinnaall tteexxtt iiss
- rreessttoorreedd.. AAnn aarrgguummeenntt ooff _n mmoovveess _n ppoossiittiioonnss ffoorr--
- wwaarrdd iinn tthhee lliisstt ooff mmaattcchheess;; aa nneeggaattiivvee aarrgguummeenntt
- mmaayy bbee uusseedd ttoo mmoovvee bbaacckkwwaarrdd tthhrroouugghh tthhee lliisstt..
- TThhiiss ccoommmmaanndd iiss iinntteennddeedd ttoo bbee bboouunndd ttoo TTAABB,, bbuutt iiss
- uunnbboouunndd bbyy ddeeffaauulltt..
- ddeelleettee--cchhaarr--oorr--lliisstt
- Deletes the character under the cursor if not at
- the beginning or end of the line (like ddeelleettee--
- cchhaarr). If at the end of the line, behaves identi-
- cally to ppoossssiibbllee--ccoommpplleettiioonnss.
-
- KKeeyybbooaarrdd MMaaccrrooss
- ssttaarrtt--kkbbdd--mmaaccrroo ((CC--xx (())
- Begin saving the characters typed into the current
- keyboard macro.
- eenndd--kkbbdd--mmaaccrroo ((CC--xx ))))
- Stop saving the characters typed into the current
- keyboard macro and store the definition.
- ccaallll--llaasstt--kkbbdd--mmaaccrroo ((CC--xx ee))
- Re-execute the last keyboard macro defined, by mak-
- ing the characters in the macro appear as if typed
- at the keyboard.
-
- MMiisscceellllaanneeoouuss
- rree--rreeaadd--iinniitt--ffiillee ((CC--xx CC--rr))
- Read in the contents of the _i_n_p_u_t_r_c file, and
- incorporate any bindings or variable assignments
- found there.
- aabboorrtt ((CC--gg))
- Abort the current editing command and ring the ter-
- minal's bell (subject to the setting of
- bbeellll--ssttyyllee).
- ddoo--uuppppeerrccaassee--vveerrssiioonn ((MM--aa,, MM--bb,, MM--_x,, ......))
- If the metafied character _x is lowercase, run the
- command that is bound to the corresponding upper-
- case character.
- pprreeffiixx--mmeettaa ((EESSCC))
- Metafy the next character typed. EESSCC ff is equiva-
- lent to MMeettaa--ff.
- uunnddoo ((CC--__,, CC--xx CC--uu))
- Incremental undo, separately remembered for each
- line.
- rreevveerrtt--lliinnee ((MM--rr))
- Undo all changes made to this line. This is like
- executing the uunnddoo command enough times to return
- the line to its initial state.
- ttiillddee--eexxppaanndd ((MM--&&))
- Perform tilde expansion on the current word.
- sseett--mmaarrkk ((CC--@@,, MM--<<ssppaaccee>>))
- Set the mark to the point. If a numeric argument
- is supplied, the mark is set to that position.
- eexxcchhaannggee--ppooiinntt--aanndd--mmaarrkk ((CC--xx CC--xx))
- Swap the point with the mark. The current cursor
- position is set to the saved position, and the old
- cursor position is saved as the mark.
- cchhaarraacctteerr--sseeaarrcchh ((CC--]]))
- A character is read and point is moved to the next
- occurrence of that character. A negative count
- searches for previous occurrences.
- cchhaarraacctteerr--sseeaarrcchh--bbaacckkwwaarrdd ((MM--CC--]]))
- A character is read and point is moved to the pre-
- vious occurrence of that character. A negative
- count searches for subsequent occurrences.
- iinnsseerrtt--ccoommmmeenntt ((MM--##))
- Without a numeric argument, the value of the read-
- line ccoommmmeenntt--bbeeggiinn variable is inserted at the
- beginning of the current line. If a numeric argu-
- ment is supplied, this command acts as a toggle:
- if the characters at the beginning of the line do
- not match the value of ccoommmmeenntt--bbeeggiinn, the value is
- inserted, otherwise the characters in ccoommmmeenntt--bbeeggiinn
- are deleted from the beginning of the line. In
- either case, the line is accepted as if a newline
- had been typed. The default value of ccoommmmeenntt--bbeeggiinn
- makes the current line a shell comment. If a
- numeric argument causes the comment character to be
- removed, the line will be executed by the shell.
- dduummpp--ffuunnccttiioonnss
- Print all of the functions and their key bindings
- to the readline output stream. If a numeric
- argument is supplied, the output is formatted in
- such a way that it can be made part of an _i_n_p_u_t_r_c
- file.
- dduummpp--vvaarriiaabblleess
- Print all of the settable variables and their val-
- ues to the readline output stream. If a numeric
- argument is supplied, the output is formatted in
- such a way that it can be made part of an _i_n_p_u_t_r_c
- file.
- dduummpp--mmaaccrrooss
- Print all of the readline key sequences bound to
- macros and the strings they ouput. If a numeric
- argument is supplied, the output is formatted in
- such a way that it can be made part of an _i_n_p_u_t_r_c
- file.
- eemmaaccss--eeddiittiinngg--mmooddee ((CC--ee))
- When in vvii command mode, this causes a switch to
- eemmaaccss editing mode.
- vvii--eeddiittiinngg--mmooddee ((MM--CC--jj))
- When in eemmaaccss editing mode, this causes a switch to
- vvii editing mode.
-
-DDEEFFAAUULLTT KKEEYY BBIINNDDIINNGGSS
- The following is a list of the default emacs and vi bind-
- ings. Characters with the eighth bit set are written as
- M-<character>, and are referred to as _m_e_t_a_f_i_e_d characters.
- The printable ASCII characters not mentioned in the list
- of emacs standard bindings are bound to the sseellff--iinnsseerrtt
- function, which just inserts the given character into the
- input line. In vi insertion mode, all characters not
- specifically mentioned are bound to sseellff--iinnsseerrtt. Charac-
- ters assigned to signal generation by _s_t_t_y(1) or the ter-
- minal driver, such as C-Z or C-C, retain that function.
- Upper and lower case metafied characters are bound to the
- same function in the emacs mode meta keymap. The remain-
- ing characters are unbound, which causes readline to ring
- the bell (subject to the setting of the bbeellll--ssttyyllee vari-
- able).
-
- EEmmaaccss MMooddee
- Emacs Standard bindings
-
- "C-@" set-mark
- "C-A" beginning-of-line
- "C-B" backward-char
- "C-D" delete-char
- "C-E" end-of-line
- "C-F" forward-char
- "C-G" abort
- "C-H" backward-delete-char
- "C-I" complete
- "C-J" accept-line
- "C-K" kill-line
- "C-L" clear-screen
- "C-M" accept-line
- "C-N" next-history
- "C-P" previous-history
- "C-Q" quoted-insert
- "C-R" reverse-search-history
- "C-S" forward-search-history
- "C-T" transpose-chars
- "C-U" unix-line-discard
- "C-V" quoted-insert
- "C-W" unix-word-rubout
- "C-Y" yank
- "C-]" character-search
- "C-_" undo
- " " to "/" self-insert
- "0" to "9" self-insert
- ":" to "~" self-insert
- "C-?" backward-delete-char
-
- Emacs Meta bindings
-
- "M-C-G" abort
- "M-C-H" backward-kill-word
- "M-C-I" tab-insert
- "M-C-J" vi-editing-mode
- "M-C-M" vi-editing-mode
- "M-C-R" revert-line
- "M-C-Y" yank-nth-arg
- "M-C-[" complete
- "M-C-]" character-search-backward
- "M-space" set-mark
- "M-#" insert-comment
- "M-&" tilde-expand
- "M-*" insert-completions
- "M--" digit-argument
- "M-." yank-last-arg
- "M-0" digit-argument
- "M-1" digit-argument
- "M-2" digit-argument
- "M-3" digit-argument
- "M-4" digit-argument
- "M-5" digit-argument
- "M-6" digit-argument
- "M-7" digit-argument
- "M-8" digit-argument
- "M-9" digit-argument
- "M-<" beginning-of-history
- "M-=" possible-completions
- "M->" end-of-history
- "M-?" possible-completions
- "M-B" backward-word
- "M-C" capitalize-word
- "M-D" kill-word
- "M-F" forward-word
- "M-L" downcase-word
- "M-N" non-incremental-forward-search-history
- "M-P" non-incremental-reverse-search-history
- "M-R" revert-line
- "M-T" transpose-words
- "M-U" upcase-word
- "M-Y" yank-pop
- "M-\" delete-horizontal-space
- "M-~" tilde-expand
- "M-C-?" backward-kill-word
- "M-_" yank-last-arg
-
- Emacs Control-X bindings
-
- "C-XC-G" abort
- "C-XC-R" re-read-init-file
- "C-XC-U" undo
- "C-XC-X" exchange-point-and-mark
- "C-X(" start-kbd-macro
- "C-X)" end-kbd-macro
- "C-XE" call-last-kbd-macro
- "C-XC-?" backward-kill-line
-
-
- VVII MMooddee bbiinnddiinnggss
- VI Insert Mode functions
-
- "C-D" vi-eof-maybe
- "C-H" backward-delete-char
- "C-I" complete
- "C-J" accept-line
- "C-M" accept-line
- "C-R" reverse-search-history
- "C-S" forward-search-history
- "C-T" transpose-chars
- "C-U" unix-line-discard
- "C-V" quoted-insert
- "C-W" unix-word-rubout
- "C-Y" yank
- "C-[" vi-movement-mode
- "C-_" undo
- " " to "~" self-insert
- "C-?" backward-delete-char
-
- VI Command Mode functions
-
- "C-D" vi-eof-maybe
- "C-E" emacs-editing-mode
- "C-G" abort
- "C-H" backward-char
- "C-J" accept-line
- "C-K" kill-line
- "C-L" clear-screen
- "C-M" accept-line
- "C-N" next-history
- "C-P" previous-history
- "C-Q" quoted-insert
- "C-R" reverse-search-history
- "C-S" forward-search-history
- "C-T" transpose-chars
- "C-U" unix-line-discard
- "C-V" quoted-insert
- "C-W" unix-word-rubout
- "C-Y" yank
- "C-_" vi-undo
- " " forward-char
- "#" insert-comment
- "$" end-of-line
- "%" vi-match
- "&" vi-tilde-expand
- "*" vi-complete
- "+" next-history
- "," vi-char-search
- "-" previous-history
- "." vi-redo
- "/" vi-search
- "0" beginning-of-line
- "1" to "9" vi-arg-digit
- ";" vi-char-search
- "=" vi-complete
- "?" vi-search
- "A" vi-append-eol
- "B" vi-prev-word
- "C" vi-change-to
- "D" vi-delete-to
- "E" vi-end-word
- "F" vi-char-search
- "G" vi-fetch-history
- "I" vi-insert-beg
- "N" vi-search-again
- "P" vi-put
- "R" vi-replace
- "S" vi-subst
- "T" vi-char-search
- "U" revert-line
- "W" vi-next-word
- "X" backward-delete-char
- "Y" vi-yank-to
- "\" vi-complete
- "^" vi-first-print
- "_" vi-yank-arg
- "`" vi-goto-mark
- "a" vi-append-mode
- "b" vi-prev-word
- "c" vi-change-to
- "d" vi-delete-to
- "e" vi-end-word
- "f" vi-char-search
- "h" backward-char
- "i" vi-insertion-mode
- "j" next-history
- "k" prev-history
- "l" forward-char
- "m" vi-set-mark
- "n" vi-search-again
- "p" vi-put
- "r" vi-change-char
- "s" vi-subst
- "t" vi-char-search
- "u" vi-undo
- "w" vi-next-word
- "x" vi-delete
- "y" vi-yank-to
- "|" vi-column
- "~" vi-change-case
-
-SSEEEE AALLSSOO
- _T_h_e _G_n_u _R_e_a_d_l_i_n_e _L_i_b_r_a_r_y, Brian Fox and Chet Ramey
- _T_h_e _G_n_u _H_i_s_t_o_r_y _L_i_b_r_a_r_y, Brian Fox and Chet Ramey
- _b_a_s_h(1)
-
-FFIILLEESS
- _~_/_._i_n_p_u_t_r_c
- Individual rreeaaddlliinnee initialization file
-
-AAUUTTHHOORRSS
- Brian Fox, Free Software Foundation
- bfox@gnu.org
-
- Chet Ramey, Case Western Reserve University
- chet@ins.CWRU.Edu
-
-BBUUGG RREEPPOORRTTSS
- If you find a bug in rreeaaddlliinnee,, you should report it. But
- first, you should make sure that it really is a bug, and
- that it appears in the latest version of the rreeaaddlliinnee
- library that you have.
-
- Once you have determined that a bug actually exists, mail
- a bug report to _b_u_g_-_r_e_a_d_l_i_n_e@_g_n_u_._o_r_g. If you have a fix,
- you are welcome to mail that as well! Suggestions and
- `philosophical' bug reports may be mailed to _b_u_g_-_r_e_a_d_-
- _l_i_n_e@_g_n_u_._o_r_g or posted to the Usenet newsgroup
- ggnnuu..bbaasshh..bbuugg.
-
- Comments and bug reports concerning this manual page
- should be directed to _c_h_e_t_@_i_n_s_._C_W_R_U_._E_d_u.
-
-BBUUGGSS
- It's too big and too slow.
-
-
-
-GNU Readline 4.3 2002 January 22 READLINE(3)
diff --git a/readline-4.3.orig/doc/readline.3 b/readline-4.3.orig/doc/readline.3
deleted file mode 100644
index afd6ba2..0000000
--- a/readline-4.3.orig/doc/readline.3
+++ /dev/null
@@ -1,1272 +0,0 @@
-.\"
-.\" MAN PAGE COMMENTS to
-.\"
-.\" Chet Ramey
-.\" Information Network Services
-.\" Case Western Reserve University
-.\" chet@ins.CWRU.Edu
-.\"
-.\" Last Change: Tue Jan 22 09:18:25 EST 2002
-.\"
-.TH READLINE 3 "2002 January 22" "GNU Readline 4.3"
-.\"
-.\" File Name macro. This used to be `.PN', for Path Name,
-.\" but Sun doesn't seem to like that very much.
-.\"
-.de FN
-\fI\|\\$1\|\fP
-..
-.SH NAME
-readline \- get a line from a user with editing
-.SH SYNOPSIS
-.LP
-.nf
-.ft B
-#include <stdio.h>
-#include <readline/readline.h>
-#include <readline/history.h>
-.ft
-.fi
-.LP
-.nf
-\fIchar *\fP
-.br
-\fBreadline\fP (\fIconst char *prompt\fP);
-.fi
-.SH COPYRIGHT
-.if n Readline is Copyright (C) 1989\-2002 by the Free Software Foundation, Inc.
-.if t Readline is Copyright \(co 1989\-2002 by the Free Software Foundation, Inc.
-.SH DESCRIPTION
-.LP
-.B readline
-will read a line from the terminal
-and return it, using
-.B prompt
-as a prompt. If
-.B prompt
-is \fBNULL\fP or the empty string, no prompt is issued.
-The line returned is allocated with
-.IR malloc (3);
-the caller must free it when finished. The line returned
-has the final newline removed, so only the text of the line
-remains.
-.LP
-.B readline
-offers editing capabilities while the user is entering the
-line.
-By default, the line editing commands
-are similar to those of emacs.
-A vi\-style line editing interface is also available.
-.LP
-This manual page describes only the most basic use of \fBreadline\fP.
-Much more functionality is available; see
-\fIThe GNU Readline Library\fP and \fIThe GNU History Library\fP
-for additional information.
-.SH RETURN VALUE
-.LP
-.B readline
-returns the text of the line read. A blank line
-returns the empty string. If
-.B EOF
-is encountered while reading a line, and the line is empty,
-.B NULL
-is returned. If an
-.B EOF
-is read with a non\-empty line, it is
-treated as a newline.
-.SH NOTATION
-.LP
-An emacs-style notation is used to denote
-keystrokes. Control keys are denoted by C\-\fIkey\fR, e.g., C\-n
-means Control\-N. Similarly,
-.I meta
-keys are denoted by M\-\fIkey\fR, so M\-x means Meta\-X. (On keyboards
-without a
-.I meta
-key, M\-\fIx\fP means ESC \fIx\fP, i.e., press the Escape key
-then the
-.I x
-key. This makes ESC the \fImeta prefix\fP.
-The combination M\-C\-\fIx\fP means ESC\-Control\-\fIx\fP,
-or press the Escape key
-then hold the Control key while pressing the
-.I x
-key.)
-.PP
-Readline commands may be given numeric
-.IR arguments ,
-which normally act as a repeat count. Sometimes, however, it is the
-sign of the argument that is significant. Passing a negative argument
-to a command that acts in the forward direction (e.g., \fBkill\-line\fP)
-causes that command to act in a backward direction. Commands whose
-behavior with arguments deviates from this are noted.
-.PP
-When a command is described as \fIkilling\fP text, the text
-deleted is saved for possible future retrieval
-(\fIyanking\fP). The killed text is saved in a
-\fIkill ring\fP. Consecutive kills cause the text to be
-accumulated into one unit, which can be yanked all at once.
-Commands which do not kill text separate the chunks of text
-on the kill ring.
-.SH INITIALIZATION FILE
-.LP
-Readline is customized by putting commands in an initialization
-file (the \fIinputrc\fP file).
-The name of this file is taken from the value of the
-.B INPUTRC
-environment variable. If that variable is unset, the default is
-.IR ~/.inputrc .
-When a program which uses the readline library starts up, the
-init file is read, and the key bindings and variables are set.
-There are only a few basic constructs allowed in the
-readline init file. Blank lines are ignored.
-Lines beginning with a \fB#\fP are comments.
-Lines beginning with a \fB$\fP indicate conditional constructs.
-Other lines denote key bindings and variable settings.
-Each program using this library may add its own commands
-and bindings.
-.PP
-For example, placing
-.RS
-.PP
-M\-Control\-u: universal\-argument
-.RE
-or
-.RS
-C\-Meta\-u: universal\-argument
-.RE
-.sp
-into the
-.I inputrc
-would make M\-C\-u execute the readline command
-.IR universal\-argument .
-.PP
-The following symbolic character names are recognized while
-processing key bindings:
-.IR DEL ,
-.IR ESC ,
-.IR ESCAPE ,
-.IR LFD ,
-.IR NEWLINE ,
-.IR RET ,
-.IR RETURN ,
-.IR RUBOUT ,
-.IR SPACE ,
-.IR SPC ,
-and
-.IR TAB .
-.PP
-In addition to command names, readline allows keys to be bound
-to a string that is inserted when the key is pressed (a \fImacro\fP).
-.PP
-.SS Key Bindings
-.PP
-The syntax for controlling key bindings in the
-.I inputrc
-file is simple. All that is required is the name of the
-command or the text of a macro and a key sequence to which
-it should be bound. The name may be specified in one of two ways:
-as a symbolic key name, possibly with \fIMeta\-\fP or \fIControl\-\fP
-prefixes, or as a key sequence.
-.PP
-When using the form \fBkeyname\fP:\^\fIfunction-name\fP or \fImacro\fP,
-.I keyname
-is the name of a key spelled out in English. For example:
-.sp
-.RS
-Control\-u: universal\-argument
-.br
-Meta\-Rubout: backward\-kill\-word
-.br
-Control\-o: "> output"
-.RE
-.LP
-In the above example,
-.I C\-u
-is bound to the function
-.BR universal\-argument ,
-.I M-DEL
-is bound to the function
-.BR backward\-kill\-word ,
-and
-.I C\-o
-is bound to run the macro
-expressed on the right hand side (that is, to insert the text
-.if t \f(CW> output\fP
-.if n ``> output''
-into the line).
-.PP
-In the second form, \fB"keyseq"\fP:\^\fIfunction\-name\fP or \fImacro\fP,
-.B keyseq
-differs from
-.B keyname
-above in that strings denoting
-an entire key sequence may be specified by placing the sequence
-within double quotes. Some GNU Emacs style key escapes can be
-used, as in the following example, but the symbolic character names
-are not recognized.
-.sp
-.RS
-"\eC\-u": universal\-argument
-.br
-"\eC\-x\eC\-r": re\-read\-init\-file
-.br
-"\ee[11~": "Function Key 1"
-.RE
-.PP
-In this example,
-.I C-u
-is again bound to the function
-.BR universal\-argument .
-.I "C-x C-r"
-is bound to the function
-.BR re\-read\-init\-file ,
-and
-.I "ESC [ 1 1 ~"
-is bound to insert the text
-.if t \f(CWFunction Key 1\fP.
-.if n ``Function Key 1''.
-.PP
-The full set of GNU Emacs style escape sequences available when specifying
-key sequences is
-.RS
-.PD 0
-.TP
-.B \eC\-
-control prefix
-.TP
-.B \eM\-
-meta prefix
-.TP
-.B \ee
-an escape character
-.TP
-.B \e\e
-backslash
-.TP
-.B \e"
-literal ", a double quote
-.TP
-.B \e'
-literal ', a single quote
-.RE
-.PD
-.PP
-In addition to the GNU Emacs style escape sequences, a second
-set of backslash escapes is available:
-.RS
-.PD 0
-.TP
-.B \ea
-alert (bell)
-.TP
-.B \eb
-backspace
-.TP
-.B \ed
-delete
-.TP
-.B \ef
-form feed
-.TP
-.B \en
-newline
-.TP
-.B \er
-carriage return
-.TP
-.B \et
-horizontal tab
-.TP
-.B \ev
-vertical tab
-.TP
-.B \e\fInnn\fP
-the eight-bit character whose value is the octal value \fInnn\fP
-(one to three digits)
-.TP
-.B \ex\fIHH\fP
-the eight-bit character whose value is the hexadecimal value \fIHH\fP
-(one or two hex digits)
-.RE
-.PD
-.PP
-When entering the text of a macro, single or double quotes should
-be used to indicate a macro definition. Unquoted text
-is assumed to be a function name.
-In the macro body, the backslash escapes described above are expanded.
-Backslash will quote any other character in the macro text,
-including " and '.
-.PP
-.B Bash
-allows the current readline key bindings to be displayed or modified
-with the
-.B bind
-builtin command. The editing mode may be switched during interactive
-use by using the
-.B \-o
-option to the
-.B set
-builtin command. Other programs using this library provide
-similar mechanisms. The
-.I inputrc
-file may be edited and re-read if a program does not provide
-any other means to incorporate new bindings.
-.SS Variables
-.PP
-Readline has variables that can be used to further customize its
-behavior. A variable may be set in the
-.I inputrc
-file with a statement of the form
-.RS
-.PP
-\fBset\fP \fIvariable\-name\fP \fIvalue\fP
-.RE
-.PP
-Except where noted, readline variables can take the values
-.B On
-or
-.B Off
-(without regard to case).
-The variables and their default values are:
-.PP
-.PD 0
-.TP
-.B bell\-style (audible)
-Controls what happens when readline wants to ring the terminal bell.
-If set to \fBnone\fP, readline never rings the bell. If set to
-\fBvisible\fP, readline uses a visible bell if one is available.
-If set to \fBaudible\fP, readline attempts to ring the terminal's bell.
-.TP
-.B comment\-begin (``#'')
-The string that is inserted in \fBvi\fP mode when the
-.B insert\-comment
-command is executed.
-This command is bound to
-.B M\-#
-in emacs mode and to
-.B #
-in vi command mode.
-.TP
-.B completion\-ignore\-case (Off)
-If set to \fBOn\fP, readline performs filename matching and completion
-in a case\-insensitive fashion.
-.TP
-.B completion\-query\-items (100)
-This determines when the user is queried about viewing
-the number of possible completions
-generated by the \fBpossible\-completions\fP command.
-It may be set to any integer value greater than or equal to
-zero. If the number of possible completions is greater than
-or equal to the value of this variable, the user is asked whether
-or not he wishes to view them; otherwise they are simply listed
-on the terminal.
-.TP
-.B convert\-meta (On)
-If set to \fBOn\fP, readline will convert characters with the
-eighth bit set to an ASCII key sequence
-by stripping the eighth bit and prefixing it with an
-escape character (in effect, using escape as the \fImeta prefix\fP).
-.TP
-.B disable\-completion (Off)
-If set to \fBOn\fP, readline will inhibit word completion. Completion
-characters will be inserted into the line as if they had been
-mapped to \fBself-insert\fP.
-.TP
-.B editing\-mode (emacs)
-Controls whether readline begins with a set of key bindings similar
-to emacs or vi.
-.B editing\-mode
-can be set to either
-.B emacs
-or
-.BR vi .
-.TP
-.B enable\-keypad (Off)
-When set to \fBOn\fP, readline will try to enable the application
-keypad when it is called. Some systems need this to enable the
-arrow keys.
-.TP
-.B expand\-tilde (Off)
-If set to \fBon\fP, tilde expansion is performed when readline
-attempts word completion.
-.TP
-.B history-preserve-point
-If set to \fBon\fP, the history code attempts to place point at the
-same location on each history line retrived with \fBprevious-history\fP
-or \fBnext-history\fP.
-.TP
-.B horizontal\-scroll\-mode (Off)
-When set to \fBOn\fP, makes readline use a single line for display,
-scrolling the input horizontally on a single screen line when it
-becomes longer than the screen width rather than wrapping to a new line.
-.TP
-.B input\-meta (Off)
-If set to \fBOn\fP, readline will enable eight-bit input (that is,
-it will not clear the eighth bit in the characters it reads),
-regardless of what the terminal claims it can support. The name
-.B meta\-flag
-is a synonym for this variable.
-.TP
-.B isearch\-terminators (``C\-[ C\-J'')
-The string of characters that should terminate an incremental
-search without subsequently executing the character as a command.
-If this variable has not been given a value, the characters
-\fIESC\fP and \fIC\-J\fP will terminate an incremental search.
-.TP
-.B keymap (emacs)
-Set the current readline keymap. The set of legal keymap names is
-\fIemacs, emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,
-vi-command\fP, and
-.IR vi-insert .
-\fIvi\fP is equivalent to \fIvi-command\fP; \fIemacs\fP is
-equivalent to \fIemacs-standard\fP. The default value is
-.IR emacs .
-The value of
-.B editing\-mode
-also affects the default keymap.
-.TP
-.B mark\-directories (On)
-If set to \fBOn\fP, completed directory names have a slash
-appended.
-.TP
-.B mark\-modified\-lines (Off)
-If set to \fBOn\fP, history lines that have been modified are displayed
-with a preceding asterisk (\fB*\fP).
-.TP
-.B mark\-symlinked\-directories (Off)
-If set to \fBOn\fP, completed names which are symbolic links to directories
-have a slash appended (subject to the value of
-\fBmark\-directories\fP).
-.TP
-.B match\-hidden\-files (On)
-This variable, when set to \fBOn\fP, causes readline to match files whose
-names begin with a `.' (hidden files) when performing filename
-completion, unless the leading `.' is
-supplied by the user in the filename to be completed.
-.TP
-.B output\-meta (Off)
-If set to \fBOn\fP, readline will display characters with the
-eighth bit set directly rather than as a meta-prefixed escape
-sequence.
-.TP
-.B page\-completions (On)
-If set to \fBOn\fP, readline uses an internal \fImore\fP-like pager
-to display a screenful of possible completions at a time.
-.TP
-.B print\-completions\-horizontally (Off)
-If set to \fBOn\fP, readline will display completions with matches
-sorted horizontally in alphabetical order, rather than down the screen.
-.TP
-.B show\-all\-if\-ambiguous (Off)
-This alters the default behavior of the completion functions. If
-set to
-.BR on ,
-words which have more than one possible completion cause the
-matches to be listed immediately instead of ringing the bell.
-.TP
-.B visible\-stats (Off)
-If set to \fBOn\fP, a character denoting a file's type as reported
-by \fIstat\fP(2) is appended to the filename when listing possible
-completions.
-.PD
-.SS Conditional Constructs
-.PP
-Readline implements a facility similar in spirit to the conditional
-compilation features of the C preprocessor which allows key
-bindings and variable settings to be performed as the result
-of tests. There are four parser directives used.
-.IP \fB$if\fP
-The
-.B $if
-construct allows bindings to be made based on the
-editing mode, the terminal being used, or the application using
-readline. The text of the test extends to the end of the line;
-no characters are required to isolate it.
-.RS
-.IP \fBmode\fP
-The \fBmode=\fP form of the \fB$if\fP directive is used to test
-whether readline is in emacs or vi mode.
-This may be used in conjunction
-with the \fBset keymap\fP command, for instance, to set bindings in
-the \fIemacs-standard\fP and \fIemacs-ctlx\fP keymaps only if
-readline is starting out in emacs mode.
-.IP \fBterm\fP
-The \fBterm=\fP form may be used to include terminal-specific
-key bindings, perhaps to bind the key sequences output by the
-terminal's function keys. The word on the right side of the
-.B =
-is tested against the full name of the terminal and the portion
-of the terminal name before the first \fB\-\fP. This allows
-.I sun
-to match both
-.I sun
-and
-.IR sun\-cmd ,
-for instance.
-.IP \fBapplication\fP
-The \fBapplication\fP construct is used to include
-application-specific settings. Each program using the readline
-library sets the \fIapplication name\fP, and an initialization
-file can test for a particular value.
-This could be used to bind key sequences to functions useful for
-a specific program. For instance, the following command adds a
-key sequence that quotes the current or previous word in Bash:
-.sp 1
-.RS
-.nf
-\fB$if\fP Bash
-# Quote the current or previous word
-"\eC-xq": "\eeb\e"\eef\e""
-\fB$endif\fP
-.fi
-.RE
-.RE
-.IP \fB$endif\fP
-This command, as seen in the previous example, terminates an
-\fB$if\fP command.
-.IP \fB$else\fP
-Commands in this branch of the \fB$if\fP directive are executed if
-the test fails.
-.IP \fB$include\fP
-This directive takes a single filename as an argument and reads commands
-and bindings from that file. For example, the following directive
-would read \fI/etc/inputrc\fP:
-.sp 1
-.RS
-.nf
-\fB$include\fP \^ \fI/etc/inputrc\fP
-.fi
-.RE
-.SH SEARCHING
-.PP
-Readline provides commands for searching through the command history
-for lines containing a specified string.
-There are two search modes:
-.I incremental
-and
-.IR non-incremental .
-.PP
-Incremental searches begin before the user has finished typing the
-search string.
-As each character of the search string is typed, readline displays
-the next entry from the history matching the string typed so far.
-An incremental search requires only as many characters as needed to
-find the desired history entry.
-To search backward in the history for a particular string, type
-\fBC\-r\fP. Typing \fBC\-s\fP searches forward through the history.
-The characters present in the value of the \fBisearch-terminators\fP
-variable are used to terminate an incremental search.
-If that variable has not been assigned a value the \fIEscape\fP and
-\fBC\-J\fP characters will terminate an incremental search.
-\fBC\-G\fP will abort an incremental search and restore the original
-line.
-When the search is terminated, the history entry containing the
-search string becomes the current line.
-.PP
-To find other matching entries in the history list, type \fBC\-s\fP or
-\fBC\-r\fP as appropriate.
-This will search backward or forward in the history for the next
-line matching the search string typed so far.
-Any other key sequence bound to a readline command will terminate
-the search and execute that command.
-For instance, a newline will terminate the search and accept
-the line, thereby executing the command from the history list.
-A movement command will terminate the search, make the last line found
-the current line, and begin editing.
-.PP
-Non-incremental searches read the entire search string before starting
-to search for matching history lines. The search string may be
-typed by the user or be part of the contents of the current line.
-.SH EDITING COMMANDS
-.PP
-The following is a list of the names of the commands and the default
-key sequences to which they are bound.
-Command names without an accompanying key sequence are unbound by default.
-.PP
-In the following descriptions, \fIpoint\fP refers to the current cursor
-position, and \fImark\fP refers to a cursor position saved by the
-\fBset\-mark\fP command.
-The text between the point and mark is referred to as the \fIregion\fP.
-.SS Commands for Moving
-.PP
-.PD 0
-.TP
-.B beginning\-of\-line (C\-a)
-Move to the start of the current line.
-.TP
-.B end\-of\-line (C\-e)
-Move to the end of the line.
-.TP
-.B forward\-char (C\-f)
-Move forward a character.
-.TP
-.B backward\-char (C\-b)
-Move back a character.
-.TP
-.B forward\-word (M\-f)
-Move forward to the end of the next word. Words are composed of
-alphanumeric characters (letters and digits).
-.TP
-.B backward\-word (M\-b)
-Move back to the start of the current or previous word. Words are
-composed of alphanumeric characters (letters and digits).
-.TP
-.B clear\-screen (C\-l)
-Clear the screen leaving the current line at the top of the screen.
-With an argument, refresh the current line without clearing the
-screen.
-.TP
-.B redraw\-current\-line
-Refresh the current line.
-.PD
-.SS Commands for Manipulating the History
-.PP
-.PD 0
-.TP
-.B accept\-line (Newline, Return)
-Accept the line regardless of where the cursor is.
-If this line is
-non-empty, it may be added to the history list for future recall with
-\fBadd_history()\fP.
-If the line is a modified history line, the history line is restored to its original state.
-.TP
-.B previous\-history (C\-p)
-Fetch the previous command from the history list, moving back in
-the list.
-.TP
-.B next\-history (C\-n)
-Fetch the next command from the history list, moving forward in the
-list.
-.TP
-.B beginning\-of\-history (M\-<)
-Move to the first line in the history.
-.TP
-.B end\-of\-history (M\->)
-Move to the end of the input history, i.e., the line currently being
-entered.
-.TP
-.B reverse\-search\-history (C\-r)
-Search backward starting at the current line and moving `up' through
-the history as necessary. This is an incremental search.
-.TP
-.B forward\-search\-history (C\-s)
-Search forward starting at the current line and moving `down' through
-the history as necessary. This is an incremental search.
-.TP
-.B non\-incremental\-reverse\-search\-history (M\-p)
-Search backward through the history starting at the current line
-using a non-incremental search for a string supplied by the user.
-.TP
-.B non\-incremental\-forward\-search\-history (M\-n)
-Search forward through the history using a non-incremental search
-for a string supplied by the user.
-.TP
-.B history\-search\-forward
-Search forward through the history for the string of characters
-between the start of the current line and the current cursor
-position (the \fIpoint\fP).
-This is a non-incremental search.
-.TP
-.B history\-search\-backward
-Search backward through the history for the string of characters
-between the start of the current line and the point.
-This is a non-incremental search.
-.TP
-.B yank\-nth\-arg (M\-C\-y)
-Insert the first argument to the previous command (usually
-the second word on the previous line) at point.
-With an argument
-.IR n ,
-insert the \fIn\fPth word from the previous command (the words
-in the previous command begin with word 0). A negative argument
-inserts the \fIn\fPth word from the end of the previous command.
-.TP
-.B
-yank\-last\-arg (M\-.\^, M\-_\^)
-Insert the last argument to the previous command (the last word of
-the previous history entry). With an argument,
-behave exactly like \fByank\-nth\-arg\fP.
-Successive calls to \fByank\-last\-arg\fP move back through the history
-list, inserting the last argument of each line in turn.
-.PD
-.SS Commands for Changing Text
-.PP
-.PD 0
-.TP
-.B delete\-char (C\-d)
-Delete the character at point. If point is at the
-beginning of the line, there are no characters in the line, and
-the last character typed was not bound to \fBdelete\-char\fP, then return
-.SM
-.BR EOF .
-.TP
-.B backward\-delete\-char (Rubout)
-Delete the character behind the cursor. When given a numeric argument,
-save the deleted text on the kill ring.
-.TP
-.B forward\-backward\-delete\-char
-Delete the character under the cursor, unless the cursor is at the
-end of the line, in which case the character behind the cursor is
-deleted.
-.TP
-.B quoted\-insert (C\-q, C\-v)
-Add the next character that you type to the line verbatim. This is
-how to insert characters like \fBC\-q\fP, for example.
-.TP
-.B tab\-insert (M-TAB)
-Insert a tab character.
-.TP
-.B self\-insert (a,\ b,\ A,\ 1,\ !,\ ...)
-Insert the character typed.
-.TP
-.B transpose\-chars (C\-t)
-Drag the character before point forward over the character at point,
-moving point forward as well.
-If point is at the end of the line, then this transposes
-the two characters before point.
-Negative arguments have no effect.
-.TP
-.B transpose\-words (M\-t)
-Drag the word before point past the word after point,
-moving point over that word as well.
-If point is at the end of the line, this transposes
-the last two words on the line.
-.TP
-.B upcase\-word (M\-u)
-Uppercase the current (or following) word. With a negative argument,
-uppercase the previous word, but do not move point.
-.TP
-.B downcase\-word (M\-l)
-Lowercase the current (or following) word. With a negative argument,
-lowercase the previous word, but do not move point.
-.TP
-.B capitalize\-word (M\-c)
-Capitalize the current (or following) word. With a negative argument,
-capitalize the previous word, but do not move point.
-.TP
-.B overwrite\-mode
-Toggle overwrite mode. With an explicit positive numeric argument,
-switches to overwrite mode. With an explicit non-positive numeric
-argument, switches to insert mode. This command affects only
-\fBemacs\fP mode; \fBvi\fP mode does overwrite differently.
-Each call to \fIreadline()\fP starts in insert mode.
-In overwrite mode, characters bound to \fBself\-insert\fP replace
-the text at point rather than pushing the text to the right.
-Characters bound to \fBbackward\-delete\-char\fP replace the character
-before point with a space. By default, this command is unbound.
-.PD
-.SS Killing and Yanking
-.PP
-.PD 0
-.TP
-.B kill\-line (C\-k)
-Kill the text from point to the end of the line.
-.TP
-.B backward\-kill\-line (C\-x Rubout)
-Kill backward to the beginning of the line.
-.TP
-.B unix\-line\-discard (C\-u)
-Kill backward from point to the beginning of the line.
-The killed text is saved on the kill-ring.
-.\" There is no real difference between this and backward-kill-line
-.TP
-.B kill\-whole\-line
-Kill all characters on the current line, no matter where point is.
-.TP
-.B kill\-word (M\-d)
-Kill from point the end of the current word, or if between
-words, to the end of the next word. Word boundaries are the same as
-those used by \fBforward\-word\fP.
-.TP
-.B backward\-kill\-word (M\-Rubout)
-Kill the word behind point.
-Word boundaries are the same as those used by \fBbackward\-word\fP.
-.TP
-.B unix\-word\-rubout (C\-w)
-Kill the word behind point, using white space as a word boundary.
-The killed text is saved on the kill-ring.
-.TP
-.B delete\-horizontal\-space (M\-\e)
-Delete all spaces and tabs around point.
-.TP
-.B kill\-region
-Kill the text between the point and \fImark\fP (saved cursor position).
-This text is referred to as the \fIregion\fP.
-.TP
-.B copy\-region\-as\-kill
-Copy the text in the region to the kill buffer.
-.TP
-.B copy\-backward\-word
-Copy the word before point to the kill buffer.
-The word boundaries are the same as \fBbackward\-word\fP.
-.TP
-.B copy\-forward\-word
-Copy the word following point to the kill buffer.
-The word boundaries are the same as \fBforward\-word\fP.
-.TP
-.B yank (C\-y)
-Yank the top of the kill ring into the buffer at point.
-.TP
-.B yank\-pop (M\-y)
-Rotate the kill ring, and yank the new top. Only works following
-.B yank
-or
-.BR yank\-pop .
-.PD
-.SS Numeric Arguments
-.PP
-.PD 0
-.TP
-.B digit\-argument (M\-0, M\-1, ..., M\-\-)
-Add this digit to the argument already accumulating, or start a new
-argument. M\-\- starts a negative argument.
-.TP
-.B universal\-argument
-This is another way to specify an argument.
-If this command is followed by one or more digits, optionally with a
-leading minus sign, those digits define the argument.
-If the command is followed by digits, executing
-.B universal\-argument
-again ends the numeric argument, but is otherwise ignored.
-As a special case, if this command is immediately followed by a
-character that is neither a digit or minus sign, the argument count
-for the next command is multiplied by four.
-The argument count is initially one, so executing this function the
-first time makes the argument count four, a second time makes the
-argument count sixteen, and so on.
-.PD
-.SS Completing
-.PP
-.PD 0
-.TP
-.B complete (TAB)
-Attempt to perform completion on the text before point.
-The actual completion performed is application-specific.
-.BR Bash ,
-for instance, attempts completion treating the text as a variable
-(if the text begins with \fB$\fP), username (if the text begins with
-\fB~\fP), hostname (if the text begins with \fB@\fP), or
-command (including aliases and functions) in turn. If none
-of these produces a match, filename completion is attempted.
-.BR Gdb ,
-on the other hand,
-allows completion of program functions and variables, and
-only attempts filename completion under certain circumstances.
-.TP
-.B possible\-completions (M\-?)
-List the possible completions of the text before point.
-.TP
-.B insert\-completions (M\-*)
-Insert all completions of the text before point
-that would have been generated by
-\fBpossible\-completions\fP.
-.TP
-.B menu\-complete
-Similar to \fBcomplete\fP, but replaces the word to be completed
-with a single match from the list of possible completions.
-Repeated execution of \fBmenu\-complete\fP steps through the list
-of possible completions, inserting each match in turn.
-At the end of the list of completions, the bell is rung
-(subject to the setting of \Bbell\-style\fP)
-and the original text is restored.
-An argument of \fIn\fP moves \fIn\fP positions forward in the list
-of matches; a negative argument may be used to move backward
-through the list.
-This command is intended to be bound to \fBTAB\fP, but is unbound
-by default.
-.TP
-.B delete\-char\-or\-list
-Deletes the character under the cursor if not at the beginning or
-end of the line (like \fBdelete-char\fP).
-If at the end of the line, behaves identically to
-\fBpossible-completions\fP.
-.PD
-.SS Keyboard Macros
-.PP
-.PD 0
-.TP
-.B start\-kbd\-macro (C\-x (\^)
-Begin saving the characters typed into the current keyboard macro.
-.TP
-.B end\-kbd\-macro (C\-x )\^)
-Stop saving the characters typed into the current keyboard macro
-and store the definition.
-.TP
-.B call\-last\-kbd\-macro (C\-x e)
-Re-execute the last keyboard macro defined, by making the characters
-in the macro appear as if typed at the keyboard.
-.PD
-.SS Miscellaneous
-.PP
-.PD 0
-.TP
-.B re\-read\-init\-file (C\-x C\-r)
-Read in the contents of the \fIinputrc\fP file, and incorporate
-any bindings or variable assignments found there.
-.TP
-.B abort (C\-g)
-Abort the current editing command and
-ring the terminal's bell (subject to the setting of
-.BR bell\-style ).
-.TP
-.B do\-uppercase\-version (M\-a, M\-b, M\-\fIx\fP, ...)
-If the metafied character \fIx\fP is lowercase, run the command
-that is bound to the corresponding uppercase character.
-.TP
-.B prefix\-meta (ESC)
-Metafy the next character typed.
-.SM
-.B ESC
-.B f
-is equivalent to
-.BR Meta\-f .
-.TP
-.B undo (C\-_, C\-x C\-u)
-Incremental undo, separately remembered for each line.
-.TP
-.B revert\-line (M\-r)
-Undo all changes made to this line. This is like executing the
-.B undo
-command enough times to return the line to its initial state.
-.TP
-.B tilde\-expand (M\-&)
-Perform tilde expansion on the current word.
-.TP
-.B set\-mark (C\-@, M\-<space>)
-Set the mark to the point. If a
-numeric argument is supplied, the mark is set to that position.
-.TP
-.B exchange\-point\-and\-mark (C\-x C\-x)
-Swap the point with the mark. The current cursor position is set to
-the saved position, and the old cursor position is saved as the mark.
-.TP
-.B character\-search (C\-])
-A character is read and point is moved to the next occurrence of that
-character. A negative count searches for previous occurrences.
-.TP
-.B character\-search\-backward (M\-C\-])
-A character is read and point is moved to the previous occurrence of that
-character. A negative count searches for subsequent occurrences.
-.TP
-.B insert\-comment (M\-#)
-Without a numeric argument, the value of the readline
-.B comment\-begin
-variable is inserted at the beginning of the current line.
-If a numeric argument is supplied, this command acts as a toggle: if
-the characters at the beginning of the line do not match the value
-of \fBcomment\-begin\fP, the value is inserted, otherwise
-the characters in \fBcomment-begin\fP are deleted from the beginning of
-the line.
-In either case, the line is accepted as if a newline had been typed.
-The default value of
-.B comment\-begin
-makes the current line a shell comment.
-If a numeric argument causes the comment character to be removed, the line
-will be executed by the shell.
-.TP
-.B dump\-functions
-Print all of the functions and their key bindings to the
-readline output stream. If a numeric argument is supplied,
-the output is formatted in such a way that it can be made part
-of an \fIinputrc\fP file.
-.TP
-.B dump\-variables
-Print all of the settable variables and their values to the
-readline output stream. If a numeric argument is supplied,
-the output is formatted in such a way that it can be made part
-of an \fIinputrc\fP file.
-.TP
-.B dump\-macros
-Print all of the readline key sequences bound to macros and the
-strings they ouput. If a numeric argument is supplied,
-the output is formatted in such a way that it can be made part
-of an \fIinputrc\fP file.
-.TP
-.B emacs\-editing\-mode (C\-e)
-When in
-.B vi
-command mode, this causes a switch to
-.B emacs
-editing mode.
-.TP
-.B vi\-editing\-mode (M\-C\-j)
-When in
-.B emacs
-editing mode, this causes a switch to
-.B vi
-editing mode.
-.PD
-.SH DEFAULT KEY BINDINGS
-.LP
-The following is a list of the default emacs and vi bindings.
-Characters with the eighth bit set are written as M\-<character>, and
-are referred to as
-.I metafied
-characters.
-The printable ASCII characters not mentioned in the list of emacs
-standard bindings are bound to the
-.B self\-insert
-function, which just inserts the given character into the input line.
-In vi insertion mode, all characters not specifically mentioned are
-bound to
-.BR self\-insert .
-Characters assigned to signal generation by
-.IR stty (1)
-or the terminal driver, such as C-Z or C-C,
-retain that function.
-Upper and lower case metafied characters are bound to the same function in
-the emacs mode meta keymap.
-The remaining characters are unbound, which causes readline
-to ring the bell (subject to the setting of the
-.B bell\-style
-variable).
-.SS Emacs Mode
-.RS +.6i
-.nf
-.ta 2.5i
-.sp
-Emacs Standard bindings
-.sp
-"C-@" set-mark
-"C-A" beginning-of-line
-"C-B" backward-char
-"C-D" delete-char
-"C-E" end-of-line
-"C-F" forward-char
-"C-G" abort
-"C-H" backward-delete-char
-"C-I" complete
-"C-J" accept-line
-"C-K" kill-line
-"C-L" clear-screen
-"C-M" accept-line
-"C-N" next-history
-"C-P" previous-history
-"C-Q" quoted-insert
-"C-R" reverse-search-history
-"C-S" forward-search-history
-"C-T" transpose-chars
-"C-U" unix-line-discard
-"C-V" quoted-insert
-"C-W" unix-word-rubout
-"C-Y" yank
-"C-]" character-search
-"C-_" undo
-"\^ " to "/" self-insert
-"0" to "9" self-insert
-":" to "~" self-insert
-"C-?" backward-delete-char
-.PP
-Emacs Meta bindings
-.sp
-"M-C-G" abort
-"M-C-H" backward-kill-word
-"M-C-I" tab-insert
-"M-C-J" vi-editing-mode
-"M-C-M" vi-editing-mode
-"M-C-R" revert-line
-"M-C-Y" yank-nth-arg
-"M-C-[" complete
-"M-C-]" character-search-backward
-"M-space" set-mark
-"M-#" insert-comment
-"M-&" tilde-expand
-"M-*" insert-completions
-"M--" digit-argument
-"M-." yank-last-arg
-"M-0" digit-argument
-"M-1" digit-argument
-"M-2" digit-argument
-"M-3" digit-argument
-"M-4" digit-argument
-"M-5" digit-argument
-"M-6" digit-argument
-"M-7" digit-argument
-"M-8" digit-argument
-"M-9" digit-argument
-"M-<" beginning-of-history
-"M-=" possible-completions
-"M->" end-of-history
-"M-?" possible-completions
-"M-B" backward-word
-"M-C" capitalize-word
-"M-D" kill-word
-"M-F" forward-word
-"M-L" downcase-word
-"M-N" non-incremental-forward-search-history
-"M-P" non-incremental-reverse-search-history
-"M-R" revert-line
-"M-T" transpose-words
-"M-U" upcase-word
-"M-Y" yank-pop
-"M-\e" delete-horizontal-space
-"M-~" tilde-expand
-"M-C-?" backward-kill-word
-"M-_" yank-last-arg
-.PP
-Emacs Control-X bindings
-.sp
-"C-XC-G" abort
-"C-XC-R" re-read-init-file
-"C-XC-U" undo
-"C-XC-X" exchange-point-and-mark
-"C-X(" start-kbd-macro
-"C-X)" end-kbd-macro
-"C-XE" call-last-kbd-macro
-"C-XC-?" backward-kill-line
-.sp
-.RE
-.SS VI Mode bindings
-.RS +.6i
-.nf
-.ta 2.5i
-.sp
-.PP
-VI Insert Mode functions
-.sp
-"C-D" vi-eof-maybe
-"C-H" backward-delete-char
-"C-I" complete
-"C-J" accept-line
-"C-M" accept-line
-"C-R" reverse-search-history
-"C-S" forward-search-history
-"C-T" transpose-chars
-"C-U" unix-line-discard
-"C-V" quoted-insert
-"C-W" unix-word-rubout
-"C-Y" yank
-"C-[" vi-movement-mode
-"C-_" undo
-"\^ " to "~" self-insert
-"C-?" backward-delete-char
-.PP
-VI Command Mode functions
-.sp
-"C-D" vi-eof-maybe
-"C-E" emacs-editing-mode
-"C-G" abort
-"C-H" backward-char
-"C-J" accept-line
-"C-K" kill-line
-"C-L" clear-screen
-"C-M" accept-line
-"C-N" next-history
-"C-P" previous-history
-"C-Q" quoted-insert
-"C-R" reverse-search-history
-"C-S" forward-search-history
-"C-T" transpose-chars
-"C-U" unix-line-discard
-"C-V" quoted-insert
-"C-W" unix-word-rubout
-"C-Y" yank
-"C-_" vi-undo
-"\^ " forward-char
-"#" insert-comment
-"$" end-of-line
-"%" vi-match
-"&" vi-tilde-expand
-"*" vi-complete
-"+" next-history
-"," vi-char-search
-"-" previous-history
-"." vi-redo
-"/" vi-search
-"0" beginning-of-line
-"1" to "9" vi-arg-digit
-";" vi-char-search
-"=" vi-complete
-"?" vi-search
-"A" vi-append-eol
-"B" vi-prev-word
-"C" vi-change-to
-"D" vi-delete-to
-"E" vi-end-word
-"F" vi-char-search
-"G" vi-fetch-history
-"I" vi-insert-beg
-"N" vi-search-again
-"P" vi-put
-"R" vi-replace
-"S" vi-subst
-"T" vi-char-search
-"U" revert-line
-"W" vi-next-word
-"X" backward-delete-char
-"Y" vi-yank-to
-"\e" vi-complete
-"^" vi-first-print
-"_" vi-yank-arg
-"`" vi-goto-mark
-"a" vi-append-mode
-"b" vi-prev-word
-"c" vi-change-to
-"d" vi-delete-to
-"e" vi-end-word
-"f" vi-char-search
-"h" backward-char
-"i" vi-insertion-mode
-"j" next-history
-"k" prev-history
-"l" forward-char
-"m" vi-set-mark
-"n" vi-search-again
-"p" vi-put
-"r" vi-change-char
-"s" vi-subst
-"t" vi-char-search
-"u" vi-undo
-"w" vi-next-word
-"x" vi-delete
-"y" vi-yank-to
-"|" vi-column
-"~" vi-change-case
-.RE
-.SH "SEE ALSO"
-.PD 0
-.TP
-\fIThe Gnu Readline Library\fP, Brian Fox and Chet Ramey
-.TP
-\fIThe Gnu History Library\fP, Brian Fox and Chet Ramey
-.TP
-\fIbash\fP(1)
-.PD
-.SH FILES
-.PD 0
-.TP
-.FN ~/.inputrc
-Individual \fBreadline\fP initialization file
-.PD
-.SH AUTHORS
-Brian Fox, Free Software Foundation
-.br
-bfox@gnu.org
-.PP
-Chet Ramey, Case Western Reserve University
-.br
-chet@ins.CWRU.Edu
-.SH BUG REPORTS
-If you find a bug in
-.B readline,
-you should report it. But first, you should
-make sure that it really is a bug, and that it appears in the latest
-version of the
-.B readline
-library that you have.
-.PP
-Once you have determined that a bug actually exists, mail a
-bug report to \fIbug\-readline\fP@\fIgnu.org\fP.
-If you have a fix, you are welcome to mail that
-as well! Suggestions and `philosophical' bug reports may be mailed
-to \fPbug-readline\fP@\fIgnu.org\fP or posted to the Usenet
-newsgroup
-.BR gnu.bash.bug .
-.PP
-Comments and bug reports concerning
-this manual page should be directed to
-.IR chet@ins.CWRU.Edu .
-.SH BUGS
-.PP
-It's too big and too slow.
diff --git a/readline-4.3.orig/doc/readline.dvi b/readline-4.3.orig/doc/readline.dvi
deleted file mode 100644
index 3c1c30f..0000000
--- a/readline-4.3.orig/doc/readline.dvi
+++ /dev/null
Binary files differ
diff --git a/readline-4.3.orig/doc/readline.html b/readline-4.3.orig/doc/readline.html
deleted file mode 100644
index 42485f5..0000000
--- a/readline-4.3.orig/doc/readline.html
+++ /dev/null
@@ -1,5908 +0,0 @@
-<HTML>
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<!-- Created on June, 27 2002 by texi2html 1.64 -->
-<!--
-Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
- Karl Berry <karl@freefriends.org>
- Olaf Bachmann <obachman@mathematik.uni-kl.de>
- and many others.
-Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>
-Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
-
--->
-<HEAD>
-<TITLE>GNU Readline Library: </TITLE>
-
-<META NAME="description" CONTENT="GNU Readline Library: ">
-<META NAME="keywords" CONTENT="GNU Readline Library: ">
-<META NAME="resource-type" CONTENT="document">
-<META NAME="distribution" CONTENT="global">
-<META NAME="Generator" CONTENT="texi2html 1.64">
-
-</HEAD>
-
-<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
-
-<A NAME="SEC_Top"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1>GNU Readline Library</H1></P><P>
-
-This document describes the GNU Readline Library, a utility which aids
-in the consistency of user interface across discrete programs that need
-to provide a command line interface.
-</P><P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC1">1. Command Line Editing</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">GNU Readline User's Manual.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC23">2. Programming with GNU Readline</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">GNU Readline Programmer's Manual.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC49">Concept Index</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Index of concepts described in this manual.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC50">Function and Variable Index</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Index of externally visible functions
- and variables.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<HR SIZE=1>
-<A NAME="SEC1"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC2"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<A NAME="Command Line Editing"></A>
-<H1> 1. Command Line Editing </H1>
-<!--docid::SEC1::-->
-<P>
-
-This chapter describes the basic features of the GNU
-command line editing interface.
-</P><P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC2">1.1 Introduction to Line Editing</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Notation used in this text.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC3">1.2 Readline Interaction</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">The minimum set of commands for editing a line.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC9">1.3 Readline Init File</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Customizing Readline from a user's view.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC13">1.4 Bindable Readline Commands</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">A description of most of the Readline commands
- available for binding</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC22">1.5 Readline vi Mode</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">A short description of how to make Readline
- behave like the vi editor.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<A NAME="Introduction and Notation"></A>
-<HR SIZE="6">
-<A NAME="SEC2"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC1"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC3"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC1"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 1.1 Introduction to Line Editing </H2>
-<!--docid::SEC2::-->
-<P>
-
-The following paragraphs describe the notation used to represent
-keystrokes.
-</P><P>
-
-The text <KBD>C-k</KBD> is read as `Control-K' and describes the character
-produced when the <KBD>k</KBD> key is pressed while the Control key
-is depressed.
-</P><P>
-
-The text <KBD>M-k</KBD> is read as `Meta-K' and describes the character
-produced when the Meta key (if you have one) is depressed, and the <KBD>k</KBD>
-key is pressed.
-The Meta key is labeled <KBD>ALT</KBD> on many keyboards.
-On keyboards with two keys labeled <KBD>ALT</KBD> (usually to either side of
-the space bar), the <KBD>ALT</KBD> on the left side is generally set to
-work as a Meta key.
-The <KBD>ALT</KBD> key on the right may also be configured to work as a
-Meta key or may be configured as some other modifier, such as a
-Compose key for typing accented characters.
-</P><P>
-
-If you do not have a Meta or <KBD>ALT</KBD> key, or another key working as
-a Meta key, the identical keystroke can be generated by typing <KBD>ESC</KBD>
-<EM>first</EM>, and then typing <KBD>k</KBD>.
-Either process is known as <EM>metafying</EM> the <KBD>k</KBD> key.
-</P><P>
-
-The text <KBD>M-C-k</KBD> is read as `Meta-Control-k' and describes the
-character produced by <EM>metafying</EM> <KBD>C-k</KBD>.
-</P><P>
-
-In addition, several keys have their own names. Specifically,
-<KBD>DEL</KBD>, <KBD>ESC</KBD>, <KBD>LFD</KBD>, <KBD>SPC</KBD>, <KBD>RET</KBD>, and <KBD>TAB</KBD> all
-stand for themselves when seen in this text, or in an init file
-(see section <A HREF="readline.html#SEC9">1.3 Readline Init File</A>).
-If your keyboard lacks a <KBD>LFD</KBD> key, typing <KBD>C-j</KBD> will
-produce the desired character.
-The <KBD>RET</KBD> key may be labeled <KBD>Return</KBD> or <KBD>Enter</KBD> on
-some keyboards.
-</P><P>
-
-<A NAME="Readline Interaction"></A>
-<HR SIZE="6">
-<A NAME="SEC3"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC2"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC4"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC1"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 1.2 Readline Interaction </H2>
-<!--docid::SEC3::-->
-<P>
-
-Often during an interactive session you type in a long line of text,
-only to notice that the first word on the line is misspelled. The
-Readline library gives you a set of commands for manipulating the text
-as you type it in, allowing you to just fix your typo, and not forcing
-you to retype the majority of the line. Using these editing commands,
-you move the cursor to the place that needs correction, and delete or
-insert the text of the corrections. Then, when you are satisfied with
-the line, you simply press <KBD>RET</KBD>. You do not have to be at the
-end of the line to press <KBD>RET</KBD>; the entire line is accepted
-regardless of the location of the cursor within the line.
-</P><P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC4">1.2.1 Readline Bare Essentials</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">The least you need to know about Readline.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC5">1.2.2 Readline Movement Commands</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Moving about the input line.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC6">1.2.3 Readline Killing Commands</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">How to delete text, and how to get it back!</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC7">1.2.4 Readline Arguments</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Giving numeric arguments to commands.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC8">1.2.5 Searching for Commands in the History</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Searching through previous lines.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<A NAME="Readline Bare Essentials"></A>
-<HR SIZE="6">
-<A NAME="SEC4"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC3"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC5"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC3"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.2.1 Readline Bare Essentials </H3>
-<!--docid::SEC4::-->
-<P>
-
-In order to enter characters into the line, simply type them. The typed
-character appears where the cursor was, and then the cursor moves one
-space to the right. If you mistype a character, you can use your
-erase character to back up and delete the mistyped character.
-</P><P>
-
-Sometimes you may mistype a character, and
-not notice the error until you have typed several other characters. In
-that case, you can type <KBD>C-b</KBD> to move the cursor to the left, and then
-correct your mistake. Afterwards, you can move the cursor to the right
-with <KBD>C-f</KBD>.
-</P><P>
-
-When you add text in the middle of a line, you will notice that characters
-to the right of the cursor are `pushed over' to make room for the text
-that you have inserted. Likewise, when you delete text behind the cursor,
-characters to the right of the cursor are `pulled back' to fill in the
-blank space created by the removal of the text. A list of the bare
-essentials for editing the text of an input line follows.
-</P><P>
-
-<DL COMPACT>
-<DT><KBD>C-b</KBD>
-<DD>Move back one character.
-<DT><KBD>C-f</KBD>
-<DD>Move forward one character.
-<DT><KBD>DEL</KBD> or <KBD>Backspace</KBD>
-<DD>Delete the character to the left of the cursor.
-<DT><KBD>C-d</KBD>
-<DD>Delete the character underneath the cursor.
-<DT>Printing characters
-<DD>Insert the character into the line at the cursor.
-<DT><KBD>C-_</KBD> or <KBD>C-x C-u</KBD>
-<DD>Undo the last editing command. You can undo all the way back to an
-empty line.
-</DL>
-<P>
-
-(Depending on your configuration, the <KBD>Backspace</KBD> key be set to
-delete the character to the left of the cursor and the <KBD>DEL</KBD> key set
-to delete the character underneath the cursor, like <KBD>C-d</KBD>, rather
-than the character to the left of the cursor.)
-</P><P>
-
-<A NAME="Readline Movement Commands"></A>
-<HR SIZE="6">
-<A NAME="SEC5"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC4"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC6"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC6"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC3"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.2.2 Readline Movement Commands </H3>
-<!--docid::SEC5::-->
-<P>
-
-The above table describes the most basic keystrokes that you need
-in order to do editing of the input line. For your convenience, many
-other commands have been added in addition to <KBD>C-b</KBD>, <KBD>C-f</KBD>,
-<KBD>C-d</KBD>, and <KBD>DEL</KBD>. Here are some commands for moving more rapidly
-about the line.
-</P><P>
-
-<DL COMPACT>
-<DT><KBD>C-a</KBD>
-<DD>Move to the start of the line.
-<DT><KBD>C-e</KBD>
-<DD>Move to the end of the line.
-<DT><KBD>M-f</KBD>
-<DD>Move forward a word, where a word is composed of letters and digits.
-<DT><KBD>M-b</KBD>
-<DD>Move backward a word.
-<DT><KBD>C-l</KBD>
-<DD>Clear the screen, reprinting the current line at the top.
-</DL>
-<P>
-
-Notice how <KBD>C-f</KBD> moves forward a character, while <KBD>M-f</KBD> moves
-forward a word. It is a loose convention that control keystrokes
-operate on characters while meta keystrokes operate on words.
-</P><P>
-
-<A NAME="Readline Killing Commands"></A>
-<HR SIZE="6">
-<A NAME="SEC6"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC5"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC7"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC7"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC3"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.2.3 Readline Killing Commands </H3>
-<!--docid::SEC6::-->
-<P>
-
-<A NAME="IDX1"></A>
-<A NAME="IDX2"></A>
-</P><P>
-
-<EM>Killing</EM> text means to delete the text from the line, but to save
-it away for later use, usually by <EM>yanking</EM> (re-inserting)
-it back into the line.
-(`Cut' and `paste' are more recent jargon for `kill' and `yank'.)
-</P><P>
-
-If the description for a command says that it `kills' text, then you can
-be sure that you can get the text back in a different (or the same)
-place later.
-</P><P>
-
-When you use a kill command, the text is saved in a <EM>kill-ring</EM>.
-Any number of consecutive kills save all of the killed text together, so
-that when you yank it back, you get it all. The kill
-ring is not line specific; the text that you killed on a previously
-typed line is available to be yanked back later, when you are typing
-another line.
-<A NAME="IDX3"></A>
-</P><P>
-
-Here is the list of commands for killing text.
-</P><P>
-
-<DL COMPACT>
-<DT><KBD>C-k</KBD>
-<DD>Kill the text from the current cursor position to the end of the line.
-<P>
-
-<DT><KBD>M-d</KBD>
-<DD>Kill from the cursor to the end of the current word, or, if between
-words, to the end of the next word.
-Word boundaries are the same as those used by <KBD>M-f</KBD>.
-<P>
-
-<DT><KBD>M-<KBD>DEL</KBD></KBD>
-<DD>Kill from the cursor the start of the current word, or, if between
-words, to the start of the previous word.
-Word boundaries are the same as those used by <KBD>M-b</KBD>.
-<P>
-
-<DT><KBD>C-w</KBD>
-<DD>Kill from the cursor to the previous whitespace. This is different than
-<KBD>M-<KBD>DEL</KBD></KBD> because the word boundaries differ.
-<P>
-
-</DL>
-<P>
-
-Here is how to <EM>yank</EM> the text back into the line. Yanking
-means to copy the most-recently-killed text from the kill buffer.
-</P><P>
-
-<DL COMPACT>
-<DT><KBD>C-y</KBD>
-<DD>Yank the most recently killed text back into the buffer at the cursor.
-<P>
-
-<DT><KBD>M-y</KBD>
-<DD>Rotate the kill-ring, and yank the new top. You can only do this if
-the prior command is <KBD>C-y</KBD> or <KBD>M-y</KBD>.
-</DL>
-<P>
-
-<A NAME="Readline Arguments"></A>
-<HR SIZE="6">
-<A NAME="SEC7"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC6"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC8"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC8"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC3"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.2.4 Readline Arguments </H3>
-<!--docid::SEC7::-->
-<P>
-
-You can pass numeric arguments to Readline commands. Sometimes the
-argument acts as a repeat count, other times it is the <I>sign</I> of the
-argument that is significant. If you pass a negative argument to a
-command which normally acts in a forward direction, that command will
-act in a backward direction. For example, to kill text back to the
-start of the line, you might type <SAMP>`M-- C-k'</SAMP>.
-</P><P>
-
-The general way to pass numeric arguments to a command is to type meta
-digits before the command. If the first `digit' typed is a minus
-sign (<SAMP>`-'</SAMP>), then the sign of the argument will be negative. Once
-you have typed one meta digit to get the argument started, you can type
-the remainder of the digits, and then the command. For example, to give
-the <KBD>C-d</KBD> command an argument of 10, you could type <SAMP>`M-1 0 C-d'</SAMP>,
-which will delete the next ten characters on the input line.
-</P><P>
-
-<A NAME="Searching"></A>
-<HR SIZE="6">
-<A NAME="SEC8"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC7"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC3"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.2.5 Searching for Commands in the History </H3>
-<!--docid::SEC8::-->
-<P>
-
-Readline provides commands for searching through the command history
-for lines containing a specified string.
-There are two search modes: <EM>incremental</EM> and <EM>non-incremental</EM>.
-</P><P>
-
-Incremental searches begin before the user has finished typing the
-search string.
-As each character of the search string is typed, Readline displays
-the next entry from the history matching the string typed so far.
-An incremental search requires only as many characters as needed to
-find the desired history entry.
-To search backward in the history for a particular string, type
-<KBD>C-r</KBD>. Typing <KBD>C-s</KBD> searches forward through the history.
-The characters present in the value of the <CODE>isearch-terminators</CODE> variable
-are used to terminate an incremental search.
-If that variable has not been assigned a value, the <KBD>ESC</KBD> and
-<KBD>C-J</KBD> characters will terminate an incremental search.
-<KBD>C-g</KBD> will abort an incremental search and restore the original line.
-When the search is terminated, the history entry containing the
-search string becomes the current line.
-</P><P>
-
-To find other matching entries in the history list, type <KBD>C-r</KBD> or
-<KBD>C-s</KBD> as appropriate.
-This will search backward or forward in the history for the next
-entry matching the search string typed so far.
-Any other key sequence bound to a Readline command will terminate
-the search and execute that command.
-For instance, a <KBD>RET</KBD> will terminate the search and accept
-the line, thereby executing the command from the history list.
-A movement command will terminate the search, make the last line found
-the current line, and begin editing.
-</P><P>
-
-Readline remembers the last incremental search string. If two
-<KBD>C-r</KBD>s are typed without any intervening characters defining a new
-search string, any remembered search string is used.
-</P><P>
-
-Non-incremental searches read the entire search string before starting
-to search for matching history lines. The search string may be
-typed by the user or be part of the contents of the current line.
-</P><P>
-
-<A NAME="Readline Init File"></A>
-<HR SIZE="6">
-<A NAME="SEC9"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC8"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC10"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC1"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 1.3 Readline Init File </H2>
-<!--docid::SEC9::-->
-<P>
-
-Although the Readline library comes with a set of Emacs-like
-keybindings installed by default, it is possible to use a different set
-of keybindings.
-Any user can customize programs that use Readline by putting
-commands in an <EM>inputrc</EM> file, conventionally in his home directory.
-The name of this
-file is taken from the value of the environment variable <CODE>INPUTRC</CODE>. If
-that variable is unset, the default is <TT>`~/.inputrc'</TT>.
-</P><P>
-
-When a program which uses the Readline library starts up, the
-init file is read, and the key bindings are set.
-</P><P>
-
-In addition, the <CODE>C-x C-r</CODE> command re-reads this init file, thus
-incorporating any changes that you might have made to it.
-</P><P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Syntax for the commands in the inputrc file.</TD></TR>
-</TABLE>
-
-<br>
-<TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC11">1.3.2 Conditional Init Constructs</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Conditional key bindings in the inputrc file.</TD></TR>
-</TABLE>
-
-<br>
-<TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC12">1.3.3 Sample Init File</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">An example inputrc file.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<A NAME="Readline Init File Syntax"></A>
-<HR SIZE="6">
-<A NAME="SEC10"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC11"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.3.1 Readline Init File Syntax </H3>
-<!--docid::SEC10::-->
-<P>
-
-There are only a few basic constructs allowed in the
-Readline init file. Blank lines are ignored.
-Lines beginning with a <SAMP>`#'</SAMP> are comments.
-Lines beginning with a <SAMP>`$'</SAMP> indicate conditional
-constructs (see section <A HREF="readline.html#SEC11">1.3.2 Conditional Init Constructs</A>). Other lines
-denote variable settings and key bindings.
-</P><P>
-
-<DL COMPACT>
-<DT>Variable Settings
-<DD>You can modify the run-time behavior of Readline by
-altering the values of variables in Readline
-using the <CODE>set</CODE> command within the init file.
-The syntax is simple:
-<P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>set <VAR>variable</VAR> <VAR>value</VAR>
-</pre></td></tr></table></P><P>
-
-Here, for example, is how to
-change from the default Emacs-like key binding to use
-<CODE>vi</CODE> line editing commands:
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>set editing-mode vi
-</pre></td></tr></table></P><P>
-
-Variable names and values, where appropriate, are recognized without regard
-to case.
-</P><P>
-
-A great deal of run-time behavior is changeable with the following
-variables.
-</P><P>
-
-<A NAME="IDX4"></A>
-<DL COMPACT>
-
-<DT><CODE>bell-style</CODE>
-<DD><A NAME="IDX5"></A>
-Controls what happens when Readline wants to ring the terminal bell.
-If set to <SAMP>`none'</SAMP>, Readline never rings the bell. If set to
-<SAMP>`visible'</SAMP>, Readline uses a visible bell if one is available.
-If set to <SAMP>`audible'</SAMP> (the default), Readline attempts to ring
-the terminal's bell.
-<P>
-
-<DT><CODE>comment-begin</CODE>
-<DD><A NAME="IDX6"></A>
-The string to insert at the beginning of the line when the
-<CODE>insert-comment</CODE> command is executed. The default value
-is <CODE>"#"</CODE>.
-<P>
-
-<DT><CODE>completion-ignore-case</CODE>
-<DD>If set to <SAMP>`on'</SAMP>, Readline performs filename matching and completion
-in a case-insensitive fashion.
-The default value is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>completion-query-items</CODE>
-<DD><A NAME="IDX7"></A>
-The number of possible completions that determines when the user is
-asked whether he wants to see the list of possibilities. If the
-number of possible completions is greater than this value,
-Readline will ask the user whether or not he wishes to view
-them; otherwise, they are simply listed.
-This variable must be set to an integer value greater than or equal to 0.
-The default limit is <CODE>100</CODE>.
-<P>
-
-<DT><CODE>convert-meta</CODE>
-<DD><A NAME="IDX8"></A>
-If set to <SAMP>`on'</SAMP>, Readline will convert characters with the
-eighth bit set to an ASCII key sequence by stripping the eighth
-bit and prefixing an <KBD>ESC</KBD> character, converting them to a
-meta-prefixed key sequence. The default value is <SAMP>`on'</SAMP>.
-<P>
-
-<DT><CODE>disable-completion</CODE>
-<DD><A NAME="IDX9"></A>
-If set to <SAMP>`On'</SAMP>, Readline will inhibit word completion.
-Completion characters will be inserted into the line as if they had
-been mapped to <CODE>self-insert</CODE>. The default is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>editing-mode</CODE>
-<DD><A NAME="IDX10"></A>
-The <CODE>editing-mode</CODE> variable controls which default set of
-key bindings is used. By default, Readline starts up in Emacs editing
-mode, where the keystrokes are most similar to Emacs. This variable can be
-set to either <SAMP>`emacs'</SAMP> or <SAMP>`vi'</SAMP>.
-<P>
-
-<DT><CODE>enable-keypad</CODE>
-<DD><A NAME="IDX11"></A>
-When set to <SAMP>`on'</SAMP>, Readline will try to enable the application
-keypad when it is called. Some systems need this to enable the
-arrow keys. The default is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>expand-tilde</CODE>
-<DD><A NAME="IDX12"></A>
-If set to <SAMP>`on'</SAMP>, tilde expansion is performed when Readline
-attempts word completion. The default is <SAMP>`off'</SAMP>.
-<P>
-
-<A NAME="IDX13"></A>
-If set to <SAMP>`on'</SAMP>, the history code attempts to place point at the
-same location on each history line retrived with <CODE>previous-history</CODE>
-or <CODE>next-history</CODE>.
-</P><P>
-
-<DT><CODE>horizontal-scroll-mode</CODE>
-<DD><A NAME="IDX14"></A>
-This variable can be set to either <SAMP>`on'</SAMP> or <SAMP>`off'</SAMP>. Setting it
-to <SAMP>`on'</SAMP> means that the text of the lines being edited will scroll
-horizontally on a single screen line when they are longer than the width
-of the screen, instead of wrapping onto a new screen line. By default,
-this variable is set to <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>input-meta</CODE>
-<DD><A NAME="IDX15"></A>
-<A NAME="IDX16"></A>
-If set to <SAMP>`on'</SAMP>, Readline will enable eight-bit input (it
-will not clear the eighth bit in the characters it reads),
-regardless of what the terminal claims it can support. The
-default value is <SAMP>`off'</SAMP>. The name <CODE>meta-flag</CODE> is a
-synonym for this variable.
-<P>
-
-<DT><CODE>isearch-terminators</CODE>
-<DD><A NAME="IDX17"></A>
-The string of characters that should terminate an incremental search without
-subsequently executing the character as a command (see section <A HREF="readline.html#SEC8">1.2.5 Searching for Commands in the History</A>).
-If this variable has not been given a value, the characters <KBD>ESC</KBD> and
-<KBD>C-J</KBD> will terminate an incremental search.
-<P>
-
-<DT><CODE>keymap</CODE>
-<DD><A NAME="IDX18"></A>
-Sets Readline's idea of the current keymap for key binding commands.
-Acceptable <CODE>keymap</CODE> names are
-<CODE>emacs</CODE>,
-<CODE>emacs-standard</CODE>,
-<CODE>emacs-meta</CODE>,
-<CODE>emacs-ctlx</CODE>,
-<CODE>vi</CODE>,
-<CODE>vi-move</CODE>,
-<CODE>vi-command</CODE>, and
-<CODE>vi-insert</CODE>.
-<CODE>vi</CODE> is equivalent to <CODE>vi-command</CODE>; <CODE>emacs</CODE> is
-equivalent to <CODE>emacs-standard</CODE>. The default value is <CODE>emacs</CODE>.
-The value of the <CODE>editing-mode</CODE> variable also affects the
-default keymap.
-<P>
-
-<DT><CODE>mark-directories</CODE>
-<DD>If set to <SAMP>`on'</SAMP>, completed directory names have a slash
-appended. The default is <SAMP>`on'</SAMP>.
-<P>
-
-<DT><CODE>mark-modified-lines</CODE>
-<DD><A NAME="IDX19"></A>
-This variable, when set to <SAMP>`on'</SAMP>, causes Readline to display an
-asterisk (<SAMP>`*'</SAMP>) at the start of history lines which have been modified.
-This variable is <SAMP>`off'</SAMP> by default.
-<P>
-
-<DT><CODE>mark-symlinked-directories</CODE>
-<DD><A NAME="IDX20"></A>
-If set to <SAMP>`on'</SAMP>, completed names which are symbolic links
-to directories have a slash appended (subject to the value of
-<CODE>mark-directories</CODE>).
-The default is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>match-hidden-files</CODE>
-<DD><A NAME="IDX21"></A>
-This variable, when set to <SAMP>`on'</SAMP>, causes Readline to match files whose
-names begin with a <SAMP>`.'</SAMP> (hidden files) when performing filename
-completion, unless the leading <SAMP>`.'</SAMP> is
-supplied by the user in the filename to be completed.
-This variable is <SAMP>`on'</SAMP> by default.
-<P>
-
-<DT><CODE>output-meta</CODE>
-<DD><A NAME="IDX22"></A>
-If set to <SAMP>`on'</SAMP>, Readline will display characters with the
-eighth bit set directly rather than as a meta-prefixed escape
-sequence. The default is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>page-completions</CODE>
-<DD><A NAME="IDX23"></A>
-If set to <SAMP>`on'</SAMP>, Readline uses an internal <CODE>more</CODE>-like pager
-to display a screenful of possible completions at a time.
-This variable is <SAMP>`on'</SAMP> by default.
-<P>
-
-<DT><CODE>print-completions-horizontally</CODE>
-<DD>If set to <SAMP>`on'</SAMP>, Readline will display completions with matches
-sorted horizontally in alphabetical order, rather than down the screen.
-The default is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>show-all-if-ambiguous</CODE>
-<DD><A NAME="IDX24"></A>
-This alters the default behavior of the completion functions. If
-set to <SAMP>`on'</SAMP>,
-words which have more than one possible completion cause the
-matches to be listed immediately instead of ringing the bell.
-The default value is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>visible-stats</CODE>
-<DD><A NAME="IDX25"></A>
-If set to <SAMP>`on'</SAMP>, a character denoting a file's type
-is appended to the filename when listing possible
-completions. The default is <SAMP>`off'</SAMP>.
-<P>
-
-</DL>
-<P>
-
-<DT>Key Bindings
-<DD>The syntax for controlling key bindings in the init file is
-simple. First you need to find the name of the command that you
-want to change. The following sections contain tables of the command
-name, the default keybinding, if any, and a short description of what
-the command does.
-<P>
-
-Once you know the name of the command, simply place on a line
-in the init file the name of the key
-you wish to bind the command to, a colon, and then the name of the
-command. The name of the key
-can be expressed in different ways, depending on what you find most
-comfortable.
-</P><P>
-
-In addition to command names, readline allows keys to be bound
-to a string that is inserted when the key is pressed (a <VAR>macro</VAR>).
-</P><P>
-
-<DL COMPACT>
-<DT><VAR>keyname</VAR>: <VAR>function-name</VAR> or <VAR>macro</VAR>
-<DD><VAR>keyname</VAR> is the name of a key spelled out in English. For example:
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>Control-u: universal-argument
-Meta-Rubout: backward-kill-word
-Control-o: "&#62; output"
-</pre></td></tr></table><P>
-
-In the above example, <KBD>C-u</KBD> is bound to the function
-<CODE>universal-argument</CODE>,
-<KBD>M-DEL</KBD> is bound to the function <CODE>backward-kill-word</CODE>, and
-<KBD>C-o</KBD> is bound to run the macro
-expressed on the right hand side (that is, to insert the text
-<SAMP>`&#62; output'</SAMP> into the line).
-</P><P>
-
-A number of symbolic character names are recognized while
-processing this key binding syntax:
-<VAR>DEL</VAR>,
-<VAR>ESC</VAR>,
-<VAR>ESCAPE</VAR>,
-<VAR>LFD</VAR>,
-<VAR>NEWLINE</VAR>,
-<VAR>RET</VAR>,
-<VAR>RETURN</VAR>,
-<VAR>RUBOUT</VAR>,
-<VAR>SPACE</VAR>,
-<VAR>SPC</VAR>,
-and
-<VAR>TAB</VAR>.
-</P><P>
-
-<DT>"<VAR>keyseq</VAR>": <VAR>function-name</VAR> or <VAR>macro</VAR>
-<DD><VAR>keyseq</VAR> differs from <VAR>keyname</VAR> above in that strings
-denoting an entire key sequence can be specified, by placing
-the key sequence in double quotes. Some GNU Emacs style key
-escapes can be used, as in the following example, but the
-special character names are not recognized.
-<P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>"\C-u": universal-argument
-"\C-x\C-r": re-read-init-file
-"\e[11~": "Function Key 1"
-</pre></td></tr></table></P><P>
-
-In the above example, <KBD>C-u</KBD> is again bound to the function
-<CODE>universal-argument</CODE> (just as it was in the first example),
-<SAMP>`<KBD>C-x</KBD> <KBD>C-r</KBD>'</SAMP> is bound to the function <CODE>re-read-init-file</CODE>,
-and <SAMP>`<KBD>ESC</KBD> <KBD>[</KBD> <KBD>1</KBD> <KBD>1</KBD> <KBD>~</KBD>'</SAMP> is bound to insert
-the text <SAMP>`Function Key 1'</SAMP>.
-</P><P>
-
-</DL>
-<P>
-
-The following GNU Emacs style escape sequences are available when
-specifying key sequences:
-</P><P>
-
-<DL COMPACT>
-<DT><CODE><KBD>\C-</KBD></CODE>
-<DD>control prefix
-<DT><CODE><KBD>\M-</KBD></CODE>
-<DD>meta prefix
-<DT><CODE><KBD>\e</KBD></CODE>
-<DD>an escape character
-<DT><CODE><KBD>\\</KBD></CODE>
-<DD>backslash
-<DT><CODE><KBD>\"</KBD></CODE>
-<DD><KBD>"</KBD>, a double quotation mark
-<DT><CODE><KBD>\'</KBD></CODE>
-<DD><KBD>'</KBD>, a single quote or apostrophe
-</DL>
-<P>
-
-In addition to the GNU Emacs style escape sequences, a second
-set of backslash escapes is available:
-</P><P>
-
-<DL COMPACT>
-<DT><CODE>\a</CODE>
-<DD>alert (bell)
-<DT><CODE>\b</CODE>
-<DD>backspace
-<DT><CODE>\d</CODE>
-<DD>delete
-<DT><CODE>\f</CODE>
-<DD>form feed
-<DT><CODE>\n</CODE>
-<DD>newline
-<DT><CODE>\r</CODE>
-<DD>carriage return
-<DT><CODE>\t</CODE>
-<DD>horizontal tab
-<DT><CODE>\v</CODE>
-<DD>vertical tab
-<DT><CODE>\<VAR>nnn</VAR></CODE>
-<DD>the eight-bit character whose value is the octal value <VAR>nnn</VAR>
-(one to three digits)
-<DT><CODE>\x<VAR>HH</VAR></CODE>
-<DD>the eight-bit character whose value is the hexadecimal value <VAR>HH</VAR>
-(one or two hex digits)
-</DL>
-<P>
-
-When entering the text of a macro, single or double quotes must
-be used to indicate a macro definition.
-Unquoted text is assumed to be a function name.
-In the macro body, the backslash escapes described above are expanded.
-Backslash will quote any other character in the macro text,
-including <SAMP>`"'</SAMP> and <SAMP>`''</SAMP>.
-For example, the following binding will make <SAMP>`<KBD>C-x</KBD> \'</SAMP>
-insert a single <SAMP>`\'</SAMP> into the line:
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>"\C-x\\": "\\"
-</pre></td></tr></table></P><P>
-
-</DL>
-<P>
-
-<A NAME="Conditional Init Constructs"></A>
-<HR SIZE="6">
-<A NAME="SEC11"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC10"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC12"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC12"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.3.2 Conditional Init Constructs </H3>
-<!--docid::SEC11::-->
-<P>
-
-Readline implements a facility similar in spirit to the conditional
-compilation features of the C preprocessor which allows key
-bindings and variable settings to be performed as the result
-of tests. There are four parser directives used.
-</P><P>
-
-<DL COMPACT>
-<DT><CODE>$if</CODE>
-<DD>The <CODE>$if</CODE> construct allows bindings to be made based on the
-editing mode, the terminal being used, or the application using
-Readline. The text of the test extends to the end of the line;
-no characters are required to isolate it.
-<P>
-
-<DL COMPACT>
-<DT><CODE>mode</CODE>
-<DD>The <CODE>mode=</CODE> form of the <CODE>$if</CODE> directive is used to test
-whether Readline is in <CODE>emacs</CODE> or <CODE>vi</CODE> mode.
-This may be used in conjunction
-with the <SAMP>`set keymap'</SAMP> command, for instance, to set bindings in
-the <CODE>emacs-standard</CODE> and <CODE>emacs-ctlx</CODE> keymaps only if
-Readline is starting out in <CODE>emacs</CODE> mode.
-<P>
-
-<DT><CODE>term</CODE>
-<DD>The <CODE>term=</CODE> form may be used to include terminal-specific
-key bindings, perhaps to bind the key sequences output by the
-terminal's function keys. The word on the right side of the
-<SAMP>`='</SAMP> is tested against both the full name of the terminal and
-the portion of the terminal name before the first <SAMP>`-'</SAMP>. This
-allows <CODE>sun</CODE> to match both <CODE>sun</CODE> and <CODE>sun-cmd</CODE>,
-for instance.
-<P>
-
-<DT><CODE>application</CODE>
-<DD>The <VAR>application</VAR> construct is used to include
-application-specific settings. Each program using the Readline
-library sets the <VAR>application name</VAR>, and you can test for
-a particular value.
-This could be used to bind key sequences to functions useful for
-a specific program. For instance, the following command adds a
-key sequence that quotes the current or previous word in Bash:
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>$if Bash
-# Quote the current or previous word
-"\C-xq": "\eb\"\ef\""
-$endif
-</pre></td></tr></table></DL>
-<P>
-
-<DT><CODE>$endif</CODE>
-<DD>This command, as seen in the previous example, terminates an
-<CODE>$if</CODE> command.
-<P>
-
-<DT><CODE>$else</CODE>
-<DD>Commands in this branch of the <CODE>$if</CODE> directive are executed if
-the test fails.
-<P>
-
-<DT><CODE>$include</CODE>
-<DD>This directive takes a single filename as an argument and reads commands
-and bindings from that file.
-For example, the following directive reads from <TT>`/etc/inputrc'</TT>:
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>$include /etc/inputrc
-</pre></td></tr></table></DL>
-<P>
-
-<A NAME="Sample Init File"></A>
-<HR SIZE="6">
-<A NAME="SEC12"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC11"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.3.3 Sample Init File </H3>
-<!--docid::SEC12::-->
-<P>
-
-Here is an example of an <VAR>inputrc</VAR> file. This illustrates key
-binding, variable assignment, and conditional syntax.
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre># This file controls the behaviour of line input editing for
-# programs that use the GNU Readline library. Existing
-# programs include FTP, Bash, and GDB.
-#
-# You can re-read the inputrc file with C-x C-r.
-# Lines beginning with '#' are comments.
-#
-# First, include any systemwide bindings and variable
-# assignments from /etc/Inputrc
-$include /etc/Inputrc
-
-#
-# Set various bindings for emacs mode.
-
-set editing-mode emacs
-
-$if mode=emacs
-
-Meta-Control-h: backward-kill-word Text after the function name is ignored
-
-#
-# Arrow keys in keypad mode
-#
-#"\M-OD": backward-char
-#"\M-OC": forward-char
-#"\M-OA": previous-history
-#"\M-OB": next-history
-#
-# Arrow keys in ANSI mode
-#
-"\M-[D": backward-char
-"\M-[C": forward-char
-"\M-[A": previous-history
-"\M-[B": next-history
-#
-# Arrow keys in 8 bit keypad mode
-#
-#"\M-\C-OD": backward-char
-#"\M-\C-OC": forward-char
-#"\M-\C-OA": previous-history
-#"\M-\C-OB": next-history
-#
-# Arrow keys in 8 bit ANSI mode
-#
-#"\M-\C-[D": backward-char
-#"\M-\C-[C": forward-char
-#"\M-\C-[A": previous-history
-#"\M-\C-[B": next-history
-
-C-q: quoted-insert
-
-$endif
-
-# An old-style binding. This happens to be the default.
-TAB: complete
-
-# Macros that are convenient for shell interaction
-$if Bash
-# edit the path
-"\C-xp": "PATH=${PATH}\e\C-e\C-a\ef\C-f"
-# prepare to type a quoted word --
-# insert open and close double quotes
-# and move to just after the open quote
-"\C-x\"": "\"\"\C-b"
-# insert a backslash (testing backslash escapes
-# in sequences and macros)
-"\C-x\\": "\\"
-# Quote the current or previous word
-"\C-xq": "\eb\"\ef\""
-# Add a binding to refresh the line, which is unbound
-"\C-xr": redraw-current-line
-# Edit variable on current line.
-"\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y="
-$endif
-
-# use a visible bell if one is available
-set bell-style visible
-
-# don't strip characters to 7 bits when reading
-set input-meta on
-
-# allow iso-latin1 characters to be inserted rather
-# than converted to prefix-meta sequences
-set convert-meta off
-
-# display characters with the eighth bit set directly
-# rather than as meta-prefixed characters
-set output-meta on
-
-# if there are more than 150 possible completions for
-# a word, ask the user if he wants to see all of them
-set completion-query-items 150
-
-# For FTP
-$if Ftp
-"\C-xg": "get \M-?"
-"\C-xt": "put \M-?"
-"\M-.": yank-last-arg
-$endif
-</pre></td></tr></table></P><P>
-
-<A NAME="Bindable Readline Commands"></A>
-<HR SIZE="6">
-<A NAME="SEC13"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC12"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC14"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC1"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 1.4 Bindable Readline Commands </H2>
-<!--docid::SEC13::-->
-<P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Moving about the line.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Getting at previous lines.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Commands for changing text.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Commands for killing and yanking.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Specifying numeric arguments, repeat counts.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Getting Readline to do the typing for you.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Saving and re-executing typed characters</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Other miscellaneous commands.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-This section describes Readline commands that may be bound to key
-sequences.
-Command names without an accompanying key sequence are unbound by default.
-</P><P>
-
-In the following descriptions, <EM>point</EM> refers to the current cursor
-position, and <EM>mark</EM> refers to a cursor position saved by the
-<CODE>set-mark</CODE> command.
-The text between the point and mark is referred to as the <EM>region</EM>.
-</P><P>
-
-<A NAME="Commands For Moving"></A>
-<HR SIZE="6">
-<A NAME="SEC14"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC15"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.4.1 Commands For Moving </H3>
-<!--docid::SEC14::-->
-<DL COMPACT>
-<A NAME="IDX26"></A>
-<DT><CODE>beginning-of-line (C-a)</CODE>
-<DD><A NAME="IDX27"></A>
-Move to the start of the current line.
-<P>
-
-<A NAME="IDX28"></A>
-<DT><CODE>end-of-line (C-e)</CODE>
-<DD><A NAME="IDX29"></A>
-Move to the end of the line.
-<P>
-
-<A NAME="IDX30"></A>
-<DT><CODE>forward-char (C-f)</CODE>
-<DD><A NAME="IDX31"></A>
-Move forward a character.
-<P>
-
-<A NAME="IDX32"></A>
-<DT><CODE>backward-char (C-b)</CODE>
-<DD><A NAME="IDX33"></A>
-Move back a character.
-<P>
-
-<A NAME="IDX34"></A>
-<DT><CODE>forward-word (M-f)</CODE>
-<DD><A NAME="IDX35"></A>
-Move forward to the end of the next word. Words are composed of
-letters and digits.
-<P>
-
-<A NAME="IDX36"></A>
-<DT><CODE>backward-word (M-b)</CODE>
-<DD><A NAME="IDX37"></A>
-Move back to the start of the current or previous word. Words are
-composed of letters and digits.
-<P>
-
-<A NAME="IDX38"></A>
-<DT><CODE>clear-screen (C-l)</CODE>
-<DD><A NAME="IDX39"></A>
-Clear the screen and redraw the current line,
-leaving the current line at the top of the screen.
-<P>
-
-<A NAME="IDX40"></A>
-<DT><CODE>redraw-current-line ()</CODE>
-<DD><A NAME="IDX41"></A>
-Refresh the current line. By default, this is unbound.
-<P>
-
-</DL>
-<P>
-
-<A NAME="Commands For History"></A>
-<HR SIZE="6">
-<A NAME="SEC15"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC14"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC16"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC16"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.4.2 Commands For Manipulating The History </H3>
-<!--docid::SEC15::-->
-<P>
-
-<DL COMPACT>
-<A NAME="IDX42"></A>
-<DT><CODE>accept-line (Newline or Return)</CODE>
-<DD><A NAME="IDX43"></A>
-Accept the line regardless of where the cursor is.
-If this line is
-non-empty, it may be added to the history list for future recall with
-<CODE>add_history()</CODE>.
-If this line is a modified history line, the history line is restored
-to its original state.
-<P>
-
-<A NAME="IDX44"></A>
-<DT><CODE>previous-history (C-p)</CODE>
-<DD><A NAME="IDX45"></A>
-Move `back' through the history list, fetching the previous command.
-<P>
-
-<A NAME="IDX46"></A>
-<DT><CODE>next-history (C-n)</CODE>
-<DD><A NAME="IDX47"></A>
-Move `forward' through the history list, fetching the next command.
-<P>
-
-<A NAME="IDX48"></A>
-<DT><CODE>beginning-of-history (M-&#60;)</CODE>
-<DD><A NAME="IDX49"></A>
-Move to the first line in the history.
-<P>
-
-<A NAME="IDX50"></A>
-<DT><CODE>end-of-history (M-&#62;)</CODE>
-<DD><A NAME="IDX51"></A>
-Move to the end of the input history, i.e., the line currently
-being entered.
-<P>
-
-<A NAME="IDX52"></A>
-<DT><CODE>reverse-search-history (C-r)</CODE>
-<DD><A NAME="IDX53"></A>
-Search backward starting at the current line and moving `up' through
-the history as necessary. This is an incremental search.
-<P>
-
-<A NAME="IDX54"></A>
-<DT><CODE>forward-search-history (C-s)</CODE>
-<DD><A NAME="IDX55"></A>
-Search forward starting at the current line and moving `down' through
-the the history as necessary. This is an incremental search.
-<P>
-
-<A NAME="IDX56"></A>
-<DT><CODE>non-incremental-reverse-search-history (M-p)</CODE>
-<DD><A NAME="IDX57"></A>
-Search backward starting at the current line and moving `up'
-through the history as necessary using a non-incremental search
-for a string supplied by the user.
-<P>
-
-<A NAME="IDX58"></A>
-<DT><CODE>non-incremental-forward-search-history (M-n)</CODE>
-<DD><A NAME="IDX59"></A>
-Search forward starting at the current line and moving `down'
-through the the history as necessary using a non-incremental search
-for a string supplied by the user.
-<P>
-
-<A NAME="IDX60"></A>
-<DT><CODE>history-search-forward ()</CODE>
-<DD><A NAME="IDX61"></A>
-Search forward through the history for the string of characters
-between the start of the current line and the point.
-This is a non-incremental search.
-By default, this command is unbound.
-<P>
-
-<A NAME="IDX62"></A>
-<DT><CODE>history-search-backward ()</CODE>
-<DD><A NAME="IDX63"></A>
-Search backward through the history for the string of characters
-between the start of the current line and the point. This
-is a non-incremental search. By default, this command is unbound.
-<P>
-
-<A NAME="IDX64"></A>
-<DT><CODE>yank-nth-arg (M-C-y)</CODE>
-<DD><A NAME="IDX65"></A>
-Insert the first argument to the previous command (usually
-the second word on the previous line) at point.
-With an argument <VAR>n</VAR>,
-insert the <VAR>n</VAR>th word from the previous command (the words
-in the previous command begin with word 0). A negative argument
-inserts the <VAR>n</VAR>th word from the end of the previous command.
-<P>
-
-<A NAME="IDX66"></A>
-<DT><CODE>yank-last-arg (M-. or M-_)</CODE>
-<DD><A NAME="IDX67"></A>
-Insert last argument to the previous command (the last word of the
-previous history entry). With an
-argument, behave exactly like <CODE>yank-nth-arg</CODE>.
-Successive calls to <CODE>yank-last-arg</CODE> move back through the history
-list, inserting the last argument of each line in turn.
-<P>
-
-</DL>
-<P>
-
-<A NAME="Commands For Text"></A>
-<HR SIZE="6">
-<A NAME="SEC16"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC15"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC17"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC17"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.4.3 Commands For Changing Text </H3>
-<!--docid::SEC16::-->
-<P>
-
-<DL COMPACT>
-<A NAME="IDX68"></A>
-<DT><CODE>delete-char (C-d)</CODE>
-<DD><A NAME="IDX69"></A>
-Delete the character at point. If point is at the
-beginning of the line, there are no characters in the line, and
-the last character typed was not bound to <CODE>delete-char</CODE>, then
-return EOF.
-<P>
-
-<A NAME="IDX70"></A>
-<DT><CODE>backward-delete-char (Rubout)</CODE>
-<DD><A NAME="IDX71"></A>
-Delete the character behind the cursor. A numeric argument means
-to kill the characters instead of deleting them.
-<P>
-
-<A NAME="IDX72"></A>
-<DT><CODE>forward-backward-delete-char ()</CODE>
-<DD><A NAME="IDX73"></A>
-Delete the character under the cursor, unless the cursor is at the
-end of the line, in which case the character behind the cursor is
-deleted. By default, this is not bound to a key.
-<P>
-
-<A NAME="IDX74"></A>
-<DT><CODE>quoted-insert (C-q or C-v)</CODE>
-<DD><A NAME="IDX75"></A>
-Add the next character typed to the line verbatim. This is
-how to insert key sequences like <KBD>C-q</KBD>, for example.
-<P>
-
-<A NAME="IDX76"></A>
-<DT><CODE>tab-insert (M-<KBD>TAB</KBD>)</CODE>
-<DD><A NAME="IDX77"></A>
-Insert a tab character.
-<P>
-
-<A NAME="IDX78"></A>
-<DT><CODE>self-insert (a, b, A, 1, !, <small>...</small>)</CODE>
-<DD><A NAME="IDX79"></A>
-Insert yourself.
-<P>
-
-<A NAME="IDX80"></A>
-<DT><CODE>transpose-chars (C-t)</CODE>
-<DD><A NAME="IDX81"></A>
-Drag the character before the cursor forward over
-the character at the cursor, moving the
-cursor forward as well. If the insertion point
-is at the end of the line, then this
-transposes the last two characters of the line.
-Negative arguments have no effect.
-<P>
-
-<A NAME="IDX82"></A>
-<DT><CODE>transpose-words (M-t)</CODE>
-<DD><A NAME="IDX83"></A>
-Drag the word before point past the word after point,
-moving point past that word as well.
-If the insertion point is at the end of the line, this transposes
-the last two words on the line.
-<P>
-
-<A NAME="IDX84"></A>
-<DT><CODE>upcase-word (M-u)</CODE>
-<DD><A NAME="IDX85"></A>
-Uppercase the current (or following) word. With a negative argument,
-uppercase the previous word, but do not move the cursor.
-<P>
-
-<A NAME="IDX86"></A>
-<DT><CODE>downcase-word (M-l)</CODE>
-<DD><A NAME="IDX87"></A>
-Lowercase the current (or following) word. With a negative argument,
-lowercase the previous word, but do not move the cursor.
-<P>
-
-<A NAME="IDX88"></A>
-<DT><CODE>capitalize-word (M-c)</CODE>
-<DD><A NAME="IDX89"></A>
-Capitalize the current (or following) word. With a negative argument,
-capitalize the previous word, but do not move the cursor.
-<P>
-
-<A NAME="IDX90"></A>
-<DT><CODE>overwrite-mode ()</CODE>
-<DD><A NAME="IDX91"></A>
-Toggle overwrite mode. With an explicit positive numeric argument,
-switches to overwrite mode. With an explicit non-positive numeric
-argument, switches to insert mode. This command affects only
-<CODE>emacs</CODE> mode; <CODE>vi</CODE> mode does overwrite differently.
-Each call to <CODE>readline()</CODE> starts in insert mode.
-<P>
-
-In overwrite mode, characters bound to <CODE>self-insert</CODE> replace
-the text at point rather than pushing the text to the right.
-Characters bound to <CODE>backward-delete-char</CODE> replace the character
-before point with a space.
-</P><P>
-
-By default, this command is unbound.
-</P><P>
-
-</DL>
-<P>
-
-<A NAME="Commands For Killing"></A>
-<HR SIZE="6">
-<A NAME="SEC17"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC16"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC18"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC18"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.4.4 Killing And Yanking </H3>
-<!--docid::SEC17::-->
-<P>
-
-<DL COMPACT>
-
-<A NAME="IDX92"></A>
-<DT><CODE>kill-line (C-k)</CODE>
-<DD><A NAME="IDX93"></A>
-Kill the text from point to the end of the line.
-<P>
-
-<A NAME="IDX94"></A>
-<DT><CODE>backward-kill-line (C-x Rubout)</CODE>
-<DD><A NAME="IDX95"></A>
-Kill backward to the beginning of the line.
-<P>
-
-<A NAME="IDX96"></A>
-<DT><CODE>unix-line-discard (C-u)</CODE>
-<DD><A NAME="IDX97"></A>
-Kill backward from the cursor to the beginning of the current line.
-<P>
-
-<A NAME="IDX98"></A>
-<DT><CODE>kill-whole-line ()</CODE>
-<DD><A NAME="IDX99"></A>
-Kill all characters on the current line, no matter where point is.
-By default, this is unbound.
-<P>
-
-<A NAME="IDX100"></A>
-<DT><CODE>kill-word (M-d)</CODE>
-<DD><A NAME="IDX101"></A>
-Kill from point to the end of the current word, or if between
-words, to the end of the next word.
-Word boundaries are the same as <CODE>forward-word</CODE>.
-<P>
-
-<A NAME="IDX102"></A>
-<DT><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE>
-<DD><A NAME="IDX103"></A>
-Kill the word behind point.
-Word boundaries are the same as <CODE>backward-word</CODE>.
-<P>
-
-<A NAME="IDX104"></A>
-<DT><CODE>unix-word-rubout (C-w)</CODE>
-<DD><A NAME="IDX105"></A>
-Kill the word behind point, using white space as a word boundary.
-The killed text is saved on the kill-ring.
-<P>
-
-<A NAME="IDX106"></A>
-<DT><CODE>delete-horizontal-space ()</CODE>
-<DD><A NAME="IDX107"></A>
-Delete all spaces and tabs around point. By default, this is unbound.
-<P>
-
-<A NAME="IDX108"></A>
-<DT><CODE>kill-region ()</CODE>
-<DD><A NAME="IDX109"></A>
-Kill the text in the current region.
-By default, this command is unbound.
-<P>
-
-<A NAME="IDX110"></A>
-<DT><CODE>copy-region-as-kill ()</CODE>
-<DD><A NAME="IDX111"></A>
-Copy the text in the region to the kill buffer, so it can be yanked
-right away. By default, this command is unbound.
-<P>
-
-<A NAME="IDX112"></A>
-<DT><CODE>copy-backward-word ()</CODE>
-<DD><A NAME="IDX113"></A>
-Copy the word before point to the kill buffer.
-The word boundaries are the same as <CODE>backward-word</CODE>.
-By default, this command is unbound.
-<P>
-
-<A NAME="IDX114"></A>
-<DT><CODE>copy-forward-word ()</CODE>
-<DD><A NAME="IDX115"></A>
-Copy the word following point to the kill buffer.
-The word boundaries are the same as <CODE>forward-word</CODE>.
-By default, this command is unbound.
-<P>
-
-<A NAME="IDX116"></A>
-<DT><CODE>yank (C-y)</CODE>
-<DD><A NAME="IDX117"></A>
-Yank the top of the kill ring into the buffer at point.
-<P>
-
-<A NAME="IDX118"></A>
-<DT><CODE>yank-pop (M-y)</CODE>
-<DD><A NAME="IDX119"></A>
-Rotate the kill-ring, and yank the new top. You can only do this if
-the prior command is <CODE>yank</CODE> or <CODE>yank-pop</CODE>.
-</DL>
-<P>
-
-<A NAME="Numeric Arguments"></A>
-<HR SIZE="6">
-<A NAME="SEC18"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC17"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC19"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC19"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.4.5 Specifying Numeric Arguments </H3>
-<!--docid::SEC18::-->
-<DL COMPACT>
-
-<A NAME="IDX120"></A>
-<DT><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, <small>...</small> <KBD>M--</KBD>)</CODE>
-<DD><A NAME="IDX121"></A>
-Add this digit to the argument already accumulating, or start a new
-argument. <KBD>M--</KBD> starts a negative argument.
-<P>
-
-<A NAME="IDX122"></A>
-<DT><CODE>universal-argument ()</CODE>
-<DD><A NAME="IDX123"></A>
-This is another way to specify an argument.
-If this command is followed by one or more digits, optionally with a
-leading minus sign, those digits define the argument.
-If the command is followed by digits, executing <CODE>universal-argument</CODE>
-again ends the numeric argument, but is otherwise ignored.
-As a special case, if this command is immediately followed by a
-character that is neither a digit or minus sign, the argument count
-for the next command is multiplied by four.
-The argument count is initially one, so executing this function the
-first time makes the argument count four, a second time makes the
-argument count sixteen, and so on.
-By default, this is not bound to a key.
-</DL>
-<P>
-
-<A NAME="Commands For Completion"></A>
-<HR SIZE="6">
-<A NAME="SEC19"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC18"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC20"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC20"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.4.6 Letting Readline Type For You </H3>
-<!--docid::SEC19::-->
-<P>
-
-<DL COMPACT>
-<A NAME="IDX124"></A>
-<DT><CODE>complete (<KBD>TAB</KBD>)</CODE>
-<DD><A NAME="IDX125"></A>
-Attempt to perform completion on the text before point.
-The actual completion performed is application-specific.
-The default is filename completion.
-<P>
-
-<A NAME="IDX126"></A>
-<DT><CODE>possible-completions (M-?)</CODE>
-<DD><A NAME="IDX127"></A>
-List the possible completions of the text before point.
-<P>
-
-<A NAME="IDX128"></A>
-<DT><CODE>insert-completions (M-*)</CODE>
-<DD><A NAME="IDX129"></A>
-Insert all completions of the text before point that would have
-been generated by <CODE>possible-completions</CODE>.
-<P>
-
-<A NAME="IDX130"></A>
-<DT><CODE>menu-complete ()</CODE>
-<DD><A NAME="IDX131"></A>
-Similar to <CODE>complete</CODE>, but replaces the word to be completed
-with a single match from the list of possible completions.
-Repeated execution of <CODE>menu-complete</CODE> steps through the list
-of possible completions, inserting each match in turn.
-At the end of the list of completions, the bell is rung
-(subject to the setting of <CODE>bell-style</CODE>)
-and the original text is restored.
-An argument of <VAR>n</VAR> moves <VAR>n</VAR> positions forward in the list
-of matches; a negative argument may be used to move backward
-through the list.
-This command is intended to be bound to <KBD>TAB</KBD>, but is unbound
-by default.
-<P>
-
-<A NAME="IDX132"></A>
-<DT><CODE>delete-char-or-list ()</CODE>
-<DD><A NAME="IDX133"></A>
-Deletes the character under the cursor if not at the beginning or
-end of the line (like <CODE>delete-char</CODE>).
-If at the end of the line, behaves identically to
-<CODE>possible-completions</CODE>.
-This command is unbound by default.
-<P>
-
-</DL>
-<P>
-
-<A NAME="Keyboard Macros"></A>
-<HR SIZE="6">
-<A NAME="SEC20"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC19"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC21"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC21"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.4.7 Keyboard Macros </H3>
-<!--docid::SEC20::-->
-<DL COMPACT>
-
-<A NAME="IDX134"></A>
-<DT><CODE>start-kbd-macro (C-x ()</CODE>
-<DD><A NAME="IDX135"></A>
-Begin saving the characters typed into the current keyboard macro.
-<P>
-
-<A NAME="IDX136"></A>
-<DT><CODE>end-kbd-macro (C-x ))</CODE>
-<DD><A NAME="IDX137"></A>
-Stop saving the characters typed into the current keyboard macro
-and save the definition.
-<P>
-
-<A NAME="IDX138"></A>
-<DT><CODE>call-last-kbd-macro (C-x e)</CODE>
-<DD><A NAME="IDX139"></A>
-Re-execute the last keyboard macro defined, by making the characters
-in the macro appear as if typed at the keyboard.
-<P>
-
-</DL>
-<P>
-
-<A NAME="Miscellaneous Commands"></A>
-<HR SIZE="6">
-<A NAME="SEC21"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC20"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.4.8 Some Miscellaneous Commands </H3>
-<!--docid::SEC21::-->
-<DL COMPACT>
-
-<A NAME="IDX140"></A>
-<DT><CODE>re-read-init-file (C-x C-r)</CODE>
-<DD><A NAME="IDX141"></A>
-Read in the contents of the <VAR>inputrc</VAR> file, and incorporate
-any bindings or variable assignments found there.
-<P>
-
-<A NAME="IDX142"></A>
-<DT><CODE>abort (C-g)</CODE>
-<DD><A NAME="IDX143"></A>
-Abort the current editing command and
-ring the terminal's bell (subject to the setting of
-<CODE>bell-style</CODE>).
-<P>
-
-<A NAME="IDX144"></A>
-<DT><CODE>do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, <small>...</small>)</CODE>
-<DD><A NAME="IDX145"></A>
-If the metafied character <VAR>x</VAR> is lowercase, run the command
-that is bound to the corresponding uppercase character.
-<P>
-
-<A NAME="IDX146"></A>
-<DT><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE>
-<DD><A NAME="IDX147"></A>
-Metafy the next character typed. This is for keyboards
-without a meta key. Typing <SAMP>`<KBD>ESC</KBD> f'</SAMP> is equivalent to typing
-<KBD>M-f</KBD>.
-<P>
-
-<A NAME="IDX148"></A>
-<DT><CODE>undo (C-_ or C-x C-u)</CODE>
-<DD><A NAME="IDX149"></A>
-Incremental undo, separately remembered for each line.
-<P>
-
-<A NAME="IDX150"></A>
-<DT><CODE>revert-line (M-r)</CODE>
-<DD><A NAME="IDX151"></A>
-Undo all changes made to this line. This is like executing the <CODE>undo</CODE>
-command enough times to get back to the beginning.
-<P>
-
-<A NAME="IDX152"></A>
-<DT><CODE>tilde-expand (M-~)</CODE>
-<DD><A NAME="IDX153"></A>
-Perform tilde expansion on the current word.
-<P>
-
-<A NAME="IDX154"></A>
-<DT><CODE>set-mark (C-@)</CODE>
-<DD><A NAME="IDX155"></A>
-Set the mark to the point. If a
-numeric argument is supplied, the mark is set to that position.
-<P>
-
-<A NAME="IDX156"></A>
-<DT><CODE>exchange-point-and-mark (C-x C-x)</CODE>
-<DD><A NAME="IDX157"></A>
-Swap the point with the mark. The current cursor position is set to
-the saved position, and the old cursor position is saved as the mark.
-<P>
-
-<A NAME="IDX158"></A>
-<DT><CODE>character-search (C-])</CODE>
-<DD><A NAME="IDX159"></A>
-A character is read and point is moved to the next occurrence of that
-character. A negative count searches for previous occurrences.
-<P>
-
-<A NAME="IDX160"></A>
-<DT><CODE>character-search-backward (M-C-])</CODE>
-<DD><A NAME="IDX161"></A>
-A character is read and point is moved to the previous occurrence
-of that character. A negative count searches for subsequent
-occurrences.
-<P>
-
-<A NAME="IDX162"></A>
-<DT><CODE>insert-comment (M-#)</CODE>
-<DD><A NAME="IDX163"></A>
-Without a numeric argument, the value of the <CODE>comment-begin</CODE>
-variable is inserted at the beginning of the current line.
-If a numeric argument is supplied, this command acts as a toggle: if
-the characters at the beginning of the line do not match the value
-of <CODE>comment-begin</CODE>, the value is inserted, otherwise
-the characters in <CODE>comment-begin</CODE> are deleted from the beginning of
-the line.
-In either case, the line is accepted as if a newline had been typed.
-<P>
-
-<A NAME="IDX164"></A>
-<DT><CODE>dump-functions ()</CODE>
-<DD><A NAME="IDX165"></A>
-Print all of the functions and their key bindings to the
-Readline output stream. If a numeric argument is supplied,
-the output is formatted in such a way that it can be made part
-of an <VAR>inputrc</VAR> file. This command is unbound by default.
-<P>
-
-<A NAME="IDX166"></A>
-<DT><CODE>dump-variables ()</CODE>
-<DD><A NAME="IDX167"></A>
-Print all of the settable variables and their values to the
-Readline output stream. If a numeric argument is supplied,
-the output is formatted in such a way that it can be made part
-of an <VAR>inputrc</VAR> file. This command is unbound by default.
-<P>
-
-<A NAME="IDX168"></A>
-<DT><CODE>dump-macros ()</CODE>
-<DD><A NAME="IDX169"></A>
-Print all of the Readline key sequences bound to macros and the
-strings they output. If a numeric argument is supplied,
-the output is formatted in such a way that it can be made part
-of an <VAR>inputrc</VAR> file. This command is unbound by default.
-<P>
-
-<A NAME="IDX170"></A>
-<DT><CODE>emacs-editing-mode (C-e)</CODE>
-<DD><A NAME="IDX171"></A>
-When in <CODE>vi</CODE> command mode, this causes a switch to <CODE>emacs</CODE>
-editing mode.
-<P>
-
-<A NAME="IDX172"></A>
-<DT><CODE>vi-editing-mode (M-C-j)</CODE>
-<DD><A NAME="IDX173"></A>
-When in <CODE>emacs</CODE> editing mode, this causes a switch to <CODE>vi</CODE>
-editing mode.
-<P>
-
-</DL>
-<P>
-
-<A NAME="Readline vi Mode"></A>
-<HR SIZE="6">
-<A NAME="SEC22"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC21"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC1"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 1.5 Readline vi Mode </H2>
-<!--docid::SEC22::-->
-<P>
-
-While the Readline library does not have a full set of <CODE>vi</CODE>
-editing functions, it does contain enough to allow simple editing
-of the line. The Readline <CODE>vi</CODE> mode behaves as specified in
-the POSIX 1003.2 standard.
-</P><P>
-
-In order to switch interactively between <CODE>emacs</CODE> and <CODE>vi</CODE>
-editing modes, use the command <KBD>M-C-j</KBD> (bound to emacs-editing-mode
-when in <CODE>vi</CODE> mode and to vi-editing-mode in <CODE>emacs</CODE> mode).
-The Readline default is <CODE>emacs</CODE> mode.
-</P><P>
-
-When you enter a line in <CODE>vi</CODE> mode, you are already placed in
-`insertion' mode, as if you had typed an <SAMP>`i'</SAMP>. Pressing <KBD>ESC</KBD>
-switches you into `command' mode, where you can edit the text of the
-line with the standard <CODE>vi</CODE> movement keys, move to previous
-history lines with <SAMP>`k'</SAMP> and subsequent lines with <SAMP>`j'</SAMP>, and
-so forth.
-</P><P>
-
-This document describes the GNU Readline Library, a utility for aiding
-in the consitency of user interface across discrete programs that need
-to provide a command line interface.
-</P><P>
-
-Copyright (C) 1988-2002 Free Software Foundation, Inc.
-</P><P>
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-pare preserved on all copies.
-</P><P>
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the entire
-resulting derived work is distributed under the terms of a permission
-notice identical to this one.
-</P><P>
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that this permission notice may be stated in a translation approved
-by the Foundation.
-</P><P>
-
-<A NAME="Programming with GNU Readline"></A>
-<HR SIZE="6">
-<A NAME="SEC23"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC24"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1> 2. Programming with GNU Readline </H1>
-<!--docid::SEC23::-->
-<P>
-
-This chapter describes the interface between the GNU Readline Library and
-other programs. If you are a programmer, and you wish to include the
-features found in GNU Readline
-such as completion, line editing, and interactive history manipulation
-in your own programs, this section is for you.
-</P><P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC24">2.1 Basic Behavior</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Using the default behavior of Readline.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC25">2.2 Custom Functions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Adding your own functions to Readline.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Variables accessible to custom
- functions.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC29">2.4 Readline Convenience Functions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions which Readline supplies to
- aid in writing your own custom
- functions.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC43">2.5 Readline Signal Handling</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">How Readline behaves when it receives signals.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC44">2.6 Custom Completers</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Supplanting or supplementing Readline's
- completion functions.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<A NAME="Basic Behavior"></A>
-<HR SIZE="6">
-<A NAME="SEC24"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC25"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 2.1 Basic Behavior </H2>
-<!--docid::SEC24::-->
-<P>
-
-Many programs provide a command line interface, such as <CODE>mail</CODE>,
-<CODE>ftp</CODE>, and <CODE>sh</CODE>. For such programs, the default behaviour of
-Readline is sufficient. This section describes how to use Readline in
-the simplest way possible, perhaps to replace calls in your code to
-<CODE>gets()</CODE> or <CODE>fgets()</CODE>.
-</P><P>
-
-<A NAME="IDX174"></A>
-<A NAME="IDX175"></A>
-</P><P>
-
-The function <CODE>readline()</CODE> prints a prompt <VAR>prompt</VAR>
-and then reads and returns a single line of text from the user.
-If <VAR>prompt</VAR> is <CODE>NULL</CODE> or the empty string, no prompt is displayed.
-The line <CODE>readline</CODE> returns is allocated with <CODE>malloc()</CODE>;
-the caller should <CODE>free()</CODE> the line when it has finished with it.
-The declaration for <CODE>readline</CODE> in ANSI C is
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre><CODE>char *readline (const char *<VAR>prompt</VAR>);</CODE>
-</pre></td></tr></table></P><P>
-
-So, one might say
-<TABLE><tr><td>&nbsp;</td><td class=example><pre><CODE>char *line = readline ("Enter a line: ");</CODE>
-</pre></td></tr></table>in order to read a line of text from the user.
-The line returned has the final newline removed, so only the
-text remains.
-</P><P>
-
-If <CODE>readline</CODE> encounters an <CODE>EOF</CODE> while reading the line, and the
-line is empty at that point, then <CODE>(char *)NULL</CODE> is returned.
-Otherwise, the line is ended just as if a newline had been typed.
-</P><P>
-
-If you want the user to be able to get at the line later, (with
-<KBD>C-p</KBD> for example), you must call <CODE>add_history()</CODE> to save the
-line away in a <EM>history</EM> list of such lines.
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre><CODE>add_history (line)</CODE>;
-</pre></td></tr></table></P><P>
-
-For full details on the GNU History Library, see the associated manual.
-</P><P>
-
-It is preferable to avoid saving empty lines on the history list, since
-users rarely have a burning need to reuse a blank line. Here is
-a function which usefully replaces the standard <CODE>gets()</CODE> library
-function, and has the advantage of no static buffer to overflow:
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>/* A static variable for holding the line. */
-static char *line_read = (char *)NULL;
-
-/* Read a string, and return a pointer to it.
- Returns NULL on EOF. */
-char *
-rl_gets ()
-{
- /* If the buffer has already been allocated,
- return the memory to the free pool. */
- if (line_read)
- {
- free (line_read);
- line_read = (char *)NULL;
- }
-
- /* Get a line from the user. */
- line_read = readline ("");
-
- /* If the line has any text in it,
- save it on the history. */
- if (line_read &#38;&#38; *line_read)
- add_history (line_read);
-
- return (line_read);
-}
-</pre></td></tr></table></P><P>
-
-This function gives the user the default behaviour of <KBD>TAB</KBD>
-completion: completion on file names. If you do not want Readline to
-complete on filenames, you can change the binding of the <KBD>TAB</KBD> key
-with <CODE>rl_bind_key()</CODE>.
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre><CODE>int rl_bind_key (int <VAR>key</VAR>, rl_command_func_t *<VAR>function</VAR>);</CODE>
-</pre></td></tr></table></P><P>
-
-<CODE>rl_bind_key()</CODE> takes two arguments: <VAR>key</VAR> is the character that
-you want to bind, and <VAR>function</VAR> is the address of the function to
-call when <VAR>key</VAR> is pressed. Binding <KBD>TAB</KBD> to <CODE>rl_insert()</CODE>
-makes <KBD>TAB</KBD> insert itself.
-<CODE>rl_bind_key()</CODE> returns non-zero if <VAR>key</VAR> is not a valid
-ASCII character code (between 0 and 255).
-</P><P>
-
-Thus, to disable the default <KBD>TAB</KBD> behavior, the following suffices:
-<TABLE><tr><td>&nbsp;</td><td class=example><pre><CODE>rl_bind_key ('\t', rl_insert);</CODE>
-</pre></td></tr></table></P><P>
-
-This code should be executed once at the start of your program; you
-might write a function called <CODE>initialize_readline()</CODE> which
-performs this and other desired initializations, such as installing
-custom completers (see section <A HREF="readline.html#SEC44">2.6 Custom Completers</A>).
-</P><P>
-
-<A NAME="Custom Functions"></A>
-<HR SIZE="6">
-<A NAME="SEC25"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC24"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC26"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC28"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC28"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 2.2 Custom Functions </H2>
-<!--docid::SEC25::-->
-<P>
-
-Readline provides many functions for manipulating the text of
-the line, but it isn't possible to anticipate the needs of all
-programs. This section describes the various functions and variables
-defined within the Readline library which allow a user program to add
-customized functionality to Readline.
-</P><P>
-
-Before declaring any functions that customize Readline's behavior, or
-using any functionality Readline provides in other code, an
-application writer should include the file <CODE>&#60;readline/readline.h&#62;</CODE>
-in any file that uses Readline's features. Since some of the definitions
-in <CODE>readline.h</CODE> use the <CODE>stdio</CODE> library, the file
-<CODE>&#60;stdio.h&#62;</CODE> should be included before <CODE>readline.h</CODE>.
-</P><P>
-
-<CODE>readline.h</CODE> defines a C preprocessor variable that should
-be treated as an integer, <CODE>RL_READLINE_VERSION</CODE>, which may
-be used to conditionally compile application code depending on
-the installed Readline version. The value is a hexadecimal
-encoding of the major and minor version numbers of the library,
-of the form 0x<VAR>MMmm</VAR>. <VAR>MM</VAR> is the two-digit major
-version number; <VAR>mm</VAR> is the two-digit minor version number.
-For Readline 4.2, for example, the value of
-<CODE>RL_READLINE_VERSION</CODE> would be <CODE>0x0402</CODE>.
-</P><P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC26">2.2.1 Readline Typedefs</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">C declarations to make code readable.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC27">2.2.2 Writing a New Function</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Variables and calling conventions.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<A NAME="Readline Typedefs"></A>
-<HR SIZE="6">
-<A NAME="SEC26"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC25"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC27"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC28"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC25"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC28"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.2.1 Readline Typedefs </H3>
-<!--docid::SEC26::-->
-<P>
-
-For readabilty, we declare a number of new object types, all pointers
-to functions.
-</P><P>
-
-The reason for declaring these new types is to make it easier to write
-code describing pointers to C functions with appropriately prototyped
-arguments and return values.
-</P><P>
-
-For instance, say we want to declare a variable <VAR>func</VAR> as a pointer
-to a function which takes two <CODE>int</CODE> arguments and returns an
-<CODE>int</CODE> (this is the type of all of the Readline bindable functions).
-Instead of the classic C declaration
-</P><P>
-
-<CODE>int (*func)();</CODE>
-</P><P>
-
-or the ANSI-C style declaration
-</P><P>
-
-<CODE>int (*func)(int, int);</CODE>
-</P><P>
-
-we may write
-</P><P>
-
-<CODE>rl_command_func_t *func;</CODE>
-</P><P>
-
-The full list of function pointer types available is
-</P><P>
-
-<DL COMPACT>
-<DT><CODE>typedef int rl_command_func_t (int, int);</CODE>
-<DD><P>
-
-<DT><CODE>typedef char *rl_compentry_func_t (const char *, int);</CODE>
-<DD><P>
-
-<DT><CODE>typedef char **rl_completion_func_t (const char *, int, int);</CODE>
-<DD><P>
-
-<DT><CODE>typedef char *rl_quote_func_t (char *, int, char *);</CODE>
-<DD><P>
-
-<DT><CODE>typedef char *rl_dequote_func_t (char *, int);</CODE>
-<DD><P>
-
-<DT><CODE>typedef int rl_compignore_func_t (char **);</CODE>
-<DD><P>
-
-<DT><CODE>typedef void rl_compdisp_func_t (char **, int, int);</CODE>
-<DD><P>
-
-<DT><CODE>typedef int rl_hook_func_t (void);</CODE>
-<DD><P>
-
-<DT><CODE>typedef int rl_getc_func_t (FILE *);</CODE>
-<DD><P>
-
-<DT><CODE>typedef int rl_linebuf_func_t (char *, int);</CODE>
-<DD><P>
-
-<DT><CODE>typedef int rl_intfunc_t (int);</CODE>
-<DD><DT><CODE>#define rl_ivoidfunc_t rl_hook_func_t</CODE>
-<DD><DT><CODE>typedef int rl_icpfunc_t (char *);</CODE>
-<DD><DT><CODE>typedef int rl_icppfunc_t (char **);</CODE>
-<DD><P>
-
-<DT><CODE>typedef void rl_voidfunc_t (void);</CODE>
-<DD><DT><CODE>typedef void rl_vintfunc_t (int);</CODE>
-<DD><DT><CODE>typedef void rl_vcpfunc_t (char *);</CODE>
-<DD><DT><CODE>typedef void rl_vcppfunc_t (char **);</CODE>
-<DD><P>
-
-</DL>
-<P>
-
-<A NAME="Function Writing"></A>
-<HR SIZE="6">
-<A NAME="SEC27"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC26"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC28"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC28"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC25"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC28"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.2.2 Writing a New Function </H3>
-<!--docid::SEC27::-->
-<P>
-
-In order to write new functions for Readline, you need to know the
-calling conventions for keyboard-invoked functions, and the names of the
-variables that describe the current state of the line read so far.
-</P><P>
-
-The calling sequence for a command <CODE>foo</CODE> looks like
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre><CODE>int foo (int count, int key)</CODE>
-</pre></td></tr></table></P><P>
-
-where <VAR>count</VAR> is the numeric argument (or 1 if defaulted) and
-<VAR>key</VAR> is the key that invoked this function.
-</P><P>
-
-It is completely up to the function as to what should be done with the
-numeric argument. Some functions use it as a repeat count, some
-as a flag, and others to choose alternate behavior (refreshing the current
-line as opposed to refreshing the screen, for example). Some choose to
-ignore it. In general, if a
-function uses the numeric argument as a repeat count, it should be able
-to do something useful with both negative and positive arguments.
-At the very least, it should be aware that it can be passed a
-negative argument.
-</P><P>
-
-A command function should return 0 if its action completes successfully,
-and a non-zero value if some error occurs.
-</P><P>
-
-<A NAME="Readline Variables"></A>
-<HR SIZE="6">
-<A NAME="SEC28"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC27"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 2.3 Readline Variables </H2>
-<!--docid::SEC28::-->
-<P>
-
-These variables are available to function writers.
-</P><P>
-
-<A NAME="IDX176"></A>
-<DL>
-<DT><U>Variable:</U> char * <B>rl_line_buffer</B>
-<DD>This is the line gathered so far. You are welcome to modify the
-contents of the line, but see <A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A>. The
-function <CODE>rl_extend_line_buffer</CODE> is available to increase
-the memory allocated to <CODE>rl_line_buffer</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX177"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_point</B>
-<DD>The offset of the current cursor position in <CODE>rl_line_buffer</CODE>
-(the <EM>point</EM>).
-</DL>
-</P><P>
-
-<A NAME="IDX178"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_end</B>
-<DD>The number of characters present in <CODE>rl_line_buffer</CODE>. When
-<CODE>rl_point</CODE> is at the end of the line, <CODE>rl_point</CODE> and
-<CODE>rl_end</CODE> are equal.
-</DL>
-</P><P>
-
-<A NAME="IDX179"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_mark</B>
-<DD>The <VAR>mark</VAR> (saved position) in the current line. If set, the mark
-and point define a <EM>region</EM>.
-</DL>
-</P><P>
-
-<A NAME="IDX180"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_done</B>
-<DD>Setting this to a non-zero value causes Readline to return the current
-line immediately.
-</DL>
-</P><P>
-
-<A NAME="IDX181"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_num_chars_to_read</B>
-<DD>Setting this to a positive value before calling <CODE>readline()</CODE> causes
-Readline to return after accepting that many characters, rather
-than reading up to a character bound to <CODE>accept-line</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX182"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_pending_input</B>
-<DD>Setting this to a value makes it the next keystroke read. This is a
-way to stuff a single character into the input stream.
-</DL>
-</P><P>
-
-<A NAME="IDX183"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_dispatching</B>
-<DD>Set to a non-zero value if a function is being called from a key binding;
-zero otherwise. Application functions can test this to discover whether
-they were called directly or by Readline's dispatching mechanism.
-</DL>
-</P><P>
-
-<A NAME="IDX184"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_erase_empty_line</B>
-<DD>Setting this to a non-zero value causes Readline to completely erase
-the current line, including any prompt, any time a newline is typed as
-the only character on an otherwise-empty line. The cursor is moved to
-the beginning of the newly-blank line.
-</DL>
-</P><P>
-
-<A NAME="IDX185"></A>
-<DL>
-<DT><U>Variable:</U> char * <B>rl_prompt</B>
-<DD>The prompt Readline uses. This is set from the argument to
-<CODE>readline()</CODE>, and should not be assigned to directly.
-The <CODE>rl_set_prompt()</CODE> function (see section <A HREF="readline.html#SEC35">2.4.6 Redisplay</A>) may
-be used to modify the prompt string after calling <CODE>readline()</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX186"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_already_prompted</B>
-<DD>If an application wishes to display the prompt itself, rather than have
-Readline do it the first time <CODE>readline()</CODE> is called, it should set
-this variable to a non-zero value after displaying the prompt.
-The prompt must also be passed as the argument to <CODE>readline()</CODE> so
-the redisplay functions can update the display properly.
-The calling application is responsible for managing the value; Readline
-never sets it.
-</DL>
-</P><P>
-
-<A NAME="IDX187"></A>
-<DL>
-<DT><U>Variable:</U> const char * <B>rl_library_version</B>
-<DD>The version number of this revision of the library.
-</DL>
-</P><P>
-
-<A NAME="IDX188"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_readline_version</B>
-<DD>An integer encoding the current version of the library. The encoding is
-of the form 0x<VAR>MMmm</VAR>, where <VAR>MM</VAR> is the two-digit major version
-number, and <VAR>mm</VAR> is the two-digit minor version number.
-For example, for Readline-4.2, <CODE>rl_readline_version</CODE> would have the
-value 0x0402.
-</DL>
-</P><P>
-
-<A NAME="IDX189"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_gnu_readline_p</B>
-<DD>Always set to 1, denoting that this is GNU readline rather than some
-emulation.
-</DL>
-</P><P>
-
-<A NAME="IDX190"></A>
-<DL>
-<DT><U>Variable:</U> const char * <B>rl_terminal_name</B>
-<DD>The terminal type, used for initialization. If not set by the application,
-Readline sets this to the value of the <CODE>TERM</CODE> environment variable
-the first time it is called.
-</DL>
-</P><P>
-
-<A NAME="IDX191"></A>
-<DL>
-<DT><U>Variable:</U> const char * <B>rl_readline_name</B>
-<DD>This variable is set to a unique name by each application using Readline.
-The value allows conditional parsing of the inputrc file
-(see section <A HREF="readline.html#SEC11">1.3.2 Conditional Init Constructs</A>).
-</DL>
-</P><P>
-
-<A NAME="IDX192"></A>
-<DL>
-<DT><U>Variable:</U> FILE * <B>rl_instream</B>
-<DD>The stdio stream from which Readline reads input.
-If <CODE>NULL</CODE>, Readline defaults to <VAR>stdin</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX193"></A>
-<DL>
-<DT><U>Variable:</U> FILE * <B>rl_outstream</B>
-<DD>The stdio stream to which Readline performs output.
-If <CODE>NULL</CODE>, Readline defaults to <VAR>stdout</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX194"></A>
-<DL>
-<DT><U>Variable:</U> rl_command_func_t * <B>rl_last_func</B>
-<DD>The address of the last command function Readline executed. May be used to
-test whether or not a function is being executed twice in succession, for
-example.
-</DL>
-</P><P>
-
-<A NAME="IDX195"></A>
-<DL>
-<DT><U>Variable:</U> rl_hook_func_t * <B>rl_startup_hook</B>
-<DD>If non-zero, this is the address of a function to call just
-before <CODE>readline</CODE> prints the first prompt.
-</DL>
-</P><P>
-
-<A NAME="IDX196"></A>
-<DL>
-<DT><U>Variable:</U> rl_hook_func_t * <B>rl_pre_input_hook</B>
-<DD>If non-zero, this is the address of a function to call after
-the first prompt has been printed and just before <CODE>readline</CODE>
-starts reading input characters.
-</DL>
-</P><P>
-
-<A NAME="IDX197"></A>
-<DL>
-<DT><U>Variable:</U> rl_hook_func_t * <B>rl_event_hook</B>
-<DD>If non-zero, this is the address of a function to call periodically
-when Readline is waiting for terminal input.
-By default, this will be called at most ten times a second if there
-is no keyboard input.
-</DL>
-</P><P>
-
-<A NAME="IDX198"></A>
-<DL>
-<DT><U>Variable:</U> rl_getc_func_t * <B>rl_getc_function</B>
-<DD>If non-zero, Readline will call indirectly through this pointer
-to get a character from the input stream. By default, it is set to
-<CODE>rl_getc</CODE>, the default Readline character input function
-(see section <A HREF="readline.html#SEC37">2.4.8 Character Input</A>).
-</DL>
-</P><P>
-
-<A NAME="IDX199"></A>
-<DL>
-<DT><U>Variable:</U> rl_voidfunc_t * <B>rl_redisplay_function</B>
-<DD>If non-zero, Readline will call indirectly through this pointer
-to update the display with the current contents of the editing buffer.
-By default, it is set to <CODE>rl_redisplay</CODE>, the default Readline
-redisplay function (see section <A HREF="readline.html#SEC35">2.4.6 Redisplay</A>).
-</DL>
-</P><P>
-
-<A NAME="IDX200"></A>
-<DL>
-<DT><U>Variable:</U> rl_vintfunc_t * <B>rl_prep_term_function</B>
-<DD>If non-zero, Readline will call indirectly through this pointer
-to initialize the terminal. The function takes a single argument, an
-<CODE>int</CODE> flag that says whether or not to use eight-bit characters.
-By default, this is set to <CODE>rl_prep_terminal</CODE>
-(see section <A HREF="readline.html#SEC38">2.4.9 Terminal Management</A>).
-</DL>
-</P><P>
-
-<A NAME="IDX201"></A>
-<DL>
-<DT><U>Variable:</U> rl_voidfunc_t * <B>rl_deprep_term_function</B>
-<DD>If non-zero, Readline will call indirectly through this pointer
-to reset the terminal. This function should undo the effects of
-<CODE>rl_prep_term_function</CODE>.
-By default, this is set to <CODE>rl_deprep_terminal</CODE>
-(see section <A HREF="readline.html#SEC38">2.4.9 Terminal Management</A>).
-</DL>
-</P><P>
-
-<A NAME="IDX202"></A>
-<DL>
-<DT><U>Variable:</U> Keymap <B>rl_executing_keymap</B>
-<DD>This variable is set to the keymap (see section <A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A>) in which the
-currently executing readline function was found.
-</DL>
-</P><P>
-
-<A NAME="IDX203"></A>
-<DL>
-<DT><U>Variable:</U> Keymap <B>rl_binding_keymap</B>
-<DD>This variable is set to the keymap (see section <A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A>) in which the
-last key binding occurred.
-</DL>
-</P><P>
-
-<A NAME="IDX204"></A>
-<DL>
-<DT><U>Variable:</U> char * <B>rl_executing_macro</B>
-<DD>This variable is set to the text of any currently-executing macro.
-</DL>
-</P><P>
-
-<A NAME="IDX205"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_readline_state</B>
-<DD>A variable with bit values that encapsulate the current Readline state.
-A bit is set with the <CODE>RL_SETSTATE</CODE> macro, and unset with the
-<CODE>RL_UNSETSTATE</CODE> macro. Use the <CODE>RL_ISSTATE</CODE> macro to test
-whether a particular state bit is set. Current state bits include:
-</P><P>
-
-<DL COMPACT>
-<DT><CODE>RL_STATE_NONE</CODE>
-<DD>Readline has not yet been called, nor has it begun to intialize.
-<DT><CODE>RL_STATE_INITIALIZING</CODE>
-<DD>Readline is initializing its internal data structures.
-<DT><CODE>RL_STATE_INITIALIZED</CODE>
-<DD>Readline has completed its initialization.
-<DT><CODE>RL_STATE_TERMPREPPED</CODE>
-<DD>Readline has modified the terminal modes to do its own input and redisplay.
-<DT><CODE>RL_STATE_READCMD</CODE>
-<DD>Readline is reading a command from the keyboard.
-<DT><CODE>RL_STATE_METANEXT</CODE>
-<DD>Readline is reading more input after reading the meta-prefix character.
-<DT><CODE>RL_STATE_DISPATCHING</CODE>
-<DD>Readline is dispatching to a command.
-<DT><CODE>RL_STATE_MOREINPUT</CODE>
-<DD>Readline is reading more input while executing an editing command.
-<DT><CODE>RL_STATE_ISEARCH</CODE>
-<DD>Readline is performing an incremental history search.
-<DT><CODE>RL_STATE_NSEARCH</CODE>
-<DD>Readline is performing a non-incremental history search.
-<DT><CODE>RL_STATE_SEARCH</CODE>
-<DD>Readline is searching backward or forward through the history for a string.
-<DT><CODE>RL_STATE_NUMERICARG</CODE>
-<DD>Readline is reading a numeric argument.
-<DT><CODE>RL_STATE_MACROINPUT</CODE>
-<DD>Readline is currently getting its input from a previously-defined keyboard
-macro.
-<DT><CODE>RL_STATE_MACRODEF</CODE>
-<DD>Readline is currently reading characters defining a keyboard macro.
-<DT><CODE>RL_STATE_OVERWRITE</CODE>
-<DD>Readline is in overwrite mode.
-<DT><CODE>RL_STATE_COMPLETING</CODE>
-<DD>Readline is performing word completion.
-<DT><CODE>RL_STATE_SIGHANDLER</CODE>
-<DD>Readline is currently executing the readline signal handler.
-<DT><CODE>RL_STATE_UNDOING</CODE>
-<DD>Readline is performing an undo.
-<DT><CODE>RL_STATE_DONE</CODE>
-<DD>Readline has read a key sequence bound to <CODE>accept-line</CODE>
-and is about to return the line to the caller.
-</DL>
-<P>
-
-</DL>
-</P><P>
-
-<A NAME="IDX206"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_explicit_arg</B>
-<DD>Set to a non-zero value if an explicit numeric argument was specified by
-the user. Only valid in a bindable command function.
-</DL>
-</P><P>
-
-<A NAME="IDX207"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_numeric_arg</B>
-<DD>Set to the value of any numeric argument explicitly specified by the user
-before executing the current Readline function. Only valid in a bindable
-command function.
-</DL>
-</P><P>
-
-<A NAME="IDX208"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_editing_mode</B>
-<DD>Set to a value denoting Readline's current editing mode. A value of
-<VAR>1</VAR> means Readline is currently in emacs mode; <VAR>0</VAR>
-means that vi mode is active.
-</DL>
-</P><P>
-
-<A NAME="Readline Convenience Functions"></A>
-<HR SIZE="6">
-<A NAME="SEC29"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC28"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC30"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 2.4 Readline Convenience Functions </H2>
-<!--docid::SEC29::-->
-<P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC30">2.4.1 Naming a Function</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">How to give a function you write a name.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Making keymaps.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Changing Keymaps.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Translate function names to
- key sequences.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">How to make your functions undoable.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions to control line display.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC36">2.4.7 Modifying Text</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions to modify <CODE>rl_line_buffer</CODE>.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions to read keyboard input.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC38">2.4.9 Terminal Management</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions to manage terminal settings.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Generally useful functions and hooks.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions that don't fall into any category.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC41">2.4.12 Alternate Interface</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Using Readline in a `callback' fashion.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC42">2.4.13 A Readline Example</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">An example Readline function.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<A NAME="Function Naming"></A>
-<HR SIZE="6">
-<A NAME="SEC30"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC31"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.4.1 Naming a Function </H3>
-<!--docid::SEC30::-->
-<P>
-
-The user can dynamically change the bindings of keys while using
-Readline. This is done by representing the function with a descriptive
-name. The user is able to type the descriptive name when referring to
-the function. Thus, in an init file, one might find
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>Meta-Rubout: backward-kill-word
-</pre></td></tr></table></P><P>
-
-This binds the keystroke <KBD>Meta-Rubout</KBD> to the function
-<EM>descriptively</EM> named <CODE>backward-kill-word</CODE>. You, as the
-programmer, should bind the functions you write to descriptive names as
-well. Readline provides a function for doing that:
-</P><P>
-
-<A NAME="IDX209"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_add_defun</B> <I>(const char *name, rl_command_func_t *function, int key)</I>
-<DD>Add <VAR>name</VAR> to the list of named functions. Make <VAR>function</VAR> be
-the function that gets called. If <VAR>key</VAR> is not -1, then bind it to
-<VAR>function</VAR> using <CODE>rl_bind_key()</CODE>.
-</DL>
-</P><P>
-
-Using this function alone is sufficient for most applications. It is
-the recommended way to add a few functions to the default functions that
-Readline has built in. If you need to do something other
-than adding a function to Readline, you may need to use the
-underlying functions described below.
-</P><P>
-
-<A NAME="Keymaps"></A>
-<HR SIZE="6">
-<A NAME="SEC31"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC30"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC32"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC32"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.4.2 Selecting a Keymap </H3>
-<!--docid::SEC31::-->
-<P>
-
-Key bindings take place on a <EM>keymap</EM>. The keymap is the
-association between the keys that the user types and the functions that
-get run. You can make your own keymaps, copy existing keymaps, and tell
-Readline which keymap to use.
-</P><P>
-
-<A NAME="IDX210"></A>
-<DL>
-<DT><U>Function:</U> Keymap <B>rl_make_bare_keymap</B> <I>(void)</I>
-<DD>Returns a new, empty keymap. The space for the keymap is allocated with
-<CODE>malloc()</CODE>; the caller should free it by calling
-<CODE>rl_discard_keymap()</CODE> when done.
-</DL>
-</P><P>
-
-<A NAME="IDX211"></A>
-<DL>
-<DT><U>Function:</U> Keymap <B>rl_copy_keymap</B> <I>(Keymap map)</I>
-<DD>Return a new keymap which is a copy of <VAR>map</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX212"></A>
-<DL>
-<DT><U>Function:</U> Keymap <B>rl_make_keymap</B> <I>(void)</I>
-<DD>Return a new keymap with the printing characters bound to rl_insert,
-the lowercase Meta characters bound to run their equivalents, and
-the Meta digits bound to produce numeric arguments.
-</DL>
-</P><P>
-
-<A NAME="IDX213"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_discard_keymap</B> <I>(Keymap keymap)</I>
-<DD>Free the storage associated with <VAR>keymap</VAR>.
-</DL>
-</P><P>
-
-Readline has several internal keymaps. These functions allow you to
-change which keymap is active.
-</P><P>
-
-<A NAME="IDX214"></A>
-<DL>
-<DT><U>Function:</U> Keymap <B>rl_get_keymap</B> <I>(void)</I>
-<DD>Returns the currently active keymap.
-</DL>
-</P><P>
-
-<A NAME="IDX215"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_set_keymap</B> <I>(Keymap keymap)</I>
-<DD>Makes <VAR>keymap</VAR> the currently active keymap.
-</DL>
-</P><P>
-
-<A NAME="IDX216"></A>
-<DL>
-<DT><U>Function:</U> Keymap <B>rl_get_keymap_by_name</B> <I>(const char *name)</I>
-<DD>Return the keymap matching <VAR>name</VAR>. <VAR>name</VAR> is one which would
-be supplied in a <CODE>set keymap</CODE> inputrc line (see section <A HREF="readline.html#SEC9">1.3 Readline Init File</A>).
-</DL>
-</P><P>
-
-<A NAME="IDX217"></A>
-<DL>
-<DT><U>Function:</U> char * <B>rl_get_keymap_name</B> <I>(Keymap keymap)</I>
-<DD>Return the name matching <VAR>keymap</VAR>. <VAR>name</VAR> is one which would
-be supplied in a <CODE>set keymap</CODE> inputrc line (see section <A HREF="readline.html#SEC9">1.3 Readline Init File</A>).
-</DL>
-</P><P>
-
-<A NAME="Binding Keys"></A>
-<HR SIZE="6">
-<A NAME="SEC32"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC31"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC33"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC33"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.4.3 Binding Keys </H3>
-<!--docid::SEC32::-->
-<P>
-
-Key sequences are associate with functions through the keymap.
-Readline has several internal keymaps: <CODE>emacs_standard_keymap</CODE>,
-<CODE>emacs_meta_keymap</CODE>, <CODE>emacs_ctlx_keymap</CODE>,
-<CODE>vi_movement_keymap</CODE>, and <CODE>vi_insertion_keymap</CODE>.
-<CODE>emacs_standard_keymap</CODE> is the default, and the examples in
-this manual assume that.
-</P><P>
-
-Since <CODE>readline()</CODE> installs a set of default key bindings the first
-time it is called, there is always the danger that a custom binding
-installed before the first call to <CODE>readline()</CODE> will be overridden.
-An alternate mechanism is to install custom key bindings in an
-initialization function assigned to the <CODE>rl_startup_hook</CODE> variable
-(see section <A HREF="readline.html#SEC28">2.3 Readline Variables</A>).
-</P><P>
-
-These functions manage key bindings.
-</P><P>
-
-<A NAME="IDX218"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_bind_key</B> <I>(int key, rl_command_func_t *function)</I>
-<DD>Binds <VAR>key</VAR> to <VAR>function</VAR> in the currently active keymap.
-Returns non-zero in the case of an invalid <VAR>key</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX219"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_bind_key_in_map</B> <I>(int key, rl_command_func_t *function, Keymap map)</I>
-<DD>Bind <VAR>key</VAR> to <VAR>function</VAR> in <VAR>map</VAR>. Returns non-zero in the case
-of an invalid <VAR>key</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX220"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_unbind_key</B> <I>(int key)</I>
-<DD>Bind <VAR>key</VAR> to the null function in the currently active keymap.
-Returns non-zero in case of error.
-</DL>
-</P><P>
-
-<A NAME="IDX221"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_unbind_key_in_map</B> <I>(int key, Keymap map)</I>
-<DD>Bind <VAR>key</VAR> to the null function in <VAR>map</VAR>.
-Returns non-zero in case of error.
-</DL>
-</P><P>
-
-<A NAME="IDX222"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_unbind_function_in_map</B> <I>(rl_command_func_t *function, Keymap map)</I>
-<DD>Unbind all keys that execute <VAR>function</VAR> in <VAR>map</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX223"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_unbind_command_in_map</B> <I>(const char *command, Keymap map)</I>
-<DD>Unbind all keys that are bound to <VAR>command</VAR> in <VAR>map</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX224"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_set_key</B> <I>(const char *keyseq, rl_command_func_t *function, Keymap map)</I>
-<DD>Bind the key sequence represented by the string <VAR>keyseq</VAR> to the function
-<VAR>function</VAR>. This makes new keymaps as
-necessary. The initial keymap in which to do bindings is <VAR>map</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX225"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_generic_bind</B> <I>(int type, const char *keyseq, char *data, Keymap map)</I>
-<DD>Bind the key sequence represented by the string <VAR>keyseq</VAR> to the arbitrary
-pointer <VAR>data</VAR>. <VAR>type</VAR> says what kind of data is pointed to by
-<VAR>data</VAR>; this can be a function (<CODE>ISFUNC</CODE>), a macro
-(<CODE>ISMACR</CODE>), or a keymap (<CODE>ISKMAP</CODE>). This makes new keymaps as
-necessary. The initial keymap in which to do bindings is <VAR>map</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX226"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_parse_and_bind</B> <I>(char *line)</I>
-<DD>Parse <VAR>line</VAR> as if it had been read from the <CODE>inputrc</CODE> file and
-perform any key bindings and variable assignments found
-(see section <A HREF="readline.html#SEC9">1.3 Readline Init File</A>).
-</DL>
-</P><P>
-
-<A NAME="IDX227"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_read_init_file</B> <I>(const char *filename)</I>
-<DD>Read keybindings and variable assignments from <VAR>filename</VAR>
-(see section <A HREF="readline.html#SEC9">1.3 Readline Init File</A>).
-</DL>
-</P><P>
-
-<A NAME="Associating Function Names and Bindings"></A>
-<HR SIZE="6">
-<A NAME="SEC33"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC32"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC34"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC34"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.4.4 Associating Function Names and Bindings </H3>
-<!--docid::SEC33::-->
-<P>
-
-These functions allow you to find out what keys invoke named functions
-and the functions invoked by a particular key sequence. You may also
-associate a new function name with an arbitrary function.
-</P><P>
-
-<A NAME="IDX228"></A>
-<DL>
-<DT><U>Function:</U> rl_command_func_t * <B>rl_named_function</B> <I>(const char *name)</I>
-<DD>Return the function with name <VAR>name</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX229"></A>
-<DL>
-<DT><U>Function:</U> rl_command_func_t * <B>rl_function_of_keyseq</B> <I>(const char *keyseq, Keymap map, int *type)</I>
-<DD>Return the function invoked by <VAR>keyseq</VAR> in keymap <VAR>map</VAR>.
-If <VAR>map</VAR> is <CODE>NULL</CODE>, the current keymap is used. If <VAR>type</VAR> is
-not <CODE>NULL</CODE>, the type of the object is returned in the <CODE>int</CODE> variable
-it points to (one of <CODE>ISFUNC</CODE>, <CODE>ISKMAP</CODE>, or <CODE>ISMACR</CODE>).
-</DL>
-</P><P>
-
-<A NAME="IDX230"></A>
-<DL>
-<DT><U>Function:</U> char ** <B>rl_invoking_keyseqs</B> <I>(rl_command_func_t *function)</I>
-<DD>Return an array of strings representing the key sequences used to
-invoke <VAR>function</VAR> in the current keymap.
-</DL>
-</P><P>
-
-<A NAME="IDX231"></A>
-<DL>
-<DT><U>Function:</U> char ** <B>rl_invoking_keyseqs_in_map</B> <I>(rl_command_func_t *function, Keymap map)</I>
-<DD>Return an array of strings representing the key sequences used to
-invoke <VAR>function</VAR> in the keymap <VAR>map</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX232"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_function_dumper</B> <I>(int readable)</I>
-<DD>Print the readline function names and the key sequences currently
-bound to them to <CODE>rl_outstream</CODE>. If <VAR>readable</VAR> is non-zero,
-the list is formatted in such a way that it can be made part of an
-<CODE>inputrc</CODE> file and re-read.
-</DL>
-</P><P>
-
-<A NAME="IDX233"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_list_funmap_names</B> <I>(void)</I>
-<DD>Print the names of all bindable Readline functions to <CODE>rl_outstream</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX234"></A>
-<DL>
-<DT><U>Function:</U> const char ** <B>rl_funmap_names</B> <I>(void)</I>
-<DD>Return a NULL terminated array of known function names. The array is
-sorted. The array itself is allocated, but not the strings inside. You
-should <CODE>free()</CODE> the array when you are done, but not the pointers.
-</DL>
-</P><P>
-
-<A NAME="IDX235"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_add_funmap_entry</B> <I>(const char *name, rl_command_func_t *function)</I>
-<DD>Add <VAR>name</VAR> to the list of bindable Readline command names, and make
-<VAR>function</VAR> the function to be called when <VAR>name</VAR> is invoked.
-</DL>
-</P><P>
-
-<A NAME="Allowing Undoing"></A>
-<HR SIZE="6">
-<A NAME="SEC34"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC33"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC35"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC35"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.4.5 Allowing Undoing </H3>
-<!--docid::SEC34::-->
-<P>
-
-Supporting the undo command is a painless thing, and makes your
-functions much more useful. It is certainly easy to try
-something if you know you can undo it.
-</P><P>
-
-If your function simply inserts text once, or deletes text once, and
-uses <CODE>rl_insert_text()</CODE> or <CODE>rl_delete_text()</CODE> to do it, then
-undoing is already done for you automatically.
-</P><P>
-
-If you do multiple insertions or multiple deletions, or any combination
-of these operations, you should group them together into one operation.
-This is done with <CODE>rl_begin_undo_group()</CODE> and
-<CODE>rl_end_undo_group()</CODE>.
-</P><P>
-
-The types of events that can be undone are:
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>enum undo_code { UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END };
-</FONT></pre></td></tr></table></P><P>
-
-Notice that <CODE>UNDO_DELETE</CODE> means to insert some text, and
-<CODE>UNDO_INSERT</CODE> means to delete some text. That is, the undo code
-tells what to undo, not how to undo it. <CODE>UNDO_BEGIN</CODE> and
-<CODE>UNDO_END</CODE> are tags added by <CODE>rl_begin_undo_group()</CODE> and
-<CODE>rl_end_undo_group()</CODE>.
-</P><P>
-
-<A NAME="IDX236"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_begin_undo_group</B> <I>(void)</I>
-<DD>Begins saving undo information in a group construct. The undo
-information usually comes from calls to <CODE>rl_insert_text()</CODE> and
-<CODE>rl_delete_text()</CODE>, but could be the result of calls to
-<CODE>rl_add_undo()</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX237"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_end_undo_group</B> <I>(void)</I>
-<DD>Closes the current undo group started with <CODE>rl_begin_undo_group
-()</CODE>. There should be one call to <CODE>rl_end_undo_group()</CODE>
-for each call to <CODE>rl_begin_undo_group()</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX238"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_add_undo</B> <I>(enum undo_code what, int start, int end, char *text)</I>
-<DD>Remember how to undo an event (according to <VAR>what</VAR>). The affected
-text runs from <VAR>start</VAR> to <VAR>end</VAR>, and encompasses <VAR>text</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX239"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_free_undo_list</B> <I>(void)</I>
-<DD>Free the existing undo list.
-</DL>
-</P><P>
-
-<A NAME="IDX240"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_do_undo</B> <I>(void)</I>
-<DD>Undo the first thing on the undo list. Returns <CODE>0</CODE> if there was
-nothing to undo, non-zero if something was undone.
-</DL>
-</P><P>
-
-Finally, if you neither insert nor delete text, but directly modify the
-existing text (e.g., change its case), call <CODE>rl_modifying()</CODE>
-once, just before you modify the text. You must supply the indices of
-the text range that you are going to modify.
-</P><P>
-
-<A NAME="IDX241"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_modifying</B> <I>(int start, int end)</I>
-<DD>Tell Readline to save the text between <VAR>start</VAR> and <VAR>end</VAR> as a
-single undo unit. It is assumed that you will subsequently modify
-that text.
-</DL>
-</P><P>
-
-<A NAME="Redisplay"></A>
-<HR SIZE="6">
-<A NAME="SEC35"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC34"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC36"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC36"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.4.6 Redisplay </H3>
-<!--docid::SEC35::-->
-<P>
-
-<A NAME="IDX242"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_redisplay</B> <I>(void)</I>
-<DD>Change what's displayed on the screen to reflect the current contents
-of <CODE>rl_line_buffer</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX243"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_forced_update_display</B> <I>(void)</I>
-<DD>Force the line to be updated and redisplayed, whether or not
-Readline thinks the screen display is correct.
-</DL>
-</P><P>
-
-<A NAME="IDX244"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_on_new_line</B> <I>(void)</I>
-<DD>Tell the update functions that we have moved onto a new (empty) line,
-usually after ouputting a newline.
-</DL>
-</P><P>
-
-<A NAME="IDX245"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_on_new_line_with_prompt</B> <I>(void)</I>
-<DD>Tell the update functions that we have moved onto a new line, with
-<VAR>rl_prompt</VAR> already displayed.
-This could be used by applications that want to output the prompt string
-themselves, but still need Readline to know the prompt string length for
-redisplay.
-It should be used after setting <VAR>rl_already_prompted</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX246"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_reset_line_state</B> <I>(void)</I>
-<DD>Reset the display state to a clean state and redisplay the current line
-starting on a new line.
-</DL>
-</P><P>
-
-<A NAME="IDX247"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_crlf</B> <I>(void)</I>
-<DD>Move the cursor to the start of the next screen line.
-</DL>
-</P><P>
-
-<A NAME="IDX248"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_show_char</B> <I>(int c)</I>
-<DD>Display character <VAR>c</VAR> on <CODE>rl_outstream</CODE>.
-If Readline has not been set to display meta characters directly, this
-will convert meta characters to a meta-prefixed key sequence.
-This is intended for use by applications which wish to do their own
-redisplay.
-</DL>
-</P><P>
-
-<A NAME="IDX249"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_message</B> <I>(const char *, <small>...</small>)</I>
-<DD>The arguments are a format string as would be supplied to <CODE>printf</CODE>,
-possibly containing conversion specifications such as <SAMP>`%d'</SAMP>, and
-any additional arguments necessary to satisfy the conversion specifications.
-The resulting string is displayed in the <EM>echo area</EM>. The echo area
-is also used to display numeric arguments and search strings.
-</DL>
-</P><P>
-
-<A NAME="IDX250"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_clear_message</B> <I>(void)</I>
-<DD>Clear the message in the echo area.
-</DL>
-</P><P>
-
-<A NAME="IDX251"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_save_prompt</B> <I>(void)</I>
-<DD>Save the local Readline prompt display state in preparation for
-displaying a new message in the message area with <CODE>rl_message()</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX252"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_restore_prompt</B> <I>(void)</I>
-<DD>Restore the local Readline prompt display state saved by the most
-recent call to <CODE>rl_save_prompt</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX253"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_expand_prompt</B> <I>(char *prompt)</I>
-<DD>Expand any special character sequences in <VAR>prompt</VAR> and set up the
-local Readline prompt redisplay variables.
-This function is called by <CODE>readline()</CODE>. It may also be called to
-expand the primary prompt if the <CODE>rl_on_new_line_with_prompt()</CODE>
-function or <CODE>rl_already_prompted</CODE> variable is used.
-It returns the number of visible characters on the last line of the
-(possibly multi-line) prompt.
-</DL>
-</P><P>
-
-<A NAME="IDX254"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_set_prompt</B> <I>(const char *prompt)</I>
-<DD>Make Readline use <VAR>prompt</VAR> for subsequent redisplay. This calls
-<CODE>rl_expand_prompt()</CODE> to expand the prompt and sets <CODE>rl_prompt</CODE>
-to the result.
-</DL>
-</P><P>
-
-<A NAME="Modifying Text"></A>
-<HR SIZE="6">
-<A NAME="SEC36"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC35"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC37"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC37"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.4.7 Modifying Text </H3>
-<!--docid::SEC36::-->
-<P>
-
-<A NAME="IDX255"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_insert_text</B> <I>(const char *text)</I>
-<DD>Insert <VAR>text</VAR> into the line at the current cursor position.
-Returns the number of characters inserted.
-</DL>
-</P><P>
-
-<A NAME="IDX256"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_delete_text</B> <I>(int start, int end)</I>
-<DD>Delete the text between <VAR>start</VAR> and <VAR>end</VAR> in the current line.
-Returns the number of characters deleted.
-</DL>
-</P><P>
-
-<A NAME="IDX257"></A>
-<DL>
-<DT><U>Function:</U> char * <B>rl_copy_text</B> <I>(int start, int end)</I>
-<DD>Return a copy of the text between <VAR>start</VAR> and <VAR>end</VAR> in
-the current line.
-</DL>
-</P><P>
-
-<A NAME="IDX258"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_kill_text</B> <I>(int start, int end)</I>
-<DD>Copy the text between <VAR>start</VAR> and <VAR>end</VAR> in the current line
-to the kill ring, appending or prepending to the last kill if the
-last command was a kill command. The text is deleted.
-If <VAR>start</VAR> is less than <VAR>end</VAR>,
-the text is appended, otherwise prepended. If the last command was
-not a kill, a new kill ring slot is used.
-</DL>
-</P><P>
-
-<A NAME="IDX259"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_push_macro_input</B> <I>(char *macro)</I>
-<DD>Cause <VAR>macro</VAR> to be inserted into the line, as if it had been invoked
-by a key bound to a macro. Not especially useful; use
-<CODE>rl_insert_text()</CODE> instead.
-</DL>
-</P><P>
-
-<A NAME="Character Input"></A>
-<HR SIZE="6">
-<A NAME="SEC37"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC36"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC38"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC38"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.4.8 Character Input </H3>
-<!--docid::SEC37::-->
-<P>
-
-<A NAME="IDX260"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_read_key</B> <I>(void)</I>
-<DD>Return the next character available from Readline's current input stream.
-This handles input inserted into
-the input stream via <VAR>rl_pending_input</VAR> (see section <A HREF="readline.html#SEC28">2.3 Readline Variables</A>)
-and <CODE>rl_stuff_char()</CODE>, macros, and characters read from the keyboard.
-While waiting for input, this function will call any function assigned to
-the <CODE>rl_event_hook</CODE> variable.
-</DL>
-</P><P>
-
-<A NAME="IDX261"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_getc</B> <I>(FILE *stream)</I>
-<DD>Return the next character available from <VAR>stream</VAR>, which is assumed to
-be the keyboard.
-</DL>
-</P><P>
-
-<A NAME="IDX262"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_stuff_char</B> <I>(int c)</I>
-<DD>Insert <VAR>c</VAR> into the Readline input stream. It will be "read"
-before Readline attempts to read characters from the terminal with
-<CODE>rl_read_key()</CODE>. Up to 512 characters may be pushed back.
-<CODE>rl_stuff_char</CODE> returns 1 if the character was successfully inserted;
-0 otherwise.
-</DL>
-</P><P>
-
-<A NAME="IDX263"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_execute_next</B> <I>(int c)</I>
-<DD>Make <VAR>c</VAR> be the next command to be executed when <CODE>rl_read_key()</CODE>
-is called. This sets <VAR>rl_pending_input</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX264"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_clear_pending_input</B> <I>(void)</I>
-<DD>Unset <VAR>rl_pending_input</VAR>, effectively negating the effect of any
-previous call to <CODE>rl_execute_next()</CODE>. This works only if the
-pending input has not already been read with <CODE>rl_read_key()</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX265"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_set_keyboard_input_timeout</B> <I>(int u)</I>
-<DD>While waiting for keyboard input in <CODE>rl_read_key()</CODE>, Readline will
-wait for <VAR>u</VAR> microseconds for input before calling any function
-assigned to <CODE>rl_event_hook</CODE>. The default waiting period is
-one-tenth of a second. Returns the old timeout value.
-</DL>
-</P><P>
-
-<A NAME="Terminal Management"></A>
-<HR SIZE="6">
-<A NAME="SEC38"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC37"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC39"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.4.9 Terminal Management </H3>
-<!--docid::SEC38::-->
-<P>
-
-<A NAME="IDX266"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_prep_terminal</B> <I>(int meta_flag)</I>
-<DD>Modify the terminal settings for Readline's use, so <CODE>readline()</CODE>
-can read a single character at a time from the keyboard.
-The <VAR>meta_flag</VAR> argument should be non-zero if Readline should
-read eight-bit input.
-</DL>
-</P><P>
-
-<A NAME="IDX267"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_deprep_terminal</B> <I>(void)</I>
-<DD>Undo the effects of <CODE>rl_prep_terminal()</CODE>, leaving the terminal in
-the state in which it was before the most recent call to
-<CODE>rl_prep_terminal()</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX268"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_tty_set_default_bindings</B> <I>(Keymap kmap)</I>
-<DD>Read the operating system's terminal editing characters (as would be displayed
-by <CODE>stty</CODE>) to their Readline equivalents. The bindings are performed
-in <VAR>kmap</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX269"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_reset_terminal</B> <I>(const char *terminal_name)</I>
-<DD>Reinitialize Readline's idea of the terminal settings using
-<VAR>terminal_name</VAR> as the terminal type (e.g., <CODE>vt100</CODE>).
-If <VAR>terminal_name</VAR> is <CODE>NULL</CODE>, the value of the <CODE>TERM</CODE>
-environment variable is used.
-</DL>
-</P><P>
-
-<A NAME="Utility Functions"></A>
-<HR SIZE="6">
-<A NAME="SEC39"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC38"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC40"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC31"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.4.10 Utility Functions </H3>
-<!--docid::SEC39::-->
-<P>
-
-<A NAME="IDX270"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_replace_line</B> <I>(const char *text, int clear_undo)</I>
-<DD>Replace the contents of <CODE>rl_line_buffer</CODE> with <VAR>text</VAR>.
-The point and mark are preserved, if possible.
-If <VAR>clear_undo</VAR> is non-zero, the undo list associated with the
-current line is cleared.
-</DL>
-</P><P>
-
-<A NAME="IDX271"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_extend_line_buffer</B> <I>(int len)</I>
-<DD>Ensure that <CODE>rl_line_buffer</CODE> has enough space to hold <VAR>len</VAR>
-characters, possibly reallocating it if necessary.
-</DL>
-</P><P>
-
-<A NAME="IDX272"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_initialize</B> <I>(void)</I>
-<DD>Initialize or re-initialize Readline's internal state.
-It's not strictly necessary to call this; <CODE>readline()</CODE> calls it before
-reading any input.
-</DL>
-</P><P>
-
-<A NAME="IDX273"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_ding</B> <I>(void)</I>
-<DD>Ring the terminal bell, obeying the setting of <CODE>bell-style</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX274"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_alphabetic</B> <I>(int c)</I>
-<DD>Return 1 if <VAR>c</VAR> is an alphabetic character.
-</DL>
-</P><P>
-
-<A NAME="IDX275"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_display_match_list</B> <I>(char **matches, int len, int max)</I>
-<DD>A convenience function for displaying a list of strings in
-columnar format on Readline's output stream. <CODE>matches</CODE> is the list
-of strings, in argv format, such as a list of completion matches.
-<CODE>len</CODE> is the number of strings in <CODE>matches</CODE>, and <CODE>max</CODE>
-is the length of the longest string in <CODE>matches</CODE>. This function uses
-the setting of <CODE>print-completions-horizontally</CODE> to select how the
-matches are displayed (see section <A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A>).
-</DL>
-</P><P>
-
-The following are implemented as macros, defined in <CODE>chardefs.h</CODE>.
-Applications should refrain from using them.
-</P><P>
-
-<A NAME="IDX276"></A>
-<DL>
-<DT><U>Function:</U> int <B>_rl_uppercase_p</B> <I>(int c)</I>
-<DD>Return 1 if <VAR>c</VAR> is an uppercase alphabetic character.
-</DL>
-</P><P>
-
-<A NAME="IDX277"></A>
-<DL>
-<DT><U>Function:</U> int <B>_rl_lowercase_p</B> <I>(int c)</I>
-<DD>Return 1 if <VAR>c</VAR> is a lowercase alphabetic character.
-</DL>
-</P><P>
-
-<A NAME="IDX278"></A>
-<DL>
-<DT><U>Function:</U> int <B>_rl_digit_p</B> <I>(int c)</I>
-<DD>Return 1 if <VAR>c</VAR> is a numeric character.
-</DL>
-</P><P>
-
-<A NAME="IDX279"></A>
-<DL>
-<DT><U>Function:</U> int <B>_rl_to_upper</B> <I>(int c)</I>
-<DD>If <VAR>c</VAR> is a lowercase alphabetic character, return the corresponding
-uppercase character.
-</DL>
-</P><P>
-
-<A NAME="IDX280"></A>
-<DL>
-<DT><U>Function:</U> int <B>_rl_to_lower</B> <I>(int c)</I>
-<DD>If <VAR>c</VAR> is an uppercase alphabetic character, return the corresponding
-lowercase character.
-</DL>
-</P><P>
-
-<A NAME="IDX281"></A>
-<DL>
-<DT><U>Function:</U> int <B>_rl_digit_value</B> <I>(int c)</I>
-<DD>If <VAR>c</VAR> is a number, return the value it represents.
-</DL>
-</P><P>
-
-<A NAME="Miscellaneous Functions"></A>
-<HR SIZE="6">
-<A NAME="SEC40"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC39"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC41"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC31"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.4.11 Miscellaneous Functions </H3>
-<!--docid::SEC40::-->
-<P>
-
-<A NAME="IDX282"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_macro_bind</B> <I>(const char *keyseq, const char *macro, Keymap map)</I>
-<DD>Bind the key sequence <VAR>keyseq</VAR> to invoke the macro <VAR>macro</VAR>.
-The binding is performed in <VAR>map</VAR>. When <VAR>keyseq</VAR> is invoked, the
-<VAR>macro</VAR> will be inserted into the line. This function is deprecated;
-use <CODE>rl_generic_bind()</CODE> instead.
-</DL>
-</P><P>
-
-<A NAME="IDX283"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_macro_dumper</B> <I>(int readable)</I>
-<DD>Print the key sequences bound to macros and their values, using
-the current keymap, to <CODE>rl_outstream</CODE>.
-If <VAR>readable</VAR> is non-zero, the list is formatted in such a way
-that it can be made part of an <CODE>inputrc</CODE> file and re-read.
-</DL>
-</P><P>
-
-<A NAME="IDX284"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_variable_bind</B> <I>(const char *variable, const char *value)</I>
-<DD>Make the Readline variable <VAR>variable</VAR> have <VAR>value</VAR>.
-This behaves as if the readline command
-<SAMP>`set <VAR>variable</VAR> <VAR>value</VAR>'</SAMP> had been executed in an <CODE>inputrc</CODE>
-file (see section <A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A>).
-</DL>
-</P><P>
-
-<A NAME="IDX285"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_variable_dumper</B> <I>(int readable)</I>
-<DD>Print the readline variable names and their current values
-to <CODE>rl_outstream</CODE>.
-If <VAR>readable</VAR> is non-zero, the list is formatted in such a way
-that it can be made part of an <CODE>inputrc</CODE> file and re-read.
-</DL>
-</P><P>
-
-<A NAME="IDX286"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_set_paren_blink_timeout</B> <I>(int u)</I>
-<DD>Set the time interval (in microseconds) that Readline waits when showing
-a balancing character when <CODE>blink-matching-paren</CODE> has been enabled.
-</DL>
-</P><P>
-
-<A NAME="IDX287"></A>
-<DL>
-<DT><U>Function:</U> char * <B>rl_get_termcap</B> <I>(const char *cap)</I>
-<DD>Retrieve the string value of the termcap capability <VAR>cap</VAR>.
-Readline fetches the termcap entry for the current terminal name and
-uses those capabilities to move around the screen line and perform other
-terminal-specific operations, like erasing a line. Readline does not
-use all of a terminal's capabilities, and this function will return
-values for only those capabilities Readline uses.
-</DL>
-</P><P>
-
-<A NAME="Alternate Interface"></A>
-<HR SIZE="6">
-<A NAME="SEC41"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC40"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC42"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC31"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.4.12 Alternate Interface </H3>
-<!--docid::SEC41::-->
-<P>
-
-An alternate interface is available to plain <CODE>readline()</CODE>. Some
-applications need to interleave keyboard I/O with file, device, or
-window system I/O, typically by using a main loop to <CODE>select()</CODE>
-on various file descriptors. To accomodate this need, readline can
-also be invoked as a `callback' function from an event loop. There
-are functions available to make this easy.
-</P><P>
-
-<A NAME="IDX288"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_callback_handler_install</B> <I>(const char *prompt, rl_vcpfunc_t *lhandler)</I>
-<DD>Set up the terminal for readline I/O and display the initial
-expanded value of <VAR>prompt</VAR>. Save the value of <VAR>lhandler</VAR> to
-use as a function to call when a complete line of input has been entered.
-The function takes the text of the line as an argument.
-</DL>
-</P><P>
-
-<A NAME="IDX289"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_callback_read_char</B> <I>(void)</I>
-<DD>Whenever an application determines that keyboard input is available, it
-should call <CODE>rl_callback_read_char()</CODE>, which will read the next
-character from the current input source.
-If that character completes the line, <CODE>rl_callback_read_char</CODE> will
-invoke the <VAR>lhandler</VAR> function saved by <CODE>rl_callback_handler_install</CODE>
-to process the line.
-Before calling the <VAR>lhandler</VAR> function, the terminal settings are
-reset to the values they had before calling
-<CODE>rl_callback_handler_install</CODE>.
-If the <VAR>lhandler</VAR> function returns,
-the terminal settings are modified for Readline's use again.
-<CODE>EOF</CODE> is indicated by calling <VAR>lhandler</VAR> with a
-<CODE>NULL</CODE> line.
-</DL>
-</P><P>
-
-<A NAME="IDX290"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_callback_handler_remove</B> <I>(void)</I>
-<DD>Restore the terminal to its initial state and remove the line handler.
-This may be called from within a callback as well as independently.
-If the <VAR>lhandler</VAR> installed by <CODE>rl_callback_handler_install</CODE>
-does not exit the program, either this function or the function referred
-to by the value of <CODE>rl_deprep_term_function</CODE> should be called before
-the program exits to reset the terminal settings.
-</DL>
-</P><P>
-
-<A NAME="A Readline Example"></A>
-<HR SIZE="6">
-<A NAME="SEC42"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC41"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC31"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.4.13 A Readline Example </H3>
-<!--docid::SEC42::-->
-<P>
-
-Here is a function which changes lowercase characters to their uppercase
-equivalents, and uppercase characters to lowercase. If
-this function was bound to <SAMP>`M-c'</SAMP>, then typing <SAMP>`M-c'</SAMP> would
-change the case of the character under point. Typing <SAMP>`M-1 0 M-c'</SAMP>
-would change the case of the following 10 characters, leaving the cursor on
-the last character changed.
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>/* Invert the case of the COUNT following characters. */
-int
-invert_case_line (count, key)
- int count, key;
-{
- register int start, end, i;
-
- start = rl_point;
-
- if (rl_point &#62;= rl_end)
- return (0);
-
- if (count &#60; 0)
- {
- direction = -1;
- count = -count;
- }
- else
- direction = 1;
-
- /* Find the end of the range to modify. */
- end = start + (count * direction);
-
- /* Force it to be within range. */
- if (end &#62; rl_end)
- end = rl_end;
- else if (end &#60; 0)
- end = 0;
-
- if (start == end)
- return (0);
-
- if (start &#62; end)
- {
- int temp = start;
- start = end;
- end = temp;
- }
-
- /* Tell readline that we are modifying the line,
- so it will save the undo information. */
- rl_modifying (start, end);
-
- for (i = start; i != end; i++)
- {
- if (_rl_uppercase_p (rl_line_buffer[i]))
- rl_line_buffer[i] = _rl_to_lower (rl_line_buffer[i]);
- else if (_rl_lowercase_p (rl_line_buffer[i]))
- rl_line_buffer[i] = _rl_to_upper (rl_line_buffer[i]);
- }
- /* Move point to on top of the last character changed. */
- rl_point = (direction == 1) ? end - 1 : start;
- return (0);
-}
-</pre></td></tr></table></P><P>
-
-<A NAME="Readline Signal Handling"></A>
-<HR SIZE="6">
-<A NAME="SEC43"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC42"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 2.5 Readline Signal Handling </H2>
-<!--docid::SEC43::-->
-<P>
-
-Signals are asynchronous events sent to a process by the Unix kernel,
-sometimes on behalf of another process. They are intended to indicate
-exceptional events, like a user pressing the interrupt key on his terminal,
-or a network connection being broken. There is a class of signals that can
-be sent to the process currently reading input from the keyboard. Since
-Readline changes the terminal attributes when it is called, it needs to
-perform special processing when such a signal is received in order to
-restore the terminal to a sane state, or provide application writers with
-functions to do so manually.
-</P><P>
-
-Readline contains an internal signal handler that is installed for a
-number of signals (<CODE>SIGINT</CODE>, <CODE>SIGQUIT</CODE>, <CODE>SIGTERM</CODE>,
-<CODE>SIGALRM</CODE>, <CODE>SIGTSTP</CODE>, <CODE>SIGTTIN</CODE>, and <CODE>SIGTTOU</CODE>).
-When one of these signals is received, the signal handler
-will reset the terminal attributes to those that were in effect before
-<CODE>readline()</CODE> was called, reset the signal handling to what it was
-before <CODE>readline()</CODE> was called, and resend the signal to the calling
-application.
-If and when the calling application's signal handler returns, Readline
-will reinitialize the terminal and continue to accept input.
-When a <CODE>SIGINT</CODE> is received, the Readline signal handler performs
-some additional work, which will cause any partially-entered line to be
-aborted (see the description of <CODE>rl_free_line_state()</CODE> below).
-</P><P>
-
-There is an additional Readline signal handler, for <CODE>SIGWINCH</CODE>, which
-the kernel sends to a process whenever the terminal's size changes (for
-example, if a user resizes an <CODE>xterm</CODE>). The Readline <CODE>SIGWINCH</CODE>
-handler updates Readline's internal screen size information, and then calls
-any <CODE>SIGWINCH</CODE> signal handler the calling application has installed.
-Readline calls the application's <CODE>SIGWINCH</CODE> signal handler without
-resetting the terminal to its original state. If the application's signal
-handler does more than update its idea of the terminal size and return (for
-example, a <CODE>longjmp</CODE> back to a main processing loop), it <EM>must</EM>
-call <CODE>rl_cleanup_after_signal()</CODE> (described below), to restore the
-terminal state.
-</P><P>
-
-Readline provides two variables that allow application writers to
-control whether or not it will catch certain signals and act on them
-when they are received. It is important that applications change the
-values of these variables only when calling <CODE>readline()</CODE>, not in
-a signal handler, so Readline's internal signal state is not corrupted.
-</P><P>
-
-<A NAME="IDX291"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_catch_signals</B>
-<DD>If this variable is non-zero, Readline will install signal handlers for
-<CODE>SIGINT</CODE>, <CODE>SIGQUIT</CODE>, <CODE>SIGTERM</CODE>, <CODE>SIGALRM</CODE>,
-<CODE>SIGTSTP</CODE>, <CODE>SIGTTIN</CODE>, and <CODE>SIGTTOU</CODE>.
-</P><P>
-
-The default value of <CODE>rl_catch_signals</CODE> is 1.
-</DL>
-</P><P>
-
-<A NAME="IDX292"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_catch_sigwinch</B>
-<DD>If this variable is non-zero, Readline will install a signal handler for
-<CODE>SIGWINCH</CODE>.
-</P><P>
-
-The default value of <CODE>rl_catch_sigwinch</CODE> is 1.
-</DL>
-</P><P>
-
-If an application does not wish to have Readline catch any signals, or
-to handle signals other than those Readline catches (<CODE>SIGHUP</CODE>,
-for example),
-Readline provides convenience functions to do the necessary terminal
-and internal state cleanup upon receipt of a signal.
-</P><P>
-
-<A NAME="IDX293"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_cleanup_after_signal</B> <I>(void)</I>
-<DD>This function will reset the state of the terminal to what it was before
-<CODE>readline()</CODE> was called, and remove the Readline signal handlers for
-all signals, depending on the values of <CODE>rl_catch_signals</CODE> and
-<CODE>rl_catch_sigwinch</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX294"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_free_line_state</B> <I>(void)</I>
-<DD>This will free any partial state associated with the current input line
-(undo information, any partial history entry, any partially-entered
-keyboard macro, and any partially-entered numeric argument). This
-should be called before <CODE>rl_cleanup_after_signal()</CODE>. The
-Readline signal handler for <CODE>SIGINT</CODE> calls this to abort the
-current input line.
-</DL>
-</P><P>
-
-<A NAME="IDX295"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_reset_after_signal</B> <I>(void)</I>
-<DD>This will reinitialize the terminal and reinstall any Readline signal
-handlers, depending on the values of <CODE>rl_catch_signals</CODE> and
-<CODE>rl_catch_sigwinch</CODE>.
-</DL>
-</P><P>
-
-If an application does not wish Readline to catch <CODE>SIGWINCH</CODE>, it may
-call <CODE>rl_resize_terminal()</CODE> or <CODE>rl_set_screen_size()</CODE> to force
-Readline to update its idea of the terminal size when a <CODE>SIGWINCH</CODE>
-is received.
-</P><P>
-
-<A NAME="IDX296"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_resize_terminal</B> <I>(void)</I>
-<DD>Update Readline's internal screen size by reading values from the kernel.
-</DL>
-</P><P>
-
-<A NAME="IDX297"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_set_screen_size</B> <I>(int rows, int cols)</I>
-<DD>Set Readline's idea of the terminal size to <VAR>rows</VAR> rows and
-<VAR>cols</VAR> columns.
-</DL>
-</P><P>
-
-If an application does not want to install a <CODE>SIGWINCH</CODE> handler, but
-is still interested in the screen dimensions, Readline's idea of the screen
-size may be queried.
-</P><P>
-
-<A NAME="IDX298"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_get_screen_size</B> <I>(int *rows, int *cols)</I>
-<DD>Return Readline's idea of the terminal's size in the
-variables pointed to by the arguments.
-</DL>
-</P><P>
-
-The following functions install and remove Readline's signal handlers.
-</P><P>
-
-<A NAME="IDX299"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_set_signals</B> <I>(void)</I>
-<DD>Install Readline's signal handler for <CODE>SIGINT</CODE>, <CODE>SIGQUIT</CODE>,
-<CODE>SIGTERM</CODE>, <CODE>SIGALRM</CODE>, <CODE>SIGTSTP</CODE>, <CODE>SIGTTIN</CODE>,
-<CODE>SIGTTOU</CODE>, and <CODE>SIGWINCH</CODE>, depending on the values of
-<CODE>rl_catch_signals</CODE> and <CODE>rl_catch_sigwinch</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX300"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_clear_signals</B> <I>(void)</I>
-<DD>Remove all of the Readline signal handlers installed by
-<CODE>rl_set_signals()</CODE>.
-</DL>
-</P><P>
-
-<A NAME="Custom Completers"></A>
-<HR SIZE="6">
-<A NAME="SEC44"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC45"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 2.6 Custom Completers </H2>
-<!--docid::SEC44::-->
-<P>
-
-Typically, a program that reads commands from the user has a way of
-disambiguating commands and data. If your program is one of these, then
-it can provide completion for commands, data, or both.
-The following sections describe how your program and Readline
-cooperate to provide this service.
-</P><P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC45">2.6.1 How Completing Works</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">The logic used to do completion.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC46">2.6.2 Completion Functions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions provided by Readline.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Variables which control completion.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC48">2.6.4 A Short Completion Example</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">An example of writing completer subroutines.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<A NAME="How Completing Works"></A>
-<HR SIZE="6">
-<A NAME="SEC45"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC46"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.6.1 How Completing Works </H3>
-<!--docid::SEC45::-->
-<P>
-
-In order to complete some text, the full list of possible completions
-must be available. That is, it is not possible to accurately
-expand a partial word without knowing all of the possible words
-which make sense in that context. The Readline library provides
-the user interface to completion, and two of the most common
-completion functions: filename and username. For completing other types
-of text, you must write your own completion function. This section
-describes exactly what such functions must do, and provides an example.
-</P><P>
-
-There are three major functions used to perform completion:
-</P><P>
-
-<OL>
-<LI>
-The user-interface function <CODE>rl_complete()</CODE>. This function is
-called with the same arguments as other bindable Readline functions:
-<VAR>count</VAR> and <VAR>invoking_key</VAR>.
-It isolates the word to be completed and calls
-<CODE>rl_completion_matches()</CODE> to generate a list of possible completions.
-It then either lists the possible completions, inserts the possible
-completions, or actually performs the
-completion, depending on which behavior is desired.
-<P>
-
-<LI>
-The internal function <CODE>rl_completion_matches()</CODE> uses an
-application-supplied <EM>generator</EM> function to generate the list of
-possible matches, and then returns the array of these matches.
-The caller should place the address of its generator function in
-<CODE>rl_completion_entry_function</CODE>.
-<P>
-
-<LI>
-The generator function is called repeatedly from
-<CODE>rl_completion_matches()</CODE>, returning a string each time. The
-arguments to the generator function are <VAR>text</VAR> and <VAR>state</VAR>.
-<VAR>text</VAR> is the partial word to be completed. <VAR>state</VAR> is zero the
-first time the function is called, allowing the generator to perform
-any necessary initialization, and a positive non-zero integer for
-each subsequent call. The generator function returns
-<CODE>(char *)NULL</CODE> to inform <CODE>rl_completion_matches()</CODE> that there are
-no more possibilities left. Usually the generator function computes the
-list of possible completions when <VAR>state</VAR> is zero, and returns them
-one at a time on subsequent calls. Each string the generator function
-returns as a match must be allocated with <CODE>malloc()</CODE>; Readline
-frees the strings when it has finished with them.
-<P>
-
-</OL>
-<P>
-
-<A NAME="IDX301"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_complete</B> <I>(int ignore, int invoking_key)</I>
-<DD>Complete the word at or before point. You have supplied the function
-that does the initial simple matching selection algorithm (see
-<CODE>rl_completion_matches()</CODE>). The default is to do filename completion.
-</DL>
-</P><P>
-
-<A NAME="IDX302"></A>
-<DL>
-<DT><U>Variable:</U> rl_compentry_func_t * <B>rl_completion_entry_function</B>
-<DD>This is a pointer to the generator function for
-<CODE>rl_completion_matches()</CODE>.
-If the value of <CODE>rl_completion_entry_function</CODE> is
-<CODE>NULL</CODE> then the default filename generator
-function, <CODE>rl_filename_completion_function()</CODE>, is used.
-</DL>
-</P><P>
-
-<A NAME="Completion Functions"></A>
-<HR SIZE="6">
-<A NAME="SEC46"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC45"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC47"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC47"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.6.2 Completion Functions </H3>
-<!--docid::SEC46::-->
-<P>
-
-Here is the complete list of callable completion functions present in
-Readline.
-</P><P>
-
-<A NAME="IDX303"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_complete_internal</B> <I>(int what_to_do)</I>
-<DD>Complete the word at or before point. <VAR>what_to_do</VAR> says what to do
-with the completion. A value of <SAMP>`?'</SAMP> means list the possible
-completions. <SAMP>`TAB'</SAMP> means do standard completion. <SAMP>`*'</SAMP> means
-insert all of the possible completions. <SAMP>`!'</SAMP> means to display
-all of the possible completions, if there is more than one, as well as
-performing partial completion.
-</DL>
-</P><P>
-
-<A NAME="IDX304"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_complete</B> <I>(int ignore, int invoking_key)</I>
-<DD>Complete the word at or before point. You have supplied the function
-that does the initial simple matching selection algorithm (see
-<CODE>rl_completion_matches()</CODE> and <CODE>rl_completion_entry_function</CODE>).
-The default is to do filename
-completion. This calls <CODE>rl_complete_internal()</CODE> with an
-argument depending on <VAR>invoking_key</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX305"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_possible_completions</B> <I>(int count, int invoking_key)</I>
-<DD>List the possible completions. See description of <CODE>rl_complete
-()</CODE>. This calls <CODE>rl_complete_internal()</CODE> with an argument of
-<SAMP>`?'</SAMP>.
-</DL>
-</P><P>
-
-<A NAME="IDX306"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_insert_completions</B> <I>(int count, int invoking_key)</I>
-<DD>Insert the list of possible completions into the line, deleting the
-partially-completed word. See description of <CODE>rl_complete()</CODE>.
-This calls <CODE>rl_complete_internal()</CODE> with an argument of <SAMP>`*'</SAMP>.
-</DL>
-</P><P>
-
-<A NAME="IDX307"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_completion_mode</B> <I>(rl_command_func_t *cfunc)</I>
-<DD>Returns the apppriate value to pass to <CODE>rl_complete_internal()</CODE>
-depending on whether <VAR>cfunc</VAR> was called twice in succession and
-the value of the <CODE>show-all-if-ambiguous</CODE> variable.
-Application-specific completion functions may use this function to present
-the same interface as <CODE>rl_complete()</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX308"></A>
-<DL>
-<DT><U>Function:</U> char ** <B>rl_completion_matches</B> <I>(const char *text, rl_compentry_func_t *entry_func)</I>
-<DD>Returns an array of strings which is a list of completions for
-<VAR>text</VAR>. If there are no completions, returns <CODE>NULL</CODE>.
-The first entry in the returned array is the substitution for <VAR>text</VAR>.
-The remaining entries are the possible completions. The array is
-terminated with a <CODE>NULL</CODE> pointer.
-</P><P>
-
-<VAR>entry_func</VAR> is a function of two args, and returns a
-<CODE>char *</CODE>. The first argument is <VAR>text</VAR>. The second is a
-state argument; it is zero on the first call, and non-zero on subsequent
-calls. <VAR>entry_func</VAR> returns a <CODE>NULL</CODE> pointer to the caller
-when there are no more matches.
-</DL>
-</P><P>
-
-<A NAME="IDX309"></A>
-<DL>
-<DT><U>Function:</U> char * <B>rl_filename_completion_function</B> <I>(const char *text, int state)</I>
-<DD>A generator function for filename completion in the general case.
-<VAR>text</VAR> is a partial filename.
-The Bash source is a useful reference for writing custom
-completion functions (the Bash completion functions call this and other
-Readline functions).
-</DL>
-</P><P>
-
-<A NAME="IDX310"></A>
-<DL>
-<DT><U>Function:</U> char * <B>rl_username_completion_function</B> <I>(const char *text, int state)</I>
-<DD>A completion generator for usernames. <VAR>text</VAR> contains a partial
-username preceded by a random character (usually <SAMP>`~'</SAMP>). As with all
-completion generators, <VAR>state</VAR> is zero on the first call and non-zero
-for subsequent calls.
-</DL>
-</P><P>
-
-<A NAME="Completion Variables"></A>
-<HR SIZE="6">
-<A NAME="SEC47"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC46"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC48"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC48"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.6.3 Completion Variables </H3>
-<!--docid::SEC47::-->
-<P>
-
-<A NAME="IDX311"></A>
-<DL>
-<DT><U>Variable:</U> rl_compentry_func_t * <B>rl_completion_entry_function</B>
-<DD>A pointer to the generator function for <CODE>rl_completion_matches()</CODE>.
-<CODE>NULL</CODE> means to use <CODE>rl_filename_completion_function()</CODE>, the default
-filename completer.
-</DL>
-</P><P>
-
-<A NAME="IDX312"></A>
-<DL>
-<DT><U>Variable:</U> rl_completion_func_t * <B>rl_attempted_completion_function</B>
-<DD>A pointer to an alternative function to create matches.
-The function is called with <VAR>text</VAR>, <VAR>start</VAR>, and <VAR>end</VAR>.
-<VAR>start</VAR> and <VAR>end</VAR> are indices in <CODE>rl_line_buffer</CODE> defining
-the boundaries of <VAR>text</VAR>, which is a character string.
-If this function exists and returns <CODE>NULL</CODE>, or if this variable is
-set to <CODE>NULL</CODE>, then <CODE>rl_complete()</CODE> will call the value of
-<CODE>rl_completion_entry_function</CODE> to generate matches, otherwise the
-array of strings returned will be used.
-If this function sets the <CODE>rl_attempted_completion_over</CODE>
-variable to a non-zero value, Readline will not perform its default
-completion even if this function returns no matches.
-</DL>
-</P><P>
-
-<A NAME="IDX313"></A>
-<DL>
-<DT><U>Variable:</U> rl_quote_func_t * <B>rl_filename_quoting_function</B>
-<DD>A pointer to a function that will quote a filename in an
-application-specific fashion. This is called if filename completion is being
-attempted and one of the characters in <CODE>rl_filename_quote_characters</CODE>
-appears in a completed filename. The function is called with
-<VAR>text</VAR>, <VAR>match_type</VAR>, and <VAR>quote_pointer</VAR>. The <VAR>text</VAR>
-is the filename to be quoted. The <VAR>match_type</VAR> is either
-<CODE>SINGLE_MATCH</CODE>, if there is only one completion match, or
-<CODE>MULT_MATCH</CODE>. Some functions use this to decide whether or not to
-insert a closing quote character. The <VAR>quote_pointer</VAR> is a pointer
-to any opening quote character the user typed. Some functions choose
-to reset this character.
-</DL>
-</P><P>
-
-<A NAME="IDX314"></A>
-<DL>
-<DT><U>Variable:</U> rl_dequote_func_t * <B>rl_filename_dequoting_function</B>
-<DD>A pointer to a function that will remove application-specific quoting
-characters from a filename before completion is attempted, so those
-characters do not interfere with matching the text against names in
-the filesystem. It is called with <VAR>text</VAR>, the text of the word
-to be dequoted, and <VAR>quote_char</VAR>, which is the quoting character
-that delimits the filename (usually <SAMP>`''</SAMP> or <SAMP>`"'</SAMP>). If
-<VAR>quote_char</VAR> is zero, the filename was not in an embedded string.
-</DL>
-</P><P>
-
-<A NAME="IDX315"></A>
-<DL>
-<DT><U>Variable:</U> rl_linebuf_func_t * <B>rl_char_is_quoted_p</B>
-<DD>A pointer to a function to call that determines whether or not a specific
-character in the line buffer is quoted, according to whatever quoting
-mechanism the program calling Readline uses. The function is called with
-two arguments: <VAR>text</VAR>, the text of the line, and <VAR>index</VAR>, the
-index of the character in the line. It is used to decide whether a
-character found in <CODE>rl_completer_word_break_characters</CODE> should be
-used to break words for the completer.
-</DL>
-</P><P>
-
-<A NAME="IDX316"></A>
-<DL>
-<DT><U>Variable:</U> rl_compignore_func_t * <B>rl_ignore_some_completions_function</B>
-<DD>This function, if defined, is called by the completer when real filename
-completion is done, after all the matching names have been generated.
-It is passed a <CODE>NULL</CODE> terminated array of matches.
-The first element (<CODE>matches[0]</CODE>) is the
-maximal substring common to all matches. This function can
-re-arrange the list of matches as required, but each element deleted
-from the array must be freed.
-</DL>
-</P><P>
-
-<A NAME="IDX317"></A>
-<DL>
-<DT><U>Variable:</U> rl_icppfunc_t * <B>rl_directory_completion_hook</B>
-<DD>This function, if defined, is allowed to modify the directory portion
-of filenames Readline completes. It is called with the address of a
-string (the current directory name) as an argument, and may modify that string.
-If the string is replaced with a new string, the old value should be freed.
-Any modified directory name should have a trailing slash.
-The modified value will be displayed as part of the completion, replacing
-the directory portion of the pathname the user typed.
-It returns an integer that should be non-zero if the function modifies
-its directory argument.
-It could be used to expand symbolic links or shell variables in pathnames.
-</DL>
-</P><P>
-
-<A NAME="IDX318"></A>
-<DL>
-<DT><U>Variable:</U> rl_compdisp_func_t * <B>rl_completion_display_matches_hook</B>
-<DD>If non-zero, then this is the address of a function to call when
-completing a word would normally display the list of possible matches.
-This function is called in lieu of Readline displaying the list.
-It takes three arguments:
-(<CODE>char **</CODE><VAR>matches</VAR>, <CODE>int</CODE> <VAR>num_matches</VAR>, <CODE>int</CODE> <VAR>max_length</VAR>)
-where <VAR>matches</VAR> is the array of matching strings,
-<VAR>num_matches</VAR> is the number of strings in that array, and
-<VAR>max_length</VAR> is the length of the longest string in that array.
-Readline provides a convenience function, <CODE>rl_display_match_list</CODE>,
-that takes care of doing the display to Readline's output stream. That
-function may be called from this hook.
-</DL>
-</P><P>
-
-<A NAME="IDX319"></A>
-<DL>
-<DT><U>Variable:</U> const char * <B>rl_basic_word_break_characters</B>
-<DD>The basic list of characters that signal a break between words for the
-completer routine. The default value of this variable is the characters
-which break words for completion in Bash:
-<CODE>" \t\n\"\\'`@$>&#60;=;|&#38;{("</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX320"></A>
-<DL>
-<DT><U>Variable:</U> const char * <B>rl_basic_quote_characters</B>
-<DD>A list of quote characters which can cause a word break.
-</DL>
-</P><P>
-
-<A NAME="IDX321"></A>
-<DL>
-<DT><U>Variable:</U> const char * <B>rl_completer_word_break_characters</B>
-<DD>The list of characters that signal a break between words for
-<CODE>rl_complete_internal()</CODE>. The default list is the value of
-<CODE>rl_basic_word_break_characters</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX322"></A>
-<DL>
-<DT><U>Variable:</U> const char * <B>rl_completer_quote_characters</B>
-<DD>A list of characters which can be used to quote a substring of the line.
-Completion occurs on the entire substring, and within the substring
-<CODE>rl_completer_word_break_characters</CODE> are treated as any other character,
-unless they also appear within this list.
-</DL>
-</P><P>
-
-<A NAME="IDX323"></A>
-<DL>
-<DT><U>Variable:</U> const char * <B>rl_filename_quote_characters</B>
-<DD>A list of characters that cause a filename to be quoted by the completer
-when they appear in a completed filename. The default is the null string.
-</DL>
-</P><P>
-
-<A NAME="IDX324"></A>
-<DL>
-<DT><U>Variable:</U> const char * <B>rl_special_prefixes</B>
-<DD>The list of characters that are word break characters, but should be
-left in <VAR>text</VAR> when it is passed to the completion function.
-Programs can use this to help determine what kind of completing to do.
-For instance, Bash sets this variable to "$@" so that it can complete
-shell variables and hostnames.
-</DL>
-</P><P>
-
-<A NAME="IDX325"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_completion_query_items</B>
-<DD>Up to this many items will be displayed in response to a
-possible-completions call. After that, we ask the user if she is sure
-she wants to see them all. The default value is 100.
-</DL>
-</P><P>
-
-<A NAME="IDX326"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_completion_append_character</B>
-<DD>When a single completion alternative matches at the end of the command
-line, this character is appended to the inserted completion text. The
-default is a space character (<SAMP>` '</SAMP>). Setting this to the null
-character (<SAMP>`\0'</SAMP>) prevents anything being appended automatically.
-This can be changed in custom completion functions to
-provide the "most sensible word separator character" according to
-an application-specific command line syntax specification.
-</DL>
-</P><P>
-
-<A NAME="IDX327"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_completion_suppress_append</B>
-<DD>If non-zero, <VAR>rl_completion_append_character</VAR> is not appended to
-matches at the end of the command line, as described above. It is
-set to 0 before any application-specific completion function is called.
-</DL>
-</P><P>
-
-<A NAME="IDX328"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_completion_mark_symlink_dirs</B>
-<DD>If non-zero, a slash will be appended to completed filenames that are
-symbolic links to directory names, subject to the value of the
-user-settable <VAR>mark-directories</VAR> variable.
-This variable exists so that application completion functions can
-override the user's global preference (set via the
-<VAR>mark-symlinked-directories</VAR> Readline variable) if appropriate.
-This variable is set to the user's preference before any
-application completion function is called, so unless that function
-modifies the value, the user's preferences are honored.
-</DL>
-</P><P>
-
-<A NAME="IDX329"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_ignore_completion_duplicates</B>
-<DD>If non-zero, then duplicates in the matches are removed.
-The default is 1.
-</DL>
-</P><P>
-
-<A NAME="IDX330"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_filename_completion_desired</B>
-<DD>Non-zero means that the results of the matches are to be treated as
-filenames. This is <EM>always</EM> zero on entry, and can only be changed
-within a completion entry generator function. If it is set to a non-zero
-value, directory names have a slash appended and Readline attempts to
-quote completed filenames if they contain any characters in
-<CODE>rl_filename_quote_characters</CODE> and <CODE>rl_filename_quoting_desired</CODE>
-is set to a non-zero value.
-</DL>
-</P><P>
-
-<A NAME="IDX331"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_filename_quoting_desired</B>
-<DD>Non-zero means that the results of the matches are to be quoted using
-double quotes (or an application-specific quoting mechanism) if the
-completed filename contains any characters in
-<CODE>rl_filename_quote_chars</CODE>. This is <EM>always</EM> non-zero
-on entry, and can only be changed within a completion entry generator
-function. The quoting is effected via a call to the function pointed to
-by <CODE>rl_filename_quoting_function</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX332"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_attempted_completion_over</B>
-<DD>If an application-specific completion function assigned to
-<CODE>rl_attempted_completion_function</CODE> sets this variable to a non-zero
-value, Readline will not perform its default filename completion even
-if the application's completion function returns no matches.
-It should be set only by an application's completion function.
-</DL>
-</P><P>
-
-<A NAME="IDX333"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_completion_type</B>
-<DD>Set to a character describing the type of completion Readline is currently
-attempting; see the description of <CODE>rl_complete_internal()</CODE>
-(see section <A HREF="readline.html#SEC46">2.6.2 Completion Functions</A>) for the list of characters.
-</DL>
-</P><P>
-
-<A NAME="IDX334"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_inhibit_completion</B>
-<DD>If this variable is non-zero, completion is inhibited. The completion
-character will be inserted as any other bound to <CODE>self-insert</CODE>.
-</DL>
-</P><P>
-
-<A NAME="A Short Completion Example"></A>
-<HR SIZE="6">
-<A NAME="SEC48"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC47"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.6.4 A Short Completion Example </H3>
-<!--docid::SEC48::-->
-<P>
-
-Here is a small application demonstrating the use of the GNU Readline
-library. It is called <CODE>fileman</CODE>, and the source code resides in
-<TT>`examples/fileman.c'</TT>. This sample application provides
-completion of command names, line editing features, and access to the
-history list.
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>/* fileman.c -- A tiny application which demonstrates how to use the
- GNU Readline library. This application interactively allows users
- to manipulate files and their modes. */
-
-#include &#60;stdio.h&#62;
-#include &#60;sys/types.h&#62;
-#include &#60;sys/file.h&#62;
-#include &#60;sys/stat.h&#62;
-#include &#60;sys/errno.h&#62;
-
-#include &#60;readline/readline.h&#62;
-#include &#60;readline/history.h&#62;
-
-extern char *xmalloc ();
-
-/* The names of functions that actually do the manipulation. */
-int com_list __P((char *));
-int com_view __P((char *));
-int com_rename __P((char *));
-int com_stat __P((char *));
-int com_pwd __P((char *));
-int com_delete __P((char *));
-int com_help __P((char *));
-int com_cd __P((char *));
-int com_quit __P((char *));
-
-/* A structure which contains information on the commands this program
- can understand. */
-
-typedef struct {
- char *name; /* User printable name of the function. */
- rl_icpfunc_t *func; /* Function to call to do the job. */
- char *doc; /* Documentation for this function. */
-} COMMAND;
-
-COMMAND commands[] = {
- { "cd", com_cd, "Change to directory DIR" },
- { "delete", com_delete, "Delete FILE" },
- { "help", com_help, "Display this text" },
- { "?", com_help, "Synonym for `help'" },
- { "list", com_list, "List files in DIR" },
- { "ls", com_list, "Synonym for `list'" },
- { "pwd", com_pwd, "Print the current working directory" },
- { "quit", com_quit, "Quit using Fileman" },
- { "rename", com_rename, "Rename FILE to NEWNAME" },
- { "stat", com_stat, "Print out statistics on FILE" },
- { "view", com_view, "View the contents of FILE" },
- { (char *)NULL, (rl_icpfunc_t *)NULL, (char *)NULL }
-};
-
-/* Forward declarations. */
-char *stripwhite ();
-COMMAND *find_command ();
-
-/* The name of this program, as taken from argv[0]. */
-char *progname;
-
-/* When non-zero, this means the user is done using this program. */
-int done;
-
-char *
-dupstr (s)
- int s;
-{
- char *r;
-
- r = xmalloc (strlen (s) + 1);
- strcpy (r, s);
- return (r);
-}
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- char *line, *s;
-
- progname = argv[0];
-
- initialize_readline (); /* Bind our completer. */
-
- /* Loop reading and executing lines until the user quits. */
- for ( ; done == 0; )
- {
- line = readline ("FileMan: ");
-
- if (!line)
- break;
-
- /* Remove leading and trailing whitespace from the line.
- Then, if there is anything left, add it to the history list
- and execute it. */
- s = stripwhite (line);
-
- if (*s)
- {
- add_history (s);
- execute_line (s);
- }
-
- free (line);
- }
- exit (0);
-}
-
-/* Execute a command line. */
-int
-execute_line (line)
- char *line;
-{
- register int i;
- COMMAND *command;
- char *word;
-
- /* Isolate the command word. */
- i = 0;
- while (line[i] &#38;&#38; whitespace (line[i]))
- i++;
- word = line + i;
-
- while (line[i] &#38;&#38; !whitespace (line[i]))
- i++;
-
- if (line[i])
- line[i++] = '\0';
-
- command = find_command (word);
-
- if (!command)
- {
- fprintf (stderr, "%s: No such command for FileMan.\n", word);
- return (-1);
- }
-
- /* Get argument to command, if any. */
- while (whitespace (line[i]))
- i++;
-
- word = line + i;
-
- /* Call the function. */
- return ((*(command-&#62;func)) (word));
-}
-
-/* Look up NAME as the name of a command, and return a pointer to that
- command. Return a NULL pointer if NAME isn't a command name. */
-COMMAND *
-find_command (name)
- char *name;
-{
- register int i;
-
- for (i = 0; commands[i].name; i++)
- if (strcmp (name, commands[i].name) == 0)
- return (&#38;commands[i]);
-
- return ((COMMAND *)NULL);
-}
-
-/* Strip whitespace from the start and end of STRING. Return a pointer
- into STRING. */
-char *
-stripwhite (string)
- char *string;
-{
- register char *s, *t;
-
- for (s = string; whitespace (*s); s++)
- ;
-
- if (*s == 0)
- return (s);
-
- t = s + strlen (s) - 1;
- while (t &#62; s &#38;&#38; whitespace (*t))
- t--;
- *++t = '\0';
-
- return s;
-}
-
-/* **************************************************************** */
-/* */
-/* Interface to Readline Completion */
-/* */
-/* **************************************************************** */
-
-char *command_generator __P((const char *, int));
-char **fileman_completion __P((const char *, int, int));
-
-/* Tell the GNU Readline library how to complete. We want to try to
- complete on command names if this is the first word in the line, or
- on filenames if not. */
-initialize_readline ()
-{
- /* Allow conditional parsing of the ~/.inputrc file. */
- rl_readline_name = "FileMan";
-
- /* Tell the completer that we want a crack first. */
- rl_attempted_completion_function = fileman_completion;
-}
-
-/* Attempt to complete on the contents of TEXT. START and END
- bound the region of rl_line_buffer that contains the word to
- complete. TEXT is the word to complete. We can use the entire
- contents of rl_line_buffer in case we want to do some simple
- parsing. Returnthe array of matches, or NULL if there aren't any. */
-char **
-fileman_completion (text, start, end)
- const char *text;
- int start, end;
-{
- char **matches;
-
- matches = (char **)NULL;
-
- /* If this word is at the start of the line, then it is a command
- to complete. Otherwise it is the name of a file in the current
- directory. */
- if (start == 0)
- matches = rl_completion_matches (text, command_generator);
-
- return (matches);
-}
-
-/* Generator function for command completion. STATE lets us
- know whether to start from scratch; without any state
- (i.e. STATE == 0), then we start at the top of the list. */
-char *
-command_generator (text, state)
- const char *text;
- int state;
-{
- static int list_index, len;
- char *name;
-
- /* If this is a new word to complete, initialize now. This
- includes saving the length of TEXT for efficiency, and
- initializing the index variable to 0. */
- if (!state)
- {
- list_index = 0;
- len = strlen (text);
- }
-
- /* Return the next name which partially matches from the
- command list. */
- while (name = commands[list_index].name)
- {
- list_index++;
-
- if (strncmp (name, text, len) == 0)
- return (dupstr(name));
- }
-
- /* If no names matched, then return NULL. */
- return ((char *)NULL);
-}
-
-/* **************************************************************** */
-/* */
-/* FileMan Commands */
-/* */
-/* **************************************************************** */
-
-/* String to pass to system (). This is for the LIST, VIEW and RENAME
- commands. */
-static char syscom[1024];
-
-/* List the file(s) named in arg. */
-com_list (arg)
- char *arg;
-{
- if (!arg)
- arg = "";
-
- sprintf (syscom, "ls -FClg %s", arg);
- return (system (syscom));
-}
-
-com_view (arg)
- char *arg;
-{
- if (!valid_argument ("view", arg))
- return 1;
-
- sprintf (syscom, "more %s", arg);
- return (system (syscom));
-}
-
-com_rename (arg)
- char *arg;
-{
- too_dangerous ("rename");
- return (1);
-}
-
-com_stat (arg)
- char *arg;
-{
- struct stat finfo;
-
- if (!valid_argument ("stat", arg))
- return (1);
-
- if (stat (arg, &#38;finfo) == -1)
- {
- perror (arg);
- return (1);
- }
-
- printf ("Statistics for `%s':\n", arg);
-
- printf ("%s has %d link%s, and is %d byte%s in length.\n", arg,
- finfo.st_nlink,
- (finfo.st_nlink == 1) ? "" : "s",
- finfo.st_size,
- (finfo.st_size == 1) ? "" : "s");
- printf ("Inode Last Change at: %s", ctime (&#38;finfo.st_ctime));
- printf (" Last access at: %s", ctime (&#38;finfo.st_atime));
- printf (" Last modified at: %s", ctime (&#38;finfo.st_mtime));
- return (0);
-}
-
-com_delete (arg)
- char *arg;
-{
- too_dangerous ("delete");
- return (1);
-}
-
-/* Print out help for ARG, or for all of the commands if ARG is
- not present. */
-com_help (arg)
- char *arg;
-{
- register int i;
- int printed = 0;
-
- for (i = 0; commands[i].name; i++)
- {
- if (!*arg || (strcmp (arg, commands[i].name) == 0))
- {
- printf ("%s\t\t%s.\n", commands[i].name, commands[i].doc);
- printed++;
- }
- }
-
- if (!printed)
- {
- printf ("No commands match `%s'. Possibilties are:\n", arg);
-
- for (i = 0; commands[i].name; i++)
- {
- /* Print in six columns. */
- if (printed == 6)
- {
- printed = 0;
- printf ("\n");
- }
-
- printf ("%s\t", commands[i].name);
- printed++;
- }
-
- if (printed)
- printf ("\n");
- }
- return (0);
-}
-
-/* Change to the directory ARG. */
-com_cd (arg)
- char *arg;
-{
- if (chdir (arg) == -1)
- {
- perror (arg);
- return 1;
- }
-
- com_pwd ("");
- return (0);
-}
-
-/* Print out the current working directory. */
-com_pwd (ignore)
- char *ignore;
-{
- char dir[1024], *s;
-
- s = getcwd (dir, sizeof(dir) - 1);
- if (s == 0)
- {
- printf ("Error getting pwd: %s\n", dir);
- return 1;
- }
-
- printf ("Current directory is %s\n", dir);
- return 0;
-}
-
-/* The user wishes to quit using this program. Just set DONE
- non-zero. */
-com_quit (arg)
- char *arg;
-{
- done = 1;
- return (0);
-}
-
-/* Function which tells you that you can't do this. */
-too_dangerous (caller)
- char *caller;
-{
- fprintf (stderr,
- "%s: Too dangerous for me to distribute.\n"
- caller);
- fprintf (stderr, "Write it yourself.\n");
-}
-
-/* Return non-zero if ARG is a valid argument for CALLER,
- else print an error message and return zero. */
-int
-valid_argument (caller, arg)
- char *caller, *arg;
-{
- if (!arg || !*arg)
- {
- fprintf (stderr, "%s: Argument required.\n", caller);
- return (0);
- }
-
- return (1);
-}
-</FONT></pre></td></tr></table></P><P>
-
-<A NAME="Concept Index"></A>
-<HR SIZE="6">
-<A NAME="SEC49"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC48"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC50"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1> Concept Index </H1>
-<!--docid::SEC49::-->
-<table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="readline.html#cp_C" style="text-decoration:none"><b>C</b></A>
- &nbsp;
-<A HREF="readline.html#cp_E" style="text-decoration:none"><b>E</b></A>
- &nbsp;
-<A HREF="readline.html#cp_I" style="text-decoration:none"><b>I</b></A>
- &nbsp;
-<A HREF="readline.html#cp_K" style="text-decoration:none"><b>K</b></A>
- &nbsp;
-<A HREF="readline.html#cp_N" style="text-decoration:none"><b>N</b></A>
- &nbsp;
-<A HREF="readline.html#cp_R" style="text-decoration:none"><b>R</b></A>
- &nbsp;
-<A HREF="readline.html#cp_V" style="text-decoration:none"><b>V</b></A>
- &nbsp;
-<A HREF="readline.html#cp_Y" style="text-decoration:none"><b>Y</b></A>
- &nbsp;
-</td></tr></table><br><P></P>
-<TABLE border=0>
-<TR><TD></TD><TH ALIGN=LEFT>Index Entry</TH><TH ALIGN=LEFT> Section</TH></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="cp_C"></A>C</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#SEC4">command editing</A></TD><TD valign=top><A HREF="readline.html#SEC4">1.2.1 Readline Bare Essentials</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="cp_E"></A>E</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#SEC4">editing command lines</A></TD><TD valign=top><A HREF="readline.html#SEC4">1.2.1 Readline Bare Essentials</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="cp_I"></A>I</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#SEC9">initialization file, readline</A></TD><TD valign=top><A HREF="readline.html#SEC9">1.3 Readline Init File</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#SEC3">interaction, readline</A></TD><TD valign=top><A HREF="readline.html#SEC3">1.2 Readline Interaction</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="cp_K"></A>K</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX3">kill ring</A></TD><TD valign=top><A HREF="readline.html#SEC6">1.2.3 Readline Killing Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX1">killing text</A></TD><TD valign=top><A HREF="readline.html#SEC6">1.2.3 Readline Killing Commands</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="cp_N"></A>N</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#SEC4">notation, readline</A></TD><TD valign=top><A HREF="readline.html#SEC4">1.2.1 Readline Bare Essentials</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="cp_R"></A>R</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX175">readline, function</A></TD><TD valign=top><A HREF="readline.html#SEC24">2.1 Basic Behavior</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="cp_V"></A>V</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX4">variables, readline</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="cp_Y"></A>Y</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX2">yanking text</A></TD><TD valign=top><A HREF="readline.html#SEC6">1.2.3 Readline Killing Commands</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-</TABLE><P></P><table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="readline.html#cp_C" style="text-decoration:none"><b>C</b></A>
- &nbsp;
-<A HREF="readline.html#cp_E" style="text-decoration:none"><b>E</b></A>
- &nbsp;
-<A HREF="readline.html#cp_I" style="text-decoration:none"><b>I</b></A>
- &nbsp;
-<A HREF="readline.html#cp_K" style="text-decoration:none"><b>K</b></A>
- &nbsp;
-<A HREF="readline.html#cp_N" style="text-decoration:none"><b>N</b></A>
- &nbsp;
-<A HREF="readline.html#cp_R" style="text-decoration:none"><b>R</b></A>
- &nbsp;
-<A HREF="readline.html#cp_V" style="text-decoration:none"><b>V</b></A>
- &nbsp;
-<A HREF="readline.html#cp_Y" style="text-decoration:none"><b>Y</b></A>
- &nbsp;
-</td></tr></table><br><P>
-
-<A NAME="Function and Variable Index"></A>
-<HR SIZE="6">
-<A NAME="SEC50"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1> Function and Variable Index </H1>
-<!--docid::SEC50::-->
-<table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="readline.html#fn__" style="text-decoration:none"><b>_</b></A>
- &nbsp;
-<BR>
-<A HREF="readline.html#fn_A" style="text-decoration:none"><b>A</b></A>
- &nbsp;
-<A HREF="readline.html#fn_B" style="text-decoration:none"><b>B</b></A>
- &nbsp;
-<A HREF="readline.html#fn_C" style="text-decoration:none"><b>C</b></A>
- &nbsp;
-<A HREF="readline.html#fn_D" style="text-decoration:none"><b>D</b></A>
- &nbsp;
-<A HREF="readline.html#fn_E" style="text-decoration:none"><b>E</b></A>
- &nbsp;
-<A HREF="readline.html#fn_F" style="text-decoration:none"><b>F</b></A>
- &nbsp;
-<A HREF="readline.html#fn_H" style="text-decoration:none"><b>H</b></A>
- &nbsp;
-<A HREF="readline.html#fn_I" style="text-decoration:none"><b>I</b></A>
- &nbsp;
-<A HREF="readline.html#fn_K" style="text-decoration:none"><b>K</b></A>
- &nbsp;
-<A HREF="readline.html#fn_M" style="text-decoration:none"><b>M</b></A>
- &nbsp;
-<A HREF="readline.html#fn_N" style="text-decoration:none"><b>N</b></A>
- &nbsp;
-<A HREF="readline.html#fn_O" style="text-decoration:none"><b>O</b></A>
- &nbsp;
-<A HREF="readline.html#fn_P" style="text-decoration:none"><b>P</b></A>
- &nbsp;
-<A HREF="readline.html#fn_Q" style="text-decoration:none"><b>Q</b></A>
- &nbsp;
-<A HREF="readline.html#fn_R" style="text-decoration:none"><b>R</b></A>
- &nbsp;
-<A HREF="readline.html#fn_S" style="text-decoration:none"><b>S</b></A>
- &nbsp;
-<A HREF="readline.html#fn_T" style="text-decoration:none"><b>T</b></A>
- &nbsp;
-<A HREF="readline.html#fn_U" style="text-decoration:none"><b>U</b></A>
- &nbsp;
-<A HREF="readline.html#fn_V" style="text-decoration:none"><b>V</b></A>
- &nbsp;
-<A HREF="readline.html#fn_Y" style="text-decoration:none"><b>Y</b></A>
- &nbsp;
-</td></tr></table><br><P></P>
-<TABLE border=0>
-<TR><TD></TD><TH ALIGN=LEFT>Index Entry</TH><TH ALIGN=LEFT> Section</TH></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn__"></A>_</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX278"><CODE>_rl_digit_p</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX281"><CODE>_rl_digit_value</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX277"><CODE>_rl_lowercase_p</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX280"><CODE>_rl_to_lower</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX279"><CODE>_rl_to_upper</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX276"><CODE>_rl_uppercase_p</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_A"></A>A</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX142"><CODE>abort (C-g)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX143"><CODE>abort (C-g)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX42"><CODE>accept-line (Newline or Return)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX43"><CODE>accept-line (Newline or Return)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_B"></A>B</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX32"><CODE>backward-char (C-b)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX33"><CODE>backward-char (C-b)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX70"><CODE>backward-delete-char (Rubout)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX71"><CODE>backward-delete-char (Rubout)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX94"><CODE>backward-kill-line (C-x Rubout)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX95"><CODE>backward-kill-line (C-x Rubout)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX102"><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX103"><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX36"><CODE>backward-word (M-b)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX37"><CODE>backward-word (M-b)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX48"><CODE>beginning-of-history (M-&#38;#60;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX49"><CODE>beginning-of-history (M-&#38;#60;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX26"><CODE>beginning-of-line (C-a)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX27"><CODE>beginning-of-line (C-a)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX5">bell-style</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_C"></A>C</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX138"><CODE>call-last-kbd-macro (C-x e)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX139"><CODE>call-last-kbd-macro (C-x e)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX88"><CODE>capitalize-word (M-c)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX89"><CODE>capitalize-word (M-c)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX158"><CODE>character-search (C-])</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX159"><CODE>character-search (C-])</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX160"><CODE>character-search-backward (M-C-])</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX161"><CODE>character-search-backward (M-C-])</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX38"><CODE>clear-screen (C-l)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX39"><CODE>clear-screen (C-l)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX6">comment-begin</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX124"><CODE>complete (<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX125"><CODE>complete (<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX7">completion-query-items</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX8">convert-meta</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX112"><CODE>copy-backward-word ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX113"><CODE>copy-backward-word ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX114"><CODE>copy-forward-word ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX115"><CODE>copy-forward-word ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX110"><CODE>copy-region-as-kill ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX111"><CODE>copy-region-as-kill ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_D"></A>D</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX68"><CODE>delete-char (C-d)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX69"><CODE>delete-char (C-d)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX132"><CODE>delete-char-or-list ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX133"><CODE>delete-char-or-list ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX106"><CODE>delete-horizontal-space ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX107"><CODE>delete-horizontal-space ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX120"><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, &#60;small&#62;...&#60;/small&#62; <KBD>M--</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX121"><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, &#60;small&#62;...&#60;/small&#62; <KBD>M--</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX9">disable-completion</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX144"><CODE>do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, &#60;small&#62;...&#60;/small&#62;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX145"><CODE>do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, &#60;small&#62;...&#60;/small&#62;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX86"><CODE>downcase-word (M-l)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX87"><CODE>downcase-word (M-l)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX164"><CODE>dump-functions ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX165"><CODE>dump-functions ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX168"><CODE>dump-macros ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX169"><CODE>dump-macros ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX166"><CODE>dump-variables ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX167"><CODE>dump-variables ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_E"></A>E</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX10">editing-mode</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX170"><CODE>emacs-editing-mode (C-e)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX171"><CODE>emacs-editing-mode (C-e)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX11">enable-keypad</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX136"><CODE>end-kbd-macro (C-x ))</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX137"><CODE>end-kbd-macro (C-x ))</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX50"><CODE>end-of-history (M-&#38;#62;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX51"><CODE>end-of-history (M-&#38;#62;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX28"><CODE>end-of-line (C-e)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX29"><CODE>end-of-line (C-e)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX156"><CODE>exchange-point-and-mark (C-x C-x)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX157"><CODE>exchange-point-and-mark (C-x C-x)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX12">expand-tilde</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_F"></A>F</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX72"><CODE>forward-backward-delete-char ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX73"><CODE>forward-backward-delete-char ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX30"><CODE>forward-char (C-f)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX31"><CODE>forward-char (C-f)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX54"><CODE>forward-search-history (C-s)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX55"><CODE>forward-search-history (C-s)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX34"><CODE>forward-word (M-f)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX35"><CODE>forward-word (M-f)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_H"></A>H</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX13">history-preserve-point</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX62"><CODE>history-search-backward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX63"><CODE>history-search-backward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX60"><CODE>history-search-forward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX61"><CODE>history-search-forward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX14">horizontal-scroll-mode</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_I"></A>I</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX15">input-meta</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX162"><CODE>insert-comment (M-#)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX163"><CODE>insert-comment (M-#)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX128"><CODE>insert-completions (M-*)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX129"><CODE>insert-completions (M-*)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX17">isearch-terminators</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_K"></A>K</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX18">keymap</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX92"><CODE>kill-line (C-k)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX93"><CODE>kill-line (C-k)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX108"><CODE>kill-region ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX109"><CODE>kill-region ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX98"><CODE>kill-whole-line ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX99"><CODE>kill-whole-line ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX100"><CODE>kill-word (M-d)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX101"><CODE>kill-word (M-d)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_M"></A>M</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX19">mark-modified-lines</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX20">mark-symlinked-directories</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX21">match-hidden-files</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX130"><CODE>menu-complete ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX131"><CODE>menu-complete ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX16">meta-flag</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_N"></A>N</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX46"><CODE>next-history (C-n)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX47"><CODE>next-history (C-n)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX58"><CODE>non-incremental-forward-search-history (M-n)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX59"><CODE>non-incremental-forward-search-history (M-n)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX56"><CODE>non-incremental-reverse-search-history (M-p)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX57"><CODE>non-incremental-reverse-search-history (M-p)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_O"></A>O</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX22">output-meta</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX90"><CODE>overwrite-mode ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX91"><CODE>overwrite-mode ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_P"></A>P</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX23">page-completions</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX126"><CODE>possible-completions (M-?)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX127"><CODE>possible-completions (M-?)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX146"><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX147"><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX44"><CODE>previous-history (C-p)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX45"><CODE>previous-history (C-p)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_Q"></A>Q</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX74"><CODE>quoted-insert (C-q or C-v)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX75"><CODE>quoted-insert (C-q or C-v)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_R"></A>R</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX140"><CODE>re-read-init-file (C-x C-r)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX141"><CODE>re-read-init-file (C-x C-r)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX174"><CODE>readline</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC24">2.1 Basic Behavior</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX40"><CODE>redraw-current-line ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX41"><CODE>redraw-current-line ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX52"><CODE>reverse-search-history (C-r)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX53"><CODE>reverse-search-history (C-r)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX150"><CODE>revert-line (M-r)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX151"><CODE>revert-line (M-r)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX209"><CODE>rl_add_defun</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC30">2.4.1 Naming a Function</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX235"><CODE>rl_add_funmap_entry</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX238"><CODE>rl_add_undo</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX274"><CODE>rl_alphabetic</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX186">rl_already_prompted</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX312">rl_attempted_completion_function</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX332">rl_attempted_completion_over</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX320">rl_basic_quote_characters</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX319">rl_basic_word_break_characters</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX236"><CODE>rl_begin_undo_group</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX218"><CODE>rl_bind_key</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX219"><CODE>rl_bind_key_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX203">rl_binding_keymap</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX288"><CODE>rl_callback_handler_install</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC41">2.4.12 Alternate Interface</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX290"><CODE>rl_callback_handler_remove</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC41">2.4.12 Alternate Interface</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX289"><CODE>rl_callback_read_char</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC41">2.4.12 Alternate Interface</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX291">rl_catch_signals</A></TD><TD valign=top><A HREF="readline.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX292">rl_catch_sigwinch</A></TD><TD valign=top><A HREF="readline.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX315">rl_char_is_quoted_p</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX293"><CODE>rl_cleanup_after_signal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX250"><CODE>rl_clear_message</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX264"><CODE>rl_clear_pending_input</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX300"><CODE>rl_clear_signals</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX301"><CODE>rl_complete</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC45">2.6.1 How Completing Works</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX304"><CODE>rl_complete</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC46">2.6.2 Completion Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX303"><CODE>rl_complete_internal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC46">2.6.2 Completion Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX322">rl_completer_quote_characters</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX321">rl_completer_word_break_characters</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX326">rl_completion_append_character</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX318">rl_completion_display_matches_hook</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX302">rl_completion_entry_function</A></TD><TD valign=top><A HREF="readline.html#SEC45">2.6.1 How Completing Works</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX311">rl_completion_entry_function</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX328">rl_completion_mark_symlink_dirs</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX308"><CODE>rl_completion_matches</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC46">2.6.2 Completion Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX307"><CODE>rl_completion_mode</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC46">2.6.2 Completion Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX325">rl_completion_query_items</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX327">rl_completion_suppress_append</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX333">rl_completion_type</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX211"><CODE>rl_copy_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX257"><CODE>rl_copy_text</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX247"><CODE>rl_crlf</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX256"><CODE>rl_delete_text</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX201">rl_deprep_term_function</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX267"><CODE>rl_deprep_terminal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX273"><CODE>rl_ding</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX317">rl_directory_completion_hook</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX213"><CODE>rl_discard_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX183">rl_dispatching</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX275"><CODE>rl_display_match_list</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX240"><CODE>rl_do_undo</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX180">rl_done</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX208">rl_editing_mode</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX178">rl_end</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX237"><CODE>rl_end_undo_group</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX184">rl_erase_empty_line</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX197">rl_event_hook</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX263"><CODE>rl_execute_next</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX202">rl_executing_keymap</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX204">rl_executing_macro</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX253"><CODE>rl_expand_prompt</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX206">rl_explicit_arg</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX271"><CODE>rl_extend_line_buffer</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX330">rl_filename_completion_desired</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX309"><CODE>rl_filename_completion_function</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC46">2.6.2 Completion Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX314">rl_filename_dequoting_function</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX323">rl_filename_quote_characters</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX331">rl_filename_quoting_desired</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX313">rl_filename_quoting_function</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX243"><CODE>rl_forced_update_display</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX294"><CODE>rl_free_line_state</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX239"><CODE>rl_free_undo_list</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX232"><CODE>rl_function_dumper</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX229"><CODE>rl_function_of_keyseq</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX234"><CODE>rl_funmap_names</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX225"><CODE>rl_generic_bind</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX214"><CODE>rl_get_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX216"><CODE>rl_get_keymap_by_name</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX217"><CODE>rl_get_keymap_name</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX298"><CODE>rl_get_screen_size</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX287"><CODE>rl_get_termcap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX261"><CODE>rl_getc</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX198">rl_getc_function</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX189">rl_gnu_readline_p</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX329">rl_ignore_completion_duplicates</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX316">rl_ignore_some_completions_function</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX334">rl_inhibit_completion</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX272"><CODE>rl_initialize</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX306"><CODE>rl_insert_completions</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC46">2.6.2 Completion Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX255"><CODE>rl_insert_text</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX192">rl_instream</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX230"><CODE>rl_invoking_keyseqs</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX231"><CODE>rl_invoking_keyseqs_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX258"><CODE>rl_kill_text</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX194">rl_last_func</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX187">rl_library_version</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX176">rl_line_buffer</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX233"><CODE>rl_list_funmap_names</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX282"><CODE>rl_macro_bind</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX283"><CODE>rl_macro_dumper</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX210"><CODE>rl_make_bare_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX212"><CODE>rl_make_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX179">rl_mark</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX249"><CODE>rl_message</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX241"><CODE>rl_modifying</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX228"><CODE>rl_named_function</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX181">rl_num_chars_to_read</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX207">rl_numeric_arg</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX244"><CODE>rl_on_new_line</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX245"><CODE>rl_on_new_line_with_prompt</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX193">rl_outstream</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX226"><CODE>rl_parse_and_bind</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX182">rl_pending_input</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX177">rl_point</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX305"><CODE>rl_possible_completions</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC46">2.6.2 Completion Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX196">rl_pre_input_hook</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX200">rl_prep_term_function</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX266"><CODE>rl_prep_terminal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX185">rl_prompt</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX259"><CODE>rl_push_macro_input</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX227"><CODE>rl_read_init_file</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX260"><CODE>rl_read_key</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX191">rl_readline_name</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX205">rl_readline_state</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX188">rl_readline_version</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX242"><CODE>rl_redisplay</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX199">rl_redisplay_function</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX270"><CODE>rl_replace_line</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX295"><CODE>rl_reset_after_signal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX246"><CODE>rl_reset_line_state</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX269"><CODE>rl_reset_terminal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX296"><CODE>rl_resize_terminal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX252"><CODE>rl_restore_prompt</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX251"><CODE>rl_save_prompt</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX224"><CODE>rl_set_key</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX265"><CODE>rl_set_keyboard_input_timeout</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX215"><CODE>rl_set_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX286"><CODE>rl_set_paren_blink_timeout</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX254"><CODE>rl_set_prompt</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX297"><CODE>rl_set_screen_size</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX299"><CODE>rl_set_signals</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX248"><CODE>rl_show_char</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX324">rl_special_prefixes</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX195">rl_startup_hook</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX262"><CODE>rl_stuff_char</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX190">rl_terminal_name</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX268"><CODE>rl_tty_set_default_bindings</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX223"><CODE>rl_unbind_command_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX222"><CODE>rl_unbind_function_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX220"><CODE>rl_unbind_key</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX221"><CODE>rl_unbind_key_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX310"><CODE>rl_username_completion_function</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC46">2.6.2 Completion Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX284"><CODE>rl_variable_bind</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX285"><CODE>rl_variable_dumper</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_S"></A>S</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX78"><CODE>self-insert (a, b, A, 1, !, &#60;small&#62;...&#60;/small&#62;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX79"><CODE>self-insert (a, b, A, 1, !, &#60;small&#62;...&#60;/small&#62;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX154"><CODE>set-mark (C-@)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX155"><CODE>set-mark (C-@)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX24">show-all-if-ambiguous</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX134"><CODE>start-kbd-macro (C-x ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX135"><CODE>start-kbd-macro (C-x ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_T"></A>T</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX76"><CODE>tab-insert (M-<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX77"><CODE>tab-insert (M-<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX152"><CODE>tilde-expand (M-~)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX153"><CODE>tilde-expand (M-~)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX80"><CODE>transpose-chars (C-t)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX81"><CODE>transpose-chars (C-t)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX82"><CODE>transpose-words (M-t)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX83"><CODE>transpose-words (M-t)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_U"></A>U</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX148"><CODE>undo (C-_ or C-x C-u)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX149"><CODE>undo (C-_ or C-x C-u)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX122"><CODE>universal-argument ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX123"><CODE>universal-argument ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX96"><CODE>unix-line-discard (C-u)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX97"><CODE>unix-line-discard (C-u)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX104"><CODE>unix-word-rubout (C-w)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX105"><CODE>unix-word-rubout (C-w)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX84"><CODE>upcase-word (M-u)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX85"><CODE>upcase-word (M-u)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_V"></A>V</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX172"><CODE>vi-editing-mode (M-C-j)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX173"><CODE>vi-editing-mode (M-C-j)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX25">visible-stats</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_Y"></A>Y</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX116"><CODE>yank (C-y)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX117"><CODE>yank (C-y)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX66"><CODE>yank-last-arg (M-. or M-_)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX67"><CODE>yank-last-arg (M-. or M-_)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX64"><CODE>yank-nth-arg (M-C-y)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX65"><CODE>yank-nth-arg (M-C-y)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX118"><CODE>yank-pop (M-y)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX119"><CODE>yank-pop (M-y)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-</TABLE><P></P><table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="readline.html#fn__" style="text-decoration:none"><b>_</b></A>
- &nbsp;
-<BR>
-<A HREF="readline.html#fn_A" style="text-decoration:none"><b>A</b></A>
- &nbsp;
-<A HREF="readline.html#fn_B" style="text-decoration:none"><b>B</b></A>
- &nbsp;
-<A HREF="readline.html#fn_C" style="text-decoration:none"><b>C</b></A>
- &nbsp;
-<A HREF="readline.html#fn_D" style="text-decoration:none"><b>D</b></A>
- &nbsp;
-<A HREF="readline.html#fn_E" style="text-decoration:none"><b>E</b></A>
- &nbsp;
-<A HREF="readline.html#fn_F" style="text-decoration:none"><b>F</b></A>
- &nbsp;
-<A HREF="readline.html#fn_H" style="text-decoration:none"><b>H</b></A>
- &nbsp;
-<A HREF="readline.html#fn_I" style="text-decoration:none"><b>I</b></A>
- &nbsp;
-<A HREF="readline.html#fn_K" style="text-decoration:none"><b>K</b></A>
- &nbsp;
-<A HREF="readline.html#fn_M" style="text-decoration:none"><b>M</b></A>
- &nbsp;
-<A HREF="readline.html#fn_N" style="text-decoration:none"><b>N</b></A>
- &nbsp;
-<A HREF="readline.html#fn_O" style="text-decoration:none"><b>O</b></A>
- &nbsp;
-<A HREF="readline.html#fn_P" style="text-decoration:none"><b>P</b></A>
- &nbsp;
-<A HREF="readline.html#fn_Q" style="text-decoration:none"><b>Q</b></A>
- &nbsp;
-<A HREF="readline.html#fn_R" style="text-decoration:none"><b>R</b></A>
- &nbsp;
-<A HREF="readline.html#fn_S" style="text-decoration:none"><b>S</b></A>
- &nbsp;
-<A HREF="readline.html#fn_T" style="text-decoration:none"><b>T</b></A>
- &nbsp;
-<A HREF="readline.html#fn_U" style="text-decoration:none"><b>U</b></A>
- &nbsp;
-<A HREF="readline.html#fn_V" style="text-decoration:none"><b>V</b></A>
- &nbsp;
-<A HREF="readline.html#fn_Y" style="text-decoration:none"><b>Y</b></A>
- &nbsp;
-</td></tr></table><br><P>
-
-<HR SIZE="6">
-<A NAME="SEC_Contents"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1>Table of Contents</H1>
-<UL>
-<A NAME="TOC1" HREF="readline.html#SEC1">1. Command Line Editing</A>
-<BR>
-<UL>
-<A NAME="TOC2" HREF="readline.html#SEC2">1.1 Introduction to Line Editing</A>
-<BR>
-<A NAME="TOC3" HREF="readline.html#SEC3">1.2 Readline Interaction</A>
-<BR>
-<UL>
-<A NAME="TOC4" HREF="readline.html#SEC4">1.2.1 Readline Bare Essentials</A>
-<BR>
-<A NAME="TOC5" HREF="readline.html#SEC5">1.2.2 Readline Movement Commands</A>
-<BR>
-<A NAME="TOC6" HREF="readline.html#SEC6">1.2.3 Readline Killing Commands</A>
-<BR>
-<A NAME="TOC7" HREF="readline.html#SEC7">1.2.4 Readline Arguments</A>
-<BR>
-<A NAME="TOC8" HREF="readline.html#SEC8">1.2.5 Searching for Commands in the History</A>
-<BR>
-</UL>
-<A NAME="TOC9" HREF="readline.html#SEC9">1.3 Readline Init File</A>
-<BR>
-<UL>
-<A NAME="TOC10" HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A>
-<BR>
-<A NAME="TOC11" HREF="readline.html#SEC11">1.3.2 Conditional Init Constructs</A>
-<BR>
-<A NAME="TOC12" HREF="readline.html#SEC12">1.3.3 Sample Init File</A>
-<BR>
-</UL>
-<A NAME="TOC13" HREF="readline.html#SEC13">1.4 Bindable Readline Commands</A>
-<BR>
-<UL>
-<A NAME="TOC14" HREF="readline.html#SEC14">1.4.1 Commands For Moving</A>
-<BR>
-<A NAME="TOC15" HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A>
-<BR>
-<A NAME="TOC16" HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A>
-<BR>
-<A NAME="TOC17" HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A>
-<BR>
-<A NAME="TOC18" HREF="readline.html#SEC18">1.4.5 Specifying Numeric Arguments</A>
-<BR>
-<A NAME="TOC19" HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A>
-<BR>
-<A NAME="TOC20" HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A>
-<BR>
-<A NAME="TOC21" HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A>
-<BR>
-</UL>
-<A NAME="TOC22" HREF="readline.html#SEC22">1.5 Readline vi Mode</A>
-<BR>
-</UL>
-<A NAME="TOC23" HREF="readline.html#SEC23">2. Programming with GNU Readline</A>
-<BR>
-<UL>
-<A NAME="TOC24" HREF="readline.html#SEC24">2.1 Basic Behavior</A>
-<BR>
-<A NAME="TOC25" HREF="readline.html#SEC25">2.2 Custom Functions</A>
-<BR>
-<UL>
-<A NAME="TOC26" HREF="readline.html#SEC26">2.2.1 Readline Typedefs</A>
-<BR>
-<A NAME="TOC27" HREF="readline.html#SEC27">2.2.2 Writing a New Function</A>
-<BR>
-</UL>
-<A NAME="TOC28" HREF="readline.html#SEC28">2.3 Readline Variables</A>
-<BR>
-<A NAME="TOC29" HREF="readline.html#SEC29">2.4 Readline Convenience Functions</A>
-<BR>
-<UL>
-<A NAME="TOC30" HREF="readline.html#SEC30">2.4.1 Naming a Function</A>
-<BR>
-<A NAME="TOC31" HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A>
-<BR>
-<A NAME="TOC32" HREF="readline.html#SEC32">2.4.3 Binding Keys</A>
-<BR>
-<A NAME="TOC33" HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A>
-<BR>
-<A NAME="TOC34" HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A>
-<BR>
-<A NAME="TOC35" HREF="readline.html#SEC35">2.4.6 Redisplay</A>
-<BR>
-<A NAME="TOC36" HREF="readline.html#SEC36">2.4.7 Modifying Text</A>
-<BR>
-<A NAME="TOC37" HREF="readline.html#SEC37">2.4.8 Character Input</A>
-<BR>
-<A NAME="TOC38" HREF="readline.html#SEC38">2.4.9 Terminal Management</A>
-<BR>
-<A NAME="TOC39" HREF="readline.html#SEC39">2.4.10 Utility Functions</A>
-<BR>
-<A NAME="TOC40" HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A>
-<BR>
-<A NAME="TOC41" HREF="readline.html#SEC41">2.4.12 Alternate Interface</A>
-<BR>
-<A NAME="TOC42" HREF="readline.html#SEC42">2.4.13 A Readline Example</A>
-<BR>
-</UL>
-<A NAME="TOC43" HREF="readline.html#SEC43">2.5 Readline Signal Handling</A>
-<BR>
-<A NAME="TOC44" HREF="readline.html#SEC44">2.6 Custom Completers</A>
-<BR>
-<UL>
-<A NAME="TOC45" HREF="readline.html#SEC45">2.6.1 How Completing Works</A>
-<BR>
-<A NAME="TOC46" HREF="readline.html#SEC46">2.6.2 Completion Functions</A>
-<BR>
-<A NAME="TOC47" HREF="readline.html#SEC47">2.6.3 Completion Variables</A>
-<BR>
-<A NAME="TOC48" HREF="readline.html#SEC48">2.6.4 A Short Completion Example</A>
-<BR>
-</UL>
-</UL>
-<A NAME="TOC49" HREF="readline.html#SEC49">Concept Index</A>
-<BR>
-<A NAME="TOC50" HREF="readline.html#SEC50">Function and Variable Index</A>
-<BR>
-</UL>
-<HR SIZE=1>
-<A NAME="SEC_OVERVIEW"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1>Short Table of Contents</H1>
-<BLOCKQUOTE>
-<A NAME="TOC1" HREF="readline.html#SEC1">1. Command Line Editing</A>
-<BR>
-<A NAME="TOC23" HREF="readline.html#SEC23">2. Programming with GNU Readline</A>
-<BR>
-<A NAME="TOC49" HREF="readline.html#SEC49">Concept Index</A>
-<BR>
-<A NAME="TOC50" HREF="readline.html#SEC50">Function and Variable Index</A>
-<BR>
-
-</BLOCKQUOTE>
-<HR SIZE=1>
-<A NAME="SEC_About"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1>About this document</H1>
-This document was generated by <I>Chet Ramey</I> on <I>June, 27 2002</I>
-using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
-"><I>texi2html</I></A>
-<P></P>
-The buttons in the navigation panels have the following meaning:
-<P></P>
-<table border = "1">
-<TR>
-<TH> Button </TH>
-<TH> Name </TH>
-<TH> Go to </TH>
-<TH> From 1.2.3 go to</TH>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ &lt; ] </TD>
-<TD ALIGN="CENTER">
-Back
-</TD>
-<TD>
-previous section in reading order
-</TD>
-<TD>
-1.2.2
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ &gt; ] </TD>
-<TD ALIGN="CENTER">
-Forward
-</TD>
-<TD>
-next section in reading order
-</TD>
-<TD>
-1.2.4
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ &lt;&lt; ] </TD>
-<TD ALIGN="CENTER">
-FastBack
-</TD>
-<TD>
-previous or up-and-previous section
-</TD>
-<TD>
-1.1
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ Up ] </TD>
-<TD ALIGN="CENTER">
-Up
-</TD>
-<TD>
-up section
-</TD>
-<TD>
-1.2
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ &gt;&gt; ] </TD>
-<TD ALIGN="CENTER">
-FastForward
-</TD>
-<TD>
-next or up-and-next section
-</TD>
-<TD>
-1.3
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [Top] </TD>
-<TD ALIGN="CENTER">
-Top
-</TD>
-<TD>
-cover (top) of document
-</TD>
-<TD>
- &nbsp;
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [Contents] </TD>
-<TD ALIGN="CENTER">
-Contents
-</TD>
-<TD>
-table of contents
-</TD>
-<TD>
- &nbsp;
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [Index] </TD>
-<TD ALIGN="CENTER">
-Index
-</TD>
-<TD>
-concept index
-</TD>
-<TD>
- &nbsp;
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ ? ] </TD>
-<TD ALIGN="CENTER">
-About
-</TD>
-<TD>
-this page
-</TD>
-<TD>
- &nbsp;
-</TD>
-</TR>
-</TABLE>
-<P></P>
-where the <STRONG> Example </STRONG> assumes that the current position
-is at <STRONG> Subsubsection One-Two-Three </STRONG> of a document of
-the following structure:
-<UL>
-<LI> 1. Section One </LI>
-<UL>
-<LI>1.1 Subsection One-One</LI>
-<UL>
-<LI> ... </LI>
-</UL>
-<LI>1.2 Subsection One-Two</LI>
-<UL>
-<LI>1.2.1 Subsubsection One-Two-One
-</LI><LI>1.2.2 Subsubsection One-Two-Two
-</LI><LI>1.2.3 Subsubsection One-Two-Three &nbsp; &nbsp; <STRONG>
-&lt;== Current Position </STRONG>
-</LI><LI>1.2.4 Subsubsection One-Two-Four
-</LI></UL>
-<LI>1.3 Subsection One-Three</LI>
-<UL>
-<LI> ... </LI>
-</UL>
-<LI>1.4 Subsection One-Four</LI>
-</UL>
-</UL>
-
-<HR SIZE=1>
-<BR>
-<FONT SIZE="-1">
-This document was generated
-by <I>Chet Ramey</I> on <I>June, 27 2002</I>
-using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
-"><I>texi2html</I></A>
-
-</BODY>
-</HTML>
diff --git a/readline-4.3.orig/doc/readline.info b/readline-4.3.orig/doc/readline.info
deleted file mode 100644
index 57dbdfa..0000000
--- a/readline-4.3.orig/doc/readline.info
+++ /dev/null
@@ -1,3638 +0,0 @@
-This is readline.info, produced by makeinfo version 4.1 from
-/usr/homes/chet/src/bash/readline-src/doc/rlman.texinfo.
-
-INFO-DIR-SECTION Libraries
-START-INFO-DIR-ENTRY
-* Readline: (readline). The GNU readline library API
-END-INFO-DIR-ENTRY
-
- This document describes the GNU Readline Library, a utility which
-aids in the consistency of user interface across discrete programs that
-need to provide a command line interface.
-
- Copyright (C) 1988-2002 Free Software Foundation, Inc.
-
- Permission is granted to make and distribute verbatim copies of this
-manual provided the copyright notice and this permission notice pare
-preserved on all copies.
-
- Permission is granted to copy and distribute modified versions of
-this manual under the conditions for verbatim copying, provided that
-the entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
- Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be stated in a
-translation approved by the Free Software Foundation.
-
-
-File: readline.info, Node: Top, Next: Command Line Editing, Up: (dir)
-
-GNU Readline Library
-********************
-
- This document describes the GNU Readline Library, a utility which
-aids in the consistency of user interface across discrete programs that
-need to provide a command line interface.
-
-* Menu:
-
-* Command Line Editing:: GNU Readline User's Manual.
-* Programming with GNU Readline:: GNU Readline Programmer's Manual.
-* Concept Index:: Index of concepts described in this manual.
-* Function and Variable Index:: Index of externally visible functions
- and variables.
-
-
-File: readline.info, Node: Command Line Editing, Next: Programming with GNU Readline, Prev: Top, Up: Top
-
-Command Line Editing
-********************
-
- This chapter describes the basic features of the GNU command line
-editing interface.
-
-* Menu:
-
-* Introduction and Notation:: Notation used in this text.
-* Readline Interaction:: The minimum set of commands for editing a line.
-* Readline Init File:: Customizing Readline from a user's view.
-* Bindable Readline Commands:: A description of most of the Readline commands
- available for binding
-* Readline vi Mode:: A short description of how to make Readline
- behave like the vi editor.
-
-
-File: readline.info, Node: Introduction and Notation, Next: Readline Interaction, Up: Command Line Editing
-
-Introduction to Line Editing
-============================
-
- The following paragraphs describe the notation used to represent
-keystrokes.
-
- The text `C-k' is read as `Control-K' and describes the character
-produced when the <k> key is pressed while the Control key is depressed.
-
- The text `M-k' is read as `Meta-K' and describes the character
-produced when the Meta key (if you have one) is depressed, and the <k>
-key is pressed. The Meta key is labeled <ALT> on many keyboards. On
-keyboards with two keys labeled <ALT> (usually to either side of the
-space bar), the <ALT> on the left side is generally set to work as a
-Meta key. The <ALT> key on the right may also be configured to work as
-a Meta key or may be configured as some other modifier, such as a
-Compose key for typing accented characters.
-
- If you do not have a Meta or <ALT> key, or another key working as a
-Meta key, the identical keystroke can be generated by typing <ESC>
-_first_, and then typing <k>. Either process is known as "metafying"
-the <k> key.
-
- The text `M-C-k' is read as `Meta-Control-k' and describes the
-character produced by "metafying" `C-k'.
-
- In addition, several keys have their own names. Specifically,
-<DEL>, <ESC>, <LFD>, <SPC>, <RET>, and <TAB> all stand for themselves
-when seen in this text, or in an init file (*note Readline Init File::).
-If your keyboard lacks a <LFD> key, typing <C-j> will produce the
-desired character. The <RET> key may be labeled <Return> or <Enter> on
-some keyboards.
-
-
-File: readline.info, Node: Readline Interaction, Next: Readline Init File, Prev: Introduction and Notation, Up: Command Line Editing
-
-Readline Interaction
-====================
-
- Often during an interactive session you type in a long line of text,
-only to notice that the first word on the line is misspelled. The
-Readline library gives you a set of commands for manipulating the text
-as you type it in, allowing you to just fix your typo, and not forcing
-you to retype the majority of the line. Using these editing commands,
-you move the cursor to the place that needs correction, and delete or
-insert the text of the corrections. Then, when you are satisfied with
-the line, you simply press <RET>. You do not have to be at the end of
-the line to press <RET>; the entire line is accepted regardless of the
-location of the cursor within the line.
-
-* Menu:
-
-* Readline Bare Essentials:: The least you need to know about Readline.
-* Readline Movement Commands:: Moving about the input line.
-* Readline Killing Commands:: How to delete text, and how to get it back!
-* Readline Arguments:: Giving numeric arguments to commands.
-* Searching:: Searching through previous lines.
-
-
-File: readline.info, Node: Readline Bare Essentials, Next: Readline Movement Commands, Up: Readline Interaction
-
-Readline Bare Essentials
-------------------------
-
- In order to enter characters into the line, simply type them. The
-typed character appears where the cursor was, and then the cursor moves
-one space to the right. If you mistype a character, you can use your
-erase character to back up and delete the mistyped character.
-
- Sometimes you may mistype a character, and not notice the error
-until you have typed several other characters. In that case, you can
-type `C-b' to move the cursor to the left, and then correct your
-mistake. Afterwards, you can move the cursor to the right with `C-f'.
-
- When you add text in the middle of a line, you will notice that
-characters to the right of the cursor are `pushed over' to make room
-for the text that you have inserted. Likewise, when you delete text
-behind the cursor, characters to the right of the cursor are `pulled
-back' to fill in the blank space created by the removal of the text. A
-list of the bare essentials for editing the text of an input line
-follows.
-
-`C-b'
- Move back one character.
-
-`C-f'
- Move forward one character.
-
-<DEL> or <Backspace>
- Delete the character to the left of the cursor.
-
-`C-d'
- Delete the character underneath the cursor.
-
-Printing characters
- Insert the character into the line at the cursor.
-
-`C-_' or `C-x C-u'
- Undo the last editing command. You can undo all the way back to an
- empty line.
-
-(Depending on your configuration, the <Backspace> key be set to delete
-the character to the left of the cursor and the <DEL> key set to delete
-the character underneath the cursor, like `C-d', rather than the
-character to the left of the cursor.)
-
-
-File: readline.info, Node: Readline Movement Commands, Next: Readline Killing Commands, Prev: Readline Bare Essentials, Up: Readline Interaction
-
-Readline Movement Commands
---------------------------
-
- The above table describes the most basic keystrokes that you need in
-order to do editing of the input line. For your convenience, many
-other commands have been added in addition to `C-b', `C-f', `C-d', and
-<DEL>. Here are some commands for moving more rapidly about the line.
-
-`C-a'
- Move to the start of the line.
-
-`C-e'
- Move to the end of the line.
-
-`M-f'
- Move forward a word, where a word is composed of letters and
- digits.
-
-`M-b'
- Move backward a word.
-
-`C-l'
- Clear the screen, reprinting the current line at the top.
-
- Notice how `C-f' moves forward a character, while `M-f' moves
-forward a word. It is a loose convention that control keystrokes
-operate on characters while meta keystrokes operate on words.
-
-
-File: readline.info, Node: Readline Killing Commands, Next: Readline Arguments, Prev: Readline Movement Commands, Up: Readline Interaction
-
-Readline Killing Commands
--------------------------
-
- "Killing" text means to delete the text from the line, but to save
-it away for later use, usually by "yanking" (re-inserting) it back into
-the line. (`Cut' and `paste' are more recent jargon for `kill' and
-`yank'.)
-
- If the description for a command says that it `kills' text, then you
-can be sure that you can get the text back in a different (or the same)
-place later.
-
- When you use a kill command, the text is saved in a "kill-ring".
-Any number of consecutive kills save all of the killed text together, so
-that when you yank it back, you get it all. The kill ring is not line
-specific; the text that you killed on a previously typed line is
-available to be yanked back later, when you are typing another line.
-
- Here is the list of commands for killing text.
-
-`C-k'
- Kill the text from the current cursor position to the end of the
- line.
-
-`M-d'
- Kill from the cursor to the end of the current word, or, if between
- words, to the end of the next word. Word boundaries are the same
- as those used by `M-f'.
-
-`M-<DEL>'
- Kill from the cursor the start of the current word, or, if between
- words, to the start of the previous word. Word boundaries are the
- same as those used by `M-b'.
-
-`C-w'
- Kill from the cursor to the previous whitespace. This is
- different than `M-<DEL>' because the word boundaries differ.
-
- Here is how to "yank" the text back into the line. Yanking means to
-copy the most-recently-killed text from the kill buffer.
-
-`C-y'
- Yank the most recently killed text back into the buffer at the
- cursor.
-
-`M-y'
- Rotate the kill-ring, and yank the new top. You can only do this
- if the prior command is `C-y' or `M-y'.
-
-
-File: readline.info, Node: Readline Arguments, Next: Searching, Prev: Readline Killing Commands, Up: Readline Interaction
-
-Readline Arguments
-------------------
-
- You can pass numeric arguments to Readline commands. Sometimes the
-argument acts as a repeat count, other times it is the sign of the
-argument that is significant. If you pass a negative argument to a
-command which normally acts in a forward direction, that command will
-act in a backward direction. For example, to kill text back to the
-start of the line, you might type `M-- C-k'.
-
- The general way to pass numeric arguments to a command is to type
-meta digits before the command. If the first `digit' typed is a minus
-sign (`-'), then the sign of the argument will be negative. Once you
-have typed one meta digit to get the argument started, you can type the
-remainder of the digits, and then the command. For example, to give
-the `C-d' command an argument of 10, you could type `M-1 0 C-d', which
-will delete the next ten characters on the input line.
-
-
-File: readline.info, Node: Searching, Prev: Readline Arguments, Up: Readline Interaction
-
-Searching for Commands in the History
--------------------------------------
-
- Readline provides commands for searching through the command history
-for lines containing a specified string. There are two search modes:
-"incremental" and "non-incremental".
-
- Incremental searches begin before the user has finished typing the
-search string. As each character of the search string is typed,
-Readline displays the next entry from the history matching the string
-typed so far. An incremental search requires only as many characters
-as needed to find the desired history entry. To search backward in the
-history for a particular string, type `C-r'. Typing `C-s' searches
-forward through the history. The characters present in the value of
-the `isearch-terminators' variable are used to terminate an incremental
-search. If that variable has not been assigned a value, the <ESC> and
-`C-J' characters will terminate an incremental search. `C-g' will
-abort an incremental search and restore the original line. When the
-search is terminated, the history entry containing the search string
-becomes the current line.
-
- To find other matching entries in the history list, type `C-r' or
-`C-s' as appropriate. This will search backward or forward in the
-history for the next entry matching the search string typed so far.
-Any other key sequence bound to a Readline command will terminate the
-search and execute that command. For instance, a <RET> will terminate
-the search and accept the line, thereby executing the command from the
-history list. A movement command will terminate the search, make the
-last line found the current line, and begin editing.
-
- Readline remembers the last incremental search string. If two
-`C-r's are typed without any intervening characters defining a new
-search string, any remembered search string is used.
-
- Non-incremental searches read the entire search string before
-starting to search for matching history lines. The search string may be
-typed by the user or be part of the contents of the current line.
-
-
-File: readline.info, Node: Readline Init File, Next: Bindable Readline Commands, Prev: Readline Interaction, Up: Command Line Editing
-
-Readline Init File
-==================
-
- Although the Readline library comes with a set of Emacs-like
-keybindings installed by default, it is possible to use a different set
-of keybindings. Any user can customize programs that use Readline by
-putting commands in an "inputrc" file, conventionally in his home
-directory. The name of this file is taken from the value of the
-environment variable `INPUTRC'. If that variable is unset, the default
-is `~/.inputrc'.
-
- When a program which uses the Readline library starts up, the init
-file is read, and the key bindings are set.
-
- In addition, the `C-x C-r' command re-reads this init file, thus
-incorporating any changes that you might have made to it.
-
-* Menu:
-
-* Readline Init File Syntax:: Syntax for the commands in the inputrc file.
-
-* Conditional Init Constructs:: Conditional key bindings in the inputrc file.
-
-* Sample Init File:: An example inputrc file.
-
-
-File: readline.info, Node: Readline Init File Syntax, Next: Conditional Init Constructs, Up: Readline Init File
-
-Readline Init File Syntax
--------------------------
-
- There are only a few basic constructs allowed in the Readline init
-file. Blank lines are ignored. Lines beginning with a `#' are
-comments. Lines beginning with a `$' indicate conditional constructs
-(*note Conditional Init Constructs::). Other lines denote variable
-settings and key bindings.
-
-Variable Settings
- You can modify the run-time behavior of Readline by altering the
- values of variables in Readline using the `set' command within the
- init file. The syntax is simple:
-
- set VARIABLE VALUE
-
- Here, for example, is how to change from the default Emacs-like
- key binding to use `vi' line editing commands:
-
- set editing-mode vi
-
- Variable names and values, where appropriate, are recognized
- without regard to case.
-
- A great deal of run-time behavior is changeable with the following
- variables.
-
- `bell-style'
- Controls what happens when Readline wants to ring the
- terminal bell. If set to `none', Readline never rings the
- bell. If set to `visible', Readline uses a visible bell if
- one is available. If set to `audible' (the default),
- Readline attempts to ring the terminal's bell.
-
- `comment-begin'
- The string to insert at the beginning of the line when the
- `insert-comment' command is executed. The default value is
- `"#"'.
-
- `completion-ignore-case'
- If set to `on', Readline performs filename matching and
- completion in a case-insensitive fashion. The default value
- is `off'.
-
- `completion-query-items'
- The number of possible completions that determines when the
- user is asked whether he wants to see the list of
- possibilities. If the number of possible completions is
- greater than this value, Readline will ask the user whether
- or not he wishes to view them; otherwise, they are simply
- listed. This variable must be set to an integer value
- greater than or equal to 0. The default limit is `100'.
-
- `convert-meta'
- If set to `on', Readline will convert characters with the
- eighth bit set to an ASCII key sequence by stripping the
- eighth bit and prefixing an <ESC> character, converting them
- to a meta-prefixed key sequence. The default value is `on'.
-
- `disable-completion'
- If set to `On', Readline will inhibit word completion.
- Completion characters will be inserted into the line as if
- they had been mapped to `self-insert'. The default is `off'.
-
- `editing-mode'
- The `editing-mode' variable controls which default set of key
- bindings is used. By default, Readline starts up in Emacs
- editing mode, where the keystrokes are most similar to Emacs.
- This variable can be set to either `emacs' or `vi'.
-
- `enable-keypad'
- When set to `on', Readline will try to enable the application
- keypad when it is called. Some systems need this to enable
- the arrow keys. The default is `off'.
-
- `expand-tilde'
- If set to `on', tilde expansion is performed when Readline
- attempts word completion. The default is `off'.
-
- If set to `on', the history code attempts to place point at
- the same location on each history line retrived with
- `previous-history' or `next-history'.
-
- `horizontal-scroll-mode'
- This variable can be set to either `on' or `off'. Setting it
- to `on' means that the text of the lines being edited will
- scroll horizontally on a single screen line when they are
- longer than the width of the screen, instead of wrapping onto
- a new screen line. By default, this variable is set to `off'.
-
- `input-meta'
- If set to `on', Readline will enable eight-bit input (it will
- not clear the eighth bit in the characters it reads),
- regardless of what the terminal claims it can support. The
- default value is `off'. The name `meta-flag' is a synonym
- for this variable.
-
- `isearch-terminators'
- The string of characters that should terminate an incremental
- search without subsequently executing the character as a
- command (*note Searching::). If this variable has not been
- given a value, the characters <ESC> and `C-J' will terminate
- an incremental search.
-
- `keymap'
- Sets Readline's idea of the current keymap for key binding
- commands. Acceptable `keymap' names are `emacs',
- `emacs-standard', `emacs-meta', `emacs-ctlx', `vi', `vi-move',
- `vi-command', and `vi-insert'. `vi' is equivalent to
- `vi-command'; `emacs' is equivalent to `emacs-standard'. The
- default value is `emacs'. The value of the `editing-mode'
- variable also affects the default keymap.
-
- `mark-directories'
- If set to `on', completed directory names have a slash
- appended. The default is `on'.
-
- `mark-modified-lines'
- This variable, when set to `on', causes Readline to display an
- asterisk (`*') at the start of history lines which have been
- modified. This variable is `off' by default.
-
- `mark-symlinked-directories'
- If set to `on', completed names which are symbolic links to
- directories have a slash appended (subject to the value of
- `mark-directories'). The default is `off'.
-
- `match-hidden-files'
- This variable, when set to `on', causes Readline to match
- files whose names begin with a `.' (hidden files) when
- performing filename completion, unless the leading `.' is
- supplied by the user in the filename to be completed. This
- variable is `on' by default.
-
- `output-meta'
- If set to `on', Readline will display characters with the
- eighth bit set directly rather than as a meta-prefixed escape
- sequence. The default is `off'.
-
- `page-completions'
- If set to `on', Readline uses an internal `more'-like pager
- to display a screenful of possible completions at a time.
- This variable is `on' by default.
-
- `print-completions-horizontally'
- If set to `on', Readline will display completions with matches
- sorted horizontally in alphabetical order, rather than down
- the screen. The default is `off'.
-
- `show-all-if-ambiguous'
- This alters the default behavior of the completion functions.
- If set to `on', words which have more than one possible
- completion cause the matches to be listed immediately instead
- of ringing the bell. The default value is `off'.
-
- `visible-stats'
- If set to `on', a character denoting a file's type is
- appended to the filename when listing possible completions.
- The default is `off'.
-
-Key Bindings
- The syntax for controlling key bindings in the init file is
- simple. First you need to find the name of the command that you
- want to change. The following sections contain tables of the
- command name, the default keybinding, if any, and a short
- description of what the command does.
-
- Once you know the name of the command, simply place on a line in
- the init file the name of the key you wish to bind the command to,
- a colon, and then the name of the command. The name of the key
- can be expressed in different ways, depending on what you find most
- comfortable.
-
- In addition to command names, readline allows keys to be bound to
- a string that is inserted when the key is pressed (a MACRO).
-
- KEYNAME: FUNCTION-NAME or MACRO
- KEYNAME is the name of a key spelled out in English. For
- example:
- Control-u: universal-argument
- Meta-Rubout: backward-kill-word
- Control-o: "> output"
-
- In the above example, `C-u' is bound to the function
- `universal-argument', `M-DEL' is bound to the function
- `backward-kill-word', and `C-o' is bound to run the macro
- expressed on the right hand side (that is, to insert the text
- `> output' into the line).
-
- A number of symbolic character names are recognized while
- processing this key binding syntax: DEL, ESC, ESCAPE, LFD,
- NEWLINE, RET, RETURN, RUBOUT, SPACE, SPC, and TAB.
-
- "KEYSEQ": FUNCTION-NAME or MACRO
- KEYSEQ differs from KEYNAME above in that strings denoting an
- entire key sequence can be specified, by placing the key
- sequence in double quotes. Some GNU Emacs style key escapes
- can be used, as in the following example, but the special
- character names are not recognized.
-
- "\C-u": universal-argument
- "\C-x\C-r": re-read-init-file
- "\e[11~": "Function Key 1"
-
- In the above example, `C-u' is again bound to the function
- `universal-argument' (just as it was in the first example),
- `C-x C-r' is bound to the function `re-read-init-file', and
- `<ESC> <[> <1> <1> <~>' is bound to insert the text `Function
- Key 1'.
-
- The following GNU Emacs style escape sequences are available when
- specifying key sequences:
-
- `\C-'
- control prefix
-
- `\M-'
- meta prefix
-
- `\e'
- an escape character
-
- `\\'
- backslash
-
- `\"'
- <">, a double quotation mark
-
- `\''
- <'>, a single quote or apostrophe
-
- In addition to the GNU Emacs style escape sequences, a second set
- of backslash escapes is available:
-
- `\a'
- alert (bell)
-
- `\b'
- backspace
-
- `\d'
- delete
-
- `\f'
- form feed
-
- `\n'
- newline
-
- `\r'
- carriage return
-
- `\t'
- horizontal tab
-
- `\v'
- vertical tab
-
- `\NNN'
- the eight-bit character whose value is the octal value NNN
- (one to three digits)
-
- `\xHH'
- the eight-bit character whose value is the hexadecimal value
- HH (one or two hex digits)
-
- When entering the text of a macro, single or double quotes must be
- used to indicate a macro definition. Unquoted text is assumed to
- be a function name. In the macro body, the backslash escapes
- described above are expanded. Backslash will quote any other
- character in the macro text, including `"' and `''. For example,
- the following binding will make `C-x \' insert a single `\' into
- the line:
- "\C-x\\": "\\"
-
-
-File: readline.info, Node: Conditional Init Constructs, Next: Sample Init File, Prev: Readline Init File Syntax, Up: Readline Init File
-
-Conditional Init Constructs
----------------------------
-
- Readline implements a facility similar in spirit to the conditional
-compilation features of the C preprocessor which allows key bindings
-and variable settings to be performed as the result of tests. There
-are four parser directives used.
-
-`$if'
- The `$if' construct allows bindings to be made based on the
- editing mode, the terminal being used, or the application using
- Readline. The text of the test extends to the end of the line; no
- characters are required to isolate it.
-
- `mode'
- The `mode=' form of the `$if' directive is used to test
- whether Readline is in `emacs' or `vi' mode. This may be
- used in conjunction with the `set keymap' command, for
- instance, to set bindings in the `emacs-standard' and
- `emacs-ctlx' keymaps only if Readline is starting out in
- `emacs' mode.
-
- `term'
- The `term=' form may be used to include terminal-specific key
- bindings, perhaps to bind the key sequences output by the
- terminal's function keys. The word on the right side of the
- `=' is tested against both the full name of the terminal and
- the portion of the terminal name before the first `-'. This
- allows `sun' to match both `sun' and `sun-cmd', for instance.
-
- `application'
- The APPLICATION construct is used to include
- application-specific settings. Each program using the
- Readline library sets the APPLICATION NAME, and you can test
- for a particular value. This could be used to bind key
- sequences to functions useful for a specific program. For
- instance, the following command adds a key sequence that
- quotes the current or previous word in Bash:
- $if Bash
- # Quote the current or previous word
- "\C-xq": "\eb\"\ef\""
- $endif
-
-`$endif'
- This command, as seen in the previous example, terminates an `$if'
- command.
-
-`$else'
- Commands in this branch of the `$if' directive are executed if the
- test fails.
-
-`$include'
- This directive takes a single filename as an argument and reads
- commands and bindings from that file. For example, the following
- directive reads from `/etc/inputrc':
- $include /etc/inputrc
-
-
-File: readline.info, Node: Sample Init File, Prev: Conditional Init Constructs, Up: Readline Init File
-
-Sample Init File
-----------------
-
- Here is an example of an INPUTRC file. This illustrates key
-binding, variable assignment, and conditional syntax.
-
-
- # This file controls the behaviour of line input editing for
- # programs that use the GNU Readline library. Existing
- # programs include FTP, Bash, and GDB.
- #
- # You can re-read the inputrc file with C-x C-r.
- # Lines beginning with '#' are comments.
- #
- # First, include any systemwide bindings and variable
- # assignments from /etc/Inputrc
- $include /etc/Inputrc
-
- #
- # Set various bindings for emacs mode.
-
- set editing-mode emacs
-
- $if mode=emacs
-
- Meta-Control-h: backward-kill-word Text after the function name is ignored
-
- #
- # Arrow keys in keypad mode
- #
- #"\M-OD": backward-char
- #"\M-OC": forward-char
- #"\M-OA": previous-history
- #"\M-OB": next-history
- #
- # Arrow keys in ANSI mode
- #
- "\M-[D": backward-char
- "\M-[C": forward-char
- "\M-[A": previous-history
- "\M-[B": next-history
- #
- # Arrow keys in 8 bit keypad mode
- #
- #"\M-\C-OD": backward-char
- #"\M-\C-OC": forward-char
- #"\M-\C-OA": previous-history
- #"\M-\C-OB": next-history
- #
- # Arrow keys in 8 bit ANSI mode
- #
- #"\M-\C-[D": backward-char
- #"\M-\C-[C": forward-char
- #"\M-\C-[A": previous-history
- #"\M-\C-[B": next-history
-
- C-q: quoted-insert
-
- $endif
-
- # An old-style binding. This happens to be the default.
- TAB: complete
-
- # Macros that are convenient for shell interaction
- $if Bash
- # edit the path
- "\C-xp": "PATH=${PATH}\e\C-e\C-a\ef\C-f"
- # prepare to type a quoted word --
- # insert open and close double quotes
- # and move to just after the open quote
- "\C-x\"": "\"\"\C-b"
- # insert a backslash (testing backslash escapes
- # in sequences and macros)
- "\C-x\\": "\\"
- # Quote the current or previous word
- "\C-xq": "\eb\"\ef\""
- # Add a binding to refresh the line, which is unbound
- "\C-xr": redraw-current-line
- # Edit variable on current line.
- "\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y="
- $endif
-
- # use a visible bell if one is available
- set bell-style visible
-
- # don't strip characters to 7 bits when reading
- set input-meta on
-
- # allow iso-latin1 characters to be inserted rather
- # than converted to prefix-meta sequences
- set convert-meta off
-
- # display characters with the eighth bit set directly
- # rather than as meta-prefixed characters
- set output-meta on
-
- # if there are more than 150 possible completions for
- # a word, ask the user if he wants to see all of them
- set completion-query-items 150
-
- # For FTP
- $if Ftp
- "\C-xg": "get \M-?"
- "\C-xt": "put \M-?"
- "\M-.": yank-last-arg
- $endif
-
-
-File: readline.info, Node: Bindable Readline Commands, Next: Readline vi Mode, Prev: Readline Init File, Up: Command Line Editing
-
-Bindable Readline Commands
-==========================
-
-* Menu:
-
-* Commands For Moving:: Moving about the line.
-* Commands For History:: Getting at previous lines.
-* Commands For Text:: Commands for changing text.
-* Commands For Killing:: Commands for killing and yanking.
-* Numeric Arguments:: Specifying numeric arguments, repeat counts.
-* Commands For Completion:: Getting Readline to do the typing for you.
-* Keyboard Macros:: Saving and re-executing typed characters
-* Miscellaneous Commands:: Other miscellaneous commands.
-
- This section describes Readline commands that may be bound to key
-sequences. Command names without an accompanying key sequence are
-unbound by default.
-
- In the following descriptions, "point" refers to the current cursor
-position, and "mark" refers to a cursor position saved by the
-`set-mark' command. The text between the point and mark is referred to
-as the "region".
-
-
-File: readline.info, Node: Commands For Moving, Next: Commands For History, Up: Bindable Readline Commands
-
-Commands For Moving
--------------------
-
-`beginning-of-line (C-a)'
- Move to the start of the current line.
-
-`end-of-line (C-e)'
- Move to the end of the line.
-
-`forward-char (C-f)'
- Move forward a character.
-
-`backward-char (C-b)'
- Move back a character.
-
-`forward-word (M-f)'
- Move forward to the end of the next word. Words are composed of
- letters and digits.
-
-`backward-word (M-b)'
- Move back to the start of the current or previous word. Words are
- composed of letters and digits.
-
-`clear-screen (C-l)'
- Clear the screen and redraw the current line, leaving the current
- line at the top of the screen.
-
-`redraw-current-line ()'
- Refresh the current line. By default, this is unbound.
-
-
-File: readline.info, Node: Commands For History, Next: Commands For Text, Prev: Commands For Moving, Up: Bindable Readline Commands
-
-Commands For Manipulating The History
--------------------------------------
-
-`accept-line (Newline or Return)'
- Accept the line regardless of where the cursor is. If this line is
- non-empty, it may be added to the history list for future recall
- with `add_history()'. If this line is a modified history line,
- the history line is restored to its original state.
-
-`previous-history (C-p)'
- Move `back' through the history list, fetching the previous
- command.
-
-`next-history (C-n)'
- Move `forward' through the history list, fetching the next command.
-
-`beginning-of-history (M-<)'
- Move to the first line in the history.
-
-`end-of-history (M->)'
- Move to the end of the input history, i.e., the line currently
- being entered.
-
-`reverse-search-history (C-r)'
- Search backward starting at the current line and moving `up'
- through the history as necessary. This is an incremental search.
-
-`forward-search-history (C-s)'
- Search forward starting at the current line and moving `down'
- through the the history as necessary. This is an incremental
- search.
-
-`non-incremental-reverse-search-history (M-p)'
- Search backward starting at the current line and moving `up'
- through the history as necessary using a non-incremental search
- for a string supplied by the user.
-
-`non-incremental-forward-search-history (M-n)'
- Search forward starting at the current line and moving `down'
- through the the history as necessary using a non-incremental search
- for a string supplied by the user.
-
-`history-search-forward ()'
- Search forward through the history for the string of characters
- between the start of the current line and the point. This is a
- non-incremental search. By default, this command is unbound.
-
-`history-search-backward ()'
- Search backward through the history for the string of characters
- between the start of the current line and the point. This is a
- non-incremental search. By default, this command is unbound.
-
-`yank-nth-arg (M-C-y)'
- Insert the first argument to the previous command (usually the
- second word on the previous line) at point. With an argument N,
- insert the Nth word from the previous command (the words in the
- previous command begin with word 0). A negative argument inserts
- the Nth word from the end of the previous command.
-
-`yank-last-arg (M-. or M-_)'
- Insert last argument to the previous command (the last word of the
- previous history entry). With an argument, behave exactly like
- `yank-nth-arg'. Successive calls to `yank-last-arg' move back
- through the history list, inserting the last argument of each line
- in turn.
-
-
-File: readline.info, Node: Commands For Text, Next: Commands For Killing, Prev: Commands For History, Up: Bindable Readline Commands
-
-Commands For Changing Text
---------------------------
-
-`delete-char (C-d)'
- Delete the character at point. If point is at the beginning of
- the line, there are no characters in the line, and the last
- character typed was not bound to `delete-char', then return EOF.
-
-`backward-delete-char (Rubout)'
- Delete the character behind the cursor. A numeric argument means
- to kill the characters instead of deleting them.
-
-`forward-backward-delete-char ()'
- Delete the character under the cursor, unless the cursor is at the
- end of the line, in which case the character behind the cursor is
- deleted. By default, this is not bound to a key.
-
-`quoted-insert (C-q or C-v)'
- Add the next character typed to the line verbatim. This is how to
- insert key sequences like `C-q', for example.
-
-`tab-insert (M-<TAB>)'
- Insert a tab character.
-
-`self-insert (a, b, A, 1, !, ...)'
- Insert yourself.
-
-`transpose-chars (C-t)'
- Drag the character before the cursor forward over the character at
- the cursor, moving the cursor forward as well. If the insertion
- point is at the end of the line, then this transposes the last two
- characters of the line. Negative arguments have no effect.
-
-`transpose-words (M-t)'
- Drag the word before point past the word after point, moving point
- past that word as well. If the insertion point is at the end of
- the line, this transposes the last two words on the line.
-
-`upcase-word (M-u)'
- Uppercase the current (or following) word. With a negative
- argument, uppercase the previous word, but do not move the cursor.
-
-`downcase-word (M-l)'
- Lowercase the current (or following) word. With a negative
- argument, lowercase the previous word, but do not move the cursor.
-
-`capitalize-word (M-c)'
- Capitalize the current (or following) word. With a negative
- argument, capitalize the previous word, but do not move the cursor.
-
-`overwrite-mode ()'
- Toggle overwrite mode. With an explicit positive numeric argument,
- switches to overwrite mode. With an explicit non-positive numeric
- argument, switches to insert mode. This command affects only
- `emacs' mode; `vi' mode does overwrite differently. Each call to
- `readline()' starts in insert mode.
-
- In overwrite mode, characters bound to `self-insert' replace the
- text at point rather than pushing the text to the right.
- Characters bound to `backward-delete-char' replace the character
- before point with a space.
-
- By default, this command is unbound.
-
-
-File: readline.info, Node: Commands For Killing, Next: Numeric Arguments, Prev: Commands For Text, Up: Bindable Readline Commands
-
-Killing And Yanking
--------------------
-
-`kill-line (C-k)'
- Kill the text from point to the end of the line.
-
-`backward-kill-line (C-x Rubout)'
- Kill backward to the beginning of the line.
-
-`unix-line-discard (C-u)'
- Kill backward from the cursor to the beginning of the current line.
-
-`kill-whole-line ()'
- Kill all characters on the current line, no matter where point is.
- By default, this is unbound.
-
-`kill-word (M-d)'
- Kill from point to the end of the current word, or if between
- words, to the end of the next word. Word boundaries are the same
- as `forward-word'.
-
-`backward-kill-word (M-<DEL>)'
- Kill the word behind point. Word boundaries are the same as
- `backward-word'.
-
-`unix-word-rubout (C-w)'
- Kill the word behind point, using white space as a word boundary.
- The killed text is saved on the kill-ring.
-
-`delete-horizontal-space ()'
- Delete all spaces and tabs around point. By default, this is
- unbound.
-
-`kill-region ()'
- Kill the text in the current region. By default, this command is
- unbound.
-
-`copy-region-as-kill ()'
- Copy the text in the region to the kill buffer, so it can be yanked
- right away. By default, this command is unbound.
-
-`copy-backward-word ()'
- Copy the word before point to the kill buffer. The word
- boundaries are the same as `backward-word'. By default, this
- command is unbound.
-
-`copy-forward-word ()'
- Copy the word following point to the kill buffer. The word
- boundaries are the same as `forward-word'. By default, this
- command is unbound.
-
-`yank (C-y)'
- Yank the top of the kill ring into the buffer at point.
-
-`yank-pop (M-y)'
- Rotate the kill-ring, and yank the new top. You can only do this
- if the prior command is `yank' or `yank-pop'.
-
-
-File: readline.info, Node: Numeric Arguments, Next: Commands For Completion, Prev: Commands For Killing, Up: Bindable Readline Commands
-
-Specifying Numeric Arguments
-----------------------------
-
-`digit-argument (M-0, M-1, ... M--)'
- Add this digit to the argument already accumulating, or start a new
- argument. `M--' starts a negative argument.
-
-`universal-argument ()'
- This is another way to specify an argument. If this command is
- followed by one or more digits, optionally with a leading minus
- sign, those digits define the argument. If the command is
- followed by digits, executing `universal-argument' again ends the
- numeric argument, but is otherwise ignored. As a special case, if
- this command is immediately followed by a character that is
- neither a digit or minus sign, the argument count for the next
- command is multiplied by four. The argument count is initially
- one, so executing this function the first time makes the argument
- count four, a second time makes the argument count sixteen, and so
- on. By default, this is not bound to a key.
-
-
-File: readline.info, Node: Commands For Completion, Next: Keyboard Macros, Prev: Numeric Arguments, Up: Bindable Readline Commands
-
-Letting Readline Type For You
------------------------------
-
-`complete (<TAB>)'
- Attempt to perform completion on the text before point. The
- actual completion performed is application-specific. The default
- is filename completion.
-
-`possible-completions (M-?)'
- List the possible completions of the text before point.
-
-`insert-completions (M-*)'
- Insert all completions of the text before point that would have
- been generated by `possible-completions'.
-
-`menu-complete ()'
- Similar to `complete', but replaces the word to be completed with
- a single match from the list of possible completions. Repeated
- execution of `menu-complete' steps through the list of possible
- completions, inserting each match in turn. At the end of the list
- of completions, the bell is rung (subject to the setting of
- `bell-style') and the original text is restored. An argument of N
- moves N positions forward in the list of matches; a negative
- argument may be used to move backward through the list. This
- command is intended to be bound to <TAB>, but is unbound by
- default.
-
-`delete-char-or-list ()'
- Deletes the character under the cursor if not at the beginning or
- end of the line (like `delete-char'). If at the end of the line,
- behaves identically to `possible-completions'. This command is
- unbound by default.
-
-
-File: readline.info, Node: Keyboard Macros, Next: Miscellaneous Commands, Prev: Commands For Completion, Up: Bindable Readline Commands
-
-Keyboard Macros
----------------
-
-`start-kbd-macro (C-x ()'
- Begin saving the characters typed into the current keyboard macro.
-
-`end-kbd-macro (C-x ))'
- Stop saving the characters typed into the current keyboard macro
- and save the definition.
-
-`call-last-kbd-macro (C-x e)'
- Re-execute the last keyboard macro defined, by making the
- characters in the macro appear as if typed at the keyboard.
-
-
-File: readline.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up: Bindable Readline Commands
-
-Some Miscellaneous Commands
----------------------------
-
-`re-read-init-file (C-x C-r)'
- Read in the contents of the INPUTRC file, and incorporate any
- bindings or variable assignments found there.
-
-`abort (C-g)'
- Abort the current editing command and ring the terminal's bell
- (subject to the setting of `bell-style').
-
-`do-uppercase-version (M-a, M-b, M-X, ...)'
- If the metafied character X is lowercase, run the command that is
- bound to the corresponding uppercase character.
-
-`prefix-meta (<ESC>)'
- Metafy the next character typed. This is for keyboards without a
- meta key. Typing `<ESC> f' is equivalent to typing `M-f'.
-
-`undo (C-_ or C-x C-u)'
- Incremental undo, separately remembered for each line.
-
-`revert-line (M-r)'
- Undo all changes made to this line. This is like executing the
- `undo' command enough times to get back to the beginning.
-
-`tilde-expand (M-~)'
- Perform tilde expansion on the current word.
-
-`set-mark (C-@)'
- Set the mark to the point. If a numeric argument is supplied, the
- mark is set to that position.
-
-`exchange-point-and-mark (C-x C-x)'
- Swap the point with the mark. The current cursor position is set
- to the saved position, and the old cursor position is saved as the
- mark.
-
-`character-search (C-])'
- A character is read and point is moved to the next occurrence of
- that character. A negative count searches for previous
- occurrences.
-
-`character-search-backward (M-C-])'
- A character is read and point is moved to the previous occurrence
- of that character. A negative count searches for subsequent
- occurrences.
-
-`insert-comment (M-#)'
- Without a numeric argument, the value of the `comment-begin'
- variable is inserted at the beginning of the current line. If a
- numeric argument is supplied, this command acts as a toggle: if
- the characters at the beginning of the line do not match the value
- of `comment-begin', the value is inserted, otherwise the
- characters in `comment-begin' are deleted from the beginning of
- the line. In either case, the line is accepted as if a newline
- had been typed.
-
-`dump-functions ()'
- Print all of the functions and their key bindings to the Readline
- output stream. If a numeric argument is supplied, the output is
- formatted in such a way that it can be made part of an INPUTRC
- file. This command is unbound by default.
-
-`dump-variables ()'
- Print all of the settable variables and their values to the
- Readline output stream. If a numeric argument is supplied, the
- output is formatted in such a way that it can be made part of an
- INPUTRC file. This command is unbound by default.
-
-`dump-macros ()'
- Print all of the Readline key sequences bound to macros and the
- strings they output. If a numeric argument is supplied, the
- output is formatted in such a way that it can be made part of an
- INPUTRC file. This command is unbound by default.
-
-`emacs-editing-mode (C-e)'
- When in `vi' command mode, this causes a switch to `emacs' editing
- mode.
-
-`vi-editing-mode (M-C-j)'
- When in `emacs' editing mode, this causes a switch to `vi' editing
- mode.
-
-
-File: readline.info, Node: Readline vi Mode, Prev: Bindable Readline Commands, Up: Command Line Editing
-
-Readline vi Mode
-================
-
- While the Readline library does not have a full set of `vi' editing
-functions, it does contain enough to allow simple editing of the line.
-The Readline `vi' mode behaves as specified in the POSIX 1003.2
-standard.
-
- In order to switch interactively between `emacs' and `vi' editing
-modes, use the command `M-C-j' (bound to emacs-editing-mode when in
-`vi' mode and to vi-editing-mode in `emacs' mode). The Readline
-default is `emacs' mode.
-
- When you enter a line in `vi' mode, you are already placed in
-`insertion' mode, as if you had typed an `i'. Pressing <ESC> switches
-you into `command' mode, where you can edit the text of the line with
-the standard `vi' movement keys, move to previous history lines with
-`k' and subsequent lines with `j', and so forth.
-
- This document describes the GNU Readline Library, a utility for
-aiding in the consitency of user interface across discrete programs
-that need to provide a command line interface.
-
- Copyright (C) 1988-2002 Free Software Foundation, Inc.
-
- Permission is granted to make and distribute verbatim copies of this
-manual provided the copyright notice and this permission notice pare
-preserved on all copies.
-
- Permission is granted to copy and distribute modified versions of
-this manual under the conditions for verbatim copying, provided that
-the entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
- Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be stated in a
-translation approved by the Foundation.
-
-
-File: readline.info, Node: Programming with GNU Readline, Next: Concept Index, Prev: Command Line Editing, Up: Top
-
-Programming with GNU Readline
-*****************************
-
- This chapter describes the interface between the GNU Readline
-Library and other programs. If you are a programmer, and you wish to
-include the features found in GNU Readline such as completion, line
-editing, and interactive history manipulation in your own programs,
-this section is for you.
-
-* Menu:
-
-* Basic Behavior:: Using the default behavior of Readline.
-* Custom Functions:: Adding your own functions to Readline.
-* Readline Variables:: Variables accessible to custom
- functions.
-* Readline Convenience Functions:: Functions which Readline supplies to
- aid in writing your own custom
- functions.
-* Readline Signal Handling:: How Readline behaves when it receives signals.
-* Custom Completers:: Supplanting or supplementing Readline's
- completion functions.
-
-
-File: readline.info, Node: Basic Behavior, Next: Custom Functions, Up: Programming with GNU Readline
-
-Basic Behavior
-==============
-
- Many programs provide a command line interface, such as `mail',
-`ftp', and `sh'. For such programs, the default behaviour of Readline
-is sufficient. This section describes how to use Readline in the
-simplest way possible, perhaps to replace calls in your code to
-`gets()' or `fgets()'.
-
- The function `readline()' prints a prompt PROMPT and then reads and
-returns a single line of text from the user. If PROMPT is `NULL' or
-the empty string, no prompt is displayed. The line `readline' returns
-is allocated with `malloc()'; the caller should `free()' the line when
-it has finished with it. The declaration for `readline' in ANSI C is
-
- `char *readline (const char *PROMPT);'
-
-So, one might say
- `char *line = readline ("Enter a line: ");'
-
-in order to read a line of text from the user. The line returned has
-the final newline removed, so only the text remains.
-
- If `readline' encounters an `EOF' while reading the line, and the
-line is empty at that point, then `(char *)NULL' is returned.
-Otherwise, the line is ended just as if a newline had been typed.
-
- If you want the user to be able to get at the line later, (with
-<C-p> for example), you must call `add_history()' to save the line away
-in a "history" list of such lines.
-
- `add_history (line)';
-
-For full details on the GNU History Library, see the associated manual.
-
- It is preferable to avoid saving empty lines on the history list,
-since users rarely have a burning need to reuse a blank line. Here is
-a function which usefully replaces the standard `gets()' library
-function, and has the advantage of no static buffer to overflow:
-
- /* A static variable for holding the line. */
- static char *line_read = (char *)NULL;
-
- /* Read a string, and return a pointer to it.
- Returns NULL on EOF. */
- char *
- rl_gets ()
- {
- /* If the buffer has already been allocated,
- return the memory to the free pool. */
- if (line_read)
- {
- free (line_read);
- line_read = (char *)NULL;
- }
-
- /* Get a line from the user. */
- line_read = readline ("");
-
- /* If the line has any text in it,
- save it on the history. */
- if (line_read && *line_read)
- add_history (line_read);
-
- return (line_read);
- }
-
- This function gives the user the default behaviour of <TAB>
-completion: completion on file names. If you do not want Readline to
-complete on filenames, you can change the binding of the <TAB> key with
-`rl_bind_key()'.
-
- `int rl_bind_key (int KEY, rl_command_func_t *FUNCTION);'
-
- `rl_bind_key()' takes two arguments: KEY is the character that you
-want to bind, and FUNCTION is the address of the function to call when
-KEY is pressed. Binding <TAB> to `rl_insert()' makes <TAB> insert
-itself. `rl_bind_key()' returns non-zero if KEY is not a valid ASCII
-character code (between 0 and 255).
-
- Thus, to disable the default <TAB> behavior, the following suffices:
- `rl_bind_key ('\t', rl_insert);'
-
- This code should be executed once at the start of your program; you
-might write a function called `initialize_readline()' which performs
-this and other desired initializations, such as installing custom
-completers (*note Custom Completers::).
-
-
-File: readline.info, Node: Custom Functions, Next: Readline Variables, Prev: Basic Behavior, Up: Programming with GNU Readline
-
-Custom Functions
-================
-
- Readline provides many functions for manipulating the text of the
-line, but it isn't possible to anticipate the needs of all programs.
-This section describes the various functions and variables defined
-within the Readline library which allow a user program to add
-customized functionality to Readline.
-
- Before declaring any functions that customize Readline's behavior, or
-using any functionality Readline provides in other code, an application
-writer should include the file `<readline/readline.h>' in any file that
-uses Readline's features. Since some of the definitions in
-`readline.h' use the `stdio' library, the file `<stdio.h>' should be
-included before `readline.h'.
-
- `readline.h' defines a C preprocessor variable that should be
-treated as an integer, `RL_READLINE_VERSION', which may be used to
-conditionally compile application code depending on the installed
-Readline version. The value is a hexadecimal encoding of the major and
-minor version numbers of the library, of the form 0xMMMM. MM is the
-two-digit major version number; MM is the two-digit minor version
-number. For Readline 4.2, for example, the value of
-`RL_READLINE_VERSION' would be `0x0402'.
-
-* Menu:
-
-* Readline Typedefs:: C declarations to make code readable.
-* Function Writing:: Variables and calling conventions.
-
-
-File: readline.info, Node: Readline Typedefs, Next: Function Writing, Up: Custom Functions
-
-Readline Typedefs
------------------
-
- For readabilty, we declare a number of new object types, all pointers
-to functions.
-
- The reason for declaring these new types is to make it easier to
-write code describing pointers to C functions with appropriately
-prototyped arguments and return values.
-
- For instance, say we want to declare a variable FUNC as a pointer to
-a function which takes two `int' arguments and returns an `int' (this
-is the type of all of the Readline bindable functions). Instead of the
-classic C declaration
-
- `int (*func)();'
-
-or the ANSI-C style declaration
-
- `int (*func)(int, int);'
-
-we may write
-
- `rl_command_func_t *func;'
-
- The full list of function pointer types available is
-
-`typedef int rl_command_func_t (int, int);'
-
-`typedef char *rl_compentry_func_t (const char *, int);'
-
-`typedef char **rl_completion_func_t (const char *, int, int);'
-
-`typedef char *rl_quote_func_t (char *, int, char *);'
-
-`typedef char *rl_dequote_func_t (char *, int);'
-
-`typedef int rl_compignore_func_t (char **);'
-
-`typedef void rl_compdisp_func_t (char **, int, int);'
-
-`typedef int rl_hook_func_t (void);'
-
-`typedef int rl_getc_func_t (FILE *);'
-
-`typedef int rl_linebuf_func_t (char *, int);'
-
-`typedef int rl_intfunc_t (int);'
-
-`#define rl_ivoidfunc_t rl_hook_func_t'
-
-`typedef int rl_icpfunc_t (char *);'
-
-`typedef int rl_icppfunc_t (char **);'
-
-`typedef void rl_voidfunc_t (void);'
-
-`typedef void rl_vintfunc_t (int);'
-
-`typedef void rl_vcpfunc_t (char *);'
-
-`typedef void rl_vcppfunc_t (char **);'
-
-File: readline.info, Node: Function Writing, Prev: Readline Typedefs, Up: Custom Functions
-
-Writing a New Function
-----------------------
-
- In order to write new functions for Readline, you need to know the
-calling conventions for keyboard-invoked functions, and the names of the
-variables that describe the current state of the line read so far.
-
- The calling sequence for a command `foo' looks like
-
- `int foo (int count, int key)'
-
-where COUNT is the numeric argument (or 1 if defaulted) and KEY is the
-key that invoked this function.
-
- It is completely up to the function as to what should be done with
-the numeric argument. Some functions use it as a repeat count, some as
-a flag, and others to choose alternate behavior (refreshing the current
-line as opposed to refreshing the screen, for example). Some choose to
-ignore it. In general, if a function uses the numeric argument as a
-repeat count, it should be able to do something useful with both
-negative and positive arguments. At the very least, it should be aware
-that it can be passed a negative argument.
-
- A command function should return 0 if its action completes
-successfully, and a non-zero value if some error occurs.
-
-
-File: readline.info, Node: Readline Variables, Next: Readline Convenience Functions, Prev: Custom Functions, Up: Programming with GNU Readline
-
-Readline Variables
-==================
-
- These variables are available to function writers.
-
- - Variable: char * rl_line_buffer
- This is the line gathered so far. You are welcome to modify the
- contents of the line, but see *Note Allowing Undoing::. The
- function `rl_extend_line_buffer' is available to increase the
- memory allocated to `rl_line_buffer'.
-
- - Variable: int rl_point
- The offset of the current cursor position in `rl_line_buffer' (the
- _point_).
-
- - Variable: int rl_end
- The number of characters present in `rl_line_buffer'. When
- `rl_point' is at the end of the line, `rl_point' and `rl_end' are
- equal.
-
- - Variable: int rl_mark
- The MARK (saved position) in the current line. If set, the mark
- and point define a _region_.
-
- - Variable: int rl_done
- Setting this to a non-zero value causes Readline to return the
- current line immediately.
-
- - Variable: int rl_num_chars_to_read
- Setting this to a positive value before calling `readline()' causes
- Readline to return after accepting that many characters, rather
- than reading up to a character bound to `accept-line'.
-
- - Variable: int rl_pending_input
- Setting this to a value makes it the next keystroke read. This is
- a way to stuff a single character into the input stream.
-
- - Variable: int rl_dispatching
- Set to a non-zero value if a function is being called from a key
- binding; zero otherwise. Application functions can test this to
- discover whether they were called directly or by Readline's
- dispatching mechanism.
-
- - Variable: int rl_erase_empty_line
- Setting this to a non-zero value causes Readline to completely
- erase the current line, including any prompt, any time a newline
- is typed as the only character on an otherwise-empty line. The
- cursor is moved to the beginning of the newly-blank line.
-
- - Variable: char * rl_prompt
- The prompt Readline uses. This is set from the argument to
- `readline()', and should not be assigned to directly. The
- `rl_set_prompt()' function (*note Redisplay::) may be used to
- modify the prompt string after calling `readline()'.
-
- - Variable: int rl_already_prompted
- If an application wishes to display the prompt itself, rather than
- have Readline do it the first time `readline()' is called, it
- should set this variable to a non-zero value after displaying the
- prompt. The prompt must also be passed as the argument to
- `readline()' so the redisplay functions can update the display
- properly. The calling application is responsible for managing the
- value; Readline never sets it.
-
- - Variable: const char * rl_library_version
- The version number of this revision of the library.
-
- - Variable: int rl_readline_version
- An integer encoding the current version of the library. The
- encoding is of the form 0xMMMM, where MM is the two-digit major
- version number, and MM is the two-digit minor version number. For
- example, for Readline-4.2, `rl_readline_version' would have the
- value 0x0402.
-
- - Variable: int rl_gnu_readline_p
- Always set to 1, denoting that this is GNU readline rather than
- some emulation.
-
- - Variable: const char * rl_terminal_name
- The terminal type, used for initialization. If not set by the
- application, Readline sets this to the value of the `TERM'
- environment variable the first time it is called.
-
- - Variable: const char * rl_readline_name
- This variable is set to a unique name by each application using
- Readline. The value allows conditional parsing of the inputrc file
- (*note Conditional Init Constructs::).
-
- - Variable: FILE * rl_instream
- The stdio stream from which Readline reads input. If `NULL',
- Readline defaults to STDIN.
-
- - Variable: FILE * rl_outstream
- The stdio stream to which Readline performs output. If `NULL',
- Readline defaults to STDOUT.
-
- - Variable: rl_command_func_t * rl_last_func
- The address of the last command function Readline executed. May
- be used to test whether or not a function is being executed twice
- in succession, for example.
-
- - Variable: rl_hook_func_t * rl_startup_hook
- If non-zero, this is the address of a function to call just before
- `readline' prints the first prompt.
-
- - Variable: rl_hook_func_t * rl_pre_input_hook
- If non-zero, this is the address of a function to call after the
- first prompt has been printed and just before `readline' starts
- reading input characters.
-
- - Variable: rl_hook_func_t * rl_event_hook
- If non-zero, this is the address of a function to call periodically
- when Readline is waiting for terminal input. By default, this
- will be called at most ten times a second if there is no keyboard
- input.
-
- - Variable: rl_getc_func_t * rl_getc_function
- If non-zero, Readline will call indirectly through this pointer to
- get a character from the input stream. By default, it is set to
- `rl_getc', the default Readline character input function (*note
- Character Input::).
-
- - Variable: rl_voidfunc_t * rl_redisplay_function
- If non-zero, Readline will call indirectly through this pointer to
- update the display with the current contents of the editing buffer.
- By default, it is set to `rl_redisplay', the default Readline
- redisplay function (*note Redisplay::).
-
- - Variable: rl_vintfunc_t * rl_prep_term_function
- If non-zero, Readline will call indirectly through this pointer to
- initialize the terminal. The function takes a single argument, an
- `int' flag that says whether or not to use eight-bit characters.
- By default, this is set to `rl_prep_terminal' (*note Terminal
- Management::).
-
- - Variable: rl_voidfunc_t * rl_deprep_term_function
- If non-zero, Readline will call indirectly through this pointer to
- reset the terminal. This function should undo the effects of
- `rl_prep_term_function'. By default, this is set to
- `rl_deprep_terminal' (*note Terminal Management::).
-
- - Variable: Keymap rl_executing_keymap
- This variable is set to the keymap (*note Keymaps::) in which the
- currently executing readline function was found.
-
- - Variable: Keymap rl_binding_keymap
- This variable is set to the keymap (*note Keymaps::) in which the
- last key binding occurred.
-
- - Variable: char * rl_executing_macro
- This variable is set to the text of any currently-executing macro.
-
- - Variable: int rl_readline_state
- A variable with bit values that encapsulate the current Readline
- state. A bit is set with the `RL_SETSTATE' macro, and unset with
- the `RL_UNSETSTATE' macro. Use the `RL_ISSTATE' macro to test
- whether a particular state bit is set. Current state bits include:
-
- `RL_STATE_NONE'
- Readline has not yet been called, nor has it begun to
- intialize.
-
- `RL_STATE_INITIALIZING'
- Readline is initializing its internal data structures.
-
- `RL_STATE_INITIALIZED'
- Readline has completed its initialization.
-
- `RL_STATE_TERMPREPPED'
- Readline has modified the terminal modes to do its own input
- and redisplay.
-
- `RL_STATE_READCMD'
- Readline is reading a command from the keyboard.
-
- `RL_STATE_METANEXT'
- Readline is reading more input after reading the meta-prefix
- character.
-
- `RL_STATE_DISPATCHING'
- Readline is dispatching to a command.
-
- `RL_STATE_MOREINPUT'
- Readline is reading more input while executing an editing
- command.
-
- `RL_STATE_ISEARCH'
- Readline is performing an incremental history search.
-
- `RL_STATE_NSEARCH'
- Readline is performing a non-incremental history search.
-
- `RL_STATE_SEARCH'
- Readline is searching backward or forward through the history
- for a string.
-
- `RL_STATE_NUMERICARG'
- Readline is reading a numeric argument.
-
- `RL_STATE_MACROINPUT'
- Readline is currently getting its input from a
- previously-defined keyboard macro.
-
- `RL_STATE_MACRODEF'
- Readline is currently reading characters defining a keyboard
- macro.
-
- `RL_STATE_OVERWRITE'
- Readline is in overwrite mode.
-
- `RL_STATE_COMPLETING'
- Readline is performing word completion.
-
- `RL_STATE_SIGHANDLER'
- Readline is currently executing the readline signal handler.
-
- `RL_STATE_UNDOING'
- Readline is performing an undo.
-
- `RL_STATE_DONE'
- Readline has read a key sequence bound to `accept-line' and
- is about to return the line to the caller.
-
-
- - Variable: int rl_explicit_arg
- Set to a non-zero value if an explicit numeric argument was
- specified by the user. Only valid in a bindable command function.
-
- - Variable: int rl_numeric_arg
- Set to the value of any numeric argument explicitly specified by
- the user before executing the current Readline function. Only
- valid in a bindable command function.
-
- - Variable: int rl_editing_mode
- Set to a value denoting Readline's current editing mode. A value
- of 1 means Readline is currently in emacs mode; 0 means that vi
- mode is active.
-
-
-File: readline.info, Node: Readline Convenience Functions, Next: Readline Signal Handling, Prev: Readline Variables, Up: Programming with GNU Readline
-
-Readline Convenience Functions
-==============================
-
-* Menu:
-
-* Function Naming:: How to give a function you write a name.
-* Keymaps:: Making keymaps.
-* Binding Keys:: Changing Keymaps.
-* Associating Function Names and Bindings:: Translate function names to
- key sequences.
-* Allowing Undoing:: How to make your functions undoable.
-* Redisplay:: Functions to control line display.
-* Modifying Text:: Functions to modify `rl_line_buffer'.
-* Character Input:: Functions to read keyboard input.
-* Terminal Management:: Functions to manage terminal settings.
-* Utility Functions:: Generally useful functions and hooks.
-* Miscellaneous Functions:: Functions that don't fall into any category.
-* Alternate Interface:: Using Readline in a `callback' fashion.
-* A Readline Example:: An example Readline function.
-
-
-File: readline.info, Node: Function Naming, Next: Keymaps, Up: Readline Convenience Functions
-
-Naming a Function
------------------
-
- The user can dynamically change the bindings of keys while using
-Readline. This is done by representing the function with a descriptive
-name. The user is able to type the descriptive name when referring to
-the function. Thus, in an init file, one might find
-
- Meta-Rubout: backward-kill-word
-
- This binds the keystroke <Meta-Rubout> to the function
-_descriptively_ named `backward-kill-word'. You, as the programmer,
-should bind the functions you write to descriptive names as well.
-Readline provides a function for doing that:
-
- - Function: int rl_add_defun (const char *name, rl_command_func_t
- *function, int key)
- Add NAME to the list of named functions. Make FUNCTION be the
- function that gets called. If KEY is not -1, then bind it to
- FUNCTION using `rl_bind_key()'.
-
- Using this function alone is sufficient for most applications. It is
-the recommended way to add a few functions to the default functions that
-Readline has built in. If you need to do something other than adding a
-function to Readline, you may need to use the underlying functions
-described below.
-
-
-File: readline.info, Node: Keymaps, Next: Binding Keys, Prev: Function Naming, Up: Readline Convenience Functions
-
-Selecting a Keymap
-------------------
-
- Key bindings take place on a "keymap". The keymap is the
-association between the keys that the user types and the functions that
-get run. You can make your own keymaps, copy existing keymaps, and tell
-Readline which keymap to use.
-
- - Function: Keymap rl_make_bare_keymap (void)
- Returns a new, empty keymap. The space for the keymap is
- allocated with `malloc()'; the caller should free it by calling
- `rl_discard_keymap()' when done.
-
- - Function: Keymap rl_copy_keymap (Keymap map)
- Return a new keymap which is a copy of MAP.
-
- - Function: Keymap rl_make_keymap (void)
- Return a new keymap with the printing characters bound to
- rl_insert, the lowercase Meta characters bound to run their
- equivalents, and the Meta digits bound to produce numeric
- arguments.
-
- - Function: void rl_discard_keymap (Keymap keymap)
- Free the storage associated with KEYMAP.
-
- Readline has several internal keymaps. These functions allow you to
-change which keymap is active.
-
- - Function: Keymap rl_get_keymap (void)
- Returns the currently active keymap.
-
- - Function: void rl_set_keymap (Keymap keymap)
- Makes KEYMAP the currently active keymap.
-
- - Function: Keymap rl_get_keymap_by_name (const char *name)
- Return the keymap matching NAME. NAME is one which would be
- supplied in a `set keymap' inputrc line (*note Readline Init
- File::).
-
- - Function: char * rl_get_keymap_name (Keymap keymap)
- Return the name matching KEYMAP. NAME is one which would be
- supplied in a `set keymap' inputrc line (*note Readline Init
- File::).
-
-
-File: readline.info, Node: Binding Keys, Next: Associating Function Names and Bindings, Prev: Keymaps, Up: Readline Convenience Functions
-
-Binding Keys
-------------
-
- Key sequences are associate with functions through the keymap.
-Readline has several internal keymaps: `emacs_standard_keymap',
-`emacs_meta_keymap', `emacs_ctlx_keymap', `vi_movement_keymap', and
-`vi_insertion_keymap'. `emacs_standard_keymap' is the default, and the
-examples in this manual assume that.
-
- Since `readline()' installs a set of default key bindings the first
-time it is called, there is always the danger that a custom binding
-installed before the first call to `readline()' will be overridden. An
-alternate mechanism is to install custom key bindings in an
-initialization function assigned to the `rl_startup_hook' variable
-(*note Readline Variables::).
-
- These functions manage key bindings.
-
- - Function: int rl_bind_key (int key, rl_command_func_t *function)
- Binds KEY to FUNCTION in the currently active keymap. Returns
- non-zero in the case of an invalid KEY.
-
- - Function: int rl_bind_key_in_map (int key, rl_command_func_t
- *function, Keymap map)
- Bind KEY to FUNCTION in MAP. Returns non-zero in the case of an
- invalid KEY.
-
- - Function: int rl_unbind_key (int key)
- Bind KEY to the null function in the currently active keymap.
- Returns non-zero in case of error.
-
- - Function: int rl_unbind_key_in_map (int key, Keymap map)
- Bind KEY to the null function in MAP. Returns non-zero in case of
- error.
-
- - Function: int rl_unbind_function_in_map (rl_command_func_t
- *function, Keymap map)
- Unbind all keys that execute FUNCTION in MAP.
-
- - Function: int rl_unbind_command_in_map (const char *command, Keymap
- map)
- Unbind all keys that are bound to COMMAND in MAP.
-
- - Function: int rl_set_key (const char *keyseq, rl_command_func_t
- *function, Keymap map)
- Bind the key sequence represented by the string KEYSEQ to the
- function FUNCTION. This makes new keymaps as necessary. The
- initial keymap in which to do bindings is MAP.
-
- - Function: int rl_generic_bind (int type, const char *keyseq, char
- *data, Keymap map)
- Bind the key sequence represented by the string KEYSEQ to the
- arbitrary pointer DATA. TYPE says what kind of data is pointed to
- by DATA; this can be a function (`ISFUNC'), a macro (`ISMACR'), or
- a keymap (`ISKMAP'). This makes new keymaps as necessary. The
- initial keymap in which to do bindings is MAP.
-
- - Function: int rl_parse_and_bind (char *line)
- Parse LINE as if it had been read from the `inputrc' file and
- perform any key bindings and variable assignments found (*note
- Readline Init File::).
-
- - Function: int rl_read_init_file (const char *filename)
- Read keybindings and variable assignments from FILENAME (*note
- Readline Init File::).
-
-
-File: readline.info, Node: Associating Function Names and Bindings, Next: Allowing Undoing, Prev: Binding Keys, Up: Readline Convenience Functions
-
-Associating Function Names and Bindings
----------------------------------------
-
- These functions allow you to find out what keys invoke named
-functions and the functions invoked by a particular key sequence. You
-may also associate a new function name with an arbitrary function.
-
- - Function: rl_command_func_t * rl_named_function (const char *name)
- Return the function with name NAME.
-
- - Function: rl_command_func_t * rl_function_of_keyseq (const char
- *keyseq, Keymap map, int *type)
- Return the function invoked by KEYSEQ in keymap MAP. If MAP is
- `NULL', the current keymap is used. If TYPE is not `NULL', the
- type of the object is returned in the `int' variable it points to
- (one of `ISFUNC', `ISKMAP', or `ISMACR').
-
- - Function: char ** rl_invoking_keyseqs (rl_command_func_t *function)
- Return an array of strings representing the key sequences used to
- invoke FUNCTION in the current keymap.
-
- - Function: char ** rl_invoking_keyseqs_in_map (rl_command_func_t
- *function, Keymap map)
- Return an array of strings representing the key sequences used to
- invoke FUNCTION in the keymap MAP.
-
- - Function: void rl_function_dumper (int readable)
- Print the readline function names and the key sequences currently
- bound to them to `rl_outstream'. If READABLE is non-zero, the
- list is formatted in such a way that it can be made part of an
- `inputrc' file and re-read.
-
- - Function: void rl_list_funmap_names (void)
- Print the names of all bindable Readline functions to
- `rl_outstream'.
-
- - Function: const char ** rl_funmap_names (void)
- Return a NULL terminated array of known function names. The array
- is sorted. The array itself is allocated, but not the strings
- inside. You should `free()' the array when you are done, but not
- the pointers.
-
- - Function: int rl_add_funmap_entry (const char *name,
- rl_command_func_t *function)
- Add NAME to the list of bindable Readline command names, and make
- FUNCTION the function to be called when NAME is invoked.
-
-
-File: readline.info, Node: Allowing Undoing, Next: Redisplay, Prev: Associating Function Names and Bindings, Up: Readline Convenience Functions
-
-Allowing Undoing
-----------------
-
- Supporting the undo command is a painless thing, and makes your
-functions much more useful. It is certainly easy to try something if
-you know you can undo it.
-
- If your function simply inserts text once, or deletes text once, and
-uses `rl_insert_text()' or `rl_delete_text()' to do it, then undoing is
-already done for you automatically.
-
- If you do multiple insertions or multiple deletions, or any
-combination of these operations, you should group them together into
-one operation. This is done with `rl_begin_undo_group()' and
-`rl_end_undo_group()'.
-
- The types of events that can be undone are:
-
- enum undo_code { UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END };
-
- Notice that `UNDO_DELETE' means to insert some text, and
-`UNDO_INSERT' means to delete some text. That is, the undo code tells
-what to undo, not how to undo it. `UNDO_BEGIN' and `UNDO_END' are tags
-added by `rl_begin_undo_group()' and `rl_end_undo_group()'.
-
- - Function: int rl_begin_undo_group (void)
- Begins saving undo information in a group construct. The undo
- information usually comes from calls to `rl_insert_text()' and
- `rl_delete_text()', but could be the result of calls to
- `rl_add_undo()'.
-
- - Function: int rl_end_undo_group (void)
- Closes the current undo group started with `rl_begin_undo_group
- ()'. There should be one call to `rl_end_undo_group()' for each
- call to `rl_begin_undo_group()'.
-
- - Function: void rl_add_undo (enum undo_code what, int start, int end,
- char *text)
- Remember how to undo an event (according to WHAT). The affected
- text runs from START to END, and encompasses TEXT.
-
- - Function: void rl_free_undo_list (void)
- Free the existing undo list.
-
- - Function: int rl_do_undo (void)
- Undo the first thing on the undo list. Returns `0' if there was
- nothing to undo, non-zero if something was undone.
-
- Finally, if you neither insert nor delete text, but directly modify
-the existing text (e.g., change its case), call `rl_modifying()' once,
-just before you modify the text. You must supply the indices of the
-text range that you are going to modify.
-
- - Function: int rl_modifying (int start, int end)
- Tell Readline to save the text between START and END as a single
- undo unit. It is assumed that you will subsequently modify that
- text.
-
-
-File: readline.info, Node: Redisplay, Next: Modifying Text, Prev: Allowing Undoing, Up: Readline Convenience Functions
-
-Redisplay
----------
-
- - Function: void rl_redisplay (void)
- Change what's displayed on the screen to reflect the current
- contents of `rl_line_buffer'.
-
- - Function: int rl_forced_update_display (void)
- Force the line to be updated and redisplayed, whether or not
- Readline thinks the screen display is correct.
-
- - Function: int rl_on_new_line (void)
- Tell the update functions that we have moved onto a new (empty)
- line, usually after ouputting a newline.
-
- - Function: int rl_on_new_line_with_prompt (void)
- Tell the update functions that we have moved onto a new line, with
- RL_PROMPT already displayed. This could be used by applications
- that want to output the prompt string themselves, but still need
- Readline to know the prompt string length for redisplay. It
- should be used after setting RL_ALREADY_PROMPTED.
-
- - Function: int rl_reset_line_state (void)
- Reset the display state to a clean state and redisplay the current
- line starting on a new line.
-
- - Function: int rl_crlf (void)
- Move the cursor to the start of the next screen line.
-
- - Function: int rl_show_char (int c)
- Display character C on `rl_outstream'. If Readline has not been
- set to display meta characters directly, this will convert meta
- characters to a meta-prefixed key sequence. This is intended for
- use by applications which wish to do their own redisplay.
-
- - Function: int rl_message (const char *, ...)
- The arguments are a format string as would be supplied to `printf',
- possibly containing conversion specifications such as `%d', and
- any additional arguments necessary to satisfy the conversion
- specifications. The resulting string is displayed in the "echo
- area". The echo area is also used to display numeric arguments
- and search strings.
-
- - Function: int rl_clear_message (void)
- Clear the message in the echo area.
-
- - Function: void rl_save_prompt (void)
- Save the local Readline prompt display state in preparation for
- displaying a new message in the message area with `rl_message()'.
-
- - Function: void rl_restore_prompt (void)
- Restore the local Readline prompt display state saved by the most
- recent call to `rl_save_prompt'.
-
- - Function: int rl_expand_prompt (char *prompt)
- Expand any special character sequences in PROMPT and set up the
- local Readline prompt redisplay variables. This function is
- called by `readline()'. It may also be called to expand the
- primary prompt if the `rl_on_new_line_with_prompt()' function or
- `rl_already_prompted' variable is used. It returns the number of
- visible characters on the last line of the (possibly multi-line)
- prompt.
-
- - Function: int rl_set_prompt (const char *prompt)
- Make Readline use PROMPT for subsequent redisplay. This calls
- `rl_expand_prompt()' to expand the prompt and sets `rl_prompt' to
- the result.
-
-
-File: readline.info, Node: Modifying Text, Next: Character Input, Prev: Redisplay, Up: Readline Convenience Functions
-
-Modifying Text
---------------
-
- - Function: int rl_insert_text (const char *text)
- Insert TEXT into the line at the current cursor position. Returns
- the number of characters inserted.
-
- - Function: int rl_delete_text (int start, int end)
- Delete the text between START and END in the current line.
- Returns the number of characters deleted.
-
- - Function: char * rl_copy_text (int start, int end)
- Return a copy of the text between START and END in the current
- line.
-
- - Function: int rl_kill_text (int start, int end)
- Copy the text between START and END in the current line to the
- kill ring, appending or prepending to the last kill if the last
- command was a kill command. The text is deleted. If START is
- less than END, the text is appended, otherwise prepended. If the
- last command was not a kill, a new kill ring slot is used.
-
- - Function: int rl_push_macro_input (char *macro)
- Cause MACRO to be inserted into the line, as if it had been invoked
- by a key bound to a macro. Not especially useful; use
- `rl_insert_text()' instead.
-
-
-File: readline.info, Node: Character Input, Next: Terminal Management, Prev: Modifying Text, Up: Readline Convenience Functions
-
-Character Input
----------------
-
- - Function: int rl_read_key (void)
- Return the next character available from Readline's current input
- stream. This handles input inserted into the input stream via
- RL_PENDING_INPUT (*note Readline Variables::) and
- `rl_stuff_char()', macros, and characters read from the keyboard.
- While waiting for input, this function will call any function
- assigned to the `rl_event_hook' variable.
-
- - Function: int rl_getc (FILE *stream)
- Return the next character available from STREAM, which is assumed
- to be the keyboard.
-
- - Function: int rl_stuff_char (int c)
- Insert C into the Readline input stream. It will be "read" before
- Readline attempts to read characters from the terminal with
- `rl_read_key()'. Up to 512 characters may be pushed back.
- `rl_stuff_char' returns 1 if the character was successfully
- inserted; 0 otherwise.
-
- - Function: int rl_execute_next (int c)
- Make C be the next command to be executed when `rl_read_key()' is
- called. This sets RL_PENDING_INPUT.
-
- - Function: int rl_clear_pending_input (void)
- Unset RL_PENDING_INPUT, effectively negating the effect of any
- previous call to `rl_execute_next()'. This works only if the
- pending input has not already been read with `rl_read_key()'.
-
- - Function: int rl_set_keyboard_input_timeout (int u)
- While waiting for keyboard input in `rl_read_key()', Readline will
- wait for U microseconds for input before calling any function
- assigned to `rl_event_hook'. The default waiting period is
- one-tenth of a second. Returns the old timeout value.
-
-
-File: readline.info, Node: Terminal Management, Next: Utility Functions, Prev: Character Input, Up: Readline Convenience Functions
-
-Terminal Management
--------------------
-
- - Function: void rl_prep_terminal (int meta_flag)
- Modify the terminal settings for Readline's use, so `readline()'
- can read a single character at a time from the keyboard. The
- META_FLAG argument should be non-zero if Readline should read
- eight-bit input.
-
- - Function: void rl_deprep_terminal (void)
- Undo the effects of `rl_prep_terminal()', leaving the terminal in
- the state in which it was before the most recent call to
- `rl_prep_terminal()'.
-
- - Function: void rl_tty_set_default_bindings (Keymap kmap)
- Read the operating system's terminal editing characters (as would
- be displayed by `stty') to their Readline equivalents. The
- bindings are performed in KMAP.
-
- - Function: int rl_reset_terminal (const char *terminal_name)
- Reinitialize Readline's idea of the terminal settings using
- TERMINAL_NAME as the terminal type (e.g., `vt100'). If
- TERMINAL_NAME is `NULL', the value of the `TERM' environment
- variable is used.
-
-
-File: readline.info, Node: Utility Functions, Next: Miscellaneous Functions, Prev: Terminal Management, Up: Readline Convenience Functions
-
-Utility Functions
------------------
-
- - Function: void rl_replace_line (const char *text, int clear_undo)
- Replace the contents of `rl_line_buffer' with TEXT. The point and
- mark are preserved, if possible. If CLEAR_UNDO is non-zero, the
- undo list associated with the current line is cleared.
-
- - Function: int rl_extend_line_buffer (int len)
- Ensure that `rl_line_buffer' has enough space to hold LEN
- characters, possibly reallocating it if necessary.
-
- - Function: int rl_initialize (void)
- Initialize or re-initialize Readline's internal state. It's not
- strictly necessary to call this; `readline()' calls it before
- reading any input.
-
- - Function: int rl_ding (void)
- Ring the terminal bell, obeying the setting of `bell-style'.
-
- - Function: int rl_alphabetic (int c)
- Return 1 if C is an alphabetic character.
-
- - Function: void rl_display_match_list (char **matches, int len, int
- max)
- A convenience function for displaying a list of strings in
- columnar format on Readline's output stream. `matches' is the list
- of strings, in argv format, such as a list of completion matches.
- `len' is the number of strings in `matches', and `max' is the
- length of the longest string in `matches'. This function uses the
- setting of `print-completions-horizontally' to select how the
- matches are displayed (*note Readline Init File Syntax::).
-
- The following are implemented as macros, defined in `chardefs.h'.
-Applications should refrain from using them.
-
- - Function: int _rl_uppercase_p (int c)
- Return 1 if C is an uppercase alphabetic character.
-
- - Function: int _rl_lowercase_p (int c)
- Return 1 if C is a lowercase alphabetic character.
-
- - Function: int _rl_digit_p (int c)
- Return 1 if C is a numeric character.
-
- - Function: int _rl_to_upper (int c)
- If C is a lowercase alphabetic character, return the corresponding
- uppercase character.
-
- - Function: int _rl_to_lower (int c)
- If C is an uppercase alphabetic character, return the corresponding
- lowercase character.
-
- - Function: int _rl_digit_value (int c)
- If C is a number, return the value it represents.
-
-
-File: readline.info, Node: Miscellaneous Functions, Next: Alternate Interface, Prev: Utility Functions, Up: Readline Convenience Functions
-
-Miscellaneous Functions
------------------------
-
- - Function: int rl_macro_bind (const char *keyseq, const char *macro,
- Keymap map)
- Bind the key sequence KEYSEQ to invoke the macro MACRO. The
- binding is performed in MAP. When KEYSEQ is invoked, the MACRO
- will be inserted into the line. This function is deprecated; use
- `rl_generic_bind()' instead.
-
- - Function: void rl_macro_dumper (int readable)
- Print the key sequences bound to macros and their values, using
- the current keymap, to `rl_outstream'. If READABLE is non-zero,
- the list is formatted in such a way that it can be made part of an
- `inputrc' file and re-read.
-
- - Function: int rl_variable_bind (const char *variable, const char
- *value)
- Make the Readline variable VARIABLE have VALUE. This behaves as
- if the readline command `set VARIABLE VALUE' had been executed in
- an `inputrc' file (*note Readline Init File Syntax::).
-
- - Function: void rl_variable_dumper (int readable)
- Print the readline variable names and their current values to
- `rl_outstream'. If READABLE is non-zero, the list is formatted in
- such a way that it can be made part of an `inputrc' file and
- re-read.
-
- - Function: int rl_set_paren_blink_timeout (int u)
- Set the time interval (in microseconds) that Readline waits when
- showing a balancing character when `blink-matching-paren' has been
- enabled.
-
- - Function: char * rl_get_termcap (const char *cap)
- Retrieve the string value of the termcap capability CAP. Readline
- fetches the termcap entry for the current terminal name and uses
- those capabilities to move around the screen line and perform other
- terminal-specific operations, like erasing a line. Readline does
- not use all of a terminal's capabilities, and this function will
- return values for only those capabilities Readline uses.
-
-
-File: readline.info, Node: Alternate Interface, Next: A Readline Example, Prev: Miscellaneous Functions, Up: Readline Convenience Functions
-
-Alternate Interface
--------------------
-
- An alternate interface is available to plain `readline()'. Some
-applications need to interleave keyboard I/O with file, device, or
-window system I/O, typically by using a main loop to `select()' on
-various file descriptors. To accomodate this need, readline can also
-be invoked as a `callback' function from an event loop. There are
-functions available to make this easy.
-
- - Function: void rl_callback_handler_install (const char *prompt,
- rl_vcpfunc_t *lhandler)
- Set up the terminal for readline I/O and display the initial
- expanded value of PROMPT. Save the value of LHANDLER to use as a
- function to call when a complete line of input has been entered.
- The function takes the text of the line as an argument.
-
- - Function: void rl_callback_read_char (void)
- Whenever an application determines that keyboard input is
- available, it should call `rl_callback_read_char()', which will
- read the next character from the current input source. If that
- character completes the line, `rl_callback_read_char' will invoke
- the LHANDLER function saved by `rl_callback_handler_install' to
- process the line. Before calling the LHANDLER function, the
- terminal settings are reset to the values they had before calling
- `rl_callback_handler_install'. If the LHANDLER function returns,
- the terminal settings are modified for Readline's use again.
- `EOF' is indicated by calling LHANDLER with a `NULL' line.
-
- - Function: void rl_callback_handler_remove (void)
- Restore the terminal to its initial state and remove the line
- handler. This may be called from within a callback as well as
- independently. If the LHANDLER installed by
- `rl_callback_handler_install' does not exit the program, either
- this function or the function referred to by the value of
- `rl_deprep_term_function' should be called before the program
- exits to reset the terminal settings.
-
-
-File: readline.info, Node: A Readline Example, Prev: Alternate Interface, Up: Readline Convenience Functions
-
-A Readline Example
-------------------
-
- Here is a function which changes lowercase characters to their
-uppercase equivalents, and uppercase characters to lowercase. If this
-function was bound to `M-c', then typing `M-c' would change the case of
-the character under point. Typing `M-1 0 M-c' would change the case of
-the following 10 characters, leaving the cursor on the last character
-changed.
-
- /* Invert the case of the COUNT following characters. */
- int
- invert_case_line (count, key)
- int count, key;
- {
- register int start, end, i;
-
- start = rl_point;
-
- if (rl_point >= rl_end)
- return (0);
-
- if (count < 0)
- {
- direction = -1;
- count = -count;
- }
- else
- direction = 1;
-
- /* Find the end of the range to modify. */
- end = start + (count * direction);
-
- /* Force it to be within range. */
- if (end > rl_end)
- end = rl_end;
- else if (end < 0)
- end = 0;
-
- if (start == end)
- return (0);
-
- if (start > end)
- {
- int temp = start;
- start = end;
- end = temp;
- }
-
- /* Tell readline that we are modifying the line,
- so it will save the undo information. */
- rl_modifying (start, end);
-
- for (i = start; i != end; i++)
- {
- if (_rl_uppercase_p (rl_line_buffer[i]))
- rl_line_buffer[i] = _rl_to_lower (rl_line_buffer[i]);
- else if (_rl_lowercase_p (rl_line_buffer[i]))
- rl_line_buffer[i] = _rl_to_upper (rl_line_buffer[i]);
- }
- /* Move point to on top of the last character changed. */
- rl_point = (direction == 1) ? end - 1 : start;
- return (0);
- }
-
-
-File: readline.info, Node: Readline Signal Handling, Next: Custom Completers, Prev: Readline Convenience Functions, Up: Programming with GNU Readline
-
-Readline Signal Handling
-========================
-
- Signals are asynchronous events sent to a process by the Unix kernel,
-sometimes on behalf of another process. They are intended to indicate
-exceptional events, like a user pressing the interrupt key on his
-terminal, or a network connection being broken. There is a class of
-signals that can be sent to the process currently reading input from
-the keyboard. Since Readline changes the terminal attributes when it
-is called, it needs to perform special processing when such a signal is
-received in order to restore the terminal to a sane state, or provide
-application writers with functions to do so manually.
-
- Readline contains an internal signal handler that is installed for a
-number of signals (`SIGINT', `SIGQUIT', `SIGTERM', `SIGALRM',
-`SIGTSTP', `SIGTTIN', and `SIGTTOU'). When one of these signals is
-received, the signal handler will reset the terminal attributes to
-those that were in effect before `readline()' was called, reset the
-signal handling to what it was before `readline()' was called, and
-resend the signal to the calling application. If and when the calling
-application's signal handler returns, Readline will reinitialize the
-terminal and continue to accept input. When a `SIGINT' is received,
-the Readline signal handler performs some additional work, which will
-cause any partially-entered line to be aborted (see the description of
-`rl_free_line_state()' below).
-
- There is an additional Readline signal handler, for `SIGWINCH', which
-the kernel sends to a process whenever the terminal's size changes (for
-example, if a user resizes an `xterm'). The Readline `SIGWINCH'
-handler updates Readline's internal screen size information, and then
-calls any `SIGWINCH' signal handler the calling application has
-installed. Readline calls the application's `SIGWINCH' signal handler
-without resetting the terminal to its original state. If the
-application's signal handler does more than update its idea of the
-terminal size and return (for example, a `longjmp' back to a main
-processing loop), it _must_ call `rl_cleanup_after_signal()' (described
-below), to restore the terminal state.
-
- Readline provides two variables that allow application writers to
-control whether or not it will catch certain signals and act on them
-when they are received. It is important that applications change the
-values of these variables only when calling `readline()', not in a
-signal handler, so Readline's internal signal state is not corrupted.
-
- - Variable: int rl_catch_signals
- If this variable is non-zero, Readline will install signal
- handlers for `SIGINT', `SIGQUIT', `SIGTERM', `SIGALRM', `SIGTSTP',
- `SIGTTIN', and `SIGTTOU'.
-
- The default value of `rl_catch_signals' is 1.
-
- - Variable: int rl_catch_sigwinch
- If this variable is non-zero, Readline will install a signal
- handler for `SIGWINCH'.
-
- The default value of `rl_catch_sigwinch' is 1.
-
- If an application does not wish to have Readline catch any signals,
-or to handle signals other than those Readline catches (`SIGHUP', for
-example), Readline provides convenience functions to do the necessary
-terminal and internal state cleanup upon receipt of a signal.
-
- - Function: void rl_cleanup_after_signal (void)
- This function will reset the state of the terminal to what it was
- before `readline()' was called, and remove the Readline signal
- handlers for all signals, depending on the values of
- `rl_catch_signals' and `rl_catch_sigwinch'.
-
- - Function: void rl_free_line_state (void)
- This will free any partial state associated with the current input
- line (undo information, any partial history entry, any
- partially-entered keyboard macro, and any partially-entered
- numeric argument). This should be called before
- `rl_cleanup_after_signal()'. The Readline signal handler for
- `SIGINT' calls this to abort the current input line.
-
- - Function: void rl_reset_after_signal (void)
- This will reinitialize the terminal and reinstall any Readline
- signal handlers, depending on the values of `rl_catch_signals' and
- `rl_catch_sigwinch'.
-
- If an application does not wish Readline to catch `SIGWINCH', it may
-call `rl_resize_terminal()' or `rl_set_screen_size()' to force Readline
-to update its idea of the terminal size when a `SIGWINCH' is received.
-
- - Function: void rl_resize_terminal (void)
- Update Readline's internal screen size by reading values from the
- kernel.
-
- - Function: void rl_set_screen_size (int rows, int cols)
- Set Readline's idea of the terminal size to ROWS rows and COLS
- columns.
-
- If an application does not want to install a `SIGWINCH' handler, but
-is still interested in the screen dimensions, Readline's idea of the
-screen size may be queried.
-
- - Function: void rl_get_screen_size (int *rows, int *cols)
- Return Readline's idea of the terminal's size in the variables
- pointed to by the arguments.
-
- The following functions install and remove Readline's signal
-handlers.
-
- - Function: int rl_set_signals (void)
- Install Readline's signal handler for `SIGINT', `SIGQUIT',
- `SIGTERM', `SIGALRM', `SIGTSTP', `SIGTTIN', `SIGTTOU', and
- `SIGWINCH', depending on the values of `rl_catch_signals' and
- `rl_catch_sigwinch'.
-
- - Function: int rl_clear_signals (void)
- Remove all of the Readline signal handlers installed by
- `rl_set_signals()'.
-
-
-File: readline.info, Node: Custom Completers, Prev: Readline Signal Handling, Up: Programming with GNU Readline
-
-Custom Completers
-=================
-
- Typically, a program that reads commands from the user has a way of
-disambiguating commands and data. If your program is one of these, then
-it can provide completion for commands, data, or both. The following
-sections describe how your program and Readline cooperate to provide
-this service.
-
-* Menu:
-
-* How Completing Works:: The logic used to do completion.
-* Completion Functions:: Functions provided by Readline.
-* Completion Variables:: Variables which control completion.
-* A Short Completion Example:: An example of writing completer subroutines.
-
-
-File: readline.info, Node: How Completing Works, Next: Completion Functions, Up: Custom Completers
-
-How Completing Works
---------------------
-
- In order to complete some text, the full list of possible completions
-must be available. That is, it is not possible to accurately expand a
-partial word without knowing all of the possible words which make sense
-in that context. The Readline library provides the user interface to
-completion, and two of the most common completion functions: filename
-and username. For completing other types of text, you must write your
-own completion function. This section describes exactly what such
-functions must do, and provides an example.
-
- There are three major functions used to perform completion:
-
- 1. The user-interface function `rl_complete()'. This function is
- called with the same arguments as other bindable Readline
- functions: COUNT and INVOKING_KEY. It isolates the word to be
- completed and calls `rl_completion_matches()' to generate a list
- of possible completions. It then either lists the possible
- completions, inserts the possible completions, or actually
- performs the completion, depending on which behavior is desired.
-
- 2. The internal function `rl_completion_matches()' uses an
- application-supplied "generator" function to generate the list of
- possible matches, and then returns the array of these matches.
- The caller should place the address of its generator function in
- `rl_completion_entry_function'.
-
- 3. The generator function is called repeatedly from
- `rl_completion_matches()', returning a string each time. The
- arguments to the generator function are TEXT and STATE. TEXT is
- the partial word to be completed. STATE is zero the first time
- the function is called, allowing the generator to perform any
- necessary initialization, and a positive non-zero integer for each
- subsequent call. The generator function returns `(char *)NULL' to
- inform `rl_completion_matches()' that there are no more
- possibilities left. Usually the generator function computes the
- list of possible completions when STATE is zero, and returns them
- one at a time on subsequent calls. Each string the generator
- function returns as a match must be allocated with `malloc()';
- Readline frees the strings when it has finished with them.
-
-
- - Function: int rl_complete (int ignore, int invoking_key)
- Complete the word at or before point. You have supplied the
- function that does the initial simple matching selection algorithm
- (see `rl_completion_matches()'). The default is to do filename
- completion.
-
- - Variable: rl_compentry_func_t * rl_completion_entry_function
- This is a pointer to the generator function for
- `rl_completion_matches()'. If the value of
- `rl_completion_entry_function' is `NULL' then the default filename
- generator function, `rl_filename_completion_function()', is used.
-
-
-File: readline.info, Node: Completion Functions, Next: Completion Variables, Prev: How Completing Works, Up: Custom Completers
-
-Completion Functions
---------------------
-
- Here is the complete list of callable completion functions present in
-Readline.
-
- - Function: int rl_complete_internal (int what_to_do)
- Complete the word at or before point. WHAT_TO_DO says what to do
- with the completion. A value of `?' means list the possible
- completions. `TAB' means do standard completion. `*' means
- insert all of the possible completions. `!' means to display all
- of the possible completions, if there is more than one, as well as
- performing partial completion.
-
- - Function: int rl_complete (int ignore, int invoking_key)
- Complete the word at or before point. You have supplied the
- function that does the initial simple matching selection algorithm
- (see `rl_completion_matches()' and `rl_completion_entry_function').
- The default is to do filename completion. This calls
- `rl_complete_internal()' with an argument depending on
- INVOKING_KEY.
-
- - Function: int rl_possible_completions (int count, int invoking_key)
- List the possible completions. See description of `rl_complete
- ()'. This calls `rl_complete_internal()' with an argument of `?'.
-
- - Function: int rl_insert_completions (int count, int invoking_key)
- Insert the list of possible completions into the line, deleting the
- partially-completed word. See description of `rl_complete()'.
- This calls `rl_complete_internal()' with an argument of `*'.
-
- - Function: int rl_completion_mode (rl_command_func_t *cfunc)
- Returns the apppriate value to pass to `rl_complete_internal()'
- depending on whether CFUNC was called twice in succession and the
- value of the `show-all-if-ambiguous' variable.
- Application-specific completion functions may use this function to
- present the same interface as `rl_complete()'.
-
- - Function: char ** rl_completion_matches (const char *text,
- rl_compentry_func_t *entry_func)
- Returns an array of strings which is a list of completions for
- TEXT. If there are no completions, returns `NULL'. The first
- entry in the returned array is the substitution for TEXT. The
- remaining entries are the possible completions. The array is
- terminated with a `NULL' pointer.
-
- ENTRY_FUNC is a function of two args, and returns a `char *'. The
- first argument is TEXT. The second is a state argument; it is
- zero on the first call, and non-zero on subsequent calls.
- ENTRY_FUNC returns a `NULL' pointer to the caller when there are
- no more matches.
-
- - Function: char * rl_filename_completion_function (const char *text,
- int state)
- A generator function for filename completion in the general case.
- TEXT is a partial filename. The Bash source is a useful reference
- for writing custom completion functions (the Bash completion
- functions call this and other Readline functions).
-
- - Function: char * rl_username_completion_function (const char *text,
- int state)
- A completion generator for usernames. TEXT contains a partial
- username preceded by a random character (usually `~'). As with all
- completion generators, STATE is zero on the first call and non-zero
- for subsequent calls.
-
-
-File: readline.info, Node: Completion Variables, Next: A Short Completion Example, Prev: Completion Functions, Up: Custom Completers
-
-Completion Variables
---------------------
-
- - Variable: rl_compentry_func_t * rl_completion_entry_function
- A pointer to the generator function for `rl_completion_matches()'.
- `NULL' means to use `rl_filename_completion_function()', the
- default filename completer.
-
- - Variable: rl_completion_func_t * rl_attempted_completion_function
- A pointer to an alternative function to create matches. The
- function is called with TEXT, START, and END. START and END are
- indices in `rl_line_buffer' defining the boundaries of TEXT, which
- is a character string. If this function exists and returns
- `NULL', or if this variable is set to `NULL', then `rl_complete()'
- will call the value of `rl_completion_entry_function' to generate
- matches, otherwise the array of strings returned will be used. If
- this function sets the `rl_attempted_completion_over' variable to
- a non-zero value, Readline will not perform its default completion
- even if this function returns no matches.
-
- - Variable: rl_quote_func_t * rl_filename_quoting_function
- A pointer to a function that will quote a filename in an
- application-specific fashion. This is called if filename
- completion is being attempted and one of the characters in
- `rl_filename_quote_characters' appears in a completed filename.
- The function is called with TEXT, MATCH_TYPE, and QUOTE_POINTER.
- The TEXT is the filename to be quoted. The MATCH_TYPE is either
- `SINGLE_MATCH', if there is only one completion match, or
- `MULT_MATCH'. Some functions use this to decide whether or not to
- insert a closing quote character. The QUOTE_POINTER is a pointer
- to any opening quote character the user typed. Some functions
- choose to reset this character.
-
- - Variable: rl_dequote_func_t * rl_filename_dequoting_function
- A pointer to a function that will remove application-specific
- quoting characters from a filename before completion is attempted,
- so those characters do not interfere with matching the text
- against names in the filesystem. It is called with TEXT, the text
- of the word to be dequoted, and QUOTE_CHAR, which is the quoting
- character that delimits the filename (usually `'' or `"'). If
- QUOTE_CHAR is zero, the filename was not in an embedded string.
-
- - Variable: rl_linebuf_func_t * rl_char_is_quoted_p
- A pointer to a function to call that determines whether or not a
- specific character in the line buffer is quoted, according to
- whatever quoting mechanism the program calling Readline uses. The
- function is called with two arguments: TEXT, the text of the line,
- and INDEX, the index of the character in the line. It is used to
- decide whether a character found in
- `rl_completer_word_break_characters' should be used to break words
- for the completer.
-
- - Variable: rl_compignore_func_t * rl_ignore_some_completions_function
- This function, if defined, is called by the completer when real
- filename completion is done, after all the matching names have
- been generated. It is passed a `NULL' terminated array of matches.
- The first element (`matches[0]') is the maximal substring common
- to all matches. This function can re-arrange the list of matches
- as required, but each element deleted from the array must be freed.
-
- - Variable: rl_icppfunc_t * rl_directory_completion_hook
- This function, if defined, is allowed to modify the directory
- portion of filenames Readline completes. It is called with the
- address of a string (the current directory name) as an argument,
- and may modify that string. If the string is replaced with a new
- string, the old value should be freed. Any modified directory
- name should have a trailing slash. The modified value will be
- displayed as part of the completion, replacing the directory
- portion of the pathname the user typed. It returns an integer
- that should be non-zero if the function modifies its directory
- argument. It could be used to expand symbolic links or shell
- variables in pathnames.
-
- - Variable: rl_compdisp_func_t * rl_completion_display_matches_hook
- If non-zero, then this is the address of a function to call when
- completing a word would normally display the list of possible
- matches. This function is called in lieu of Readline displaying
- the list. It takes three arguments: (`char **'MATCHES, `int'
- NUM_MATCHES, `int' MAX_LENGTH) where MATCHES is the array of
- matching strings, NUM_MATCHES is the number of strings in that
- array, and MAX_LENGTH is the length of the longest string in that
- array. Readline provides a convenience function,
- `rl_display_match_list', that takes care of doing the display to
- Readline's output stream. That function may be called from this
- hook.
-
- - Variable: const char * rl_basic_word_break_characters
- The basic list of characters that signal a break between words for
- the completer routine. The default value of this variable is the
- characters which break words for completion in Bash: `"
- \t\n\"\\'`@$><=;|&{("'.
-
- - Variable: const char * rl_basic_quote_characters
- A list of quote characters which can cause a word break.
-
- - Variable: const char * rl_completer_word_break_characters
- The list of characters that signal a break between words for
- `rl_complete_internal()'. The default list is the value of
- `rl_basic_word_break_characters'.
-
- - Variable: const char * rl_completer_quote_characters
- A list of characters which can be used to quote a substring of the
- line. Completion occurs on the entire substring, and within the
- substring `rl_completer_word_break_characters' are treated as any
- other character, unless they also appear within this list.
-
- - Variable: const char * rl_filename_quote_characters
- A list of characters that cause a filename to be quoted by the
- completer when they appear in a completed filename. The default
- is the null string.
-
- - Variable: const char * rl_special_prefixes
- The list of characters that are word break characters, but should
- be left in TEXT when it is passed to the completion function.
- Programs can use this to help determine what kind of completing to
- do. For instance, Bash sets this variable to "$@" so that it can
- complete shell variables and hostnames.
-
- - Variable: int rl_completion_query_items
- Up to this many items will be displayed in response to a
- possible-completions call. After that, we ask the user if she is
- sure she wants to see them all. The default value is 100.
-
- - Variable: int rl_completion_append_character
- When a single completion alternative matches at the end of the
- command line, this character is appended to the inserted
- completion text. The default is a space character (` '). Setting
- this to the null character (`\0') prevents anything being appended
- automatically. This can be changed in custom completion functions
- to provide the "most sensible word separator character" according
- to an application-specific command line syntax specification.
-
- - Variable: int rl_completion_suppress_append
- If non-zero, RL_COMPLETION_APPEND_CHARACTER is not appended to
- matches at the end of the command line, as described above. It is
- set to 0 before any application-specific completion function is
- called.
-
- - Variable: int rl_completion_mark_symlink_dirs
- If non-zero, a slash will be appended to completed filenames that
- are symbolic links to directory names, subject to the value of the
- user-settable MARK-DIRECTORIES variable. This variable exists so
- that application completion functions can override the user's
- global preference (set via the MARK-SYMLINKED-DIRECTORIES Readline
- variable) if appropriate. This variable is set to the user's
- preference before any application completion function is called,
- so unless that function modifies the value, the user's preferences
- are honored.
-
- - Variable: int rl_ignore_completion_duplicates
- If non-zero, then duplicates in the matches are removed. The
- default is 1.
-
- - Variable: int rl_filename_completion_desired
- Non-zero means that the results of the matches are to be treated as
- filenames. This is _always_ zero on entry, and can only be changed
- within a completion entry generator function. If it is set to a
- non-zero value, directory names have a slash appended and Readline
- attempts to quote completed filenames if they contain any
- characters in `rl_filename_quote_characters' and
- `rl_filename_quoting_desired' is set to a non-zero value.
-
- - Variable: int rl_filename_quoting_desired
- Non-zero means that the results of the matches are to be quoted
- using double quotes (or an application-specific quoting mechanism)
- if the completed filename contains any characters in
- `rl_filename_quote_chars'. This is _always_ non-zero on entry,
- and can only be changed within a completion entry generator
- function. The quoting is effected via a call to the function
- pointed to by `rl_filename_quoting_function'.
-
- - Variable: int rl_attempted_completion_over
- If an application-specific completion function assigned to
- `rl_attempted_completion_function' sets this variable to a non-zero
- value, Readline will not perform its default filename completion
- even if the application's completion function returns no matches.
- It should be set only by an application's completion function.
-
- - Variable: int rl_completion_type
- Set to a character describing the type of completion Readline is
- currently attempting; see the description of
- `rl_complete_internal()' (*note Completion Functions::) for the
- list of characters.
-
- - Variable: int rl_inhibit_completion
- If this variable is non-zero, completion is inhibited. The
- completion character will be inserted as any other bound to
- `self-insert'.
-
-
-File: readline.info, Node: A Short Completion Example, Prev: Completion Variables, Up: Custom Completers
-
-A Short Completion Example
---------------------------
-
- Here is a small application demonstrating the use of the GNU Readline
-library. It is called `fileman', and the source code resides in
-`examples/fileman.c'. This sample application provides completion of
-command names, line editing features, and access to the history list.
-
- /* fileman.c -- A tiny application which demonstrates how to use the
- GNU Readline library. This application interactively allows users
- to manipulate files and their modes. */
-
- #include <stdio.h>
- #include <sys/types.h>
- #include <sys/file.h>
- #include <sys/stat.h>
- #include <sys/errno.h>
-
- #include <readline/readline.h>
- #include <readline/history.h>
-
- extern char *xmalloc ();
-
- /* The names of functions that actually do the manipulation. */
- int com_list __P((char *));
- int com_view __P((char *));
- int com_rename __P((char *));
- int com_stat __P((char *));
- int com_pwd __P((char *));
- int com_delete __P((char *));
- int com_help __P((char *));
- int com_cd __P((char *));
- int com_quit __P((char *));
-
- /* A structure which contains information on the commands this program
- can understand. */
-
- typedef struct {
- char *name; /* User printable name of the function. */
- rl_icpfunc_t *func; /* Function to call to do the job. */
- char *doc; /* Documentation for this function. */
- } COMMAND;
-
- COMMAND commands[] = {
- { "cd", com_cd, "Change to directory DIR" },
- { "delete", com_delete, "Delete FILE" },
- { "help", com_help, "Display this text" },
- { "?", com_help, "Synonym for `help'" },
- { "list", com_list, "List files in DIR" },
- { "ls", com_list, "Synonym for `list'" },
- { "pwd", com_pwd, "Print the current working directory" },
- { "quit", com_quit, "Quit using Fileman" },
- { "rename", com_rename, "Rename FILE to NEWNAME" },
- { "stat", com_stat, "Print out statistics on FILE" },
- { "view", com_view, "View the contents of FILE" },
- { (char *)NULL, (rl_icpfunc_t *)NULL, (char *)NULL }
- };
-
- /* Forward declarations. */
- char *stripwhite ();
- COMMAND *find_command ();
-
- /* The name of this program, as taken from argv[0]. */
- char *progname;
-
- /* When non-zero, this means the user is done using this program. */
- int done;
-
- char *
- dupstr (s)
- int s;
- {
- char *r;
-
- r = xmalloc (strlen (s) + 1);
- strcpy (r, s);
- return (r);
- }
-
- main (argc, argv)
- int argc;
- char **argv;
- {
- char *line, *s;
-
- progname = argv[0];
-
- initialize_readline (); /* Bind our completer. */
-
- /* Loop reading and executing lines until the user quits. */
- for ( ; done == 0; )
- {
- line = readline ("FileMan: ");
-
- if (!line)
- break;
-
- /* Remove leading and trailing whitespace from the line.
- Then, if there is anything left, add it to the history list
- and execute it. */
- s = stripwhite (line);
-
- if (*s)
- {
- add_history (s);
- execute_line (s);
- }
-
- free (line);
- }
- exit (0);
- }
-
- /* Execute a command line. */
- int
- execute_line (line)
- char *line;
- {
- register int i;
- COMMAND *command;
- char *word;
-
- /* Isolate the command word. */
- i = 0;
- while (line[i] && whitespace (line[i]))
- i++;
- word = line + i;
-
- while (line[i] && !whitespace (line[i]))
- i++;
-
- if (line[i])
- line[i++] = '\0';
-
- command = find_command (word);
-
- if (!command)
- {
- fprintf (stderr, "%s: No such command for FileMan.\n", word);
- return (-1);
- }
-
- /* Get argument to command, if any. */
- while (whitespace (line[i]))
- i++;
-
- word = line + i;
-
- /* Call the function. */
- return ((*(command->func)) (word));
- }
-
- /* Look up NAME as the name of a command, and return a pointer to that
- command. Return a NULL pointer if NAME isn't a command name. */
- COMMAND *
- find_command (name)
- char *name;
- {
- register int i;
-
- for (i = 0; commands[i].name; i++)
- if (strcmp (name, commands[i].name) == 0)
- return (&commands[i]);
-
- return ((COMMAND *)NULL);
- }
-
- /* Strip whitespace from the start and end of STRING. Return a pointer
- into STRING. */
- char *
- stripwhite (string)
- char *string;
- {
- register char *s, *t;
-
- for (s = string; whitespace (*s); s++)
- ;
-
- if (*s == 0)
- return (s);
-
- t = s + strlen (s) - 1;
- while (t > s && whitespace (*t))
- t--;
- *++t = '\0';
-
- return s;
- }
-
- /* **************************************************************** */
- /* */
- /* Interface to Readline Completion */
- /* */
- /* **************************************************************** */
-
- char *command_generator __P((const char *, int));
- char **fileman_completion __P((const char *, int, int));
-
- /* Tell the GNU Readline library how to complete. We want to try to
- complete on command names if this is the first word in the line, or
- on filenames if not. */
- initialize_readline ()
- {
- /* Allow conditional parsing of the ~/.inputrc file. */
- rl_readline_name = "FileMan";
-
- /* Tell the completer that we want a crack first. */
- rl_attempted_completion_function = fileman_completion;
- }
-
- /* Attempt to complete on the contents of TEXT. START and END
- bound the region of rl_line_buffer that contains the word to
- complete. TEXT is the word to complete. We can use the entire
- contents of rl_line_buffer in case we want to do some simple
- parsing. Returnthe array of matches, or NULL if there aren't any. */
- char **
- fileman_completion (text, start, end)
- const char *text;
- int start, end;
- {
- char **matches;
-
- matches = (char **)NULL;
-
- /* If this word is at the start of the line, then it is a command
- to complete. Otherwise it is the name of a file in the current
- directory. */
- if (start == 0)
- matches = rl_completion_matches (text, command_generator);
-
- return (matches);
- }
-
- /* Generator function for command completion. STATE lets us
- know whether to start from scratch; without any state
- (i.e. STATE == 0), then we start at the top of the list. */
- char *
- command_generator (text, state)
- const char *text;
- int state;
- {
- static int list_index, len;
- char *name;
-
- /* If this is a new word to complete, initialize now. This
- includes saving the length of TEXT for efficiency, and
- initializing the index variable to 0. */
- if (!state)
- {
- list_index = 0;
- len = strlen (text);
- }
-
- /* Return the next name which partially matches from the
- command list. */
- while (name = commands[list_index].name)
- {
- list_index++;
-
- if (strncmp (name, text, len) == 0)
- return (dupstr(name));
- }
-
- /* If no names matched, then return NULL. */
- return ((char *)NULL);
- }
-
- /* **************************************************************** */
- /* */
- /* FileMan Commands */
- /* */
- /* **************************************************************** */
-
- /* String to pass to system (). This is for the LIST, VIEW and RENAME
- commands. */
- static char syscom[1024];
-
- /* List the file(s) named in arg. */
- com_list (arg)
- char *arg;
- {
- if (!arg)
- arg = "";
-
- sprintf (syscom, "ls -FClg %s", arg);
- return (system (syscom));
- }
-
- com_view (arg)
- char *arg;
- {
- if (!valid_argument ("view", arg))
- return 1;
-
- sprintf (syscom, "more %s", arg);
- return (system (syscom));
- }
-
- com_rename (arg)
- char *arg;
- {
- too_dangerous ("rename");
- return (1);
- }
-
- com_stat (arg)
- char *arg;
- {
- struct stat finfo;
-
- if (!valid_argument ("stat", arg))
- return (1);
-
- if (stat (arg, &finfo) == -1)
- {
- perror (arg);
- return (1);
- }
-
- printf ("Statistics for `%s':\n", arg);
-
- printf ("%s has %d link%s, and is %d byte%s in length.\n", arg,
- finfo.st_nlink,
- (finfo.st_nlink == 1) ? "" : "s",
- finfo.st_size,
- (finfo.st_size == 1) ? "" : "s");
- printf ("Inode Last Change at: %s", ctime (&finfo.st_ctime));
- printf (" Last access at: %s", ctime (&finfo.st_atime));
- printf (" Last modified at: %s", ctime (&finfo.st_mtime));
- return (0);
- }
-
- com_delete (arg)
- char *arg;
- {
- too_dangerous ("delete");
- return (1);
- }
-
- /* Print out help for ARG, or for all of the commands if ARG is
- not present. */
- com_help (arg)
- char *arg;
- {
- register int i;
- int printed = 0;
-
- for (i = 0; commands[i].name; i++)
- {
- if (!*arg || (strcmp (arg, commands[i].name) == 0))
- {
- printf ("%s\t\t%s.\n", commands[i].name, commands[i].doc);
- printed++;
- }
- }
-
- if (!printed)
- {
- printf ("No commands match `%s'. Possibilties are:\n", arg);
-
- for (i = 0; commands[i].name; i++)
- {
- /* Print in six columns. */
- if (printed == 6)
- {
- printed = 0;
- printf ("\n");
- }
-
- printf ("%s\t", commands[i].name);
- printed++;
- }
-
- if (printed)
- printf ("\n");
- }
- return (0);
- }
-
- /* Change to the directory ARG. */
- com_cd (arg)
- char *arg;
- {
- if (chdir (arg) == -1)
- {
- perror (arg);
- return 1;
- }
-
- com_pwd ("");
- return (0);
- }
-
- /* Print out the current working directory. */
- com_pwd (ignore)
- char *ignore;
- {
- char dir[1024], *s;
-
- s = getcwd (dir, sizeof(dir) - 1);
- if (s == 0)
- {
- printf ("Error getting pwd: %s\n", dir);
- return 1;
- }
-
- printf ("Current directory is %s\n", dir);
- return 0;
- }
-
- /* The user wishes to quit using this program. Just set DONE
- non-zero. */
- com_quit (arg)
- char *arg;
- {
- done = 1;
- return (0);
- }
-
- /* Function which tells you that you can't do this. */
- too_dangerous (caller)
- char *caller;
- {
- fprintf (stderr,
- "%s: Too dangerous for me to distribute.\n"
- caller);
- fprintf (stderr, "Write it yourself.\n");
- }
-
- /* Return non-zero if ARG is a valid argument for CALLER,
- else print an error message and return zero. */
- int
- valid_argument (caller, arg)
- char *caller, *arg;
- {
- if (!arg || !*arg)
- {
- fprintf (stderr, "%s: Argument required.\n", caller);
- return (0);
- }
-
- return (1);
- }
-
-
-File: readline.info, Node: Concept Index, Next: Function and Variable Index, Prev: Programming with GNU Readline, Up: Top
-
-Concept Index
-*************
-
-* Menu:
-
-* command editing: Readline Bare Essentials.
-* editing command lines: Readline Bare Essentials.
-* initialization file, readline: Readline Init File.
-* interaction, readline: Readline Interaction.
-* kill ring: Readline Killing Commands.
-* killing text: Readline Killing Commands.
-* notation, readline: Readline Bare Essentials.
-* readline, function: Basic Behavior.
-* variables, readline: Readline Init File Syntax.
-* yanking text: Readline Killing Commands.
-
-
-File: readline.info, Node: Function and Variable Index, Prev: Concept Index, Up: Top
-
-Function and Variable Index
-***************************
-
-* Menu:
-
-* _rl_digit_p: Utility Functions.
-* _rl_digit_value: Utility Functions.
-* _rl_lowercase_p: Utility Functions.
-* _rl_to_lower: Utility Functions.
-* _rl_to_upper: Utility Functions.
-* _rl_uppercase_p: Utility Functions.
-* abort (C-g): Miscellaneous Commands.
-* accept-line (Newline or Return): Commands For History.
-* backward-char (C-b): Commands For Moving.
-* backward-delete-char (Rubout): Commands For Text.
-* backward-kill-line (C-x Rubout): Commands For Killing.
-* backward-kill-word (M-<DEL>): Commands For Killing.
-* backward-word (M-b): Commands For Moving.
-* beginning-of-history (M-<): Commands For History.
-* beginning-of-line (C-a): Commands For Moving.
-* bell-style: Readline Init File Syntax.
-* call-last-kbd-macro (C-x e): Keyboard Macros.
-* capitalize-word (M-c): Commands For Text.
-* character-search (C-]): Miscellaneous Commands.
-* character-search-backward (M-C-]): Miscellaneous Commands.
-* clear-screen (C-l): Commands For Moving.
-* comment-begin: Readline Init File Syntax.
-* complete (<TAB>): Commands For Completion.
-* completion-query-items: Readline Init File Syntax.
-* convert-meta: Readline Init File Syntax.
-* copy-backward-word (): Commands For Killing.
-* copy-forward-word (): Commands For Killing.
-* copy-region-as-kill (): Commands For Killing.
-* delete-char (C-d): Commands For Text.
-* delete-char-or-list (): Commands For Completion.
-* delete-horizontal-space (): Commands For Killing.
-* digit-argument (M-0, M-1, ... M--): Numeric Arguments.
-* disable-completion: Readline Init File Syntax.
-* do-uppercase-version (M-a, M-b, M-X, ...): Miscellaneous Commands.
-* downcase-word (M-l): Commands For Text.
-* dump-functions (): Miscellaneous Commands.
-* dump-macros (): Miscellaneous Commands.
-* dump-variables (): Miscellaneous Commands.
-* editing-mode: Readline Init File Syntax.
-* enable-keypad: Readline Init File Syntax.
-* end-kbd-macro (C-x )): Keyboard Macros.
-* end-of-history (M->): Commands For History.
-* end-of-line (C-e): Commands For Moving.
-* exchange-point-and-mark (C-x C-x): Miscellaneous Commands.
-* expand-tilde: Readline Init File Syntax.
-* forward-backward-delete-char (): Commands For Text.
-* forward-char (C-f): Commands For Moving.
-* forward-search-history (C-s): Commands For History.
-* forward-word (M-f): Commands For Moving.
-* history-preserve-point: Readline Init File Syntax.
-* history-search-backward (): Commands For History.
-* history-search-forward (): Commands For History.
-* horizontal-scroll-mode: Readline Init File Syntax.
-* input-meta: Readline Init File Syntax.
-* insert-comment (M-#): Miscellaneous Commands.
-* insert-completions (M-*): Commands For Completion.
-* isearch-terminators: Readline Init File Syntax.
-* keymap: Readline Init File Syntax.
-* kill-line (C-k): Commands For Killing.
-* kill-region (): Commands For Killing.
-* kill-whole-line (): Commands For Killing.
-* kill-word (M-d): Commands For Killing.
-* mark-modified-lines: Readline Init File Syntax.
-* mark-symlinked-directories: Readline Init File Syntax.
-* match-hidden-files: Readline Init File Syntax.
-* menu-complete (): Commands For Completion.
-* meta-flag: Readline Init File Syntax.
-* next-history (C-n): Commands For History.
-* non-incremental-forward-search-history (M-n): Commands For History.
-* non-incremental-reverse-search-history (M-p): Commands For History.
-* output-meta: Readline Init File Syntax.
-* overwrite-mode (): Commands For Text.
-* page-completions: Readline Init File Syntax.
-* possible-completions (M-?): Commands For Completion.
-* prefix-meta (<ESC>): Miscellaneous Commands.
-* previous-history (C-p): Commands For History.
-* quoted-insert (C-q or C-v): Commands For Text.
-* re-read-init-file (C-x C-r): Miscellaneous Commands.
-* readline: Basic Behavior.
-* redraw-current-line (): Commands For Moving.
-* reverse-search-history (C-r): Commands For History.
-* revert-line (M-r): Miscellaneous Commands.
-* rl_add_defun: Function Naming.
-* rl_add_funmap_entry: Associating Function Names and Bindings.
-* rl_add_undo: Allowing Undoing.
-* rl_alphabetic: Utility Functions.
-* rl_already_prompted: Readline Variables.
-* rl_attempted_completion_function: Completion Variables.
-* rl_attempted_completion_over: Completion Variables.
-* rl_basic_quote_characters: Completion Variables.
-* rl_basic_word_break_characters: Completion Variables.
-* rl_begin_undo_group: Allowing Undoing.
-* rl_bind_key: Binding Keys.
-* rl_bind_key_in_map: Binding Keys.
-* rl_binding_keymap: Readline Variables.
-* rl_callback_handler_install: Alternate Interface.
-* rl_callback_handler_remove: Alternate Interface.
-* rl_callback_read_char: Alternate Interface.
-* rl_catch_signals: Readline Signal Handling.
-* rl_catch_sigwinch: Readline Signal Handling.
-* rl_char_is_quoted_p: Completion Variables.
-* rl_cleanup_after_signal: Readline Signal Handling.
-* rl_clear_message: Redisplay.
-* rl_clear_pending_input: Character Input.
-* rl_clear_signals: Readline Signal Handling.
-* rl_complete <1>: How Completing Works.
-* rl_complete: Completion Functions.
-* rl_complete_internal: Completion Functions.
-* rl_completer_quote_characters: Completion Variables.
-* rl_completer_word_break_characters: Completion Variables.
-* rl_completion_append_character: Completion Variables.
-* rl_completion_display_matches_hook: Completion Variables.
-* rl_completion_entry_function <1>: Completion Variables.
-* rl_completion_entry_function: How Completing Works.
-* rl_completion_mark_symlink_dirs: Completion Variables.
-* rl_completion_matches: Completion Functions.
-* rl_completion_mode: Completion Functions.
-* rl_completion_query_items: Completion Variables.
-* rl_completion_suppress_append: Completion Variables.
-* rl_completion_type: Completion Variables.
-* rl_copy_keymap: Keymaps.
-* rl_copy_text: Modifying Text.
-* rl_crlf: Redisplay.
-* rl_delete_text: Modifying Text.
-* rl_deprep_term_function: Readline Variables.
-* rl_deprep_terminal: Terminal Management.
-* rl_ding: Utility Functions.
-* rl_directory_completion_hook: Completion Variables.
-* rl_discard_keymap: Keymaps.
-* rl_dispatching: Readline Variables.
-* rl_display_match_list: Utility Functions.
-* rl_do_undo: Allowing Undoing.
-* rl_done: Readline Variables.
-* rl_editing_mode: Readline Variables.
-* rl_end: Readline Variables.
-* rl_end_undo_group: Allowing Undoing.
-* rl_erase_empty_line: Readline Variables.
-* rl_event_hook: Readline Variables.
-* rl_execute_next: Character Input.
-* rl_executing_keymap: Readline Variables.
-* rl_executing_macro: Readline Variables.
-* rl_expand_prompt: Redisplay.
-* rl_explicit_arg: Readline Variables.
-* rl_extend_line_buffer: Utility Functions.
-* rl_filename_completion_desired: Completion Variables.
-* rl_filename_completion_function: Completion Functions.
-* rl_filename_dequoting_function: Completion Variables.
-* rl_filename_quote_characters: Completion Variables.
-* rl_filename_quoting_desired: Completion Variables.
-* rl_filename_quoting_function: Completion Variables.
-* rl_forced_update_display: Redisplay.
-* rl_free_line_state: Readline Signal Handling.
-* rl_free_undo_list: Allowing Undoing.
-* rl_function_dumper: Associating Function Names and Bindings.
-* rl_function_of_keyseq: Associating Function Names and Bindings.
-* rl_funmap_names: Associating Function Names and Bindings.
-* rl_generic_bind: Binding Keys.
-* rl_get_keymap: Keymaps.
-* rl_get_keymap_by_name: Keymaps.
-* rl_get_keymap_name: Keymaps.
-* rl_get_screen_size: Readline Signal Handling.
-* rl_get_termcap: Miscellaneous Functions.
-* rl_getc: Character Input.
-* rl_getc_function: Readline Variables.
-* rl_gnu_readline_p: Readline Variables.
-* rl_ignore_completion_duplicates: Completion Variables.
-* rl_ignore_some_completions_function: Completion Variables.
-* rl_inhibit_completion: Completion Variables.
-* rl_initialize: Utility Functions.
-* rl_insert_completions: Completion Functions.
-* rl_insert_text: Modifying Text.
-* rl_instream: Readline Variables.
-* rl_invoking_keyseqs: Associating Function Names and Bindings.
-* rl_invoking_keyseqs_in_map: Associating Function Names and Bindings.
-* rl_kill_text: Modifying Text.
-* rl_last_func: Readline Variables.
-* rl_library_version: Readline Variables.
-* rl_line_buffer: Readline Variables.
-* rl_list_funmap_names: Associating Function Names and Bindings.
-* rl_macro_bind: Miscellaneous Functions.
-* rl_macro_dumper: Miscellaneous Functions.
-* rl_make_bare_keymap: Keymaps.
-* rl_make_keymap: Keymaps.
-* rl_mark: Readline Variables.
-* rl_message: Redisplay.
-* rl_modifying: Allowing Undoing.
-* rl_named_function: Associating Function Names and Bindings.
-* rl_num_chars_to_read: Readline Variables.
-* rl_numeric_arg: Readline Variables.
-* rl_on_new_line: Redisplay.
-* rl_on_new_line_with_prompt: Redisplay.
-* rl_outstream: Readline Variables.
-* rl_parse_and_bind: Binding Keys.
-* rl_pending_input: Readline Variables.
-* rl_point: Readline Variables.
-* rl_possible_completions: Completion Functions.
-* rl_pre_input_hook: Readline Variables.
-* rl_prep_term_function: Readline Variables.
-* rl_prep_terminal: Terminal Management.
-* rl_prompt: Readline Variables.
-* rl_push_macro_input: Modifying Text.
-* rl_read_init_file: Binding Keys.
-* rl_read_key: Character Input.
-* rl_readline_name: Readline Variables.
-* rl_readline_state: Readline Variables.
-* rl_readline_version: Readline Variables.
-* rl_redisplay: Redisplay.
-* rl_redisplay_function: Readline Variables.
-* rl_replace_line: Utility Functions.
-* rl_reset_after_signal: Readline Signal Handling.
-* rl_reset_line_state: Redisplay.
-* rl_reset_terminal: Terminal Management.
-* rl_resize_terminal: Readline Signal Handling.
-* rl_restore_prompt: Redisplay.
-* rl_save_prompt: Redisplay.
-* rl_set_key: Binding Keys.
-* rl_set_keyboard_input_timeout: Character Input.
-* rl_set_keymap: Keymaps.
-* rl_set_paren_blink_timeout: Miscellaneous Functions.
-* rl_set_prompt: Redisplay.
-* rl_set_screen_size: Readline Signal Handling.
-* rl_set_signals: Readline Signal Handling.
-* rl_show_char: Redisplay.
-* rl_special_prefixes: Completion Variables.
-* rl_startup_hook: Readline Variables.
-* rl_stuff_char: Character Input.
-* rl_terminal_name: Readline Variables.
-* rl_tty_set_default_bindings: Terminal Management.
-* rl_unbind_command_in_map: Binding Keys.
-* rl_unbind_function_in_map: Binding Keys.
-* rl_unbind_key: Binding Keys.
-* rl_unbind_key_in_map: Binding Keys.
-* rl_username_completion_function: Completion Functions.
-* rl_variable_bind: Miscellaneous Functions.
-* rl_variable_dumper: Miscellaneous Functions.
-* self-insert (a, b, A, 1, !, ...): Commands For Text.
-* set-mark (C-@): Miscellaneous Commands.
-* show-all-if-ambiguous: Readline Init File Syntax.
-* start-kbd-macro (C-x (): Keyboard Macros.
-* transpose-chars (C-t): Commands For Text.
-* transpose-words (M-t): Commands For Text.
-* undo (C-_ or C-x C-u): Miscellaneous Commands.
-* universal-argument (): Numeric Arguments.
-* unix-line-discard (C-u): Commands For Killing.
-* unix-word-rubout (C-w): Commands For Killing.
-* upcase-word (M-u): Commands For Text.
-* visible-stats: Readline Init File Syntax.
-* yank (C-y): Commands For Killing.
-* yank-last-arg (M-. or M-_): Commands For History.
-* yank-nth-arg (M-C-y): Commands For History.
-* yank-pop (M-y): Commands For Killing.
-
-
-
-Tag Table:
-Node: Top1164
-Node: Command Line Editing1763
-Node: Introduction and Notation2414
-Node: Readline Interaction4032
-Node: Readline Bare Essentials5219
-Node: Readline Movement Commands7000
-Node: Readline Killing Commands7957
-Node: Readline Arguments9866
-Node: Searching10902
-Node: Readline Init File13045
-Node: Readline Init File Syntax14106
-Node: Conditional Init Constructs24989
-Node: Sample Init File27514
-Node: Bindable Readline Commands30698
-Node: Commands For Moving31748
-Node: Commands For History32597
-Node: Commands For Text35455
-Node: Commands For Killing38169
-Node: Numeric Arguments40120
-Node: Commands For Completion41248
-Node: Keyboard Macros42780
-Node: Miscellaneous Commands43339
-Node: Readline vi Mode46688
-Node: Programming with GNU Readline48506
-Node: Basic Behavior49474
-Node: Custom Functions52904
-Node: Readline Typedefs54382
-Node: Function Writing56011
-Node: Readline Variables57219
-Node: Readline Convenience Functions66642
-Node: Function Naming67624
-Node: Keymaps68876
-Node: Binding Keys70632
-Node: Associating Function Names and Bindings73558
-Node: Allowing Undoing75803
-Node: Redisplay78338
-Node: Modifying Text81409
-Node: Character Input82638
-Node: Terminal Management84418
-Node: Utility Functions85593
-Node: Miscellaneous Functions87932
-Node: Alternate Interface89996
-Node: A Readline Example92141
-Node: Readline Signal Handling94078
-Node: Custom Completers99681
-Node: How Completing Works100396
-Node: Completion Functions103394
-Node: Completion Variables106778
-Node: A Short Completion Example117049
-Node: Concept Index129602
-Node: Function and Variable Index130424
-
-End Tag Table
diff --git a/readline-4.3.orig/doc/readline.ps b/readline-4.3.orig/doc/readline.ps
deleted file mode 100644
index 21ca2ca..0000000
--- a/readline-4.3.orig/doc/readline.ps
+++ /dev/null
@@ -1,5200 +0,0 @@
-%!PS-Adobe-2.0
-%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software
-%%Title: readline.dvi
-%%Pages: 66
-%%PageOrder: Ascend
-%%BoundingBox: 0 0 612 792
-%%EndComments
-%DVIPSWebPage: (www.radicaleye.com)
-%DVIPSCommandLine: dvips -D 300 -t letter -o readline.ps readline.dvi
-%DVIPSParameters: dpi=300, compressed
-%DVIPSSource: TeX output 2002.06.27:1354
-%%BeginProcSet: texc.pro
-%!
-/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
-N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
-mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
-0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
-landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
-mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
-matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
-exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
-statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
-N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
-/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
-/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
-array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
-df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
-definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
-}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
-B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
-1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3
-1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
-0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
-sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
-rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
-gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
-/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
-/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
-A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
-get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
-ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
-fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
-{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
-chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
-1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
-forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
-/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
-}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
-bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
-mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
-SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
-userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
-1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
-index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
-/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
-/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
-(LaserWriter 16/600)]{A length product length le{A length product exch 0
-exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
-end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
-grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
-imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
-exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
-fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
-delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
-B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
-p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
-rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
-
-%%EndProcSet
-TeXDict begin 40258431 52099146 1000 300 300 (readline.dvi)
-@start
-%DVIPSBitmapFont: Fa cmbxti10 14.4 1
-/Fa 1 47 df<120E123FEA7F80A212FFA21300127E123C0909798815>46
-D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fb cmsl9 9 1
-/Fb 1 121 df<383FC7E038078380EB0200EA038413C8EA01D8EA00F05B7F1201133812
-02487EEA081E123838FC3FC013107F8F14>120 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fc cmsltt10 9 4
-/Fc 4 78 df<EAFFFC13FE13FC0F037C8C14>45 D<EA01E0EA07F8EA0E3CEA1C1CEA180E
-12381270A312E0A4131CA31338A21370EA70E01271EA3F80EA1F000F177C9614>48
-D<134013E0EA01C01203120F123D12111201EA0380A6EA0700A6120EEAFFE0A20B177B96
-14>I<381F81F813C1380FC3E0EA0EC213C6A213CE13CC381CCDC013DD13D9A213F1A238
-38E3801303A53870070038FC0FC0A215177F9614>77 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fd cmtt9 9 47
-/Fd 47 127 df<126012F0AD12601200A4126012F0A212600417789614>33
-D<EA071CA5B51280A27E380E3800A7387FFF80B5FCA2381C7000A511177F9614>35
-D<EA01801203EA06005A121C121812385AA35AA91270A37E1218121C120C7EEA03801201
-091D799914>40 D<128012C01260123012381218121C120EA31207A9120EA3121C121812
-381230126012C01280081D7C9914>I<EA0380A3EA638CEAF39EEA7FFCEA3FF8EA0FE0A2
-EA3FF8EA7FFCEAF39EEA638CEA0380A30F107E9214>I<127012F812FCA2127C120C1218
-123012E012C0060A798414>44 D<EAFFFEA30F037E8C14>I<127012F8A3127005057984
-14>I<1203A25A5A123F12F712471207AEEA7FF0A20C177C9614>49
-D<1306131E133E13F8EA01F0EA03C0EA0F80EA1F00123C12F85A7E123C121FEA0F80EA03
-C0EA01F0EA00F8133E131E13060F157E9514>60 D<12C012F07E123E7EEA0780EA03E0EA
-01F0EA0078133E131E133E1378EA01F0EA03E0EA0780EA1F00123E12F85A12C00F157E95
-14>62 D<EA1FE0EA3FF8EA701CEAE00EA21240EA003C137013E0EA01C0EA0380A41300C7
-FCA41203EA0780A2EA03000F177E9614>I<EA01E0EA07F0EA0E38EA181CEA38FC1271EA
-731E1277EAEE0EA7EA771CEA7318EA71F0EA38E0EA1806EA0E1EEA07F8EA01F00F177E96
-14>I<EA01C0487EA21360A2EA0770A4EA0630EA0E38A4487EEA1FFCA2EA1C1CA2487EA2
-38FE3F80A211177F9614>I<3801F180EA07FFEA0E1FEA1C071238EA7003A348C7FCA738
-700380A338380700121CEA0E0EEA07FCEA01F011177F9614>67 D<38FC1F80A2007C1300
-EA7637A4EA7777A2EA7367A313E7EA71C7A2EA7007A638F80F80A211177F9614>77
-D<38FE3F80A2383E0E00123BA4138E1239A213CEA31238A213EE136EA4133E12FEA21117
-7F9614>I<EAFFE013F8EA383C131C7FA45B133CEA3FF85BEA38387FA51480EB1DC0A238
-FE0F80EB070012177F9614>82 D<EAFFE0A21200B3A712FFA20B1D7F9914>93
-D<EAFFFEA30F037E7E14>95 D<EA1FC0EA7FF0EA7078EA2018EA001CA2EA07FC121FEA3C
-1C127012E0A3EA707C383FFF80EA0F8F11107E8F14>97 D<12FCA2121CA513F8EA1DFEEA
-1F07EA1E03001C1380EB01C0A6EB0380001E1300EA1F0EEA1DFCEA0CF81217809614>I<
-EA03F8EA0FFEEA1C0EEA3804EA7000126012E0A412601270EA380EEA1C1EEA0FFCEA03F0
-0F107E8F14>I<137EA2130EA5EA07CEEA0FFEEA1C3EEA301EEA700E12E0A61270EA301E
-EA383E381FEFC0EA07CF12177F9614>I<EA07E0EA0FF0EA1C38EA301CEA700CEAE00EA2
-EAFFFEA2EAE00012601270EA380EEA1C1EEA0FFCEA03F00F107E8F14>I<13FCEA01FEEA
-038EEA07041300A3EA7FFE12FFEA0700ACEAFFF8A20F177F9614>I<EA07CF381FFF80EA
-383B38301800EA701CA3EA3018EA3838EA3FF0EA37C00070C7FCA2EA3FF86C7E487EEA70
-0F38E00380A438700700EA3C1EEA1FFCEA07F011197F8F14>I<12FCA2121CA51378EA1D
-FEEA1F86EA1E07121CAA38FF8FE0A21317809614>I<1206120FA21206C7FCA4B4FCA212
-07ACEAFFF8A20D187C9714>I<136013F0A213601300A4EA1FF0A2EA0070B2EA40E0EAE0
-C0EA7F80EA3F000C207E9714>I<12FCA2121CA5EBFF80A2EB1C005B5B5BEA1DC0EA1FE0
-A2EA1E70EA1C38133C131C7F38FF1F80A21117809614>I<EAFF80A21203B3EAFFFEA20F
-177E9614>I<EAFB8EEAFFDF383CF380A2EA38E3AA38FEFBE013791310808F14>I<EAFC78
-EAFDFEEA1F86EA1E07121CAA38FF8FE0A21310808F14>I<EA07C0EA1FF0EA3C78EA701C
-A2EAE00EA6EA701CEA783CEA3C78EA1FF0EA07C00F107E8F14>I<EAFCF8EAFDFEEA1F07
-EA1E03001C1380EB01C0A6EB0380001E1300EA1F0EEA1DFCEA1CF890C7FCA6B47EA21218
-808F14>I<EA03E7EA0FF7EA1C1FEA300F1270487EA6EA700F1230EA1C3FEA0FF7EA07C7
-EA0007A6EB3FE0A213187F8F14>I<EAFE1FEB7F80EA0EE3380F810090C7FCA2120EA8EA
-FFF0A211107F8F14>I<EA0FD8EA3FF8EA603812C0A2EAF000EA7F80EA3FF0EA07F8EA00
-1CEA600612E012F0EAF81CEAFFF8EACFE00F107E8F14>I<1206120EA4EA7FFC12FFEA0E
-00A8130EA3131CEA07F8EA01F00F157F9414>I<EAFC3FA2EA1C07AB131F380FFFE0EA03
-E71310808F14>I<38FE3F80A2383C1E00EA1C1CA36C5AA3EA0630EA0770A36C5AA31110
-7F8F14>I<38FE3F80A238700700EA380EA3EA39CEA3EA1B6C121AA3EA1E7CA2EA0E3811
-107F8F14>I<EA7E3FA2EA1E3CEA0E78EA07705B12036C5A12037FEA0770EA0E78133848
-7E38FE3F80A211107F8F14>I<38FE3F80A2381C0E005BA2120E5BA212071330A2EA0370
-A25B1201A25BA3485A12730077C7FC127E123C11187F8F14>I<EA3FFF5AEA700E131C13
-38EA007013E0EA01C0EA0380EA0700120EEA1C0712381270B5FCA210107F8F14>I<EA1C
-10EA3F38EAE7E0EA41C00D047D9614>126 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fe cmti9 9 1
-/Fe 1 47 df<1230127812F0126005047C830C>46 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Ff cmr9 9 39
-/Ff 39 123 df<13FEEA038138060180EA0E03381C010090C7FCA5B51280EA1C03AE38FF
-8FF0141A809915>12 D<EBFF80EA0383EA0603120E121CA6B5FCEA1C03AE38FF9FF0141A
-809915>I<126012F0A212701210A31220A21240A2040B7D830B>44
-D<EAFFC0A20A0280880D>I<EA07E0EA1C38EA381CEA300CEA700EEA6006A2EAE007AAEA
-6006A2EA700EEA300CEA381CEA1C38EA07E010187F9713>48 D<12035AB4FC1207B3A2EA
-7FF80D187D9713>I<EA0F80EA1060EA2030EA4038EA803CEAC01C12E01240EA003C1338
-A21370136013C0EA018013001202EA040412081210EA3008EA3FF8127F12FF0E187E9713
->I<EA07E0EA1838EA201CEA601EEA700EEA201E1200131CA213381370EA07E0EA003813
-1C130E130FA212E0A212C0EA400EEA601CEA1838EA07E010187F9713>I<1318A2133813
-7813F813B8EA01381202A212041208121812101220124012C0B5FCEA0038A6EA03FF1018
-7F9713>I<EA3018EA3FF013E01380EA2000A5EA2FC0EA3060EA2030EA00381318131CA2
-124012E0A2EA8018EA40381330EA30E0EA0F800E187E9713>I<EA01F8EA0704EA0C06EA
-180E123013001270126012E0EAE3E0EAE418EAE80CEAF00EEAE0061307A31260A2EA7006
-EA300EEA180CEA0C38EA07E010187F9713>I<1240EA7FFF13FEA2EA4004EA80081310A2
-EA00201340A21380120113005AA25A1206A2120EA5120410197E9813>I<EA07E0EA1818
-EA300CEA20061260A21270EA780CEA3E18EA1F30EA07C0EA03E0EA0CF8EA307CEA601E13
-0FEAC0071303A3EA6002EA2004EA1818EA07E010187F9713>I<EA07E0EA1C30EA3018EA
-700CEA600EEAE006A21307A31260EA700FEA3017EA1827EA07C7EA00071306130E130C12
-701318EA6030EA3060EA0F8010187F9713>I<EA1FC0EA38707FEA101C1200A2EA03FCEA
-1E1C1238127012E01480A2133CEA705F381F8F0011107F8F13>97
-D<12FC121CA913FCEA1D07381E0380381C01C0130014E0A6EB01C01480381E0300EA1906
-EA10F8131A809915>I<EA07F8EA1C1C1238EA700813005AA612701304EA3808EA1C18EA
-07E00E107F8F11>I<133F1307A9EA03E7EA0C17EA180F487E127012E0A6126012706C5A
-EA1C373807C7E0131A7F9915>I<EA07C0EA1C30EA30181270EA600C12E0EAFFFCEAE000
-A41260EA7004EA3808EA1C18EA07E00E107F8F11>I<EA01F0EA0718EA0E38EA1C101300
-A6EAFFC0EA1C00AEEAFF800D1A80990C>I<EA0FCF3818718038303000EA7038A4EA3030
-6C5AEA2FC00060C7FCA21270EA3FF013FC6C7EEA600FEAC003A4EA6006EA381CEA07E011
-187F8F13>I<12FC121CA9137CEA1D87381E0380A2121CAB38FF9FF0141A809915>I<1218
-123CA212181200A612FC121CAE12FF081A80990A>I<12FC121CA9EB1FC0EB0F00130C5B
-13205B13E0121DEA1E70EA1C7813387F131E7F148038FF9FE0131A809914>107
-D<12FC121CB3A6EAFF80091A80990A>I<38FC7C1F391D8E6380391E0781C0A2001C1301
-AB39FF9FE7F81D107F8F20>I<EAFC7CEA1D87381E0380A2121CAB38FF9FF01410808F15>
-I<EA07E0EA1C38EA300CEA700EEA6006EAE007A6EA6006EA700EEA381CEA1C38EA07E010
-107F8F13>I<EAFCFCEA1D07381E0380381C01C0A2EB00E0A6EB01C01480381E0300EA1D
-06EA1CF890C7FCA6B47E1317808F15>I<EA03E1EA0C13EA180BEA300FEA700712E0A612
-70A26C5AEA1C37EA07C7EA0007A6EB3FE013177F8F14>I<EAFC78EA1D9CEA1E1C1308EA
-1C00ABEAFF800E10808F0F>I<EA1F20EA60E0EA402012C0A2EAF000127FEA3FC0EA1FE0
-EA00F0EA8070133012C01320EAF040EA8F800C107F8F0F>I<1208A41218A21238EAFFC0
-EA3800A81320A41218EA1C40EA07800B177F960F>I<38FC1F80EA1C03AB1307120CEA0E
-0B3803F3F01410808F15>I<38FF0F80383C0700EA1C061304A26C5AA26C5AA3EA03A0A2
-EA01C0A36C5A11107F8F14>I<39FE7F1F8039381C0700003C1306381C0C04130E380E16
-081317A238072310149013A33803C1A014E0380180C0A319107F8F1C>I<38FE3F80383C
-1E00EA1C086C5AEA0F306C5A6C5A12017F1203EA0270487E1208EA181CEA381E38FC3FC0
-12107F8F14>I<38FF0F80383C0700EA1C061304A26C5AA26C5AA3EA03A0A2EA01C0A36C
-5AA248C7FCA212E112E212E4127811177F8F14>I<EAFFF8EAE07012C0EA80E0EA81C0A2
-EA0380EA0700A2EA0E04121CA2EA380812701338EAFFF80E107F8F11>I
-E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fg cmss10 10.95 2
-/Fg 2 42 df<13E0EA01C0EA0380120713005A121EA2121C123CA212381278A3127012F0
-AE12701278A31238123CA2121C121EA27E7E13801203EA01C0EA00E00B2E7CA112>40
-D<12E012707E123C121C121E7EA27E1380A2120313C0A3120113E0AE13C01203A3138012
-07A213005AA2121E121C123C12385A5A0B2E7EA112>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fh cmbx10 12 27
-/Fh 27 123 df<90380FF83F90397FFDFFC03A01FC1FE3E03903F03FC7EA07E0D80FC013
-87ED83C091381F8000A6B612FCA2390FC01F80B2397FF8FFF8A223237FA221>11
-D<EB07F8EB7FFC3801FC0E3803F01F48485AEA0FC0A3141E140C91C7FCA2ECFF80B6FCA2
-380FC01FB2397FF8FFF0A21C237FA220>I<EA07FE381FFF80383F07E06D7E130180121E
-1200A2133FEA03FDEA1F81EA3E01127C12F8A4EA7C02EA7E0C391FF87F803807E03F1916
-7E951C>97 D<B47EA2121FABEB87F0EBBFFCEBF03EEBC01F9038800F8015C0140715E0A7
-15C0A2140F15809038C01F00381E707E381C3FFC38180FE01B237EA220>I<EBFF800007
-13E0380F83F0EA1F03123E127E387C01E090C7FC12FCA6127C127EA2003E13186C133038
-0FC0603807FFC0C6130015167E9519>I<49B4FCA2EB003FAB13FE3807FFBF380FC1FF48
-C67E003E7F127E127CA212FCA7127C127E123E6C5B380F81FF3907FF3FE0EA01FC1B237E
-A220>I<13FE3807FF80380F83C0381E01E0383E00F0127E007C13F8147812FCB512F8A2
-00FCC7FCA3127CA26C1318A26C1330380F80E03803FFC0C6130015167E951A>I<EB1F80
-EBFFE03801F1F0EA03E31207EA0FC3EBC1E0EBC000A6EAFFFEA2EA0FC0B2EA7FFCA21423
-7EA212>I<9038FE0F803903FF9FC0380F83E3381F01F3391E00F000003E7FA5001E5BEA
-1F01380F83E0380BFF80D808FEC7FC0018C8FCA2121C381FFFE014FC6C13FF7E001F1480
-397C001FC00078130F00F81307A3007CEB0F806CEB1F00381F807E6CB45A000113E01A21
-7F951D>I<B47EA2121FABEB83F0EB8FFCEB987EEBA03EEBC03FA21380AE39FFF1FFE0A2
-1B237DA220>I<121E123FEA7F80A4EA3F00121EC7FCA6EAFF80A2121FB2EAFFF0A20C24
-7EA30F>I<B47EA2121FABECFF80A2EC3C00143014E0EB81C00183C7FC1386139E13BE13
-FFEBDF80EB8FC01307806D7E6D7E130080147E39FFE1FFC0A21A237EA21E>107
-D<EAFF80A2121FB3ADEAFFF0A20C237EA20F>I<3AFF03F803F890390FFE0FFE3A1F183F
-183F9039201F201F014001C01380A201801380AE3BFFF0FFF0FFF0A22C167D9531>I<38
-FF03F0EB0FFC381F187EEB203EEB403FA21380AE39FFF1FFE0A21B167D9520>I<13FF00
-0713E0380F81F0381F00F8003E137C48133EA300FC133FA7007C133E007E137E003E137C
-6C13F8380F81F03807FFE0C6130018167E951D>I<38FF87F0EBBFFC381FF07EEBC01F90
-38800F8015C0A2EC07E0A715C0140FA2EC1F8001C01300EBF07EEBBFFCEB8FE00180C7FC
-A8EAFFF0A21B207E9520>I<EBFE033807FF07380FC1CF381F00DF48137F007E7FA2127C
-12FCA7127EA2003E5B6C5BEA0FC13807FF3FEA00FC1300A8903801FFE0A21B207E951E>
-I<38FF0F80EB1FE0381F33F013631343A2EBC1E0EB8000ADEAFFF8A214167E9518>I<38
-07F980EA1FFFEA3807EA7003EAF001A26CC7FCB4FC13F8EA7FFE6C7E6C1380120738003F
-C0EAC007130312E0A200F0138038FC0F00EAEFFEEAC3F812167E9517>I<487EA41203A2
-1207A2120F123FB5FCA2EA1F80ABEB8180A5380F830013C3EA07FEEA01F811207F9F16>
-I<38FF81FFA2381F803FAF5C5C380FC1BF3907FF3FE0EA01FC1B167D9520>I<39FFF01F
-E0A2391FC00700000F1306EBE00E0007130C13F000035BA26C6C5AA26C6C5AA2EBFEE0EB
-7EC0137F6D5AA26DC7FCA2130EA21B167F951E>I<3AFFF3FF83FCA23A1F807C00E0D80F
-C014C08001E013010007017F1380A2D803F0EB0300ECCF8301F81387D801F913C61487D8
-00FD13ECEBFF0315FC017F5BEB7E01013E5BEB3C00A20118136026167F9529>I<39FFF0
-7FC0A2390FC01C006C6C5A6D5A00035B6C6C5A3800FD80137F91C7FC7F6D7E497EEB37E0
-EB67F013C33801C1F8380380FC48487E000E137F39FF81FFE0A21B167F951E>I<39FFF0
-1FE0A2391FC00700000F1306EBE00E0007130C13F000035BA26C6C5AA26C6C5AA2EBFEE0
-EB7EC0137F6D5AA26DC7FCA2130EA2130CA25B1278EAFC3813305BEA69C0EA7F80001FC8
-FC1B207F951E>I<387FFFF0A2387C07E038700FC0EA601F00E0138038C03F005B137EC6
-5A1201485AEBF030EA07E0120FEBC070EA1F80003F1360EB00E0EA7E03B5FCA214167E95
-19>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fi cmtt10 12 29
-/Fi 29 122 df<13E0A538F0E1E0EAFCE7387EEFC0381FFF00EA07FCEA01F0EA07FCEA1F
-FF387EEFC038FCE7E0EAF0E13800E000A513157D991A>42 D<B512F8A3381C0038A51400
-A2130EA3EA1FFEA3EA1C0EA390C7FCA3141CA5B512FCA3161E7E9D1A>69
-D<387FFFFCB5FC7E380E001CA51400A2EB0380A3EA0FFFA3EA0E03A390C7FCA8EA7FE012
-FF127F161E7F9D1A>I<B51280A33801C000B3A6B51280A3111E7C9D1A>73
-D<387F03F838FF87FC387F03F8381C01E0EB03C01480EB07005B131E131C5B13785B7F12
-1DEA1FDC139C130EEA1E0F7F001C13801303EB01C0A2EB00E0A21470007F13FC38FF81FE
-387F00FC171E7F9D1A>75 D<EA7FE0487E6C5A000EC7FCB3141CA5387FFFFCB5FC7E161E
-7F9D1A>I<387FFFC0B512E0A26C13C013047D7E1A>95 D<EA1FF0EA3FFC487EEA780FEA
-300738000380A2137FEA07FF121FEA3F83EA7803127012E0A3EA7007EA780F383FFFFCEA
-1FFDEA07F016157D941A>97 D<12FEA3120EA6133EEBFF80000F13E0EBC1F0EB8070EB00
-38120E141CA7000F13381478EB80F0EBC1E0EBFFC0000E138038063E00161E7F9D1A>I<
-EBFF80000313C0000F13E0EA1F01383C00C04813001270A25AA51270A2007813707E381F
-01F0380FFFE0000313C03800FE0014157D941A>I<EB1FC0A31301A6EA01F1EA07FDEA0F
-FFEA1E0FEA3C07EA7803EA700112E0A7EA7003A2EA3807EA3E0F381FFFFCEA07FDEA01F1
-161E7E9D1A>I<EA01F8EA07FF481380381E07C0EA3C01387800E01270481370A2B512F0
-A300E0C7FC1270A2007813707E381F01F0380FFFE0000313803800FE0014157D941A>I<
-EB07E0EB1FF0EB3FF8EB7878EBF030EBE000A4387FFFF0B5FCA23800E000AF383FFF8048
-13C06C1380151E7F9D1A>I<3801F87C3807FFFE5A381E078C381C0380383801C0A5381C
-0380EA1E07381FFF005BEA39F80038C7FCA27E381FFF8014E04813F83878007C0070131C
-48130EA40070131C0078133C003E13F8381FFFF0000713C00001130017217F941A>I<12
-FEA3120EA6133EEBFF80000F13C013C1EB80E01300120EAC38FFE3FE13E713E3171E7F9D
-1A>I<EA01C0487EA36C5AC8FCA5EA7FE0A31200AF387FFF80B512C06C1380121F7C9E1A>
-I<12FEA3120EA6EB0FFCEB1FFEEB0FFCEB03C0EB0780EB0F00131E5B5B13FC120F13DE13
-8F380E07801303EB01C014E0EB00F038FFE3FE14FF14FE181E7F9D1A>107
-D<EAFFE0A31200B3A6B512E0A3131E7D9D1A>I<387CE0E038FFFBF8EA7FFF381F1F1CEA
-1E1EA2EA1C1CAC387F1F1F39FF9F9F80397F1F1F00191580941A>I<EAFE3EEBFF80B512
-C0EA0FC1EB80E01300120EAC38FFE3FE13E713E317157F941A>I<EA01F0EA07FCEA1FFF
-383E0F80EA3C07387803C0EA700138E000E0A6EAF001007013C0EA7803383C0780EA3E0F
-381FFF00EA07FCEA01F013157D941A>I<EAFE3EEBFF80B512E0380FC1F0EB8070EB0038
-120E141CA7000F13381478EB80F0EBC1E0EBFFC0000E1380EB3E0090C7FCA8EAFFE0A316
-207F941A>I<3801F8E0EA07FEEA0FFFEA1E07EA3C03EA78011270EAE000A613011270EA
-7803123CEA1E0FEA0FFFEA07FCEA01F0C7FCA8EB0FFEA317207E941A>I<387F81F838FF
-8FFC387F9FFE3803FE1EEBF80CEBE000A25B5BAAEA7FFFB5FC7E17157F941A>I<3807FB
-80EA1FFF127FEA7807EAE003A30078C7FCEA7FC0EA1FFCEA07FE38003F801307386001C0
-12E0A2EAF00338FC0780B51200EAEFFEEAE3F812157C941A>I<487E1203A6387FFFE0B5
-FCA238038000AA1470A43801C1E013FF6C1380EB3F00141C7F9B1A>I<38FE0FE0A3EA0E
-00AD1301EA0F033807FFFE7EEA00FC17157F941A>I<387FC7FC00FF13FE007F13FC380E
-00E0A3380701C0A338038380A33801C700A3EA00EEA3137CA2133817157F941A>I<387F
-C7FC00FF13FE007F13FC380E00E0A27EEB01C013811203EB8380EA01C3A2EBC700EA00E7
-A213E61366136E133CA31338A3137813701230EA78E01271EA7FC06C5A001EC7FC17207F
-941A>121 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fj cmbx12 13.14 52
-/Fj 52 122 df<123C127E12FFA4127E123C08087C8711>46 D<EB7F803803FFF03807E1
-F8380F807C48487E48133F003E7F007E1480A400FE14C0AD007E1480A46CEB3F00A26C13
-3E6C6C5A3807E1F86CB45A38007F801A237EA21F>48 D<131C133C13FC12FFA21200B3AA
-387FFFFCA216237CA21F>I<48B4FC000713C0381E07F0383803F8386001FC387C00FE12
-FE14FF147FA2127C003813FFC7FC14FEA2EB01FC14F8EB03F0EB07E01480EB0F00131E5B
-1370EBE003EA01C038038007380700061206380FFFFE5A5A4813FCB5FCA218237DA21F>
-I<48B4FC000713E0381E03F0383801F8003C13FC387E00FEA3123EEA1C01000013FCA2EB
-03F8EB07F0EB0FC03801FF00A2380007E0EB01F014F8EB00FC14FE14FFA21210127C12FE
-A214FEA2387C01FC007013F8383E07F0380FFFC00001130018237DA21F>I<14381478A2
-14F81301130313071306130C131C13381330136013E0EA01C01380EA03005A120E5A1218
-5A12705AB612C0A2390001F800A790387FFFC0A21A237EA21F>I<0018130C001F137CEB
-FFF814F014E014C01480EBFC000018C7FCA513FF001B13E0381F03F0381C00F8000813FC
-C7127EA3147FA2127812FCA3147E5A006013FC1270383801F8381E07E03807FFC03801FE
-0018237DA21F>I<EB1FC0EB7FF03801F0383803E00C3807803E000F137EEA1F005AA200
-7E133C1400A338FE3FC0EB7FF0EB80F800FF13FCEB007C147E5A147FA4127EA4003E137E
-123F6C137C380F80F83807C1F03803FFC038007F0018237DA21F>I<1230123C003FB512
-C0A215804814005C5C38600018A200E05B485B5CC6485AA249C7FC1306130EA25BA2133C
-A25BA213F8A41201A66C5A13601A257DA41F>I<EBFF80000313E0380F01F8381C007C48
-133C141E1278A2127C127E387F803C13E0383FF878381FFDF0EBFFC07E000313E014F800
-0F13FCEA1E1F383C07FEEA7803EB00FF48133F141F140FA3140E1278141C6C1338381F80
-F03807FFE00001130018237DA21F>I<13FF000313C0380F83E0381F00F04813F8007E13
-7CA2147E12FEA3147FA4127E14FF123EEA3F01001F137FEA0FFEEA03FCC7FC147EA2123C
-007E13FCA214F814F0EA7C01383003E0381C0F80380FFF00EA03F818237DA21F>I<141C
-A2143EA3147FA24A7EA39038019FC0A29038031FE0140F01077FEB0607A2010C7F140301
-1C7FEB1801A2496C7EA2017FB5FCA29039E0007F8049133FA2484880151F00038190C712
-0FA2486E7ED8FFF090B51280A229257EA42E>65 D<B612E015FC3903F0007FED3F80ED1F
-C0ED0FE0A216F0A21507150FA216E0151F16C0ED7F80913801FE0090B512F815FF9039F0
-003FC0ED0FE0ED07F016F8150316FCA616F81507ED0FF0ED1FE0ED7FC0B7120015F82625
-7EA42C>I<9138FF8008010FEBF01890393FC03C789039FE0006F8D801F8130348481301
-4848130048481478121F48481438A2007F151890C8FCA2481500A97E16187F123FA26C6C
-1430120F6C6C14606C6C14C06C6CEB0180D800FEEB070090383FC01E90380FFFF8010013
-C025257DA42C>I<B7FCA23903F8007FED0F8015071503A21501A3ED00C01406A21600A2
-140E141EEBFFFEA2EBF81E140E1406A21660A291C7FC16C0A415011503A2ED0F80153FB7
-FCA223257EA428>69 D<B612FEA23803F800151F8181A281A3ED01801403A292C7FCA25C
-5C90B5FCA2EBF80F8080A491C8FCAAB512F0A221257EA427>I<B500E0B512E0A23B03F8
-0003F800AF90B6FCA29038F80003B0B500E0B512E0A22B257EA430>72
-D<B512E0A23803F800B3AFB512E0A213257EA417>I<B539E007FF80A2D803F8C7EA7800
-16605E4B5A0307C7FC150E15185D5D5DEC03804AC8FC140E141F4A7E147FECDFC09038FB
-8FE09038FF0FF0EBFC07496C7E816E7E1400157F82153F6F7E6F7E8215076F7E82B539E0
-3FFFC0A22A257EA430>75 D<B512F0A2D803F8C7FCB3A31503A31506A3150EA2151E153E
-157CEC03FCB6FCA220257EA425>I<D8FFF8EDFFF86D5C0003EEFE00017EEC037EA36D14
-06A26D6C130CA26D6C1318A26D6C1330A36D6C1360A26D6C13C0A2903900FC0180A29138
-7E0300A3EC3F06A2EC1F8CA2EC0FD8A2EC07F0A36E5AEA07803CFFFC01C01FFFF8A23525
-7EA43A>I<D8FFF8903807FFE07FD803FE9038003C006D14187F6D7E6D7E806D7E6D7E13
-036D7E6D7E80EC7F80EC3FC0141FEC0FE015F0EC07F8EC03FC1401EC00FE157F1698ED3F
-D8ED1FF8150F15071503A2150115001678486C1438D8FFFC1418A22B257EA430>I<B67E
-15F83903F801FEEC007F6F7E6F7EA282A55EA24B5A4BC7FCEC01FE90B512F815C09038F8
-03F06E7E6E7E157EA2157FA482A31760ED3FC017C0ED1FE1B539E00FFF80923801FE002B
-257EA42E>82 D<01FF1380000713E3380F80F7381E001F48130F481307140312F81401A2
-7E91C7FCB4FCEA7FE013FE383FFFE014F86C13FE00077F6C1480C67E010313C0EB003FEC
-0FE01407A200C01303A315C07E6C13076C14806CEB0F0038FFC03E38E3FFF838803FE01B
-257DA422>I<007FB612F8A2397E00FE010078EC00780070153800601518A200E0151C16
-0C5AA4C71400B3A390B512FEA226247EA32B>I<B539E00FFFC0A2D803F8C7EA78001630
-B3A700015D7F00005D137C6D495A6D0107C7FC90380FE03E903803FFF89038007FC02A25
-7EA42F>I<B5398001FFE0A2D807F8C7EA1C0000031518A26D1438000115306D14700000
-15607F6D5C80013F495AA2ECC003011F91C7FC6E5A010F130614F001075BA26D6C5AA2EC
-FC3801011330ECFE700100136014FF6E5AA26E5AA36EC8FCA2140EA22B257FA42E>I<B5
-3B81FFFE01FFF0A23D07F0001FC0000F007013066C6C010F5CA26F7E6C6C5EA26D496C13
-38000017304B7E017F01195CA291388030FE013F5E829139C0607F01011F5E03E0138190
-280FE0C03F83C7FCA29139F1801FC3010715C617E69139FB000FEE010315EC02FF14FC6D
-486D5AA24A130301005DA24A130102785CA202306D5A3C257FA43F>I<B539C001FFE0A2
-D807F8C7EA1C006C6C141816386C6C14306C6C5C16E06D6C5B6D6C485A1503D91FE090C7
-FC90380FF006150E903807F80C6D6C5A15386D6C5A903800FF6015E06E5A6E5AAE90380F
-FFFCA22B257FA42E>89 D<EA07FF001F13E0383E03F0383F00F880147E121EC7FCA3EB1F
-FE3803FE7EEA0FC0EA1F00123E127E5AA314BEEA7E01383F073E391FFE1FE03807F00F1B
-187E971E>97 D<EAFFC0A2120FACEBC1FCEBCFFF9038FC0FC09038F007E09038C003F0A2
-EC01F8A215FCA815F8A2EC03F013E09038F007E090381C1F80390E0FFF00380C03F81E26
-7FA522>I<EB7FE03803FFF83807C07C381F80FC13005A007E1378140012FEA8127E127F
-6C130CEA1F80EBC0183807E0703803FFE038007F0016187E971B>I<ECFFC0A2140FAC13
-7F3803FFCF380FE0FF381F803F383F000FA2127EA212FEA8127EA27E141F381F803F380F
-C0EF3903FFCFFC3800FE0F1E267EA522>I<137F3803FFC03807C1F0380F80F8EA1F0048
-137C127E147E12FEA2B512FEA248C7FCA3127EA214067E6C130C380F80183807E0703803
-FFE038007F8017187E971C>I<EB1FC0EB7FF0EA01F83803E1F8120713C1380FC0F01400
-A7B5FCA2EA0FC0B3A2EAFFFEA215267EA513>I<3901FF07C00007EBDFE0380F83F1EA1F
-01393E00F800007E7FA6003E5B6C485A380F83E0EBFFC0001190C7FC0030C8FCA2123812
-3C383FFFE06C13FC806C7F481480383C003F48EB0FC000F81307A4007CEB0F806CEB1F00
-381F807E3807FFF8C613C01B247E971F>I<EAFFC0A2120FAC14FE9038C3FF809038CE0F
-C013D89038D007E013E0A213C0AF39FFFC7FFEA21F267EA522>I<120FEA1F80EA3FC0A4
-EA1F80EA0F00C7FCA7EA7FC0A2120FB3A2EAFFF8A20D277EA611>I<EAFFC0A2120FACEC
-1FF0A2EC0780EC0E005C14305CEBC1C0EBC38013C713DFEBFFC0EBE7E0EBC3F0138180EB
-80FC147E80A2EC1F80EC0FC039FFF83FF8A21D267FA520>107 D<EAFFC0A2120FB3B0EA
-FFFCA20E267EA511>I<26FF80FE137F903A83FF81FFC03B0F8E0FC707E0019813CC903A
-9007E803F001A013F0A201C013E0AF3BFFFC7FFE3FFFA230187E9733>I<38FF80FE9038
-83FF80390F8E0FC0139890389007E013A0A213C0AF39FFFC7FFEA21F187E9722>I<EB7F
-803803FFF03807C0F8381F807E48487EA2007EEB1F80A200FE14C0A8007E1480A26CEB3F
-00A2381F807E6C6C5A3803FFF038007F801A187E971F>I<38FFC1FCEBCFFF390FFC1FC0
-9038F007E001C013F0140315F8140115FCA8EC03F8A215F0EBE0079038F00FE09038DC1F
-809038CFFF00EBC3F801C0C7FCA9EAFFFCA21E237F9722>I<38FF83E0EB8FF8380F8C7C
-EB90FC13B013A01478EBE0005BAEEAFFFEA216187F9719>114 D<3807F8C0EA1FFFEA3C
-07EA7001EAF000A300FC1300B47EEA7FFC7F383FFF80000F13C0120338001FE01303EAC0
-01A212E014C0EAF00338FC078038EFFF00EAC3FC13187E9718>I<13C0A41201A3120312
-07120F121FB512C0A2380FC000AC1460A63807E0C013E13801FF8038007E0013237FA218
->I<39FFC07FE0A2000F1307B0140FA200071317EBE0673903FFC7FE38007F071F187E97
-22>I<39FFF80FF8A2390FC001C015803907E00300A26D5A00031306EBF80E0001130C13
-FC00005B13FEEB7E30A26D5AA214E06D5AA26D5AA26DC7FCA21D187F9720>I<3BFFF9FF
-E0FF80A23B1FC03F001C00000F6D13181580D807E05CA29039F03FC07000030137136015
-E02601F8635BA29038FCE3F1000001C15B15F990267F80FBC7FCA215FF90383F007EA201
-1E133CA3010C131829187F972C>I<39FFF83FF0A2390FC00F003807E00E6C6C5A6D5A6C
-6C5A00001360EB7EC06D5AA2131F6D7E497E80EB33F81361EBE0FC3801C07E3803807F39
-07003F8048131F39FFC07FF8A21D187F9720>I<39FFF80FF8A2390FC001C015803907E0
-0300A26D5A00031306EBF80E0001130C13FC00005B13FEEB7E30A26D5AA214E06D5AA26D
-5AA26DC7FCA21306A25B1230EA781CEAFC185B1370EA68E0EA7FC0001FC8FC1D237F9720
->I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fk cmsl10 10.95 48
-/Fk 48 122 df<EB03E0EB1C181338EB703C13E014383801C000A5485A387FFFF0380380
-70A4380700E0A6380E01C0A6381C0380001E13C038FF0FF016207E9F19>12
-D<EB03F4EB1C1CEB383C137013E01438EA01C0A538038070387FFFF038038070A4380700
-E0A6380E01C0A6381C0380001E13C038FF9FF016207E9F19>I<EAFFF0A20C027E8A0F>
-45 D<137EEA01C338030180000713C0EA0E0014E05AA2EA3C0112381278A538F003C0A5
-1480130712E01400A2130E1260EA701CEA3038EA3870EA0FC0131F7C9D17>48
-D<13181338EA01F8EA0E701200A513E0A6EA01C0A6EA0380A6EA07001380EAFFFC0E1E7B
-9D17>I<1408140C141C143CA2147C147E149EA2EB011EA21302801304A21308A2011013
-8014071320A2EB7FFF90384007C0EB8003A2EA0100A21202EC01E01206001F130339FF80
-1FFE1F207F9F22>65 D<0007B5FC3900F803C090387801E0EC00F04913F8A515F03801E0
-01EC03E015C0EC0F809038FFFE009038E00F803903C003C0EC01E015F0A21400A2485A14
-01A215E01403EC07C0390F000F80EC3E00B512F01D1F7E9E20>I<ECFE02903807018690
-381C004E0170133E49131E4848131C4848130C120748C7FC5A121E003E1408003C140012
-7CA45AA4127815101520A27E1540001C14806CEB01006C13023803800C3800E030EB3FC0
-1F217C9F21>I<0007B57E3900F801E0903878007081497F151E150E150FA348481480A6
-484814005DA3151E153E4848133C5DA25D4A5A4A5A260F000FC7FC143CB512F0211F7E9E
-23>I<0007B512FC3900F8007C0178131C150C5B1504A414043901E00800A31438EBFFF8
-EBE0383803C010A4EC00081510485AA21520A2156015C0380F00011407B612801E1F7E9E
-1F>I<0007B512F83900F800780178133815185B1508A53901E00800A314181438EBFFF8
-3803C0301410A491C7FC485AA648C8FC7FEAFFFC1D1F7E9E1E>I<3A07FF83FFC03A00F8
-007C000178133CA2495BA648485BA490B5FCEBE0004848485AA64848485AA64848485A01
-807F39FFF07FF8221F7E9E22>72 D<3807FF803800F8001378A25BA6485AA6485AA6485A
-A648C7FC7FEAFFF0111F7E9E10>I<3A07FF803FE03A00F8001F000178130C5D4913205D
-5D4AC7FC1402140848485A5C146014F013E1EBE4F83803C878EBD07CEBE03CEBC03E141E
-141F48487E81140781140381380F00016D487E39FFF00FFE231F7E9E23>75
-D<3807FFE0D800FCC7FC1378A25BA6485AA6485AA41580EC0100EA0780A25C1402140614
-0E380F001E147CB512FC191F7E9E1C>I<D807F8EC7FE00000ED7C00017814BCA2019C49
-5AA21502A2018E13041508D8010E5C1510A26D1320A215400002EC41E09038038081EC81
-01A21482A23A0401C403C0A214C8A2EB00F0000C13E04B5A001E01C07FD8FFC0EB7FFC2B
-1F7E9E2A>I<D807F8EB7FC0D8007CEB1F00150C015E1304019E5B138FA2EB8780A2EB83
-C0D801035BEB01E0A2EB00F0A2147800025C143CA2141EA2140F485CEC07C0A21403A214
-01000C5C001E1300B47E221F7E9E22>I<EB01FCEB0E0790383801C090387000E0484813
-F048481378485A153C48C7FC5A001E143E123E123C127CA448147CA3157815F81278EC01
-F0007C14E01403003C14C0001CEB0780001EEB0F006C131E380780383801C0E038007F80
-1F217C9F23>I<0007B5FC3900F803C090387800F015785B157CA41578484813F815F0EC
-01E0EC03C0EC0F00EBFFFCD803C0C7FCA6485AA648C8FC7FEAFFF81E1F7E9E1F>I<3807
-FFFE3900F8078090387801E0EC00F05B15F8A415F03801E00115E0EC03C0EC0780EC1E00
-EBFFF03803C03880141E140EA2140F48485AA51501D80F0013029038800F8239FFF8078C
-C7EA01F020207E9E22>82 D<EB1F82EB7066EBC01E3801800EEA030048130C0006130412
-0EA3000F1300A27FEA07F013FF6C13C06C13E038003FF0EB03F813001478143CA2004013
-38A3143000601370146000F013C038E8018038C60300EA81FC17217E9F19>I<003FB512
-F0383C078000301430126039400F0010A212C01280A3D8001E1300A65BA65BA65B7F383F
-FFE01C1F7A9E21>I<39FFF00FF8391F0003E06CEB01801400001EEB0100A6481302A648
-5BA600705BA25CA200785B1238001813C06C48C7FCEA0706EA01F81D20799E22>I<3BFF
-F07FF81FF03B1F000FC007C0001E903907800380001FED01006C1502140F5EEC17C00213
-5B142301805C000713435E14C3913883E0401481D981015B13C1D803C213E193C7FC13C4
-15F2EBC80015F4EA01F015F85B5D5B15605B000014402C207A9E2F>87
-D<EA07F8EA0C0CEA1E061307121C1200A313FFEA07C7EA1E07EA3C0E127800F01310A313
-1EEB2E2038784F40381F878014147D9317>97 D<1207123F120F7EA2120EA65A137CEA1D
-83381E0180001C13C0EB00E05A14F0A5387001E0A214C013031480EB0700EAE80EEACC38
-EA83E014207B9F19>I<13FEEA0383380E0780121C0038130090C7FC12785AA45AA37E5B
-EA70026C5AEA1C18EA07E011147D9314>I<1438EB01F8EB00781438A21470A614E013FC
-EA0382EA0601121CEA3C00383801C0127812F0A438E00380A412F0EA700738380F00381C
-37803807C7E015207D9F19>I<13F8EA070EEA0E07381C038012381278127012F0B5FC00
-F0C7FCA25AA46C5AEA7002EA3004EA1C18EA07E011147D9314>I<EB07C0EB1C60EB30F0
-1360EBE0E0EBC0001201A5485AEA3FFCEA0380A448C7FCA6120EA65A121EEAFFC014207F
-9F0E>I<140EEB3E11EBE1A33801C1C2380381E0EA07801301120FA3380703C01480EB87
-00EA04FC48C7FCA21218121CEA0FFF14C014E0381800F04813305A5AA3006013606C13C0
-381C0700EA07FC181F809417>I<13E0120712011200A2485AA6485AEB8F80EB90E013A0
-EBC0601380000713E01300A5380E01C0A6381C0380001E13C038FF8FF014207E9F19>I<
-EA01C0EA03E0A213C0EA0180C7FCA6EA0380121F12071203A2EA0700A6120EA65A121EEA
-FF800B1F7F9E0C>I<13E0120712011200A2485AA6485AEB81FCEB80F014C0EB81801400
-EA07045B13181338137C131C120E7FA2130F7F1480EA1C03381E07C038FF8FF016207E9F
-18>107 D<13E0120712011200A2EA01C0A6EA0380A6EA0700A6120EA65A121EEAFF800B
-207F9F0C>I<390387C07C391F9861863907A072073903C03403EB80380007EB7807EB00
-70A5000EEBE00EA64848485A001EEBE01E3AFFCFFCFFC022147E9326>I<38038F80381F
-90E0EA07A03803C0601380000713E01300A5380E01C0A6381C0380001E13C038FF8FF014
-147E9319>I<13FCEA0387380E0180381C00C04813E0A24813F012F0A438E001E0A214C0
-130300F0138038700700EA380E6C5AEA07E014147D9317>I<EBE3E03807EC383801F01C
-6C487E140F48487E1580A53903800F00A2140E141E141C5C38074070EB61C0011FC7FC90
-C8FCA3120EA4121EEAFFC0191D809319>I<EBFC2038038260EA0702381E01E0123C0038
-13C0127812F0A438E00380A212F0A21307127038380F00EA1C37EA07C7EA0007A3130EA4
-131EEBFFC0131D7D9318>I<EA038E381FB380EA07C71203EB8300EA078090C7FCA5120E
-A65A121EEAFFC011147E9312>I<EA01F9EA0607EA080312181301EA3802EA3C00121F13
-F0EA07FCEA01FEEA001FEA40071303A212601306EAF004EAC818EA87E010147F9312>I<
-1380EA0100A35A5A5A121EEAFFF8EA0E00A45AA65A1310A41320A2EA1840EA0F800D1C7C
-9B12>I<381C0380EAFC1FEA3C07EA1C03A238380700A6EA700EA4131EA25BEA305E381F
-9F8011147B9319>I<38FF83F8381E00E0001C13C01480121E380E01005B13025B12075B
-A25BEA039013A013E05B5B120190C7FC15147C9318>I<39FF9FE1FC393C078070391C03
-0060148015401580EA0E0790380D81001309EB19C21311380F21C4EA0720EB40C814E8EB
-80F0A26C485A1460000213401E147C9321>I<381FF0FF3803C0780001137014403800E0
-C0EBE180EB73001376133CA2131C132E134E1387EA0107380203801204380C01C0383C03
-E038FE07FC18147F9318>I<390FF83F803901E00E00EBC00C140813E000005B14301420
-5C13705CA20171C7FC1339133A133E133C133813181310A25BA25BEA70C0EAF08000F1C8
-FC12E61278191D809318>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fl cmti10 10.95 20
-/Fl 20 122 df<EC3FE0ECE010903801803801031378A290380700301500A3130EA390B5
-12E0EB0E0090381C01C0A4EC03801338A3EC0700A2137801701310EC0E20A313609038E0
-0640EC038091C7FC5BA21201EA3180127948C8FC1262123C1D29829F1A>12
-D<127012F8A212F012E005057B840E>46 D<EBF180380389C038070780EA0E03121C123C
-383807001278A3EAF00EA31420EB1C40A2EA703C135C38308C80380F070013147C9317>
-97 D<137EEA01C138030080EA0E07121E001C1300003CC7FC5AA35AA45B12701302EA30
-0CEA1830EA07C011147C9315>99 D<1478EB03F8EB0070A414E0A4EB01C0A213F1EA0389
-38070780EA0E03121C123C383807001278A3EAF00EA31420EB1C40A2EA703C135C38308C
-80380F070015207C9F17>I<137CEA01C2EA0701120E121C123CEA3802EA780CEA7FF0EA
-78005AA4EA7001A21302EA380CEA1830EA07C010147C9315>I<EB3C60EBE2703801C1E0
-EA0380EA07005A380E01C0121EA3383C0380A4EB0700A2EA1C0F1317EA0C2EEA03CEEA00
-0EA25BA21230EA7838485AEA60E0EA3F80141D7E9315>103 D<13C0EA01E0A213C0C7FC
-A7120E12131223EA4380EA4700A21287120EA35AA3EA38401380A21270EA31001232121C
-0B1F7C9E0E>105 D<EA03C0121FEA0380A4EA0700A4120EA45AA45AA45AA3127112E2A4
-126412380A207C9F0C>108 D<391C0F80F0392630C318394740640C903880680EEB0070
-A2008E495A120EA34848485AA3ED70803A3803807100A215E115623970070064D8300313
-3821147C9325>I<381C0F80382630C0384740601380EB0070A2008E13E0120EA3381C01
-C0A3EB038400381388A2EB0708EB031000701330383001C016147C931A>I<137CEA01C3
-38030180000E13C0121E001C13E0123C1278A338F003C0A3EB07801400EA700F130EEA30
-18EA1870EA07C013147C9317>I<3801C1E0380262183804741C1378EB701EA2EA08E012
-00A33801C03CA3143838038078147014E0EBC1C038072380EB1E0090C7FCA2120EA45AA2
-B47E171D809317>I<EA1C1EEA266138278380EA47871307EB0300008EC7FC120EA35AA4
-5AA45A123011147C9313>114 D<13FCEA0302EA0601EA0C03130713061300EA0F8013F0
-EA07F8EA03FCEA003E130E1270EAF00CA2EAE008EA4010EA2060EA1F8010147D9313>I<
-EA018013C0EA0380A4EA0700A2EAFFF0EA0700120EA45AA45AA31320EA7040A21380A2EA
-3100121E0C1C7C9B0F>I<000E13C0001313E0382301C0EA4381EA4701A238870380120E
-A3381C0700A31410EB0E201218A2381C1E40EA0C263807C38014147C9318>I<380E0380
-EA1307002313C0EA4383EA4701130000871380120EA3381C0100A31302A25BA25BEA0E30
-EA03C012147C9315>I<000EEBC1C0001313E3392301C3E0384381C1384701C015603987
-038040120EA3391C070080A3EC0100A21306EB0F02000C5B380E13083803E1F01B147C93
-1E>I<000E13C0001313E0382301C0EA4381EA4701A238870380120EA3381C0700A4130E
-1218A2EA1C1EEA0C3CEA07DCEA001CA25B12F05BEAE060485AEA4380003EC7FC131D7C93
-16>121 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fm cmr8 8 29
-/Fm 29 118 df<126012F0A212701210A21220A21240A2040A7D960A>39
-D<EAFF80A2090280870C>45 D<1206120E12FE120EB1EAFFE00B157D9412>49
-D<13101338A3135CA3138EA3EA0107A238020380A33807FFC0EA0401A2380800E0A20018
-13F0123838FE03FE17177F961A>65 D<EAFFFE381C0380EB00E014601470A414E0EB01C0
-381FFF8014C0381C00E0147014301438A4147014E0EB01C0B5120015177F9619>I<EBFC
-1038038330380E00B0481370481330123000701310126012E01400A51410126012700030
-132012386C13406C138038038300EA00FC14177E9619>I<B5FC381C01C0EB00E0143014
-381418141C140C140EA7140C141CA2143814301460EB01C0B5120017177F961B>I<B512
-E0EA1C00146014201410A3EB0400A3130CEA1FFCEA1C0C13041408A2130014181410A214
-3014F0B5FC15177F9618>I<B512E0EA1C00146014201410A3EB0400A3130CEA1FFCEA1C
-0C1304A390C7FCA6EAFFC014177F9617>I<EAFFC0001CC7FCAD1420A31460A2144014C0
-1303B5FC13177F9616>76 D<00FEEB03F8001E14C000171305A338138009A23811C011A3
-3810E021A2EB7041A3EB3881A2EB1D01A2130EA2123839FE040FF81D177F9620>I<EAFF
-FE381C0380EB00C014601470A4146014C0EB0380381FFE00001CC7FCAAB47E14177F9618
->80 D<EAFFFC381C0380EB00C014E01470A414E014C0EB0380381FFE00381C0780EB01C0
-EB00E0A514E1A2147238FF803C18177F961A>82 D<EA0FC4EA302CEA601CEA400CEAC004
-A3EAE0001270127FEA3FE0EA0FF8EA01FCEA001C130E13061280A3EAC004EAE008EAD810
-EA87E00F177E9614>I<387FFFF83860381800401308A200801304A300001300AF3803FF
-8016177F9619>I<12FCA212C0B3AB12FCA206217D980A>91 D<EA3FC0EA70601330EA20
-381200EA03F8EA1E3812301270EAE039A21379EA70FFEA1F1E100E7F8D12>97
-D<12F81238A8EA39F0EA3E0CEA380613077F1480A414005B1306EA361CEA21F011177F96
-14>I<EA07F0EA18381230EA7010EA600012E0A41260EA70081230EA1830EA07C00D0E7F
-8D10>I<EA0FC0EA1860EA3030EA7038EAE018EAFFF8EAE000A31260EA7008EA3010EA18
-30EA07C00D0E7F8D10>101 D<1203EA0780A2EA0300C7FCA5EA1F801203AF1243EAE300
-12E7127C091D82960B>106 D<12F81238A8133E13381330134013801239EA3FC0EA39E0
-123813F01378133CA2EAFE7F10177F9613>I<EAF8F8EA3B1CEA3C0E1238AA38FE3F8011
-0E7F8D14>110 D<EA07C0EA1830EA3018EA600CA2EAE00EA5EA701CEA3018EA1830EA07
-C00F0E7F8D12>I<EAF9F0EA3E1CEA380613077F1480A414005B130EEA3E1CEA39F00038
-C7FCA512FE11147F8D14>I<EAF9E0EA3A70123CEA38201300A9B4FC0C0E7F8D0E>114
-D<EA1F40EA60C0EAC040A2EAE000B4FCEA7F80EA1FC0EA01E0EA8060A212C0EAE0C0EA9F
-000B0E7F8D0E>I<1208A31218A21238EAFFC0EA3800A71340A4EA1C80EA0F000A147F93
-0E>I<EAF83EEA380EAA131EEA1C2E3807CF80110E7F8D14>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fn cmsy9 9 2
-/Fn 2 106 df<13801201EA0300A31206A25AA35AA35AA25AA35AA21260A37EA27EA37E
-A37EA27EA3EA0180120009267D9B0F>104 D<12C0A21260A37EA27EA37EA37EA27EA3EA
-0180A2EA0300A31206A25AA35AA35AA25AA35AA209267E9B0F>I
-E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fo cmsltt10 10.95 29
-/Fo 29 122 df<1206120FEA1F80120FA21203EA0700A25A120E123C127C12F01260090E
-769B18>39 D<387FFFC0B512E0A26C13C013047C8F18>45 D<133E13FF000313803807C3
-C0EA0F01000E13E0EA1C00123C003813F014705AA34813E0A4EB01C0A2130300F01380EA
-7007EB0F00EA781E6C5AEA1FF85BEA07C0141C7C9B18>48 D<13181338A2137813F81203
-120F137012041200A413E0A6EA01C0A6EA7FFE12FF127F0F1C7B9B18>I<EB3E18EBFFB8
-4813F8EA07C1EB8078EA0E00121E001C137048133014005AA35AA614C0EA7001A2130338
-380780383C0F00EA1FFE6C5AEA03F0151C7C9B18>67 D<3807FFC014E014F03801C0F814
-78143C141CEA0380141EA2140EA33807001CA4143C1438120E147014F0EB01E0EB03C013
-07387FFF8038FFFE00EA7FF8171C7F9B18>I<0007B5FC5A7E3801C007A3140638038000
-A2EB818014C0A213FF481380A21303A2140090C7FC120E140C141CA4387FFFF8B5FC7E18
-1C7F9B18>I<EB1FF8EB3FFCEB1FF8EB01C0A4EB0380A6EB0700A6130EA2124012E06C5A
-EAE03CEAFFF86C5AEA1FC0161C7C9B18>74 D<EA07FC487E6C5AEA01C0A4485AA648C7FC
-A6120E14301470A4B512E0A3141C7E9B18>76 D<3907E01F80000FEB3FC0000714803903
-B02E00146EA214CE380730DC1331149CA21333141C000E5B13371336133E133C131848C6
-5AA638FE03F800FF7F00FE5B1A1C7F9B18>I<126012F0A37E1278A3127C123CA3123E12
-1EA3121F7EA313801207A313C01203A413E01201A313F0120013600C24789F18>92
-D<387FFFC0B512E0A26C13C013047E7F18>95 D<EA03FC48B4FC4813801303380601C012
-00A2137FEA07FF121FEA3F813878038012F012E0A21307EA701F387FFFF0EA3FFBEA0FE1
-14147D9318>97 D<127EA3120EA45A137CEA1DFF001F13801383381E01C0123CEB00E012
-38A4387801C0A2EB0380A2EB0F00EA7C1FEAFFFCEAEFF8EA63E0131C7C9B18>I<EB07E0
-A31300A4EB01C0EA01F1EA07FDEA0FFFEA1E0FEA3C0738780380127012E0A4EB0700A25B
-5B6C5AEA787F383FFFC0381FEFE0380F87C0131C7C9B18>100 D<13F8EA07FE487E381F
-0780EA3C03387801C0127012E0A2B5FCA2148000E0C7FCA213033870078038780F00EA3F
-FE6C5AEA07F012147B9318>I<EB01F8EB07FC131FEB1E3CEB38181400A25B381FFFF05A
-7E38007000A25BA6485AA6EA7FFE12FF127F161C7E9B18>I<EB1E1F90387FFF8090B5FC
-3901E1E3003803C0E01380EA0700A3495AA238038780EA07FF49C7FCEA0E7890C8FCA26C
-B47E4813E0487F383C007848133812705AA2147800705B387C03E0383FFFC0000F90C7FC
-EA03FC191F809318>I<14C0EB01E013031301EB00C01400A4EBFFC0A31301A2EB0380A6
-EB0700A6130EA65BA2EA6038EAF078B45A5BEA3F8013277F9C18>106
-D<EA07E0120F12071200A4485AEBC7FEA3EBC1E0EBC3C038038780EB8F00139E13BC13FE
-13EEEA07CF1387EB0780130314C01301387FC7F838FFE7FC387FC7F8171C7F9B18>I<EA
-0FFCA3EA001CA45BA65BA65BA6B5128014C01480121C7D9B18>I<13FCEA03FF000F1380
-EA1F07383C03C0EA7801007013E0EAE000A4EB01C0A2EB0380EAF007EB0F00EA7C3EEA3F
-FC6C5AEA07E013147C9318>111 D<EBF8C0EA03FDEA0FFFEA1F0FEA3C07387803801270
-12E0A4EB0700A25BA26C5AEA787FEA3FFEEA1FEEEA078EEA000EA35BA43801FF80A3121E
-7C9318>113 D<381FE1F8EBE7FCEBEFFE3800FE1EEBFC0C3801F8005B5B5BA3485AA6EA
-FFFC7F5B17147E9318>I<EBFE603807FFE05AEA1F01121C003813C0EA3C00001F1300EA
-0FF8EA07FE3800FF801307383001C01270A238780380EA7C07B51200EAEFFEEA63F81314
-7D9318>I<387E07E0EAFE0FEA7E07EA0E00A2381C01C0A638380380A41307131F383FFF
-E06C13F03807E3E014147D9318>117 D<38FF87F8138F1387383800E0EB01C0A3148013
-E3EA39F31233EB7700A212371376EA3666136EEA3C7CA2EA383815147C9318>119
-D<381FE3FC13E713E33803C3C000011380EBE700EA00EE13FC137C1338137813FCEA01DC
-EA038E12071307120E38FF1FE0EB9FF0EB1FE016147E9318>I<380FF1FE381FF9FF380F
-F1FE3803807013C0000113E0A213C114C0A23800E380A2EBE700A213E6136E136C137C13
-78A21370A25BA2485A12F3EAF780B4C7FC5A1278181E7F9318>I
-E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fp cmcsc10 10.95 12
-/Fp 12 121 df<1318A2133CA3134EA213CF1387A238010380A2000313C0EA0201A23807
-FFE0EA0400A2481370A2001813380038137838FE01FF18177F961C>97
-D<EB7E083803819838070078000C1338001C13185A00781308127000F01300A700701308
-127812386C1310120C000713603803818038007E0015177E961B>99
-D<B512C0EA1C011300144014601420A213081400A21318EA1FF8EA1C1813081410A21300
-14301420A21460EB01E0B5FC14177E9619>101 D<B512C0EA1C011300144014601420A2
-13081400A21318EA1FF8EA1C181308A390C7FCA6EAFFC013177E9618>I<EB7E08380381
-9838070078000C1338001C13185A00781308127000F01300A5EB03FEEB00381270127812
-387E120C1207380380D838007F0817177E961D>I<EAFF80EA1C00B3A3EAFF8009177E96
-0E>105 D<38FC01FC381E007014201217EA1380A2EA11C0EA10E0A213701338A2131C13
-0E1307A2EB03A0EB01E0A213001460123800FE132016177E961C>110
-D<13FE38038380380E00E0481370003C1378003813380078133C0070131C00F0131EA700
-70131C0078133C00381338003C1378001C13706C13E0380383803800FE0017177E961D>
-I<EAFFFCEA1C07EB03C0130114E0A414C01303EB0700EA1FFC001CC7FCAAB47E13177E96
-19>I<EA0FC4EA302CEA601CEA400CEAC004A3EAE0001270127FEA3FE0EA0FF8EA01FCEA
-001C130E13061280A3EAC004EAE008EAD810EA87E00F177E9615>115
-D<38FF81FC381C00701420B0000C1340120E6C138038018300EA007C16177E961C>117
-D<38FF80FE381F0070000E13606C1340EB80803803C100EA01C3EA00E213F4137813387F
-133E134E13C7EB8780380103C0EA0201380600E0000413F0000C1370003C137800FE13FF
-18177F961C>120 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fq cmbx12 17.28 34
-/Fq 34 121 df<EB01C01303130F137FEA1FFFB5FC13BFEAE03F1200B3B1007FB512F0A3
-1C2E7AAD28>49 D<EB3FE03801FFFE0007EBFF80D80F8013C0391E003FE00038EB1FF000
-7CEB0FF8007EEB07FCB4FC018013FEA21403A2EA7F00003E1307C7FC15FCA2EC0FF8A215
-F0EC1FE015C0EC3F80EC7F00147E14F8495A495A495A49C7FC011E130E5B133849131E49
-131C485A48C7123C48B512FC5A5A5A4814F8B6FCA31F2E7CAD28>I<913A03FF80018002
-3FEBF00349B5EAFC0701079038003F0FD91FF8EB079FD93FC0EB01FFD9FF807F4848C812
-7F4848153F0007161F49150F485A001F1607A2485A1703127FA24992C7FCA212FFA9127F
-A27FEF0380123FA26C7E1707000F17006C7E6D150E0003161E6C6C151C6C6C6C1478D93F
-C05CD91FF8EB03E0D907FFEB3F800101D9FFFEC7FCD9003F13F80203138031317CB03A>
-67 D<B812F0A3C6903880003FEE07F816031600A21778A21738A3171C1507A31700A25D
-5D5D91B5FCA3EC803F818181A21707A392C7120EA4171EA2173CA2177C17FC1601160716
-3FB812F8A330317EB035>69 D<B812E0A3C6903880007FEE0FF016031601A21600A21770
-A31738A21507A21700A35D5D5D91B5FCA3EC803F818181A592C8FCACB612C0A32D317EB0
-33>I<DA03FF1303027FEBF00749B5EAFC0F01079038007E1FD91FF0EB0FBFD97FC0EB03
-FF49487F4848C87E485A0007824848815B001F82A2484881A2127FA24992C7FC12FFAA03
-07B512F8127F7FDB00011300123FA26C7EA2120F7F6C7E12036C7E6C6C7E6D6C5BD91FF8
-497ED907FFEB3E3F01019038FFFC1F6D6CEBF00F0203EB800335317CB03F>I<B61280A3
-C6EB8000B3B3A7B61280A319317EB01E>73 D<B67EA3000190C9FCB3A9EE0380A4160717
-00A25EA35E5E5E5E4B5A150FB7FCA329317DB030>76 D<B56C49B512C08080C66D903900
-03E0006E6E5AEBEFFC13E780EBE3FF01E17F01E07F6E7E143F816E7E6E7E6E7E14036E7E
-16806E13C0ED7FE0ED3FF0151F16F8ED0FFCED07FEED03FF6F13818117C1EE7FE1EE3FF1
-EE1FF9EE0FFD160717FF828282177F173FA2171F170F486C1507B500E014031701A23A31
-7EB03F>78 D<B712E016FEEEFF80C6D9800013E0EE3FF0EE0FF8EE07FCA2EE03FEA217FF
-A717FEA2EE07FC17F8160FEE3FE0EEFFC091B6120016F80280C8FCB3A2B67EA330317EB0
-37>80 D<B77E16F816FEC690398003FF809238007FE0EE1FF0707EA283160783A65F160F
-5F4C5A4C5A4C5ADB03FFC8FC91B512F816E091388007F8ED01FC6F7E167F83707EA283A5
-83A4F0038017F8161F1900706C5AB6398003FE0E933801FFFC9338001FF039317EB03C>
-82 D<007FB8FCA39039C00FF801D87E00EC003F007C82007882A200708200F01780A348
-1603A5C792C7FCB3AA017FB6FCA331307DAF38>84 D<B6D88003B51280A3C60180C73807
-C000715AB3AE137F4DC7FC80013F150EA26D6C5C6D6C5C6D6C5C6D6C495A903A00FF801F
-C0023FB55A020F49C8FC020013E039317EB03E>I<B500FC91B5FCA3000390C8EA03C06C
-17806E14076C170080017F150EA26E141E013F151C6E143C011F153880010F5D8001075D
-A26E130101035D6E13036D5D15806D4AC7FCA26F5A027F130EEDE01E023F131CEDF03C02
-1F133815F8020F5BA2EDFCF002075B15FF6E5BA26E5BA26E90C8FCA3157EA2153CA23831
-7EB03D>I<EBFFF0000313FF390F803F809038C00FE0486C6C7EA26E7ED80FC07FEA0780
-C7FCA414FF131FEBFFE33803FC03EA0FF0EA1FC0123FEA7F80A2EAFF00A31407A2387F80
-0D393FC01DFE3A1FE078FFF03907FFE07FC6EB803F24207E9F27>97
-D<EA01F812FFA3120F1207ADEC3FE0ECFFFC9038FBE07F9039FF001F8049EB0FC04914E0
-49EB07F016F8A2ED03FCA316FEA816FCA3ED07F8A216F06DEB0FE06D14C001E7EB3F8090
-39C3C0FE00903880FFF89038003FC027327EB12D>I<EB0FFF017F13C03901FC01F03803
-F0033907E007F8120FEA1FC0003FEB03F0EC01E04848C7FCA312FFA8127FA36C6C131CA2
-001F14386C7E000714703903F001E03901FC07C039007FFF00EB0FF81E207D9F24>I<ED
-0FC0EC07FFA3EC007F153FADEB07F8EB3FFF9038FE07BF3903F801FF3907E0007F120F48
-48133F123FA2485AA312FFA8127FA36C7EA2121F6C6C137F000714FF2603F00313E03A01
-FC0F3FFE38007FFEEB0FF027327DB12D>I<EB0FFC90387FFF803901FC0FC03903F003E0
-3907E001F0000F14F8391FC000FC003F14FEA24848137E157FA212FFA290B6FCA20180C7
-FCA4127FA36C6C1307121F150E6C7E6C6C131C6C6C13783900FE03E090383FFFC0903807
-FE0020207E9F25>I<EB01FE90380FFF8090381FC3C090387F07E09038FE0FF0120113FC
-1203EC07E0EC018091C7FCA8B512FCA3D803FCC7FCB3A8387FFFF0A31C327EB119>I<90
-391FF007C09039FFFE3FE03A01F83F79F03907E00FC3000F14E19039C007E0E0001FECF0
-00A2003F80A5001F5CA2000F5CEBE00F00075C2603F83FC7FC3806FFFE380E1FF090C9FC
-121EA2121F7F90B57E6C14F015FC6C806C801680000F15C0003FC7127F007EEC1FE0007C
-140F00FC1407A4007EEC0FC0003E1580003F141FD80FC0EB7E003907F803FC0001B512F0
-D8001F90C7FC242F7E9F28>I<EA01F812FFA3120F1207ADEC07F8EC3FFEEC783F02C013
-809039F9801FC0EBFB0001FE14E05BA35BB3B500C3B5FCA328327DB12D>I<EA03C0487E
-487E487EA46C5A6C5A6C5AC8FCA9EA01F8127FA31207B3A7B51280A311337DB217>I<EA
-01F812FFA3120F1207B3B3A6B512C0A312327DB117>108 D<2703F007F8EB1FE000FFD9
-3FFEEBFFF8913A783F01E0FC02C090388300FE280FF1801FC6137F2607F30013CC01F602
-F8148001FC5CA3495CB3B500C3B5380FFFFCA33E207D9F43>I<3903F007F800FFEB3FFE
-EC783F02C013803A0FF1801FC03807F30001F614E013FCA35BB3B500C3B5FCA328207D9F
-2D>I<EB07FC90387FFFC03901FC07F03903F001F848486C7E4848137E001F147F003F15
-8049133F007F15C0A300FF15E0A8007F15C0A36C6CEB7F80A2001F15006C6C13FE00075C
-3903F803F83901FE0FF039007FFFC0D907FCC7FC23207E9F28>I<3901F83FE000FFEBFF
-FC9038FBE07F9039FF003F80D80FFEEB1FC06C48EB0FE04914F0ED07F8A216FC1503A216
-FEA816FC1507A216F8A2ED0FF06D14E06DEB1FC06DEB3F809039FBC0FE009038F8FFF8EC
-3FC091C8FCABB512C0A3272E7E9F2D>I<3803F03F00FFEB7FC09038F1C3E01487390FF3
-0FF0EA07F6A29038FC07E0EC03C091C7FCA25BB2B512E0A31C207E9F21>114
-D<3801FF86000713FEEA1F00003C133E48131E140E12F8A36C90C7FCB47E13FC387FFFC0
-6C13F0806C7F00077F00017FEA003F01001380143F0060131F00E0130FA27E15007E6C13
-1E6C131C38FF807838F3FFF038C07F8019207D9F20>I<131CA5133CA3137CA213FC1201
-12031207381FFFFEB5FCA2D803FCC7FCB0EC0380A71201EC0700EA00FEEB7F0EEB3FFCEB
-07F0192E7FAD1F>I<D801F8EB07E000FFEB03FFA3000FEB003F0007141FB3153FA20003
-147FA26C6CEBDFF03A00FE039FFF90387FFF1FEB0FFC28207D9F2D>I<B53A1FFFE03FF8
-A33C0FF000FE0007806D150300076EEB0700816D5D00039138FF800EA26C6C486D5A15DF
-01FF153C6C9039038FE038A2D97F876D5A150702C714F0D93FCF6D5AECCE03D91FFEEBF9
-C09138FC01FD16FF010F5D4A7EA26D486DC7FCA20103147E4A133EA26D48131C35207E9F
-3A>119 D<3A7FFF807FFCA33A03FC000F006C6C131E6C6C5BEC803890387FC078013F5B
-90381FE1E090380FF3C0ECFF806D90C7FC6D5A13016D7E81815B903803DFE09038078FF0
-8190380F07FC90381E03FEEB3C01496C7E4914804848EB7FC00003EC3FE026FFFC01B5FC
-A328207F9F2B>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fr cmsy10 10.95 1
-/Fr 1 14 df<14FE903807FFC090381F01F0903878003C01E0130ED80180130348C7EA01
-800006EC00C0481560A2481530481518A248150CA4481506A90060150CA46C1518A26C15
-306C1560A26C15C06CEC01806C6CEB0300D800E0130E0178133C90381F01F0903807FFC0
-D900FEC7FC272B7DA02E>13 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fs cmbx12 14.4 55
-/Fs 55 122 df<123C127FEAFF80A213C0A3127F123E1200A2EA0180A3EA0300A2120612
-0E5A5A12100A157B8813>44 D<121C127FA2EAFF80A3EA7F00A2121C09097B8813>46
-D<130E131E137EEA07FE12FFA212F81200B3ABB512FEA317277BA622>49
-D<EBFF80000713F04813FC381E03FE393800FF80007C133F00FE14C06C131F15E0140FA2
-127E003C131FC7FC15C0A2EC3F801500147E5C5C495A495AEB078049C7FC131E4913E013
-705B3901C001C0EA0380EA0600000FB5FC5A5A5AB61280A31B277DA622>I<EB7F803803
-FFF04813FC380F81FE381F007FEA3F80EC3F80A3121F1300C7EA7F00A2147E5C495AEB07
-F0EBFFC0A2EB01F8EB007E801580EC1FC0A215E0A2123C127EB4FCA215C0143F48148000
-7CEB7F00383F01FE6CB45A000713F0C613801B277DA622>I<140FA25C5C5C5C5BA2EB03
-BFEB073F130E131C133C1338137013E0EA01C0EA038012071300120E5A5A5A12F0B612F8
-A3C7EA7F00A890381FFFF8A31D277EA622>I<00181303381F801FEBFFFE5C5C5C14C091
-C7FC001CC8FCA7EB7FC0381DFFF8381F80FC381E003F1208C7EA1F8015C0A215E0A21218
-127C12FEA315C05A0078EB3F80A26CEB7F00381F01FE6CB45A000313F0C613801B277DA6
-22>I<EB07F8EB3FFE90B5FC3901FC07803903F00FC03807C01FEA0F80121F130048EB0F
-8091C7FC127EA3EAFE02EB1FF0EB3FFCEB603EEB801F00FF14809038000FC0A24814E0A4
-127EA4123E003F14C07EEC1F80D80F8013003807E07E6CB45A6C5B38003FC01B277DA622
->I<1238123E003FB512F0A34814E015C0158015003870000EA25C485B5C5CC6485AA249
-5A130791C7FC5B5B131E133EA2137E137CA213FCA41201A76C5A13701C297CA822>I<EB
-7F803801FFF000077F380FC0FC381F803E48487E007E1480A2140F00FE14C0A315E0A500
-7E131FA26C133F6C132F380F80CF3807FF8F0001130FEA0008010013C0A3EC1F80123E12
-7FEC3F00143E147E007E5B383E03F8381FFFE06C1380D801FEC7FC1B277DA622>57
-D<EC0780A24A7EA34A7EA24A7EA3EC77F8A2ECF7FC14E3A2903801C1FEA201037F1480A2
-49486C7EA24980010E133FA2496D7EA2013FB57EA39039700007F8A201F0804913030001
-81491301A2000381D8FFFE013F13FCA32E297EA833>65 D<B612F815FF16C03A03F8001F
-E0ED0FF0ED07F8150316FCA21501A3150316F8A2ED07F0150FED1FC0EDFF8090B5EAFE00
-EDFFC09039F8000FF0ED03F8ED01FC16FE1500A216FFA616FE1501ED03FC1507ED1FF8B7
-12E016C0EDFE0028297DA830>I<91387FE003903907FFFC07011FEBFF0F90397FF00F9F
-9039FF0001FFD801FC7F4848147F4848143F4848141F485A160F485A1607127FA290C9FC
-5AA97E7F1607123FA26C7E160E6C7E6C6C141C6C6C143C6C6C14786CB4EB01F090397FF0
-07C0011FB512800107EBFE009038007FF028297CA831>I<B612FCEDFF8016E03A03FC00
-1FF8ED03FCED00FE167FEE3F80EE1FC0A2EE0FE0A2EE07F0A417F8AA17F0A3EE0FE0A217
-C0161FEE3F80EE7F005EED03FCED1FF8B75A168003FCC7FC2D297EA834>I<B712E0A339
-03FC001FED07F01501A215001670A3913801C0781638A302031300A2140F90B5FCA3EBFC
-0F1403A20201130EA3161C91C7FCA3163C1638167816F815011503151FB712F0A327297E
-A82C>I<B712C0A33903FC003FED0FE015031501A21500A316F0913801C070A316001403
-A2140F90B5FCA3EBFC0F1403A21401A491C8FCA9B512FCA324297EA82A>I<91387FE003
-903907FFFC07011FEBFF0F90397FF00F9F9039FF0001FFD801FC7F484880484880484880
-485A82485A82127FA290CAFC5AA892B512F87E7F03001300123FA26C7EA26C7E6C7E6C7E
-6C7E6CB45B90387FF007011FB5129F0107EBFE0F9039007FF0032D297CA835>I<B5D8F0
-0FB5FCA3D803FCC7EA3FC0AF90B7FCA301FCC7123FB1B5D8F00FB5FCA330297EA835>I<
-B512F0A33803FC00B3B1B512F0A314297EA819>I<B500F0EBFFFEA3D803FCC7EA0F0016
-1E5E5E16E0ED03C04B5A4BC7FC151E5D15F04A5A4A5A1407140F4A7EEC7FF04A7EEBFDE7
-9038FFC3FCEC83FE9038FE01FF497E6F7E826F7E151F6F7E8215076F7E6F7E8281EE7F80
-B539F00FFFFEA32F297EA835>75 D<B512FCA3D803FCC8FCB3A3ED01C0A415031680A215
-07A2150FA2151F157F913801FF00B7FCA322297EA828>I<D8FFFE92383FFF80A26D5D00
-03EFE000A2D9BF8014EFA2D99FC0EB01CFA2D98FE0EB038FA3D987F0EB070FA2D983F813
-0EA2D981FC131CA3D980FE1338A2027F1370A291383F80E0A391381FC1C0A291380FE380
-A2913807F700A3EC03FEA26E5AA26E5AD8FFFE0203B51280A2157039297DA840>I<D8FF
-FCEC7FFF7F7F00036DEB01C080EBBFE0139F80EB8FF8EB87FCEB83FEEB81FF0180138014
-7F15C0EC3FE0EC1FF0EC0FF8EC07FC140315FEEC01FF6E1381ED7FC1ED3FE1ED1FF1150F
-16F9ED07FDED03FF8181167FA2163F161F160F1607D8FFFE14031601A230297EA835>I<
-ECFFC0010F13FC90383F807F9039FE001FC0D801F8EB07E048486D7E48486D7E000F8148
-486D7EA24848147FA2007F168090C8123FA34816C0AA6C16806D147FA2003F1600A26C6C
-14FEA26C6C495A6C6C495A6C6C495A6C6C495A6C6C495A90263FC0FFC7FC90380FFFFC01
-0013C02A297CA833>I<B612F815FF16C03A03FC003FE0ED07F0ED03F816FC150116FEA7
-16FC150316F8ED07F0ED3FE090B61280EDFE0001FCC8FCB0B512F0A327297EA82E>I<EC
-FFC0010F13FC90383FC0FF9039FE001FC048486D7ED803F0EB03F000078148486D7E4848
-6D7EA24848147FA2007F1680A290C8123FA24816C0AA6C16806D147FA2003F1600A26C6C
-14FE143E3A0FE07F81FC00079038C1C1F83A03F18063F0D801F9EB67E0D800FFEB3FC090
-263FC07FC7FC90380FFFFC01004913C0EC003C811601ED1F8316FF6F1380A21700816F5A
-6F5A6F5A2A357CA833>I<B612E015FE6F7E3A03FC003FE0ED0FF06F7E6F7E150182A65E
-4B5A1507ED0FE0ED3FC090B500FEC7FCA29039FC00FF80ED3FC06F7E6F7E6F7EA9170EA2
-1503923801FC1CB538F000FEEE7FF8EE0FE02F297EA832>I<9038FF80600003EBF0E000
-0F13F8381F80FD383F001F003E1307481303A200FC1301A214007EA26C140013C0EA7FFC
-EBFFE06C13F86C13FE80000714806C14C0C6FC010F13E0EB007FEC1FF0140F140700E013
-03A46C14E0A26C13076C14C0B4EB0F80EBE03F39E3FFFE0000E15B38C01FF01C297CA825
->I<007FB71280A39039807F807FD87C00140F00781507A20070150300F016C0A2481501
-A5C791C7FCB3A490B612C0A32A287EA72F>I<B500F0EBFFFEA3D803FCC7EA0380B3AA00
-01ED07007F0000150E137F6D143CD91FC05B90390FF003F06DB55A01001480DA1FFCC7FC
-2F297EA834>I<B500F0EB7FFFA3D803FEC7EA01C00001ED0380A26D14076C16006E5B01
-7F140E80013F5CA26E133C011F14386E1378010F14708001075CA26D6C485AA2ECFE0301
-015CECFF076D91C7FC1587EC7F8EA215DEEC3FDC15FC6E5AA26E5AA36E5AA26E5AA23029
-7FA833>I<B53CE07FFFE01FFFC0A32803FC0003FCC7EA7000A26D6D7E000160A26D6E13
-016C604B138002801503017F5F4B13C0D93FC0013F49C7FCA2913AE00E1FE00F011F160E
-17F09126F01C0F131E010F161C033C13F8902707F838075BA2037813FC902703FC70035B
-A2913AFEE001FEF001015E02FF14FF4B7E6D5EA26E486D5AA36EC76CC8FCA2023E80021E
-141EA242297FA845>I<B500F0EB3FFFA3D803FEC7EA03C06C6C15806C6DEB07005E6D6C
-130E6E5B013F143C6D6C13386E5B010F14F06D6C5B6E485A01031303D901FF5B0387C7FC
-6D138FEC7FCE15FC143F6E5A5D140FAE0103B512C0A330297FA833>89
-D<3803FF80000F13F0381F01FC383F80FE147F801580EA1F00C7FCA4EB3FFF3801FC3FEA
-0FE0EA1F80EA3F00127E5AA4145F007E13DF393F839FFC381FFE0F3803FC031E1B7E9A21
->97 D<EAFFE0A3120FACEBE1FE9038EFFF809038FE07E09038F803F09038F001F89038E0
-00FCA2157EA2157FA8157EA315FCA29038F001F89038F803F090389C0FE090380FFF8039
-0E01FC00202A7EA925>I<EB3FF03801FFFC3803F03E380FC07FEA1F80EA3F00A248133E
-007E90C7FCA212FEA7127EA2127F6CEB03801380001FEB0700380FE00E3803F83C3801FF
-F838003FC0191B7E9A1E>I<EC7FF0A31407ACEB3F873801FFF73807F03F380FC00F381F
-8007EA3F00A2127EA312FEA8127EA27EA2381F800F380FC01F3907E07FFF3801FFE73800
-7F87202A7EA925>I<EB3FC03801FFF03803E07C380F803E001F7F130048EB0F80127E15
-C0A200FE1307A2B6FCA248C8FCA3127EA2127F6CEB01C07E390F8003803907C007003803
-F01E3800FFFCEB3FE01A1B7E9A1F>I<EB07F8EB3FFCEB7E3E3801FC7FEA03F813F01207
-143E1400A7B512C0A33807F000B3A3387FFF80A3182A7EA915>I<9038FF80F00003EBE3
-F8390FC1FE1C391F007C7C48137E003EEB3E10007EEB3F00A6003E133E003F137E6C137C
-380FC1F8380BFFE00018138090C8FC1238A2123C383FFFF814FF6C14C06C14E06C14F012
-1F383C0007007CEB01F8481300A4007CEB01F0A2003FEB07E0390FC01F806CB512003800
-7FF01E287E9A22>I<EAFFE0A3120FAC147E9038E1FF809038E30FC001E413E0EBE80701
-F813F013F0A213E0B039FFFE3FFFA3202A7DA925>I<1207EA0F80EA1FC0EA3FE0A3EA1F
-C0EA0F80EA0700C7FCA7EAFFE0A3120FB3A3EAFFFEA30F2B7EAA12>I<EAFFE0A3120FB3
-B2EAFFFEA30F2A7EA912>108 D<26FFC07FEB1FC0903AC1FFC07FF0903AC307E0C1F8D8
-0FC49038F101FC9039C803F20001D801FE7F01D05BA201E05BB03CFFFE3FFF8FFFE0A333
-1B7D9A38>I<38FFC07E9038C1FF809038C30FC0D80FC413E0EBC80701D813F013D0A213
-E0B039FFFE3FFFA3201B7D9A25>I<EB3FE03801FFFC3803F07E390FC01F80391F800FC0
-393F0007E0A2007EEB03F0A300FE14F8A8007E14F0A26CEB07E0A2391F800FC0390FC01F
-803907F07F003801FFFC38003FE01D1B7E9A22>I<38FFE1FE9038EFFF809038FE0FE039
-0FF803F09038F001F801E013FC140015FEA2157FA8157E15FEA215FC140101F013F89038
-F807F09038FC0FE09038EFFF809038E1FC0001E0C7FCA9EAFFFEA320277E9A25>I<38FF
-C1F0EBC7FCEBC63E380FCC7F13D813D0A2EBF03EEBE000B0B5FCA3181B7F9A1B>114
-D<3803FE30380FFFF0EA3E03EA7800127000F01370A27E00FE1300EAFFE06CB4FC14C06C
-13E06C13F0000713F8C6FCEB07FC130000E0137C143C7E14387E6C137038FF01E038E7FF
-C000C11300161B7E9A1B>I<13E0A41201A31203A21207120F381FFFE0B5FCA2380FE000
-AD1470A73807F0E0000313C03801FF8038007F0014267FA51A>I<39FFE07FF0A3000F13
-07B2140FA2000713173903F067FF3801FFC738007F87201B7D9A25>I<39FFFC03FFA339
-0FF000F0000714E07F0003EB01C0A2EBFC0300011480EBFE070000140013FFEB7F0EA214
-9EEB3F9C14FC6D5AA26D5AA36D5AA26D5AA2201B7F9A23>I<3BFFFC7FFC1FFCA33B0FE0
-0FE001C02607F007EB0380A201F8EBF00700031600EC0FF801FC5C0001150EEC1FFC2600
-FE1C5B15FE9039FF387E3C017F1438EC787F6D486C5A16F0ECE01F011F5CA26D486C5AA2
-EC800701075CA22E1B7F9A31>I<39FFFC1FFEA33907F003803803F8079038FC0F003801
-FE1E00005BEB7F3814F86D5A6D5A130F806D7E130F497EEB3CFEEB38FFEB787F9038F03F
-803901E01FC0D803C013E0EB800F39FFF03FFFA3201B7F9A23>I<39FFFC03FFA3390FF0
-00F0000714E07F0003EB01C0A2EBFC0300011480EBFE070000140013FFEB7F0EA2149EEB
-3F9C14FC6D5AA26D5AA36D5AA26D5AA25CA21307003890C7FCEA7C0FEAFE0E131E131C5B
-EA74F0EA3FE0EA0F8020277F9A23>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Ft cmtt10 10.95 91
-/Ft 91 127 df<127012F8B012701200A5127012F8A31270051C779B18>33
-D<EA4010EAE038EAF078EAE038AAEA60300D0E7B9C18>I<EA0306EA078FA6387FFFC0B5
-12E0A26C13C0380F1E00A6387FFFC0B512E0A26C13C0381E3C00A6EA0C18131C7E9B18>
-I<13C01201A3EA03F0EA0FFCEA3FFEEA7DCFEA71C738E1C38013C7A338F1C0001279123F
-6C7EEA0FF8EA01FC13DE13CF13C73861C38012F1A212E1EBC7001271EA79DEEA3FFEEA1F
-F8EA07E0EA01C0A3120011247D9F18>I<EA3803387C0780A2EAEE0F1400A25B131EA213
-3EEA7C3CA2EA387CEA0078A213F85B12015BA212035BA21207EB8380EB87C0120FEB0EE0
-A2121F121EA2123E383C07C0A23818038013247E9F18>I<EA01C0EA07E0487EEA0E7048
-7EA4EB73F813F313E3380FC1C0EBC38013831303381F0700EA3F87EA7B8EEA71CEEAE1FC
-12E0137CEB7870A2EA70FE387FFFE0EA3FC7380F03C0151C7F9B18>I<1238127CA2127E
-123E120EA3121CA2123812F812F012C0070E789B18>I<137013F0EA01E0EA03C0EA0780
-EA0F00121E121C5AA25AA45AA81270A47EA27E121E7EEA0780EA03C0EA01F0120013700C
-24799F18>I<126012F012787E7E7EEA07801203EA01C0A2EA00E0A41370A813E0A4EA01
-C0A2EA03801207EA0F00121E5A5A5A12600C247C9F18>I<EA01C0A4EA41C138F1C780EA
-FDDF387FFF00EA1FFCEA07F0A2EA1FFCEA7FFF38FDDF80EAF1C73841C100EA01C0A41114
-7D9718>I<136013F0A7387FFFC0B512E0A26C13C03800F000A7136013147E9718>I<121C
-123E127E127F123F121F1207120E121E127C12F81260080C788518>I<387FFFC0B512E0
-A26C13C013047E8F18>I<1230127812FCA2127812300606778518>I<1303EB0780A2130F
-14005B131EA2133E133C137C1378A213F85B12015B12035BA212075B120F90C7FCA25A12
-1E123E123CA2127C127812F85AA2126011247D9F18>I<EA01F0EA07FC487EEA1F1FEA1C
-0738380380007813C0EA7001A238E000E0A9EAF001007013C0A2EA780300381380381C07
-00EA1F1FEA0FFE6C5AEA01F0131C7E9B18>I<EA01801203A21207120F123F12FF12FB12
-431203B0EA7FFCEAFFFEEA7FFC0F1C7B9B18>I<EA03F0EA0FFEEA3FFF387C0F80387003
-C0EAE00138F000E0A21260C7FCA2EB01C0A21303EB0780EB0F00131E5B5B5B485AEA07C0
-485A381E00E05AEA7FFFB5FC7E131C7E9B18>I<131F5B1377A213E7120113C7EA038712
-071307120E121E123C1238127812F0B512F8A338000700A6EB7FF0A3151C7F9B18>52
-D<383FFF80A30038C7FCA8EA3BF8EA3FFE7F383C0780383003C0EA0001EB00E0A2126012
-F0A238E001C0EA7003387C0F80383FFF00EA1FFCEA03F0131C7E9B18>I<137E48B4FC00
-071380380F83C0EA1E03121C3838018090C7FC5AA2EAE1F8EAE7FEB5FC38FE078038F803
-C0EAF001EB00E05AA21270A3383801C0EA3C03381E0780380FFF006C5AEA01F8131C7E9B
-18>I<12E0B512E0A214C038E00380EB0700C65A131E131C5BA25B13F05BA2485AA3485A
-A448C7FCA7131D7E9C18>I<EA03F8EA0FFE487E383E0F80EA3803387001C0A438380380
-EA3C07381FFF00EA07FC487EEA1F1F383C0780387001C000F013E0EAE000A4387001C0EA
-7803383E0F80381FFF006C5AEA03F8131C7E9B18>I<1230127812FCA2127812301200A8
-1230127812FCA2127812300614779318>58 D<1218123C127EA2123C12181200A8121812
-3C127EA2123E121E120E121C123C127812F01260071A789318>I<14C0EB03E01307EB1F
-C0EB3F80EBFE00485AEA07F0485AEA3F8048C7FC12FCA2127F6C7EEA0FE06C7EEA01FC6C
-7EEB3F80EB1FC0EB07E01303EB00C013187E9918>I<387FFFC0B512E0A26C13C0C8FCA4
-387FFFC0B512E0A26C13C0130C7E9318>I<126012F87E127F6C7EEA0FE06C7EEA01FC6C
-7EEB3F80EB1FC0EB07E0A2EB1FC0EB3F80EBFE00485AEA07F0485AEA3F8048C7FC12FC5A
-126013187E9918>I<EA0FF0EA3FFC48B4FCEA700F38F00380A2EA600738000F00133E5B
-EA01F05B485AA55BC8FCA5EA0380487EA36C5A111C7D9B18>I<137CEA01FEEA07FF380F
-8780381E03C0EA3C1DEA387F3870FFE0EA71E313C112E1EAE380A638E1C1C0127113E338
-70FF8038387F00EA3C1C381E00E0EA0F833807FFC00001138038007E00131C7E9B18>I<
-137013F8A213D8A2EA01DCA3138CEA038EA4EA0707A5380FFF80A3EA0E03381C01C0A338
-7F07F000FF13F8007F13F0151C7F9B18>I<EA7FFCB5FC6C1380381C03C01301EB00E0A4
-130114C01307381FFF80140014C0EA1C03EB00E014F01470A414F014E01303387FFFC0B5
-1280387FFE00141C7F9B18>I<EBF8E0EA03FEEA07FFEA0F07EA1E03EA3C01EA38005AA2
-14005AA8127014E0A27E123C381E01C0EA0F073807FF803803FE00EA00F8131C7E9B18>
-I<EA7FF8EAFFFE6C7E381C0F80EB03C0A2EB01E01300A214F01470A814F014E0A2130114
-C01303EB0F80387FFF00485AEA7FF8141C7F9B18>I<B512F0A3381C0070A41400A2130E
-A3EA1FFEA3EA1C0EA390C7FCA21438A5B512F8A3151C7F9B18>I<B512F0A3381C0070A4
-1400A2130EA3EA1FFEA3EA1C0EA390C7FCA7EAFFC0A3141C7E9B18>I<3801F1C0EA03FD
-EA0FFFEA1F0FEA1C03123813011270A290C7FC5AA5EB0FF0131F130F387001C0A2130312
-38A2EA1C07EA1F0FEA0FFFEA03FDEA01F1141C7E9B18>I<387F07F038FF8FF8387F07F0
-381C01C0A9EA1FFFA3EA1C01AA387F07F038FF8FF8387F07F0151C7F9B18>I<EA7FFFB5
-12806C1300EA01C0B3A4EA7FFFB512806C1300111C7D9B18>I<3801FFC0A338000E00B3
-12F0A2133CEA7FFCEA3FF0EA0FC0121C7D9B18>I<387F07F038FF87F8387F07F0381C03
-C0EB07801400130E131E5B13385B13F0121DA2EA1FB8A2131C121EEA1C0EA27FA2EB0380
-A2EB01C0387F03F038FF87F8387F03F0151C7F9B18>I<EAFFC0A3001CC7FCB114E0A5B5
-FCA3131C7E9B18>I<38FC01F8EAFE03A2383B06E0A4138EA2EA398CA213DCA3EA38D8A2
-13F81370A21300A638FE03F8A3151C7F9B18>I<387E07F038FF0FF8387F07F0381D81C0
-A313C1121CA213E1A313611371A213311339A31319A2131D130DA3EA7F07EAFF87EA7F03
-151C7F9B18>I<EA0FFE383FFF804813C0EA7803EA700100F013E0EAE000B0EAF0010070
-13C0EA7C07EA7FFF6C1380380FFE00131C7E9B18>I<EAFFFEEBFF8014C0EA1C03EB01E0
-13001470A514E01301EB03C0EA1FFF1480EBFE00001CC7FCA8B47EA3141C7F9B18>I<EA
-0FFE383FFF804813C0EA7803EA700100F013E0EAE000AE1370A2EAF079387039C0EA783F
-EA7FFF6C1380380FFE00EA000FEB0780A2EB03C01301A213227E9B18>I<EA7FF8EAFFFE
-6C7E381C0F80130314C01301A313031480130F381FFF005BA2EA1C0F7FEB0380A5149CA3
-387F01F8EAFF81387F00F0161C7F9B18>I<3803F1C0EA1FFF5AEA7C0FEA7003EAE001A3
-90C7FC12701278123FEA1FF0EA07FEC67EEB0F80EB03C01301EB00E0A2126012E0130100
-F013C038F80780B5FCEBFE00EAE7F8131C7E9B18>I<387FFFF8B5FCA238E07038A40000
-1300B2EA07FFA3151C7F9B18>I<38FF83FEA3381C0070B36C13E0EA0F01380783C03803
-FF806C1300EA007C171C809B18>I<38FE03F8EAFF07EAFE03383C01E0001C13C0A3EA1E
-03000E1380A438070700A4EA038EA4EA018C13DCA3EA00D813F8A21370151C7F9B18>I<
-38FE03F8A338700070A36C13E0A513F8EA39FC13DCA2001913C0A3138CA2EA1D8DA31305
-000D1380EA0F07A2EA0E03151C7F9B18>I<387F0FE0139F130F380E0700120FEA070E13
-8EEA039C13DCEA01F8A212005B137013F07F487E13DCEA039E138EEA070F7F000E138013
-03001E13C0387F07F000FF13F8007F13F0151C7F9B18>I<38FE03F8EAFF07EAFE03381C
-01C0EA1E03000E1380EA0F0700071300A2EA038EA2EA01DCA3EA00F8A21370A9EA01FC48
-7E6C5A151C7F9B18>I<383FFFE05AA2387001C01303EB07801400C65A131E131C133C5B
-137013F0485A5B1203485A90C7FC5A001E13E0121C123C5A1270B5FCA3131C7E9B18>I<
-EAFFF8A3EAE000B3ACEAFFF8A30D24779F18>I<126012F0A27E1278127C123CA2123E12
-1E121F7EA27F12077F1203A27F12017F12007F1378A2137C133C133E131EA2131F7F1480
-1307A2EB030011247D9F18>I<EAFFF8A3EA0038B3ACEAFFF8A30D247F9F18>I<387FFFC0
-B512E0A26C13C013047E7F18>95 D<1206121E123E12381270A212E0A312F812FC127CA2
-1238070E789E18>I<EA0FF0EA1FFC487EEA3C0FEA180738000380A213FF1207121FEA7F
-03127812E0A3EAF007EA780F383FFFF8EA1FFDEA07F015147E9318>I<127E12FE127E12
-0EA5133EEBFF80000F13C0EBC1E01380EB0070120E1438A6000F1370A2EB80E013C1EBFF
-C0000E138038063E00151C809B18>I<EA01FEEA07FF001F1380EA3E073838030048C7FC
-A25AA61270EB01C01238EA3E03381FFF8000071300EA01FC12147D9318>I<EB1F80133F
-131F1303A5EA03E3EA0FFBEA1FFFEA3C1FEA380FEA7007130312E0A6EA7007A2EA380FEA
-3C1F381FFFF0380FFBF83803E3F0151C7E9B18>I<EA01F0EA07FCEA1FFEEA3E0F383807
-80EA7003A238E001C0A2B5FCA300E0C7FC1270EB01C01238EA3E07381FFF8000071300EA
-01F812147D9318>I<EB1F80EB7FC0EBFFE013E13801C0C01400A3387FFFC0B5FCA23801
-C000AEEA7FFFA3131C7F9B18>I<3801E1F03807FFF85A381E1E30381C0E00487EA5EA1C
-0EEA1E1EEA1FFC5BEA39E00038C7FC7EEA1FFEEBFFC04813E0387801F038700070481338
-A4007813F0EA7E03381FFFC06C13803801FC00151F7F9318>I<127E12FE127E120EA513
-3EEBFF80000F13C013C1EB80E01300120EAB387FC7FC38FFE7FE387FC7FC171C809B18>
-I<EA0380EA07C0A3EA0380C7FCA4EA7FC012FF127F1201AEB5FCA3101D7C9C18>I<1338
-137CA313381300A4EA0FFCA3EA001CB3A4EA6038EAF078EAFFF0EA7FE0EA3F800E277E9C
-18>I<127E12FE127E120EA5EB3FF0A3EB0780EB0F00131E5B5B5BEA0FF87F139C130EEA
-0E0F7FEB038014C0387FC7F812FF127F151C7F9B18>I<EAFFC0A31201B3A4B51280A311
-1C7D9B18>I<38F9C1C038FFF7F013FF383E3E38EA3C3CA2EA3838AB38FE3E3EEB7E7EEB
-3E3E1714809318>I<EA7E3E38FEFF80007F13C0EA0FC1EB80E01300120EAB387FC7FC38
-FFE7FE387FC7FC1714809318>I<EA01F0EA0FFE487E383E0F80EA3803387001C0A238E0
-00E0A5EAF001007013C0EA7803383C0780EA3E0F381FFF006C5AEA01F013147E9318>I<
-EA7E3E38FEFF80007F13C0380FC1E01380EB0070120E1438A6000F1370A2EB80E013C1EB
-FFC0000E1380EB3E0090C7FCA7EA7FC0487E6C5A151E809318>I<3801F380EA07FBEA1F
-FFEA3E1FEA380FEA7007A2EAE003A6EA7007A2EA380FEA3C1FEA1FFFEA0FFBEA03E3EA00
-03A7EB1FF0EB3FF8EB1FF0151E7E9318>I<38FF0FC0EB3FE0EB7FF0EA07F0EBE060EBC0
-005BA290C7FCA9EAFFFC7F5B14147E9318>I<EA07F7EA3FFF5AEA780FEAE007A3007CC7
-FCEA7FE0EA1FFCEA03FEEA001F38600780EAE003A212F038F80F00B5FC13FCEAE7F01114
-7D9318>I<487E1203A4387FFFC0B5FCA238038000A9144014E0A33801C1C013FF6C1380
-EB3E0013197F9818>I<387E07E0EAFE0FEA7E07EA0E00AC1301EA0F033807FFFC6C13FE
-3801FCFC1714809318>I<387F8FF000FF13F8007F13F0381C01C0380E0380A338070700
-A3138FEA038EA3EA01DCA3EA00F8A2137015147F9318>I<38FF07F8138F1307383800E0
-A4381C01C0137113F9A213D9EA1DDD000D1380A3138DEA0F8FA23807070015147F9318>
-I<387F8FF0139F138F380F0700EA078EEA039EEA01DC13F81200137013F07FEA01DCEA03
-9E138EEA0707000E1380387F8FF000FF13F8007F13F015147F9318>I<387F8FF000FF13
-F8007F13F0380E01C0EB0380A21207EB0700A2EA0387A2138EEA01CEA213CC120013DC13
-78A31370A313F05B1279EA7BC0EA7F806CC7FC121E151E7F9318>I<383FFFF05AA23870
-01E0EB03C0EB078038000F00131E5B13F8485AEA03C0485A380F0070121E5A5AB512F0A3
-14147F9318>I<EB07E0131F137FEB780013E0AB1201EA7FC0485AA26C7EEA01E01200AB
-1378EB7FE0131F130713247E9F18>I<126012F0B3B012600424769F18>I<127CB4FC13C0
-1203C67EAB7FEB7FC0EB3FE0A2EB7FC0EBF0005BABEA03C012FF90C7FC127C13247E9F18
->I<EA060CEA1F1EEA3FBEEAFBF8EAF1F0EA60C00F067C9B18>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fu cmr10 10.95 77
-/Fu 77 123 df<90381F83E09038F06E303901C07878380380F8903800F03048EB7000A7
-B612803907007000B2383FE3FF1D20809F1B>11 D<133FEBE0C0EA01C0380381E0EA0701
-A290C7FCA6B512E0EA0700B2383FC3FC1620809F19>I<EB3FE013E0EA01C1EA0381EA07
-00A8B5FCEA0700B2383FE7FC1620809F19>I<90381F81F89038F04F043901C07C063903
-80F80FEB00F05A0270C7FCA6B7FC3907007007B23A3FE3FE3FE02320809F26>I<EA7038
-EAF87CEAFC7EA2EA743AEA0402A3EA0804A2EA1008A2EA2010EA40200F0E7F9F17>34
-D<1340A2EA03F0EA0C4EEA10413820408012600040134038C041C01343A238E04180EB40
-001270127CEA3FC0EA1FF86C7EEA03FEEA007FEB4F801343EB41C0A2EAF040A312801480
-EA404100201300EA3042EA0C4CEA03F0EA0040A312257EA117>36
-D<127012F812FCA212741204A31208A21210A212201240060E7C9F0D>39
-D<13401380EA01005A12061204120C5AA212381230A212701260A412E0AC1260A4127012
-30A212381218A27E120412067E7EEA008013400A2E7BA112>I<7E12407E12307E120812
-0C7EA212077EA213801201A413C0AC1380A412031300A25A1206A25A120812185A12205A
-5A0A2E7EA112>I<127012F012F8A212781208A31210A31220A21240050E7C840D>44
-D<EAFFF0A20C02808A0F>I<127012F8A3127005057C840D>I<144014C0EB0180A3EB0300
-A31306A25BA35BA35BA25BA35BA3485AA348C7FCA21206A35AA35AA25AA35AA35AA2122D
-7EA117>I<EA03F0EA0E1C487EEA1806EA380738700380A400F013C0AD00701380A3EA78
-0700381300EA1806EA1C0E6C5AEA03F0121F7E9D17>I<13801203120F12F31203B3A6EA
-07C0EA7FFE0F1E7C9D17>I<EA03F0EA0C1CEA100E487E00401380128000F013C0EAF803
-A3EA200712001480A2EB0F00130E5B5B5B13605B485A48C7FC000613405A5A00101380EA
-3FFF5AB5FC121E7E9D17>I<EA03F0EA0C1CEA100EEA200F007813801307A2EA380F1200
-1400A2131E131C1370EA07F0EA003C130E130FEB0780A214C0122012F8A300F013801240
-EB0F00EA200EEA183CEA07F0121F7E9D17>I<1306A2130EA2131E132EA2134E138EA2EA
-010E1202A212041208A212101220A2124012C0B512F038000E00A7EBFFE0141E7F9D17>
-I<EA1803EA1FFE5B5B13E00010C7FCA6EA11F0EA161CEA180EEA10071480EA0003A214C0
-A3127012F0A200E013801240EB0700EA20066C5AEA0838EA07E0121F7E9D17>I<137CEA
-0182EA0701380E0380EA0C0712183838030090C7FC12781270A2EAF1F0EAF21CEAF406EA
-F807EB0380A200F013C0A51270A214801238EB07001218EA0C0E6C5AEA01F0121F7E9D17
->I<1240387FFFE014C0A23840008038800100A21302485AA25B5BA25BA21360A213E05B
-1201A41203A76C5A131F7E9D17>I<EA03F0EA0C0CEA1006EA3003382001801260A31270
-38780300123EEA3F06EA1FC8EA0FF0EA03F8487EEA0C7EEA103F38300F80EA6007EB01C0
-12C01300A31480EA600100201300EA1002EA0C0CEA03F0121F7E9D17>I<EA03F0EA0E18
-487E487E13071270EB038012F0A214C0A5EA7007A21238EA180BEA0E13EA03E338000380
-A3EB07001230EA7806130EEA700CEA2018EA1070EA0FC0121F7E9D17>I<127012F8A312
-701200AA127012F8A3127005147C930D>I<127012F8A312701200AA127012F012F8A212
-781208A31210A31220A21240051D7C930D>I<5B497EA3497EA3EB09E0A3EB10F0A3EB20
-78A3497EA2EBC03EEB801EA248B5FCEB000FA20002EB0780A348EB03C0A2120C001E14E0
-39FF801FFE1F207F9F22>65 D<B512E0380F0078141EA2801580A515005C141E147CEBFF
-F0EB007C141FEC0F80EC07C0140315E0A515C014071580EC0F00143EB512F01B1F7E9E20
->I<90380FE0109038381C309038E002703803C00139078000F048C71270121E15305A15
-10127C127800F81400A91278007C1410123CA26C1420A27E6C6C13406C6C13803900E003
-00EB380CEB0FF01C217E9F21>I<B512F83807801EEC0780EC03C0EC01E0EC00F0157015
-78A2153CA3153EA8153CA2157C1578A215F0EC01E0EC03C0EC0780EC1E00B512F81F1F7F
-9E23>I<B61280380F000F14031401140015C01540A314401500A214C0130113FF130113
-001440A3EC0020A31540A315C01401EC0380140FB6FC1B1F7E9E1F>I<B6128038078007
-1401A2140015C01540A4EC2000A3146014E013FF138014601420A391C7FCA87FEAFFFE1A
-1F7F9E1E>I<90380FE02090387818609038E004E03803800238070001481300001E1460
-A25A1520127C127800F81400A7EC7FFCEC03E000781301127C123CA27EA27E7E38038002
-3900E00460903878182090380FE0001E217D9F24>I<39FFF07FF8390F000780AD90B5FC
-EB0007AF39FFF07FF81D1F7E9E22>I<EAFFF0EA0F00B3ABEAFFF00C1F7E9E10>I<39FFF0
-07FC390F0003E0EC0180150014025C5C5C5C5C5C49C7FC5B497E130FEB13C0EB21E01341
-EB80F0EB0078A28080A280EC0780A2EC03C015E015F039FFF01FFE1F1F7E9E23>75
-D<EAFFF8EA0F8090C7FCB21402A414061404A2140C141C147CB512FC171F7E9E1C>I<B4
-6CEB07FE000715C0A2D805C0130BA2D804E01313A301701323A26D1343A36D1383A29038
-0E0103A3EB0702A3EB0384A2EB01C8A3EB00F0A21460121FD8FFE0EB7FFE271F7F9E2A>
-I<B4EB0FF8390F8003E0EC0080EA0BC0EA09E0A2EA08F01378A27F7FA27FEB0780A2EB03
-C0EB01E0A2EB00F01478A2143C141EA2140F1407A214031401123E38FF80001D1F7E9E22
->I<EB1FE0EB70383801C00E48487E39070003804814C0001EEB01E048EB00F0A2007C14
-F8A20078147800F8147CA900781478007C14F8A2003C14F0003E1301001E14E06CEB03C0
-6C148039038007003801E01E38007038EB1FE01E217E9F23>I<B512E0380F007C141E80
-EC0780A215C0A41580A2EC0F00141E147CEBFFE090C8FCAEEAFFF01A1F7E9E1F>I<B512
-E0380F80780007131E80EC0780A215C0A41580A2EC0F00141E1478EBFFE0EB8060143814
-3C141C141EA3141FA315011581140F390FC0078239FFFC03C4C812F820207F9E22>82
-D<3803F040380C0CC0EA1803EA3001EA6000A212E01440A36C13007E127CEA7F80EA3FF8
-6CB4FC00071380C613C0EB1FE013031301EB00F014707EA46C136014E06C13C038F80180
-38C60300EA81FC14217E9F19>I<007FB512E038780F010060EB006000401420A200C014
-3000801410A400001400B3497E3803FFFC1C1F7E9E21>I<39FFF00FF8390F0003E0EC00
-80B3A46CEB01001380120314026C6C5A6C6C5AEB3830EB0FC01D207E9E22>I<39FFF003
-FE391F8000F86CC7126015206C6C1340A36C6C1380A2EBE00100011400A23800F002A213
-F8EB7804A26D5AA36D5AA2131F6D5AA2EB07C0A36D5AA36DC7FC1F207F9E22>I<3BFFF0
-7FF81FF03B1F000FC007C06C903907800180170015C001805C00071502EC09E013C00003
-5DEC19F01410D801E05CA2EC2078D800F05CA2EC403C01785CA2EC801E017C1460013C14
-4090383D000F133F6D5CA2011E1307010E91C7FCA2010C7F010413022C207F9E2F>I<39
-FFF001FF391F800078000F146012076D1340000314807F3901F001001200EBF802EB7C06
-EB3C04EB3E08131EEB1F10EB0FB0EB07A014E06D5AACEB3FFC201F7F9E22>89
-D<12FFA212C0B3B3A512FFA2082D7CA10D>91 D<EA0804EA1008EA2010A2EA4020A2EA80
-40A3EAB85CEAFC7EA2EA7C3EEA381C0F0E7A9F17>I<12FFA21203B3B3A512FFA2082D80
-A10D>I<120812101220A21240A21280A312B812FCA2127C1238060E7D9F0D>96
-D<EA1FE0EA3030EA7818131CEA300E1200A313FEEA0F8EEA1E0E1238127800F01310A313
-1E127838386720380F83C014147E9317>I<121C12FC121CAA137CEA1D87381E0180EB00
-C0001C13E01470A21478A6147014F014E0001E13C0381A018038198700EA107C15207E9F
-19>I<EA01FCEA0706EA1C0F123813060078C7FC127012F0A61270127800381380A2381C
-0100EA0706EA01F811147F9314>I<EB01C0130F1301AAEA01F1EA070DEA0C03EA180112
-381278127012F0A61270A21238EA1803120CEA070D3801F1F815207F9F19>I<EA03F0EA
-0E1C487E487EA238700380A212F0B5FC00F0C7FCA41270A26C1380A2381C0100EA0706EA
-01F811147F9314>I<137CEA01C6EA030F1207EA0E061300A7EAFFF0EA0E00B2EA7FE010
-20809F0E>I<14E03803E330EA0E3CEA1C1C38380E00EA780FA5EA380E6C5AEA1E38EA33
-E00020C7FCA21230A2EA3FFE381FFF8014C0383001E038600070481330A4006013606C13
-C0381C03803803FC00141F7F9417>I<121C12FC121CAA137C1386EA1D03001E1380A212
-1CAE38FF8FF014207E9F19>I<1238127CA31238C7FCA6121C12FC121CB1EAFF80091F7F
-9E0C>I<13E0EA01F0A3EA00E01300A61370EA07F012001370B3A31260EAF06013C0EA61
-80EA3F000C28829E0E>I<121C12FC121CAAEB1FE0EB0780EB060013045B5B5B136013E0
-EA1DF0EA1E70EA1C38133C131C7F130F7F148014C038FF9FF014207E9F18>I<121C12FC
-121CB3ABEAFF8009207F9F0C>I<391C3E03E039FCC30C30391D019018001EEBE01CA200
-1C13C0AE3AFF8FF8FF8021147E9326>I<EA1C7CEAFC86EA1D03001E1380A2121CAE38FF
-8FF014147E9319>I<EA01F8EA070E381C0380383801C0A2387000E0A200F013F0A60070
-13E0A2383801C0A2381C038038070E00EA01F814147F9317>I<EA1C7CEAFD87381E0180
-14C0381C00E014F014701478A6147014F014E0381E01C0EB0380381D8700EA1C7C90C7FC
-A8B47E151D7E9319>I<3801F04038070CC0EA0E02EA1C03EA38011278127012F0A61270
-12781238EA1C03EA0C05EA0709EA01F1EA0001A8EB0FF8151D7F9318>I<EA1CF0EAFD18
-EA1E3CA21318EA1C00AEEAFFC00E147E9312>I<EA0FC8EA3038EA6018EAC008A3EAE000
-127CEA3FE0EA1FF0EA07F8EA003CEA800E130612C0A21304EAE00CEAD818EA87E00F147F
-9312>I<1202A31206A2120EA2123EEAFFF8EA0E00AB1304A5EA07081203EA01F00E1C7F
-9B12>I<381C0380EAFC1FEA1C03AE1307120CEA061B3803E3F014147E9319>I<38FF83F8
-383E00E0001C13C06C1380A338070100A21383EA0382A2EA01C4A213E4EA00E8A21370A3
-132015147F9318>I<39FF9FE1FC393C078070391C030060EC8020000E1440A214C0D807
-04138014E0A239038861001471A23801D032143A143E3800E01CA2EB6018EB40081E147F
-9321>I<38FF87F8381E03C0380E0180EB0300EA0702EA0384EA01C813D8EA00F0137013
-7813F8139CEA010E1202EA060738040380000C13C0003C13E038FE07FC16147F9318>I<
-38FF83F8383E00E0001C13C06C1380A338070100A21383EA0382A2EA01C4A213E4EA00E8
-A21370A31320A25BA3EAF080A200F1C7FC1262123C151D7F9318>I<EA7FFFEA700E1260
-EA401C133813781370EA00E0120113C0EA038012071301120E121EEA1C03EA3802EA7006
-130EEAFFFE10147F9314>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fv cmbx12 20.736 14
-/Fv 14 122 df<DB1FFC14C00203B5EAC001021FECF003027FECFC07903B01FFFC00FE0F
-010701C0EB1F9F4948C7EA07FFD93FF880494814004948157F485B4A153F4890C9121F48
-5A000F170F5B001F1707A2485A1803A2127FA24993C8FCA212FFAA041FB61280127FA27F
-DC0001EBC000123FA36C7EA26C7EA26C7E7E6C7F806C7F6D6C5CEB3FFCD90FFF5C6D01C0
-EB1FBF010101FCEBFF1F6D6CB5EAFE0F021FECF8030203ECE0009126001FFEC9FC413D7B
-BB4C>71 D<B612FEA426007FF0C9FCB3ADEF03C0A517071880A3170FA3171FA2173F177F
-17FF5E04071300163FB9FCA4323B7DBA3A>76 D<B500F00207B512E0808080D8007F9239
-0007E0006E6F5A81017B7F81137901787F6E7E6E7E81141F6E7E6E7F6E7F82806E7F6F7E
-6F7E826F7E816F13806F13C017E06F13F081EE7FF8EE3FFC17FEEE1FFF827013837013C3
-18E37013F382EF7FFBEF3FFFA283838383A28383187F183FA201FC161FB500FC150F1807
-1803A2433B7CBA4C>78 D<B712F8EEFFC017F817FE3B007FF0001FFF040313C004007F71
-7E717EA284171FA284A660A2173F604D5A604C485A4C5BDC1FFEC8FC91B612F817C0A291
-39F0007FF0EE1FF8707E707E707E8482A284A584A5F101E0A27013F0A2F103C0EF7FF8B6
-00F890393FFC078094381FFE0F0507B51200050113FCCBEA1FF0433C7CBA48>82
-D<B600F80107B512E0A426007FF0C83807E000725AB3B3A3013F4C5AA280011F4CC7FCA2
-6D6C151E0107163E6E5D6D6C5D6D6D13019026007FE0EB0FE0DA3FFCEB7FC0020FB65A02
-034AC8FCDA007F13F003071380433C7DBA4A>85 D<EB3FFE48B512E0000714F8390FE007
-FC9038F001FE486C6C7E6F7E82153F6C48806C5A6C5AC8FCA491B5FC131F90387FF83F38
-03FF803807FC00EA0FF0485A123F485AA2485AA4157F6C7E15DF3A3FE0039FF03B1FF80F
-0FFFE03807FFFE0001497E39003FE0002B267DA52F>97 D<13FE12FFA412071203B04AB4
-FC021F13F0027F13FC9138FC03FE9039FFF000FF02C0EB3F8091C7EA1FC04915E0EE0FF0
-17F8A2EE07FCA317FEA917FCA3160F17F817F0161F6D15E06EEB3FC06EEB7F80D9F9E0EB
-FF009039F0FC07FE91387FFFF8D9E01F13E09026C003FEC7FC2F3C7DBB36>I<EE3F80ED
-3FFFA4150181B0ECFF80010F13F0013F13FC9038FFC03F3901FE000F4848130348487F48
-487F121F485AA2127F5BA312FFA9127FA36C7EA2121F6C6C5B6C6C5B00035CD801FE011F
-13C02700FF807E13FE90387FFFF8010F13E0010113002F3C7DBB36>100
-D<49B47E010F13F0017F13FC9038FF81FE3A03FE007F80D807F8133F4848EB1FC0ED0FE0
-485A003F15F01507485A16F8A212FFA290B6FCA301C0C8FCA4127FA36C7E1678121F7F00
-0F15F06C6C13016C6CEB03E06C6CEB0FC03A00FFC07F8090393FFFFE00010F13F8010013
-C025267DA52C>I<EA01E0EA07F8487EA2487EA46C5AA26C5AEA01E0C8FCAB13FE127FA4
-12071203B3AAB512F0A4143D7DBC1A>105 D<13FE12FFA412071203B3B3AEB512F8A415
-3C7DBB1A>108 D<D801FCEBFF8000FF010313F0020F7F91381E03FC91383801FE000701
-607F0003497E01FD15805C01FFC7FCA35BB3A4B5D8F83F13FEA42F267CA536>110
-D<3901FC03F000FFEB0FFC4AB4FC91383C3F80EC707F00079038E0FFC000035BEBFD80A2
-01FFEB7F809138003F00151E92C7FC5BB3A3B512FCA422267DA528>114
-D<B500F0EBFFFCA4D803FEC7EA1F806D15006C151E806C5DA26E137C017F14786E13F801
-3F5CECF001011F5CECF803010F5CA2ECFC0701075CECFE0F010391C7FC6E5A6D131E15BE
-6D13BC15FC6E5AA36E5AA26E5AA26E5AA26E5AA2140F92C8FC5C141E0008133E007F133C
-147C38FF807814F8EB81F0EB83E06C485A387C1F80D83FFFC9FCEA1FFCEA07F02E377EA5
-33>121 D E
-%EndDVIPSBitmapFont
-end
-%%EndProlog
-%%BeginSetup
-%%Feature: *Resolution 300dpi
-TeXDict begin
-%%BeginPaperSize: Letter
-letter
-%%EndPaperSize
-
-%%EndSetup
-%%Page: 1 1
-1 0 bop 75 659 a Fv(GNU)33 b(Readline)h(Library)p 75
-709 1800 17 v 936 757 a Fu(Edition)17 b(4.3,)c(for)i
-Ft(Readline)f(Library)g Fu(V)l(ersion)i(4.3.)1643 811
-y(Marc)o(h)e(2002)75 2467 y Fs(Brian)23 b(F)-6 b(o)n(x,)23
-b(F)-6 b(ree)23 b(Soft)n(w)n(are)f(F)-6 b(oundation)75
-2534 y(Chet)22 b(Ramey)-6 b(,)23 b(Case)e(W)-6 b(estern)23
-b(Reserv)n(e)f(Univ)n(ersit)n(y)p 75 2570 1800 9 v eop
-%%Page: 2 2
-2 1 bop 75 217 a Fu(This)14 b(do)q(cumen)o(t)h(describ)q(es)g(the)f
-(GNU)g(Readline)h(Library)l(,)f(a)g(utilit)o(y)h(whic)o(h)f(aids)g(in)h
-(the)f(consistency)75 271 y(of)h(user)g(in)o(terface)h(across)e
-(discrete)i(programs)e(that)h(need)h(to)e(pro)o(vide)i(a)f(command)g
-(line)i(in)o(terface.)75 339 y(Published)g(b)o(y)f(the)f(F)l(ree)g
-(Soft)o(w)o(are)f(F)l(oundation)75 394 y(59)h(T)l(emple)h(Place,)f
-(Suite)i(330,)75 448 y(Boston,)d(MA)h(02111)f(USA)75
-516 y(P)o(ermission)j(is)f(gran)o(ted)g(to)f(mak)o(e)h(and)g
-(distribute)i(v)o(erbatim)d(copies)i(of)f(this)h(man)o(ual)f(pro)o
-(vided)h(the)75 570 y(cop)o(yrigh)o(t)e(notice)h(and)f(this)h(p)q
-(ermission)g(notice)g(are)f(preserv)o(ed)h(on)f(all)h(copies.)75
-638 y(P)o(ermission)c(is)h(gran)o(ted)e(to)g(cop)o(y)h(and)g
-(distribute)h(mo)q(di\014ed)g(v)o(ersions)f(of)f(this)h(man)o(ual)g
-(under)h(the)f(con-)75 692 y(ditions)k(for)e(v)o(erbatim)h(cop)o(ying,)
-g(pro)o(vided)h(that)e(the)h(en)o(tire)h(resulting)g(deriv)o(ed)g(w)o
-(ork)e(is)h(distributed)75 747 y(under)h(the)f(terms)g(of)g(a)f(p)q
-(ermission)j(notice)f(iden)o(tical)h(to)e(this)g(one.)75
-814 y(P)o(ermission)i(is)g(gran)o(ted)f(to)g(cop)o(y)h(and)f
-(distribute)i(translations)f(of)f(this)h(man)o(ual)g(in)o(to)f(another)
-g(lan-)75 869 y(guage,)e(under)h(the)f(ab)q(o)o(v)o(e)g(conditions)i
-(for)d(mo)q(di\014ed)j(v)o(ersions,)e(except)h(that)f(this)h(p)q
-(ermission)g(notice)75 924 y(ma)o(y)f(b)q(e)i(stated)f(in)h(a)f
-(translation)g(appro)o(v)o(ed)g(b)o(y)g(the)g(F)l(ree)h(Soft)o(w)o(are)
-d(F)l(oundation.)75 2661 y(Cop)o(yrigh)o(t)301 2660 y(c)289
-2661 y Fr(\015)h Fu(1988-2002)f(F)l(ree)i(Soft)o(w)o(are)f(F)l
-(oundation,)h(Inc.)p eop
-%%Page: 1 3
-1 2 bop 75 -58 a Fu(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077
-b(1)75 149 y Fq(1)41 b(Command)28 b(Line)e(Editing)137
-271 y Fu(This)16 b(c)o(hapter)f(describ)q(es)i(the)e(basic)h(features)f
-(of)g(the)g Fp(gnu)g Fu(command)g(line)i(editing)f(in)o(terface.)75
-403 y Fs(1.1)33 b(In)n(tro)r(duction)24 b(to)e(Line)i(Editing)137
-501 y Fu(The)16 b(follo)o(wing)g(paragraphs)e(describ)q(e)j(the)e
-(notation)g(used)h(to)e(represen)o(t)i(k)o(eystrok)o(es.)137
-569 y(The)h(text)f Fo(C-k)h Fu(is)g(read)g(as)f(`Con)o(trol-K')g(and)h
-(describ)q(es)h(the)f(c)o(haracter)f(pro)q(duced)h(when)h(the)1831
-567 y Fn(h)p 1844 541 19 2 v 1844 569 a Fm(k)p 1844 577
-V 1860 567 a Fn(i)75 624 y Fu(k)o(ey)d(is)h(pressed)g(while)g(the)f
-(Con)o(trol)g(k)o(ey)g(is)h(depressed.)137 693 y(The)g(text)g
-Fo(M-k)f Fu(is)i(read)f(as)f(`Meta-K')g(and)h(describ)q(es)i(the)e(c)o
-(haracter)f(pro)q(duced)i(when)g(the)f(Meta)75 747 y(k)o(ey)e(\(if)g(y)
-o(ou)g(ha)o(v)o(e)g(one\))g(is)h(depressed,)g(and)f(the)930
-745 y Fn(h)p 942 719 V 942 747 a Fm(k)p 942 755 V 958
-745 a Fn(i)987 747 y Fu(k)o(ey)g(is)h(pressed.)20 b(The)15
-b(Meta)e(k)o(ey)h(is)h(lab)q(eled)1779 745 y Fn(h)p 1791
-719 72 2 v 1791 747 a Fm(AL)m(T)p 1791 755 V 1860 745
-a Fn(i)75 802 y Fu(on)e(man)o(y)g(k)o(eyb)q(oards.)19
-b(On)13 b(k)o(eyb)q(oards)g(with)h(t)o(w)o(o)e(k)o(eys)g(lab)q(eled)
-1213 800 y Fn(h)p 1225 774 V 1225 802 a Fm(AL)m(T)p 1225
-810 V 1294 800 a Fn(i)1322 802 y Fu(\(usually)i(to)e(either)i(side)g
-(of)f(the)75 857 y(space)j(bar\),)f(the)388 855 y Fn(h)p
-400 829 V 400 857 a Fm(AL)m(T)p 400 865 V 469 855 a Fn(i)499
-857 y Fu(on)h(the)g(left)g(side)g(is)g(generally)h(set)f(to)f(w)o(ork)g
-(as)g(a)g(Meta)g(k)o(ey)l(.)22 b(The)1697 855 y Fn(h)p
-1709 829 V 1709 857 a Fm(AL)m(T)p 1709 865 V 1778 855
-a Fn(i)1808 857 y Fu(k)o(ey)75 912 y(on)17 b(the)f(righ)o(t)h(ma)o(y)f
-(also)h(b)q(e)g(con\014gured)g(to)f(w)o(ork)g(as)g(a)h(Meta)f(k)o(ey)g
-(or)g(ma)o(y)g(b)q(e)i(con\014gured)f(as)f(some)75 967
-y(other)f(mo)q(di\014er,)h(suc)o(h)f(as)g(a)g(Comp)q(ose)g(k)o(ey)g
-(for)f(t)o(yping)i(accen)o(ted)f(c)o(haracters.)137 1035
-y(If)c(y)o(ou)g(do)g(not)f(ha)o(v)o(e)h(a)f(Meta)h(or)694
-1033 y Fn(h)p 706 1007 V 706 1035 a Fm(AL)m(T)p 706 1043
-V 775 1033 a Fn(i)801 1035 y Fu(k)o(ey)l(,)g(or)g(another)f(k)o(ey)h(w)
-o(orking)f(as)h(a)f(Meta)h(k)o(ey)l(,)g(the)g(iden)o(tical)75
-1090 y(k)o(eystrok)o(e)f(can)i(b)q(e)g(generated)f(b)o(y)g(t)o(yping)
-809 1088 y Fn(h)p 822 1062 70 2 v 822 1090 a Fm(ESC)p
-822 1098 V 888 1088 a Fn(i)915 1090 y Fl(\014rst)p Fu(,)g(and)g(then)h
-(t)o(yping)1339 1088 y Fn(h)p 1351 1062 19 2 v 1351 1090
-a Fm(k)p 1351 1098 V 1368 1088 a Fn(i)1383 1090 y Fu(.)18
-b(Either)12 b(pro)q(cess)f(is)h(kno)o(wn)75 1145 y(as)j
-Fk(metafying)k Fu(the)425 1143 y Fn(h)p 437 1117 V 437
-1145 a Fm(k)p 437 1153 V 454 1143 a Fn(i)484 1145 y Fu(k)o(ey)l(.)137
-1214 y(The)i(text)e Fo(M-C-k)h Fu(is)h(read)f(as)f(`Meta-Con)o(trol-k')
-g(and)h(describ)q(es)i(the)e(c)o(haracter)g(pro)q(duced)h(b)o(y)75
-1268 y Fk(metafying)e Fo(C-k)p Fu(.)137 1337 y(In)g(addition,)h(sev)o
-(eral)f(k)o(eys)f(ha)o(v)o(e)g(their)h(o)o(wn)f(names.)30
-b(Sp)q(eci\014cally)l(,)1384 1335 y Fn(h)p 1396 1309
-73 2 v 1396 1337 a Fm(DEL)p 1396 1345 V 1467 1335 a Fn(i)1482
-1337 y Fu(,)1514 1335 y Fn(h)p 1526 1309 70 2 v 1526
-1337 a Fm(ESC)p 1526 1345 V 1593 1335 a Fn(i)1608 1337
-y Fu(,)1640 1335 y Fn(h)p 1652 1309 72 2 v 1652 1337
-a Fm(LFD)p 1652 1345 V 1722 1335 a Fn(i)1737 1337 y Fu(,)1768
-1335 y Fn(h)p 1780 1309 70 2 v 1780 1337 a Fm(SPC)p 1780
-1345 V 1847 1335 a Fn(i)1862 1337 y Fu(,)75 1390 y Fn(h)p
-87 1364 76 2 v 87 1392 a Fm(RET)p 87 1399 V 160 1390
-a Fn(i)175 1392 y Fu(,)23 b(and)306 1390 y Fn(h)p 318
-1364 74 2 v 318 1392 a Fm(T)m(AB)p 318 1399 V 390 1390
-a Fn(i)427 1392 y Fu(all)f(stand)g(for)f(themselv)o(es)h(when)h(seen)f
-(in)g(this)g(text,)h(or)e(in)i(an)e(init)i(\014le)g(\(see)75
-1447 y(Section)d(1.3)f([Readline)h(Init)g(File],)h(page)e(4\).)32
-b(If)19 b(y)o(our)g(k)o(eyb)q(oard)h(lac)o(ks)f(a)1444
-1445 y Fn(h)p 1456 1419 72 2 v 1456 1447 a Fm(LFD)p 1456
-1454 V 1526 1445 a Fn(i)1560 1447 y Fu(k)o(ey)l(,)h(t)o(yping)1802
-1445 y Fn(h)p 1814 1419 49 2 v 1814 1447 a Fm(C-j)p 1814
-1454 V 1860 1445 a Fn(i)75 1501 y Fu(will)c(pro)q(duce)g(the)f(desired)
-h(c)o(haracter.)j(The)874 1499 y Fn(h)p 886 1473 76 2
-v 886 1501 a Fm(RET)p 886 1509 V 959 1499 a Fn(i)989
-1501 y Fu(k)o(ey)c(ma)o(y)f(b)q(e)h(lab)q(eled)1385 1499
-y Fn(h)p 1397 1473 109 2 v 1397 1501 a Fm(Return)p 1397
-1509 V 1503 1499 a Fn(i)1533 1501 y Fu(or)1588 1499 y
-Fn(h)p 1600 1473 86 2 v 1600 1501 a Fm(En)o(ter)p 1600
-1509 V 1684 1499 a Fn(i)1714 1501 y Fu(on)f(some)75 1556
-y(k)o(eyb)q(oards.)75 1688 y Fs(1.2)33 b(Readline)23
-b(In)n(teraction)137 1786 y Fu(Often)13 b(during)h(an)e(in)o(teractiv)o
-(e)h(session)g(y)o(ou)g(t)o(yp)q(e)f(in)i(a)e(long)h(line)h(of)e(text,)
-h(only)g(to)f(notice)h(that)f(the)75 1841 y(\014rst)k(w)o(ord)f(on)h
-(the)h(line)h(is)e(missp)q(elled.)26 b(The)16 b(Readline)i(library)f
-(giv)o(es)f(y)o(ou)g(a)g(set)g(of)g(commands)g(for)75
-1896 y(manipulating)g(the)f(text)g(as)f(y)o(ou)h(t)o(yp)q(e)g(it)g(in,)
-g(allo)o(wing)h(y)o(ou)f(to)f(just)h(\014x)g(y)o(our)f(t)o(yp)q(o,)g
-(and)h(not)g(forcing)75 1950 y(y)o(ou)f(to)f(ret)o(yp)q(e)h(the)g(ma)s
-(jorit)o(y)f(of)h(the)g(line.)21 b(Using)15 b(these)f(editing)h
-(commands,)f(y)o(ou)g(mo)o(v)o(e)f(the)h(cursor)75 2005
-y(to)i(the)i(place)g(that)e(needs)i(correction,)g(and)f(delete)h(or)f
-(insert)g(the)h(text)e(of)h(the)g(corrections.)26 b(Then,)75
-2060 y(when)16 b(y)o(ou)f(are)h(satis\014ed)g(with)g(the)f(line,)i(y)o
-(ou)e(simply)i(press)1160 2058 y Fn(h)p 1172 2032 76
-2 v 1172 2060 a Fm(RET)p 1172 2068 V 1245 2058 a Fn(i)1260
-2060 y Fu(.)k(Y)l(ou)16 b(do)f(not)h(ha)o(v)o(e)f(to)g(b)q(e)h(at)f
-(the)75 2115 y(end)k(of)e(the)h(line)i(to)d(press)563
-2113 y Fn(h)p 575 2087 V 575 2115 a Fm(RET)p 575 2122
-V 648 2113 a Fn(i)663 2115 y Fu(;)i(the)f(en)o(tire)h(line)g(is)g
-(accepted)f(regardless)g(of)g(the)g(lo)q(cation)g(of)g(the)75
-2170 y(cursor)d(within)h(the)g(line.)75 2284 y Fj(1.2.1)30
-b(Readline)20 b(Bare)g(Essen)n(tials)137 2382 y Fu(In)12
-b(order)g(to)f(en)o(ter)g(c)o(haracters)g(in)o(to)g(the)h(line,)h
-(simply)g(t)o(yp)q(e)f(them.)18 b(The)12 b(t)o(yp)q(ed)g(c)o(haracter)f
-(app)q(ears)75 2437 y(where)16 b(the)h(cursor)f(w)o(as,)f(and)h(then)h
-(the)f(cursor)g(mo)o(v)o(es)g(one)g(space)g(to)g(the)g(righ)o(t.)23
-b(If)17 b(y)o(ou)f(mist)o(yp)q(e)g(a)75 2492 y(c)o(haracter,)e(y)o(ou)h
-(can)g(use)h(y)o(our)f(erase)g(c)o(haracter)f(to)h(bac)o(k)g(up)g(and)h
-(delete)g(the)f(mist)o(yp)q(ed)h(c)o(haracter.)137 2560
-y(Sometimes)g(y)o(ou)f(ma)o(y)g(mist)o(yp)q(e)h(a)f(c)o(haracter,)f
-(and)i(not)f(notice)h(the)f(error)g(un)o(til)i(y)o(ou)e(ha)o(v)o(e)g(t)
-o(yp)q(ed)75 2615 y(sev)o(eral)g(other)f(c)o(haracters.)19
-b(In)c(that)e(case,)i(y)o(ou)f(can)g(t)o(yp)q(e)h Fo(C-b)f
-Fu(to)g(mo)o(v)o(e)f(the)i(cursor)f(to)g(the)g(left,)h(and)75
-2670 y(then)h(correct)e(y)o(our)h(mistak)o(e.)20 b(Afterw)o(ards,)13
-b(y)o(ou)i(can)g(mo)o(v)o(e)g(the)g(cursor)g(to)g(the)g(righ)o(t)g
-(with)g Fo(C-f)p Fu(.)p eop
-%%Page: 2 4
-2 3 bop 75 -58 a Fu(2)1322 b(GNU)15 b(Readline)h(Library)137
-149 y(When)h(y)o(ou)f(add)g(text)g(in)h(the)g(middle)h(of)e(a)f(line,)j
-(y)o(ou)e(will)i(notice)f(that)f(c)o(haracters)f(to)h(the)g(righ)o(t)75
-204 y(of)e(the)g(cursor)g(are)g(`pushed)h(o)o(v)o(er')f(to)f(mak)o(e)h
-(ro)q(om)g(for)f(the)i(text)f(that)f(y)o(ou)h(ha)o(v)o(e)g(inserted.)21
-b(Lik)o(ewise,)75 259 y(when)e(y)o(ou)g(delete)h(text)e(b)q(ehind)j
-(the)e(cursor,)g(c)o(haracters)f(to)g(the)h(righ)o(t)f(of)g(the)h
-(cursor)g(are)f(`pulled)75 314 y(bac)o(k')11 b(to)g(\014ll)h(in)h(the)e
-(blank)h(space)g(created)f(b)o(y)h(the)f(remo)o(v)m(al)g(of)g(the)h
-(text.)18 b(A)11 b(list)h(of)f(the)h(bare)f(essen)o(tials)75
-369 y(for)k(editing)h(the)f(text)g(of)g(an)g(input)h(line)h(follo)o
-(ws.)75 449 y Fo(C-b)168 b Fu(Mo)o(v)o(e)14 b(bac)o(k)h(one)h(c)o
-(haracter.)75 530 y Fo(C-f)168 b Fu(Mo)o(v)o(e)14 b(forw)o(ard)g(one)h
-(c)o(haracter.)75 608 y Fn(h)p 87 582 73 2 v 87 610 a
-Fm(DEL)p 87 618 V 158 608 a Fn(i)188 610 y Fu(or)244
-608 y Fn(h)p 256 582 159 2 v 256 610 a Fm(Bac)o(kspace)p
-256 618 V 412 608 a Fn(i)315 665 y Fu(Delete)h(the)f(c)o(haracter)g(to)
-f(the)h(left)h(of)f(the)g(cursor.)75 745 y Fo(C-d)168
-b Fu(Delete)16 b(the)f(c)o(haracter)g(underneath)h(the)f(cursor.)75
-825 y(Prin)o(ting)h(c)o(haracters)315 880 y(Insert)f(the)h(c)o
-(haracter)e(in)o(to)h(the)h(line)h(at)d(the)h(cursor.)75
-961 y Fo(C-_)g Fu(or)f Fo(C-x)h(C-u)315 1015 y Fu(Undo)i(the)g(last)f
-(editing)i(command.)25 b(Y)l(ou)17 b(can)g(undo)g(all)g(the)g(w)o(a)o
-(y)f(bac)o(k)h(to)f(an)g(empt)o(y)315 1070 y(line.)75
-1151 y(\(Dep)q(ending)i(on)f(y)o(our)g(con\014guration,)g(the)863
-1149 y Fn(h)p 875 1123 V 875 1151 a Fm(Bac)o(kspace)p
-875 1159 V 1032 1149 a Fn(i)1063 1151 y Fu(k)o(ey)g(b)q(e)h(set)f(to)f
-(delete)i(the)f(c)o(haracter)g(to)f(the)75 1206 y(left)h(of)f(the)h
-(cursor)f(and)g(the)596 1204 y Fn(h)p 608 1178 73 2 v
-608 1206 a Fm(DEL)p 608 1213 V 679 1204 a Fn(i)710 1206
-y Fu(k)o(ey)h(set)f(to)g(delete)h(the)g(c)o(haracter)f(underneath)h
-(the)g(cursor,)f(lik)o(e)75 1260 y Fo(C-d)p Fu(,)e(rather)h(than)g(the)
-g(c)o(haracter)g(to)f(the)i(left)f(of)g(the)g(cursor.\))75
-1374 y Fj(1.2.2)30 b(Readline)20 b(Mo)n(v)n(emen)n(t)i(Commands)137
-1471 y Fu(The)14 b(ab)q(o)o(v)o(e)e(table)i(describ)q(es)g(the)g(most)e
-(basic)i(k)o(eystrok)o(es)d(that)i(y)o(ou)g(need)h(in)f(order)g(to)g
-(do)g(editing)75 1526 y(of)f(the)h(input)h(line.)21 b(F)l(or)12
-b(y)o(our)g(con)o(v)o(enience,)i(man)o(y)f(other)f(commands)h(ha)o(v)o
-(e)f(b)q(een)i(added)f(in)h(addition)75 1580 y(to)h Fo(C-b)p
-Fu(,)h Fo(C-f)p Fu(,)f Fo(C-d)p Fu(,)g(and)522 1578 y
-Fn(h)p 534 1552 V 534 1580 a Fm(DEL)p 534 1588 V 605
-1578 a Fn(i)619 1580 y Fu(.)23 b(Here)16 b(are)g(some)f(commands)h(for)
-f(mo)o(ving)h(more)g(rapidly)h(ab)q(out)f(the)75 1635
-y(line.)75 1716 y Fo(C-a)168 b Fu(Mo)o(v)o(e)14 b(to)h(the)g(start)f
-(of)h(the)g(line.)75 1796 y Fo(C-e)168 b Fu(Mo)o(v)o(e)14
-b(to)h(the)g(end)h(of)f(the)g(line.)75 1876 y Fo(M-f)168
-b Fu(Mo)o(v)o(e)14 b(forw)o(ard)g(a)h(w)o(ord,)f(where)i(a)e(w)o(ord)h
-(is)h(comp)q(osed)f(of)g(letters)g(and)h(digits.)75 1957
-y Fo(M-b)168 b Fu(Mo)o(v)o(e)14 b(bac)o(kw)o(ard)h(a)g(w)o(ord.)75
-2037 y Fo(C-l)168 b Fu(Clear)15 b(the)h(screen,)f(reprin)o(ting)h(the)f
-(curren)o(t)g(line)i(at)e(the)g(top.)137 2118 y(Notice)e(ho)o(w)f
-Fo(C-f)g Fu(mo)o(v)o(es)f(forw)o(ard)g(a)h(c)o(haracter,)g(while)i
-Fo(M-f)e Fu(mo)o(v)o(es)f(forw)o(ard)g(a)h(w)o(ord.)18
-b(It)13 b(is)g(a)f(lo)q(ose)75 2173 y(con)o(v)o(en)o(tion)j(that)f(con)
-o(trol)h(k)o(eystrok)o(es)f(op)q(erate)h(on)f(c)o(haracters)h(while)h
-(meta)e(k)o(eystrok)o(es)g(op)q(erate)h(on)75 2227 y(w)o(ords.)75
-2341 y Fj(1.2.3)30 b(Readline)20 b(Killing)h(Commands)137
-2438 y Fk(Killing)26 b Fu(text)18 b(means)g(to)g(delete)i(the)f(text)f
-(from)g(the)h(line,)i(but)d(to)g(sa)o(v)o(e)g(it)h(a)o(w)o(a)o(y)e(for)
-h(later)h(use,)75 2493 y(usually)f(b)o(y)f Fk(y)o(anking)22
-b Fu(\(re-inserting\))17 b(it)g(bac)o(k)g(in)o(to)g(the)h(line.)27
-b(\(`Cut')15 b(and)j(`paste')e(are)g(more)h(recen)o(t)75
-2547 y(jargon)d(for)h(`kill')h(and)g(`y)o(ank'.\))137
-2615 y(If)g(the)f(description)h(for)f(a)g(command)g(sa)o(ys)f(that)h
-(it)g(`kills')h(text,)e(then)i(y)o(ou)f(can)g(b)q(e)h(sure)f(that)f(y)o
-(ou)75 2670 y(can)h(get)g(the)g(text)g(bac)o(k)g(in)h(a)f(di\013eren)o
-(t)g(\(or)g(the)g(same\))g(place)h(later.)p eop
-%%Page: 3 5
-3 4 bop 75 -58 a Fu(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077
-b(3)137 149 y(When)12 b(y)o(ou)g(use)g(a)f(kill)i(command,)f(the)g
-(text)f(is)h(sa)o(v)o(ed)f(in)i(a)e Fk(kill-ring)p Fu(.)21
-b(An)o(y)12 b(n)o(um)o(b)q(er)g(of)f(consecutiv)o(e)75
-204 y(kills)17 b(sa)o(v)o(e)e(all)h(of)f(the)h(killed)i(text)d
-(together,)f(so)h(that)g(when)h(y)o(ou)f(y)o(ank)g(it)h(bac)o(k,)f(y)o
-(ou)g(get)g(it)h(all.)22 b(The)75 259 y(kill)c(ring)f(is)f(not)g(line)i
-(sp)q(eci\014c;)g(the)e(text)g(that)f(y)o(ou)h(killed)j(on)d(a)g
-(previously)h(t)o(yp)q(ed)g(line)h(is)e(a)o(v)m(ailable)75
-314 y(to)f(b)q(e)g(y)o(ank)o(ed)g(bac)o(k)h(later,)e(when)i(y)o(ou)f
-(are)g(t)o(yping)g(another)g(line.)137 380 y(Here)h(is)f(the)h(list)g
-(of)e(commands)h(for)g(killing)j(text.)75 458 y Fo(C-k)168
-b Fu(Kill)17 b(the)f(text)e(from)h(the)g(curren)o(t)g(cursor)g(p)q
-(osition)h(to)f(the)g(end)h(of)f(the)g(line.)75 535 y
-Fo(M-d)168 b Fu(Kill)15 b(from)e(the)g(cursor)g(to)f(the)i(end)g(of)e
-(the)i(curren)o(t)f(w)o(ord,)f(or,)h(if)g(b)q(et)o(w)o(een)h(w)o(ords,)
-e(to)h(the)315 590 y(end)j(of)f(the)g(next)g(w)o(ord.)k(W)l(ord)c(b)q
-(oundaries)i(are)e(the)g(same)g(as)g(those)f(used)i(b)o(y)f
-Fo(M-f)p Fu(.)75 668 y Fo(M-)123 666 y Fn(h)p 135 640
-73 2 v 135 668 a Fm(DEL)p 135 675 V 206 666 a Fn(i)315
-668 y Fu(Kill)i(from)e(the)g(cursor)g(the)h(start)e(of)h(the)g(curren)o
-(t)g(w)o(ord,)f(or,)h(if)g(b)q(et)o(w)o(een)h(w)o(ords,)e(to)h(the)315
-723 y(start)j(of)h(the)g(previous)h(w)o(ord.)31 b(W)l(ord)19
-b(b)q(oundaries)h(are)f(the)h(same)e(as)h(those)g(used)h(b)o(y)315
-777 y Fo(M-b)p Fu(.)75 855 y Fo(C-w)168 b Fu(Kill)18
-b(from)d(the)g(cursor)h(to)f(the)g(previous)i(whitespace.)22
-b(This)16 b(is)g(di\013eren)o(t)g(than)f Fo(M-)1777 853
-y Fn(h)p 1789 827 V 1789 855 a Fm(DEL)p 1789 863 V 1860
-853 a Fn(i)315 910 y Fu(b)q(ecause)h(the)f(w)o(ord)g(b)q(oundaries)h
-(di\013er.)137 987 y(Here)21 b(is)h(ho)o(w)e(to)g Fk(y)o(ank)j
-Fu(the)e(text)f(bac)o(k)h(in)o(to)g(the)f(line.)39 b(Y)l(anking)21
-b(means)g(to)f(cop)o(y)h(the)g(most-)75 1042 y(recen)o(tly-killed)d
-(text)d(from)f(the)i(kill)h(bu\013er.)75 1120 y Fo(C-y)168
-b Fu(Y)l(ank)15 b(the)h(most)e(recen)o(tly)i(killed)h(text)e(bac)o(k)g
-(in)o(to)g(the)h(bu\013er)f(at)f(the)i(cursor.)75 1198
-y Fo(M-y)168 b Fu(Rotate)16 b(the)h(kill-ring,)j(and)d(y)o(ank)g(the)h
-(new)f(top.)26 b(Y)l(ou)17 b(can)h(only)g(do)f(this)h(if)f(the)h(prior)
-315 1252 y(command)d(is)h Fo(C-y)f Fu(or)f Fo(M-y)p Fu(.)75
-1361 y Fj(1.2.4)30 b(Readline)20 b(Argumen)n(ts)137 1457
-y Fu(Y)l(ou)15 b(can)g(pass)f(n)o(umeric)i(argumen)o(ts)e(to)g
-(Readline)h(commands.)20 b(Sometimes)15 b(the)g(argumen)o(t)e(acts)75
-1511 y(as)20 b(a)f(rep)q(eat)i(coun)o(t,)f(other)g(times)g(it)h(is)f
-(the)g Fl(sign)j Fu(of)c(the)h(argumen)o(t)g(that)f(is)i(signi\014can)o
-(t.)35 b(If)20 b(y)o(ou)75 1566 y(pass)d(a)f(negativ)o(e)h(argumen)o(t)
-f(to)g(a)g(command)h(whic)o(h)h(normally)f(acts)f(in)i(a)e(forw)o(ard)g
-(direction,)i(that)75 1621 y(command)g(will)h(act)e(in)i(a)e(bac)o(kw)o
-(ard)g(direction.)28 b(F)l(or)17 b(example,)i(to)e(kill)j(text)d(bac)o
-(k)g(to)g(the)h(start)e(of)75 1676 y(the)f(line,)i(y)o(ou)e(migh)o(t)g
-(t)o(yp)q(e)g(`)p Ft(M--)f(C-k)p Fu('.)137 1742 y(The)h(general)f(w)o
-(a)o(y)f(to)h(pass)g(n)o(umeric)h(argumen)o(ts)e(to)g(a)h(command)g(is)
-h(to)e(t)o(yp)q(e)h(meta)g(digits)h(b)q(efore)75 1797
-y(the)h(command.)k(If)c(the)f(\014rst)g(`digit')h(t)o(yp)q(ed)f(is)h(a)
-g(min)o(us)g(sign)g(\(`)p Ft(-)p Fu('\),)d(then)j(the)f(sign)h(of)f
-(the)h(argumen)o(t)75 1852 y(will)21 b(b)q(e)f(negativ)o(e.)31
-b(Once)20 b(y)o(ou)f(ha)o(v)o(e)g(t)o(yp)q(ed)g(one)g(meta)g(digit)h
-(to)e(get)h(the)g(argumen)o(t)f(started,)h(y)o(ou)75
-1906 y(can)c(t)o(yp)q(e)f(the)h(remainder)g(of)f(the)g(digits,)h(and)g
-(then)g(the)f(command.)20 b(F)l(or)13 b(example,)i(to)f(giv)o(e)h(the)f
-Fo(C-d)75 1961 y Fu(command)19 b(an)f(argumen)o(t)g(of)g(10,)h(y)o(ou)f
-(could)i(t)o(yp)q(e)f(`)p Ft(M-1)14 b(0)h(C-d)p Fu(',)k(whic)o(h)g
-(will)h(delete)g(the)f(next)g(ten)75 2016 y(c)o(haracters)14
-b(on)i(the)f(input)h(line.)75 2125 y Fj(1.2.5)30 b(Searc)n(hing)21
-b(for)f(Commands)h(in)f(the)h(History)137 2220 y Fu(Readline)d(pro)o
-(vides)e(commands)g(for)g(searc)o(hing)g(through)g(the)g(command)g
-(history)g(for)g(lines)i(con-)75 2275 y(taining)e(a)f(sp)q(eci\014ed)i
-(string.)j(There)c(are)e(t)o(w)o(o)g(searc)o(h)h(mo)q(des:)20
-b Fk(incremen)o(tal)e Fu(and)e Fk(non-incremen)o(tal)p
-Fu(.)137 2341 y(Incremen)o(tal)e(searc)o(hes)f(b)q(egin)h(b)q(efore)f
-(the)g(user)g(has)g(\014nished)h(t)o(yping)f(the)g(searc)o(h)g(string.)
-19 b(As)13 b(eac)o(h)75 2396 y(c)o(haracter)k(of)g(the)h(searc)o(h)g
-(string)f(is)h(t)o(yp)q(ed,)h(Readline)g(displa)o(ys)f(the)g(next)g(en)
-o(try)f(from)g(the)h(history)75 2451 y(matc)o(hing)12
-b(the)g(string)g(t)o(yp)q(ed)g(so)g(far.)18 b(An)13 b(incremen)o(tal)g
-(searc)o(h)f(requires)g(only)h(as)f(man)o(y)f(c)o(haracters)g(as)75
-2506 y(needed)16 b(to)d(\014nd)j(the)e(desired)i(history)e(en)o(try)l
-(.)19 b(T)l(o)c(searc)o(h)f(bac)o(kw)o(ard)f(in)j(the)e(history)g(for)g
-(a)g(particular)75 2560 y(string,)g(t)o(yp)q(e)h Fo(C-r)p
-Fu(.)k(T)o(yping)d Fo(C-s)e Fu(searc)o(hes)h(forw)o(ard)e(through)h
-(the)h(history)l(.)20 b(The)15 b(c)o(haracters)f(presen)o(t)75
-2615 y(in)20 b(the)f(v)m(alue)h(of)f(the)g Ft(isearch-terminators)d
-Fu(v)m(ariable)k(are)f(used)h(to)e(terminate)h(an)g(incremen)o(tal)75
-2670 y(searc)o(h.)31 b(If)19 b(that)f(v)m(ariable)i(has)f(not)f(b)q
-(een)i(assigned)g(a)e(v)m(alue,)j(the)1289 2668 y Fn(h)p
-1301 2642 70 2 v 1301 2670 a Fm(ESC)p 1301 2678 V 1368
-2668 a Fn(i)1402 2670 y Fu(and)e Fo(C-J)f Fu(c)o(haracters)g(will)p
-eop
-%%Page: 4 6
-4 5 bop 75 -58 a Fu(4)1322 b(GNU)15 b(Readline)h(Library)75
-149 y(terminate)21 b(an)g(incremen)o(tal)i(searc)o(h.)37
-b Fo(C-g)21 b Fu(will)i(ab)q(ort)e(an)g(incremen)o(tal)h(searc)o(h)f
-(and)g(restore)g(the)75 204 y(original)16 b(line.)21
-b(When)15 b(the)f(searc)o(h)g(is)h(terminated,)g(the)f(history)h(en)o
-(try)f(con)o(taining)h(the)g(searc)o(h)f(string)75 259
-y(b)q(ecomes)i(the)f(curren)o(t)g(line.)137 325 y(T)l(o)g(\014nd)i
-(other)e(matc)o(hing)g(en)o(tries)h(in)h(the)e(history)h(list,)g(t)o
-(yp)q(e)f Fo(C-r)g Fu(or)g Fo(C-s)g Fu(as)h(appropriate.)k(This)75
-380 y(will)15 b(searc)o(h)e(bac)o(kw)o(ard)f(or)g(forw)o(ard)g(in)i
-(the)f(history)g(for)g(the)g(next)g(en)o(try)g(matc)o(hing)g(the)g
-(searc)o(h)g(string)75 434 y(t)o(yp)q(ed)19 b(so)g(far.)30
-b(An)o(y)19 b(other)f(k)o(ey)h(sequence)h(b)q(ound)g(to)e(a)h(Readline)
-h(command)e(will)j(terminate)e(the)75 489 y(searc)o(h)10
-b(and)h(execute)g(that)f(command.)18 b(F)l(or)10 b(instance,)i(a)1063
-487 y Fn(h)p 1076 461 76 2 v 1076 489 a Fm(RET)p 1076
-497 V 1149 487 a Fn(i)1174 489 y Fu(will)g(terminate)f(the)g(searc)o(h)
-f(and)h(accept)75 544 y(the)k(line,)h(thereb)o(y)f(executing)g(the)g
-(command)g(from)f(the)g(history)h(list.)20 b(A)15 b(mo)o(v)o(emen)o(t)f
-(command)g(will)75 599 y(terminate)h(the)g(searc)o(h,)g(mak)o(e)g(the)g
-(last)g(line)i(found)f(the)f(curren)o(t)g(line,)h(and)g(b)q(egin)g
-(editing.)137 665 y(Readline)j(remem)o(b)q(ers)e(the)h(last)f(incremen)
-o(tal)i(searc)o(h)e(string.)27 b(If)17 b(t)o(w)o(o)f
-Fo(C-r)p Fu(s)h(are)g(t)o(yp)q(ed)h(without)75 719 y(an)o(y)g(in)o
-(terv)o(ening)h(c)o(haracters)f(de\014ning)h(a)f(new)h(searc)o(h)f
-(string,)g(an)o(y)g(remem)o(b)q(ered)h(searc)o(h)f(string)g(is)75
-774 y(used.)137 840 y(Non-incremen)o(tal)25 b(searc)o(hes)e(read)h(the)
-f(en)o(tire)h(searc)o(h)f(string)g(b)q(efore)h(starting)f(to)f(searc)o
-(h)i(for)75 895 y(matc)o(hing)d(history)h(lines.)39 b(The)22
-b(searc)o(h)f(string)g(ma)o(y)g(b)q(e)h(t)o(yp)q(ed)f(b)o(y)h(the)f
-(user)h(or)e(b)q(e)i(part)f(of)g(the)75 950 y(con)o(ten)o(ts)15
-b(of)f(the)i(curren)o(t)f(line.)75 1074 y Fs(1.3)33 b(Readline)23
-b(Init)h(File)137 1169 y Fu(Although)f(the)g(Readline)h(library)f
-(comes)g(with)g(a)f(set)g(of)g(Emacs-lik)o(e)i(k)o(eybindings)g
-(installed)75 1224 y(b)o(y)d(default,)h(it)f(is)h(p)q(ossible)g(to)e
-(use)i(a)e(di\013eren)o(t)h(set)g(of)f(k)o(eybindings.)39
-b(An)o(y)20 b(user)h(can)g(customize)75 1278 y(programs)15
-b(that)h(use)g(Readline)i(b)o(y)e(putting)g(commands)g(in)i(an)e
-Fk(inputrc)k Fu(\014le,)d(con)o(v)o(en)o(tionally)g(in)g(his)75
-1333 y(home)g(directory)l(.)24 b(The)17 b(name)g(of)f(this)h(\014le)g
-(is)g(tak)o(en)g(from)e(the)i(v)m(alue)h(of)e(the)h(en)o(vironmen)o(t)g
-(v)m(ariable)75 1388 y Ft(INPUTRC)p Fu(.)i(If)c(that)g(v)m(ariable)h
-(is)g(unset,)f(the)g(default)h(is)g(`)p Ft(~/.inputrc)p
-Fu('.)137 1454 y(When)f(a)g(program)f(whic)o(h)h(uses)g(the)g(Readline)
-h(library)g(starts)d(up,)i(the)g(init)h(\014le)g(is)f(read,)g(and)g
-(the)75 1509 y(k)o(ey)g(bindings)i(are)e(set.)137 1574
-y(In)f(addition,)h(the)e Ft(C-x)i(C-r)e Fu(command)g(re-reads)h(this)g
-(init)g(\014le,)h(th)o(us)e(incorp)q(orating)h(an)o(y)f(c)o(hanges)75
-1629 y(that)h(y)o(ou)h(migh)o(t)g(ha)o(v)o(e)g(made)g(to)g(it.)75
-1737 y Fj(1.3.1)30 b(Readline)20 b(Init)g(File)h(Syn)n(tax)137
-1832 y Fu(There)c(are)g(only)g(a)g(few)f(basic)i(constructs)e(allo)o(w)
-o(ed)i(in)f(the)g(Readline)h(init)g(\014le.)26 b(Blank)18
-b(lines)g(are)75 1886 y(ignored.)36 b(Lines)22 b(b)q(eginning)h(with)d
-(a)h(`)p Ft(#)p Fu(')e(are)h(commen)o(ts.)35 b(Lines)22
-b(b)q(eginning)h(with)e(a)f(`)p Ft($)p Fu(')f(indicate)75
-1941 y(conditional)c(constructs)f(\(see)g(Section)g(1.3.2)f
-([Conditional)h(Init)h(Constructs],)e(page)h(9\).)k(Other)c(lines)75
-1996 y(denote)h(v)m(ariable)i(settings)e(and)h(k)o(ey)f(bindings.)75
-2073 y(V)l(ariable)h(Settings)315 2128 y(Y)l(ou)k(can)h(mo)q(dify)g
-(the)f(run-time)h(b)q(eha)o(vior)g(of)e(Readline)j(b)o(y)e(altering)h
-(the)f(v)m(alues)h(of)315 2182 y(v)m(ariables)d(in)g(Readline)g(using)f
-(the)g Ft(set)g Fu(command)f(within)i(the)f(init)h(\014le.)26
-b(The)17 b(syn)o(tax)315 2237 y(is)f(simple:)435 2300
-y Ft(set)23 b Fk(v)m(ariable)28 b(v)m(alue)315 2366 y
-Fu(Here,)14 b(for)f(example,)h(is)g(ho)o(w)f(to)g(c)o(hange)h(from)f
-(the)h(default)g(Emacs-lik)o(e)h(k)o(ey)e(binding)j(to)315
-2421 y(use)g Ft(vi)e Fu(line)j(editing)g(commands:)435
-2484 y Ft(set)23 b(editing-mode)g(vi)315 2549 y Fu(V)l(ariable)c(names)
-e(and)h(v)m(alues,)h(where)e(appropriate,)h(are)f(recognized)i(without)
-e(regard)315 2604 y(to)e(case.)315 2670 y(A)g(great)g(deal)g(of)g
-(run-time)h(b)q(eha)o(vior)g(is)g(c)o(hangeable)g(with)f(the)h(follo)o
-(wing)f(v)m(ariables.)p eop
-%%Page: 5 7
-5 6 bop 75 -58 a Fu(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077
-b(5)315 149 y Ft(bell-style)555 204 y Fu(Con)o(trols)21
-b(what)h(happ)q(ens)h(when)f(Readline)h(w)o(an)o(ts)e(to)g(ring)i(the)f
-(termi-)555 259 y(nal)d(b)q(ell.)32 b(If)19 b(set)f(to)g(`)p
-Ft(none)p Fu(',)g(Readline)i(nev)o(er)f(rings)g(the)f(b)q(ell.)32
-b(If)19 b(set)g(to)555 314 y(`)p Ft(visible)p Fu(',)c(Readline)i(uses)g
-(a)f(visible)j(b)q(ell)g(if)e(one)f(is)h(a)o(v)m(ailable.)26
-b(If)16 b(set)h(to)555 369 y(`)p Ft(audible)p Fu(')g(\(the)h
-(default\),)i(Readline)g(attempts)e(to)g(ring)h(the)g(terminal's)555
-423 y(b)q(ell.)315 504 y Ft(comment-begin)555 559 y Fu(The)c(string)f
-(to)g(insert)i(at)d(the)i(b)q(eginning)i(of)d(the)h(line)h(when)f(the)g
-Ft(insert-)555 614 y(comment)f Fu(command)h(is)h(executed.)21
-b(The)15 b(default)h(v)m(alue)g(is)g Ft("#")p Fu(.)315
-694 y Ft(completion-ignore-case)555 749 y Fu(If)e(set)f(to)g(`)p
-Ft(on)p Fu(',)g(Readline)i(p)q(erforms)e(\014lename)i(matc)o(hing)f
-(and)g(completion)555 804 y(in)i(a)f(case-insensitiv)o(e)i(fashion.)k
-(The)15 b(default)h(v)m(alue)g(is)g(`)p Ft(off)p Fu('.)315
-884 y Ft(completion-query-items)555 939 y Fu(The)d(n)o(um)o(b)q(er)h
-(of)e(p)q(ossible)j(completions)g(that)d(determines)i(when)g(the)f
-(user)555 994 y(is)21 b(ask)o(ed)g(whether)g(he)h(w)o(an)o(ts)d(to)i
-(see)g(the)g(list)h(of)e(p)q(ossibilitie)q(s.)40 b(If)21
-b(the)555 1049 y(n)o(um)o(b)q(er)14 b(of)f(p)q(ossible)i(completions)f
-(is)g(greater)f(than)g(this)h(v)m(alue,)h(Readline)555
-1104 y(will)g(ask)e(the)g(user)h(whether)f(or)g(not)g(he)g(wishes)h(to)
-f(view)h(them;)f(otherwise,)555 1158 y(they)f(are)g(simply)i(listed.)20
-b(This)13 b(v)m(ariable)g(m)o(ust)f(b)q(e)h(set)f(to)f(an)h(in)o(teger)
-h(v)m(alue)555 1213 y(greater)h(than)h(or)g(equal)h(to)f(0.)k(The)d
-(default)f(limit)i(is)f Ft(100)p Fu(.)315 1294 y Ft(convert-meta)555
-1348 y Fu(If)11 b(set)g(to)g(`)p Ft(on)p Fu(',)f(Readline)i(will)h(con)
-o(v)o(ert)d(c)o(haracters)h(with)g(the)g(eigh)o(th)h(bit)f(set)555
-1403 y(to)f(an)h Fp(asci)q(i)e Fu(k)o(ey)i(sequence)g(b)o(y)g
-(stripping)h(the)e(eigh)o(th)h(bit)h(and)e(pre\014xing)i(an)555
-1456 y Fn(h)p 567 1430 70 2 v 567 1458 a Fm(ESC)p 567
-1466 V 634 1456 a Fn(i)666 1458 y Fu(c)o(haracter,)k(con)o(v)o(erting)h
-(them)g(to)f(a)h(meta-pre\014xed)g(k)o(ey)g(sequence.)555
-1513 y(The)e(default)h(v)m(alue)h(is)e(`)p Ft(on)p Fu('.)315
-1593 y Ft(disable-completion)555 1648 y Fu(If)k(set)f(to)f(`)p
-Ft(On)p Fu(',)h(Readline)i(will)g(inhibit)g(w)o(ord)e(completion.)30
-b(Completion)555 1703 y(c)o(haracters)12 b(will)j(b)q(e)f(inserted)g
-(in)o(to)f(the)g(line)h(as)f(if)h(they)f(had)g(b)q(een)h(mapp)q(ed)555
-1758 y(to)h Ft(self-insert)p Fu(.)j(The)d(default)h(is)g(`)p
-Ft(off)p Fu('.)315 1838 y Ft(editing-mode)555 1893 y
-Fu(The)f Ft(editing-mode)d Fu(v)m(ariable)k(con)o(trols)e(whic)o(h)h
-(default)g(set)f(of)g(k)o(ey)g(bind-)555 1948 y(ings)f(is)g(used.)20
-b(By)12 b(default,)i(Readline)f(starts)f(up)h(in)g(Emacs)f(editing)i
-(mo)q(de,)555 2003 y(where)h(the)f(k)o(eystrok)o(es)g(are)g(most)g
-(similar)i(to)d(Emacs.)20 b(This)15 b(v)m(ariable)h(can)555
-2058 y(b)q(e)g(set)f(to)f(either)i(`)p Ft(emacs)p Fu(')e(or)h(`)p
-Ft(vi)p Fu('.)315 2138 y Ft(enable-keypad)555 2193 y
-Fu(When)d(set)f(to)h(`)p Ft(on)p Fu(',)e(Readline)j(will)h(try)d(to)g
-(enable)i(the)f(application)h(k)o(eypad)555 2248 y(when)h(it)f(is)h
-(called.)21 b(Some)13 b(systems)g(need)h(this)g(to)f(enable)h(the)g
-(arro)o(w)e(k)o(eys.)555 2303 y(The)j(default)h(is)g(`)p
-Ft(off)p Fu('.)315 2383 y Ft(expand-tilde)555 2438 y
-Fu(If)e(set)g(to)f(`)p Ft(on)p Fu(',)f(tilde)k(expansion)e(is)h(p)q
-(erformed)f(when)g(Readline)h(attempts)555 2493 y(w)o(ord)g
-(completion.)21 b(The)15 b(default)h(is)f(`)p Ft(off)p
-Fu('.)555 2560 y(If)g(set)g(to)f(`)p Ft(on)p Fu(',)g(the)g(history)h
-(co)q(de)h(attempts)e(to)g(place)i(p)q(oin)o(t)f(at)f(the)h(same)555
-2615 y(lo)q(cation)20 b(on)f(eac)o(h)g(history)h(line)g(retriv)o(ed)g
-(with)f Ft(previous-history)e Fu(or)555 2670 y Ft(next-history)p
-Fu(.)p eop
-%%Page: 6 8
-6 7 bop 75 -58 a Fu(6)1322 b(GNU)15 b(Readline)h(Library)315
-149 y Ft(horizontal-scroll-mode)555 204 y Fu(This)j(v)m(ariable)g(can)f
-(b)q(e)g(set)g(to)f(either)i(`)p Ft(on)p Fu(')e(or)g(`)p
-Ft(off)p Fu('.)27 b(Setting)19 b(it)f(to)f(`)p Ft(on)p
-Fu(')555 259 y(means)c(that)f(the)i(text)e(of)h(the)g(lines)i(b)q(eing)
-f(edited)g(will)h(scroll)f(horizon)o(tally)555 314 y(on)i(a)f(single)i
-(screen)g(line)g(when)g(they)f(are)f(longer)h(than)g(the)g(width)g(of)g
-(the)555 369 y(screen,)e(instead)f(of)g(wrapping)g(on)o(to)f(a)h(new)g
-(screen)h(line.)21 b(By)13 b(default,)h(this)555 423
-y(v)m(ariable)j(is)e(set)g(to)g(`)p Ft(off)p Fu('.)315
-506 y Ft(input-meta)555 560 y Fu(If)h(set)f(to)g(`)p
-Ft(on)p Fu(',)f(Readline)j(will)h(enable)e(eigh)o(t-bit)h(input)f(\(it)
-g(will)h(not)e(clear)555 615 y(the)20 b(eigh)o(th)g(bit)g(in)h(the)f(c)
-o(haracters)f(it)h(reads\),)g(regardless)g(of)g(what)f(the)555
-670 y(terminal)i(claims)g(it)f(can)g(supp)q(ort.)34 b(The)20
-b(default)h(v)m(alue)g(is)g(`)p Ft(off)p Fu('.)33 b(The)555
-725 y(name)15 b Ft(meta-flag)f Fu(is)i(a)f(synon)o(ym)g(for)f(this)i(v)
-m(ariable.)315 807 y Ft(isearch-terminators)555 862 y
-Fu(The)26 b(string)g(of)f(c)o(haracters)g(that)g(should)i(terminate)f
-(an)g(incremen)o(tal)555 917 y(searc)o(h)12 b(without)h(subsequen)o
-(tly)g(executing)h(the)e(c)o(haracter)g(as)g(a)g(command)555
-971 y(\(see)22 b(Section)h(1.2.5)e([Searc)o(hing],)j(page)e(3\).)40
-b(If)23 b(this)g(v)m(ariable)g(has)f(not)555 1026 y(b)q(een)17
-b(giv)o(en)f(a)g(v)m(alue,)g(the)g(c)o(haracters)1247
-1024 y Fn(h)p 1259 998 70 2 v 1259 1026 a Fm(ESC)p 1259
-1034 V 1326 1024 a Fn(i)1357 1026 y Fu(and)g Fo(C-J)f
-Fu(will)i(terminate)f(an)555 1081 y(incremen)o(tal)g(searc)o(h.)315
-1163 y Ft(keymap)96 b Fu(Sets)19 b(Readline's)i(idea)f(of)f(the)g
-(curren)o(t)h(k)o(eymap)f(for)f(k)o(ey)i(binding)h(com-)555
-1218 y(mands.)41 b(Acceptable)23 b Ft(keymap)f Fu(names)g(are)f
-Ft(emacs)p Fu(,)i Ft(emacs-standard)p Fu(,)555 1273 y
-Ft(emacs-meta)p Fu(,)49 b Ft(emacs-ctlx)p Fu(,)g Ft(vi)p
-Fu(,)h Ft(vi-move)p Fu(,)f Ft(vi-command)p Fu(,)g(and)555
-1328 y Ft(vi-insert)p Fu(.)31 b Ft(vi)20 b Fu(is)g(equiv)m(alen)o(t)h
-(to)e Ft(vi-command)p Fu(;)g Ft(emacs)g Fu(is)h(equiv)m(alen)o(t)555
-1382 y(to)15 b Ft(emacs-standard)p Fu(.)20 b(The)d(default)f(v)m(alue)h
-(is)g Ft(emacs)p Fu(.)k(The)16 b(v)m(alue)h(of)f(the)555
-1437 y Ft(editing-mode)e Fu(v)m(ariable)i(also)f(a\013ects)g(the)g
-(default)h(k)o(eymap.)315 1519 y Ft(mark-directories)555
-1574 y Fu(If)j(set)g(to)g(`)p Ft(on)p Fu(',)f(completed)i(directory)g
-(names)f(ha)o(v)o(e)f(a)h(slash)h(app)q(ended.)555 1629
-y(The)15 b(default)h(is)g(`)p Ft(on)p Fu('.)315 1711
-y Ft(mark-modified-lines)555 1766 y Fu(This)j(v)m(ariable,)g(when)g
-(set)e(to)h(`)p Ft(on)p Fu(',)f(causes)h(Readline)h(to)e(displa)o(y)i
-(an)f(as-)555 1821 y(terisk)f(\(`)p Ft(*)p Fu('\))e(at)i(the)f(start)g
-(of)h(history)f(lines)j(whic)o(h)e(ha)o(v)o(e)g(b)q(een)h(mo)q
-(di\014ed.)555 1875 y(This)e(v)m(ariable)g(is)g(`)p Ft(off)p
-Fu(')e(b)o(y)h(default.)315 1958 y Ft(mark-symlinked-directories)555
-2012 y Fu(If)23 b(set)f(to)f(`)p Ft(on)p Fu(',)i(completed)g(names)g
-(whic)o(h)g(are)f(sym)o(b)q(olic)i(links)f(to)f(di-)555
-2067 y(rectories)h(ha)o(v)o(e)g(a)g(slash)g(app)q(ended)i(\(sub)s(ject)
-e(to)f(the)i(v)m(alue)g(of)f Ft(mark-)555 2122 y(directories)p
-Fu(\).)18 b(The)d(default)h(is)g(`)p Ft(off)p Fu('.)315
-2204 y Ft(match-hidden-files)555 2259 y Fu(This)c(v)m(ariable,)h(when)e
-(set)g(to)g(`)p Ft(on)p Fu(',)f(causes)h(Readline)i(to)d(matc)o(h)h
-(\014les)h(whose)555 2314 y(names)22 b(b)q(egin)h(with)g(a)e(`)p
-Ft(.)p Fu(')h(\(hidden)h(\014les\))g(when)f(p)q(erforming)h(\014lename)
-555 2369 y(completion,)g(unless)f(the)f(leading)h(`)p
-Ft(.)p Fu(')e(is)h(supplied)i(b)o(y)e(the)f(user)h(in)h(the)555
-2423 y(\014lename)16 b(to)f(b)q(e)h(completed.)21 b(This)15
-b(v)m(ariable)i(is)f(`)p Ft(on)p Fu(')e(b)o(y)h(default.)315
-2506 y Ft(output-meta)555 2560 y Fu(If)j(set)f(to)g(`)p
-Ft(on)p Fu(',)g(Readline)i(will)h(displa)o(y)f(c)o(haracters)d(with)j
-(the)e(eigh)o(th)h(bit)555 2615 y(set)g(directly)i(rather)d(than)h(as)g
-(a)g(meta-pre\014xed)h(escap)q(e)g(sequence.)30 b(The)555
-2670 y(default)16 b(is)f(`)p Ft(off)p Fu('.)p eop
-%%Page: 7 9
-7 8 bop 75 -58 a Fu(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077
-b(7)315 149 y Ft(page-completions)555 204 y Fu(If)17
-b(set)g(to)f(`)p Ft(on)p Fu(',)g(Readline)i(uses)g(an)e(in)o(ternal)i
-Ft(more)p Fu(-lik)o(e)g(pager)f(to)f(displa)o(y)555 259
-y(a)g(screenful)h(of)f(p)q(ossible)i(completions)f(at)f(a)g(time.)23
-b(This)17 b(v)m(ariable)g(is)g(`)p Ft(on)p Fu(')555 314
-y(b)o(y)e(default.)315 395 y Ft(print-completions-horizont)o(ally)555
-450 y Fu(If)d(set)g(to)f(`)p Ft(on)p Fu(',)h(Readline)h(will)g(displa)o
-(y)h(completions)f(with)f(matc)o(hes)f(sorted)555 505
-y(horizon)o(tally)23 b(in)f(alphab)q(etical)i(order,)f(rather)e(than)g
-(do)o(wn)h(the)g(screen.)555 560 y(The)15 b(default)h(is)g(`)p
-Ft(off)p Fu('.)315 641 y Ft(show-all-if-ambiguous)555
-696 y Fu(This)g(alters)e(the)i(default)f(b)q(eha)o(vior)h(of)e(the)h
-(completion)h(functions.)21 b(If)15 b(set)555 751 y(to)e(`)p
-Ft(on)p Fu(',)g(w)o(ords)g(whic)o(h)h(ha)o(v)o(e)g(more)f(than)g(one)h
-(p)q(ossible)i(completion)f(cause)555 806 y(the)20 b(matc)o(hes)f(to)f
-(b)q(e)j(listed)f(immediately)h(instead)f(of)f(ringing)i(the)e(b)q
-(ell.)555 861 y(The)c(default)h(v)m(alue)h(is)e(`)p Ft(off)p
-Fu('.)315 942 y Ft(visible-stats)555 997 y Fu(If)h(set)g(to)f(`)p
-Ft(on)p Fu(',)g(a)h(c)o(haracter)f(denoting)h(a)g(\014le's)h(t)o(yp)q
-(e)f(is)g(app)q(ended)i(to)d(the)555 1052 y(\014lename)h(when)g
-(listing)h(p)q(ossible)g(completions.)j(The)c(default)g(is)f(`)p
-Ft(off)p Fu('.)75 1133 y(Key)h(Bindings)315 1188 y(The)21
-b(syn)o(tax)f(for)h(con)o(trolling)h(k)o(ey)f(bindings)h(in)g(the)f
-(init)h(\014le)g(is)g(simple.)39 b(First)20 b(y)o(ou)315
-1243 y(need)15 b(to)e(\014nd)h(the)g(name)g(of)g(the)f(command)h(that)f
-(y)o(ou)h(w)o(an)o(t)f(to)g(c)o(hange.)19 b(The)14 b(follo)o(wing)315
-1298 y(sections)k(con)o(tain)h(tables)f(of)f(the)h(command)g(name,)g
-(the)g(default)h(k)o(eybinding,)h(if)e(an)o(y)l(,)315
-1353 y(and)d(a)g(short)g(description)i(of)d(what)h(the)g(command)g(do)q
-(es.)315 1421 y(Once)k(y)o(ou)f(kno)o(w)f(the)h(name)g(of)g(the)g
-(command,)g(simply)h(place)g(on)f(a)f(line)j(in)f(the)f(init)315
-1476 y(\014le)g(the)f(name)g(of)f(the)h(k)o(ey)g(y)o(ou)f(wish)i(to)e
-(bind)i(the)f(command)g(to,)f(a)g(colon,)i(and)f(then)315
-1530 y(the)f(name)g(of)g(the)g(command.)22 b(The)16 b(name)g(of)g(the)g
-(k)o(ey)f(can)i(b)q(e)f(expressed)h(in)g(di\013eren)o(t)315
-1585 y(w)o(a)o(ys,)d(dep)q(ending)j(on)e(what)g(y)o(ou)g(\014nd)h(most)
-e(comfortable.)315 1653 y(In)19 b(addition)g(to)e(command)h(names,)g
-(readline)i(allo)o(ws)e(k)o(eys)g(to)f(b)q(e)i(b)q(ound)g(to)e(a)h
-(string)315 1708 y(that)c(is)i(inserted)g(when)g(the)f(k)o(ey)g(is)h
-(pressed)g(\(a)e Fk(macro)r Fu(\).)315 1790 y Fk(k)o(eyname)s
-Fu(:)19 b Fk(function-name)g Fu(or)c Fk(macro)555 1845
-y(k)o(eyname)i Fu(is)e(the)f(name)h(of)f(a)g(k)o(ey)g(sp)q(elled)j(out)
-d(in)h(English.)21 b(F)l(or)13 b(example:)675 1910 y
-Ft(Control-u:)22 b(universal-argument)675 1962 y(Meta-Rubout:)g
-(backward-kill-word)675 2014 y(Control-o:)g(">)i(output")555
-2082 y Fu(In)c(the)f(ab)q(o)o(v)o(e)g(example,)i Fo(C-u)e
-Fu(is)h(b)q(ound)g(to)f(the)g(function)h Ft(universal-)555
-2137 y(argument)p Fu(,)e Fo(M-DEL)h Fu(is)g(b)q(ound)h(to)e(the)h
-(function)h Ft(backward-kill-word)p Fu(,)555 2191 y(and)g
-Fo(C-o)f Fu(is)h(b)q(ound)g(to)f(run)h(the)f(macro)g(expressed)h(on)g
-(the)f(righ)o(t)h(hand)555 2246 y(side)c(\(that)e(is,)i(to)e(insert)i
-(the)f(text)g(`)p Ft(>)f(output)p Fu(')g(in)o(to)i(the)f(line\).)555
-2314 y(A)k(n)o(um)o(b)q(er)f(of)g(sym)o(b)q(olic)i(c)o(haracter)e
-(names)g(are)g(recognized)i(while)g(pro-)555 2369 y(cessing)13
-b(this)f(k)o(ey)g(binding)h(syn)o(tax:)18 b Fk(DEL)p
-Fu(,)11 b Fk(ESC)p Fu(,)h Fk(ESCAPE)p Fu(,)f Fk(LFD)p
-Fu(,)g Fk(NEW-)555 2424 y(LINE)p Fu(,)16 b Fk(RET)p Fu(,)e
-Fk(RETURN)p Fu(,)f Fk(R)o(UBOUT)p Fu(,)i Fk(SP)l(A)o(CE)p
-Fu(,)g Fk(SPC)p Fu(,)f(and)i Fk(T)l(AB)p Fu(.)315 2506
-y Ft(")p Fk(k)o(eyseq)q Ft(")p Fu(:)k Fk(function-name)e
-Fu(or)d Fk(macro)555 2560 y(k)o(eyseq)i Fu(di\013ers)e(from)g
-Fk(k)o(eyname)j Fu(ab)q(o)o(v)o(e)d(in)i(that)d(strings)i(denoting)g
-(an)f(en-)555 2615 y(tire)i(k)o(ey)g(sequence)h(can)f(b)q(e)g(sp)q
-(eci\014ed,)i(b)o(y)e(placing)h(the)f(k)o(ey)g(sequence)h(in)555
-2670 y(double)e(quotes.)j(Some)c Fp(gnu)g Fu(Emacs)f(st)o(yle)h(k)o(ey)
-g(escap)q(es)g(can)g(b)q(e)g(used,)g(as)p eop
-%%Page: 8 10
-8 9 bop 75 -58 a Fu(8)1322 b(GNU)15 b(Readline)h(Library)555
-149 y(in)i(the)f(follo)o(wing)g(example,)h(but)f(the)g(sp)q(ecial)i(c)o
-(haracter)d(names)h(are)f(not)555 204 y(recognized.)675
-270 y Ft("\\C-u":)23 b(universal-argument)675 322 y("\\C-x\\C-r":)f
-(re-read-init-file)675 373 y("\\e[11~":)h("Function)f(Key)i(1")555
-442 y Fu(In)33 b(the)f(ab)q(o)o(v)o(e)g(example,)37 b
-Fo(C-u)32 b Fu(is)h(again)f(b)q(ound)h(to)f(the)g(function)555
-497 y Ft(universal-argument)19 b Fu(\(just)j(as)f(it)h(w)o(as)f(in)i
-(the)f(\014rst)f(example\),)j(`)p Fo(C-x)555 551 y(C-r)p
-Fu(')c(is)h(b)q(ound)g(to)f(the)h(function)g Ft(re-read-init-file)p
-Fu(,)f(and)g(`)1731 549 y Fn(h)p 1743 523 70 2 v 1743
-551 a Fm(ESC)p 1743 559 V 1810 549 a Fn(i)15 b(h)p 1852
-523 10 2 v 1852 551 a Fm([)p 1852 560 V 1860 549 a Fn(i)555
-604 y(h)p 567 578 18 2 v 567 606 a Fm(1)p 567 614 V 583
-604 a Fn(i)g(h)p 625 578 V 625 606 a Fm(1)p 625 614 V
-640 604 a Fn(i)g(h)p 683 578 24 2 v 683 606 a Ft(~)p
-683 614 V 704 604 a Fn(i)719 606 y Fu(')g(is)h(b)q(ound)g(to)e(insert)i
-(the)f(text)g(`)p Ft(Function)f(Key)g(1)p Fu('.)315 688
-y(The)h(follo)o(wing)h Fp(gnu)e Fu(Emacs)h(st)o(yle)g(escap)q(e)h
-(sequences)g(are)e(a)o(v)m(ailable)j(when)e(sp)q(ecifying)315
-743 y(k)o(ey)g(sequences:)315 825 y Fo(\\C-)168 b Fu(con)o(trol)15
-b(pre\014x)315 907 y Fo(\\M-)168 b Fu(meta)15 b(pre\014x)315
-989 y Fo(\\e)192 b Fu(an)15 b(escap)q(e)h(c)o(haracter)315
-1071 y Fo(\\\\)192 b Fu(bac)o(kslash)315 1152 y Fo(\\)p
-Ft(")555 1150 y Fn(h)p 567 1124 V 567 1152 a Ft(")p 567
-1160 V 589 1150 a Fn(i)604 1152 y Fu(,)15 b(a)f(double)j(quotation)e
-(mark)315 1234 y Fo(\\')555 1232 y Fn(h)p 567 1206 10
-2 v 567 1234 a Fm(')p 567 1242 V 575 1232 a Fn(i)590
-1234 y Fu(,)g(a)f(single)j(quote)e(or)g(ap)q(ostrophe)315
-1316 y(In)f(addition)h(to)f(the)f Fp(gnu)h Fu(Emacs)g(st)o(yle)f(escap)
-q(e)i(sequences,)g(a)e(second)i(set)e(of)h(bac)o(kslash)315
-1371 y(escap)q(es)i(is)g(a)o(v)m(ailable:)315 1453 y
-Ft(\\a)192 b Fu(alert)15 b(\(b)q(ell\))315 1535 y Ft(\\b)192
-b Fu(bac)o(kspace)315 1617 y Ft(\\d)g Fu(delete)315 1699
-y Ft(\\f)g Fu(form)14 b(feed)315 1781 y Ft(\\n)192 b
-Fu(newline)315 1862 y Ft(\\r)g Fu(carriage)15 b(return)315
-1944 y Ft(\\t)192 b Fu(horizon)o(tal)16 b(tab)315 2026
-y Ft(\\v)192 b Fu(v)o(ertical)16 b(tab)315 2108 y Ft(\\)p
-Fk(nnn)141 b Fu(the)17 b(eigh)o(t-bit)h(c)o(haracter)f(whose)g(v)m
-(alue)i(is)e(the)h(o)q(ctal)f(v)m(alue)i Fk(nnn)f Fu(\(one)f(to)555
-2163 y(three)e(digits\))315 2245 y Ft(\\x)p Fk(HH)124
-b Fu(the)20 b(eigh)o(t-bit)g(c)o(haracter)f(whose)h(v)m(alue)h(is)f
-(the)g(hexadecimal)h(v)m(alue)g Fk(HH)555 2300 y Fu(\(one)15
-b(or)g(t)o(w)o(o)f(hex)h(digits\))315 2382 y(When)k(en)o(tering)g(the)g
-(text)f(of)g(a)h(macro,)f(single)i(or)e(double)i(quotes)f(m)o(ust)f(b)q
-(e)h(used)h(to)315 2436 y(indicate)12 b(a)f(macro)f(de\014nition.)20
-b(Unquoted)11 b(text)f(is)i(assumed)e(to)h(b)q(e)g(a)f(function)i
-(name.)18 b(In)315 2491 y(the)11 b(macro)f(b)q(o)q(dy)l(,)i(the)f(bac)o
-(kslash)g(escap)q(es)g(describ)q(ed)i(ab)q(o)o(v)o(e)d(are)g(expanded.)
-20 b(Bac)o(kslash)315 2546 y(will)i(quote)d(an)o(y)h(other)g(c)o
-(haracter)f(in)i(the)f(macro)f(text,)h(including)j(`)p
-Ft(")p Fu(')c(and)h(`)p Ft(')p Fu('.)34 b(F)l(or)315
-2601 y(example,)14 b(the)f(follo)o(wing)g(binding)i(will)g(mak)o(e)d(`)
-p Fo(C-x)i Ft(\\)p Fu(')f(insert)g(a)g(single)h(`)p Ft(\\)p
-Fu(')e(in)o(to)h(the)g(line:)435 2666 y Ft("\\C-x\\\\":)23
-b("\\\\")p eop
-%%Page: 9 11
-9 10 bop 75 -58 a Fu(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077
-b(9)75 149 y Fj(1.3.2)30 b(Conditional)20 b(Init)g(Constructs)137
-246 y Fu(Readline)f(implemen)o(ts)g(a)f(facilit)o(y)g(similar)h(in)g
-(spirit)f(to)f(the)h(conditional)h(compilation)g(features)75
-301 y(of)e(the)g(C)g(prepro)q(cessor)g(whic)o(h)i(allo)o(ws)e(k)o(ey)g
-(bindings)i(and)f(v)m(ariable)g(settings)f(to)g(b)q(e)h(p)q(erformed)f
-(as)75 355 y(the)e(result)h(of)f(tests.)k(There)c(are)g(four)g(parser)g
-(directiv)o(es)h(used.)75 435 y Ft($if)168 b Fu(The)16
-b Ft($if)f Fu(construct)g(allo)o(ws)h(bindings)i(to)d(b)q(e)h(made)g
-(based)g(on)f(the)h(editing)h(mo)q(de,)f(the)315 490
-y(terminal)k(b)q(eing)g(used,)g(or)f(the)g(application)i(using)e
-(Readline.)33 b(The)19 b(text)g(of)f(the)i(test)315 545
-y(extends)c(to)e(the)h(end)h(of)f(the)g(line;)i(no)e(c)o(haracters)f
-(are)h(required)i(to)d(isolate)i(it.)315 624 y Ft(mode)144
-b Fu(The)11 b Ft(mode=)e Fu(form)h(of)g(the)h Ft($if)f
-Fu(directiv)o(e)h(is)g(used)g(to)f(test)g(whether)h(Readline)555
-679 y(is)k(in)h Ft(emacs)e Fu(or)g Ft(vi)g Fu(mo)q(de.)20
-b(This)c(ma)o(y)e(b)q(e)h(used)g(in)h(conjunction)g(with)f(the)555
-734 y(`)p Ft(set)f(keymap)p Fu(')f(command,)g(for)h(instance,)g(to)f
-(set)h(bindings)h(in)g(the)f Ft(emacs-)555 789 y(standard)d
-Fu(and)i Ft(emacs-ctlx)e Fu(k)o(eymaps)h(only)i(if)f(Readline)g(is)g
-(starting)f(out)555 844 y(in)k Ft(emacs)f Fu(mo)q(de.)315
-923 y Ft(term)144 b Fu(The)14 b Ft(term=)e Fu(form)h(ma)o(y)g(b)q(e)h
-(used)g(to)f(include)j(terminal-sp)q(eci\014c)g(k)o(ey)d(bind-)555
-978 y(ings,)19 b(p)q(erhaps)g(to)e(bind)i(the)g(k)o(ey)e(sequences)j
-(output)e(b)o(y)g(the)g(terminal's)555 1033 y(function)13
-b(k)o(eys.)18 b(The)13 b(w)o(ord)e(on)h(the)g(righ)o(t)g(side)g(of)g
-(the)g(`)p Ft(=)p Fu(')f(is)h(tested)g(against)555 1088
-y(b)q(oth)j(the)g(full)i(name)e(of)f(the)h(terminal)h(and)f(the)g(p)q
-(ortion)h(of)e(the)h(terminal)555 1142 y(name)i(b)q(efore)g(the)g
-(\014rst)f(`)p Ft(-)p Fu('.)24 b(This)17 b(allo)o(ws)g
-Ft(sun)f Fu(to)g(matc)o(h)h(b)q(oth)f Ft(sun)h Fu(and)555
-1197 y Ft(sun-cmd)p Fu(,)d(for)g(instance.)315 1277 y
-Ft(application)555 1332 y Fu(The)d Fk(application)i Fu(construct)e(is)g
-(used)h(to)e(include)j(application-sp)q(eci)q(\014c)h(set-)555
-1386 y(tings.)19 b(Eac)o(h)12 b(program)f(using)j(the)e(Readline)i
-(library)f(sets)f(the)g Fk(application)555 1441 y(name)p
-Fu(,)g(and)g(y)o(ou)f(can)h(test)f(for)g(a)g(particular)h(v)m(alue.)20
-b(This)12 b(could)h(b)q(e)f(used)h(to)555 1496 y(bind)18
-b(k)o(ey)e(sequences)i(to)d(functions)j(useful)f(for)f(a)g(sp)q
-(eci\014c)i(program.)23 b(F)l(or)555 1551 y(instance,)17
-b(the)g(follo)o(wing)g(command)g(adds)f(a)g(k)o(ey)h(sequence)g(that)f
-(quotes)555 1606 y(the)f(curren)o(t)g(or)g(previous)h(w)o(ord)e(in)j
-(Bash:)675 1670 y Ft($if)23 b(Bash)675 1722 y(#)h(Quote)f(the)g
-(current)g(or)h(previous)f(word)675 1774 y("\\C-xq":)g
-("\\eb\\"\\ef\\"")675 1826 y($endif)75 1905 y($endif)96
-b Fu(This)16 b(command,)e(as)h(seen)h(in)g(the)f(previous)h(example,)g
-(terminates)f(an)g Ft($if)f Fu(command.)75 1985 y Ft($else)120
-b Fu(Commands)15 b(in)h(this)f(branc)o(h)h(of)e(the)i
-Ft($if)e Fu(directiv)o(e)j(are)e(executed)h(if)g(the)f(test)g(fails.)75
-2065 y Ft($include)48 b Fu(This)22 b(directiv)o(e)h(tak)o(es)e(a)h
-(single)h(\014lename)g(as)e(an)h(argumen)o(t)f(and)h(reads)f(commands)
-315 2120 y(and)e(bindings)j(from)c(that)h(\014le.)33
-b(F)l(or)19 b(example,)i(the)e(follo)o(wing)h(directiv)o(e)h(reads)e
-(from)315 2174 y(`)p Ft(/etc/inputrc)p Fu(':)435 2239
-y Ft($include)k(/etc/inputrc)75 2351 y Fj(1.3.3)30 b(Sample)20
-b(Init)h(File)137 2447 y Fu(Here)16 b(is)g(an)f(example)h(of)f(an)g
-Fk(inputrc)k Fu(\014le.)i(This)16 b(illustrates)g(k)o(ey)f(binding,)i
-(v)m(ariable)f(assignmen)o(t,)75 2502 y(and)f(conditional)i(syn)o(tax.)
-p eop
-%%Page: 10 12
-10 11 bop 75 -58 a Fu(10)1299 b(GNU)15 b(Readline)h(Library)195
-201 y Ft(#)24 b(This)f(file)g(controls)g(the)h(behaviour)e(of)i(line)f
-(input)g(editing)g(for)195 253 y(#)h(programs)e(that)i(use)f(the)h(GNU)
-f(Readline)g(library.)47 b(Existing)195 305 y(#)24 b(programs)e
-(include)h(FTP,)h(Bash,)f(and)g(GDB.)195 357 y(#)195
-409 y(#)h(You)f(can)h(re-read)f(the)g(inputrc)g(file)g(with)h(C-x)f
-(C-r.)195 461 y(#)h(Lines)f(beginning)g(with)g('#')g(are)h(comments.)
-195 513 y(#)195 565 y(#)g(First,)f(include)g(any)g(systemwide)g
-(bindings)f(and)i(variable)195 616 y(#)g(assignments)e(from)h
-(/etc/Inputrc)195 668 y($include)g(/etc/Inputrc)195 772
-y(#)195 824 y(#)h(Set)f(various)g(bindings)g(for)g(emacs)g(mode.)195
-928 y(set)g(editing-mode)g(emacs)195 1032 y($if)g(mode=emacs)195
-1135 y(Meta-Control-h:)46 b(backward-kill-word)21 b(Text)i(after)h(the)
-f(function)g(name)g(is)h(ignored)p 1986 1145 21 38 v
-195 1239 a(#)195 1291 y(#)g(Arrow)f(keys)g(in)h(keypad)f(mode)195
-1343 y(#)195 1395 y(#"\\M-OD":)190 b(backward-char)195
-1447 y(#"\\M-OC":)g(forward-char)195 1499 y(#"\\M-OA":)g
-(previous-history)195 1550 y(#"\\M-OB":)g(next-history)195
-1602 y(#)195 1654 y(#)24 b(Arrow)f(keys)g(in)h(ANSI)f(mode)195
-1706 y(#)195 1758 y("\\M-[D":)190 b(backward-char)195
-1810 y("\\M-[C":)g(forward-char)195 1862 y("\\M-[A":)g
-(previous-history)195 1914 y("\\M-[B":)g(next-history)195
-1966 y(#)195 2017 y(#)24 b(Arrow)f(keys)g(in)h(8)g(bit)f(keypad)g(mode)
-195 2069 y(#)195 2121 y(#"\\M-\\C-OD":)165 b(backward-char)195
-2173 y(#"\\M-\\C-OC":)g(forward-char)195 2225 y(#"\\M-\\C-OA":)g
-(previous-history)195 2277 y(#"\\M-\\C-OB":)g(next-history)195
-2329 y(#)195 2381 y(#)24 b(Arrow)f(keys)g(in)h(8)g(bit)f(ANSI)g(mode)
-195 2433 y(#)195 2484 y(#"\\M-\\C-[D":)165 b(backward-char)195
-2536 y(#"\\M-\\C-[C":)g(forward-char)195 2588 y(#"\\M-\\C-[A":)g
-(previous-history)195 2640 y(#"\\M-\\C-[B":)g(next-history)p
-eop
-%%Page: 11 13
-11 12 bop 75 -58 a Fu(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1055
-b(11)195 201 y Ft(C-q:)23 b(quoted-insert)195 305 y($endif)195
-409 y(#)h(An)f(old-style)g(binding.)47 b(This)23 b(happens)g(to)g(be)h
-(the)f(default.)195 461 y(TAB:)g(complete)195 565 y(#)h(Macros)f(that)g
-(are)h(convenient)e(for)h(shell)h(interaction)195 616
-y($if)f(Bash)195 668 y(#)h(edit)f(the)g(path)195 720
-y("\\C-xp":)g("PATH=${PATH}\\e\\C-e\\C-a\\)o(ef\\C-f")195
-772 y(#)h(prepare)f(to)g(type)h(a)f(quoted)g(word)h(--)195
-824 y(#)g(insert)f(open)g(and)h(close)f(double)g(quotes)195
-876 y(#)h(and)f(move)g(to)h(just)f(after)h(the)f(open)g(quote)195
-928 y("\\C-x\\"":)g("\\"\\"\\C-b")195 980 y(#)h(insert)f(a)g(backslash)
-g(\(testing)g(backslash)g(escapes)195 1032 y(#)h(in)f(sequences)g(and)g
-(macros\))195 1083 y("\\C-x\\\\":)g("\\\\")195 1135 y(#)h(Quote)f(the)g
-(current)g(or)h(previous)f(word)195 1187 y("\\C-xq":)g
-("\\eb\\"\\ef\\"")195 1239 y(#)h(Add)f(a)h(binding)f(to)g(refresh)g
-(the)h(line,)f(which)g(is)h(unbound)195 1291 y("\\C-xr":)f
-(redraw-current-line)195 1343 y(#)h(Edit)f(variable)g(on)g(current)g
-(line.)195 1395 y("\\M-\\C-v":)f("\\C-a\\C-k$\\C-y\\M-\\C-e\\C-a\\C-y=)
-o(")195 1447 y($endif)195 1550 y(#)i(use)f(a)h(visible)f(bell)g(if)h
-(one)f(is)h(available)195 1602 y(set)f(bell-style)g(visible)195
-1706 y(#)h(don't)f(strip)g(characters)g(to)g(7)h(bits)f(when)h(reading)
-195 1758 y(set)f(input-meta)g(on)195 1862 y(#)h(allow)f(iso-latin1)f
-(characters)h(to)g(be)h(inserted)f(rather)195 1914 y(#)h(than)f
-(converted)g(to)g(prefix-meta)g(sequences)195 1966 y(set)g
-(convert-meta)g(off)195 2069 y(#)h(display)f(characters)f(with)h(the)h
-(eighth)f(bit)g(set)h(directly)195 2121 y(#)g(rather)f(than)g(as)h
-(meta-prefixed)e(characters)195 2173 y(set)h(output-meta)g(on)195
-2277 y(#)h(if)f(there)g(are)h(more)f(than)h(150)f(possible)g
-(completions)f(for)195 2329 y(#)i(a)f(word,)h(ask)f(the)h(user)f(if)g
-(he)h(wants)f(to)h(see)f(all)h(of)f(them)195 2381 y(set)g
-(completion-query-items)e(150)195 2484 y(#)j(For)f(FTP)195
-2536 y($if)g(Ftp)195 2588 y("\\C-xg":)g("get)g(\\M-?")195
-2640 y("\\C-xt":)g("put)g(\\M-?")p eop
-%%Page: 12 14
-12 13 bop 75 -58 a Fu(12)1299 b(GNU)15 b(Readline)h(Library)195
-149 y Ft("\\M-.":)23 b(yank-last-arg)195 201 y($endif)75
-329 y Fs(1.4)33 b(Bindable)24 b(Readline)f(Commands)137
-425 y Fu(This)17 b(section)f(describ)q(es)h(Readline)g(commands)f(that)
-e(ma)o(y)h(b)q(e)i(b)q(ound)f(to)f(k)o(ey)h(sequences.)22
-b(Com-)75 480 y(mand)15 b(names)g(without)h(an)f(accompan)o(ying)g(k)o
-(ey)g(sequence)i(are)e(un)o(b)q(ound)h(b)o(y)f(default.)137
-547 y(In)f(the)f(follo)o(wing)h(descriptions,)h Fk(p)q(oin)o(t)f
-Fu(refers)f(to)g(the)g(curren)o(t)g(cursor)f(p)q(osition,)j(and)e
-Fk(mark)i Fu(refers)75 601 y(to)k(a)g(cursor)g(p)q(osition)h(sa)o(v)o
-(ed)f(b)o(y)h(the)f Ft(set-mark)g Fu(command.)32 b(The)20
-b(text)f(b)q(et)o(w)o(een)g(the)h(p)q(oin)o(t)g(and)75
-656 y(mark)15 b(is)g(referred)h(to)e(as)h(the)g Fk(region)p
-Fu(.)75 767 y Fj(1.4.1)30 b(Commands)21 b(F)-5 b(or)19
-b(Mo)n(ving)75 888 y Ft(beginning-of-line)13 b(\(C-a\))315
-942 y Fu(Mo)o(v)o(e)h(to)h(the)g(start)f(of)h(the)g(curren)o(t)g(line.)
-75 1034 y Ft(end-of-line)f(\(C-e\))315 1088 y Fu(Mo)o(v)o(e)g(to)h(the)
-g(end)h(of)f(the)g(line.)75 1179 y Ft(forward-char)f(\(C-f\))315
-1234 y Fu(Mo)o(v)o(e)g(forw)o(ard)g(a)h(c)o(haracter.)75
-1325 y Ft(backward-char)e(\(C-b\))315 1380 y Fu(Mo)o(v)o(e)h(bac)o(k)h
-(a)g(c)o(haracter.)75 1471 y Ft(forward-word)f(\(M-f\))315
-1526 y Fu(Mo)o(v)o(e)g(forw)o(ard)g(to)g(the)i(end)g(of)e(the)h(next)h
-(w)o(ord.)j(W)l(ords)c(are)f(comp)q(osed)i(of)f(letters)g(and)315
-1581 y(digits.)75 1672 y Ft(backward-word)e(\(M-b\))315
-1727 y Fu(Mo)o(v)o(e)j(bac)o(k)g(to)h(the)f(start)g(of)g(the)h(curren)o
-(t)g(or)f(previous)i(w)o(ord.)24 b(W)l(ords)16 b(are)h(comp)q(osed)315
-1782 y(of)e(letters)g(and)g(digits.)75 1873 y Ft(clear-screen)f
-(\(C-l\))315 1928 y Fu(Clear)f(the)h(screen)g(and)f(redra)o(w)g(the)g
-(curren)o(t)g(line,)i(lea)o(ving)g(the)e(curren)o(t)g(line)i(at)e(the)g
-(top)315 1982 y(of)i(the)g(screen.)75 2074 y Ft(redraw-current-line)e
-(\(\))315 2128 y Fu(Refresh)i(the)g(curren)o(t)g(line.)22
-b(By)15 b(default,)h(this)f(is)h(un)o(b)q(ound.)75 2239
-y Fj(1.4.2)30 b(Commands)21 b(F)-5 b(or)19 b(Manipulating)i(The)f
-(History)75 2360 y Ft(accept-line)14 b(\(Newline)g(or)h(Return\))315
-2414 y Fu(Accept)j(the)g(line)h(regardless)f(of)f(where)h(the)g(cursor)
-f(is.)27 b(If)18 b(this)g(line)h(is)g(non-empt)o(y)l(,)f(it)315
-2469 y(ma)o(y)d(b)q(e)i(added)f(to)g(the)g(history)g(list)g(for)g
-(future)g(recall)h(with)f Ft(add_history\(\))p Fu(.)k(If)d(this)315
-2524 y(line)g(is)f(a)e(mo)q(di\014ed)j(history)e(line,)i(the)e(history)
-g(line)i(is)f(restored)e(to)h(its)g(original)i(state.)75
-2615 y Ft(previous-history)c(\(C-p\))315 2670 y Fu(Mo)o(v)o(e)h(`bac)o
-(k')h(through)f(the)i(history)f(list,)g(fetc)o(hing)h(the)f(previous)h
-(command.)p eop
-%%Page: 13 15
-13 14 bop 75 -58 a Fu(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1055
-b(13)75 149 y Ft(next-history)14 b(\(C-n\))315 204 y
-Fu(Mo)o(v)o(e)g(`forw)o(ard')f(through)i(the)h(history)f(list,)g(fetc)o
-(hing)h(the)f(next)h(command.)75 307 y Ft(beginning-of-history)c
-(\(M-<\))315 362 y Fu(Mo)o(v)o(e)i(to)h(the)g(\014rst)g(line)i(in)f
-(the)f(history)l(.)75 465 y Ft(end-of-history)e(\(M->\))315
-520 y Fu(Mo)o(v)o(e)h(to)h(the)g(end)h(of)f(the)g(input)h(history)l(,)f
-(i.e.,)g(the)g(line)i(curren)o(tly)f(b)q(eing)g(en)o(tered.)75
-624 y Ft(reverse-search-history)c(\(C-r\))315 678 y Fu(Searc)o(h)k(bac)
-o(kw)o(ard)e(starting)h(at)g(the)h(curren)o(t)f(line)j(and)d(mo)o(ving)
-h(`up')f(through)g(the)h(his-)315 733 y(tory)e(as)h(necessary)l(.)20
-b(This)c(is)g(an)f(incremen)o(tal)h(searc)o(h.)75 836
-y Ft(forward-search-history)c(\(C-s\))315 891 y Fu(Searc)o(h)j(forw)o
-(ard)e(starting)h(at)h(the)f(curren)o(t)h(line)h(and)f(mo)o(ving)g(`do)
-o(wn')f(through)g(the)h(the)315 946 y(history)g(as)g(necessary)l(.)20
-b(This)c(is)g(an)f(incremen)o(tal)h(searc)o(h.)75 1049
-y Ft(non-incremental-reverse-se)o(arch-hi)o(story)c(\(M-p\))315
-1104 y Fu(Searc)o(h)k(bac)o(kw)o(ard)e(starting)h(at)g(the)h(curren)o
-(t)f(line)j(and)d(mo)o(ving)h(`up')f(through)g(the)h(his-)315
-1159 y(tory)h(as)h(necessary)g(using)h(a)e(non-incremen)o(tal)j(searc)o
-(h)e(for)f(a)h(string)g(supplied)i(b)o(y)e(the)315 1214
-y(user.)75 1317 y Ft(non-incremental-forward-se)o(arch-hi)o(story)12
-b(\(M-n\))315 1372 y Fu(Searc)o(h)j(forw)o(ard)e(starting)h(at)h(the)f
-(curren)o(t)h(line)h(and)f(mo)o(ving)g(`do)o(wn')f(through)g(the)h(the)
-315 1426 y(history)e(as)g(necessary)h(using)g(a)f(non-incremen)o(tal)i
-(searc)o(h)e(for)g(a)g(string)g(supplied)j(b)o(y)d(the)315
-1481 y(user.)75 1584 y Ft(history-search-forward)f(\(\))315
-1639 y Fu(Searc)o(h)21 b(forw)o(ard)e(through)i(the)f(history)h(for)f
-(the)h(string)g(of)f(c)o(haracters)g(b)q(et)o(w)o(een)h(the)315
-1694 y(start)16 b(of)h(the)h(curren)o(t)g(line)h(and)e(the)h(p)q(oin)o
-(t.)28 b(This)18 b(is)g(a)f(non-incremen)o(tal)i(searc)o(h.)27
-b(By)315 1749 y(default,)15 b(this)h(command)f(is)h(un)o(b)q(ound.)75
-1852 y Ft(history-search-backward)c(\(\))315 1907 y Fu(Searc)o(h)18
-b(bac)o(kw)o(ard)e(through)h(the)h(history)f(for)g(the)g(string)h(of)f
-(c)o(haracters)f(b)q(et)o(w)o(een)i(the)315 1962 y(start)e(of)h(the)h
-(curren)o(t)g(line)h(and)e(the)h(p)q(oin)o(t.)28 b(This)18
-b(is)g(a)f(non-incremen)o(tal)i(searc)o(h.)27 b(By)315
-2016 y(default,)15 b(this)h(command)f(is)h(un)o(b)q(ound.)75
-2120 y Ft(yank-nth-arg)e(\(M-C-y\))315 2174 y Fu(Insert)f(the)g
-(\014rst)g(argumen)o(t)f(to)g(the)i(previous)f(command)g(\(usually)h
-(the)f(second)h(w)o(ord)e(on)315 2229 y(the)j(previous)h(line\))g(at)e
-(p)q(oin)o(t.)21 b(With)15 b(an)g(argumen)o(t)f Fk(n)p
-Fu(,)h(insert)g(the)g Fk(n)p Fu(th)g(w)o(ord)g(from)f(the)315
-2284 y(previous)g(command)g(\(the)f(w)o(ords)f(in)j(the)e(previous)i
-(command)e(b)q(egin)i(with)e(w)o(ord)g(0\).)19 b(A)315
-2339 y(negativ)o(e)13 b(argumen)o(t)f(inserts)h(the)g
-Fk(n)p Fu(th)g(w)o(ord)f(from)g(the)h(end)h(of)e(the)h(previous)g
-(command.)75 2442 y Ft(yank-last-arg)g(\(M-.)i(or)g(M-_\))315
-2497 y Fu(Insert)j(last)f(argumen)o(t)g(to)g(the)g(previous)i(command)e
-(\(the)g(last)h(w)o(ord)f(of)g(the)g(previous)315 2552
-y(history)e(en)o(try\).)20 b(With)15 b(an)g(argumen)o(t,)g(b)q(eha)o(v)
-o(e)g(exactly)h(lik)o(e)g Ft(yank-nth-arg)p Fu(.)j(Succes-)315
-2606 y(siv)o(e)f(calls)g(to)f Ft(yank-last-arg)e Fu(mo)o(v)o(e)i(bac)o
-(k)g(through)g(the)g(history)g(list,)i(inserting)f(the)315
-2661 y(last)d(argumen)o(t)g(of)f(eac)o(h)i(line)g(in)g(turn.)p
-eop
-%%Page: 14 16
-14 15 bop 75 -58 a Fu(14)1299 b(GNU)15 b(Readline)h(Library)75
-149 y Fj(1.4.3)30 b(Commands)21 b(F)-5 b(or)19 b(Changing)i(T)-5
-b(ext)75 286 y Ft(delete-char)14 b(\(C-d\))315 341 y
-Fu(Delete)20 b(the)g(c)o(haracter)e(at)h(p)q(oin)o(t.)33
-b(If)20 b(p)q(oin)o(t)g(is)g(at)e(the)i(b)q(eginning)i(of)d(the)g
-(line,)j(there)315 396 y(are)c(no)h(c)o(haracters)e(in)j(the)e(line,)j
-(and)e(the)f(last)h(c)o(haracter)e(t)o(yp)q(ed)i(w)o(as)f(not)g(b)q
-(ound)i(to)315 450 y Ft(delete-char)p Fu(,)13 b(then)j(return)f
-Fp(eof)p Fu(.)75 552 y Ft(backward-delete-char)d(\(Rubout\))315
-607 y Fu(Delete)k(the)f(c)o(haracter)f(b)q(ehind)j(the)f(cursor.)j(A)c
-(n)o(umeric)h(argumen)o(t)e(means)i(to)e(kill)j(the)315
-661 y(c)o(haracters)d(instead)i(of)f(deleting)i(them.)75
-763 y Ft(forward-backward-delete-ch)o(ar)12 b(\(\))315
-818 y Fu(Delete)20 b(the)f(c)o(haracter)f(under)i(the)f(cursor,)h
-(unless)g(the)f(cursor)g(is)h(at)e(the)h(end)h(of)f(the)315
-872 y(line,)e(in)g(whic)o(h)g(case)e(the)h(c)o(haracter)g(b)q(ehind)h
-(the)f(cursor)g(is)g(deleted.)23 b(By)16 b(default,)h(this)315
-927 y(is)f(not)f(b)q(ound)h(to)e(a)h(k)o(ey)l(.)75 1029
-y Ft(quoted-insert)e(\(C-q)i(or)g(C-v\))315 1083 y Fu(Add)j(the)f(next)
-g(c)o(haracter)g(t)o(yp)q(ed)g(to)f(the)i(line)g(v)o(erbatim.)26
-b(This)18 b(is)f(ho)o(w)g(to)g(insert)g(k)o(ey)315 1138
-y(sequences)f(lik)o(e)h Fo(C-q)p Fu(,)d(for)h(example.)75
-1240 y Ft(tab-insert)f(\(M-)401 1238 y Fn(h)p 412 1212
-74 2 v 412 1240 a Fm(T)m(AB)p 412 1247 V 484 1238 a Fn(i)499
-1240 y Ft(\))315 1294 y Fu(Insert)h(a)g(tab)g(c)o(haracter.)75
-1396 y Ft(self-insert)f(\(a,)g(b,)h(A,)g(1,)g(!,)g(...)o(\))315
-1451 y Fu(Insert)g(y)o(ourself.)75 1552 y Ft(transpose-chars)e(\(C-t\))
-315 1607 y Fu(Drag)i(the)h(c)o(haracter)f(b)q(efore)h(the)h(cursor)e
-(forw)o(ard)g(o)o(v)o(er)g(the)h(c)o(haracter)f(at)h(the)g(cursor,)315
-1662 y(mo)o(ving)i(the)f(cursor)h(forw)o(ard)e(as)i(w)o(ell.)28
-b(If)18 b(the)g(insertion)h(p)q(oin)o(t)f(is)g(at)f(the)h(end)h(of)e
-(the)315 1716 y(line,)c(then)e(this)h(transp)q(oses)e(the)h(last)g(t)o
-(w)o(o)f(c)o(haracters)g(of)h(the)g(line.)20 b(Negativ)o(e)11
-b(argumen)o(ts)315 1771 y(ha)o(v)o(e)k(no)g(e\013ect.)75
-1873 y Ft(transpose-words)e(\(M-t\))315 1927 y Fu(Drag)i(the)h(w)o(ord)
-g(b)q(efore)g(p)q(oin)o(t)h(past)f(the)g(w)o(ord)f(after)h(p)q(oin)o
-(t,)g(mo)o(ving)g(p)q(oin)o(t)h(past)f(that)315 1982
-y(w)o(ord)d(as)h(w)o(ell.)21 b(If)14 b(the)g(insertion)i(p)q(oin)o(t)e
-(is)h(at)f(the)g(end)h(of)e(the)i(line,)g(this)g(transp)q(oses)f(the)
-315 2037 y(last)h(t)o(w)o(o)f(w)o(ords)g(on)i(the)f(line.)75
-2138 y Ft(upcase-word)f(\(M-u\))315 2193 y Fu(Upp)q(ercase)j(the)f
-(curren)o(t)g(\(or)f(follo)o(wing\))h(w)o(ord.)22 b(With)16
-b(a)g(negativ)o(e)g(argumen)o(t,)f(upp)q(er-)315 2248
-y(case)g(the)g(previous)h(w)o(ord,)f(but)g(do)g(not)g(mo)o(v)o(e)f(the)
-i(cursor.)75 2349 y Ft(downcase-word)d(\(M-l\))315 2404
-y Fu(Lo)o(w)o(ercase)d(the)h(curren)o(t)g(\(or)f(follo)o(wing\))h(w)o
-(ord.)17 b(With)11 b(a)g(negativ)o(e)g(argumen)o(t,)f(lo)o(w)o(ercase)
-315 2459 y(the)15 b(previous)h(w)o(ord,)e(but)i(do)f(not)g(mo)o(v)o(e)f
-(the)h(cursor.)75 2560 y Ft(capitalize-word)e(\(M-c\))315
-2615 y Fu(Capitalize)f(the)f(curren)o(t)f(\(or)g(follo)o(wing\))h(w)o
-(ord.)18 b(With)11 b(a)f(negativ)o(e)h(argumen)o(t,)f(capitalize)315
-2670 y(the)15 b(previous)h(w)o(ord,)e(but)i(do)f(not)g(mo)o(v)o(e)f
-(the)h(cursor.)p eop
-%%Page: 15 17
-15 16 bop 75 -58 a Fu(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1055
-b(15)75 149 y Ft(overwrite-mode)13 b(\(\))315 204 y Fu(T)l(oggle)j(o)o
-(v)o(erwrite)g(mo)q(de.)24 b(With)17 b(an)f(explicit)j(p)q(ositiv)o(e)f
-(n)o(umeric)f(argumen)o(t,)f(switc)o(hes)315 259 y(to)10
-b(o)o(v)o(erwrite)g(mo)q(de.)19 b(With)11 b(an)g(explicit)i(non-p)q
-(ositiv)o(e)f(n)o(umeric)g(argumen)o(t,)e(switc)o(hes)i(to)315
-314 y(insert)k(mo)q(de.)k(This)c(command)f(a\013ects)g(only)h
-Ft(emacs)e Fu(mo)q(de;)h Ft(vi)g Fu(mo)q(de)h(do)q(es)g(o)o(v)o
-(erwrite)315 369 y(di\013eren)o(tly)l(.)21 b(Eac)o(h)15
-b(call)h(to)f Ft(readline\(\))f Fu(starts)f(in)k(insert)e(mo)q(de.)315
-436 y(In)g(o)o(v)o(erwrite)f(mo)q(de,)h(c)o(haracters)f(b)q(ound)h(to)f
-Ft(self-insert)f Fu(replace)j(the)e(text)h(at)e(p)q(oin)o(t)315
-491 y(rather)20 b(than)h(pushing)h(the)f(text)f(to)g(the)h(righ)o(t.)36
-b(Characters)20 b(b)q(ound)i(to)e Ft(backward-)315 546
-y(delete-char)14 b Fu(replace)i(the)f(c)o(haracter)g(b)q(efore)g(p)q
-(oin)o(t)h(with)f(a)g(space.)315 614 y(By)g(default,)h(this)f(command)g
-(is)h(un)o(b)q(ound.)75 729 y Fj(1.4.4)30 b(Killing)20
-b(And)h(Y)-5 b(anking)75 853 y Ft(kill-line)14 b(\(C-k\))315
-908 y Fu(Kill)j(the)f(text)e(from)h(p)q(oin)o(t)h(to)e(the)h(end)h(of)f
-(the)g(line.)75 1002 y Ft(backward-kill-line)e(\(C-x)h(Rubout\))315
-1057 y Fu(Kill)j(bac)o(kw)o(ard)e(to)f(the)i(b)q(eginning)h(of)e(the)g
-(line.)75 1151 y Ft(unix-line-discard)e(\(C-u\))315 1205
-y Fu(Kill)k(bac)o(kw)o(ard)e(from)f(the)i(cursor)e(to)h(the)g(b)q
-(eginning)j(of)c(the)i(curren)o(t)f(line.)75 1299 y Ft(kill-whole-line)
-e(\(\))315 1354 y Fu(Kill)20 b(all)g(c)o(haracters)d(on)h(the)h(curren)
-o(t)f(line,)i(no)e(matter)g(where)g(p)q(oin)o(t)h(is.)29
-b(By)19 b(default,)315 1409 y(this)d(is)f(un)o(b)q(ound.)75
-1503 y Ft(kill-word)f(\(M-d\))315 1558 y Fu(Kill)j(from)d(p)q(oin)o(t)h
-(to)f(the)h(end)g(of)f(the)h(curren)o(t)g(w)o(ord,)e(or)i(if)g(b)q(et)o
-(w)o(een)g(w)o(ords,)e(to)i(the)f(end)315 1613 y(of)h(the)g(next)g(w)o
-(ord.)20 b(W)l(ord)14 b(b)q(oundaries)j(are)e(the)g(same)g(as)g
-Ft(forward-word)p Fu(.)75 1707 y Ft(backward-kill-word)e(\(M-)592
-1705 y Fn(h)p 603 1679 73 2 v 603 1707 a Fm(DEL)p 603
-1714 V 674 1705 a Fn(i)689 1707 y Ft(\))315 1761 y Fu(Kill)k(the)d(w)o
-(ord)g(b)q(ehind)i(p)q(oin)o(t.)21 b(W)l(ord)14 b(b)q(oundaries)h(are)f
-(the)h(same)f(as)g Ft(backward-word)p Fu(.)75 1855 y
-Ft(unix-word-rubout)f(\(C-w\))315 1910 y Fu(Kill)18 b(the)e(w)o(ord)f
-(b)q(ehind)j(p)q(oin)o(t,)e(using)h(white)f(space)g(as)g(a)f(w)o(ord)g
-(b)q(oundary)l(.)23 b(The)16 b(killed)315 1965 y(text)f(is)g(sa)o(v)o
-(ed)g(on)g(the)h(kill-ring.)75 2059 y Ft(delete-horizontal-space)c
-(\(\))315 2114 y Fu(Delete)k(all)g(spaces)f(and)h(tabs)e(around)i(p)q
-(oin)o(t.)k(By)15 b(default,)h(this)f(is)h(un)o(b)q(ound.)75
-2208 y Ft(kill-region)e(\(\))315 2263 y Fu(Kill)j(the)f(text)e(in)i
-(the)g(curren)o(t)f(region.)20 b(By)15 b(default,)h(this)f(command)g
-(is)h(un)o(b)q(ound.)75 2357 y Ft(copy-region-as-kill)d(\(\))315
-2412 y Fu(Cop)o(y)j(the)i(text)e(in)i(the)f(region)g(to)g(the)g(kill)h
-(bu\013er,)f(so)g(it)g(can)g(b)q(e)h(y)o(ank)o(ed)f(righ)o(t)g(a)o(w)o
-(a)o(y)l(.)315 2466 y(By)e(default,)h(this)f(command)g(is)h(un)o(b)q
-(ound.)75 2560 y Ft(copy-backward-word)d(\(\))315 2615
-y Fu(Cop)o(y)19 b(the)g(w)o(ord)g(b)q(efore)g(p)q(oin)o(t)h(to)e(the)i
-(kill)h(bu\013er.)32 b(The)19 b(w)o(ord)g(b)q(oundaries)h(are)f(the)315
-2670 y(same)c(as)g Ft(backward-word)p Fu(.)j(By)d(default,)g(this)h
-(command)f(is)h(un)o(b)q(ound.)p eop
-%%Page: 16 18
-16 17 bop 75 -58 a Fu(16)1299 b(GNU)15 b(Readline)h(Library)75
-149 y Ft(copy-forward-word)d(\(\))315 204 y Fu(Cop)o(y)i(the)h(w)o(ord)
-e(follo)o(wing)j(p)q(oin)o(t)f(to)f(the)g(kill)j(bu\013er.)i(The)c(w)o
-(ord)f(b)q(oundaries)i(are)e(the)315 259 y(same)g(as)g
-Ft(forward-word)p Fu(.)j(By)d(default,)h(this)f(command)g(is)h(un)o(b)q
-(ound.)75 342 y Ft(yank)f(\(C-y\))315 397 y Fu(Y)l(ank)g(the)h(top)f
-(of)f(the)i(kill)h(ring)e(in)o(to)g(the)h(bu\013er)f(at)f(p)q(oin)o(t.)
-75 481 y Ft(yank-pop)g(\(M-y\))315 535 y Fu(Rotate)i(the)h(kill-ring,)j
-(and)d(y)o(ank)g(the)h(new)f(top.)26 b(Y)l(ou)17 b(can)h(only)g(do)f
-(this)h(if)f(the)h(prior)315 590 y(command)d(is)h Ft(yank)e
-Fu(or)h Ft(yank-pop)p Fu(.)75 693 y Fj(1.4.5)30 b(Sp)r(ecifying)20
-b(Numeric)h(Argumen)n(ts)75 806 y Ft(digit-argument)13
-b(\()p Fo(M-0)p Ft(,)i Fo(M-1)p Ft(,)f(...)h Fo(M--)p
-Ft(\))315 861 y Fu(Add)f(this)g(digit)g(to)f(the)h(argumen)o(t)e
-(already)i(accum)o(ulating,)g(or)f(start)f(a)h(new)h(argumen)o(t.)315
-915 y Fo(M--)h Fu(starts)f(a)h(negativ)o(e)g(argumen)o(t.)75
-999 y Ft(universal-argument)e(\(\))315 1054 y Fu(This)g(is)h(another)e
-(w)o(a)o(y)g(to)g(sp)q(ecify)i(an)f(argumen)o(t.)18 b(If)13
-b(this)g(command)g(is)g(follo)o(w)o(ed)g(b)o(y)g(one)315
-1108 y(or)h(more)h(digits,)g(optionally)h(with)f(a)g(leading)h(min)o
-(us)f(sign,)g(those)g(digits)g(de\014ne)h(the)f(ar-)315
-1163 y(gumen)o(t.)k(If)c(the)g(command)f(is)h(follo)o(w)o(ed)g(b)o(y)g
-(digits,)g(executing)g Ft(universal-argument)315 1218
-y Fu(again)h(ends)g(the)g(n)o(umeric)h(argumen)o(t,)e(but)h(is)h
-(otherwise)f(ignored.)22 b(As)16 b(a)g(sp)q(ecial)h(case,)315
-1273 y(if)g(this)g(command)f(is)h(immediately)h(follo)o(w)o(ed)f(b)o(y)
-f(a)g(c)o(haracter)g(that)g(is)h(neither)g(a)f(digit)315
-1328 y(or)d(min)o(us)i(sign,)f(the)g(argumen)o(t)g(coun)o(t)f(for)h
-(the)g(next)g(command)g(is)g(m)o(ultiplied)j(b)o(y)d(four.)315
-1382 y(The)19 b(argumen)o(t)f(coun)o(t)g(is)h(initially)j(one,)d(so)f
-(executing)i(this)f(function)h(the)e(\014rst)h(time)315
-1437 y(mak)o(es)c(the)h(argumen)o(t)f(coun)o(t)h(four,)f(a)h(second)g
-(time)g(mak)o(es)g(the)g(argumen)o(t)f(coun)o(t)g(six-)315
-1492 y(teen,)g(and)g(so)g(on.)20 b(By)15 b(default,)h(this)f(is)h(not)f
-(b)q(ound)h(to)f(a)g(k)o(ey)l(.)75 1595 y Fj(1.4.6)30
-b(Letting)20 b(Readline)g(T)n(yp)r(e)h(F)-5 b(or)19 b(Y)-5
-b(ou)75 1708 y Ft(complete)14 b(\()305 1706 y Fn(h)p
-317 1680 74 2 v 317 1708 a Fm(T)m(AB)p 317 1715 V 389
-1706 a Fn(i)404 1708 y Ft(\))315 1762 y Fu(A)o(ttempt)c(to)h(p)q
-(erform)g(completion)i(on)e(the)g(text)g(b)q(efore)h(p)q(oin)o(t.)19
-b(The)11 b(actual)h(completion)315 1817 y(p)q(erformed)j(is)h
-(application-sp)q(eci\014)q(c.)23 b(The)15 b(default)h(is)g(\014lename)
-g(completion.)75 1901 y Ft(possible-completions)c(\(M-?\))315
-1955 y Fu(List)k(the)f(p)q(ossible)i(completions)f(of)f(the)g(text)g(b)
-q(efore)h(p)q(oin)o(t.)75 2039 y Ft(insert-completions)d(\(M-*\))315
-2093 y Fu(Insert)j(all)g(completions)g(of)f(the)g(text)g(b)q(efore)h(p)
-q(oin)o(t)f(that)g(w)o(ould)h(ha)o(v)o(e)f(b)q(een)h(generated)315
-2148 y(b)o(y)f Ft(possible-completions)p Fu(.)75 2232
-y Ft(menu-complete)e(\(\))315 2286 y Fu(Similar)g(to)f
-Ft(complete)p Fu(,)f(but)h(replaces)h(the)f(w)o(ord)f(to)g(b)q(e)i
-(completed)f(with)h(a)e(single)j(matc)o(h)315 2341 y(from)k(the)h(list)
-h(of)e(p)q(ossible)j(completions.)32 b(Rep)q(eated)19
-b(execution)h(of)f Ft(menu-complete)315 2396 y Fu(steps)h(through)g
-(the)g(list)h(of)f(p)q(ossible)i(completions,)g(inserting)f(eac)o(h)f
-(matc)o(h)f(in)i(turn.)315 2451 y(A)o(t)d(the)g(end)h(of)f(the)h(list)g
-(of)f(completions,)i(the)e(b)q(ell)j(is)d(rung)h(\(sub)s(ject)f(to)f
-(the)i(setting)315 2506 y(of)f Ft(bell-style)p Fu(\))e(and)i(the)g
-(original)h(text)f(is)g(restored.)28 b(An)19 b(argumen)o(t)e(of)g
-Fk(n)i Fu(mo)o(v)o(es)e Fk(n)315 2560 y Fu(p)q(ositions)h(forw)o(ard)e
-(in)j(the)e(list)h(of)f(matc)o(hes;)h(a)f(negativ)o(e)g(argumen)o(t)g
-(ma)o(y)g(b)q(e)h(used)g(to)315 2615 y(mo)o(v)o(e)g(bac)o(kw)o(ard)h
-(through)g(the)g(list.)32 b(This)20 b(command)f(is)h(in)o(tended)g(to)f
-(b)q(e)h(b)q(ound)g(to)315 2668 y Fn(h)p 327 2642 V 327
-2670 a Fm(T)m(AB)p 327 2678 V 399 2668 a Fn(i)414 2670
-y Fu(,)15 b(but)g(is)h(un)o(b)q(ound)g(b)o(y)f(default.)p
-eop
-%%Page: 17 19
-17 18 bop 75 -58 a Fu(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1055
-b(17)75 149 y Ft(delete-char-or-list)13 b(\(\))315 204
-y Fu(Deletes)h(the)f(c)o(haracter)g(under)h(the)g(cursor)f(if)h(not)f
-(at)g(the)g(b)q(eginning)j(or)d(end)h(of)f(the)g(line)315
-259 y(\(lik)o(e)i Ft(delete-char)p Fu(\).)j(If)d(at)f(the)h(end)g(of)f
-(the)g(line,)i(b)q(eha)o(v)o(es)f(iden)o(tically)i(to)d
-Ft(possible-)315 314 y(completions)p Fu(.)k(This)e(command)f(is)h(un)o
-(b)q(ound)g(b)o(y)f(default.)75 428 y Fj(1.4.7)30 b(Keyb)r(oard)20
-b(Macros)75 551 y Ft(start-kbd-macro)13 b(\(C-x)i(\(\))315
-606 y Fu(Begin)h(sa)o(ving)f(the)h(c)o(haracters)e(t)o(yp)q(ed)i(in)o
-(to)f(the)g(curren)o(t)g(k)o(eyb)q(oard)g(macro.)75 699
-y Ft(end-kbd-macro)e(\(C-x)i(\)\))315 754 y Fu(Stop)f(sa)o(ving)f(the)h
-(c)o(haracters)f(t)o(yp)q(ed)h(in)o(to)f(the)h(curren)o(t)g(k)o(eyb)q
-(oard)f(macro)g(and)h(sa)o(v)o(e)f(the)315 809 y(de\014nition.)75
-902 y Ft(call-last-kbd-macro)g(\(C-x)h(e\))315 957 y
-Fu(Re-execute)k(the)g(last)f(k)o(eyb)q(oard)h(macro)f(de\014ned,)i(b)o
-(y)e(making)h(the)g(c)o(haracters)e(in)j(the)315 1012
-y(macro)14 b(app)q(ear)i(as)f(if)g(t)o(yp)q(ed)h(at)e(the)i(k)o(eyb)q
-(oard.)75 1126 y Fj(1.4.8)30 b(Some)20 b(Miscellaneous)h(Commands)75
-1249 y Ft(re-read-init-file)13 b(\(C-x)h(C-r\))315 1304
-y Fu(Read)d(in)g(the)g(con)o(ten)o(ts)g(of)f(the)h Fk(inputrc)k
-Fu(\014le,)d(and)g(incorp)q(orate)f(an)o(y)f(bindings)j(or)e(v)m
-(ariable)315 1358 y(assignmen)o(ts)k(found)h(there.)75
-1452 y Ft(abort)e(\(C-g\))315 1507 y Fu(Ab)q(ort)f(the)g(curren)o(t)h
-(editing)g(command)f(and)h(ring)f(the)h(terminal's)f(b)q(ell)i(\(sub)s
-(ject)e(to)g(the)315 1561 y(setting)i(of)g Ft(bell-style)p
-Fu(\).)75 1655 y Ft(do-uppercase-version)d(\(M-a,)j(M-b,)f(M-)p
-Fk(x)p Ft(,)h(...\))315 1710 y Fu(If)f(the)g(meta\014ed)g(c)o(haracter)
-f Fk(x)k Fu(is)d(lo)o(w)o(ercase,)g(run)g(the)g(command)f(that)h(is)g
-(b)q(ound)h(to)e(the)315 1764 y(corresp)q(onding)j(upp)q(ercase)g(c)o
-(haracter.)75 1858 y Ft(prefix-meta)e(\()377 1856 y Fn(h)p
-389 1830 70 2 v 389 1858 a Fm(ESC)p 389 1866 V 456 1856
-a Fn(i)471 1858 y Ft(\))315 1913 y Fu(Metafy)k(the)h(next)g(c)o
-(haracter)f(t)o(yp)q(ed.)30 b(This)20 b(is)f(for)f(k)o(eyb)q(oards)h
-(without)g(a)f(meta)g(k)o(ey)l(.)315 1968 y(T)o(yping)e(`)485
-1966 y Fn(h)p 496 1939 V 496 1968 a Fm(ESC)p 496 1975
-V 563 1966 a Fn(i)593 1968 y Ft(f)p Fu(')f(is)h(equiv)m(alen)o(t)h(to)d
-(t)o(yping)i Fo(M-f)p Fu(.)75 2061 y Ft(undo)f(\(C-_)f(or)h(C-x)g
-(C-u\))315 2116 y Fu(Incremen)o(tal)h(undo,)f(separately)h(remem)o(b)q
-(ered)g(for)e(eac)o(h)h(line.)75 2209 y Ft(revert-line)f(\(M-r\))315
-2264 y Fu(Undo)j(all)g(c)o(hanges)g(made)f(to)g(this)h(line.)26
-b(This)17 b(is)g(lik)o(e)h(executing)f(the)g Ft(undo)f
-Fu(command)315 2319 y(enough)g(times)f(to)g(get)f(bac)o(k)h(to)g(the)g
-(b)q(eginning.)75 2412 y Ft(tilde-expand)f(\(M-~\))315
-2467 y Fu(P)o(erform)g(tilde)j(expansion)f(on)f(the)g(curren)o(t)g(w)o
-(ord.)75 2560 y Ft(set-mark)f(\(C-@\))315 2615 y Fu(Set)i(the)h(mark)f
-(to)f(the)i(p)q(oin)o(t.)24 b(If)17 b(a)f(n)o(umeric)h(argumen)o(t)f
-(is)g(supplied,)j(the)e(mark)e(is)i(set)315 2670 y(to)e(that)f(p)q
-(osition.)p eop
-%%Page: 18 20
-18 19 bop 75 -58 a Fu(18)1299 b(GNU)15 b(Readline)h(Library)75
-149 y Ft(exchange-point-and-mark)c(\(C-x)j(C-x\))315
-204 y Fu(Sw)o(ap)g(the)h(p)q(oin)o(t)g(with)g(the)g(mark.)k(The)c
-(curren)o(t)f(cursor)h(p)q(osition)g(is)g(set)g(to)f(the)g(sa)o(v)o(ed)
-315 259 y(p)q(osition,)h(and)f(the)h(old)f(cursor)g(p)q(osition)h(is)g
-(sa)o(v)o(ed)f(as)g(the)g(mark.)75 347 y Ft(character-search)e(\(C-]\))
-315 402 y Fu(A)f(c)o(haracter)g(is)h(read)g(and)f(p)q(oin)o(t)h(is)g
-(mo)o(v)o(ed)f(to)g(the)g(next)h(o)q(ccurrence)g(of)f(that)g(c)o
-(haracter.)315 456 y(A)j(negativ)o(e)h(coun)o(t)f(searc)o(hes)g(for)f
-(previous)i(o)q(ccurrences.)75 544 y Ft(character-search-backward)c
-(\(M-C-]\))315 599 y Fu(A)22 b(c)o(haracter)g(is)h(read)f(and)h(p)q
-(oin)o(t)g(is)g(mo)o(v)o(ed)f(to)g(the)g(previous)h(o)q(ccurrence)h(of)
-e(that)315 654 y(c)o(haracter.)d(A)c(negativ)o(e)h(coun)o(t)f(searc)o
-(hes)g(for)f(subsequen)o(t)i(o)q(ccurrences.)75 741 y
-Ft(insert-comment)d(\(M-#\))315 796 y Fu(Without)18 b(a)f(n)o(umeric)i
-(argumen)o(t,)e(the)h(v)m(alue)h(of)f(the)f Ft(comment-begin)f
-Fu(v)m(ariable)k(is)e(in-)315 851 y(serted)e(at)f(the)h(b)q(eginning)i
-(of)d(the)h(curren)o(t)g(line.)23 b(If)16 b(a)g(n)o(umeric)h(argumen)o
-(t)e(is)h(supplied,)315 906 y(this)j(command)f(acts)g(as)f(a)h(toggle:)
-26 b(if)19 b(the)f(c)o(haracters)g(at)f(the)i(b)q(eginning)h(of)e(the)g
-(line)315 960 y(do)d(not)g(matc)o(h)g(the)g(v)m(alue)i(of)e
-Ft(comment-begin)p Fu(,)e(the)i(v)m(alue)i(is)f(inserted,)f(otherwise)h
-(the)315 1015 y(c)o(haracters)j(in)i Ft(comment-begin)d
-Fu(are)i(deleted)i(from)d(the)h(b)q(eginning)i(of)e(the)g(line.)36
-b(In)315 1070 y(either)16 b(case,)f(the)g(line)i(is)f(accepted)f(as)g
-(if)h(a)f(newline)i(had)e(b)q(een)i(t)o(yp)q(ed.)75 1158
-y Ft(dump-functions)c(\(\))315 1213 y Fu(Prin)o(t)g(all)h(of)f(the)g
-(functions)h(and)g(their)g(k)o(ey)f(bindings)i(to)d(the)i(Readline)g
-(output)f(stream.)315 1267 y(If)j(a)g(n)o(umeric)g(argumen)o(t)f(is)i
-(supplied,)h(the)e(output)f(is)i(formatted)d(in)j(suc)o(h)f(a)g(w)o(a)o
-(y)f(that)315 1322 y(it)g(can)h(b)q(e)g(made)f(part)f(of)h(an)g
-Fk(inputrc)k Fu(\014le.)i(This)16 b(command)f(is)h(un)o(b)q(ound)g(b)o
-(y)f(default.)75 1410 y Ft(dump-variables)e(\(\))315
-1465 y Fu(Prin)o(t)e(all)g(of)f(the)h(settable)g(v)m(ariables)h(and)f
-(their)g(v)m(alues)h(to)e(the)h(Readline)h(output)e(stream.)315
-1519 y(If)16 b(a)g(n)o(umeric)g(argumen)o(t)f(is)i(supplied,)h(the)e
-(output)f(is)i(formatted)d(in)j(suc)o(h)f(a)g(w)o(a)o(y)f(that)315
-1574 y(it)g(can)h(b)q(e)g(made)f(part)f(of)h(an)g Fk(inputrc)k
-Fu(\014le.)i(This)16 b(command)f(is)h(un)o(b)q(ound)g(b)o(y)f(default.)
-75 1662 y Ft(dump-macros)f(\(\))315 1717 y Fu(Prin)o(t)j(all)h(of)e
-(the)h(Readline)h(k)o(ey)f(sequences)h(b)q(ound)g(to)e(macros)g(and)h
-(the)g(strings)g(they)315 1771 y(output.)26 b(If)18 b(a)f(n)o(umeric)h
-(argumen)o(t)f(is)h(supplied,)i(the)d(output)g(is)h(formatted)e(in)j
-(suc)o(h)e(a)315 1826 y(w)o(a)o(y)d(that)g(it)i(can)f(b)q(e)g(made)g
-(part)g(of)f(an)h Fk(inputrc)k Fu(\014le.)i(This)15 b(command)g(is)h
-(un)o(b)q(ound)g(b)o(y)315 1881 y(default.)75 1969 y
-Ft(emacs-editing-mode)d(\(C-e\))315 2024 y Fu(When)j(in)g
-Ft(vi)e Fu(command)i(mo)q(de,)f(this)g(causes)h(a)f(switc)o(h)g(to)g
-Ft(emacs)f Fu(editing)j(mo)q(de.)75 2111 y Ft(vi-editing-mode)c
-(\(M-C-j\))315 2166 y Fu(When)j(in)g Ft(emacs)e Fu(editing)j(mo)q(de,)e
-(this)g(causes)h(a)f(switc)o(h)g(to)g Ft(vi)f Fu(editing)j(mo)q(de.)75
-2290 y Fs(1.5)33 b(Readline)23 b(vi)h(Mo)r(de)137 2385
-y Fu(While)13 b(the)f(Readline)i(library)e(do)q(es)g(not)g(ha)o(v)o(e)f
-(a)h(full)h(set)f(of)f Ft(vi)g Fu(editing)j(functions,)f(it)f(do)q(es)g
-(con)o(tain)75 2440 y(enough)17 b(to)g(allo)o(w)g(simple)h(editing)h
-(of)d(the)i(line.)27 b(The)17 b(Readline)h Ft(vi)f Fu(mo)q(de)g(b)q
-(eha)o(v)o(es)g(as)g(sp)q(eci\014ed)i(in)75 2495 y(the)c
-Fp(posix)g Fu(1003.2)f(standard.)137 2560 y(In)h(order)g(to)f(switc)o
-(h)g(in)o(teractiv)o(ely)i(b)q(et)o(w)o(een)f Ft(emacs)e
-Fu(and)i Ft(vi)f Fu(editing)i(mo)q(des,)f(use)f(the)h(command)75
-2615 y Fo(M-C-j)j Fu(\(b)q(ound)i(to)e(emacs-editing-mo)q(de)j(when)e
-(in)h Ft(vi)f Fu(mo)q(de)g(and)g(to)f(vi-editing-mo)q(de)k(in)e
-Ft(emacs)75 2670 y Fu(mo)q(de\).)g(The)15 b(Readline)i(default)f(is)f
-Ft(emacs)g Fu(mo)q(de.)p eop
-%%Page: 19 21
-19 20 bop 75 -58 a Fu(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1055
-b(19)137 149 y(When)16 b(y)o(ou)e(en)o(ter)h(a)g(line)i(in)e
-Ft(vi)g Fu(mo)q(de,)g(y)o(ou)g(are)f(already)i(placed)g(in)g
-(`insertion')f(mo)q(de,)g(as)g(if)g(y)o(ou)75 204 y(had)e(t)o(yp)q(ed)h
-(an)f(`)p Ft(i)p Fu('.)18 b(Pressing)608 202 y Fn(h)p
-620 176 70 2 v 620 204 a Fm(ESC)p 620 212 V 687 202 a
-Fn(i)715 204 y Fu(switc)o(hes)13 b(y)o(ou)g(in)o(to)g(`command')f(mo)q
-(de,)i(where)f(y)o(ou)g(can)g(edit)h(the)75 259 y(text)i(of)h(the)g
-(line)h(with)g(the)f(standard)f Ft(vi)h Fu(mo)o(v)o(emen)o(t)f(k)o
-(eys,)g(mo)o(v)o(e)g(to)h(previous)g(history)g(lines)i(with)75
-314 y(`)p Ft(k)p Fu(')14 b(and)i(subsequen)o(t)f(lines)i(with)f(`)p
-Ft(j)p Fu(',)e(and)h(so)g(forth.)p eop
-%%Page: 20 22
-20 21 bop 75 -58 a Fu(20)1299 b(GNU)15 b(Readline)h(Library)p
-eop
-%%Page: 21 23
-21 22 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(21)75 149 y Fq(2)41 b(Programming)28
-b(with)e(GNU)i(Readline)137 267 y Fu(This)18 b(c)o(hapter)f(describ)q
-(es)h(the)f(in)o(terface)g(b)q(et)o(w)o(een)h(the)f Fp(gnu)g
-Fu(Readline)h(Library)f(and)g(other)g(pro-)75 322 y(grams.)h(If)11
-b(y)o(ou)g(are)g(a)g(programmer,)f(and)i(y)o(ou)f(wish)g(to)g(include)j
-(the)d(features)g(found)g(in)i Fp(gnu)e Fu(Readline)75
-377 y(suc)o(h)h(as)f(completion,)h(line)h(editing,)g(and)f(in)o
-(teractiv)o(e)g(history)f(manipulation)i(in)f(y)o(our)f(o)o(wn)g
-(programs,)75 432 y(this)16 b(section)f(is)h(for)f(y)o(ou.)75
-561 y Fs(2.1)33 b(Basic)22 b(Beha)n(vior)137 658 y Fu(Man)o(y)15
-b(programs)f(pro)o(vide)i(a)f(command)g(line)i(in)o(terface,)e(suc)o(h)
-h(as)f Ft(mail)p Fu(,)f Ft(ftp)p Fu(,)h(and)g Ft(sh)p
-Fu(.)20 b(F)l(or)15 b(suc)o(h)75 713 y(programs,)e(the)h(default)h(b)q
-(eha)o(viour)g(of)f(Readline)i(is)e(su\016cien)o(t.)21
-b(This)14 b(section)h(describ)q(es)h(ho)o(w)e(to)g(use)75
-768 y(Readline)k(in)h(the)e(simplest)h(w)o(a)o(y)e(p)q(ossible,)j(p)q
-(erhaps)f(to)f(replace)h(calls)g(in)g(y)o(our)f(co)q(de)h(to)e
-Ft(gets\(\))g Fu(or)75 822 y Ft(fgets\(\))p Fu(.)137
-890 y(The)h(function)g Ft(readline\(\))e Fu(prin)o(ts)h(a)g(prompt)g
-Fk(prompt)h Fu(and)f(then)h(reads)f(and)h(returns)f(a)g(single)75
-945 y(line)i(of)e(text)g(from)f(the)i(user.)23 b(If)17
-b Fk(prompt)g Fu(is)g Ft(NULL)e Fu(or)h(the)h(empt)o(y)f(string,)g(no)g
-(prompt)g(is)h(displa)o(y)o(ed.)75 1000 y(The)i(line)h
-Ft(readline)d Fu(returns)i(is)g(allo)q(cated)g(with)g
-Ft(malloc\(\))p Fu(;)g(the)g(caller)g(should)h Ft(free\(\))e
-Fu(the)g(line)75 1054 y(when)e(it)f(has)g(\014nished)i(with)f(it.)k
-(The)15 b(declaration)h(for)f Ft(readline)f Fu(in)i(ANSI)g(C)f(is)195
-1119 y Ft(char)23 b(*readline)g(\(const)g(char)g(*)p
-Fk(prompt)q Ft(\);)75 1187 y Fu(So,)15 b(one)g(migh)o(t)g(sa)o(y)195
-1251 y Ft(char)23 b(*line)g(=)h(readline)f(\("Enter)g(a)h(line:)f("\);)
-75 1319 y Fu(in)12 b(order)f(to)g(read)h(a)f(line)i(of)e(text)g(from)f
-(the)i(user.)19 b(The)11 b(line)j(returned)d(has)h(the)f(\014nal)h
-(newline)i(remo)o(v)o(ed,)75 1374 y(so)h(only)h(the)f(text)g(remains.)
-137 1441 y(If)21 b Ft(readline)e Fu(encoun)o(ters)h(an)g
-Ft(EOF)g Fu(while)i(reading)f(the)f(line,)j(and)d(the)h(line)g(is)g
-(empt)o(y)f(at)g(that)75 1496 y(p)q(oin)o(t,)15 b(then)g
-Ft(\(char)f(*\)NULL)g Fu(is)h(returned.)21 b(Otherwise,)15
-b(the)g(line)h(is)f(ended)h(just)e(as)h(if)g(a)f(newline)j(had)75
-1551 y(b)q(een)f(t)o(yp)q(ed.)137 1618 y(If)d(y)o(ou)g(w)o(an)o(t)f
-(the)h(user)g(to)f(b)q(e)i(able)g(to)e(get)g(at)h(the)g(line)h(later,)f
-(\(with)1325 1616 y Fn(h)p 1338 1590 57 2 v 1338 1618
-a Fm(C-p)p 1338 1626 V 1392 1616 a Fn(i)1420 1618 y Fu(for)f
-(example\),)i(y)o(ou)f(m)o(ust)75 1673 y(call)j Ft(add_history\(\))e
-Fu(to)g(sa)o(v)o(e)h(the)g(line)i(a)o(w)o(a)o(y)d(in)i(a)e
-Fk(history)19 b Fu(list)d(of)f(suc)o(h)h(lines.)195 1738
-y Ft(add_history)22 b(\(line\);)75 1805 y Fu(F)l(or)15
-b(full)h(details)g(on)f(the)h(GNU)f(History)g(Library)l(,)g(see)h(the)f
-(asso)q(ciated)g(man)o(ual.)137 1873 y(It)h(is)g(preferable)h(to)e(a)o
-(v)o(oid)g(sa)o(ving)h(empt)o(y)f(lines)i(on)f(the)g(history)f(list,)i
-(since)f(users)g(rarely)g(ha)o(v)o(e)f(a)75 1928 y(burning)h(need)g(to)
-e(reuse)h(a)g(blank)g(line.)22 b(Here)15 b(is)g(a)g(function)g(whic)o
-(h)h(usefully)h(replaces)e(the)g(standard)75 1983 y Ft(gets\(\))f
-Fu(library)i(function,)g(and)f(has)g(the)h(adv)m(an)o(tage)e(of)h(no)g
-(static)g(bu\013er)g(to)g(o)o(v)o(er\015o)o(w:)195 2047
-y Ft(/*)24 b(A)f(static)g(variable)g(for)h(holding)e(the)i(line.)f(*/)
-195 2099 y(static)g(char)g(*line_read)g(=)h(\(char)f(*\)NULL;)195
-2203 y(/*)h(Read)f(a)h(string,)f(and)g(return)g(a)h(pointer)f(to)g(it.)
-267 2255 y(Returns)f(NULL)i(on)f(EOF.)h(*/)195 2307 y(char)f(*)195
-2359 y(rl_gets)g(\(\))195 2411 y({)243 2462 y(/*)g(If)h(the)f(buffer)g
-(has)h(already)f(been)g(allocated,)314 2514 y(return)g(the)h(memory)f
-(to)g(the)h(free)f(pool.)g(*/)243 2566 y(if)g(\(line_read\))290
-2618 y({)338 2670 y(free)g(\(line_read\);)p eop
-%%Page: 22 24
-22 23 bop 75 -58 a Fu(22)1299 b(GNU)15 b(Readline)h(Library)338
-149 y Ft(line_read)23 b(=)h(\(char)f(*\)NULL;)290 201
-y(})243 305 y(/*)g(Get)h(a)f(line)h(from)f(the)h(user.)f(*/)243
-357 y(line_read)f(=)i(readline)f(\(""\);)243 461 y(/*)g(If)h(the)f
-(line)h(has)f(any)h(text)f(in)g(it,)314 513 y(save)h(it)f(on)h(the)f
-(history.)g(*/)243 565 y(if)g(\(line_read)g(&&)g(*line_read\))290
-616 y(add_history)g(\(line_read\);)243 720 y(return)g(\(line_read\);)
-195 772 y(})137 848 y Fu(This)13 b(function)f(giv)o(es)h(the)e(user)h
-(the)g(default)h(b)q(eha)o(viour)g(of)1169 846 y Fn(h)p
-1181 820 74 2 v 1181 848 a Fm(T)m(AB)p 1181 856 V 1253
-846 a Fn(i)1280 848 y Fu(completion:)19 b(completion)13
-b(on)f(\014le)75 903 y(names.)20 b(If)c(y)o(ou)f(do)g(not)g(w)o(an)o(t)
-f(Readline)j(to)d(complete)j(on)e(\014lenames,)h(y)o(ou)f(can)g(c)o
-(hange)h(the)f(binding)75 958 y(of)g(the)205 956 y Fn(h)p
-217 930 V 217 958 a Fm(T)m(AB)p 217 965 V 289 956 a Fn(i)319
-958 y Fu(k)o(ey)g(with)h Ft(rl_bind_key\(\))p Fu(.)195
-1031 y Ft(int)23 b(rl_bind_key)g(\(int)g Fk(k)o(ey)p
-Ft(,)h(rl_command_func_t)d(*)p Fk(function)p Ft(\);)137
-1107 y(rl_bind_key\(\))15 b Fu(tak)o(es)h(t)o(w)o(o)g(argumen)o(ts:)22
-b Fk(k)o(ey)e Fu(is)e(the)e(c)o(haracter)g(that)g(y)o(ou)h(w)o(an)o(t)f
-(to)g(bind,)i(and)75 1161 y Fk(function)h Fu(is)f(the)g(address)g(of)g
-(the)g(function)g(to)g(call)h(when)f Fk(k)o(ey)k Fu(is)c(pressed.)29
-b(Binding)1628 1159 y Fn(h)p 1641 1133 V 1641 1161 a
-Fm(T)m(AB)p 1641 1169 V 1712 1159 a Fn(i)1745 1161 y
-Fu(to)17 b Ft(rl_)75 1216 y(insert\(\))f Fu(mak)o(es)422
-1214 y Fn(h)p 434 1188 V 434 1216 a Fm(T)m(AB)p 434 1224
-V 506 1214 a Fn(i)539 1216 y Fu(insert)i(itself.)28 b
-Ft(rl_bind_key\(\))15 b Fu(returns)j(non-zero)g(if)g
-Fk(k)o(ey)j Fu(is)d(not)f(a)g(v)m(alid)75 1271 y(ASCI)q(I)f(c)o
-(haracter)f(co)q(de)h(\(b)q(et)o(w)o(een)f(0)g(and)g(255\).)137
-1347 y(Th)o(us,)g(to)g(disable)h(the)g(default)703 1345
-y Fn(h)p 716 1319 V 716 1347 a Fm(T)m(AB)p 716 1354 V
-787 1345 a Fn(i)817 1347 y Fu(b)q(eha)o(vior,)g(the)f(follo)o(wing)h
-(su\016ces:)195 1420 y Ft(rl_bind_key)22 b(\('\\t',)h(rl_insert\);)137
-1496 y Fu(This)14 b(co)q(de)g(should)g(b)q(e)g(executed)g(once)g(at)e
-(the)h(start)f(of)h(y)o(our)g(program;)f(y)o(ou)h(migh)o(t)g(write)g(a)
-g(func-)75 1551 y(tion)k(called)h Ft(initialize_readline\(\))13
-b Fu(whic)o(h)k(p)q(erforms)f(this)h(and)g(other)f(desired)h
-(initializations,)75 1605 y(suc)o(h)f(as)e(installing)k(custom)c
-(completers)i(\(see)f(Section)h(2.6)f([Custom)f(Completers],)g(page)h
-(41\).)75 1756 y Fs(2.2)33 b(Custom)21 b(F)-6 b(unctions)137
-1861 y Fu(Readline)14 b(pro)o(vides)f(man)o(y)e(functions)i(for)f
-(manipulating)i(the)e(text)g(of)g(the)g(line,)i(but)e(it)h(isn't)f(p)q
-(ossi-)75 1915 y(ble)i(to)f(an)o(ticipate)h(the)f(needs)h(of)f(all)h
-(programs.)k(This)13 b(section)h(describ)q(es)h(the)e(v)m(arious)h
-(functions)g(and)75 1970 y(v)m(ariables)g(de\014ned)h(within)f(the)f
-(Readline)i(library)e(whic)o(h)h(allo)o(w)g(a)e(user)h(program)f(to)h
-(add)g(customized)75 2025 y(functionalit)o(y)j(to)f(Readline.)137
-2101 y(Before)j(declaring)i(an)o(y)e(functions)h(that)f(customize)g
-(Readline's)h(b)q(eha)o(vior,)h(or)d(using)i(an)o(y)f(func-)75
-2156 y(tionalit)o(y)23 b(Readline)h(pro)o(vides)g(in)f(other)g(co)q
-(de,)h(an)f(application)i(writer)d(should)i(include)h(the)e(\014le)75
-2211 y Ft(<readline/readline.h>)14 b Fu(in)j(an)o(y)g(\014le)h(that)e
-(uses)h(Readline's)g(features.)24 b(Since)19 b(some)d(of)g(the)h
-(de\014-)75 2265 y(nitions)g(in)f Ft(readline.h)e Fu(use)i(the)g
-Ft(stdio)f Fu(library)l(,)h(the)g(\014le)g Ft(<stdio.h>)f
-Fu(should)h(b)q(e)g(included)j(b)q(efore)75 2320 y Ft(readline.h)p
-Fu(.)137 2396 y Ft(readline.h)14 b Fu(de\014nes)i(a)f(C)h(prepro)q
-(cessor)f(v)m(ariable)i(that)d(should)i(b)q(e)g(treated)f(as)g(an)g(in)
-o(teger,)g Ft(RL_)75 2451 y(READLINE_VERSION)p Fu(,)9
-b(whic)o(h)j(ma)o(y)f(b)q(e)g(used)h(to)e(conditionally)k(compile)e
-(application)h(co)q(de)f(dep)q(ending)75 2506 y(on)17
-b(the)h(installed)h(Readline)g(v)o(ersion.)27 b(The)18
-b(v)m(alue)h(is)f(a)f(hexadecimal)i(enco)q(ding)g(of)e(the)h(ma)s(jor)e
-(and)75 2560 y(minor)h(v)o(ersion)h(n)o(um)o(b)q(ers)f(of)g(the)g
-(library)l(,)h(of)f(the)g(form)f(0x)p Fk(MMmm)p Fu(.)25
-b Fk(MM)c Fu(is)c(the)h(t)o(w)o(o-digit)e(ma)s(jor)75
-2615 y(v)o(ersion)f(n)o(um)o(b)q(er;)f Fk(mm)h Fu(is)g(the)f(t)o(w)o
-(o-digit)g(minor)h(v)o(ersion)g(n)o(um)o(b)q(er.)20 b(F)l(or)14
-b(Readline)h(4.2,)f(for)f(example,)75 2670 y(the)i(v)m(alue)i(of)d
-Ft(RL_READLINE_VERSION)f Fu(w)o(ould)j(b)q(e)f Ft(0x0402)p
-Fu(.)p eop
-%%Page: 23 25
-23 24 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(23)75 149 y Fj(2.2.1)30 b(Readline)20
-b(T)n(yp)r(edefs)137 251 y Fu(F)l(or)15 b(readabilt)o(y)l(,)g(w)o(e)g
-(declare)i(a)d(n)o(um)o(b)q(er)i(of)f(new)g(ob)s(ject)g(t)o(yp)q(es,)g
-(all)h(p)q(oin)o(ters)f(to)g(functions.)137 324 y(The)j(reason)g(for)f
-(declaring)i(these)f(new)g(t)o(yp)q(es)g(is)h(to)e(mak)o(e)g(it)h
-(easier)h(to)e(write)h(co)q(de)g(describing)75 379 y(p)q(oin)o(ters)e
-(to)e(C)h(functions)h(with)g(appropriately)f(protot)o(yp)q(ed)g
-(argumen)o(ts)g(and)g(return)g(v)m(alues.)137 452 y(F)l(or)j(instance,)
-i(sa)o(y)e(w)o(e)g(w)o(an)o(t)f(to)h(declare)h(a)f(v)m(ariable)i
-Fk(func)i Fu(as)c(a)g(p)q(oin)o(ter)h(to)f(a)g(function)h(whic)o(h)75
-507 y(tak)o(es)12 b(t)o(w)o(o)g Ft(int)g Fu(argumen)o(ts)g(and)h
-(returns)g(an)g Ft(int)f Fu(\(this)h(is)g(the)g(t)o(yp)q(e)g(of)g(all)g
-(of)g(the)g(Readline)h(bindable)75 561 y(functions\).)20
-b(Instead)c(of)f(the)g(classic)h(C)f(declaration)137
-634 y Ft(int)g(\(*func\)\(\);)75 707 y Fu(or)g(the)g(ANSI-C)h(st)o(yle)
-f(declaration)137 780 y Ft(int)g(\(*func\)\(int,)f(int\);)75
-853 y Fu(w)o(e)h(ma)o(y)f(write)137 926 y Ft(rl_command_func_t)f
-(*func;)137 999 y Fu(The)j(full)g(list)g(of)f(function)h(p)q(oin)o(ter)
-g(t)o(yp)q(es)f(a)o(v)m(ailable)i(is)75 1087 y Ft(typedef)d(int)h
-(rl_command_func_t)e(\(int,)h(int\);)75 1157 y(typedef)g(char)h
-(*rl_compentry_func_t)d(\(const)j(char)f(*,)h(int\);)75
-1227 y(typedef)f(char)h(**rl_completion_func_t)d(\(const)i(char)h(*,)g
-(int,)f(int\);)75 1297 y(typedef)g(char)h(*rl_quote_func_t)e(\(char)h
-(*,)h(int,)g(char)f(*\);)75 1367 y(typedef)g(char)h(*rl_dequote_func_t)
-d(\(char)j(*,)g(int\);)75 1437 y(typedef)f(int)h(rl_compignore_func_t)d
-(\(char)j(**\);)75 1507 y(typedef)f(void)h(rl_compdisp_func_t)d(\(char)
-j(**,)g(int,)f(int\);)75 1577 y(typedef)g(int)h(rl_hook_func_t)e
-(\(void\);)75 1647 y(typedef)h(int)h(rl_getc_func_t)e(\(FILE)i(*\);)75
-1717 y(typedef)f(int)h(rl_linebuf_func_t)e(\(char)h(*,)h(int\);)75
-1787 y(typedef)f(int)h(rl_intfunc_t)e(\(int\);)75 1857
-y(#define)h(rl_ivoidfunc_t)f(rl_hook_func_t)75 1927 y(typedef)h(int)h
-(rl_icpfunc_t)e(\(char)i(*\);)75 1997 y(typedef)f(int)h(rl_icppfunc_t)e
-(\(char)i(**\);)75 2067 y(typedef)f(void)h(rl_voidfunc_t)e(\(void\);)75
-2137 y(typedef)h(void)h(rl_vintfunc_t)e(\(int\);)75 2208
-y(typedef)h(void)h(rl_vcpfunc_t)e(\(char)i(*\);)75 2278
-y(typedef)f(void)h(rl_vcppfunc_t)e(\(char)i(**\);)75
-2386 y Fj(2.2.2)30 b(W)-5 b(riting)20 b(a)h(New)f(F)-5
-b(unction)137 2488 y Fu(In)17 b(order)f(to)f(write)h(new)h(functions)g
-(for)e(Readline,)i(y)o(ou)f(need)h(to)e(kno)o(w)h(the)g(calling)i(con)o
-(v)o(en)o(tions)75 2542 y(for)g(k)o(eyb)q(oard-in)o(v)o(ok)o(ed)h
-(functions,)g(and)g(the)f(names)h(of)f(the)g(v)m(ariables)i(that)d
-(describ)q(e)k(the)d(curren)o(t)75 2597 y(state)c(of)h(the)g(line)i
-(read)e(so)g(far.)137 2670 y(The)h(calling)h(sequence)f(for)f(a)f
-(command)i Ft(foo)e Fu(lo)q(oks)i(lik)o(e)p eop
-%%Page: 24 26
-24 25 bop 75 -58 a Fu(24)1299 b(GNU)15 b(Readline)h(Library)195
-149 y Ft(int)23 b(foo)h(\(int)f(count,)g(int)h(key\))75
-221 y Fu(where)18 b Fk(coun)o(t)h Fu(is)f(the)g(n)o(umeric)h(argumen)o
-(t)e(\(or)h(1)f(if)i(defaulted\))f(and)g Fk(k)o(ey)k
-Fu(is)d(the)f(k)o(ey)g(that)f(in)o(v)o(ok)o(ed)75 276
-y(this)f(function.)137 348 y(It)c(is)g(completely)h(up)f(to)f(the)g
-(function)i(as)e(to)g(what)g(should)h(b)q(e)g(done)g(with)g(the)g(n)o
-(umeric)g(argumen)o(t.)75 403 y(Some)20 b(functions)h(use)f(it)g(as)g
-(a)g(rep)q(eat)g(coun)o(t,)g(some)g(as)g(a)f(\015ag,)i(and)f(others)g
-(to)f(c)o(ho)q(ose)h(alternate)75 457 y(b)q(eha)o(vior)i(\(refreshing)g
-(the)g(curren)o(t)f(line)j(as)d(opp)q(osed)h(to)f(refreshing)i(the)e
-(screen,)j(for)d(example\).)75 512 y(Some)c(c)o(ho)q(ose)f(to)g(ignore)
-h(it.)24 b(In)18 b(general,)f(if)g(a)f(function)h(uses)g(the)g(n)o
-(umeric)h(argumen)o(t)d(as)i(a)f(rep)q(eat)75 567 y(coun)o(t,)e(it)g
-(should)h(b)q(e)f(able)h(to)e(do)h(something)h(useful)g(with)f(b)q(oth)
-g(negativ)o(e)g(and)g(p)q(ositiv)o(e)h(argumen)o(ts.)75
-622 y(A)o(t)g(the)g(v)o(ery)g(least,)g(it)g(should)h(b)q(e)g(a)o(w)o
-(are)e(that)h(it)g(can)g(b)q(e)h(passed)g(a)f(negativ)o(e)g(argumen)o
-(t.)137 693 y(A)f(command)g(function)h(should)g(return)e(0)h(if)g(its)g
-(action)h(completes)f(successfully)l(,)i(and)e(a)g(non-zero)75
-748 y(v)m(alue)i(if)g(some)f(error)f(o)q(ccurs.)75 888
-y Fs(2.3)33 b(Readline)23 b(V)-6 b(ariables)137 989 y
-Fu(These)16 b(v)m(ariables)g(are)f(a)o(v)m(ailable)i(to)e(function)h
-(writers.)1773 1120 y(V)l(ariable)-1861 b Fi(char)20
-b(*)f Fh(rl)p 286 1120 18 3 v 21 w(line)p 395 1120 V
-23 w(bu\013er)195 1174 y Fu(This)d(is)g(the)g(line)h(gathered)f(so)f
-(far.)20 b(Y)l(ou)c(are)f(w)o(elcome)h(to)f(mo)q(dify)h(the)g(con)o
-(ten)o(ts)f(of)g(the)h(line,)195 1229 y(but)i(see)g(Section)h(2.4.5)d
-([Allo)o(wing)i(Undoing],)h(page)e(32.)27 b(The)18 b(function)h
-Ft(rl_extend_line_)195 1284 y(buffer)14 b Fu(is)i(a)o(v)m(ailable)h(to)
-d(increase)j(the)e(memory)f(allo)q(cated)j(to)d Ft(rl_line_buffer)p
-Fu(.)1773 1414 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p
-215 1414 V 21 w(p)r(oin)n(t)195 1469 y Fu(The)15 b(o\013set)g(of)f(the)
-i(curren)o(t)f(cursor)g(p)q(osition)h(in)g Ft(rl_line_buffer)d
-Fu(\(the)i Fl(p)n(oint)t Fu(\).)1773 1600 y(V)l(ariable)-1861
-b Fi(int)20 b Fh(rl)p 215 1600 V 21 w(end)195 1655 y
-Fu(The)14 b(n)o(um)o(b)q(er)g(of)g(c)o(haracters)f(presen)o(t)h(in)h
-Ft(rl_line_buffer)p Fu(.)i(When)e Ft(rl_point)e Fu(is)h(at)f(the)h(end)
-195 1709 y(of)h(the)g(line,)i Ft(rl_point)d Fu(and)h
-Ft(rl_end)f Fu(are)h(equal.)1773 1840 y(V)l(ariable)-1861
-b Fi(int)20 b Fh(rl)p 215 1840 V 21 w(mark)195 1895 y
-Fu(The)f Fk(mark)h Fu(\(sa)o(v)o(ed)e(p)q(osition\))h(in)g(the)g
-(curren)o(t)f(line.)31 b(If)19 b(set,)g(the)f(mark)g(and)h(p)q(oin)o(t)
-g(de\014ne)g(a)195 1950 y Fl(r)n(e)n(gion)p Fu(.)1773
-2080 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p 215 2080
-V 21 w(done)195 2135 y Fu(Setting)11 b(this)g(to)g(a)f(non-zero)h(v)m
-(alue)h(causes)f(Readline)h(to)f(return)f(the)h(curren)o(t)g(line)h
-(immediately)l(.)1773 2265 y(V)l(ariable)-1861 b Fi(int)20
-b Fh(rl)p 215 2265 V 21 w(n)n(um)p 347 2265 V 19 w(c)n(hars)p
-496 2265 V 20 w(to)p 567 2265 V 21 w(read)195 2320 y
-Fu(Setting)d(this)g(to)f(a)g(p)q(ositiv)o(e)h(v)m(alue)h(b)q(efore)f
-(calling)h Ft(readline\(\))d Fu(causes)h(Readline)i(to)e(return)195
-2375 y(after)h(accepting)i(that)e(man)o(y)g(c)o(haracters,)h(rather)f
-(than)h(reading)g(up)g(to)f(a)h(c)o(haracter)f(b)q(ound)195
-2430 y(to)e Ft(accept-line)p Fu(.)1773 2560 y(V)l(ariable)-1861
-b Fi(int)20 b Fh(rl)p 215 2560 V 21 w(p)r(ending)p 436
-2560 V 20 w(input)195 2615 y Fu(Setting)13 b(this)g(to)f(a)g(v)m(alue)i
-(mak)o(es)e(it)h(the)f(next)h(k)o(eystrok)o(e)f(read.)19
-b(This)13 b(is)g(a)f(w)o(a)o(y)g(to)f(stu\013)h(a)h(single)195
-2670 y(c)o(haracter)h(in)o(to)i(the)f(input)h(stream.)p
-eop
-%%Page: 25 27
-25 26 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(25)1773 149 y(V)l(ariable)-1861 b Fi(int)20
-b Fh(rl)p 215 149 18 3 v 21 w(dispatc)n(hing)195 204
-y Fu(Set)12 b(to)g(a)f(non-zero)i(v)m(alue)g(if)g(a)f(function)h(is)f
-(b)q(eing)i(called)f(from)f(a)f(k)o(ey)h(binding;)j(zero)d(otherwise.)
-195 259 y(Application)20 b(functions)e(can)g(test)g(this)g(to)f(disco)o
-(v)o(er)h(whether)g(they)g(w)o(ere)g(called)h(directly)g(or)195
-314 y(b)o(y)c(Readline's)h(dispatc)o(hing)h(mec)o(hanism.)1773
-423 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p 215 423
-V 21 w(erase)p 363 423 V 20 w(empt)n(y)p 540 423 V 20
-w(line)195 478 y Fu(Setting)j(this)h(to)e(a)h(non-zero)g(v)m(alue)h
-(causes)f(Readline)i(to)d(completely)i(erase)f(the)g(curren)o(t)195
-533 y(line,)g(including)h(an)o(y)c(prompt,)h(an)o(y)g(time)g(a)f
-(newline)j(is)e(t)o(yp)q(ed)g(as)f(the)h(only)g(c)o(haracter)f(on)195
-588 y(an)e(otherwise-empt)o(y)g(line.)31 b(The)18 b(cursor)g(is)h(mo)o
-(v)o(ed)e(to)h(the)g(b)q(eginning)i(of)e(the)g(newly-blank)195
-643 y(line.)1773 752 y(V)l(ariable)-1861 b Fi(char)20
-b(*)f Fh(rl)p 286 752 V 21 w(prompt)195 807 y Fu(The)13
-b(prompt)g(Readline)h(uses.)20 b(This)13 b(is)h(set)f(from)f(the)h
-(argumen)o(t)g(to)f Ft(readline\(\))p Fu(,)g(and)h(should)195
-862 y(not)g(b)q(e)h(assigned)g(to)f(directly)l(.)21 b(The)14
-b Ft(rl_set_prompt\(\))d Fu(function)j(\(see)g(Section)g(2.4.6)e
-([Redis-)195 917 y(pla)o(y],)j(page)g(33\))f(ma)o(y)h(b)q(e)g(used)h
-(to)f(mo)q(dify)h(the)f(prompt)g(string)g(after)f(calling)j
-Ft(readline\(\))p Fu(.)1773 1026 y(V)l(ariable)-1861
-b Fi(int)20 b Fh(rl)p 215 1026 V 21 w(already)p 419 1026
-V 21 w(prompted)195 1081 y Fu(If)e(an)g(application)i(wishes)f(to)f
-(displa)o(y)h(the)f(prompt)g(itself,)h(rather)f(than)g(ha)o(v)o(e)g
-(Readline)h(do)195 1136 y(it)e(the)f(\014rst)g(time)h
-Ft(readline\(\))e Fu(is)i(called,)h(it)e(should)i(set)e(this)h(v)m
-(ariable)g(to)f(a)g(non-zero)h(v)m(alue)195 1191 y(after)h(displa)o
-(ying)j(the)e(prompt.)31 b(The)19 b(prompt)g(m)o(ust)f(also)h(b)q(e)h
-(passed)f(as)f(the)h(argumen)o(t)g(to)195 1245 y Ft(readline\(\))c
-Fu(so)h(the)h(redispla)o(y)g(functions)h(can)e(up)q(date)h(the)g
-(displa)o(y)h(prop)q(erly)l(.)24 b(The)17 b(calling)195
-1300 y(application)g(is)f(resp)q(onsible)h(for)d(managing)h(the)h(v)m
-(alue;)g(Readline)g(nev)o(er)g(sets)e(it.)1773 1410 y(V)l(ariable)-1861
-b Fi(const)20 b(char)g(*)f Fh(rl)p 436 1410 V 21 w(library)p
-625 1410 V 21 w(v)n(ersion)195 1465 y Fu(The)c(v)o(ersion)h(n)o(um)o(b)
-q(er)f(of)g(this)h(revision)g(of)f(the)g(library)l(.)1773
-1574 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p 215 1574
-V 21 w(readline)p 434 1574 V 22 w(v)n(ersion)195 1629
-y Fu(An)d(in)o(teger)h(enco)q(ding)g(the)f(curren)o(t)g(v)o(ersion)g
-(of)g(the)g(library)l(.)27 b(The)17 b(enco)q(ding)h(is)g(of)f(the)g
-(form)195 1684 y(0x)p Fk(MMmm)p Fu(,)g(where)i Fk(MM)j
-Fu(is)d(the)f(t)o(w)o(o-digit)g(ma)s(jor)f(v)o(ersion)i(n)o(um)o(b)q
-(er,)g(and)f Fk(mm)g Fu(is)h(the)f(t)o(w)o(o-)195 1738
-y(digit)i(minor)e(v)o(ersion)h(n)o(um)o(b)q(er.)31 b(F)l(or)18
-b(example,)i(for)e(Readline-4.2,)i Ft(rl_readline_version)195
-1793 y Fu(w)o(ould)c(ha)o(v)o(e)e(the)i(v)m(alue)g(0x0402.)1773
-1903 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p 215 1903
-V 21 w(gn)n(u)p 327 1903 V 20 w(readline)p 545 1903 V
-22 w(p)195 1958 y Fu(Alw)o(a)o(ys)15 b(set)g(to)f(1,)h(denoting)h(that)
-e(this)i(is)g Fp(gnu)f Fu(readline)h(rather)f(than)g(some)g(em)o
-(ulation.)1773 2067 y(V)l(ariable)-1861 b Fi(const)20
-b(char)g(*)f Fh(rl)p 436 2067 V 21 w(terminal)p 668 2067
-V 21 w(name)195 2122 y Fu(The)14 b(terminal)h(t)o(yp)q(e,)f(used)h(for)
-e(initialization.)23 b(If)14 b(not)f(set)h(b)o(y)g(the)g(application,)i
-(Readline)f(sets)195 2177 y(this)h(to)e(the)h(v)m(alue)i(of)e(the)g
-Ft(TERM)g Fu(en)o(vironmen)o(t)g(v)m(ariable)i(the)e(\014rst)g(time)g
-(it)h(is)f(called.)1773 2286 y(V)l(ariable)-1861 b Fi(const)20
-b(char)g(*)f Fh(rl)p 436 2286 V 21 w(readline)p 655 2286
-V 22 w(name)195 2341 y Fu(This)d(v)m(ariable)h(is)f(set)g(to)f(a)g
-(unique)i(name)f(b)o(y)f(eac)o(h)h(application)h(using)f(Readline.)23
-b(The)16 b(v)m(alue)195 2396 y(allo)o(ws)e(conditional)i(parsing)e(of)g
-(the)g(inputrc)h(\014le)g(\(see)f(Section)h(1.3.2)d([Conditional)j
-(Init)g(Con-)195 2451 y(structs],)f(page)h(9\).)1773
-2560 y(V)l(ariable)-1861 b Fi(FILE)20 b(*)f Fh(rl)p 286
-2560 V 21 w(instream)195 2615 y Fu(The)i(stdio)f(stream)g(from)g(whic)o
-(h)h(Readline)h(reads)e(input.)37 b(If)21 b Ft(NULL)p
-Fu(,)g(Readline)h(defaults)f(to)195 2670 y Fk(stdin)p
-Fu(.)p eop
-%%Page: 26 28
-26 27 bop 75 -58 a Fu(26)1299 b(GNU)15 b(Readline)h(Library)1773
-149 y(V)l(ariable)-1861 b Fi(FILE)20 b(*)f Fh(rl)p 286
-149 18 3 v 21 w(outstream)195 204 y Fu(The)e(stdio)h(stream)e(to)h
-(whic)o(h)h(Readline)g(p)q(erforms)f(output.)26 b(If)18
-b Ft(NULL)p Fu(,)e(Readline)j(defaults)f(to)195 259 y
-Fk(stdout)p Fu(.)1773 381 y(V)l(ariable)-1861 b Fi(rl_command_func_t)22
-b(*)d Fh(rl)p 626 381 V 21 w(last)p 735 381 V 21 w(func)195
-436 y Fu(The)f(address)f(of)g(the)g(last)h(command)f(function)h
-(Readline)h(executed.)27 b(Ma)o(y)17 b(b)q(e)h(used)g(to)f(test)195
-490 y(whether)e(or)g(not)g(a)g(function)h(is)f(b)q(eing)i(executed)f(t)
-o(wice)g(in)g(succession,)g(for)e(example.)1773 612 y(V)l(ariable)-1861
-b Fi(rl_hook_func_t)21 b(*)e Fh(rl)p 547 612 V 22 w(startup)p
-752 612 V 19 w(ho)r(ok)195 667 y Fu(If)e(non-zero,)h(this)g(is)f(the)h
-(address)f(of)f(a)h(function)h(to)f(call)h(just)f(b)q(efore)g
-Ft(readline)f Fu(prin)o(ts)i(the)195 722 y(\014rst)d(prompt.)1773
-844 y(V)l(ariable)-1861 b Fi(rl_hook_func_t)21 b(*)e
-Fh(rl)p 547 844 V 22 w(pre)p 651 844 V 20 w(input)p 804
-844 V 21 w(ho)r(ok)195 898 y Fu(If)f(non-zero,)g(this)g(is)h(the)f
-(address)f(of)h(a)f(function)i(to)e(call)i(after)e(the)h(\014rst)f
-(prompt)g(has)h(b)q(een)195 953 y(prin)o(ted)e(and)f(just)g(b)q(efore)h
-Ft(readline)e Fu(starts)g(reading)h(input)i(c)o(haracters.)1773
-1075 y(V)l(ariable)-1861 b Fi(rl_hook_func_t)21 b(*)e
-Fh(rl)p 547 1075 V 22 w(ev)n(en)n(t)p 701 1075 V 22 w(ho)r(ok)195
-1130 y Fu(If)i(non-zero,)g(this)g(is)g(the)f(address)g(of)g(a)g
-(function)h(to)f(call)i(p)q(erio)q(dically)h(when)e(Readline)g(is)195
-1184 y(w)o(aiting)15 b(for)f(terminal)h(input.)21 b(By)14
-b(default,)h(this)g(will)i(b)q(e)e(called)h(at)e(most)g(ten)g(times)h
-(a)f(second)195 1239 y(if)i(there)f(is)h(no)f(k)o(eyb)q(oard)g(input.)
-1773 1361 y(V)l(ariable)-1861 b Fi(rl_getc_func_t)21
-b(*)e Fh(rl)p 547 1361 V 22 w(getc)p 671 1361 V 21 w(function)195
-1416 y Fu(If)c(non-zero,)h(Readline)g(will)h(call)f(indirectly)i
-(through)d(this)g(p)q(oin)o(ter)h(to)f(get)f(a)h(c)o(haracter)g(from)
-195 1471 y(the)k(input)i(stream.)31 b(By)19 b(default,)h(it)g(is)g(set)
-f(to)f Ft(rl_getc)p Fu(,)h(the)g(default)h(Readline)h(c)o(haracter)195
-1525 y(input)16 b(function)g(\(see)f(Section)h(2.4.8)e([Character)g
-(Input],)h(page)g(34\).)1773 1647 y(V)l(ariable)-1861
-b Fi(rl_voidfunc_t)21 b(*)e Fh(rl)p 521 1647 V 21 w(redispla)n(y)p
-765 1647 V 22 w(function)195 1702 y Fu(If)f(non-zero,)h(Readline)g
-(will)h(call)f(indirectly)h(through)e(this)g(p)q(oin)o(ter)h(to)e(up)q
-(date)i(the)f(displa)o(y)195 1757 y(with)c(the)f(curren)o(t)h(con)o
-(ten)o(ts)f(of)g(the)g(editing)i(bu\013er.)k(By)14 b(default,)g(it)g
-(is)g(set)f(to)g Ft(rl_redisplay)p Fu(,)195 1812 y(the)i(default)h
-(Readline)h(redispla)o(y)f(function)g(\(see)f(Section)h(2.4.6)e
-([Redispla)o(y],)h(page)g(33\).)1773 1933 y(V)l(ariable)-1861
-b Fi(rl_vintfunc_t)21 b(*)e Fh(rl)p 521 1933 V 21 w(prep)p
-656 1933 V 21 w(term)p 798 1933 V 19 w(function)195 1988
-y Fu(If)12 b(non-zero,)h(Readline)g(will)h(call)f(indirectly)h(through)
-e(this)g(p)q(oin)o(ter)h(to)e(initialize)k(the)e(terminal.)195
-2043 y(The)19 b(function)g(tak)o(es)f(a)g(single)i(argumen)o(t,)e(an)h
-Ft(int)f Fu(\015ag)g(that)g(sa)o(ys)g(whether)g(or)h(not)f(to)g(use)195
-2098 y(eigh)o(t-bit)g(c)o(haracters.)25 b(By)17 b(default,)h(this)f(is)
-h(set)e(to)h Ft(rl_prep_terminal)e Fu(\(see)i(Section)h(2.4.9)195
-2152 y([T)l(erminal)e(Managemen)o(t],)d(page)i(35\).)1773
-2274 y(V)l(ariable)-1861 b Fi(rl_voidfunc_t)21 b(*)e
-Fh(rl)p 521 2274 V 21 w(deprep)p 714 2274 V 21 w(term)p
-856 2274 V 19 w(function)195 2329 y Fu(If)g(non-zero,)g(Readline)g
-(will)h(call)g(indirectly)g(through)e(this)h(p)q(oin)o(ter)f(to)g
-(reset)g(the)h(terminal.)195 2384 y(This)f(function)g(should)h(undo)f
-(the)f(e\013ects)h(of)f Ft(rl_prep_term_function)p Fu(.)24
-b(By)17 b(default,)i(this)195 2439 y(is)d(set)f(to)f
-Ft(rl_deprep_terminal)f Fu(\(see)i(Section)h(2.4.9)e([T)l(erminal)i
-(Managemen)o(t],)d(page)i(35\).)1773 2560 y(V)l(ariable)-1861
-b Fi(Keymap)20 b Fh(rl)p 293 2560 V 21 w(executing)p
-551 2560 V 22 w(k)n(eymap)195 2615 y Fu(This)f(v)m(ariable)g(is)f(set)g
-(to)g(the)g(k)o(eymap)f(\(see)h(Section)h(2.4.2)e([Keymaps],)g(page)h
-(29\))f(in)i(whic)o(h)195 2670 y(the)c(curren)o(tly)h(executing)g
-(readline)h(function)f(w)o(as)f(found.)p eop
-%%Page: 27 29
-27 28 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(27)1773 149 y(V)l(ariable)-1861 b Fi(Keymap)20
-b Fh(rl)p 293 149 18 3 v 21 w(binding)p 501 149 V 22
-w(k)n(eymap)195 204 y Fu(This)f(v)m(ariable)g(is)f(set)g(to)g(the)g(k)o
-(eymap)f(\(see)h(Section)h(2.4.2)e([Keymaps],)g(page)h(29\))f(in)i
-(whic)o(h)195 259 y(the)c(last)g(k)o(ey)g(binding)j(o)q(ccurred.)1773
-383 y(V)l(ariable)-1861 b Fi(char)20 b(*)f Fh(rl)p 286
-383 V 21 w(executing)p 544 383 V 22 w(macro)195 438 y
-Fu(This)d(v)m(ariable)g(is)g(set)f(to)g(the)g(text)g(of)f(an)o(y)h
-(curren)o(tly-executing)i(macro.)1773 562 y(V)l(ariable)-1861
-b Fi(int)20 b Fh(rl)p 215 562 V 21 w(readline)p 434 562
-V 22 w(state)195 617 y Fu(A)d(v)m(ariable)i(with)e(bit)h(v)m(alues)h
-(that)d(encapsulate)i(the)g(curren)o(t)f(Readline)h(state.)25
-b(A)18 b(bit)f(is)h(set)195 671 y(with)h(the)g Ft(RL_SETSTATE)f
-Fu(macro,)h(and)g(unset)g(with)g(the)g Ft(RL_UNSETSTATE)e
-Fu(macro.)31 b(Use)19 b(the)195 726 y Ft(RL_ISSTATE)e
-Fu(macro)h(to)g(test)g(whether)h(a)f(particular)i(state)d(bit)j(is)f
-(set.)30 b(Curren)o(t)18 b(state)g(bits)195 781 y(include:)195
-864 y Ft(RL_STATE_NONE)435 919 y Fu(Readline)e(has)g(not)e(y)o(et)h(b)q
-(een)h(called,)h(nor)e(has)g(it)g(b)q(egun)h(to)f(in)o(tialize.)195
-1001 y Ft(RL_STATE_INITIALIZING)435 1056 y Fu(Readline)h(is)g
-(initializi)q(ng)i(its)d(in)o(ternal)h(data)f(structures.)195
-1138 y Ft(RL_STATE_INITIALIZED)435 1192 y Fu(Readline)h(has)g
-(completed)g(its)f(initialization.)195 1274 y Ft(RL_STATE_TERMPREPPED)
-435 1329 y Fu(Readline)h(has)e(mo)q(di\014ed)i(the)e(terminal)h(mo)q
-(des)g(to)e(do)i(its)f(o)o(wn)g(input)h(and)g(redis-)435
-1384 y(pla)o(y)l(.)195 1466 y Ft(RL_STATE_READCMD)435
-1521 y Fu(Readline)h(is)g(reading)g(a)f(command)g(from)f(the)i(k)o(eyb)
-q(oard.)195 1603 y Ft(RL_STATE_METANEXT)435 1658 y Fu(Readline)g(is)g
-(reading)g(more)f(input)h(after)e(reading)i(the)f(meta-pre\014x)h(c)o
-(haracter.)195 1740 y Ft(RL_STATE_DISPATCHING)435 1794
-y Fu(Readline)g(is)g(dispatc)o(hing)h(to)d(a)h(command.)195
-1876 y Ft(RL_STATE_MOREINPUT)435 1931 y Fu(Readline)h(is)g(reading)g
-(more)f(input)h(while)h(executing)f(an)f(editing)i(command.)195
-2013 y Ft(RL_STATE_ISEARCH)435 2068 y Fu(Readline)f(is)g(p)q(erforming)
-g(an)f(incremen)o(tal)h(history)f(searc)o(h.)195 2150
-y Ft(RL_STATE_NSEARCH)435 2205 y Fu(Readline)h(is)g(p)q(erforming)g(a)f
-(non-incremen)o(tal)h(history)g(searc)o(h.)195 2287 y
-Ft(RL_STATE_SEARCH)435 2342 y Fu(Readline)11 b(is)g(searc)o(hing)g(bac)
-o(kw)o(ard)e(or)h(forw)o(ard)f(through)h(the)g(history)g(for)f(a)h
-(string.)195 2424 y Ft(RL_STATE_NUMERICARG)435 2478 y
-Fu(Readline)16 b(is)g(reading)g(a)f(n)o(umeric)h(argumen)o(t.)195
-2560 y Ft(RL_STATE_MACROINPUT)435 2615 y Fu(Readline)d(is)g(curren)o
-(tly)g(getting)f(its)g(input)h(from)e(a)h(previously-de\014ned)j(k)o
-(eyb)q(oard)435 2670 y(macro.)p eop
-%%Page: 28 30
-28 29 bop 75 -58 a Fu(28)1299 b(GNU)15 b(Readline)h(Library)195
-149 y Ft(RL_STATE_MACRODEF)435 204 y Fu(Readline)g(is)g(curren)o(tly)g
-(reading)g(c)o(haracters)e(de\014ning)j(a)e(k)o(eyb)q(oard)g(macro.)195
-286 y Ft(RL_STATE_OVERWRITE)435 341 y Fu(Readline)h(is)g(in)g(o)o(v)o
-(erwrite)f(mo)q(de.)195 423 y Ft(RL_STATE_COMPLETING)435
-478 y Fu(Readline)h(is)g(p)q(erforming)g(w)o(ord)e(completion.)195
-560 y Ft(RL_STATE_SIGHANDLER)435 615 y Fu(Readline)i(is)g(curren)o(tly)
-g(executing)g(the)f(readline)i(signal)f(handler.)195
-697 y Ft(RL_STATE_UNDOING)435 752 y Fu(Readline)g(is)g(p)q(erforming)g
-(an)f(undo.)195 834 y Ft(RL_STATE_DONE)435 889 y Fu(Readline)g(has)f
-(read)g(a)f(k)o(ey)h(sequence)h(b)q(ound)g(to)e Ft(accept-line)f
-Fu(and)i(is)h(ab)q(out)f(to)435 944 y(return)h(the)g(line)i(to)e(the)g
-(caller.)1773 1068 y(V)l(ariable)-1861 b Fi(int)20 b
-Fh(rl)p 215 1068 18 3 v 21 w(explicit)p 417 1068 V 24
-w(arg)195 1123 y Fu(Set)f(to)g(a)g(non-zero)h(v)m(alue)h(if)e(an)h
-(explicit)h(n)o(umeric)g(argumen)o(t)d(w)o(as)h(sp)q(eci\014ed)i(b)o(y)
-f(the)f(user.)195 1178 y(Only)d(v)m(alid)h(in)f(a)f(bindable)i(command)
-f(function.)1773 1302 y(V)l(ariable)-1861 b Fi(int)20
-b Fh(rl)p 215 1302 V 21 w(n)n(umeric)p 437 1302 V 20
-w(arg)195 1357 y Fu(Set)j(to)f(the)g(v)m(alue)i(of)f(an)o(y)f(n)o
-(umeric)h(argumen)o(t)f(explicitly)k(sp)q(eci\014ed)f(b)o(y)d(the)h
-(user)g(b)q(efore)195 1412 y(executing)14 b(the)f(curren)o(t)g
-(Readline)h(function.)20 b(Only)14 b(v)m(alid)h(in)f(a)f(bindable)i
-(command)d(function.)1773 1536 y(V)l(ariable)-1861 b
-Fi(int)20 b Fh(rl)p 215 1536 V 21 w(editing)p 407 1536
-V 22 w(mo)r(de)195 1591 y Fu(Set)13 b(to)f(a)g(v)m(alue)i(denoting)f
-(Readline's)g(curren)o(t)g(editing)h(mo)q(de.)19 b(A)12
-b(v)m(alue)i(of)e Fk(1)k Fu(means)d(Readline)195 1646
-y(is)j(curren)o(tly)f(in)h(emacs)g(mo)q(de;)f Fk(0)j
-Fu(means)d(that)g(vi)h(mo)q(de)f(is)h(activ)o(e.)75 1781
-y Fs(2.4)33 b(Readline)23 b(Con)n(v)n(enience)g(F)-6
-b(unctions)75 1927 y Fj(2.4.1)30 b(Naming)20 b(a)g(F)-5
-b(unction)137 2025 y Fu(The)20 b(user)g(can)g(dynamically)i(c)o(hange)e
-(the)g(bindings)i(of)d(k)o(eys)h(while)h(using)g(Readline.)35
-b(This)20 b(is)75 2080 y(done)f(b)o(y)f(represen)o(ting)h(the)g
-(function)g(with)g(a)f(descriptiv)o(e)i(name.)29 b(The)19
-b(user)f(is)h(able)h(to)d(t)o(yp)q(e)i(the)75 2135 y(descriptiv)o(e)e
-(name)e(when)h(referring)f(to)g(the)g(function.)21 b(Th)o(us,)14
-b(in)i(an)f(init)i(\014le,)f(one)f(migh)o(t)g(\014nd)195
-2202 y Ft(Meta-Rubout:)46 b(backward-kill-word)137 2272
-y Fu(This)21 b(binds)g(the)f(k)o(eystrok)o(e)661 2270
-y Fn(h)p 673 2244 209 2 v 673 2272 a Fm(Meta-Rub)q(out)p
-673 2279 V 879 2270 a Fn(i)914 2272 y Fu(to)g(the)g(function)g
-Fl(descriptively)k Fu(named)c Ft(backward-)75 2326 y(kill-word)p
-Fu(.)29 b(Y)l(ou,)19 b(as)f(the)h(programmer,)f(should)i(bind)f(the)g
-(functions)h(y)o(ou)e(write)h(to)e(descriptiv)o(e)75
-2381 y(names)e(as)g(w)o(ell.)21 b(Readline)16 b(pro)o(vides)g(a)f
-(function)h(for)e(doing)i(that:)1762 2506 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 2506 18 3 v 21 w(add)p 328
-2506 V 20 w(defun)i Fg(\()p Ft(const)14 b(char)h(*name,)f
-(rl_command_func_t)283 2560 y(*function,)f(int)i(key)p
-Fg(\))195 2615 y Fu(Add)j Fk(name)i Fu(to)d(the)h(list)h(of)e(named)h
-(functions.)28 b(Mak)o(e)17 b Fk(function)h Fu(b)q(e)g(the)g(function)h
-(that)d(gets)195 2670 y(called.)21 b(If)16 b Fk(k)o(ey)j
-Fu(is)d(not)e(-1,)h(then)h(bind)g(it)g(to)e Fk(function)i
-Fu(using)g Ft(rl_bind_key\(\))p Fu(.)p eop
-%%Page: 29 31
-29 30 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(29)137 149 y(Using)16 b(this)f(function)h(alone)g(is)f
-(su\016cien)o(t)h(for)f(most)f(applications.)21 b(It)15
-b(is)h(the)f(recommended)h(w)o(a)o(y)75 204 y(to)d(add)h(a)f(few)g
-(functions)h(to)f(the)h(default)g(functions)g(that)f(Readline)i(has)e
-(built)i(in.)20 b(If)14 b(y)o(ou)f(need)h(to)f(do)75
-259 y(something)k(other)g(than)f(adding)i(a)e(function)i(to)e
-(Readline,)i(y)o(ou)f(ma)o(y)f(need)i(to)e(use)h(the)g(underlying)75
-314 y(functions)f(describ)q(ed)h(b)q(elo)o(w.)75 442
-y Fj(2.4.2)30 b(Selecting)20 b(a)h(Keymap)137 546 y Fu(Key)16
-b(bindings)i(tak)o(e)c(place)j(on)e(a)g Fk(k)o(eymap)p
-Fu(.)21 b(The)15 b(k)o(eymap)h(is)f(the)h(asso)q(ciation)g(b)q(et)o(w)o
-(een)g(the)f(k)o(eys)75 601 y(that)f(the)g(user)g(t)o(yp)q(es)g(and)h
-(the)f(functions)h(that)f(get)g(run.)19 b(Y)l(ou)c(can)f(mak)o(e)g(y)o
-(our)g(o)o(wn)f(k)o(eymaps,)h(cop)o(y)75 656 y(existing)i(k)o(eymaps,)f
-(and)g(tell)h(Readline)h(whic)o(h)f(k)o(eymap)f(to)f(use.)1762
-797 y(F)l(unction)-1861 b Fi(Keymap)20 b Fh(rl)p 293
-797 18 3 v 21 w(mak)n(e)p 445 797 V 20 w(bare)p 575 797
-V 20 w(k)n(eymap)j Fg(\()p Ft(void)p Fg(\))195 851 y
-Fu(Returns)12 b(a)f(new,)i(empt)o(y)f(k)o(eymap.)18 b(The)13
-b(space)f(for)f(the)i(k)o(eymap)e(is)i(allo)q(cated)g(with)f
-Ft(malloc\(\))p Fu(;)195 906 y(the)j(caller)i(should)f(free)f(it)h(b)o
-(y)f(calling)i Ft(rl_discard_keymap\(\))12 b Fu(when)k(done.)1762
-1047 y(F)l(unction)-1861 b Fi(Keymap)20 b Fh(rl)p 293
-1047 V 21 w(cop)n(y)p 428 1047 V 21 w(k)n(eymap)j Fg(\()p
-Ft(Keymap)14 b(map)p Fg(\))195 1102 y Fu(Return)h(a)g(new)g(k)o(eymap)g
-(whic)o(h)h(is)g(a)f(cop)o(y)g(of)g Fk(map)p Fu(.)1762
-1243 y(F)l(unction)-1861 b Fi(Keymap)20 b Fh(rl)p 293
-1243 V 21 w(mak)n(e)p 445 1243 V 20 w(k)n(eymap)j Fg(\()p
-Ft(void)p Fg(\))195 1298 y Fu(Return)16 b(a)f(new)i(k)o(eymap)e(with)i
-(the)f(prin)o(ting)h(c)o(haracters)e(b)q(ound)i(to)e(rl)p
-1457 1298 14 2 v 17 w(insert,)h(the)g(lo)o(w)o(ercase)195
-1353 y(Meta)11 b(c)o(haracters)f(b)q(ound)i(to)f(run)h(their)f(equiv)m
-(alen)o(ts,)j(and)d(the)h(Meta)e(digits)i(b)q(ound)g(to)f(pro)q(duce)
-195 1407 y(n)o(umeric)16 b(argumen)o(ts.)1762 1548 y(F)l(unction)-1861
-b Fi(void)20 b Fh(rl)p 241 1548 18 3 v 21 w(discard)p
-441 1548 V 21 w(k)n(eymap)i Fg(\()p Ft(Keymap)14 b(keymap)p
-Fg(\))195 1603 y Fu(F)l(ree)h(the)h(storage)d(asso)q(ciated)j(with)f
-Fk(k)o(eymap)p Fu(.)137 1711 y(Readline)24 b(has)f(sev)o(eral)g(in)o
-(ternal)g(k)o(eymaps.)42 b(These)23 b(functions)g(allo)o(w)g(y)o(ou)f
-(to)g(c)o(hange)h(whic)o(h)75 1766 y(k)o(eymap)15 b(is)h(activ)o(e.)
-1762 1907 y(F)l(unction)-1861 b Fi(Keymap)20 b Fh(rl)p
-293 1907 V 21 w(get)p 391 1907 V 21 w(k)n(eymap)i Fg(\()p
-Ft(void)p Fg(\))195 1962 y Fu(Returns)15 b(the)g(curren)o(tly)h(activ)o
-(e)f(k)o(eymap.)1762 2103 y(F)l(unction)-1861 b Fi(void)20
-b Fh(rl)p 241 2103 V 21 w(set)p 333 2103 V 21 w(k)n(eymap)i
-Fg(\()p Ft(Keymap)14 b(keymap)p Fg(\))195 2158 y Fu(Mak)o(es)g
-Fk(k)o(eymap)j Fu(the)e(curren)o(tly)h(activ)o(e)f(k)o(eymap.)1762
-2298 y(F)l(unction)-1861 b Fi(Keymap)20 b Fh(rl)p 293
-2298 V 21 w(get)p 391 2298 V 21 w(k)n(eymap)p 605 2298
-V 20 w(b)n(y)p 685 2298 V 21 w(name)i Fg(\()p Ft(const)14
-b(char)g(*name)p Fg(\))195 2353 y Fu(Return)i(the)h(k)o(eymap)f(matc)o
-(hing)h Fk(name)p Fu(.)24 b Fk(name)19 b Fu(is)e(one)g(whic)o(h)g(w)o
-(ould)g(b)q(e)h(supplied)h(in)e(a)f Ft(set)195 2408 y(keymap)e
-Fu(inputrc)j(line)f(\(see)g(Section)g(1.3)e([Readline)i(Init)g(File],)g
-(page)f(4\).)1762 2549 y(F)l(unction)-1861 b Fi(char)20
-b(*)f Fh(rl)p 286 2549 V 21 w(get)p 384 2549 V 21 w(k)n(eymap)p
-598 2549 V 20 w(name)i Fg(\()p Ft(Keymap)14 b(keymap)p
-Fg(\))195 2604 y Fu(Return)i(the)h(name)g(matc)o(hing)f
-Fk(k)o(eymap)p Fu(.)24 b Fk(name)19 b Fu(is)e(one)g(whic)o(h)g(w)o
-(ould)g(b)q(e)h(supplied)h(in)e(a)f Ft(set)195 2659 y(keymap)e
-Fu(inputrc)j(line)f(\(see)g(Section)g(1.3)e([Readline)i(Init)g(File],)g
-(page)f(4\).)p eop
-%%Page: 30 32
-30 31 bop 75 -58 a Fu(30)1299 b(GNU)15 b(Readline)h(Library)75
-149 y Fj(2.4.3)30 b(Binding)20 b(Keys)137 244 y Fu(Key)13
-b(sequences)g(are)e(asso)q(ciate)h(with)h(functions)f(through)g(the)g
-(k)o(eymap.)19 b(Readline)13 b(has)f(sev)o(eral)g(in-)75
-299 y(ternal)j(k)o(eymaps:)k Ft(emacs_standard_keymap)p
-Fu(,)11 b Ft(emacs_meta_keymap)p Fu(,)h Ft(emacs_ctlx_keymap)p
-Fu(,)g Ft(vi_)75 354 y(movement_keymap)p Fu(,)20 b(and)i
-Ft(vi_insertion_keymap)p Fu(.)35 b Ft(emacs_standard_keymap)18
-b Fu(is)k(the)f(default,)75 408 y(and)15 b(the)h(examples)g(in)g(this)f
-(man)o(ual)h(assume)f(that.)137 474 y(Since)h Ft(readline\(\))c
-Fu(installs)j(a)f(set)f(of)h(default)g(k)o(ey)g(bindings)h(the)f
-(\014rst)g(time)g(it)g(is)g(called,)i(there)d(is)75 529
-y(alw)o(a)o(ys)j(the)g(danger)g(that)g(a)g(custom)g(binding)i
-(installed)g(b)q(efore)f(the)f(\014rst)g(call)i(to)d
-Ft(readline\(\))g Fu(will)75 584 y(b)q(e)f(o)o(v)o(erridden.)19
-b(An)13 b(alternate)g(mec)o(hanism)h(is)f(to)f(install)i(custom)f(k)o
-(ey)g(bindings)h(in)g(an)f(initialization)75 638 y(function)19
-b(assigned)h(to)d(the)i Ft(rl_startup_hook)e Fu(v)m(ariable)j(\(see)e
-(Section)h(2.3)f([Readline)i(V)l(ariables],)75 693 y(page)15
-b(24\).)137 759 y(These)h(functions)g(manage)e(k)o(ey)i(bindings.)1762
-868 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 868
-18 3 v 21 w(bind)p 347 868 V 21 w(k)n(ey)k Fg(\()p Ft(int)14
-b(key,)h(rl_command_func_t)d(*function)p Fg(\))195 922
-y Fu(Binds)18 b Fk(k)o(ey)i Fu(to)c Fk(function)h Fu(in)h(the)e(curren)
-o(tly)h(activ)o(e)g(k)o(eymap.)23 b(Returns)16 b(non-zero)h(in)g(the)g
-(case)195 977 y(of)e(an)g(in)o(v)m(alid)i Fk(k)o(ey)p
-Fu(.)1762 1086 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p
-215 1086 V 21 w(bind)p 347 1086 V 21 w(k)n(ey)p 452 1086
-V 21 w(in)p 520 1086 V 22 w(map)h Fg(\()p Ft(int)14 b(key,)h
-(rl_command_func_t)e(*function,)283 1141 y(Keymap)h(map)p
-Fg(\))195 1196 y Fu(Bind)i Fk(k)o(ey)j Fu(to)c Fk(function)h
-Fu(in)g Fk(map)p Fu(.)k(Returns)14 b(non-zero)i(in)g(the)f(case)g(of)g
-(an)g(in)o(v)m(alid)j Fk(k)o(ey)p Fu(.)1762 1304 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 1304 V 21 w(un)n(bind)p 409
-1304 V 21 w(k)n(ey)k Fg(\()p Ft(int)14 b(key)p Fg(\))195
-1359 y Fu(Bind)19 b Fk(k)o(ey)j Fu(to)c(the)g(n)o(ull)i(function)f(in)g
-(the)f(curren)o(tly)g(activ)o(e)h(k)o(eymap.)28 b(Returns)18
-b(non-zero)g(in)195 1414 y(case)d(of)g(error.)1762 1523
-y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 1523 V
-21 w(un)n(bind)p 409 1523 V 21 w(k)n(ey)p 514 1523 V
-21 w(in)p 582 1523 V 22 w(map)h Fg(\()p Ft(int)14 b(key,)h(Keymap)f
-(map)p Fg(\))195 1577 y Fu(Bind)i Fk(k)o(ey)j Fu(to)c(the)g(n)o(ull)i
-(function)f(in)g Fk(map)p Fu(.)k(Returns)14 b(non-zero)i(in)g(case)f
-(of)g(error.)1762 1686 y(F)l(unction)-1861 b Fi(int)20
-b Fh(rl)p 215 1686 V 21 w(un)n(bind)p 409 1686 V 21 w(function)p
-635 1686 V 21 w(in)p 703 1686 V 21 w(map)h Fg(\()p Ft
-(rl_command_func_t)13 b(*function,)283 1741 y(Keymap)h(map)p
-Fg(\))195 1796 y Fu(Un)o(bind)j(all)f(k)o(eys)f(that)f(execute)i
-Fk(function)g Fu(in)g Fk(map)p Fu(.)1762 1905 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 1905 V 21 w(un)n(bind)p 409
-1905 V 21 w(command)p 674 1905 V 17 w(in)p 738 1905 V
-22 w(map)h Fg(\()p Ft(const)14 b(char)h(*command,)f(Keymap)283
-1959 y(map)p Fg(\))195 2014 y Fu(Un)o(bind)j(all)f(k)o(eys)f(that)f
-(are)h(b)q(ound)h(to)f Fk(command)i Fu(in)f Fk(map)p
-Fu(.)1762 2123 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p
-215 2123 V 21 w(set)p 307 2123 V 20 w(k)n(ey)k Fg(\()p
-Ft(const)14 b(char)h(*keyseq,)f(rl_command_func_t)f(*function,)283
-2178 y(Keymap)h(map)p Fg(\))195 2232 y Fu(Bind)g(the)e(k)o(ey)h
-(sequence)h(represen)o(ted)f(b)o(y)f(the)h(string)f Fk(k)o(eyseq)i
-Fu(to)e(the)g(function)i Fk(function)p Fu(.)19 b(This)195
-2287 y(mak)o(es)13 b(new)g(k)o(eymaps)g(as)f(necessary)l(.)20
-b(The)13 b(initial)j(k)o(eymap)c(in)i(whic)o(h)g(to)f(do)g(bindings)i
-(is)f Fk(map)p Fu(.)1762 2396 y(F)l(unction)-1861 b Fi(int)20
-b Fh(rl)p 215 2396 V 21 w(generic)p 413 2396 V 21 w(bind)j
-Fg(\()p Ft(int)15 b(type,)f(const)h(char)f(*keyseq,)g(char)h(*data,)283
-2451 y(Keymap)f(map)p Fg(\))195 2506 y Fu(Bind)h(the)e(k)o(ey)h
-(sequence)h(represen)o(ted)e(b)o(y)h(the)g(string)f Fk(k)o(eyseq)i
-Fu(to)d(the)i(arbitrary)f(p)q(oin)o(ter)h Fk(data)p Fu(.)195
-2560 y Fk(t)o(yp)q(e)j Fu(sa)o(ys)c(what)h(kind)h(of)f(data)g(is)g(p)q
-(oin)o(ted)i(to)d(b)o(y)h Fk(data)p Fu(;)g(this)h(can)f(b)q(e)h(a)f
-(function)h(\()p Ft(ISFUNC)p Fu(\),)d(a)195 2615 y(macro)i(\()p
-Ft(ISMACR)p Fu(\),)f(or)h(a)h(k)o(eymap)f(\()p Ft(ISKMAP)p
-Fu(\).)k(This)e(mak)o(es)e(new)h(k)o(eymaps)f(as)h(necessary)l(.)20
-b(The)195 2670 y(initial)d(k)o(eymap)e(in)h(whic)o(h)g(to)f(do)g
-(bindings)i(is)f Fk(map)p Fu(.)p eop
-%%Page: 31 33
-31 32 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(31)1762 149 y(F)l(unction)-1861 b Fi(int)20
-b Fh(rl)p 215 149 18 3 v 21 w(parse)p 369 149 V 19 w(and)p
-480 149 V 21 w(bind)j Fg(\()p Ft(char)14 b(*line)p Fg(\))195
-204 y Fu(P)o(arse)g Fk(line)19 b Fu(as)14 b(if)h(it)g(had)g(b)q(een)h
-(read)f(from)f(the)g Ft(inputrc)g Fu(\014le)i(and)f(p)q(erform)f(an)o
-(y)h(k)o(ey)f(bindings)195 259 y(and)h(v)m(ariable)i(assignmen)o(ts)e
-(found)h(\(see)f(Section)h(1.3)e([Readline)i(Init)g(File],)g(page)f
-(4\).)1762 359 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p
-215 359 V 21 w(read)p 346 359 V 20 w(init)p 450 359 V
-22 w(\014le)k Fg(\()p Ft(const)14 b(char)h(*filename)p
-Fg(\))195 414 y Fu(Read)g(k)o(eybindings)j(and)e(v)m(ariable)h
-(assignmen)o(ts)f(from)f Fk(\014lename)k Fu(\(see)d(Section)g(1.3)f
-([Readline)195 469 y(Init)h(File],)g(page)f(4\).)75 571
-y Fj(2.4.4)30 b(Asso)r(ciating)20 b(F)-5 b(unction)20
-b(Names)h(and)f(Bindings)137 664 y Fu(These)11 b(functions)h(allo)o(w)e
-(y)o(ou)h(to)f(\014nd)h(out)f(what)g(k)o(eys)h(in)o(v)o(ok)o(e)f(named)
-h(functions)h(and)e(the)h(functions)75 718 y(in)o(v)o(ok)o(ed)j(b)o(y)g
-(a)f(particular)h(k)o(ey)g(sequence.)21 b(Y)l(ou)14 b(ma)o(y)f(also)g
-(asso)q(ciate)h(a)g(new)g(function)g(name)g(with)g(an)75
-773 y(arbitrary)h(function.)1762 873 y(F)l(unction)-1861
-b Fi(rl_command_func_t)22 b(*)d Fh(rl)p 626 873 V 21
-w(named)p 814 873 V 19 w(function)k Fg(\()p Ft(const)14
-b(char)h(*name)p Fg(\))195 928 y Fu(Return)g(the)g(function)h(with)g
-(name)f Fk(name)p Fu(.)1762 1028 y(F)l(unction)-1861
-b Fi(rl_command_func_t)22 b(*)d Fh(rl)p 626 1028 V 21
-w(function)p 852 1028 V 21 w(of)p 920 1028 V 20 w(k)n(eyseq)24
-b Fg(\()p Ft(const)14 b(char)283 1083 y(*keyseq,)g(Keymap)g(map,)h(int)
-f(*type)p Fg(\))195 1138 y Fu(Return)i(the)g(function)h(in)o(v)o(ok)o
-(ed)g(b)o(y)f Fk(k)o(eyseq)h Fu(in)g(k)o(eymap)f Fk(map)p
-Fu(.)23 b(If)17 b Fk(map)g Fu(is)g Ft(NULL)p Fu(,)f(the)g(curren)o(t)
-195 1193 y(k)o(eymap)i(is)h(used.)31 b(If)18 b Fk(t)o(yp)q(e)j
-Fu(is)e(not)g Ft(NULL)p Fu(,)f(the)g(t)o(yp)q(e)h(of)f(the)h(ob)s(ject)
-f(is)h(returned)g(in)g(the)f Ft(int)195 1247 y Fu(v)m(ariable)f(it)e(p)
-q(oin)o(ts)h(to)e(\(one)h(of)g Ft(ISFUNC)p Fu(,)f Ft(ISKMAP)p
-Fu(,)g(or)h Ft(ISMACR)p Fu(\).)1762 1347 y(F)l(unction)-1861
-b Fi(char)20 b(**)f Fh(rl)p 312 1347 V 21 w(in)n(v)n(oking)p
-541 1347 V 23 w(k)n(eyseqs)k Fg(\()p Ft(rl_command_func_t)13
-b(*function)p Fg(\))195 1402 y Fu(Return)i(an)h(arra)o(y)e(of)h
-(strings)h(represen)o(ting)g(the)g(k)o(ey)f(sequences)i(used)f(to)f(in)
-o(v)o(ok)o(e)h Fk(function)g Fu(in)195 1457 y(the)f(curren)o(t)g(k)o
-(eymap.)1762 1557 y(F)l(unction)-1861 b Fi(char)20 b(**)f
-Fh(rl)p 312 1557 V 21 w(in)n(v)n(oking)p 541 1557 V 23
-w(k)n(eyseqs)p 750 1557 V 21 w(in)p 818 1557 V 22 w(map)i
-Fg(\()p Ft(rl_command_func_t)283 1612 y(*function,)13
-b(Keymap)i(map)p Fg(\))195 1667 y Fu(Return)g(an)h(arra)o(y)e(of)h
-(strings)h(represen)o(ting)g(the)g(k)o(ey)f(sequences)i(used)f(to)f(in)
-o(v)o(ok)o(e)h Fk(function)g Fu(in)195 1722 y(the)f(k)o(eymap)g
-Fk(map)p Fu(.)1762 1822 y(F)l(unction)-1861 b Fi(void)20
-b Fh(rl)p 241 1822 V 21 w(function)p 467 1822 V 21 w(dump)r(er)g
-Fg(\()p Ft(int)15 b(readable)p Fg(\))195 1876 y Fu(Prin)o(t)g(the)f
-(readline)j(function)e(names)g(and)f(the)h(k)o(ey)g(sequences)g(curren)
-o(tly)g(b)q(ound)h(to)e(them)h(to)195 1931 y Ft(rl_outstream)p
-Fu(.)j(If)c Fk(readable)j Fu(is)d(non-zero,)g(the)g(list)g(is)h
-(formatted)d(in)j(suc)o(h)f(a)f(w)o(a)o(y)g(that)g(it)h(can)195
-1986 y(b)q(e)i(made)f(part)g(of)f(an)i Ft(inputrc)e Fu(\014le)i(and)f
-(re-read.)1762 2086 y(F)l(unction)-1861 b Fi(void)20
-b Fh(rl)p 241 2086 V 21 w(list)p 337 2086 V 22 w(funmap)p
-550 2086 V 18 w(names)h Fg(\()p Ft(void)p Fg(\))195 2141
-y Fu(Prin)o(t)15 b(the)g(names)h(of)e(all)j(bindable)g(Readline)f
-(functions)g(to)f Ft(rl_outstream)p Fu(.)1762 2241 y(F)l(unction)-1861
-b Fi(const)20 b(char)g(**)f Fh(rl)p 462 2241 V 21 w(funmap)p
-674 2241 V 18 w(names)i Fg(\()p Ft(void)p Fg(\))195 2296
-y Fu(Return)13 b(a)f(NULL)i(terminated)g(arra)o(y)d(of)i(kno)o(wn)g
-(function)g(names.)20 b(The)13 b(arra)o(y)f(is)h(sorted.)19
-b(The)195 2351 y(arra)o(y)11 b(itself)j(is)f(allo)q(cated,)h(but)f(not)
-f(the)h(strings)f(inside.)21 b(Y)l(ou)13 b(should)h Ft(free\(\))d
-Fu(the)i(arra)o(y)e(when)195 2405 y(y)o(ou)k(are)g(done,)g(but)g(not)g
-(the)g(p)q(oin)o(ters.)1762 2506 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 2506 V 21 w(add)p 328 2506
-V 20 w(funmap)p 539 2506 V 18 w(en)n(try)j Fg(\()p Ft(const)14
-b(char)h(*name,)f(rl_command_func_t)283 2560 y(*function)p
-Fg(\))195 2615 y Fu(Add)j Fk(name)i Fu(to)d(the)g(list)h(of)f(bindable)
-j(Readline)f(command)e(names,)g(and)h(mak)o(e)f Fk(function)h
-Fu(the)195 2670 y(function)f(to)f(b)q(e)g(called)i(when)f
-Fk(name)i Fu(is)d(in)o(v)o(ok)o(ed.)p eop
-%%Page: 32 34
-32 33 bop 75 -58 a Fu(32)1299 b(GNU)15 b(Readline)h(Library)75
-149 y Fj(2.4.5)30 b(Allo)n(wing)21 b(Undoing)137 251
-y Fu(Supp)q(orting)14 b(the)g(undo)f(command)g(is)h(a)f(painless)h
-(thing,)g(and)f(mak)o(es)g(y)o(our)f(functions)i(m)o(uc)o(h)f(more)75
-306 y(useful.)21 b(It)15 b(is)h(certainly)g(easy)f(to)g(try)f
-(something)i(if)f(y)o(ou)g(kno)o(w)g(y)o(ou)g(can)g(undo)h(it.)137
-378 y(If)21 b(y)o(our)f(function)h(simply)h(inserts)f(text)e(once,)j
-(or)e(deletes)h(text)f(once,)i(and)f(uses)f Ft(rl_insert_)75
-433 y(text\(\))13 b Fu(or)h Ft(rl_delete_text\(\))d Fu(to)j(do)f(it,)h
-(then)h(undoing)g(is)f(already)g(done)h(for)e(y)o(ou)h(automatically)l
-(.)137 506 y(If)d(y)o(ou)f(do)g(m)o(ultiple)i(insertions)f(or)f(m)o
-(ultiple)i(deletions,)g(or)e(an)o(y)g(com)o(bination)h(of)f(these)g(op)
-q(erations,)75 560 y(y)o(ou)19 b(should)h(group)e(them)h(together)g(in)
-o(to)g(one)g(op)q(eration.)31 b(This)20 b(is)f(done)h(with)f
-Ft(rl_begin_undo_)75 615 y(group\(\))14 b Fu(and)i Ft
-(rl_end_undo_group\(\))p Fu(.)137 688 y(The)g(t)o(yp)q(es)f(of)g(ev)o
-(en)o(ts)g(that)f(can)h(b)q(e)h(undone)g(are:)195 757
-y Ft(enum)23 b(undo_code)g({)h(UNDO_DELETE,)e(UNDO_INSERT,)g
-(UNDO_BEGIN,)g(UNDO_END)h(};)137 830 y Fu(Notice)16 b(that)e
-Ft(UNDO_DELETE)g Fu(means)h(to)g(insert)g(some)g(text,)f(and)i
-Ft(UNDO_INSERT)d Fu(means)i(to)g(delete)75 885 y(some)e(text.)19
-b(That)14 b(is,)g(the)g(undo)g(co)q(de)g(tells)h(what)e(to)h(undo,)g
-(not)f(ho)o(w)g(to)g(undo)i(it.)k Ft(UNDO_BEGIN)13 b
-Fu(and)75 939 y Ft(UNDO_END)h Fu(are)h(tags)f(added)i(b)o(y)f
-Ft(rl_begin_undo_group\(\))d Fu(and)k Ft(rl_end_undo_group\(\))p
-Fu(.)1762 1072 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p
-215 1072 18 3 v 21 w(b)r(egin)p 372 1072 V 20 w(undo)p
-517 1072 V 20 w(group)h Fg(\()p Ft(void)p Fg(\))195 1127
-y Fu(Begins)16 b(sa)o(ving)g(undo)g(information)f(in)i(a)e(group)g
-(construct.)20 b(The)c(undo)g(information)g(usually)195
-1182 y(comes)21 b(from)f(calls)i(to)e Ft(rl_insert_text\(\))e
-Fu(and)j Ft(rl_delete_text\(\))p Fu(,)f(but)h(could)g(b)q(e)h(the)195
-1237 y(result)16 b(of)e(calls)j(to)d Ft(rl_add_undo\(\))p
-Fu(.)1762 1370 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p
-215 1370 V 21 w(end)p 326 1370 V 20 w(undo)p 471 1370
-V 20 w(group)h Fg(\()p Ft(void)p Fg(\))195 1424 y Fu(Closes)15
-b(the)f(curren)o(t)h(undo)g(group)f(started)g(with)g
-Ft(rl_begin_undo_group)f(\(\))p Fu(.)19 b(There)c(should)195
-1479 y(b)q(e)h(one)f(call)i(to)d Ft(rl_end_undo_group\(\))f
-Fu(for)h(eac)o(h)h(call)i(to)d Ft(rl_begin_undo_group\(\))p
-Fu(.)1762 1612 y(F)l(unction)-1861 b Fi(void)20 b Fh(rl)p
-241 1612 V 21 w(add)p 354 1612 V 20 w(undo)i Fg(\()p
-Ft(enum)14 b(undo_code)g(what,)g(int)h(start,)g(int)f(end,)h(char)283
-1667 y(*text)p Fg(\))195 1722 y Fu(Remem)o(b)q(er)i(ho)o(w)f(to)h(undo)
-g(an)g(ev)o(en)o(t)g(\(according)g(to)g Fk(what)q Fu(\).)24
-b(The)17 b(a\013ected)g(text)f(runs)i(from)195 1776 y
-Fk(start)d Fu(to)g Fk(end)p Fu(,)g(and)g(encompasses)h
-Fk(text)p Fu(.)1762 1909 y(F)l(unction)-1861 b Fi(void)20
-b Fh(rl)p 241 1909 V 21 w(free)p 356 1909 V 20 w(undo)p
-501 1909 V 20 w(list)k Fg(\()p Ft(void)p Fg(\))195 1964
-y Fu(F)l(ree)15 b(the)h(existing)g(undo)f(list.)1762
-2097 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 2097
-V 21 w(do)p 297 2097 V 20 w(undo)i Fg(\()p Ft(void)p
-Fg(\))195 2152 y Fu(Undo)12 b(the)f(\014rst)g(thing)h(on)g(the)f(undo)h
-(list.)19 b(Returns)11 b Ft(0)h Fu(if)g(there)f(w)o(as)g(nothing)h(to)e
-(undo,)j(non-zero)195 2206 y(if)j(something)f(w)o(as)f(undone.)137
-2309 y(Finally)l(,)j(if)f(y)o(ou)f(neither)i(insert)f(nor)f(delete)i
-(text,)e(but)g(directly)i(mo)q(dify)f(the)g(existing)g(text)g(\(e.g.,)
-75 2364 y(c)o(hange)j(its)h(case\),)g(call)g Ft(rl_modifying\(\))e
-Fu(once,)i(just)f(b)q(efore)h(y)o(ou)f(mo)q(dify)h(the)f(text.)32
-b(Y)l(ou)20 b(m)o(ust)75 2419 y(supply)c(the)g(indices)h(of)e(the)g
-(text)g(range)g(that)f(y)o(ou)h(are)g(going)g(to)g(mo)q(dify)l(.)1762
-2552 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 2552
-V 21 w(mo)r(difying)h Fg(\()p Ft(int)15 b(start,)f(int)h(end)p
-Fg(\))195 2606 y Fu(T)l(ell)22 b(Readline)f(to)e(sa)o(v)o(e)h(the)g
-(text)g(b)q(et)o(w)o(een)g Fk(start)g Fu(and)g Fk(end)j
-Fu(as)c(a)h(single)h(undo)g(unit.)35 b(It)20 b(is)195
-2661 y(assumed)15 b(that)g(y)o(ou)g(will)i(subsequen)o(tly)f(mo)q(dify)
-g(that)e(text.)p eop
-%%Page: 33 35
-33 34 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(33)75 149 y Fj(2.4.6)30 b(Redispla)n(y)1762
-302 y Fu(F)l(unction)-1861 b Fi(void)20 b Fh(rl)p 241
-302 18 3 v 21 w(redispla)n(y)k Fg(\()p Ft(void)p Fg(\))195
-356 y Fu(Change)19 b(what's)f(displa)o(y)o(ed)i(on)f(the)g(screen)g(to)
-f(re\015ect)i(the)f(curren)o(t)f(con)o(ten)o(ts)h(of)f
-Ft(rl_line_)195 411 y(buffer)p Fu(.)1762 534 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 534 V 21 w(forced)p 390 534
-V 20 w(up)r(date)p 584 534 V 20 w(displa)n(y)k Fg(\()p
-Ft(void)p Fg(\))195 589 y Fu(F)l(orce)c(the)g(line)h(to)e(b)q(e)i(up)q
-(dated)f(and)g(redispla)o(y)o(ed,)i(whether)e(or)g(not)f(Readline)i
-(thinks)g(the)195 644 y(screen)16 b(displa)o(y)g(is)g(correct.)1762
-767 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 767
-V 21 w(on)p 297 767 V 20 w(new)p 416 767 V 21 w(line)k
-Fg(\()p Ft(void)p Fg(\))195 822 y Fu(T)l(ell)16 b(the)f(up)q(date)h
-(functions)g(that)e(w)o(e)g(ha)o(v)o(e)h(mo)o(v)o(ed)f(on)o(to)g(a)h
-(new)g(\(empt)o(y\))f(line,)i(usually)h(after)195 877
-y(ouputting)f(a)e(newline.)1762 1000 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 1000 V 21 w(on)p 297 1000 V
-20 w(new)p 416 1000 V 21 w(line)p 525 1000 V 22 w(with)p
-657 1000 V 22 w(prompt)h Fg(\()p Ft(void)p Fg(\))195
-1055 y Fu(T)l(ell)14 b(the)e(up)q(date)h(functions)g(that)f(w)o(e)g(ha)
-o(v)o(e)g(mo)o(v)o(ed)f(on)o(to)h(a)g(new)g(line,)i(with)f
-Fk(rl)p 1556 1055 14 2 v 17 w(prompt)g Fu(already)195
-1109 y(displa)o(y)o(ed.)21 b(This)15 b(could)g(b)q(e)g(used)g(b)o(y)f
-(applications)i(that)e(w)o(an)o(t)f(to)h(output)g(the)g(prompt)g
-(string)195 1164 y(themselv)o(es,)g(but)g(still)h(need)g(Readline)g(to)
-e(kno)o(w)g(the)h(prompt)f(string)h(length)g(for)f(redispla)o(y)l(.)21
-b(It)195 1219 y(should)16 b(b)q(e)g(used)g(after)e(setting)i
-Fk(rl)p 795 1219 V 16 w(already)p 956 1219 V 17 w(prompted)p
-Fu(.)1762 1342 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p
-215 1342 18 3 v 21 w(reset)p 357 1342 V 20 w(line)p 465
-1342 V 23 w(state)j Fg(\()p Ft(void)p Fg(\))195 1397
-y Fu(Reset)17 b(the)g(displa)o(y)i(state)d(to)h(a)g(clean)h(state)f
-(and)g(redispla)o(y)i(the)e(curren)o(t)g(line)i(starting)e(on)g(a)195
-1452 y(new)e(line.)1762 1575 y(F)l(unction)-1861 b Fi(int)20
-b Fh(rl)p 215 1575 V 21 w(crlf)j Fg(\()p Ft(void)p Fg(\))195
-1630 y Fu(Mo)o(v)o(e)14 b(the)h(cursor)g(to)g(the)g(start)f(of)h(the)g
-(next)g(screen)h(line.)1762 1753 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 1753 V 21 w(sho)n(w)p 359 1753
-V 20 w(c)n(har)j Fg(\()p Ft(int)14 b(c)p Fg(\))195 1807
-y Fu(Displa)o(y)j(c)o(haracter)e Fk(c)20 b Fu(on)c Ft(rl_outstream)p
-Fu(.)21 b(If)c(Readline)g(has)f(not)g(b)q(een)i(set)e(to)f(displa)o(y)j
-(meta)195 1862 y(c)o(haracters)12 b(directly)l(,)j(this)e(will)i(con)o
-(v)o(ert)d(meta)h(c)o(haracters)f(to)g(a)h(meta-pre\014xed)g(k)o(ey)g
-(sequence.)195 1917 y(This)j(is)f(in)o(tended)i(for)e(use)g(b)o(y)g
-(applications)i(whic)o(h)f(wish)g(to)f(do)g(their)g(o)o(wn)g(redispla)o
-(y)l(.)1762 2040 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p
-215 2040 V 21 w(message)g Fg(\()p Ft(const)14 b(char)h(*,)g(...)p
-Fg(\))195 2095 y Fu(The)c(argumen)o(ts)e(are)h(a)g(format)f(string)h
-(as)g(w)o(ould)h(b)q(e)g(supplied)i(to)c Ft(printf)p
-Fu(,)h(p)q(ossibly)i(con)o(taining)195 2150 y(con)o(v)o(ersion)22
-b(sp)q(eci\014cations)i(suc)o(h)f(as)e(`)p Ft(\045d)p
-Fu(',)i(and)f(an)o(y)g(additional)h(argumen)o(ts)e(necessary)i(to)195
-2205 y(satisfy)d(the)h(con)o(v)o(ersion)g(sp)q(eci\014cations.)38
-b(The)21 b(resulting)h(string)e(is)i(displa)o(y)o(ed)g(in)f(the)g
-Fk(ec)o(ho)195 2259 y(area)p Fu(.)e(The)d(ec)o(ho)f(area)g(is)g(also)g
-(used)h(to)f(displa)o(y)h(n)o(umeric)g(argumen)o(ts)f(and)g(searc)o(h)g
-(strings.)1762 2382 y(F)l(unction)-1861 b Fi(int)20 b
-Fh(rl)p 215 2382 V 21 w(clear)p 354 2382 V 21 w(message)h
-Fg(\()p Ft(void)p Fg(\))195 2437 y Fu(Clear)15 b(the)h(message)e(in)i
-(the)g(ec)o(ho)f(area.)1762 2560 y(F)l(unction)-1861
-b Fi(void)20 b Fh(rl)p 241 2560 V 21 w(sa)n(v)n(e)p 365
-2560 V 21 w(prompt)h Fg(\()p Ft(void)p Fg(\))195 2615
-y Fu(Sa)o(v)o(e)g(the)h(lo)q(cal)g(Readline)h(prompt)e(displa)o(y)i
-(state)e(in)h(preparation)f(for)g(displa)o(ying)j(a)d(new)195
-2670 y(message)15 b(in)h(the)f(message)g(area)f(with)i
-Ft(rl_message\(\))p Fu(.)p eop
-%%Page: 34 36
-34 35 bop 75 -58 a Fu(34)1299 b(GNU)15 b(Readline)h(Library)1762
-149 y(F)l(unction)-1861 b Fi(void)20 b Fh(rl)p 241 149
-18 3 v 21 w(restore)p 436 149 V 20 w(prompt)g Fg(\()p
-Ft(void)p Fg(\))195 204 y Fu(Restore)g(the)i(lo)q(cal)g(Readline)h
-(prompt)e(displa)o(y)h(state)f(sa)o(v)o(ed)g(b)o(y)g(the)g(most)g
-(recen)o(t)g(call)i(to)195 259 y Ft(rl_save_prompt)p
-Fu(.)1762 369 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p
-215 369 V 21 w(expand)p 416 369 V 20 w(prompt)h Fg(\()p
-Ft(char)14 b(*prompt)p Fg(\))195 423 y Fu(Expand)22 b(an)o(y)f(sp)q
-(ecial)i(c)o(haracter)e(sequences)h(in)g Fk(prompt)g
-Fu(and)g(set)f(up)h(the)f(lo)q(cal)i(Readline)195 478
-y(prompt)17 b(redispla)o(y)i(v)m(ariables.)30 b(This)18
-b(function)h(is)f(called)i(b)o(y)e Ft(readline\(\))p
-Fu(.)26 b(It)18 b(ma)o(y)f(also)h(b)q(e)195 533 y(called)12
-b(to)e(expand)h(the)g(primary)g(prompt)f(if)h(the)f Ft
-(rl_on_new_line_with_prompt\(\))d Fu(function)195 588
-y(or)12 b Ft(rl_already_prompted)e Fu(v)m(ariable)k(is)g(used.)19
-b(It)13 b(returns)g(the)f(n)o(um)o(b)q(er)i(of)e(visible)j(c)o
-(haracters)195 643 y(on)g(the)g(last)h(line)g(of)f(the)g(\(p)q(ossibly)
-i(m)o(ulti-line\))g(prompt.)1762 752 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 752 V 21 w(set)p 307 752 V
-20 w(prompt)h Fg(\()p Ft(const)14 b(char)h(*prompt)p
-Fg(\))195 807 y Fu(Mak)o(e)e(Readline)i(use)e Fk(prompt)h
-Fu(for)f(subsequen)o(t)h(redispla)o(y)l(.)21 b(This)14
-b(calls)g Ft(rl_expand_prompt\(\))195 862 y Fu(to)h(expand)g(the)h
-(prompt)e(and)i(sets)f Ft(rl_prompt)f Fu(to)g(the)h(result.)75
-970 y Fj(2.4.7)30 b(Mo)r(difying)20 b(T)-5 b(ext)1762
-1108 y Fu(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215
-1108 V 21 w(insert)p 378 1108 V 21 w(text)k Fg(\()p Ft(const)14
-b(char)g(*text)p Fg(\))195 1163 y Fu(Insert)i Fk(text)g
-Fu(in)o(to)g(the)g(line)h(at)f(the)g(curren)o(t)f(cursor)h(p)q
-(osition.)22 b(Returns)16 b(the)g(n)o(um)o(b)q(er)g(of)f(c)o(har-)195
-1218 y(acters)g(inserted.)1762 1328 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 1328 V 21 w(delete)p 383 1328
-V 22 w(text)k Fg(\()p Ft(int)14 b(start,)h(int)f(end)p
-Fg(\))195 1382 y Fu(Delete)19 b(the)g(text)g(b)q(et)o(w)o(een)g
-Fk(start)g Fu(and)g Fk(end)i Fu(in)f(the)f(curren)o(t)f(line.)33
-b(Returns)18 b(the)h(n)o(um)o(b)q(er)g(of)195 1437 y(c)o(haracters)14
-b(deleted.)1762 1547 y(F)l(unction)-1861 b Fi(char)20
-b(*)f Fh(rl)p 286 1547 V 21 w(cop)n(y)p 421 1547 V 21
-w(text)24 b Fg(\()p Ft(int)14 b(start,)h(int)g(end)p
-Fg(\))195 1602 y Fu(Return)g(a)g(cop)o(y)g(of)g(the)g(text)f(b)q(et)o
-(w)o(een)i Fk(start)f Fu(and)g Fk(end)j Fu(in)e(the)f(curren)o(t)g
-(line.)1762 1711 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p
-215 1711 V 21 w(kill)p 311 1711 V 23 w(text)k Fg(\()p
-Ft(int)14 b(start,)h(int)g(end)p Fg(\))195 1766 y Fu(Cop)o(y)i(the)g
-(text)f(b)q(et)o(w)o(een)i Fk(start)f Fu(and)g Fk(end)i
-Fu(in)f(the)f(curren)o(t)g(line)i(to)e(the)g(kill)i(ring,)e(app)q
-(ending)195 1821 y(or)f(prep)q(ending)k(to)c(the)h(last)g(kill)i(if)e
-(the)g(last)g(command)g(w)o(as)f(a)h(kill)i(command.)25
-b(The)17 b(text)f(is)195 1876 y(deleted.)26 b(If)17 b
-Fk(start)g Fu(is)g(less)g(than)g Fk(end)p Fu(,)g(the)g(text)g(is)g(app)
-q(ended,)h(otherwise)f(prep)q(ended.)27 b(If)17 b(the)195
-1930 y(last)e(command)g(w)o(as)g(not)f(a)h(kill,)i(a)e(new)g(kill)i
-(ring)f(slot)f(is)h(used.)1762 2040 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 2040 V 21 w(push)p 355 2040
-V 19 w(macro)p 529 2040 V 19 w(input)k Fg(\()p Ft(char)14
-b(*macro)p Fg(\))195 2095 y Fu(Cause)g Fk(macro)i Fu(to)d(b)q(e)i
-(inserted)g(in)o(to)f(the)g(line,)i(as)e(if)g(it)h(had)f(b)q(een)h(in)o
-(v)o(ok)o(ed)g(b)o(y)f(a)g(k)o(ey)g(b)q(ound)h(to)195
-2150 y(a)g(macro.)k(Not)c(esp)q(ecially)i(useful;)f(use)g
-Ft(rl_insert_text\(\))d Fu(instead.)75 2257 y Fj(2.4.8)30
-b(Character)21 b(Input)1762 2396 y Fu(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 2396 V 21 w(read)p 346 2396
-V 20 w(k)n(ey)k Fg(\()p Ft(void)p Fg(\))195 2451 y Fu(Return)14
-b(the)h(next)g(c)o(haracter)f(a)o(v)m(ailable)i(from)e(Readline's)i
-(curren)o(t)f(input)g(stream.)k(This)d(han-)195 2506
-y(dles)f(input)g(inserted)f(in)o(to)g(the)g(input)h(stream)e(via)h
-Fk(rl)p 1117 2506 14 2 v 17 w(p)q(ending)p 1290 2506
-V 18 w(input)i Fu(\(see)e(Section)h(2.3)e([Read-)195
-2560 y(line)21 b(V)l(ariables],)g(page)f(24\))f(and)h
-Ft(rl_stuff_char\(\))p Fu(,)e(macros,)h(and)h(c)o(haracters)f(read)h
-(from)195 2615 y(the)d(k)o(eyb)q(oard.)25 b(While)19
-b(w)o(aiting)e(for)f(input,)j(this)e(function)h(will)h(call)f(an)o(y)e
-(function)i(assigned)195 2670 y(to)d(the)g Ft(rl_event_hook)e
-Fu(v)m(ariable.)p eop
-%%Page: 35 37
-35 36 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(35)1762 149 y(F)l(unction)-1861 b Fi(int)20
-b Fh(rl)p 215 149 18 3 v 21 w(getc)j Fg(\()p Ft(FILE)14
-b(*stream)p Fg(\))195 204 y Fu(Return)c(the)h(next)g(c)o(haracter)f(a)o
-(v)m(ailable)i(from)e Fk(stream)p Fu(,)g(whic)o(h)i(is)f(assumed)f(to)g
-(b)q(e)i(the)e(k)o(eyb)q(oard.)1762 342 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 342 V 21 w(stu\013)p 346 342
-V 20 w(c)n(har)j Fg(\()p Ft(int)15 b(c)p Fg(\))195 397
-y Fu(Insert)i Fk(c)i Fu(in)o(to)d(the)h(Readline)h(input)f(stream.)23
-b(It)16 b(will)i(b)q(e)f Ft(")p Fu(read)p Ft(")g Fu(b)q(efore)f
-(Readline)i(attempts)195 452 y(to)13 b(read)g(c)o(haracters)g(from)f
-(the)i(terminal)g(with)g Ft(rl_read_key\(\))p Fu(.)j(Up)d(to)f(512)f(c)
-o(haracters)h(ma)o(y)195 507 y(b)q(e)j(pushed)g(bac)o(k.)k
-Ft(rl_stuff_char)14 b Fu(returns)h(1)g(if)h(the)f(c)o(haracter)g(w)o
-(as)f(successfully)j(inserted;)195 562 y(0)e(otherwise.)1762
-700 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 700
-V 21 w(execute)p 423 700 V 22 w(next)j Fg(\()p Ft(int)15
-b(c)p Fg(\))195 754 y Fu(Mak)o(e)i Fk(c)k Fu(b)q(e)d(the)g(next)g
-(command)g(to)f(b)q(e)i(executed)f(when)h Ft(rl_read_key\(\))d
-Fu(is)i(called.)29 b(This)195 809 y(sets)15 b Fk(rl)p
-317 809 14 2 v 17 w(p)q(ending)p 490 809 V 18 w(input)p
-Fu(.)1762 947 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p
-215 947 18 3 v 21 w(clear)p 354 947 V 21 w(p)r(ending)p
-575 947 V 21 w(input)j Fg(\()p Ft(void)p Fg(\))195 1002
-y Fu(Unset)f Fk(rl)p 365 1002 14 2 v 16 w(p)q(ending)p
-537 1002 V 19 w(input)p Fu(,)h(e\013ectiv)o(ely)g(negating)e(the)h
-(e\013ect)f(of)g(an)o(y)h(previous)g(call)h(to)d Ft(rl_)195
-1057 y(execute_next\(\))p Fu(.)29 b(This)19 b(w)o(orks)f(only)h(if)h
-(the)e(p)q(ending)j(input)f(has)f(not)f(already)h(b)q(een)h(read)195
-1112 y(with)c Ft(rl_read_key\(\))p Fu(.)1762 1250 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 1250 18 3 v 21 w(set)p 307
-1250 V 20 w(k)n(eyb)r(oard)p 558 1250 V 21 w(input)p
-712 1250 V 21 w(timeout)i Fg(\()p Ft(int)15 b(u)p Fg(\))195
-1305 y Fu(While)21 b(w)o(aiting)g(for)e(k)o(eyb)q(oard)h(input)h(in)g
-Ft(rl_read_key\(\))p Fu(,)e(Readline)i(will)h(w)o(ait)e(for)f
-Fk(u)h Fu(mi-)195 1360 y(croseconds)h(for)e(input)j(b)q(efore)f
-(calling)h(an)o(y)e(function)h(assigned)g(to)f Ft(rl_event_hook)p
-Fu(.)34 b(The)195 1414 y(default)16 b(w)o(aiting)f(p)q(erio)q(d)i(is)e
-(one-ten)o(th)h(of)e(a)h(second.)21 b(Returns)14 b(the)i(old)f(timeout)
-h(v)m(alue.)75 1540 y Fj(2.4.9)30 b(T)-5 b(erminal)20
-b(Managemen)n(t)1762 1708 y Fu(F)l(unction)-1861 b Fi(void)20
-b Fh(rl)p 241 1708 V 21 w(prep)p 376 1708 V 20 w(terminal)j
-Fg(\()p Ft(int)14 b(meta_flag)p Fg(\))195 1762 y Fu(Mo)q(dify)22
-b(the)f(terminal)h(settings)f(for)g(Readline's)h(use,)h(so)d
-Ft(readline\(\))g Fu(can)i(read)f(a)g(single)195 1817
-y(c)o(haracter)15 b(at)g(a)g(time)i(from)d(the)i(k)o(eyb)q(oard.)22
-b(The)16 b Fk(meta)p 1192 1817 14 2 v 15 w(\015ag)k Fu(argumen)o(t)15
-b(should)h(b)q(e)h(non-zero)195 1872 y(if)f(Readline)g(should)g(read)f
-(eigh)o(t-bit)i(input.)1762 2010 y(F)l(unction)-1861
-b Fi(void)20 b Fh(rl)p 241 2010 18 3 v 21 w(deprep)p
-434 2010 V 20 w(terminal)j Fg(\()p Ft(void)p Fg(\))195
-2065 y Fu(Undo)16 b(the)g(e\013ects)f(of)h Ft(rl_prep_terminal\(\))p
-Fu(,)d(lea)o(ving)k(the)e(terminal)i(in)g(the)e(state)g(in)i(whic)o(h)
-195 2120 y(it)e(w)o(as)g(b)q(efore)g(the)h(most)e(recen)o(t)h(call)i
-(to)d Ft(rl_prep_terminal\(\))p Fu(.)1762 2258 y(F)l(unction)-1861
-b Fi(void)20 b Fh(rl)p 241 2258 V 21 w(tt)n(y)p 334 2258
-V 22 w(set)p 427 2258 V 20 w(default)p 620 2258 V 21
-w(bindings)k Fg(\()p Ft(Keymap)14 b(kmap)p Fg(\))195
-2313 y Fu(Read)k(the)h(op)q(erating)f(system's)g(terminal)h(editing)h
-(c)o(haracters)e(\(as)f(w)o(ould)i(b)q(e)g(displa)o(y)o(ed)h(b)o(y)195
-2367 y Ft(stty)p Fu(\))14 b(to)h(their)h(Readline)g(equiv)m(alen)o(ts.)
-22 b(The)15 b(bindings)i(are)e(p)q(erformed)g(in)h Fk(kmap)p
-Fu(.)1762 2506 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p
-215 2506 V 21 w(reset)p 357 2506 V 20 w(terminal)j Fg(\()p
-Ft(const)15 b(char)f(*terminal_name)p Fg(\))195 2560
-y Fu(Reinitialize)h(Readline's)e(idea)g(of)f(the)g(terminal)h(settings)
-g(using)g Fk(terminal)p 1491 2560 14 2 v 17 w(name)h
-Fu(as)e(the)h(termi-)195 2615 y(nal)k(t)o(yp)q(e)f(\(e.g.,)f
-Ft(vt100)p Fu(\).)21 b(If)c Fk(terminal)p 878 2615 V
-17 w(name)i Fu(is)d Ft(NULL)p Fu(,)g(the)g(v)m(alue)h(of)f(the)g
-Ft(TERM)g Fu(en)o(vironmen)o(t)195 2670 y(v)m(ariable)h(is)e(used.)p
-eop
-%%Page: 36 38
-36 37 bop 75 -58 a Fu(36)1299 b(GNU)15 b(Readline)h(Library)75
-149 y Fj(2.4.10)29 b(Utilit)n(y)22 b(F)-5 b(unctions)1762
-287 y Fu(F)l(unction)-1861 b Fi(void)20 b Fh(rl)p 241
-287 18 3 v 21 w(replace)p 438 287 V 22 w(line)k Fg(\()p
-Ft(const)14 b(char)h(*text,)f(int)h(clear_undo)p Fg(\))195
-342 y Fu(Replace)20 b(the)g(con)o(ten)o(ts)f(of)g Ft(rl_line_buffer)f
-Fu(with)i Fk(text)p Fu(.)33 b(The)20 b(p)q(oin)o(t)g(and)g(mark)f(are)h
-(pre-)195 397 y(serv)o(ed,)13 b(if)h(p)q(ossible.)21
-b(If)13 b Fk(clear)p 712 397 14 2 v 17 w(undo)j Fu(is)d(non-zero,)h
-(the)f(undo)g(list)h(asso)q(ciated)g(with)f(the)g(curren)o(t)195
-452 y(line)k(is)f(cleared.)1762 561 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 561 18 3 v 21 w(extend)p 404
-561 V 21 w(line)p 513 561 V 22 w(bu\013er)j Fg(\()p Ft(int)15
-b(len)p Fg(\))195 616 y Fu(Ensure)g(that)g Ft(rl_line_buffer)e
-Fu(has)i(enough)g(space)h(to)e(hold)i Fk(len)g Fu(c)o(haracters,)e(p)q
-(ossibly)i(real-)195 670 y(lo)q(cating)g(it)f(if)h(necessary)l(.)1762
-779 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 779
-V 21 w(initiali)q(z)q(e)26 b Fg(\()p Ft(void)p Fg(\))195
-834 y Fu(Initialize)21 b(or)d(re-initialize)k(Readline's)d(in)o(ternal)
-h(state.)28 b(It's)18 b(not)g(strictly)h(necessary)g(to)f(call)195
-889 y(this;)d Ft(readline\(\))f Fu(calls)i(it)g(b)q(efore)f(reading)h
-(an)o(y)f(input.)1762 998 y(F)l(unction)-1861 b Fi(int)20
-b Fh(rl)p 215 998 V 21 w(ding)j Fg(\()p Ft(void)p Fg(\))195
-1053 y Fu(Ring)15 b(the)g(terminal)h(b)q(ell,)h(ob)q(eying)f(the)g
-(setting)f(of)g Ft(bell-style)p Fu(.)1762 1162 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 1162 V 21 w(alphab)r(etic)k
-Fg(\()p Ft(int)14 b(c)p Fg(\))195 1217 y Fu(Return)h(1)g(if)g
-Fk(c)j Fu(is)e(an)f(alphab)q(etic)i(c)o(haracter.)1762
-1325 y(F)l(unction)-1861 b Fi(void)20 b Fh(rl)p 241 1325
-V 21 w(displa)n(y)p 435 1325 V 22 w(matc)n(h)p 611 1325
-V 20 w(list)25 b Fg(\()p Ft(char)14 b(**matches,)g(int)g(len,)h(int)g
-(max)p Fg(\))195 1380 y Fu(A)i(con)o(v)o(enience)i(function)f(for)f
-(displa)o(ying)i(a)e(list)h(of)e(strings)h(in)i(columnar)e(format)f(on)
-h(Read-)195 1435 y(line's)h(output)f(stream.)23 b Ft(matches)16
-b Fu(is)h(the)g(list)h(of)e(strings,)h(in)g(argv)f(format,)g(suc)o(h)h
-(as)f(a)h(list)g(of)195 1490 y(completion)c(matc)o(hes.)19
-b Ft(len)11 b Fu(is)i(the)f(n)o(um)o(b)q(er)h(of)e(strings)h(in)h
-Ft(matches)p Fu(,)f(and)g Ft(max)g Fu(is)g(the)h(length)f(of)195
-1545 y(the)h(longest)g(string)g(in)h Ft(matches)p Fu(.)19
-b(This)13 b(function)h(uses)f(the)h(setting)f(of)f Ft
-(print-completions-)195 1599 y(horizontally)k Fu(to)i(select)h(ho)o(w)e
-(the)i(matc)o(hes)e(are)h(displa)o(y)o(ed)h(\(see)g(Section)g(1.3.1)d
-([Readline)195 1654 y(Init)g(File)g(Syn)o(tax],)e(page)h(4\).)137
-1742 y(The)i(follo)o(wing)f(are)g(implemen)o(ted)i(as)e(macros,)f
-(de\014ned)i(in)g Ft(chardefs.h)p Fu(.)k(Applications)d(should)75
-1796 y(refrain)d(from)g(using)h(them.)1762 1905 y(F)l(unction)-1861
-b Fi(int)p 176 1905 V 40 w Fh(rl)p 235 1905 V 21 w(upp)r(ercase)p
-506 1905 V 20 w(p)23 b Fg(\()p Ft(int)14 b(c)p Fg(\))195
-1960 y Fu(Return)h(1)g(if)g Fk(c)j Fu(is)e(an)f(upp)q(ercase)i(alphab)q
-(etic)f(c)o(haracter.)1762 2069 y(F)l(unction)-1861 b
-Fi(int)p 176 2069 V 40 w Fh(rl)p 235 2069 V 21 w(lo)n(w)n(ercase)p
-489 2069 V 23 w(p)22 b Fg(\()p Ft(int)15 b(c)p Fg(\))195
-2124 y Fu(Return)g(1)g(if)g Fk(c)j Fu(is)e(a)f(lo)o(w)o(ercase)g
-(alphab)q(etic)i(c)o(haracter.)1762 2233 y(F)l(unction)-1861
-b Fi(int)p 176 2233 V 40 w Fh(rl)p 235 2233 V 21 w(digit)p
-369 2233 V 22 w(p)23 b Fg(\()p Ft(int)14 b(c)p Fg(\))195
-2288 y Fu(Return)h(1)g(if)g Fk(c)j Fu(is)e(a)f(n)o(umeric)h(c)o
-(haracter.)1762 2397 y(F)l(unction)-1861 b Fi(int)p 176
-2397 V 40 w Fh(rl)p 235 2397 V 21 w(to)p 307 2397 V 21
-w(upp)r(er)21 b Fg(\()p Ft(int)15 b(c)p Fg(\))195 2451
-y Fu(If)d Fk(c)j Fu(is)d(a)g(lo)o(w)o(ercase)f(alphab)q(etic)j(c)o
-(haracter,)d(return)h(the)g(corresp)q(onding)h(upp)q(ercase)g(c)o
-(haracter.)1762 2560 y(F)l(unction)-1861 b Fi(int)p 176
-2560 V 40 w Fh(rl)p 235 2560 V 21 w(to)p 307 2560 V 21
-w(lo)n(w)n(er)24 b Fg(\()p Ft(int)15 b(c)p Fg(\))195
-2615 y Fu(If)g Fk(c)i Fu(is)e(an)f(upp)q(ercase)i(alphab)q(etic)g(c)o
-(haracter,)e(return)g(the)h(corresp)q(onding)g(lo)o(w)o(ercase)f(c)o
-(harac-)195 2670 y(ter.)p eop
-%%Page: 37 39
-37 38 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(37)1762 149 y(F)l(unction)-1861 b Fi(int)p
-176 149 18 3 v 40 w Fh(rl)p 235 149 V 21 w(digit)p 369
-149 V 22 w(v)m(alue)24 b Fg(\()p Ft(int)15 b(c)p Fg(\))195
-204 y Fu(If)g Fk(c)k Fu(is)c(a)g(n)o(um)o(b)q(er,)g(return)g(the)h(v)m
-(alue)g(it)g(represen)o(ts.)75 325 y Fj(2.4.11)29 b(Miscellaneous)22
-b(F)-5 b(unctions)1762 484 y Fu(F)l(unction)-1861 b Fi(int)20
-b Fh(rl)p 215 484 V 21 w(macro)p 391 484 V 19 w(bind)j
-Fg(\()p Ft(const)14 b(char)g(*keyseq,)h(const)f(char)h(*macro,)283
-539 y(Keymap)f(map)p Fg(\))195 593 y Fu(Bind)f(the)f(k)o(ey)f(sequence)
-i Fk(k)o(eyseq)g Fu(to)e(in)o(v)o(ok)o(e)g(the)h(macro)f
-Fk(macro)p Fu(.)18 b(The)12 b(binding)h(is)f(p)q(erformed)g(in)195
-648 y Fk(map)p Fu(.)19 b(When)14 b Fk(k)o(eyseq)h Fu(is)f(in)o(v)o(ok)o
-(ed,)g(the)g Fk(macro)i Fu(will)f(b)q(e)f(inserted)h(in)o(to)f(the)g
-(line.)21 b(This)14 b(function)195 703 y(is)i(deprecated;)f(use)h
-Ft(rl_generic_bind\(\))d Fu(instead.)1762 833 y(F)l(unction)-1861
-b Fi(void)20 b Fh(rl)p 241 833 V 21 w(macro)p 417 833
-V 19 w(dump)r(er)g Fg(\()p Ft(int)15 b(readable)p Fg(\))195
-888 y Fu(Prin)o(t)f(the)f(k)o(ey)h(sequences)g(b)q(ound)h(to)e(macros)g
-(and)g(their)h(v)m(alues,)h(using)f(the)g(curren)o(t)g(k)o(eymap,)195
-943 y(to)h Ft(rl_outstream)p Fu(.)k(If)d Fk(readable)j
-Fu(is)d(non-zero,)g(the)g(list)g(is)g(formatted)f(in)h(suc)o(h)g(a)f(w)
-o(a)o(y)g(that)g(it)195 997 y(can)g(b)q(e)h(made)f(part)g(of)g(an)g
-Ft(inputrc)f Fu(\014le)i(and)g(re-read.)1762 1127 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 1127 V 21 w(v)m(ariable)p 431
-1127 V 22 w(bind)j Fg(\()p Ft(const)14 b(char)g(*variable,)g(const)h
-(char)f(*value)p Fg(\))195 1182 y Fu(Mak)o(e)22 b(the)g(Readline)i(v)m
-(ariable)g Fk(v)m(ariable)j Fu(ha)o(v)o(e)22 b Fk(v)m(alue)p
-Fu(.)43 b(This)23 b(b)q(eha)o(v)o(es)g(as)f(if)h(the)f(readline)195
-1237 y(command)12 b(`)p Ft(set)j Fk(v)m(ariable)k(v)m(alue)s
-Fu(')12 b(had)h(b)q(een)g(executed)h(in)f(an)f Ft(inputrc)g
-Fu(\014le)h(\(see)f(Section)i(1.3.1)195 1292 y([Readline)i(Init)g(File)
-h(Syn)o(tax],)d(page)h(4\).)1762 1422 y(F)l(unction)-1861
-b Fi(void)20 b Fh(rl)p 241 1422 V 21 w(v)m(ariable)p
-457 1422 V 22 w(dump)r(er)g Fg(\()p Ft(int)14 b(readable)p
-Fg(\))195 1476 y Fu(Prin)o(t)g(the)h(readline)h(v)m(ariable)f(names)g
-(and)f(their)h(curren)o(t)f(v)m(alues)i(to)d Ft(rl_outstream)p
-Fu(.)18 b(If)d Fk(read-)195 1531 y(able)20 b Fu(is)e(non-zero,)f(the)g
-(list)h(is)g(formatted)e(in)h(suc)o(h)h(a)e(w)o(a)o(y)g(that)h(it)g
-(can)g(b)q(e)h(made)f(part)f(of)h(an)195 1586 y Ft(inputrc)d
-Fu(\014le)i(and)g(re-read.)1762 1716 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 1716 V 21 w(set)p 307 1716
-V 20 w(paren)p 469 1716 V 20 w(blink)p 613 1716 V 23
-w(timeout)i Fg(\()p Ft(int)15 b(u)p Fg(\))195 1771 y
-Fu(Set)e(the)f(time)h(in)o(terv)m(al)h(\(in)f(microseconds\))g(that)f
-(Readline)i(w)o(aits)e(when)h(sho)o(wing)f(a)h(balancing)195
-1826 y(c)o(haracter)h(when)i Ft(blink-matching-paren)d
-Fu(has)i(b)q(een)h(enabled.)1762 1956 y(F)l(unction)-1861
-b Fi(char)20 b(*)f Fh(rl)p 286 1956 V 21 w(get)p 384
-1956 V 21 w(termcap)j Fg(\()p Ft(const)14 b(char)g(*cap)p
-Fg(\))195 2010 y Fu(Retriev)o(e)f(the)h(string)f(v)m(alue)i(of)e(the)h
-(termcap)f(capabilit)o(y)i Fk(cap)p Fu(.)k(Readline)c(fetc)o(hes)f(the)
-f(termcap)195 2065 y(en)o(try)j(for)h(the)f(curren)o(t)h(terminal)h
-(name)e(and)h(uses)g(those)g(capabilities)i(to)d(mo)o(v)o(e)g(around)h
-(the)195 2120 y(screen)11 b(line)h(and)f(p)q(erform)f(other)g
-(terminal-sp)q(eci\014c)k(op)q(erations,)d(lik)o(e)h(erasing)e(a)h
-(line.)20 b(Readline)195 2175 y(do)q(es)e(not)f(use)h(all)g(of)f(a)g
-(terminal's)h(capabilities,)i(and)e(this)g(function)g(will)h(return)f
-(v)m(alues)h(for)195 2230 y(only)d(those)f(capabilities)i(Readline)g
-(uses.)75 2350 y Fj(2.4.12)29 b(Alternate)21 b(In)n(terface)137
-2451 y Fu(An)i(alternate)f(in)o(terface)h(is)g(a)o(v)m(ailable)h(to)d
-(plain)j Ft(readline\(\))p Fu(.)40 b(Some)22 b(applications)i(need)g
-(to)75 2506 y(in)o(terlea)o(v)o(e)15 b(k)o(eyb)q(oard)f(I/O)h(with)g
-(\014le,)h(device,)f(or)f(windo)o(w)h(system)f(I/O,)h(t)o(ypically)h(b)
-o(y)e(using)h(a)g(main)75 2560 y(lo)q(op)f(to)g Ft(select\(\))e
-Fu(on)i(v)m(arious)g(\014le)h(descriptors.)20 b(T)l(o)14
-b(accomo)q(date)f(this)h(need,)h(readline)g(can)f(also)g(b)q(e)75
-2615 y(in)o(v)o(ok)o(ed)i(as)f(a)g(`callbac)o(k')h(function)h(from)d
-(an)i(ev)o(en)o(t)f(lo)q(op.)22 b(There)16 b(are)f(functions)h(a)o(v)m
-(ailable)i(to)c(mak)o(e)75 2670 y(this)i(easy)l(.)p eop
-%%Page: 38 40
-38 39 bop 75 -58 a Fu(38)1299 b(GNU)15 b(Readline)h(Library)1762
-149 y(F)l(unction)-1861 b Fi(void)20 b Fh(rl)p 241 149
-18 3 v 21 w(callbac)n(k)p 458 149 V 23 w(handler)p 670
-149 V 21 w(install)25 b Fg(\()p Ft(const)14 b(char)h(*prompt,)283
-204 y(rl_vcpfunc_t)e(*lhandler)p Fg(\))195 259 y Fu(Set)f(up)h(the)g
-(terminal)g(for)f(readline)i(I/O)f(and)f(displa)o(y)i(the)e(initial)j
-(expanded)e(v)m(alue)h(of)e Fk(prompt)p Fu(.)195 314
-y(Sa)o(v)o(e)j(the)h(v)m(alue)h(of)f Fk(lhandler)21 b
-Fu(to)15 b(use)h(as)f(a)h(function)h(to)e(call)i(when)f(a)g(complete)g
-(line)i(of)d(input)195 369 y(has)g(b)q(een)h(en)o(tered.)21
-b(The)15 b(function)h(tak)o(es)e(the)i(text)e(of)h(the)g(line)i(as)e
-(an)g(argumen)o(t.)1762 480 y(F)l(unction)-1861 b Fi(void)20
-b Fh(rl)p 241 480 V 21 w(callbac)n(k)p 458 480 V 23 w(read)p
-591 480 V 20 w(c)n(har)j Fg(\()p Ft(void)p Fg(\))195
-535 y Fu(Whenev)o(er)17 b(an)g(application)h(determines)g(that)e(k)o
-(eyb)q(oard)h(input)h(is)f(a)o(v)m(ailable,)i(it)e(should)h(call)195
-590 y Ft(rl_callback_read_char\(\))p Fu(,)8 b(whic)o(h)k(will)g(read)f
-(the)g(next)g(c)o(haracter)f(from)g(the)h(curren)o(t)g(input)195
-645 y(source.)38 b(If)21 b(that)g(c)o(haracter)f(completes)i(the)f
-(line,)j Ft(rl_callback_read_char)18 b Fu(will)23 b(in)o(v)o(ok)o(e)195
-699 y(the)18 b Fk(lhandler)k Fu(function)d(sa)o(v)o(ed)e(b)o(y)h
-Ft(rl_callback_handler_insta)o(ll)d Fu(to)i(pro)q(cess)h(the)g(line.)
-195 754 y(Before)13 b(calling)i(the)f Fk(lhandler)k Fu(function,)c(the)
-g(terminal)g(settings)f(are)g(reset)g(to)g(the)g(v)m(alues)i(they)195
-809 y(had)g(b)q(efore)g(calling)i Ft(rl_callback_handler_insta)o(ll)p
-Fu(.)g(If)e(the)g Fk(lhandler)20 b Fu(function)15 b(returns,)195
-864 y(the)d(terminal)i(settings)e(are)g(mo)q(di\014ed)i(for)d
-(Readline's)i(use)g(again.)19 b Ft(EOF)12 b Fu(is)h(indicated)h(b)o(y)e
-(calling)195 919 y Fk(lhandler)20 b Fu(with)c(a)f Ft(NULL)f
-Fu(line.)1762 1030 y(F)l(unction)-1861 b Fi(void)20 b
-Fh(rl)p 241 1030 V 21 w(callbac)n(k)p 458 1030 V 23 w(handler)p
-670 1030 V 21 w(remo)n(v)n(e)i Fg(\()p Ft(void)p Fg(\))195
-1085 y Fu(Restore)c(the)g(terminal)i(to)d(its)i(initial)i(state)d(and)g
-(remo)o(v)o(e)g(the)h(line)h(handler.)31 b(This)19 b(ma)o(y)f(b)q(e)195
-1140 y(called)i(from)d(within)j(a)d(callbac)o(k)j(as)d(w)o(ell)i(as)f
-(indep)q(enden)o(tly)m(.)31 b(If)19 b(the)f Fk(lhandler)23
-b Fu(installed)d(b)o(y)195 1195 y Ft(rl_callback_handler_instal)o(l)d
-Fu(do)q(es)i(not)g(exit)h(the)g(program,)e(either)i(this)g(function)g
-(or)195 1249 y(the)c(function)g(referred)g(to)f(b)o(y)h(the)g(v)m(alue)
-h(of)e Ft(rl_deprep_term_function)d Fu(should)17 b(b)q(e)f(called)195
-1304 y(b)q(efore)f(the)h(program)e(exits)h(to)g(reset)g(the)g(terminal)
-h(settings.)75 1413 y Fj(2.4.13)29 b(A)21 b(Readline)g(Example)137
-1508 y Fu(Here)f(is)g(a)f(function)i(whic)o(h)f(c)o(hanges)f(lo)o(w)o
-(ercase)h(c)o(haracters)e(to)h(their)h(upp)q(ercase)h(equiv)m(alen)o
-(ts,)75 1563 y(and)e(upp)q(ercase)i(c)o(haracters)d(to)h(lo)o(w)o
-(ercase.)31 b(If)20 b(this)f(function)h(w)o(as)f(b)q(ound)h(to)f(`)p
-Ft(M-c)p Fu(',)f(then)i(t)o(yping)75 1618 y(`)p Ft(M-c)p
-Fu(')12 b(w)o(ould)h(c)o(hange)h(the)f(case)g(of)g(the)g(c)o(haracter)g
-(under)g(p)q(oin)o(t.)20 b(T)o(yping)14 b(`)p Ft(M-1)g(0)h(M-c)p
-Fu(')d(w)o(ould)i(c)o(hange)75 1673 y(the)h(case)g(of)g(the)h(follo)o
-(wing)f(10)g(c)o(haracters,)f(lea)o(ving)i(the)f(cursor)g(on)g(the)h
-(last)f(c)o(haracter)f(c)o(hanged.)195 1736 y Ft(/*)24
-b(Invert)f(the)g(case)g(of)h(the)f(COUNT)h(following)e(characters.)h
-(*/)195 1788 y(int)195 1840 y(invert_case_line)f(\(count,)h(key\))314
-1892 y(int)h(count,)f(key;)195 1944 y({)243 1995 y(register)f(int)i
-(start,)f(end,)g(i;)243 2099 y(start)g(=)h(rl_point;)243
-2203 y(if)f(\(rl_point)g(>=)h(rl_end\))290 2255 y(return)f(\(0\);)243
-2359 y(if)g(\(count)g(<)h(0\))290 2411 y({)338 2462 y(direction)f(=)h
-(-1;)338 2514 y(count)f(=)h(-count;)290 2566 y(})243
-2618 y(else)290 2670 y(direction)f(=)h(1;)p eop
-%%Page: 39 41
-39 40 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(39)243 201 y Ft(/*)23 b(Find)h(the)f(end)h(of)f(the)h
-(range)f(to)g(modify.)g(*/)243 253 y(end)g(=)h(start)f(+)h(\(count)f(*)
-h(direction\);)243 357 y(/*)f(Force)g(it)h(to)g(be)f(within)g(range.)g
-(*/)243 409 y(if)g(\(end)h(>)f(rl_end\))290 461 y(end)h(=)g(rl_end;)243
-513 y(else)f(if)h(\(end)f(<)h(0\))290 565 y(end)g(=)g(0;)243
-668 y(if)f(\(start)g(==)h(end\))290 720 y(return)f(\(0\);)243
-824 y(if)g(\(start)g(>)h(end\))290 876 y({)338 928 y(int)g(temp)f(=)h
-(start;)338 980 y(start)f(=)h(end;)338 1032 y(end)g(=)f(temp;)290
-1083 y(})243 1187 y(/*)g(Tell)h(readline)e(that)i(we)f(are)h(modifying)
-e(the)i(line,)314 1239 y(so)g(it)f(will)h(save)f(the)h(undo)f
-(information.)f(*/)243 1291 y(rl_modifying)g(\(start,)h(end\);)243
-1395 y(for)g(\(i)h(=)f(start;)h(i)f(!=)h(end;)f(i++\))290
-1447 y({)338 1499 y(if)h(\(_rl_uppercase_p)d(\(rl_line_buffer[i]\)\))
-386 1550 y(rl_line_buffer[i])g(=)j(_rl_to_lower)e
-(\(rl_line_buffer[i]\);)338 1602 y(else)h(if)h(\(_rl_lowercase_p)e
-(\(rl_line_buffer[i]\)\))386 1654 y(rl_line_buffer[i])f(=)j
-(_rl_to_upper)e(\(rl_line_buffer[i]\);)290 1706 y(})243
-1758 y(/*)h(Move)h(point)f(to)g(on)h(top)f(of)h(the)f(last)h(character)
-e(changed.)h(*/)243 1810 y(rl_point)f(=)i(\(direction)f(==)g(1\))h(?)g
-(end)f(-)h(1)g(:)f(start;)243 1862 y(return)g(\(0\);)195
-1914 y(})75 2057 y Fs(2.5)33 b(Readline)23 b(Signal)h(Handling)137
-2159 y Fu(Signals)e(are)f(async)o(hronous)f(ev)o(en)o(ts)h(sen)o(t)f
-(to)h(a)f(pro)q(cess)h(b)o(y)g(the)g(Unix)h(k)o(ernel,)g(sometimes)f
-(on)75 2213 y(b)q(ehalf)g(of)e(another)h(pro)q(cess.)34
-b(They)20 b(are)g(in)o(tended)h(to)e(indicate)j(exceptional)f(ev)o(en)o
-(ts,)f(lik)o(e)h(a)f(user)75 2268 y(pressing)c(the)f(in)o(terrupt)g(k)o
-(ey)g(on)g(his)h(terminal,)f(or)g(a)f(net)o(w)o(ork)g(connection)i(b)q
-(eing)g(brok)o(en.)k(There)15 b(is)75 2323 y(a)e(class)g(of)g(signals)h
-(that)f(can)g(b)q(e)h(sen)o(t)f(to)f(the)i(pro)q(cess)f(curren)o(tly)h
-(reading)f(input)i(from)d(the)h(k)o(eyb)q(oard.)75 2378
-y(Since)i(Readline)f(c)o(hanges)g(the)f(terminal)h(attributes)f(when)h
-(it)g(is)g(called,)h(it)e(needs)h(to)f(p)q(erform)g(sp)q(ecial)75
-2433 y(pro)q(cessing)i(when)f(suc)o(h)g(a)g(signal)g(is)g(receiv)o(ed)h
-(in)g(order)f(to)f(restore)g(the)h(terminal)g(to)f(a)h(sane)g(state,)e
-(or)75 2487 y(pro)o(vide)k(application)h(writers)e(with)g(functions)h
-(to)f(do)g(so)g(man)o(ually)l(.)137 2560 y(Readline)22
-b(con)o(tains)e(an)g(in)o(ternal)h(signal)g(handler)g(that)f(is)h
-(installed)h(for)d(a)h(n)o(um)o(b)q(er)g(of)g(signals)75
-2615 y(\()p Ft(SIGINT)p Fu(,)h Ft(SIGQUIT)p Fu(,)g Ft(SIGTERM)p
-Fu(,)g Ft(SIGALRM)p Fu(,)g Ft(SIGTSTP)p Fu(,)g Ft(SIGTTIN)p
-Fu(,)h(and)f Ft(SIGTTOU)p Fu(\).)36 b(When)21 b(one)g(of)75
-2670 y(these)16 b(signals)h(is)f(receiv)o(ed,)h(the)f(signal)h(handler)
-f(will)i(reset)e(the)g(terminal)g(attributes)g(to)f(those)h(that)p
-eop
-%%Page: 40 42
-40 41 bop 75 -58 a Fu(40)1299 b(GNU)15 b(Readline)h(Library)75
-149 y(w)o(ere)d(in)i(e\013ect)e(b)q(efore)h Ft(readline\(\))e
-Fu(w)o(as)h(called,)i(reset)f(the)f(signal)i(handling)g(to)e(what)g(it)
-h(w)o(as)f(b)q(efore)75 204 y Ft(readline\(\))21 b Fu(w)o(as)h(called,)
-j(and)e(resend)g(the)g(signal)g(to)f(the)h(calling)h(application.)44
-b(If)23 b(and)f(when)75 259 y(the)17 b(calling)i(application's)f
-(signal)g(handler)g(returns,)f(Readline)h(will)h(reinitialize)h(the)d
-(terminal)h(and)75 314 y(con)o(tin)o(ue)d(to)e(accept)i(input.)20
-b(When)15 b(a)e Ft(SIGINT)h Fu(is)g(receiv)o(ed,)h(the)g(Readline)g
-(signal)g(handler)g(p)q(erforms)75 369 y(some)k(additional)i(w)o(ork,)e
-(whic)o(h)h(will)h(cause)f(an)o(y)f(partially-en)o(tered)i(line)g(to)d
-(b)q(e)i(ab)q(orted)g(\(see)f(the)75 423 y(description)e(of)d
-Ft(rl_free_line_state\(\))f Fu(b)q(elo)o(w\).)137 488
-y(There)g(is)f(an)g(additional)i(Readline)g(signal)f(handler,)g(for)f
-Ft(SIGWINCH)p Fu(,)f(whic)o(h)i(the)f(k)o(ernel)h(sends)g(to)e(a)75
-543 y(pro)q(cess)k(whenev)o(er)g(the)f(terminal's)h(size)g(c)o(hanges)f
-(\(for)g(example,)h(if)g(a)f(user)h(resizes)g(an)f Ft(xterm)p
-Fu(\).)19 b(The)75 598 y(Readline)g Ft(SIGWINCH)e Fu(handler)i(up)q
-(dates)f(Readline's)h(in)o(ternal)f(screen)h(size)f(information,)h(and)
-f(then)75 653 y(calls)g(an)o(y)f Ft(SIGWINCH)e Fu(signal)j(handler)g
-(the)f(calling)i(application)f(has)f(installed.)27 b(Readline)18
-b(calls)g(the)75 708 y(application's)h Ft(SIGWINCH)d
-Fu(signal)j(handler)f(without)g(resetting)g(the)f(terminal)i(to)e(its)g
-(original)i(state.)75 762 y(If)d(the)g(application's)h(signal)g
-(handler)g(do)q(es)g(more)e(than)h(up)q(date)h(its)f(idea)h(of)e(the)h
-(terminal)h(size)g(and)75 817 y(return)e(\(for)f(example,)h(a)f
-Ft(longjmp)g Fu(bac)o(k)h(to)f(a)h(main)g(pro)q(cessing)g(lo)q(op\),)g
-(it)g Fl(must)20 b Fu(call)c Ft(rl_cleanup_)75 872 y(after_signal\(\))d
-Fu(\(describ)q(ed)k(b)q(elo)o(w\),)e(to)g(restore)f(the)h(terminal)h
-(state.)137 937 y(Readline)g(pro)o(vides)f(t)o(w)o(o)e(v)m(ariables)i
-(that)f(allo)o(w)g(application)i(writers)e(to)g(con)o(trol)g(whether)h
-(or)e(not)75 992 y(it)k(will)h(catc)o(h)e(certain)h(signals)h(and)f
-(act)f(on)g(them)h(when)g(they)f(are)h(receiv)o(ed.)25
-b(It)16 b(is)i(imp)q(ortan)o(t)e(that)75 1047 y(applications)k(c)o
-(hange)e(the)h(v)m(alues)g(of)f(these)h(v)m(ariables)g(only)g(when)g
-(calling)h Ft(readline\(\))p Fu(,)d(not)h(in)h(a)75 1101
-y(signal)d(handler,)g(so)f(Readline's)h(in)o(ternal)g(signal)g(state)e
-(is)i(not)f(corrupted.)1773 1208 y(V)l(ariable)-1861
-b Fi(int)20 b Fh(rl)p 215 1208 18 3 v 21 w(catc)n(h)p
-366 1208 V 22 w(signals)195 1262 y Fu(If)15 b(this)g(v)m(ariable)g(is)g
-(non-zero,)g(Readline)h(will)g(install)f(signal)h(handlers)f(for)f
-Ft(SIGINT)p Fu(,)f Ft(SIGQUIT)p Fu(,)195 1317 y Ft(SIGTERM)p
-Fu(,)h Ft(SIGALRM)p Fu(,)g Ft(SIGTSTP)p Fu(,)f Ft(SIGTTIN)p
-Fu(,)h(and)i Ft(SIGTTOU)p Fu(.)195 1382 y(The)f(default)h(v)m(alue)h
-(of)d Ft(rl_catch_signals)f Fu(is)j(1.)1773 1488 y(V)l(ariable)-1861
-b Fi(int)20 b Fh(rl)p 215 1488 V 21 w(catc)n(h)p 366
-1488 V 22 w(sigwinc)n(h)195 1543 y Fu(If)15 b(this)h(v)m(ariable)h(is)e
-(non-zero,)g(Readline)i(will)g(install)f(a)f(signal)h(handler)h(for)d
-Ft(SIGWINCH)p Fu(.)195 1608 y(The)h(default)h(v)m(alue)h(of)d
-Ft(rl_catch_sigwinch)f Fu(is)j(1.)137 1694 y(If)g(an)f(application)j
-(do)q(es)d(not)g(wish)i(to)d(ha)o(v)o(e)h(Readline)i(catc)o(h)f(an)o(y)
-f(signals,)h(or)f(to)f(handle)j(signals)75 1749 y(other)i(than)g(those)
-g(Readline)i(catc)o(hes)e(\()p Ft(SIGHUP)p Fu(,)g(for)g(example\),)h
-(Readline)h(pro)o(vides)e(con)o(v)o(enience)75 1804 y(functions)d(to)f
-(do)g(the)g(necessary)g(terminal)h(and)g(in)o(ternal)g(state)e(clean)o
-(up)i(up)q(on)g(receipt)g(of)f(a)g(signal.)1762 1910
-y(F)l(unction)-1861 b Fi(void)20 b Fh(rl)p 241 1910 V
-21 w(clean)n(up)p 450 1910 V 22 w(after)p 590 1910 V
-20 w(signal)j Fg(\()p Ft(void)p Fg(\))195 1965 y Fu(This)18
-b(function)f(will)i(reset)e(the)g(state)f(of)g(the)h(terminal)h(to)e
-(what)h(it)g(w)o(as)f(b)q(efore)h Ft(readline\(\))195
-2019 y Fu(w)o(as)d(called,)i(and)f(remo)o(v)o(e)f(the)g(Readline)i
-(signal)g(handlers)g(for)e(all)h(signals,)g(dep)q(ending)i(on)e(the)195
-2074 y(v)m(alues)h(of)f Ft(rl_catch_signals)e Fu(and)i
-Ft(rl_catch_sigwinch)p Fu(.)1762 2180 y(F)l(unction)-1861
-b Fi(void)20 b Fh(rl)p 241 2180 V 21 w(free)p 356 2180
-V 20 w(line)p 464 2180 V 23 w(state)j Fg(\()p Ft(void)p
-Fg(\))195 2235 y Fu(This)d(will)h(free)f(an)o(y)f(partial)h(state)f
-(asso)q(ciated)h(with)g(the)g(curren)o(t)f(input)i(line)g(\(undo)f
-(infor-)195 2290 y(mation,)i(an)o(y)f(partial)h(history)f(en)o(try)l(,)
-h(an)o(y)f(partially-en)o(tered)i(k)o(eyb)q(oard)e(macro,)h(and)f(an)o
-(y)195 2345 y(partially-en)o(tered)k(n)o(umeric)g(argumen)o(t\).)45
-b(This)24 b(should)h(b)q(e)g(called)g(b)q(efore)g Ft(rl_cleanup_)195
-2399 y(after_signal\(\))p Fu(.)36 b(The)22 b(Readline)h(signal)f
-(handler)g(for)f Ft(SIGINT)f Fu(calls)j(this)e(to)g(ab)q(ort)g(the)195
-2454 y(curren)o(t)15 b(input)h(line.)1762 2560 y(F)l(unction)-1861
-b Fi(void)20 b Fh(rl)p 241 2560 V 21 w(reset)p 383 2560
-V 20 w(after)p 521 2560 V 21 w(signal)j Fg(\()p Ft(void)p
-Fg(\))195 2615 y Fu(This)15 b(will)h(reinitialize)h(the)d(terminal)h
-(and)g(reinstall)h(an)o(y)d(Readline)j(signal)f(handlers,)g(dep)q(end-)
-195 2670 y(ing)h(on)f(the)g(v)m(alues)i(of)d Ft(rl_catch_signals)f
-Fu(and)j Ft(rl_catch_sigwinch)p Fu(.)p eop
-%%Page: 41 43
-41 42 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(41)137 149 y(If)20 b(an)g(application)h(do)q(es)f(not)g
-(wish)g(Readline)h(to)e(catc)o(h)g Ft(SIGWINCH)p Fu(,)h(it)g(ma)o(y)f
-(call)h Ft(rl_resize_)75 204 y(terminal\(\))12 b Fu(or)h
-Ft(rl_set_screen_size\(\))e Fu(to)i(force)g(Readline)i(to)e(up)q(date)h
-(its)g(idea)g(of)g(the)f(terminal)75 259 y(size)j(when)g(a)f
-Ft(SIGWINCH)f Fu(is)h(receiv)o(ed.)1762 360 y(F)l(unction)-1861
-b Fi(void)20 b Fh(rl)p 241 360 18 3 v 21 w(resize)p 401
-360 V 22 w(terminal)j Fg(\()p Ft(void)p Fg(\))195 415
-y Fu(Up)q(date)16 b(Readline's)g(in)o(ternal)g(screen)f(size)i(b)o(y)e
-(reading)g(v)m(alues)i(from)d(the)i(k)o(ernel.)1762 516
-y(F)l(unction)-1861 b Fi(void)20 b Fh(rl)p 241 516 V
-21 w(set)p 333 516 V 21 w(screen)p 510 516 V 20 w(size)k
-Fg(\()p Ft(int)15 b(rows,)f(int)h(cols)p Fg(\))195 571
-y Fu(Set)g(Readline's)h(idea)g(of)f(the)g(terminal)h(size)g(to)f
-Fk(ro)o(ws)h Fu(ro)o(ws)e(and)i Fk(cols)h Fu(columns.)137
-653 y(If)g(an)g(application)h(do)q(es)f(not)f(w)o(an)o(t)g(to)g
-(install)i(a)f Ft(SIGWINCH)e Fu(handler,)j(but)f(is)g(still)h(in)o
-(terested)f(in)75 708 y(the)e(screen)h(dimensions,)g(Readline's)h(idea)
-e(of)g(the)h(screen)f(size)h(ma)o(y)f(b)q(e)h(queried.)1762
-809 y(F)l(unction)-1861 b Fi(void)20 b Fh(rl)p 241 809
-V 21 w(get)p 339 809 V 21 w(screen)p 516 809 V 20 w(size)k
-Fg(\()p Ft(int)15 b(*rows,)f(int)h(*cols)p Fg(\))195
-864 y Fu(Return)g(Readline's)h(idea)f(of)g(the)g(terminal's)g(size)h
-(in)g(the)f(v)m(ariables)i(p)q(oin)o(ted)f(to)e(b)o(y)h(the)g(argu-)195
-918 y(men)o(ts.)137 1001 y(The)h(follo)o(wing)g(functions)g(install)g
-(and)g(remo)o(v)o(e)e(Readline's)i(signal)g(handlers.)1762
-1102 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 1102
-V 21 w(set)p 307 1102 V 20 w(signals)j Fg(\()p Ft(void)p
-Fg(\))195 1157 y Fu(Install)c(Readline's)f(signal)h(handler)f(for)f
-Ft(SIGINT)p Fu(,)g Ft(SIGQUIT)p Fu(,)g Ft(SIGTERM)p Fu(,)g
-Ft(SIGALRM)p Fu(,)f Ft(SIGTSTP)p Fu(,)195 1211 y Ft(SIGTTIN)p
-Fu(,)11 b Ft(SIGTTOU)p Fu(,)g(and)h Ft(SIGWINCH)p Fu(,)e(dep)q(ending)k
-(on)e(the)f(v)m(alues)i(of)e Ft(rl_catch_signals)f Fu(and)195
-1266 y Ft(rl_catch_sigwinch)p Fu(.)1762 1367 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 1367 V 21 w(clear)p 354 1367
-V 21 w(signals)j Fg(\()p Ft(void)p Fg(\))195 1422 y Fu(Remo)o(v)o(e)14
-b(all)i(of)f(the)g(Readline)i(signal)f(handlers)g(installed)h(b)o(y)e
-Ft(rl_set_signals\(\))p Fu(.)75 1541 y Fs(2.6)33 b(Custom)21
-b(Completers)137 1634 y Fu(T)o(ypically)l(,)e(a)d(program)f(that)h
-(reads)h(commands)f(from)g(the)h(user)f(has)h(a)f(w)o(a)o(y)g(of)g
-(disam)o(biguating)75 1689 y(commands)i(and)f(data.)27
-b(If)18 b(y)o(our)f(program)g(is)h(one)g(of)f(these,)i(then)f(it)g(can)
-f(pro)o(vide)i(completion)g(for)75 1744 y(commands,)14
-b(data,)g(or)g(b)q(oth.)20 b(The)15 b(follo)o(wing)g(sections)g
-(describ)q(e)h(ho)o(w)e(y)o(our)g(program)g(and)h(Readline)75
-1798 y(co)q(op)q(erate)g(to)g(pro)o(vide)g(this)h(service.)75
-1901 y Fj(2.6.1)30 b(Ho)n(w)21 b(Completing)f(W)-5 b(orks)137
-1994 y Fu(In)18 b(order)f(to)f(complete)i(some)f(text,)g(the)g(full)i
-(list)e(of)g(p)q(ossible)i(completions)f(m)o(ust)f(b)q(e)h(a)o(v)m
-(ailable.)75 2049 y(That)e(is,)i(it)f(is)h(not)f(p)q(ossible)h(to)f
-(accurately)g(expand)h(a)e(partial)i(w)o(ord)e(without)h(kno)o(wing)g
-(all)h(of)f(the)75 2104 y(p)q(ossible)i(w)o(ords)e(whic)o(h)h(mak)o(e)f
-(sense)h(in)h(that)d(con)o(text.)26 b(The)18 b(Readline)h(library)f
-(pro)o(vides)g(the)g(user)75 2158 y(in)o(terface)f(to)f(completion,)i
-(and)e(t)o(w)o(o)g(of)g(the)h(most)f(common)g(completion)i(functions:)
-23 b(\014lename)18 b(and)75 2213 y(username.)h(F)l(or)10
-b(completing)i(other)e(t)o(yp)q(es)h(of)f(text,)h(y)o(ou)g(m)o(ust)f
-(write)h(y)o(our)f(o)o(wn)h(completion)g(function.)75
-2268 y(This)16 b(section)g(describ)q(es)g(exactly)g(what)f(suc)o(h)g
-(functions)h(m)o(ust)f(do,)f(and)i(pro)o(vides)f(an)h(example.)137
-2332 y(There)g(are)f(three)g(ma)s(jor)f(functions)i(used)f(to)g(p)q
-(erform)g(completion:)100 2396 y(1.)29 b(The)22 b(user-in)o(terface)g
-(function)h Ft(rl_complete\(\))p Fu(.)37 b(This)22 b(function)h(is)f
-(called)h(with)f(the)g(same)165 2451 y(argumen)o(ts)17
-b(as)h(other)g(bindable)i(Readline)f(functions:)27 b
-Fk(coun)o(t)19 b Fu(and)f Fk(in)o(v)o(oking)p 1556 2451
-14 2 v 17 w(k)o(ey)p Fu(.)28 b(It)19 b(isolates)165 2506
-y(the)g(w)o(ord)f(to)g(b)q(e)i(completed)f(and)g(calls)h
-Ft(rl_completion_matches\(\))c Fu(to)i(generate)g(a)h(list)g(of)165
-2560 y(p)q(ossible)e(completions.)22 b(It)16 b(then)g(either)g(lists)g
-(the)g(p)q(ossible)h(completions,)g(inserts)f(the)f(p)q(ossible)165
-2615 y(completions,)25 b(or)d(actually)i(p)q(erforms)e(the)g
-(completion,)k(dep)q(ending)e(on)f(whic)o(h)g(b)q(eha)o(vior)g(is)165
-2670 y(desired.)p eop
-%%Page: 42 44
-42 43 bop 75 -58 a Fu(42)1299 b(GNU)15 b(Readline)h(Library)100
-149 y(2.)29 b(The)17 b(in)o(ternal)h(function)f Ft
-(rl_completion_matches\(\))d Fu(uses)j(an)g(application-supplie)q(d)j
-Fk(gener-)165 204 y(ator)h Fu(function)e(to)f(generate)g(the)h(list)g
-(of)f(p)q(ossible)i(matc)o(hes,)f(and)f(then)h(returns)g(the)f(arra)o
-(y)f(of)165 259 y(these)j(matc)o(hes.)32 b(The)20 b(caller)g(should)h
-(place)f(the)g(address)f(of)h(its)f(generator)g(function)h(in)g
-Ft(rl_)165 314 y(completion_entry_function)p Fu(.)100
-383 y(3.)29 b(The)12 b(generator)e(function)i(is)g(called)h(rep)q
-(eatedly)g(from)e Ft(rl_completion_matches\(\))p Fu(,)d(returning)165
-438 y(a)16 b(string)g(eac)o(h)h(time.)24 b(The)17 b(argumen)o(ts)e(to)h
-(the)g(generator)g(function)h(are)f Fk(text)h Fu(and)g
-Fk(state)p Fu(.)22 b Fk(text)165 493 y Fu(is)17 b(the)f(partial)g(w)o
-(ord)f(to)h(b)q(e)h(completed.)23 b Fk(state)18 b Fu(is)e(zero)g(the)g
-(\014rst)g(time)g(the)g(function)h(is)g(called,)165 547
-y(allo)o(wing)23 b(the)f(generator)f(to)g(p)q(erform)h(an)o(y)g
-(necessary)g(initialization,)k(and)c(a)g(p)q(ositiv)o(e)h(non-)165
-602 y(zero)14 b(in)o(teger)h(for)f(eac)o(h)h(subsequen)o(t)g(call.)21
-b(The)15 b(generator)e(function)j(returns)e Ft(\(char)h(*\)NULL)f
-Fu(to)165 657 y(inform)19 b Ft(rl_completion_matches\(\))d
-Fu(that)i(there)h(are)g(no)g(more)g(p)q(ossibilities)j(left.)32
-b(Usually)165 712 y(the)19 b(generator)g(function)h(computes)g(the)f
-(list)h(of)f(p)q(ossible)i(completions)g(when)e Fk(state)j
-Fu(is)d(zero,)165 767 y(and)13 b(returns)g(them)f(one)h(at)f(a)h(time)g
-(on)g(subsequen)o(t)g(calls.)20 b(Eac)o(h)13 b(string)f(the)h
-(generator)f(function)165 821 y(returns)k(as)f(a)h(matc)o(h)f(m)o(ust)h
-(b)q(e)g(allo)q(cated)h(with)g Ft(malloc\(\))p Fu(;)d(Readline)k(frees)
-e(the)g(strings)f(when)165 876 y(it)g(has)h(\014nished)g(with)g(them.)
-1762 1005 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215
-1005 18 3 v 21 w(complete)j Fg(\()p Ft(int)14 b(ignore,)g(int)h
-(invoking_key)p Fg(\))195 1059 y Fu(Complete)h(the)f(w)o(ord)g(at)f(or)
-h(b)q(efore)h(p)q(oin)o(t.)21 b(Y)l(ou)15 b(ha)o(v)o(e)g(supplied)j
-(the)d(function)i(that)d(do)q(es)i(the)195 1114 y(initial)23
-b(simple)f(matc)o(hing)e(selection)i(algorithm)f(\(see)f
-Ft(rl_completion_matches\(\))p Fu(\).)33 b(The)195 1169
-y(default)16 b(is)f(to)g(do)g(\014lename)h(completion.)1773
-1298 y(V)l(ariable)-1861 b Fi(rl_compentry_func_t)22
-b(*)d Fh(rl)p 678 1298 V 21 w(completion)p 973 1298 V
-21 w(en)n(try)p 1126 1298 V 22 w(function)195 1352 y
-Fu(This)i(is)f(a)g(p)q(oin)o(ter)g(to)f(the)h(generator)g(function)g
-(for)g Ft(rl_completion_matches\(\))p Fu(.)31 b(If)20
-b(the)195 1407 y(v)m(alue)13 b(of)f Ft(rl_completion_entry_fun)o(ction)
-d Fu(is)j Ft(NULL)f Fu(then)h(the)g(default)h(\014lename)g(generator)
-195 1462 y(function,)j Ft(rl_filename_completion_f)o(unction)o(\(\))p
-Fu(,)c(is)k(used.)75 1582 y Fj(2.6.2)30 b(Completion)20
-b(F)-5 b(unctions)137 1682 y Fu(Here)16 b(is)f(the)h(complete)g(list)g
-(of)e(callable)k(completion)e(functions)g(presen)o(t)f(in)h(Readline.)
-1762 1810 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215
-1810 V 21 w(complete)p 460 1810 V 21 w(in)n(ternal)k
-Fg(\()p Ft(int)15 b(what_to_do)p Fg(\))195 1865 y Fu(Complete)k(the)g
-(w)o(ord)f(at)g(or)g(b)q(efore)h(p)q(oin)o(t.)31 b Fk(what)p
-1108 1865 14 2 v 16 w(to)p 1165 1865 V 16 w(do)21 b Fu(sa)o(ys)d(what)g
-(to)g(do)h(with)g(the)g(com-)195 1920 y(pletion.)j(A)16
-b(v)m(alue)h(of)e(`)p Ft(?)p Fu(')g(means)g(list)i(the)e(p)q(ossible)j
-(completions.)k(`)p Ft(TAB)p Fu(')14 b(means)i(do)f(standard)195
-1975 y(completion.)22 b(`)p Ft(*)p Fu(')15 b(means)g(insert)h(all)h(of)
-e(the)h(p)q(ossible)h(completions.)22 b(`)p Ft(!)p Fu(')15
-b(means)g(to)g(displa)o(y)i(all)195 2029 y(of)g(the)g(p)q(ossible)i
-(completions,)f(if)g(there)f(is)h(more)f(than)g(one,)g(as)g(w)o(ell)h
-(as)f(p)q(erforming)h(partial)195 2084 y(completion.)1762
-2213 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 2213
-18 3 v 21 w(complete)j Fg(\()p Ft(int)14 b(ignore,)g(int)h
-(invoking_key)p Fg(\))195 2268 y Fu(Complete)21 b(the)g(w)o(ord)e(at)h
-(or)g(b)q(efore)h(p)q(oin)o(t.)37 b(Y)l(ou)21 b(ha)o(v)o(e)f(supplied)j
-(the)d(function)i(that)e(do)q(es)195 2322 y(the)d(initial)h(simple)g
-(matc)o(hing)f(selection)h(algorithm)e(\(see)g Ft
-(rl_completion_matches\(\))e Fu(and)195 2377 y Ft
-(rl_completion_entry_functi)o(on)p Fu(\).)25 b(The)18
-b(default)h(is)f(to)f(do)h(\014lename)h(completion.)29
-b(This)195 2432 y(calls)16 b Ft(rl_complete_internal\(\))c
-Fu(with)k(an)f(argumen)o(t)f(dep)q(ending)k(on)d Fk(in)o(v)o(oking)p
-1657 2432 14 2 v 17 w(k)o(ey)p Fu(.)1762 2560 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 2560 18 3 v 21 w(p)r(ossible)p
-433 2560 V 20 w(completions)j Fg(\()p Ft(int)15 b(count,)f(int)h
-(invoking_key)p Fg(\))195 2615 y Fu(List)21 b(the)f(p)q(ossible)i
-(completions.)36 b(See)21 b(description)h(of)e Ft(rl_complete)13
-b(\(\))p Fu(.)35 b(This)21 b(calls)g Ft(rl_)195 2670
-y(complete_internal\(\))13 b Fu(with)i(an)g(argumen)o(t)g(of)f(`)p
-Ft(?)p Fu('.)p eop
-%%Page: 43 45
-43 44 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(43)1762 149 y(F)l(unction)-1861 b Fi(int)20
-b Fh(rl)p 215 149 18 3 v 21 w(insert)p 378 149 V 21 w(completions)j
-Fg(\()p Ft(int)14 b(count,)g(int)h(invoking_key)p Fg(\))195
-204 y Fu(Insert)i(the)g(list)h(of)e(p)q(ossible)j(completions)e(in)o
-(to)g(the)g(line,)i(deleting)f(the)f(partially-completed)195
-259 y(w)o(ord.)k(See)c(description)g(of)e Ft(rl_complete\(\))p
-Fu(.)20 b(This)d(calls)g Ft(rl_complete_internal\(\))c
-Fu(with)195 314 y(an)i(argumen)o(t)g(of)f(`)p Ft(*)p
-Fu('.)1762 434 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p
-215 434 V 21 w(completion)p 510 434 V 21 w(mo)r(de)h
-Fg(\()p Ft(rl_command_func_t)12 b(*cfunc)p Fg(\))195
-489 y Fu(Returns)25 b(the)g(apppriate)h(v)m(alue)g(to)f(pass)g(to)f
-Ft(rl_complete_internal\(\))f Fu(dep)q(ending)k(on)195
-543 y(whether)22 b Fk(cfunc)j Fu(w)o(as)d(called)h(t)o(wice)f(in)h
-(succession)g(and)f(the)g(v)m(alue)h(of)f(the)g Ft(show-all-if-)195
-598 y(ambiguous)14 b Fu(v)m(ariable.)21 b(Application-sp)q(ec)q(i\014c)
-e(completion)d(functions)g(ma)o(y)f(use)g(this)h(function)195
-653 y(to)f(presen)o(t)g(the)g(same)g(in)o(terface)g(as)g
-Ft(rl_complete\(\))p Fu(.)1762 773 y(F)l(unction)-1861
-b Fi(char)20 b(**)f Fh(rl)p 312 773 V 21 w(completion)p
-607 773 V 21 w(matc)n(hes)j Fg(\()p Ft(const)15 b(char)f(*text,)283
-828 y(rl_compentry_func_t)e(*entry_func)p Fg(\))195 883
-y Fu(Returns)18 b(an)h(arra)o(y)f(of)g(strings)h(whic)o(h)h(is)g(a)e
-(list)i(of)e(completions)i(for)f Fk(text)p Fu(.)30 b(If)19
-b(there)g(are)g(no)195 937 y(completions,)f(returns)g
-Ft(NULL)p Fu(.)25 b(The)17 b(\014rst)g(en)o(try)g(in)h(the)f(returned)h
-(arra)o(y)e(is)i(the)f(substitution)195 992 y(for)c Fk(text)p
-Fu(.)18 b(The)c(remaining)g(en)o(tries)f(are)g(the)h(p)q(ossible)g
-(completions.)21 b(The)13 b(arra)o(y)f(is)i(terminated)195
-1047 y(with)i(a)e Ft(NULL)h Fu(p)q(oin)o(ter.)195 1115
-y Fk(en)o(try)p 302 1115 14 2 v 16 w(func)h Fu(is)e(a)f(function)h(of)e
-(t)o(w)o(o)g(args,)g(and)i(returns)f(a)f Ft(char)j(*)p
-Fu(.)k(The)13 b(\014rst)g(argumen)o(t)f(is)i Fk(text)p
-Fu(.)195 1170 y(The)f(second)g(is)f(a)h(state)e(argumen)o(t;)h(it)h(is)
-g(zero)f(on)g(the)h(\014rst)f(call,)i(and)e(non-zero)h(on)f(subsequen)o
-(t)195 1225 y(calls.)20 b Fk(en)o(try)p 420 1225 V 16
-w(func)15 b Fu(returns)e(a)e Ft(NULL)h Fu(p)q(oin)o(ter)h(to)e(the)i
-(caller)g(when)g(there)f(are)g(no)g(more)g(matc)o(hes.)1762
-1345 y(F)l(unction)-1861 b Fi(char)20 b(*)f Fh(rl)p 286
-1345 18 3 v 21 w(\014lename)p 515 1345 V 20 w(completion)p
-809 1345 V 21 w(function)k Fg(\()p Ft(const)15 b(char)f(*text,)h(int)
-283 1400 y(state)p Fg(\))195 1454 y Fu(A)e(generator)f(function)h(for)g
-(\014lename)h(completion)f(in)h(the)f(general)g(case.)19
-b Fk(text)14 b Fu(is)f(a)g(partial)g(\014le-)195 1509
-y(name.)20 b(The)15 b(Bash)f(source)h(is)g(a)g(useful)g(reference)h
-(for)e(writing)h(custom)f(completion)i(functions)195
-1564 y(\(the)f(Bash)g(completion)i(functions)e(call)i(this)e(and)h
-(other)f(Readline)h(functions\).)1762 1684 y(F)l(unction)-1861
-b Fi(char)20 b(*)f Fh(rl)p 286 1684 V 21 w(username)p
-547 1684 V 19 w(completion)p 840 1684 V 21 w(function)k
-Fg(\()p Ft(const)14 b(char)g(*text,)283 1739 y(int)g(state)p
-Fg(\))195 1794 y Fu(A)g(completion)i(generator)d(for)h(usernames.)19
-b Fk(text)c Fu(con)o(tains)f(a)g(partial)h(username)f(preceded)i(b)o(y)
-195 1848 y(a)f(random)g(c)o(haracter)f(\(usually)j(`)p
-Ft(~)p Fu('\).)i(As)c(with)g(all)i(completion)f(generators,)e
-Fk(state)j Fu(is)f(zero)f(on)195 1903 y(the)g(\014rst)g(call)h(and)g
-(non-zero)f(for)g(subsequen)o(t)h(calls.)75 2017 y Fj(2.6.3)30
-b(Completion)20 b(V)-5 b(ariables)1773 2166 y Fu(V)l(ariable)-1861
-b Fi(rl_compentry_func_t)22 b(*)d Fh(rl)p 678 2166 V
-21 w(completion)p 973 2166 V 21 w(en)n(try)p 1126 2166
-V 22 w(function)195 2221 y Fu(A)e(p)q(oin)o(ter)g(to)f(the)h(generator)
-f(function)h(for)f Ft(rl_completion_matches\(\))p Fu(.)22
-b Ft(NULL)16 b Fu(means)h(to)195 2276 y(use)f Ft
-(rl_filename_completion_)o(functio)o(n\(\))p Fu(,)c(the)j(default)h
-(\014lename)g(completer.)1773 2396 y(V)l(ariable)-1861
-b Fi(rl_completion_func_t)22 b(*)d Fh(rl)p 704 2396 V
-22 w(attempted)p 985 2396 V 20 w(completion)p 1279 2396
-V 21 w(function)195 2451 y Fu(A)e(p)q(oin)o(ter)h(to)f(an)g(alternativ)
-o(e)h(function)g(to)f(create)g(matc)o(hes.)26 b(The)18
-b(function)g(is)g(called)h(with)195 2506 y Fk(text)p
-Fu(,)11 b Fk(start)p Fu(,)g(and)h Fk(end)p Fu(.)19 b
-Fk(start)11 b Fu(and)h Fk(end)i Fu(are)d(indices)i(in)g
-Ft(rl_line_buffer)c Fu(de\014ning)k(the)f(b)q(ound-)195
-2560 y(aries)h(of)g Fk(text)p Fu(,)f(whic)o(h)i(is)g(a)e(c)o(haracter)h
-(string.)19 b(If)13 b(this)g(function)h(exists)g(and)f(returns)g
-Ft(NULL)p Fu(,)f(or)g(if)195 2615 y(this)f(v)m(ariable)i(is)e(set)g(to)
-f Ft(NULL)p Fu(,)h(then)g Ft(rl_complete\(\))e Fu(will)k(call)f(the)f
-(v)m(alue)h(of)f Ft(rl_completion_)195 2670 y(entry_function)h
-Fu(to)i(generate)g(matc)o(hes,)f(otherwise)i(the)f(arra)o(y)f(of)h
-(strings)g(returned)g(will)i(b)q(e)p eop
-%%Page: 44 46
-44 45 bop 75 -58 a Fu(44)1299 b(GNU)15 b(Readline)h(Library)195
-149 y(used.)j(If)12 b(this)f(function)h(sets)f(the)g
-Ft(rl_attempted_completion_over)d Fu(v)m(ariable)k(to)f(a)g(non-zero)
-195 204 y(v)m(alue,)18 b(Readline)h(will)f(not)f(p)q(erform)f(its)i
-(default)f(completion)h(ev)o(en)f(if)h(this)f(function)h(returns)195
-259 y(no)d(matc)o(hes.)1773 380 y(V)l(ariable)-1861 b
-Fi(rl_quote_func_t)21 b(*)f Fh(rl)p 574 380 18 3 v 21
-w(\014lename)p 803 380 V 20 w(quoting)p 1012 380 V 21
-w(function)195 434 y Fu(A)c(p)q(oin)o(ter)h(to)f(a)g(function)h(that)e
-(will)j(quote)e(a)g(\014lename)i(in)f(an)f(application-sp)q(eci\014)q
-(c)j(fashion.)195 489 y(This)h(is)g(called)i(if)e(\014lename)g
-(completion)h(is)f(b)q(eing)h(attempted)e(and)h(one)g(of)f(the)h(c)o
-(haracters)195 544 y(in)d Ft(rl_filename_quote_characters)c
-Fu(app)q(ears)k(in)g(a)g(completed)g(\014lename.)25 b(The)17
-b(function)195 599 y(is)i(called)i(with)e Fk(text)p Fu(,)g
-Fk(matc)o(h)p 722 599 14 2 v 16 w(t)o(yp)q(e)p Fu(,)g(and)g
-Fk(quote)p 1059 599 V 17 w(p)q(oin)o(ter)p Fu(.)31 b(The)19
-b Fk(text)h Fu(is)f(the)g(\014lename)h(to)e(b)q(e)195
-654 y(quoted.)39 b(The)21 b Fk(matc)o(h)p 607 654 V 16
-w(t)o(yp)q(e)j Fu(is)e(either)g Ft(SINGLE_MATCH)p Fu(,)f(if)h(there)f
-(is)h(only)g(one)g(completion)195 708 y(matc)o(h,)15
-b(or)g Ft(MULT_MATCH)p Fu(.)20 b(Some)c(functions)g(use)g(this)g(to)f
-(decide)j(whether)e(or)f(not)g(to)g(insert)h(a)195 763
-y(closing)c(quote)e(c)o(haracter.)18 b(The)11 b Fk(quote)p
-877 763 V 16 w(p)q(oin)o(ter)k Fu(is)c(a)f(p)q(oin)o(ter)i(to)e(an)o(y)
-g(op)q(ening)i(quote)f(c)o(haracter)195 818 y(the)k(user)h(t)o(yp)q
-(ed.)k(Some)15 b(functions)h(c)o(ho)q(ose)f(to)g(reset)g(this)g(c)o
-(haracter.)1773 938 y(V)l(ariable)-1861 b Fi(rl_dequote_func_t)22
-b(*)d Fh(rl)p 626 938 18 3 v 21 w(\014lename)p 855 938
-V 20 w(dequoting)p 1122 938 V 21 w(function)195 993 y
-Fu(A)c(p)q(oin)o(ter)g(to)f(a)h(function)g(that)g(will)h(remo)o(v)o(e)e
-(application-sp)q(eci\014)q(c)k(quoting)d(c)o(haracters)f(from)195
-1048 y(a)i(\014lename)h(b)q(efore)g(completion)g(is)g(attempted,)f(so)f
-(those)h(c)o(haracters)g(do)g(not)g(in)o(terfere)h(with)195
-1103 y(matc)o(hing)i(the)g(text)g(against)f(names)h(in)h(the)f
-(\014lesystem.)33 b(It)19 b(is)g(called)i(with)e Fk(text)p
-Fu(,)g(the)g(text)195 1158 y(of)i(the)g(w)o(ord)g(to)g(b)q(e)h
-(dequoted,)h(and)e Fk(quote)p 1009 1158 14 2 v 17 w(c)o(har)p
-Fu(,)h(whic)o(h)g(is)g(the)f(quoting)h(c)o(haracter)f(that)195
-1212 y(delimits)d(the)e(\014lename)i(\(usually)f(`)p
-Ft(')p Fu(')f(or)f(`)p Ft(")p Fu('\).)22 b(If)17 b Fk(quote)p
-1187 1212 V 16 w(c)o(har)i Fu(is)e(zero,)f(the)g(\014lename)i(w)o(as)d
-(not)195 1267 y(in)h(an)f(em)o(b)q(edded)i(string.)1773
-1388 y(V)l(ariable)-1861 b Fi(rl_linebuf_func_t)22 b(*)d
-Fh(rl)p 626 1388 18 3 v 21 w(c)n(har)p 754 1388 V 21
-w(is)p 813 1388 V 21 w(quoted)p 1005 1388 V 21 w(p)195
-1443 y Fu(A)f(p)q(oin)o(ter)h(to)f(a)g(function)h(to)f(call)i(that)d
-(determines)j(whether)e(or)g(not)g(a)g(sp)q(eci\014c)j(c)o(haracter)195
-1497 y(in)d(the)f(line)i(bu\013er)e(is)h(quoted,)g(according)f(to)g
-(whatev)o(er)f(quoting)i(mec)o(hanism)g(the)f(program)195
-1552 y(calling)d(Readline)g(uses.)19 b(The)13 b(function)g(is)g(called)
-h(with)f(t)o(w)o(o)e(argumen)o(ts:)17 b Fk(text)p Fu(,)12
-b(the)h(text)f(of)g(the)195 1607 y(line,)17 b(and)e Fk(index)p
-Fu(,)i(the)e(index)i(of)e(the)g(c)o(haracter)g(in)h(the)g(line.)22
-b(It)15 b(is)h(used)g(to)f(decide)i(whether)e(a)195 1662
-y(c)o(haracter)f(found)i(in)g Ft(rl_completer_word_break_)o(charact)o
-(ers)c Fu(should)k(b)q(e)g(used)g(to)e(break)195 1717
-y(w)o(ords)g(for)h(the)g(completer.)1773 1837 y(V)l(ariable)-1861
-b Fi(rl_compignore_func_t)22 b(*)d Fh(rl)p 704 1837 V
-22 w(ignore)p 881 1837 V 20 w(some)p 1028 1837 V 19 w(completions)p
-1344 1837 V 21 w(function)195 1892 y Fu(This)g(function,)i(if)e
-(de\014ned,)i(is)e(called)h(b)o(y)f(the)g(completer)g(when)h(real)f
-(\014lename)h(completion)195 1947 y(is)e(done,)f(after)f(all)i(the)f
-(matc)o(hing)g(names)g(ha)o(v)o(e)g(b)q(een)h(generated.)25
-b(It)17 b(is)h(passed)f(a)g Ft(NULL)f Fu(ter-)195 2001
-y(minated)g(arra)o(y)e(of)h(matc)o(hes.)20 b(The)c(\014rst)f(elemen)o
-(t)h(\()p Ft(matches[0])p Fu(\))d(is)j(the)g(maximal)g(substring)195
-2056 y(common)e(to)g(all)h(matc)o(hes.)k(This)c(function)g(can)g
-(re-arrange)f(the)g(list)h(of)f(matc)o(hes)g(as)g(required,)195
-2111 y(but)h(eac)o(h)h(elemen)o(t)g(deleted)g(from)f(the)g(arra)o(y)f
-(m)o(ust)g(b)q(e)i(freed.)1773 2232 y(V)l(ariable)-1861
-b Fi(rl_icppfunc_t)21 b(*)e Fh(rl)p 521 2232 V 21 w(directory)p
-769 2232 V 22 w(completion)p 1065 2232 V 21 w(ho)r(ok)195
-2286 y Fu(This)k(function,)i(if)e(de\014ned,)j(is)d(allo)o(w)o(ed)g(to)
-f(mo)q(dify)h(the)g(directory)g(p)q(ortion)g(of)f(\014lenames)195
-2341 y(Readline)e(completes.)29 b(It)19 b(is)f(called)i(with)f(the)f
-(address)h(of)e(a)h(string)h(\(the)f(curren)o(t)g(directory)195
-2396 y(name\))g(as)g(an)h(argumen)o(t,)f(and)h(ma)o(y)f(mo)q(dify)h
-(that)f(string.)30 b(If)19 b(the)f(string)h(is)g(replaced)h(with)195
-2451 y(a)g(new)g(string,)h(the)f(old)g(v)m(alue)h(should)g(b)q(e)g
-(freed.)34 b(An)o(y)20 b(mo)q(di\014ed)i(directory)e(name)g(should)195
-2506 y(ha)o(v)o(e)14 b(a)g(trailing)i(slash.)k(The)15
-b(mo)q(di\014ed)h(v)m(alue)g(will)g(b)q(e)f(displa)o(y)o(ed)h(as)e
-(part)g(of)h(the)f(completion,)195 2560 y(replacing)h(the)g(directory)f
-(p)q(ortion)g(of)g(the)g(pathname)g(the)h(user)f(t)o(yp)q(ed.)20
-b(It)14 b(returns)g(an)g(in)o(teger)195 2615 y(that)i(should)h(b)q(e)g
-(non-zero)g(if)g(the)g(function)g(mo)q(di\014es)h(its)e(directory)h
-(argumen)o(t.)23 b(It)17 b(could)g(b)q(e)195 2670 y(used)f(to)e(expand)
-i(sym)o(b)q(olic)h(links)f(or)f(shell)i(v)m(ariables)f(in)g(pathnames.)
-p eop
-%%Page: 45 47
-45 46 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(45)1773 149 y(V)l(ariable)-1861 b Fi
-(rl_compdisp_func_t)22 b(*)d Fh(rl)p 652 149 18 3 v 21
-w(completion)p 947 149 V 21 w(displa)n(y)p 1141 149 V
-22 w(matc)n(hes)p 1366 149 V 21 w(ho)r(ok)195 204 y Fu(If)11
-b(non-zero,)h(then)f(this)h(is)f(the)g(address)g(of)g(a)g(function)g
-(to)g(call)h(when)f(completing)i(a)d(w)o(ord)h(w)o(ould)195
-259 y(normally)h(displa)o(y)g(the)f(list)h(of)f(p)q(ossible)h(matc)o
-(hes.)18 b(This)12 b(function)g(is)g(called)g(in)g(lieu)h(of)e
-(Readline)195 314 y(displa)o(ying)21 b(the)d(list.)32
-b(It)19 b(tak)o(es)f(three)h(argumen)o(ts:)26 b(\()p
-Ft(char)14 b(**)p Fk(matc)o(hes)p Fu(,)19 b Ft(int)f
-Fk(n)o(um)p 1688 314 14 2 v 17 w(matc)o(hes)p Fu(,)195
-369 y Ft(int)13 b Fk(max)p 368 369 V 16 w(length)p Fu(\))i(where)f
-Fk(matc)o(hes)h Fu(is)f(the)g(arra)o(y)f(of)g(matc)o(hing)h(strings,)g
-Fk(n)o(um)p 1578 369 V 16 w(matc)o(hes)i Fu(is)e(the)195
-423 y(n)o(um)o(b)q(er)h(of)f(strings)h(in)h(that)e(arra)o(y)l(,)f(and)i
-Fk(max)p 1012 423 V 16 w(length)h Fu(is)f(the)g(length)g(of)g(the)f
-(longest)h(string)g(in)195 478 y(that)e(arra)o(y)l(.)19
-b(Readline)c(pro)o(vides)g(a)e(con)o(v)o(enience)j(function,)f
-Ft(rl_display_match_list)p Fu(,)c(that)195 533 y(tak)o(es)17
-b(care)g(of)g(doing)h(the)f(displa)o(y)i(to)d(Readline's)j(output)e
-(stream.)26 b(That)16 b(function)j(ma)o(y)d(b)q(e)195
-588 y(called)h(from)d(this)i(ho)q(ok.)1773 704 y(V)l(ariable)-1861
-b Fi(const)20 b(char)g(*)f Fh(rl)p 436 704 18 3 v 21
-w(basic)p 580 704 V 21 w(w)n(ord)p 725 704 V 21 w(break)p
-886 704 V 20 w(c)n(haracters)195 759 y Fu(The)j(basic)h(list)g(of)f(c)o
-(haracters)f(that)g(signal)i(a)f(break)g(b)q(et)o(w)o(een)g(w)o(ords)g
-(for)f(the)h(completer)195 814 y(routine.)30 b(The)19
-b(default)g(v)m(alue)h(of)e(this)h(v)m(ariable)h(is)f(the)g(c)o
-(haracters)f(whic)o(h)h(break)g(w)o(ords)f(for)195 869
-y(completion)e(in)g(Bash:)k Ft(")15 b(\\t\\n\\"\\\\'`@$><=;|&{\(")p
-Fu(.)1773 985 y(V)l(ariable)-1861 b Fi(const)20 b(char)g(*)f
-Fh(rl)p 436 985 V 21 w(basic)p 580 985 V 21 w(quote)p
-740 985 V 21 w(c)n(haracters)195 1040 y Fu(A)c(list)h(of)f(quote)g(c)o
-(haracters)f(whic)o(h)i(can)g(cause)f(a)g(w)o(ord)g(break.)1773
-1156 y(V)l(ariable)-1861 b Fi(const)20 b(char)g(*)f Fh(rl)p
-436 1156 V 21 w(completer)p 705 1156 V 21 w(w)n(ord)p
-850 1156 V 20 w(break)p 1010 1156 V 20 w(c)n(haracters)195
-1211 y Fu(The)33 b(list)g(of)f(c)o(haracters)g(that)f(signal)j(a)e
-(break)g(b)q(et)o(w)o(een)h(w)o(ords)f(for)g Ft(rl_complete_)195
-1266 y(internal\(\))p Fu(.)18 b(The)e(default)g(list)g(is)f(the)h(v)m
-(alue)g(of)f Ft(rl_basic_word_break_chara)o(cters)p Fu(.)1773
-1382 y(V)l(ariable)-1861 b Fi(const)20 b(char)g(*)f Fh(rl)p
-436 1382 V 21 w(completer)p 705 1382 V 21 w(quote)p 865
-1382 V 20 w(c)n(haracters)195 1437 y Fu(A)e(list)h(of)e(c)o(haracters)g
-(whic)o(h)i(can)f(b)q(e)g(used)h(to)e(quote)h(a)f(substring)h(of)g(the)
-g(line.)26 b(Completion)195 1492 y(o)q(ccurs)13 b(on)h(the)f(en)o(tire)
-g(substring,)h(and)f(within)i(the)e(substring)g Ft
-(rl_completer_word_break_)195 1547 y(characters)j Fu(are)h(treated)g
-(as)h(an)o(y)f(other)g(c)o(haracter,)g(unless)i(they)e(also)h(app)q
-(ear)g(within)h(this)195 1601 y(list.)1773 1718 y(V)l(ariable)-1861
-b Fi(const)20 b(char)g(*)f Fh(rl)p 436 1718 V 21 w(\014lename)p
-665 1718 V 20 w(quote)p 824 1718 V 21 w(c)n(haracters)195
-1773 y Fu(A)e(list)h(of)e(c)o(haracters)g(that)g(cause)h(a)g
-(\014lename)h(to)e(b)q(e)i(quoted)e(b)o(y)h(the)g(completer)h(when)f
-(they)195 1828 y(app)q(ear)e(in)h(a)f(completed)h(\014lename.)21
-b(The)16 b(default)g(is)f(the)h(n)o(ull)g(string.)1773
-1944 y(V)l(ariable)-1861 b Fi(const)20 b(char)g(*)f Fh(rl)p
-436 1944 V 21 w(sp)r(ecial)p 623 1944 V 22 w(pre\014xes)195
-1999 y Fu(The)14 b(list)h(of)e(c)o(haracters)g(that)g(are)h(w)o(ord)f
-(break)h(c)o(haracters,)f(but)h(should)h(b)q(e)f(left)g(in)h
-Fk(text)f Fu(when)195 2054 y(it)f(is)f(passed)h(to)f(the)g(completion)h
-(function.)20 b(Programs)11 b(can)h(use)h(this)g(to)f(help)h(determine)
-h(what)195 2108 y(kind)i(of)e(completing)i(to)e(do.)19
-b(F)l(or)14 b(instance,)i(Bash)e(sets)h(this)g(v)m(ariable)h(to)e
-Ft(")p Fu($)p Ft(@")g Fu(so)g(that)g(it)h(can)195 2163
-y(complete)h(shell)h(v)m(ariables)f(and)g(hostnames.)1773
-2280 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p 215 2280
-V 21 w(completion)p 510 2280 V 21 w(query)p 673 2280
-V 21 w(items)195 2334 y Fu(Up)e(to)g(this)g(man)o(y)g(items)g(will)i(b)
-q(e)f(displa)o(y)o(ed)g(in)g(resp)q(onse)g(to)e(a)h(p)q
-(ossible-completions)j(call.)195 2389 y(After)14 b(that,)f(w)o(e)h(ask)
-g(the)h(user)f(if)h(she)f(is)h(sure)g(she)f(w)o(an)o(ts)f(to)h(see)h
-(them)f(all.)20 b(The)15 b(default)g(v)m(alue)195 2444
-y(is)h(100.)1773 2560 y(V)l(ariable)-1861 b Fi(int)20
-b Fh(rl)p 215 2560 V 21 w(completion)p 510 2560 V 21
-w(app)r(end)p 715 2560 V 19 w(c)n(haracter)195 2615 y
-Fu(When)d(a)f(single)i(completion)g(alternativ)o(e)f(matc)o(hes)f(at)g
-(the)h(end)g(of)f(the)h(command)f(line,)j(this)195 2670
-y(c)o(haracter)10 b(is)h(app)q(ended)i(to)d(the)g(inserted)i
-(completion)g(text.)18 b(The)11 b(default)g(is)g(a)g(space)g(c)o
-(haracter)p eop
-%%Page: 46 48
-46 47 bop 75 -58 a Fu(46)1299 b(GNU)15 b(Readline)h(Library)195
-149 y(\(`)e('\).)19 b(Setting)14 b(this)f(to)g(the)g(n)o(ull)i(c)o
-(haracter)e(\(`)p Ft(\\0)p Fu('\))e(prev)o(en)o(ts)i(an)o(ything)h(b)q
-(eing)h(app)q(ended)f(auto-)195 204 y(matically)l(.)21
-b(This)15 b(can)f(b)q(e)h(c)o(hanged)g(in)g(custom)f(completion)i
-(functions)f(to)f(pro)o(vide)h(the)f(\\most)195 259 y(sensible)i(w)o
-(ord)c(separator)h(c)o(haracter")f(according)i(to)f(an)h
-(application-sp)q(eci\014c)j(command)c(line)195 314 y(syn)o(tax)h(sp)q
-(eci\014cation.)1773 423 y(V)l(ariable)-1861 b Fi(int)20
-b Fh(rl)p 215 423 18 3 v 21 w(completion)p 510 423 V
-21 w(suppress)p 746 423 V 19 w(app)r(end)195 478 y Fu(If)e(non-zero,)g
-Fk(rl)p 476 478 14 2 v 17 w(completion)p 709 478 V 18
-w(app)q(end)p 871 478 V 17 w(c)o(haracter)i Fu(is)f(not)e(app)q(ended)i
-(to)e(matc)o(hes)g(at)h(the)f(end)195 533 y(of)c(the)h(command)g(line,)
-h(as)f(describ)q(ed)h(ab)q(o)o(v)o(e.)k(It)14 b(is)h(set)e(to)g(0)h(b)q
-(efore)g(an)o(y)f(application-sp)q(eci)q(\014c)195 588
-y(completion)j(function)g(is)g(called.)1773 697 y(V)l(ariable)-1861
-b Fi(int)20 b Fh(rl)p 215 697 18 3 v 21 w(completion)p
-510 697 V 21 w(mark)p 662 697 V 19 w(symlink)p 875 697
-V 21 w(dirs)195 752 y Fu(If)c(non-zero,)g(a)g(slash)g(will)i(b)q(e)e
-(app)q(ended)i(to)d(completed)i(\014lenames)g(that)e(are)g(sym)o(b)q
-(olic)j(links)195 807 y(to)11 b(directory)i(names,)f(sub)s(ject)g(to)f
-(the)i(v)m(alue)g(of)f(the)g(user-settable)g Fk(mark-directories)j
-Fu(v)m(ariable.)195 862 y(This)i(v)m(ariable)h(exists)f(so)g(that)e
-(application)k(completion)f(functions)f(can)g(o)o(v)o(erride)g(the)f
-(user's)195 917 y(global)f(preference)g(\(set)e(via)h(the)g
-Fk(mark-symlink)o(ed-directories)k Fu(Readline)e(v)m(ariable\))f(if)f
-(appro-)195 971 y(priate.)20 b(This)15 b(v)m(ariable)g(is)g(set)f(to)f
-(the)i(user's)e(preference)j(b)q(efore)e(an)o(y)g(application)i
-(completion)195 1026 y(function)j(is)g(called,)h(so)e(unless)h(that)f
-(function)h(mo)q(di\014es)g(the)f(v)m(alue,)i(the)e(user's)g
-(preferences)195 1081 y(are)d(honored.)1773 1191 y(V)l(ariable)-1861
-b Fi(int)20 b Fh(rl)p 215 1191 V 21 w(ignore)p 391 1191
-V 20 w(completion)p 685 1191 V 21 w(duplicates)195 1245
-y Fu(If)15 b(non-zero,)h(then)f(duplicates)i(in)f(the)f(matc)o(hes)g
-(are)g(remo)o(v)o(ed.)k(The)d(default)g(is)f(1.)1773
-1355 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p 215 1355
-V 21 w(\014lename)p 444 1355 V 20 w(completion)p 738
-1355 V 21 w(desired)195 1410 y Fu(Non-zero)c(means)g(that)f(the)h
-(results)g(of)g(the)g(matc)o(hes)f(are)h(to)f(b)q(e)i(treated)e(as)g
-(\014lenames.)23 b(This)195 1465 y(is)14 b Fl(always)j
-Fu(zero)c(on)g(en)o(try)l(,)g(and)h(can)f(only)h(b)q(e)g(c)o(hanged)f
-(within)i(a)e(completion)h(en)o(try)f(generator)195 1519
-y(function.)38 b(If)21 b(it)g(is)g(set)g(to)f(a)g(non-zero)h(v)m(alue,)
-i(directory)e(names)g(ha)o(v)o(e)g(a)f(slash)h(app)q(ended)195
-1574 y(and)d(Readline)h(attempts)d(to)h(quote)g(completed)i
-(\014lenames)f(if)g(they)g(con)o(tain)g(an)o(y)f(c)o(haracters)195
-1629 y(in)f Ft(rl_filename_quote_character)o(s)d Fu(and)i
-Ft(rl_filename_quoting_desired)d Fu(is)k(set)f(to)f(a)195
-1684 y(non-zero)h(v)m(alue.)1773 1793 y(V)l(ariable)-1861
-b Fi(int)20 b Fh(rl)p 215 1793 V 21 w(\014lename)p 444
-1793 V 20 w(quoting)p 653 1793 V 21 w(desired)195 1848
-y Fu(Non-zero)14 b(means)g(that)f(the)i(results)f(of)g(the)g(matc)o
-(hes)f(are)h(to)f(b)q(e)i(quoted)f(using)h(double)g(quotes)195
-1903 y(\(or)c(an)h(application-sp)q(eci\014)q(c)j(quoting)d(mec)o
-(hanism\))g(if)h(the)f(completed)h(\014lename)g(con)o(tains)f(an)o(y)
-195 1958 y(c)o(haracters)i(in)i Ft(rl_filename_quote_chars)p
-Fu(.)h(This)f(is)f Fl(always)k Fu(non-zero)d(on)f(en)o(try)l(,)f(and)i
-(can)195 2012 y(only)c(b)q(e)g(c)o(hanged)g(within)h(a)f(completion)g
-(en)o(try)g(generator)e(function.)20 b(The)12 b(quoting)g(is)g
-(e\013ected)195 2067 y(via)j(a)g(call)i(to)d(the)i(function)g(p)q(oin)o
-(ted)g(to)e(b)o(y)h Ft(rl_filename_quoting_function)p
-Fu(.)1773 2177 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p
-215 2177 V 21 w(attempted)p 495 2177 V 20 w(completion)p
-789 2177 V 21 w(o)n(v)n(er)195 2232 y Fu(If)47 b(an)g(application-sp)q
-(eci\014)q(c)j(completion)e(function)g(assigned)f(to)g
-Ft(rl_attempted_)195 2286 y(completion_function)24 b
-Fu(sets)i(this)h(v)m(ariable)h(to)e(a)g(non-zero)h(v)m(alue,)j
-(Readline)e(will)g(not)195 2341 y(p)q(erform)15 b(its)g(default)g
-(\014lename)h(completion)g(ev)o(en)f(if)g(the)g(application's)h
-(completion)g(function)195 2396 y(returns)f(no)g(matc)o(hes.)20
-b(It)15 b(should)h(b)q(e)g(set)f(only)h(b)o(y)f(an)g(application's)h
-(completion)h(function.)1773 2506 y(V)l(ariable)-1861
-b Fi(int)20 b Fh(rl)p 215 2506 V 21 w(completion)p 510
-2506 V 21 w(t)n(yp)r(e)195 2560 y Fu(Set)e(to)e(a)i(c)o(haracter)f
-(describing)i(the)e(t)o(yp)q(e)h(of)f(completion)i(Readline)g(is)f
-(curren)o(tly)g(attempt-)195 2615 y(ing;)g(see)f(the)f(description)i
-(of)f Ft(rl_complete_internal\(\))c Fu(\(see)k(Section)h(2.6.2)d
-([Completion)195 2670 y(F)l(unctions],)g(page)g(42\))g(for)f(the)h
-(list)h(of)f(c)o(haracters.)p eop
-%%Page: 47 49
-47 48 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(47)1773 149 y(V)l(ariable)-1861 b Fi(int)20
-b Fh(rl)p 215 149 18 3 v 21 w(inhibit)p 399 149 V 23
-w(completion)195 204 y Fu(If)14 b(this)h(v)m(ariable)g(is)g(non-zero,)f
-(completion)i(is)e(inhibited.)22 b(The)15 b(completion)g(c)o(haracter)e
-(will)j(b)q(e)195 259 y(inserted)g(as)f(an)o(y)g(other)g(b)q(ound)h(to)
-e Ft(self-insert)p Fu(.)75 371 y Fj(2.6.4)30 b(A)21 b(Short)f
-(Completion)g(Example)137 467 y Fu(Here)11 b(is)f(a)g(small)h
-(application)h(demonstrating)e(the)g(use)h(of)e(the)i(GNU)f(Readline)h
-(library)l(.)19 b(It)11 b(is)f(called)75 522 y Ft(fileman)p
-Fu(,)17 b(and)h(the)g(source)g(co)q(de)g(resides)h(in)f(`)p
-Ft(examples/fileman.c)p Fu('.)25 b(This)18 b(sample)g(application)75
-577 y(pro)o(vides)c(completion)g(of)e(command)h(names,)g(line)i
-(editing)g(features,)d(and)i(access)f(to)f(the)h(history)h(list.)p
-eop
-%%Page: 48 50
-48 49 bop 75 -58 a Fu(48)1299 b(GNU)15 b(Readline)h(Library)195
-149 y Ft(/*)24 b(fileman.c)e(--)i(A)g(tiny)f(application)f(which)h
-(demonstrates)g(how)g(to)h(use)f(the)267 201 y(GNU)g(Readline)g
-(library.)46 b(This)24 b(application)e(interactively)g(allows)h(users)
-267 253 y(to)g(manipulate)g(files)g(and)g(their)g(modes.)h(*/)195
-357 y(#include)f(<stdio.h>)195 409 y(#include)g(<sys/types.h>)195
-461 y(#include)g(<sys/file.h>)195 513 y(#include)g(<sys/stat.h>)195
-565 y(#include)g(<sys/errno.h>)195 668 y(#include)g
-(<readline/readline.h>)195 720 y(#include)g(<readline/history.h>)195
-824 y(extern)g(char)g(*xmalloc)g(\(\);)195 928 y(/*)h(The)f(names)g(of)
-h(functions)e(that)i(actually)f(do)g(the)h(manipulation.)e(*/)195
-980 y(int)h(com_list)g(__P\(\(char)g(*\)\);)195 1032
-y(int)g(com_view)g(__P\(\(char)g(*\)\);)195 1083 y(int)g(com_rename)g
-(__P\(\(char)g(*\)\);)195 1135 y(int)g(com_stat)g(__P\(\(char)g(*\)\);)
-195 1187 y(int)g(com_pwd)g(__P\(\(char)g(*\)\);)195 1239
-y(int)g(com_delete)g(__P\(\(char)g(*\)\);)195 1291 y(int)g(com_help)g
-(__P\(\(char)g(*\)\);)195 1343 y(int)g(com_cd)g(__P\(\(char)g(*\)\);)
-195 1395 y(int)g(com_quit)g(__P\(\(char)g(*\)\);)195
-1499 y(/*)h(A)f(structure)g(which)g(contains)g(information)f(on)i(the)f
-(commands)g(this)g(program)267 1550 y(can)g(understand.)f(*/)195
-1654 y(typedef)h(struct)g({)243 1706 y(char)g(*name;)g(/*)h(User)f
-(printable)g(name)g(of)h(the)f(function.)g(*/)243 1758
-y(rl_icpfunc_t)f(*func;)h(/*)h(Function)e(to)i(call)f(to)h(do)f(the)h
-(job.)f(*/)243 1810 y(char)g(*doc;)g(/*)h(Documentation)e(for)h(this)h
-(function.)46 b(*/)195 1862 y(})24 b(COMMAND;)195 1966
-y(COMMAND)f(commands[])f(=)i({)243 2017 y({)f("cd",)h(com_cd,)f
-("Change)f(to)i(directory)f(DIR")g(},)243 2069 y({)g("delete",)g
-(com_delete,)f("Delete)h(FILE")h(},)243 2121 y({)f("help",)g(com_help,)
-g("Display)g(this)g(text")g(},)243 2173 y({)g("?",)h(com_help,)e
-("Synonym)h(for)h(`help'")f(},)243 2225 y({)g("list",)g(com_list,)g
-("List)g(files)g(in)h(DIR")f(},)243 2277 y({)g("ls",)h(com_list,)e
-("Synonym)h(for)g(`list'")g(},)243 2329 y({)g("pwd",)g(com_pwd,)g
-("Print)g(the)h(current)f(working)g(directory")f(},)243
-2381 y({)h("quit",)g(com_quit,)g("Quit)g(using)g(Fileman")g(},)243
-2433 y({)g("rename",)g(com_rename,)f("Rename)h(FILE)h(to)f(NEWNAME")g
-(},)243 2484 y({)g("stat",)g(com_stat,)g("Print)g(out)g(statistics)g
-(on)h(FILE")f(},)243 2536 y({)g("view",)g(com_view,)g("View)g(the)h
-(contents)e(of)i(FILE")f(},)243 2588 y({)g(\(char)h(*\)NULL,)f
-(\(rl_icpfunc_t)f(*\)NULL,)h(\(char)g(*\)NULL)g(})195
-2640 y(};)p eop
-%%Page: 49 51
-49 50 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(49)195 201 y Ft(/*)24 b(Forward)e(declarations.)h(*/)
-195 253 y(char)g(*stripwhite)g(\(\);)195 305 y(COMMAND)g(*find_command)
-f(\(\);)195 409 y(/*)i(The)f(name)g(of)h(this)f(program,)g(as)h(taken)f
-(from)g(argv[0].)g(*/)195 461 y(char)g(*progname;)195
-565 y(/*)h(When)f(non-zero,)g(this)g(means)g(the)g(user)h(is)f(done)h
-(using)f(this)g(program.)g(*/)195 616 y(int)g(done;)195
-720 y(char)g(*)195 772 y(dupstr)g(\(s\))314 824 y(int)h(s;)195
-876 y({)243 928 y(char)f(*r;)243 1032 y(r)g(=)h(xmalloc)f(\(strlen)g
-(\(s\))g(+)h(1\);)243 1083 y(strcpy)f(\(r,)g(s\);)243
-1135 y(return)g(\(r\);)195 1187 y(})195 1291 y(main)g(\(argc,)g(argv\))
-314 1343 y(int)h(argc;)314 1395 y(char)g(**argv;)195
-1447 y({)243 1499 y(char)f(*line,)g(*s;)243 1602 y(progname)f(=)i
-(argv[0];)243 1706 y(initialize_readline)d(\(\);)i(/*)h(Bind)f(our)h
-(completer.)e(*/)243 1810 y(/*)h(Loop)h(reading)f(and)g(executing)g
-(lines)g(until)g(the)g(user)h(quits.)f(*/)243 1862 y(for)g(\()h(;)g
-(done)f(==)h(0;)f(\))290 1914 y({)338 1966 y(line)g(=)h(readline)f
-(\("FileMan:)f("\);)338 2069 y(if)i(\(!line\))386 2121
-y(break;)338 2225 y(/*)g(Remove)f(leading)g(and)g(trailing)g
-(whitespace)f(from)i(the)f(line.)410 2277 y(Then,)g(if)h(there)f(is)g
-(anything)g(left,)g(add)h(it)f(to)h(the)f(history)g(list)410
-2329 y(and)g(execute)g(it.)h(*/)338 2381 y(s)g(=)g(stripwhite)e
-(\(line\);)338 2484 y(if)i(\(*s\))386 2536 y({)434 2588
-y(add_history)e(\(s\);)434 2640 y(execute_line)g(\(s\);)p
-eop
-%%Page: 50 52
-50 51 bop 75 -58 a Fu(50)1299 b(GNU)15 b(Readline)h(Library)386
-149 y Ft(})338 253 y(free)23 b(\(line\);)290 305 y(})243
-357 y(exit)g(\(0\);)195 409 y(})195 513 y(/*)h(Execute)e(a)i(command)f
-(line.)g(*/)195 565 y(int)195 616 y(execute_line)f(\(line\))314
-668 y(char)i(*line;)195 720 y({)243 772 y(register)e(int)i(i;)243
-824 y(COMMAND)f(*command;)243 876 y(char)g(*word;)243
-980 y(/*)g(Isolate)g(the)h(command)f(word.)g(*/)243 1032
-y(i)g(=)h(0;)243 1083 y(while)f(\(line[i])g(&&)g(whitespace)g
-(\(line[i]\)\))290 1135 y(i++;)243 1187 y(word)g(=)h(line)f(+)h(i;)243
-1291 y(while)f(\(line[i])g(&&)g(!whitespace)g(\(line[i]\)\))290
-1343 y(i++;)243 1447 y(if)g(\(line[i]\))290 1499 y(line[i++])g(=)h
-('\\0';)243 1602 y(command)f(=)g(find_command)g(\(word\);)243
-1706 y(if)g(\(!command\))290 1758 y({)338 1810 y(fprintf)g(\(stderr,)g
-("\045s:)g(No)h(such)f(command)g(for)g(FileMan.\\n",)g(word\);)338
-1862 y(return)g(\(-1\);)290 1914 y(})243 2017 y(/*)g(Get)h(argument)f
-(to)g(command,)g(if)g(any.)h(*/)243 2069 y(while)f(\(whitespace)f
-(\(line[i]\)\))290 2121 y(i++;)243 2225 y(word)h(=)h(line)f(+)h(i;)243
-2329 y(/*)f(Call)h(the)f(function.)g(*/)243 2381 y(return)g
-(\(\(*\(command->func\)\))e(\(word\)\);)195 2433 y(})195
-2536 y(/*)j(Look)f(up)g(NAME)h(as)f(the)h(name)f(of)h(a)f(command,)g
-(and)h(return)f(a)g(pointer)g(to)h(that)267 2588 y(command.)46
-b(Return)23 b(a)h(NULL)f(pointer)g(if)h(NAME)f(isn't)g(a)h(command)f
-(name.)g(*/)195 2640 y(COMMAND)g(*)p eop
-%%Page: 51 53
-51 52 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(51)195 149 y Ft(find_command)22 b(\(name\))314
-201 y(char)i(*name;)195 253 y({)243 305 y(register)e(int)i(i;)243
-409 y(for)f(\(i)h(=)f(0;)h(commands[i].name;)e(i++\))290
-461 y(if)i(\(strcmp)f(\(name,)g(commands[i].name\))f(==)h(0\))338
-513 y(return)g(\(&commands[i]\);)243 616 y(return)g(\(\(COMMAND)f
-(*\)NULL\);)195 668 y(})195 772 y(/*)i(Strip)f(whitespace)f(from)i(the)
-f(start)g(and)h(end)f(of)h(STRING.)46 b(Return)24 b(a)f(pointer)267
-824 y(into)g(STRING.)g(*/)195 876 y(char)g(*)195 928
-y(stripwhite)f(\(string\))314 980 y(char)i(*string;)195
-1032 y({)243 1083 y(register)e(char)i(*s,)f(*t;)243 1187
-y(for)g(\(s)h(=)f(string;)g(whitespace)g(\(*s\);)g(s++\))290
-1239 y(;)243 1343 y(if)g(\(*s)h(==)f(0\))290 1395 y(return)g(\(s\);)243
-1499 y(t)g(=)h(s)g(+)g(strlen)f(\(s\))g(-)h(1;)243 1550
-y(while)f(\(t)g(>)h(s)g(&&)g(whitespace)e(\(*t\)\))290
-1602 y(t--;)243 1654 y(*++t)h(=)h('\\0';)243 1758 y(return)f(s;)195
-1810 y(})195 1914 y(/*)h(***********************)o(*******)o(********)o
-(*******)o(*******)o(********)o(****)d(*/)195 1966 y(/*)1575
-b(*/)195 2017 y(/*)429 b(Interface)23 b(to)g(Readline)g(Completion)381
-b(*/)195 2069 y(/*)1575 b(*/)195 2121 y(/*)24 b
-(***********************)o(*******)o(********)o(*******)o(*******)o
-(********)o(****)d(*/)195 2225 y(char)i(*command_generator)f
-(__P\(\(const)g(char)i(*,)f(int\)\);)195 2277 y(char)g
-(**fileman_completion)e(__P\(\(const)i(char)g(*,)h(int,)f(int\)\);)195
-2381 y(/*)h(Tell)f(the)g(GNU)h(Readline)f(library)f(how)i(to)g
-(complete.)46 b(We)24 b(want)f(to)h(try)f(to)267 2433
-y(complete)f(on)i(command)f(names)g(if)h(this)f(is)h(the)f(first)g
-(word)g(in)h(the)g(line,)f(or)267 2484 y(on)g(filenames)g(if)g(not.)h
-(*/)195 2536 y(initialize_readline)d(\(\))195 2588 y({)243
-2640 y(/*)i(Allow)g(conditional)g(parsing)g(of)g(the)h(~/.inputrc)e
-(file.)h(*/)p eop
-%%Page: 52 54
-52 53 bop 75 -58 a Fu(52)1299 b(GNU)15 b(Readline)h(Library)243
-149 y Ft(rl_readline_name)21 b(=)j("FileMan";)243 253
-y(/*)f(Tell)h(the)f(completer)g(that)g(we)h(want)f(a)h(crack)f(first.)g
-(*/)243 305 y(rl_attempted_completion_)o(functio)o(n)e(=)j
-(fileman_completion;)195 357 y(})195 461 y(/*)g(Attempt)e(to)i
-(complete)f(on)g(the)h(contents)f(of)g(TEXT.)47 b(START)23
-b(and)h(END)267 513 y(bound)f(the)g(region)g(of)h(rl_line_buffer)e
-(that)h(contains)g(the)g(word)h(to)267 565 y(complete.)46
-b(TEXT)23 b(is)h(the)f(word)h(to)f(complete.)47 b(We)23
-b(can)h(use)f(the)h(entire)267 616 y(contents)e(of)i(rl_line_buffer)e
-(in)h(case)h(we)f(want)h(to)f(do)h(some)f(simple)267
-668 y(parsing.)46 b(Returnthe)23 b(array)g(of)h(matches,)e(or)i(NULL)f
-(if)h(there)f(aren't)g(any.)g(*/)195 720 y(char)g(**)195
-772 y(fileman_completion)e(\(text,)i(start,)g(end\))314
-824 y(const)g(char)h(*text;)314 876 y(int)g(start,)f(end;)195
-928 y({)243 980 y(char)g(**matches;)243 1083 y(matches)g(=)g(\(char)h
-(**\)NULL;)243 1187 y(/*)f(If)h(this)f(word)h(is)f(at)h(the)f(start)g
-(of)h(the)f(line,)h(then)f(it)g(is)h(a)g(command)314
-1239 y(to)g(complete.)46 b(Otherwise)23 b(it)h(is)f(the)h(name)f(of)h
-(a)f(file)h(in)f(the)h(current)314 1291 y(directory.)f(*/)243
-1343 y(if)g(\(start)g(==)h(0\))290 1395 y(matches)f(=)h
-(rl_completion_matches)d(\(text,)i(command_generator\);)243
-1499 y(return)g(\(matches\);)195 1550 y(})195 1654 y(/*)h(Generator)e
-(function)h(for)g(command)g(completion.)47 b(STATE)23
-b(lets)g(us)267 1706 y(know)g(whether)g(to)g(start)h(from)f(scratch;)g
-(without)g(any)g(state)267 1758 y(\(i.e.)g(STATE)g(==)h(0\),)f(then)g
-(we)h(start)f(at)h(the)f(top)h(of)f(the)h(list.)f(*/)195
-1810 y(char)g(*)195 1862 y(command_generator)f(\(text,)h(state\))314
-1914 y(const)g(char)h(*text;)314 1966 y(int)g(state;)195
-2017 y({)243 2069 y(static)f(int)g(list_index,)g(len;)243
-2121 y(char)g(*name;)243 2225 y(/*)g(If)h(this)f(is)h(a)g(new)f(word)g
-(to)h(complete,)f(initialize)f(now.)47 b(This)314 2277
-y(includes)23 b(saving)g(the)h(length)f(of)g(TEXT)h(for)f(efficiency,)f
-(and)314 2329 y(initializing)h(the)g(index)g(variable)g(to)h(0.)f(*/)
-243 2381 y(if)g(\(!state\))290 2433 y({)338 2484 y(list_index)g(=)g(0;)
-338 2536 y(len)h(=)f(strlen)g(\(text\);)290 2588 y(})p
-eop
-%%Page: 53 55
-53 54 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(53)243 149 y Ft(/*)23 b(Return)g(the)h(next)f(name)g
-(which)h(partially)e(matches)h(from)g(the)314 201 y(command)g(list.)g
-(*/)243 253 y(while)g(\(name)g(=)h(commands[list_index].name)o(\))290
-305 y({)338 357 y(list_index++;)338 461 y(if)g(\(strncmp)f(\(name,)g
-(text,)g(len\))g(==)h(0\))386 513 y(return)f(\(dupstr\(name\)\);)290
-565 y(})243 668 y(/*)g(If)h(no)f(names)h(matched,)e(then)i(return)f
-(NULL.)g(*/)243 720 y(return)g(\(\(char)g(*\)NULL\);)195
-772 y(})195 876 y(/*)h(***********************)o(*******)o(********)o
-(*******)o(*******)o(********)o(****)d(*/)195 928 y(/*)1575
-b(*/)195 980 y(/*)549 b(FileMan)22 b(Commands)644 b(*/)195
-1032 y(/*)1575 b(*/)195 1083 y(/*)24 b(***********************)o
-(*******)o(********)o(*******)o(*******)o(********)o(****)d(*/)195
-1187 y(/*)j(String)f(to)g(pass)h(to)f(system)g(\(\).)47
-b(This)24 b(is)f(for)h(the)f(LIST,)g(VIEW)h(and)f(RENAME)267
-1239 y(commands.)f(*/)195 1291 y(static)h(char)g(syscom[1024];)195
-1395 y(/*)h(List)f(the)g(file\(s\))g(named)g(in)h(arg.)f(*/)195
-1447 y(com_list)g(\(arg\))314 1499 y(char)h(*arg;)195
-1550 y({)243 1602 y(if)f(\(!arg\))290 1654 y(arg)h(=)g("";)243
-1758 y(sprintf)f(\(syscom,)f("ls)i(-FClg)f(\045s",)g(arg\);)243
-1810 y(return)g(\(system)g(\(syscom\)\);)195 1862 y(})195
-1966 y(com_view)g(\(arg\))314 2017 y(char)h(*arg;)195
-2069 y({)243 2121 y(if)f(\(!valid_argument)f(\("view",)h(arg\)\))290
-2173 y(return)g(1;)243 2277 y(sprintf)g(\(syscom,)f("more)i(\045s",)f
-(arg\);)243 2329 y(return)g(\(system)g(\(syscom\)\);)195
-2381 y(})195 2484 y(com_rename)f(\(arg\))314 2536 y(char)i(*arg;)195
-2588 y({)243 2640 y(too_dangerous)e(\("rename"\);)p eop
-%%Page: 54 56
-54 55 bop 75 -58 a Fu(54)1299 b(GNU)15 b(Readline)h(Library)243
-149 y Ft(return)23 b(\(1\);)195 201 y(})195 305 y(com_stat)g(\(arg\))
-314 357 y(char)h(*arg;)195 409 y({)243 461 y(struct)f(stat)g(finfo;)243
-565 y(if)g(\(!valid_argument)f(\("stat",)h(arg\)\))290
-616 y(return)g(\(1\);)243 720 y(if)g(\(stat)g(\(arg,)h(&finfo\))f(==)g
-(-1\))290 772 y({)338 824 y(perror)g(\(arg\);)338 876
-y(return)g(\(1\);)290 928 y(})243 1032 y(printf)g(\("Statistics)f(for)h
-(`\045s':\\n",)g(arg\);)243 1135 y(printf)g(\("\045s)g(has)h(\045d)f
-(link\045s,)g(and)g(is)h(\045d)g(byte\045s)f(in)g(length.\\n",)g(arg,)
-434 1187 y(finfo.st_nlink,)434 1239 y(\(finfo.st_nlink)e(==)j(1\))g(?)f
-("")h(:)g("s",)434 1291 y(finfo.st_size,)434 1343 y(\(finfo.st_size)e
-(==)h(1\))h(?)f("")h(:)g("s"\);)243 1395 y(printf)f(\("Inode)g(Last)g
-(Change)g(at:)g(\045s",)h(ctime)f(\(&finfo.st_ctime\)\);)243
-1447 y(printf)g(\(")143 b(Last)23 b(access)g(at:)g(\045s",)h(ctime)f
-(\(&finfo.st_atime\)\);)243 1499 y(printf)g(\(")95 b(Last)23
-b(modified)g(at:)g(\045s",)h(ctime)f(\(&finfo.st_mtime\)\);)243
-1550 y(return)g(\(0\);)195 1602 y(})195 1706 y(com_delete)f(\(arg\))314
-1758 y(char)i(*arg;)195 1810 y({)243 1862 y(too_dangerous)e
-(\("delete"\);)243 1914 y(return)h(\(1\);)195 1966 y(})195
-2069 y(/*)h(Print)f(out)g(help)h(for)f(ARG,)g(or)h(for)f(all)h(of)f
-(the)h(commands)f(if)g(ARG)h(is)267 2121 y(not)f(present.)g(*/)195
-2173 y(com_help)g(\(arg\))314 2225 y(char)h(*arg;)195
-2277 y({)243 2329 y(register)e(int)i(i;)243 2381 y(int)f(printed)g(=)h
-(0;)243 2484 y(for)f(\(i)h(=)f(0;)h(commands[i].name;)e(i++\))290
-2536 y({)338 2588 y(if)i(\(!*arg)f(||)g(\(strcmp)g(\(arg,)g
-(commands[i].name\))f(==)i(0\)\))386 2640 y({)p eop
-%%Page: 55 57
-55 56 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(55)434 149 y Ft(printf)23 b(\("\045s\\t\\t\045s.\\n",)e
-(commands[i].name,)h(commands[i].doc\);)434 201 y(printed++;)386
-253 y(})290 305 y(})243 409 y(if)h(\(!printed\))290 461
-y({)338 513 y(printf)g(\("No)h(commands)e(match)h(`\045s'.)48
-b(Possibilties)22 b(are:\\n",)h(arg\);)338 616 y(for)h(\(i)f(=)h(0;)g
-(commands[i].name;)d(i++\))386 668 y({)434 720 y(/*)i(Print)g(in)h(six)
-f(columns.)g(*/)434 772 y(if)g(\(printed)g(==)h(6\))481
-824 y({)529 876 y(printed)f(=)h(0;)529 928 y(printf)f(\("\\n"\);)481
-980 y(})434 1083 y(printf)g(\("\045s\\t",)f(commands[i].name\);)434
-1135 y(printed++;)386 1187 y(})338 1291 y(if)i(\(printed\))386
-1343 y(printf)f(\("\\n"\);)290 1395 y(})243 1447 y(return)g(\(0\);)195
-1499 y(})195 1602 y(/*)h(Change)f(to)g(the)h(directory)e(ARG.)i(*/)195
-1654 y(com_cd)f(\(arg\))314 1706 y(char)h(*arg;)195 1758
-y({)243 1810 y(if)f(\(chdir)g(\(arg\))h(==)f(-1\))290
-1862 y({)338 1914 y(perror)g(\(arg\);)338 1966 y(return)g(1;)290
-2017 y(})243 2121 y(com_pwd)g(\(""\);)243 2173 y(return)g(\(0\);)195
-2225 y(})195 2329 y(/*)h(Print)f(out)g(the)h(current)f(working)f
-(directory.)h(*/)195 2381 y(com_pwd)g(\(ignore\))314
-2433 y(char)h(*ignore;)195 2484 y({)243 2536 y(char)f(dir[1024],)g(*s;)
-243 2640 y(s)g(=)h(getcwd)f(\(dir,)g(sizeof\(dir\))g(-)g(1\);)p
-eop
-%%Page: 56 58
-56 57 bop 75 -58 a Fu(56)1299 b(GNU)15 b(Readline)h(Library)243
-149 y Ft(if)23 b(\(s)h(==)f(0\))290 201 y({)338 253 y(printf)g
-(\("Error)g(getting)g(pwd:)g(\045s\\n",)g(dir\);)338
-305 y(return)g(1;)290 357 y(})243 461 y(printf)g(\("Current)f
-(directory)h(is)h(\045s\\n",)f(dir\);)243 513 y(return)g(0;)195
-565 y(})195 668 y(/*)h(The)f(user)g(wishes)g(to)h(quit)f(using)g(this)h
-(program.)46 b(Just)24 b(set)f(DONE)267 720 y(non-zero.)f(*/)195
-772 y(com_quit)h(\(arg\))314 824 y(char)h(*arg;)195 876
-y({)243 928 y(done)f(=)h(1;)243 980 y(return)f(\(0\);)195
-1032 y(})195 1135 y(/*)h(Function)e(which)i(tells)f(you)g(that)g(you)h
-(can't)f(do)h(this.)f(*/)195 1187 y(too_dangerous)f(\(caller\))314
-1239 y(char)i(*caller;)195 1291 y({)243 1343 y(fprintf)f(\(stderr,)457
-1395 y("\045s:)h(Too)f(dangerous)g(for)g(me)h(to)g(distribute.\\n")457
-1447 y(caller\);)243 1499 y(fprintf)f(\(stderr,)f("Write)h(it)h
-(yourself.\\n"\);)195 1550 y(})195 1654 y(/*)g(Return)f(non-zero)f(if)i
-(ARG)f(is)h(a)g(valid)f(argument)g(for)g(CALLER,)267
-1706 y(else)g(print)g(an)h(error)f(message)g(and)g(return)g(zero.)g(*/)
-195 1758 y(int)195 1810 y(valid_argument)f(\(caller,)h(arg\))314
-1862 y(char)h(*caller,)e(*arg;)195 1914 y({)243 1966
-y(if)h(\(!arg)g(||)h(!*arg\))290 2017 y({)338 2069 y(fprintf)f
-(\(stderr,)g("\045s:)g(Argument)g(required.\\n",)f(caller\);)338
-2121 y(return)h(\(0\);)290 2173 y(})243 2277 y(return)g(\(1\);)195
-2329 y(})p eop
-%%Page: 57 59
-57 58 bop 75 -58 a Fu(Concept)15 b(Index)1466 b(57)75
-149 y Fq(Concept)27 b(Index)75 321 y Fs(C)75 382 y Ff(command)14
-b(editing)e Fe(.)6 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)22
-b Ff(1)75 511 y Fs(E)75 572 y Ff(editing)15 b(command)f(lines)f
-Fe(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)g(.)24 b Ff(1)75 702 y Fs(I)75
-763 y Ff(initiali)q(zati)q(on)16 b(\014le,)e(readline)t
-Fe(.)8 b(.)e(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)17 b Ff(4)75 808 y(in)o(teraction,)e(readline)5
-b Fe(.)j(.)f(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)18 b Ff(1)75
-938 y Fs(K)75 999 y Ff(kill)d(ring)8 b Fe(.)f(.)f(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)20
-b Ff(3)75 1044 y(killing)c(text)9 b Fe(.)d(.)h(.)f(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)21 b Ff(2)1012 321
-y Fs(N)1012 390 y Ff(notation,)15 b(readline)7 b Fe(.)h(.)e(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)g(.)g(.)20 b Ff(1)1012 539 y Fs(R)1012
-608 y Ff(readline,)15 b(function)8 b Fe(.)g(.)e(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)21 b Ff(21)1012 757 y Fs(V)1012 826 y Ff(v)n(ariables,)15
-b(readline)t Fe(.)9 b(.)d(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)17
-b Ff(4)1012 976 y Fs(Y)1012 1044 y Ff(y)o(anking)e(text)t
-Fe(.)7 b(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)17
-b Ff(2)p eop
-%%Page: 58 60
-58 59 bop 75 -58 a Fu(58)1299 b(GNU)15 b(Readline)h(Library)p
-eop
-%%Page: 59 61
-59 60 bop 75 -58 a Fu(F)l(unction)16 b(and)f(V)l(ariable)i(Index)1187
-b(59)75 149 y Fq(F)-7 b(unction)26 b(and)h(V)-7 b(ariable)26
-b(Index)p 79 307 21 3 v 75 369 a Fd(_rl_digit_)o(p)7
-b Fe(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)23
-b Ff(36)75 415 y Fd(_rl_digit_)o(va)o(lue)6 b Fe(.)t(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)20 b Ff(37)75 462 y Fd(_rl_lowerc)o(as)o(e_p)6
-b Fe(.)t(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)20 b Ff(36)75
-508 y Fd(_rl_to_low)o(er)6 b Fe(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)h(.)f(.)22 b Ff(36)75 554 y Fd(_rl_to_upp)o(er)6
-b Fe(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)22
-b Ff(36)75 600 y Fd(_rl_upperc)o(as)o(e_p)6 b Fe(.)t(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)20 b Ff(36)75 733 y Fs(A)75 794 y
-Fd(abort)11 b(\(C-g\))5 b Fe(.)t(.)h(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)17 b Ff(17)75 841 y Fd(accept-lin)o(e)10
-b(\(Newline)f(or)j(Return\))6 b Fe(.)t(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)19 b Ff(12)75 973 y Fs(B)75 1035 y Fd(backward-c)o(ha)o(r)10
-b(\(C-b\))e Fe(.)t(.)e(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)21 b Ff(12)75
-1081 y Fd(backward-d)o(el)o(ete)o(-c)o(har)9 b(\(Rubout\))e
-Fe(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)22
-b Ff(14)75 1127 y Fd(backward-k)o(il)o(l-l)o(in)o(e)10
-b(\(C-x)h(Rubout\))e Fe(.)d(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)24
-b Ff(15)75 1174 y Fd(backward-k)o(il)o(l-w)o(or)o(d)10
-b(\(M-)501 1172 y Fn(h)p 512 1146 73 2 v 512 1174 a Fm(DEL)p
-512 1181 V 583 1172 a Fn(i)598 1174 y Fd(\))g Fe(.)c(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)23 b Ff(15)75 1220 y
-Fd(backward-w)o(or)o(d)10 b(\(M-b\))e Fe(.)t(.)e(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)21
-b Ff(12)75 1266 y Fd(beginning-)o(of)o(-hi)o(st)o(ory)9
-b(\(M-<\))h Fe(.)c(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)25 b Ff(13)75 1312 y Fd(beginning-)o(of)o(-li)o(ne)9
-b(\(C-a\))c Fe(.)t(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)18 b Ff(12)75 1359 y(b)q(ell-st)o(yle)7
-b Fe(.)i(.)d(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)20 b Ff(5)75 1490 y Fs(C)75 1552 y Fd(call-last-)o(kb)o(d-m)
-o(ac)o(ro)9 b(\(C-x)j(e\))5 b Fe(.)h(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)g(.)h(.)f(.)18 b Ff(17)75 1598 y Fd(capitalize)o(-w)o(ord)9
-b(\(M-c\))d Fe(.)f(.)h(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)19 b Ff(14)75 1644 y Fd(character-)o(se)
-o(arc)o(h)10 b(\(C-]\))c Fe(.)t(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)18 b Ff(18)75
-1691 y Fd(character-)o(se)o(arc)o(h-)o(bac)o(kwa)o(rd)9
-b(\(M-C-]\))e Fe(.)s(.)g(.)f(.)g(.)g(.)g(.)g(.)g(.)20
-b Ff(18)75 1737 y Fd(clear-scre)o(en)9 b(\(C-l\))g Fe(.)t(.)d(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)h(.)f(.)21 b Ff(12)75 1783 y(commen)o(t-b)q(egin)9
-b Fe(.)f(.)e(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)21
-b Ff(5)75 1829 y Fd(complete)10 b(\()265 1827 y Fn(h)p
-276 1801 74 2 v 276 1829 a Fm(T)m(AB)p 276 1837 V 348
-1827 a Fn(i)363 1829 y Fd(\))f Fe(.)e(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)
-22 b Ff(16)75 1875 y(completion-query-i)q(tems)t Fe(.)9
-b(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)h(.)16 b Ff(5)75 1922 y(con)o(v)o(ert-meta)10
-b Fe(.)c(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)22
-b Ff(5)75 1968 y Fd(copy-backw)o(ar)o(d-w)o(or)o(d)10
-b(\(\))c Fe(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)19 b Ff(15)75 2014 y Fd(copy-forwa)o(rd)o
-(-wo)o(rd)9 b(\(\))e Fe(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)20 b Ff(16)75
-2060 y Fd(copy-regio)o(n-)o(as-)o(ki)o(ll)9 b(\(\))d
-Fe(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)18 b Ff(15)75 2193 y Fs(D)75 2255 y Fd(delete-cha)o(r)10
-b(\(C-d\))d Fe(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)22 b Ff(14)75
-2301 y Fd(delete-cha)o(r-)o(or-)o(li)o(st)9 b(\(\))d
-Fe(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)18 b Ff(17)75 2347 y Fd(delete-hor)o(iz)o(ont)o(al)o
-(-sp)o(ace)9 b(\(\))i Fe(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)25 b Ff(15)75 2393 y Fd(digit-argu)o(me)o(nt)9
-b(\()p Fc(M-0)p Fd(,)i Fc(M-1)p Fd(,)h(...)f Fc(M--)p
-Fd(\))c Fe(.)e(.)h(.)g(.)g(.)h(.)f(.)g(.)g(.)20 b Ff(16)75
-2439 y(disable-comple)q(tion)9 b Fe(.)g(.)d(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)21 b Ff(5)75 2486 y Fd(do-upperca)o(se)o(-ve)o(rs)o(ion)9
-b(\(M-a,)i(M-b,)g(M-)p Fb(x)p Fd(,)h(...)o(\))159 2531
-y Fe(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)g(.)g(.)20 b Ff(17)75 2578 y Fd(downcase-w)o(or)o(d)10
-b(\(M-l\))e Fe(.)t(.)e(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)21 b Ff(14)75
-2624 y Fd(dump-funct)o(io)o(ns)9 b(\(\))g Fe(.)d(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)22 b Ff(18)75 2670 y Fd(dump-macro)o(s)10 b(\(\))g
-Fe(.)c(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)24 b Ff(18)1012
-307 y Fd(dump-variab)o(le)o(s)10 b(\(\))e Fe(.)e(.)h(.)f(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)23 b Ff(18)1012 449 y Fs(E)1012 514 y Ff(editing-mo)q(de)12
-b Fe(.)7 b(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)22
-b Ff(5)1012 562 y Fd(emacs-editi)o(ng)o(-mo)o(de)9 b(\(C-e\))t
-Fe(.)c(.)h(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)18 b Ff(18)1012 610 y(enable-k)o(eypad)9 b Fe(.)g(.)d(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)22 b Ff(5)1012
-658 y Fd(end-kbd-mac)o(ro)9 b(\(C-x)i(\)\))e Fe(.)e(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)23
-b Ff(17)1012 706 y Fd(end-of-hist)o(or)o(y)10 b(\(M->\))d
-Fe(.)t(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)h(.)20 b Ff(13)1012 754 y Fd(end-of-line)9
-b(\(C-e\))e Fe(.)f(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)23 b Ff(12)1012
-802 y Fd(exchange-po)o(in)o(t-a)o(nd)o(-ma)o(rk)9 b(\(C-x)j(C-x\))c
-Fe(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)24 b Ff(18)1012
-850 y(expand-tilde)6 b Fe(.)j(.)d(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)19 b Ff(5)1012 991 y Fs(F)1012 1056
-y Fd(forward-bac)o(kw)o(ard)o(-d)o(ele)o(te)o(-ch)o(ar)9
-b(\(\))f Fe(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)22
-b Ff(14)1012 1104 y Fd(forward-cha)o(r)10 b(\(C-f\))f
-Fe(.)s(.)e(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)22 b Ff(12)1012 1152 y
-Fd(forward-sea)o(rc)o(h-h)o(is)o(tor)o(y)10 b(\(C-s\))e
-Fe(.)e(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)24
-b Ff(13)1012 1200 y Fd(forward-wor)o(d)10 b(\(M-f\))f
-Fe(.)s(.)e(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)22 b Ff(12)1012 1334 y
-Fs(H)1012 1400 y Ff(history-preserv)o(e-p)q(oi)q(n)o(t)8
-b Fe(.)h(.)d(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)21 b Ff(5)1012 1448 y
-Fd(history-sea)o(rc)o(h-b)o(ac)o(kwa)o(rd)9 b(\(\))i
-Fe(.)c(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)25
-b Ff(13)1012 1496 y Fd(history-sea)o(rc)o(h-f)o(or)o(war)o(d)10
-b(\(\))s Fe(.)c(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)17 b Ff(13)1012 1543 y(horizon)o(tal-scrol)q(l-mo)r(de)6
-b Fe(.)j(.)d(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)19 b Ff(6)1012 1678 y
-Fs(I)1012 1743 y Ff(input-meta)8 b Fe(.)g(.)e(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21 b Ff(6)1012 1791
-y Fd(insert-comm)o(en)o(t)10 b(\(M-#\))d Fe(.)t(.)f(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)20
-b Ff(18)1012 1839 y Fd(insert-comp)o(le)o(tio)o(ns)9
-b(\(M-*\))t Fe(.)c(.)h(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)18 b Ff(16)1012 1887 y(isearc)o(h-terminators)t
-Fe(.)8 b(.)f(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)16 b Ff(6)1012
-2021 y Fs(K)1012 2087 y Ff(k)o(eymap)9 b Fe(.)e(.)f(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)22
-b Ff(6)1012 2135 y Fd(kill-line)10 b(\(C-k\))f Fe(.)d(.)g(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)24 b Ff(15)1012 2183 y Fd(kill-region)9
-b(\(\))i Fe(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)25
-b Ff(15)1012 2231 y Fd(kill-whole-)o(li)o(ne)9 b(\(\))g
-Fe(.)c(.)i(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)22 b Ff(15)1012 2278 y
-Fd(kill-word)10 b(\(M-d\))f Fe(.)d(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-24 b Ff(15)1012 2413 y Fs(M)1012 2478 y Ff(mark-mo)q(di\014ed-li)q(nes)
-8 b Fe(.)h(.)d(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21 b Ff(6)1012
-2526 y(mark-symlink)o(ed-di)q(rectori)q(es)14 b Fe(.)6
-b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)23 b Ff(6)1012 2574 y(matc)o(h-hidden-\014l)q(es)14
-b Fe(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)24 b Ff(6)1012
-2622 y Fd(menu-comple)o(te)9 b(\(\))g Fe(.)e(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)23 b Ff(16)1012 2670 y(meta-\015ag)t Fe(.)8 b(.)e(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)18
-b Ff(6)p eop
-%%Page: 60 62
-60 61 bop 75 -58 a Fu(60)1299 b(GNU)15 b(Readline)h(Library)75
-149 y Fs(N)75 210 y Fd(next-histo)o(ry)9 b(\(C-n\))g
-Fe(.)t(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)21 b Ff(13)75 256 y Fd(non-increm)o(en)o
-(tal)o(-f)o(orw)o(ard)o(-s)o(ear)o(ch)o(-hi)o(st)o(ory)9
-b(\(M-n\))159 302 y Fe(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)20 b Ff(13)75
-347 y Fd(non-increm)o(en)o(tal)o(-r)o(eve)o(rse)o(-s)o(ear)o(ch)o(-hi)o
-(st)o(ory)9 b(\(M-p\))159 393 y Fe(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)20
-b Ff(13)75 515 y Fs(O)75 576 y Ff(output-meta)5 b Fe(.)i(.)f(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)18 b Ff(6)75
-622 y Fd(overwrite-)o(mo)o(de)9 b(\(\))g Fe(.)d(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)22 b Ff(15)75 744 y Fs(P)75 805 y Ff(page-completions)14
-b Fe(.)6 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)23
-b Ff(7)75 851 y Fd(possible-c)o(om)o(ple)o(ti)o(ons)9
-b(\(M-?\))h Fe(.)c(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)25 b Ff(16)75 897 y Fd(prefix-met)o(a)10 b(\()324
-895 y Fn(h)p 335 868 70 2 v 335 897 a Fm(ESC)p 335 904
-V 402 895 a Fn(i)417 897 y Fd(\))g Fe(.)c(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)23
-b Ff(17)75 942 y Fd(previous-h)o(is)o(tor)o(y)10 b(\(C-p\))c
-Fe(.)t(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)18 b Ff(12)75 1072 y Fs(Q)75 1133 y Fd(quoted-ins)o(er)o
-(t)10 b(\(C-q)h(or)h(C-v\))c Fe(.)e(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)h(.)f(.)22 b Ff(14)75 1263 y Fs(R)75
-1323 y Fd(re-read-in)o(it)o(-fi)o(le)9 b(\(C-x)i(C-r\))5
-b Fe(.)h(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)18
-b Ff(17)75 1369 y Fd(readline)s Fe(.)s(.)7 b(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)16 b Ff(21)75
-1415 y Fd(redraw-cur)o(re)o(nt-)o(li)o(ne)9 b(\(\))d
-Fe(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)18 b Ff(12)75 1461 y Fd(reverse-se)o(ar)o(ch-)o(hi)o
-(sto)o(ry)9 b(\(C-r\))g Fe(.)d(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)23 b Ff(13)75 1506 y Fd(revert-lin)o(e)10
-b(\(M-r\))d Fe(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)22 b Ff(17)75
-1552 y Fd(rl_add_def)o(un)6 b Fe(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)22 b Ff(28)75 1598 y Fd(rl_add_fun)o(ma)o(p_e)o(nt)o(ry)
-t Fe(.)s(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Ff(31)75 1643 y Fd(rl_add_und)o(o)7
-b Fe(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)23
-b Ff(32)75 1689 y Fd(rl_alphabe)o(ti)o(c)9 b Fe(.)s(.)d(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)22 b Ff(36)75 1735 y Fd(rl_already)o(_p)o(rom)o
-(pt)o(ed)t Fe(.)s(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Ff(25)75
-1781 y Fd(rl_attempt)o(ed)o(_co)o(mp)o(let)o(ion)o(_f)o(unc)o(ti)o(on)t
-Fe(.)s(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)17 b Ff(43)75
-1826 y Fd(rl_attempt)o(ed)o(_co)o(mp)o(let)o(ion)o(_o)o(ver)6
-b Fe(.)s(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)20
-b Ff(46)75 1872 y Fd(rl_basic_q)o(uo)o(te_)o(ch)o(ara)o(cte)o(rs)8
-b Fe(.)t(.)e(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-22 b Ff(45)75 1918 y Fd(rl_basic_w)o(or)o(d_b)o(re)o(ak_)o(cha)o(ra)o
-(cte)o(rs)5 b Fe(.)s(.)h(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)18
-b Ff(45)75 1964 y Fd(rl_begin_u)o(nd)o(o_g)o(ro)o(up)t
-Fe(.)s(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Ff(32)75 2009 y Fd(rl_bind_ke)o(y)7
-b Fe(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)23
-b Ff(30)75 2055 y Fd(rl_bind_ke)o(y_)o(in_)o(ma)o(p)5
-b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)18 b Ff(30)75 2101 y
-Fd(rl_binding)o(_k)o(eym)o(ap)5 b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)19
-b Ff(27)75 2146 y Fd(rl_callbac)o(k_)o(han)o(dl)o(er_)o(ins)o(ta)o(ll)7
-b Fe(.)s(.)g(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)20
-b Ff(38)75 2192 y Fd(rl_callbac)o(k_)o(han)o(dl)o(er_)o(rem)o(ov)o(e)8
-b Fe(.)t(.)e(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)21
-b Ff(38)75 2238 y Fd(rl_callbac)o(k_)o(rea)o(d_)o(cha)o(r)9
-b Fe(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)25 b Ff(38)75 2284 y Fd(rl_catch_s)o(ig)o(nal)o(s)6
-b Fe(.)t(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)19 b Ff(40)75
-2329 y Fd(rl_catch_s)o(ig)o(win)o(ch)5 b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)19 b Ff(40)75 2375 y Fd(rl_char_is)o(_q)o(uot)o(ed)o(_p)t
-Fe(.)s(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Ff(44)75 2421 y Fd(rl_cleanup)o(_a)o
-(fte)o(r_)o(sig)o(nal)7 b Fe(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)23 b Ff(40)75 2467 y
-Fd(rl_clear_m)o(es)o(sag)o(e)6 b Fe(.)t(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)
-19 b Ff(33)75 2512 y Fd(rl_clear_p)o(en)o(din)o(g_)o(inp)o(ut)8
-b Fe(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)24 b Ff(35)1012 149 y Fd(rl_clear_si)o(gn)o(als)6
-b Fe(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)20 b Ff(41)1012
-196 y Fd(rl_complete)6 b Fe(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)24 b Ff(42)1012 242 y Fd(rl_complete)o(_i)o(nte)o(rn)o(al)s
-Fe(.)t(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)17 b Ff(42)1012 288 y Fd(rl_complete)o(r_)o
-(quo)o(te)o(_ch)o(ar)o(act)o(ers)5 b Fe(.)t(.)h(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)20 b Ff(45)1012 335 y Fd(rl_complete)o(r_)o(wor)o
-(d_)o(bre)o(ak)o(_ch)o(ara)o(ct)o(ers)8 b Fe(.)e(.)g(.)g(.)h(.)f(.)g(.)
-25 b Ff(45)1012 381 y Fd(rl_completi)o(on)o(_ap)o(pe)o(nd_)o(ch)o(ara)o
-(cte)o(r)5 b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)19
-b Ff(45)1012 427 y Fd(rl_completi)o(on)o(_di)o(sp)o(lay)o(_m)o(atc)o
-(hes)o(_h)o(ook)8 b Fe(.)e(.)g(.)g(.)h(.)f(.)g(.)25 b
-Ff(45)1012 474 y Fd(rl_completi)o(on)o(_en)o(tr)o(y_f)o(un)o(cti)o(on)s
-Fe(.)s(.)6 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)17 b Ff(42,)c(43)1012
-520 y Fd(rl_completi)o(on)o(_ma)o(rk)o(_sy)o(ml)o(ink)o(_di)o(rs)t
-Fe(.)s(.)7 b(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)18 b Ff(46)1012
-566 y Fd(rl_completi)o(on)o(_ma)o(tc)o(hes)8 b Fe(.)f(.)f(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)25
-b Ff(43)1012 613 y Fd(rl_completi)o(on)o(_mo)o(de)t Fe(.)t(.)6
-b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)g(.)19 b Ff(43)1012 659 y Fd(rl_completi)o(on)o(_qu)
-o(er)o(y_i)o(te)o(ms)9 b Fe(.)s(.)d(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)g(.)23 b Ff(45)1012 705 y Fd(rl_completi)o(on)o(_su)
-o(pp)o(res)o(s_)o(app)o(end)5 b Fe(.)t(.)h(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)20 b Ff(46)1012 752 y Fd(rl_completi)o(on)o(_ty)o(pe)t
-Fe(.)t(.)6 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)19 b Ff(46)1012 798 y
-Fd(rl_copy_key)o(ma)o(p)8 b Fe(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)21 b Ff(29)1012 844 y Fd(rl_copy_tex)o(t)6 b Fe(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)23 b Ff(34)1012 891 y
-Fd(rl_crlf)t Fe(.)t(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)17 b Ff(33)1012 937 y Fd(rl_delete_t)o(ex)o(t)8
-b Fe(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)21 b
-Ff(34)1012 983 y Fd(rl_deprep_t)o(er)o(m_f)o(un)o(cti)o(on)7
-b Fe(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)24 b Ff(26)1012 1030 y Fd(rl_deprep_t)o(er)o(min)o(al)t
-Fe(.)t(.)6 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)19 b Ff(35)1012 1076
-y Fd(rl_ding)t Fe(.)t(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)17 b Ff(36)1012 1122 y Fd(rl_director)o(y_)o
-(com)o(pl)o(eti)o(on)o(_ho)o(ok)7 b Fe(.)s(.)f(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)g(.)h(.)20 b Ff(44)1012 1169 y Fd(rl_discard_)o(ke)o
-(yma)o(p)6 b Fe(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)19 b Ff(29)1012
-1215 y Fd(rl_dispatch)o(in)o(g)8 b Fe(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)21 b Ff(25)1012 1261 y Fd(rl_display_)o(ma)o(tch)o(_l)o
-(ist)8 b Fe(.)f(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)h(.)25 b Ff(36)1012 1308 y Fd(rl_do_undo)8
-b Fe(.)e(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)24
-b Ff(32)1012 1354 y Fd(rl_done)t Fe(.)t(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)17 b Ff(24)1012
-1400 y Fd(rl_editing_)o(mo)o(de)7 b Fe(.)s(.)f(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)21 b Ff(28)1012 1447 y Fd(rl_end)5 b Fe(.)t(.)h(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)18
-b Ff(24)1012 1493 y Fd(rl_end_undo)o(_g)o(rou)o(p)6 b
-Fe(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)19 b Ff(32)1012 1539
-y Fd(rl_erase_em)o(pt)o(y_l)o(in)o(e)t Fe(.)t(.)6 b(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)18
-b Ff(25)1012 1586 y Fd(rl_event_ho)o(ok)8 b Fe(.)s(.)e(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)22 b Ff(26)1012 1632 y Fd(rl_execute_)o(ne)o
-(xt)7 b Fe(.)s(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21
-b Ff(35)1012 1678 y Fd(rl_executin)o(g_)o(key)o(ma)o(p)t
-Fe(.)t(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)18 b Ff(26)1012 1725 y Fd(rl_executin)o(g_)
-o(mac)o(ro)t Fe(.)t(.)6 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)19 b Ff(27)1012
-1771 y Fd(rl_expand_p)o(ro)o(mpt)6 b Fe(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)20 b Ff(34)1012 1817 y Fd(rl_explicit)o(_a)o(rg)7
-b Fe(.)s(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21 b Ff(28)1012
-1864 y Fd(rl_extend_l)o(in)o(e_b)o(uf)o(fer)8 b Fe(.)f(.)f(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)25
-b Ff(36)1012 1910 y Fd(rl_filename)o(_c)o(omp)o(le)o(tio)o(n_)o(des)o
-(ire)o(d)5 b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)19
-b Ff(46)1012 1956 y Fd(rl_filename)o(_c)o(omp)o(le)o(tio)o(n_)o(fun)o
-(cti)o(on)t Fe(.)s(.)7 b(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)18
-b Ff(43)1012 2003 y Fd(rl_filename)o(_d)o(equ)o(ot)o(ing)o(_f)o(unc)o
-(tio)o(n)5 b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)19
-b Ff(44)1012 2049 y Fd(rl_filename)o(_q)o(uot)o(e_)o(cha)o(ra)o(cte)o
-(rs)7 b Fe(.)s(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)20
-b Ff(45)1012 2095 y Fd(rl_filename)o(_q)o(uot)o(in)o(g_d)o(es)o(ire)o
-(d)8 b Fe(.)s(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)21
-b Ff(46)1012 2142 y Fd(rl_filename)o(_q)o(uot)o(in)o(g_f)o(un)o(cti)o
-(on)7 b Fe(.)s(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)20
-b Ff(44)1012 2188 y Fd(rl_forced_u)o(pd)o(ate)o(_d)o(isp)o(la)o(y)7
-b Fe(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)23 b Ff(33)1012 2234 y Fd(rl_free_lin)o(e_)o(sta)o(te)t
-Fe(.)t(.)6 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)19 b Ff(40)1012 2281
-y Fd(rl_free_und)o(o_)o(lis)o(t)6 b Fe(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-19 b Ff(32)1012 2327 y Fd(rl_function)o(_d)o(ump)o(er)t
-Fe(.)t(.)6 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)19 b Ff(31)1012 2373
-y Fd(rl_function)o(_o)o(f_k)o(ey)o(seq)8 b Fe(.)f(.)f(.)g(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)25
-b Ff(31)1012 2420 y Fd(rl_funmap_n)o(am)o(es)7 b Fe(.)s(.)f(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)21 b Ff(31)1012 2466 y Fd(rl_generic_)o(bi)o(nd)7
-b Fe(.)s(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21 b Ff(30)1012
-2512 y Fd(rl_get_keym)o(ap)8 b Fe(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)22 b Ff(29)p eop
-%%Page: 61 63
-61 62 bop 75 -58 a Fu(F)l(unction)16 b(and)f(V)l(ariable)i(Index)1187
-b(61)75 149 y Fd(rl_get_key)o(ma)o(p_b)o(y_)o(nam)o(e)9
-b Fe(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)25 b Ff(29)75 196 y Fd(rl_get_key)o(ma)o(p_n)o(am)o(e)5
-b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)18 b Ff(29)75 242 y Fd(rl_get_scr)o(ee)
-o(n_s)o(iz)o(e)5 b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)18
-b Ff(41)75 288 y Fd(rl_get_ter)o(mc)o(ap)8 b Fe(.)s(.)e(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)21 b Ff(37)75 335 y Fd(rl_getc)t
-Fe(.)t(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)17 b Ff(35)75 381 y Fd(rl_getc_fu)o(nc)o(tio)o(n)6
-b Fe(.)t(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)19 b Ff(26)75
-427 y Fd(rl_gnu_rea)o(dl)o(ine)o(_p)5 b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)19 b Ff(25)75 474 y Fd(rl_ignore_)o(co)o(mpl)o(et)o(ion)o(_du)o(pl)
-o(ica)o(te)o(s)5 b Fe(.)s(.)h(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)18
-b Ff(46)75 520 y Fd(rl_ignore_)o(so)o(me_)o(co)o(mpl)o(eti)o(on)o(s_f)o
-(un)o(cti)o(on)7 b Fe(.)g(.)f(.)g(.)g(.)g(.)24 b Ff(44)75
-566 y Fd(rl_inhibit)o(_c)o(omp)o(le)o(tio)o(n)9 b Fe(.)d(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)25
-b Ff(47)75 613 y Fd(rl_initial)o(iz)o(e)9 b Fe(.)s(.)d(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)22 b Ff(36)75 659 y Fd(rl_insert_)o(co)o(mpl)o
-(et)o(ion)o(s)9 b Fe(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)25 b Ff(43)75 705 y Fd(rl_insert_)o(te)
-o(xt)8 b Fe(.)s(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21
-b Ff(34)75 752 y Fd(rl_instrea)o(m)7 b Fe(.)f(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)g(.)23 b Ff(25)75 798 y Fd(rl_invokin)o(g_)o
-(key)o(se)o(qs)t Fe(.)s(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Ff(31)75
-844 y Fd(rl_invokin)o(g_)o(key)o(se)o(qs_)o(in_)o(ma)o(p)8
-b Fe(.)t(.)e(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)21
-b Ff(31)75 891 y Fd(rl_kill_te)o(xt)6 b Fe(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)22 b Ff(34)75 937 y Fd(rl_last_fu)o(nc)6
-b Fe(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)22
-b Ff(26)75 983 y Fd(rl_library)o(_v)o(ers)o(io)o(n)5
-b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)18 b Ff(25)75 1030 y
-Fd(rl_line_bu)o(ff)o(er)8 b Fe(.)s(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)21 b Ff(24)75 1076 y Fd(rl_list_fu)o(nm)o(ap_)o(na)o(mes)s
-Fe(.)s(.)6 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)16 b Ff(31)75 1122 y Fd(rl_macro_b)o(in)o(d)9
-b Fe(.)s(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)22
-b Ff(37)75 1169 y Fd(rl_macro_d)o(um)o(per)6 b Fe(.)t(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)20 b Ff(37)75 1215 y Fd(rl_make_ba)o(re)o(_ke)o(ym)
-o(ap)t Fe(.)s(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Ff(29)75 1261
-y Fd(rl_make_ke)o(ym)o(ap)8 b Fe(.)s(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)21 b Ff(29)75 1308 y Fd(rl_mark)t Fe(.)t(.)6 b(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)17
-b Ff(24)75 1354 y Fd(rl_message)7 b Fe(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)24 b Ff(33)75 1400 y Fd(rl_modifyi)o(ng)6
-b Fe(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)22
-b Ff(32)75 1447 y Fd(rl_named_f)o(un)o(cti)o(on)5 b Fe(.)s(.)i(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)19 b Ff(31)75 1493 y Fd(rl_num_cha)o(rs)o(_to)o(_r)o
-(ead)s Fe(.)s(.)6 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)16 b Ff(24)75 1539 y Fd(rl_numeric)o(_a)
-o(rg)8 b Fe(.)s(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21
-b Ff(28)75 1586 y Fd(rl_on_new_)o(li)o(ne)8 b Fe(.)s(.)e(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)21 b Ff(33)75 1632 y Fd(rl_on_new_)o(li)o(ne_)o
-(wi)o(th_)o(pro)o(mp)o(t)8 b Fe(.)t(.)e(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)g(.)h(.)f(.)21 b Ff(33)75 1678 y Fd(rl_outstre)o(am)6
-b Fe(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)22
-b Ff(26)75 1725 y Fd(rl_parse_a)o(nd)o(_bi)o(nd)5 b Fe(.)s(.)i(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)19 b Ff(31)75 1771 y Fd(rl_pending)o(_i)o(npu)o(t)6
-b Fe(.)t(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)19 b Ff(24)75
-1817 y Fd(rl_point)s Fe(.)s(.)7 b(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)16 b Ff(24)75 1864 y Fd(rl_possibl)o(e_)o
-(com)o(pl)o(eti)o(ons)7 b Fe(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)23 b Ff(42)75 1910 y
-Fd(rl_pre_inp)o(ut)o(_ho)o(ok)5 b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)19
-b Ff(26)75 1956 y Fd(rl_prep_te)o(rm)o(_fu)o(nc)o(tio)o(n)9
-b Fe(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)25 b Ff(26)75 2003 y Fd(rl_prep_te)o(rm)o(ina)o(l)6
-b Fe(.)t(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)19 b Ff(35)75
-2049 y Fd(rl_prompt)8 b Fe(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)24 b Ff(25)75 2095 y Fd(rl_push_ma)o(cr)o(o_i)o(np)
-o(ut)t Fe(.)s(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Ff(34)75 2142
-y Fd(rl_read_in)o(it)o(_fi)o(le)5 b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-19 b Ff(31)75 2188 y Fd(rl_read_ke)o(y)7 b Fe(.)f(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)23 b Ff(34)75 2234 y
-Fd(rl_readlin)o(e_)o(nam)o(e)6 b Fe(.)t(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)
-19 b Ff(25)75 2281 y Fd(rl_readlin)o(e_)o(sta)o(te)5
-b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)19 b Ff(27)75 2327
-y Fd(rl_readlin)o(e_)o(ver)o(si)o(on)t Fe(.)s(.)6 b(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)17
-b Ff(25)75 2373 y Fd(rl_redispl)o(ay)6 b Fe(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)22 b Ff(33)75 2420 y Fd(rl_redispl)o(ay)o(_fu)o
-(nc)o(tio)o(n)9 b Fe(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)25 b Ff(26)75 2466 y
-Fd(rl_replace)o(_l)o(ine)6 b Fe(.)t(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-20 b Ff(36)75 2512 y Fd(rl_reset_a)o(ft)o(er_)o(si)o(gna)o(l)9
-b Fe(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)25 b Ff(40)1012 149 y Fd(rl_reset_li)o(ne)o(_st)o(at)o
-(e)t Fe(.)t(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)18 b Ff(33)1012 195
-y Fd(rl_reset_te)o(rm)o(ina)o(l)6 b Fe(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-19 b Ff(35)1012 241 y Fd(rl_resize_t)o(er)o(min)o(al)t
-Fe(.)t(.)6 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)19 b Ff(41)1012 287 y
-Fd(rl_restore_)o(pr)o(omp)o(t)6 b Fe(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)19
-b Ff(34)1012 333 y Fd(rl_save_pro)o(mp)o(t)8 b Fe(.)s(.)e(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)21 b Ff(33)1012 379 y Fd(rl_set_key)8
-b Fe(.)e(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)24
-b Ff(30)1012 424 y Fd(rl_set_keyb)o(oa)o(rd_)o(in)o(put)o(_t)o(ime)o
-(out)5 b Fe(.)t(.)h(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)20
-b Ff(35)1012 470 y Fd(rl_set_keym)o(ap)8 b Fe(.)s(.)e(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)22 b Ff(29)1012 516 y Fd(rl_set_pare)o(n_)o
-(bli)o(nk)o(_ti)o(me)o(out)7 b Fe(.)t(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)22 b Ff(37)1012 562 y Fd(rl_set_prom)o(pt)8
-b Fe(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)22
-b Ff(34)1012 608 y Fd(rl_set_scre)o(en)o(_si)o(ze)t Fe(.)t(.)6
-b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)g(.)19 b Ff(41)1012 654 y Fd(rl_set_sign)o(al)o(s)8
-b Fe(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)21 b
-Ff(41)1012 700 y Fd(rl_show_cha)o(r)6 b Fe(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)23 b Ff(33)1012 745 y Fd(rl_special_)o(pr)o
-(efi)o(xe)o(s)t Fe(.)t(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)18 b Ff(45)1012
-791 y Fd(rl_startup_)o(ho)o(ok)7 b Fe(.)s(.)f(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)21 b Ff(26)1012 837 y Fd(rl_stuff_ch)o(ar)8 b
-Fe(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)22
-b Ff(35)1012 883 y Fd(rl_terminal)o(_n)o(ame)6 b Fe(.)s(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)20 b Ff(25)1012 929 y Fd(rl_tty_set_)o(de)o(fau)o(lt)o
-(_bi)o(nd)o(ing)o(s)8 b Fe(.)s(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)21 b Ff(35)1012 975 y Fd(rl_unbind_c)o(om)o(man)o(d_)o
-(in_)o(ma)o(p)7 b Fe(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)h(.)f(.)23 b Ff(30)1012 1020 y Fd(rl_unbind_f)o(un)o(cti)o
-(on)o(_in)o(_m)o(ap)9 b Fe(.)s(.)d(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)g(.)23 b Ff(30)1012 1066 y Fd(rl_unbind_k)o(ey)8
-b Fe(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)22
-b Ff(30)1012 1112 y Fd(rl_unbind_k)o(ey)o(_in)o(_m)o(ap)s
-Fe(.)t(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)17 b Ff(30)1012 1158 y Fd(rl_username)o(_c)o
-(omp)o(le)o(tio)o(n_)o(fun)o(cti)o(on)t Fe(.)s(.)7 b(.)f(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)18 b Ff(43)1012 1204 y Fd(rl_variable)o(_b)o(ind)6
-b Fe(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)20 b Ff(37)1012
-1250 y Fd(rl_variable)o(_d)o(ump)o(er)t Fe(.)t(.)6 b(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
-(.)19 b Ff(37)1012 1380 y Fs(S)1012 1441 y Fd(self-insert)9
-b(\(a,)j(b,)g(A,)g(1,)g(!,)g(...)o(\))6 b Fe(.)g(.)g(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)20 b Ff(14)1012 1487 y Fd(set-mark)10
-b(\(C-@\))g Fe(.)c(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)25
-b Ff(17)1012 1533 y(sho)o(w-all-if-am)o(bigu)q(ous)14
-b Fe(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)23 b Ff(7)1012 1579
-y Fd(start-kbd-m)o(ac)o(ro)9 b(\(C-x)j(\(\))c Fe(.)d(.)i(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)22
-b Ff(17)1012 1701 y Fs(T)1012 1763 y Fd(tab-insert)9
-b(\(M-)1281 1761 y Fn(h)p 1292 1735 74 2 v 1292 1763
-a Fm(T)m(AB)p 1292 1770 V 1364 1761 a Fn(i)1379 1763
-y Fd(\))e Fe(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)20 b Ff(14)1012 1808
-y Fd(tilde-expan)o(d)10 b(\(M-~\))f Fe(.)s(.)e(.)f(.)g(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)22
-b Ff(17)1012 1854 y Fd(transpose-c)o(ha)o(rs)9 b(\(C-t\))d
-Fe(.)f(.)h(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)20 b Ff(14)1012 1900 y Fd(transpose-w)o(or)o(ds)9
-b(\(M-t\))d Fe(.)f(.)h(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)20 b Ff(14)1012 2030 y
-Fs(U)1012 2092 y Fd(undo)12 b(\(C-_)f(or)h(C-x)g(C-u\))c
-Fe(.)t(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)21 b Ff(17)1012 2137 y Fd(universal-a)o(rg)o
-(ume)o(nt)9 b(\(\))d Fe(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)20 b Ff(16)1012
-2183 y Fd(unix-line-d)o(is)o(car)o(d)10 b(\(C-u\))5 b
-Fe(.)t(.)h(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)18 b Ff(15)1012 2229 y Fd(unix-word-r)o(ub)o(out)9
-b(\(C-w\))d Fe(.)t(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)19 b Ff(15)1012 2275 y Fd(upcase-word)9
-b(\(M-u\))e Fe(.)f(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)23 b Ff(14)1012
-2405 y Fs(V)1012 2466 y Fd(vi-editing-)o(mo)o(de)9 b(\(M-C-j\))c
-Fe(.)t(.)h(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)18 b Ff(18)1012 2512 y(visible-stats)c Fe(.)6
-b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)24
-b Ff(7)p eop
-%%Page: 62 64
-62 63 bop 75 -58 a Fu(62)1299 b(GNU)15 b(Readline)h(Library)75
-149 y Fs(Y)75 242 y Fd(yank)11 b(\(C-y\))5 b Fe(.)g(.)h(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)18 b Ff(16)1012
-149 y Fd(yank-last-a)o(rg)9 b(\(M-.)i(or)h(M-_\))c Fe(.)f(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)23
-b Ff(13)1012 196 y Fd(yank-nth-ar)o(g)10 b(\(M-C-y\))d
-Fe(.)s(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)h(.)20 b Ff(13)1012 242 y Fd(yank-pop)10
-b(\(M-y\))g Fe(.)c(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)25
-b Ff(16)p eop
-%%Page: -1 65
--1 64 bop 1862 -58 a Fu(i)75 149 y Fq(T)-7 b(able)27
-b(of)f(Con)n(ten)n(ts)75 320 y Fs(1)67 b(Command)22 b(Line)i(Editing)d
-Fa(.)10 b(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)h
-(.)f(.)g(.)g(.)42 b Fs(1)224 389 y Fu(1.1)j(In)o(tro)q(duction)16
-b(to)f(Line)h(Editing)e Fl(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)27 b Fu(1)224 444 y(1.2)45 b(Readline)16 b(In)o(teraction)8
-b Fl(.)g(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)23 b Fu(1)374 499 y(1.2.1)44 b(Readline)16
-b(Bare)f(Essen)o(tials)f Fl(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)27
-b Fu(1)374 553 y(1.2.2)44 b(Readline)16 b(Mo)o(v)o(emen)o(t)e(Commands)
-7 b Fl(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
-(.)h(.)21 b Fu(2)374 608 y(1.2.3)44 b(Readline)16 b(Killing)i(Commands)
-11 b Fl(.)c(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)h(.)f(.)h(.)25 b Fu(2)374 663 y(1.2.4)44 b(Readline)16
-b(Argumen)o(ts)c Fl(.)c(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)27
-b Fu(3)374 718 y(1.2.5)44 b(Searc)o(hing)16 b(for)e(Commands)h(in)h
-(the)f(History)e Fl(.)8 b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)27
-b Fu(3)224 773 y(1.3)45 b(Readline)16 b(Init)h(File)e
-Fl(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)29 b Fu(4)374 827 y(1.3.1)44 b(Readline)16
-b(Init)g(File)h(Syn)o(tax)7 b Fl(.)g(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)21
-b Fu(4)374 882 y(1.3.2)44 b(Conditional)16 b(Init)g(Constructs)5
-b Fl(.)i(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)h(.)g(.)f(.)19 b Fu(9)374 937 y(1.3.3)44 b(Sample)16
-b(Init)g(File)11 b Fl(.)e(.)e(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
-(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)26 b Fu(9)224 992 y(1.4)45 b(Bindable)17 b(Readline)g(Commands)
-6 b Fl(.)h(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)21 b Fu(12)374
-1046 y(1.4.1)44 b(Commands)14 b(F)l(or)h(Mo)o(ving)e
-Fl(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)h(.)f(.)h(.)f(.)h(.)28 b Fu(12)374 1101 y(1.4.2)44
-b(Commands)14 b(F)l(or)h(Manipulating)i(The)e(History)9
-b Fl(.)e(.)h(.)f(.)h(.)f(.)h(.)24 b Fu(12)374 1156 y(1.4.3)44
-b(Commands)14 b(F)l(or)h(Changing)h(T)l(ext)e Fl(.)8
-b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)30
-b Fu(14)374 1211 y(1.4.4)44 b(Killing)18 b(And)e(Y)l(anking)9
-b Fl(.)e(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)24 b Fu(15)374
-1266 y(1.4.5)44 b(Sp)q(ecifying)17 b(Numeric)f(Argumen)o(ts)c
-Fl(.)c(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)27
-b Fu(16)374 1320 y(1.4.6)44 b(Letting)15 b(Readline)i(T)o(yp)q(e)e(F)l
-(or)g(Y)l(ou)10 b Fl(.)d(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)h(.)f(.)25 b Fu(16)374 1375 y(1.4.7)44 b(Keyb)q(oard)15
-b(Macros)6 b Fl(.)h(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)21
-b Fu(17)374 1430 y(1.4.8)44 b(Some)15 b(Miscellaneous)i(Commands)7
-b Fl(.)g(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-22 b Fu(17)224 1485 y(1.5)45 b(Readline)16 b(vi)g(Mo)q(de)e
-Fl(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)28 b Fu(18)75 1606 y Fs(2)67 b(Programming)23
-b(with)g(GNU)f(Readline)12 b Fa(.)f(.)g(.)f(.)g(.)g(.)g(.)h(.)f(.)35
-b Fs(21)224 1675 y Fu(2.1)45 b(Basic)16 b(Beha)o(vior)8
-b Fl(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)23 b Fu(21)224 1729 y(2.2)45
-b(Custom)14 b(F)l(unctions)7 b Fl(.)i(.)f(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)22 b Fu(22)374
-1784 y(2.2.1)44 b(Readline)16 b(T)o(yp)q(edefs)9 b Fl(.)g(.)e(.)h(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)g(.)f(.)h(.)24 b Fu(23)374 1839 y(2.2.2)44
-b(W)l(riting)16 b(a)e(New)i(F)l(unction)6 b Fl(.)i(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-21 b Fu(23)224 1894 y(2.3)45 b(Readline)16 b(V)l(ariables)g
-Fl(.)8 b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g
-(.)f(.)h(.)29 b Fu(24)224 1949 y(2.4)45 b(Readline)16
-b(Con)o(v)o(enience)h(F)l(unctions)7 b Fl(.)i(.)e(.)h(.)f(.)h(.)f(.)h
-(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-23 b Fu(28)374 2003 y(2.4.1)44 b(Naming)15 b(a)g(F)l(unction)e
-Fl(.)7 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)27 b Fu(28)374
-2058 y(2.4.2)44 b(Selecting)17 b(a)e(Keymap)6 b Fl(.)h(.)h(.)g(.)f(.)h
-(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)h(.)f(.)h(.)21 b Fu(29)374 2113 y(2.4.3)44 b(Binding)17
-b(Keys)5 b Fl(.)j(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)
-h(.)f(.)20 b Fu(30)374 2168 y(2.4.4)44 b(Asso)q(ciating)16
-b(F)l(unction)g(Names)f(and)g(Bindings)8 b Fl(.)h(.)f(.)f(.)h(.)f(.)h
-(.)23 b Fu(31)374 2222 y(2.4.5)44 b(Allo)o(wing)16 b(Undoing)f
-Fl(.)8 b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)
-f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)29 b
-Fu(32)374 2277 y(2.4.6)44 b(Redispla)o(y)10 b Fl(.)e(.)g(.)g(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)26
-b Fu(33)374 2332 y(2.4.7)44 b(Mo)q(difying)16 b(T)l(ext)7
-b Fl(.)g(.)g(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)22
-b Fu(34)374 2387 y(2.4.8)44 b(Character)14 b(Input)c
-Fl(.)f(.)e(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)25
-b Fu(34)374 2442 y(2.4.9)44 b(T)l(erminal)16 b(Managemen)o(t)11
-b Fl(.)c(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)
-h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)27 b Fu(35)374 2496 y(2.4.10)43
-b(Utilit)o(y)17 b(F)l(unctions)c Fl(.)7 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)28 b Fu(36)374 2551 y(2.4.11)43 b(Miscellaneous)18
-b(F)l(unctions)6 b Fl(.)i(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)21 b Fu(37)374
-2606 y(2.4.12)43 b(Alternate)16 b(In)o(terface)f Fl(.)7
-b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)30 b Fu(37)374 2661
-y(2.4.13)43 b(A)16 b(Readline)g(Example)9 b Fl(.)f(.)f(.)h(.)f(.)h(.)g
-(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)24 b Fu(38)p eop
-%%Page: -2 66
--2 65 bop 75 -58 a Fu(ii)1321 b(GNU)15 b(Readline)h(Library)224
-42 y(2.5)45 b(Readline)16 b(Signal)h(Handling)12 b Fl(.)c(.)g(.)f(.)h
-(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)27 b Fu(39)224 96
-y(2.6)45 b(Custom)14 b(Completers)f Fl(.)8 b(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)28 b Fu(41)374
-151 y(2.6.1)44 b(Ho)o(w)14 b(Completing)i(W)l(orks)10
-b Fl(.)d(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)f(.)25 b Fu(41)374 206 y(2.6.2)44
-b(Completion)16 b(F)l(unctions)6 b Fl(.)i(.)g(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-21 b Fu(42)374 261 y(2.6.3)44 b(Completion)16 b(V)l(ariables)c
-Fl(.)c(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)27 b Fu(43)374 315
-y(2.6.4)44 b(A)15 b(Short)g(Completion)h(Example)5 b
-Fl(.)j(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)20 b Fu(47)75 437 y Fs(Concept)i(Index)10 b Fa(.)i(.)e(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)33 b Fs(57)75 572
-y(F)-6 b(unction)25 b(and)d(V)-6 b(ariable)24 b(Index)9
-b Fa(.)i(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)32 b Fs(59)p eop
-%%Trailer
-end
-userdict /end-hook known{end-hook}if
-%%EOF
diff --git a/readline-4.3.orig/doc/readline_3.ps b/readline-4.3.orig/doc/readline_3.ps
deleted file mode 100644
index 7d20e17..0000000
--- a/readline-4.3.orig/doc/readline_3.ps
+++ /dev/null
@@ -1,1294 +0,0 @@
-%!PS-Adobe-3.0
-%%Creator: groff version 1.17.2
-%%CreationDate: Thu Jun 27 13:54:44 2002
-%%DocumentNeededResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Courier
-%%DocumentSuppliedResources: procset grops 1.17 2
-%%Pages: 14
-%%PageOrder: Ascend
-%%Orientation: Portrait
-%%EndComments
-%%BeginProlog
-%%BeginResource: procset grops 1.17 2
-/setpacking where{
-pop
-currentpacking
-true setpacking
-}if
-/grops 120 dict dup begin
-/SC 32 def
-/A/show load def
-/B{0 SC 3 -1 roll widthshow}bind def
-/C{0 exch ashow}bind def
-/D{0 exch 0 SC 5 2 roll awidthshow}bind def
-/E{0 rmoveto show}bind def
-/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
-/G{0 rmoveto 0 exch ashow}bind def
-/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/I{0 exch rmoveto show}bind def
-/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
-/K{0 exch rmoveto 0 exch ashow}bind def
-/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/M{rmoveto show}bind def
-/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
-/O{rmoveto 0 exch ashow}bind def
-/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/Q{moveto show}bind def
-/R{moveto 0 SC 3 -1 roll widthshow}bind def
-/S{moveto 0 exch ashow}bind def
-/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/SF{
-findfont exch
-[exch dup 0 exch 0 exch neg 0 0]makefont
-dup setfont
-[exch/setfont cvx]cvx bind def
-}bind def
-/MF{
-findfont
-[5 2 roll
-0 3 1 roll
-neg 0 0]makefont
-dup setfont
-[exch/setfont cvx]cvx bind def
-}bind def
-/level0 0 def
-/RES 0 def
-/PL 0 def
-/LS 0 def
-/MANUAL{
-statusdict begin/manualfeed true store end
-}bind def
-/PLG{
-gsave newpath clippath pathbbox grestore
-exch pop add exch pop
-}bind def
-/BP{
-/level0 save def
-1 setlinecap
-1 setlinejoin
-72 RES div dup scale
-LS{
-90 rotate
-}{
-0 PL translate
-}ifelse
-1 -1 scale
-}bind def
-/EP{
-level0 restore
-showpage
-}bind def
-/DA{
-newpath arcn stroke
-}bind def
-/SN{
-transform
-.25 sub exch .25 sub exch
-round .25 add exch round .25 add exch
-itransform
-}bind def
-/DL{
-SN
-moveto
-SN
-lineto stroke
-}bind def
-/DC{
-newpath 0 360 arc closepath
-}bind def
-/TM matrix def
-/DE{
-TM currentmatrix pop
-translate scale newpath 0 0 .5 0 360 arc closepath
-TM setmatrix
-}bind def
-/RC/rcurveto load def
-/RL/rlineto load def
-/ST/stroke load def
-/MT/moveto load def
-/CL/closepath load def
-/FL{
-currentgray exch setgray fill setgray
-}bind def
-/BL/fill load def
-/LW/setlinewidth load def
-/RE{
-findfont
-dup maxlength 1 index/FontName known not{1 add}if dict begin
-{
-1 index/FID ne{def}{pop pop}ifelse
-}forall
-/Encoding exch def
-dup/FontName exch def
-currentdict end definefont pop
-}bind def
-/DEFS 0 def
-/EBEGIN{
-moveto
-DEFS begin
-}bind def
-/EEND/end load def
-/CNT 0 def
-/level1 0 def
-/PBEGIN{
-/level1 save def
-translate
-div 3 1 roll div exch scale
-neg exch neg exch translate
-0 setgray
-0 setlinecap
-1 setlinewidth
-0 setlinejoin
-10 setmiterlimit
-[]0 setdash
-/setstrokeadjust where{
-pop
-false setstrokeadjust
-}if
-/setoverprint where{
-pop
-false setoverprint
-}if
-newpath
-/CNT countdictstack def
-userdict begin
-/showpage{}def
-}bind def
-/PEND{
-clear
-countdictstack CNT sub{end}repeat
-level1 restore
-}bind def
-end def
-/setpacking where{
-pop
-setpacking
-}if
-%%EndResource
-%%IncludeResource: font Times-Roman
-%%IncludeResource: font Times-Bold
-%%IncludeResource: font Times-Italic
-%%IncludeResource: font Courier
-grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
-def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron
-/scaron/zcaron/Ydieresis/trademark/quotesingle/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
-/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
-/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
-/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
-/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
-/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
-/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
-/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
-/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
-/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
-/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
-/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
-/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
-/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
-/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
-/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
-/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
-/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
-/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
-/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
-/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
-/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
-/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
-/Courier@0 ENC0/Courier RE/Times-Italic@0 ENC0/Times-Italic RE
-/Times-Bold@0 ENC0/Times-Bold RE/Times-Roman@0 ENC0/Times-Roman RE
-%%EndProlog
-%%Page: 1 1
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R/F1
-10.95/Times-Bold@0 SF -.219(NA)72 84 S(ME).219 E F0
-(readline \255 get a line from a user with editing)108 96 Q F1(SYNOPSIS)
-72 112.8 Q/F2 10/Times-Bold@0 SF(#include <stdio.h>)108 124.8 Q
-(#include <r)108 136.8 Q(eadline/r)-.18 E(eadline.h>)-.18 E(#include <r)
-108 148.8 Q(eadline/history)-.18 E(.h>)-.7 E/F3 10/Times-Italic@0 SF
--.15(ch)108 165.6 S(ar *).15 E F2 -.18(re)108 177.6 S(adline).18 E F0
-(\()2.5 E F3(const c)A(har *pr)-.15 E(ompt)-.45 E F0(\);)A F1(COPYRIGHT)
-72 194.4 Q F0(Readline is Cop)108 206.4 Q
-(yright \251 1989\2552002 by the Free Softw)-.1 E(are F)-.1 E
-(oundation, Inc.)-.15 E F1(DESCRIPTION)72 223.2 Q F2 -.18(re)108 235.2 S
-(adline).18 E F0 .088
-(will read a line from the terminal and return it, using)2.588 F F2(pr)
-2.587 E(ompt)-.18 E F0 .087(as a prompt.)2.587 F(If)5.087 E F2(pr)2.587
-E(ompt)-.18 E F0(is)2.587 E F2(NULL)2.587 E F0(or)2.587 E .42
-(the empty string, no prompt is issued.)108 247.2 R .421
-(The line returned is allocated with)5.42 F F3(malloc)2.921 E F0 .421
-(\(3\); the caller must free it).31 F(when \214nished.)108 259.2 Q
-(The line returned has the \214nal ne)5 E(wline remo)-.25 E -.15(ve)-.15
-G(d, so only the te).15 E(xt of the line remains.)-.15 E F2 -.18(re)108
-276 S(adline).18 E F0(of)3.79 E 1.29
-(fers editing capabilities while the user is entering the line.)-.25 F
-1.289(By def)6.289 F 1.289(ault, the line editing com-)-.1 F
-(mands are similar to those of emacs.)108 288 Q 2.5(Av)5 G
-(i\255style line editing interf)-2.5 E(ace is also a)-.1 E -.25(va)-.2 G
-(ilable.).25 E .272
-(This manual page describes only the most basic use of)108 304.8 R F2
--.18(re)2.772 G(adline).18 E F0 5.272(.M)C .272
-(uch more functionality is a)-5.272 F -.25(va)-.2 G .272(ilable; see).25
-F F3(The GNU Readline Libr)108 316.8 Q(ary)-.15 E F0(and)2.5 E F3
-(The GNU History Libr)2.5 E(ary)-.15 E F0(for additional information.)
-2.5 E F1(RETURN V)72 333.6 Q(ALUE)-1.478 E F2 -.18(re)108 345.6 S
-(adline).18 E F0 1.09(returns the te)3.59 F 1.09(xt of the line read.)
--.15 F 3.589(Ab)6.09 G 1.089(lank line returns the empty string.)-3.589
-F(If)6.089 E F2(EOF)3.589 E F0 1.089(is encountered)3.589 F .283
-(while reading a line, and the line is empty)108 357.6 R(,)-.65 E F2
-(NULL)2.783 E F0 .283(is returned.)2.783 F .283(If an)5.283 F F2(EOF)
-2.783 E F0 .283(is read with a non\255empty line, it)2.783 F
-(is treated as a ne)108 369.6 Q(wline.)-.25 E F1(NO)72 386.4 Q -.986(TA)
--.438 G(TION)-.054 E F0 .181
-(An emacs-style notation is used to denote k)108 398.4 R -.15(ey)-.1 G
-(strok).15 E 2.681(es. Control)-.1 F -.1(ke)2.681 G .18
-(ys are denoted by C\255)-.05 F F3 -.1(ke)C(y)-.2 E F0 2.68(,e)C .18
-(.g., C\255n means)-2.68 F 2.625(Control\255N. Similarly)108 410.4 R(,)
--.65 E F3(meta)2.625 E F0 -.1(ke)2.625 G .125(ys are denoted by M\255)
--.05 F F3 -.1(ke)C(y)-.2 E F0 2.625(,s)C 2.625(oM)-2.625 G .125
-(\255x means Meta\255X.)-2.625 F .126(\(On k)5.126 F -.15(ey)-.1 G .126
-(boards without a).15 F F3(meta)108 422.4 Q F0 -.1(ke)3.309 G 2.109 -.65
-(y, M)-.05 H<ad>.65 E F3(x)A F0 .809(means ESC)3.309 F F3(x)3.309 E F0
-3.309(,i)C .809(.e., press the Escape k)-3.309 F 1.108 -.15(ey t)-.1 H
-.808(hen the).15 F F3(x)3.308 E F0 -.1(ke)3.308 G 4.608 -.65(y. T)-.05 H
-.808(his mak).65 F .808(es ESC the)-.1 F F3 .808(meta pr)3.308 F(e\214x)
--.37 E F0(.)A .48(The combination M\255C\255)108 434.4 R F3(x)A F0 .48
-(means ESC\255Control\255)2.98 F F3(x)A F0 2.98(,o)C 2.98(rp)-2.98 G .48
-(ress the Escape k)-2.98 F .78 -.15(ey t)-.1 H .48
-(hen hold the Control k).15 F .78 -.15(ey w)-.1 H(hile).15 E
-(pressing the)108 446.4 Q F3(x)2.5 E F0 -.1(ke)2.5 G -.65(y.)-.05 G(\))
-.65 E .62(Readline commands may be gi)108 463.2 R -.15(ve)-.25 G 3.119
-(nn).15 G(umeric)-3.119 E F3(ar)3.119 E(guments)-.37 E F0 3.119(,w).27 G
-.619(hich normally act as a repeat count.)-3.119 F(Sometimes,)5.619 E
-(ho)108 475.2 Q(we)-.25 E -.15(ve)-.25 G 1.418 -.4(r, i).15 H 3.118(ti)
-.4 G 3.119(st)-3.118 G .619(he sign of the ar)-3.119 F .619
-(gument that is signi\214cant.)-.18 F -.15(Pa)5.619 G .619(ssing a ne)
-.15 F -.05(ga)-.15 G(ti).05 E .919 -.15(ve a)-.25 H -.18(rg).15 G .619
-(ument to a command that).18 F 1.019(acts in the forw)108 487.2 R 1.018
-(ard direction \(e.g.,)-.1 F F2(kill\255line)3.518 E F0 3.518(\)c)C
-1.018(auses that command to act in a backw)-3.518 F 1.018
-(ard direction.)-.1 F(Com-)6.018 E(mands whose beha)108 499.2 Q
-(vior with ar)-.2 E(guments de)-.18 E(viates from this are noted.)-.25 E
-.811(When a command is described as)108 516 R F3(killing)3.311 E F0(te)
-3.311 E .811(xt, the te)-.15 F .811(xt deleted is sa)-.15 F -.15(ve)-.2
-G 3.311(df).15 G .812(or possible future retrie)-3.311 F -.25(va)-.25 G
-3.312(l\().25 G F3(yank-)-3.312 E(ing)108 528 Q F0 2.529(\). The)B .029
-(killed te)2.529 F .029(xt is sa)-.15 F -.15(ve)-.2 G 2.529(di).15 G
-2.529(na)-2.529 G F3 .029(kill ring)B F0 5.029(.C)C(onsecuti)-5.029 E
-.329 -.15(ve k)-.25 H .029(ills cause the te).15 F .029
-(xt to be accumulated into one unit,)-.15 F .567(which can be yank)108
-540 R .567(ed all at once.)-.1 F .567(Commands which do not kill te)
-5.567 F .567(xt separate the chunks of te)-.15 F .567(xt on the kill)
--.15 F(ring.)108 552 Q F1(INITIALIZA)72 568.8 Q(TION FILE)-1.04 E F0
-.091(Readline is customized by putting commands in an initialization \
-\214le \(the)108 580.8 R F3(inputr)2.591 E(c)-.37 E F0 2.591
-(\214le\). The)2.591 F .091(name of this \214le)2.591 F 1.442(is tak)108
-592.8 R 1.443(en from the v)-.1 F 1.443(alue of the)-.25 F F2(INPUTRC)
-3.943 E F0(en)3.943 E 1.443(vironment v)-.4 F 3.943(ariable. If)-.25 F
-1.443(that v)3.943 F 1.443(ariable is unset, the def)-.25 F 1.443
-(ault is)-.1 F F3(~/.inputr)108 604.8 Q(c)-.37 E F0 5.359(.W).31 G .359
-(hen a program which uses the readline library starts up, the init \214\
-le is read, and the k)-5.359 F .658 -.15(ey b)-.1 H(ind-).15 E 1.083
-(ings and v)108 616.8 R 1.083(ariables are set.)-.25 F 1.083
-(There are only a fe)6.083 F 3.583(wb)-.25 G 1.083(asic constructs allo)
--3.583 F 1.084(wed in the readline init \214le.)-.25 F(Blank)6.084 E
-.737(lines are ignored.)108 628.8 R .737(Lines be)5.737 F .737
-(ginning with a)-.15 F F2(#)3.237 E F0 .737(are comments.)3.237 F .737
-(Lines be)5.737 F .737(ginning with a)-.15 F F2($)3.237 E F0 .736
-(indicate conditional)3.236 F 2.614(constructs. Other)108 640.8 R .114
-(lines denote k)2.614 F .414 -.15(ey b)-.1 H .115(indings and v).15 F
-.115(ariable settings.)-.25 F .115
-(Each program using this library may add)5.115 F(its o)108 652.8 Q
-(wn commands and bindings.)-.25 E -.15(Fo)108 669.6 S 2.5(re).15 G
-(xample, placing)-2.65 E(M\255Control\255u: uni)144 686.4 Q -.15(ve)-.25
-G(rsal\255ar).15 E(gument)-.18 E(or)108 698.4 Q(C\255Meta\255u: uni)144
-710.4 Q -.15(ve)-.25 G(rsal\255ar).15 E(gument)-.18 E(GNU Readline 4.3)
-72 768 Q(2002 January 22)126.24 E(1)195.95 E EP
-%%Page: 2 2
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R
-(into the)108 84 Q/F1 10/Times-Italic@0 SF(inputr)2.5 E(c)-.37 E F0 -.1
-(wo)2.5 G(uld mak).1 E 2.5(eM)-.1 G(\255C\255u e)-2.5 E -.15(xe)-.15 G
-(cute the readline command).15 E F1(univer)2.5 E(sal\255ar)-.1 E(gument)
--.37 E F0(.).68 E 2.795(The follo)108 100.8 R 2.795
-(wing symbolic character names are recognized while processing k)-.25 F
-3.095 -.15(ey b)-.1 H(indings:).15 E F1(DEL)5.295 E F0(,).53 E F1(ESC)
-5.295 E F0(,).72 E F1(ESCAPE)108 112.8 Q F0(,).73 E F1(LFD)2.5 E F0(,)
-.28 E F1(NEWLINE)2.5 E F0(,).73 E F1(RET)2.5 E F0(,)1.27 E F1(RETURN)2.5
-E F0(,)1.1 E F1 -.4(RU)2.5 G(BOUT).4 E F0(,)1.27 E F1(SP)2.5 E -.3(AC)
--.9 G(E).3 E F0(,).73 E F1(SPC)2.5 E F0 2.5(,a).72 G(nd)-2.5 E F1 -.5
-(TA)2.5 G(B).5 E F0(.).27 E .209
-(In addition to command names, readline allo)108 129.6 R .209(ws k)-.25
-F -.15(ey)-.1 G 2.709(st).15 G 2.709(ob)-2.709 G 2.709(eb)-2.709 G .209
-(ound to a string that is inserted when the k)-2.709 F .509 -.15(ey i)
--.1 H(s).15 E(pressed \(a)108 141.6 Q F1(macr)2.5 E(o)-.45 E F0(\).)A/F2
-10/Times-Bold@0 SF -.25(Ke)87 163.2 S 2.5(yB).25 G(indings)-2.5 E F0
-.382(The syntax for controlling k)108 175.2 R .682 -.15(ey b)-.1 H .382
-(indings in the).15 F F1(inputr)2.882 E(c)-.37 E F0 .382
-(\214le is simple.)2.882 F .382(All that is required is the name of the)
-5.382 F .382(command or the te)108 187.2 R .383(xt of a macro and a k)
--.15 F .683 -.15(ey s)-.1 H .383
-(equence to which it should be bound. The name may be speci-).15 F .853
-(\214ed in one of tw)108 199.2 R 3.353(ow)-.1 G .853
-(ays: as a symbolic k)-3.453 F 1.153 -.15(ey n)-.1 H .853
-(ame, possibly with).15 F F1(Meta\255)3.353 E F0(or)3.353 E F1(Contr)
-3.353 E(ol\255)-.45 E F0(pre\214x)3.353 E .853(es, or as a k)-.15 F -.15
-(ey)-.1 G(sequence.)108 211.2 Q 1.766(When using the form)108 228 R F2
--.1(ke)4.266 G(yname).1 E F0(:)A F1(function-name).833 E F0(or)4.266 E
-F1(macr)4.267 E(o)-.45 E F0(,)A F1 -.1(ke)4.267 G(yname)-.2 E F0 1.767
-(is the name of a k)4.267 F 2.067 -.15(ey s)-.1 H 1.767(pelled out in)
-.15 F 2.5(English. F)108 240 R(or e)-.15 E(xample:)-.15 E
-(Control\255u: uni)144 264 Q -.15(ve)-.25 G(rsal\255ar).15 E(gument)-.18
-E(Meta\255Rubout: backw)144 276 Q(ard\255kill\255w)-.1 E(ord)-.1 E
-(Control\255o: "> output")144 288 Q .229(In the abo)108 304.8 R .529
--.15(ve ex)-.15 H(ample,).15 E F1(C\255u)2.729 E F0 .229
-(is bound to the function)2.729 F F2(uni)2.729 E -.1(ve)-.1 G
-(rsal\255ar).1 E(gument)-.1 E F0(,)A F1(M-DEL)2.729 E F0 .228
-(is bound to the function)2.729 F F2(backward\255kill\255w)108 316.8 Q
-(ord)-.1 E F0 3.837(,a)C(nd)-3.837 E F1(C\255o)3.837 E F0 1.337
-(is bound to run the macro e)3.837 F 1.337
-(xpressed on the right hand side \(that is, to)-.15 F(insert the te)108
-328.8 Q(xt)-.15 E/F3 10/Courier@0 SF 6(>o)2.5 G(utput)-6 E F0
-(into the line\).)2.5 E .056(In the second form,)108 345.6 R F2("k)2.556
-E(eyseq")-.1 E F0(:)A F1(function\255name).833 E F0(or)2.556 E F1(macr)
-2.556 E(o)-.45 E F0(,)A F2 -.1(ke)2.556 G(yseq).1 E F0(dif)2.555 E .055
-(fers from)-.25 F F2 -.1(ke)2.555 G(yname).1 E F0(abo)2.555 E .355 -.15
-(ve i)-.15 H 2.555(nt).15 G .055(hat strings)-2.555 F 1.284
-(denoting an entire k)108 357.6 R 1.584 -.15(ey s)-.1 H 1.284(equence m\
-ay be speci\214ed by placing the sequence within double quotes.).15 F
-(Some)6.284 E .386(GNU Emacs style k)108 369.6 R .686 -.15(ey e)-.1 H
-.385(scapes can be used, as in the follo).15 F .385(wing e)-.25 F .385
-(xample, b)-.15 F .385(ut the symbolic character names)-.2 F
-(are not recognized.)108 381.6 Q("\\C\255u": uni)144 405.6 Q -.15(ve)
--.25 G(rsal\255ar).15 E(gument)-.18 E
-("\\C\255x\\C\255r": re\255read\255init\255\214le)144 417.6 Q
-("\\e[11~": "Function K)144 429.6 Q .3 -.15(ey 1)-.25 H(").15 E .237
-(In this e)108 446.4 R(xample,)-.15 E F1(C-u)2.737 E F0 .237(is ag)2.737
-F .238(ain bound to the function)-.05 F F2(uni)2.738 E -.1(ve)-.1 G
-(rsal\255ar).1 E(gument)-.1 E F0(.)A F1 .238(C-x C-r)5.238 F F0 .238
-(is bound to the function)2.738 F F2 -.18(re)108 458.4 S<ad72>.18 E
-(ead\255init\255\214le)-.18 E F0 2.5(,a)C(nd)-2.5 E F1(ESC [ 1 1 ~)2.5 E
-F0(is bound to insert the te)2.5 E(xt)-.15 E F3(Function Key 1)2.5 E F0
-(.)A(The full set of GNU Emacs style escape sequences a)108 475.2 Q -.25
-(va)-.2 G(ilable when specifying k).25 E .3 -.15(ey s)-.1 H(equences is)
-.15 E F2<5c43ad>144 487.2 Q F0(control pre\214x)20.3 E F2<5c4dad>144
-499.2 Q F0(meta pre\214x)18.08 E F2(\\e)144 511.2 Q F0
-(an escape character)28.78 E F2(\\\\)144 523.2 Q F0(backslash)30.44 E F2
-(\\")144 535.2 Q F0(literal ", a double quote)27.67 E F2(\\')144 547.2 Q
-F0(literal ', a single quote)29.89 E(In addition to the GNU Emacs style\
- escape sequences, a second set of backslash escapes is a)108 564 Q -.25
-(va)-.2 G(ilable:).25 E F2(\\a)144 576 Q F0(alert \(bell\))28.22 E F2
-(\\b)144 588 Q F0(backspace)27.66 E F2(\\d)144 600 Q F0(delete)27.66 E
-F2(\\f)144 612 Q F0(form feed)29.89 E F2(\\n)144 624 Q F0(ne)27.66 E
-(wline)-.25 E F2(\\r)144 636 Q F0(carriage return)28.78 E F2(\\t)144 648
-Q F0(horizontal tab)29.89 E F2(\\v)144 660 Q F0 -.15(ve)28.22 G
-(rtical tab).15 E F2(\\)144 672 Q F1(nnn)A F0
-(the eight-bit character whose v)18.22 E(alue is the octal v)-.25 E
-(alue)-.25 E F1(nnn)2.5 E F0(\(one to three digits\))2.5 E F2(\\x)144
-684 Q F1(HH)A F0(the eight-bit character whose v)13.78 E(alue is the he)
--.25 E(xadecimal v)-.15 E(alue)-.25 E F1(HH)2.5 E F0(\(one or tw)2.5 E
-2.5(oh)-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E .74(When entering the te)
-108 700.8 R .74(xt of a macro, single or double quotes should be used t\
-o indicate a macro de\214nition.)-.15 F .089(Unquoted te)108 712.8 R
-.089(xt is assumed to be a function name.)-.15 F .09(In the macro body)
-5.089 F 2.59(,t)-.65 G .09(he backslash escapes described abo)-2.59 F
--.15(ve)-.15 G(are e)108 724.8 Q 2.5(xpanded. Backslash)-.15 F
-(will quote an)2.5 E 2.5(yo)-.15 G(ther character in the macro te)-2.5 E
-(xt, including " and '.)-.15 E(GNU Readline 4.3)72 768 Q
-(2002 January 22)126.24 E(2)195.95 E EP
-%%Page: 3 3
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R/F1 10
-/Times-Bold@0 SF(Bash)108 84 Q F0(allo)2.93 E .43
-(ws the current readline k)-.25 F .73 -.15(ey b)-.1 H .429
-(indings to be displayed or modi\214ed with the).15 F F1(bind)2.929 E F0
--.2(bu)2.929 G .429(iltin command.).2 F 1.095
-(The editing mode may be switched during interacti)108 96 R 1.395 -.15
-(ve u)-.25 H 1.095(se by using the).15 F F1<ad6f>3.595 E F0 1.095
-(option to the)3.595 F F1(set)3.595 E F0 -.2(bu)3.595 G 1.095
-(iltin com-).2 F 3.097(mand. Other)108 108 R .597
-(programs using this library pro)3.097 F .597(vide similar mechanisms.)
--.15 F(The)5.597 E/F2 10/Times-Italic@0 SF(inputr)3.097 E(c)-.37 E F0
-.596(\214le may be edited and)3.096 F(re-read if a program does not pro)
-108 120 Q(vide an)-.15 E 2.5(yo)-.15 G(ther means to incorporate ne)-2.5
-E 2.5(wb)-.25 G(indings.)-2.5 E F1 -.92(Va)87 136.8 S(riables).92 E F0
-.043(Readline has v)108 148.8 R .044
-(ariables that can be used to further customize its beha)-.25 F(vior)-.2
-E 5.044(.A)-.55 G -.25(va)-2.5 G .044(riable may be set in the).25 F F2
-(inpu-)2.544 E(tr)108 160.8 Q(c)-.37 E F0
-(\214le with a statement of the form)2.5 E F1(set)144 177.6 Q F2
-(variable\255name value)2.5 E F0 .807(Except where noted, readline v)108
-194.4 R .807(ariables can tak)-.25 F 3.307(et)-.1 G .807(he v)-3.307 F
-(alues)-.25 E F1(On)3.307 E F0(or)3.307 E F1(Off)3.307 E F0 .807
-(\(without re)3.307 F -.05(ga)-.15 G .807(rd to case\).).05 F .807
-(The v)5.807 F(ari-)-.25 E(ables and their def)108 206.4 Q(ault v)-.1 E
-(alues are:)-.25 E F1(bell\255style \(audible\))108 223.2 Q F0 .01
-(Controls what happens when readline w)144 235.2 R .011
-(ants to ring the terminal bell.)-.1 F .011(If set to)5.011 F F1(none)
-2.511 E F0 2.511(,r)C .011(eadline ne)-2.511 F -.15(ve)-.25 G(r).15 E
-.94(rings the bell.)144 247.2 R .94(If set to)5.94 F F1(visible)3.44 E
-F0 3.44(,r)C .94(eadline uses a visible bell if one is a)-3.44 F -.25
-(va)-.2 G 3.44(ilable. If).25 F .94(set to)3.44 F F1(audible)3.44 E F0
-(,)A(readline attempts to ring the terminal')144 259.2 Q 2.5(sb)-.55 G
-(ell.)-2.5 E F1(comment\255begin \(`)108 271.2 Q(`#')-.63 E('\))-.63 E
-F0 .062(The string that is inserted in)144 283.2 R F1(vi)2.562 E F0 .062
-(mode when the)2.562 F F1(insert\255comment)2.562 E F0 .062
-(command is e)2.562 F -.15(xe)-.15 G 2.562(cuted. This).15 F(com-)2.562
-E(mand is bound to)144 295.2 Q F1(M\255#)2.5 E F0(in emacs mode and to)
-2.5 E F1(#)2.5 E F0(in vi command mode.)2.5 E F1(completion\255ignor)108
-307.2 Q(e\255case \(Off\))-.18 E F0(If set to)144 319.2 Q F1(On)2.5 E F0
-2.5(,r)C(eadline performs \214lename matching and completion in a case\
-\255insensiti)-2.5 E .3 -.15(ve f)-.25 H(ashion.).05 E F1
-(completion\255query\255items \(100\))108 331.2 Q F0 .53
-(This determines when the user is queried about vie)144 343.2 R .529
-(wing the number of possible completions gen-)-.25 F .56(erated by the)
-144 355.2 R F1(possible\255completions)3.06 E F0 3.06(command. It)3.06 F
-.561(may be set to an)3.061 F 3.061(yi)-.15 G(nte)-3.061 E .561(ger v)
--.15 F .561(alue greater than or)-.25 F .783(equal to zero.)144 367.2 R
-.783(If the number of possible completions is greater than or equal to \
-the v)5.783 F .782(alue of this)-.25 F -.25(va)144 379.2 S .237
-(riable, the user is ask).25 F .237(ed whether or not he wishes to vie)
--.1 F 2.737(wt)-.25 G .237(hem; otherwise the)-2.737 F 2.737(ya)-.15 G
-.237(re simply listed)-2.737 F(on the terminal.)144 391.2 Q F1(con)108
-403.2 Q -.1(ve)-.4 G(rt\255meta \(On\)).1 E F0 .613(If set to)144 415.2
-R F1(On)3.113 E F0 3.113(,r)C .613(eadline will con)-3.113 F -.15(ve)-.4
-G .613(rt characters with the eighth bit set to an ASCII k).15 F .912
--.15(ey s)-.1 H .612(equence by).15 F 1.315(stripping the eighth bit an\
-d pre\214xing it with an escape character \(in ef)144 427.2 R 1.316
-(fect, using escape as the)-.25 F F2(meta pr)144 439.2 Q(e\214x)-.37 E
-F0(\).)A F1(disable\255completion \(Off\))108 451.2 Q F0 .038(If set to)
-144 463.2 R F1(On)2.538 E F0 2.538(,r)C .038(eadline will inhibit w)
--2.538 F .038(ord completion.)-.1 F .038
-(Completion characters will be inserted into the)5.038 F(line as if the)
-144 475.2 Q 2.5(yh)-.15 G(ad been mapped to)-2.5 E F1(self-insert)2.5 E
-F0(.)A F1(editing\255mode \(emacs\))108 487.2 Q F0 .215
-(Controls whether readline be)144 499.2 R .215(gins with a set of k)-.15
-F .515 -.15(ey b)-.1 H .216(indings similar to emacs or vi.).15 F F1
-(editing\255mode)5.216 E F0(can be set to either)144 511.2 Q F1(emacs)
-2.5 E F0(or)2.5 E F1(vi)2.5 E F0(.)A F1(enable\255k)108 523.2 Q
-(eypad \(Off\))-.1 E F0 .893(When set to)144 535.2 R F1(On)3.393 E F0
-3.393(,r)C .893(eadline will try to enable the application k)-3.393 F
--.15(ey)-.1 G .893(pad when it is called.).15 F .892(Some sys-)5.893 F
-(tems need this to enable the arro)144 547.2 Q 2.5(wk)-.25 G -.15(ey)
--2.6 G(s.).15 E F1(expand\255tilde \(Off\))108 559.2 Q F0(If set to)144
-571.2 Q F1(on)2.5 E F0 2.5(,t)C(ilde e)-2.5 E
-(xpansion is performed when readline attempts w)-.15 E(ord completion.)
--.1 E F1(history-pr)108 583.2 Q(eser)-.18 E -.1(ve)-.1 G(-point).1 E F0
-1.492(If set to)144 595.2 R F1(on)3.992 E F0 3.992(,t)C 1.493(he histor\
-y code attempts to place point at the same location on each history lin\
-e)-3.992 F(retri)144 607.2 Q -.15(ve)-.25 G 2.5(dw).15 G(ith)-2.5 E F1
-(pr)2.5 E -.15(ev)-.18 G(ious-history).15 E F0(or)2.5 E F1(next-history)
-2.5 E F0(.)A F1(horizontal\255scr)108 619.2 Q(oll\255mode \(Off\))-.18 E
-F0 .449(When set to)144 631.2 R F1(On)2.949 E F0 2.949(,m)C(ak)-2.949 E
-.448(es readline use a single line for display)-.1 F 2.948(,s)-.65 G
-.448(crolling the input horizontally on a)-2.948 F 1.194(single screen \
-line when it becomes longer than the screen width rather than wrapping \
-to a ne)144 643.2 R(w)-.25 E(line.)144 655.2 Q F1(input\255meta \(Off\))
-108 667.2 Q F0 .367(If set to)144 679.2 R F1(On)2.867 E F0 2.867(,r)C
-.367(eadline will enable eight-bit input \(that is, it will not clear t\
-he eighth bit in the char)-2.867 F(-)-.2 E .956(acters it reads\), re)
-144 691.2 R -.05(ga)-.15 G .956
-(rdless of what the terminal claims it can support.).05 F .957(The name)
-5.956 F F1(meta\255\215ag)3.457 E F0 .957(is a)3.457 F(synon)144 703.2 Q
-(ym for this v)-.15 E(ariable.)-.25 E(GNU Readline 4.3)72 768 Q
-(2002 January 22)126.24 E(3)195.95 E EP
-%%Page: 4 4
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R/F1 10
-/Times-Bold@0 SF(isear)108 84 Q(ch\255terminators \(`)-.18 E
-(`C\255[ C\255J')-.63 E('\))-.63 E F0 .439(The string of characters tha\
-t should terminate an incremental search without subsequently e)144 96 R
--.15(xe)-.15 G(cut-).15 E .934(ing the character as a command.)144 108 R
-.935(If this v)5.935 F .935(ariable has not been gi)-.25 F -.15(ve)-.25
-G 3.435(nav).15 G .935(alue, the characters)-3.685 F/F2 10
-/Times-Italic@0 SF(ESC)3.435 E F0(and)144 120 Q F2(C\255J)2.5 E F0
-(will terminate an incremental search.)2.5 E F1 -.1(ke)108 132 S
-(ymap \(emacs\)).1 E F0 2.323(Set the current readline k)144 144 R -.15
-(ey)-.1 G 4.823(map. The).15 F 2.323(set of le)4.823 F -.05(ga)-.15 G
-4.823(lk).05 G -.15(ey)-4.923 G 2.323(map names is).15 F F2 2.323
-(emacs, emacs-standar)4.823 F(d,)-.37 E .808
-(emacs-meta, emacs-ctlx, vi, vi-mo)144 156 R(ve)-.1 E 3.308(,v)-.1 G
-(i-command)-3.308 E F0 3.308(,a)C(nd)-3.308 E F2(vi-insert)3.308 E F0(.)
-.68 E F2(vi)5.808 E F0 .808(is equi)3.308 F -.25(va)-.25 G .809(lent to)
-.25 F F2(vi-command)3.309 E F0(;)A F2(emacs)144 168 Q F0 .697(is equi)
-3.197 F -.25(va)-.25 G .697(lent to).25 F F2(emacs-standar)3.197 E(d)
--.37 E F0 5.697(.T)C .697(he def)-5.697 F .697(ault v)-.1 F .697
-(alue is)-.25 F F2(emacs)3.197 E F0 5.697(.T).27 G .697(he v)-5.697 F
-.697(alue of)-.25 F F1(editing\255mode)3.196 E F0(also af)144 180 Q
-(fects the def)-.25 E(ault k)-.1 E -.15(ey)-.1 G(map.).15 E F1
-(mark\255dir)108 192 Q(ectories \(On\))-.18 E F0(If set to)144 204 Q F1
-(On)2.5 E F0 2.5(,c)C(ompleted directory names ha)-2.5 E .3 -.15(ve a s)
--.2 H(lash appended.).15 E F1(mark\255modi\214ed\255lines \(Off\))108
-216 Q F0(If set to)144 228 Q F1(On)2.5 E F0 2.5(,h)C
-(istory lines that ha)-2.5 E .3 -.15(ve b)-.2 H
-(een modi\214ed are displayed with a preceding asterisk \().15 E F1(*)A
-F0(\).)A F1(mark\255symlink)108 240 Q(ed\255dir)-.1 E(ectories \(Off\))
--.18 E F0 .175(If set to)144 252 R F1(On)2.675 E F0 2.675(,c)C .175
-(ompleted names which are symbolic links to directories ha)-2.675 F .475
--.15(ve a s)-.2 H .175(lash appended \(sub-).15 F(ject to the v)144 264
-Q(alue of)-.25 E F1(mark\255dir)2.5 E(ectories)-.18 E F0(\).)A F1
-(match\255hidden\255\214les \(On\))108 276 Q F0 .193(This v)144 288 R
-.193(ariable, when set to)-.25 F F1(On)2.693 E F0 2.693(,c)C .192
-(auses readline to match \214les whose names be)-2.693 F .192
-(gin with a `.)-.15 F 2.692('\()-.7 G(hidden)-2.692 E 1.023
-(\214les\) when performing \214lename completion, unless the leading `.)
-144 300 R 3.523('i)-.7 G 3.523(ss)-3.523 G 1.024
-(upplied by the user in the)-3.523 F(\214lename to be completed.)144 312
-Q F1(output\255meta \(Off\))108 324 Q F0 .507(If set to)144 336 R F1(On)
-3.007 E F0 3.007(,r)C .507(eadline will display characters with the eig\
-hth bit set directly rather than as a meta-)-3.007 F(pre\214x)144 348 Q
-(ed escape sequence.)-.15 E F1(page\255completions \(On\))108 360 Q F0
-.808(If set to)144 372 R F1(On)3.308 E F0 3.308(,r)C .808
-(eadline uses an internal)-3.308 F F2(mor)3.308 E(e)-.37 E F0(-lik)A
-3.308(ep)-.1 G .808(ager to display a screenful of possible comple-)
--3.308 F(tions at a time.)144 384 Q F1
-(print\255completions\255horizontally \(Off\))108 396 Q F0 1.319
-(If set to)144 408 R F1(On)3.819 E F0 3.819(,r)C 1.318(eadline will dis\
-play completions with matches sorted horizontally in alphabetical)-3.819
-F(order)144 420 Q 2.5(,r)-.4 G(ather than do)-2.5 E(wn the screen.)-.25
-E F1(sho)108 432 Q(w\255all\255if\255ambiguous \(Off\))-.1 E F0 .477
-(This alters the def)144 444 R .477(ault beha)-.1 F .477
-(vior of the completion functions.)-.2 F .478(If set to)5.478 F F1(on)
-2.978 E F0 2.978(,w)C .478(ords which ha)-3.078 F .778 -.15(ve m)-.2 H
-(ore).15 E 1.264(than one possible completion cause the matches to be l\
-isted immediately instead of ringing the)144 456 R(bell.)144 468 Q F1
-(visible\255stats \(Off\))108 480 Q F0 .846(If set to)144 492 R F1(On)
-3.346 E F0 3.346(,ac)C .846(haracter denoting a \214le')-3.346 F 3.346
-(st)-.55 G .846(ype as reported by)-3.346 F F2(stat)3.346 E F0 .846
-(\(2\) is appended to the \214lename)B
-(when listing possible completions.)144 504 Q F1(Conditional Constructs)
-87 520.8 Q F0 .05(Readline implements a f)108 532.8 R .05(acility simil\
-ar in spirit to the conditional compilation features of the C preproces\
-sor)-.1 F .096(which allo)108 544.8 R .096(ws k)-.25 F .396 -.15(ey b)
--.1 H .096(indings and v).15 F .096
-(ariable settings to be performed as the result of tests.)-.25 F .097
-(There are four parser)5.096 F(directi)108 556.8 Q -.15(ve)-.25 G 2.5
-(su).15 G(sed.)-2.5 E F1($if)108 573.6 Q F0(The)24.89 E F1($if)2.963 E
-F0 .463(construct allo)2.963 F .462(ws bindings to be made based on the\
- editing mode, the terminal being used,)-.25 F .477
-(or the application using readline.)144 585.6 R .477(The te)5.477 F .477
-(xt of the test e)-.15 F .477
-(xtends to the end of the line; no characters)-.15 F
-(are required to isolate it.)144 597.6 Q F1(mode)144 614.4 Q F0(The)
-12.67 E F1(mode=)3.712 E F0 1.212(form of the)3.712 F F1($if)3.711 E F0
-(directi)3.711 E 1.511 -.15(ve i)-.25 H 3.711(su).15 G 1.211
-(sed to test whether readline is in emacs or vi)-3.711 F 3.065
-(mode. This)180 626.4 R .565(may be used in conjunction with the)3.065 F
-F1 .565(set k)3.065 F(eymap)-.1 E F0 .565(command, for instance, to)
-3.065 F .03(set bindings in the)180 638.4 R F2(emacs-standar)2.529 E(d)
--.37 E F0(and)2.529 E F2(emacs-ctlx)2.529 E F0 -.1(ke)2.529 G .029
-(ymaps only if readline is starting out)-.05 F(in emacs mode.)180 650.4
-Q F1(term)144 667.2 Q F0(The)15.46 E F1(term=)3.196 E F0 .696
-(form may be used to include terminal-speci\214c k)3.196 F .996 -.15
-(ey b)-.1 H .697(indings, perhaps to bind).15 F .654(the k)180 679.2 R
-.954 -.15(ey s)-.1 H .654(equences output by the terminal').15 F 3.154
-(sf)-.55 G .654(unction k)-3.154 F -.15(ey)-.1 G 3.154(s. The).15 F -.1
-(wo)3.154 G .654(rd on the right side of).1 F(the)180 691.2 Q F1(=)3.003
-E F0 .503(is tested ag)3.003 F .504(ainst the full name of the terminal\
- and the portion of the terminal name)-.05 F(before the \214rst)180
-703.2 Q F1<ad>2.5 E F0 5(.T)C(his allo)-5 E(ws)-.25 E F2(sun)2.5 E F0
-(to match both)2.5 E F2(sun)2.5 E F0(and)2.5 E F2(sun\255cmd)2.5 E F0
-2.5(,f).77 G(or instance.)-2.5 E(GNU Readline 4.3)72 768 Q
-(2002 January 22)126.24 E(4)195.95 E EP
-%%Page: 5 5
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R/F1 10
-/Times-Bold@0 SF(application)144 84 Q F0(The)180 96 Q F1(application)
-3.003 E F0 .503
-(construct is used to include application-speci\214c settings.)3.003 F
-.503(Each program)5.503 F .114(using the readline library sets the)180
-108 R/F2 10/Times-Italic@0 SF .114(application name)2.614 F F0 2.614(,a)
-C .114(nd an initialization \214le can test for a)-2.614 F .501
-(particular v)180 120 R 3.001(alue. This)-.25 F .501
-(could be used to bind k)3.001 F .801 -.15(ey s)-.1 H .5
-(equences to functions useful for a spe-).15 F .396(ci\214c program.)180
-132 R -.15(Fo)5.396 G 2.896(ri).15 G .396(nstance, the follo)-2.896 F
-.396(wing command adds a k)-.25 F .696 -.15(ey s)-.1 H .397
-(equence that quotes the).15 F(current or pre)180 144 Q(vious w)-.25 E
-(ord in Bash:)-.1 E F1($if)180 168 Q F0(Bash)2.5 E 2.5(#Q)180 180 S
-(uote the current or pre)-2.5 E(vious w)-.25 E(ord)-.1 E
-("\\C-xq": "\\eb\\"\\ef\\"")180 192 Q F1($endif)180 204 Q($endif)108
-220.8 Q F0(This command, as seen in the pre)9.33 E(vious e)-.25 E
-(xample, terminates an)-.15 E F1($if)2.5 E F0(command.)2.5 E F1($else)
-108 237.6 Q F0(Commands in this branch of the)15.45 E F1($if)2.5 E F0
-(directi)2.5 E .3 -.15(ve a)-.25 H(re e).15 E -.15(xe)-.15 G
-(cuted if the test f).15 E(ails.)-.1 E F1($include)108 254.4 Q F0 .357
-(This directi)144 266.4 R .657 -.15(ve t)-.25 H(ak).15 E .357
-(es a single \214lename as an ar)-.1 F .356
-(gument and reads commands and bindings from that)-.18 F 2.5(\214le. F)
-144 278.4 R(or e)-.15 E(xample, the follo)-.15 E(wing directi)-.25 E .3
--.15(ve w)-.25 H(ould read).05 E F2(/etc/inputr)2.5 E(c)-.37 E F0(:)A F1
-($include)144 302.4 Q F2(/etc/inputr)5.833 E(c)-.37 E/F3 10.95
-/Times-Bold@0 SF(SEARCHING)72 319.2 Q F0 1.003(Readline pro)108 331.2 R
-1.003(vides commands for searching through the command history for line\
-s containing a speci\214ed)-.15 F 2.5(string. There)108 343.2 R(are tw)
-2.5 E 2.5(os)-.1 G(earch modes:)-2.5 E F2(incr)2.5 E(emental)-.37 E F0
-(and)2.5 E F2(non-incr)2.5 E(emental)-.37 E F0(.).51 E .698
-(Incremental searches be)108 360 R .698
-(gin before the user has \214nished typing the search string.)-.15 F
-.697(As each character of the)5.697 F .112
-(search string is typed, readline displays the ne)108 372 R .112
-(xt entry from the history matching the string typed so f)-.15 F(ar)-.1
-E 5.113(.A)-.55 G(n)-5.113 E .545
-(incremental search requires only as man)108 384 R 3.045(yc)-.15 G .544
-(haracters as needed to \214nd the desired history entry)-3.045 F 5.544
-(.T)-.65 G 3.044(os)-6.344 G(earch)-3.044 E(backw)108 396 Q .18
-(ard in the history for a particular string, type)-.1 F F1(C\255r)2.681
-E F0 5.181(.T)C(yping)-5.981 E F1(C\255s)2.681 E F0 .181(searches forw)
-2.681 F .181(ard through the history)-.1 F(.)-.65 E .354
-(The characters present in the v)108 408 R .354(alue of the)-.25 F F1
-(isear)2.854 E(ch-terminators)-.18 E F0 -.25(va)2.854 G .354
-(riable are used to terminate an incremen-).25 F .6(tal search.)108 420
-R .6(If that v)5.6 F .6(ariable has not been assigned a v)-.25 F .6
-(alue the)-.25 F F2(Escape)3.1 E F0(and)3.1 E F1(C\255J)3.1 E F0 .6
-(characters will terminate an)3.1 F .123(incremental search.)108 432 R
-F1(C\255G)5.123 E F0 .123
-(will abort an incremental search and restore the original line.)2.623 F
-.122(When the search is)5.122 F(terminated, the history entry containin\
-g the search string becomes the current line.)108 444 Q 2.406 -.8
-(To \214)108 460.8 T .806
-(nd other matching entries in the history list, type).8 F F1(C\255s)
-3.306 E F0(or)3.306 E F1(C\255r)3.306 E F0 .806(as appropriate.)3.306 F
-.807(This will search back-)5.806 F -.1(wa)108 472.8 S 1.309(rd or forw)
-.1 F 1.309(ard in the history for the ne)-.1 F 1.309
-(xt line matching the search string typed so f)-.15 F(ar)-.1 E 6.309(.A)
--.55 G 1.609 -.15(ny o)-6.309 H 1.308(ther k).15 F -.15(ey)-.1 G .317
-(sequence bound to a readline command will terminate the search and e)
-108 484.8 R -.15(xe)-.15 G .318(cute that command.).15 F -.15(Fo)5.318 G
-2.818(ri).15 G(nstance,)-2.818 E 3.481(an)108 496.8 S -.25(ew)-3.481 G
-.981(line will terminate the search and accept the line, thereby e).25 F
--.15(xe)-.15 G .98(cuting the command from the history).15 F 3.061
-(list. A)108 508.8 R(mo)3.061 E -.15(ve)-.15 G .562
-(ment command will terminate the search, mak).15 F 3.062(et)-.1 G .562
-(he last line found the current line, and be)-3.062 F(gin)-.15 E
-(editing.)108 520.8 Q .567(Non-incremental searches read the entire sea\
-rch string before starting to search for matching history lines.)108
-537.6 R(The search string may be typed by the user or be part of the co\
-ntents of the current line.)108 549.6 Q F3(EDITING COMMANDS)72 566.4 Q
-F0 1.391(The follo)108 578.4 R 1.391
-(wing is a list of the names of the commands and the def)-.25 F 1.391
-(ault k)-.1 F 1.691 -.15(ey s)-.1 H 1.391(equences to which the).15 F
-3.892(ya)-.15 G(re)-3.892 E 2.5(bound. Command)108 590.4 R
-(names without an accompan)2.5 E(ying k)-.15 E .3 -.15(ey s)-.1 H
-(equence are unbound by def).15 E(ault.)-.1 E .055(In the follo)108
-607.2 R .055(wing descriptions,)-.25 F F2(point)2.555 E F0 .055
-(refers to the current cursor position, and)2.555 F F2(mark)2.555 E F0
-.054(refers to a cursor position)2.554 F(sa)108 619.2 Q -.15(ve)-.2 G
-2.5(db).15 G 2.5(yt)-2.5 G(he)-2.5 E F1(set\255mark)2.5 E F0 2.5
-(command. The)2.5 F(te)2.5 E
-(xt between the point and mark is referred to as the)-.15 E F2 -.37(re)
-2.5 G(gion)-.03 E F0(.)A F1(Commands f)87 636 Q(or Mo)-.25 E(ving)-.1 E
-(beginning\255of\255line \(C\255a\))108 648 Q F0(Mo)144 660 Q .3 -.15
-(ve t)-.15 H 2.5(ot).15 G(he start of the current line.)-2.5 E F1
-(end\255of\255line \(C\255e\))108 672 Q F0(Mo)144 684 Q .3 -.15(ve t)
--.15 H 2.5(ot).15 G(he end of the line.)-2.5 E F1 -.25(fo)108 696 S
-(rward\255char \(C\255f\)).25 E F0(Mo)144 708 Q .3 -.15(ve f)-.15 H(orw)
-.15 E(ard a character)-.1 E(.)-.55 E(GNU Readline 4.3)72 768 Q
-(2002 January 22)126.24 E(5)195.95 E EP
-%%Page: 6 6
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R/F1 10
-/Times-Bold@0 SF(backward\255char \(C\255b\))108 84 Q F0(Mo)144 96 Q .3
--.15(ve b)-.15 H(ack a character).15 E(.)-.55 E F1 -.25(fo)108 108 S
-(rward\255w).25 E(ord \(M\255f\))-.1 E F0(Mo)144 120 Q .822 -.15(ve f)
--.15 H(orw).15 E .522(ard to the end of the ne)-.1 F .523(xt w)-.15 F
-3.023(ord. W)-.1 F .523
-(ords are composed of alphanumeric characters \(let-)-.8 F
-(ters and digits\).)144 132 Q F1(backward\255w)108 144 Q(ord \(M\255b\))
--.1 E F0(Mo)144 156 Q 1.71 -.15(ve b)-.15 H 1.41
-(ack to the start of the current or pre).15 F 1.41(vious w)-.25 F 3.91
-(ord. W)-.1 F 1.41(ords are composed of alphanumeric)-.8 F
-(characters \(letters and digits\).)144 168 Q F1(clear\255scr)108 180 Q
-(een \(C\255l\))-.18 E F0 .993(Clear the screen lea)144 192 R .993
-(ving the current line at the top of the screen.)-.2 F -.4(Wi)5.993 G
-.993(th an ar).4 F .993(gument, refresh the)-.18 F
-(current line without clearing the screen.)144 204 Q F1 -.18(re)108 216
-S(draw\255curr).18 E(ent\255line)-.18 E F0(Refresh the current line.)144
-228 Q F1(Commands f)87 244.8 Q(or Manipulating the History)-.25 E
-(accept\255line \(Newline, Retur)108 256.8 Q(n\))-.15 E F0 .365
-(Accept the line re)144 268.8 R -.05(ga)-.15 G .364
-(rdless of where the cursor is.).05 F .364(If this line is non-empty)
-5.364 F 2.864(,i)-.65 G 2.864(tm)-2.864 G .364(ay be added to the)-2.864
-F .74(history list for future recall with)144 280.8 R F1
-(add_history\(\))3.24 E F0 5.741(.I)C 3.241(ft)-5.741 G .741
-(he line is a modi\214ed history line, the history)-3.241 F
-(line is restored to its original state.)144 292.8 Q F1(pr)108 304.8 Q
--.15(ev)-.18 G(ious\255history \(C\255p\)).15 E F0(Fetch the pre)144
-316.8 Q(vious command from the history list, mo)-.25 E
-(ving back in the list.)-.15 E F1(next\255history \(C\255n\))108 328.8 Q
-F0(Fetch the ne)144 340.8 Q(xt command from the history list, mo)-.15 E
-(ving forw)-.15 E(ard in the list.)-.1 E F1
-(beginning\255of\255history \(M\255<\))108 352.8 Q F0(Mo)144 364.8 Q .3
--.15(ve t)-.15 H 2.5(ot).15 G(he \214rst line in the history)-2.5 E(.)
--.65 E F1(end\255of\255history \(M\255>\))108 376.8 Q F0(Mo)144 388.8 Q
-.3 -.15(ve t)-.15 H 2.5(ot).15 G(he end of the input history)-2.5 E 2.5
-(,i)-.65 G(.e., the line currently being entered.)-2.5 E F1 -2.29 -.18
-(re v)108 400.8 T(erse\255sear).08 E(ch\255history \(C\255r\))-.18 E F0
-1.471(Search backw)144 412.8 R 1.471
-(ard starting at the current line and mo)-.1 F 1.47
-(ving `up' through the history as necessary)-.15 F(.)-.65 E
-(This is an incremental search.)144 424.8 Q F1 -.25(fo)108 436.8 S
-(rward\255sear).25 E(ch\255history \(C\255s\))-.18 E F0 1.131
-(Search forw)144 448.8 R 1.131(ard starting at the current line and mo)
--.1 F 1.132(ving `do)-.15 F 1.132(wn' through the history as necessary)
--.25 F(.)-.65 E(This is an incremental search.)144 460.8 Q F1
-(non\255incr)108 472.8 Q(emental\255r)-.18 E -2.3 -.15(ev e)-.18 H
-(rse\255sear).15 E(ch\255history \(M\255p\))-.18 E F0 .165(Search backw)
-144 484.8 R .164(ard through the history starting at the current line u\
-sing a non-incremental search for)-.1 F 2.5(as)144 496.8 S
-(tring supplied by the user)-2.5 E(.)-.55 E F1(non\255incr)108 508.8 Q
-(emental\255f)-.18 E(orward\255sear)-.25 E(ch\255history \(M\255n\))-.18
-E F0 1.353(Search forw)144 520.8 R 1.354(ard through the history using \
-a non-incremental search for a string supplied by the)-.1 F(user)144
-532.8 Q(.)-.55 E F1(history\255sear)108 544.8 Q(ch\255f)-.18 E(orward)
--.25 E F0 .249(Search forw)144 556.8 R .249(ard through the history for\
- the string of characters between the start of the current line)-.1 F
-(and the current cursor position \(the)144 568.8 Q/F2 10/Times-Italic@0
-SF(point)2.5 E F0 2.5(\). This)B(is a non-incremental search.)2.5 E F1
-(history\255sear)108 580.8 Q(ch\255backward)-.18 E F0 .95(Search backw)
-144 592.8 R .951(ard through the history for the string of characters b\
-etween the start of the current)-.1 F(line and the point.)144 604.8 Q
-(This is a non-incremental search.)5 E F1(yank\255nth\255ar)108 616.8 Q
-2.5(g\()-.1 G<4dad43ad7929>-2.5 E F0 .622(Insert the \214rst ar)144
-628.8 R .622(gument to the pre)-.18 F .622
-(vious command \(usually the second w)-.25 F .622(ord on the pre)-.1 F
-.622(vious line\))-.25 F .794(at point.)144 640.8 R -.4(Wi)5.794 G .794
-(th an ar).4 F(gument)-.18 E F2(n)3.294 E F0 3.294(,i).24 G .794
-(nsert the)-3.294 F F2(n)3.294 E F0 .794(th w)B .794(ord from the pre)
--.1 F .794(vious command \(the w)-.25 F .795(ords in the)-.1 F(pre)144
-652.8 Q .292(vious command be)-.25 F .292(gin with w)-.15 F .291
-(ord 0\).)-.1 F 2.791(An)5.291 G -2.25 -.15(eg a)-2.791 H(ti).15 E .591
--.15(ve a)-.25 H -.18(rg).15 G .291(ument inserts the).18 F F2(n)2.791 E
-F0 .291(th w)B .291(ord from the end of)-.1 F(the pre)144 664.8 Q
-(vious command.)-.25 E F1(yank\255last\255ar)108 676.8 Q 2.5(g\()-.1 G
--1.667(M\255. ,)-2.5 F -1.667(M\255_ \))2.5 F F0 1.307
-(Insert the last ar)144 688.8 R 1.307(gument to the pre)-.18 F 1.307
-(vious command \(the last w)-.25 F 1.308(ord of the pre)-.1 F 1.308
-(vious history entry\).)-.25 F -.4(Wi)144 700.8 S .736(th an ar).4 F
-.736(gument, beha)-.18 F 1.036 -.15(ve ex)-.2 H .736(actly lik).15 F(e)
--.1 E F1(yank\255nth\255ar)3.235 E(g)-.1 E F0 5.735(.S)C(uccessi)-5.735
-E 1.035 -.15(ve c)-.25 H .735(alls to).15 F F1(yank\255last\255ar)3.235
-E(g)-.1 E F0(mo)3.235 E -.15(ve)-.15 G
-(back through the history list, inserting the last ar)144 712.8 Q
-(gument of each line in turn.)-.18 E(GNU Readline 4.3)72 768 Q
-(2002 January 22)126.24 E(6)195.95 E EP
-%%Page: 7 7
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R/F1 10
-/Times-Bold@0 SF(Commands f)87 84 Q(or Changing T)-.25 E(ext)-.92 E
-(delete\255char \(C\255d\))108 96 Q F0 .357
-(Delete the character at point.)144 108 R .358(If point is at the be)
-5.358 F .358(ginning of the line, there are no characters in the)-.15 F
-(line, and the last character typed w)144 120 Q(as not bound to)-.1 E F1
-(delete\255char)2.5 E F0 2.5(,t)C(hen return)-2.5 E/F2 9/Times-Bold@0 SF
-(EOF)2.5 E/F3 9/Times-Roman@0 SF(.)A F1
-(backward\255delete\255char \(Rubout\))108 132 Q F0 .553
-(Delete the character behind the cursor)144 144 R 5.553(.W)-.55 G .553
-(hen gi)-5.553 F -.15(ve)-.25 G 3.053(nan).15 G .553(umeric ar)-3.053 F
-.552(gument, sa)-.18 F .852 -.15(ve t)-.2 H .552(he deleted te).15 F
-.552(xt on)-.15 F(the kill ring.)144 156 Q F1 -.25(fo)108 168 S
-(rward\255backward\255delete\255char).25 E F0 .473
-(Delete the character under the cursor)144 180 R 2.973(,u)-.4 G .474
-(nless the cursor is at the end of the line, in which case the)-2.973 F
-(character behind the cursor is deleted.)144 192 Q F1
-(quoted\255insert \(C\255q, C\255v\))108 204 Q F0 1.229(Add the ne)144
-216 R 1.228(xt character that you type to the line v)-.15 F 3.728
-(erbatim. This)-.15 F 1.228(is ho)3.728 F 3.728(wt)-.25 G 3.728(oi)
--3.728 G 1.228(nsert characters lik)-3.728 F(e)-.1 E F1(C\255q)144 228 Q
-F0 2.5(,f)C(or e)-2.5 E(xample.)-.15 E F1(tab\255insert \(M-T)108 240 Q
-(AB\))-.9 E F0(Insert a tab character)144 252 Q(.)-.55 E F1
-(self\255insert \(a, b, A, 1, !, ...\))108 264 Q F0
-(Insert the character typed.)144 276 Q F1(transpose\255chars \(C\255t\))
-108 288 Q F0 .321(Drag the character before point forw)144 300 R .321
-(ard o)-.1 F -.15(ve)-.15 G 2.821(rt).15 G .321
-(he character at point, mo)-2.821 F .322(ving point forw)-.15 F .322
-(ard as well.)-.1 F 1.182
-(If point is at the end of the line, then this transposes the tw)144 312
-R 3.682(oc)-.1 G 1.182(haracters before point.)-3.682 F(Ne)6.182 E -.05
-(ga)-.15 G(ti).05 E -.15(ve)-.25 G(ar)144 324 Q(guments ha)-.18 E .3
--.15(ve n)-.2 H 2.5(oe).15 G -.25(ff)-2.5 G(ect.).25 E F1
-(transpose\255w)108 336 Q(ords \(M\255t\))-.1 E F0 .023(Drag the w)144
-348 R .023(ord before point past the w)-.1 F .023(ord after point, mo)
--.1 F .023(ving point o)-.15 F -.15(ve)-.15 G 2.524(rt).15 G .024(hat w)
--2.524 F .024(ord as well.)-.1 F .024(If point)5.024 F
-(is at the end of the line, this transposes the last tw)144 360 Q 2.5
-(ow)-.1 G(ords on the line.)-2.6 E F1(upcase\255w)108 372 Q
-(ord \(M\255u\))-.1 E F0 1.699(Uppercase the current \(or follo)144 384
-R 1.698(wing\) w)-.25 F 4.198(ord. W)-.1 F 1.698(ith a ne)-.4 F -.05(ga)
--.15 G(ti).05 E 1.998 -.15(ve a)-.25 H -.18(rg).15 G 1.698
-(ument, uppercase the pre).18 F(vious)-.25 E -.1(wo)144 396 S(rd, b).1 E
-(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1(do)108 408 Q
-(wncase\255w)-.1 E(ord \(M\255l\))-.1 E F0(Lo)144 420 Q 1.647
-(wercase the current \(or follo)-.25 F 1.647(wing\) w)-.25 F 4.147
-(ord. W)-.1 F 1.648(ith a ne)-.4 F -.05(ga)-.15 G(ti).05 E 1.948 -.15
-(ve a)-.25 H -.18(rg).15 G 1.648(ument, lo).18 F 1.648(wercase the pre)
--.25 F(vious)-.25 E -.1(wo)144 432 S(rd, b).1 E(ut do not mo)-.2 E .3
--.15(ve p)-.15 H(oint.).15 E F1(capitalize\255w)108 444 Q
-(ord \(M\255c\))-.1 E F0 1.975(Capitalize the current \(or follo)144 456
-R 1.974(wing\) w)-.25 F 4.474(ord. W)-.1 F 1.974(ith a ne)-.4 F -.05(ga)
--.15 G(ti).05 E 2.274 -.15(ve a)-.25 H -.18(rg).15 G 1.974
-(ument, capitalize the pre).18 F(vious)-.25 E -.1(wo)144 468 S(rd, b).1
-E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1 -.1(ove)108 480
-S(rwrite\255mode).1 E F0 -.8(To)144 492 S .437(ggle o).8 F -.15(ve)-.15
-G .437(rwrite mode.).15 F -.4(Wi)5.437 G .437(th an e).4 F .437
-(xplicit positi)-.15 F .738 -.15(ve n)-.25 H .438(umeric ar).15 F .438
-(gument, switches to o)-.18 F -.15(ve)-.15 G .438(rwrite mode.).15 F -.4
-(Wi)144 504 S .781(th an e).4 F .781(xplicit non-positi)-.15 F 1.081
--.15(ve n)-.25 H .781(umeric ar).15 F .781
-(gument, switches to insert mode.)-.18 F .78(This command af)5.781 F
-(fects)-.25 E(only)144 516 Q F1(emacs)4.394 E F0(mode;)4.394 E F1(vi)
-4.394 E F0 1.894(mode does o)4.394 F -.15(ve)-.15 G 1.894(rwrite dif).15
-F(ferently)-.25 E 6.894(.E)-.65 G 1.894(ach call to)-6.894 F/F4 10
-/Times-Italic@0 SF -.37(re)4.395 G(adline\(\)).37 E F0 1.895
-(starts in insert)4.395 F 3.969(mode. In)144 528 R -.15(ove)3.969 G
-1.469(rwrite mode, characters bound to).15 F F1(self\255insert)3.969 E
-F0 1.468(replace the te)3.969 F 1.468(xt at point rather than)-.15 F
-.957(pushing the te)144 540 R .957(xt to the right.)-.15 F .958
-(Characters bound to)5.957 F F1(backward\255delete\255char)3.458 E F0
-.958(replace the character)3.458 F(before point with a space.)144 552 Q
-(By def)5 E(ault, this command is unbound.)-.1 E F1(Killing and Y)87
-568.8 Q(anking)-.85 E(kill\255line \(C\255k\))108 580.8 Q F0
-(Kill the te)144 592.8 Q(xt from point to the end of the line.)-.15 E F1
-(backward\255kill\255line \(C\255x Rubout\))108 604.8 Q F0(Kill backw)
-144 616.8 Q(ard to the be)-.1 E(ginning of the line.)-.15 E F1
-(unix\255line\255discard \(C\255u\))108 628.8 Q F0(Kill backw)144 640.8
-Q(ard from point to the be)-.1 E(ginning of the line.)-.15 E
-(The killed te)5 E(xt is sa)-.15 E -.15(ve)-.2 G 2.5(do).15 G 2.5(nt)
--2.5 G(he kill-ring.)-2.5 E F1(kill\255whole\255line)108 652.8 Q F0
-(Kill all characters on the current line, no matter where point is.)144
-664.8 Q F1(kill\255w)108 676.8 Q(ord \(M\255d\))-.1 E F0 1.308
-(Kill from point the end of the current w)144 688.8 R 1.308
-(ord, or if between w)-.1 F 1.308(ords, to the end of the ne)-.1 F 1.307
-(xt w)-.15 F(ord.)-.1 E -.8(Wo)144 700.8 S
-(rd boundaries are the same as those used by).8 E F1 -.25(fo)2.5 G
-(rward\255w).25 E(ord)-.1 E F0(.)A(GNU Readline 4.3)72 768 Q
-(2002 January 22)126.24 E(7)195.95 E EP
-%%Page: 8 8
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R/F1 10
-/Times-Bold@0 SF(backward\255kill\255w)108 84 Q(ord \(M\255Rubout\))-.1
-E F0(Kill the w)144 96 Q(ord behind point.)-.1 E -.8(Wo)5 G
-(rd boundaries are the same as those used by).8 E F1(backward\255w)2.5 E
-(ord)-.1 E F0(.)A F1(unix\255w)108 108 Q(ord\255rubout \(C\255w\))-.1 E
-F0 .364(Kill the w)144 120 R .364
-(ord behind point, using white space as a w)-.1 F .365(ord boundary)-.1
-F 5.365(.T)-.65 G .365(he killed te)-5.365 F .365(xt is sa)-.15 F -.15
-(ve)-.2 G 2.865(do).15 G 2.865(nt)-2.865 G(he)-2.865 E(kill-ring.)144
-132 Q F1(delete\255horizontal\255space \(M\255\\\))108 144 Q F0
-(Delete all spaces and tabs around point.)144 156 Q F1(kill\255r)108 168
-Q(egion)-.18 E F0 1.13(Kill the te)144 180 R 1.13
-(xt between the point and)-.15 F/F2 10/Times-Italic@0 SF(mark)3.63 E F0
-(\(sa)3.63 E -.15(ve)-.2 G 3.63(dc).15 G 1.13(ursor position\).)-3.63 F
-1.13(This te)6.13 F 1.13(xt is referred to as the)-.15 F F2 -.37(re)144
-192 S(gion)-.03 E F0(.)A F1(copy\255r)108 204 Q(egion\255as\255kill)-.18
-E F0(Cop)144 216 Q 2.5(yt)-.1 G(he te)-2.5 E(xt in the re)-.15 E
-(gion to the kill b)-.15 E(uf)-.2 E(fer)-.25 E(.)-.55 E F1
-(copy\255backward\255w)108 228 Q(ord)-.1 E F0(Cop)144 240 Q 4.8(yt)-.1 G
-2.3(he w)-4.8 F 2.3(ord before point to the kill b)-.1 F(uf)-.2 E(fer)
--.25 E 7.301(.T)-.55 G 2.301(he w)-7.301 F 2.301
-(ord boundaries are the same as)-.1 F F1(back-)4.801 E(ward\255w)144 252
-Q(ord)-.1 E F0(.)A F1(copy\255f)108 264 Q(orward\255w)-.25 E(ord)-.1 E
-F0(Cop)144 276 Q 4.508(yt)-.1 G 2.008(he w)-4.508 F 2.008(ord follo)-.1
-F 2.008(wing point to the kill b)-.25 F(uf)-.2 E(fer)-.25 E 7.007(.T)
--.55 G 2.007(he w)-7.007 F 2.007(ord boundaries are the same as)-.1 F F1
--.25(fo)4.507 G -.37(r-).25 G(ward\255w)144 288 Q(ord)-.1 E F0(.)A F1
-(yank \(C\255y\))108 300 Q F0 -1(Ya)144 312 S
-(nk the top of the kill ring into the b)1 E(uf)-.2 E(fer at point.)-.25
-E F1(yank\255pop \(M\255y\))108 324 Q F0
-(Rotate the kill ring, and yank the ne)144 336 Q 2.5(wt)-.25 G 2.5
-(op. Only)-2.5 F -.1(wo)2.5 G(rks follo).1 E(wing)-.25 E F1(yank)2.5 E
-F0(or)2.5 E F1(yank\255pop)2.5 E F0(.)A F1(Numeric Ar)87 352.8 Q
-(guments)-.1 E(digit\255ar)108 364.8 Q
-(gument \(M\2550, M\2551, ..., M\255\255\))-.1 E F0 .641
-(Add this digit to the ar)144 376.8 R .641
-(gument already accumulating, or start a ne)-.18 F 3.141(wa)-.25 G -.18
-(rg)-3.141 G 3.142(ument. M\255\255).18 F .642(starts a ne)3.142 F(g-)
--.15 E(ati)144 388.8 Q .3 -.15(ve a)-.25 H -.18(rg).15 G(ument.).18 E F1
-(uni)108 400.8 Q -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 E F0 .779
-(This is another w)144 412.8 R .779(ay to specify an ar)-.1 F 3.279
-(gument. If)-.18 F .779(this command is follo)3.279 F .778
-(wed by one or more digits,)-.25 F 1.376
-(optionally with a leading minus sign, those digits de\214ne the ar)144
-424.8 R 3.876(gument. If)-.18 F 1.376(the command is fol-)3.876 F(lo)144
-436.8 Q 1.17(wed by digits, e)-.25 F -.15(xe)-.15 G(cuting).15 E F1(uni)
-3.67 E -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 E F0(ag)3.67 E 1.17
-(ain ends the numeric ar)-.05 F 1.17(gument, b)-.18 F 1.17(ut is other)
--.2 F(-)-.2 E .898(wise ignored.)144 448.8 R .898
-(As a special case, if this command is immediately follo)5.898 F .898
-(wed by a character that is)-.25 F .243
-(neither a digit or minus sign, the ar)144 460.8 R .243
-(gument count for the ne)-.18 F .243(xt command is multiplied by four)
--.15 F 5.242(.T)-.55 G(he)-5.242 E(ar)144 472.8 Q .378
-(gument count is initially one, so e)-.18 F -.15(xe)-.15 G .378
-(cuting this function the \214rst time mak).15 F .378(es the ar)-.1 F
-.378(gument count)-.18 F(four)144 484.8 Q 2.5(,as)-.4 G(econd time mak)
--2.5 E(es the ar)-.1 E(gument count sixteen, and so on.)-.18 E F1
-(Completing)87 501.6 Q(complete \(T)108 513.6 Q(AB\))-.9 E F0 1.909
-(Attempt to perform completion on the te)144 525.6 R 1.908
-(xt before point.)-.15 F 1.908(The actual completion performed is)6.908
-F(application-speci\214c.)144 537.6 Q F1(Bash)5.517 E F0 3.017(,f)C .518
-(or instance, attempts completion treating the te)-3.017 F .518
-(xt as a v)-.15 F .518(ariable \(if the)-.25 F(te)144 549.6 Q .657
-(xt be)-.15 F .657(gins with)-.15 F F1($)3.156 E F0 .656
-(\), username \(if the te)B .656(xt be)-.15 F .656(gins with)-.15 F F1
-(~)3.156 E F0 .656(\), hostname \(if the te)B .656(xt be)-.15 F .656
-(gins with)-.15 F F1(@)3.156 E F0 .656(\), or)B .929
-(command \(including aliases and functions\) in turn.)144 561.6 R .93
-(If none of these produces a match, \214lename)5.929 F 1.274
-(completion is attempted.)144 573.6 R F1(Gdb)6.273 E F0 3.773(,o)C 3.773
-(nt)-3.773 G 1.273(he other hand, allo)-3.773 F 1.273
-(ws completion of program functions and)-.25 F -.25(va)144 585.6 S(riab\
-les, and only attempts \214lename completion under certain circumstance\
-s.).25 E F1(possible\255completions \(M\255?\))108 597.6 Q F0
-(List the possible completions of the te)144 609.6 Q(xt before point.)
--.15 E F1(insert\255completions \(M\255*\))108 621.6 Q F0 .783
-(Insert all completions of the te)144 633.6 R .783
-(xt before point that w)-.15 F .783(ould ha)-.1 F 1.083 -.15(ve b)-.2 H
-.783(een generated by).15 F F1(possible\255com-)3.283 E(pletions)144
-645.6 Q F0(.)A F1(menu\255complete)108 657.6 Q F0 .929(Similar to)144
-669.6 R F1(complete)3.429 E F0 3.429(,b)C .929(ut replaces the w)-3.629
-F .929(ord to be completed with a single match from the list of)-.1 F
-1.193(possible completions.)144 681.6 R 1.193(Repeated e)6.193 F -.15
-(xe)-.15 G 1.193(cution of).15 F F1(menu\255complete)3.694 E F0 1.194
-(steps through the list of possible)3.694 F .829
-(completions, inserting each match in turn.)144 693.6 R .828
-(At the end of the list of completions, the bell is rung)5.828 F .965
-(\(subject to the setting of)144 705.6 R F1 .965
-(0and the original text is r)3.465 F(estor)-.18 E 3.465(ed. An)-.18 F
-(ar)3.465 E .966(gument of)-.1 F F2(n)3.466 E F1(mo)3.466 E -.1(ve)-.1 G
-(s).1 E F2(n)3.466 E F1(posi-)3.466 E 1.249(tions f)144 717.6 R 1.249
-(orward in the list of matches; a negati)-.25 F 1.449 -.1(ve a)-.1 H -.1
-(rg).1 G 1.248(ument may be used to mo).1 F 1.448 -.1(ve b)-.1 H
-(ackward).1 E(thr)144 729.6 Q(ough the list.)-.18 E
-(This command is intended to be bound to T)5 E(AB, b)-.9 E
-(ut is unbound by default.)-.2 E F0(GNU Readline 4.3)72 768 Q
-(2002 January 22)126.24 E(8)195.95 E EP
-%%Page: 9 9
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R/F1 10
-/Times-Bold@0 SF(delete\255char\255or\255list)108 84 Q F0 .373
-(Deletes the character under the cursor if not at the be)144 96 R .374
-(ginning or end of the line \(lik)-.15 F(e)-.1 E F1(delete-char)2.874 E
-F0(\).)A(If at the end of the line, beha)144 108 Q -.15(ve)-.2 G 2.5(si)
-.15 G(dentically to)-2.5 E F1(possible-completions)2.5 E F0(.)A F1 -.25
-(Ke)87 124.8 S(yboard Macr).25 E(os)-.18 E(start\255kbd\255macr)108
-136.8 Q 2.5(o\()-.18 G(C\255x \()-2.5 E(\)).833 E F0(Be)144 148.8 Q
-(gin sa)-.15 E(ving the characters typed into the current k)-.2 E -.15
-(ey)-.1 G(board macro.).15 E F1(end\255kbd\255macr)108 160.8 Q 2.5(o\()
--.18 G(C\255x \))-2.5 E(\)).833 E F0(Stop sa)144 172.8 Q
-(ving the characters typed into the current k)-.2 E -.15(ey)-.1 G
-(board macro and store the de\214nition.).15 E F1
-(call\255last\255kbd\255macr)108 184.8 Q 2.5(o\()-.18 G(C\255x e\))-2.5
-E F0(Re-e)144 196.8 Q -.15(xe)-.15 G 1(cute the last k).15 F -.15(ey)-.1
-G .999(board macro de\214ned, by making the characters in the macro app\
-ear as if).15 F(typed at the k)144 208.8 Q -.15(ey)-.1 G(board.).15 E F1
-(Miscellaneous)87 225.6 Q -.18(re)108 237.6 S<ad72>.18 E
-(ead\255init\255\214le \(C\255x C\255r\))-.18 E F0 1.776
-(Read in the contents of the)144 249.6 R/F2 10/Times-Italic@0 SF(inputr)
-4.276 E(c)-.37 E F0 1.777(\214le, and incorporate an)4.276 F 4.277(yb)
--.15 G 1.777(indings or v)-4.277 F 1.777(ariable assignments)-.25 F
-(found there.)144 261.6 Q F1(abort \(C\255g\))108 273.6 Q F0 3.249
-(Abort the current editing command and ring the terminal')144 285.6 R
-5.748(sb)-.55 G 3.248(ell \(subject to the setting of)-5.748 F F1
-(bell\255style)144 297.6 Q F0(\).)A F1(do\255upper)108 309.6 Q
-(case\255v)-.18 E(ersion \(M\255a, M\255b, M\255)-.1 E F2(x)A F1 2.5(,.)
-C(..\))-2.5 E F0 1.755(If the meta\214ed character)144 321.6 R F2(x)
-4.255 E F0 1.755(is lo)4.255 F 1.756
-(wercase, run the command that is bound to the corresponding)-.25 F
-(uppercase character)144 333.6 Q(.)-.55 E F1(pr)108 345.6 Q
-(e\214x\255meta \(ESC\))-.18 E F0(Metafy the ne)144 357.6 Q
-(xt character typed.)-.15 E/F3 9/Times-Bold@0 SF(ESC)5 E F1(f)2.25 E F0
-(is equi)2.5 E -.25(va)-.25 G(lent to).25 E F1(Meta\255f)2.5 E F0(.)A F1
-(undo \(C\255_, C\255x C\255u\))108 369.6 Q F0
-(Incremental undo, separately remembered for each line.)144 381.6 Q F1
--2.29 -.18(re v)108 393.6 T(ert\255line \(M\255r\)).08 E F0 1.095
-(Undo all changes made to this line.)144 405.6 R 1.095(This is lik)6.095
-F 3.595(ee)-.1 G -.15(xe)-3.745 G 1.095(cuting the).15 F F1(undo)3.595 E
-F0 1.095(command enough times to)3.595 F
-(return the line to its initial state.)144 417.6 Q F1
-(tilde\255expand \(M\255&\))108 429.6 Q F0(Perform tilde e)144 441.6 Q
-(xpansion on the current w)-.15 E(ord.)-.1 E F1
-(set\255mark \(C\255@, M\255<space>\))108 453.6 Q F0
-(Set the mark to the point.)144 465.6 Q(If a numeric ar)5 E
-(gument is supplied, the mark is set to that position.)-.18 E F1
-(exchange\255point\255and\255mark \(C\255x C\255x\))108 477.6 Q F0(Sw)
-144 489.6 Q .282(ap the point with the mark.)-.1 F .283
-(The current cursor position is set to the sa)5.283 F -.15(ve)-.2 G
-2.783(dp).15 G .283(osition, and the old)-2.783 F(cursor position is sa)
-144 501.6 Q -.15(ve)-.2 G 2.5(da).15 G 2.5(st)-2.5 G(he mark.)-2.5 E F1
-(character\255sear)108 513.6 Q(ch \(C\255]\))-.18 E F0 3.036(Ac)144
-525.6 S .536(haracter is read and point is mo)-3.036 F -.15(ve)-.15 G
-3.035(dt).15 G 3.035(ot)-3.035 G .535(he ne)-3.035 F .535
-(xt occurrence of that character)-.15 F 5.535(.A)-.55 G(ne)-2.5 E -.05
-(ga)-.15 G(ti).05 E .835 -.15(ve c)-.25 H(ount).15 E(searches for pre)
-144 537.6 Q(vious occurrences.)-.25 E F1(character\255sear)108 549.6 Q
-(ch\255backward \(M\255C\255]\))-.18 E F0 3.543(Ac)144 561.6 S 1.043
-(haracter is read and point is mo)-3.543 F -.15(ve)-.15 G 3.544(dt).15 G
-3.544(ot)-3.544 G 1.044(he pre)-3.544 F 1.044
-(vious occurrence of that character)-.25 F 6.044(.A)-.55 G(ne)-2.5 E
--.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G
-(count searches for subsequent occurrences.)144 573.6 Q F1
-(insert\255comment \(M\255#\))108 585.6 Q F0 -.4(Wi)144 597.6 S .481
-(thout a numeric ar).4 F .481(gument, the v)-.18 F .481
-(alue of the readline)-.25 F F1(comment\255begin)2.981 E F0 -.25(va)
-2.981 G .48(riable is inserted at the).25 F(be)144 609.6 Q .097
-(ginning of the current line.)-.15 F .098(If a numeric ar)5.097 F .098
-(gument is supplied, this command acts as a toggle:)-.18 F(if)5.098 E
-.322(the characters at the be)144 621.6 R .321
-(ginning of the line do not match the v)-.15 F .321(alue of)-.25 F F1
-(comment\255begin)2.821 E F0 2.821(,t)C .321(he v)-2.821 F .321(alue is)
--.25 F 1.013(inserted, otherwise the characters in)144 633.6 R F1
-(comment-begin)3.514 E F0 1.014(are deleted from the be)3.514 F 1.014
-(ginning of the line.)-.15 F 1.469
-(In either case, the line is accepted as if a ne)144 645.6 R 1.468
-(wline had been typed.)-.25 F 1.468(The def)6.468 F 1.468(ault v)-.1 F
-1.468(alue of)-.25 F F1(com-)3.968 E(ment\255begin)144 657.6 Q F0(mak)
-2.982 E .483(es the current line a shell comment.)-.1 F .483
-(If a numeric ar)5.483 F .483(gument causes the comment)-.18 F
-(character to be remo)144 669.6 Q -.15(ve)-.15 G(d, the line will be e)
-.15 E -.15(xe)-.15 G(cuted by the shell.).15 E F1(dump\255functions)108
-681.6 Q F0 .627(Print all of the functions and their k)144 693.6 R .927
--.15(ey b)-.1 H .626(indings to the readline output stream.).15 F .626
-(If a numeric ar)5.626 F(gu-)-.18 E
-(ment is supplied, the output is formatted in such a w)144 705.6 Q
-(ay that it can be made part of an)-.1 E F2(inputr)2.5 E(c)-.37 E F0
-(\214le.)2.5 E(GNU Readline 4.3)72 768 Q(2002 January 22)126.24 E(9)
-195.95 E EP
-%%Page: 10 10
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R/F1 10
-/Times-Bold@0 SF(dump\255v)108 84 Q(ariables)-.1 E F0 .283
-(Print all of the settable v)144 96 R .283(ariables and their v)-.25 F
-.283(alues to the readline output stream.)-.25 F .283(If a numeric ar)
-5.283 F(gu-)-.18 E
-(ment is supplied, the output is formatted in such a w)144 108 Q
-(ay that it can be made part of an)-.1 E/F2 10/Times-Italic@0 SF(inputr)
-2.5 E(c)-.37 E F0(\214le.)2.5 E F1(dump\255macr)108 120 Q(os)-.18 E F0
-.756(Print all of the readline k)144 132 R 1.056 -.15(ey s)-.1 H .756
-(equences bound to macros and the strings the).15 F 3.256(yo)-.15 G
-3.256(uput. If)-3.256 F 3.255(an)3.255 G(umeric)-3.255 E(ar)144 144 Q
-.528(gument is supplied, the output is formatted in such a w)-.18 F .528
-(ay that it can be made part of an)-.1 F F2(inputr)3.028 E(c)-.37 E F0
-(\214le.)144 156 Q F1(emacs\255editing\255mode \(C\255e\))108 168 Q F0
-(When in)144 180 Q F1(vi)2.5 E F0(command mode, this causes a switch to)
-2.5 E F1(emacs)2.5 E F0(editing mode.)2.5 E F1
-(vi\255editing\255mode \(M\255C\255j\))108 192 Q F0(When in)144 204 Q F1
-(emacs)2.5 E F0(editing mode, this causes a switch to)2.5 E F1(vi)2.5 E
-F0(editing mode.)2.5 E/F3 10.95/Times-Bold@0 SF(DEF)72 220.8 Q -.548(AU)
--.986 G 2.014 -1.007(LT K).548 H(EY BINDINGS)1.007 E F0 .065(The follo)
-108 232.8 R .065(wing is a list of the def)-.25 F .065
-(ault emacs and vi bindings.)-.1 F .064
-(Characters with the eighth bit set are written as)5.064 F .615
-(M\255<character>, and are referred to as)108 244.8 R F2(meta\214ed)
-3.115 E F0 3.115(characters. The)3.115 F .616
-(printable ASCII characters not mentioned)3.116 F 1.116
-(in the list of emacs standard bindings are bound to the)108 256.8 R F1
-(self\255insert)3.615 E F0 1.115(function, which just inserts the gi)
-3.615 F -.15(ve)-.25 G(n).15 E .945(character into the input line.)108
-268.8 R .945(In vi insertion mode, all characters not speci\214cally me\
-ntioned are bound to)5.945 F F1(self\255insert)108 280.8 Q F0 5.359(.C)C
-.359(haracters assigned to signal generation by)-5.359 F F2(stty)2.859 E
-F0 .359(\(1\) or the terminal dri).32 F -.15(ve)-.25 G 1.159 -.4(r, s)
-.15 H .358(uch as C-Z or C-C,).4 F .187(retain that function.)108 292.8
-R .187(Upper and lo)5.187 F .188(wer case meta\214ed characters are bou\
-nd to the same function in the emacs)-.25 F .305(mode meta k)108 304.8 R
--.15(ey)-.1 G 2.805(map. The).15 F .305(remaining characters are unboun\
-d, which causes readline to ring the bell \(subject)2.805 F
-(to the setting of the)108 316.8 Q F1(bell\255style)2.5 E F0 -.25(va)2.5
-G(riable\).).25 E F1(Emacs Mode)87 333.6 Q F0(Emacs Standard bindings)
-151.2 345.6 Q 2.5("C-@" set-mark)151.2 369.6 R 2.5("C-A" be)151.2 381.6
-R(ginning-of-line)-.15 E 2.5("C-B" backw)151.2 393.6 R(ard-char)-.1 E
-2.5("C-D" delete-char)151.2 405.6 R 2.5("C-E" end-of-line)151.2 417.6 R
-2.5("C-F" forw)151.2 429.6 R(ard-char)-.1 E 2.5("C-G" abort)151.2 441.6
-R 2.5("C-H" backw)151.2 453.6 R(ard-delete-char)-.1 E 2.5
-("C-I" complete)151.2 465.6 R 2.5("C-J" accept-line)151.2 477.6 R 2.5
-("C-K" kill-line)151.2 489.6 R 2.5("C-L" clear)151.2 501.6 R(-screen)-.2
-E 2.5("C-M" accept-line)151.2 513.6 R 2.5("C-N" ne)151.2 525.6 R
-(xt-history)-.15 E 2.5("C-P" pre)151.2 537.6 R(vious-history)-.25 E 2.5
-("C-Q" quoted-insert)151.2 549.6 R 2.5("C-R" re)151.2 561.6 R -.15(ve)
--.25 G(rse-search-history).15 E 2.5("C-S" forw)151.2 573.6 R
-(ard-search-history)-.1 E 2.5("C-T" transpose-chars)151.2 585.6 R 2.5
-("C-U" unix-line-discard)151.2 597.6 R 2.5("C-V" quoted-insert)151.2
-609.6 R 2.5("C-W" unix-w)151.2 621.6 R(ord-rubout)-.1 E 2.5("C-Y" yank)
-151.2 633.6 R 2.5("C-]" character)151.2 645.6 R(-search)-.2 E 2.5
-("C-_" undo)151.2 657.6 R 3.333("")151.2 669.6 S(to "/")-.833 E
-(self-insert)5 E 2.5("0" to)151.2 681.6 R 2.5("9" self-insert)2.5 F 2.5
-(":" to)151.2 693.6 R 2.5("~" self-insert)2.5 F 2.5("C-?" backw)151.2
-705.6 R(ard-delete-char)-.1 E(Emacs Meta bindings)151.2 722.4 Q
-(GNU Readline 4.3)72 768 Q(2002 January 22)126.24 E(10)190.95 E EP
-%%Page: 11 11
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R 2.5
-("M-C-G" abort)151.2 84 R 2.5("M-C-H" backw)151.2 96 R(ard-kill-w)-.1 E
-(ord)-.1 E 2.5("M-C-I" tab-insert)151.2 108 R 2.5
-("M-C-J" vi-editing-mode)151.2 120 R 2.5("M-C-M" vi-editing-mode)151.2
-132 R 2.5("M-C-R" re)151.2 144 R -.15(ve)-.25 G(rt-line).15 E 2.5
-("M-C-Y" yank-nth-ar)151.2 156 R(g)-.18 E 2.5("M-C-[" complete)151.2 168
-R 2.5("M-C-]" character)151.2 180 R(-search-backw)-.2 E(ard)-.1 E 2.5
-("M-space" set-mark)151.2 192 R 2.5("M-#" insert-comment)151.2 204 R 2.5
-("M-&" tilde-e)151.2 216 R(xpand)-.15 E 2.5("M-*" insert-completions)
-151.2 228 R 2.5("M--" digit-ar)151.2 240 R(gument)-.18 E 2.5
-("M-." yank-last-ar)151.2 252 R(g)-.18 E 2.5("M-0" digit-ar)151.2 264 R
-(gument)-.18 E 2.5("M-1" digit-ar)151.2 276 R(gument)-.18 E 2.5
-("M-2" digit-ar)151.2 288 R(gument)-.18 E 2.5("M-3" digit-ar)151.2 300 R
-(gument)-.18 E 2.5("M-4" digit-ar)151.2 312 R(gument)-.18 E 2.5
-("M-5" digit-ar)151.2 324 R(gument)-.18 E 2.5("M-6" digit-ar)151.2 336 R
-(gument)-.18 E 2.5("M-7" digit-ar)151.2 348 R(gument)-.18 E 2.5
-("M-8" digit-ar)151.2 360 R(gument)-.18 E 2.5("M-9" digit-ar)151.2 372 R
-(gument)-.18 E 2.5("M-<" be)151.2 384 R(ginning-of-history)-.15 E 2.5
-("M-=" possible-completions)151.2 396 R 2.5("M->" end-of-history)151.2
-408 R 2.5("M-?" possible-completions)151.2 420 R 2.5("M-B" backw)151.2
-432 R(ard-w)-.1 E(ord)-.1 E 2.5("M-C" capitalize-w)151.2 444 R(ord)-.1 E
-2.5("M-D" kill-w)151.2 456 R(ord)-.1 E 2.5("M-F" forw)151.2 468 R(ard-w)
--.1 E(ord)-.1 E 2.5("M-L" do)151.2 480 R(wncase-w)-.25 E(ord)-.1 E 2.5
-("M-N" non-incremental-forw)151.2 492 R(ard-search-history)-.1 E 2.5
-("M-P" non-incremental-re)151.2 504 R -.15(ve)-.25 G(rse-search-history)
-.15 E 2.5("M-R" re)151.2 516 R -.15(ve)-.25 G(rt-line).15 E 2.5
-("M-T" transpose-w)151.2 528 R(ords)-.1 E 2.5("M-U" upcase-w)151.2 540 R
-(ord)-.1 E 2.5("M-Y" yank-pop)151.2 552 R 2.5
-("M-\\" delete-horizontal-space)151.2 564 R 2.5("M-~" tilde-e)151.2 576
-R(xpand)-.15 E 2.5("M-C-?" backw)151.2 588 R(ard-kill-w)-.1 E(ord)-.1 E
-2.5("M-_" yank-last-ar)151.2 600 R(g)-.18 E(Emacs Control-X bindings)
-151.2 616.8 Q 2.5("C-XC-G" abort)151.2 640.8 R 2.5
-("C-XC-R" re-read-init-\214le)151.2 652.8 R 2.5("C-XC-U" undo)151.2
-664.8 R 2.5("C-XC-X" e)151.2 676.8 R(xchange-point-and-mark)-.15 E 2.5
-("C-X\(" start-kbd-macro)151.2 688.8 R 2.5("C-X\)" end-kbd-macro)151.2
-700.8 R 2.5("C-XE" call-last-kbd-macro)151.2 712.8 R 2.5("C-XC-?" backw)
-151.2 724.8 R(ard-kill-line)-.1 E(GNU Readline 4.3)72 768 Q
-(2002 January 22)126.24 E(11)190.95 E EP
-%%Page: 12 12
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R/F1 10
-/Times-Bold@0 SF(VI Mode bindings)87 84 Q F0(VI Insert Mode functions)
-151.2 96 Q 2.5("C-D" vi-eof-maybe)151.2 120 R 2.5("C-H" backw)151.2 132
-R(ard-delete-char)-.1 E 2.5("C-I" complete)151.2 144 R 2.5
-("C-J" accept-line)151.2 156 R 2.5("C-M" accept-line)151.2 168 R 2.5
-("C-R" re)151.2 180 R -.15(ve)-.25 G(rse-search-history).15 E 2.5
-("C-S" forw)151.2 192 R(ard-search-history)-.1 E 2.5
-("C-T" transpose-chars)151.2 204 R 2.5("C-U" unix-line-discard)151.2 216
-R 2.5("C-V" quoted-insert)151.2 228 R 2.5("C-W" unix-w)151.2 240 R
-(ord-rubout)-.1 E 2.5("C-Y" yank)151.2 252 R 2.5("C-[" vi-mo)151.2 264 R
--.15(ve)-.15 G(ment-mode).15 E 2.5("C-_" undo)151.2 276 R 3.333("")151.2
-288 S(to "~")-.833 E(self-insert)5 E 2.5("C-?" backw)151.2 300 R
-(ard-delete-char)-.1 E(VI Command Mode functions)151.2 316.8 Q 2.5
-("C-D" vi-eof-maybe)151.2 340.8 R 2.5("C-E" emacs-editing-mode)151.2
-352.8 R 2.5("C-G" abort)151.2 364.8 R 2.5("C-H" backw)151.2 376.8 R
-(ard-char)-.1 E 2.5("C-J" accept-line)151.2 388.8 R 2.5("C-K" kill-line)
-151.2 400.8 R 2.5("C-L" clear)151.2 412.8 R(-screen)-.2 E 2.5
-("C-M" accept-line)151.2 424.8 R 2.5("C-N" ne)151.2 436.8 R(xt-history)
--.15 E 2.5("C-P" pre)151.2 448.8 R(vious-history)-.25 E 2.5
-("C-Q" quoted-insert)151.2 460.8 R 2.5("C-R" re)151.2 472.8 R -.15(ve)
--.25 G(rse-search-history).15 E 2.5("C-S" forw)151.2 484.8 R
-(ard-search-history)-.1 E 2.5("C-T" transpose-chars)151.2 496.8 R 2.5
-("C-U" unix-line-discard)151.2 508.8 R 2.5("C-V" quoted-insert)151.2
-520.8 R 2.5("C-W" unix-w)151.2 532.8 R(ord-rubout)-.1 E 2.5("C-Y" yank)
-151.2 544.8 R 2.5("C-_" vi-undo)151.2 556.8 R -4.166 3.333("" f)151.2
-568.8 T(orw)-3.333 E(ard-char)-.1 E 2.5("#" insert-comment)151.2 580.8 R
-2.5("$" end-of-line)151.2 592.8 R 2.5("%" vi-match)151.2 604.8 R 2.5
-("&" vi-tilde-e)151.2 616.8 R(xpand)-.15 E 2.5("*" vi-complete)151.2
-628.8 R 2.5("+" ne)151.2 640.8 R(xt-history)-.15 E 2.5("," vi-char)151.2
-652.8 R(-search)-.2 E 2.5("-" pre)151.2 664.8 R(vious-history)-.25 E 2.5
-("." vi-redo)151.2 676.8 R 2.5("/" vi-search)151.2 688.8 R 2.5("0" be)
-151.2 700.8 R(ginning-of-line)-.15 E("1" to "9")151.2 712.8 Q(vi-ar)5 E
-(g-digit)-.18 E 2.5(";" vi-char)151.2 724.8 R(-search)-.2 E
-(GNU Readline 4.3)72 768 Q(2002 January 22)126.24 E(12)190.95 E EP
-%%Page: 13 13
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R 2.5
-("=" vi-complete)151.2 84 R 2.5("?" vi-search)151.2 96 R 2.5
-("A" vi-append-eol)151.2 108 R 2.5("B" vi-pre)151.2 120 R(v-w)-.25 E
-(ord)-.1 E 2.5("C" vi-change-to)151.2 132 R 2.5("D" vi-delete-to)151.2
-144 R 2.5("E" vi-end-w)151.2 156 R(ord)-.1 E 2.5("F" vi-char)151.2 168 R
-(-search)-.2 E 2.5("G" vi-fetch-history)151.2 180 R 2.5
-("I" vi-insert-be)151.2 192 R(g)-.15 E 2.5("N" vi-search-ag)151.2 204 R
-(ain)-.05 E 2.5("P" vi-put)151.2 216 R 2.5("R" vi-replace)151.2 228 R
-2.5("S" vi-subst)151.2 240 R 2.5("T" vi-char)151.2 252 R(-search)-.2 E
-2.5("U" re)151.2 264 R -.15(ve)-.25 G(rt-line).15 E 2.5("W" vi-ne)151.2
-276 R(xt-w)-.15 E(ord)-.1 E 2.5("X" backw)151.2 288 R(ard-delete-char)
--.1 E 2.5("Y" vi-yank-to)151.2 300 R 2.5("\\" vi-complete)151.2 312 R
-2.5("^" vi-\214rst-print)151.2 324 R 2.5("_" vi-yank-ar)151.2 336 R(g)
--.18 E 2.5("`" vi-goto-mark)151.2 348 R 2.5("a" vi-append-mode)151.2 360
-R 2.5("b" vi-pre)151.2 372 R(v-w)-.25 E(ord)-.1 E 2.5("c" vi-change-to)
-151.2 384 R 2.5("d" vi-delete-to)151.2 396 R 2.5("e" vi-end-w)151.2 408
-R(ord)-.1 E 2.5("f" vi-char)151.2 420 R(-search)-.2 E 2.5("h" backw)
-151.2 432 R(ard-char)-.1 E 2.5("i" vi-insertion-mode)151.2 444 R 2.5
-("j" ne)151.2 456 R(xt-history)-.15 E 2.5("k" pre)151.2 468 R(v-history)
--.25 E 2.5("l" forw)151.2 480 R(ard-char)-.1 E 2.5("m" vi-set-mark)151.2
-492 R 2.5("n" vi-search-ag)151.2 504 R(ain)-.05 E 2.5("p" vi-put)151.2
-516 R 2.5("r" vi-change-char)151.2 528 R 2.5("s" vi-subst)151.2 540 R
-2.5("t" vi-char)151.2 552 R(-search)-.2 E 2.5("u" vi-undo)151.2 564 R
-2.5("w" vi-ne)151.2 576 R(xt-w)-.15 E(ord)-.1 E 2.5("x" vi-delete)151.2
-588 R 2.5("y" vi-yank-to)151.2 600 R 2.5("|" vi-column)151.2 612 R 2.5
-("~" vi-change-case)151.2 624 R/F1 10.95/Times-Bold@0 SF(SEE ALSO)72
-640.8 Q/F2 10/Times-Italic@0 SF(The Gnu Readline Libr)108 652.8 Q(ary)
--.15 E F0 2.5(,B)C(rian F)-2.5 E(ox and Chet Rame)-.15 E(y)-.15 E F2
-(The Gnu History Libr)108 664.8 Q(ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E
-(ox and Chet Rame)-.15 E(y)-.15 E F2(bash)108 676.8 Q F0(\(1\))A F1
-(FILES)72 693.6 Q F2(~/.inputr)109.666 705.6 Q(c)-.37 E F0(Indi)144
-717.6 Q(vidual)-.25 E/F3 10/Times-Bold@0 SF -.18(re)2.5 G(adline).18 E
-F0(initialization \214le)2.5 E(GNU Readline 4.3)72 768 Q
-(2002 January 22)126.24 E(13)190.95 E EP
-%%Page: 14 14
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R/F1
-10.95/Times-Bold@0 SF -.548(AU)72 84 S(THORS).548 E F0(Brian F)108 96 Q
-(ox, Free Softw)-.15 E(are F)-.1 E(oundation)-.15 E(bfox@gnu.or)108 108
-Q(g)-.18 E(Chet Rame)108 124.8 Q 1.3 -.65(y, C)-.15 H(ase W).65 E
-(estern Reserv)-.8 E 2.5(eU)-.15 G(ni)-2.5 E -.15(ve)-.25 G(rsity).15 E
-(chet@ins.CWR)108 136.8 Q(U.Edu)-.4 E F1 -.11(BU)72 153.6 S 2.738(GR).11
-G(EPOR)-2.738 E(TS)-.438 E F0 .69(If you \214nd a b)108 165.6 R .69
-(ug in)-.2 F/F2 10/Times-Bold@0 SF -.18(re)3.19 G(adline,).18 E F0 .69
-(you should report it.)3.19 F .691(But \214rst, you should mak)5.69 F
-3.191(es)-.1 G .691(ure that it really is a b)-3.191 F(ug,)-.2 E
-(and that it appears in the latest v)108 177.6 Q(ersion of the)-.15 E F2
--.18(re)2.5 G(adline).18 E F0(library that you ha)2.5 E -.15(ve)-.2 G(.)
-.15 E .705(Once you ha)108 194.4 R 1.005 -.15(ve d)-.2 H .705
-(etermined that a b).15 F .704(ug actually e)-.2 F .704(xists, mail a b)
--.15 F .704(ug report to)-.2 F/F3 10/Times-Italic@0 SF -.2(bu)3.204 G
-(g\255r).2 E(eadline)-.37 E F0(@)A F3(gnu.or)A(g)-.37 E F0 5.704(.I)C
-3.204(fy)-5.704 G(ou)-3.204 E(ha)108 206.4 Q 1.809 -.15(ve a \214)-.2 H
-1.509(x, you are welcome to mail that as well!).15 F 1.51
-(Suggestions and `philosophical' b)6.51 F 1.51(ug reports may be)-.2 F
-(mailed to)108 218.4 Q F3 -.2(bu)2.5 G(g-r).2 E(eadline)-.37 E F0(@)A F3
-(gnu.or)A(g)-.37 E F0(or posted to the Usenet ne)2.5 E(wsgroup)-.25 E F2
-(gnu.bash.b)2.5 E(ug)-.2 E F0(.)A(Comments and b)108 235.2 Q
-(ug reports concerning this manual page should be directed to)-.2 E F3
--.15(ch)2.5 G(et@ins.CWR).15 E -.25(U.)-.4 G(Edu).25 E F0(.).25 E F1
--.11(BU)72 252 S(GS).11 E F0(It')108 264 Q 2.5(st)-.55 G
-(oo big and too slo)-2.5 E -.65(w.)-.25 G(GNU Readline 4.3)72 768 Q
-(2002 January 22)126.24 E(14)190.95 E EP
-%%Trailer
-end
-%%EOF
diff --git a/readline-4.3.orig/doc/rlman.texinfo b/readline-4.3.orig/doc/rlman.texinfo
deleted file mode 100644
index 1ffebad..0000000
--- a/readline-4.3.orig/doc/rlman.texinfo
+++ /dev/null
@@ -1,108 +0,0 @@
-\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
-@setchapternewpage odd
-
-@include manvers.texinfo
-
-@ifinfo
-@dircategory Libraries
-@direntry
-* Readline: (readline). The GNU readline library API
-@end direntry
-
-This document describes the GNU Readline Library, a utility which aids
-in the consistency of user interface across discrete programs that need
-to provide a command line interface.
-
-Copyright (C) 1988-2002 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-pare preserved on all copies.
-
-@ignore
-Permission is granted to process this file through TeX and print the
-results, provided the printed document carries copying permission
-notice identical to this one except for the removal of this paragraph
-(this paragraph not being relevant to the printed manual).
-@end ignore
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the entire
-resulting derived work is distributed under the terms of a permission
-notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that this permission notice may be stated in a translation approved
-by the Free Software Foundation.
-@end ifinfo
-
-@titlepage
-@title GNU Readline Library
-@subtitle Edition @value{EDITION}, for @code{Readline Library} Version @value{VERSION}.
-@subtitle @value{UPDATE-MONTH}
-@author Brian Fox, Free Software Foundation
-@author Chet Ramey, Case Western Reserve University
-
-@page
-This document describes the GNU Readline Library, a utility which aids
-in the consistency of user interface across discrete programs that need
-to provide a command line interface.
-
-Published by the Free Software Foundation @*
-59 Temple Place, Suite 330, @*
-Boston, MA 02111 USA
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the entire
-resulting derived work is distributed under the terms of a permission
-notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that this permission notice may be stated in a translation approved
-by the Free Software Foundation.
-
-@vskip 0pt plus 1filll
-Copyright @copyright{} 1988-2002 Free Software Foundation, Inc.
-@end titlepage
-
-@ifinfo
-@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 that need
-to provide a command line interface.
-
-@menu
-* Command Line Editing:: GNU Readline User's Manual.
-* Programming with GNU Readline:: GNU Readline Programmer's Manual.
-* Concept Index:: Index of concepts described in this manual.
-* Function and Variable Index:: Index of externally visible functions
- and variables.
-@end menu
-@end ifinfo
-
-@include rluser.texinfo
-@include rltech.texinfo
-
-@node Concept Index
-@unnumbered Concept Index
-@printindex cp
-
-@node Function and Variable Index
-@unnumbered Function and Variable Index
-@printindex fn
-
-@contents
-@bye
diff --git a/readline-4.3.orig/doc/rltech.texinfo b/readline-4.3.orig/doc/rltech.texinfo
deleted file mode 100644
index 037e824..0000000
--- a/readline-4.3.orig/doc/rltech.texinfo
+++ /dev/null
@@ -1,2165 +0,0 @@
-@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 consitency of user interface across discrete programs that need
-to provide a command line interface.
-
-Copyright (C) 1988-2002 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-pare preserved on all copies.
-
-@ignore
-Permission is granted to process this file through TeX and print the
-results, provided the printed document carries copying permission
-notice identical to this one except for the removal of this paragraph
-(this paragraph not being relevant to the printed manual).
-@end ignore
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the entire
-resulting derived work is distributed under the terms of a permission
-notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that this permission notice may be stated in a translation approved
-by the Foundation.
-@end ifinfo
-
-@node Programming with GNU Readline
-@chapter Programming with GNU Readline
-
-This chapter describes the interface between the @sc{gnu} Readline Library and
-other programs. If you are a programmer, and you wish to include the
-features found in @sc{gnu} Readline
-such as completion, line editing, and interactive history manipulation
-in your own programs, this section is for you.
-
-@menu
-* Basic Behavior:: Using the default behavior of Readline.
-* Custom Functions:: Adding your own functions to Readline.
-* Readline Variables:: Variables accessible to custom
- functions.
-* Readline Convenience Functions:: Functions which Readline supplies to
- aid in writing your own custom
- functions.
-* Readline Signal Handling:: How Readline behaves when it receives signals.
-* Custom Completers:: Supplanting or supplementing Readline's
- completion functions.
-@end menu
-
-@node Basic Behavior
-@section Basic Behavior
-
-Many programs provide a command line interface, such as @code{mail},
-@code{ftp}, and @code{sh}. For such programs, the default behaviour of
-Readline is sufficient. This section describes how to use Readline in
-the simplest way possible, perhaps to replace calls in your code to
-@code{gets()} or @code{fgets()}.
-
-@findex readline
-@cindex readline, function
-
-The function @code{readline()} prints a prompt @var{prompt}
-and then reads and returns a single line of text from the user.
-If @var{prompt} is @code{NULL} or the empty string, no prompt is displayed.
-The line @code{readline} returns is allocated with @code{malloc()};
-the caller should @code{free()} the line when it has finished with it.
-The declaration for @code{readline} in ANSI C is
-
-@example
-@code{char *readline (const char *@var{prompt});}
-@end example
-
-@noindent
-So, one might say
-@example
-@code{char *line = readline ("Enter a line: ");}
-@end example
-@noindent
-in order to read a line of text from the user.
-The line returned has the final newline removed, so only the
-text remains.
-
-If @code{readline} encounters an @code{EOF} while reading the line, and the
-line is empty at that point, then @code{(char *)NULL} is returned.
-Otherwise, the line is ended just as if a newline had been typed.
-
-If you want the user to be able to get at the line later, (with
-@key{C-p} for example), you must call @code{add_history()} to save the
-line away in a @dfn{history} list of such lines.
-
-@example
-@code{add_history (line)};
-@end example
-
-@noindent
-For full details on the GNU History Library, see the associated manual.
-
-It is preferable to avoid saving empty lines on the history list, since
-users rarely have a burning need to reuse a blank line. Here is
-a function which usefully replaces the standard @code{gets()} library
-function, and has the advantage of no static buffer to overflow:
-
-@example
-/* A static variable for holding the line. */
-static char *line_read = (char *)NULL;
-
-/* Read a string, and return a pointer to it.
- Returns NULL on EOF. */
-char *
-rl_gets ()
-@{
- /* If the buffer has already been allocated,
- return the memory to the free pool. */
- if (line_read)
- @{
- free (line_read);
- line_read = (char *)NULL;
- @}
-
- /* Get a line from the user. */
- line_read = readline ("");
-
- /* If the line has any text in it,
- save it on the history. */
- if (line_read && *line_read)
- add_history (line_read);
-
- return (line_read);
-@}
-@end example
-
-This function gives the user the default behaviour of @key{TAB}
-completion: completion on file names. If you do not want Readline to
-complete on filenames, you can change the binding of the @key{TAB} key
-with @code{rl_bind_key()}.
-
-@example
-@code{int rl_bind_key (int @var{key}, rl_command_func_t *@var{function});}
-@end example
-
-@code{rl_bind_key()} takes two arguments: @var{key} is the character that
-you want to bind, and @var{function} is the address of the function to
-call when @var{key} is pressed. Binding @key{TAB} to @code{rl_insert()}
-makes @key{TAB} insert itself.
-@code{rl_bind_key()} returns non-zero if @var{key} is not a valid
-ASCII character code (between 0 and 255).
-
-Thus, to disable the default @key{TAB} behavior, the following suffices:
-@example
-@code{rl_bind_key ('\t', rl_insert);}
-@end example
-
-This code should be executed once at the start of your program; you
-might write a function called @code{initialize_readline()} which
-performs this and other desired initializations, such as installing
-custom completers (@pxref{Custom Completers}).
-
-@node Custom Functions
-@section Custom Functions
-
-Readline provides many functions for manipulating the text of
-the line, but it isn't possible to anticipate the needs of all
-programs. This section describes the various functions and variables
-defined within the Readline library which allow a user program to add
-customized functionality to Readline.
-
-Before declaring any functions that customize Readline's behavior, or
-using any functionality Readline provides in other code, an
-application writer should include the file @code{<readline/readline.h>}
-in any file that uses Readline's features. Since some of the definitions
-in @code{readline.h} use the @code{stdio} library, the file
-@code{<stdio.h>} should be included before @code{readline.h}.
-
-@code{readline.h} defines a C preprocessor variable that should
-be treated as an integer, @code{RL_READLINE_VERSION}, which may
-be used to conditionally compile application code depending on
-the installed Readline version. The value is a hexadecimal
-encoding of the major and minor version numbers of the library,
-of the form 0x@var{MMmm}. @var{MM} is the two-digit major
-version number; @var{mm} is the two-digit minor version number.
-For Readline 4.2, for example, the value of
-@code{RL_READLINE_VERSION} would be @code{0x0402}.
-
-@menu
-* Readline Typedefs:: C declarations to make code readable.
-* Function Writing:: Variables and calling conventions.
-@end menu
-
-@node Readline Typedefs
-@subsection Readline Typedefs
-
-For readabilty, we declare a number of new object types, all pointers
-to functions.
-
-The reason for declaring these new types is to make it easier to write
-code describing pointers to C functions with appropriately prototyped
-arguments and return values.
-
-For instance, say we want to declare a variable @var{func} as a pointer
-to a function which takes two @code{int} arguments and returns an
-@code{int} (this is the type of all of the Readline bindable functions).
-Instead of the classic C declaration
-
-@code{int (*func)();}
-
-@noindent
-or the ANSI-C style declaration
-
-@code{int (*func)(int, int);}
-
-@noindent
-we may write
-
-@code{rl_command_func_t *func;}
-
-The full list of function pointer types available is
-
-@table @code
-@item typedef int rl_command_func_t (int, int);
-
-@item typedef char *rl_compentry_func_t (const char *, int);
-
-@item typedef char **rl_completion_func_t (const char *, int, int);
-
-@item typedef char *rl_quote_func_t (char *, int, char *);
-
-@item typedef char *rl_dequote_func_t (char *, int);
-
-@item typedef int rl_compignore_func_t (char **);
-
-@item typedef void rl_compdisp_func_t (char **, int, int);
-
-@item typedef int rl_hook_func_t (void);
-
-@item typedef int rl_getc_func_t (FILE *);
-
-@item typedef int rl_linebuf_func_t (char *, int);
-
-@item typedef int rl_intfunc_t (int);
-@item #define rl_ivoidfunc_t rl_hook_func_t
-@item typedef int rl_icpfunc_t (char *);
-@item typedef int rl_icppfunc_t (char **);
-
-@item typedef void rl_voidfunc_t (void);
-@item typedef void rl_vintfunc_t (int);
-@item typedef void rl_vcpfunc_t (char *);
-@item typedef void rl_vcppfunc_t (char **);
-
-@end table
-
-@node Function Writing
-@subsection Writing a New Function
-
-In order to write new functions for Readline, you need to know the
-calling conventions for keyboard-invoked functions, and the names of the
-variables that describe the current state of the line read so far.
-
-The calling sequence for a command @code{foo} looks like
-
-@example
-@code{int foo (int count, int key)}
-@end example
-
-@noindent
-where @var{count} is the numeric argument (or 1 if defaulted) and
-@var{key} is the key that invoked this function.
-
-It is completely up to the function as to what should be done with the
-numeric argument. Some functions use it as a repeat count, some
-as a flag, and others to choose alternate behavior (refreshing the current
-line as opposed to refreshing the screen, for example). Some choose to
-ignore it. In general, if a
-function uses the numeric argument as a repeat count, it should be able
-to do something useful with both negative and positive arguments.
-At the very least, it should be aware that it can be passed a
-negative argument.
-
-A command function should return 0 if its action completes successfully,
-and a non-zero value if some error occurs.
-
-@node Readline Variables
-@section Readline Variables
-
-These variables are available to function writers.
-
-@deftypevar {char *} rl_line_buffer
-This is the line gathered so far. You are welcome to modify the
-contents of the line, but see @ref{Allowing Undoing}. The
-function @code{rl_extend_line_buffer} is available to increase
-the memory allocated to @code{rl_line_buffer}.
-@end deftypevar
-
-@deftypevar int rl_point
-The offset of the current cursor position in @code{rl_line_buffer}
-(the @emph{point}).
-@end deftypevar
-
-@deftypevar int rl_end
-The number of characters present in @code{rl_line_buffer}. When
-@code{rl_point} is at the end of the line, @code{rl_point} and
-@code{rl_end} are equal.
-@end deftypevar
-
-@deftypevar int rl_mark
-The @var{mark} (saved position) in the current line. If set, the mark
-and point define a @emph{region}.
-@end deftypevar
-
-@deftypevar int rl_done
-Setting this to a non-zero value causes Readline to return the current
-line immediately.
-@end deftypevar
-
-@deftypevar int rl_num_chars_to_read
-Setting this to a positive value before calling @code{readline()} causes
-Readline to return after accepting that many characters, rather
-than reading up to a character bound to @code{accept-line}.
-@end deftypevar
-
-@deftypevar int rl_pending_input
-Setting this to a value makes it the next keystroke read. This is a
-way to stuff a single character into the input stream.
-@end deftypevar
-
-@deftypevar int rl_dispatching
-Set to a non-zero value if a function is being called from a key binding;
-zero otherwise. Application functions can test this to discover whether
-they were called directly or by Readline's dispatching mechanism.
-@end deftypevar
-
-@deftypevar int rl_erase_empty_line
-Setting this to a non-zero value causes Readline to completely erase
-the current line, including any prompt, any time a newline is typed as
-the only character on an otherwise-empty line. The cursor is moved to
-the beginning of the newly-blank line.
-@end deftypevar
-
-@deftypevar {char *} rl_prompt
-The prompt Readline uses. This is set from the argument to
-@code{readline()}, and should not be assigned to directly.
-The @code{rl_set_prompt()} function (@pxref{Redisplay}) may
-be used to modify the prompt string after calling @code{readline()}.
-@end deftypevar
-
-@deftypevar int rl_already_prompted
-If an application wishes to display the prompt itself, rather than have
-Readline do it the first time @code{readline()} is called, it should set
-this variable to a non-zero value after displaying the prompt.
-The prompt must also be passed as the argument to @code{readline()} so
-the redisplay functions can update the display properly.
-The calling application is responsible for managing the value; Readline
-never sets it.
-@end deftypevar
-
-@deftypevar {const char *} rl_library_version
-The version number of this revision of the library.
-@end deftypevar
-
-@deftypevar int rl_readline_version
-An integer encoding the current version of the library. The encoding is
-of the form 0x@var{MMmm}, where @var{MM} is the two-digit major version
-number, and @var{mm} is the two-digit minor version number.
-For example, for Readline-4.2, @code{rl_readline_version} would have the
-value 0x0402.
-@end deftypevar
-
-@deftypevar {int} rl_gnu_readline_p
-Always set to 1, denoting that this is @sc{gnu} readline rather than some
-emulation.
-@end deftypevar
-
-@deftypevar {const char *} rl_terminal_name
-The terminal type, used for initialization. If not set by the application,
-Readline sets this to the value of the @env{TERM} environment variable
-the first time it is called.
-@end deftypevar
-
-@deftypevar {const char *} rl_readline_name
-This variable is set to a unique name by each application using Readline.
-The value allows conditional parsing of the inputrc file
-(@pxref{Conditional Init Constructs}).
-@end deftypevar
-
-@deftypevar {FILE *} rl_instream
-The stdio stream from which Readline reads input.
-If @code{NULL}, Readline defaults to @var{stdin}.
-@end deftypevar
-
-@deftypevar {FILE *} rl_outstream
-The stdio stream to which Readline performs output.
-If @code{NULL}, Readline defaults to @var{stdout}.
-@end deftypevar
-
-@deftypevar {rl_command_func_t *} rl_last_func
-The address of the last command function Readline executed. May be used to
-test whether or not a function is being executed twice in succession, for
-example.
-@end deftypevar
-
-@deftypevar {rl_hook_func_t *} rl_startup_hook
-If non-zero, this is the address of a function to call just
-before @code{readline} prints the first prompt.
-@end deftypevar
-
-@deftypevar {rl_hook_func_t *} rl_pre_input_hook
-If non-zero, this is the address of a function to call after
-the first prompt has been printed and just before @code{readline}
-starts reading input characters.
-@end deftypevar
-
-@deftypevar {rl_hook_func_t *} rl_event_hook
-If non-zero, this is the address of a function to call periodically
-when Readline is waiting for terminal input.
-By default, this will be called at most ten times a second if there
-is no keyboard input.
-@end deftypevar
-
-@deftypevar {rl_getc_func_t *} rl_getc_function
-If non-zero, Readline will call indirectly through this pointer
-to get a character from the input stream. By default, it is set to
-@code{rl_getc}, the default Readline character input function
-(@pxref{Character Input}).
-@end deftypevar
-
-@deftypevar {rl_voidfunc_t *} rl_redisplay_function
-If non-zero, Readline will call indirectly through this pointer
-to update the display with the current contents of the editing buffer.
-By default, it is set to @code{rl_redisplay}, the default Readline
-redisplay function (@pxref{Redisplay}).
-@end deftypevar
-
-@deftypevar {rl_vintfunc_t *} rl_prep_term_function
-If non-zero, Readline will call indirectly through this pointer
-to initialize the terminal. The function takes a single argument, an
-@code{int} flag that says whether or not to use eight-bit characters.
-By default, this is set to @code{rl_prep_terminal}
-(@pxref{Terminal Management}).
-@end deftypevar
-
-@deftypevar {rl_voidfunc_t *} rl_deprep_term_function
-If non-zero, Readline will call indirectly through this pointer
-to reset the terminal. This function should undo the effects of
-@code{rl_prep_term_function}.
-By default, this is set to @code{rl_deprep_terminal}
-(@pxref{Terminal Management}).
-@end deftypevar
-
-@deftypevar {Keymap} rl_executing_keymap
-This variable is set to the keymap (@pxref{Keymaps}) in which the
-currently executing readline function was found.
-@end deftypevar
-
-@deftypevar {Keymap} rl_binding_keymap
-This variable is set to the keymap (@pxref{Keymaps}) in which the
-last key binding occurred.
-@end deftypevar
-
-@deftypevar {char *} rl_executing_macro
-This variable is set to the text of any currently-executing macro.
-@end deftypevar
-
-@deftypevar {int} rl_readline_state
-A variable with bit values that encapsulate the current Readline state.
-A bit is set with the @code{RL_SETSTATE} macro, and unset with the
-@code{RL_UNSETSTATE} macro. Use the @code{RL_ISSTATE} macro to test
-whether a particular state bit is set. Current state bits include:
-
-@table @code
-@item RL_STATE_NONE
-Readline has not yet been called, nor has it begun to intialize.
-@item RL_STATE_INITIALIZING
-Readline is initializing its internal data structures.
-@item RL_STATE_INITIALIZED
-Readline has completed its initialization.
-@item RL_STATE_TERMPREPPED
-Readline has modified the terminal modes to do its own input and redisplay.
-@item RL_STATE_READCMD
-Readline is reading a command from the keyboard.
-@item RL_STATE_METANEXT
-Readline is reading more input after reading the meta-prefix character.
-@item RL_STATE_DISPATCHING
-Readline is dispatching to a command.
-@item RL_STATE_MOREINPUT
-Readline is reading more input while executing an editing command.
-@item RL_STATE_ISEARCH
-Readline is performing an incremental history search.
-@item RL_STATE_NSEARCH
-Readline is performing a non-incremental history search.
-@item RL_STATE_SEARCH
-Readline is searching backward or forward through the history for a string.
-@item RL_STATE_NUMERICARG
-Readline is reading a numeric argument.
-@item RL_STATE_MACROINPUT
-Readline is currently getting its input from a previously-defined keyboard
-macro.
-@item RL_STATE_MACRODEF
-Readline is currently reading characters defining a keyboard macro.
-@item RL_STATE_OVERWRITE
-Readline is in overwrite mode.
-@item RL_STATE_COMPLETING
-Readline is performing word completion.
-@item RL_STATE_SIGHANDLER
-Readline is currently executing the readline signal handler.
-@item RL_STATE_UNDOING
-Readline is performing an undo.
-@item RL_STATE_DONE
-Readline has read a key sequence bound to @code{accept-line}
-and is about to return the line to the caller.
-@end table
-
-@end deftypevar
-
-@deftypevar {int} rl_explicit_arg
-Set to a non-zero value if an explicit numeric argument was specified by
-the user. Only valid in a bindable command function.
-@end deftypevar
-
-@deftypevar {int} rl_numeric_arg
-Set to the value of any numeric argument explicitly specified by the user
-before executing the current Readline function. Only valid in a bindable
-command function.
-@end deftypevar
-
-@deftypevar {int} rl_editing_mode
-Set to a value denoting Readline's current editing mode. A value of
-@var{1} means Readline is currently in emacs mode; @var{0}
-means that vi mode is active.
-@end deftypevar
-
-
-@node Readline Convenience Functions
-@section Readline Convenience Functions
-
-@menu
-* Function Naming:: How to give a function you write a name.
-* Keymaps:: Making keymaps.
-* Binding Keys:: Changing Keymaps.
-* Associating Function Names and Bindings:: Translate function names to
- key sequences.
-* Allowing Undoing:: How to make your functions undoable.
-* Redisplay:: Functions to control line display.
-* Modifying Text:: Functions to modify @code{rl_line_buffer}.
-* Character Input:: Functions to read keyboard input.
-* Terminal Management:: Functions to manage terminal settings.
-* Utility Functions:: Generally useful functions and hooks.
-* Miscellaneous Functions:: Functions that don't fall into any category.
-* Alternate Interface:: Using Readline in a `callback' fashion.
-* A Readline Example:: An example Readline function.
-@end menu
-
-@node Function Naming
-@subsection Naming a Function
-
-The user can dynamically change the bindings of keys while using
-Readline. This is done by representing the function with a descriptive
-name. The user is able to type the descriptive name when referring to
-the function. Thus, in an init file, one might find
-
-@example
-Meta-Rubout: backward-kill-word
-@end example
-
-This binds the keystroke @key{Meta-Rubout} to the function
-@emph{descriptively} named @code{backward-kill-word}. You, as the
-programmer, should bind the functions you write to descriptive names as
-well. Readline provides a function for doing that:
-
-@deftypefun int rl_add_defun (const char *name, rl_command_func_t *function, int key)
-Add @var{name} to the list of named functions. Make @var{function} be
-the function that gets called. If @var{key} is not -1, then bind it to
-@var{function} using @code{rl_bind_key()}.
-@end deftypefun
-
-Using this function alone is sufficient for most applications. It is
-the recommended way to add a few functions to the default functions that
-Readline has built in. If you need to do something other
-than adding a function to Readline, you may need to use the
-underlying functions described below.
-
-@node Keymaps
-@subsection Selecting a Keymap
-
-Key bindings take place on a @dfn{keymap}. The keymap is the
-association between the keys that the user types and the functions that
-get run. You can make your own keymaps, copy existing keymaps, and tell
-Readline which keymap to use.
-
-@deftypefun Keymap rl_make_bare_keymap (void)
-Returns a new, empty keymap. The space for the keymap is allocated with
-@code{malloc()}; the caller should free it by calling
-@code{rl_discard_keymap()} when done.
-@end deftypefun
-
-@deftypefun Keymap rl_copy_keymap (Keymap map)
-Return a new keymap which is a copy of @var{map}.
-@end deftypefun
-
-@deftypefun Keymap rl_make_keymap (void)
-Return a new keymap with the printing characters bound to rl_insert,
-the lowercase Meta characters bound to run their equivalents, and
-the Meta digits bound to produce numeric arguments.
-@end deftypefun
-
-@deftypefun void rl_discard_keymap (Keymap keymap)
-Free the storage associated with @var{keymap}.
-@end deftypefun
-
-Readline has several internal keymaps. These functions allow you to
-change which keymap is active.
-
-@deftypefun Keymap rl_get_keymap (void)
-Returns the currently active keymap.
-@end deftypefun
-
-@deftypefun void rl_set_keymap (Keymap keymap)
-Makes @var{keymap} the currently active keymap.
-@end deftypefun
-
-@deftypefun Keymap rl_get_keymap_by_name (const char *name)
-Return the keymap matching @var{name}. @var{name} is one which would
-be supplied in a @code{set keymap} inputrc line (@pxref{Readline Init File}).
-@end deftypefun
-
-@deftypefun {char *} rl_get_keymap_name (Keymap keymap)
-Return the name matching @var{keymap}. @var{name} is one which would
-be supplied in a @code{set keymap} inputrc line (@pxref{Readline Init File}).
-@end deftypefun
-
-@node Binding Keys
-@subsection Binding Keys
-
-Key sequences are associate with functions through the keymap.
-Readline has several internal keymaps: @code{emacs_standard_keymap},
-@code{emacs_meta_keymap}, @code{emacs_ctlx_keymap},
-@code{vi_movement_keymap}, and @code{vi_insertion_keymap}.
-@code{emacs_standard_keymap} is the default, and the examples in
-this manual assume that.
-
-Since @code{readline()} installs a set of default key bindings the first
-time it is called, there is always the danger that a custom binding
-installed before the first call to @code{readline()} will be overridden.
-An alternate mechanism is to install custom key bindings in an
-initialization function assigned to the @code{rl_startup_hook} variable
-(@pxref{Readline Variables}).
-
-These functions manage key bindings.
-
-@deftypefun int rl_bind_key (int key, rl_command_func_t *function)
-Binds @var{key} to @var{function} in the currently active keymap.
-Returns non-zero in the case of an invalid @var{key}.
-@end deftypefun
-
-@deftypefun int rl_bind_key_in_map (int key, rl_command_func_t *function, Keymap map)
-Bind @var{key} to @var{function} in @var{map}. Returns non-zero in the case
-of an invalid @var{key}.
-@end deftypefun
-
-@deftypefun int rl_unbind_key (int key)
-Bind @var{key} to the null function in the currently active keymap.
-Returns non-zero in case of error.
-@end deftypefun
-
-@deftypefun int rl_unbind_key_in_map (int key, Keymap map)
-Bind @var{key} to the null function in @var{map}.
-Returns non-zero in case of error.
-@end deftypefun
-
-@deftypefun int rl_unbind_function_in_map (rl_command_func_t *function, Keymap map)
-Unbind all keys that execute @var{function} in @var{map}.
-@end deftypefun
-
-@deftypefun int rl_unbind_command_in_map (const char *command, Keymap map)
-Unbind all keys that are bound to @var{command} in @var{map}.
-@end deftypefun
-
-@deftypefun int rl_set_key (const char *keyseq, rl_command_func_t *function, Keymap map)
-Bind the key sequence represented by the string @var{keyseq} to the function
-@var{function}. This makes new keymaps as
-necessary. The initial keymap in which to do bindings is @var{map}.
-@end deftypefun
-
-@deftypefun int rl_generic_bind (int type, const char *keyseq, char *data, Keymap map)
-Bind the key sequence represented by the string @var{keyseq} to the arbitrary
-pointer @var{data}. @var{type} says what kind of data is pointed to by
-@var{data}; this can be a function (@code{ISFUNC}), a macro
-(@code{ISMACR}), or a keymap (@code{ISKMAP}). This makes new keymaps as
-necessary. The initial keymap in which to do bindings is @var{map}.
-@end deftypefun
-
-@deftypefun int rl_parse_and_bind (char *line)
-Parse @var{line} as if it had been read from the @code{inputrc} file and
-perform any key bindings and variable assignments found
-(@pxref{Readline Init File}).
-@end deftypefun
-
-@deftypefun int rl_read_init_file (const char *filename)
-Read keybindings and variable assignments from @var{filename}
-(@pxref{Readline Init File}).
-@end deftypefun
-
-@node Associating Function Names and Bindings
-@subsection Associating Function Names and Bindings
-
-These functions allow you to find out what keys invoke named functions
-and the functions invoked by a particular key sequence. You may also
-associate a new function name with an arbitrary function.
-
-@deftypefun {rl_command_func_t *} rl_named_function (const char *name)
-Return the function with name @var{name}.
-@end deftypefun
-
-@deftypefun {rl_command_func_t *} rl_function_of_keyseq (const char *keyseq, Keymap map, int *type)
-Return the function invoked by @var{keyseq} in keymap @var{map}.
-If @var{map} is @code{NULL}, the current keymap is used. If @var{type} is
-not @code{NULL}, the type of the object is returned in the @code{int} variable
-it points to (one of @code{ISFUNC}, @code{ISKMAP}, or @code{ISMACR}).
-@end deftypefun
-
-@deftypefun {char **} rl_invoking_keyseqs (rl_command_func_t *function)
-Return an array of strings representing the key sequences used to
-invoke @var{function} in the current keymap.
-@end deftypefun
-
-@deftypefun {char **} rl_invoking_keyseqs_in_map (rl_command_func_t *function, Keymap map)
-Return an array of strings representing the key sequences used to
-invoke @var{function} in the keymap @var{map}.
-@end deftypefun
-
-@deftypefun void rl_function_dumper (int readable)
-Print the readline function names and the key sequences currently
-bound to them to @code{rl_outstream}. If @var{readable} is non-zero,
-the list is formatted in such a way that it can be made part of an
-@code{inputrc} file and re-read.
-@end deftypefun
-
-@deftypefun void rl_list_funmap_names (void)
-Print the names of all bindable Readline functions to @code{rl_outstream}.
-@end deftypefun
-
-@deftypefun {const char **} rl_funmap_names (void)
-Return a NULL terminated array of known function names. The array is
-sorted. The array itself is allocated, but not the strings inside. You
-should @code{free()} the array when you are done, but not the pointers.
-@end deftypefun
-
-@deftypefun int rl_add_funmap_entry (const char *name, rl_command_func_t *function)
-Add @var{name} to the list of bindable Readline command names, and make
-@var{function} the function to be called when @var{name} is invoked.
-@end deftypefun
-
-@node Allowing Undoing
-@subsection Allowing Undoing
-
-Supporting the undo command is a painless thing, and makes your
-functions much more useful. It is certainly easy to try
-something if you know you can undo it.
-
-If your function simply inserts text once, or deletes text once, and
-uses @code{rl_insert_text()} or @code{rl_delete_text()} to do it, then
-undoing is already done for you automatically.
-
-If you do multiple insertions or multiple deletions, or any combination
-of these operations, you should group them together into one operation.
-This is done with @code{rl_begin_undo_group()} and
-@code{rl_end_undo_group()}.
-
-The types of events that can be undone are:
-
-@smallexample
-enum undo_code @{ UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END @};
-@end smallexample
-
-Notice that @code{UNDO_DELETE} means to insert some text, and
-@code{UNDO_INSERT} means to delete some text. That is, the undo code
-tells what to undo, not how to undo it. @code{UNDO_BEGIN} and
-@code{UNDO_END} are tags added by @code{rl_begin_undo_group()} and
-@code{rl_end_undo_group()}.
-
-@deftypefun int rl_begin_undo_group (void)
-Begins saving undo information in a group construct. The undo
-information usually comes from calls to @code{rl_insert_text()} and
-@code{rl_delete_text()}, but could be the result of calls to
-@code{rl_add_undo()}.
-@end deftypefun
-
-@deftypefun int rl_end_undo_group (void)
-Closes the current undo group started with @code{rl_begin_undo_group
-()}. There should be one call to @code{rl_end_undo_group()}
-for each call to @code{rl_begin_undo_group()}.
-@end deftypefun
-
-@deftypefun void rl_add_undo (enum undo_code what, int start, int end, char *text)
-Remember how to undo an event (according to @var{what}). The affected
-text runs from @var{start} to @var{end}, and encompasses @var{text}.
-@end deftypefun
-
-@deftypefun void rl_free_undo_list (void)
-Free the existing undo list.
-@end deftypefun
-
-@deftypefun int rl_do_undo (void)
-Undo the first thing on the undo list. Returns @code{0} if there was
-nothing to undo, non-zero if something was undone.
-@end deftypefun
-
-Finally, if you neither insert nor delete text, but directly modify the
-existing text (e.g., change its case), call @code{rl_modifying()}
-once, just before you modify the text. You must supply the indices of
-the text range that you are going to modify.
-
-@deftypefun int rl_modifying (int start, int end)
-Tell Readline to save the text between @var{start} and @var{end} as a
-single undo unit. It is assumed that you will subsequently modify
-that text.
-@end deftypefun
-
-@node Redisplay
-@subsection Redisplay
-
-@deftypefun void rl_redisplay (void)
-Change what's displayed on the screen to reflect the current contents
-of @code{rl_line_buffer}.
-@end deftypefun
-
-@deftypefun int rl_forced_update_display (void)
-Force the line to be updated and redisplayed, whether or not
-Readline thinks the screen display is correct.
-@end deftypefun
-
-@deftypefun int rl_on_new_line (void)
-Tell the update functions that we have moved onto a new (empty) line,
-usually after ouputting a newline.
-@end deftypefun
-
-@deftypefun int rl_on_new_line_with_prompt (void)
-Tell the update functions that we have moved onto a new line, with
-@var{rl_prompt} already displayed.
-This could be used by applications that want to output the prompt string
-themselves, but still need Readline to know the prompt string length for
-redisplay.
-It should be used after setting @var{rl_already_prompted}.
-@end deftypefun
-
-@deftypefun int rl_reset_line_state (void)
-Reset the display state to a clean state and redisplay the current line
-starting on a new line.
-@end deftypefun
-
-@deftypefun int rl_crlf (void)
-Move the cursor to the start of the next screen line.
-@end deftypefun
-
-@deftypefun int rl_show_char (int c)
-Display character @var{c} on @code{rl_outstream}.
-If Readline has not been set to display meta characters directly, this
-will convert meta characters to a meta-prefixed key sequence.
-This is intended for use by applications which wish to do their own
-redisplay.
-@end deftypefun
-
-@deftypefun int rl_message (const char *, @dots{})
-The arguments are a format string as would be supplied to @code{printf},
-possibly containing conversion specifications such as @samp{%d}, and
-any additional arguments necessary to satisfy the conversion specifications.
-The resulting string is displayed in the @dfn{echo area}. The echo area
-is also used to display numeric arguments and search strings.
-@end deftypefun
-
-@deftypefun int rl_clear_message (void)
-Clear the message in the echo area.
-@end deftypefun
-
-@deftypefun void rl_save_prompt (void)
-Save the local Readline prompt display state in preparation for
-displaying a new message in the message area with @code{rl_message()}.
-@end deftypefun
-
-@deftypefun void rl_restore_prompt (void)
-Restore the local Readline prompt display state saved by the most
-recent call to @code{rl_save_prompt}.
-@end deftypefun
-
-@deftypefun int rl_expand_prompt (char *prompt)
-Expand any special character sequences in @var{prompt} and set up the
-local Readline prompt redisplay variables.
-This function is called by @code{readline()}. It may also be called to
-expand the primary prompt if the @code{rl_on_new_line_with_prompt()}
-function or @code{rl_already_prompted} variable is used.
-It returns the number of visible characters on the last line of the
-(possibly multi-line) prompt.
-@end deftypefun
-
-@deftypefun int rl_set_prompt (const char *prompt)
-Make Readline use @var{prompt} for subsequent redisplay. This calls
-@code{rl_expand_prompt()} to expand the prompt and sets @code{rl_prompt}
-to the result.
-@end deftypefun
-
-@node Modifying Text
-@subsection Modifying Text
-
-@deftypefun int rl_insert_text (const char *text)
-Insert @var{text} into the line at the current cursor position.
-Returns the number of characters inserted.
-@end deftypefun
-
-@deftypefun int rl_delete_text (int start, int end)
-Delete the text between @var{start} and @var{end} in the current line.
-Returns the number of characters deleted.
-@end deftypefun
-
-@deftypefun {char *} rl_copy_text (int start, int end)
-Return a copy of the text between @var{start} and @var{end} in
-the current line.
-@end deftypefun
-
-@deftypefun int rl_kill_text (int start, int end)
-Copy the text between @var{start} and @var{end} in the current line
-to the kill ring, appending or prepending to the last kill if the
-last command was a kill command. The text is deleted.
-If @var{start} is less than @var{end},
-the text is appended, otherwise prepended. If the last command was
-not a kill, a new kill ring slot is used.
-@end deftypefun
-
-@deftypefun int rl_push_macro_input (char *macro)
-Cause @var{macro} to be inserted into the line, as if it had been invoked
-by a key bound to a macro. Not especially useful; use
-@code{rl_insert_text()} instead.
-@end deftypefun
-
-@node Character Input
-@subsection Character Input
-
-@deftypefun int rl_read_key (void)
-Return the next character available from Readline's current input stream.
-This handles input inserted into
-the input stream via @var{rl_pending_input} (@pxref{Readline Variables})
-and @code{rl_stuff_char()}, macros, and characters read from the keyboard.
-While waiting for input, this function will call any function assigned to
-the @code{rl_event_hook} variable.
-@end deftypefun
-
-@deftypefun int rl_getc (FILE *stream)
-Return the next character available from @var{stream}, which is assumed to
-be the keyboard.
-@end deftypefun
-
-@deftypefun int rl_stuff_char (int c)
-Insert @var{c} into the Readline input stream. It will be "read"
-before Readline attempts to read characters from the terminal with
-@code{rl_read_key()}. Up to 512 characters may be pushed back.
-@code{rl_stuff_char} returns 1 if the character was successfully inserted;
-0 otherwise.
-@end deftypefun
-
-@deftypefun int rl_execute_next (int c)
-Make @var{c} be the next command to be executed when @code{rl_read_key()}
-is called. This sets @var{rl_pending_input}.
-@end deftypefun
-
-@deftypefun int rl_clear_pending_input (void)
-Unset @var{rl_pending_input}, effectively negating the effect of any
-previous call to @code{rl_execute_next()}. This works only if the
-pending input has not already been read with @code{rl_read_key()}.
-@end deftypefun
-
-@deftypefun int rl_set_keyboard_input_timeout (int u)
-While waiting for keyboard input in @code{rl_read_key()}, Readline will
-wait for @var{u} microseconds for input before calling any function
-assigned to @code{rl_event_hook}. The default waiting period is
-one-tenth of a second. Returns the old timeout value.
-@end deftypefun
-
-@node Terminal Management
-@subsection Terminal Management
-
-@deftypefun void rl_prep_terminal (int meta_flag)
-Modify the terminal settings for Readline's use, so @code{readline()}
-can read a single character at a time from the keyboard.
-The @var{meta_flag} argument should be non-zero if Readline should
-read eight-bit input.
-@end deftypefun
-
-@deftypefun void rl_deprep_terminal (void)
-Undo the effects of @code{rl_prep_terminal()}, leaving the terminal in
-the state in which it was before the most recent call to
-@code{rl_prep_terminal()}.
-@end deftypefun
-
-@deftypefun void rl_tty_set_default_bindings (Keymap kmap)
-Read the operating system's terminal editing characters (as would be displayed
-by @code{stty}) to their Readline equivalents. The bindings are performed
-in @var{kmap}.
-@end deftypefun
-
-@deftypefun int rl_reset_terminal (const char *terminal_name)
-Reinitialize Readline's idea of the terminal settings using
-@var{terminal_name} as the terminal type (e.g., @code{vt100}).
-If @var{terminal_name} is @code{NULL}, the value of the @code{TERM}
-environment variable is used.
-@end deftypefun
-
-@node Utility Functions
-@subsection Utility Functions
-
-@deftypefun void rl_replace_line (const char *text, int clear_undo)
-Replace the contents of @code{rl_line_buffer} with @var{text}.
-The point and mark are preserved, if possible.
-If @var{clear_undo} is non-zero, the undo list associated with the
-current line is cleared.
-@end deftypefun
-
-@deftypefun int rl_extend_line_buffer (int len)
-Ensure that @code{rl_line_buffer} has enough space to hold @var{len}
-characters, possibly reallocating it if necessary.
-@end deftypefun
-
-@deftypefun int rl_initialize (void)
-Initialize or re-initialize Readline's internal state.
-It's not strictly necessary to call this; @code{readline()} calls it before
-reading any input.
-@end deftypefun
-
-@deftypefun int rl_ding (void)
-Ring the terminal bell, obeying the setting of @code{bell-style}.
-@end deftypefun
-
-@deftypefun int rl_alphabetic (int c)
-Return 1 if @var{c} is an alphabetic character.
-@end deftypefun
-
-@deftypefun void rl_display_match_list (char **matches, int len, int max)
-A convenience function for displaying a list of strings in
-columnar format on Readline's output stream. @code{matches} is the list
-of strings, in argv format, such as a list of completion matches.
-@code{len} is the number of strings in @code{matches}, and @code{max}
-is the length of the longest string in @code{matches}. This function uses
-the setting of @code{print-completions-horizontally} to select how the
-matches are displayed (@pxref{Readline Init File Syntax}).
-@end deftypefun
-
-The following are implemented as macros, defined in @code{chardefs.h}.
-Applications should refrain from using them.
-
-@deftypefun int _rl_uppercase_p (int c)
-Return 1 if @var{c} is an uppercase alphabetic character.
-@end deftypefun
-
-@deftypefun int _rl_lowercase_p (int c)
-Return 1 if @var{c} is a lowercase alphabetic character.
-@end deftypefun
-
-@deftypefun int _rl_digit_p (int c)
-Return 1 if @var{c} is a numeric character.
-@end deftypefun
-
-@deftypefun int _rl_to_upper (int c)
-If @var{c} is a lowercase alphabetic character, return the corresponding
-uppercase character.
-@end deftypefun
-
-@deftypefun int _rl_to_lower (int c)
-If @var{c} is an uppercase alphabetic character, return the corresponding
-lowercase character.
-@end deftypefun
-
-@deftypefun int _rl_digit_value (int c)
-If @var{c} is a number, return the value it represents.
-@end deftypefun
-
-@node Miscellaneous Functions
-@subsection Miscellaneous Functions
-
-@deftypefun int rl_macro_bind (const char *keyseq, const char *macro, Keymap map)
-Bind the key sequence @var{keyseq} to invoke the macro @var{macro}.
-The binding is performed in @var{map}. When @var{keyseq} is invoked, the
-@var{macro} will be inserted into the line. This function is deprecated;
-use @code{rl_generic_bind()} instead.
-@end deftypefun
-
-@deftypefun void rl_macro_dumper (int readable)
-Print the key sequences bound to macros and their values, using
-the current keymap, to @code{rl_outstream}.
-If @var{readable} is non-zero, the list is formatted in such a way
-that it can be made part of an @code{inputrc} file and re-read.
-@end deftypefun
-
-@deftypefun int rl_variable_bind (const char *variable, const char *value)
-Make the Readline variable @var{variable} have @var{value}.
-This behaves as if the readline command
-@samp{set @var{variable} @var{value}} had been executed in an @code{inputrc}
-file (@pxref{Readline Init File Syntax}).
-@end deftypefun
-
-@deftypefun void rl_variable_dumper (int readable)
-Print the readline variable names and their current values
-to @code{rl_outstream}.
-If @var{readable} is non-zero, the list is formatted in such a way
-that it can be made part of an @code{inputrc} file and re-read.
-@end deftypefun
-
-@deftypefun int rl_set_paren_blink_timeout (int u)
-Set the time interval (in microseconds) that Readline waits when showing
-a balancing character when @code{blink-matching-paren} has been enabled.
-@end deftypefun
-
-@deftypefun {char *} rl_get_termcap (const char *cap)
-Retrieve the string value of the termcap capability @var{cap}.
-Readline fetches the termcap entry for the current terminal name and
-uses those capabilities to move around the screen line and perform other
-terminal-specific operations, like erasing a line. Readline does not
-use all of a terminal's capabilities, and this function will return
-values for only those capabilities Readline uses.
-@end deftypefun
-
-@node Alternate Interface
-@subsection Alternate Interface
-
-An alternate interface is available to plain @code{readline()}. Some
-applications need to interleave keyboard I/O with file, device, or
-window system I/O, typically by using a main loop to @code{select()}
-on various file descriptors. To accomodate this need, readline can
-also be invoked as a `callback' function from an event loop. There
-are functions available to make this easy.
-
-@deftypefun void rl_callback_handler_install (const char *prompt, rl_vcpfunc_t *lhandler)
-Set up the terminal for readline I/O and display the initial
-expanded value of @var{prompt}. Save the value of @var{lhandler} to
-use as a function to call when a complete line of input has been entered.
-The function takes the text of the line as an argument.
-@end deftypefun
-
-@deftypefun void rl_callback_read_char (void)
-Whenever an application determines that keyboard input is available, it
-should call @code{rl_callback_read_char()}, which will read the next
-character from the current input source.
-If that character completes the line, @code{rl_callback_read_char} will
-invoke the @var{lhandler} function saved by @code{rl_callback_handler_install}
-to process the line.
-Before calling the @var{lhandler} function, the terminal settings are
-reset to the values they had before calling
-@code{rl_callback_handler_install}.
-If the @var{lhandler} function returns,
-the terminal settings are modified for Readline's use again.
-@code{EOF} is indicated by calling @var{lhandler} with a
-@code{NULL} line.
-@end deftypefun
-
-@deftypefun void rl_callback_handler_remove (void)
-Restore the terminal to its initial state and remove the line handler.
-This may be called from within a callback as well as independently.
-If the @var{lhandler} installed by @code{rl_callback_handler_install}
-does not exit the program, either this function or the function referred
-to by the value of @code{rl_deprep_term_function} should be called before
-the program exits to reset the terminal settings.
-@end deftypefun
-
-@node A Readline Example
-@subsection A Readline Example
-
-Here is a function which changes lowercase characters to their uppercase
-equivalents, and uppercase characters to lowercase. If
-this function was bound to @samp{M-c}, then typing @samp{M-c} would
-change the case of the character under point. Typing @samp{M-1 0 M-c}
-would change the case of the following 10 characters, leaving the cursor on
-the last character changed.
-
-@example
-/* Invert the case of the COUNT following characters. */
-int
-invert_case_line (count, key)
- int count, key;
-@{
- register int start, end, i;
-
- start = rl_point;
-
- if (rl_point >= rl_end)
- return (0);
-
- if (count < 0)
- @{
- direction = -1;
- count = -count;
- @}
- else
- direction = 1;
-
- /* Find the end of the range to modify. */
- end = start + (count * direction);
-
- /* Force it to be within range. */
- if (end > rl_end)
- end = rl_end;
- else if (end < 0)
- end = 0;
-
- if (start == end)
- return (0);
-
- if (start > end)
- @{
- int temp = start;
- start = end;
- end = temp;
- @}
-
- /* Tell readline that we are modifying the line,
- so it will save the undo information. */
- rl_modifying (start, end);
-
- for (i = start; i != end; i++)
- @{
- if (_rl_uppercase_p (rl_line_buffer[i]))
- rl_line_buffer[i] = _rl_to_lower (rl_line_buffer[i]);
- else if (_rl_lowercase_p (rl_line_buffer[i]))
- rl_line_buffer[i] = _rl_to_upper (rl_line_buffer[i]);
- @}
- /* Move point to on top of the last character changed. */
- rl_point = (direction == 1) ? end - 1 : start;
- return (0);
-@}
-@end example
-
-@node Readline Signal Handling
-@section Readline Signal Handling
-
-Signals are asynchronous events sent to a process by the Unix kernel,
-sometimes on behalf of another process. They are intended to indicate
-exceptional events, like a user pressing the interrupt key on his terminal,
-or a network connection being broken. There is a class of signals that can
-be sent to the process currently reading input from the keyboard. Since
-Readline changes the terminal attributes when it is called, it needs to
-perform special processing when such a signal is received in order to
-restore the terminal to a sane state, or provide application writers with
-functions to do so manually.
-
-Readline contains an internal signal handler that is installed for a
-number of signals (@code{SIGINT}, @code{SIGQUIT}, @code{SIGTERM},
-@code{SIGALRM}, @code{SIGTSTP}, @code{SIGTTIN}, and @code{SIGTTOU}).
-When one of these signals is received, the signal handler
-will reset the terminal attributes to those that were in effect before
-@code{readline()} was called, reset the signal handling to what it was
-before @code{readline()} was called, and resend the signal to the calling
-application.
-If and when the calling application's signal handler returns, Readline
-will reinitialize the terminal and continue to accept input.
-When a @code{SIGINT} is received, the Readline signal handler performs
-some additional work, which will cause any partially-entered line to be
-aborted (see the description of @code{rl_free_line_state()} below).
-
-There is an additional Readline signal handler, for @code{SIGWINCH}, which
-the kernel sends to a process whenever the terminal's size changes (for
-example, if a user resizes an @code{xterm}). The Readline @code{SIGWINCH}
-handler updates Readline's internal screen size information, and then calls
-any @code{SIGWINCH} signal handler the calling application has installed.
-Readline calls the application's @code{SIGWINCH} signal handler without
-resetting the terminal to its original state. If the application's signal
-handler does more than update its idea of the terminal size and return (for
-example, a @code{longjmp} back to a main processing loop), it @emph{must}
-call @code{rl_cleanup_after_signal()} (described below), to restore the
-terminal state.
-
-Readline provides two variables that allow application writers to
-control whether or not it will catch certain signals and act on them
-when they are received. It is important that applications change the
-values of these variables only when calling @code{readline()}, not in
-a signal handler, so Readline's internal signal state is not corrupted.
-
-@deftypevar int rl_catch_signals
-If this variable is non-zero, Readline will install signal handlers for
-@code{SIGINT}, @code{SIGQUIT}, @code{SIGTERM}, @code{SIGALRM},
-@code{SIGTSTP}, @code{SIGTTIN}, and @code{SIGTTOU}.
-
-The default value of @code{rl_catch_signals} is 1.
-@end deftypevar
-
-@deftypevar int rl_catch_sigwinch
-If this variable is non-zero, Readline will install a signal handler for
-@code{SIGWINCH}.
-
-The default value of @code{rl_catch_sigwinch} is 1.
-@end deftypevar
-
-If an application does not wish to have Readline catch any signals, or
-to handle signals other than those Readline catches (@code{SIGHUP},
-for example),
-Readline provides convenience functions to do the necessary terminal
-and internal state cleanup upon receipt of a signal.
-
-@deftypefun void rl_cleanup_after_signal (void)
-This function will reset the state of the terminal to what it was before
-@code{readline()} was called, and remove the Readline signal handlers for
-all signals, depending on the values of @code{rl_catch_signals} and
-@code{rl_catch_sigwinch}.
-@end deftypefun
-
-@deftypefun void rl_free_line_state (void)
-This will free any partial state associated with the current input line
-(undo information, any partial history entry, any partially-entered
-keyboard macro, and any partially-entered numeric argument). This
-should be called before @code{rl_cleanup_after_signal()}. The
-Readline signal handler for @code{SIGINT} calls this to abort the
-current input line.
-@end deftypefun
-
-@deftypefun void rl_reset_after_signal (void)
-This will reinitialize the terminal and reinstall any Readline signal
-handlers, depending on the values of @code{rl_catch_signals} and
-@code{rl_catch_sigwinch}.
-@end deftypefun
-
-If an application does not wish Readline to catch @code{SIGWINCH}, it may
-call @code{rl_resize_terminal()} or @code{rl_set_screen_size()} to force
-Readline to update its idea of the terminal size when a @code{SIGWINCH}
-is received.
-
-@deftypefun void rl_resize_terminal (void)
-Update Readline's internal screen size by reading values from the kernel.
-@end deftypefun
-
-@deftypefun void rl_set_screen_size (int rows, int cols)
-Set Readline's idea of the terminal size to @var{rows} rows and
-@var{cols} columns.
-@end deftypefun
-
-If an application does not want to install a @code{SIGWINCH} handler, but
-is still interested in the screen dimensions, Readline's idea of the screen
-size may be queried.
-
-@deftypefun void rl_get_screen_size (int *rows, int *cols)
-Return Readline's idea of the terminal's size in the
-variables pointed to by the arguments.
-@end deftypefun
-
-The following functions install and remove Readline's signal handlers.
-
-@deftypefun int rl_set_signals (void)
-Install Readline's signal handler for @code{SIGINT}, @code{SIGQUIT},
-@code{SIGTERM}, @code{SIGALRM}, @code{SIGTSTP}, @code{SIGTTIN},
-@code{SIGTTOU}, and @code{SIGWINCH}, depending on the values of
-@code{rl_catch_signals} and @code{rl_catch_sigwinch}.
-@end deftypefun
-
-@deftypefun int rl_clear_signals (void)
-Remove all of the Readline signal handlers installed by
-@code{rl_set_signals()}.
-@end deftypefun
-
-@node Custom Completers
-@section Custom Completers
-
-Typically, a program that reads commands from the user has a way of
-disambiguating commands and data. If your program is one of these, then
-it can provide completion for commands, data, or both.
-The following sections describe how your program and Readline
-cooperate to provide this service.
-
-@menu
-* How Completing Works:: The logic used to do completion.
-* Completion Functions:: Functions provided by Readline.
-* Completion Variables:: Variables which control completion.
-* A Short Completion Example:: An example of writing completer subroutines.
-@end menu
-
-@node How Completing Works
-@subsection How Completing Works
-
-In order to complete some text, the full list of possible completions
-must be available. That is, it is not possible to accurately
-expand a partial word without knowing all of the possible words
-which make sense in that context. The Readline library provides
-the user interface to completion, and two of the most common
-completion functions: filename and username. For completing other types
-of text, you must write your own completion function. This section
-describes exactly what such functions must do, and provides an example.
-
-There are three major functions used to perform completion:
-
-@enumerate
-@item
-The user-interface function @code{rl_complete()}. This function is
-called with the same arguments as other bindable Readline functions:
-@var{count} and @var{invoking_key}.
-It isolates the word to be completed and calls
-@code{rl_completion_matches()} to generate a list of possible completions.
-It then either lists the possible completions, inserts the possible
-completions, or actually performs the
-completion, depending on which behavior is desired.
-
-@item
-The internal function @code{rl_completion_matches()} uses an
-application-supplied @dfn{generator} function to generate the list of
-possible matches, and then returns the array of these matches.
-The caller should place the address of its generator function in
-@code{rl_completion_entry_function}.
-
-@item
-The generator function is called repeatedly from
-@code{rl_completion_matches()}, returning a string each time. The
-arguments to the generator function are @var{text} and @var{state}.
-@var{text} is the partial word to be completed. @var{state} is zero the
-first time the function is called, allowing the generator to perform
-any necessary initialization, and a positive non-zero integer for
-each subsequent call. The generator function returns
-@code{(char *)NULL} to inform @code{rl_completion_matches()} that there are
-no more possibilities left. Usually the generator function computes the
-list of possible completions when @var{state} is zero, and returns them
-one at a time on subsequent calls. Each string the generator function
-returns as a match must be allocated with @code{malloc()}; Readline
-frees the strings when it has finished with them.
-
-@end enumerate
-
-@deftypefun int rl_complete (int ignore, int invoking_key)
-Complete the word at or before point. You have supplied the function
-that does the initial simple matching selection algorithm (see
-@code{rl_completion_matches()}). The default is to do filename completion.
-@end deftypefun
-
-@deftypevar {rl_compentry_func_t *} rl_completion_entry_function
-This is a pointer to the generator function for
-@code{rl_completion_matches()}.
-If the value of @code{rl_completion_entry_function} is
-@code{NULL} then the default filename generator
-function, @code{rl_filename_completion_function()}, is used.
-@end deftypevar
-
-@node Completion Functions
-@subsection Completion Functions
-
-Here is the complete list of callable completion functions present in
-Readline.
-
-@deftypefun int rl_complete_internal (int what_to_do)
-Complete the word at or before point. @var{what_to_do} says what to do
-with the completion. A value of @samp{?} means list the possible
-completions. @samp{TAB} means do standard completion. @samp{*} means
-insert all of the possible completions. @samp{!} means to display
-all of the possible completions, if there is more than one, as well as
-performing partial completion.
-@end deftypefun
-
-@deftypefun int rl_complete (int ignore, int invoking_key)
-Complete the word at or before point. You have supplied the function
-that does the initial simple matching selection algorithm (see
-@code{rl_completion_matches()} and @code{rl_completion_entry_function}).
-The default is to do filename
-completion. This calls @code{rl_complete_internal()} with an
-argument depending on @var{invoking_key}.
-@end deftypefun
-
-@deftypefun int rl_possible_completions (int count, int invoking_key)
-List the possible completions. See description of @code{rl_complete
-()}. This calls @code{rl_complete_internal()} with an argument of
-@samp{?}.
-@end deftypefun
-
-@deftypefun int rl_insert_completions (int count, int invoking_key)
-Insert the list of possible completions into the line, deleting the
-partially-completed word. See description of @code{rl_complete()}.
-This calls @code{rl_complete_internal()} with an argument of @samp{*}.
-@end deftypefun
-
-@deftypefun int rl_completion_mode (rl_command_func_t *cfunc)
-Returns the apppriate value to pass to @code{rl_complete_internal()}
-depending on whether @var{cfunc} was called twice in succession and
-the value of the @code{show-all-if-ambiguous} variable.
-Application-specific completion functions may use this function to present
-the same interface as @code{rl_complete()}.
-@end deftypefun
-
-@deftypefun {char **} rl_completion_matches (const char *text, rl_compentry_func_t *entry_func)
-Returns an array of strings which is a list of completions for
-@var{text}. If there are no completions, returns @code{NULL}.
-The first entry in the returned array is the substitution for @var{text}.
-The remaining entries are the possible completions. The array is
-terminated with a @code{NULL} pointer.
-
-@var{entry_func} is a function of two args, and returns a
-@code{char *}. The first argument is @var{text}. The second is a
-state argument; it is zero on the first call, and non-zero on subsequent
-calls. @var{entry_func} returns a @code{NULL} pointer to the caller
-when there are no more matches.
-@end deftypefun
-
-@deftypefun {char *} rl_filename_completion_function (const char *text, int state)
-A generator function for filename completion in the general case.
-@var{text} is a partial filename.
-The Bash source is a useful reference for writing custom
-completion functions (the Bash completion functions call this and other
-Readline functions).
-@end deftypefun
-
-@deftypefun {char *} rl_username_completion_function (const char *text, int state)
-A completion generator for usernames. @var{text} contains a partial
-username preceded by a random character (usually @samp{~}). As with all
-completion generators, @var{state} is zero on the first call and non-zero
-for subsequent calls.
-@end deftypefun
-
-@node Completion Variables
-@subsection Completion Variables
-
-@deftypevar {rl_compentry_func_t *} rl_completion_entry_function
-A pointer to the generator function for @code{rl_completion_matches()}.
-@code{NULL} means to use @code{rl_filename_completion_function()}, the default
-filename completer.
-@end deftypevar
-
-@deftypevar {rl_completion_func_t *} rl_attempted_completion_function
-A pointer to an alternative function to create matches.
-The function is called with @var{text}, @var{start}, and @var{end}.
-@var{start} and @var{end} are indices in @code{rl_line_buffer} defining
-the boundaries of @var{text}, which is a character string.
-If this function exists and returns @code{NULL}, or if this variable is
-set to @code{NULL}, then @code{rl_complete()} will call the value of
-@code{rl_completion_entry_function} to generate matches, otherwise the
-array of strings returned will be used.
-If this function sets the @code{rl_attempted_completion_over}
-variable to a non-zero value, Readline will not perform its default
-completion even if this function returns no matches.
-@end deftypevar
-
-@deftypevar {rl_quote_func_t *} rl_filename_quoting_function
-A pointer to a function that will quote a filename in an
-application-specific fashion. This is called if filename completion is being
-attempted and one of the characters in @code{rl_filename_quote_characters}
-appears in a completed filename. The function is called with
-@var{text}, @var{match_type}, and @var{quote_pointer}. The @var{text}
-is the filename to be quoted. The @var{match_type} is either
-@code{SINGLE_MATCH}, if there is only one completion match, or
-@code{MULT_MATCH}. Some functions use this to decide whether or not to
-insert a closing quote character. The @var{quote_pointer} is a pointer
-to any opening quote character the user typed. Some functions choose
-to reset this character.
-@end deftypevar
-
-@deftypevar {rl_dequote_func_t *} rl_filename_dequoting_function
-A pointer to a function that will remove application-specific quoting
-characters from a filename before completion is attempted, so those
-characters do not interfere with matching the text against names in
-the filesystem. It is called with @var{text}, the text of the word
-to be dequoted, and @var{quote_char}, which is the quoting character
-that delimits the filename (usually @samp{'} or @samp{"}). If
-@var{quote_char} is zero, the filename was not in an embedded string.
-@end deftypevar
-
-@deftypevar {rl_linebuf_func_t *} rl_char_is_quoted_p
-A pointer to a function to call that determines whether or not a specific
-character in the line buffer is quoted, according to whatever quoting
-mechanism the program calling Readline uses. The function is called with
-two arguments: @var{text}, the text of the line, and @var{index}, the
-index of the character in the line. It is used to decide whether a
-character found in @code{rl_completer_word_break_characters} should be
-used to break words for the completer.
-@end deftypevar
-
-@deftypevar {rl_compignore_func_t *} rl_ignore_some_completions_function
-This function, if defined, is called by the completer when real filename
-completion is done, after all the matching names have been generated.
-It is passed a @code{NULL} terminated array of matches.
-The first element (@code{matches[0]}) is the
-maximal substring common to all matches. This function can
-re-arrange the list of matches as required, but each element deleted
-from the array must be freed.
-@end deftypevar
-
-@deftypevar {rl_icppfunc_t *} rl_directory_completion_hook
-This function, if defined, is allowed to modify the directory portion
-of filenames Readline completes. It is called with the address of a
-string (the current directory name) as an argument, and may modify that string.
-If the string is replaced with a new string, the old value should be freed.
-Any modified directory name should have a trailing slash.
-The modified value will be displayed as part of the completion, replacing
-the directory portion of the pathname the user typed.
-It returns an integer that should be non-zero if the function modifies
-its directory argument.
-It could be used to expand symbolic links or shell variables in pathnames.
-@end deftypevar
-
-@deftypevar {rl_compdisp_func_t *} rl_completion_display_matches_hook
-If non-zero, then this is the address of a function to call when
-completing a word would normally display the list of possible matches.
-This function is called in lieu of Readline displaying the list.
-It takes three arguments:
-(@code{char **}@var{matches}, @code{int} @var{num_matches}, @code{int} @var{max_length})
-where @var{matches} is the array of matching strings,
-@var{num_matches} is the number of strings in that array, and
-@var{max_length} is the length of the longest string in that array.
-Readline provides a convenience function, @code{rl_display_match_list},
-that takes care of doing the display to Readline's output stream. That
-function may be called from this hook.
-@end deftypevar
-
-@deftypevar {const char *} rl_basic_word_break_characters
-The basic list of characters that signal a break between words for the
-completer routine. The default value of this variable is the characters
-which break words for completion in Bash:
-@code{" \t\n\"\\'`@@$><=;|&@{("}.
-@end deftypevar
-
-@deftypevar {const char *} rl_basic_quote_characters
-A list of quote characters which can cause a word break.
-@end deftypevar
-
-@deftypevar {const char *} rl_completer_word_break_characters
-The list of characters that signal a break between words for
-@code{rl_complete_internal()}. The default list is the value of
-@code{rl_basic_word_break_characters}.
-@end deftypevar
-
-@deftypevar {const char *} rl_completer_quote_characters
-A list of characters which can be used to quote a substring of the line.
-Completion occurs on the entire substring, and within the substring
-@code{rl_completer_word_break_characters} are treated as any other character,
-unless they also appear within this list.
-@end deftypevar
-
-@deftypevar {const char *} rl_filename_quote_characters
-A list of characters that cause a filename to be quoted by the completer
-when they appear in a completed filename. The default is the null string.
-@end deftypevar
-
-@deftypevar {const char *} rl_special_prefixes
-The list of characters that are word break characters, but should be
-left in @var{text} when it is passed to the completion function.
-Programs can use this to help determine what kind of completing to do.
-For instance, Bash sets this variable to "$@@" so that it can complete
-shell variables and hostnames.
-@end deftypevar
-
-@deftypevar int rl_completion_query_items
-Up to this many items will be displayed in response to a
-possible-completions call. After that, we ask the user if she is sure
-she wants to see them all. The default value is 100.
-@end deftypevar
-
-@deftypevar {int} rl_completion_append_character
-When a single completion alternative matches at the end of the command
-line, this character is appended to the inserted completion text. The
-default is a space character (@samp{ }). Setting this to the null
-character (@samp{\0}) prevents anything being appended automatically.
-This can be changed in custom completion functions to
-provide the ``most sensible word separator character'' according to
-an application-specific command line syntax specification.
-@end deftypevar
-
-@deftypevar int rl_completion_suppress_append
-If non-zero, @var{rl_completion_append_character} is not appended to
-matches at the end of the command line, as described above. It is
-set to 0 before any application-specific completion function is called.
-@end deftypevar
-
-@deftypevar int rl_completion_mark_symlink_dirs
-If non-zero, a slash will be appended to completed filenames that are
-symbolic links to directory names, subject to the value of the
-user-settable @var{mark-directories} variable.
-This variable exists so that application completion functions can
-override the user's global preference (set via the
-@var{mark-symlinked-directories} Readline variable) if appropriate.
-This variable is set to the user's preference before any
-application completion function is called, so unless that function
-modifies the value, the user's preferences are honored.
-@end deftypevar
-
-@deftypevar int rl_ignore_completion_duplicates
-If non-zero, then duplicates in the matches are removed.
-The default is 1.
-@end deftypevar
-
-@deftypevar int rl_filename_completion_desired
-Non-zero means that the results of the matches are to be treated as
-filenames. This is @emph{always} zero on entry, and can only be changed
-within a completion entry generator function. If it is set to a non-zero
-value, directory names have a slash appended and Readline attempts to
-quote completed filenames if they contain any characters in
-@code{rl_filename_quote_characters} and @code{rl_filename_quoting_desired}
-is set to a non-zero value.
-@end deftypevar
-
-@deftypevar int rl_filename_quoting_desired
-Non-zero means that the results of the matches are to be quoted using
-double quotes (or an application-specific quoting mechanism) if the
-completed filename contains any characters in
-@code{rl_filename_quote_chars}. This is @emph{always} non-zero
-on entry, and can only be changed within a completion entry generator
-function. The quoting is effected via a call to the function pointed to
-by @code{rl_filename_quoting_function}.
-@end deftypevar
-
-@deftypevar int rl_attempted_completion_over
-If an application-specific completion function assigned to
-@code{rl_attempted_completion_function} sets this variable to a non-zero
-value, Readline will not perform its default filename completion even
-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_completion_type
-Set to a character describing the type of completion Readline is currently
-attempting; see the description of @code{rl_complete_internal()}
-(@pxref{Completion Functions}) for the list of characters.
-@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}.
-@end deftypevar
-
-@node A Short Completion Example
-@subsection A Short Completion Example
-
-Here is a small application demonstrating the use of the GNU Readline
-library. It is called @code{fileman}, and the source code resides in
-@file{examples/fileman.c}. This sample application provides
-completion of command names, line editing features, and access to the
-history list.
-
-@page
-@smallexample
-/* fileman.c -- A tiny application which demonstrates how to use the
- GNU Readline library. This application interactively allows users
- to manipulate files and their modes. */
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/file.h>
-#include <sys/stat.h>
-#include <sys/errno.h>
-
-#include <readline/readline.h>
-#include <readline/history.h>
-
-extern char *xmalloc ();
-
-/* The names of functions that actually do the manipulation. */
-int com_list __P((char *));
-int com_view __P((char *));
-int com_rename __P((char *));
-int com_stat __P((char *));
-int com_pwd __P((char *));
-int com_delete __P((char *));
-int com_help __P((char *));
-int com_cd __P((char *));
-int com_quit __P((char *));
-
-/* A structure which contains information on the commands this program
- can understand. */
-
-typedef struct @{
- char *name; /* User printable name of the function. */
- rl_icpfunc_t *func; /* Function to call to do the job. */
- char *doc; /* Documentation for this function. */
-@} COMMAND;
-
-COMMAND commands[] = @{
- @{ "cd", com_cd, "Change to directory DIR" @},
- @{ "delete", com_delete, "Delete FILE" @},
- @{ "help", com_help, "Display this text" @},
- @{ "?", com_help, "Synonym for `help'" @},
- @{ "list", com_list, "List files in DIR" @},
- @{ "ls", com_list, "Synonym for `list'" @},
- @{ "pwd", com_pwd, "Print the current working directory" @},
- @{ "quit", com_quit, "Quit using Fileman" @},
- @{ "rename", com_rename, "Rename FILE to NEWNAME" @},
- @{ "stat", com_stat, "Print out statistics on FILE" @},
- @{ "view", com_view, "View the contents of FILE" @},
- @{ (char *)NULL, (rl_icpfunc_t *)NULL, (char *)NULL @}
-@};
-
-/* Forward declarations. */
-char *stripwhite ();
-COMMAND *find_command ();
-
-/* The name of this program, as taken from argv[0]. */
-char *progname;
-
-/* When non-zero, this means the user is done using this program. */
-int done;
-
-char *
-dupstr (s)
- int s;
-@{
- char *r;
-
- r = xmalloc (strlen (s) + 1);
- strcpy (r, s);
- return (r);
-@}
-
-main (argc, argv)
- int argc;
- char **argv;
-@{
- char *line, *s;
-
- progname = argv[0];
-
- initialize_readline (); /* Bind our completer. */
-
- /* Loop reading and executing lines until the user quits. */
- for ( ; done == 0; )
- @{
- line = readline ("FileMan: ");
-
- if (!line)
- break;
-
- /* Remove leading and trailing whitespace from the line.
- Then, if there is anything left, add it to the history list
- and execute it. */
- s = stripwhite (line);
-
- if (*s)
- @{
- add_history (s);
- execute_line (s);
- @}
-
- free (line);
- @}
- exit (0);
-@}
-
-/* Execute a command line. */
-int
-execute_line (line)
- char *line;
-@{
- register int i;
- COMMAND *command;
- char *word;
-
- /* Isolate the command word. */
- i = 0;
- while (line[i] && whitespace (line[i]))
- i++;
- word = line + i;
-
- while (line[i] && !whitespace (line[i]))
- i++;
-
- if (line[i])
- line[i++] = '\0';
-
- command = find_command (word);
-
- if (!command)
- @{
- fprintf (stderr, "%s: No such command for FileMan.\n", word);
- return (-1);
- @}
-
- /* Get argument to command, if any. */
- while (whitespace (line[i]))
- i++;
-
- word = line + i;
-
- /* Call the function. */
- return ((*(command->func)) (word));
-@}
-
-/* Look up NAME as the name of a command, and return a pointer to that
- command. Return a NULL pointer if NAME isn't a command name. */
-COMMAND *
-find_command (name)
- char *name;
-@{
- register int i;
-
- for (i = 0; commands[i].name; i++)
- if (strcmp (name, commands[i].name) == 0)
- return (&commands[i]);
-
- return ((COMMAND *)NULL);
-@}
-
-/* Strip whitespace from the start and end of STRING. Return a pointer
- into STRING. */
-char *
-stripwhite (string)
- char *string;
-@{
- register char *s, *t;
-
- for (s = string; whitespace (*s); s++)
- ;
-
- if (*s == 0)
- return (s);
-
- t = s + strlen (s) - 1;
- while (t > s && whitespace (*t))
- t--;
- *++t = '\0';
-
- return s;
-@}
-
-/* **************************************************************** */
-/* */
-/* Interface to Readline Completion */
-/* */
-/* **************************************************************** */
-
-char *command_generator __P((const char *, int));
-char **fileman_completion __P((const char *, int, int));
-
-/* Tell the GNU Readline library how to complete. We want to try to
- complete on command names if this is the first word in the line, or
- on filenames if not. */
-initialize_readline ()
-@{
- /* Allow conditional parsing of the ~/.inputrc file. */
- rl_readline_name = "FileMan";
-
- /* Tell the completer that we want a crack first. */
- rl_attempted_completion_function = fileman_completion;
-@}
-
-/* Attempt to complete on the contents of TEXT. START and END
- bound the region of rl_line_buffer that contains the word to
- complete. TEXT is the word to complete. We can use the entire
- contents of rl_line_buffer in case we want to do some simple
- parsing. Returnthe array of matches, or NULL if there aren't any. */
-char **
-fileman_completion (text, start, end)
- const char *text;
- int start, end;
-@{
- char **matches;
-
- matches = (char **)NULL;
-
- /* If this word is at the start of the line, then it is a command
- to complete. Otherwise it is the name of a file in the current
- directory. */
- if (start == 0)
- matches = rl_completion_matches (text, command_generator);
-
- return (matches);
-@}
-
-/* Generator function for command completion. STATE lets us
- know whether to start from scratch; without any state
- (i.e. STATE == 0), then we start at the top of the list. */
-char *
-command_generator (text, state)
- const char *text;
- int state;
-@{
- static int list_index, len;
- char *name;
-
- /* If this is a new word to complete, initialize now. This
- includes saving the length of TEXT for efficiency, and
- initializing the index variable to 0. */
- if (!state)
- @{
- list_index = 0;
- len = strlen (text);
- @}
-
- /* Return the next name which partially matches from the
- command list. */
- while (name = commands[list_index].name)
- @{
- list_index++;
-
- if (strncmp (name, text, len) == 0)
- return (dupstr(name));
- @}
-
- /* If no names matched, then return NULL. */
- return ((char *)NULL);
-@}
-
-/* **************************************************************** */
-/* */
-/* FileMan Commands */
-/* */
-/* **************************************************************** */
-
-/* String to pass to system (). This is for the LIST, VIEW and RENAME
- commands. */
-static char syscom[1024];
-
-/* List the file(s) named in arg. */
-com_list (arg)
- char *arg;
-@{
- if (!arg)
- arg = "";
-
- sprintf (syscom, "ls -FClg %s", arg);
- return (system (syscom));
-@}
-
-com_view (arg)
- char *arg;
-@{
- if (!valid_argument ("view", arg))
- return 1;
-
- sprintf (syscom, "more %s", arg);
- return (system (syscom));
-@}
-
-com_rename (arg)
- char *arg;
-@{
- too_dangerous ("rename");
- return (1);
-@}
-
-com_stat (arg)
- char *arg;
-@{
- struct stat finfo;
-
- if (!valid_argument ("stat", arg))
- return (1);
-
- if (stat (arg, &finfo) == -1)
- @{
- perror (arg);
- return (1);
- @}
-
- printf ("Statistics for `%s':\n", arg);
-
- printf ("%s has %d link%s, and is %d byte%s in length.\n", arg,
- finfo.st_nlink,
- (finfo.st_nlink == 1) ? "" : "s",
- finfo.st_size,
- (finfo.st_size == 1) ? "" : "s");
- printf ("Inode Last Change at: %s", ctime (&finfo.st_ctime));
- printf (" Last access at: %s", ctime (&finfo.st_atime));
- printf (" Last modified at: %s", ctime (&finfo.st_mtime));
- return (0);
-@}
-
-com_delete (arg)
- char *arg;
-@{
- too_dangerous ("delete");
- return (1);
-@}
-
-/* Print out help for ARG, or for all of the commands if ARG is
- not present. */
-com_help (arg)
- char *arg;
-@{
- register int i;
- int printed = 0;
-
- for (i = 0; commands[i].name; i++)
- @{
- if (!*arg || (strcmp (arg, commands[i].name) == 0))
- @{
- printf ("%s\t\t%s.\n", commands[i].name, commands[i].doc);
- printed++;
- @}
- @}
-
- if (!printed)
- @{
- printf ("No commands match `%s'. Possibilties are:\n", arg);
-
- for (i = 0; commands[i].name; i++)
- @{
- /* Print in six columns. */
- if (printed == 6)
- @{
- printed = 0;
- printf ("\n");
- @}
-
- printf ("%s\t", commands[i].name);
- printed++;
- @}
-
- if (printed)
- printf ("\n");
- @}
- return (0);
-@}
-
-/* Change to the directory ARG. */
-com_cd (arg)
- char *arg;
-@{
- if (chdir (arg) == -1)
- @{
- perror (arg);
- return 1;
- @}
-
- com_pwd ("");
- return (0);
-@}
-
-/* Print out the current working directory. */
-com_pwd (ignore)
- char *ignore;
-@{
- char dir[1024], *s;
-
- s = getcwd (dir, sizeof(dir) - 1);
- if (s == 0)
- @{
- printf ("Error getting pwd: %s\n", dir);
- return 1;
- @}
-
- printf ("Current directory is %s\n", dir);
- return 0;
-@}
-
-/* The user wishes to quit using this program. Just set DONE
- non-zero. */
-com_quit (arg)
- char *arg;
-@{
- done = 1;
- return (0);
-@}
-
-/* Function which tells you that you can't do this. */
-too_dangerous (caller)
- char *caller;
-@{
- fprintf (stderr,
- "%s: Too dangerous for me to distribute.\n"
- caller);
- fprintf (stderr, "Write it yourself.\n");
-@}
-
-/* Return non-zero if ARG is a valid argument for CALLER,
- else print an error message and return zero. */
-int
-valid_argument (caller, arg)
- char *caller, *arg;
-@{
- if (!arg || !*arg)
- @{
- fprintf (stderr, "%s: Argument required.\n", caller);
- return (0);
- @}
-
- return (1);
-@}
-@end smallexample
diff --git a/readline-4.3.orig/doc/rluser.texinfo b/readline-4.3.orig/doc/rluser.texinfo
deleted file mode 100644
index 94f851e..0000000
--- a/readline-4.3.orig/doc/rluser.texinfo
+++ /dev/null
@@ -1,1796 +0,0 @@
-@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
-editing features. It is to be an appendix to manuals for programs which
-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-2002 Free Software Foundation, Inc.
-
-Authored by Brian Fox and Chet Ramey.
-
-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 make and distribute verbatim copies of this manual
-provided the copyright notice and this permission notice are preserved on
-all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided also that the
-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
-
-@comment If you are including this manual as an appendix, then set the
-@comment variable readline-appendix.
-
-@ifclear BashFeatures
-@defcodeindex bt
-@end ifclear
-
-@node Command Line Editing
-@chapter Command Line Editing
-
-This chapter describes the basic features of the @sc{gnu}
-command line editing interface.
-@ifset BashFeatures
-Command line editing is provided by the Readline library, which is
-used by several different programs, including Bash.
-@end ifset
-
-@menu
-* Introduction and Notation:: Notation used in this text.
-* Readline Interaction:: The minimum set of commands for editing a line.
-* Readline Init File:: Customizing Readline from a user's view.
-* Bindable Readline Commands:: A description of most of the Readline commands
- available for binding
-* Readline vi Mode:: A short description of how to make Readline
- behave like the vi editor.
-@ifset BashFeatures
-* Programmable Completion:: How to specify the possible completions for
- a specific command.
-* Programmable Completion Builtins:: Builtin commands to specify how to
- complete arguments for a particular command.
-@end ifset
-@end menu
-
-@node Introduction and Notation
-@section Introduction to Line Editing
-
-The following paragraphs describe the notation used to represent
-keystrokes.
-
-The text @kbd{C-k} is read as `Control-K' and describes the character
-produced when the @key{k} key is pressed while the Control key
-is depressed.
-
-The text @kbd{M-k} is read as `Meta-K' and describes the character
-produced when the Meta key (if you have one) is depressed, and the @key{k}
-key is pressed.
-The Meta key is labeled @key{ALT} on many keyboards.
-On keyboards with two keys labeled @key{ALT} (usually to either side of
-the space bar), the @key{ALT} on the left side is generally set to
-work as a Meta key.
-The @key{ALT} key on the right may also be configured to work as a
-Meta key or may be configured as some other modifier, such as a
-Compose key for typing accented characters.
-
-If you do not have a Meta or @key{ALT} key, or another key working as
-a Meta key, the identical keystroke can be generated by typing @key{ESC}
-@emph{first}, and then typing @key{k}.
-Either process is known as @dfn{metafying} the @key{k} key.
-
-The text @kbd{M-C-k} is read as `Meta-Control-k' and describes the
-character produced by @dfn{metafying} @kbd{C-k}.
-
-In addition, several keys have their own names. Specifically,
-@key{DEL}, @key{ESC}, @key{LFD}, @key{SPC}, @key{RET}, and @key{TAB} all
-stand for themselves when seen in this text, or in an init file
-(@pxref{Readline Init File}).
-If your keyboard lacks a @key{LFD} key, typing @key{C-j} will
-produce the desired character.
-The @key{RET} key may be labeled @key{Return} or @key{Enter} on
-some keyboards.
-
-@node Readline Interaction
-@section Readline Interaction
-@cindex interaction, readline
-
-Often during an interactive session you type in a long line of text,
-only to notice that the first word on the line is misspelled. The
-Readline library gives you a set of commands for manipulating the text
-as you type it in, allowing you to just fix your typo, and not forcing
-you to retype the majority of the line. Using these editing commands,
-you move the cursor to the place that needs correction, and delete or
-insert the text of the corrections. Then, when you are satisfied with
-the line, you simply press @key{RET}. You do not have to be at the
-end of the line to press @key{RET}; the entire line is accepted
-regardless of the location of the cursor within the line.
-
-@menu
-* Readline Bare Essentials:: The least you need to know about Readline.
-* Readline Movement Commands:: Moving about the input line.
-* Readline Killing Commands:: How to delete text, and how to get it back!
-* Readline Arguments:: Giving numeric arguments to commands.
-* Searching:: Searching through previous lines.
-@end menu
-
-@node Readline Bare Essentials
-@subsection Readline Bare Essentials
-@cindex notation, readline
-@cindex command editing
-@cindex editing command lines
-
-In order to enter characters into the line, simply type them. The typed
-character appears where the cursor was, and then the cursor moves one
-space to the right. If you mistype a character, you can use your
-erase character to back up and delete the mistyped character.
-
-Sometimes you may mistype a character, and
-not notice the error until you have typed several other characters. In
-that case, you can type @kbd{C-b} to move the cursor to the left, and then
-correct your mistake. Afterwards, you can move the cursor to the right
-with @kbd{C-f}.
-
-When you add text in the middle of a line, you will notice that characters
-to the right of the cursor are `pushed over' to make room for the text
-that you have inserted. Likewise, when you delete text behind the cursor,
-characters to the right of the cursor are `pulled back' to fill in the
-blank space created by the removal of the text. A list of the bare
-essentials for editing the text of an input line follows.
-
-@table @asis
-@item @kbd{C-b}
-Move back one character.
-@item @kbd{C-f}
-Move forward one character.
-@item @key{DEL} or @key{Backspace}
-Delete the character to the left of the cursor.
-@item @kbd{C-d}
-Delete the character underneath the cursor.
-@item @w{Printing characters}
-Insert the character into the line at the cursor.
-@item @kbd{C-_} or @kbd{C-x C-u}
-Undo the last editing command. You can undo all the way back to an
-empty line.
-@end table
-
-@noindent
-(Depending on your configuration, the @key{Backspace} key be set to
-delete the character to the left of the cursor and the @key{DEL} key set
-to delete the character underneath the cursor, like @kbd{C-d}, rather
-than the character to the left of the cursor.)
-
-@node Readline Movement Commands
-@subsection Readline Movement Commands
-
-
-The above table describes the most basic keystrokes that you need
-in order to do editing of the input line. For your convenience, many
-other commands have been added in addition to @kbd{C-b}, @kbd{C-f},
-@kbd{C-d}, and @key{DEL}. Here are some commands for moving more rapidly
-about the line.
-
-@table @kbd
-@item C-a
-Move to the start of the line.
-@item C-e
-Move to the end of the line.
-@item M-f
-Move forward a word, where a word is composed of letters and digits.
-@item M-b
-Move backward a word.
-@item C-l
-Clear the screen, reprinting the current line at the top.
-@end table
-
-Notice how @kbd{C-f} moves forward a character, while @kbd{M-f} moves
-forward a word. It is a loose convention that control keystrokes
-operate on characters while meta keystrokes operate on words.
-
-@node Readline Killing Commands
-@subsection Readline Killing Commands
-
-@cindex killing text
-@cindex yanking text
-
-@dfn{Killing} text means to delete the text from the line, but to save
-it away for later use, usually by @dfn{yanking} (re-inserting)
-it back into the line.
-(`Cut' and `paste' are more recent jargon for `kill' and `yank'.)
-
-If the description for a command says that it `kills' text, then you can
-be sure that you can get the text back in a different (or the same)
-place later.
-
-When you use a kill command, the text is saved in a @dfn{kill-ring}.
-Any number of consecutive kills save all of the killed text together, so
-that when you yank it back, you get it all. The kill
-ring is not line specific; the text that you killed on a previously
-typed line is available to be yanked back later, when you are typing
-another line.
-@cindex kill ring
-
-Here is the list of commands for killing text.
-
-@table @kbd
-@item C-k
-Kill the text from the current cursor position to the end of the line.
-
-@item M-d
-Kill from the cursor to the end of the current word, or, if between
-words, to the end of the next word.
-Word boundaries are the same as those used by @kbd{M-f}.
-
-@item M-@key{DEL}
-Kill from the cursor the start of the current word, or, if between
-words, to the start of the previous word.
-Word boundaries are the same as those used by @kbd{M-b}.
-
-@item C-w
-Kill from the cursor to the previous whitespace. This is different than
-@kbd{M-@key{DEL}} because the word boundaries differ.
-
-@end table
-
-Here is how to @dfn{yank} the text back into the line. Yanking
-means to copy the most-recently-killed text from the kill buffer.
-
-@table @kbd
-@item C-y
-Yank the most recently killed text back into the buffer at the cursor.
-
-@item M-y
-Rotate the kill-ring, and yank the new top. You can only do this if
-the prior command is @kbd{C-y} or @kbd{M-y}.
-@end table
-
-@node Readline Arguments
-@subsection Readline Arguments
-
-You can pass numeric arguments to Readline commands. Sometimes the
-argument acts as a repeat count, other times it is the @i{sign} of the
-argument that is significant. If you pass a negative argument to a
-command which normally acts in a forward direction, that command will
-act in a backward direction. For example, to kill text back to the
-start of the line, you might type @samp{M-- C-k}.
-
-The general way to pass numeric arguments to a command is to type meta
-digits before the command. If the first `digit' typed is a minus
-sign (@samp{-}), then the sign of the argument will be negative. Once
-you have typed one meta digit to get the argument started, you can type
-the remainder of the digits, and then the command. For example, to give
-the @kbd{C-d} command an argument of 10, you could type @samp{M-1 0 C-d},
-which will delete the next ten characters on the input line.
-
-@node Searching
-@subsection Searching for Commands in the History
-
-Readline provides commands for searching through the command history
-@ifset BashFeatures
-(@pxref{Bash History Facilities})
-@end ifset
-for lines containing a specified string.
-There are two search modes: @dfn{incremental} and @dfn{non-incremental}.
-
-Incremental searches begin before the user has finished typing the
-search string.
-As each character of the search string is typed, Readline displays
-the next entry from the history matching the string typed so far.
-An incremental search requires only as many characters as needed to
-find the desired history entry.
-To search backward in the history for a particular string, type
-@kbd{C-r}. Typing @kbd{C-s} searches forward through the history.
-The characters present in the value of the @code{isearch-terminators} variable
-are used to terminate an incremental search.
-If that variable has not been assigned a value, the @key{ESC} and
-@kbd{C-J} characters will terminate an incremental search.
-@kbd{C-g} will abort an incremental search and restore the original line.
-When the search is terminated, the history entry containing the
-search string becomes the current line.
-
-To find other matching entries in the history list, type @kbd{C-r} or
-@kbd{C-s} as appropriate.
-This will search backward or forward in the history for the next
-entry matching the search string typed so far.
-Any other key sequence bound to a Readline command will terminate
-the search and execute that command.
-For instance, a @key{RET} will terminate the search and accept
-the line, thereby executing the command from the history list.
-A movement command will terminate the search, make the last line found
-the current line, and begin editing.
-
-Readline remembers the last incremental search string. If two
-@kbd{C-r}s are typed without any intervening characters defining a new
-search string, any remembered search string is used.
-
-Non-incremental searches read the entire search string before starting
-to search for matching history lines. The search string may be
-typed by the user or be part of the contents of the current line.
-
-@node Readline Init File
-@section Readline Init File
-@cindex initialization file, readline
-
-Although the Readline library comes with a set of Emacs-like
-keybindings installed by default, it is possible to use a different set
-of keybindings.
-Any user can customize programs that use Readline by putting
-commands in an @dfn{inputrc} file, conventionally in his home directory.
-The name of this
-@ifset BashFeatures
-file is taken from the value of the shell variable @env{INPUTRC}. If
-@end ifset
-@ifclear BashFeatures
-file is taken from the value of the environment variable @env{INPUTRC}. If
-@end ifclear
-that variable is unset, the default is @file{~/.inputrc}.
-
-When a program which uses the Readline library starts up, the
-init file is read, and the key bindings are set.
-
-In addition, the @code{C-x C-r} command re-reads this init file, thus
-incorporating any changes that you might have made to it.
-
-@menu
-* Readline Init File Syntax:: Syntax for the commands in the inputrc file.
-
-* Conditional Init Constructs:: Conditional key bindings in the inputrc file.
-
-* Sample Init File:: An example inputrc file.
-@end menu
-
-@node Readline Init File Syntax
-@subsection Readline Init File Syntax
-
-There are only a few basic constructs allowed in the
-Readline init file. Blank lines are ignored.
-Lines beginning with a @samp{#} are comments.
-Lines beginning with a @samp{$} indicate conditional
-constructs (@pxref{Conditional Init Constructs}). Other lines
-denote variable settings and key bindings.
-
-@table @asis
-@item Variable Settings
-You can modify the run-time behavior of Readline by
-altering the values of variables in Readline
-using the @code{set} command within the init file.
-The syntax is simple:
-
-@example
-set @var{variable} @var{value}
-@end example
-
-@noindent
-Here, for example, is how to
-change from the default Emacs-like key binding to use
-@code{vi} line editing commands:
-
-@example
-set editing-mode vi
-@end example
-
-Variable names and values, where appropriate, are recognized without regard
-to case.
-
-@ifset BashFeatures
-The @w{@code{bind -V}} command lists the current Readline variable names
-and values. @xref{Bash Builtins}.
-@end ifset
-
-A great deal of run-time behavior is changeable with the following
-variables.
-
-@cindex variables, readline
-@table @code
-
-@item bell-style
-@vindex bell-style
-Controls what happens when Readline wants to ring the terminal bell.
-If set to @samp{none}, Readline never rings the bell. If set to
-@samp{visible}, Readline uses a visible bell if one is available.
-If set to @samp{audible} (the default), Readline attempts to ring
-the terminal's bell.
-
-@item comment-begin
-@vindex comment-begin
-The string to insert at the beginning of the line when the
-@code{insert-comment} command is executed. The default value
-is @code{"#"}.
-
-@item completion-ignore-case
-If set to @samp{on}, Readline performs filename matching and completion
-in a case-insensitive fashion.
-The default value is @samp{off}.
-
-@item completion-query-items
-@vindex completion-query-items
-The number of possible completions that determines when the user is
-asked whether he wants to see the list of possibilities. If the
-number of possible completions is greater than this value,
-Readline will ask the user whether or not he wishes to view
-them; otherwise, they are simply listed.
-This variable must be set to an integer value greater than or equal to 0.
-The default limit is @code{100}.
-
-@item convert-meta
-@vindex convert-meta
-If set to @samp{on}, Readline will convert characters with the
-eighth bit set to an @sc{ascii} key sequence by stripping the eighth
-bit and prefixing an @key{ESC} character, converting them to a
-meta-prefixed key sequence. The default value is @samp{on}.
-
-@item disable-completion
-@vindex disable-completion
-If set to @samp{On}, Readline will inhibit word completion.
-Completion characters will be inserted into the line as if they had
-been mapped to @code{self-insert}. The default is @samp{off}.
-
-@item editing-mode
-@vindex editing-mode
-The @code{editing-mode} variable controls which default set of
-key bindings is used. By default, Readline starts up in Emacs editing
-mode, where the keystrokes are most similar to Emacs. This variable can be
-set to either @samp{emacs} or @samp{vi}.
-
-@item enable-keypad
-@vindex enable-keypad
-When set to @samp{on}, Readline will try to enable the application
-keypad when it is called. Some systems need this to enable the
-arrow keys. The default is @samp{off}.
-
-@item expand-tilde
-@vindex expand-tilde
-If set to @samp{on}, tilde expansion is performed when Readline
-attempts word completion. The default is @samp{off}.
-
-@vindex history-preserve-point
-If set to @samp{on}, the history code attempts to place point at the
-same location on each history line retrived with @code{previous-history}
-or @code{next-history}.
-
-@item horizontal-scroll-mode
-@vindex horizontal-scroll-mode
-This variable can be set to either @samp{on} or @samp{off}. Setting it
-to @samp{on} means that the text of the lines being edited will scroll
-horizontally on a single screen line when they are longer than the width
-of the screen, instead of wrapping onto a new screen line. By default,
-this variable is set to @samp{off}.
-
-@item input-meta
-@vindex input-meta
-@vindex meta-flag
-If set to @samp{on}, Readline will enable eight-bit input (it
-will not clear the eighth bit in the characters it reads),
-regardless of what the terminal claims it can support. The
-default value is @samp{off}. The name @code{meta-flag} is a
-synonym for this variable.
-
-@item isearch-terminators
-@vindex isearch-terminators
-The string of characters that should terminate an incremental search without
-subsequently executing the character as a command (@pxref{Searching}).
-If this variable has not been given a value, the characters @key{ESC} and
-@kbd{C-J} will terminate an incremental search.
-
-@item keymap
-@vindex keymap
-Sets Readline's idea of the current keymap for key binding commands.
-Acceptable @code{keymap} names are
-@code{emacs},
-@code{emacs-standard},
-@code{emacs-meta},
-@code{emacs-ctlx},
-@code{vi},
-@code{vi-move},
-@code{vi-command}, and
-@code{vi-insert}.
-@code{vi} is equivalent to @code{vi-command}; @code{emacs} is
-equivalent to @code{emacs-standard}. The default value is @code{emacs}.
-The value of the @code{editing-mode} variable also affects the
-default keymap.
-
-@item mark-directories
-If set to @samp{on}, completed directory names have a slash
-appended. The default is @samp{on}.
-
-@item mark-modified-lines
-@vindex mark-modified-lines
-This variable, when set to @samp{on}, causes Readline to display an
-asterisk (@samp{*}) at the start of history lines which have been modified.
-This variable is @samp{off} by default.
-
-@item mark-symlinked-directories
-@vindex mark-symlinked-directories
-If set to @samp{on}, completed names which are symbolic links
-to directories have a slash appended (subject to the value of
-@code{mark-directories}).
-The default is @samp{off}.
-
-@item match-hidden-files
-@vindex match-hidden-files
-This variable, when set to @samp{on}, causes Readline to match files whose
-names begin with a @samp{.} (hidden files) when performing filename
-completion, unless the leading @samp{.} is
-supplied by the user in the filename to be completed.
-This variable is @samp{on} by default.
-
-@item output-meta
-@vindex output-meta
-If set to @samp{on}, Readline will display characters with the
-eighth bit set directly rather than as a meta-prefixed escape
-sequence. The default is @samp{off}.
-
-@item page-completions
-@vindex page-completions
-If set to @samp{on}, Readline uses an internal @code{more}-like pager
-to display a screenful of possible completions at a time.
-This variable is @samp{on} by default.
-
-@item print-completions-horizontally
-If set to @samp{on}, Readline will display completions with matches
-sorted horizontally in alphabetical order, rather than down the screen.
-The default is @samp{off}.
-
-@item show-all-if-ambiguous
-@vindex show-all-if-ambiguous
-This alters the default behavior of the completion functions. If
-set to @samp{on},
-words which have more than one possible completion cause the
-matches to be listed immediately instead of ringing the bell.
-The default value is @samp{off}.
-
-@item visible-stats
-@vindex visible-stats
-If set to @samp{on}, a character denoting a file's type
-is appended to the filename when listing possible
-completions. The default is @samp{off}.
-
-@end table
-
-@item Key Bindings
-The syntax for controlling key bindings in the init file is
-simple. First you need to find the name of the command that you
-want to change. The following sections contain tables of the command
-name, the default keybinding, if any, and a short description of what
-the command does.
-
-Once you know the name of the command, simply place on a line
-in the init file the name of the key
-you wish to bind the command to, a colon, and then the name of the
-command. The name of the key
-can be expressed in different ways, depending on what you find most
-comfortable.
-
-In addition to command names, readline allows keys to be bound
-to a string that is inserted when the key is pressed (a @var{macro}).
-
-@ifset BashFeatures
-The @w{@code{bind -p}} command displays Readline function names and
-bindings in a format that can put directly into an initialization file.
-@xref{Bash Builtins}.
-@end ifset
-
-@table @asis
-@item @w{@var{keyname}: @var{function-name} or @var{macro}}
-@var{keyname} is the name of a key spelled out in English. For example:
-@example
-Control-u: universal-argument
-Meta-Rubout: backward-kill-word
-Control-o: "> output"
-@end example
-
-In the above example, @kbd{C-u} is bound to the function
-@code{universal-argument},
-@kbd{M-DEL} is bound to the function @code{backward-kill-word}, and
-@kbd{C-o} is bound to run the macro
-expressed on the right hand side (that is, to insert the text
-@samp{> output} into the line).
-
-A number of symbolic character names are recognized while
-processing this key binding syntax:
-@var{DEL},
-@var{ESC},
-@var{ESCAPE},
-@var{LFD},
-@var{NEWLINE},
-@var{RET},
-@var{RETURN},
-@var{RUBOUT},
-@var{SPACE},
-@var{SPC},
-and
-@var{TAB}.
-
-@item @w{"@var{keyseq}": @var{function-name} or @var{macro}}
-@var{keyseq} differs from @var{keyname} above in that strings
-denoting an entire key sequence can be specified, by placing
-the key sequence in double quotes. Some @sc{gnu} Emacs style key
-escapes can be used, as in the following example, but the
-special character names are not recognized.
-
-@example
-"\C-u": universal-argument
-"\C-x\C-r": re-read-init-file
-"\e[11~": "Function Key 1"
-@end example
-
-In the above example, @kbd{C-u} is again bound to the function
-@code{universal-argument} (just as it was in the first example),
-@samp{@kbd{C-x} @kbd{C-r}} is bound to the function @code{re-read-init-file},
-and @samp{@key{ESC} @key{[} @key{1} @key{1} @key{~}} is bound to insert
-the text @samp{Function Key 1}.
-
-@end table
-
-The following @sc{gnu} Emacs style escape sequences are available when
-specifying key sequences:
-
-@table @code
-@item @kbd{\C-}
-control prefix
-@item @kbd{\M-}
-meta prefix
-@item @kbd{\e}
-an escape character
-@item @kbd{\\}
-backslash
-@item @kbd{\"}
-@key{"}, a double quotation mark
-@item @kbd{\'}
-@key{'}, a single quote or apostrophe
-@end table
-
-In addition to the @sc{gnu} Emacs style escape sequences, a second
-set of backslash escapes is available:
-
-@table @code
-@item \a
-alert (bell)
-@item \b
-backspace
-@item \d
-delete
-@item \f
-form feed
-@item \n
-newline
-@item \r
-carriage return
-@item \t
-horizontal tab
-@item \v
-vertical tab
-@item \@var{nnn}
-the eight-bit character whose value is the octal value @var{nnn}
-(one to three digits)
-@item \x@var{HH}
-the eight-bit character whose value is the hexadecimal value @var{HH}
-(one or two hex digits)
-@end table
-
-When entering the text of a macro, single or double quotes must
-be used to indicate a macro definition.
-Unquoted text is assumed to be a function name.
-In the macro body, the backslash escapes described above are expanded.
-Backslash will quote any other character in the macro text,
-including @samp{"} and @samp{'}.
-For example, the following binding will make @samp{@kbd{C-x} \}
-insert a single @samp{\} into the line:
-@example
-"\C-x\\": "\\"
-@end example
-
-@end table
-
-@node Conditional Init Constructs
-@subsection Conditional Init Constructs
-
-Readline implements a facility similar in spirit to the conditional
-compilation features of the C preprocessor which allows key
-bindings and variable settings to be performed as the result
-of tests. There are four parser directives used.
-
-@table @code
-@item $if
-The @code{$if} construct allows bindings to be made based on the
-editing mode, the terminal being used, or the application using
-Readline. The text of the test extends to the end of the line;
-no characters are required to isolate it.
-
-@table @code
-@item mode
-The @code{mode=} form of the @code{$if} directive is used to test
-whether Readline is in @code{emacs} or @code{vi} mode.
-This may be used in conjunction
-with the @samp{set keymap} command, for instance, to set bindings in
-the @code{emacs-standard} and @code{emacs-ctlx} keymaps only if
-Readline is starting out in @code{emacs} mode.
-
-@item term
-The @code{term=} form may be used to include terminal-specific
-key bindings, perhaps to bind the key sequences output by the
-terminal's function keys. The word on the right side of the
-@samp{=} is tested against both the full name of the terminal and
-the portion of the terminal name before the first @samp{-}. This
-allows @code{sun} to match both @code{sun} and @code{sun-cmd},
-for instance.
-
-@item application
-The @var{application} construct is used to include
-application-specific settings. Each program using the Readline
-library sets the @var{application name}, and you can test for
-a particular value.
-This could be used to bind key sequences to functions useful for
-a specific program. For instance, the following command adds a
-key sequence that quotes the current or previous word in Bash:
-@example
-$if Bash
-# Quote the current or previous word
-"\C-xq": "\eb\"\ef\""
-$endif
-@end example
-@end table
-
-@item $endif
-This command, as seen in the previous example, terminates an
-@code{$if} command.
-
-@item $else
-Commands in this branch of the @code{$if} directive are executed if
-the test fails.
-
-@item $include
-This directive takes a single filename as an argument and reads commands
-and bindings from that file.
-For example, the following directive reads from @file{/etc/inputrc}:
-@example
-$include /etc/inputrc
-@end example
-@end table
-
-@node Sample Init File
-@subsection Sample Init File
-
-Here is an example of an @var{inputrc} file. This illustrates key
-binding, variable assignment, and conditional syntax.
-
-@example
-@page
-# This file controls the behaviour of line input editing for
-# programs that use the GNU Readline library. Existing
-# programs include FTP, Bash, and GDB.
-#
-# You can re-read the inputrc file with C-x C-r.
-# Lines beginning with '#' are comments.
-#
-# First, include any systemwide bindings and variable
-# assignments from /etc/Inputrc
-$include /etc/Inputrc
-
-#
-# Set various bindings for emacs mode.
-
-set editing-mode emacs
-
-$if mode=emacs
-
-Meta-Control-h: backward-kill-word Text after the function name is ignored
-
-#
-# Arrow keys in keypad mode
-#
-#"\M-OD": backward-char
-#"\M-OC": forward-char
-#"\M-OA": previous-history
-#"\M-OB": next-history
-#
-# Arrow keys in ANSI mode
-#
-"\M-[D": backward-char
-"\M-[C": forward-char
-"\M-[A": previous-history
-"\M-[B": next-history
-#
-# Arrow keys in 8 bit keypad mode
-#
-#"\M-\C-OD": backward-char
-#"\M-\C-OC": forward-char
-#"\M-\C-OA": previous-history
-#"\M-\C-OB": next-history
-#
-# Arrow keys in 8 bit ANSI mode
-#
-#"\M-\C-[D": backward-char
-#"\M-\C-[C": forward-char
-#"\M-\C-[A": previous-history
-#"\M-\C-[B": next-history
-
-C-q: quoted-insert
-
-$endif
-
-# An old-style binding. This happens to be the default.
-TAB: complete
-
-# Macros that are convenient for shell interaction
-$if Bash
-# edit the path
-"\C-xp": "PATH=$@{PATH@}\e\C-e\C-a\ef\C-f"
-# prepare to type a quoted word --
-# insert open and close double quotes
-# and move to just after the open quote
-"\C-x\"": "\"\"\C-b"
-# insert a backslash (testing backslash escapes
-# in sequences and macros)
-"\C-x\\": "\\"
-# Quote the current or previous word
-"\C-xq": "\eb\"\ef\""
-# Add a binding to refresh the line, which is unbound
-"\C-xr": redraw-current-line
-# Edit variable on current line.
-"\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y="
-$endif
-
-# use a visible bell if one is available
-set bell-style visible
-
-# don't strip characters to 7 bits when reading
-set input-meta on
-
-# allow iso-latin1 characters to be inserted rather
-# than converted to prefix-meta sequences
-set convert-meta off
-
-# display characters with the eighth bit set directly
-# rather than as meta-prefixed characters
-set output-meta on
-
-# if there are more than 150 possible completions for
-# a word, ask the user if he wants to see all of them
-set completion-query-items 150
-
-# For FTP
-$if Ftp
-"\C-xg": "get \M-?"
-"\C-xt": "put \M-?"
-"\M-.": yank-last-arg
-$endif
-@end example
-
-@node Bindable Readline Commands
-@section Bindable Readline Commands
-
-@menu
-* Commands For Moving:: Moving about the line.
-* Commands For History:: Getting at previous lines.
-* Commands For Text:: Commands for changing text.
-* Commands For Killing:: Commands for killing and yanking.
-* Numeric Arguments:: Specifying numeric arguments, repeat counts.
-* Commands For Completion:: Getting Readline to do the typing for you.
-* Keyboard Macros:: Saving and re-executing typed characters
-* Miscellaneous Commands:: Other miscellaneous commands.
-@end menu
-
-This section describes Readline commands that may be bound to key
-sequences.
-@ifset BashFeatures
-You can list your key bindings by executing
-@w{@code{bind -P}} or, for a more terse format, suitable for an
-@var{inputrc} file, @w{@code{bind -p}}. (@xref{Bash Builtins}.)
-@end ifset
-Command names without an accompanying key sequence are unbound by default.
-
-In the following descriptions, @dfn{point} refers to the current cursor
-position, and @dfn{mark} refers to a cursor position saved by the
-@code{set-mark} command.
-The text between the point and mark is referred to as the @dfn{region}.
-
-@node Commands For Moving
-@subsection Commands For Moving
-@ftable @code
-@item beginning-of-line (C-a)
-Move to the start of the current line.
-
-@item end-of-line (C-e)
-Move to the end of the line.
-
-@item forward-char (C-f)
-Move forward a character.
-
-@item backward-char (C-b)
-Move back a character.
-
-@item forward-word (M-f)
-Move forward to the end of the next word. Words are composed of
-letters and digits.
-
-@item backward-word (M-b)
-Move back to the start of the current or previous word. Words are
-composed of letters and digits.
-
-@item clear-screen (C-l)
-Clear the screen and redraw the current line,
-leaving the current line at the top of the screen.
-
-@item redraw-current-line ()
-Refresh the current line. By default, this is unbound.
-
-@end ftable
-
-@node Commands For History
-@subsection Commands For Manipulating The History
-
-@ftable @code
-@item accept-line (Newline or Return)
-@ifset BashFeatures
-Accept the line regardless of where the cursor is.
-If this line is
-non-empty, add it to the history list according to the setting of
-the @env{HISTCONTROL} and @env{HISTIGNORE} variables.
-If this line is a modified history line, then restore the history line
-to its original state.
-@end ifset
-@ifclear BashFeatures
-Accept the line regardless of where the cursor is.
-If this line is
-non-empty, it may be added to the history list for future recall with
-@code{add_history()}.
-If this line is a modified history line, the history line is restored
-to its original state.
-@end ifclear
-
-@item previous-history (C-p)
-Move `back' through the history list, fetching the previous command.
-
-@item next-history (C-n)
-Move `forward' through the history list, fetching the next command.
-
-@item beginning-of-history (M-<)
-Move to the first line in the history.
-
-@item end-of-history (M->)
-Move to the end of the input history, i.e., the line currently
-being entered.
-
-@item reverse-search-history (C-r)
-Search backward starting at the current line and moving `up' through
-the history as necessary. This is an incremental search.
-
-@item forward-search-history (C-s)
-Search forward starting at the current line and moving `down' through
-the the history as necessary. This is an incremental search.
-
-@item non-incremental-reverse-search-history (M-p)
-Search backward starting at the current line and moving `up'
-through the history as necessary using a non-incremental search
-for a string supplied by the user.
-
-@item non-incremental-forward-search-history (M-n)
-Search forward starting at the current line and moving `down'
-through the the history as necessary using a non-incremental search
-for a string supplied by the user.
-
-@item history-search-forward ()
-Search forward through the history for the string of characters
-between the start of the current line and the point.
-This is a non-incremental search.
-By default, this command is unbound.
-
-@item history-search-backward ()
-Search backward through the history for the string of characters
-between the start of the current line and the point. This
-is a non-incremental search. By default, this command is unbound.
-
-@item yank-nth-arg (M-C-y)
-Insert the first argument to the previous command (usually
-the second word on the previous line) at point.
-With an argument @var{n},
-insert the @var{n}th word from the previous command (the words
-in the previous command begin with word 0). A negative argument
-inserts the @var{n}th word from the end of the previous command.
-
-@item yank-last-arg (M-. or M-_)
-Insert last argument to the previous command (the last word of the
-previous history entry). With an
-argument, behave exactly like @code{yank-nth-arg}.
-Successive calls to @code{yank-last-arg} move back through the history
-list, inserting the last argument of each line in turn.
-
-@end ftable
-
-@node Commands For Text
-@subsection Commands For Changing Text
-
-@ftable @code
-@item delete-char (C-d)
-Delete the character at point. If point is at the
-beginning of the line, there are no characters in the line, and
-the last character typed was not bound to @code{delete-char}, then
-return @sc{eof}.
-
-@item backward-delete-char (Rubout)
-Delete the character behind the cursor. A numeric argument means
-to kill the characters instead of deleting them.
-
-@item forward-backward-delete-char ()
-Delete the character under the cursor, unless the cursor is at the
-end of the line, in which case the character behind the cursor is
-deleted. By default, this is not bound to a key.
-
-@item quoted-insert (C-q or C-v)
-Add the next character typed to the line verbatim. This is
-how to insert key sequences like @kbd{C-q}, for example.
-
-@ifclear BashFeatures
-@item tab-insert (M-@key{TAB})
-Insert a tab character.
-@end ifclear
-
-@item self-insert (a, b, A, 1, !, @dots{})
-Insert yourself.
-
-@item transpose-chars (C-t)
-Drag the character before the cursor forward over
-the character at the cursor, moving the
-cursor forward as well. If the insertion point
-is at the end of the line, then this
-transposes the last two characters of the line.
-Negative arguments have no effect.
-
-@item transpose-words (M-t)
-Drag the word before point past the word after point,
-moving point past that word as well.
-If the insertion point is at the end of the line, this transposes
-the last two words on the line.
-
-@item upcase-word (M-u)
-Uppercase the current (or following) word. With a negative argument,
-uppercase the previous word, but do not move the cursor.
-
-@item downcase-word (M-l)
-Lowercase the current (or following) word. With a negative argument,
-lowercase the previous word, but do not move the cursor.
-
-@item capitalize-word (M-c)
-Capitalize the current (or following) word. With a negative argument,
-capitalize the previous word, but do not move the cursor.
-
-@item overwrite-mode ()
-Toggle overwrite mode. With an explicit positive numeric argument,
-switches to overwrite mode. With an explicit non-positive numeric
-argument, switches to insert mode. This command affects only
-@code{emacs} mode; @code{vi} mode does overwrite differently.
-Each call to @code{readline()} starts in insert mode.
-
-In overwrite mode, characters bound to @code{self-insert} replace
-the text at point rather than pushing the text to the right.
-Characters bound to @code{backward-delete-char} replace the character
-before point with a space.
-
-By default, this command is unbound.
-
-@end ftable
-
-@node Commands For Killing
-@subsection Killing And Yanking
-
-@ftable @code
-
-@item kill-line (C-k)
-Kill the text from point to the end of the line.
-
-@item backward-kill-line (C-x Rubout)
-Kill backward to the beginning of the line.
-
-@item unix-line-discard (C-u)
-Kill backward from the cursor to the beginning of the current line.
-
-@item kill-whole-line ()
-Kill all characters on the current line, no matter where point is.
-By default, this is unbound.
-
-@item kill-word (M-d)
-Kill from point to the end of the current word, or if between
-words, to the end of the next word.
-Word boundaries are the same as @code{forward-word}.
-
-@item backward-kill-word (M-@key{DEL})
-Kill the word behind point.
-Word boundaries are the same as @code{backward-word}.
-
-@item unix-word-rubout (C-w)
-Kill the word behind point, using white space as a word boundary.
-The killed text is saved on the kill-ring.
-
-@item delete-horizontal-space ()
-Delete all spaces and tabs around point. By default, this is unbound.
-
-@item kill-region ()
-Kill the text in the current region.
-By default, this command is unbound.
-
-@item copy-region-as-kill ()
-Copy the text in the region to the kill buffer, so it can be yanked
-right away. By default, this command is unbound.
-
-@item copy-backward-word ()
-Copy the word before point to the kill buffer.
-The word boundaries are the same as @code{backward-word}.
-By default, this command is unbound.
-
-@item copy-forward-word ()
-Copy the word following point to the kill buffer.
-The word boundaries are the same as @code{forward-word}.
-By default, this command is unbound.
-
-@item yank (C-y)
-Yank the top of the kill ring into the buffer at point.
-
-@item yank-pop (M-y)
-Rotate the kill-ring, and yank the new top. You can only do this if
-the prior command is @code{yank} or @code{yank-pop}.
-@end ftable
-
-@node Numeric Arguments
-@subsection Specifying Numeric Arguments
-@ftable @code
-
-@item digit-argument (@kbd{M-0}, @kbd{M-1}, @dots{} @kbd{M--})
-Add this digit to the argument already accumulating, or start a new
-argument. @kbd{M--} starts a negative argument.
-
-@item universal-argument ()
-This is another way to specify an argument.
-If this command is followed by one or more digits, optionally with a
-leading minus sign, those digits define the argument.
-If the command is followed by digits, executing @code{universal-argument}
-again ends the numeric argument, but is otherwise ignored.
-As a special case, if this command is immediately followed by a
-character that is neither a digit or minus sign, the argument count
-for the next command is multiplied by four.
-The argument count is initially one, so executing this function the
-first time makes the argument count four, a second time makes the
-argument count sixteen, and so on.
-By default, this is not bound to a key.
-@end ftable
-
-@node Commands For Completion
-@subsection Letting Readline Type For You
-
-@ftable @code
-@item complete (@key{TAB})
-Attempt to perform completion on the text before point.
-The actual completion performed is application-specific.
-@ifset BashFeatures
-Bash attempts completion treating the text as a variable (if the
-text begins with @samp{$}), username (if the text begins with
-@samp{~}), hostname (if the text begins with @samp{@@}), or
-command (including aliases and functions) in turn. If none
-of these produces a match, filename completion is attempted.
-@end ifset
-@ifclear BashFeatures
-The default is filename completion.
-@end ifclear
-
-@item possible-completions (M-?)
-List the possible completions of the text before point.
-
-@item insert-completions (M-*)
-Insert all completions of the text before point that would have
-been generated by @code{possible-completions}.
-
-@item menu-complete ()
-Similar to @code{complete}, but replaces the word to be completed
-with a single match from the list of possible completions.
-Repeated execution of @code{menu-complete} steps through the list
-of possible completions, inserting each match in turn.
-At the end of the list of completions, the bell is rung
-(subject to the setting of @code{bell-style})
-and the original text is restored.
-An argument of @var{n} moves @var{n} positions forward in the list
-of matches; a negative argument may be used to move backward
-through the list.
-This command is intended to be bound to @key{TAB}, but is unbound
-by default.
-
-@item delete-char-or-list ()
-Deletes the character under the cursor if not at the beginning or
-end of the line (like @code{delete-char}).
-If at the end of the line, behaves identically to
-@code{possible-completions}.
-This command is unbound by default.
-
-@ifset BashFeatures
-@item complete-filename (M-/)
-Attempt filename completion on the text before point.
-
-@item possible-filename-completions (C-x /)
-List the possible completions of the text before point,
-treating it as a filename.
-
-@item complete-username (M-~)
-Attempt completion on the text before point, treating
-it as a username.
-
-@item possible-username-completions (C-x ~)
-List the possible completions of the text before point,
-treating it as a username.
-
-@item complete-variable (M-$)
-Attempt completion on the text before point, treating
-it as a shell variable.
-
-@item possible-variable-completions (C-x $)
-List the possible completions of the text before point,
-treating it as a shell variable.
-
-@item complete-hostname (M-@@)
-Attempt completion on the text before point, treating
-it as a hostname.
-
-@item possible-hostname-completions (C-x @@)
-List the possible completions of the text before point,
-treating it as a hostname.
-
-@item complete-command (M-!)
-Attempt completion on the text before point, treating
-it as a command name. Command completion attempts to
-match the text against aliases, reserved words, shell
-functions, shell builtins, and finally executable filenames,
-in that order.
-
-@item possible-command-completions (C-x !)
-List the possible completions of the text before point,
-treating it as a command name.
-
-@item dynamic-complete-history (M-@key{TAB})
-Attempt completion on the text before point, comparing
-the text against lines from the history list for possible
-completion matches.
-
-@item complete-into-braces (M-@{)
-Perform filename completion and insert the list of possible completions
-enclosed within braces so the list is available to the shell
-(@pxref{Brace Expansion}).
-
-@end ifset
-@end ftable
-
-@node Keyboard Macros
-@subsection Keyboard Macros
-@ftable @code
-
-@item start-kbd-macro (C-x ()
-Begin saving the characters typed into the current keyboard macro.
-
-@item end-kbd-macro (C-x ))
-Stop saving the characters typed into the current keyboard macro
-and save the definition.
-
-@item call-last-kbd-macro (C-x e)
-Re-execute the last keyboard macro defined, by making the characters
-in the macro appear as if typed at the keyboard.
-
-@end ftable
-
-@node Miscellaneous Commands
-@subsection Some Miscellaneous Commands
-@ftable @code
-
-@item re-read-init-file (C-x C-r)
-Read in the contents of the @var{inputrc} file, and incorporate
-any bindings or variable assignments found there.
-
-@item abort (C-g)
-Abort the current editing command and
-ring the terminal's bell (subject to the setting of
-@code{bell-style}).
-
-@item do-uppercase-version (M-a, M-b, M-@var{x}, @dots{})
-If the metafied character @var{x} is lowercase, run the command
-that is bound to the corresponding uppercase character.
-
-@item prefix-meta (@key{ESC})
-Metafy the next character typed. This is for keyboards
-without a meta key. Typing @samp{@key{ESC} f} is equivalent to typing
-@kbd{M-f}.
-
-@item undo (C-_ or C-x C-u)
-Incremental undo, separately remembered for each line.
-
-@item revert-line (M-r)
-Undo all changes made to this line. This is like executing the @code{undo}
-command enough times to get back to the beginning.
-
-@ifset BashFeatures
-@item tilde-expand (M-&)
-@end ifset
-@ifclear BashFeatures
-@item tilde-expand (M-~)
-@end ifclear
-Perform tilde expansion on the current word.
-
-@item set-mark (C-@@)
-Set the mark to the point. If a
-numeric argument is supplied, the mark is set to that position.
-
-@item exchange-point-and-mark (C-x C-x)
-Swap the point with the mark. The current cursor position is set to
-the saved position, and the old cursor position is saved as the mark.
-
-@item character-search (C-])
-A character is read and point is moved to the next occurrence of that
-character. A negative count searches for previous occurrences.
-
-@item character-search-backward (M-C-])
-A character is read and point is moved to the previous occurrence
-of that character. A negative count searches for subsequent
-occurrences.
-
-@item insert-comment (M-#)
-Without a numeric argument, the value of the @code{comment-begin}
-variable is inserted at the beginning of the current line.
-If a numeric argument is supplied, this command acts as a toggle: if
-the characters at the beginning of the line do not match the value
-of @code{comment-begin}, the value is inserted, otherwise
-the characters in @code{comment-begin} are deleted from the beginning of
-the line.
-In either case, the line is accepted as if a newline had been typed.
-@ifset BashFeatures
-The default value of @code{comment-begin} causes this command
-to make the current line a shell comment.
-If a numeric argument causes the comment character to be removed, the line
-will be executed by the shell.
-@end ifset
-
-@item dump-functions ()
-Print all of the functions and their key bindings to the
-Readline output stream. If a numeric argument is supplied,
-the output is formatted in such a way that it can be made part
-of an @var{inputrc} file. This command is unbound by default.
-
-@item dump-variables ()
-Print all of the settable variables and their values to the
-Readline output stream. If a numeric argument is supplied,
-the output is formatted in such a way that it can be made part
-of an @var{inputrc} file. This command is unbound by default.
-
-@item dump-macros ()
-Print all of the Readline key sequences bound to macros and the
-strings they output. If a numeric argument is supplied,
-the output is formatted in such a way that it can be made part
-of an @var{inputrc} file. This command is unbound by default.
-
-@ifset BashFeatures
-@item glob-complete-word (M-g)
-The word before point is treated as a pattern for pathname expansion,
-with an asterisk implicitly appended. This pattern is used to
-generate a list of matching file names for possible completions.
-
-@item glob-expand-word (C-x *)
-The word before point is treated as a pattern for pathname expansion,
-and the list of matching file names is inserted, replacing the word.
-If a numeric argument is supplied, a @samp{*} is appended before
-pathname expansion.
-
-@item glob-list-expansions (C-x g)
-The list of expansions that would have been generated by
-@code{glob-expand-word} is displayed, and the line is redrawn.
-If a numeric argument is supplied, a @samp{*} is appended before
-pathname expansion.
-
-@item display-shell-version (C-x C-v)
-Display version information about the current instance of Bash.
-
-@item shell-expand-line (M-C-e)
-Expand the line as the shell does.
-This performs alias and history expansion as well as all of the shell
-word expansions (@pxref{Shell Expansions}).
-
-@item history-expand-line (M-^)
-Perform history expansion on the current line.
-
-@item magic-space ()
-Perform history expansion on the current line and insert a space
-(@pxref{History Interaction}).
-
-@item alias-expand-line ()
-Perform alias expansion on the current line (@pxref{Aliases}).
-
-@item history-and-alias-expand-line ()
-Perform history and alias expansion on the current line.
-
-@item insert-last-argument (M-. or M-_)
-A synonym for @code{yank-last-arg}.
-
-@item operate-and-get-next (C-o)
-Accept the current line for execution and fetch the next line
-relative to the current line from the history for editing. Any
-argument is ignored.
-
-@item edit-and-execute-command (C-xC-e)
-Invoke an editor on the current command line, and execute the result as shell
-commands.
-Bash attempts to invoke
-@code{$FCEDIT}, @code{$EDITOR}, and @code{emacs}
-as the editor, in that order.
-
-@end ifset
-
-@ifclear BashFeatures
-@item emacs-editing-mode (C-e)
-When in @code{vi} command mode, this causes a switch to @code{emacs}
-editing mode.
-
-@item vi-editing-mode (M-C-j)
-When in @code{emacs} editing mode, this causes a switch to @code{vi}
-editing mode.
-
-@end ifclear
-
-@end ftable
-
-@node Readline vi Mode
-@section Readline vi Mode
-
-While the Readline library does not have a full set of @code{vi}
-editing functions, it does contain enough to allow simple editing
-of the line. The Readline @code{vi} mode behaves as specified in
-the @sc{posix} 1003.2 standard.
-
-@ifset BashFeatures
-In order to switch interactively between @code{emacs} and @code{vi}
-editing modes, use the @samp{set -o emacs} and @samp{set -o vi}
-commands (@pxref{The Set Builtin}).
-@end ifset
-@ifclear BashFeatures
-In order to switch interactively between @code{emacs} and @code{vi}
-editing modes, use the command @kbd{M-C-j} (bound to emacs-editing-mode
-when in @code{vi} mode and to vi-editing-mode in @code{emacs} mode).
-@end ifclear
-The Readline default is @code{emacs} mode.
-
-When you enter a line in @code{vi} mode, you are already placed in
-`insertion' mode, as if you had typed an @samp{i}. Pressing @key{ESC}
-switches you into `command' mode, where you can edit the text of the
-line with the standard @code{vi} movement keys, move to previous
-history lines with @samp{k} and subsequent lines with @samp{j}, and
-so forth.
-
-@ifset BashFeatures
-@node Programmable Completion
-@section Programmable Completion
-@cindex programmable completion
-
-When word completion is attempted for an argument to a command for
-which a completion specification (a @var{compspec}) has been defined
-using the @code{complete} builtin (@pxref{Programmable Completion Builtins}),
-the programmable completion facilities are invoked.
-
-First, the command name is identified.
-If a compspec has been defined for that command, the
-compspec is used to generate the list of possible completions for the word.
-If the command word is a full pathname, a compspec for the full
-pathname is searched for first.
-If no compspec is found for the full pathname, an attempt is made to
-find a compspec for the portion following the final slash.
-
-Once a compspec has been found, it is used to generate the list of
-matching words.
-If a compspec is not found, the default Bash completion
-described above (@pxref{Commands For Completion}) is performed.
-
-First, the actions specified by the compspec are used.
-Only matches which are prefixed by the word being completed are
-returned.
-When the @option{-f} or @option{-d} option is used for filename or
-directory name completion, the shell variable @env{FIGNORE} is
-used to filter the matches.
-@xref{Bash Variables}, for a description of @env{FIGNORE}.
-
-Any completions specified by a filename expansion pattern to the
-@option{-G} option are generated next.
-The words generated by the pattern need not match the word being completed.
-The @env{GLOBIGNORE} shell variable is not used to filter the matches,
-but the @env{FIGNORE} shell variable is used.
-
-Next, the string specified as the argument to the @option{-W} option
-is considered.
-The string is first split using the characters in the @env{IFS}
-special variable as delimiters.
-Shell quoting is honored.
-Each word is then expanded using
-brace expansion, tilde expansion, parameter and variable expansion,
-command substitution, arithmetic expansion, and pathname expansion,
-as described above (@pxref{Shell Expansions}).
-The results are split using the rules described above
-(@pxref{Word Splitting}).
-The results of the expansion are prefix-matched against the word being
-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} and
-@env{COMP_POINT} 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
-name of the command whose arguments are being completed, the
-second argument is the word being completed, and the third argument
-is the word preceding the word being completed on the current command line.
-No filtering of the generated completions against the word being completed
-is performed; the function or command has complete freedom in generating
-the matches.
-
-Any function specified with @option{-F} is invoked first.
-The function may use any of the shell facilities, including the
-@code{compgen} builtin described below
-(@pxref{Programmable Completion Builtins}), to generate the matches.
-It must put the possible completions in the @env{COMPREPLY} array
-variable.
-
-Next, any command specified with the @option{-C} option is invoked
-in an environment equivalent to command substitution.
-It should print a list of completions, one per line, to
-the standard output.
-Backslash may be used to escape a newline, if necessary.
-
-After all of the possible completions are generated, any filter
-specified with the @option{-X} option is applied to the list.
-The filter is a pattern as used for pathname expansion; a @samp{&}
-in the pattern is replaced with the text of the word being completed.
-A literal @samp{&} may be escaped with a backslash; the backslash
-is removed before attempting a match.
-Any completion that matches the pattern will be removed from the list.
-A leading @samp{!} negates the pattern; in this case any completion
-not matching the pattern will be removed.
-
-Finally, any prefix and suffix specified with the @option{-P} and @option{-S}
-options are added to each member of the completion list, and the result is
-returned to the Readline completion code as the list of possible
-completions.
-
-If the previously-applied actions do not generate any matches, and the
-@option{-o dirnames} option was supplied to @code{complete} when the
-compspec was defined, directory name completion is attempted.
-
-By default, if a compspec is found, whatever it generates is returned to
-the completion code as the full set of possible completions.
-The default Bash completions are not attempted, and the Readline default
-of filename completion is disabled.
-If the @option{-o default} option was supplied to @code{complete} when the
-compspec was defined, Readline's default completion will be performed
-if the compspec generates no matches.
-
-When a compspec indicates that directory name completion is desired,
-the programmable completion functions force Readline to append a slash
-to completed names which are symbolic links to directories, subject to
-the value of the @var{mark-directories} Readline variable, regardless
-of the setting of the @var{mark-symlinked-directories} Readline variable.
-
-@node Programmable Completion Builtins
-@section Programmable Completion Builtins
-@cindex completion builtins
-
-Two builtin commands are available to manipulate the programmable completion
-facilities.
-
-@table @code
-@item compgen
-@btindex compgen
-@example
-@code{compgen [@var{option}] [@var{word}]}
-@end example
-
-Generate possible completion matches for @var{word} according to
-the @var{option}s, which may be any option accepted by the
-@code{complete}
-builtin with the exception of @option{-p} and @option{-r}, and write
-the matches to the standard output.
-When using the @option{-F} or @option{-C} options, the various shell variables
-set by the programmable completion facilities, while available, will not
-have useful values.
-
-The matches will be generated in the same way as if the programmable
-completion code had generated them directly from a completion specification
-with the same flags.
-If @var{word} is specified, only those completions matching @var{word}
-will be displayed.
-
-The return value is true unless an invalid option is supplied, or no
-matches were generated.
-
-@item complete
-@btindex complete
-@example
-@code{complete [-abcdefgjksuv] [-o @var{comp-option}] [-A @var{action}] [-G @var{globpat}] [-W @var{wordlist}]
-[-P @var{prefix}] [-S @var{suffix}] [-X @var{filterpat}] [-F @var{function}]
-[-C @var{command}] @var{name} [@var{name} @dots{}]}
-@code{complete -pr [@var{name} @dots{}]}
-@end example
-
-Specify how arguments to each @var{name} should be completed.
-If the @option{-p} option is supplied, or if no options are supplied, existing
-completion specifications are printed in a way that allows them to be
-reused as input.
-The @option{-r} option removes a completion specification for
-each @var{name}, or, if no @var{name}s are supplied, all
-completion specifications.
-
-The process of applying these completion specifications when word completion
-is attempted is described above (@pxref{Programmable Completion}).
-
-Other options, if specified, have the following meanings.
-The arguments to the @option{-G}, @option{-W}, and @option{-X} options
-(and, if necessary, the @option{-P} and @option{-S} options)
-should be quoted to protect them from expansion before the
-@code{complete} builtin is invoked.
-
-
-@table @code
-@item -o @var{comp-option}
-The @var{comp-option} controls several aspects of the compspec's behavior
-beyond the simple generation of completions.
-@var{comp-option} may be one of:
-
-@table @code
-
-@item default
-Use Readline's default filename completion if the compspec generates
-no matches.
-
-@item dirnames
-Perform directory name completion if the compspec generates no matches.
-
-@item filenames
-Tell Readline that the compspec generates filenames, so it can perform any
-filename\-specific processing (like adding a slash to directory names or
-suppressing trailing spaces). This option is intended to be used with
-shell functions specified with @option{-F}.
-
-@item nospace
-Tell Readline not to append a space (the default) to words completed at
-the end of the line.
-@end table
-
-@item -A @var{action}
-The @var{action} may be one of the following to generate a list of possible
-completions:
-
-@table @code
-@item alias
-Alias names. May also be specified as @option{-a}.
-
-@item arrayvar
-Array variable names.
-
-@item binding
-Readline key binding names (@pxref{Bindable Readline Commands}).
-
-@item builtin
-Names of shell builtin commands. May also be specified as @option{-b}.
-
-@item command
-Command names. May also be specified as @option{-c}.
-
-@item directory
-Directory names. May also be specified as @option{-d}.
-
-@item disabled
-Names of disabled shell builtins.
-
-@item enabled
-Names of enabled shell builtins.
-
-@item export
-Names of exported shell variables. May also be specified as @option{-e}.
-
-@item file
-File names. May also be specified as @option{-f}.
-
-@item function
-Names of shell functions.
-
-@item group
-Group names. May also be specified as @option{-g}.
-
-@item helptopic
-Help topics as accepted by the @code{help} builtin (@pxref{Bash Builtins}).
-
-@item hostname
-Hostnames, as taken from the file specified by the
-@env{HOSTFILE} shell variable (@pxref{Bash Variables}).
-
-@item job
-Job names, if job control is active. May also be specified as @option{-j}.
-
-@item keyword
-Shell reserved words. May also be specified as @option{-k}.
-
-@item running
-Names of running jobs, if job control is active.
-
-@item service
-Service names. May also be specified as @option{-s}.
-
-@item setopt
-Valid arguments for the @option{-o} option to the @code{set} builtin
-(@pxref{The Set Builtin}).
-
-@item shopt
-Shell option names as accepted by the @code{shopt} builtin
-(@pxref{Bash Builtins}).
-
-@item signal
-Signal names.
-
-@item stopped
-Names of stopped jobs, if job control is active.
-
-@item user
-User names. May also be specified as @option{-u}.
-
-@item variable
-Names of all shell variables. May also be specified as @option{-v}.
-@end table
-
-@item -G @var{globpat}
-The filename expansion pattern @var{globpat} is expanded to generate
-the possible completions.
-
-@item -W @var{wordlist}
-The @var{wordlist} is split using the characters in the
-@env{IFS} special variable as delimiters, and each resultant word
-is expanded.
-The possible completions are the members of the resultant list which
-match the word being completed.
-
-@item -C @var{command}
-@var{command} is executed in a subshell environment, and its output is
-used as the possible completions.
-
-@item -F @var{function}
-The shell function @var{function} is executed in the current shell
-environment.
-When it finishes, the possible completions are retrieved from the value
-of the @env{COMPREPLY} array variable.
-
-@item -X @var{filterpat}
-@var{filterpat} is a pattern as used for filename expansion.
-It is applied to the list of possible completions generated by the
-preceding options and arguments, and each completion matching
-@var{filterpat} is removed from the list.
-A leading @samp{!} in @var{filterpat} negates the pattern; in this
-case, any completion not matching @var{filterpat} is removed.
-
-@item -P @var{prefix}
-@var{prefix} is added at the beginning of each possible completion
-after all other options have been applied.
-
-@item -S @var{suffix}
-@var{suffix} is appended to each possible completion
-after all other options have been applied.
-@end table
-
-The return value is true unless an invalid option is supplied, an option
-other than @option{-p} or @option{-r} is supplied without a @var{name}
-argument, an attempt is made to remove a completion specification for
-a @var{name} for which no specification exists, or
-an error occurs adding a completion specification.
-
-@end table
-@end ifset
diff --git a/readline-4.3.orig/doc/rluserman.dvi b/readline-4.3.orig/doc/rluserman.dvi
deleted file mode 100644
index a2339aa..0000000
--- a/readline-4.3.orig/doc/rluserman.dvi
+++ /dev/null
Binary files differ
diff --git a/readline-4.3.orig/doc/rluserman.html b/readline-4.3.orig/doc/rluserman.html
deleted file mode 100644
index ac8bfbd..0000000
--- a/readline-4.3.orig/doc/rluserman.html
+++ /dev/null
@@ -1,2184 +0,0 @@
-<HTML>
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<!-- Created on June, 27 2002 by texi2html 1.64 -->
-<!--
-Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
- Karl Berry <karl@freefriends.org>
- Olaf Bachmann <obachman@mathematik.uni-kl.de>
- and many others.
-Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>
-Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
-
--->
-<HEAD>
-<TITLE>GNU Readline Library: </TITLE>
-
-<META NAME="description" CONTENT="GNU Readline Library: ">
-<META NAME="keywords" CONTENT="GNU Readline Library: ">
-<META NAME="resource-type" CONTENT="document">
-<META NAME="distribution" CONTENT="global">
-<META NAME="Generator" CONTENT="texi2html 1.64">
-
-</HEAD>
-
-<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
-
-<A NAME="SEC_Top"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1>GNU Readline Library</H1></P><P>
-
-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 that need to provide a command line interface.
-</P><P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC1">1. Command Line Editing</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">GNU Readline User's Manual.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<HR SIZE=1>
-<A NAME="SEC1"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC2"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<A NAME="Command Line Editing"></A>
-<H1> 1. Command Line Editing </H1>
-<!--docid::SEC1::-->
-<P>
-
-This chapter describes the basic features of the GNU
-command line editing interface.
-</P><P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC2">1.1 Introduction to Line Editing</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Notation used in this text.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC3">1.2 Readline Interaction</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">The minimum set of commands for editing a line.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC9">1.3 Readline Init File</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Customizing Readline from a user's view.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC13">1.4 Bindable Readline Commands</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">A description of most of the Readline commands
- available for binding</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC22">1.5 Readline vi Mode</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">A short description of how to make Readline
- behave like the vi editor.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<A NAME="Introduction and Notation"></A>
-<HR SIZE="6">
-<A NAME="SEC2"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC1"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC3"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC1"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 1.1 Introduction to Line Editing </H2>
-<!--docid::SEC2::-->
-<P>
-
-The following paragraphs describe the notation used to represent
-keystrokes.
-</P><P>
-
-The text <KBD>C-k</KBD> is read as `Control-K' and describes the character
-produced when the <KBD>k</KBD> key is pressed while the Control key
-is depressed.
-</P><P>
-
-The text <KBD>M-k</KBD> is read as `Meta-K' and describes the character
-produced when the Meta key (if you have one) is depressed, and the <KBD>k</KBD>
-key is pressed.
-The Meta key is labeled <KBD>ALT</KBD> on many keyboards.
-On keyboards with two keys labeled <KBD>ALT</KBD> (usually to either side of
-the space bar), the <KBD>ALT</KBD> on the left side is generally set to
-work as a Meta key.
-The <KBD>ALT</KBD> key on the right may also be configured to work as a
-Meta key or may be configured as some other modifier, such as a
-Compose key for typing accented characters.
-</P><P>
-
-If you do not have a Meta or <KBD>ALT</KBD> key, or another key working as
-a Meta key, the identical keystroke can be generated by typing <KBD>ESC</KBD>
-<EM>first</EM>, and then typing <KBD>k</KBD>.
-Either process is known as <EM>metafying</EM> the <KBD>k</KBD> key.
-</P><P>
-
-The text <KBD>M-C-k</KBD> is read as `Meta-Control-k' and describes the
-character produced by <EM>metafying</EM> <KBD>C-k</KBD>.
-</P><P>
-
-In addition, several keys have their own names. Specifically,
-<KBD>DEL</KBD>, <KBD>ESC</KBD>, <KBD>LFD</KBD>, <KBD>SPC</KBD>, <KBD>RET</KBD>, and <KBD>TAB</KBD> all
-stand for themselves when seen in this text, or in an init file
-(see section <A HREF="rluserman.html#SEC9">1.3 Readline Init File</A>).
-If your keyboard lacks a <KBD>LFD</KBD> key, typing <KBD>C-j</KBD> will
-produce the desired character.
-The <KBD>RET</KBD> key may be labeled <KBD>Return</KBD> or <KBD>Enter</KBD> on
-some keyboards.
-</P><P>
-
-<A NAME="Readline Interaction"></A>
-<HR SIZE="6">
-<A NAME="SEC3"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC2"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC4"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC1"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 1.2 Readline Interaction </H2>
-<!--docid::SEC3::-->
-<P>
-
-Often during an interactive session you type in a long line of text,
-only to notice that the first word on the line is misspelled. The
-Readline library gives you a set of commands for manipulating the text
-as you type it in, allowing you to just fix your typo, and not forcing
-you to retype the majority of the line. Using these editing commands,
-you move the cursor to the place that needs correction, and delete or
-insert the text of the corrections. Then, when you are satisfied with
-the line, you simply press <KBD>RET</KBD>. You do not have to be at the
-end of the line to press <KBD>RET</KBD>; the entire line is accepted
-regardless of the location of the cursor within the line.
-</P><P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC4">1.2.1 Readline Bare Essentials</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">The least you need to know about Readline.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC5">1.2.2 Readline Movement Commands</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Moving about the input line.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC6">1.2.3 Readline Killing Commands</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">How to delete text, and how to get it back!</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC7">1.2.4 Readline Arguments</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Giving numeric arguments to commands.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC8">1.2.5 Searching for Commands in the History</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Searching through previous lines.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<A NAME="Readline Bare Essentials"></A>
-<HR SIZE="6">
-<A NAME="SEC4"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC3"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC5"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC3"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.2.1 Readline Bare Essentials </H3>
-<!--docid::SEC4::-->
-<P>
-
-In order to enter characters into the line, simply type them. The typed
-character appears where the cursor was, and then the cursor moves one
-space to the right. If you mistype a character, you can use your
-erase character to back up and delete the mistyped character.
-</P><P>
-
-Sometimes you may mistype a character, and
-not notice the error until you have typed several other characters. In
-that case, you can type <KBD>C-b</KBD> to move the cursor to the left, and then
-correct your mistake. Afterwards, you can move the cursor to the right
-with <KBD>C-f</KBD>.
-</P><P>
-
-When you add text in the middle of a line, you will notice that characters
-to the right of the cursor are `pushed over' to make room for the text
-that you have inserted. Likewise, when you delete text behind the cursor,
-characters to the right of the cursor are `pulled back' to fill in the
-blank space created by the removal of the text. A list of the bare
-essentials for editing the text of an input line follows.
-</P><P>
-
-<DL COMPACT>
-<DT><KBD>C-b</KBD>
-<DD>Move back one character.
-<DT><KBD>C-f</KBD>
-<DD>Move forward one character.
-<DT><KBD>DEL</KBD> or <KBD>Backspace</KBD>
-<DD>Delete the character to the left of the cursor.
-<DT><KBD>C-d</KBD>
-<DD>Delete the character underneath the cursor.
-<DT>Printing characters
-<DD>Insert the character into the line at the cursor.
-<DT><KBD>C-_</KBD> or <KBD>C-x C-u</KBD>
-<DD>Undo the last editing command. You can undo all the way back to an
-empty line.
-</DL>
-<P>
-
-(Depending on your configuration, the <KBD>Backspace</KBD> key be set to
-delete the character to the left of the cursor and the <KBD>DEL</KBD> key set
-to delete the character underneath the cursor, like <KBD>C-d</KBD>, rather
-than the character to the left of the cursor.)
-</P><P>
-
-<A NAME="Readline Movement Commands"></A>
-<HR SIZE="6">
-<A NAME="SEC5"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC4"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC6"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC6"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC3"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.2.2 Readline Movement Commands </H3>
-<!--docid::SEC5::-->
-<P>
-
-The above table describes the most basic keystrokes that you need
-in order to do editing of the input line. For your convenience, many
-other commands have been added in addition to <KBD>C-b</KBD>, <KBD>C-f</KBD>,
-<KBD>C-d</KBD>, and <KBD>DEL</KBD>. Here are some commands for moving more rapidly
-about the line.
-</P><P>
-
-<DL COMPACT>
-<DT><KBD>C-a</KBD>
-<DD>Move to the start of the line.
-<DT><KBD>C-e</KBD>
-<DD>Move to the end of the line.
-<DT><KBD>M-f</KBD>
-<DD>Move forward a word, where a word is composed of letters and digits.
-<DT><KBD>M-b</KBD>
-<DD>Move backward a word.
-<DT><KBD>C-l</KBD>
-<DD>Clear the screen, reprinting the current line at the top.
-</DL>
-<P>
-
-Notice how <KBD>C-f</KBD> moves forward a character, while <KBD>M-f</KBD> moves
-forward a word. It is a loose convention that control keystrokes
-operate on characters while meta keystrokes operate on words.
-</P><P>
-
-<A NAME="Readline Killing Commands"></A>
-<HR SIZE="6">
-<A NAME="SEC6"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC5"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC7"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC7"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC3"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.2.3 Readline Killing Commands </H3>
-<!--docid::SEC6::-->
-<P>
-
-<A NAME="IDX1"></A>
-<A NAME="IDX2"></A>
-</P><P>
-
-<EM>Killing</EM> text means to delete the text from the line, but to save
-it away for later use, usually by <EM>yanking</EM> (re-inserting)
-it back into the line.
-(`Cut' and `paste' are more recent jargon for `kill' and `yank'.)
-</P><P>
-
-If the description for a command says that it `kills' text, then you can
-be sure that you can get the text back in a different (or the same)
-place later.
-</P><P>
-
-When you use a kill command, the text is saved in a <EM>kill-ring</EM>.
-Any number of consecutive kills save all of the killed text together, so
-that when you yank it back, you get it all. The kill
-ring is not line specific; the text that you killed on a previously
-typed line is available to be yanked back later, when you are typing
-another line.
-<A NAME="IDX3"></A>
-</P><P>
-
-Here is the list of commands for killing text.
-</P><P>
-
-<DL COMPACT>
-<DT><KBD>C-k</KBD>
-<DD>Kill the text from the current cursor position to the end of the line.
-<P>
-
-<DT><KBD>M-d</KBD>
-<DD>Kill from the cursor to the end of the current word, or, if between
-words, to the end of the next word.
-Word boundaries are the same as those used by <KBD>M-f</KBD>.
-<P>
-
-<DT><KBD>M-<KBD>DEL</KBD></KBD>
-<DD>Kill from the cursor the start of the current word, or, if between
-words, to the start of the previous word.
-Word boundaries are the same as those used by <KBD>M-b</KBD>.
-<P>
-
-<DT><KBD>C-w</KBD>
-<DD>Kill from the cursor to the previous whitespace. This is different than
-<KBD>M-<KBD>DEL</KBD></KBD> because the word boundaries differ.
-<P>
-
-</DL>
-<P>
-
-Here is how to <EM>yank</EM> the text back into the line. Yanking
-means to copy the most-recently-killed text from the kill buffer.
-</P><P>
-
-<DL COMPACT>
-<DT><KBD>C-y</KBD>
-<DD>Yank the most recently killed text back into the buffer at the cursor.
-<P>
-
-<DT><KBD>M-y</KBD>
-<DD>Rotate the kill-ring, and yank the new top. You can only do this if
-the prior command is <KBD>C-y</KBD> or <KBD>M-y</KBD>.
-</DL>
-<P>
-
-<A NAME="Readline Arguments"></A>
-<HR SIZE="6">
-<A NAME="SEC7"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC6"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC8"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC8"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC3"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.2.4 Readline Arguments </H3>
-<!--docid::SEC7::-->
-<P>
-
-You can pass numeric arguments to Readline commands. Sometimes the
-argument acts as a repeat count, other times it is the <I>sign</I> of the
-argument that is significant. If you pass a negative argument to a
-command which normally acts in a forward direction, that command will
-act in a backward direction. For example, to kill text back to the
-start of the line, you might type <SAMP>`M-- C-k'</SAMP>.
-</P><P>
-
-The general way to pass numeric arguments to a command is to type meta
-digits before the command. If the first `digit' typed is a minus
-sign (<SAMP>`-'</SAMP>), then the sign of the argument will be negative. Once
-you have typed one meta digit to get the argument started, you can type
-the remainder of the digits, and then the command. For example, to give
-the <KBD>C-d</KBD> command an argument of 10, you could type <SAMP>`M-1 0 C-d'</SAMP>,
-which will delete the next ten characters on the input line.
-</P><P>
-
-<A NAME="Searching"></A>
-<HR SIZE="6">
-<A NAME="SEC8"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC7"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC3"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.2.5 Searching for Commands in the History </H3>
-<!--docid::SEC8::-->
-<P>
-
-Readline provides commands for searching through the command history
-for lines containing a specified string.
-There are two search modes: <EM>incremental</EM> and <EM>non-incremental</EM>.
-</P><P>
-
-Incremental searches begin before the user has finished typing the
-search string.
-As each character of the search string is typed, Readline displays
-the next entry from the history matching the string typed so far.
-An incremental search requires only as many characters as needed to
-find the desired history entry.
-To search backward in the history for a particular string, type
-<KBD>C-r</KBD>. Typing <KBD>C-s</KBD> searches forward through the history.
-The characters present in the value of the <CODE>isearch-terminators</CODE> variable
-are used to terminate an incremental search.
-If that variable has not been assigned a value, the <KBD>ESC</KBD> and
-<KBD>C-J</KBD> characters will terminate an incremental search.
-<KBD>C-g</KBD> will abort an incremental search and restore the original line.
-When the search is terminated, the history entry containing the
-search string becomes the current line.
-</P><P>
-
-To find other matching entries in the history list, type <KBD>C-r</KBD> or
-<KBD>C-s</KBD> as appropriate.
-This will search backward or forward in the history for the next
-entry matching the search string typed so far.
-Any other key sequence bound to a Readline command will terminate
-the search and execute that command.
-For instance, a <KBD>RET</KBD> will terminate the search and accept
-the line, thereby executing the command from the history list.
-A movement command will terminate the search, make the last line found
-the current line, and begin editing.
-</P><P>
-
-Readline remembers the last incremental search string. If two
-<KBD>C-r</KBD>s are typed without any intervening characters defining a new
-search string, any remembered search string is used.
-</P><P>
-
-Non-incremental searches read the entire search string before starting
-to search for matching history lines. The search string may be
-typed by the user or be part of the contents of the current line.
-</P><P>
-
-<A NAME="Readline Init File"></A>
-<HR SIZE="6">
-<A NAME="SEC9"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC8"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC10"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC1"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 1.3 Readline Init File </H2>
-<!--docid::SEC9::-->
-<P>
-
-Although the Readline library comes with a set of Emacs-like
-keybindings installed by default, it is possible to use a different set
-of keybindings.
-Any user can customize programs that use Readline by putting
-commands in an <EM>inputrc</EM> file, conventionally in his home directory.
-The name of this
-file is taken from the value of the environment variable <CODE>INPUTRC</CODE>. If
-that variable is unset, the default is <TT>`~/.inputrc'</TT>.
-</P><P>
-
-When a program which uses the Readline library starts up, the
-init file is read, and the key bindings are set.
-</P><P>
-
-In addition, the <CODE>C-x C-r</CODE> command re-reads this init file, thus
-incorporating any changes that you might have made to it.
-</P><P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Syntax for the commands in the inputrc file.</TD></TR>
-</TABLE>
-
-<br>
-<TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC11">1.3.2 Conditional Init Constructs</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Conditional key bindings in the inputrc file.</TD></TR>
-</TABLE>
-
-<br>
-<TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC12">1.3.3 Sample Init File</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">An example inputrc file.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<A NAME="Readline Init File Syntax"></A>
-<HR SIZE="6">
-<A NAME="SEC10"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC11"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.3.1 Readline Init File Syntax </H3>
-<!--docid::SEC10::-->
-<P>
-
-There are only a few basic constructs allowed in the
-Readline init file. Blank lines are ignored.
-Lines beginning with a <SAMP>`#'</SAMP> are comments.
-Lines beginning with a <SAMP>`$'</SAMP> indicate conditional
-constructs (see section <A HREF="rluserman.html#SEC11">1.3.2 Conditional Init Constructs</A>). Other lines
-denote variable settings and key bindings.
-</P><P>
-
-<DL COMPACT>
-<DT>Variable Settings
-<DD>You can modify the run-time behavior of Readline by
-altering the values of variables in Readline
-using the <CODE>set</CODE> command within the init file.
-The syntax is simple:
-<P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>set <VAR>variable</VAR> <VAR>value</VAR>
-</pre></td></tr></table></P><P>
-
-Here, for example, is how to
-change from the default Emacs-like key binding to use
-<CODE>vi</CODE> line editing commands:
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>set editing-mode vi
-</pre></td></tr></table></P><P>
-
-Variable names and values, where appropriate, are recognized without regard
-to case.
-</P><P>
-
-A great deal of run-time behavior is changeable with the following
-variables.
-</P><P>
-
-<A NAME="IDX4"></A>
-<DL COMPACT>
-
-<DT><CODE>bell-style</CODE>
-<DD><A NAME="IDX5"></A>
-Controls what happens when Readline wants to ring the terminal bell.
-If set to <SAMP>`none'</SAMP>, Readline never rings the bell. If set to
-<SAMP>`visible'</SAMP>, Readline uses a visible bell if one is available.
-If set to <SAMP>`audible'</SAMP> (the default), Readline attempts to ring
-the terminal's bell.
-<P>
-
-<DT><CODE>comment-begin</CODE>
-<DD><A NAME="IDX6"></A>
-The string to insert at the beginning of the line when the
-<CODE>insert-comment</CODE> command is executed. The default value
-is <CODE>"#"</CODE>.
-<P>
-
-<DT><CODE>completion-ignore-case</CODE>
-<DD>If set to <SAMP>`on'</SAMP>, Readline performs filename matching and completion
-in a case-insensitive fashion.
-The default value is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>completion-query-items</CODE>
-<DD><A NAME="IDX7"></A>
-The number of possible completions that determines when the user is
-asked whether he wants to see the list of possibilities. If the
-number of possible completions is greater than this value,
-Readline will ask the user whether or not he wishes to view
-them; otherwise, they are simply listed.
-This variable must be set to an integer value greater than or equal to 0.
-The default limit is <CODE>100</CODE>.
-<P>
-
-<DT><CODE>convert-meta</CODE>
-<DD><A NAME="IDX8"></A>
-If set to <SAMP>`on'</SAMP>, Readline will convert characters with the
-eighth bit set to an ASCII key sequence by stripping the eighth
-bit and prefixing an <KBD>ESC</KBD> character, converting them to a
-meta-prefixed key sequence. The default value is <SAMP>`on'</SAMP>.
-<P>
-
-<DT><CODE>disable-completion</CODE>
-<DD><A NAME="IDX9"></A>
-If set to <SAMP>`On'</SAMP>, Readline will inhibit word completion.
-Completion characters will be inserted into the line as if they had
-been mapped to <CODE>self-insert</CODE>. The default is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>editing-mode</CODE>
-<DD><A NAME="IDX10"></A>
-The <CODE>editing-mode</CODE> variable controls which default set of
-key bindings is used. By default, Readline starts up in Emacs editing
-mode, where the keystrokes are most similar to Emacs. This variable can be
-set to either <SAMP>`emacs'</SAMP> or <SAMP>`vi'</SAMP>.
-<P>
-
-<DT><CODE>enable-keypad</CODE>
-<DD><A NAME="IDX11"></A>
-When set to <SAMP>`on'</SAMP>, Readline will try to enable the application
-keypad when it is called. Some systems need this to enable the
-arrow keys. The default is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>expand-tilde</CODE>
-<DD><A NAME="IDX12"></A>
-If set to <SAMP>`on'</SAMP>, tilde expansion is performed when Readline
-attempts word completion. The default is <SAMP>`off'</SAMP>.
-<P>
-
-<A NAME="IDX13"></A>
-If set to <SAMP>`on'</SAMP>, the history code attempts to place point at the
-same location on each history line retrived with <CODE>previous-history</CODE>
-or <CODE>next-history</CODE>.
-</P><P>
-
-<DT><CODE>horizontal-scroll-mode</CODE>
-<DD><A NAME="IDX14"></A>
-This variable can be set to either <SAMP>`on'</SAMP> or <SAMP>`off'</SAMP>. Setting it
-to <SAMP>`on'</SAMP> means that the text of the lines being edited will scroll
-horizontally on a single screen line when they are longer than the width
-of the screen, instead of wrapping onto a new screen line. By default,
-this variable is set to <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>input-meta</CODE>
-<DD><A NAME="IDX15"></A>
-<A NAME="IDX16"></A>
-If set to <SAMP>`on'</SAMP>, Readline will enable eight-bit input (it
-will not clear the eighth bit in the characters it reads),
-regardless of what the terminal claims it can support. The
-default value is <SAMP>`off'</SAMP>. The name <CODE>meta-flag</CODE> is a
-synonym for this variable.
-<P>
-
-<DT><CODE>isearch-terminators</CODE>
-<DD><A NAME="IDX17"></A>
-The string of characters that should terminate an incremental search without
-subsequently executing the character as a command (see section <A HREF="rluserman.html#SEC8">1.2.5 Searching for Commands in the History</A>).
-If this variable has not been given a value, the characters <KBD>ESC</KBD> and
-<KBD>C-J</KBD> will terminate an incremental search.
-<P>
-
-<DT><CODE>keymap</CODE>
-<DD><A NAME="IDX18"></A>
-Sets Readline's idea of the current keymap for key binding commands.
-Acceptable <CODE>keymap</CODE> names are
-<CODE>emacs</CODE>,
-<CODE>emacs-standard</CODE>,
-<CODE>emacs-meta</CODE>,
-<CODE>emacs-ctlx</CODE>,
-<CODE>vi</CODE>,
-<CODE>vi-move</CODE>,
-<CODE>vi-command</CODE>, and
-<CODE>vi-insert</CODE>.
-<CODE>vi</CODE> is equivalent to <CODE>vi-command</CODE>; <CODE>emacs</CODE> is
-equivalent to <CODE>emacs-standard</CODE>. The default value is <CODE>emacs</CODE>.
-The value of the <CODE>editing-mode</CODE> variable also affects the
-default keymap.
-<P>
-
-<DT><CODE>mark-directories</CODE>
-<DD>If set to <SAMP>`on'</SAMP>, completed directory names have a slash
-appended. The default is <SAMP>`on'</SAMP>.
-<P>
-
-<DT><CODE>mark-modified-lines</CODE>
-<DD><A NAME="IDX19"></A>
-This variable, when set to <SAMP>`on'</SAMP>, causes Readline to display an
-asterisk (<SAMP>`*'</SAMP>) at the start of history lines which have been modified.
-This variable is <SAMP>`off'</SAMP> by default.
-<P>
-
-<DT><CODE>mark-symlinked-directories</CODE>
-<DD><A NAME="IDX20"></A>
-If set to <SAMP>`on'</SAMP>, completed names which are symbolic links
-to directories have a slash appended (subject to the value of
-<CODE>mark-directories</CODE>).
-The default is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>match-hidden-files</CODE>
-<DD><A NAME="IDX21"></A>
-This variable, when set to <SAMP>`on'</SAMP>, causes Readline to match files whose
-names begin with a <SAMP>`.'</SAMP> (hidden files) when performing filename
-completion, unless the leading <SAMP>`.'</SAMP> is
-supplied by the user in the filename to be completed.
-This variable is <SAMP>`on'</SAMP> by default.
-<P>
-
-<DT><CODE>output-meta</CODE>
-<DD><A NAME="IDX22"></A>
-If set to <SAMP>`on'</SAMP>, Readline will display characters with the
-eighth bit set directly rather than as a meta-prefixed escape
-sequence. The default is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>page-completions</CODE>
-<DD><A NAME="IDX23"></A>
-If set to <SAMP>`on'</SAMP>, Readline uses an internal <CODE>more</CODE>-like pager
-to display a screenful of possible completions at a time.
-This variable is <SAMP>`on'</SAMP> by default.
-<P>
-
-<DT><CODE>print-completions-horizontally</CODE>
-<DD>If set to <SAMP>`on'</SAMP>, Readline will display completions with matches
-sorted horizontally in alphabetical order, rather than down the screen.
-The default is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>show-all-if-ambiguous</CODE>
-<DD><A NAME="IDX24"></A>
-This alters the default behavior of the completion functions. If
-set to <SAMP>`on'</SAMP>,
-words which have more than one possible completion cause the
-matches to be listed immediately instead of ringing the bell.
-The default value is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>visible-stats</CODE>
-<DD><A NAME="IDX25"></A>
-If set to <SAMP>`on'</SAMP>, a character denoting a file's type
-is appended to the filename when listing possible
-completions. The default is <SAMP>`off'</SAMP>.
-<P>
-
-</DL>
-<P>
-
-<DT>Key Bindings
-<DD>The syntax for controlling key bindings in the init file is
-simple. First you need to find the name of the command that you
-want to change. The following sections contain tables of the command
-name, the default keybinding, if any, and a short description of what
-the command does.
-<P>
-
-Once you know the name of the command, simply place on a line
-in the init file the name of the key
-you wish to bind the command to, a colon, and then the name of the
-command. The name of the key
-can be expressed in different ways, depending on what you find most
-comfortable.
-</P><P>
-
-In addition to command names, readline allows keys to be bound
-to a string that is inserted when the key is pressed (a <VAR>macro</VAR>).
-</P><P>
-
-<DL COMPACT>
-<DT><VAR>keyname</VAR>: <VAR>function-name</VAR> or <VAR>macro</VAR>
-<DD><VAR>keyname</VAR> is the name of a key spelled out in English. For example:
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>Control-u: universal-argument
-Meta-Rubout: backward-kill-word
-Control-o: "&#62; output"
-</pre></td></tr></table><P>
-
-In the above example, <KBD>C-u</KBD> is bound to the function
-<CODE>universal-argument</CODE>,
-<KBD>M-DEL</KBD> is bound to the function <CODE>backward-kill-word</CODE>, and
-<KBD>C-o</KBD> is bound to run the macro
-expressed on the right hand side (that is, to insert the text
-<SAMP>`&#62; output'</SAMP> into the line).
-</P><P>
-
-A number of symbolic character names are recognized while
-processing this key binding syntax:
-<VAR>DEL</VAR>,
-<VAR>ESC</VAR>,
-<VAR>ESCAPE</VAR>,
-<VAR>LFD</VAR>,
-<VAR>NEWLINE</VAR>,
-<VAR>RET</VAR>,
-<VAR>RETURN</VAR>,
-<VAR>RUBOUT</VAR>,
-<VAR>SPACE</VAR>,
-<VAR>SPC</VAR>,
-and
-<VAR>TAB</VAR>.
-</P><P>
-
-<DT>"<VAR>keyseq</VAR>": <VAR>function-name</VAR> or <VAR>macro</VAR>
-<DD><VAR>keyseq</VAR> differs from <VAR>keyname</VAR> above in that strings
-denoting an entire key sequence can be specified, by placing
-the key sequence in double quotes. Some GNU Emacs style key
-escapes can be used, as in the following example, but the
-special character names are not recognized.
-<P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>"\C-u": universal-argument
-"\C-x\C-r": re-read-init-file
-"\e[11~": "Function Key 1"
-</pre></td></tr></table></P><P>
-
-In the above example, <KBD>C-u</KBD> is again bound to the function
-<CODE>universal-argument</CODE> (just as it was in the first example),
-<SAMP>`<KBD>C-x</KBD> <KBD>C-r</KBD>'</SAMP> is bound to the function <CODE>re-read-init-file</CODE>,
-and <SAMP>`<KBD>ESC</KBD> <KBD>[</KBD> <KBD>1</KBD> <KBD>1</KBD> <KBD>~</KBD>'</SAMP> is bound to insert
-the text <SAMP>`Function Key 1'</SAMP>.
-</P><P>
-
-</DL>
-<P>
-
-The following GNU Emacs style escape sequences are available when
-specifying key sequences:
-</P><P>
-
-<DL COMPACT>
-<DT><CODE><KBD>\C-</KBD></CODE>
-<DD>control prefix
-<DT><CODE><KBD>\M-</KBD></CODE>
-<DD>meta prefix
-<DT><CODE><KBD>\e</KBD></CODE>
-<DD>an escape character
-<DT><CODE><KBD>\\</KBD></CODE>
-<DD>backslash
-<DT><CODE><KBD>\"</KBD></CODE>
-<DD><KBD>"</KBD>, a double quotation mark
-<DT><CODE><KBD>\'</KBD></CODE>
-<DD><KBD>'</KBD>, a single quote or apostrophe
-</DL>
-<P>
-
-In addition to the GNU Emacs style escape sequences, a second
-set of backslash escapes is available:
-</P><P>
-
-<DL COMPACT>
-<DT><CODE>\a</CODE>
-<DD>alert (bell)
-<DT><CODE>\b</CODE>
-<DD>backspace
-<DT><CODE>\d</CODE>
-<DD>delete
-<DT><CODE>\f</CODE>
-<DD>form feed
-<DT><CODE>\n</CODE>
-<DD>newline
-<DT><CODE>\r</CODE>
-<DD>carriage return
-<DT><CODE>\t</CODE>
-<DD>horizontal tab
-<DT><CODE>\v</CODE>
-<DD>vertical tab
-<DT><CODE>\<VAR>nnn</VAR></CODE>
-<DD>the eight-bit character whose value is the octal value <VAR>nnn</VAR>
-(one to three digits)
-<DT><CODE>\x<VAR>HH</VAR></CODE>
-<DD>the eight-bit character whose value is the hexadecimal value <VAR>HH</VAR>
-(one or two hex digits)
-</DL>
-<P>
-
-When entering the text of a macro, single or double quotes must
-be used to indicate a macro definition.
-Unquoted text is assumed to be a function name.
-In the macro body, the backslash escapes described above are expanded.
-Backslash will quote any other character in the macro text,
-including <SAMP>`"'</SAMP> and <SAMP>`''</SAMP>.
-For example, the following binding will make <SAMP>`<KBD>C-x</KBD> \'</SAMP>
-insert a single <SAMP>`\'</SAMP> into the line:
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>"\C-x\\": "\\"
-</pre></td></tr></table></P><P>
-
-</DL>
-<P>
-
-<A NAME="Conditional Init Constructs"></A>
-<HR SIZE="6">
-<A NAME="SEC11"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC10"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC12"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC12"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.3.2 Conditional Init Constructs </H3>
-<!--docid::SEC11::-->
-<P>
-
-Readline implements a facility similar in spirit to the conditional
-compilation features of the C preprocessor which allows key
-bindings and variable settings to be performed as the result
-of tests. There are four parser directives used.
-</P><P>
-
-<DL COMPACT>
-<DT><CODE>$if</CODE>
-<DD>The <CODE>$if</CODE> construct allows bindings to be made based on the
-editing mode, the terminal being used, or the application using
-Readline. The text of the test extends to the end of the line;
-no characters are required to isolate it.
-<P>
-
-<DL COMPACT>
-<DT><CODE>mode</CODE>
-<DD>The <CODE>mode=</CODE> form of the <CODE>$if</CODE> directive is used to test
-whether Readline is in <CODE>emacs</CODE> or <CODE>vi</CODE> mode.
-This may be used in conjunction
-with the <SAMP>`set keymap'</SAMP> command, for instance, to set bindings in
-the <CODE>emacs-standard</CODE> and <CODE>emacs-ctlx</CODE> keymaps only if
-Readline is starting out in <CODE>emacs</CODE> mode.
-<P>
-
-<DT><CODE>term</CODE>
-<DD>The <CODE>term=</CODE> form may be used to include terminal-specific
-key bindings, perhaps to bind the key sequences output by the
-terminal's function keys. The word on the right side of the
-<SAMP>`='</SAMP> is tested against both the full name of the terminal and
-the portion of the terminal name before the first <SAMP>`-'</SAMP>. This
-allows <CODE>sun</CODE> to match both <CODE>sun</CODE> and <CODE>sun-cmd</CODE>,
-for instance.
-<P>
-
-<DT><CODE>application</CODE>
-<DD>The <VAR>application</VAR> construct is used to include
-application-specific settings. Each program using the Readline
-library sets the <VAR>application name</VAR>, and you can test for
-a particular value.
-This could be used to bind key sequences to functions useful for
-a specific program. For instance, the following command adds a
-key sequence that quotes the current or previous word in Bash:
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>$if Bash
-# Quote the current or previous word
-"\C-xq": "\eb\"\ef\""
-$endif
-</pre></td></tr></table></DL>
-<P>
-
-<DT><CODE>$endif</CODE>
-<DD>This command, as seen in the previous example, terminates an
-<CODE>$if</CODE> command.
-<P>
-
-<DT><CODE>$else</CODE>
-<DD>Commands in this branch of the <CODE>$if</CODE> directive are executed if
-the test fails.
-<P>
-
-<DT><CODE>$include</CODE>
-<DD>This directive takes a single filename as an argument and reads commands
-and bindings from that file.
-For example, the following directive reads from <TT>`/etc/inputrc'</TT>:
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>$include /etc/inputrc
-</pre></td></tr></table></DL>
-<P>
-
-<A NAME="Sample Init File"></A>
-<HR SIZE="6">
-<A NAME="SEC12"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC11"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.3.3 Sample Init File </H3>
-<!--docid::SEC12::-->
-<P>
-
-Here is an example of an <VAR>inputrc</VAR> file. This illustrates key
-binding, variable assignment, and conditional syntax.
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre># This file controls the behaviour of line input editing for
-# programs that use the GNU Readline library. Existing
-# programs include FTP, Bash, and GDB.
-#
-# You can re-read the inputrc file with C-x C-r.
-# Lines beginning with '#' are comments.
-#
-# First, include any systemwide bindings and variable
-# assignments from /etc/Inputrc
-$include /etc/Inputrc
-
-#
-# Set various bindings for emacs mode.
-
-set editing-mode emacs
-
-$if mode=emacs
-
-Meta-Control-h: backward-kill-word Text after the function name is ignored
-
-#
-# Arrow keys in keypad mode
-#
-#"\M-OD": backward-char
-#"\M-OC": forward-char
-#"\M-OA": previous-history
-#"\M-OB": next-history
-#
-# Arrow keys in ANSI mode
-#
-"\M-[D": backward-char
-"\M-[C": forward-char
-"\M-[A": previous-history
-"\M-[B": next-history
-#
-# Arrow keys in 8 bit keypad mode
-#
-#"\M-\C-OD": backward-char
-#"\M-\C-OC": forward-char
-#"\M-\C-OA": previous-history
-#"\M-\C-OB": next-history
-#
-# Arrow keys in 8 bit ANSI mode
-#
-#"\M-\C-[D": backward-char
-#"\M-\C-[C": forward-char
-#"\M-\C-[A": previous-history
-#"\M-\C-[B": next-history
-
-C-q: quoted-insert
-
-$endif
-
-# An old-style binding. This happens to be the default.
-TAB: complete
-
-# Macros that are convenient for shell interaction
-$if Bash
-# edit the path
-"\C-xp": "PATH=${PATH}\e\C-e\C-a\ef\C-f"
-# prepare to type a quoted word --
-# insert open and close double quotes
-# and move to just after the open quote
-"\C-x\"": "\"\"\C-b"
-# insert a backslash (testing backslash escapes
-# in sequences and macros)
-"\C-x\\": "\\"
-# Quote the current or previous word
-"\C-xq": "\eb\"\ef\""
-# Add a binding to refresh the line, which is unbound
-"\C-xr": redraw-current-line
-# Edit variable on current line.
-"\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y="
-$endif
-
-# use a visible bell if one is available
-set bell-style visible
-
-# don't strip characters to 7 bits when reading
-set input-meta on
-
-# allow iso-latin1 characters to be inserted rather
-# than converted to prefix-meta sequences
-set convert-meta off
-
-# display characters with the eighth bit set directly
-# rather than as meta-prefixed characters
-set output-meta on
-
-# if there are more than 150 possible completions for
-# a word, ask the user if he wants to see all of them
-set completion-query-items 150
-
-# For FTP
-$if Ftp
-"\C-xg": "get \M-?"
-"\C-xt": "put \M-?"
-"\M-.": yank-last-arg
-$endif
-</pre></td></tr></table></P><P>
-
-<A NAME="Bindable Readline Commands"></A>
-<HR SIZE="6">
-<A NAME="SEC13"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC12"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC14"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC1"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 1.4 Bindable Readline Commands </H2>
-<!--docid::SEC13::-->
-<P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC14">1.4.1 Commands For Moving</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Moving about the line.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Getting at previous lines.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC16">1.4.3 Commands For Changing Text</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Commands for changing text.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC17">1.4.4 Killing And Yanking</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Commands for killing and yanking.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Specifying numeric arguments, repeat counts.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Getting Readline to do the typing for you.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC20">1.4.7 Keyboard Macros</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Saving and re-executing typed characters</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Other miscellaneous commands.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-This section describes Readline commands that may be bound to key
-sequences.
-Command names without an accompanying key sequence are unbound by default.
-</P><P>
-
-In the following descriptions, <EM>point</EM> refers to the current cursor
-position, and <EM>mark</EM> refers to a cursor position saved by the
-<CODE>set-mark</CODE> command.
-The text between the point and mark is referred to as the <EM>region</EM>.
-</P><P>
-
-<A NAME="Commands For Moving"></A>
-<HR SIZE="6">
-<A NAME="SEC14"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC15"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.4.1 Commands For Moving </H3>
-<!--docid::SEC14::-->
-<DL COMPACT>
-<A NAME="IDX26"></A>
-<DT><CODE>beginning-of-line (C-a)</CODE>
-<DD><A NAME="IDX27"></A>
-Move to the start of the current line.
-<P>
-
-<A NAME="IDX28"></A>
-<DT><CODE>end-of-line (C-e)</CODE>
-<DD><A NAME="IDX29"></A>
-Move to the end of the line.
-<P>
-
-<A NAME="IDX30"></A>
-<DT><CODE>forward-char (C-f)</CODE>
-<DD><A NAME="IDX31"></A>
-Move forward a character.
-<P>
-
-<A NAME="IDX32"></A>
-<DT><CODE>backward-char (C-b)</CODE>
-<DD><A NAME="IDX33"></A>
-Move back a character.
-<P>
-
-<A NAME="IDX34"></A>
-<DT><CODE>forward-word (M-f)</CODE>
-<DD><A NAME="IDX35"></A>
-Move forward to the end of the next word. Words are composed of
-letters and digits.
-<P>
-
-<A NAME="IDX36"></A>
-<DT><CODE>backward-word (M-b)</CODE>
-<DD><A NAME="IDX37"></A>
-Move back to the start of the current or previous word. Words are
-composed of letters and digits.
-<P>
-
-<A NAME="IDX38"></A>
-<DT><CODE>clear-screen (C-l)</CODE>
-<DD><A NAME="IDX39"></A>
-Clear the screen and redraw the current line,
-leaving the current line at the top of the screen.
-<P>
-
-<A NAME="IDX40"></A>
-<DT><CODE>redraw-current-line ()</CODE>
-<DD><A NAME="IDX41"></A>
-Refresh the current line. By default, this is unbound.
-<P>
-
-</DL>
-<P>
-
-<A NAME="Commands For History"></A>
-<HR SIZE="6">
-<A NAME="SEC15"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC14"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC16"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC16"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.4.2 Commands For Manipulating The History </H3>
-<!--docid::SEC15::-->
-<P>
-
-<DL COMPACT>
-<A NAME="IDX42"></A>
-<DT><CODE>accept-line (Newline or Return)</CODE>
-<DD><A NAME="IDX43"></A>
-Accept the line regardless of where the cursor is.
-If this line is
-non-empty, it may be added to the history list for future recall with
-<CODE>add_history()</CODE>.
-If this line is a modified history line, the history line is restored
-to its original state.
-<P>
-
-<A NAME="IDX44"></A>
-<DT><CODE>previous-history (C-p)</CODE>
-<DD><A NAME="IDX45"></A>
-Move `back' through the history list, fetching the previous command.
-<P>
-
-<A NAME="IDX46"></A>
-<DT><CODE>next-history (C-n)</CODE>
-<DD><A NAME="IDX47"></A>
-Move `forward' through the history list, fetching the next command.
-<P>
-
-<A NAME="IDX48"></A>
-<DT><CODE>beginning-of-history (M-&#60;)</CODE>
-<DD><A NAME="IDX49"></A>
-Move to the first line in the history.
-<P>
-
-<A NAME="IDX50"></A>
-<DT><CODE>end-of-history (M-&#62;)</CODE>
-<DD><A NAME="IDX51"></A>
-Move to the end of the input history, i.e., the line currently
-being entered.
-<P>
-
-<A NAME="IDX52"></A>
-<DT><CODE>reverse-search-history (C-r)</CODE>
-<DD><A NAME="IDX53"></A>
-Search backward starting at the current line and moving `up' through
-the history as necessary. This is an incremental search.
-<P>
-
-<A NAME="IDX54"></A>
-<DT><CODE>forward-search-history (C-s)</CODE>
-<DD><A NAME="IDX55"></A>
-Search forward starting at the current line and moving `down' through
-the the history as necessary. This is an incremental search.
-<P>
-
-<A NAME="IDX56"></A>
-<DT><CODE>non-incremental-reverse-search-history (M-p)</CODE>
-<DD><A NAME="IDX57"></A>
-Search backward starting at the current line and moving `up'
-through the history as necessary using a non-incremental search
-for a string supplied by the user.
-<P>
-
-<A NAME="IDX58"></A>
-<DT><CODE>non-incremental-forward-search-history (M-n)</CODE>
-<DD><A NAME="IDX59"></A>
-Search forward starting at the current line and moving `down'
-through the the history as necessary using a non-incremental search
-for a string supplied by the user.
-<P>
-
-<A NAME="IDX60"></A>
-<DT><CODE>history-search-forward ()</CODE>
-<DD><A NAME="IDX61"></A>
-Search forward through the history for the string of characters
-between the start of the current line and the point.
-This is a non-incremental search.
-By default, this command is unbound.
-<P>
-
-<A NAME="IDX62"></A>
-<DT><CODE>history-search-backward ()</CODE>
-<DD><A NAME="IDX63"></A>
-Search backward through the history for the string of characters
-between the start of the current line and the point. This
-is a non-incremental search. By default, this command is unbound.
-<P>
-
-<A NAME="IDX64"></A>
-<DT><CODE>yank-nth-arg (M-C-y)</CODE>
-<DD><A NAME="IDX65"></A>
-Insert the first argument to the previous command (usually
-the second word on the previous line) at point.
-With an argument <VAR>n</VAR>,
-insert the <VAR>n</VAR>th word from the previous command (the words
-in the previous command begin with word 0). A negative argument
-inserts the <VAR>n</VAR>th word from the end of the previous command.
-<P>
-
-<A NAME="IDX66"></A>
-<DT><CODE>yank-last-arg (M-. or M-_)</CODE>
-<DD><A NAME="IDX67"></A>
-Insert last argument to the previous command (the last word of the
-previous history entry). With an
-argument, behave exactly like <CODE>yank-nth-arg</CODE>.
-Successive calls to <CODE>yank-last-arg</CODE> move back through the history
-list, inserting the last argument of each line in turn.
-<P>
-
-</DL>
-<P>
-
-<A NAME="Commands For Text"></A>
-<HR SIZE="6">
-<A NAME="SEC16"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC15"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC17"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC17"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.4.3 Commands For Changing Text </H3>
-<!--docid::SEC16::-->
-<P>
-
-<DL COMPACT>
-<A NAME="IDX68"></A>
-<DT><CODE>delete-char (C-d)</CODE>
-<DD><A NAME="IDX69"></A>
-Delete the character at point. If point is at the
-beginning of the line, there are no characters in the line, and
-the last character typed was not bound to <CODE>delete-char</CODE>, then
-return EOF.
-<P>
-
-<A NAME="IDX70"></A>
-<DT><CODE>backward-delete-char (Rubout)</CODE>
-<DD><A NAME="IDX71"></A>
-Delete the character behind the cursor. A numeric argument means
-to kill the characters instead of deleting them.
-<P>
-
-<A NAME="IDX72"></A>
-<DT><CODE>forward-backward-delete-char ()</CODE>
-<DD><A NAME="IDX73"></A>
-Delete the character under the cursor, unless the cursor is at the
-end of the line, in which case the character behind the cursor is
-deleted. By default, this is not bound to a key.
-<P>
-
-<A NAME="IDX74"></A>
-<DT><CODE>quoted-insert (C-q or C-v)</CODE>
-<DD><A NAME="IDX75"></A>
-Add the next character typed to the line verbatim. This is
-how to insert key sequences like <KBD>C-q</KBD>, for example.
-<P>
-
-<A NAME="IDX76"></A>
-<DT><CODE>tab-insert (M-<KBD>TAB</KBD>)</CODE>
-<DD><A NAME="IDX77"></A>
-Insert a tab character.
-<P>
-
-<A NAME="IDX78"></A>
-<DT><CODE>self-insert (a, b, A, 1, !, <small>...</small>)</CODE>
-<DD><A NAME="IDX79"></A>
-Insert yourself.
-<P>
-
-<A NAME="IDX80"></A>
-<DT><CODE>transpose-chars (C-t)</CODE>
-<DD><A NAME="IDX81"></A>
-Drag the character before the cursor forward over
-the character at the cursor, moving the
-cursor forward as well. If the insertion point
-is at the end of the line, then this
-transposes the last two characters of the line.
-Negative arguments have no effect.
-<P>
-
-<A NAME="IDX82"></A>
-<DT><CODE>transpose-words (M-t)</CODE>
-<DD><A NAME="IDX83"></A>
-Drag the word before point past the word after point,
-moving point past that word as well.
-If the insertion point is at the end of the line, this transposes
-the last two words on the line.
-<P>
-
-<A NAME="IDX84"></A>
-<DT><CODE>upcase-word (M-u)</CODE>
-<DD><A NAME="IDX85"></A>
-Uppercase the current (or following) word. With a negative argument,
-uppercase the previous word, but do not move the cursor.
-<P>
-
-<A NAME="IDX86"></A>
-<DT><CODE>downcase-word (M-l)</CODE>
-<DD><A NAME="IDX87"></A>
-Lowercase the current (or following) word. With a negative argument,
-lowercase the previous word, but do not move the cursor.
-<P>
-
-<A NAME="IDX88"></A>
-<DT><CODE>capitalize-word (M-c)</CODE>
-<DD><A NAME="IDX89"></A>
-Capitalize the current (or following) word. With a negative argument,
-capitalize the previous word, but do not move the cursor.
-<P>
-
-<A NAME="IDX90"></A>
-<DT><CODE>overwrite-mode ()</CODE>
-<DD><A NAME="IDX91"></A>
-Toggle overwrite mode. With an explicit positive numeric argument,
-switches to overwrite mode. With an explicit non-positive numeric
-argument, switches to insert mode. This command affects only
-<CODE>emacs</CODE> mode; <CODE>vi</CODE> mode does overwrite differently.
-Each call to <CODE>readline()</CODE> starts in insert mode.
-<P>
-
-In overwrite mode, characters bound to <CODE>self-insert</CODE> replace
-the text at point rather than pushing the text to the right.
-Characters bound to <CODE>backward-delete-char</CODE> replace the character
-before point with a space.
-</P><P>
-
-By default, this command is unbound.
-</P><P>
-
-</DL>
-<P>
-
-<A NAME="Commands For Killing"></A>
-<HR SIZE="6">
-<A NAME="SEC17"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC16"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC18"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC18"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.4.4 Killing And Yanking </H3>
-<!--docid::SEC17::-->
-<P>
-
-<DL COMPACT>
-
-<A NAME="IDX92"></A>
-<DT><CODE>kill-line (C-k)</CODE>
-<DD><A NAME="IDX93"></A>
-Kill the text from point to the end of the line.
-<P>
-
-<A NAME="IDX94"></A>
-<DT><CODE>backward-kill-line (C-x Rubout)</CODE>
-<DD><A NAME="IDX95"></A>
-Kill backward to the beginning of the line.
-<P>
-
-<A NAME="IDX96"></A>
-<DT><CODE>unix-line-discard (C-u)</CODE>
-<DD><A NAME="IDX97"></A>
-Kill backward from the cursor to the beginning of the current line.
-<P>
-
-<A NAME="IDX98"></A>
-<DT><CODE>kill-whole-line ()</CODE>
-<DD><A NAME="IDX99"></A>
-Kill all characters on the current line, no matter where point is.
-By default, this is unbound.
-<P>
-
-<A NAME="IDX100"></A>
-<DT><CODE>kill-word (M-d)</CODE>
-<DD><A NAME="IDX101"></A>
-Kill from point to the end of the current word, or if between
-words, to the end of the next word.
-Word boundaries are the same as <CODE>forward-word</CODE>.
-<P>
-
-<A NAME="IDX102"></A>
-<DT><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE>
-<DD><A NAME="IDX103"></A>
-Kill the word behind point.
-Word boundaries are the same as <CODE>backward-word</CODE>.
-<P>
-
-<A NAME="IDX104"></A>
-<DT><CODE>unix-word-rubout (C-w)</CODE>
-<DD><A NAME="IDX105"></A>
-Kill the word behind point, using white space as a word boundary.
-The killed text is saved on the kill-ring.
-<P>
-
-<A NAME="IDX106"></A>
-<DT><CODE>delete-horizontal-space ()</CODE>
-<DD><A NAME="IDX107"></A>
-Delete all spaces and tabs around point. By default, this is unbound.
-<P>
-
-<A NAME="IDX108"></A>
-<DT><CODE>kill-region ()</CODE>
-<DD><A NAME="IDX109"></A>
-Kill the text in the current region.
-By default, this command is unbound.
-<P>
-
-<A NAME="IDX110"></A>
-<DT><CODE>copy-region-as-kill ()</CODE>
-<DD><A NAME="IDX111"></A>
-Copy the text in the region to the kill buffer, so it can be yanked
-right away. By default, this command is unbound.
-<P>
-
-<A NAME="IDX112"></A>
-<DT><CODE>copy-backward-word ()</CODE>
-<DD><A NAME="IDX113"></A>
-Copy the word before point to the kill buffer.
-The word boundaries are the same as <CODE>backward-word</CODE>.
-By default, this command is unbound.
-<P>
-
-<A NAME="IDX114"></A>
-<DT><CODE>copy-forward-word ()</CODE>
-<DD><A NAME="IDX115"></A>
-Copy the word following point to the kill buffer.
-The word boundaries are the same as <CODE>forward-word</CODE>.
-By default, this command is unbound.
-<P>
-
-<A NAME="IDX116"></A>
-<DT><CODE>yank (C-y)</CODE>
-<DD><A NAME="IDX117"></A>
-Yank the top of the kill ring into the buffer at point.
-<P>
-
-<A NAME="IDX118"></A>
-<DT><CODE>yank-pop (M-y)</CODE>
-<DD><A NAME="IDX119"></A>
-Rotate the kill-ring, and yank the new top. You can only do this if
-the prior command is <CODE>yank</CODE> or <CODE>yank-pop</CODE>.
-</DL>
-<P>
-
-<A NAME="Numeric Arguments"></A>
-<HR SIZE="6">
-<A NAME="SEC18"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC17"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC19"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC19"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.4.5 Specifying Numeric Arguments </H3>
-<!--docid::SEC18::-->
-<DL COMPACT>
-
-<A NAME="IDX120"></A>
-<DT><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, <small>...</small> <KBD>M--</KBD>)</CODE>
-<DD><A NAME="IDX121"></A>
-Add this digit to the argument already accumulating, or start a new
-argument. <KBD>M--</KBD> starts a negative argument.
-<P>
-
-<A NAME="IDX122"></A>
-<DT><CODE>universal-argument ()</CODE>
-<DD><A NAME="IDX123"></A>
-This is another way to specify an argument.
-If this command is followed by one or more digits, optionally with a
-leading minus sign, those digits define the argument.
-If the command is followed by digits, executing <CODE>universal-argument</CODE>
-again ends the numeric argument, but is otherwise ignored.
-As a special case, if this command is immediately followed by a
-character that is neither a digit or minus sign, the argument count
-for the next command is multiplied by four.
-The argument count is initially one, so executing this function the
-first time makes the argument count four, a second time makes the
-argument count sixteen, and so on.
-By default, this is not bound to a key.
-</DL>
-<P>
-
-<A NAME="Commands For Completion"></A>
-<HR SIZE="6">
-<A NAME="SEC19"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC18"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC20"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC20"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.4.6 Letting Readline Type For You </H3>
-<!--docid::SEC19::-->
-<P>
-
-<DL COMPACT>
-<A NAME="IDX124"></A>
-<DT><CODE>complete (<KBD>TAB</KBD>)</CODE>
-<DD><A NAME="IDX125"></A>
-Attempt to perform completion on the text before point.
-The actual completion performed is application-specific.
-The default is filename completion.
-<P>
-
-<A NAME="IDX126"></A>
-<DT><CODE>possible-completions (M-?)</CODE>
-<DD><A NAME="IDX127"></A>
-List the possible completions of the text before point.
-<P>
-
-<A NAME="IDX128"></A>
-<DT><CODE>insert-completions (M-*)</CODE>
-<DD><A NAME="IDX129"></A>
-Insert all completions of the text before point that would have
-been generated by <CODE>possible-completions</CODE>.
-<P>
-
-<A NAME="IDX130"></A>
-<DT><CODE>menu-complete ()</CODE>
-<DD><A NAME="IDX131"></A>
-Similar to <CODE>complete</CODE>, but replaces the word to be completed
-with a single match from the list of possible completions.
-Repeated execution of <CODE>menu-complete</CODE> steps through the list
-of possible completions, inserting each match in turn.
-At the end of the list of completions, the bell is rung
-(subject to the setting of <CODE>bell-style</CODE>)
-and the original text is restored.
-An argument of <VAR>n</VAR> moves <VAR>n</VAR> positions forward in the list
-of matches; a negative argument may be used to move backward
-through the list.
-This command is intended to be bound to <KBD>TAB</KBD>, but is unbound
-by default.
-<P>
-
-<A NAME="IDX132"></A>
-<DT><CODE>delete-char-or-list ()</CODE>
-<DD><A NAME="IDX133"></A>
-Deletes the character under the cursor if not at the beginning or
-end of the line (like <CODE>delete-char</CODE>).
-If at the end of the line, behaves identically to
-<CODE>possible-completions</CODE>.
-This command is unbound by default.
-<P>
-
-</DL>
-<P>
-
-<A NAME="Keyboard Macros"></A>
-<HR SIZE="6">
-<A NAME="SEC20"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC19"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC21"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC21"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.4.7 Keyboard Macros </H3>
-<!--docid::SEC20::-->
-<DL COMPACT>
-
-<A NAME="IDX134"></A>
-<DT><CODE>start-kbd-macro (C-x ()</CODE>
-<DD><A NAME="IDX135"></A>
-Begin saving the characters typed into the current keyboard macro.
-<P>
-
-<A NAME="IDX136"></A>
-<DT><CODE>end-kbd-macro (C-x ))</CODE>
-<DD><A NAME="IDX137"></A>
-Stop saving the characters typed into the current keyboard macro
-and save the definition.
-<P>
-
-<A NAME="IDX138"></A>
-<DT><CODE>call-last-kbd-macro (C-x e)</CODE>
-<DD><A NAME="IDX139"></A>
-Re-execute the last keyboard macro defined, by making the characters
-in the macro appear as if typed at the keyboard.
-<P>
-
-</DL>
-<P>
-
-<A NAME="Miscellaneous Commands"></A>
-<HR SIZE="6">
-<A NAME="SEC21"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC20"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.4.8 Some Miscellaneous Commands </H3>
-<!--docid::SEC21::-->
-<DL COMPACT>
-
-<A NAME="IDX140"></A>
-<DT><CODE>re-read-init-file (C-x C-r)</CODE>
-<DD><A NAME="IDX141"></A>
-Read in the contents of the <VAR>inputrc</VAR> file, and incorporate
-any bindings or variable assignments found there.
-<P>
-
-<A NAME="IDX142"></A>
-<DT><CODE>abort (C-g)</CODE>
-<DD><A NAME="IDX143"></A>
-Abort the current editing command and
-ring the terminal's bell (subject to the setting of
-<CODE>bell-style</CODE>).
-<P>
-
-<A NAME="IDX144"></A>
-<DT><CODE>do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, <small>...</small>)</CODE>
-<DD><A NAME="IDX145"></A>
-If the metafied character <VAR>x</VAR> is lowercase, run the command
-that is bound to the corresponding uppercase character.
-<P>
-
-<A NAME="IDX146"></A>
-<DT><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE>
-<DD><A NAME="IDX147"></A>
-Metafy the next character typed. This is for keyboards
-without a meta key. Typing <SAMP>`<KBD>ESC</KBD> f'</SAMP> is equivalent to typing
-<KBD>M-f</KBD>.
-<P>
-
-<A NAME="IDX148"></A>
-<DT><CODE>undo (C-_ or C-x C-u)</CODE>
-<DD><A NAME="IDX149"></A>
-Incremental undo, separately remembered for each line.
-<P>
-
-<A NAME="IDX150"></A>
-<DT><CODE>revert-line (M-r)</CODE>
-<DD><A NAME="IDX151"></A>
-Undo all changes made to this line. This is like executing the <CODE>undo</CODE>
-command enough times to get back to the beginning.
-<P>
-
-<A NAME="IDX152"></A>
-<DT><CODE>tilde-expand (M-~)</CODE>
-<DD><A NAME="IDX153"></A>
-Perform tilde expansion on the current word.
-<P>
-
-<A NAME="IDX154"></A>
-<DT><CODE>set-mark (C-@)</CODE>
-<DD><A NAME="IDX155"></A>
-Set the mark to the point. If a
-numeric argument is supplied, the mark is set to that position.
-<P>
-
-<A NAME="IDX156"></A>
-<DT><CODE>exchange-point-and-mark (C-x C-x)</CODE>
-<DD><A NAME="IDX157"></A>
-Swap the point with the mark. The current cursor position is set to
-the saved position, and the old cursor position is saved as the mark.
-<P>
-
-<A NAME="IDX158"></A>
-<DT><CODE>character-search (C-])</CODE>
-<DD><A NAME="IDX159"></A>
-A character is read and point is moved to the next occurrence of that
-character. A negative count searches for previous occurrences.
-<P>
-
-<A NAME="IDX160"></A>
-<DT><CODE>character-search-backward (M-C-])</CODE>
-<DD><A NAME="IDX161"></A>
-A character is read and point is moved to the previous occurrence
-of that character. A negative count searches for subsequent
-occurrences.
-<P>
-
-<A NAME="IDX162"></A>
-<DT><CODE>insert-comment (M-#)</CODE>
-<DD><A NAME="IDX163"></A>
-Without a numeric argument, the value of the <CODE>comment-begin</CODE>
-variable is inserted at the beginning of the current line.
-If a numeric argument is supplied, this command acts as a toggle: if
-the characters at the beginning of the line do not match the value
-of <CODE>comment-begin</CODE>, the value is inserted, otherwise
-the characters in <CODE>comment-begin</CODE> are deleted from the beginning of
-the line.
-In either case, the line is accepted as if a newline had been typed.
-<P>
-
-<A NAME="IDX164"></A>
-<DT><CODE>dump-functions ()</CODE>
-<DD><A NAME="IDX165"></A>
-Print all of the functions and their key bindings to the
-Readline output stream. If a numeric argument is supplied,
-the output is formatted in such a way that it can be made part
-of an <VAR>inputrc</VAR> file. This command is unbound by default.
-<P>
-
-<A NAME="IDX166"></A>
-<DT><CODE>dump-variables ()</CODE>
-<DD><A NAME="IDX167"></A>
-Print all of the settable variables and their values to the
-Readline output stream. If a numeric argument is supplied,
-the output is formatted in such a way that it can be made part
-of an <VAR>inputrc</VAR> file. This command is unbound by default.
-<P>
-
-<A NAME="IDX168"></A>
-<DT><CODE>dump-macros ()</CODE>
-<DD><A NAME="IDX169"></A>
-Print all of the Readline key sequences bound to macros and the
-strings they output. If a numeric argument is supplied,
-the output is formatted in such a way that it can be made part
-of an <VAR>inputrc</VAR> file. This command is unbound by default.
-<P>
-
-<A NAME="IDX170"></A>
-<DT><CODE>emacs-editing-mode (C-e)</CODE>
-<DD><A NAME="IDX171"></A>
-When in <CODE>vi</CODE> command mode, this causes a switch to <CODE>emacs</CODE>
-editing mode.
-<P>
-
-<A NAME="IDX172"></A>
-<DT><CODE>vi-editing-mode (M-C-j)</CODE>
-<DD><A NAME="IDX173"></A>
-When in <CODE>emacs</CODE> editing mode, this causes a switch to <CODE>vi</CODE>
-editing mode.
-<P>
-
-</DL>
-<P>
-
-<A NAME="Readline vi Mode"></A>
-<HR SIZE="6">
-<A NAME="SEC22"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC21"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC1"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 1.5 Readline vi Mode </H2>
-<!--docid::SEC22::-->
-<P>
-
-While the Readline library does not have a full set of <CODE>vi</CODE>
-editing functions, it does contain enough to allow simple editing
-of the line. The Readline <CODE>vi</CODE> mode behaves as specified in
-the POSIX 1003.2 standard.
-</P><P>
-
-In order to switch interactively between <CODE>emacs</CODE> and <CODE>vi</CODE>
-editing modes, use the command <KBD>M-C-j</KBD> (bound to emacs-editing-mode
-when in <CODE>vi</CODE> mode and to vi-editing-mode in <CODE>emacs</CODE> mode).
-The Readline default is <CODE>emacs</CODE> mode.
-</P><P>
-
-When you enter a line in <CODE>vi</CODE> mode, you are already placed in
-`insertion' mode, as if you had typed an <SAMP>`i'</SAMP>. Pressing <KBD>ESC</KBD>
-switches you into `command' mode, where you can edit the text of the
-line with the standard <CODE>vi</CODE> movement keys, move to previous
-history lines with <SAMP>`k'</SAMP> and subsequent lines with <SAMP>`j'</SAMP>, and
-so forth.
-</P><P>
-
-<HR SIZE="6">
-<A NAME="SEC_Contents"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1>Table of Contents</H1>
-<UL>
-<A NAME="TOC1" HREF="rluserman.html#SEC1">1. Command Line Editing</A>
-<BR>
-<UL>
-<A NAME="TOC2" HREF="rluserman.html#SEC2">1.1 Introduction to Line Editing</A>
-<BR>
-<A NAME="TOC3" HREF="rluserman.html#SEC3">1.2 Readline Interaction</A>
-<BR>
-<UL>
-<A NAME="TOC4" HREF="rluserman.html#SEC4">1.2.1 Readline Bare Essentials</A>
-<BR>
-<A NAME="TOC5" HREF="rluserman.html#SEC5">1.2.2 Readline Movement Commands</A>
-<BR>
-<A NAME="TOC6" HREF="rluserman.html#SEC6">1.2.3 Readline Killing Commands</A>
-<BR>
-<A NAME="TOC7" HREF="rluserman.html#SEC7">1.2.4 Readline Arguments</A>
-<BR>
-<A NAME="TOC8" HREF="rluserman.html#SEC8">1.2.5 Searching for Commands in the History</A>
-<BR>
-</UL>
-<A NAME="TOC9" HREF="rluserman.html#SEC9">1.3 Readline Init File</A>
-<BR>
-<UL>
-<A NAME="TOC10" HREF="rluserman.html#SEC10">1.3.1 Readline Init File Syntax</A>
-<BR>
-<A NAME="TOC11" HREF="rluserman.html#SEC11">1.3.2 Conditional Init Constructs</A>
-<BR>
-<A NAME="TOC12" HREF="rluserman.html#SEC12">1.3.3 Sample Init File</A>
-<BR>
-</UL>
-<A NAME="TOC13" HREF="rluserman.html#SEC13">1.4 Bindable Readline Commands</A>
-<BR>
-<UL>
-<A NAME="TOC14" HREF="rluserman.html#SEC14">1.4.1 Commands For Moving</A>
-<BR>
-<A NAME="TOC15" HREF="rluserman.html#SEC15">1.4.2 Commands For Manipulating The History</A>
-<BR>
-<A NAME="TOC16" HREF="rluserman.html#SEC16">1.4.3 Commands For Changing Text</A>
-<BR>
-<A NAME="TOC17" HREF="rluserman.html#SEC17">1.4.4 Killing And Yanking</A>
-<BR>
-<A NAME="TOC18" HREF="rluserman.html#SEC18">1.4.5 Specifying Numeric Arguments</A>
-<BR>
-<A NAME="TOC19" HREF="rluserman.html#SEC19">1.4.6 Letting Readline Type For You</A>
-<BR>
-<A NAME="TOC20" HREF="rluserman.html#SEC20">1.4.7 Keyboard Macros</A>
-<BR>
-<A NAME="TOC21" HREF="rluserman.html#SEC21">1.4.8 Some Miscellaneous Commands</A>
-<BR>
-</UL>
-<A NAME="TOC22" HREF="rluserman.html#SEC22">1.5 Readline vi Mode</A>
-<BR>
-</UL>
-</UL>
-<HR SIZE=1>
-<A NAME="SEC_OVERVIEW"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1>Short Table of Contents</H1>
-<BLOCKQUOTE>
-<A NAME="TOC1" HREF="rluserman.html#SEC1">1. Command Line Editing</A>
-<BR>
-
-</BLOCKQUOTE>
-<HR SIZE=1>
-<A NAME="SEC_About"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1>About this document</H1>
-This document was generated by <I>Chet Ramey</I> on <I>June, 27 2002</I>
-using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
-"><I>texi2html</I></A>
-<P></P>
-The buttons in the navigation panels have the following meaning:
-<P></P>
-<table border = "1">
-<TR>
-<TH> Button </TH>
-<TH> Name </TH>
-<TH> Go to </TH>
-<TH> From 1.2.3 go to</TH>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ &lt; ] </TD>
-<TD ALIGN="CENTER">
-Back
-</TD>
-<TD>
-previous section in reading order
-</TD>
-<TD>
-1.2.2
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ &gt; ] </TD>
-<TD ALIGN="CENTER">
-Forward
-</TD>
-<TD>
-next section in reading order
-</TD>
-<TD>
-1.2.4
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ &lt;&lt; ] </TD>
-<TD ALIGN="CENTER">
-FastBack
-</TD>
-<TD>
-previous or up-and-previous section
-</TD>
-<TD>
-1.1
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ Up ] </TD>
-<TD ALIGN="CENTER">
-Up
-</TD>
-<TD>
-up section
-</TD>
-<TD>
-1.2
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ &gt;&gt; ] </TD>
-<TD ALIGN="CENTER">
-FastForward
-</TD>
-<TD>
-next or up-and-next section
-</TD>
-<TD>
-1.3
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [Top] </TD>
-<TD ALIGN="CENTER">
-Top
-</TD>
-<TD>
-cover (top) of document
-</TD>
-<TD>
- &nbsp;
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [Contents] </TD>
-<TD ALIGN="CENTER">
-Contents
-</TD>
-<TD>
-table of contents
-</TD>
-<TD>
- &nbsp;
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [Index] </TD>
-<TD ALIGN="CENTER">
-Index
-</TD>
-<TD>
-concept index
-</TD>
-<TD>
- &nbsp;
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ ? ] </TD>
-<TD ALIGN="CENTER">
-About
-</TD>
-<TD>
-this page
-</TD>
-<TD>
- &nbsp;
-</TD>
-</TR>
-</TABLE>
-<P></P>
-where the <STRONG> Example </STRONG> assumes that the current position
-is at <STRONG> Subsubsection One-Two-Three </STRONG> of a document of
-the following structure:
-<UL>
-<LI> 1. Section One </LI>
-<UL>
-<LI>1.1 Subsection One-One</LI>
-<UL>
-<LI> ... </LI>
-</UL>
-<LI>1.2 Subsection One-Two</LI>
-<UL>
-<LI>1.2.1 Subsubsection One-Two-One
-</LI><LI>1.2.2 Subsubsection One-Two-Two
-</LI><LI>1.2.3 Subsubsection One-Two-Three &nbsp; &nbsp; <STRONG>
-&lt;== Current Position </STRONG>
-</LI><LI>1.2.4 Subsubsection One-Two-Four
-</LI></UL>
-<LI>1.3 Subsection One-Three</LI>
-<UL>
-<LI> ... </LI>
-</UL>
-<LI>1.4 Subsection One-Four</LI>
-</UL>
-</UL>
-
-<HR SIZE=1>
-<BR>
-<FONT SIZE="-1">
-This document was generated
-by <I>Chet Ramey</I> on <I>June, 27 2002</I>
-using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
-"><I>texi2html</I></A>
-
-</BODY>
-</HTML>
diff --git a/readline-4.3.orig/doc/rluserman.info b/readline-4.3.orig/doc/rluserman.info
deleted file mode 100644
index 3fccbd4..0000000
--- a/readline-4.3.orig/doc/rluserman.info
+++ /dev/null
@@ -1,1260 +0,0 @@
-This is rluserman.info, produced by makeinfo version 4.1 from
-/usr/homes/chet/src/bash/readline-src/doc/rluserman.texinfo.
-
-INFO-DIR-SECTION Libraries
-START-INFO-DIR-ENTRY
-* RLuserman: (rluserman). The GNU readline library User's Manual.
-END-INFO-DIR-ENTRY
-
- 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 that need to provide a command line interface.
-
- Copyright (C) 1988-2002 Free Software Foundation, Inc.
-
- Permission is granted to make and distribute verbatim copies of this
-manual provided the copyright notice and this permission notice pare
-preserved on all copies.
-
- Permission is granted to copy and distribute modified versions of
-this manual under the conditions for verbatim copying, provided that
-the entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
- Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be stated in a
-translation approved by the Free Software Foundation.
-
-
-File: rluserman.info, Node: Top, Next: Command Line Editing, Up: (dir)
-
-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 that need to provide a command line interface.
-
-* Menu:
-
-* Command Line Editing:: GNU Readline User's Manual.
-
-
-File: rluserman.info, Node: Command Line Editing, Prev: Top, Up: Top
-
-Command Line Editing
-********************
-
- This chapter describes the basic features of the GNU command line
-editing interface.
-
-* Menu:
-
-* Introduction and Notation:: Notation used in this text.
-* Readline Interaction:: The minimum set of commands for editing a line.
-* Readline Init File:: Customizing Readline from a user's view.
-* Bindable Readline Commands:: A description of most of the Readline commands
- available for binding
-* Readline vi Mode:: A short description of how to make Readline
- behave like the vi editor.
-
-
-File: rluserman.info, Node: Introduction and Notation, Next: Readline Interaction, Up: Command Line Editing
-
-Introduction to Line Editing
-============================
-
- The following paragraphs describe the notation used to represent
-keystrokes.
-
- The text `C-k' is read as `Control-K' and describes the character
-produced when the <k> key is pressed while the Control key is depressed.
-
- The text `M-k' is read as `Meta-K' and describes the character
-produced when the Meta key (if you have one) is depressed, and the <k>
-key is pressed. The Meta key is labeled <ALT> on many keyboards. On
-keyboards with two keys labeled <ALT> (usually to either side of the
-space bar), the <ALT> on the left side is generally set to work as a
-Meta key. The <ALT> key on the right may also be configured to work as
-a Meta key or may be configured as some other modifier, such as a
-Compose key for typing accented characters.
-
- If you do not have a Meta or <ALT> key, or another key working as a
-Meta key, the identical keystroke can be generated by typing <ESC>
-_first_, and then typing <k>. Either process is known as "metafying"
-the <k> key.
-
- The text `M-C-k' is read as `Meta-Control-k' and describes the
-character produced by "metafying" `C-k'.
-
- In addition, several keys have their own names. Specifically,
-<DEL>, <ESC>, <LFD>, <SPC>, <RET>, and <TAB> all stand for themselves
-when seen in this text, or in an init file (*note Readline Init File::).
-If your keyboard lacks a <LFD> key, typing <C-j> will produce the
-desired character. The <RET> key may be labeled <Return> or <Enter> on
-some keyboards.
-
-
-File: rluserman.info, Node: Readline Interaction, Next: Readline Init File, Prev: Introduction and Notation, Up: Command Line Editing
-
-Readline Interaction
-====================
-
- Often during an interactive session you type in a long line of text,
-only to notice that the first word on the line is misspelled. The
-Readline library gives you a set of commands for manipulating the text
-as you type it in, allowing you to just fix your typo, and not forcing
-you to retype the majority of the line. Using these editing commands,
-you move the cursor to the place that needs correction, and delete or
-insert the text of the corrections. Then, when you are satisfied with
-the line, you simply press <RET>. You do not have to be at the end of
-the line to press <RET>; the entire line is accepted regardless of the
-location of the cursor within the line.
-
-* Menu:
-
-* Readline Bare Essentials:: The least you need to know about Readline.
-* Readline Movement Commands:: Moving about the input line.
-* Readline Killing Commands:: How to delete text, and how to get it back!
-* Readline Arguments:: Giving numeric arguments to commands.
-* Searching:: Searching through previous lines.
-
-
-File: rluserman.info, Node: Readline Bare Essentials, Next: Readline Movement Commands, Up: Readline Interaction
-
-Readline Bare Essentials
-------------------------
-
- In order to enter characters into the line, simply type them. The
-typed character appears where the cursor was, and then the cursor moves
-one space to the right. If you mistype a character, you can use your
-erase character to back up and delete the mistyped character.
-
- Sometimes you may mistype a character, and not notice the error
-until you have typed several other characters. In that case, you can
-type `C-b' to move the cursor to the left, and then correct your
-mistake. Afterwards, you can move the cursor to the right with `C-f'.
-
- When you add text in the middle of a line, you will notice that
-characters to the right of the cursor are `pushed over' to make room
-for the text that you have inserted. Likewise, when you delete text
-behind the cursor, characters to the right of the cursor are `pulled
-back' to fill in the blank space created by the removal of the text. A
-list of the bare essentials for editing the text of an input line
-follows.
-
-`C-b'
- Move back one character.
-
-`C-f'
- Move forward one character.
-
-<DEL> or <Backspace>
- Delete the character to the left of the cursor.
-
-`C-d'
- Delete the character underneath the cursor.
-
-Printing characters
- Insert the character into the line at the cursor.
-
-`C-_' or `C-x C-u'
- Undo the last editing command. You can undo all the way back to an
- empty line.
-
-(Depending on your configuration, the <Backspace> key be set to delete
-the character to the left of the cursor and the <DEL> key set to delete
-the character underneath the cursor, like `C-d', rather than the
-character to the left of the cursor.)
-
-
-File: rluserman.info, Node: Readline Movement Commands, Next: Readline Killing Commands, Prev: Readline Bare Essentials, Up: Readline Interaction
-
-Readline Movement Commands
---------------------------
-
- The above table describes the most basic keystrokes that you need in
-order to do editing of the input line. For your convenience, many
-other commands have been added in addition to `C-b', `C-f', `C-d', and
-<DEL>. Here are some commands for moving more rapidly about the line.
-
-`C-a'
- Move to the start of the line.
-
-`C-e'
- Move to the end of the line.
-
-`M-f'
- Move forward a word, where a word is composed of letters and
- digits.
-
-`M-b'
- Move backward a word.
-
-`C-l'
- Clear the screen, reprinting the current line at the top.
-
- Notice how `C-f' moves forward a character, while `M-f' moves
-forward a word. It is a loose convention that control keystrokes
-operate on characters while meta keystrokes operate on words.
-
-
-File: rluserman.info, Node: Readline Killing Commands, Next: Readline Arguments, Prev: Readline Movement Commands, Up: Readline Interaction
-
-Readline Killing Commands
--------------------------
-
- "Killing" text means to delete the text from the line, but to save
-it away for later use, usually by "yanking" (re-inserting) it back into
-the line. (`Cut' and `paste' are more recent jargon for `kill' and
-`yank'.)
-
- If the description for a command says that it `kills' text, then you
-can be sure that you can get the text back in a different (or the same)
-place later.
-
- When you use a kill command, the text is saved in a "kill-ring".
-Any number of consecutive kills save all of the killed text together, so
-that when you yank it back, you get it all. The kill ring is not line
-specific; the text that you killed on a previously typed line is
-available to be yanked back later, when you are typing another line.
-
- Here is the list of commands for killing text.
-
-`C-k'
- Kill the text from the current cursor position to the end of the
- line.
-
-`M-d'
- Kill from the cursor to the end of the current word, or, if between
- words, to the end of the next word. Word boundaries are the same
- as those used by `M-f'.
-
-`M-<DEL>'
- Kill from the cursor the start of the current word, or, if between
- words, to the start of the previous word. Word boundaries are the
- same as those used by `M-b'.
-
-`C-w'
- Kill from the cursor to the previous whitespace. This is
- different than `M-<DEL>' because the word boundaries differ.
-
- Here is how to "yank" the text back into the line. Yanking means to
-copy the most-recently-killed text from the kill buffer.
-
-`C-y'
- Yank the most recently killed text back into the buffer at the
- cursor.
-
-`M-y'
- Rotate the kill-ring, and yank the new top. You can only do this
- if the prior command is `C-y' or `M-y'.
-
-
-File: rluserman.info, Node: Readline Arguments, Next: Searching, Prev: Readline Killing Commands, Up: Readline Interaction
-
-Readline Arguments
-------------------
-
- You can pass numeric arguments to Readline commands. Sometimes the
-argument acts as a repeat count, other times it is the sign of the
-argument that is significant. If you pass a negative argument to a
-command which normally acts in a forward direction, that command will
-act in a backward direction. For example, to kill text back to the
-start of the line, you might type `M-- C-k'.
-
- The general way to pass numeric arguments to a command is to type
-meta digits before the command. If the first `digit' typed is a minus
-sign (`-'), then the sign of the argument will be negative. Once you
-have typed one meta digit to get the argument started, you can type the
-remainder of the digits, and then the command. For example, to give
-the `C-d' command an argument of 10, you could type `M-1 0 C-d', which
-will delete the next ten characters on the input line.
-
-
-File: rluserman.info, Node: Searching, Prev: Readline Arguments, Up: Readline Interaction
-
-Searching for Commands in the History
--------------------------------------
-
- Readline provides commands for searching through the command history
-for lines containing a specified string. There are two search modes:
-"incremental" and "non-incremental".
-
- Incremental searches begin before the user has finished typing the
-search string. As each character of the search string is typed,
-Readline displays the next entry from the history matching the string
-typed so far. An incremental search requires only as many characters
-as needed to find the desired history entry. To search backward in the
-history for a particular string, type `C-r'. Typing `C-s' searches
-forward through the history. The characters present in the value of
-the `isearch-terminators' variable are used to terminate an incremental
-search. If that variable has not been assigned a value, the <ESC> and
-`C-J' characters will terminate an incremental search. `C-g' will
-abort an incremental search and restore the original line. When the
-search is terminated, the history entry containing the search string
-becomes the current line.
-
- To find other matching entries in the history list, type `C-r' or
-`C-s' as appropriate. This will search backward or forward in the
-history for the next entry matching the search string typed so far.
-Any other key sequence bound to a Readline command will terminate the
-search and execute that command. For instance, a <RET> will terminate
-the search and accept the line, thereby executing the command from the
-history list. A movement command will terminate the search, make the
-last line found the current line, and begin editing.
-
- Readline remembers the last incremental search string. If two
-`C-r's are typed without any intervening characters defining a new
-search string, any remembered search string is used.
-
- Non-incremental searches read the entire search string before
-starting to search for matching history lines. The search string may be
-typed by the user or be part of the contents of the current line.
-
-
-File: rluserman.info, Node: Readline Init File, Next: Bindable Readline Commands, Prev: Readline Interaction, Up: Command Line Editing
-
-Readline Init File
-==================
-
- Although the Readline library comes with a set of Emacs-like
-keybindings installed by default, it is possible to use a different set
-of keybindings. Any user can customize programs that use Readline by
-putting commands in an "inputrc" file, conventionally in his home
-directory. The name of this file is taken from the value of the
-environment variable `INPUTRC'. If that variable is unset, the default
-is `~/.inputrc'.
-
- When a program which uses the Readline library starts up, the init
-file is read, and the key bindings are set.
-
- In addition, the `C-x C-r' command re-reads this init file, thus
-incorporating any changes that you might have made to it.
-
-* Menu:
-
-* Readline Init File Syntax:: Syntax for the commands in the inputrc file.
-
-* Conditional Init Constructs:: Conditional key bindings in the inputrc file.
-
-* Sample Init File:: An example inputrc file.
-
-
-File: rluserman.info, Node: Readline Init File Syntax, Next: Conditional Init Constructs, Up: Readline Init File
-
-Readline Init File Syntax
--------------------------
-
- There are only a few basic constructs allowed in the Readline init
-file. Blank lines are ignored. Lines beginning with a `#' are
-comments. Lines beginning with a `$' indicate conditional constructs
-(*note Conditional Init Constructs::). Other lines denote variable
-settings and key bindings.
-
-Variable Settings
- You can modify the run-time behavior of Readline by altering the
- values of variables in Readline using the `set' command within the
- init file. The syntax is simple:
-
- set VARIABLE VALUE
-
- Here, for example, is how to change from the default Emacs-like
- key binding to use `vi' line editing commands:
-
- set editing-mode vi
-
- Variable names and values, where appropriate, are recognized
- without regard to case.
-
- A great deal of run-time behavior is changeable with the following
- variables.
-
- `bell-style'
- Controls what happens when Readline wants to ring the
- terminal bell. If set to `none', Readline never rings the
- bell. If set to `visible', Readline uses a visible bell if
- one is available. If set to `audible' (the default),
- Readline attempts to ring the terminal's bell.
-
- `comment-begin'
- The string to insert at the beginning of the line when the
- `insert-comment' command is executed. The default value is
- `"#"'.
-
- `completion-ignore-case'
- If set to `on', Readline performs filename matching and
- completion in a case-insensitive fashion. The default value
- is `off'.
-
- `completion-query-items'
- The number of possible completions that determines when the
- user is asked whether he wants to see the list of
- possibilities. If the number of possible completions is
- greater than this value, Readline will ask the user whether
- or not he wishes to view them; otherwise, they are simply
- listed. This variable must be set to an integer value
- greater than or equal to 0. The default limit is `100'.
-
- `convert-meta'
- If set to `on', Readline will convert characters with the
- eighth bit set to an ASCII key sequence by stripping the
- eighth bit and prefixing an <ESC> character, converting them
- to a meta-prefixed key sequence. The default value is `on'.
-
- `disable-completion'
- If set to `On', Readline will inhibit word completion.
- Completion characters will be inserted into the line as if
- they had been mapped to `self-insert'. The default is `off'.
-
- `editing-mode'
- The `editing-mode' variable controls which default set of key
- bindings is used. By default, Readline starts up in Emacs
- editing mode, where the keystrokes are most similar to Emacs.
- This variable can be set to either `emacs' or `vi'.
-
- `enable-keypad'
- When set to `on', Readline will try to enable the application
- keypad when it is called. Some systems need this to enable
- the arrow keys. The default is `off'.
-
- `expand-tilde'
- If set to `on', tilde expansion is performed when Readline
- attempts word completion. The default is `off'.
-
- If set to `on', the history code attempts to place point at
- the same location on each history line retrived with
- `previous-history' or `next-history'.
-
- `horizontal-scroll-mode'
- This variable can be set to either `on' or `off'. Setting it
- to `on' means that the text of the lines being edited will
- scroll horizontally on a single screen line when they are
- longer than the width of the screen, instead of wrapping onto
- a new screen line. By default, this variable is set to `off'.
-
- `input-meta'
- If set to `on', Readline will enable eight-bit input (it will
- not clear the eighth bit in the characters it reads),
- regardless of what the terminal claims it can support. The
- default value is `off'. The name `meta-flag' is a synonym
- for this variable.
-
- `isearch-terminators'
- The string of characters that should terminate an incremental
- search without subsequently executing the character as a
- command (*note Searching::). If this variable has not been
- given a value, the characters <ESC> and `C-J' will terminate
- an incremental search.
-
- `keymap'
- Sets Readline's idea of the current keymap for key binding
- commands. Acceptable `keymap' names are `emacs',
- `emacs-standard', `emacs-meta', `emacs-ctlx', `vi', `vi-move',
- `vi-command', and `vi-insert'. `vi' is equivalent to
- `vi-command'; `emacs' is equivalent to `emacs-standard'. The
- default value is `emacs'. The value of the `editing-mode'
- variable also affects the default keymap.
-
- `mark-directories'
- If set to `on', completed directory names have a slash
- appended. The default is `on'.
-
- `mark-modified-lines'
- This variable, when set to `on', causes Readline to display an
- asterisk (`*') at the start of history lines which have been
- modified. This variable is `off' by default.
-
- `mark-symlinked-directories'
- If set to `on', completed names which are symbolic links to
- directories have a slash appended (subject to the value of
- `mark-directories'). The default is `off'.
-
- `match-hidden-files'
- This variable, when set to `on', causes Readline to match
- files whose names begin with a `.' (hidden files) when
- performing filename completion, unless the leading `.' is
- supplied by the user in the filename to be completed. This
- variable is `on' by default.
-
- `output-meta'
- If set to `on', Readline will display characters with the
- eighth bit set directly rather than as a meta-prefixed escape
- sequence. The default is `off'.
-
- `page-completions'
- If set to `on', Readline uses an internal `more'-like pager
- to display a screenful of possible completions at a time.
- This variable is `on' by default.
-
- `print-completions-horizontally'
- If set to `on', Readline will display completions with matches
- sorted horizontally in alphabetical order, rather than down
- the screen. The default is `off'.
-
- `show-all-if-ambiguous'
- This alters the default behavior of the completion functions.
- If set to `on', words which have more than one possible
- completion cause the matches to be listed immediately instead
- of ringing the bell. The default value is `off'.
-
- `visible-stats'
- If set to `on', a character denoting a file's type is
- appended to the filename when listing possible completions.
- The default is `off'.
-
-Key Bindings
- The syntax for controlling key bindings in the init file is
- simple. First you need to find the name of the command that you
- want to change. The following sections contain tables of the
- command name, the default keybinding, if any, and a short
- description of what the command does.
-
- Once you know the name of the command, simply place on a line in
- the init file the name of the key you wish to bind the command to,
- a colon, and then the name of the command. The name of the key
- can be expressed in different ways, depending on what you find most
- comfortable.
-
- In addition to command names, readline allows keys to be bound to
- a string that is inserted when the key is pressed (a MACRO).
-
- KEYNAME: FUNCTION-NAME or MACRO
- KEYNAME is the name of a key spelled out in English. For
- example:
- Control-u: universal-argument
- Meta-Rubout: backward-kill-word
- Control-o: "> output"
-
- In the above example, `C-u' is bound to the function
- `universal-argument', `M-DEL' is bound to the function
- `backward-kill-word', and `C-o' is bound to run the macro
- expressed on the right hand side (that is, to insert the text
- `> output' into the line).
-
- A number of symbolic character names are recognized while
- processing this key binding syntax: DEL, ESC, ESCAPE, LFD,
- NEWLINE, RET, RETURN, RUBOUT, SPACE, SPC, and TAB.
-
- "KEYSEQ": FUNCTION-NAME or MACRO
- KEYSEQ differs from KEYNAME above in that strings denoting an
- entire key sequence can be specified, by placing the key
- sequence in double quotes. Some GNU Emacs style key escapes
- can be used, as in the following example, but the special
- character names are not recognized.
-
- "\C-u": universal-argument
- "\C-x\C-r": re-read-init-file
- "\e[11~": "Function Key 1"
-
- In the above example, `C-u' is again bound to the function
- `universal-argument' (just as it was in the first example),
- `C-x C-r' is bound to the function `re-read-init-file', and
- `<ESC> <[> <1> <1> <~>' is bound to insert the text `Function
- Key 1'.
-
- The following GNU Emacs style escape sequences are available when
- specifying key sequences:
-
- `\C-'
- control prefix
-
- `\M-'
- meta prefix
-
- `\e'
- an escape character
-
- `\\'
- backslash
-
- `\"'
- <">, a double quotation mark
-
- `\''
- <'>, a single quote or apostrophe
-
- In addition to the GNU Emacs style escape sequences, a second set
- of backslash escapes is available:
-
- `\a'
- alert (bell)
-
- `\b'
- backspace
-
- `\d'
- delete
-
- `\f'
- form feed
-
- `\n'
- newline
-
- `\r'
- carriage return
-
- `\t'
- horizontal tab
-
- `\v'
- vertical tab
-
- `\NNN'
- the eight-bit character whose value is the octal value NNN
- (one to three digits)
-
- `\xHH'
- the eight-bit character whose value is the hexadecimal value
- HH (one or two hex digits)
-
- When entering the text of a macro, single or double quotes must be
- used to indicate a macro definition. Unquoted text is assumed to
- be a function name. In the macro body, the backslash escapes
- described above are expanded. Backslash will quote any other
- character in the macro text, including `"' and `''. For example,
- the following binding will make `C-x \' insert a single `\' into
- the line:
- "\C-x\\": "\\"
-
-
-File: rluserman.info, Node: Conditional Init Constructs, Next: Sample Init File, Prev: Readline Init File Syntax, Up: Readline Init File
-
-Conditional Init Constructs
----------------------------
-
- Readline implements a facility similar in spirit to the conditional
-compilation features of the C preprocessor which allows key bindings
-and variable settings to be performed as the result of tests. There
-are four parser directives used.
-
-`$if'
- The `$if' construct allows bindings to be made based on the
- editing mode, the terminal being used, or the application using
- Readline. The text of the test extends to the end of the line; no
- characters are required to isolate it.
-
- `mode'
- The `mode=' form of the `$if' directive is used to test
- whether Readline is in `emacs' or `vi' mode. This may be
- used in conjunction with the `set keymap' command, for
- instance, to set bindings in the `emacs-standard' and
- `emacs-ctlx' keymaps only if Readline is starting out in
- `emacs' mode.
-
- `term'
- The `term=' form may be used to include terminal-specific key
- bindings, perhaps to bind the key sequences output by the
- terminal's function keys. The word on the right side of the
- `=' is tested against both the full name of the terminal and
- the portion of the terminal name before the first `-'. This
- allows `sun' to match both `sun' and `sun-cmd', for instance.
-
- `application'
- The APPLICATION construct is used to include
- application-specific settings. Each program using the
- Readline library sets the APPLICATION NAME, and you can test
- for a particular value. This could be used to bind key
- sequences to functions useful for a specific program. For
- instance, the following command adds a key sequence that
- quotes the current or previous word in Bash:
- $if Bash
- # Quote the current or previous word
- "\C-xq": "\eb\"\ef\""
- $endif
-
-`$endif'
- This command, as seen in the previous example, terminates an `$if'
- command.
-
-`$else'
- Commands in this branch of the `$if' directive are executed if the
- test fails.
-
-`$include'
- This directive takes a single filename as an argument and reads
- commands and bindings from that file. For example, the following
- directive reads from `/etc/inputrc':
- $include /etc/inputrc
-
-
-File: rluserman.info, Node: Sample Init File, Prev: Conditional Init Constructs, Up: Readline Init File
-
-Sample Init File
-----------------
-
- Here is an example of an INPUTRC file. This illustrates key
-binding, variable assignment, and conditional syntax.
-
-
- # This file controls the behaviour of line input editing for
- # programs that use the GNU Readline library. Existing
- # programs include FTP, Bash, and GDB.
- #
- # You can re-read the inputrc file with C-x C-r.
- # Lines beginning with '#' are comments.
- #
- # First, include any systemwide bindings and variable
- # assignments from /etc/Inputrc
- $include /etc/Inputrc
-
- #
- # Set various bindings for emacs mode.
-
- set editing-mode emacs
-
- $if mode=emacs
-
- Meta-Control-h: backward-kill-word Text after the function name is ignored
-
- #
- # Arrow keys in keypad mode
- #
- #"\M-OD": backward-char
- #"\M-OC": forward-char
- #"\M-OA": previous-history
- #"\M-OB": next-history
- #
- # Arrow keys in ANSI mode
- #
- "\M-[D": backward-char
- "\M-[C": forward-char
- "\M-[A": previous-history
- "\M-[B": next-history
- #
- # Arrow keys in 8 bit keypad mode
- #
- #"\M-\C-OD": backward-char
- #"\M-\C-OC": forward-char
- #"\M-\C-OA": previous-history
- #"\M-\C-OB": next-history
- #
- # Arrow keys in 8 bit ANSI mode
- #
- #"\M-\C-[D": backward-char
- #"\M-\C-[C": forward-char
- #"\M-\C-[A": previous-history
- #"\M-\C-[B": next-history
-
- C-q: quoted-insert
-
- $endif
-
- # An old-style binding. This happens to be the default.
- TAB: complete
-
- # Macros that are convenient for shell interaction
- $if Bash
- # edit the path
- "\C-xp": "PATH=${PATH}\e\C-e\C-a\ef\C-f"
- # prepare to type a quoted word --
- # insert open and close double quotes
- # and move to just after the open quote
- "\C-x\"": "\"\"\C-b"
- # insert a backslash (testing backslash escapes
- # in sequences and macros)
- "\C-x\\": "\\"
- # Quote the current or previous word
- "\C-xq": "\eb\"\ef\""
- # Add a binding to refresh the line, which is unbound
- "\C-xr": redraw-current-line
- # Edit variable on current line.
- "\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y="
- $endif
-
- # use a visible bell if one is available
- set bell-style visible
-
- # don't strip characters to 7 bits when reading
- set input-meta on
-
- # allow iso-latin1 characters to be inserted rather
- # than converted to prefix-meta sequences
- set convert-meta off
-
- # display characters with the eighth bit set directly
- # rather than as meta-prefixed characters
- set output-meta on
-
- # if there are more than 150 possible completions for
- # a word, ask the user if he wants to see all of them
- set completion-query-items 150
-
- # For FTP
- $if Ftp
- "\C-xg": "get \M-?"
- "\C-xt": "put \M-?"
- "\M-.": yank-last-arg
- $endif
-
-
-File: rluserman.info, Node: Bindable Readline Commands, Next: Readline vi Mode, Prev: Readline Init File, Up: Command Line Editing
-
-Bindable Readline Commands
-==========================
-
-* Menu:
-
-* Commands For Moving:: Moving about the line.
-* Commands For History:: Getting at previous lines.
-* Commands For Text:: Commands for changing text.
-* Commands For Killing:: Commands for killing and yanking.
-* Numeric Arguments:: Specifying numeric arguments, repeat counts.
-* Commands For Completion:: Getting Readline to do the typing for you.
-* Keyboard Macros:: Saving and re-executing typed characters
-* Miscellaneous Commands:: Other miscellaneous commands.
-
- This section describes Readline commands that may be bound to key
-sequences. Command names without an accompanying key sequence are
-unbound by default.
-
- In the following descriptions, "point" refers to the current cursor
-position, and "mark" refers to a cursor position saved by the
-`set-mark' command. The text between the point and mark is referred to
-as the "region".
-
-
-File: rluserman.info, Node: Commands For Moving, Next: Commands For History, Up: Bindable Readline Commands
-
-Commands For Moving
--------------------
-
-`beginning-of-line (C-a)'
- Move to the start of the current line.
-
-`end-of-line (C-e)'
- Move to the end of the line.
-
-`forward-char (C-f)'
- Move forward a character.
-
-`backward-char (C-b)'
- Move back a character.
-
-`forward-word (M-f)'
- Move forward to the end of the next word. Words are composed of
- letters and digits.
-
-`backward-word (M-b)'
- Move back to the start of the current or previous word. Words are
- composed of letters and digits.
-
-`clear-screen (C-l)'
- Clear the screen and redraw the current line, leaving the current
- line at the top of the screen.
-
-`redraw-current-line ()'
- Refresh the current line. By default, this is unbound.
-
-
-File: rluserman.info, Node: Commands For History, Next: Commands For Text, Prev: Commands For Moving, Up: Bindable Readline Commands
-
-Commands For Manipulating The History
--------------------------------------
-
-`accept-line (Newline or Return)'
- Accept the line regardless of where the cursor is. If this line is
- non-empty, it may be added to the history list for future recall
- with `add_history()'. If this line is a modified history line,
- the history line is restored to its original state.
-
-`previous-history (C-p)'
- Move `back' through the history list, fetching the previous
- command.
-
-`next-history (C-n)'
- Move `forward' through the history list, fetching the next command.
-
-`beginning-of-history (M-<)'
- Move to the first line in the history.
-
-`end-of-history (M->)'
- Move to the end of the input history, i.e., the line currently
- being entered.
-
-`reverse-search-history (C-r)'
- Search backward starting at the current line and moving `up'
- through the history as necessary. This is an incremental search.
-
-`forward-search-history (C-s)'
- Search forward starting at the current line and moving `down'
- through the the history as necessary. This is an incremental
- search.
-
-`non-incremental-reverse-search-history (M-p)'
- Search backward starting at the current line and moving `up'
- through the history as necessary using a non-incremental search
- for a string supplied by the user.
-
-`non-incremental-forward-search-history (M-n)'
- Search forward starting at the current line and moving `down'
- through the the history as necessary using a non-incremental search
- for a string supplied by the user.
-
-`history-search-forward ()'
- Search forward through the history for the string of characters
- between the start of the current line and the point. This is a
- non-incremental search. By default, this command is unbound.
-
-`history-search-backward ()'
- Search backward through the history for the string of characters
- between the start of the current line and the point. This is a
- non-incremental search. By default, this command is unbound.
-
-`yank-nth-arg (M-C-y)'
- Insert the first argument to the previous command (usually the
- second word on the previous line) at point. With an argument N,
- insert the Nth word from the previous command (the words in the
- previous command begin with word 0). A negative argument inserts
- the Nth word from the end of the previous command.
-
-`yank-last-arg (M-. or M-_)'
- Insert last argument to the previous command (the last word of the
- previous history entry). With an argument, behave exactly like
- `yank-nth-arg'. Successive calls to `yank-last-arg' move back
- through the history list, inserting the last argument of each line
- in turn.
-
-
-File: rluserman.info, Node: Commands For Text, Next: Commands For Killing, Prev: Commands For History, Up: Bindable Readline Commands
-
-Commands For Changing Text
---------------------------
-
-`delete-char (C-d)'
- Delete the character at point. If point is at the beginning of
- the line, there are no characters in the line, and the last
- character typed was not bound to `delete-char', then return EOF.
-
-`backward-delete-char (Rubout)'
- Delete the character behind the cursor. A numeric argument means
- to kill the characters instead of deleting them.
-
-`forward-backward-delete-char ()'
- Delete the character under the cursor, unless the cursor is at the
- end of the line, in which case the character behind the cursor is
- deleted. By default, this is not bound to a key.
-
-`quoted-insert (C-q or C-v)'
- Add the next character typed to the line verbatim. This is how to
- insert key sequences like `C-q', for example.
-
-`tab-insert (M-<TAB>)'
- Insert a tab character.
-
-`self-insert (a, b, A, 1, !, ...)'
- Insert yourself.
-
-`transpose-chars (C-t)'
- Drag the character before the cursor forward over the character at
- the cursor, moving the cursor forward as well. If the insertion
- point is at the end of the line, then this transposes the last two
- characters of the line. Negative arguments have no effect.
-
-`transpose-words (M-t)'
- Drag the word before point past the word after point, moving point
- past that word as well. If the insertion point is at the end of
- the line, this transposes the last two words on the line.
-
-`upcase-word (M-u)'
- Uppercase the current (or following) word. With a negative
- argument, uppercase the previous word, but do not move the cursor.
-
-`downcase-word (M-l)'
- Lowercase the current (or following) word. With a negative
- argument, lowercase the previous word, but do not move the cursor.
-
-`capitalize-word (M-c)'
- Capitalize the current (or following) word. With a negative
- argument, capitalize the previous word, but do not move the cursor.
-
-`overwrite-mode ()'
- Toggle overwrite mode. With an explicit positive numeric argument,
- switches to overwrite mode. With an explicit non-positive numeric
- argument, switches to insert mode. This command affects only
- `emacs' mode; `vi' mode does overwrite differently. Each call to
- `readline()' starts in insert mode.
-
- In overwrite mode, characters bound to `self-insert' replace the
- text at point rather than pushing the text to the right.
- Characters bound to `backward-delete-char' replace the character
- before point with a space.
-
- By default, this command is unbound.
-
-
-File: rluserman.info, Node: Commands For Killing, Next: Numeric Arguments, Prev: Commands For Text, Up: Bindable Readline Commands
-
-Killing And Yanking
--------------------
-
-`kill-line (C-k)'
- Kill the text from point to the end of the line.
-
-`backward-kill-line (C-x Rubout)'
- Kill backward to the beginning of the line.
-
-`unix-line-discard (C-u)'
- Kill backward from the cursor to the beginning of the current line.
-
-`kill-whole-line ()'
- Kill all characters on the current line, no matter where point is.
- By default, this is unbound.
-
-`kill-word (M-d)'
- Kill from point to the end of the current word, or if between
- words, to the end of the next word. Word boundaries are the same
- as `forward-word'.
-
-`backward-kill-word (M-<DEL>)'
- Kill the word behind point. Word boundaries are the same as
- `backward-word'.
-
-`unix-word-rubout (C-w)'
- Kill the word behind point, using white space as a word boundary.
- The killed text is saved on the kill-ring.
-
-`delete-horizontal-space ()'
- Delete all spaces and tabs around point. By default, this is
- unbound.
-
-`kill-region ()'
- Kill the text in the current region. By default, this command is
- unbound.
-
-`copy-region-as-kill ()'
- Copy the text in the region to the kill buffer, so it can be yanked
- right away. By default, this command is unbound.
-
-`copy-backward-word ()'
- Copy the word before point to the kill buffer. The word
- boundaries are the same as `backward-word'. By default, this
- command is unbound.
-
-`copy-forward-word ()'
- Copy the word following point to the kill buffer. The word
- boundaries are the same as `forward-word'. By default, this
- command is unbound.
-
-`yank (C-y)'
- Yank the top of the kill ring into the buffer at point.
-
-`yank-pop (M-y)'
- Rotate the kill-ring, and yank the new top. You can only do this
- if the prior command is `yank' or `yank-pop'.
-
-
-File: rluserman.info, Node: Numeric Arguments, Next: Commands For Completion, Prev: Commands For Killing, Up: Bindable Readline Commands
-
-Specifying Numeric Arguments
-----------------------------
-
-`digit-argument (M-0, M-1, ... M--)'
- Add this digit to the argument already accumulating, or start a new
- argument. `M--' starts a negative argument.
-
-`universal-argument ()'
- This is another way to specify an argument. If this command is
- followed by one or more digits, optionally with a leading minus
- sign, those digits define the argument. If the command is
- followed by digits, executing `universal-argument' again ends the
- numeric argument, but is otherwise ignored. As a special case, if
- this command is immediately followed by a character that is
- neither a digit or minus sign, the argument count for the next
- command is multiplied by four. The argument count is initially
- one, so executing this function the first time makes the argument
- count four, a second time makes the argument count sixteen, and so
- on. By default, this is not bound to a key.
-
-
-File: rluserman.info, Node: Commands For Completion, Next: Keyboard Macros, Prev: Numeric Arguments, Up: Bindable Readline Commands
-
-Letting Readline Type For You
------------------------------
-
-`complete (<TAB>)'
- Attempt to perform completion on the text before point. The
- actual completion performed is application-specific. The default
- is filename completion.
-
-`possible-completions (M-?)'
- List the possible completions of the text before point.
-
-`insert-completions (M-*)'
- Insert all completions of the text before point that would have
- been generated by `possible-completions'.
-
-`menu-complete ()'
- Similar to `complete', but replaces the word to be completed with
- a single match from the list of possible completions. Repeated
- execution of `menu-complete' steps through the list of possible
- completions, inserting each match in turn. At the end of the list
- of completions, the bell is rung (subject to the setting of
- `bell-style') and the original text is restored. An argument of N
- moves N positions forward in the list of matches; a negative
- argument may be used to move backward through the list. This
- command is intended to be bound to <TAB>, but is unbound by
- default.
-
-`delete-char-or-list ()'
- Deletes the character under the cursor if not at the beginning or
- end of the line (like `delete-char'). If at the end of the line,
- behaves identically to `possible-completions'. This command is
- unbound by default.
-
-
-File: rluserman.info, Node: Keyboard Macros, Next: Miscellaneous Commands, Prev: Commands For Completion, Up: Bindable Readline Commands
-
-Keyboard Macros
----------------
-
-`start-kbd-macro (C-x ()'
- Begin saving the characters typed into the current keyboard macro.
-
-`end-kbd-macro (C-x ))'
- Stop saving the characters typed into the current keyboard macro
- and save the definition.
-
-`call-last-kbd-macro (C-x e)'
- Re-execute the last keyboard macro defined, by making the
- characters in the macro appear as if typed at the keyboard.
-
-
-File: rluserman.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up: Bindable Readline Commands
-
-Some Miscellaneous Commands
----------------------------
-
-`re-read-init-file (C-x C-r)'
- Read in the contents of the INPUTRC file, and incorporate any
- bindings or variable assignments found there.
-
-`abort (C-g)'
- Abort the current editing command and ring the terminal's bell
- (subject to the setting of `bell-style').
-
-`do-uppercase-version (M-a, M-b, M-X, ...)'
- If the metafied character X is lowercase, run the command that is
- bound to the corresponding uppercase character.
-
-`prefix-meta (<ESC>)'
- Metafy the next character typed. This is for keyboards without a
- meta key. Typing `<ESC> f' is equivalent to typing `M-f'.
-
-`undo (C-_ or C-x C-u)'
- Incremental undo, separately remembered for each line.
-
-`revert-line (M-r)'
- Undo all changes made to this line. This is like executing the
- `undo' command enough times to get back to the beginning.
-
-`tilde-expand (M-~)'
- Perform tilde expansion on the current word.
-
-`set-mark (C-@)'
- Set the mark to the point. If a numeric argument is supplied, the
- mark is set to that position.
-
-`exchange-point-and-mark (C-x C-x)'
- Swap the point with the mark. The current cursor position is set
- to the saved position, and the old cursor position is saved as the
- mark.
-
-`character-search (C-])'
- A character is read and point is moved to the next occurrence of
- that character. A negative count searches for previous
- occurrences.
-
-`character-search-backward (M-C-])'
- A character is read and point is moved to the previous occurrence
- of that character. A negative count searches for subsequent
- occurrences.
-
-`insert-comment (M-#)'
- Without a numeric argument, the value of the `comment-begin'
- variable is inserted at the beginning of the current line. If a
- numeric argument is supplied, this command acts as a toggle: if
- the characters at the beginning of the line do not match the value
- of `comment-begin', the value is inserted, otherwise the
- characters in `comment-begin' are deleted from the beginning of
- the line. In either case, the line is accepted as if a newline
- had been typed.
-
-`dump-functions ()'
- Print all of the functions and their key bindings to the Readline
- output stream. If a numeric argument is supplied, the output is
- formatted in such a way that it can be made part of an INPUTRC
- file. This command is unbound by default.
-
-`dump-variables ()'
- Print all of the settable variables and their values to the
- Readline output stream. If a numeric argument is supplied, the
- output is formatted in such a way that it can be made part of an
- INPUTRC file. This command is unbound by default.
-
-`dump-macros ()'
- Print all of the Readline key sequences bound to macros and the
- strings they output. If a numeric argument is supplied, the
- output is formatted in such a way that it can be made part of an
- INPUTRC file. This command is unbound by default.
-
-`emacs-editing-mode (C-e)'
- When in `vi' command mode, this causes a switch to `emacs' editing
- mode.
-
-`vi-editing-mode (M-C-j)'
- When in `emacs' editing mode, this causes a switch to `vi' editing
- mode.
-
-
-File: rluserman.info, Node: Readline vi Mode, Prev: Bindable Readline Commands, Up: Command Line Editing
-
-Readline vi Mode
-================
-
- While the Readline library does not have a full set of `vi' editing
-functions, it does contain enough to allow simple editing of the line.
-The Readline `vi' mode behaves as specified in the POSIX 1003.2
-standard.
-
- In order to switch interactively between `emacs' and `vi' editing
-modes, use the command `M-C-j' (bound to emacs-editing-mode when in
-`vi' mode and to vi-editing-mode in `emacs' mode). The Readline
-default is `emacs' mode.
-
- When you enter a line in `vi' mode, you are already placed in
-`insertion' mode, as if you had typed an `i'. Pressing <ESC> switches
-you into `command' mode, where you can edit the text of the line with
-the standard `vi' movement keys, move to previous history lines with
-`k' and subsequent lines with `j', and so forth.
-
-
-
-Tag Table:
-Node: Top1208
-Node: Command Line Editing1604
-Node: Introduction and Notation2218
-Node: Readline Interaction3837
-Node: Readline Bare Essentials5025
-Node: Readline Movement Commands6807
-Node: Readline Killing Commands7765
-Node: Readline Arguments9675
-Node: Searching10712
-Node: Readline Init File12856
-Node: Readline Init File Syntax13918
-Node: Conditional Init Constructs24802
-Node: Sample Init File27328
-Node: Bindable Readline Commands30513
-Node: Commands For Moving31564
-Node: Commands For History32414
-Node: Commands For Text35273
-Node: Commands For Killing37988
-Node: Numeric Arguments39940
-Node: Commands For Completion41069
-Node: Keyboard Macros42602
-Node: Miscellaneous Commands43162
-Node: Readline vi Mode46512
-
-End Tag Table
diff --git a/readline-4.3.orig/doc/rluserman.ps b/readline-4.3.orig/doc/rluserman.ps
deleted file mode 100644
index b46417a..0000000
--- a/readline-4.3.orig/doc/rluserman.ps
+++ /dev/null
@@ -1,2001 +0,0 @@
-%!PS-Adobe-2.0
-%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software
-%%Title: rluserman.dvi
-%%Pages: 24
-%%PageOrder: Ascend
-%%BoundingBox: 0 0 612 792
-%%EndComments
-%DVIPSWebPage: (www.radicaleye.com)
-%DVIPSCommandLine: dvips -D 300 -t letter -o rluserman.ps rluserman.dvi
-%DVIPSParameters: dpi=300, compressed
-%DVIPSSource: TeX output 2002.06.27:1354
-%%BeginProcSet: texc.pro
-%!
-/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
-N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
-mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
-0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
-landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
-mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
-matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
-exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
-statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
-N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
-/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
-/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
-array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
-df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
-definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
-}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
-B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
-1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3
-1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
-0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
-sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
-rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
-gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
-/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
-/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
-A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
-get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
-ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
-fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
-{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
-chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
-1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
-forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
-/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
-}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
-bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
-mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
-SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
-userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
-1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
-index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
-/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
-/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
-(LaserWriter 16/600)]{A length product length le{A length product exch 0
-exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
-end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
-grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
-imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
-exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
-fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
-delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
-B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
-p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
-rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
-
-%%EndProcSet
-TeXDict begin 40258431 52099146 1000 300 300 (rluserman.dvi)
-@start
-%DVIPSBitmapFont: Fa cmbxti10 14.4 1
-/Fa 1 47 df<120E123FEA7F80A212FFA21300127E123C0909798815>46
-D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fb cmbx12 13.14 46
-/Fb 46 122 df<123C127E12FFA4127E123C08087C8711>46 D<131C133C13FC12FFA212
-00B3AA387FFFFCA216237CA21F>49 D<48B4FC000713C0381E07F0383803F8386001FC38
-7C00FE12FE14FF147FA2127C003813FFC7FC14FEA2EB01FC14F8EB03F0EB07E01480EB0F
-00131E5B1370EBE003EA01C038038007380700061206380FFFFE5A5A4813FCB5FCA21823
-7DA21F>I<48B4FC000713E0381E03F0383801F8003C13FC387E00FEA3123EEA1C010000
-13FCA2EB03F8EB07F0EB0FC03801FF00A2380007E0EB01F014F8EB00FC14FE14FFA21210
-127C12FEA214FEA2387C01FC007013F8383E07F0380FFFC00001130018237DA21F>I<14
-381478A214F81301130313071306130C131C13381330136013E0EA01C01380EA03005A12
-0E5A12185A12705AB612C0A2390001F800A790387FFFC0A21A237EA21F>I<0018130C00
-1F137CEBFFF814F014E014C01480EBFC000018C7FCA513FF001B13E0381F03F0381C00F8
-000813FCC7127EA3147FA2127812FCA3147E5A006013FC1270383801F8381E07E03807FF
-C03801FE0018237DA21F>I<EB1FC0EB7FF03801F0383803E00C3807803E000F137EEA1F
-005AA2007E133C1400A338FE3FC0EB7FF0EB80F800FF13FCEB007C147E5A147FA4127EA4
-003E137E123F6C137C380F80F83807C1F03803FFC038007F0018237DA21F>I<1230123C
-003FB512C0A215804814005C5C38600018A200E05B485B5CC6485AA249C7FC1306130EA2
-5BA2133CA25BA213F8A41201A66C5A13601A257DA41F>I<EBFF80000313E0380F01F838
-1C007C48133C141E1278A2127C127E387F803C13E0383FF878381FFDF0EBFFC07E000313
-E014F8000F13FCEA1E1F383C07FEEA7803EB00FF48133F141F140FA3140E1278141C6C13
-38381F80F03807FFE00001130018237DA21F>I<141CA2143EA3147FA24A7EA39038019F
-C0A29038031FE0140F01077FEB0607A2010C7F1403011C7FEB1801A2496C7EA2017FB5FC
-A29039E0007F8049133FA2484880151F00038190C7120FA2486E7ED8FFF090B51280A229
-257EA42E>65 D<B612E015FC3903F0007FED3F80ED1FC0ED0FE0A216F0A21507150FA216
-E0151F16C0ED7F80913801FE0090B512F815FF9039F0003FC0ED0FE0ED07F016F8150316
-FCA616F81507ED0FF0ED1FE0ED7FC0B7120015F826257EA42C>I<9138FF8008010FEBF0
-1890393FC03C789039FE0006F8D801F81303484813014848130048481478121F48481438
-A2007F151890C8FCA2481500A97E16187F123FA26C6C1430120F6C6C14606C6C14C06C6C
-EB0180D800FEEB070090383FC01E90380FFFF8010013C025257DA42C>I<B7FCA23903F8
-007FED0F8015071503A21501A3ED00C01406A21600A2140E141EEBFFFEA2EBF81E140E14
-06A21660A291C7FC16C0A415011503A2ED0F80153FB7FCA223257EA428>69
-D<B612FEA23803F800151F8181A281A3ED01801403A292C7FCA25C5C90B5FCA2EBF80F80
-80A491C8FCAAB512F0A221257EA427>I<B500E0B512E0A23B03F80003F800AF90B6FCA2
-9038F80003B0B500E0B512E0A22B257EA430>72 D<B512E0A23803F800B3AFB512E0A213
-257EA417>I<B539E007FF80A2D803F8C7EA780016605E4B5A0307C7FC150E15185D5D5D
-EC03804AC8FC140E141F4A7E147FECDFC09038FB8FE09038FF0FF0EBFC07496C7E816E7E
-1400157F82153F6F7E6F7E8215076F7E82B539E03FFFC0A22A257EA430>75
-D<B512F0A2D803F8C7FCB3A31503A31506A3150EA2151E153E157CEC03FCB6FCA220257E
-A425>I<D8FFF8EDFFF86D5C0003EEFE00017EEC037EA36D1406A26D6C130CA26D6C1318
-A26D6C1330A36D6C1360A26D6C13C0A2903900FC0180A291387E0300A3EC3F06A2EC1F8C
-A2EC0FD8A2EC07F0A36E5AEA07803CFFFC01C01FFFF8A235257EA43A>I<D8FFF8903807
-FFE07FD803FE9038003C006D14187F6D7E6D7E806D7E6D7E13036D7E6D7E80EC7F80EC3F
-C0141FEC0FE015F0EC07F8EC03FC1401EC00FE157F1698ED3FD8ED1FF8150F15071503A2
-150115001678486C1438D8FFFC1418A22B257EA430>I<B67E15F83903F801FEEC007F6F
-7E6F7EA282A55EA24B5A4BC7FCEC01FE90B512F815C09038F803F06E7E6E7E157EA2157F
-A482A31760ED3FC017C0ED1FE1B539E00FFF80923801FE002B257EA42E>82
-D<01FF1380000713E3380F80F7381E001F48130F481307140312F81401A27E91C7FCB4FC
-EA7FE013FE383FFFE014F86C13FE00077F6C1480C67E010313C0EB003FEC0FE01407A200
-C01303A315C07E6C13076C14806CEB0F0038FFC03E38E3FFF838803FE01B257DA422>I<
-007FB612F8A2397E00FE010078EC00780070153800601518A200E0151C160C5AA4C71400
-B3A390B512FEA226247EA32B>I<B539C001FFE0A2D807F8C7EA1C006C6C141816386C6C
-14306C6C5C16E06D6C5B6D6C485A1503D91FE090C7FC90380FF006150E903807F80C6D6C
-5A15386D6C5A903800FF6015E06E5A6E5AAE90380FFFFCA22B257FA42E>89
-D<EA07FF001F13E0383E03F0383F00F880147E121EC7FCA3EB1FFE3803FE7EEA0FC0EA1F
-00123E127E5AA314BEEA7E01383F073E391FFE1FE03807F00F1B187E971E>97
-D<EAFFC0A2120FACEBC1FCEBCFFF9038FC0FC09038F007E09038C003F0A2EC01F8A215FC
-A815F8A2EC03F013E09038F007E090381C1F80390E0FFF00380C03F81E267FA522>I<EB
-7FE03803FFF83807C07C381F80FC13005A007E1378140012FEA8127E127F6C130CEA1F80
-EBC0183807E0703803FFE038007F0016187E971B>I<ECFFC0A2140FAC137F3803FFCF38
-0FE0FF381F803F383F000FA2127EA212FEA8127EA27E141F381F803F380FC0EF3903FFCF
-FC3800FE0F1E267EA522>I<137F3803FFC03807C1F0380F80F8EA1F0048137C127E147E
-12FEA2B512FEA248C7FCA3127EA214067E6C130C380F80183807E0703803FFE038007F80
-17187E971C>I<EB1FC0EB7FF0EA01F83803E1F8120713C1380FC0F01400A7B5FCA2EA0F
-C0B3A2EAFFFEA215267EA513>I<3901FF07C00007EBDFE0380F83F1EA1F01393E00F800
-007E7FA6003E5B6C485A380F83E0EBFFC0001190C7FC0030C8FCA21238123C383FFFE06C
-13FC806C7F481480383C003F48EB0FC000F81307A4007CEB0F806CEB1F00381F807E3807
-FFF8C613C01B247E971F>I<EAFFC0A2120FAC14FE9038C3FF809038CE0FC013D89038D0
-07E013E0A213C0AF39FFFC7FFEA21F267EA522>I<120FEA1F80EA3FC0A4EA1F80EA0F00
-C7FCA7EA7FC0A2120FB3A2EAFFF8A20D277EA611>I<EAFFC0A2120FACEC1FF0A2EC0780
-EC0E005C14305CEBC1C0EBC38013C713DFEBFFC0EBE7E0EBC3F0138180EB80FC147E80A2
-EC1F80EC0FC039FFF83FF8A21D267FA520>107 D<EAFFC0A2120FB3B0EAFFFCA20E267E
-A511>I<26FF80FE137F903A83FF81FFC03B0F8E0FC707E0019813CC903A9007E803F001
-A013F0A201C013E0AF3BFFFC7FFE3FFFA230187E9733>I<38FF80FE903883FF80390F8E
-0FC0139890389007E013A0A213C0AF39FFFC7FFEA21F187E9722>I<EB7F803803FFF038
-07C0F8381F807E48487EA2007EEB1F80A200FE14C0A8007E1480A26CEB3F00A2381F807E
-6C6C5A3803FFF038007F801A187E971F>I<38FFC1FCEBCFFF390FFC1FC09038F007E001
-C013F0140315F8140115FCA8EC03F8A215F0EBE0079038F00FE09038DC1F809038CFFF00
-EBC3F801C0C7FCA9EAFFFCA21E237F9722>I<38FF83E0EB8FF8380F8C7CEB90FC13B013
-A01478EBE0005BAEEAFFFEA216187F9719>114 D<3807F8C0EA1FFFEA3C07EA7001EAF0
-00A300FC1300B47EEA7FFC7F383FFF80000F13C0120338001FE01303EAC001A212E014C0
-EAF00338FC078038EFFF00EAC3FC13187E9718>I<13C0A41201A312031207120F121FB5
-12C0A2380FC000AC1460A63807E0C013E13801FF8038007E0013237FA218>I<39FFC07F
-E0A2000F1307B0140FA200071317EBE0673903FFC7FE38007F071F187E9722>I<39FFF8
-0FF8A2390FC001C015803907E00300A26D5A00031306EBF80E0001130C13FC00005B13FE
-EB7E30A26D5AA214E06D5AA26D5AA26DC7FCA21D187F9720>I<39FFF83FF0A2390FC00F
-003807E00E6C6C5A6D5A6C6C5A00001360EB7EC06D5AA2131F6D7E497E80EB33F81361EB
-E0FC3801C07E3803807F3907003F8048131F39FFC07FF8A21D187F9720>120
-D<39FFF80FF8A2390FC001C015803907E00300A26D5A00031306EBF80E0001130C13FC00
-005B13FEEB7E30A26D5AA214E06D5AA26D5AA26DC7FCA21306A25B1230EA781CEAFC185B
-1370EA68E0EA7FC0001FC8FC1D237F9720>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fc cmsl10 10.95 40
-/Fc 40 122 df<EAFFF0A20C027E8A0F>45 D<1408140C141C143CA2147C147E149EA2EB
-011EA21302801304A21308A20110138014071320A2EB7FFF90384007C0EB8003A2EA0100
-A21202EC01E01206001F130339FF801FFE1F207F9F22>65 D<0007B5FC3900F803C09038
-7801E0EC00F04913F8A515F03801E001EC03E015C0EC0F809038FFFE009038E00F803903
-C003C0EC01E015F0A21400A2485A1401A215E01403EC07C0390F000F80EC3E00B512F01D
-1F7E9E20>I<ECFE02903807018690381C004E0170133E49131E4848131C4848130C1207
-48C7FC5A121E003E1408003C1400127CA45AA4127815101520A27E1540001C14806CEB01
-006C13023803800C3800E030EB3FC01F217C9F21>I<0007B57E3900F801E09038780070
-81497F151E150E150FA348481480A6484814005DA3151E153E4848133C5DA25D4A5A4A5A
-260F000FC7FC143CB512F0211F7E9E23>I<0007B512FC3900F8007C0178131C150C5B15
-04A414043901E00800A31438EBFFF8EBE0383803C010A4EC00081510485AA21520A21560
-15C0380F00011407B612801E1F7E9E1F>I<0007B512F83900F800780178133815185B15
-08A53901E00800A314181438EBFFF83803C0301410A491C7FC485AA648C8FC7FEAFFFC1D
-1F7E9E1E>I<3A07FF83FFC03A00F8007C000178133CA2495BA648485BA490B5FCEBE000
-4848485AA64848485AA64848485A01807F39FFF07FF8221F7E9E22>72
-D<3807FF803800F8001378A25BA6485AA6485AA6485AA648C7FC7FEAFFF0111F7E9E10>
-I<3A07FF803FE03A00F8001F000178130C5D4913205D5D4AC7FC1402140848485A5C1460
-14F013E1EBE4F83803C878EBD07CEBE03CEBC03E141E141F48487E81140781140381380F
-00016D487E39FFF00FFE231F7E9E23>75 D<3807FFE0D800FCC7FC1378A25BA6485AA648
-5AA41580EC0100EA0780A25C14021406140E380F001E147CB512FC191F7E9E1C>I<D807
-F8EB7FC0D8007CEB1F00150C015E1304019E5B138FA2EB8780A2EB83C0D801035BEB01E0
-A2EB00F0A2147800025C143CA2141EA2140F485CEC07C0A21403A21401000C5C001E1300
-B47E221F7E9E22>78 D<EB01FCEB0E0790383801C090387000E0484813F048481378485A
-153C48C7FC5A001E143E123E123C127CA448147CA3157815F81278EC01F0007C14E01403
-003C14C0001CEB0780001EEB0F006C131E380780383801C0E038007F801F217C9F23>I<
-0007B5FC3900F803C090387800F015785B157CA41578484813F815F0EC01E0EC03C0EC0F
-00EBFFFCD803C0C7FCA6485AA648C8FC7FEAFFF81E1F7E9E1F>I<3807FFFE3900F80780
-90387801E0EC00F05B15F8A415F03801E00115E0EC03C0EC0780EC1E00EBFFF03803C038
-80141E140EA2140F48485AA51501D80F0013029038800F8239FFF8078CC7EA01F020207E
-9E22>82 D<EB1F82EB7066EBC01E3801800EEA030048130C00061304120EA3000F1300A2
-7FEA07F013FF6C13C06C13E038003FF0EB03F813001478143CA200401338A31430006013
-70146000F013C038E8018038C60300EA81FC17217E9F19>I<003FB512F0383C07800030
-1430126039400F0010A212C01280A3D8001E1300A65BA65BA65B7F383FFFE01C1F7A9E21
->I<39FFF00FF8391F0003E06CEB01801400001EEB0100A6481302A6485BA600705BA25C
-A200785B1238001813C06C48C7FCEA0706EA01F81D20799E22>I<3BFFF07FF81FF03B1F
-000FC007C0001E903907800380001FED01006C1502140F5EEC17C002135B142301805C00
-0713435E14C3913883E0401481D981015B13C1D803C213E193C7FC13C415F2EBC80015F4
-EA01F015F85B5D5B15605B000014402C207A9E2F>87 D<EA07F8EA0C0CEA1E061307121C
-1200A313FFEA07C7EA1E07EA3C0E127800F01310A3131EEB2E2038784F40381F87801414
-7D9317>97 D<1207123F120F7EA2120EA65A137CEA1D83381E0180001C13C0EB00E05A14
-F0A5387001E0A214C013031480EB0700EAE80EEACC38EA83E014207B9F19>I<13FEEA03
-83380E0780121C0038130090C7FC12785AA45AA37E5BEA70026C5AEA1C18EA07E011147D
-9314>I<13F8EA070EEA0E07381C038012381278127012F0B5FC00F0C7FCA25AA46C5AEA
-7002EA3004EA1C18EA07E011147D9314>101 D<EB07C0EB1C60EB30F01360EBE0E0EBC0
-001201A5485AEA3FFCEA0380A448C7FCA6120EA65A121EEAFFC014207F9F0E>I<140EEB
-3E11EBE1A33801C1C2380381E0EA07801301120FA3380703C01480EB8700EA04FC48C7FC
-A21218121CEA0FFF14C014E0381800F04813305A5AA3006013606C13C0381C0700EA07FC
-181F809417>I<EA01C0EA03E0A213C0EA0180C7FCA6EA0380121F12071203A2EA0700A6
-120EA65A121EEAFF800B1F7F9E0C>105 D<13E0120712011200A2485AA6485AEB81FCEB
-80F014C0EB81801400EA07045B13181338137C131C120E7FA2130F7F1480EA1C03381E07
-C038FF8FF016207E9F18>107 D<13E0120712011200A2EA01C0A6EA0380A6EA0700A612
-0EA65A121EEAFF800B207F9F0C>I<390387C07C391F9861863907A072073903C03403EB
-80380007EB7807EB0070A5000EEBE00EA64848485A001EEBE01E3AFFCFFCFFC022147E93
-26>I<38038F80381F90E0EA07A03803C0601380000713E01300A5380E01C0A6381C0380
-001E13C038FF8FF014147E9319>I<13FCEA0387380E0180381C00C04813E0A24813F012
-F0A438E001E0A214C0130300F0138038700700EA380E6C5AEA07E014147D9317>I<EBE3
-E03807EC383801F01C6C487E140F48487E1580A53903800F00A2140E141E141C5C380740
-70EB61C0011FC7FC90C8FCA3120EA4121EEAFFC0191D809319>I<EBFC2038038260EA07
-02381E01E0123C003813C0127812F0A438E00380A212F0A21307127038380F00EA1C37EA
-07C7EA0007A3130EA4131EEBFFC0131D7D9318>I<EA038E381FB380EA07C71203EB8300
-EA078090C7FCA5120EA65A121EEAFFC011147E9312>I<EA01F9EA0607EA080312181301
-EA3802EA3C00121F13F0EA07FCEA01FEEA001FEA40071303A212601306EAF004EAC818EA
-87E010147F9312>I<1380EA0100A35A5A5A121EEAFFF8EA0E00A45AA65A1310A41320A2
-EA1840EA0F800D1C7C9B12>I<381C0380EAFC1FEA3C07EA1C03A238380700A6EA700EA4
-131EA25BEA305E381F9F8011147B9319>I<38FF83F8381E00E0001C13C01480121E380E
-01005B13025B12075BA25BEA039013A013E05B5B120190C7FC15147C9318>I<381FF0FF
-3803C0780001137014403800E0C0EBE180EB73001376133CA2131C132E134E1387EA0107
-380203801204380C01C0383C03E038FE07FC18147F9318>120 D<390FF83F803901E00E
-00EBC00C140813E000005B143014205C13705CA20171C7FC1339133A133E133C13381318
-1310A25BA25BEA70C0EAF08000F1C8FC12E61278191D809318>I
-E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fd cmti10 10.95 8
-/Fd 8 117 df<EC3FE0ECE010903801803801031378A290380700301500A3130EA390B5
-12E0EB0E0090381C01C0A4EC03801338A3EC0700A2137801701310EC0E20A313609038E0
-0640EC038091C7FC5BA21201EA3180127948C8FC1262123C1D29829F1A>12
-D<127012F8A212F012E005057B840E>46 D<EB3C60EBE2703801C1E0EA0380EA07005A38
-0E01C0121EA3383C0380A4EB0700A2EA1C0F1317EA0C2EEA03CEEA000EA25BA21230EA78
-38485AEA60E0EA3F80141D7E9315>103 D<13C0EA01E0A213C0C7FCA7120E12131223EA
-4380EA4700A21287120EA35AA3EA38401380A21270EA31001232121C0B1F7C9E0E>105
-D<381C0F80382630C0384740601380EB0070A2008E13E0120EA3381C01C0A3EB03840038
-1388A2EB0708EB031000701330383001C016147C931A>110 D<EA1C1EEA266138278380
-EA47871307EB0300008EC7FC120EA35AA45AA45A123011147C9313>114
-D<13FCEA0302EA0601EA0C03130713061300EA0F8013F0EA07F8EA03FCEA003E130E1270
-EAF00CA2EAE008EA4010EA2060EA1F8010147D9313>I<EA018013C0EA0380A4EA0700A2
-EAFFF0EA0700120EA45AA45AA31320EA7040A21380A2EA3100121E0C1C7C9B0F>I
-E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fe cmr8 8 26
-/Fe 26 118 df<126012F0A212701210A21220A21240A2040A7D960A>39
-D<EAFF80A2090280870C>45 D<1206120E12FE120EB1EAFFE00B157D9412>49
-D<13101338A3135CA3138EA3EA0107A238020380A33807FFC0EA0401A2380800E0A20018
-13F0123838FE03FE17177F961A>65 D<EAFFFE381C0380EB00E014601470A414E0EB01C0
-381FFF8014C0381C00E0147014301438A4147014E0EB01C0B5120015177F9619>I<EBFC
-1038038330380E00B0481370481330123000701310126012E01400A51410126012700030
-132012386C13406C138038038300EA00FC14177E9619>I<B5FC381C01C0EB00E0143014
-381418141C140C140EA7140C141CA2143814301460EB01C0B5120017177F961B>I<B512
-E0EA1C00146014201410A3EB0400A3130CEA1FFCEA1C0C13041408A2130014181410A214
-3014F0B5FC15177F9618>I<B512E0EA1C00146014201410A3EB0400A3130CEA1FFCEA1C
-0C1304A390C7FCA6EAFFC014177F9617>I<EAFFC0001CC7FCAD1420A31460A2144014C0
-1303B5FC13177F9616>76 D<EAFFFE381C0380EB00C014601470A4146014C0EB0380381F
-FE00001CC7FCAAB47E14177F9618>80 D<EAFFFC381C0380EB00C014E01470A414E014C0
-EB0380381FFE00381C0780EB01C0EB00E0A514E1A2147238FF803C18177F961A>82
-D<EA0FC4EA302CEA601CEA400CEAC004A3EAE0001270127FEA3FE0EA0FF8EA01FCEA001C
-130E13061280A3EAC004EAE008EAD810EA87E00F177E9614>I<387FFFF8386038180040
-1308A200801304A300001300AF3803FF8016177F9619>I<12FCA212C0B3AB12FCA20621
-7D980A>91 D<EA3FC0EA70601330EA20381200EA03F8EA1E3812301270EAE039A21379EA
-70FFEA1F1E100E7F8D12>97 D<EA07F0EA18381230EA7010EA600012E0A41260EA700812
-30EA1830EA07C00D0E7F8D10>99 D<EA0FC0EA1860EA3030EA7038EAE018EAFFF8EAE000
-A31260EA7008EA3010EA1830EA07C00D0E7F8D10>101 D<1203EA0780A2EA0300C7FCA5
-EA1F801203AF1243EAE30012E7127C091D82960B>106 D<12F81238A8133E1338133013
-4013801239EA3FC0EA39E0123813F01378133CA2EAFE7F10177F9613>I<EAF8F8EA3B1C
-EA3C0E1238AA38FE3F80110E7F8D14>110 D<EAF9F0EA3E1CEA380613077F1480A41400
-5B130EEA3E1CEA39F00038C7FCA512FE11147F8D14>112 D<EAF9E0EA3A70123CEA3820
-1300A9B4FC0C0E7F8D0E>114 D<EA1F40EA60C0EAC040A2EAE000B4FCEA7F80EA1FC0EA
-01E0EA8060A212C0EAE0C0EA9F000B0E7F8D0E>I<1208A31218A21238EAFFC0EA3800A7
-1340A4EA1C80EA0F000A147F930E>I<EAF83EEA380EAA131EEA1C2E3807CF80110E7F8D
-14>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Ff cmsy9 9 2
-/Ff 2 106 df<13801201EA0300A31206A25AA35AA35AA25AA35AA21260A37EA27EA37E
-A37EA27EA3EA0180120009267D9B0F>104 D<12C0A21260A37EA27EA37EA37EA27EA3EA
-0180A2EA0300A31206A25AA35AA35AA25AA35AA209267E9B0F>I
-E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fg cmsltt10 10.95 29
-/Fg 29 122 df<1206120FEA1F80120FA21203EA0700A25A120E123C127C12F01260090E
-769B18>39 D<387FFFC0B512E0A26C13C013047C8F18>45 D<133E13FF000313803807C3
-C0EA0F01000E13E0EA1C00123C003813F014705AA34813E0A4EB01C0A2130300F01380EA
-7007EB0F00EA781E6C5AEA1FF85BEA07C0141C7C9B18>48 D<13181338A2137813F81203
-120F137012041200A413E0A6EA01C0A6EA7FFE12FF127F0F1C7B9B18>I<EB3E18EBFFB8
-4813F8EA07C1EB8078EA0E00121E001C137048133014005AA35AA614C0EA7001A2130338
-380780383C0F00EA1FFE6C5AEA03F0151C7C9B18>67 D<3807FFC014E014F03801C0F814
-78143C141CEA0380141EA2140EA33807001CA4143C1438120E147014F0EB01E0EB03C013
-07387FFF8038FFFE00EA7FF8171C7F9B18>I<0007B5FC5A7E3801C007A3140638038000
-A2EB818014C0A213FF481380A21303A2140090C7FC120E140C141CA4387FFFF8B5FC7E18
-1C7F9B18>I<EB1FF8EB3FFCEB1FF8EB01C0A4EB0380A6EB0700A6130EA2124012E06C5A
-EAE03CEAFFF86C5AEA1FC0161C7C9B18>74 D<EA07FC487E6C5AEA01C0A4485AA648C7FC
-A6120E14301470A4B512E0A3141C7E9B18>76 D<3907E01F80000FEB3FC0000714803903
-B02E00146EA214CE380730DC1331149CA21333141C000E5B13371336133E133C131848C6
-5AA638FE03F800FF7F00FE5B1A1C7F9B18>I<126012F0A37E1278A3127C123CA3123E12
-1EA3121F7EA313801207A313C01203A413E01201A313F0120013600C24789F18>92
-D<387FFFC0B512E0A26C13C013047E7F18>95 D<EA03FC48B4FC4813801303380601C012
-00A2137FEA07FF121FEA3F813878038012F012E0A21307EA701F387FFFF0EA3FFBEA0FE1
-14147D9318>97 D<127EA3120EA45A137CEA1DFF001F13801383381E01C0123CEB00E012
-38A4387801C0A2EB0380A2EB0F00EA7C1FEAFFFCEAEFF8EA63E0131C7C9B18>I<EB07E0
-A31300A4EB01C0EA01F1EA07FDEA0FFFEA1E0FEA3C0738780380127012E0A4EB0700A25B
-5B6C5AEA787F383FFFC0381FEFE0380F87C0131C7C9B18>100 D<13F8EA07FE487E381F
-0780EA3C03387801C0127012E0A2B5FCA2148000E0C7FCA213033870078038780F00EA3F
-FE6C5AEA07F012147B9318>I<EB01F8EB07FC131FEB1E3CEB38181400A25B381FFFF05A
-7E38007000A25BA6485AA6EA7FFE12FF127F161C7E9B18>I<EB1E1F90387FFF8090B5FC
-3901E1E3003803C0E01380EA0700A3495AA238038780EA07FF49C7FCEA0E7890C8FCA26C
-B47E4813E0487F383C007848133812705AA2147800705B387C03E0383FFFC0000F90C7FC
-EA03FC191F809318>I<14C0EB01E013031301EB00C01400A4EBFFC0A31301A2EB0380A6
-EB0700A6130EA65BA2EA6038EAF078B45A5BEA3F8013277F9C18>106
-D<EA07E0120F12071200A4485AEBC7FEA3EBC1E0EBC3C038038780EB8F00139E13BC13FE
-13EEEA07CF1387EB0780130314C01301387FC7F838FFE7FC387FC7F8171C7F9B18>I<EA
-0FFCA3EA001CA45BA65BA65BA6B5128014C01480121C7D9B18>I<13FCEA03FF000F1380
-EA1F07383C03C0EA7801007013E0EAE000A4EB01C0A2EB0380EAF007EB0F00EA7C3EEA3F
-FC6C5AEA07E013147C9318>111 D<EBF8C0EA03FDEA0FFFEA1F0FEA3C07387803801270
-12E0A4EB0700A25BA26C5AEA787FEA3FFEEA1FEEEA078EEA000EA35BA43801FF80A3121E
-7C9318>113 D<381FE1F8EBE7FCEBEFFE3800FE1EEBFC0C3801F8005B5B5BA3485AA6EA
-FFFC7F5B17147E9318>I<EBFE603807FFE05AEA1F01121C003813C0EA3C00001F1300EA
-0FF8EA07FE3800FF801307383001C01270A238780380EA7C07B51200EAEFFEEA63F81314
-7D9318>I<387E07E0EAFE0FEA7E07EA0E00A2381C01C0A638380380A41307131F383FFF
-E06C13F03807E3E014147D9318>117 D<38FF87F8138F1387383800E0EB01C0A3148013
-E3EA39F31233EB7700A212371376EA3666136EEA3C7CA2EA383815147C9318>119
-D<381FE3FC13E713E33803C3C000011380EBE700EA00EE13FC137C1338137813FCEA01DC
-EA038E12071307120E38FF1FE0EB9FF0EB1FE016147E9318>I<380FF1FE381FF9FF380F
-F1FE3803807013C0000113E0A213C114C0A23800E380A2EBE700A213E6136E136C137C13
-78A21370A25BA2485A12F3EAF780B4C7FC5A1278181E7F9318>I
-E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fh cmcsc10 10.95 12
-/Fh 12 121 df<1318A2133CA3134EA213CF1387A238010380A2000313C0EA0201A23807
-FFE0EA0400A2481370A2001813380038137838FE01FF18177F961C>97
-D<EB7E083803819838070078000C1338001C13185A00781308127000F01300A700701308
-127812386C1310120C000713603803818038007E0015177E961B>99
-D<B512C0EA1C011300144014601420A213081400A21318EA1FF8EA1C1813081410A21300
-14301420A21460EB01E0B5FC14177E9619>101 D<B512C0EA1C011300144014601420A2
-13081400A21318EA1FF8EA1C181308A390C7FCA6EAFFC013177E9618>I<EB7E08380381
-9838070078000C1338001C13185A00781308127000F01300A5EB03FEEB00381270127812
-387E120C1207380380D838007F0817177E961D>I<EAFF80EA1C00B3A3EAFF8009177E96
-0E>105 D<38FC01FC381E007014201217EA1380A2EA11C0EA10E0A213701338A2131C13
-0E1307A2EB03A0EB01E0A213001460123800FE132016177E961C>110
-D<13FE38038380380E00E0481370003C1378003813380078133C0070131C00F0131EA700
-70131C0078133C00381338003C1378001C13706C13E0380383803800FE0017177E961D>
-I<EAFFFCEA1C07EB03C0130114E0A414C01303EB0700EA1FFC001CC7FCAAB47E13177E96
-19>I<EA0FC4EA302CEA601CEA400CEAC004A3EAE0001270127FEA3FE0EA0FF8EA01FCEA
-001C130E13061280A3EAC004EAE008EAD810EA87E00F177E9615>115
-D<38FF81FC381C00701420B0000C1340120E6C138038018300EA007C16177E961C>117
-D<38FF80FE381F0070000E13606C1340EB80803803C100EA01C3EA00E213F4137813387F
-133E134E13C7EB8780380103C0EA0201380600E0000413F0000C1370003C137800FE13FF
-18177F961C>120 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fi cmbx12 17.28 18
-/Fi 18 117 df<EB01C01303130F137FEA1FFFB5FC13BFEAE03F1200B3B1007FB512F0A3
-1C2E7AAD28>49 D<913A03FF800180023FEBF00349B5EAFC0701079038003F0FD91FF8EB
-079FD93FC0EB01FFD9FF807F4848C8127F4848153F0007161F49150F485A001F1607A248
-5A1703127FA24992C7FCA212FFA9127FA27FEF0380123FA26C7E1707000F17006C7E6D15
-0E0003161E6C6C151C6C6C6C1478D93FC05CD91FF8EB03E0D907FFEB3F800101D9FFFEC7
-FCD9003F13F80203138031317CB03A>67 D<B812F0A3C6903880003FEE07F816031600A2
-1778A21738A3171C1507A31700A25D5D5D91B5FCA3EC803F818181A21707A392C7120EA4
-171EA2173CA2177C17FC16011607163FB812F8A330317EB035>69
-D<B67EA3000190C9FCB3A9EE0380A416071700A25EA35E5E5E5E4B5A150FB7FCA329317D
-B030>76 D<007FB8FCA39039C00FF801D87E00EC003F007C82007882A200708200F01780
-A3481603A5C792C7FCB3AA017FB6FCA331307DAF38>84 D<EBFFF0000313FF390F803F80
-9038C00FE0486C6C7EA26E7ED80FC07FEA0780C7FCA414FF131FEBFFE33803FC03EA0FF0
-EA1FC0123FEA7F80A2EAFF00A31407A2387F800D393FC01DFE3A1FE078FFF03907FFE07F
-C6EB803F24207E9F27>97 D<EA01F812FFA3120F1207ADEC3FE0ECFFFC9038FBE07F9039
-FF001F8049EB0FC04914E049EB07F016F8A2ED03FCA316FEA816FCA3ED07F8A216F06DEB
-0FE06D14C001E7EB3F809039C3C0FE00903880FFF89038003FC027327EB12D>I<ED0FC0
-EC07FFA3EC007F153FADEB07F8EB3FFF9038FE07BF3903F801FF3907E0007F120F484813
-3F123FA2485AA312FFA8127FA36C7EA2121F6C6C137F000714FF2603F00313E03A01FC0F
-3FFE38007FFEEB0FF027327DB12D>100 D<EB0FFC90387FFF803901FC0FC03903F003E0
-3907E001F0000F14F8391FC000FC003F14FEA24848137E157FA212FFA290B6FCA20180C7
-FCA4127FA36C6C1307121F150E6C7E6C6C131C6C6C13783900FE03E090383FFFC0903807
-FE0020207E9F25>I<EB01FE90380FFF8090381FC3C090387F07E09038FE0FF0120113FC
-1203EC07E0EC018091C7FCA8B512FCA3D803FCC7FCB3A8387FFFF0A31C327EB119>I<90
-391FF007C09039FFFE3FE03A01F83F79F03907E00FC3000F14E19039C007E0E0001FECF0
-00A2003F80A5001F5CA2000F5CEBE00F00075C2603F83FC7FC3806FFFE380E1FF090C9FC
-121EA2121F7F90B57E6C14F015FC6C806C801680000F15C0003FC7127F007EEC1FE0007C
-140F00FC1407A4007EEC0FC0003E1580003F141FD80FC0EB7E003907F803FC0001B512F0
-D8001F90C7FC242F7E9F28>I<EA03C0487E487E487EA46C5A6C5A6C5AC8FCA9EA01F812
-7FA31207B3A7B51280A311337DB217>105 D<EA01F812FFA3120F1207B3B3A6B512C0A3
-12327DB117>108 D<2703F007F8EB1FE000FFD93FFEEBFFF8913A783F01E0FC02C09038
-8300FE280FF1801FC6137F2607F30013CC01F602F8148001FC5CA3495CB3B500C3B5380F
-FFFCA33E207D9F43>I<3903F007F800FFEB3FFEEC783F02C013803A0FF1801FC03807F3
-0001F614E013FCA35BB3B500C3B5FCA328207D9F2D>I<EB07FC90387FFFC03901FC07F0
-3903F001F848486C7E4848137E001F147F003F158049133F007F15C0A300FF15E0A8007F
-15C0A36C6CEB7F80A2001F15006C6C13FE00075C3903F803F83901FE0FF039007FFFC0D9
-07FCC7FC23207E9F28>I<3801FF86000713FEEA1F00003C133E48131E140E12F8A36C90
-C7FCB47E13FC387FFFC06C13F0806C7F00077F00017FEA003F01001380143F0060131F00
-E0130FA27E15007E6C131E6C131C38FF807838F3FFF038C07F8019207D9F20>115
-D<131CA5133CA3137CA213FC120112031207381FFFFEB5FCA2D803FCC7FCB0EC0380A712
-01EC0700EA00FEEB7F0EEB3FFCEB07F0192E7FAD1F>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fj cmsy10 10.95 1
-/Fj 1 14 df<14FE903807FFC090381F01F0903878003C01E0130ED80180130348C7EA01
-800006EC00C0481560A2481530481518A248150CA4481506A90060150CA46C1518A26C15
-306C1560A26C15C06CEC01806C6CEB0300D800E0130E0178133C90381F01F0903807FFC0
-D900FEC7FC272B7DA02E>13 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fk cmbx12 14.4 39
-/Fk 39 122 df<123C127FEAFF80A213C0A3127F123E1200A2EA0180A3EA0300A2120612
-0E5A5A12100A157B8813>44 D<121C127FA2EAFF80A3EA7F00A2121C09097B8813>46
-D<130E131E137EEA07FE12FFA212F81200B3ABB512FEA317277BA622>49
-D<EBFF80000713F04813FC381E03FE393800FF80007C133F00FE14C06C131F15E0140FA2
-127E003C131FC7FC15C0A2EC3F801500147E5C5C495A495AEB078049C7FC131E4913E013
-705B3901C001C0EA0380EA0600000FB5FC5A5A5AB61280A31B277DA622>I<EB7F803803
-FFF04813FC380F81FE381F007FEA3F80EC3F80A3121F1300C7EA7F00A2147E5C495AEB07
-F0EBFFC0A2EB01F8EB007E801580EC1FC0A215E0A2123C127EB4FCA215C0143F48148000
-7CEB7F00383F01FE6CB45A000713F0C613801B277DA622>I<140FA25C5C5C5C5BA2EB03
-BFEB073F130E131C133C1338137013E0EA01C0EA038012071300120E5A5A5A12F0B612F8
-A3C7EA7F00A890381FFFF8A31D277EA622>I<00181303381F801FEBFFFE5C5C5C14C091
-C7FC001CC8FCA7EB7FC0381DFFF8381F80FC381E003F1208C7EA1F8015C0A215E0A21218
-127C12FEA315C05A0078EB3F80A26CEB7F00381F01FE6CB45A000313F0C613801B277DA6
-22>I<B612F815FF16C03A03F8001FE0ED0FF0ED07F8150316FCA21501A3150316F8A2ED
-07F0150FED1FC0EDFF8090B5EAFE00EDFFC09039F8000FF0ED03F8ED01FC16FE1500A216
-FFA616FE1501ED03FC1507ED1FF8B712E016C0EDFE0028297DA830>66
-D<91387FE003903907FFFC07011FEBFF0F90397FF00F9F9039FF0001FFD801FC7F484814
-7F4848143F4848141F485A160F485A1607127FA290C9FC5AA97E7F1607123FA26C7E160E
-6C7E6C6C141C6C6C143C6C6C14786CB4EB01F090397FF007C0011FB512800107EBFE0090
-38007FF028297CA831>I<B712E0A33903FC001FED07F01501A215001670A3913801C078
-1638A302031300A2140F90B5FCA3EBFC0F1403A20201130EA3161C91C7FCA3163C163816
-7816F815011503151FB712F0A327297EA82C>69 D<B712C0A33903FC003FED0FE0150315
-01A21500A316F0913801C070A316001403A2140F90B5FCA3EBFC0F1403A21401A491C8FC
-A9B512FCA324297EA82A>I<B512F0A33803FC00B3B1B512F0A314297EA819>73
-D<B512FCA3D803FCC8FCB3A3ED01C0A415031680A21507A2150FA2151F157F913801FF00
-B7FCA322297EA828>76 D<D8FFFE92383FFF80A26D5D0003EFE000A2D9BF8014EFA2D99F
-C0EB01CFA2D98FE0EB038FA3D987F0EB070FA2D983F8130EA2D981FC131CA3D980FE1338
-A2027F1370A291383F80E0A391381FC1C0A291380FE380A2913807F700A3EC03FEA26E5A
-A26E5AD8FFFE0203B51280A2157039297DA840>I<B612E015FE6F7E3A03FC003FE0ED0F
-F06F7E6F7E150182A65E4B5A1507ED0FE0ED3FC090B500FEC7FCA29039FC00FF80ED3FC0
-6F7E6F7E6F7EA9170EA21503923801FC1CB538F000FEEE7FF8EE0FE02F297EA832>82
-D<9038FF80600003EBF0E0000F13F8381F80FD383F001F003E1307481303A200FC1301A2
-14007EA26C140013C0EA7FFCEBFFE06C13F86C13FE80000714806C14C0C6FC010F13E0EB
-007FEC1FF0140F140700E01303A46C14E0A26C13076C14C0B4EB0F80EBE03F39E3FFFE00
-00E15B38C01FF01C297CA825>I<B500F0EBFFFEA3D803FCC7EA0380B3AA0001ED07007F
-0000150E137F6D143CD91FC05B90390FF003F06DB55A01001480DA1FFCC7FC2F297EA834
->85 D<B53CE07FFFE01FFFC0A32803FC0003FCC7EA7000A26D6D7E000160A26D6E13016C
-604B138002801503017F5F4B13C0D93FC0013F49C7FCA2913AE00E1FE00F011F160E17F0
-9126F01C0F131E010F161C033C13F8902707F838075BA2037813FC902703FC70035BA291
-3AFEE001FEF001015E02FF14FF4B7E6D5EA26E486D5AA36EC76CC8FCA2023E80021E141E
-A242297FA845>87 D<3803FF80000F13F0381F01FC383F80FE147F801580EA1F00C7FCA4
-EB3FFF3801FC3FEA0FE0EA1F80EA3F00127E5AA4145F007E13DF393F839FFC381FFE0F38
-03FC031E1B7E9A21>97 D<EAFFE0A3120FACEBE1FE9038EFFF809038FE07E09038F803F0
-9038F001F89038E000FCA2157EA2157FA8157EA315FCA29038F001F89038F803F090389C
-0FE090380FFF80390E01FC00202A7EA925>I<EB3FF03801FFFC3803F03E380FC07FEA1F
-80EA3F00A248133E007E90C7FCA212FEA7127EA2127F6CEB03801380001FEB0700380FE0
-0E3803F83C3801FFF838003FC0191B7E9A1E>I<EC7FF0A31407ACEB3F873801FFF73807
-F03F380FC00F381F8007EA3F00A2127EA312FEA8127EA27EA2381F800F380FC01F3907E0
-7FFF3801FFE738007F87202A7EA925>I<EB3FC03801FFF03803E07C380F803E001F7F13
-0048EB0F80127E15C0A200FE1307A2B6FCA248C8FCA3127EA2127F6CEB01C07E390F8003
-803907C007003803F01E3800FFFCEB3FE01A1B7E9A1F>I<EB07F8EB3FFCEB7E3E3801FC
-7FEA03F813F01207143E1400A7B512C0A33807F000B3A3387FFF80A3182A7EA915>I<90
-38FF80F00003EBE3F8390FC1FE1C391F007C7C48137E003EEB3E10007EEB3F00A6003E13
-3E003F137E6C137C380FC1F8380BFFE00018138090C8FC1238A2123C383FFFF814FF6C14
-C06C14E06C14F0121F383C0007007CEB01F8481300A4007CEB01F0A2003FEB07E0390FC0
-1F806CB5120038007FF01E287E9A22>I<EAFFE0A3120FAC147E9038E1FF809038E30FC0
-01E413E0EBE80701F813F013F0A213E0B039FFFE3FFFA3202A7DA925>I<1207EA0F80EA
-1FC0EA3FE0A3EA1FC0EA0F80EA0700C7FCA7EAFFE0A3120FB3A3EAFFFEA30F2B7EAA12>
-I<EAFFE0A3120FB3B2EAFFFEA30F2A7EA912>108 D<26FFC07FEB1FC0903AC1FFC07FF0
-903AC307E0C1F8D80FC49038F101FC9039C803F20001D801FE7F01D05BA201E05BB03CFF
-FE3FFF8FFFE0A3331B7D9A38>I<38FFC07E9038C1FF809038C30FC0D80FC413E0EBC807
-01D813F013D0A213E0B039FFFE3FFFA3201B7D9A25>I<EB3FE03801FFFC3803F07E390F
-C01F80391F800FC0393F0007E0A2007EEB03F0A300FE14F8A8007E14F0A26CEB07E0A239
-1F800FC0390FC01F803907F07F003801FFFC38003FE01D1B7E9A22>I<38FFC1F0EBC7FC
-EBC63E380FCC7F13D813D0A2EBF03EEBE000B0B5FCA3181B7F9A1B>114
-D<3803FE30380FFFF0EA3E03EA7800127000F01370A27E00FE1300EAFFE06CB4FC14C06C
-13E06C13F0000713F8C6FCEB07FC130000E0137C143C7E14387E6C137038FF01E038E7FF
-C000C11300161B7E9A1B>I<13E0A41201A31203A21207120F381FFFE0B5FCA2380FE000
-AD1470A73807F0E0000313C03801FF8038007F0014267FA51A>I<39FFE07FF0A3000F13
-07B2140FA2000713173903F067FF3801FFC738007F87201B7D9A25>I<39FFFC03FFA339
-0FF000F0000714E07F0003EB01C0A2EBFC0300011480EBFE070000140013FFEB7F0EA214
-9EEB3F9C14FC6D5AA26D5AA36D5AA26D5AA2201B7F9A23>I<3BFFFC7FFC1FFCA33B0FE0
-0FE001C02607F007EB0380A201F8EBF00700031600EC0FF801FC5C0001150EEC1FFC2600
-FE1C5B15FE9039FF387E3C017F1438EC787F6D486C5A16F0ECE01F011F5CA26D486C5AA2
-EC800701075CA22E1B7F9A31>I<39FFFC1FFEA33907F003803803F8079038FC0F003801
-FE1E00005BEB7F3814F86D5A6D5A130F806D7E130F497EEB3CFEEB38FFEB787F9038F03F
-803901E01FC0D803C013E0EB800F39FFF03FFFA3201B7F9A23>I<39FFFC03FFA3390FF0
-00F0000714E07F0003EB01C0A2EBFC0300011480EBFE070000140013FFEB7F0EA2149EEB
-3F9C14FC6D5AA26D5AA36D5AA26D5AA25CA21307003890C7FCEA7C0FEAFE0E131E131C5B
-EA74F0EA3FE0EA0F8020277F9A23>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fl cmtt10 10.95 77
-/Fl 77 127 df<127012F8B012701200A5127012F8A31270051C779B18>33
-D<EA4010EAE038EAF078EAE038AAEA60300D0E7B9C18>I<EA0306EA078FA6387FFFC0B5
-12E0A26C13C0380F1E00A6387FFFC0B512E0A26C13C0381E3C00A6EA0C18131C7E9B18>
-I<13C01201A3EA03F0EA0FFCEA3FFEEA7DCFEA71C738E1C38013C7A338F1C0001279123F
-6C7EEA0FF8EA01FC13DE13CF13C73861C38012F1A212E1EBC7001271EA79DEEA3FFEEA1F
-F8EA07E0EA01C0A3120011247D9F18>I<1238127CA2127E123E120EA3121CA2123812F8
-12F012C0070E789B18>39 D<137013F0EA01E0EA03C0EA0780EA0F00121E121C5AA25AA4
-5AA81270A47EA27E121E7EEA0780EA03C0EA01F0120013700C24799F18>I<126012F012
-787E7E7EEA07801203EA01C0A2EA00E0A41370A813E0A4EA01C0A2EA03801207EA0F0012
-1E5A5A5A12600C247C9F18>I<EA01C0A4EA41C138F1C780EAFDDF387FFF00EA1FFCEA07
-F0A2EA1FFCEA7FFF38FDDF80EAF1C73841C100EA01C0A411147D9718>I<121C123E127E
-127F123F121F1207120E121E127C12F81260080C788518>44 D<387FFFC0B512E0A26C13
-C013047E8F18>I<1230127812FCA2127812300606778518>I<1303EB0780A2130F14005B
-131EA2133E133C137C1378A213F85B12015B12035BA212075B120F90C7FCA25A121E123E
-123CA2127C127812F85AA2126011247D9F18>I<EA01F0EA07FC487EEA1F1FEA1C073838
-0380007813C0EA7001A238E000E0A9EAF001007013C0A2EA780300381380381C0700EA1F
-1FEA0FFE6C5AEA01F0131C7E9B18>I<EA01801203A21207120F123F12FF12FB12431203
-B0EA7FFCEAFFFEEA7FFC0F1C7B9B18>I<383FFF80A30038C7FCA8EA3BF8EA3FFE7F383C
-0780383003C0EA0001EB00E0A2126012F0A238E001C0EA7003387C0F80383FFF00EA1FFC
-EA03F0131C7E9B18>53 D<12E0B512E0A214C038E00380EB0700C65A131E131C5BA25B13
-F05BA2485AA3485AA448C7FCA7131D7E9C18>55 D<EA03F8EA0FFE487E383E0F80EA3803
-387001C0A438380380EA3C07381FFF00EA07FC487EEA1F1F383C0780387001C000F013E0
-EAE000A4387001C0EA7803383E0F80381FFF006C5AEA03F8131C7E9B18>I<1230127812
-FCA2127812301200A81230127812FCA2127812300614779318>58
-D<14C0EB03E01307EB1FC0EB3F80EBFE00485AEA07F0485AEA3F8048C7FC12FCA2127F6C
-7EEA0FE06C7EEA01FC6C7EEB3F80EB1FC0EB07E01303EB00C013187E9918>60
-D<387FFFC0B512E0A26C13C0C8FCA4387FFFC0B512E0A26C13C0130C7E9318>I<126012
-F87E127F6C7EEA0FE06C7EEA01FC6C7EEB3F80EB1FC0EB07E0A2EB1FC0EB3F80EBFE0048
-5AEA07F0485AEA3F8048C7FC12FC5A126013187E9918>I<EA0FF0EA3FFC48B4FCEA700F
-38F00380A2EA600738000F00133E5BEA01F05B485AA55BC8FCA5EA0380487EA36C5A111C
-7D9B18>I<137CEA01FEEA07FF380F8780381E03C0EA3C1DEA387F3870FFE0EA71E313C1
-12E1EAE380A638E1C1C0127113E33870FF8038387F00EA3C1C381E00E0EA0F833807FFC0
-0001138038007E00131C7E9B18>I<137013F8A213D8A2EA01DCA3138CEA038EA4EA0707
-A5380FFF80A3EA0E03381C01C0A3387F07F000FF13F8007F13F0151C7F9B18>I<EA7FFC
-B5FC6C1380381C03C01301EB00E0A4130114C01307381FFF80140014C0EA1C03EB00E014
-F01470A414F014E01303387FFFC0B51280387FFE00141C7F9B18>I<EBF8E0EA03FEEA07
-FFEA0F07EA1E03EA3C01EA38005AA214005AA8127014E0A27E123C381E01C0EA0F073807
-FF803803FE00EA00F8131C7E9B18>I<EA7FF8EAFFFE6C7E381C0F80EB03C0A2EB01E013
-00A214F01470A814F014E0A2130114C01303EB0F80387FFF00485AEA7FF8141C7F9B18>
-I<B512F0A3381C0070A41400A2130EA3EA1FFEA3EA1C0EA390C7FCA21438A5B512F8A315
-1C7F9B18>I<B512F0A3381C0070A41400A2130EA3EA1FFEA3EA1C0EA390C7FCA7EAFFC0
-A3141C7E9B18>I<3801F1C0EA03FDEA0FFFEA1F0FEA1C03123813011270A290C7FC5AA5
-EB0FF0131F130F387001C0A213031238A2EA1C07EA1F0FEA0FFFEA03FDEA01F1141C7E9B
-18>I<387F07F038FF8FF8387F07F0381C01C0A9EA1FFFA3EA1C01AA387F07F038FF8FF8
-387F07F0151C7F9B18>I<EA7FFFB512806C1300EA01C0B3A4EA7FFFB512806C1300111C
-7D9B18>I<387F07F038FF87F8387F07F0381C03C0EB07801400130E131E5B13385B13F0
-121DA2EA1FB8A2131C121EEA1C0EA27FA2EB0380A2EB01C0387F03F038FF87F8387F03F0
-151C7F9B18>75 D<EAFFC0A3001CC7FCB114E0A5B5FCA3131C7E9B18>I<38FC01F8EAFE
-03A2383B06E0A4138EA2EA398CA213DCA3EA38D8A213F81370A21300A638FE03F8A3151C
-7F9B18>I<387E07F038FF0FF8387F07F0381D81C0A313C1121CA213E1A313611371A213
-311339A31319A2131D130DA3EA7F07EAFF87EA7F03151C7F9B18>I<EA0FFE383FFF8048
-13C0EA7803EA700100F013E0EAE000B0EAF001007013C0EA7C07EA7FFF6C1380380FFE00
-131C7E9B18>I<EAFFFEEBFF8014C0EA1C03EB01E013001470A514E01301EB03C0EA1FFF
-1480EBFE00001CC7FCA8B47EA3141C7F9B18>I<EA0FFE383FFF804813C0EA7803EA7001
-00F013E0EAE000AE1370A2EAF079387039C0EA783FEA7FFF6C1380380FFE00EA000FEB07
-80A2EB03C01301A213227E9B18>I<EA7FF8EAFFFE6C7E381C0F80130314C01301A31303
-1480130F381FFF005BA2EA1C0F7FEB0380A5149CA3387F01F8EAFF81387F00F0161C7F9B
-18>I<3803F1C0EA1FFF5AEA7C0FEA7003EAE001A390C7FC12701278123FEA1FF0EA07FE
-C67EEB0F80EB03C01301EB00E0A2126012E0130100F013C038F80780B5FCEBFE00EAE7F8
-131C7E9B18>I<387FFFF8B5FCA238E07038A400001300B2EA07FFA3151C7F9B18>I<38FF
-83FEA3381C0070B36C13E0EA0F01380783C03803FF806C1300EA007C171C809B18>I<38
-FE03F8EAFF07EAFE03381C01C0EA1E03000E1380EA0F0700071300A2EA038EA2EA01DCA3
-EA00F8A21370A9EA01FC487E6C5A151C7F9B18>89 D<EAFFF8A3EAE000B3ACEAFFF8A30D
-24779F18>91 D<126012F0A27E1278127C123CA2123E121E121F7EA27F12077F1203A27F
-12017F12007F1378A2137C133C133E131EA2131F7F14801307A2EB030011247D9F18>I<
-EAFFF8A3EA0038B3ACEAFFF8A30D247F9F18>I<387FFFC0B512E0A26C13C013047E7F18>
-95 D<EA0FF0EA1FFC487EEA3C0FEA180738000380A213FF1207121FEA7F03127812E0A3
-EAF007EA780F383FFFF8EA1FFDEA07F015147E9318>97 D<127E12FE127E120EA5133EEB
-FF80000F13C0EBC1E01380EB0070120E1438A6000F1370A2EB80E013C1EBFFC0000E1380
-38063E00151C809B18>I<EA01FEEA07FF001F1380EA3E073838030048C7FCA25AA61270
-EB01C01238EA3E03381FFF8000071300EA01FC12147D9318>I<EB1F80133F131F1303A5
-EA03E3EA0FFBEA1FFFEA3C1FEA380FEA7007130312E0A6EA7007A2EA380FEA3C1F381FFF
-F0380FFBF83803E3F0151C7E9B18>I<EA01F0EA07FCEA1FFEEA3E0F38380780EA7003A2
-38E001C0A2B5FCA300E0C7FC1270EB01C01238EA3E07381FFF8000071300EA01F812147D
-9318>I<EB1F80EB7FC0EBFFE013E13801C0C01400A3387FFFC0B5FCA23801C000AEEA7F
-FFA3131C7F9B18>I<3801E1F03807FFF85A381E1E30381C0E00487EA5EA1C0EEA1E1EEA
-1FFC5BEA39E00038C7FC7EEA1FFEEBFFC04813E0387801F038700070481338A4007813F0
-EA7E03381FFFC06C13803801FC00151F7F9318>I<127E12FE127E120EA5133EEBFF8000
-0F13C013C1EB80E01300120EAB387FC7FC38FFE7FE387FC7FC171C809B18>I<EA0380EA
-07C0A3EA0380C7FCA4EA7FC012FF127F1201AEB5FCA3101D7C9C18>I<1338137CA31338
-1300A4EA0FFCA3EA001CB3A4EA6038EAF078EAFFF0EA7FE0EA3F800E277E9C18>I<127E
-12FE127E120EA5EB3FF0A3EB0780EB0F00131E5B5B5BEA0FF87F139C130EEA0E0F7FEB03
-8014C0387FC7F812FF127F151C7F9B18>I<EAFFC0A31201B3A4B51280A3111C7D9B18>I<
-38F9C1C038FFF7F013FF383E3E38EA3C3CA2EA3838AB38FE3E3EEB7E7EEB3E3E17148093
-18>I<EA7E3E38FEFF80007F13C0EA0FC1EB80E01300120EAB387FC7FC38FFE7FE387FC7
-FC1714809318>I<EA01F0EA0FFE487E383E0F80EA3803387001C0A238E000E0A5EAF001
-007013C0EA7803383C0780EA3E0F381FFF006C5AEA01F013147E9318>I<EA7E3E38FEFF
-80007F13C0380FC1E01380EB0070120E1438A6000F1370A2EB80E013C1EBFFC0000E1380
-EB3E0090C7FCA7EA7FC0487E6C5A151E809318>I<3801F380EA07FBEA1FFFEA3E1FEA38
-0FEA7007A2EAE003A6EA7007A2EA380FEA3C1FEA1FFFEA0FFBEA03E3EA0003A7EB1FF0EB
-3FF8EB1FF0151E7E9318>I<38FF0FC0EB3FE0EB7FF0EA07F0EBE060EBC0005BA290C7FC
-A9EAFFFC7F5B14147E9318>I<EA07F7EA3FFF5AEA780FEAE007A3007CC7FCEA7FE0EA1F
-FCEA03FEEA001F38600780EAE003A212F038F80F00B5FC13FCEAE7F011147D9318>I<48
-7E1203A4387FFFC0B5FCA238038000A9144014E0A33801C1C013FF6C1380EB3E0013197F
-9818>I<387E07E0EAFE0FEA7E07EA0E00AC1301EA0F033807FFFC6C13FE3801FCFC1714
-809318>I<387F8FF000FF13F8007F13F0381C01C0380E0380A338070700A3138FEA038E
-A3EA01DCA3EA00F8A2137015147F9318>I<38FF07F8138F1307383800E0A4381C01C013
-7113F9A213D9EA1DDD000D1380A3138DEA0F8FA23807070015147F9318>I<387F8FF013
-9F138F380F0700EA078EEA039EEA01DC13F81200137013F07FEA01DCEA039E138EEA0707
-000E1380387F8FF000FF13F8007F13F015147F9318>I<387F8FF000FF13F8007F13F038
-0E01C0EB0380A21207EB0700A2EA0387A2138EEA01CEA213CC120013DC1378A31370A313
-F05B1279EA7BC0EA7F806CC7FC121E151E7F9318>I<383FFFF05AA2387001E0EB03C0EB
-078038000F00131E5B13F8485AEA03C0485A380F0070121E5A5AB512F0A314147F9318>
-I<EB07E0131F137FEB780013E0AB1201EA7FC0485AA26C7EEA01E01200AB1378EB7FE013
-1F130713247E9F18>I<127CB4FC13C01203C67EAB7FEB7FC0EB3FE0A2EB7FC0EBF0005B
-ABEA03C012FF90C7FC127C13247E9F18>125 D<EA060CEA1F1EEA3FBEEAFBF8EAF1F0EA
-60C00F067C9B18>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fm cmr10 10.95 71
-/Fm 71 123 df<90381F83E09038F06E303901C07878380380F8903800F03048EB7000A7
-B612803907007000B2383FE3FF1D20809F1B>11 D<133FEBE0C0EA01C0380381E0EA0701
-A290C7FCA6B512E0EA0700B2383FC3FC1620809F19>I<127012F812FCA212741204A312
-08A21210A212201240060E7C9F0D>39 D<13401380EA01005A12061204120C5AA2123812
-30A212701260A412E0AC1260A412701230A212381218A27E120412067E7EEA008013400A
-2E7BA112>I<7E12407E12307E1208120C7EA212077EA213801201A413C0AC1380A41203
-1300A25A1206A25A120812185A12205A5A0A2E7EA112>I<127012F012F8A212781208A3
-1210A31220A21240050E7C840D>44 D<EAFFF0A20C02808A0F>I<127012F8A312700505
-7C840D>I<EA03F0EA0E1C487EEA1806EA380738700380A400F013C0AD00701380A3EA78
-0700381300EA1806EA1C0E6C5AEA03F0121F7E9D17>48 D<13801203120F12F31203B3A6
-EA07C0EA7FFE0F1E7C9D17>I<EA03F0EA0C1CEA100E487E00401380128000F013C0EAF8
-03A3EA200712001480A2EB0F00130E5B5B5B13605B485A48C7FC000613405A5A00101380
-EA3FFF5AB5FC121E7E9D17>I<EA03F0EA0C1CEA100EEA200F007813801307A2EA380F12
-001400A2131E131C1370EA07F0EA003C130E130FEB0780A214C0122012F8A300F0138012
-40EB0F00EA200EEA183CEA07F0121F7E9D17>I<1306A2130EA2131E132EA2134E138EA2
-EA010E1202A212041208A212101220A2124012C0B512F038000E00A7EBFFE0141E7F9D17
->I<EA1803EA1FFE5B5B13E00010C7FCA6EA11F0EA161CEA180EEA10071480EA0003A214
-C0A3127012F0A200E013801240EB0700EA20066C5AEA0838EA07E0121F7E9D17>I<137C
-EA0182EA0701380E0380EA0C0712183838030090C7FC12781270A2EAF1F0EAF21CEAF406
-EAF807EB0380A200F013C0A51270A214801238EB07001218EA0C0E6C5AEA01F0121F7E9D
-17>I<1240387FFFE014C0A23840008038800100A21302485AA25B5BA25BA21360A213E0
-5B1201A41203A76C5A131F7E9D17>I<EA03F0EA0C0CEA1006EA3003382001801260A312
-7038780300123EEA3F06EA1FC8EA0FF0EA03F8487EEA0C7EEA103F38300F80EA6007EB01
-C012C01300A31480EA600100201300EA1002EA0C0CEA03F0121F7E9D17>I<EA03F0EA0E
-18487E487E13071270EB038012F0A214C0A5EA7007A21238EA180BEA0E13EA03E3380003
-80A3EB07001230EA7806130EEA700CEA2018EA1070EA0FC0121F7E9D17>I<127012F8A3
-12701200AA127012F8A3127005147C930D>I<127012F8A312701200AA127012F012F8A2
-12781208A31210A31220A21240051D7C930D>I<5B497EA3497EA3EB09E0A3EB10F0A3EB
-2078A3497EA2EBC03EEB801EA248B5FCEB000FA20002EB0780A348EB03C0A2120C001E14
-E039FF801FFE1F207F9F22>65 D<B512E0380F0078141EA2801580A515005C141E147CEB
-FFF0EB007C141FEC0F80EC07C0140315E0A515C014071580EC0F00143EB512F01B1F7E9E
-20>I<90380FE0109038381C309038E002703803C00139078000F048C71270121E15305A
-1510127C127800F81400A91278007C1410123CA26C1420A27E6C6C13406C6C13803900E0
-0300EB380CEB0FF01C217E9F21>I<B512F83807801EEC0780EC03C0EC01E0EC00F01570
-1578A2153CA3153EA8153CA2157C1578A215F0EC01E0EC03C0EC0780EC1E00B512F81F1F
-7F9E23>I<B61280380F000F14031401140015C01540A314401500A214C0130113FF1301
-13001440A3EC0020A31540A315C01401EC0380140FB6FC1B1F7E9E1F>I<B61280380780
-071401A2140015C01540A4EC2000A3146014E013FF138014601420A391C7FCA87FEAFFFE
-1A1F7F9E1E>I<90380FE02090387818609038E004E03803800238070001481300001E14
-60A25A1520127C127800F81400A7EC7FFCEC03E000781301127C123CA27EA27E7E380380
-023900E00460903878182090380FE0001E217D9F24>I<39FFF07FF8390F000780AD90B5
-FCEB0007AF39FFF07FF81D1F7E9E22>I<EAFFF0EA0F00B3ABEAFFF00C1F7E9E10>I<39FF
-F007FC390F0003E0EC0180150014025C5C5C5C5C5C49C7FC5B497E130FEB13C0EB21E013
-41EB80F0EB0078A28080A280EC0780A2EC03C015E015F039FFF01FFE1F1F7E9E23>75
-D<EAFFF8EA0F8090C7FCB21402A414061404A2140C141C147CB512FC171F7E9E1C>I<B4
-6CEB07FE000715C0A2D805C0130BA2D804E01313A301701323A26D1343A36D1383A29038
-0E0103A3EB0702A3EB0384A2EB01C8A3EB00F0A21460121FD8FFE0EB7FFE271F7F9E2A>
-I<B4EB0FF8390F8003E0EC0080EA0BC0EA09E0A2EA08F01378A27F7FA27FEB0780A2EB03
-C0EB01E0A2EB00F01478A2143C141EA2140F1407A214031401123E38FF80001D1F7E9E22
->I<EB1FE0EB70383801C00E48487E39070003804814C0001EEB01E048EB00F0A2007C14
-F8A20078147800F8147CA900781478007C14F8A2003C14F0003E1301001E14E06CEB03C0
-6C148039038007003801E01E38007038EB1FE01E217E9F23>I<B512E0380F007C141E80
-EC0780A215C0A41580A2EC0F00141E147CEBFFE090C8FCAEEAFFF01A1F7E9E1F>I<B512
-E0380F80780007131E80EC0780A215C0A41580A2EC0F00141E1478EBFFE0EB8060143814
-3C141C141EA3141FA315011581140F390FC0078239FFFC03C4C812F820207F9E22>82
-D<3803F040380C0CC0EA1803EA3001EA6000A212E01440A36C13007E127CEA7F80EA3FF8
-6CB4FC00071380C613C0EB1FE013031301EB00F014707EA46C136014E06C13C038F80180
-38C60300EA81FC14217E9F19>I<007FB512E038780F010060EB006000401420A200C014
-3000801410A400001400B3497E3803FFFC1C1F7E9E21>I<39FFF00FF8390F0003E0EC00
-80B3A46CEB01001380120314026C6C5A6C6C5AEB3830EB0FC01D207E9E22>I<39FFF003
-FE391F8000F86CC7126015206C6C1340A36C6C1380A2EBE00100011400A23800F002A213
-F8EB7804A26D5AA36D5AA2131F6D5AA2EB07C0A36D5AA36DC7FC1F207F9E22>I<3BFFF0
-7FF81FF03B1F000FC007C06C903907800180170015C001805C00071502EC09E013C00003
-5DEC19F01410D801E05CA2EC2078D800F05CA2EC403C01785CA2EC801E017C1460013C14
-4090383D000F133F6D5CA2011E1307010E91C7FCA2010C7F010413022C207F9E2F>I<39
-FFF001FF391F800078000F146012076D1340000314807F3901F001001200EBF802EB7C06
-EB3C04EB3E08131EEB1F10EB0FB0EB07A014E06D5AACEB3FFC201F7F9E22>89
-D<12FFA212C0B3B3A512FFA2082D7CA10D>91 D<12FFA21203B3B3A512FFA2082D80A10D
->93 D<120812101220A21240A21280A312B812FCA2127C1238060E7D9F0D>96
-D<EA1FE0EA3030EA7818131CEA300E1200A313FEEA0F8EEA1E0E1238127800F01310A313
-1E127838386720380F83C014147E9317>I<121C12FC121CAA137CEA1D87381E0180EB00
-C0001C13E01470A21478A6147014F014E0001E13C0381A018038198700EA107C15207E9F
-19>I<EA01FCEA0706EA1C0F123813060078C7FC127012F0A61270127800381380A2381C
-0100EA0706EA01F811147F9314>I<EB01C0130F1301AAEA01F1EA070DEA0C03EA180112
-381278127012F0A61270A21238EA1803120CEA070D3801F1F815207F9F19>I<EA03F0EA
-0E1C487E487EA238700380A212F0B5FC00F0C7FCA41270A26C1380A2381C0100EA0706EA
-01F811147F9314>I<137CEA01C6EA030F1207EA0E061300A7EAFFF0EA0E00B2EA7FE010
-20809F0E>I<14E03803E330EA0E3CEA1C1C38380E00EA780FA5EA380E6C5AEA1E38EA33
-E00020C7FCA21230A2EA3FFE381FFF8014C0383001E038600070481330A4006013606C13
-C0381C03803803FC00141F7F9417>I<121C12FC121CAA137C1386EA1D03001E1380A212
-1CAE38FF8FF014207E9F19>I<1238127CA31238C7FCA6121C12FC121CB1EAFF80091F7F
-9E0C>I<13E0EA01F0A3EA00E01300A61370EA07F012001370B3A31260EAF06013C0EA61
-80EA3F000C28829E0E>I<121C12FC121CAAEB1FE0EB0780EB060013045B5B5B136013E0
-EA1DF0EA1E70EA1C38133C131C7F130F7F148014C038FF9FF014207E9F18>I<121C12FC
-121CB3ABEAFF8009207F9F0C>I<391C3E03E039FCC30C30391D019018001EEBE01CA200
-1C13C0AE3AFF8FF8FF8021147E9326>I<EA1C7CEAFC86EA1D03001E1380A2121CAE38FF
-8FF014147E9319>I<EA01F8EA070E381C0380383801C0A2387000E0A200F013F0A60070
-13E0A2383801C0A2381C038038070E00EA01F814147F9317>I<EA1C7CEAFD87381E0180
-14C0381C00E014F014701478A6147014F014E0381E01C0EB0380381D8700EA1C7C90C7FC
-A8B47E151D7E9319>I<3801F04038070CC0EA0E02EA1C03EA38011278127012F0A61270
-12781238EA1C03EA0C05EA0709EA01F1EA0001A8EB0FF8151D7F9318>I<EA1CF0EAFD18
-EA1E3CA21318EA1C00AEEAFFC00E147E9312>I<EA0FC8EA3038EA6018EAC008A3EAE000
-127CEA3FE0EA1FF0EA07F8EA003CEA800E130612C0A21304EAE00CEAD818EA87E00F147F
-9312>I<1202A31206A2120EA2123EEAFFF8EA0E00AB1304A5EA07081203EA01F00E1C7F
-9B12>I<381C0380EAFC1FEA1C03AE1307120CEA061B3803E3F014147E9319>I<38FF83F8
-383E00E0001C13C06C1380A338070100A21383EA0382A2EA01C4A213E4EA00E8A21370A3
-132015147F9318>I<39FF9FE1FC393C078070391C030060EC8020000E1440A214C0D807
-04138014E0A239038861001471A23801D032143A143E3800E01CA2EB6018EB40081E147F
-9321>I<38FF87F8381E03C0380E0180EB0300EA0702EA0384EA01C813D8EA00F0137013
-7813F8139CEA010E1202EA060738040380000C13C0003C13E038FE07FC16147F9318>I<
-38FF83F8383E00E0001C13C06C1380A338070100A21383EA0382A2EA01C4A213E4EA00E8
-A21370A31320A25BA3EAF080A200F1C7FC1262123C151D7F9318>I<EA7FFFEA700E1260
-EA401C133813781370EA00E0120113C0EA038012071301120E121EEA1C03EA3802EA7006
-130EEAFFFE10147F9314>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fn cmbx12 20.736 19
-/Fn 19 122 df<DB1FFC14C00203B5EAC001021FECF003027FECFC07903B01FFFC00FE0F
-010701C0EB1F9F4948C7EA07FFD93FF880494814004948157F485B4A153F4890C9121F48
-5A000F170F5B001F1707A2485A1803A2127FA24993C8FCA212FFAA041FB61280127FA27F
-DC0001EBC000123FA36C7EA26C7EA26C7E7E6C7F806C7F6D6C5CEB3FFCD90FFF5C6D01C0
-EB1FBF010101FCEBFF1F6D6CB5EAFE0F021FECF8030203ECE0009126001FFEC9FC413D7B
-BB4C>71 D<B612F8A439007FF000B3B3AFB612F8A41D3B7DBA24>73
-D<B612FEA426007FF0C9FCB3ADEF03C0A517071880A3170FA3171FA2173F177F17FF5E04
-071300163FB9FCA4323B7DBA3A>76 D<B500F00207B512E0808080D8007F92390007E000
-6E6F5A81017B7F81137901787F6E7E6E7E81141F6E7E6E7F6E7F82806E7F6F7E6F7E826F
-7E816F13806F13C017E06F13F081EE7FF8EE3FFC17FEEE1FFF827013837013C318E37013
-F382EF7FFBEF3FFFA283838383A28383187F183FA201FC161FB500FC150F18071803A243
-3B7CBA4C>78 D<B712F8EEFFC017F817FE3B007FF0001FFF040313C004007F717E717EA2
-84171FA284A660A2173F604D5A604C485A4C5BDC1FFEC8FC91B612F817C0A29139F0007F
-F0EE1FF8707E707E707E8482A284A584A5F101E0A27013F0A2F103C0EF7FF8B600F89039
-3FFC078094381FFE0F0507B51200050113FCCBEA1FF0433C7CBA48>82
-D<B600F80107B512E0A426007FF0C83807E000725AB3B3A3013F4C5AA280011F4CC7FCA2
-6D6C151E0107163E6E5D6D6C5D6D6D13019026007FE0EB0FE0DA3FFCEB7FC0020FB65A02
-034AC8FCDA007F13F003071380433C7DBA4A>85 D<EB3FFE48B512E0000714F8390FE007
-FC9038F001FE486C6C7E6F7E82153F6C48806C5A6C5AC8FCA491B5FC131F90387FF83F38
-03FF803807FC00EA0FF0485A123F485AA2485AA4157F6C7E15DF3A3FE0039FF03B1FF80F
-0FFFE03807FFFE0001497E39003FE0002B267DA52F>97 D<13FE12FFA412071203B04AB4
-FC021F13F0027F13FC9138FC03FE9039FFF000FF02C0EB3F8091C7EA1FC04915E0EE0FF0
-17F8A2EE07FCA317FEA917FCA3160F17F817F0161F6D15E06EEB3FC06EEB7F80D9F9E0EB
-FF009039F0FC07FE91387FFFF8D9E01F13E09026C003FEC7FC2F3C7DBB36>I<903801FF
-F0010F13FE013FEBFF809039FF801FC03901FE003F4848EB7FE0485A485A121F4848EB3F
-C0ED1F80007FEC0F004990C7FCA212FFAA127F7FA2123F6D14F0121F6C6CEB01E012076C
-6CEB03C06CB4EB0F806C9038C03F0090383FFFFE010F13F8010113C024267DA52B>I<EE
-3F80ED3FFFA4150181B0ECFF80010F13F0013F13FC9038FFC03F3901FE000F4848130348
-487F48487F121F485AA2127F5BA312FFA9127FA36C7EA2121F6C6C5B6C6C5B00035CD801
-FE011F13C02700FF807E13FE90387FFFF8010F13E0010113002F3C7DBB36>I<49B47E01
-0F13F0017F13FC9038FF81FE3A03FE007F80D807F8133F4848EB1FC0ED0FE0485A003F15
-F01507485A16F8A212FFA290B6FCA301C0C8FCA4127FA36C7E1678121F7F000F15F06C6C
-13016C6CEB03E06C6CEB0FC03A00FFC07F8090393FFFFE00010F13F8010013C025267DA5
-2C>I<EC1FF0ECFFFC010313FF90390FF83F8090381FE07F90393FC0FFC0495A13FFA248
-9038007F80ED3F00151E92C7FCAAB67EA4000190C8FCB3AC007F13FEA4223C7DBB1E>I<
-EA01E0EA07F8487EA2487EA46C5AA26C5AEA01E0C8FCAB13FE127FA412071203B3AAB512
-F0A4143D7DBC1A>105 D<13FE12FFA412071203B3B3AEB512F8A4153C7DBB1A>108
-D<D801FCEBFF8000FF010313F0020F7F91381E03FC91383801FE000701607F0003497E01
-FD15805C01FFC7FCA35BB3A4B5D8F83F13FEA42F267CA536>110
-D<3901FC03F000FFEB0FFC4AB4FC91383C3F80EC707F00079038E0FFC000035BEBFD80A2
-01FFEB7F809138003F00151E92C7FC5BB3A3B512FCA422267DA528>114
-D<90383FF0383903FFFE7848EBFFF8381FC00F383F0003003E13005A157812FCA27E6C14
-0013C013FC387FFFF06C13FEECFF806C14C06C14E0000314F0C614F8011F13FCEB007FEC
-07FE0070130100F01300157E7EA27E157C6C14FC6C14F890388001F09038F00FE000F9B5
-12C0D8F07F130038C01FF81F267DA526>I<130FA55BA45BA25BA25B5A5A5A001FEBFFF0
-B6FCA3000190C7FCB3153CA86C14781480017F13F090383FC1E090381FFFC06D13809038
-01FE001E377EB626>I<B500F0EBFFFCA4D803FEC7EA1F806D15006C151E806C5DA26E13
-7C017F14786E13F8013F5CECF001011F5CECF803010F5CA2ECFC0701075CECFE0F010391
-C7FC6E5A6D131E15BE6D13BC15FC6E5AA36E5AA26E5AA26E5AA26E5AA2140F92C8FC5C14
-1E0008133E007F133C147C38FF807814F8EB81F0EB83E06C485A387C1F80D83FFFC9FCEA
-1FFCEA07F02E377EA533>121 D E
-%EndDVIPSBitmapFont
-end
-%%EndProlog
-%%BeginSetup
-%%Feature: *Resolution 300dpi
-TeXDict begin
-%%BeginPaperSize: Letter
-letter
-%%EndPaperSize
-
-%%EndSetup
-%%Page: 1 1
-1 0 bop 75 659 a Fn(GNU)33 b(Readline)h(Library)e(User)h(In)m(terface)p
-75 709 1800 17 v 936 757 a Fm(Edition)17 b(4.3,)c(for)i
-Fl(Readline)f(Library)g Fm(V)l(ersion)i(4.3.)1643 811
-y(Marc)o(h)e(2002)75 2467 y Fk(Brian)23 b(F)-6 b(o)n(x,)23
-b(F)-6 b(ree)23 b(Soft)n(w)n(are)f(F)-6 b(oundation)75
-2534 y(Chet)22 b(Ramey)-6 b(,)23 b(Case)e(W)-6 b(estern)23
-b(Reserv)n(e)f(Univ)n(ersit)n(y)p 75 2570 1800 9 v eop
-%%Page: 2 2
-2 1 bop 75 217 a Fm(This)22 b(do)q(cumen)o(t)f(describ)q(es)i(the)f
-(end)f(user)h(in)o(terface)f(of)g(the)g(GNU)g(Readline)i(Library)l(,)g
-(a)e(utilit)o(y)75 271 y(whic)o(h)14 b(aids)f(in)g(the)g(consistency)h
-(of)e(user)h(in)o(terface)g(across)f(discrete)h(programs)f(that)g(need)
-h(to)f(pro)o(vide)75 326 y(a)j(command)g(line)i(in)o(terface.)75
-394 y(Published)g(b)o(y)f(the)f(F)l(ree)g(Soft)o(w)o(are)f(F)l
-(oundation)75 448 y(59)h(T)l(emple)h(Place,)f(Suite)i(330,)75
-503 y(Boston,)d(MA)h(02111)f(USA)75 570 y(P)o(ermission)j(is)f(gran)o
-(ted)g(to)f(mak)o(e)h(and)g(distribute)i(v)o(erbatim)d(copies)i(of)f
-(this)h(man)o(ual)f(pro)o(vided)h(the)75 625 y(cop)o(yrigh)o(t)e
-(notice)h(and)f(this)h(p)q(ermission)g(notice)g(are)f(preserv)o(ed)h
-(on)f(all)h(copies.)75 692 y(P)o(ermission)c(is)h(gran)o(ted)e(to)g
-(cop)o(y)h(and)g(distribute)h(mo)q(di\014ed)g(v)o(ersions)f(of)f(this)h
-(man)o(ual)g(under)h(the)f(con-)75 747 y(ditions)k(for)e(v)o(erbatim)h
-(cop)o(ying,)g(pro)o(vided)h(that)e(the)h(en)o(tire)h(resulting)g
-(deriv)o(ed)g(w)o(ork)e(is)h(distributed)75 802 y(under)h(the)f(terms)g
-(of)g(a)f(p)q(ermission)j(notice)f(iden)o(tical)h(to)e(this)g(one.)75
-869 y(P)o(ermission)i(is)g(gran)o(ted)f(to)g(cop)o(y)h(and)f
-(distribute)i(translations)f(of)f(this)h(man)o(ual)g(in)o(to)f(another)
-g(lan-)75 924 y(guage,)e(under)h(the)f(ab)q(o)o(v)o(e)g(conditions)i
-(for)d(mo)q(di\014ed)j(v)o(ersions,)e(except)h(that)f(this)h(p)q
-(ermission)g(notice)75 979 y(ma)o(y)f(b)q(e)i(stated)f(in)h(a)f
-(translation)g(appro)o(v)o(ed)g(b)o(y)g(the)g(F)l(ree)h(Soft)o(w)o(are)
-d(F)l(oundation.)75 2661 y(Cop)o(yrigh)o(t)301 2660 y(c)289
-2661 y Fj(\015)h Fm(1988-2002)f(F)l(ree)i(Soft)o(w)o(are)f(F)l
-(oundation,)h(Inc.)p eop
-%%Page: 1 3
-1 2 bop 75 -58 a Fm(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077
-b(1)75 149 y Fi(1)41 b(Command)28 b(Line)e(Editing)137
-271 y Fm(This)16 b(c)o(hapter)f(describ)q(es)i(the)e(basic)h(features)f
-(of)g(the)g Fh(gnu)g Fm(command)g(line)i(editing)f(in)o(terface.)75
-403 y Fk(1.1)33 b(In)n(tro)r(duction)24 b(to)e(Line)i(Editing)137
-501 y Fm(The)16 b(follo)o(wing)g(paragraphs)e(describ)q(e)j(the)e
-(notation)g(used)h(to)e(represen)o(t)i(k)o(eystrok)o(es.)137
-569 y(The)h(text)f Fg(C-k)h Fm(is)g(read)g(as)f(`Con)o(trol-K')g(and)h
-(describ)q(es)h(the)f(c)o(haracter)f(pro)q(duced)h(when)h(the)1831
-567 y Ff(h)p 1844 541 19 2 v 1844 569 a Fe(k)p 1844 577
-V 1860 567 a Ff(i)75 624 y Fm(k)o(ey)d(is)h(pressed)g(while)g(the)f
-(Con)o(trol)g(k)o(ey)g(is)h(depressed.)137 693 y(The)g(text)g
-Fg(M-k)f Fm(is)i(read)f(as)f(`Meta-K')g(and)h(describ)q(es)i(the)e(c)o
-(haracter)f(pro)q(duced)i(when)g(the)f(Meta)75 747 y(k)o(ey)e(\(if)g(y)
-o(ou)g(ha)o(v)o(e)g(one\))g(is)h(depressed,)g(and)f(the)930
-745 y Ff(h)p 942 719 V 942 747 a Fe(k)p 942 755 V 958
-745 a Ff(i)987 747 y Fm(k)o(ey)g(is)h(pressed.)20 b(The)15
-b(Meta)e(k)o(ey)h(is)h(lab)q(eled)1779 745 y Ff(h)p 1791
-719 72 2 v 1791 747 a Fe(AL)m(T)p 1791 755 V 1860 745
-a Ff(i)75 802 y Fm(on)e(man)o(y)g(k)o(eyb)q(oards.)19
-b(On)13 b(k)o(eyb)q(oards)g(with)h(t)o(w)o(o)e(k)o(eys)g(lab)q(eled)
-1213 800 y Ff(h)p 1225 774 V 1225 802 a Fe(AL)m(T)p 1225
-810 V 1294 800 a Ff(i)1322 802 y Fm(\(usually)i(to)e(either)i(side)g
-(of)f(the)75 857 y(space)j(bar\),)f(the)388 855 y Ff(h)p
-400 829 V 400 857 a Fe(AL)m(T)p 400 865 V 469 855 a Ff(i)499
-857 y Fm(on)h(the)g(left)g(side)g(is)g(generally)h(set)f(to)f(w)o(ork)g
-(as)g(a)g(Meta)g(k)o(ey)l(.)22 b(The)1697 855 y Ff(h)p
-1709 829 V 1709 857 a Fe(AL)m(T)p 1709 865 V 1778 855
-a Ff(i)1808 857 y Fm(k)o(ey)75 912 y(on)17 b(the)f(righ)o(t)h(ma)o(y)f
-(also)h(b)q(e)g(con\014gured)g(to)f(w)o(ork)g(as)g(a)h(Meta)f(k)o(ey)g
-(or)g(ma)o(y)g(b)q(e)i(con\014gured)f(as)f(some)75 967
-y(other)f(mo)q(di\014er,)h(suc)o(h)f(as)g(a)g(Comp)q(ose)g(k)o(ey)g
-(for)f(t)o(yping)i(accen)o(ted)f(c)o(haracters.)137 1035
-y(If)c(y)o(ou)g(do)g(not)f(ha)o(v)o(e)h(a)f(Meta)h(or)694
-1033 y Ff(h)p 706 1007 V 706 1035 a Fe(AL)m(T)p 706 1043
-V 775 1033 a Ff(i)801 1035 y Fm(k)o(ey)l(,)g(or)g(another)f(k)o(ey)h(w)
-o(orking)f(as)h(a)f(Meta)h(k)o(ey)l(,)g(the)g(iden)o(tical)75
-1090 y(k)o(eystrok)o(e)f(can)i(b)q(e)g(generated)f(b)o(y)g(t)o(yping)
-809 1088 y Ff(h)p 822 1062 70 2 v 822 1090 a Fe(ESC)p
-822 1098 V 888 1088 a Ff(i)915 1090 y Fd(\014rst)p Fm(,)g(and)g(then)h
-(t)o(yping)1339 1088 y Ff(h)p 1351 1062 19 2 v 1351 1090
-a Fe(k)p 1351 1098 V 1368 1088 a Ff(i)1383 1090 y Fm(.)18
-b(Either)12 b(pro)q(cess)f(is)h(kno)o(wn)75 1145 y(as)j
-Fc(metafying)k Fm(the)425 1143 y Ff(h)p 437 1117 V 437
-1145 a Fe(k)p 437 1153 V 454 1143 a Ff(i)484 1145 y Fm(k)o(ey)l(.)137
-1214 y(The)i(text)e Fg(M-C-k)h Fm(is)h(read)f(as)f(`Meta-Con)o(trol-k')
-g(and)h(describ)q(es)i(the)e(c)o(haracter)g(pro)q(duced)h(b)o(y)75
-1268 y Fc(metafying)e Fg(C-k)p Fm(.)137 1337 y(In)g(addition,)h(sev)o
-(eral)f(k)o(eys)f(ha)o(v)o(e)g(their)h(o)o(wn)f(names.)30
-b(Sp)q(eci\014cally)l(,)1384 1335 y Ff(h)p 1396 1309
-73 2 v 1396 1337 a Fe(DEL)p 1396 1345 V 1467 1335 a Ff(i)1482
-1337 y Fm(,)1514 1335 y Ff(h)p 1526 1309 70 2 v 1526
-1337 a Fe(ESC)p 1526 1345 V 1593 1335 a Ff(i)1608 1337
-y Fm(,)1640 1335 y Ff(h)p 1652 1309 72 2 v 1652 1337
-a Fe(LFD)p 1652 1345 V 1722 1335 a Ff(i)1737 1337 y Fm(,)1768
-1335 y Ff(h)p 1780 1309 70 2 v 1780 1337 a Fe(SPC)p 1780
-1345 V 1847 1335 a Ff(i)1862 1337 y Fm(,)75 1390 y Ff(h)p
-87 1364 76 2 v 87 1392 a Fe(RET)p 87 1399 V 160 1390
-a Ff(i)175 1392 y Fm(,)23 b(and)306 1390 y Ff(h)p 318
-1364 74 2 v 318 1392 a Fe(T)m(AB)p 318 1399 V 390 1390
-a Ff(i)427 1392 y Fm(all)f(stand)g(for)f(themselv)o(es)h(when)h(seen)f
-(in)g(this)g(text,)h(or)e(in)i(an)e(init)i(\014le)g(\(see)75
-1447 y(Section)d(1.3)f([Readline)h(Init)g(File],)h(page)e(4\).)32
-b(If)19 b(y)o(our)g(k)o(eyb)q(oard)h(lac)o(ks)f(a)1444
-1445 y Ff(h)p 1456 1419 72 2 v 1456 1447 a Fe(LFD)p 1456
-1454 V 1526 1445 a Ff(i)1560 1447 y Fm(k)o(ey)l(,)h(t)o(yping)1802
-1445 y Ff(h)p 1814 1419 49 2 v 1814 1447 a Fe(C-j)p 1814
-1454 V 1860 1445 a Ff(i)75 1501 y Fm(will)c(pro)q(duce)g(the)f(desired)
-h(c)o(haracter.)j(The)874 1499 y Ff(h)p 886 1473 76 2
-v 886 1501 a Fe(RET)p 886 1509 V 959 1499 a Ff(i)989
-1501 y Fm(k)o(ey)c(ma)o(y)f(b)q(e)h(lab)q(eled)1385 1499
-y Ff(h)p 1397 1473 109 2 v 1397 1501 a Fe(Return)p 1397
-1509 V 1503 1499 a Ff(i)1533 1501 y Fm(or)1588 1499 y
-Ff(h)p 1600 1473 86 2 v 1600 1501 a Fe(En)o(ter)p 1600
-1509 V 1684 1499 a Ff(i)1714 1501 y Fm(on)f(some)75 1556
-y(k)o(eyb)q(oards.)75 1688 y Fk(1.2)33 b(Readline)23
-b(In)n(teraction)137 1786 y Fm(Often)13 b(during)h(an)e(in)o(teractiv)o
-(e)h(session)g(y)o(ou)g(t)o(yp)q(e)f(in)i(a)e(long)h(line)h(of)e(text,)
-h(only)g(to)f(notice)h(that)f(the)75 1841 y(\014rst)k(w)o(ord)f(on)h
-(the)h(line)h(is)e(missp)q(elled.)26 b(The)16 b(Readline)i(library)f
-(giv)o(es)f(y)o(ou)g(a)g(set)g(of)g(commands)g(for)75
-1896 y(manipulating)g(the)f(text)g(as)f(y)o(ou)h(t)o(yp)q(e)g(it)g(in,)
-g(allo)o(wing)h(y)o(ou)f(to)f(just)h(\014x)g(y)o(our)f(t)o(yp)q(o,)g
-(and)h(not)g(forcing)75 1950 y(y)o(ou)f(to)f(ret)o(yp)q(e)h(the)g(ma)s
-(jorit)o(y)f(of)h(the)g(line.)21 b(Using)15 b(these)f(editing)h
-(commands,)f(y)o(ou)g(mo)o(v)o(e)f(the)h(cursor)75 2005
-y(to)i(the)i(place)g(that)e(needs)i(correction,)g(and)f(delete)h(or)f
-(insert)g(the)h(text)e(of)h(the)g(corrections.)26 b(Then,)75
-2060 y(when)16 b(y)o(ou)f(are)h(satis\014ed)g(with)g(the)f(line,)i(y)o
-(ou)e(simply)i(press)1160 2058 y Ff(h)p 1172 2032 76
-2 v 1172 2060 a Fe(RET)p 1172 2068 V 1245 2058 a Ff(i)1260
-2060 y Fm(.)k(Y)l(ou)16 b(do)f(not)h(ha)o(v)o(e)f(to)g(b)q(e)h(at)f
-(the)75 2115 y(end)k(of)e(the)h(line)i(to)d(press)563
-2113 y Ff(h)p 575 2087 V 575 2115 a Fe(RET)p 575 2122
-V 648 2113 a Ff(i)663 2115 y Fm(;)i(the)f(en)o(tire)h(line)g(is)g
-(accepted)f(regardless)g(of)g(the)g(lo)q(cation)g(of)g(the)75
-2170 y(cursor)d(within)h(the)g(line.)75 2284 y Fb(1.2.1)30
-b(Readline)20 b(Bare)g(Essen)n(tials)137 2382 y Fm(In)12
-b(order)g(to)f(en)o(ter)g(c)o(haracters)g(in)o(to)g(the)h(line,)h
-(simply)g(t)o(yp)q(e)f(them.)18 b(The)12 b(t)o(yp)q(ed)g(c)o(haracter)f
-(app)q(ears)75 2437 y(where)16 b(the)h(cursor)f(w)o(as,)f(and)h(then)h
-(the)f(cursor)g(mo)o(v)o(es)g(one)g(space)g(to)g(the)g(righ)o(t.)23
-b(If)17 b(y)o(ou)f(mist)o(yp)q(e)g(a)75 2492 y(c)o(haracter,)e(y)o(ou)h
-(can)g(use)h(y)o(our)f(erase)g(c)o(haracter)f(to)h(bac)o(k)g(up)g(and)h
-(delete)g(the)f(mist)o(yp)q(ed)h(c)o(haracter.)137 2560
-y(Sometimes)g(y)o(ou)f(ma)o(y)g(mist)o(yp)q(e)h(a)f(c)o(haracter,)f
-(and)i(not)f(notice)h(the)f(error)g(un)o(til)i(y)o(ou)e(ha)o(v)o(e)g(t)
-o(yp)q(ed)75 2615 y(sev)o(eral)g(other)f(c)o(haracters.)19
-b(In)c(that)e(case,)i(y)o(ou)f(can)g(t)o(yp)q(e)h Fg(C-b)f
-Fm(to)g(mo)o(v)o(e)f(the)i(cursor)f(to)g(the)g(left,)h(and)75
-2670 y(then)h(correct)e(y)o(our)h(mistak)o(e.)20 b(Afterw)o(ards,)13
-b(y)o(ou)i(can)g(mo)o(v)o(e)g(the)g(cursor)g(to)g(the)g(righ)o(t)g
-(with)g Fg(C-f)p Fm(.)p eop
-%%Page: 2 4
-2 3 bop 75 -58 a Fm(2)1322 b(GNU)15 b(Readline)h(Library)137
-149 y(When)h(y)o(ou)f(add)g(text)g(in)h(the)g(middle)h(of)e(a)f(line,)j
-(y)o(ou)e(will)i(notice)f(that)f(c)o(haracters)f(to)h(the)g(righ)o(t)75
-204 y(of)e(the)g(cursor)g(are)g(`pushed)h(o)o(v)o(er')f(to)f(mak)o(e)h
-(ro)q(om)g(for)f(the)i(text)f(that)f(y)o(ou)h(ha)o(v)o(e)g(inserted.)21
-b(Lik)o(ewise,)75 259 y(when)e(y)o(ou)g(delete)h(text)e(b)q(ehind)j
-(the)e(cursor,)g(c)o(haracters)f(to)g(the)h(righ)o(t)f(of)g(the)h
-(cursor)g(are)f(`pulled)75 314 y(bac)o(k')11 b(to)g(\014ll)h(in)h(the)e
-(blank)h(space)g(created)f(b)o(y)h(the)f(remo)o(v)m(al)g(of)g(the)h
-(text.)18 b(A)11 b(list)h(of)f(the)h(bare)f(essen)o(tials)75
-369 y(for)k(editing)h(the)f(text)g(of)g(an)g(input)h(line)h(follo)o
-(ws.)75 449 y Fg(C-b)168 b Fm(Mo)o(v)o(e)14 b(bac)o(k)h(one)h(c)o
-(haracter.)75 530 y Fg(C-f)168 b Fm(Mo)o(v)o(e)14 b(forw)o(ard)g(one)h
-(c)o(haracter.)75 608 y Ff(h)p 87 582 73 2 v 87 610 a
-Fe(DEL)p 87 618 V 158 608 a Ff(i)188 610 y Fm(or)244
-608 y Ff(h)p 256 582 159 2 v 256 610 a Fe(Bac)o(kspace)p
-256 618 V 412 608 a Ff(i)315 665 y Fm(Delete)h(the)f(c)o(haracter)g(to)
-f(the)h(left)h(of)f(the)g(cursor.)75 745 y Fg(C-d)168
-b Fm(Delete)16 b(the)f(c)o(haracter)g(underneath)h(the)f(cursor.)75
-825 y(Prin)o(ting)h(c)o(haracters)315 880 y(Insert)f(the)h(c)o
-(haracter)e(in)o(to)h(the)h(line)h(at)d(the)h(cursor.)75
-961 y Fg(C-_)g Fm(or)f Fg(C-x)h(C-u)315 1015 y Fm(Undo)i(the)g(last)f
-(editing)i(command.)25 b(Y)l(ou)17 b(can)g(undo)g(all)g(the)g(w)o(a)o
-(y)f(bac)o(k)h(to)f(an)g(empt)o(y)315 1070 y(line.)75
-1151 y(\(Dep)q(ending)i(on)f(y)o(our)g(con\014guration,)g(the)863
-1149 y Ff(h)p 875 1123 V 875 1151 a Fe(Bac)o(kspace)p
-875 1159 V 1032 1149 a Ff(i)1063 1151 y Fm(k)o(ey)g(b)q(e)h(set)f(to)f
-(delete)i(the)f(c)o(haracter)g(to)f(the)75 1206 y(left)h(of)f(the)h
-(cursor)f(and)g(the)596 1204 y Ff(h)p 608 1178 73 2 v
-608 1206 a Fe(DEL)p 608 1213 V 679 1204 a Ff(i)710 1206
-y Fm(k)o(ey)h(set)f(to)g(delete)h(the)g(c)o(haracter)f(underneath)h
-(the)g(cursor,)f(lik)o(e)75 1260 y Fg(C-d)p Fm(,)e(rather)h(than)g(the)
-g(c)o(haracter)g(to)f(the)i(left)f(of)g(the)g(cursor.\))75
-1374 y Fb(1.2.2)30 b(Readline)20 b(Mo)n(v)n(emen)n(t)i(Commands)137
-1471 y Fm(The)14 b(ab)q(o)o(v)o(e)e(table)i(describ)q(es)g(the)g(most)e
-(basic)i(k)o(eystrok)o(es)d(that)i(y)o(ou)g(need)h(in)f(order)g(to)g
-(do)g(editing)75 1526 y(of)f(the)h(input)h(line.)21 b(F)l(or)12
-b(y)o(our)g(con)o(v)o(enience,)i(man)o(y)f(other)f(commands)h(ha)o(v)o
-(e)f(b)q(een)i(added)f(in)h(addition)75 1580 y(to)h Fg(C-b)p
-Fm(,)h Fg(C-f)p Fm(,)f Fg(C-d)p Fm(,)g(and)522 1578 y
-Ff(h)p 534 1552 V 534 1580 a Fe(DEL)p 534 1588 V 605
-1578 a Ff(i)619 1580 y Fm(.)23 b(Here)16 b(are)g(some)f(commands)h(for)
-f(mo)o(ving)h(more)g(rapidly)h(ab)q(out)f(the)75 1635
-y(line.)75 1716 y Fg(C-a)168 b Fm(Mo)o(v)o(e)14 b(to)h(the)g(start)f
-(of)h(the)g(line.)75 1796 y Fg(C-e)168 b Fm(Mo)o(v)o(e)14
-b(to)h(the)g(end)h(of)f(the)g(line.)75 1876 y Fg(M-f)168
-b Fm(Mo)o(v)o(e)14 b(forw)o(ard)g(a)h(w)o(ord,)f(where)i(a)e(w)o(ord)h
-(is)h(comp)q(osed)f(of)g(letters)g(and)h(digits.)75 1957
-y Fg(M-b)168 b Fm(Mo)o(v)o(e)14 b(bac)o(kw)o(ard)h(a)g(w)o(ord.)75
-2037 y Fg(C-l)168 b Fm(Clear)15 b(the)h(screen,)f(reprin)o(ting)h(the)f
-(curren)o(t)g(line)i(at)e(the)g(top.)137 2118 y(Notice)e(ho)o(w)f
-Fg(C-f)g Fm(mo)o(v)o(es)f(forw)o(ard)g(a)h(c)o(haracter,)g(while)i
-Fg(M-f)e Fm(mo)o(v)o(es)f(forw)o(ard)g(a)h(w)o(ord.)18
-b(It)13 b(is)g(a)f(lo)q(ose)75 2173 y(con)o(v)o(en)o(tion)j(that)f(con)
-o(trol)h(k)o(eystrok)o(es)f(op)q(erate)h(on)f(c)o(haracters)h(while)h
-(meta)e(k)o(eystrok)o(es)g(op)q(erate)h(on)75 2227 y(w)o(ords.)75
-2341 y Fb(1.2.3)30 b(Readline)20 b(Killing)h(Commands)137
-2438 y Fc(Killing)26 b Fm(text)18 b(means)g(to)g(delete)i(the)f(text)f
-(from)g(the)h(line,)i(but)d(to)g(sa)o(v)o(e)g(it)h(a)o(w)o(a)o(y)e(for)
-h(later)h(use,)75 2493 y(usually)f(b)o(y)f Fc(y)o(anking)22
-b Fm(\(re-inserting\))17 b(it)g(bac)o(k)g(in)o(to)g(the)h(line.)27
-b(\(`Cut')15 b(and)j(`paste')e(are)g(more)h(recen)o(t)75
-2547 y(jargon)d(for)h(`kill')h(and)g(`y)o(ank'.\))137
-2615 y(If)g(the)f(description)h(for)f(a)g(command)g(sa)o(ys)f(that)h
-(it)g(`kills')h(text,)e(then)i(y)o(ou)f(can)g(b)q(e)h(sure)f(that)f(y)o
-(ou)75 2670 y(can)h(get)g(the)g(text)g(bac)o(k)g(in)h(a)f(di\013eren)o
-(t)g(\(or)g(the)g(same\))g(place)h(later.)p eop
-%%Page: 3 5
-3 4 bop 75 -58 a Fm(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077
-b(3)137 149 y(When)12 b(y)o(ou)g(use)g(a)f(kill)i(command,)f(the)g
-(text)f(is)h(sa)o(v)o(ed)f(in)i(a)e Fc(kill-ring)p Fm(.)21
-b(An)o(y)12 b(n)o(um)o(b)q(er)g(of)f(consecutiv)o(e)75
-204 y(kills)17 b(sa)o(v)o(e)e(all)h(of)f(the)h(killed)i(text)d
-(together,)f(so)h(that)g(when)h(y)o(ou)f(y)o(ank)g(it)h(bac)o(k,)f(y)o
-(ou)g(get)g(it)h(all.)22 b(The)75 259 y(kill)c(ring)f(is)f(not)g(line)i
-(sp)q(eci\014c;)g(the)e(text)g(that)f(y)o(ou)h(killed)j(on)d(a)g
-(previously)h(t)o(yp)q(ed)g(line)h(is)e(a)o(v)m(ailable)75
-314 y(to)f(b)q(e)g(y)o(ank)o(ed)g(bac)o(k)h(later,)e(when)i(y)o(ou)f
-(are)g(t)o(yping)g(another)g(line.)137 380 y(Here)h(is)f(the)h(list)g
-(of)e(commands)h(for)g(killing)j(text.)75 458 y Fg(C-k)168
-b Fm(Kill)17 b(the)f(text)e(from)h(the)g(curren)o(t)g(cursor)g(p)q
-(osition)h(to)f(the)g(end)h(of)f(the)g(line.)75 535 y
-Fg(M-d)168 b Fm(Kill)15 b(from)e(the)g(cursor)g(to)f(the)i(end)g(of)e
-(the)i(curren)o(t)f(w)o(ord,)f(or,)h(if)g(b)q(et)o(w)o(een)h(w)o(ords,)
-e(to)h(the)315 590 y(end)j(of)f(the)g(next)g(w)o(ord.)k(W)l(ord)c(b)q
-(oundaries)i(are)e(the)g(same)g(as)g(those)f(used)i(b)o(y)f
-Fg(M-f)p Fm(.)75 668 y Fg(M-)123 666 y Ff(h)p 135 640
-73 2 v 135 668 a Fe(DEL)p 135 675 V 206 666 a Ff(i)315
-668 y Fm(Kill)i(from)e(the)g(cursor)g(the)h(start)e(of)h(the)g(curren)o
-(t)g(w)o(ord,)f(or,)h(if)g(b)q(et)o(w)o(een)h(w)o(ords,)e(to)h(the)315
-723 y(start)j(of)h(the)g(previous)h(w)o(ord.)31 b(W)l(ord)19
-b(b)q(oundaries)h(are)f(the)h(same)e(as)h(those)g(used)h(b)o(y)315
-777 y Fg(M-b)p Fm(.)75 855 y Fg(C-w)168 b Fm(Kill)18
-b(from)d(the)g(cursor)h(to)f(the)g(previous)i(whitespace.)22
-b(This)16 b(is)g(di\013eren)o(t)g(than)f Fg(M-)1777 853
-y Ff(h)p 1789 827 V 1789 855 a Fe(DEL)p 1789 863 V 1860
-853 a Ff(i)315 910 y Fm(b)q(ecause)h(the)f(w)o(ord)g(b)q(oundaries)h
-(di\013er.)137 987 y(Here)21 b(is)h(ho)o(w)e(to)g Fc(y)o(ank)j
-Fm(the)e(text)f(bac)o(k)h(in)o(to)g(the)f(line.)39 b(Y)l(anking)21
-b(means)g(to)f(cop)o(y)h(the)g(most-)75 1042 y(recen)o(tly-killed)d
-(text)d(from)f(the)i(kill)h(bu\013er.)75 1120 y Fg(C-y)168
-b Fm(Y)l(ank)15 b(the)h(most)e(recen)o(tly)i(killed)h(text)e(bac)o(k)g
-(in)o(to)g(the)h(bu\013er)f(at)f(the)i(cursor.)75 1198
-y Fg(M-y)168 b Fm(Rotate)16 b(the)h(kill-ring,)j(and)d(y)o(ank)g(the)h
-(new)f(top.)26 b(Y)l(ou)17 b(can)h(only)g(do)f(this)h(if)f(the)h(prior)
-315 1252 y(command)d(is)h Fg(C-y)f Fm(or)f Fg(M-y)p Fm(.)75
-1361 y Fb(1.2.4)30 b(Readline)20 b(Argumen)n(ts)137 1457
-y Fm(Y)l(ou)15 b(can)g(pass)f(n)o(umeric)i(argumen)o(ts)e(to)g
-(Readline)h(commands.)20 b(Sometimes)15 b(the)g(argumen)o(t)e(acts)75
-1511 y(as)20 b(a)f(rep)q(eat)i(coun)o(t,)f(other)g(times)g(it)h(is)f
-(the)g Fd(sign)j Fm(of)c(the)h(argumen)o(t)g(that)f(is)i(signi\014can)o
-(t.)35 b(If)20 b(y)o(ou)75 1566 y(pass)d(a)f(negativ)o(e)h(argumen)o(t)
-f(to)g(a)g(command)h(whic)o(h)h(normally)f(acts)f(in)i(a)e(forw)o(ard)g
-(direction,)i(that)75 1621 y(command)g(will)h(act)e(in)i(a)e(bac)o(kw)o
-(ard)g(direction.)28 b(F)l(or)17 b(example,)i(to)e(kill)j(text)d(bac)o
-(k)g(to)g(the)h(start)e(of)75 1676 y(the)f(line,)i(y)o(ou)e(migh)o(t)g
-(t)o(yp)q(e)g(`)p Fl(M--)f(C-k)p Fm('.)137 1742 y(The)h(general)f(w)o
-(a)o(y)f(to)h(pass)g(n)o(umeric)h(argumen)o(ts)e(to)g(a)h(command)g(is)
-h(to)e(t)o(yp)q(e)h(meta)g(digits)h(b)q(efore)75 1797
-y(the)h(command.)k(If)c(the)f(\014rst)g(`digit')h(t)o(yp)q(ed)f(is)h(a)
-g(min)o(us)g(sign)g(\(`)p Fl(-)p Fm('\),)d(then)j(the)f(sign)h(of)f
-(the)h(argumen)o(t)75 1852 y(will)21 b(b)q(e)f(negativ)o(e.)31
-b(Once)20 b(y)o(ou)f(ha)o(v)o(e)g(t)o(yp)q(ed)g(one)g(meta)g(digit)h
-(to)e(get)h(the)g(argumen)o(t)f(started,)h(y)o(ou)75
-1906 y(can)c(t)o(yp)q(e)f(the)h(remainder)g(of)f(the)g(digits,)h(and)g
-(then)g(the)f(command.)20 b(F)l(or)13 b(example,)i(to)f(giv)o(e)h(the)f
-Fg(C-d)75 1961 y Fm(command)19 b(an)f(argumen)o(t)g(of)g(10,)h(y)o(ou)f
-(could)i(t)o(yp)q(e)f(`)p Fl(M-1)14 b(0)h(C-d)p Fm(',)k(whic)o(h)g
-(will)h(delete)g(the)f(next)g(ten)75 2016 y(c)o(haracters)14
-b(on)i(the)f(input)h(line.)75 2125 y Fb(1.2.5)30 b(Searc)n(hing)21
-b(for)f(Commands)h(in)f(the)h(History)137 2220 y Fm(Readline)d(pro)o
-(vides)e(commands)g(for)g(searc)o(hing)g(through)g(the)g(command)g
-(history)g(for)g(lines)i(con-)75 2275 y(taining)e(a)f(sp)q(eci\014ed)i
-(string.)j(There)c(are)e(t)o(w)o(o)g(searc)o(h)h(mo)q(des:)20
-b Fc(incremen)o(tal)e Fm(and)e Fc(non-incremen)o(tal)p
-Fm(.)137 2341 y(Incremen)o(tal)e(searc)o(hes)f(b)q(egin)h(b)q(efore)f
-(the)g(user)g(has)g(\014nished)h(t)o(yping)f(the)g(searc)o(h)g(string.)
-19 b(As)13 b(eac)o(h)75 2396 y(c)o(haracter)k(of)g(the)h(searc)o(h)g
-(string)f(is)h(t)o(yp)q(ed,)h(Readline)g(displa)o(ys)f(the)g(next)g(en)
-o(try)f(from)g(the)h(history)75 2451 y(matc)o(hing)12
-b(the)g(string)g(t)o(yp)q(ed)g(so)g(far.)18 b(An)13 b(incremen)o(tal)g
-(searc)o(h)f(requires)g(only)h(as)f(man)o(y)f(c)o(haracters)g(as)75
-2506 y(needed)16 b(to)d(\014nd)j(the)e(desired)i(history)e(en)o(try)l
-(.)19 b(T)l(o)c(searc)o(h)f(bac)o(kw)o(ard)f(in)j(the)e(history)g(for)g
-(a)g(particular)75 2560 y(string,)g(t)o(yp)q(e)h Fg(C-r)p
-Fm(.)k(T)o(yping)d Fg(C-s)e Fm(searc)o(hes)h(forw)o(ard)e(through)h
-(the)h(history)l(.)20 b(The)15 b(c)o(haracters)f(presen)o(t)75
-2615 y(in)20 b(the)f(v)m(alue)h(of)f(the)g Fl(isearch-terminators)d
-Fm(v)m(ariable)k(are)f(used)h(to)e(terminate)h(an)g(incremen)o(tal)75
-2670 y(searc)o(h.)31 b(If)19 b(that)f(v)m(ariable)i(has)f(not)f(b)q
-(een)i(assigned)g(a)e(v)m(alue,)j(the)1289 2668 y Ff(h)p
-1301 2642 70 2 v 1301 2670 a Fe(ESC)p 1301 2678 V 1368
-2668 a Ff(i)1402 2670 y Fm(and)e Fg(C-J)f Fm(c)o(haracters)g(will)p
-eop
-%%Page: 4 6
-4 5 bop 75 -58 a Fm(4)1322 b(GNU)15 b(Readline)h(Library)75
-149 y(terminate)21 b(an)g(incremen)o(tal)i(searc)o(h.)37
-b Fg(C-g)21 b Fm(will)i(ab)q(ort)e(an)g(incremen)o(tal)h(searc)o(h)f
-(and)g(restore)g(the)75 204 y(original)16 b(line.)21
-b(When)15 b(the)f(searc)o(h)g(is)h(terminated,)g(the)f(history)h(en)o
-(try)f(con)o(taining)h(the)g(searc)o(h)f(string)75 259
-y(b)q(ecomes)i(the)f(curren)o(t)g(line.)137 325 y(T)l(o)g(\014nd)i
-(other)e(matc)o(hing)g(en)o(tries)h(in)h(the)e(history)h(list,)g(t)o
-(yp)q(e)f Fg(C-r)g Fm(or)g Fg(C-s)g Fm(as)h(appropriate.)k(This)75
-380 y(will)15 b(searc)o(h)e(bac)o(kw)o(ard)f(or)g(forw)o(ard)g(in)i
-(the)f(history)g(for)g(the)g(next)g(en)o(try)g(matc)o(hing)g(the)g
-(searc)o(h)g(string)75 434 y(t)o(yp)q(ed)19 b(so)g(far.)30
-b(An)o(y)19 b(other)f(k)o(ey)h(sequence)h(b)q(ound)g(to)e(a)h(Readline)
-h(command)e(will)j(terminate)e(the)75 489 y(searc)o(h)10
-b(and)h(execute)g(that)f(command.)18 b(F)l(or)10 b(instance,)i(a)1063
-487 y Ff(h)p 1076 461 76 2 v 1076 489 a Fe(RET)p 1076
-497 V 1149 487 a Ff(i)1174 489 y Fm(will)g(terminate)f(the)g(searc)o(h)
-f(and)h(accept)75 544 y(the)k(line,)h(thereb)o(y)f(executing)g(the)g
-(command)g(from)f(the)g(history)h(list.)20 b(A)15 b(mo)o(v)o(emen)o(t)f
-(command)g(will)75 599 y(terminate)h(the)g(searc)o(h,)g(mak)o(e)g(the)g
-(last)g(line)i(found)f(the)f(curren)o(t)g(line,)h(and)g(b)q(egin)g
-(editing.)137 665 y(Readline)j(remem)o(b)q(ers)e(the)h(last)f(incremen)
-o(tal)i(searc)o(h)e(string.)27 b(If)17 b(t)o(w)o(o)f
-Fg(C-r)p Fm(s)h(are)g(t)o(yp)q(ed)h(without)75 719 y(an)o(y)g(in)o
-(terv)o(ening)h(c)o(haracters)f(de\014ning)h(a)f(new)h(searc)o(h)f
-(string,)g(an)o(y)g(remem)o(b)q(ered)h(searc)o(h)f(string)g(is)75
-774 y(used.)137 840 y(Non-incremen)o(tal)25 b(searc)o(hes)e(read)h(the)
-f(en)o(tire)h(searc)o(h)f(string)g(b)q(efore)h(starting)f(to)f(searc)o
-(h)i(for)75 895 y(matc)o(hing)d(history)h(lines.)39 b(The)22
-b(searc)o(h)f(string)g(ma)o(y)g(b)q(e)h(t)o(yp)q(ed)f(b)o(y)h(the)f
-(user)h(or)e(b)q(e)i(part)f(of)g(the)75 950 y(con)o(ten)o(ts)15
-b(of)f(the)i(curren)o(t)f(line.)75 1074 y Fk(1.3)33 b(Readline)23
-b(Init)h(File)137 1169 y Fm(Although)f(the)g(Readline)h(library)f
-(comes)g(with)g(a)f(set)g(of)g(Emacs-lik)o(e)i(k)o(eybindings)g
-(installed)75 1224 y(b)o(y)d(default,)h(it)f(is)h(p)q(ossible)g(to)e
-(use)i(a)e(di\013eren)o(t)h(set)g(of)f(k)o(eybindings.)39
-b(An)o(y)20 b(user)h(can)g(customize)75 1278 y(programs)15
-b(that)h(use)g(Readline)i(b)o(y)e(putting)g(commands)g(in)i(an)e
-Fc(inputrc)k Fm(\014le,)d(con)o(v)o(en)o(tionally)g(in)g(his)75
-1333 y(home)g(directory)l(.)24 b(The)17 b(name)g(of)f(this)h(\014le)g
-(is)g(tak)o(en)g(from)e(the)i(v)m(alue)h(of)e(the)h(en)o(vironmen)o(t)g
-(v)m(ariable)75 1388 y Fl(INPUTRC)p Fm(.)i(If)c(that)g(v)m(ariable)h
-(is)g(unset,)f(the)g(default)h(is)g(`)p Fl(~/.inputrc)p
-Fm('.)137 1454 y(When)f(a)g(program)f(whic)o(h)h(uses)g(the)g(Readline)
-h(library)g(starts)d(up,)i(the)g(init)h(\014le)g(is)f(read,)g(and)g
-(the)75 1509 y(k)o(ey)g(bindings)i(are)e(set.)137 1574
-y(In)f(addition,)h(the)e Fl(C-x)i(C-r)e Fm(command)g(re-reads)h(this)g
-(init)g(\014le,)h(th)o(us)e(incorp)q(orating)h(an)o(y)f(c)o(hanges)75
-1629 y(that)h(y)o(ou)h(migh)o(t)g(ha)o(v)o(e)g(made)g(to)g(it.)75
-1737 y Fb(1.3.1)30 b(Readline)20 b(Init)g(File)h(Syn)n(tax)137
-1832 y Fm(There)c(are)g(only)g(a)g(few)f(basic)i(constructs)e(allo)o(w)
-o(ed)i(in)f(the)g(Readline)h(init)g(\014le.)26 b(Blank)18
-b(lines)g(are)75 1886 y(ignored.)36 b(Lines)22 b(b)q(eginning)h(with)d
-(a)h(`)p Fl(#)p Fm(')e(are)h(commen)o(ts.)35 b(Lines)22
-b(b)q(eginning)h(with)e(a)f(`)p Fl($)p Fm(')f(indicate)75
-1941 y(conditional)c(constructs)f(\(see)g(Section)g(1.3.2)f
-([Conditional)h(Init)h(Constructs],)e(page)h(9\).)k(Other)c(lines)75
-1996 y(denote)h(v)m(ariable)i(settings)e(and)h(k)o(ey)f(bindings.)75
-2073 y(V)l(ariable)h(Settings)315 2128 y(Y)l(ou)k(can)h(mo)q(dify)g
-(the)f(run-time)h(b)q(eha)o(vior)g(of)e(Readline)j(b)o(y)e(altering)h
-(the)f(v)m(alues)h(of)315 2182 y(v)m(ariables)d(in)g(Readline)g(using)f
-(the)g Fl(set)g Fm(command)f(within)i(the)f(init)h(\014le.)26
-b(The)17 b(syn)o(tax)315 2237 y(is)f(simple:)435 2300
-y Fl(set)23 b Fc(v)m(ariable)28 b(v)m(alue)315 2366 y
-Fm(Here,)14 b(for)f(example,)h(is)g(ho)o(w)f(to)g(c)o(hange)h(from)f
-(the)h(default)g(Emacs-lik)o(e)h(k)o(ey)e(binding)j(to)315
-2421 y(use)g Fl(vi)e Fm(line)j(editing)g(commands:)435
-2484 y Fl(set)23 b(editing-mode)g(vi)315 2549 y Fm(V)l(ariable)c(names)
-e(and)h(v)m(alues,)h(where)e(appropriate,)h(are)f(recognized)i(without)
-e(regard)315 2604 y(to)e(case.)315 2670 y(A)g(great)g(deal)g(of)g
-(run-time)h(b)q(eha)o(vior)g(is)g(c)o(hangeable)g(with)f(the)h(follo)o
-(wing)f(v)m(ariables.)p eop
-%%Page: 5 7
-5 6 bop 75 -58 a Fm(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077
-b(5)315 149 y Fl(bell-style)555 204 y Fm(Con)o(trols)21
-b(what)h(happ)q(ens)h(when)f(Readline)h(w)o(an)o(ts)e(to)g(ring)i(the)f
-(termi-)555 259 y(nal)d(b)q(ell.)32 b(If)19 b(set)f(to)g(`)p
-Fl(none)p Fm(',)g(Readline)i(nev)o(er)f(rings)g(the)f(b)q(ell.)32
-b(If)19 b(set)g(to)555 314 y(`)p Fl(visible)p Fm(',)c(Readline)i(uses)g
-(a)f(visible)j(b)q(ell)g(if)e(one)f(is)h(a)o(v)m(ailable.)26
-b(If)16 b(set)h(to)555 369 y(`)p Fl(audible)p Fm(')g(\(the)h
-(default\),)i(Readline)g(attempts)e(to)g(ring)h(the)g(terminal's)555
-423 y(b)q(ell.)315 504 y Fl(comment-begin)555 559 y Fm(The)c(string)f
-(to)g(insert)i(at)d(the)i(b)q(eginning)i(of)d(the)h(line)h(when)f(the)g
-Fl(insert-)555 614 y(comment)f Fm(command)h(is)h(executed.)21
-b(The)15 b(default)h(v)m(alue)g(is)g Fl("#")p Fm(.)315
-694 y Fl(completion-ignore-case)555 749 y Fm(If)e(set)f(to)g(`)p
-Fl(on)p Fm(',)g(Readline)i(p)q(erforms)e(\014lename)i(matc)o(hing)f
-(and)g(completion)555 804 y(in)i(a)f(case-insensitiv)o(e)i(fashion.)k
-(The)15 b(default)h(v)m(alue)g(is)g(`)p Fl(off)p Fm('.)315
-884 y Fl(completion-query-items)555 939 y Fm(The)d(n)o(um)o(b)q(er)h
-(of)e(p)q(ossible)j(completions)g(that)d(determines)i(when)g(the)f
-(user)555 994 y(is)21 b(ask)o(ed)g(whether)g(he)h(w)o(an)o(ts)d(to)i
-(see)g(the)g(list)h(of)e(p)q(ossibilitie)q(s.)40 b(If)21
-b(the)555 1049 y(n)o(um)o(b)q(er)14 b(of)f(p)q(ossible)i(completions)f
-(is)g(greater)f(than)g(this)h(v)m(alue,)h(Readline)555
-1104 y(will)g(ask)e(the)g(user)h(whether)f(or)g(not)g(he)g(wishes)h(to)
-f(view)h(them;)f(otherwise,)555 1158 y(they)f(are)g(simply)i(listed.)20
-b(This)13 b(v)m(ariable)g(m)o(ust)f(b)q(e)h(set)f(to)f(an)h(in)o(teger)
-h(v)m(alue)555 1213 y(greater)h(than)h(or)g(equal)h(to)f(0.)k(The)d
-(default)f(limit)i(is)f Fl(100)p Fm(.)315 1294 y Fl(convert-meta)555
-1348 y Fm(If)11 b(set)g(to)g(`)p Fl(on)p Fm(',)f(Readline)i(will)h(con)
-o(v)o(ert)d(c)o(haracters)h(with)g(the)g(eigh)o(th)h(bit)f(set)555
-1403 y(to)f(an)h Fh(asci)q(i)e Fm(k)o(ey)i(sequence)g(b)o(y)g
-(stripping)h(the)e(eigh)o(th)h(bit)h(and)e(pre\014xing)i(an)555
-1456 y Ff(h)p 567 1430 70 2 v 567 1458 a Fe(ESC)p 567
-1466 V 634 1456 a Ff(i)666 1458 y Fm(c)o(haracter,)k(con)o(v)o(erting)h
-(them)g(to)f(a)h(meta-pre\014xed)g(k)o(ey)g(sequence.)555
-1513 y(The)e(default)h(v)m(alue)h(is)e(`)p Fl(on)p Fm('.)315
-1593 y Fl(disable-completion)555 1648 y Fm(If)k(set)f(to)f(`)p
-Fl(On)p Fm(',)h(Readline)i(will)g(inhibit)g(w)o(ord)e(completion.)30
-b(Completion)555 1703 y(c)o(haracters)12 b(will)j(b)q(e)f(inserted)g
-(in)o(to)f(the)g(line)h(as)f(if)h(they)f(had)g(b)q(een)h(mapp)q(ed)555
-1758 y(to)h Fl(self-insert)p Fm(.)j(The)d(default)h(is)g(`)p
-Fl(off)p Fm('.)315 1838 y Fl(editing-mode)555 1893 y
-Fm(The)f Fl(editing-mode)d Fm(v)m(ariable)k(con)o(trols)e(whic)o(h)h
-(default)g(set)f(of)g(k)o(ey)g(bind-)555 1948 y(ings)f(is)g(used.)20
-b(By)12 b(default,)i(Readline)f(starts)f(up)h(in)g(Emacs)f(editing)i
-(mo)q(de,)555 2003 y(where)h(the)f(k)o(eystrok)o(es)g(are)g(most)g
-(similar)i(to)d(Emacs.)20 b(This)15 b(v)m(ariable)h(can)555
-2058 y(b)q(e)g(set)f(to)f(either)i(`)p Fl(emacs)p Fm(')e(or)h(`)p
-Fl(vi)p Fm('.)315 2138 y Fl(enable-keypad)555 2193 y
-Fm(When)d(set)f(to)h(`)p Fl(on)p Fm(',)e(Readline)j(will)h(try)d(to)g
-(enable)i(the)f(application)h(k)o(eypad)555 2248 y(when)h(it)f(is)h
-(called.)21 b(Some)13 b(systems)g(need)h(this)g(to)f(enable)h(the)g
-(arro)o(w)e(k)o(eys.)555 2303 y(The)j(default)h(is)g(`)p
-Fl(off)p Fm('.)315 2383 y Fl(expand-tilde)555 2438 y
-Fm(If)e(set)g(to)f(`)p Fl(on)p Fm(',)f(tilde)k(expansion)e(is)h(p)q
-(erformed)f(when)g(Readline)h(attempts)555 2493 y(w)o(ord)g
-(completion.)21 b(The)15 b(default)h(is)f(`)p Fl(off)p
-Fm('.)555 2560 y(If)g(set)g(to)f(`)p Fl(on)p Fm(',)g(the)g(history)h
-(co)q(de)h(attempts)e(to)g(place)i(p)q(oin)o(t)f(at)f(the)h(same)555
-2615 y(lo)q(cation)20 b(on)f(eac)o(h)g(history)h(line)g(retriv)o(ed)g
-(with)f Fl(previous-history)e Fm(or)555 2670 y Fl(next-history)p
-Fm(.)p eop
-%%Page: 6 8
-6 7 bop 75 -58 a Fm(6)1322 b(GNU)15 b(Readline)h(Library)315
-149 y Fl(horizontal-scroll-mode)555 204 y Fm(This)j(v)m(ariable)g(can)f
-(b)q(e)g(set)g(to)f(either)i(`)p Fl(on)p Fm(')e(or)g(`)p
-Fl(off)p Fm('.)27 b(Setting)19 b(it)f(to)f(`)p Fl(on)p
-Fm(')555 259 y(means)c(that)f(the)i(text)e(of)h(the)g(lines)i(b)q(eing)
-f(edited)g(will)h(scroll)f(horizon)o(tally)555 314 y(on)i(a)f(single)i
-(screen)g(line)g(when)g(they)f(are)f(longer)h(than)g(the)g(width)g(of)g
-(the)555 369 y(screen,)e(instead)f(of)g(wrapping)g(on)o(to)f(a)h(new)g
-(screen)h(line.)21 b(By)13 b(default,)h(this)555 423
-y(v)m(ariable)j(is)e(set)g(to)g(`)p Fl(off)p Fm('.)315
-506 y Fl(input-meta)555 560 y Fm(If)h(set)f(to)g(`)p
-Fl(on)p Fm(',)f(Readline)j(will)h(enable)e(eigh)o(t-bit)h(input)f(\(it)
-g(will)h(not)e(clear)555 615 y(the)20 b(eigh)o(th)g(bit)g(in)h(the)f(c)
-o(haracters)f(it)h(reads\),)g(regardless)g(of)g(what)f(the)555
-670 y(terminal)i(claims)g(it)f(can)g(supp)q(ort.)34 b(The)20
-b(default)h(v)m(alue)g(is)g(`)p Fl(off)p Fm('.)33 b(The)555
-725 y(name)15 b Fl(meta-flag)f Fm(is)i(a)f(synon)o(ym)g(for)f(this)i(v)
-m(ariable.)315 807 y Fl(isearch-terminators)555 862 y
-Fm(The)26 b(string)g(of)f(c)o(haracters)g(that)g(should)i(terminate)f
-(an)g(incremen)o(tal)555 917 y(searc)o(h)12 b(without)h(subsequen)o
-(tly)g(executing)h(the)e(c)o(haracter)g(as)g(a)g(command)555
-971 y(\(see)22 b(Section)h(1.2.5)e([Searc)o(hing],)j(page)e(3\).)40
-b(If)23 b(this)g(v)m(ariable)g(has)f(not)555 1026 y(b)q(een)17
-b(giv)o(en)f(a)g(v)m(alue,)g(the)g(c)o(haracters)1247
-1024 y Ff(h)p 1259 998 70 2 v 1259 1026 a Fe(ESC)p 1259
-1034 V 1326 1024 a Ff(i)1357 1026 y Fm(and)g Fg(C-J)f
-Fm(will)i(terminate)f(an)555 1081 y(incremen)o(tal)g(searc)o(h.)315
-1163 y Fl(keymap)96 b Fm(Sets)19 b(Readline's)i(idea)f(of)f(the)g
-(curren)o(t)h(k)o(eymap)f(for)f(k)o(ey)i(binding)h(com-)555
-1218 y(mands.)41 b(Acceptable)23 b Fl(keymap)f Fm(names)g(are)f
-Fl(emacs)p Fm(,)i Fl(emacs-standard)p Fm(,)555 1273 y
-Fl(emacs-meta)p Fm(,)49 b Fl(emacs-ctlx)p Fm(,)g Fl(vi)p
-Fm(,)h Fl(vi-move)p Fm(,)f Fl(vi-command)p Fm(,)g(and)555
-1328 y Fl(vi-insert)p Fm(.)31 b Fl(vi)20 b Fm(is)g(equiv)m(alen)o(t)h
-(to)e Fl(vi-command)p Fm(;)g Fl(emacs)g Fm(is)h(equiv)m(alen)o(t)555
-1382 y(to)15 b Fl(emacs-standard)p Fm(.)20 b(The)d(default)f(v)m(alue)h
-(is)g Fl(emacs)p Fm(.)k(The)16 b(v)m(alue)h(of)f(the)555
-1437 y Fl(editing-mode)e Fm(v)m(ariable)i(also)f(a\013ects)g(the)g
-(default)h(k)o(eymap.)315 1519 y Fl(mark-directories)555
-1574 y Fm(If)j(set)g(to)g(`)p Fl(on)p Fm(',)f(completed)i(directory)g
-(names)f(ha)o(v)o(e)f(a)h(slash)h(app)q(ended.)555 1629
-y(The)15 b(default)h(is)g(`)p Fl(on)p Fm('.)315 1711
-y Fl(mark-modified-lines)555 1766 y Fm(This)j(v)m(ariable,)g(when)g
-(set)e(to)h(`)p Fl(on)p Fm(',)f(causes)h(Readline)h(to)e(displa)o(y)i
-(an)f(as-)555 1821 y(terisk)f(\(`)p Fl(*)p Fm('\))e(at)i(the)f(start)g
-(of)h(history)f(lines)j(whic)o(h)e(ha)o(v)o(e)g(b)q(een)h(mo)q
-(di\014ed.)555 1875 y(This)e(v)m(ariable)g(is)g(`)p Fl(off)p
-Fm(')e(b)o(y)h(default.)315 1958 y Fl(mark-symlinked-directories)555
-2012 y Fm(If)23 b(set)f(to)f(`)p Fl(on)p Fm(',)i(completed)g(names)g
-(whic)o(h)g(are)f(sym)o(b)q(olic)i(links)f(to)f(di-)555
-2067 y(rectories)h(ha)o(v)o(e)g(a)g(slash)g(app)q(ended)i(\(sub)s(ject)
-e(to)f(the)i(v)m(alue)g(of)f Fl(mark-)555 2122 y(directories)p
-Fm(\).)18 b(The)d(default)h(is)g(`)p Fl(off)p Fm('.)315
-2204 y Fl(match-hidden-files)555 2259 y Fm(This)c(v)m(ariable,)h(when)e
-(set)g(to)g(`)p Fl(on)p Fm(',)f(causes)h(Readline)i(to)d(matc)o(h)h
-(\014les)h(whose)555 2314 y(names)22 b(b)q(egin)h(with)g(a)e(`)p
-Fl(.)p Fm(')h(\(hidden)h(\014les\))g(when)f(p)q(erforming)h(\014lename)
-555 2369 y(completion,)g(unless)f(the)f(leading)h(`)p
-Fl(.)p Fm(')e(is)h(supplied)i(b)o(y)e(the)f(user)h(in)h(the)555
-2423 y(\014lename)16 b(to)f(b)q(e)h(completed.)21 b(This)15
-b(v)m(ariable)i(is)f(`)p Fl(on)p Fm(')e(b)o(y)h(default.)315
-2506 y Fl(output-meta)555 2560 y Fm(If)j(set)f(to)g(`)p
-Fl(on)p Fm(',)g(Readline)i(will)h(displa)o(y)f(c)o(haracters)d(with)j
-(the)e(eigh)o(th)h(bit)555 2615 y(set)g(directly)i(rather)d(than)h(as)g
-(a)g(meta-pre\014xed)h(escap)q(e)g(sequence.)30 b(The)555
-2670 y(default)16 b(is)f(`)p Fl(off)p Fm('.)p eop
-%%Page: 7 9
-7 8 bop 75 -58 a Fm(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077
-b(7)315 149 y Fl(page-completions)555 204 y Fm(If)17
-b(set)g(to)f(`)p Fl(on)p Fm(',)g(Readline)i(uses)g(an)e(in)o(ternal)i
-Fl(more)p Fm(-lik)o(e)g(pager)f(to)f(displa)o(y)555 259
-y(a)g(screenful)h(of)f(p)q(ossible)i(completions)f(at)f(a)g(time.)23
-b(This)17 b(v)m(ariable)g(is)g(`)p Fl(on)p Fm(')555 314
-y(b)o(y)e(default.)315 395 y Fl(print-completions-horizont)o(ally)555
-450 y Fm(If)d(set)g(to)f(`)p Fl(on)p Fm(',)h(Readline)h(will)g(displa)o
-(y)h(completions)f(with)f(matc)o(hes)f(sorted)555 505
-y(horizon)o(tally)23 b(in)f(alphab)q(etical)i(order,)f(rather)e(than)g
-(do)o(wn)h(the)g(screen.)555 560 y(The)15 b(default)h(is)g(`)p
-Fl(off)p Fm('.)315 641 y Fl(show-all-if-ambiguous)555
-696 y Fm(This)g(alters)e(the)i(default)f(b)q(eha)o(vior)h(of)e(the)h
-(completion)h(functions.)21 b(If)15 b(set)555 751 y(to)e(`)p
-Fl(on)p Fm(',)g(w)o(ords)g(whic)o(h)h(ha)o(v)o(e)g(more)f(than)g(one)h
-(p)q(ossible)i(completion)f(cause)555 806 y(the)20 b(matc)o(hes)f(to)f
-(b)q(e)j(listed)f(immediately)h(instead)f(of)f(ringing)i(the)e(b)q
-(ell.)555 861 y(The)c(default)h(v)m(alue)h(is)e(`)p Fl(off)p
-Fm('.)315 942 y Fl(visible-stats)555 997 y Fm(If)h(set)g(to)f(`)p
-Fl(on)p Fm(',)g(a)h(c)o(haracter)f(denoting)h(a)g(\014le's)h(t)o(yp)q
-(e)f(is)g(app)q(ended)i(to)d(the)555 1052 y(\014lename)h(when)g
-(listing)h(p)q(ossible)g(completions.)j(The)c(default)g(is)f(`)p
-Fl(off)p Fm('.)75 1133 y(Key)h(Bindings)315 1188 y(The)21
-b(syn)o(tax)f(for)h(con)o(trolling)h(k)o(ey)f(bindings)h(in)g(the)f
-(init)h(\014le)g(is)g(simple.)39 b(First)20 b(y)o(ou)315
-1243 y(need)15 b(to)e(\014nd)h(the)g(name)g(of)g(the)f(command)h(that)f
-(y)o(ou)h(w)o(an)o(t)f(to)g(c)o(hange.)19 b(The)14 b(follo)o(wing)315
-1298 y(sections)k(con)o(tain)h(tables)f(of)f(the)h(command)g(name,)g
-(the)g(default)h(k)o(eybinding,)h(if)e(an)o(y)l(,)315
-1353 y(and)d(a)g(short)g(description)i(of)d(what)h(the)g(command)g(do)q
-(es.)315 1421 y(Once)k(y)o(ou)f(kno)o(w)f(the)h(name)g(of)g(the)g
-(command,)g(simply)h(place)g(on)f(a)f(line)j(in)f(the)f(init)315
-1476 y(\014le)g(the)f(name)g(of)f(the)h(k)o(ey)g(y)o(ou)f(wish)i(to)e
-(bind)i(the)f(command)g(to,)f(a)g(colon,)i(and)f(then)315
-1530 y(the)f(name)g(of)g(the)g(command.)22 b(The)16 b(name)g(of)g(the)g
-(k)o(ey)f(can)i(b)q(e)f(expressed)h(in)g(di\013eren)o(t)315
-1585 y(w)o(a)o(ys,)d(dep)q(ending)j(on)e(what)g(y)o(ou)g(\014nd)h(most)
-e(comfortable.)315 1653 y(In)19 b(addition)g(to)e(command)h(names,)g
-(readline)i(allo)o(ws)e(k)o(eys)g(to)f(b)q(e)i(b)q(ound)g(to)e(a)h
-(string)315 1708 y(that)c(is)i(inserted)g(when)g(the)f(k)o(ey)g(is)h
-(pressed)g(\(a)e Fc(macro)r Fm(\).)315 1790 y Fc(k)o(eyname)s
-Fm(:)19 b Fc(function-name)g Fm(or)c Fc(macro)555 1845
-y(k)o(eyname)i Fm(is)e(the)f(name)h(of)f(a)g(k)o(ey)g(sp)q(elled)j(out)
-d(in)h(English.)21 b(F)l(or)13 b(example:)675 1910 y
-Fl(Control-u:)22 b(universal-argument)675 1962 y(Meta-Rubout:)g
-(backward-kill-word)675 2014 y(Control-o:)g(">)i(output")555
-2082 y Fm(In)c(the)f(ab)q(o)o(v)o(e)g(example,)i Fg(C-u)e
-Fm(is)h(b)q(ound)g(to)f(the)g(function)h Fl(universal-)555
-2137 y(argument)p Fm(,)e Fg(M-DEL)h Fm(is)g(b)q(ound)h(to)e(the)h
-(function)h Fl(backward-kill-word)p Fm(,)555 2191 y(and)g
-Fg(C-o)f Fm(is)h(b)q(ound)g(to)f(run)h(the)f(macro)g(expressed)h(on)g
-(the)f(righ)o(t)h(hand)555 2246 y(side)c(\(that)e(is,)i(to)e(insert)i
-(the)f(text)g(`)p Fl(>)f(output)p Fm(')g(in)o(to)i(the)f(line\).)555
-2314 y(A)k(n)o(um)o(b)q(er)f(of)g(sym)o(b)q(olic)i(c)o(haracter)e
-(names)g(are)g(recognized)i(while)g(pro-)555 2369 y(cessing)13
-b(this)f(k)o(ey)g(binding)h(syn)o(tax:)18 b Fc(DEL)p
-Fm(,)11 b Fc(ESC)p Fm(,)h Fc(ESCAPE)p Fm(,)f Fc(LFD)p
-Fm(,)g Fc(NEW-)555 2424 y(LINE)p Fm(,)16 b Fc(RET)p Fm(,)e
-Fc(RETURN)p Fm(,)f Fc(R)o(UBOUT)p Fm(,)i Fc(SP)l(A)o(CE)p
-Fm(,)g Fc(SPC)p Fm(,)f(and)i Fc(T)l(AB)p Fm(.)315 2506
-y Fl(")p Fc(k)o(eyseq)q Fl(")p Fm(:)k Fc(function-name)e
-Fm(or)d Fc(macro)555 2560 y(k)o(eyseq)i Fm(di\013ers)e(from)g
-Fc(k)o(eyname)j Fm(ab)q(o)o(v)o(e)d(in)i(that)d(strings)i(denoting)g
-(an)f(en-)555 2615 y(tire)i(k)o(ey)g(sequence)h(can)f(b)q(e)g(sp)q
-(eci\014ed,)i(b)o(y)e(placing)h(the)f(k)o(ey)g(sequence)h(in)555
-2670 y(double)e(quotes.)j(Some)c Fh(gnu)g Fm(Emacs)f(st)o(yle)h(k)o(ey)
-g(escap)q(es)g(can)g(b)q(e)g(used,)g(as)p eop
-%%Page: 8 10
-8 9 bop 75 -58 a Fm(8)1322 b(GNU)15 b(Readline)h(Library)555
-149 y(in)i(the)f(follo)o(wing)g(example,)h(but)f(the)g(sp)q(ecial)i(c)o
-(haracter)d(names)h(are)f(not)555 204 y(recognized.)675
-270 y Fl("\\C-u":)23 b(universal-argument)675 322 y("\\C-x\\C-r":)f
-(re-read-init-file)675 373 y("\\e[11~":)h("Function)f(Key)i(1")555
-442 y Fm(In)33 b(the)f(ab)q(o)o(v)o(e)g(example,)37 b
-Fg(C-u)32 b Fm(is)h(again)f(b)q(ound)h(to)f(the)g(function)555
-497 y Fl(universal-argument)19 b Fm(\(just)j(as)f(it)h(w)o(as)f(in)i
-(the)f(\014rst)f(example\),)j(`)p Fg(C-x)555 551 y(C-r)p
-Fm(')c(is)h(b)q(ound)g(to)f(the)h(function)g Fl(re-read-init-file)p
-Fm(,)f(and)g(`)1731 549 y Ff(h)p 1743 523 70 2 v 1743
-551 a Fe(ESC)p 1743 559 V 1810 549 a Ff(i)15 b(h)p 1852
-523 10 2 v 1852 551 a Fe([)p 1852 560 V 1860 549 a Ff(i)555
-604 y(h)p 567 578 18 2 v 567 606 a Fe(1)p 567 614 V 583
-604 a Ff(i)g(h)p 625 578 V 625 606 a Fe(1)p 625 614 V
-640 604 a Ff(i)g(h)p 683 578 24 2 v 683 606 a Fl(~)p
-683 614 V 704 604 a Ff(i)719 606 y Fm(')g(is)h(b)q(ound)g(to)e(insert)i
-(the)f(text)g(`)p Fl(Function)f(Key)g(1)p Fm('.)315 688
-y(The)h(follo)o(wing)h Fh(gnu)e Fm(Emacs)h(st)o(yle)g(escap)q(e)h
-(sequences)g(are)e(a)o(v)m(ailable)j(when)e(sp)q(ecifying)315
-743 y(k)o(ey)g(sequences:)315 825 y Fg(\\C-)168 b Fm(con)o(trol)15
-b(pre\014x)315 907 y Fg(\\M-)168 b Fm(meta)15 b(pre\014x)315
-989 y Fg(\\e)192 b Fm(an)15 b(escap)q(e)h(c)o(haracter)315
-1071 y Fg(\\\\)192 b Fm(bac)o(kslash)315 1152 y Fg(\\)p
-Fl(")555 1150 y Ff(h)p 567 1124 V 567 1152 a Fl(")p 567
-1160 V 589 1150 a Ff(i)604 1152 y Fm(,)15 b(a)f(double)j(quotation)e
-(mark)315 1234 y Fg(\\')555 1232 y Ff(h)p 567 1206 10
-2 v 567 1234 a Fe(')p 567 1242 V 575 1232 a Ff(i)590
-1234 y Fm(,)g(a)f(single)j(quote)e(or)g(ap)q(ostrophe)315
-1316 y(In)f(addition)h(to)f(the)f Fh(gnu)h Fm(Emacs)g(st)o(yle)f(escap)
-q(e)i(sequences,)g(a)e(second)i(set)e(of)h(bac)o(kslash)315
-1371 y(escap)q(es)i(is)g(a)o(v)m(ailable:)315 1453 y
-Fl(\\a)192 b Fm(alert)15 b(\(b)q(ell\))315 1535 y Fl(\\b)192
-b Fm(bac)o(kspace)315 1617 y Fl(\\d)g Fm(delete)315 1699
-y Fl(\\f)g Fm(form)14 b(feed)315 1781 y Fl(\\n)192 b
-Fm(newline)315 1862 y Fl(\\r)g Fm(carriage)15 b(return)315
-1944 y Fl(\\t)192 b Fm(horizon)o(tal)16 b(tab)315 2026
-y Fl(\\v)192 b Fm(v)o(ertical)16 b(tab)315 2108 y Fl(\\)p
-Fc(nnn)141 b Fm(the)17 b(eigh)o(t-bit)h(c)o(haracter)f(whose)g(v)m
-(alue)i(is)e(the)h(o)q(ctal)f(v)m(alue)i Fc(nnn)f Fm(\(one)f(to)555
-2163 y(three)e(digits\))315 2245 y Fl(\\x)p Fc(HH)124
-b Fm(the)20 b(eigh)o(t-bit)g(c)o(haracter)f(whose)h(v)m(alue)h(is)f
-(the)g(hexadecimal)h(v)m(alue)g Fc(HH)555 2300 y Fm(\(one)15
-b(or)g(t)o(w)o(o)f(hex)h(digits\))315 2382 y(When)k(en)o(tering)g(the)g
-(text)f(of)g(a)h(macro,)f(single)i(or)e(double)i(quotes)f(m)o(ust)f(b)q
-(e)h(used)h(to)315 2436 y(indicate)12 b(a)f(macro)f(de\014nition.)20
-b(Unquoted)11 b(text)f(is)i(assumed)e(to)h(b)q(e)g(a)f(function)i
-(name.)18 b(In)315 2491 y(the)11 b(macro)f(b)q(o)q(dy)l(,)i(the)f(bac)o
-(kslash)g(escap)q(es)g(describ)q(ed)i(ab)q(o)o(v)o(e)d(are)g(expanded.)
-20 b(Bac)o(kslash)315 2546 y(will)i(quote)d(an)o(y)h(other)g(c)o
-(haracter)f(in)i(the)f(macro)f(text,)h(including)j(`)p
-Fl(")p Fm(')c(and)h(`)p Fl(')p Fm('.)34 b(F)l(or)315
-2601 y(example,)14 b(the)f(follo)o(wing)g(binding)i(will)g(mak)o(e)d(`)
-p Fg(C-x)i Fl(\\)p Fm(')f(insert)g(a)g(single)h(`)p Fl(\\)p
-Fm(')e(in)o(to)h(the)g(line:)435 2666 y Fl("\\C-x\\\\":)23
-b("\\\\")p eop
-%%Page: 9 11
-9 10 bop 75 -58 a Fm(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077
-b(9)75 149 y Fb(1.3.2)30 b(Conditional)20 b(Init)g(Constructs)137
-246 y Fm(Readline)f(implemen)o(ts)g(a)f(facilit)o(y)g(similar)h(in)g
-(spirit)f(to)f(the)h(conditional)h(compilation)g(features)75
-301 y(of)e(the)g(C)g(prepro)q(cessor)g(whic)o(h)i(allo)o(ws)e(k)o(ey)g
-(bindings)i(and)f(v)m(ariable)g(settings)f(to)g(b)q(e)h(p)q(erformed)f
-(as)75 355 y(the)e(result)h(of)f(tests.)k(There)c(are)g(four)g(parser)g
-(directiv)o(es)h(used.)75 435 y Fl($if)168 b Fm(The)16
-b Fl($if)f Fm(construct)g(allo)o(ws)h(bindings)i(to)d(b)q(e)h(made)g
-(based)g(on)f(the)h(editing)h(mo)q(de,)f(the)315 490
-y(terminal)k(b)q(eing)g(used,)g(or)f(the)g(application)i(using)e
-(Readline.)33 b(The)19 b(text)g(of)f(the)i(test)315 545
-y(extends)c(to)e(the)h(end)h(of)f(the)g(line;)i(no)e(c)o(haracters)f
-(are)h(required)i(to)d(isolate)i(it.)315 624 y Fl(mode)144
-b Fm(The)11 b Fl(mode=)e Fm(form)h(of)g(the)h Fl($if)f
-Fm(directiv)o(e)h(is)g(used)g(to)f(test)g(whether)h(Readline)555
-679 y(is)k(in)h Fl(emacs)e Fm(or)g Fl(vi)g Fm(mo)q(de.)20
-b(This)c(ma)o(y)e(b)q(e)h(used)g(in)h(conjunction)g(with)f(the)555
-734 y(`)p Fl(set)f(keymap)p Fm(')f(command,)g(for)h(instance,)g(to)f
-(set)h(bindings)h(in)g(the)f Fl(emacs-)555 789 y(standard)d
-Fm(and)i Fl(emacs-ctlx)e Fm(k)o(eymaps)h(only)i(if)f(Readline)g(is)g
-(starting)f(out)555 844 y(in)k Fl(emacs)f Fm(mo)q(de.)315
-923 y Fl(term)144 b Fm(The)14 b Fl(term=)e Fm(form)h(ma)o(y)g(b)q(e)h
-(used)g(to)f(include)j(terminal-sp)q(eci\014c)g(k)o(ey)d(bind-)555
-978 y(ings,)19 b(p)q(erhaps)g(to)e(bind)i(the)g(k)o(ey)e(sequences)j
-(output)e(b)o(y)g(the)g(terminal's)555 1033 y(function)13
-b(k)o(eys.)18 b(The)13 b(w)o(ord)e(on)h(the)g(righ)o(t)g(side)g(of)g
-(the)g(`)p Fl(=)p Fm(')f(is)h(tested)g(against)555 1088
-y(b)q(oth)j(the)g(full)i(name)e(of)f(the)h(terminal)h(and)f(the)g(p)q
-(ortion)h(of)e(the)h(terminal)555 1142 y(name)i(b)q(efore)g(the)g
-(\014rst)f(`)p Fl(-)p Fm('.)24 b(This)17 b(allo)o(ws)g
-Fl(sun)f Fm(to)g(matc)o(h)h(b)q(oth)f Fl(sun)h Fm(and)555
-1197 y Fl(sun-cmd)p Fm(,)d(for)g(instance.)315 1277 y
-Fl(application)555 1332 y Fm(The)d Fc(application)i Fm(construct)e(is)g
-(used)h(to)e(include)j(application-sp)q(eci)q(\014c)h(set-)555
-1386 y(tings.)19 b(Eac)o(h)12 b(program)f(using)j(the)e(Readline)i
-(library)f(sets)f(the)g Fc(application)555 1441 y(name)p
-Fm(,)g(and)g(y)o(ou)f(can)h(test)f(for)g(a)g(particular)h(v)m(alue.)20
-b(This)12 b(could)h(b)q(e)f(used)h(to)555 1496 y(bind)18
-b(k)o(ey)e(sequences)i(to)d(functions)j(useful)f(for)f(a)g(sp)q
-(eci\014c)i(program.)23 b(F)l(or)555 1551 y(instance,)17
-b(the)g(follo)o(wing)g(command)g(adds)f(a)g(k)o(ey)h(sequence)g(that)f
-(quotes)555 1606 y(the)f(curren)o(t)g(or)g(previous)h(w)o(ord)e(in)j
-(Bash:)675 1670 y Fl($if)23 b(Bash)675 1722 y(#)h(Quote)f(the)g
-(current)g(or)h(previous)f(word)675 1774 y("\\C-xq":)g
-("\\eb\\"\\ef\\"")675 1826 y($endif)75 1905 y($endif)96
-b Fm(This)16 b(command,)e(as)h(seen)h(in)g(the)f(previous)h(example,)g
-(terminates)f(an)g Fl($if)f Fm(command.)75 1985 y Fl($else)120
-b Fm(Commands)15 b(in)h(this)f(branc)o(h)h(of)e(the)i
-Fl($if)e Fm(directiv)o(e)j(are)e(executed)h(if)g(the)f(test)g(fails.)75
-2065 y Fl($include)48 b Fm(This)22 b(directiv)o(e)h(tak)o(es)e(a)h
-(single)h(\014lename)g(as)e(an)h(argumen)o(t)f(and)h(reads)f(commands)
-315 2120 y(and)e(bindings)j(from)c(that)h(\014le.)33
-b(F)l(or)19 b(example,)i(the)e(follo)o(wing)h(directiv)o(e)h(reads)e
-(from)315 2174 y(`)p Fl(/etc/inputrc)p Fm(':)435 2239
-y Fl($include)k(/etc/inputrc)75 2351 y Fb(1.3.3)30 b(Sample)20
-b(Init)h(File)137 2447 y Fm(Here)16 b(is)g(an)f(example)h(of)f(an)g
-Fc(inputrc)k Fm(\014le.)i(This)16 b(illustrates)g(k)o(ey)f(binding,)i
-(v)m(ariable)f(assignmen)o(t,)75 2502 y(and)f(conditional)i(syn)o(tax.)
-p eop
-%%Page: 10 12
-10 11 bop 75 -58 a Fm(10)1299 b(GNU)15 b(Readline)h(Library)195
-201 y Fl(#)24 b(This)f(file)g(controls)g(the)h(behaviour)e(of)i(line)f
-(input)g(editing)g(for)195 253 y(#)h(programs)e(that)i(use)f(the)h(GNU)
-f(Readline)g(library.)47 b(Existing)195 305 y(#)24 b(programs)e
-(include)h(FTP,)h(Bash,)f(and)g(GDB.)195 357 y(#)195
-409 y(#)h(You)f(can)h(re-read)f(the)g(inputrc)g(file)g(with)h(C-x)f
-(C-r.)195 461 y(#)h(Lines)f(beginning)g(with)g('#')g(are)h(comments.)
-195 513 y(#)195 565 y(#)g(First,)f(include)g(any)g(systemwide)g
-(bindings)f(and)i(variable)195 616 y(#)g(assignments)e(from)h
-(/etc/Inputrc)195 668 y($include)g(/etc/Inputrc)195 772
-y(#)195 824 y(#)h(Set)f(various)g(bindings)g(for)g(emacs)g(mode.)195
-928 y(set)g(editing-mode)g(emacs)195 1032 y($if)g(mode=emacs)195
-1135 y(Meta-Control-h:)46 b(backward-kill-word)21 b(Text)i(after)h(the)
-f(function)g(name)g(is)h(ignored)p 1986 1145 21 38 v
-195 1239 a(#)195 1291 y(#)g(Arrow)f(keys)g(in)h(keypad)f(mode)195
-1343 y(#)195 1395 y(#"\\M-OD":)190 b(backward-char)195
-1447 y(#"\\M-OC":)g(forward-char)195 1499 y(#"\\M-OA":)g
-(previous-history)195 1550 y(#"\\M-OB":)g(next-history)195
-1602 y(#)195 1654 y(#)24 b(Arrow)f(keys)g(in)h(ANSI)f(mode)195
-1706 y(#)195 1758 y("\\M-[D":)190 b(backward-char)195
-1810 y("\\M-[C":)g(forward-char)195 1862 y("\\M-[A":)g
-(previous-history)195 1914 y("\\M-[B":)g(next-history)195
-1966 y(#)195 2017 y(#)24 b(Arrow)f(keys)g(in)h(8)g(bit)f(keypad)g(mode)
-195 2069 y(#)195 2121 y(#"\\M-\\C-OD":)165 b(backward-char)195
-2173 y(#"\\M-\\C-OC":)g(forward-char)195 2225 y(#"\\M-\\C-OA":)g
-(previous-history)195 2277 y(#"\\M-\\C-OB":)g(next-history)195
-2329 y(#)195 2381 y(#)24 b(Arrow)f(keys)g(in)h(8)g(bit)f(ANSI)g(mode)
-195 2433 y(#)195 2484 y(#"\\M-\\C-[D":)165 b(backward-char)195
-2536 y(#"\\M-\\C-[C":)g(forward-char)195 2588 y(#"\\M-\\C-[A":)g
-(previous-history)195 2640 y(#"\\M-\\C-[B":)g(next-history)p
-eop
-%%Page: 11 13
-11 12 bop 75 -58 a Fm(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1055
-b(11)195 201 y Fl(C-q:)23 b(quoted-insert)195 305 y($endif)195
-409 y(#)h(An)f(old-style)g(binding.)47 b(This)23 b(happens)g(to)g(be)h
-(the)f(default.)195 461 y(TAB:)g(complete)195 565 y(#)h(Macros)f(that)g
-(are)h(convenient)e(for)h(shell)h(interaction)195 616
-y($if)f(Bash)195 668 y(#)h(edit)f(the)g(path)195 720
-y("\\C-xp":)g("PATH=${PATH}\\e\\C-e\\C-a\\)o(ef\\C-f")195
-772 y(#)h(prepare)f(to)g(type)h(a)f(quoted)g(word)h(--)195
-824 y(#)g(insert)f(open)g(and)h(close)f(double)g(quotes)195
-876 y(#)h(and)f(move)g(to)h(just)f(after)h(the)f(open)g(quote)195
-928 y("\\C-x\\"":)g("\\"\\"\\C-b")195 980 y(#)h(insert)f(a)g(backslash)
-g(\(testing)g(backslash)g(escapes)195 1032 y(#)h(in)f(sequences)g(and)g
-(macros\))195 1083 y("\\C-x\\\\":)g("\\\\")195 1135 y(#)h(Quote)f(the)g
-(current)g(or)h(previous)f(word)195 1187 y("\\C-xq":)g
-("\\eb\\"\\ef\\"")195 1239 y(#)h(Add)f(a)h(binding)f(to)g(refresh)g
-(the)h(line,)f(which)g(is)h(unbound)195 1291 y("\\C-xr":)f
-(redraw-current-line)195 1343 y(#)h(Edit)f(variable)g(on)g(current)g
-(line.)195 1395 y("\\M-\\C-v":)f("\\C-a\\C-k$\\C-y\\M-\\C-e\\C-a\\C-y=)
-o(")195 1447 y($endif)195 1550 y(#)i(use)f(a)h(visible)f(bell)g(if)h
-(one)f(is)h(available)195 1602 y(set)f(bell-style)g(visible)195
-1706 y(#)h(don't)f(strip)g(characters)g(to)g(7)h(bits)f(when)h(reading)
-195 1758 y(set)f(input-meta)g(on)195 1862 y(#)h(allow)f(iso-latin1)f
-(characters)h(to)g(be)h(inserted)f(rather)195 1914 y(#)h(than)f
-(converted)g(to)g(prefix-meta)g(sequences)195 1966 y(set)g
-(convert-meta)g(off)195 2069 y(#)h(display)f(characters)f(with)h(the)h
-(eighth)f(bit)g(set)h(directly)195 2121 y(#)g(rather)f(than)g(as)h
-(meta-prefixed)e(characters)195 2173 y(set)h(output-meta)g(on)195
-2277 y(#)h(if)f(there)g(are)h(more)f(than)h(150)f(possible)g
-(completions)f(for)195 2329 y(#)i(a)f(word,)h(ask)f(the)h(user)f(if)g
-(he)h(wants)f(to)h(see)f(all)h(of)f(them)195 2381 y(set)g
-(completion-query-items)e(150)195 2484 y(#)j(For)f(FTP)195
-2536 y($if)g(Ftp)195 2588 y("\\C-xg":)g("get)g(\\M-?")195
-2640 y("\\C-xt":)g("put)g(\\M-?")p eop
-%%Page: 12 14
-12 13 bop 75 -58 a Fm(12)1299 b(GNU)15 b(Readline)h(Library)195
-149 y Fl("\\M-.":)23 b(yank-last-arg)195 201 y($endif)75
-329 y Fk(1.4)33 b(Bindable)24 b(Readline)f(Commands)137
-425 y Fm(This)17 b(section)f(describ)q(es)h(Readline)g(commands)f(that)
-e(ma)o(y)h(b)q(e)i(b)q(ound)f(to)f(k)o(ey)h(sequences.)22
-b(Com-)75 480 y(mand)15 b(names)g(without)h(an)f(accompan)o(ying)g(k)o
-(ey)g(sequence)i(are)e(un)o(b)q(ound)h(b)o(y)f(default.)137
-547 y(In)f(the)f(follo)o(wing)h(descriptions,)h Fc(p)q(oin)o(t)f
-Fm(refers)f(to)g(the)g(curren)o(t)g(cursor)f(p)q(osition,)j(and)e
-Fc(mark)i Fm(refers)75 601 y(to)k(a)g(cursor)g(p)q(osition)h(sa)o(v)o
-(ed)f(b)o(y)h(the)f Fl(set-mark)g Fm(command.)32 b(The)20
-b(text)f(b)q(et)o(w)o(een)g(the)h(p)q(oin)o(t)g(and)75
-656 y(mark)15 b(is)g(referred)h(to)e(as)h(the)g Fc(region)p
-Fm(.)75 767 y Fb(1.4.1)30 b(Commands)21 b(F)-5 b(or)19
-b(Mo)n(ving)75 888 y Fl(beginning-of-line)13 b(\(C-a\))315
-942 y Fm(Mo)o(v)o(e)h(to)h(the)g(start)f(of)h(the)g(curren)o(t)g(line.)
-75 1034 y Fl(end-of-line)f(\(C-e\))315 1088 y Fm(Mo)o(v)o(e)g(to)h(the)
-g(end)h(of)f(the)g(line.)75 1179 y Fl(forward-char)f(\(C-f\))315
-1234 y Fm(Mo)o(v)o(e)g(forw)o(ard)g(a)h(c)o(haracter.)75
-1325 y Fl(backward-char)e(\(C-b\))315 1380 y Fm(Mo)o(v)o(e)h(bac)o(k)h
-(a)g(c)o(haracter.)75 1471 y Fl(forward-word)f(\(M-f\))315
-1526 y Fm(Mo)o(v)o(e)g(forw)o(ard)g(to)g(the)i(end)g(of)e(the)h(next)h
-(w)o(ord.)j(W)l(ords)c(are)f(comp)q(osed)i(of)f(letters)g(and)315
-1581 y(digits.)75 1672 y Fl(backward-word)e(\(M-b\))315
-1727 y Fm(Mo)o(v)o(e)j(bac)o(k)g(to)h(the)f(start)g(of)g(the)h(curren)o
-(t)g(or)f(previous)i(w)o(ord.)24 b(W)l(ords)16 b(are)h(comp)q(osed)315
-1782 y(of)e(letters)g(and)g(digits.)75 1873 y Fl(clear-screen)f
-(\(C-l\))315 1928 y Fm(Clear)f(the)h(screen)g(and)f(redra)o(w)g(the)g
-(curren)o(t)g(line,)i(lea)o(ving)g(the)e(curren)o(t)g(line)i(at)e(the)g
-(top)315 1982 y(of)i(the)g(screen.)75 2074 y Fl(redraw-current-line)e
-(\(\))315 2128 y Fm(Refresh)i(the)g(curren)o(t)g(line.)22
-b(By)15 b(default,)h(this)f(is)h(un)o(b)q(ound.)75 2239
-y Fb(1.4.2)30 b(Commands)21 b(F)-5 b(or)19 b(Manipulating)i(The)f
-(History)75 2360 y Fl(accept-line)14 b(\(Newline)g(or)h(Return\))315
-2414 y Fm(Accept)j(the)g(line)h(regardless)f(of)f(where)h(the)g(cursor)
-f(is.)27 b(If)18 b(this)g(line)h(is)g(non-empt)o(y)l(,)f(it)315
-2469 y(ma)o(y)d(b)q(e)i(added)f(to)g(the)g(history)g(list)g(for)g
-(future)g(recall)h(with)f Fl(add_history\(\))p Fm(.)k(If)d(this)315
-2524 y(line)g(is)f(a)e(mo)q(di\014ed)j(history)e(line,)i(the)e(history)
-g(line)i(is)f(restored)e(to)h(its)g(original)i(state.)75
-2615 y Fl(previous-history)c(\(C-p\))315 2670 y Fm(Mo)o(v)o(e)h(`bac)o
-(k')h(through)f(the)i(history)f(list,)g(fetc)o(hing)h(the)f(previous)h
-(command.)p eop
-%%Page: 13 15
-13 14 bop 75 -58 a Fm(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1055
-b(13)75 149 y Fl(next-history)14 b(\(C-n\))315 204 y
-Fm(Mo)o(v)o(e)g(`forw)o(ard')f(through)i(the)h(history)f(list,)g(fetc)o
-(hing)h(the)f(next)h(command.)75 307 y Fl(beginning-of-history)c
-(\(M-<\))315 362 y Fm(Mo)o(v)o(e)i(to)h(the)g(\014rst)g(line)i(in)f
-(the)f(history)l(.)75 465 y Fl(end-of-history)e(\(M->\))315
-520 y Fm(Mo)o(v)o(e)h(to)h(the)g(end)h(of)f(the)g(input)h(history)l(,)f
-(i.e.,)g(the)g(line)i(curren)o(tly)f(b)q(eing)g(en)o(tered.)75
-624 y Fl(reverse-search-history)c(\(C-r\))315 678 y Fm(Searc)o(h)k(bac)
-o(kw)o(ard)e(starting)h(at)g(the)h(curren)o(t)f(line)j(and)d(mo)o(ving)
-h(`up')f(through)g(the)h(his-)315 733 y(tory)e(as)h(necessary)l(.)20
-b(This)c(is)g(an)f(incremen)o(tal)h(searc)o(h.)75 836
-y Fl(forward-search-history)c(\(C-s\))315 891 y Fm(Searc)o(h)j(forw)o
-(ard)e(starting)h(at)h(the)f(curren)o(t)h(line)h(and)f(mo)o(ving)g(`do)
-o(wn')f(through)g(the)h(the)315 946 y(history)g(as)g(necessary)l(.)20
-b(This)c(is)g(an)f(incremen)o(tal)h(searc)o(h.)75 1049
-y Fl(non-incremental-reverse-se)o(arch-hi)o(story)c(\(M-p\))315
-1104 y Fm(Searc)o(h)k(bac)o(kw)o(ard)e(starting)h(at)g(the)h(curren)o
-(t)f(line)j(and)d(mo)o(ving)h(`up')f(through)g(the)h(his-)315
-1159 y(tory)h(as)h(necessary)g(using)h(a)e(non-incremen)o(tal)j(searc)o
-(h)e(for)f(a)h(string)g(supplied)i(b)o(y)e(the)315 1214
-y(user.)75 1317 y Fl(non-incremental-forward-se)o(arch-hi)o(story)12
-b(\(M-n\))315 1372 y Fm(Searc)o(h)j(forw)o(ard)e(starting)h(at)h(the)f
-(curren)o(t)h(line)h(and)f(mo)o(ving)g(`do)o(wn')f(through)g(the)h(the)
-315 1426 y(history)e(as)g(necessary)h(using)g(a)f(non-incremen)o(tal)i
-(searc)o(h)e(for)g(a)g(string)g(supplied)j(b)o(y)d(the)315
-1481 y(user.)75 1584 y Fl(history-search-forward)f(\(\))315
-1639 y Fm(Searc)o(h)21 b(forw)o(ard)e(through)i(the)f(history)h(for)f
-(the)h(string)g(of)f(c)o(haracters)g(b)q(et)o(w)o(een)h(the)315
-1694 y(start)16 b(of)h(the)h(curren)o(t)g(line)h(and)e(the)h(p)q(oin)o
-(t.)28 b(This)18 b(is)g(a)f(non-incremen)o(tal)i(searc)o(h.)27
-b(By)315 1749 y(default,)15 b(this)h(command)f(is)h(un)o(b)q(ound.)75
-1852 y Fl(history-search-backward)c(\(\))315 1907 y Fm(Searc)o(h)18
-b(bac)o(kw)o(ard)e(through)h(the)h(history)f(for)g(the)g(string)h(of)f
-(c)o(haracters)f(b)q(et)o(w)o(een)i(the)315 1962 y(start)e(of)h(the)h
-(curren)o(t)g(line)h(and)e(the)h(p)q(oin)o(t.)28 b(This)18
-b(is)g(a)f(non-incremen)o(tal)i(searc)o(h.)27 b(By)315
-2016 y(default,)15 b(this)h(command)f(is)h(un)o(b)q(ound.)75
-2120 y Fl(yank-nth-arg)e(\(M-C-y\))315 2174 y Fm(Insert)f(the)g
-(\014rst)g(argumen)o(t)f(to)g(the)i(previous)f(command)g(\(usually)h
-(the)f(second)h(w)o(ord)e(on)315 2229 y(the)j(previous)h(line\))g(at)e
-(p)q(oin)o(t.)21 b(With)15 b(an)g(argumen)o(t)f Fc(n)p
-Fm(,)h(insert)g(the)g Fc(n)p Fm(th)g(w)o(ord)g(from)f(the)315
-2284 y(previous)g(command)g(\(the)f(w)o(ords)f(in)j(the)e(previous)i
-(command)e(b)q(egin)i(with)e(w)o(ord)g(0\).)19 b(A)315
-2339 y(negativ)o(e)13 b(argumen)o(t)f(inserts)h(the)g
-Fc(n)p Fm(th)g(w)o(ord)f(from)g(the)h(end)h(of)e(the)h(previous)g
-(command.)75 2442 y Fl(yank-last-arg)g(\(M-.)i(or)g(M-_\))315
-2497 y Fm(Insert)j(last)f(argumen)o(t)g(to)g(the)g(previous)i(command)e
-(\(the)g(last)h(w)o(ord)f(of)g(the)g(previous)315 2552
-y(history)e(en)o(try\).)20 b(With)15 b(an)g(argumen)o(t,)g(b)q(eha)o(v)
-o(e)g(exactly)h(lik)o(e)g Fl(yank-nth-arg)p Fm(.)j(Succes-)315
-2606 y(siv)o(e)f(calls)g(to)f Fl(yank-last-arg)e Fm(mo)o(v)o(e)i(bac)o
-(k)g(through)g(the)g(history)g(list,)i(inserting)f(the)315
-2661 y(last)d(argumen)o(t)g(of)f(eac)o(h)i(line)g(in)g(turn.)p
-eop
-%%Page: 14 16
-14 15 bop 75 -58 a Fm(14)1299 b(GNU)15 b(Readline)h(Library)75
-149 y Fb(1.4.3)30 b(Commands)21 b(F)-5 b(or)19 b(Changing)i(T)-5
-b(ext)75 286 y Fl(delete-char)14 b(\(C-d\))315 341 y
-Fm(Delete)20 b(the)g(c)o(haracter)e(at)h(p)q(oin)o(t.)33
-b(If)20 b(p)q(oin)o(t)g(is)g(at)e(the)i(b)q(eginning)i(of)d(the)g
-(line,)j(there)315 396 y(are)c(no)h(c)o(haracters)e(in)j(the)e(line,)j
-(and)e(the)f(last)h(c)o(haracter)e(t)o(yp)q(ed)i(w)o(as)f(not)g(b)q
-(ound)i(to)315 450 y Fl(delete-char)p Fm(,)13 b(then)j(return)f
-Fh(eof)p Fm(.)75 552 y Fl(backward-delete-char)d(\(Rubout\))315
-607 y Fm(Delete)k(the)f(c)o(haracter)f(b)q(ehind)j(the)f(cursor.)j(A)c
-(n)o(umeric)h(argumen)o(t)e(means)i(to)e(kill)j(the)315
-661 y(c)o(haracters)d(instead)i(of)f(deleting)i(them.)75
-763 y Fl(forward-backward-delete-ch)o(ar)12 b(\(\))315
-818 y Fm(Delete)20 b(the)f(c)o(haracter)f(under)i(the)f(cursor,)h
-(unless)g(the)f(cursor)g(is)h(at)e(the)h(end)h(of)f(the)315
-872 y(line,)e(in)g(whic)o(h)g(case)e(the)h(c)o(haracter)g(b)q(ehind)h
-(the)f(cursor)g(is)g(deleted.)23 b(By)16 b(default,)h(this)315
-927 y(is)f(not)f(b)q(ound)h(to)e(a)h(k)o(ey)l(.)75 1029
-y Fl(quoted-insert)e(\(C-q)i(or)g(C-v\))315 1083 y Fm(Add)j(the)f(next)
-g(c)o(haracter)g(t)o(yp)q(ed)g(to)f(the)i(line)g(v)o(erbatim.)26
-b(This)18 b(is)f(ho)o(w)g(to)g(insert)g(k)o(ey)315 1138
-y(sequences)f(lik)o(e)h Fg(C-q)p Fm(,)d(for)h(example.)75
-1240 y Fl(tab-insert)f(\(M-)401 1238 y Ff(h)p 412 1212
-74 2 v 412 1240 a Fe(T)m(AB)p 412 1247 V 484 1238 a Ff(i)499
-1240 y Fl(\))315 1294 y Fm(Insert)h(a)g(tab)g(c)o(haracter.)75
-1396 y Fl(self-insert)f(\(a,)g(b,)h(A,)g(1,)g(!,)g(...)o(\))315
-1451 y Fm(Insert)g(y)o(ourself.)75 1552 y Fl(transpose-chars)e(\(C-t\))
-315 1607 y Fm(Drag)i(the)h(c)o(haracter)f(b)q(efore)h(the)h(cursor)e
-(forw)o(ard)g(o)o(v)o(er)g(the)h(c)o(haracter)f(at)h(the)g(cursor,)315
-1662 y(mo)o(ving)i(the)f(cursor)h(forw)o(ard)e(as)i(w)o(ell.)28
-b(If)18 b(the)g(insertion)h(p)q(oin)o(t)f(is)g(at)f(the)h(end)h(of)e
-(the)315 1716 y(line,)c(then)e(this)h(transp)q(oses)e(the)h(last)g(t)o
-(w)o(o)f(c)o(haracters)g(of)h(the)g(line.)20 b(Negativ)o(e)11
-b(argumen)o(ts)315 1771 y(ha)o(v)o(e)k(no)g(e\013ect.)75
-1873 y Fl(transpose-words)e(\(M-t\))315 1927 y Fm(Drag)i(the)h(w)o(ord)
-g(b)q(efore)g(p)q(oin)o(t)h(past)f(the)g(w)o(ord)f(after)h(p)q(oin)o
-(t,)g(mo)o(ving)g(p)q(oin)o(t)h(past)f(that)315 1982
-y(w)o(ord)d(as)h(w)o(ell.)21 b(If)14 b(the)g(insertion)i(p)q(oin)o(t)e
-(is)h(at)f(the)g(end)h(of)e(the)i(line,)g(this)g(transp)q(oses)f(the)
-315 2037 y(last)h(t)o(w)o(o)f(w)o(ords)g(on)i(the)f(line.)75
-2138 y Fl(upcase-word)f(\(M-u\))315 2193 y Fm(Upp)q(ercase)j(the)f
-(curren)o(t)g(\(or)f(follo)o(wing\))h(w)o(ord.)22 b(With)16
-b(a)g(negativ)o(e)g(argumen)o(t,)f(upp)q(er-)315 2248
-y(case)g(the)g(previous)h(w)o(ord,)f(but)g(do)g(not)g(mo)o(v)o(e)f(the)
-i(cursor.)75 2349 y Fl(downcase-word)d(\(M-l\))315 2404
-y Fm(Lo)o(w)o(ercase)d(the)h(curren)o(t)g(\(or)f(follo)o(wing\))h(w)o
-(ord.)17 b(With)11 b(a)g(negativ)o(e)g(argumen)o(t,)f(lo)o(w)o(ercase)
-315 2459 y(the)15 b(previous)h(w)o(ord,)e(but)i(do)f(not)g(mo)o(v)o(e)f
-(the)h(cursor.)75 2560 y Fl(capitalize-word)e(\(M-c\))315
-2615 y Fm(Capitalize)f(the)f(curren)o(t)f(\(or)g(follo)o(wing\))h(w)o
-(ord.)18 b(With)11 b(a)f(negativ)o(e)h(argumen)o(t,)f(capitalize)315
-2670 y(the)15 b(previous)h(w)o(ord,)e(but)i(do)f(not)g(mo)o(v)o(e)f
-(the)h(cursor.)p eop
-%%Page: 15 17
-15 16 bop 75 -58 a Fm(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1055
-b(15)75 149 y Fl(overwrite-mode)13 b(\(\))315 204 y Fm(T)l(oggle)j(o)o
-(v)o(erwrite)g(mo)q(de.)24 b(With)17 b(an)f(explicit)j(p)q(ositiv)o(e)f
-(n)o(umeric)f(argumen)o(t,)f(switc)o(hes)315 259 y(to)10
-b(o)o(v)o(erwrite)g(mo)q(de.)19 b(With)11 b(an)g(explicit)i(non-p)q
-(ositiv)o(e)f(n)o(umeric)g(argumen)o(t,)e(switc)o(hes)i(to)315
-314 y(insert)k(mo)q(de.)k(This)c(command)f(a\013ects)g(only)h
-Fl(emacs)e Fm(mo)q(de;)h Fl(vi)g Fm(mo)q(de)h(do)q(es)g(o)o(v)o
-(erwrite)315 369 y(di\013eren)o(tly)l(.)21 b(Eac)o(h)15
-b(call)h(to)f Fl(readline\(\))f Fm(starts)f(in)k(insert)e(mo)q(de.)315
-436 y(In)g(o)o(v)o(erwrite)f(mo)q(de,)h(c)o(haracters)f(b)q(ound)h(to)f
-Fl(self-insert)f Fm(replace)j(the)e(text)h(at)e(p)q(oin)o(t)315
-491 y(rather)20 b(than)h(pushing)h(the)f(text)f(to)g(the)h(righ)o(t.)36
-b(Characters)20 b(b)q(ound)i(to)e Fl(backward-)315 546
-y(delete-char)14 b Fm(replace)i(the)f(c)o(haracter)g(b)q(efore)g(p)q
-(oin)o(t)h(with)f(a)g(space.)315 614 y(By)g(default,)h(this)f(command)g
-(is)h(un)o(b)q(ound.)75 729 y Fb(1.4.4)30 b(Killing)20
-b(And)h(Y)-5 b(anking)75 853 y Fl(kill-line)14 b(\(C-k\))315
-908 y Fm(Kill)j(the)f(text)e(from)h(p)q(oin)o(t)h(to)e(the)h(end)h(of)f
-(the)g(line.)75 1002 y Fl(backward-kill-line)e(\(C-x)h(Rubout\))315
-1057 y Fm(Kill)j(bac)o(kw)o(ard)e(to)f(the)i(b)q(eginning)h(of)e(the)g
-(line.)75 1151 y Fl(unix-line-discard)e(\(C-u\))315 1205
-y Fm(Kill)k(bac)o(kw)o(ard)e(from)f(the)i(cursor)e(to)h(the)g(b)q
-(eginning)j(of)c(the)i(curren)o(t)f(line.)75 1299 y Fl(kill-whole-line)
-e(\(\))315 1354 y Fm(Kill)20 b(all)g(c)o(haracters)d(on)h(the)h(curren)
-o(t)f(line,)i(no)e(matter)g(where)g(p)q(oin)o(t)h(is.)29
-b(By)19 b(default,)315 1409 y(this)d(is)f(un)o(b)q(ound.)75
-1503 y Fl(kill-word)f(\(M-d\))315 1558 y Fm(Kill)j(from)d(p)q(oin)o(t)h
-(to)f(the)h(end)g(of)f(the)h(curren)o(t)g(w)o(ord,)e(or)i(if)g(b)q(et)o
-(w)o(een)g(w)o(ords,)e(to)i(the)f(end)315 1613 y(of)h(the)g(next)g(w)o
-(ord.)20 b(W)l(ord)14 b(b)q(oundaries)j(are)e(the)g(same)g(as)g
-Fl(forward-word)p Fm(.)75 1707 y Fl(backward-kill-word)e(\(M-)592
-1705 y Ff(h)p 603 1679 73 2 v 603 1707 a Fe(DEL)p 603
-1714 V 674 1705 a Ff(i)689 1707 y Fl(\))315 1761 y Fm(Kill)k(the)d(w)o
-(ord)g(b)q(ehind)i(p)q(oin)o(t.)21 b(W)l(ord)14 b(b)q(oundaries)h(are)f
-(the)h(same)f(as)g Fl(backward-word)p Fm(.)75 1855 y
-Fl(unix-word-rubout)f(\(C-w\))315 1910 y Fm(Kill)18 b(the)e(w)o(ord)f
-(b)q(ehind)j(p)q(oin)o(t,)e(using)h(white)f(space)g(as)g(a)f(w)o(ord)g
-(b)q(oundary)l(.)23 b(The)16 b(killed)315 1965 y(text)f(is)g(sa)o(v)o
-(ed)g(on)g(the)h(kill-ring.)75 2059 y Fl(delete-horizontal-space)c
-(\(\))315 2114 y Fm(Delete)k(all)g(spaces)f(and)h(tabs)e(around)i(p)q
-(oin)o(t.)k(By)15 b(default,)h(this)f(is)h(un)o(b)q(ound.)75
-2208 y Fl(kill-region)e(\(\))315 2263 y Fm(Kill)j(the)f(text)e(in)i
-(the)g(curren)o(t)f(region.)20 b(By)15 b(default,)h(this)f(command)g
-(is)h(un)o(b)q(ound.)75 2357 y Fl(copy-region-as-kill)d(\(\))315
-2412 y Fm(Cop)o(y)j(the)i(text)e(in)i(the)f(region)g(to)g(the)g(kill)h
-(bu\013er,)f(so)g(it)g(can)g(b)q(e)h(y)o(ank)o(ed)f(righ)o(t)g(a)o(w)o
-(a)o(y)l(.)315 2466 y(By)e(default,)h(this)f(command)g(is)h(un)o(b)q
-(ound.)75 2560 y Fl(copy-backward-word)d(\(\))315 2615
-y Fm(Cop)o(y)19 b(the)g(w)o(ord)g(b)q(efore)g(p)q(oin)o(t)h(to)e(the)i
-(kill)h(bu\013er.)32 b(The)19 b(w)o(ord)g(b)q(oundaries)h(are)f(the)315
-2670 y(same)c(as)g Fl(backward-word)p Fm(.)j(By)d(default,)g(this)h
-(command)f(is)h(un)o(b)q(ound.)p eop
-%%Page: 16 18
-16 17 bop 75 -58 a Fm(16)1299 b(GNU)15 b(Readline)h(Library)75
-149 y Fl(copy-forward-word)d(\(\))315 204 y Fm(Cop)o(y)i(the)h(w)o(ord)
-e(follo)o(wing)j(p)q(oin)o(t)f(to)f(the)g(kill)j(bu\013er.)i(The)c(w)o
-(ord)f(b)q(oundaries)i(are)e(the)315 259 y(same)g(as)g
-Fl(forward-word)p Fm(.)j(By)d(default,)h(this)f(command)g(is)h(un)o(b)q
-(ound.)75 342 y Fl(yank)f(\(C-y\))315 397 y Fm(Y)l(ank)g(the)h(top)f
-(of)f(the)i(kill)h(ring)e(in)o(to)g(the)h(bu\013er)f(at)f(p)q(oin)o(t.)
-75 481 y Fl(yank-pop)g(\(M-y\))315 535 y Fm(Rotate)i(the)h(kill-ring,)j
-(and)d(y)o(ank)g(the)h(new)f(top.)26 b(Y)l(ou)17 b(can)h(only)g(do)f
-(this)h(if)f(the)h(prior)315 590 y(command)d(is)h Fl(yank)e
-Fm(or)h Fl(yank-pop)p Fm(.)75 693 y Fb(1.4.5)30 b(Sp)r(ecifying)20
-b(Numeric)h(Argumen)n(ts)75 806 y Fl(digit-argument)13
-b(\()p Fg(M-0)p Fl(,)i Fg(M-1)p Fl(,)f(...)h Fg(M--)p
-Fl(\))315 861 y Fm(Add)f(this)g(digit)g(to)f(the)h(argumen)o(t)e
-(already)i(accum)o(ulating,)g(or)f(start)f(a)h(new)h(argumen)o(t.)315
-915 y Fg(M--)h Fm(starts)f(a)h(negativ)o(e)g(argumen)o(t.)75
-999 y Fl(universal-argument)e(\(\))315 1054 y Fm(This)g(is)h(another)e
-(w)o(a)o(y)g(to)g(sp)q(ecify)i(an)f(argumen)o(t.)18 b(If)13
-b(this)g(command)g(is)g(follo)o(w)o(ed)g(b)o(y)g(one)315
-1108 y(or)h(more)h(digits,)g(optionally)h(with)f(a)g(leading)h(min)o
-(us)f(sign,)g(those)g(digits)g(de\014ne)h(the)f(ar-)315
-1163 y(gumen)o(t.)k(If)c(the)g(command)f(is)h(follo)o(w)o(ed)g(b)o(y)g
-(digits,)g(executing)g Fl(universal-argument)315 1218
-y Fm(again)h(ends)g(the)g(n)o(umeric)h(argumen)o(t,)e(but)h(is)h
-(otherwise)f(ignored.)22 b(As)16 b(a)g(sp)q(ecial)h(case,)315
-1273 y(if)g(this)g(command)f(is)h(immediately)h(follo)o(w)o(ed)f(b)o(y)
-f(a)g(c)o(haracter)g(that)g(is)h(neither)g(a)f(digit)315
-1328 y(or)d(min)o(us)i(sign,)f(the)g(argumen)o(t)g(coun)o(t)f(for)h
-(the)g(next)g(command)g(is)g(m)o(ultiplied)j(b)o(y)d(four.)315
-1382 y(The)19 b(argumen)o(t)f(coun)o(t)g(is)h(initially)j(one,)d(so)f
-(executing)i(this)f(function)h(the)e(\014rst)h(time)315
-1437 y(mak)o(es)c(the)h(argumen)o(t)f(coun)o(t)h(four,)f(a)h(second)g
-(time)g(mak)o(es)g(the)g(argumen)o(t)f(coun)o(t)g(six-)315
-1492 y(teen,)g(and)g(so)g(on.)20 b(By)15 b(default,)h(this)f(is)h(not)f
-(b)q(ound)h(to)f(a)g(k)o(ey)l(.)75 1595 y Fb(1.4.6)30
-b(Letting)20 b(Readline)g(T)n(yp)r(e)h(F)-5 b(or)19 b(Y)-5
-b(ou)75 1708 y Fl(complete)14 b(\()305 1706 y Ff(h)p
-317 1680 74 2 v 317 1708 a Fe(T)m(AB)p 317 1715 V 389
-1706 a Ff(i)404 1708 y Fl(\))315 1762 y Fm(A)o(ttempt)c(to)h(p)q
-(erform)g(completion)i(on)e(the)g(text)g(b)q(efore)h(p)q(oin)o(t.)19
-b(The)11 b(actual)h(completion)315 1817 y(p)q(erformed)j(is)h
-(application-sp)q(eci\014)q(c.)23 b(The)15 b(default)h(is)g(\014lename)
-g(completion.)75 1901 y Fl(possible-completions)c(\(M-?\))315
-1955 y Fm(List)k(the)f(p)q(ossible)i(completions)f(of)f(the)g(text)g(b)
-q(efore)h(p)q(oin)o(t.)75 2039 y Fl(insert-completions)d(\(M-*\))315
-2093 y Fm(Insert)j(all)g(completions)g(of)f(the)g(text)g(b)q(efore)h(p)
-q(oin)o(t)f(that)g(w)o(ould)h(ha)o(v)o(e)f(b)q(een)h(generated)315
-2148 y(b)o(y)f Fl(possible-completions)p Fm(.)75 2232
-y Fl(menu-complete)e(\(\))315 2286 y Fm(Similar)g(to)f
-Fl(complete)p Fm(,)f(but)h(replaces)h(the)f(w)o(ord)f(to)g(b)q(e)i
-(completed)f(with)h(a)e(single)j(matc)o(h)315 2341 y(from)k(the)h(list)
-h(of)e(p)q(ossible)j(completions.)32 b(Rep)q(eated)19
-b(execution)h(of)f Fl(menu-complete)315 2396 y Fm(steps)h(through)g
-(the)g(list)h(of)f(p)q(ossible)i(completions,)g(inserting)f(eac)o(h)f
-(matc)o(h)f(in)i(turn.)315 2451 y(A)o(t)d(the)g(end)h(of)f(the)h(list)g
-(of)f(completions,)i(the)e(b)q(ell)j(is)d(rung)h(\(sub)s(ject)f(to)f
-(the)i(setting)315 2506 y(of)f Fl(bell-style)p Fm(\))e(and)i(the)g
-(original)h(text)f(is)g(restored.)28 b(An)19 b(argumen)o(t)e(of)g
-Fc(n)i Fm(mo)o(v)o(es)e Fc(n)315 2560 y Fm(p)q(ositions)h(forw)o(ard)e
-(in)j(the)e(list)h(of)f(matc)o(hes;)h(a)f(negativ)o(e)g(argumen)o(t)g
-(ma)o(y)g(b)q(e)h(used)g(to)315 2615 y(mo)o(v)o(e)g(bac)o(kw)o(ard)h
-(through)g(the)g(list.)32 b(This)20 b(command)f(is)h(in)o(tended)g(to)f
-(b)q(e)h(b)q(ound)g(to)315 2668 y Ff(h)p 327 2642 V 327
-2670 a Fe(T)m(AB)p 327 2678 V 399 2668 a Ff(i)414 2670
-y Fm(,)15 b(but)g(is)h(un)o(b)q(ound)g(b)o(y)f(default.)p
-eop
-%%Page: 17 19
-17 18 bop 75 -58 a Fm(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1055
-b(17)75 149 y Fl(delete-char-or-list)13 b(\(\))315 204
-y Fm(Deletes)h(the)f(c)o(haracter)g(under)h(the)g(cursor)f(if)h(not)f
-(at)g(the)g(b)q(eginning)j(or)d(end)h(of)f(the)g(line)315
-259 y(\(lik)o(e)i Fl(delete-char)p Fm(\).)j(If)d(at)f(the)h(end)g(of)f
-(the)g(line,)i(b)q(eha)o(v)o(es)f(iden)o(tically)i(to)d
-Fl(possible-)315 314 y(completions)p Fm(.)k(This)e(command)f(is)h(un)o
-(b)q(ound)g(b)o(y)f(default.)75 428 y Fb(1.4.7)30 b(Keyb)r(oard)20
-b(Macros)75 551 y Fl(start-kbd-macro)13 b(\(C-x)i(\(\))315
-606 y Fm(Begin)h(sa)o(ving)f(the)h(c)o(haracters)e(t)o(yp)q(ed)i(in)o
-(to)f(the)g(curren)o(t)g(k)o(eyb)q(oard)g(macro.)75 699
-y Fl(end-kbd-macro)e(\(C-x)i(\)\))315 754 y Fm(Stop)f(sa)o(ving)f(the)h
-(c)o(haracters)f(t)o(yp)q(ed)h(in)o(to)f(the)h(curren)o(t)g(k)o(eyb)q
-(oard)f(macro)g(and)h(sa)o(v)o(e)f(the)315 809 y(de\014nition.)75
-902 y Fl(call-last-kbd-macro)g(\(C-x)h(e\))315 957 y
-Fm(Re-execute)k(the)g(last)f(k)o(eyb)q(oard)h(macro)f(de\014ned,)i(b)o
-(y)e(making)h(the)g(c)o(haracters)e(in)j(the)315 1012
-y(macro)14 b(app)q(ear)i(as)f(if)g(t)o(yp)q(ed)h(at)e(the)i(k)o(eyb)q
-(oard.)75 1126 y Fb(1.4.8)30 b(Some)20 b(Miscellaneous)h(Commands)75
-1249 y Fl(re-read-init-file)13 b(\(C-x)h(C-r\))315 1304
-y Fm(Read)d(in)g(the)g(con)o(ten)o(ts)g(of)f(the)h Fc(inputrc)k
-Fm(\014le,)d(and)g(incorp)q(orate)f(an)o(y)f(bindings)j(or)e(v)m
-(ariable)315 1358 y(assignmen)o(ts)k(found)h(there.)75
-1452 y Fl(abort)e(\(C-g\))315 1507 y Fm(Ab)q(ort)f(the)g(curren)o(t)h
-(editing)g(command)f(and)h(ring)f(the)h(terminal's)f(b)q(ell)i(\(sub)s
-(ject)e(to)g(the)315 1561 y(setting)i(of)g Fl(bell-style)p
-Fm(\).)75 1655 y Fl(do-uppercase-version)d(\(M-a,)j(M-b,)f(M-)p
-Fc(x)p Fl(,)h(...\))315 1710 y Fm(If)f(the)g(meta\014ed)g(c)o(haracter)
-f Fc(x)k Fm(is)d(lo)o(w)o(ercase,)g(run)g(the)g(command)f(that)h(is)g
-(b)q(ound)h(to)e(the)315 1764 y(corresp)q(onding)j(upp)q(ercase)g(c)o
-(haracter.)75 1858 y Fl(prefix-meta)e(\()377 1856 y Ff(h)p
-389 1830 70 2 v 389 1858 a Fe(ESC)p 389 1866 V 456 1856
-a Ff(i)471 1858 y Fl(\))315 1913 y Fm(Metafy)k(the)h(next)g(c)o
-(haracter)f(t)o(yp)q(ed.)30 b(This)20 b(is)f(for)f(k)o(eyb)q(oards)h
-(without)g(a)f(meta)g(k)o(ey)l(.)315 1968 y(T)o(yping)e(`)485
-1966 y Ff(h)p 496 1939 V 496 1968 a Fe(ESC)p 496 1975
-V 563 1966 a Ff(i)593 1968 y Fl(f)p Fm(')f(is)h(equiv)m(alen)o(t)h(to)d
-(t)o(yping)i Fg(M-f)p Fm(.)75 2061 y Fl(undo)f(\(C-_)f(or)h(C-x)g
-(C-u\))315 2116 y Fm(Incremen)o(tal)h(undo,)f(separately)h(remem)o(b)q
-(ered)g(for)e(eac)o(h)h(line.)75 2209 y Fl(revert-line)f(\(M-r\))315
-2264 y Fm(Undo)j(all)g(c)o(hanges)g(made)f(to)g(this)h(line.)26
-b(This)17 b(is)g(lik)o(e)h(executing)f(the)g Fl(undo)f
-Fm(command)315 2319 y(enough)g(times)f(to)g(get)f(bac)o(k)h(to)g(the)g
-(b)q(eginning.)75 2412 y Fl(tilde-expand)f(\(M-~\))315
-2467 y Fm(P)o(erform)g(tilde)j(expansion)f(on)f(the)g(curren)o(t)g(w)o
-(ord.)75 2560 y Fl(set-mark)f(\(C-@\))315 2615 y Fm(Set)i(the)h(mark)f
-(to)f(the)i(p)q(oin)o(t.)24 b(If)17 b(a)f(n)o(umeric)h(argumen)o(t)f
-(is)g(supplied,)j(the)e(mark)e(is)i(set)315 2670 y(to)e(that)f(p)q
-(osition.)p eop
-%%Page: 18 20
-18 19 bop 75 -58 a Fm(18)1299 b(GNU)15 b(Readline)h(Library)75
-149 y Fl(exchange-point-and-mark)c(\(C-x)j(C-x\))315
-204 y Fm(Sw)o(ap)g(the)h(p)q(oin)o(t)g(with)g(the)g(mark.)k(The)c
-(curren)o(t)f(cursor)h(p)q(osition)g(is)g(set)g(to)f(the)g(sa)o(v)o(ed)
-315 259 y(p)q(osition,)h(and)f(the)h(old)f(cursor)g(p)q(osition)h(is)g
-(sa)o(v)o(ed)f(as)g(the)g(mark.)75 347 y Fl(character-search)e(\(C-]\))
-315 402 y Fm(A)f(c)o(haracter)g(is)h(read)g(and)f(p)q(oin)o(t)h(is)g
-(mo)o(v)o(ed)f(to)g(the)g(next)h(o)q(ccurrence)g(of)f(that)g(c)o
-(haracter.)315 456 y(A)j(negativ)o(e)h(coun)o(t)f(searc)o(hes)g(for)f
-(previous)i(o)q(ccurrences.)75 544 y Fl(character-search-backward)c
-(\(M-C-]\))315 599 y Fm(A)22 b(c)o(haracter)g(is)h(read)f(and)h(p)q
-(oin)o(t)g(is)g(mo)o(v)o(ed)f(to)g(the)g(previous)h(o)q(ccurrence)h(of)
-e(that)315 654 y(c)o(haracter.)d(A)c(negativ)o(e)h(coun)o(t)f(searc)o
-(hes)g(for)f(subsequen)o(t)i(o)q(ccurrences.)75 741 y
-Fl(insert-comment)d(\(M-#\))315 796 y Fm(Without)18 b(a)f(n)o(umeric)i
-(argumen)o(t,)e(the)h(v)m(alue)h(of)f(the)f Fl(comment-begin)f
-Fm(v)m(ariable)k(is)e(in-)315 851 y(serted)e(at)f(the)h(b)q(eginning)i
-(of)d(the)h(curren)o(t)g(line.)23 b(If)16 b(a)g(n)o(umeric)h(argumen)o
-(t)e(is)h(supplied,)315 906 y(this)j(command)f(acts)g(as)f(a)h(toggle:)
-26 b(if)19 b(the)f(c)o(haracters)g(at)f(the)i(b)q(eginning)h(of)e(the)g
-(line)315 960 y(do)d(not)g(matc)o(h)g(the)g(v)m(alue)i(of)e
-Fl(comment-begin)p Fm(,)e(the)i(v)m(alue)i(is)f(inserted,)f(otherwise)h
-(the)315 1015 y(c)o(haracters)j(in)i Fl(comment-begin)d
-Fm(are)i(deleted)i(from)d(the)h(b)q(eginning)i(of)e(the)g(line.)36
-b(In)315 1070 y(either)16 b(case,)f(the)g(line)i(is)f(accepted)f(as)g
-(if)h(a)f(newline)i(had)e(b)q(een)i(t)o(yp)q(ed.)75 1158
-y Fl(dump-functions)c(\(\))315 1213 y Fm(Prin)o(t)g(all)h(of)f(the)g
-(functions)h(and)g(their)g(k)o(ey)f(bindings)i(to)d(the)i(Readline)g
-(output)f(stream.)315 1267 y(If)j(a)g(n)o(umeric)g(argumen)o(t)f(is)i
-(supplied,)h(the)e(output)f(is)i(formatted)d(in)j(suc)o(h)f(a)g(w)o(a)o
-(y)f(that)315 1322 y(it)g(can)h(b)q(e)g(made)f(part)f(of)h(an)g
-Fc(inputrc)k Fm(\014le.)i(This)16 b(command)f(is)h(un)o(b)q(ound)g(b)o
-(y)f(default.)75 1410 y Fl(dump-variables)e(\(\))315
-1465 y Fm(Prin)o(t)e(all)g(of)f(the)h(settable)g(v)m(ariables)h(and)f
-(their)g(v)m(alues)h(to)e(the)h(Readline)h(output)e(stream.)315
-1519 y(If)16 b(a)g(n)o(umeric)g(argumen)o(t)f(is)i(supplied,)h(the)e
-(output)f(is)i(formatted)d(in)j(suc)o(h)f(a)g(w)o(a)o(y)f(that)315
-1574 y(it)g(can)h(b)q(e)g(made)f(part)f(of)h(an)g Fc(inputrc)k
-Fm(\014le.)i(This)16 b(command)f(is)h(un)o(b)q(ound)g(b)o(y)f(default.)
-75 1662 y Fl(dump-macros)f(\(\))315 1717 y Fm(Prin)o(t)j(all)h(of)e
-(the)h(Readline)h(k)o(ey)f(sequences)h(b)q(ound)g(to)e(macros)g(and)h
-(the)g(strings)g(they)315 1771 y(output.)26 b(If)18 b(a)f(n)o(umeric)h
-(argumen)o(t)f(is)h(supplied,)i(the)d(output)g(is)h(formatted)e(in)j
-(suc)o(h)e(a)315 1826 y(w)o(a)o(y)d(that)g(it)i(can)f(b)q(e)g(made)g
-(part)g(of)f(an)h Fc(inputrc)k Fm(\014le.)i(This)15 b(command)g(is)h
-(un)o(b)q(ound)g(b)o(y)315 1881 y(default.)75 1969 y
-Fl(emacs-editing-mode)d(\(C-e\))315 2024 y Fm(When)j(in)g
-Fl(vi)e Fm(command)i(mo)q(de,)f(this)g(causes)h(a)f(switc)o(h)g(to)g
-Fl(emacs)f Fm(editing)j(mo)q(de.)75 2111 y Fl(vi-editing-mode)c
-(\(M-C-j\))315 2166 y Fm(When)j(in)g Fl(emacs)e Fm(editing)j(mo)q(de,)e
-(this)g(causes)h(a)f(switc)o(h)g(to)g Fl(vi)f Fm(editing)j(mo)q(de.)75
-2290 y Fk(1.5)33 b(Readline)23 b(vi)h(Mo)r(de)137 2385
-y Fm(While)13 b(the)f(Readline)i(library)e(do)q(es)g(not)g(ha)o(v)o(e)f
-(a)h(full)h(set)f(of)f Fl(vi)g Fm(editing)j(functions,)f(it)f(do)q(es)g
-(con)o(tain)75 2440 y(enough)17 b(to)g(allo)o(w)g(simple)h(editing)h
-(of)d(the)i(line.)27 b(The)17 b(Readline)h Fl(vi)f Fm(mo)q(de)g(b)q
-(eha)o(v)o(es)g(as)g(sp)q(eci\014ed)i(in)75 2495 y(the)c
-Fh(posix)g Fm(1003.2)f(standard.)137 2560 y(In)h(order)g(to)f(switc)o
-(h)g(in)o(teractiv)o(ely)i(b)q(et)o(w)o(een)f Fl(emacs)e
-Fm(and)i Fl(vi)f Fm(editing)i(mo)q(des,)f(use)f(the)h(command)75
-2615 y Fg(M-C-j)j Fm(\(b)q(ound)i(to)e(emacs-editing-mo)q(de)j(when)e
-(in)h Fl(vi)f Fm(mo)q(de)g(and)g(to)f(vi-editing-mo)q(de)k(in)e
-Fl(emacs)75 2670 y Fm(mo)q(de\).)g(The)15 b(Readline)i(default)f(is)f
-Fl(emacs)g Fm(mo)q(de.)p eop
-%%Page: 19 21
-19 20 bop 75 -58 a Fm(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1055
-b(19)137 149 y(When)16 b(y)o(ou)e(en)o(ter)h(a)g(line)i(in)e
-Fl(vi)g Fm(mo)q(de,)g(y)o(ou)g(are)f(already)i(placed)g(in)g
-(`insertion')f(mo)q(de,)g(as)g(if)g(y)o(ou)75 204 y(had)e(t)o(yp)q(ed)h
-(an)f(`)p Fl(i)p Fm('.)18 b(Pressing)608 202 y Ff(h)p
-620 176 70 2 v 620 204 a Fe(ESC)p 620 212 V 687 202 a
-Ff(i)715 204 y Fm(switc)o(hes)13 b(y)o(ou)g(in)o(to)g(`command')f(mo)q
-(de,)i(where)f(y)o(ou)g(can)g(edit)h(the)75 259 y(text)i(of)h(the)g
-(line)h(with)g(the)f(standard)f Fl(vi)h Fm(mo)o(v)o(emen)o(t)f(k)o
-(eys,)g(mo)o(v)o(e)g(to)h(previous)g(history)g(lines)i(with)75
-314 y(`)p Fl(k)p Fm(')14 b(and)i(subsequen)o(t)f(lines)i(with)f(`)p
-Fl(j)p Fm(',)e(and)h(so)g(forth.)p eop
-%%Page: 20 22
-20 21 bop 75 -58 a Fm(20)1299 b(GNU)15 b(Readline)h(Library)p
-eop
-%%Page: -1 23
--1 22 bop 1862 -58 a Fm(i)75 149 y Fi(T)-7 b(able)27
-b(of)f(Con)n(ten)n(ts)75 320 y Fk(1)67 b(Command)22 b(Line)i(Editing)d
-Fa(.)10 b(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)h
-(.)f(.)g(.)g(.)42 b Fk(1)224 389 y Fm(1.1)j(In)o(tro)q(duction)16
-b(to)f(Line)h(Editing)e Fd(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)27 b Fm(1)224 444 y(1.2)45 b(Readline)16 b(In)o(teraction)8
-b Fd(.)g(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)23 b Fm(1)374 499 y(1.2.1)44 b(Readline)16
-b(Bare)f(Essen)o(tials)f Fd(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)27
-b Fm(1)374 553 y(1.2.2)44 b(Readline)16 b(Mo)o(v)o(emen)o(t)e(Commands)
-7 b Fd(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
-(.)h(.)21 b Fm(2)374 608 y(1.2.3)44 b(Readline)16 b(Killing)i(Commands)
-11 b Fd(.)c(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)h(.)f(.)h(.)25 b Fm(2)374 663 y(1.2.4)44 b(Readline)16
-b(Argumen)o(ts)c Fd(.)c(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)27
-b Fm(3)374 718 y(1.2.5)44 b(Searc)o(hing)16 b(for)e(Commands)h(in)h
-(the)f(History)e Fd(.)8 b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)27
-b Fm(3)224 773 y(1.3)45 b(Readline)16 b(Init)h(File)e
-Fd(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)29 b Fm(4)374 827 y(1.3.1)44 b(Readline)16
-b(Init)g(File)h(Syn)o(tax)7 b Fd(.)g(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)21
-b Fm(4)374 882 y(1.3.2)44 b(Conditional)16 b(Init)g(Constructs)5
-b Fd(.)i(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)h(.)g(.)f(.)19 b Fm(9)374 937 y(1.3.3)44 b(Sample)16
-b(Init)g(File)11 b Fd(.)e(.)e(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
-(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)26 b Fm(9)224 992 y(1.4)45 b(Bindable)17 b(Readline)g(Commands)
-6 b Fd(.)h(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)21 b Fm(12)374
-1046 y(1.4.1)44 b(Commands)14 b(F)l(or)h(Mo)o(ving)e
-Fd(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)h(.)f(.)h(.)f(.)h(.)28 b Fm(12)374 1101 y(1.4.2)44
-b(Commands)14 b(F)l(or)h(Manipulating)i(The)e(History)9
-b Fd(.)e(.)h(.)f(.)h(.)f(.)h(.)24 b Fm(12)374 1156 y(1.4.3)44
-b(Commands)14 b(F)l(or)h(Changing)h(T)l(ext)e Fd(.)8
-b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)30
-b Fm(14)374 1211 y(1.4.4)44 b(Killing)18 b(And)e(Y)l(anking)9
-b Fd(.)e(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)24 b Fm(15)374
-1266 y(1.4.5)44 b(Sp)q(ecifying)17 b(Numeric)f(Argumen)o(ts)c
-Fd(.)c(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)27
-b Fm(16)374 1320 y(1.4.6)44 b(Letting)15 b(Readline)i(T)o(yp)q(e)e(F)l
-(or)g(Y)l(ou)10 b Fd(.)d(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)h(.)f(.)25 b Fm(16)374 1375 y(1.4.7)44 b(Keyb)q(oard)15
-b(Macros)6 b Fd(.)h(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)21
-b Fm(17)374 1430 y(1.4.8)44 b(Some)15 b(Miscellaneous)i(Commands)7
-b Fd(.)g(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-22 b Fm(17)224 1485 y(1.5)45 b(Readline)16 b(vi)g(Mo)q(de)e
-Fd(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)28 b Fm(18)p eop
-%%Page: -2 24
--2 23 bop 75 -58 a Fm(ii)1321 b(GNU)15 b(Readline)h(Library)p
-eop
-%%Trailer
-end
-userdict /end-hook known{end-hook}if
-%%EOF
diff --git a/readline-4.3.orig/doc/rluserman.texinfo b/readline-4.3.orig/doc/rluserman.texinfo
deleted file mode 100644
index 89abe31..0000000
--- a/readline-4.3.orig/doc/rluserman.texinfo
+++ /dev/null
@@ -1,94 +0,0 @@
-\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 manvers.texinfo
-
-@ifinfo
-@dircategory Libraries
-@direntry
-* RLuserman: (rluserman). The GNU readline library User's Manual.
-@end direntry
-
-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 that need to provide a command line interface.
-
-Copyright (C) 1988-2002 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-pare preserved on all copies.
-
-@ignore
-Permission is granted to process this file through TeX and print the
-results, provided the printed document carries copying permission
-notice identical to this one except for the removal of this paragraph
-(this paragraph not being relevant to the printed manual).
-@end ignore
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the entire
-resulting derived work is distributed under the terms of a permission
-notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that this permission notice may be stated in a translation approved
-by the Free Software Foundation.
-@end ifinfo
-
-@titlepage
-@title GNU Readline Library User Interface
-@subtitle Edition @value{EDITION}, for @code{Readline Library} Version @value{VERSION}.
-@subtitle @value{UPDATE-MONTH}
-@author Brian Fox, Free Software Foundation
-@author Chet Ramey, Case Western Reserve University
-
-@page
-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 that need to provide a command line interface.
-
-Published by the Free Software Foundation @*
-59 Temple Place, Suite 330, @*
-Boston, MA 02111 USA
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the entire
-resulting derived work is distributed under the terms of a permission
-notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that this permission notice may be stated in a translation approved
-by the Free Software Foundation.
-
-@vskip 0pt plus 1filll
-Copyright @copyright{} 1988-2002 Free Software Foundation, Inc.
-@end titlepage
-
-@ifinfo
-@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 that need to provide a command line interface.
-
-@menu
-* Command Line Editing:: GNU Readline User's Manual.
-@end menu
-@end ifinfo
-
-@include rluser.texinfo
-
-@contents
-@bye
diff --git a/readline-4.3.orig/doc/texi2dvi b/readline-4.3.orig/doc/texi2dvi
deleted file mode 100755
index c186848..0000000
--- a/readline-4.3.orig/doc/texi2dvi
+++ /dev/null
@@ -1,568 +0,0 @@
-#! /bin/sh
-# texi2dvi --- produce DVI (or PDF) files from Texinfo (or LaTeX) sources.
-# $Id$
-#
-# Copyright (C) 1992, 93, 94, 95, 96, 97, 98, 99 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, you can either send email to this
-# program's maintainer or write to: The Free Software Foundation,
-# Inc.; 59 Temple Place, Suite 330; Boston, MA 02111-1307, USA.
-#
-# Original author: Noah Friedman <friedman@gnu.org>.
-#
-# Please send bug reports, etc. to bug-texinfo@gnu.org.
-# If possible, please send a copy of the output of the script called with
-# the `--debug' option when making a bug report.
-
-# This string is expanded by rcs automatically when this file is checked out.
-rcs_revision='$Revision$'
-rcs_version=`set - $rcs_revision; echo $2`
-program=`echo $0 | sed -e 's!.*/!!'`
-version="texi2dvi (GNU Texinfo 4.0) $rcs_version
-
-Copyright (C) 1999 Free Software Foundation, Inc.
-There is NO warranty. You may redistribute this software
-under the terms of the GNU General Public License.
-For more information about these matters, see the files named COPYING."
-
-usage="Usage: $program [OPTION]... FILE...
-
-Run each Texinfo or LaTeX FILE through TeX in turn until all
-cross-references are resolved, building all indices. The directory
-containing each FILE is searched for included files. The suffix of FILE
-is used to determine its language (LaTeX or Texinfo).
-
-Makeinfo is used to perform Texinfo macro expansion before running TeX
-when needed.
-
-Options:
- -@ Use @input instead of \input; for preloaded Texinfo.
- -b, --batch No interaction.
- -c, --clean Remove all auxiliary files.
- -D, --debug Turn on shell debugging (set -x).
- -e, --expand Force macro expansion using makeinfo.
- -I DIR Search DIR for Texinfo files.
- -h, --help Display this help and exit successfully.
- -l, --language=LANG Specify the LANG of FILE: LaTeX or Texinfo.
- -p, --pdf Use pdftex or pdflatex for processing.
- -q, --quiet No output unless errors (implies --batch).
- -s, --silent Same as --quiet.
- -t, --texinfo=CMD Insert CMD after @setfilename in copy of input file.
- Multiple values accumulate.
- -v, --version Display version information and exit successfully.
- -V, --verbose Report on what is done.
-
-The values of the BIBTEX, LATEX (or PDFLATEX), MAKEINDEX, MAKEINFO,
-TEX (or PDFTEX), and TEXINDEX environment variables are used to run
-those commands, if they are set.
-
-Email bug reports to <bug-texinfo@gnu.org>,
-general questions and discussion to <help-texinfo@gnu.org>."
-
-# Initialize variables for option overriding and otherwise.
-# Don't use `unset' since old bourne shells don't have this command.
-# Instead, assign them an empty value.
-escape='\'
-batch=false # eval for batch mode
-clean=
-debug=
-expand= # t for expansion via makeinfo
-oformat=dvi
-set_language=
-miincludes= # makeinfo include path
-textra=
-tmpdir=${TMPDIR:-/tmp}/t2d$$ # avoid collisions on 8.3 filesystems.
-txincludes= # TEXINPUTS extensions
-txiprereq=19990129 # minimum texinfo.tex version to have macro expansion
-quiet= # by default let the tools' message be displayed
-verbose=false # echo for verbose mode
-
-orig_pwd=`pwd`
-
-# Systems which define $COMSPEC or $ComSpec use semicolons to separate
-# directories in TEXINPUTS.
-if test -n "$COMSPEC$ComSpec"; then
- path_sep=";"
-else
- path_sep=":"
-fi
-
-# Save this so we can construct a new TEXINPUTS path for each file.
-TEXINPUTS_orig="$TEXINPUTS"
-# Unfortunately makeindex does not read TEXINPUTS.
-INDEXSTYLE_orig="$INDEXSTYLE"
-export TEXINPUTS INDEXSTYLE
-
-# Push a token among the arguments that will be used to notice when we
-# ended options/arguments parsing.
-# Use "set dummy ...; shift" rather than 'set - ..." because on
-# Solaris set - turns off set -x (but keeps set -e).
-# Use ${1+"$@"} rather than "$@" because Digital Unix and Ultrix 4.3
-# still expand "$@" to a single argument (the empty string) rather
-# than nothing at all.
-arg_sep="$$--$$"
-set dummy ${1+"$@"} "$arg_sep"; shift
-
-#
-# Parse command line arguments.
-while test x"$1" != x"$arg_sep"; do
-
- # Handle --option=value by splitting apart and putting back on argv.
- case "$1" in
- --*=*)
- opt=`echo "$1" | sed -e 's/=.*//'`
- val=`echo "$1" | sed -e 's/[^=]*=//'`
- shift
- set dummy "$opt" "$val" ${1+"$@"}; shift
- ;;
- esac
-
- # This recognizes --quark as --quiet. So what.
- case "$1" in
- -@ ) escape=@;;
- # Silently and without documentation accept -b and --b[atch] as synonyms.
- -b | --b*) batch=eval;;
- -q | -s | --q* | --s*) quiet=t; batch=eval;;
- -c | --c*) clean=t;;
- -D | --d*) debug=t;;
- -e | --e*) expand=t;;
- -h | --h*) echo "$usage"; exit 0;;
- -I | --I*)
- shift
- miincludes="$miincludes -I $1"
- txincludes="$txincludes$path_sep$1"
- ;;
- -l | --l*) shift; set_language=$1;;
- -p | --p*) oformat=pdf;;
- -t | --t*) shift; textra="$textra\\
-$1";;
- -v | --vers*) echo "$version"; exit 0;;
- -V | --verb*) verbose=echo;;
- --) # What remains are not options.
- shift
- while test x"$1" != x"$arg_sep"; do
- set dummy ${1+"$@"} "$1"; shift
- shift
- done
- break;;
- -*)
- echo "$0: Unknown or ambiguous option \`$1'." >&2
- echo "$0: Try \`--help' for more information." >&2
- exit 1;;
- *) set dummy ${1+"$@"} "$1"; shift;;
- esac
- shift
-done
-# Pop the token
-shift
-
-# Interpret remaining command line args as filenames.
-if test $# = 0; then
- echo "$0: Missing file arguments." >&2
- echo "$0: Try \`--help' for more information." >&2
- exit 2
-fi
-
-# Prepare the temporary directory. Remove it at exit, unless debugging.
-if test -z "$debug"; then
- trap "cd / && rm -rf $tmpdir" 0 1 2 15
-fi
-
-# Create the temporary directory with strict rights
-(umask 077 && mkdir $tmpdir) || exit 1
-
-# Prepare the tools we might need. This may be extra work in some
-# cases, but improves the readibility of the script.
-utildir=$tmpdir/utils
-mkdir $utildir || exit 1
-
-# A sed script that preprocesses Texinfo sources in order to keep the
-# iftex sections only. We want to remove non TeX sections, and
-# comment (with `@c texi2dvi') TeX sections so that makeinfo does not
-# try to parse them. Nevertheless, while commenting TeX sections,
-# don't comment @macro/@end macro so that makeinfo does propagate
-# them. Unfortunately makeinfo --iftex --no-ifhtml --no-ifinfo
-# doesn't work well enough (yet) to use that, so work around with sed.
-comment_iftex_sed=$utildir/comment.sed
-cat <<EOF >$comment_iftex_sed
-/^@tex/,/^@end tex/{
- s/^/@c texi2dvi/
-}
-/^@iftex/,/^@end iftex/{
- s/^/@c texi2dvi/
- /^@c texi2dvi@macro/,/^@c texi2dvi@end macro/{
- s/^@c texi2dvi//
- }
-}
-/^@html/,/^@end html/d
-/^@ifhtml/,/^@end ifhtml/d
-/^@ifnottex/,/^@end ifnottex/d
-/^@ifinfo/,/^@end ifinfo/{
- /^@node/p
- /^@menu/,/^@end menu/p
- d
-}
-EOF
-# Uncommenting is simple: Remove any leading `@c texi2dvi'.
-uncomment_iftex_sed=$utildir/uncomment.sed
-cat <<EOF >$uncomment_iftex_sed
-s/^@c texi2dvi//
-EOF
-
-# A shell script that computes the list of xref files.
-# Takes the filename (without extension) of which we look for xref
-# files as argument. The index files must be reported last.
-get_xref_files=$utildir/get_xref.sh
-cat <<\EOF >$get_xref_files
-#! /bin/sh
-
-# Get list of xref files (indexes, tables and lists).
-# Find all files having root filename with a two-letter extension,
-# saves the ones that are really Texinfo-related files. .?o? catches
-# LaTeX tables and lists.
-for this_file in "$1".?o? "$1".aux "$1".?? "$1".idx; do
- # If file is empty, skip it.
- test -s "$this_file" || continue
- # If the file is not suitable to be an index or xref file, don't
- # process it. The file can't be if its first character is not a
- # backslash or single quote.
- first_character=`sed -n '1s/^\(.\).*$/\1/p;q' $this_file`
- if test "x$first_character" = "x\\" \
- || test "x$first_character" = "x'"; then
- xref_files="$xref_files ./$this_file"
- fi
-done
-echo "$xref_files"
-EOF
-chmod 500 $get_xref_files
-
-# File descriptor usage:
-# 0 standard input
-# 1 standard output (--verbose messages)
-# 2 standard error
-# 3 some systems may open it to /dev/tty
-# 4 used on the Kubota Titan
-# 5 tools output (turned off by --quiet)
-
-# Tools' output. If quiet, discard, else redirect to the message flow.
-if test "$quiet" = t; then
- exec 5>/dev/null
-else
- exec 5>&1
-fi
-
-# Enable tracing
-test "$debug" = t && set -x
-
-#
-# TeXify files.
-
-for command_line_filename in ${1+"$@"}; do
- $verbose "Processing $command_line_filename ..."
-
- # If the COMMAND_LINE_FILENAME is not absolute (e.g., --debug.tex),
- # prepend `./' in order to avoid that the tools take it as an option.
- echo "$command_line_filename" | egrep '^(/|[A-z]:/)' >/dev/null \
- || command_line_filename="./$command_line_filename"
-
- # See if the file exists. If it doesn't we're in trouble since, even
- # though the user may be able to reenter a valid filename at the tex
- # prompt (assuming they're attending the terminal), this script won't
- # be able to find the right xref files and so forth.
- if test ! -r "$command_line_filename"; then
- echo "$0: Could not read $command_line_filename, skipping." >&2
- continue
- fi
-
- # Get the name of the current directory. We want the full path
- # because in clean mode we are in tmp, in which case a relative
- # path has no meaning.
- filename_dir=`echo $command_line_filename | sed 's!/[^/]*$!!;s!^$!.!'`
- filename_dir=`cd "$filename_dir" >/dev/null && pwd`
-
- # Strip directory part but leave extension.
- filename_ext=`basename "$command_line_filename"`
- # Strip extension.
- filename_noext=`echo "$filename_ext" | sed 's/\.[^.]*$//'`
- ext=`echo "$filename_ext" | sed 's/^.*\.//'`
-
- # _src. Use same basename since we want to generate aux files with
- # the same basename as the manual. If --expand, then output the
- # macro-expanded file to here, else copy the original file.
- tmpdir_src=$tmpdir/src
- filename_src=$tmpdir_src/$filename_noext.$ext
-
- # _xtr. The file with the user's extra commands.
- tmpdir_xtr=$tmpdir/xtr
- filename_xtr=$tmpdir_xtr/$filename_noext.$ext
-
- # _bak. Copies of the previous xref files (another round is run if
- # they differ from the new one).
- tmpdir_bak=$tmpdir/bak
-
- # Make all those directories and give up if we can't succeed.
- mkdir $tmpdir_src $tmpdir_xtr $tmpdir_bak || exit 1
-
- # Source file might include additional sources. Put `.' and
- # directory where source file(s) reside in TEXINPUTS before anything
- # else. `.' goes first to ensure that any old .aux, .cps,
- # etc. files in ${directory} don't get used in preference to fresher
- # files in `.'. Include orig_pwd in case we are in clean mode, where
- # we've cd'd to a temp directory.
- common=".$path_sep$orig_pwd$path_sep$filename_dir$path_sep$txincludes$path_sep"
- TEXINPUTS="$common$TEXINPUTS_orig"
- INDEXSTYLE="$common$INDEXSTYLE_orig"
-
- # If the user explicitly specified the language, use that.
- # Otherwise, if the first line is \input texinfo, assume it's texinfo.
- # Otherwise, guess from the file extension.
- if test -n "$set_language"; then
- language=$set_language
- elif sed 1q "$command_line_filename" | fgrep 'input texinfo' >/dev/null; then
- language=texinfo
- else
- language=
- fi
-
- # Get the type of the file (latex or texinfo) from the given language
- # we just guessed, or from the file extension if not set yet.
- case ${language:-$filename_ext} in
- [lL]a[tT]e[xX] | *.ltx | *.tex)
- # Assume a LaTeX file. LaTeX needs bibtex and uses latex for
- # compilation. No makeinfo.
- bibtex=${BIBTEX:-bibtex}
- makeinfo= # no point in running makeinfo on latex source.
- texindex=${MAKEINDEX:-makeindex}
- if test $oformat = dvi; then
- tex=${LATEX:-latex}
- else
- tex=${PDFLATEX:-pdflatex}
- fi
- ;;
-
- *)
- # Assume a Texinfo file. Texinfo files need makeinfo, texindex and tex.
- bibtex=
- texindex=${TEXINDEX:-texindex}
- if test $oformat = dvi; then
- tex=${TEX:-tex}
- else
- tex=${PDFTEX:-pdftex}
- fi
- # Unless required by the user, makeinfo expansion is wanted only
- # if texinfo.tex is too old.
- if test "$expand" = t; then
- makeinfo=${MAKEINFO:-makeinfo}
- else
- # Check if texinfo.tex performs macro expansion by looking for
- # its version. The version is a date of the form YEAR-MO-DA.
- # We don't need to use [0-9] to match the digits since anyway
- # the comparison with $txiprereq, a number, will fail with non
- # digits.
- txiversion_tex=txiversion.tex
- echo '\input texinfo.tex @bye' >$tmpdir/$txiversion_tex
- # Run in the tmpdir to avoid leaving files.
- eval `cd $tmpdir >/dev/null \
- && $tex $txiversion_tex 2>/dev/null \
-| sed -n 's/^.*\[\(.*\)version \(....\)-\(..\)-\(..\).*$/txiformat=\1 txiversion="\2\3\4"/p'`
- $verbose "texinfo.tex preloaded as \`$txiformat', version is \`$txiversion' ..."
- if test "$txiprereq" -le "$txiversion" >/dev/null 2>&1; then
- makeinfo=
- else
- makeinfo=${MAKEINFO:-makeinfo}
- fi
- # As long as we had to run TeX, offer the user this convenience
- if test "$txiformat" = Texinfo; then
- escape=@
- fi
- fi
- ;;
- esac
-
- # Expand macro commands in the original source file using Makeinfo.
- # Always use `end' footnote style, since the `separate' style
- # generates different output (arguably this is a bug in -E).
- # Discard main info output, the user asked to run TeX, not makeinfo.
- if test -n "$makeinfo"; then
- $verbose "Macro-expanding $command_line_filename to $filename_src ..."
- sed -f $comment_iftex_sed "$command_line_filename" \
- | $makeinfo --footnote-style=end -I "$filename_dir" $miincludes \
- -o /dev/null --macro-expand=- \
- | sed -f $uncomment_iftex_sed >"$filename_src"
- filename_input=$filename_src
- fi
-
- # If makeinfo failed (or was not even run), use the original file as input.
- if test $? -ne 0 \
- || test ! -r "$filename_src"; then
- $verbose "Reverting to $command_line_filename ..."
- filename_input=$filename_dir/$filename_ext
- fi
-
- # Used most commonly for @finalout, @smallbook, etc.
- if test -n "$textra"; then
- $verbose "Inserting extra commands: $textra"
- sed '/^@setfilename/a\
-'"$textra" "$filename_input" >$filename_xtr
- filename_input=$filename_xtr
- fi
-
- # If clean mode was specified, then move to the temporary directory.
- if test "$clean" = t; then
- $verbose "cd $tmpdir_src"
- cd "$tmpdir_src" || exit 1
- fi
-
- while :; do # will break out of loop below
- orig_xref_files=`$get_xref_files "$filename_noext"`
-
- # Save copies of originals for later comparison.
- if test -n "$orig_xref_files"; then
- $verbose "Backing up xref files: `echo $orig_xref_files | sed 's|\./||g'`"
- cp $orig_xref_files $tmpdir_bak
- fi
-
- # Run bibtex on current file.
- # - If its input (AUX) exists.
- # - If AUX contains both `\bibdata' and `\bibstyle'.
- # - If some citations are missing (LOG contains `Citation').
- # or the LOG complains of a missing .bbl
- #
- # We run bibtex first, because I can see reasons for the indexes
- # to change after bibtex is run, but I see no reason for the
- # converse.
- #
- # Don't try to be too smart. Running bibtex only if the bbl file
- # exists and is older than the LaTeX file is wrong, since the
- # document might include files that have changed. Because there
- # can be several AUX (if there are \include's), but a single LOG,
- # looking for missing citations in LOG is easier, though we take
- # the risk to match false messages.
- if test -n "$bibtex" \
- && test -r "$filename_noext.aux" \
- && test -r "$filename_noext.log" \
- && (grep '^\\bibdata[{]' "$filename_noext.aux" \
- && grep '^\\bibstyle[{]' "$filename_noext.aux" \
- && (grep 'Warning:.*Citation.*undefined' "$filename_noext.log" \
- || grep 'No file .*\.bbl\.' "$filename_noext.log")) \
- >/dev/null 2>&1; \
- then
- $verbose "Running $bibtex $filename_noext ..."
- if $bibtex "$filename_noext" >&5; then :; else
- echo "$0: $bibtex exited with bad status, quitting." >&2
- exit 1
- fi
- fi
-
- # What we'll run texindex on -- exclude non-index files.
- # Since we know index files are last, it is correct to remove everything
- # before .aux and .?o?.
- index_files=`echo "$orig_xref_files" \
- | sed "s!.*\.aux!!g;
- s!./$filename_noext\..o.!!g;
- s/^[ ]*//;s/[ ]*$//"`
- # Run texindex (or makeindex) on current index files. If they
- # already exist, and after running TeX a first time the index
- # files don't change, then there's no reason to run TeX again.
- # But we won't know that if the index files are out of date or
- # nonexistent.
- if test -n "$texindex" && test -n "$index_files"; then
- $verbose "Running $texindex $index_files ..."
- if $texindex $index_files 2>&5 1>&2; then :; else
- echo "$0: $texindex exited with bad status, quitting." >&2
- exit 1
- fi
- fi
-
- # Finally, run TeX.
- # Prevent $ESCAPE from being interpreted by the shell if it happens
- # to be `/'.
- $batch tex_args="\\${escape}nonstopmode\ \\${escape}input"
- $verbose "Running $cmd ..."
- cmd="$tex $tex_args $filename_input"
- if $cmd >&5; then :; else
- echo "$0: $tex exited with bad status, quitting." >&2
- echo "$0: see $filename_noext.log for errors." >&2
- test "$clean" = t \
- && cp "$filename_noext.log" "$orig_pwd"
- exit 1
- fi
-
-
- # Decide if looping again is needed.
- finished=t
-
- # LaTeX (and the package changebar) report in the LOG file if it
- # should be rerun. This is needed for files included from
- # subdirs, since texi2dvi does not try to compare xref files in
- # subdirs. Performing xref files test is still good since LaTeX
- # does not report changes in xref files.
- if fgrep "Rerun to get" "$filename_noext.log" >/dev/null 2>&1; then
- finished=
- fi
-
- # Check if xref files changed.
- new_xref_files=`$get_xref_files "$filename_noext"`
- $verbose "Original xref files = `echo $orig_xref_files | sed 's|\./||g'`"
- $verbose "New xref files = `echo $new_xref_files | sed 's|\./||g'`"
-
- # If old and new lists don't at least have the same file list,
- # then one file or another has definitely changed.
- test "x$orig_xref_files" != "x$new_xref_files" && finished=
-
- # File list is the same. We must compare each file until we find
- # a difference.
- if test -n "$finished"; then
- for this_file in $new_xref_files; do
- $verbose "Comparing xref file `echo $this_file | sed 's|\./||g'` ..."
- # cmp -s returns nonzero exit status if files differ.
- if cmp -s "$this_file" "$tmpdir_bak/$this_file"; then :; else
- # We only need to keep comparing until we find one that
- # differs, because we'll have to run texindex & tex again no
- # matter how many more there might be.
- finished=
- $verbose "xref file `echo $this_file | sed 's|\./||g'` differed ..."
- test "$debug" = t && diff -c "$tmpdir_bak/$this_file" "$this_file"
- break
- fi
- done
- fi
-
- # If finished, exit the loop, else rerun the loop.
- test -n "$finished" && break
- done
-
- # If we were in clean mode, compilation was in a tmp directory.
- # Copy the DVI (or PDF) file into the directory where the compilation
- # has been done. (The temp dir is about to get removed anyway.)
- # We also return to the original directory so that
- # - the next file is processed in correct conditions
- # - the temporary file can be removed
- if test -n "$clean"; then
- $verbose "Copying $oformat file from `pwd` to $orig_pwd"
- cp -p "./$filename_noext.$oformat" "$orig_pwd"
- cd / # in case $orig_pwd is on a different drive (for DOS)
- cd $orig_pwd || exit 1
- fi
-
- # Remove temporary files.
- if test "x$debug" = "x"; then
- $verbose "Removing $tmpdir_src $tmpdir_xtr $tmpdir_bak ..."
- cd /
- rm -rf $tmpdir_src $tmpdir_xtr $tmpdir_bak
- fi
-done
-
-$verbose "$0 done."
-exit 0 # exit successfully, not however we ended the loop.
diff --git a/readline-4.3.orig/doc/texi2html b/readline-4.3.orig/doc/texi2html
deleted file mode 100755
index 7bb8493..0000000
--- a/readline-4.3.orig/doc/texi2html
+++ /dev/null
@@ -1,5429 +0,0 @@
-#! /usr/bin/perl
-'di ';
-'ig 00 ';
-#+##############################################################################
-#
-# texi2html: Program to transform Texinfo documents to HTML
-#
-# Copyright (C) 1999, 2000 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-#
-#-##############################################################################
-
-# This requires perl version 5 or higher
-require 5.0;
-
-#++##############################################################################
-#
-# NOTE FOR DEBUGGING THIS SCRIPT:
-# You can run 'perl texi2html.pl' directly, provided you have
-# the environment variable T2H_HOME set to the directory containing
-# the texi2html.init file
-#
-#--##############################################################################
-
-# CVS version:
-# $Id$
-
-# Homepage:
-$T2H_HOMEPAGE = <<EOT;
-http://www.mathematik.uni-kl.de/~obachman/Texi2html
-EOT
-
-# Authors:
-$T2H_AUTHORS = <<EOT;
-Written by: Lionel Cons <Lionel.Cons\@cern.ch> (original author)
- Karl Berry <karl\@freefriends.org>
- Olaf Bachmann <obachman\@mathematik.uni-kl.de>
- and many others.
-Maintained by: Olaf Bachmann <obachman\@mathematik.uni-kl.de>
-Send bugs and suggestions to <texi2html\@mathematik.uni-kl.de>
-EOT
-
-# Version: set in configure.in
-$THISVERSION = '1.64';
-$THISPROG = "texi2html $THISVERSION"; # program name and version
-
-# The man page for this program is included at the end of this file and can be
-# viewed using the command 'nroff -man texi2html'.
-
-# Identity:
-
-$T2H_TODAY = &pretty_date; # like "20 September 1993"
-# the eval prevents this from breaking on system which do not have
-# a proper getpwuid implemented
-eval { ($T2H_USER = (getpwuid ($<))[6]) =~ s/,.*//;}; # Who am i
-
-#+++############################################################################
-# #
-# Initialization #
-# Pasted content of File $(srcdir)/texi2html.init: Default initializations #
-# #
-#---############################################################################
-
-# leave this within comments, and keep the require statement
-# This way, you can directly run texi2html.pl, if $ENV{T2H_HOME}/texi2html.init
-# exists.
-
-#
-# -*-perl-*-
-######################################################################
-# File: texi2html.init
-#
-# Sets default values for command-line arguments and for various customizable
-# procedures
-#
-# A copy of this file is pasted into the beginning of texi2html by
-# 'make texi2html'
-#
-# Copy this file and make changes to it, if you like.
-# Afterwards, either, load it with command-line option -init_file <your_init_file>
-#
-# $Id$
-
-######################################################################
-# stuff which can also be set by command-line options
-#
-#
-# Note: values set here, overwrite values set by the command-line
-# options before -init_file and might still be overwritten by
-# command-line arguments following the -init_file option
-#
-
-# T2H_OPTIONS is a hash whose keys are the (long) names of valid
-# command-line options and whose values are a hash with the following keys:
-# type ==> one of !|=i|:i|=s|:s (see GetOpt::Long for more info)
-# linkage ==> ref to scalar, array, or subroutine (see GetOpt::Long for more info)
-# verbose ==> short description of option (displayed by -h)
-# noHelp ==> if 1 -> for "not so important options": only print description on -h 1
-# 2 -> for obsolete options: only print description on -h 2
-
-$T2H_DEBUG = 0;
-$T2H_OPTIONS -> {debug} =
-{
- type => '=i',
- linkage => \$main::T2H_DEBUG,
- verbose => 'output HTML with debuging information',
-};
-
-$T2H_DOCTYPE = '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">';
-$T2H_OPTIONS -> {doctype} =
-{
- type => '=s',
- linkage => \$main::T2H_DOCTYPE,
- verbose => 'document type which is output in header of HTML files',
- noHelp => 1
-};
-
-$T2H_CHECK = 0;
-$T2H_OPTIONS -> {check} =
-{
- type => '!',
- linkage => \$main::T2H_CHECK,
- verbose => 'if set, only check files and output all things that may be Texinfo commands',
- noHelp => 1
-};
-
-# -expand
-# if set to "tex" (or, "info") expand @iftex and @tex (or, @ifinfo) sections
-# else, neither expand @iftex, @tex, nor @ifinfo sections
-$T2H_EXPAND = "info";
-$T2H_OPTIONS -> {expand} =
-{
- type => '=s',
- linkage => \$T2H_EXPAND,
- verbose => 'Expand info|tex|none section of texinfo source',
-};
-
-# - glossary
-#if set, uses section named `Footnotes' for glossary
-$T2H_USE_GLOSSARY = 0;
-T2H_OPTIONS -> {glossary} =
-{
- type => '!',
- linkage => \$T2H_USE_GLOSSARY,
- verbose => "if set, uses section named `Footnotes' for glossary",
- noHelp => 1,
-};
-
-
-# -invisible
-# $T2H_INVISIBLE_MARK is the text used to create invisible destination
-# anchors for index links (you can for instance use the invisible.xbm
-# file shipped with this program). This is a workaround for a known
-# bug of many WWW browsers, including netscape.
-# For me, it works fine without it -- on the contrary: if there, it
-# inserts space between headers and start of text (obachman 3/99)
-$T2H_INVISIBLE_MARK = '';
-# $T2H_INVISIBLE_MARK = '&#160;';
-$T2H_OPTIONS -> {invisible} =
-{
- type => '=s',
- linkage => \$T2H_INVISIBLE_MARK,
- verbose => 'use text in invisble anchot',
- noHelp => 1,
-};
-
-# -iso
-# if set, ISO8879 characters are used for special symbols (like copyright, etc)
-$T2H_USE_ISO = 0;
-$T2H_OPTIONS -> {iso} =
-{
- type => 'iso',
- linkage => \$T2H_USE_ISO,
- verbose => 'if set, ISO8879 characters are used for special symbols (like copyright, etc)',
- noHelp => 1,
-};
-
-# -I
-# list directories where @include files are searched for (besides the
-# directory of the doc file) additional '-I' args add to this list
-@T2H_INCLUDE_DIRS = (".");
-$T2H_OPTIONS -> {I} =
-{
- type => '=s',
- linkage => \@T2H_INCLUDE_DIRS,
- verbose => 'append $s to the @include search path',
-};
-
-# -top_file
-# uses file of this name for top-level file
-# extension is manipulated appropriately, if necessary.
-# If empty, <basename of document>.html is used
-# Typically, you would set this to "index.html".
-$T2H_TOP_FILE = '';
-$T2H_OPTIONS -> {top_file} =
-{
- type => '=s',
- linkage => \$T2H_TOP_FILE,
- verbose => 'use $s as top file, instead of <docname>.html',
-};
-
-
-# -toc_file
-# uses file of this name for table of contents file
-# extension is manipulated appropriately, if necessary.
-# If empty, <basename of document>_toc.html is used
-$T2H_TOC_FILE = '';
-$T2H_OPTIONS -> {toc_file} =
-{
- type => '=s',
- linkage => \$T2H_TOC_FILE,
- verbose => 'use $s as ToC file, instead of <docname>_toc.html',
-};
-
-# -frames
-# if set, output two additional files which use HTML 4.0 "frames".
-$T2H_FRAMES = 0;
-$T2H_OPTIONS -> {frames} =
-{
- type => '!',
- linkage => \$T2H_FRAMES,
- verbose => 'output files which use HTML 4.0 frames (experimental)',
- noHelp => 1,
-};
-
-
-# -menu | -nomenu
-# if set, show the Texinfo menus
-$T2H_SHOW_MENU = 1;
-$T2H_OPTIONS -> {menu} =
-{
- type => '!',
- linkage => \$T2H_SHOW_MENU,
- verbose => 'ouput Texinfo menus',
-};
-
-# -number | -nonumber
-# if set, number sections and show section names and numbers in references
-# and menus
-$T2H_NUMBER_SECTIONS = 1;
-$T2H_OPTIONS -> {number} =
-{
- type => '!',
- linkage => \$T2H_NUMBER_SECTIONS,
- verbose => 'use numbered sections'
-};
-
-# if set, and T2H_NUMBER_SECTIONS is set, then use node names in menu
-# entries, instead of section names
-$T2H_NODE_NAME_IN_MENU = 0;
-
-# if set and menu entry equals menu descr, then do not print menu descr.
-# Likewise, if node name equals entry name, do not print entry name.
-$T2H_AVOID_MENU_REDUNDANCY = 1;
-
-# -split section|chapter|none
-# if set to 'section' (resp. 'chapter') create one html file per (sub)section
-# (resp. chapter) and separate pages for Top, ToC, Overview, Index,
-# Glossary, About.
-# otherwise, create monolithic html file which contains whole document
-#$T2H_SPLIT = 'section';
-$T2H_SPLIT = '';
-$T2H_OPTIONS -> {split} =
-{
- type => '=s',
- linkage => \$T2H_SPLIT,
- verbose => 'split document on section|chapter else no splitting',
-};
-
-# -section_navigation|-no-section_navigation
-# if set, then navigation panels are printed at the beginning of each section
-# and, possibly at the end (depending on whether or not there were more than
-# $T2H_WORDS_IN_PAGE words on page
-# This is most useful if you do not want to have section navigation
-# on -split chapter
-$T2H_SECTION_NAVIGATION = 1;
-$T2H_OPTIONS -> {sec_nav} =
-{
- type => '!',
- linkage => \$T2H_SECTION_NAVIGATION,
- verbose => 'output navigation panels for each section',
-};
-
-# -subdir
-# if set put result files in this directory
-# if not set result files are put into current directory
-#$T2H_SUBDIR = 'html';
-$T2H_SUBDIR = '';
-$T2H_OPTIONS -> {subdir} =
-{
- type => '=s',
- linkage => \$T2H_SUBDIR,
- verbose => 'put HTML files in directory $s, instead of $cwd',
-};
-
-# -short_extn
-# If this is set all HTML file will have extension ".htm" instead of
-# ".html". This is helpful when shipping the document to PC systems.
-$T2H_SHORTEXTN = 0;
-$T2H_OPTIONS -> {short_ext} =
-{
- type => '!',
- linkage => \$T2H_SHORTEXTN,
- verbose => 'use "htm" extension for output HTML files',
-};
-
-
-# -prefix
-# Set the output file prefix, prepended to all .html, .gif and .pl files.
-# By default, this is the basename of the document
-$T2H_PREFIX = '';
-$T2H_OPTIONS -> {prefix} =
-{
- type => '=s',
- linkage => \$T2H_PREFIX,
- verbose => 'use as prefix for output files, instead of <docname>',
-};
-
-# -o filename
-# If set, generate monolithic document output html into $filename
-$T2H_OUT = '';
-$T2H_OPTIONS -> {out_file} =
-{
- type => '=s',
- linkage => sub {$main::T2H_OUT = @_[1]; $T2H_SPLIT = '';},
- verbose => 'if set, all HTML output goes into file $s',
-};
-
-# -short_ref
-#if set cross-references are given without section numbers
-$T2H_SHORT_REF = '';
-$T2H_OPTIONS -> {short_ref} =
-{
- type => '!',
- linkage => \$T2H_SHORT_REF,
- verbose => 'if set, references are without section numbers',
-};
-
-# -idx_sum
-# if value is set, then for each @prinindex $what
-# $docu_name_$what.idx is created which contains lines of the form
-# $key\t$ref sorted alphabetically (case matters)
-$T2H_IDX_SUMMARY = 0;
-$T2H_OPTIONS -> {idx_sum} =
-{
- type => '!',
- linkage => \$T2H_IDX_SUMMARY,
- verbose => 'if set, also output index summary',
- noHelp => 1,
-};
-
-# -verbose
-# if set, chatter about what we are doing
-$T2H_VERBOSE = '';
-$T2H_OPTIONS -> {Verbose} =
-{
- type => '!',
- linkage => \$T2H_VERBOSE,
- verbose => 'print progress info to stdout',
-};
-
-# -lang
-# For page titles use $T2H_WORDS->{$T2H_LANG}->{...} as title.
-# To add a new language, supply list of titles (see $T2H_WORDS below).
-# and use ISO 639 language codes (see e.g. perl module Locale-Codes-1.02
-# for definitions)
-# Default's to 'en' if not set or no @documentlanguage is specified
-$T2H_LANG = '';
-$T2H_OPTIONS -> {lang} =
-{
- type => '=s',
- linkage => sub {SetDocumentLanguage($_[1])},
- verbose => 'use $s as document language (ISO 639 encoding)',
-};
-
-# -l2h
-# if set, uses latex2html for generation of math content
-$T2H_L2H = '';
-$T2H_OPTIONS -> {l2h} =
-{
- type => '!',
- linkage => \$T2H_L2H,
- verbose => 'if set, uses latex2html for @math and @tex',
-};
-
-######################
-# The following options are only relevant if $T2H_L2H is set
-#
-# -l2h_l2h
-# name/location of latex2html progam
-$T2H_L2H_L2H = "latex2html";
-$T2H_OPTIONS -> {l2h_l2h} =
-{
- type => '=s',
- linkage => \$T2H_L2H_L2H,
- verbose => 'program to use for latex2html translation',
- noHelp => 1,
-};
-
-# -l2h_skip
-# if set, skips actual call to latex2html tries to reuse previously generated
-# content, instead
-$T2H_L2H_SKIP = '';
-$T2H_OPTIONS -> {l2h_skip} =
-{
- type => '!',
- linkage => \$T2H_L2H_SKIP,
- verbose => 'if set, tries to reuse previously latex2html output',
- noHelp => 1,
-};
-
-# -l2h_tmp
-# if set, l2h uses this directory for temporarary files. The path
-# leading to this directory may not contain a dot (i.e., a "."),
-# otherwise, l2h will fail
-$T2H_L2H_TMP = '';
-$T2H_OPTIONS -> {l2h_tmp} =
-{
- type => '=s',
- linkage => \$T2H_L2H_TMP,
- verbose => 'if set, uses $s as temporary latex2html directory',
- noHelp => 1,
-};
-
-# if set, cleans intermediate files (they all have the prefix $doc_l2h_)
-# of l2h
-$T2H_L2H_CLEAN = 1;
-$T2H_OPTIONS -> {l2h_clean} =
-{
- type => '!',
- linkage => \$T2H_L2H_CLEAN,
- verbose => 'if set, do not keep intermediate latex2html files for later reuse',
- noHelp => 1,
-};
-
-$T2H_OPTIONS -> {D} =
-{
- type => '=s',
- linkage => sub {$main::value{@_[1]} = 1;},
- verbose => 'equivalent to Texinfo "@set $s 1"',
- noHelp => 1,
-};
-
-$T2H_OPTIONS -> {init_file} =
-{
- type => '=s',
- linkage => \&LoadInitFile,
- verbose => 'load init file $s'
-};
-
-
-##############################################################################
-#
-# The following can only be set in the init file
-#
-##############################################################################
-
-# if set, center @image by default
-# otherwise, do not center by default
-$T2H_CENTER_IMAGE = 1;
-
-# used as identation for block enclosing command @example, etc
-# If not empty, must be enclosed in <td></td>
-$T2H_EXAMPLE_INDENT_CELL = '<td>&nbsp;</td>';
-# same as above, only for @small
-$T2H_SMALL_EXAMPLE_INDENT_CELL = '<td>&nbsp;</td>';
-# font size for @small
-$T2H_SMALL_FONT_SIZE = '-1';
-
-# if non-empty, and no @..heading appeared in Top node, then
-# use this as header for top node/section, otherwise use value of
-# @settitle or @shorttitle (in that order)
-$T2H_TOP_HEADING = '';
-
-# if set, use this chapter for 'Index' button, else
-# use first chapter whose name matches 'index' (case insensitive)
-$T2H_INDEX_CHAPTER = '';
-
-# if set and $T2H_SPLIT is set, then split index pages at the next letter
-# after they have more than that many entries
-$T2H_SPLIT_INDEX = 100;
-
-# if set (e.g., to index.html) replace hrefs to this file
-# (i.e., to index.html) by ./
-$T2H_HREF_DIR_INSTEAD_FILE = '';
-
-########################################################################
-# Language dependencies:
-# To add a new language extend T2H_WORDS hash and create $T2H_<...>_WORDS hash
-# To redefine one word, simply do:
-# $T2H_WORDS->{<language>}->{<word>} = 'whatever' in your personal init file.
-#
-$T2H_WORDS_EN =
-{
- # titles of pages
- 'ToC_Title' => 'Table of Contents',
- 'Overview_Title' => 'Short Table of Contents',
- 'Index_Title' => 'Index',
- 'About_Title' => 'About this document',
- 'Footnotes_Title' => 'Footnotes',
- 'See' => 'See',
- 'see' => 'see',
- 'section' => 'section',
-# If necessary, we could extend this as follows:
-# # text for buttons
-# 'Top_Button' => 'Top',
-# 'ToC_Button' => 'Contents',
-# 'Overview_Button' => 'Overview',
-# 'Index_button' => 'Index',
-# 'Back_Button' => 'Back',
-# 'FastBack_Button' => 'FastBack',
-# 'Prev_Button' => 'Prev',
-# 'Up_Button' => 'Up',
-# 'Next_Button' => 'Next',
-# 'Forward_Button' =>'Forward',
-# 'FastWorward_Button' => 'FastForward',
-# 'First_Button' => 'First',
-# 'Last_Button' => 'Last',
-# 'About_Button' => 'About'
-};
-
-$T2H_WORD_DE =
-{
- 'ToC_Title' => 'Inhaltsverzeichniss',
- 'Overview_Title' => 'Kurzes Inhaltsverzeichniss',
- 'Index_Title' => 'Index',
- 'About_Title' => '&Uuml;ber dieses Dokument',
- 'Footnotes_Title' => 'Fu&szlig;noten',
- 'See' => 'Siehe',
- 'see' => 'siehe',
- 'section' => 'Abschnitt',
-};
-
-$T2H_WORD_NL =
-{
- 'ToC_Title' => 'Inhoudsopgave',
- 'Overview_Title' => 'Korte inhoudsopgave',
- 'Index_Title' => 'Index', #Not sure ;-)
- 'About_Title' => 'No translation available!', #No translation available!
- 'Footnotes_Title' => 'No translation available!', #No translation available!
- 'See' => 'Zie',
- 'see' => 'zie',
- 'section' => 'sectie',
-};
-
-$T2H_WORD_ES =
-{
- 'ToC_Title' => '&iacute;ndice General',
- 'Overview_Title' => 'Resumen del Contenido',
- 'Index_Title' => 'Index', #Not sure ;-)
- 'About_Title' => 'No translation available!', #No translation available!
- 'Footnotes_Title' => 'Fu&szlig;noten',
- 'See' => 'V&eacute;ase',
- 'see' => 'v&eacute;ase',
- 'section' => 'secci&oacute;n',
-};
-
-$T2H_WORD_NO =
-{
- 'ToC_Title' => 'Innholdsfortegnelse',
- 'Overview_Title' => 'Kort innholdsfortegnelse',
- 'Index_Title' => 'Indeks', #Not sure ;-)
- 'About_Title' => 'No translation available!', #No translation available!
- 'Footnotes_Title' => 'No translation available!',
- 'See' => 'Se',
- 'see' => 'se',
- 'section' => 'avsnitt',
-};
-
-$T2H_WORD_PT =
-{
- 'ToC_Title' => 'Sum&aacute;rio',
- 'Overview_Title' => 'Breve Sum&aacute;rio',
- 'Index_Title' => '&Iacute;ndice', #Not sure ;-)
- 'About_Title' => 'No translation available!', #No translation available!
- 'Footnotes_Title' => 'No translation available!',
- 'See' => 'Veja',
- 'see' => 'veja',
- 'section' => 'Se&ccedil;&atilde;o',
-};
-
-$T2H_WORDS =
-{
- 'en' => $T2H_WORDS_EN,
- 'de' => $T2H_WORDS_DE,
- 'nl' => $T2H_WORDS_NL,
- 'es' => $T2H_WORDS_ES,
- 'no' => $T2H_WORDS_NO,
- 'pt' => $T2H_WORDS_PT
-};
-
-@MONTH_NAMES_EN =
-(
- 'January', 'February', 'March', 'April', 'May',
- 'June', 'July', 'August', 'September', 'October',
- 'November', 'December'
-);
-
-@MONTH_NAMES_DE =
-(
- 'Januar', 'Februar', 'M&auml;rz', 'April', 'Mai',
- 'Juni', 'Juli', 'August', 'September', 'Oktober',
- 'November', 'Dezember'
-);
-
-@MONTH_NAMES_NL =
-(
- 'Januari', 'Februari', 'Maart', 'April', 'Mei',
- 'Juni', 'Juli', 'Augustus', 'September', 'Oktober',
- 'November', 'December'
-);
-
-@MONTH_NAMES_ES =
-(
- 'enero', 'febrero', 'marzo', 'abril', 'mayo',
- 'junio', 'julio', 'agosto', 'septiembre', 'octubre',
- 'noviembre', 'diciembre'
-);
-
-@MONTH_NAMES_NO =
-(
-
- 'januar', 'februar', 'mars', 'april', 'mai',
- 'juni', 'juli', 'august', 'september', 'oktober',
- 'november', 'desember'
-);
-
-@MONTH_NAMES_PT =
-(
- 'Janeiro', 'Fevereiro', 'Mar&ccedil;o', 'Abril', 'Maio',
- 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro',
- 'Novembro', 'Dezembro'
-);
-
-
-$MONTH_NAMES =
-{
- 'en' => \@MONTH_NAMES_EN,
- 'de' => \@MONTH_NAMES_DE,
- 'es' => \@MONTH_NAMES_ES,
- 'nl' => \@MONTH_NAMES_NL,
- 'no' => \@MONTH_NAMES_NO,
- 'pt' => \@MONTH_NAMES_PT
-};
-########################################################################
-# Control of Page layout:
-# You can make changes of the Page layout at two levels:
-# 1.) For small changes, it is often enough to change the value of
-# some global string/hash/array variables
-# 2.) For larger changes, reimplement one of the T2H_DEFAULT_<fnc>* routines,
-# give them another name, and assign them to the respective
-# $T2H_<fnc> variable.
-
-# As a general interface, the hashes T2H_HREF, T2H_NAME, T2H_NODE hold
-# href, html-name, node-name of
-# This -- current section (resp. html page)
-# Top -- top page ($T2H_TOP_FILE)
-# Contents -- Table of contents
-# Overview -- Short table of contents
-# Index -- Index page
-# About -- page which explain "navigation buttons"
-# First -- first node
-# Last -- last node
-#
-# Whether or not the following hash values are set, depends on the context
-# (all values are w.r.t. 'This' section)
-# Next -- next node of texinfo
-# Prev -- previous node of texinfo
-# Up -- up node of texinfo
-# Forward -- next node in reading order
-# Back -- previous node in reading order
-# FastForward -- if leave node, up and next, else next node
-# FastBackward-- if leave node, up and prev, else prev node
-#
-# Furthermore, the following global variabels are set:
-# $T2H_THISDOC{title} -- title as set by @setttile
-# $T2H_THISDOC{fulltitle} -- full title as set by @title...
-# $T2H_THISDOC{subtitle} -- subtitle as set by @subtitle
-# $T2H_THISDOC{author} -- author as set by @author
-#
-# and pointer to arrays of lines which need to be printed by t2h_print_lines
-# $T2H_OVERVIEW -- lines of short table of contents
-# $T2H_TOC -- lines of table of contents
-# $T2H_TOP -- lines of Top texinfo node
-# $T2H_THIS_SECTION -- lines of 'This' section
-
-#
-# There are the following subs which control the layout:
-#
-$T2H_print_section = \&T2H_DEFAULT_print_section;
-$T2H_print_Top_header = \&T2H_DEFAULT_print_Top_header;
-$T2H_print_Top_footer = \&T2H_DEFAULT_print_Top_footer;
-$T2H_print_Top = \&T2H_DEFAULT_print_Top;
-$T2H_print_Toc = \&T2H_DEFAULT_print_Toc;
-$T2H_print_Overview = \&T2H_DEFAULT_print_Overview;
-$T2H_print_Footnotes = \&T2H_DEFAULT_print_Footnotes;
-$T2H_print_About = \&T2H_DEFAULT_print_About;
-$T2H_print_misc_header = \&T2H_DEFAULT_print_misc_header;
-$T2H_print_misc_footer = \&T2H_DEFAULT_print_misc_footer;
-$T2H_print_misc = \&T2H_DEFAULT_print_misc;
-$T2H_print_chapter_header = \&T2H_DEFAULT_print_chapter_header;
-$T2H_print_chapter_footer = \&T2H_DEFAULT_print_chapter_footer;
-$T2H_print_page_head = \&T2H_DEFAULT_print_page_head;
-$T2H_print_page_foot = \&T2H_DEFAULT_print_page_foot;
-$T2H_print_head_navigation = \&T2H_DEFAULT_print_head_navigation;
-$T2H_print_foot_navigation = \&T2H_DEFAULT_print_foot_navigation;
-$T2H_button_icon_img = \&T2H_DEFAULT_button_icon_img;
-$T2H_print_navigation = \&T2H_DEFAULT_print_navigation;
-$T2H_about_body = \&T2H_DEFAULT_about_body;
-$T2H_print_frame = \&T2H_DEFAULT_print_frame;
-$T2H_print_toc_frame = \&T2H_DEFAULT_print_toc_frame;
-
-########################################################################
-# Layout for html for every sections
-#
-sub T2H_DEFAULT_print_section
-{
- my $fh = shift;
- local $T2H_BUTTONS = \@T2H_SECTION_BUTTONS;
- &$T2H_print_head_navigation($fh) if $T2H_SECTION_NAVIGATION;
- my $nw = t2h_print_lines($fh);
- if ($T2H_SPLIT eq 'section' && $T2H_SECTION_NAVIGATION)
- {
- &$T2H_print_foot_navigation($fh, $nw);
- }
- else
- {
- print $fh '<HR SIZE="6">' . "\n";
- }
-}
-
-###################################################################
-# Layout of top-page I recommend that you use @ifnothtml, @ifhtml,
-# @html within the Top texinfo node to specify content of top-level
-# page.
-#
-# If you enclose everything in @ifnothtml, then title, subtitle,
-# author and overview is printed
-# T2H_HREF of Next, Prev, Up, Forward, Back are not defined
-# if $T2H_SPLIT then Top page is in its own html file
-sub T2H_DEFAULT_print_Top_header
-{
- &$T2H_print_page_head(@_) if $T2H_SPLIT;
- t2h_print_label(@_); # this needs to be called, otherwise no label set
- &$T2H_print_head_navigation(@_);
-}
-sub T2H_DEFAULT_print_Top_footer
-{
- &$T2H_print_foot_navigation(@_);
- &$T2H_print_page_foot(@_) if $T2H_SPLIT;
-}
-sub T2H_DEFAULT_print_Top
-{
- my $fh = shift;
-
- # for redefining navigation buttons use:
- # local $T2H_BUTTONS = [...];
- # as it is, 'Top', 'Contents', 'Index', 'About' are printed
- local $T2H_BUTTONS = \@T2H_MISC_BUTTONS;
- &$T2H_print_Top_header($fh);
- if ($T2H_THIS_SECTION)
- {
- # if top-level node has content, then print it with extra header
- print $fh "<H1>$T2H_NAME{Top}</H1>"
- unless ($T2H_HAS_TOP_HEADING);
- t2h_print_lines($fh, $T2H_THIS_SECTION)
- }
- else
- {
- # top-level node is fully enclosed in @ifnothtml
- # print fulltitle, subtitle, author, Overview
- print $fh
- "<CENTER>\n<H1>" .
- join("</H1>\n<H1>", split(/\n/, $T2H_THISDOC{fulltitle})) .
- "</H1>\n";
- print $fh "<H2>$T2H_THISDOC{subtitle}</H2>\n" if $T2H_THISDOC{subtitle};
- print $fh "$T2H_THISDOC{author}\n" if $T2H_THISDOC{author};
- print $fh <<EOT;
-</CENTER>
-<HR>
-<P></P>
-<H2> Overview: </H2>
-<BLOCKQUOTE>
-EOT
- t2h_print_lines($fh, $T2H_OVERVIEW);
- print $fh "</BLOCKQUOTE>\n";
- }
- &$T2H_print_Top_footer($fh);
-}
-
-###################################################################
-# Layout of Toc, Overview, and Footnotes pages
-# By default, we use "normal" layout
-# T2H_HREF of Next, Prev, Up, Forward, Back, etc are not defined
-# use: local $T2H_BUTTONS = [...] to redefine navigation buttons
-sub T2H_DEFAULT_print_Toc
-{
- return &$T2H_print_misc(@_);
-}
-sub T2H_DEFAULT_print_Overview
-{
- return &$T2H_print_misc(@_);
-}
-sub T2H_DEFAULT_print_Footnotes
-{
- return &$T2H_print_misc(@_);
-}
-sub T2H_DEFAULT_print_About
-{
- return &$T2H_print_misc(@_);
-}
-
-sub T2H_DEFAULT_print_misc_header
-{
- &$T2H_print_page_head(@_) if $T2H_SPLIT;
- # this needs to be called, otherwise, no labels are set
- t2h_print_label(@_);
- &$T2H_print_head_navigation(@_);
-}
-sub T2H_DEFAULT_print_misc_footer
-{
- &$T2H_print_foot_navigation(@_);
- &$T2H_print_page_foot(@_) if $T2H_SPLIT;
-}
-sub T2H_DEFAULT_print_misc
-{
- my $fh = shift;
- local $T2H_BUTTONS = \@T2H_MISC_BUTTONS;
- &$T2H_print_misc_header($fh);
- print $fh "<H1>$T2H_NAME{This}</H1>\n";
- t2h_print_lines($fh);
- &$T2H_print_misc_footer($fh);
-}
-
-###################################################################
-# chapter_header and chapter_footer are only called if
-# T2H_SPLIT eq 'chapter'
-# chapter_header: after print_page_header, before print_section
-# chapter_footer: after print_section of last section, before print_page_footer
-#
-# If you want to get rid of navigation stuff after each section,
-# redefine print_section such that it does not call print_navigation,
-# and put print_navigation into print_chapter_header
-@T2H_CHAPTER_BUTTONS =
- (
- 'FastBack', 'FastForward', ' ',
- ' ', ' ', ' ', ' ',
- 'Top', 'Contents', 'Index', 'About',
- );
-
-sub T2H_DEFAULT_print_chapter_header
-{
- # nothing to do there, by default
- if (! $T2H_SECTION_NAVIGATION)
- {
- my $fh = shift;
- local $T2H_BUTTONS = \@T2H_CHAPTER_BUTTONS;
- &$T2H_print_navigation($fh);
- print $fh "\n<HR SIZE=2>\n";
- }
-}
-
-sub T2H_DEFAULT_print_chapter_footer
-{
- local $T2H_BUTTONS = \@T2H_CHAPTER_BUTTONS;
- &$T2H_print_navigation(@_);
-}
-###################################################################
-$T2H_TODAY = &pretty_date; # like "20 September 1993"
-
-sub pretty_date {
- local($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst);
-
- ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time);
- $year += ($year < 70) ? 2000 : 1900;
- # obachman: Let's do it as the Americans do
- return($MONTH_NAMES->{$T2H_LANG}[$mon] . ", " . $mday . " " . $year);
-}
-
-
-###################################################################
-# Layout of standard header and footer
-#
-
-# Set the default body text, inserted between <BODY ... >
-###$T2H_BODYTEXT = 'LANG="EN" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000"';
-$T2H_BODYTEXT = 'LANG="' . $T2H_LANG . '" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000"';
-# text inserted after <BODY ...>
-$T2H_AFTER_BODY_OPEN = '';
-#text inserted before </BODY>
-$T2H_PRE_BODY_CLOSE = '';
-# this is used in footer
-$T2H_ADDRESS = "by <I>$T2H_USER</I> " if $T2H_USER;
-$T2H_ADDRESS .= "on <I>$T2H_TODAY</I>";
-# this is added inside <HEAD></HEAD> after <TITLE> and some META NAME stuff
-# can be used for <style> <script>, <meta> tags
-$T2H_EXTRA_HEAD = '';
-
-sub T2H_DEFAULT_print_page_head
-{
- my $fh = shift;
- my $longtitle = "$T2H_THISDOC{title}: $T2H_NAME{This}";
- print $fh <<EOT;
-<HTML>
-$T2H_DOCTYPE
-<!-- Created on $T2H_TODAY by $THISPROG -->
-<!--
-$T2H_AUTHORS
--->
-<HEAD>
-<TITLE>$longtitle</TITLE>
-
-<META NAME="description" CONTENT="$longtitle">
-<META NAME="keywords" CONTENT="$longtitle">
-<META NAME="resource-type" CONTENT="document">
-<META NAME="distribution" CONTENT="global">
-<META NAME="Generator" CONTENT="$THISPROG">
-$T2H_EXTRA_HEAD
-</HEAD>
-
-<BODY $T2H_BODYTEXT>
-$T2H_AFTER_BODY_OPEN
-EOT
-}
-
-sub T2H_DEFAULT_print_page_foot
-{
- my $fh = shift;
- print $fh <<EOT;
-<BR>
-<FONT SIZE="-1">
-This document was generated
-$T2H_ADDRESS
-using <A HREF="$T2H_HOMEPAGE"><I>texi2html</I></A>
-$T2H_PRE_BODY_CLOSE
-</BODY>
-</HTML>
-EOT
-}
-
-###################################################################
-# Layout of navigation panel
-
-# if this is set, then a vertical navigation panel is used
-$T2H_VERTICAL_HEAD_NAVIGATION = 0;
-sub T2H_DEFAULT_print_head_navigation
-{
- my $fh = shift;
- if ($T2H_VERTICAL_HEAD_NAVIGATION)
- {
- print $fh <<EOT;
-<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0">
-<TR VALIGN="TOP">
-<TD ALIGN="LEFT">
-EOT
- }
- &$T2H_print_navigation($fh, $T2H_VERTICAL_HEAD_NAVIGATION);
- if ($T2H_VERTICAL_HEAD_NAVIGATION)
- {
- print $fh <<EOT;
-</TD>
-<TD ALIGN="LEFT">
-EOT
- }
- elsif ($T2H_SPLIT eq 'section')
- {
- print $fh "<HR SIZE=1>\n";
- }
-}
-
-# Specifies the minimum page length required before a navigation panel
-# is placed at the bottom of a page (the default is that of latex2html)
-# T2H_THIS_WORDS_IN_PAGE holds number of words of current page
-$T2H_WORDS_IN_PAGE = 300;
-sub T2H_DEFAULT_print_foot_navigation
-{
- my $fh = shift;
- my $nwords = shift;
- if ($T2H_VERTICAL_HEAD_NAVIGATION)
- {
- print $fh <<EOT;
-</TD>
-</TR>
-</TABLE>
-EOT
- }
- print $fh "<HR SIZE=1>\n";
- &$T2H_print_navigation($fh) if ($nwords >= $T2H_WORDS_IN_PAGE)
-}
-
-######################################################################
-# navigation panel
-#
-# specify in this array which "buttons" should appear in which order
-# in the navigation panel for sections; use ' ' for empty buttons (space)
-@T2H_SECTION_BUTTONS =
- (
- 'Back', 'Forward', ' ', 'FastBack', 'Up', 'FastForward',
- ' ', ' ', ' ', ' ',
- 'Top', 'Contents', 'Index', 'About',
- );
-
-# buttons for misc stuff
-@T2H_MISC_BUTTONS = ('Top', 'Contents', 'Index', 'About');
-
-# insert here name of icon images for buttons
-# Icons are used, if $T2H_ICONS and resp. value are set
-%T2H_ACTIVE_ICONS =
- (
- 'Top', '',
- 'Contents', '',
- 'Overview', '',
- 'Index', '',
- 'Back', '',
- 'FastBack', '',
- 'Prev', '',
- 'Up', '',
- 'Next', '',
- 'Forward', '',
- 'FastForward', '',
- 'About' , '',
- 'First', '',
- 'Last', '',
- ' ', ''
- );
-
-# insert here name of icon images for these, if button is inactive
-%T2H_PASSIVE_ICONS =
- (
- 'Top', '',
- 'Contents', '',
- 'Overview', '',
- 'Index', '',
- 'Back', '',
- 'FastBack', '',
- 'Prev', '',
- 'Up', '',
- 'Next', '',
- 'Forward', '',
- 'FastForward', '',
- 'About', '',
- 'First', '',
- 'Last', '',
- );
-
-# how to create IMG tag
-sub T2H_DEFAULT_button_icon_img
-{
- my $button = shift;
- my $icon = shift;
- my $name = shift;
- return qq{<IMG SRC="$icon" BORDER="0" ALT="$button: $name" ALIGN="MIDDLE">};
-}
-
-# Names of text as alternative for icons
-%T2H_NAVIGATION_TEXT =
- (
- 'Top', 'Top',
- 'Contents', 'Contents',
- 'Overview', 'Overview',
- 'Index', 'Index',
- ' ', ' &nbsp; ',
- 'Back', ' &lt; ',
- 'FastBack', ' &lt;&lt; ',
- 'Prev', 'Prev',
- 'Up', ' Up ',
- 'Next', 'Next',
- 'Forward', ' &gt; ',
- 'FastForward', ' &gt;&gt; ',
- 'About', ' ? ',
- 'First', ' |&lt; ',
- 'Last', ' &gt;| '
- );
-
-sub T2H_DEFAULT_print_navigation
-{
- my $fh = shift;
- my $vertical = shift;
- my $spacing = 1;
- print $fh "<TABLE CELLPADDING=$spacing CELLSPACING=$spacing BORDER=0>\n";
-
- print $fh "<TR>" unless $vertical;
- for $button (@$T2H_BUTTONS)
- {
- print $fh qq{<TR VALIGN="TOP" ALIGN="LEFT">\n} if $vertical;
- print $fh qq{<TD VALIGN="MIDDLE" ALIGN="LEFT">};
-
- if (ref($button) eq 'CODE')
- {
- &$button($fh, $vertical);
- }
- elsif ($button eq ' ')
- { # handle space button
- print $fh
- $T2H_ICONS && $T2H_ACTIVE_ICONS{' '} ?
- &$T2H_button_icon_img($button, $T2H_ACTIVE_ICONS{' '}) :
- $T2H_NAVIGATION_TEXT{' '};
- next;
- }
- elsif ($T2H_HREF{$button})
- { # button is active
- print $fh
- $T2H_ICONS && $T2H_ACTIVE_ICONS{$button} ? # use icon ?
- t2h_anchor('', $T2H_HREF{$button}, # yes
- &$T2H_button_icon_img($button,
- $T2H_ACTIVE_ICONS{$button},
- $T2H_NAME{$button}))
- : # use text
- "[" .
- t2h_anchor('', $T2H_HREF{$button}, $T2H_NAVIGATION_TEXT{$button}) .
- "]";
- }
- else
- { # button is passive
- print $fh
- $T2H_ICONS && $T2H_PASSIVE_ICONS{$button} ?
- &$T2H_button_icon_img($button,
- $T2H_PASSIVE_ICONS{$button},
- $T2H_NAME{$button}) :
-
- "[" . $T2H_NAVIGATION_TEXT{$button} . "]";
- }
- print $fh "</TD>\n";
- print $fh "</TR>\n" if $vertical;
- }
- print $fh "</TR>" unless $vertical;
- print $fh "</TABLE>\n";
-}
-
-######################################################################
-# Frames: this is from "Richard Y. Kim" <ryk@coho.net>
-# Should be improved to be more conforming to other _print* functions
-
-sub T2H_DEFAULT_print_frame
-{
- my $fh = shift;
- print $fh <<EOT;
-<HTML>
-<HEAD><TITLE>$T2H_THISDOC{title}</TITLE></HEAD>
-<FRAMESET cols="140,*">
- <FRAME name=toc src="$docu_toc_frame_file">
- <FRAME name=main src="$docu_doc">
-</FRAMESET>
-</HTML>
-EOT
-}
-
-sub T2H_DEFAULT_print_toc_frame
-{
- my $fh = shift;
- &$T2H_print_page_head($fh);
- print $fh <<EOT;
-<H2>Content</H2>
-EOT
- print $fh map {s/HREF=/target=\"main\" HREF=/; $_;} @stoc_lines;
- print $fh "</BODY></HTML>\n";
-}
-
-######################################################################
-# About page
-#
-
-# T2H_PRE_ABOUT might be a function
-$T2H_PRE_ABOUT = <<EOT;
-This document was generated $T2H_ADDRESS
-using <A HREF="$T2H_HOMEPAGE"><I>texi2html</I></A>
-<P></P>
-EOT
-$T2H_AFTER_ABOUT = '';
-
-sub T2H_DEFAULT_about_body
-{
- my $about;
- if (ref($T2H_PRE_ABOUT) eq 'CODE')
- {
- $about = &$T2H_PRE_ABOUT();
- }
- else
- {
- $about = $T2H_PRE_ABOUT;
- }
- $about .= <<EOT;
-The buttons in the navigation panels have the following meaning:
-<P></P>
-<table border = "1">
-<TR>
-<TH> Button </TH>
-<TH> Name </TH>
-<TH> Go to </TH>
-<TH> From 1.2.3 go to</TH>
-</TR>
-EOT
-
- for $button (@T2H_SECTION_BUTTONS)
- {
- next if $button eq ' ' || ref($button) eq 'CODE';
- $about .= <<EOT;
-<TR>
-<TD ALIGN="CENTER">
-EOT
- $about .=
- ($T2H_ICONS && $T2H_ACTIVE_ICONS{$button} ?
- &$T2H_button_icon_img($button, $T2H_ACTIVE_ICONS{$button}) :
- " [" . $T2H_NAVIGATION_TEXT{$button} . "] ");
- $about .= <<EOT;
-</TD>
-<TD ALIGN="CENTER">
-$button
-</TD>
-<TD>
-$T2H_BUTTONS_GOTO{$button}
-</TD>
-<TD>
-$T2H_BUTTONS_EXAMPLE{$button}
-</TD>
-</TR>
-EOT
- }
-
- $about .= <<EOT;
-</TABLE>
-<P></P>
-where the <STRONG> Example </STRONG> assumes that the current position
-is at <STRONG> Subsubsection One-Two-Three </STRONG> of a document of
-the following structure:
-<UL>
-<LI> 1. Section One </LI>
-<UL>
-<LI>1.1 Subsection One-One</LI>
-<UL>
-<LI> ... </LI>
-</UL>
-<LI>1.2 Subsection One-Two</LI>
-<UL>
-<LI>1.2.1 Subsubsection One-Two-One
-</LI><LI>1.2.2 Subsubsection One-Two-Two
-</LI><LI>1.2.3 Subsubsection One-Two-Three &nbsp; &nbsp; <STRONG>
-&lt;== Current Position </STRONG>
-</LI><LI>1.2.4 Subsubsection One-Two-Four
-</LI></UL>
-<LI>1.3 Subsection One-Three</LI>
-<UL>
-<LI> ... </LI>
-</UL>
-<LI>1.4 Subsection One-Four</LI>
-</UL>
-</UL>
-$T2H_AFTER_ABOUT
-EOT
- return $about;
-}
-
-
-%T2H_BUTTONS_GOTO =
- (
- 'Top', 'cover (top) of document',
- 'Contents', 'table of contents',
- 'Overview', 'short table of contents',
- 'Index', 'concept index',
- 'Back', 'previous section in reading order',
- 'FastBack', 'previous or up-and-previous section ',
- 'Prev', 'previous section same level',
- 'Up', 'up section',
- 'Next', 'next section same level',
- 'Forward', 'next section in reading order',
- 'FastForward', 'next or up-and-next section',
- 'About' , 'this page',
- 'First', 'first section in reading order',
- 'Last', 'last section in reading order',
- );
-
-%T2H_BUTTONS_EXAMPLE =
-(
- 'Top', ' &nbsp; ',
- 'Contents', ' &nbsp; ',
- 'Overview', ' &nbsp; ',
- 'Index', ' &nbsp; ',
- 'Back', '1.2.2',
- 'FastBack', '1.1',
- 'Prev', '1.2.2',
- 'Up', '1.2',
- 'Next', '1.2.4',
- 'Forward', '1.2.4',
- 'FastForward', '1.3',
- 'About', ' &nbsp; ',
- 'First', '1.',
- 'Last', '1.2.4',
-);
-
-
-######################################################################
-# from here on, its l2h init stuff
-#
-
-## initialization for latex2html as for Singular manual generation
-## obachman 3/99
-
-#
-# Options controlling Titles, File-Names, Tracing and Sectioning
-#
-$TITLE = '';
-
-$SHORTEXTN = 0;
-
-$LONG_TITLES = 0;
-
-$DESTDIR = ''; # should be overwritten by cmd-line argument
-
-$NO_SUBDIR = 0;# should be overwritten by cmd-line argument
-
-$PREFIX = ''; # should be overwritten by cmd-line argument
-
-$AUTO_PREFIX = 0; # this is needed, so that prefix settings are used
-
-$AUTO_LINK = 0;
-
-$SPLIT = 0;
-
-$MAX_LINK_DEPTH = 0;
-
-$TMP = ''; # should be overwritten by cmd-line argument
-
-$DEBUG = 0;
-
-$VERBOSE = 1;
-
-#
-# Options controlling Extensions and Special Features
-#
-$HTML_VERSION = "3.2";
-
-$TEXDEFS = 1; # we absolutely need that
-
-$EXTERNAL_FILE = '';
-
-$SCALABLE_FONTS = 1;
-
-$NO_SIMPLE_MATH = 1;
-
-$LOCAL_ICONS = 1;
-
-$SHORT_INDEX = 0;
-
-$NO_FOOTNODE = 1;
-
-$ADDRESS = '';
-
-$INFO = '';
-
-#
-# Switches controlling Image Generation
-#
-$ASCII_MODE = 0;
-
-$NOLATEX = 0;
-
-$EXTERNAL_IMAGES = 0;
-
-$PS_IMAGES = 0;
-
-$NO_IMAGES = 0;
-
-$IMAGES_ONLY = 0;
-
-$REUSE = 2;
-
-$ANTI_ALIAS = 1;
-
-$ANTI_ALIAS_TEXT = 1;
-
-#
-#Switches controlling Navigation Panels
-#
-$NO_NAVIGATION = 1;
-$ADDRESS = '';
-$INFO = 0; # 0 = do not make a "About this document..." section
-
-#
-#Switches for Linking to other documents
-#
-# actuall -- we don't care
-
-$MAX_SPLIT_DEPTH = 0; # Stop making separate files at this depth
-
-$MAX_LINK_DEPTH = 0; # Stop showing child nodes at this depth
-
-$NOLATEX = 0; # 1 = do not pass unknown environments to Latex
-
-$EXTERNAL_IMAGES = 0; # 1 = leave the images outside the document
-
-$ASCII_MODE = 0; # 1 = do not use any icons or internal images
-
-# 1 = use links to external postscript images rather than inlined bitmap
-# images.
-$PS_IMAGES = 0;
-$SHOW_SECTION_NUMBERS = 0;
-
-### Other global variables ###############################################
-$CHILDLINE = "";
-
-# This is the line width measured in pixels and it is used to right justify
-# equations and equation arrays;
-$LINE_WIDTH = 500;
-
-# Used in conjunction with AUTO_NAVIGATION
-$WORDS_IN_PAGE = 300;
-
-# Affects ONLY the way accents are processed
-$default_language = 'english';
-
-# The value of this variable determines how many words to use in each
-# title that is added to the navigation panel (see below)
-#
-$WORDS_IN_NAVIGATION_PANEL_TITLES = 0;
-
-# This number will determine the size of the equations, special characters,
-# and anything which will be converted into an inlined image
-# *except* "image generating environments" such as "figure", "table"
-# or "minipage".
-# Effective values are those greater than 0.
-# Sensible values are between 0.1 - 4.
-$MATH_SCALE_FACTOR = 1.5;
-
-# This number will determine the size of
-# image generating environments such as "figure", "table" or "minipage".
-# Effective values are those greater than 0.
-# Sensible values are between 0.1 - 4.
-$FIGURE_SCALE_FACTOR = 1.6;
-
-
-# If both of the following two variables are set then the "Up" button
-# of the navigation panel in the first node/page of a converted document
-# will point to $EXTERNAL_UP_LINK. $EXTERNAL_UP_TITLE should be set
-# to some text which describes this external link.
-$EXTERNAL_UP_LINK = "";
-$EXTERNAL_UP_TITLE = "";
-
-# If this is set then the resulting HTML will look marginally better if viewed
-# with Netscape.
-$NETSCAPE_HTML = 1;
-
-# Valid paper sizes are "letter", "legal", "a4","a3","a2" and "a0"
-# Paper sizes has no effect other than in the time it takes to create inlined
-# images and in whether large images can be created at all ie
-# - larger paper sizes *MAY* help with large image problems
-# - smaller paper sizes are quicker to handle
-$PAPERSIZE = "a4";
-
-# Replace "english" with another language in order to tell LaTeX2HTML that you
-# want some generated section titles (eg "Table of Contents" or "References")
-# to appear in a different language. Currently only "english" and "french"
-# is supported but it is very easy to add your own. See the example in the
-# file "latex2html.config"
-$TITLES_LANGUAGE = "english";
-
-1; # This must be the last non-comment line
-
-# End File texi2html.init
-######################################################################
-
-
-require "$ENV{T2H_HOME}/texi2html.init"
- if ($0 =~ /\.pl$/ &&
- -e "$ENV{T2H_HOME}/texi2html.init" && -r "$ENV{T2H_HOME}/texi2html.init");
-
-#+++############################################################################
-# #
-# Initialization #
-# Pasted content of File $(srcdir)/MySimple.pm: Command-line processing #
-# #
-#---############################################################################
-
-# leave this within comments, and keep the require statement
-# This way, you can directly run texi2html.pl, if $ENV{T2H_HOME}/texi2html.init
-# exists.
-
-#
-package Getopt::MySimple;
-
-# Name:
-# Getopt::MySimple.
-#
-# Documentation:
-# POD-style (incomplete) documentation is in file MySimple.pod
-#
-# Tabs:
-# 4 spaces || die.
-#
-# Author:
-# Ron Savage rpsavage@ozemail.com.au.
-# 1.00 19-Aug-97 Initial version.
-# 1.10 13-Oct-97 Add arrays of switches (eg '=s@').
-# 1.20 3-Dec-97 Add 'Help' on a per-switch basis.
-# 1.30 11-Dec-97 Change 'Help' to 'verbose'. Make all hash keys lowercase.
-# 1.40 10-Nov-98 Change width of help report. Restructure tests.
-# 1-Jul-00 Modifications for Texi2html
-
-# --------------------------------------------------------------------------
-# Locally modified by obachman (Display type instead of env, order by cmp)
-# $Id$
-
-# use strict;
-# no strict 'refs';
-
-use vars qw(@EXPORT @EXPORT_OK @ISA);
-use vars qw($fieldWidth $opt $VERSION);
-
-use Exporter();
-use Getopt::Long;
-
-@ISA = qw(Exporter);
-@EXPORT = qw();
-@EXPORT_OK = qw($opt); # An alias for $self -> {'opt'}.
-
-# --------------------------------------------------------------------------
-
-$fieldWidth = 20;
-$VERSION = '1.41';
-
-# --------------------------------------------------------------------------
-
-sub byOrder
-{
- my($self) = @_;
-
- return uc($a) cmp (uc($b));
-}
-
-# --------------------------------------------------------------------------
-
-sub dumpOptions
-{
- my($self) = @_;
-
- print 'Option', ' ' x ($fieldWidth - length('Option') ), "Value\n";
-
- for (sort byOrder keys(%{$self -> {'opt'} }) )
- {
- print "-$_", ' ' x ($fieldWidth - (1 + length) ), "${$self->{'opt'} }{$_}\n";
- }
-
- print "\n";
-
-} # End of dumpOptions.
-
-# --------------------------------------------------------------------------
-# Return:
-# 0 -> Error.
-# 1 -> Ok.
-
-sub getOptions
-{
- push(@_, 0) if ($#_ == 2); # Default for $ignoreCase is 0.
- push(@_, 1) if ($#_ == 3); # Default for $helpThenExit is 1.
-
- my($self, $default, $helpText, $versionText,
- $helpThenExit, $versionThenExit, $ignoreCase) = @_;
-
- $helpThenExit = 1 unless (defined($helpThenExit));
- $versionThenExit = 1 unless (defined($versionThenExit));
- $ignoreCase = 0 unless (defined($ignoreCase));
-
- $self -> {'default'} = $default;
- $self -> {'helpText'} = $helpText;
- $self -> {'versionText'} = $versionText;
- $Getopt::Long::ignorecase = $ignoreCase;
-
- unless (defined($self -> {'default'}{'help'}))
- {
- $self -> {'default'}{'help'} =
- {
- type => ':i',
- default => '',
- linkage => sub {$self->helpOptions($_[1]); exit (0) if $helpThenExit;},
- verbose => "print help and exit"
- };
- }
-
- unless (defined($self -> {'default'}{'version'}))
- {
- $self -> {'default'}{'version'} =
- {
- type => '',
- default => '',
- linkage => sub {print $self->{'versionText'}; exit (0) if versionTheExit;},
- verbose => "print version and exit"
- };
- }
-
- for (keys(%{$self -> {'default'} }) )
- {
- my $type = ${$self -> {'default'} }{$_}{'type'};
- push(@{$self -> {'type'} }, "$_$type");
- $self->{'opt'}->{$_} = ${$self -> {'default'} }{$_}{'linkage'}
- if ${$self -> {'default'} }{$_}{'linkage'};
- }
-
- my($result) = &GetOptions($self -> {'opt'}, @{$self -> {'type'} });
-
- return $result unless $result;
-
- for (keys(%{$self -> {'default'} }) )
- {
- if (! defined(${$self -> {'opt'} }{$_})) #{
- {
- ${$self -> {'opt'} }{$_} = ${$self -> {'default'} }{$_}{'default'};
- }
- }
-
- $result;
-} # End of getOptions.
-
-# --------------------------------------------------------------------------
-
-sub helpOptions
-{
- my($self) = shift;
- my($noHelp) = shift;
- $noHelp = 0 unless $noHelp;
- my($optwidth, $typewidth, $defaultwidth, $maxlinewidth, $valind, $valwidth)
- = (10, 5, 9, 78, 4, 11);
-
- print "$self->{'helpText'}" if ($self -> {'helpText'});
-
- print ' Option', ' ' x ($optwidth - length('Option') -1 ),
- 'Type', ' ' x ($typewidth - length('Type') + 1),
- 'Default', ' ' x ($defaultwidth - length('Default') ),
- "Description\n";
-
- for (sort byOrder keys(%{$self -> {'default'} }) )
- {
- my($line, $help, $option, $val);
- $option = $_;
- next if ${$self->{'default'} }{$_}{'noHelp'} && ${$self->{'default'} }{$_}{'noHelp'} > $noHelp;
- $line = " -$_ " . ' ' x ($optwidth - (2 + length) ) .
- "${$self->{'default'} }{$_}{'type'} ".
- ' ' x ($typewidth - (1+length(${$self -> {'default'} }{$_}{'type'}) ));
-
- $val = ${$self->{'default'} }{$_}{'linkage'};
- if ($val)
- {
- if (ref($val) eq 'SCALAR')
- {
- $val = $$val;
- }
- else
- {
- $val = '';
- }
- }
- else
- {
- $val = ${$self->{'default'} }{$_}{'default'};
- }
- $line .= "$val ";
- $line .= ' ' x ($optwidth + $typewidth + $defaultwidth + 1 - length($line));
-
- if (defined(${$self -> {'default'} }{$_}{'verbose'}) &&
- ${$self -> {'default'} }{$_}{'verbose'} ne '')
- {
- $help = "${$self->{'default'} }{$_}{'verbose'}";
- }
- else
- {
- $help = ' ';
- }
- if ((length("$line") + length($help)) < $maxlinewidth)
- {
- print $line , $help, "\n";
- }
- else
- {
- print $line, "\n", ' ' x $valind, $help, "\n";
- }
- for $val (sort byOrder keys(%{${$self->{'default'}}{$option}{'values'}}))
- {
- print ' ' x ($valind + 2);
- print $val, ' ', ' ' x ($valwidth - length($val) - 2);
- print ${$self->{'default'}}{$option}{'values'}{$val}, "\n";
- }
- }
-
- print <<EOT;
-Note: 'Options' may be abbreviated. 'Type' specifications mean:
- <none>| ! no argument: variable is set to 1 on -foo (or, to 0 on -nofoo)
- =s | :s mandatory (or, optional) string argument
- =i | :i mandatory (or, optional) integer argument
-EOT
-} # End of helpOptions.
-
-#-------------------------------------------------------------------
-
-sub new
-{
- my($class) = @_;
- my($self) = {};
- $self -> {'default'} = {};
- $self -> {'helpText'} = '';
- $self -> {'opt'} = {};
- $opt = $self -> {'opt'}; # An alias for $self -> {'opt'}.
- $self -> {'type'} = ();
-
- return bless $self, $class;
-
-} # End of new.
-
-# --------------------------------------------------------------------------
-
-1;
-
-# End MySimple.pm
-
-require "$ENV{T2H_HOME}/MySimple.pm"
- if ($0 =~ /\.pl$/ &&
- -e "$ENV{T2H_HOME}/texi2html.init" && -r "$ENV{T2H_HOME}/texi2html.init");
-
-package main;
-
-#+++############################################################################
-# #
-# Constants #
-# #
-#---############################################################################
-
-$DEBUG_TOC = 1;
-$DEBUG_INDEX = 2;
-$DEBUG_BIB = 4;
-$DEBUG_GLOSS = 8;
-$DEBUG_DEF = 16;
-$DEBUG_HTML = 32;
-$DEBUG_USER = 64;
-$DEBUG_L2H = 128;
-
-
-$BIBRE = '\[[\w\/-]+\]'; # RE for a bibliography reference
-$FILERE = '[\/\w.+-]+'; # RE for a file name
-$VARRE = '[^\s\{\}]+'; # RE for a variable name
-$NODERE = '[^,:]+'; # RE for a node name
-$NODESRE = '[^:]+'; # RE for a list of node names
-
-$ERROR = "***"; # prefix for errors
-$WARN = "**"; # prefix for warnings
-
- # program home page
-$PROTECTTAG = "_ThisIsProtected_"; # tag to recognize protected sections
-
-$CHAPTEREND = "<!-- End chapter -->\n"; # to know where a chpater ends
-$SECTIONEND = "<!-- End section -->\n"; # to know where section ends
-$TOPEND = "<!-- End top -->\n"; # to know where top ends
-
-
-
-#
-# pre-defined indices
-#
-$index_properties =
-{
- 'c' => { name => 'cp'},
- 'f' => { name => 'fn', code => 1},
- 'v' => { name => 'vr', code => 1},
- 'k' => { name => 'ky', code => 1},
- 'p' => { name => 'pg', code => 1},
- 't' => { name => 'tp', code => 1}
-};
-
-
-%predefined_index = (
- 'cp', 'c',
- 'fn', 'f',
- 'vr', 'v',
- 'ky', 'k',
- 'pg', 'p',
- 'tp', 't',
- );
-
-#
-# valid indices
-#
-%valid_index = (
- 'c', 1,
- 'f', 1,
- 'v', 1,
- 'k', 1,
- 'p', 1,
- 't', 1,
- );
-
-#
-# texinfo section names to level
-#
-%sec2level = (
- 'top', 0,
- 'chapter', 1,
- 'unnumbered', 1,
- 'majorheading', 1,
- 'chapheading', 1,
- 'appendix', 1,
- 'section', 2,
- 'unnumberedsec', 2,
- 'heading', 2,
- 'appendixsec', 2,
- 'appendixsection', 2,
- 'subsection', 3,
- 'unnumberedsubsec', 3,
- 'subheading', 3,
- 'appendixsubsec', 3,
- 'subsubsection', 4,
- 'unnumberedsubsubsec', 4,
- 'subsubheading', 4,
- 'appendixsubsubsec', 4,
- );
-
-#
-# accent map, TeX command to ISO name
-#
-%accent_map = (
- '"', 'uml',
- '~', 'tilde',
- '^', 'circ',
- '`', 'grave',
- '\'', 'acute',
- );
-
-#
-# texinfo "simple things" (@foo) to HTML ones
-#
-%simple_map = (
- # cf. makeinfo.c
- "*", "<BR>", # HTML+
- " ", " ",
- "\t", " ",
- "-", "&#173;", # soft hyphen
- "\n", "\n",
- "|", "",
- 'tab', '<\/TD><TD>',
- # spacing commands
- ":", "",
- "!", "!",
- "?", "?",
- ".", ".",
- "-", "",
- );
-
-#
-# texinfo "things" (@foo{}) to HTML ones
-#
-%things_map = (
- 'TeX', 'TeX',
- 'br', '<P>', # paragraph break
- 'bullet', '*',
- 'copyright', '(C)',
- 'dots', '<small>...<\/small>',
- 'enddots', '<small>....<\/small>',
- 'equiv', '==',
- 'error', 'error-->',
- 'expansion', '==>',
- 'minus', '-',
- 'point', '-!-',
- 'print', '-|',
- 'result', '=>',
- 'today', $T2H_TODAY,
- 'aa', '&aring;',
- 'AA', '&Aring;',
- 'ae', '&aelig;',
- 'oe', '&#156;',
- 'AE', '&AElig;',
- 'OE', '&#140;',
- 'o', '&oslash;',
- 'O', '&Oslash;',
- 'ss', '&szlig;',
- 'l', '\/l',
- 'L', '\/L',
- 'exclamdown', '&iexcl;',
- 'questiondown', '&iquest;',
- 'pounds', '&pound;'
- );
-
-#
-# texinfo styles (@foo{bar}) to HTML ones
-#
-%style_map = (
- 'acronym', '&do_acronym',
- 'asis', '',
- 'b', 'B',
- 'cite', 'CITE',
- 'code', 'CODE',
- 'command', 'CODE',
- 'ctrl', '&do_ctrl', # special case
- 'dfn', 'EM', # DFN tag is illegal in the standard
- 'dmn', '', # useless
- 'email', '&do_email', # insert a clickable email address
- 'emph', 'EM',
- 'env', 'CODE',
- 'file', '"TT', # will put quotes, cf. &apply_style
- 'i', 'I',
- 'kbd', 'KBD',
- 'key', 'KBD',
- 'math', '&do_math',
- 'option', '"SAMP', # will put quotes, cf. &apply_style
- 'r', '', # unsupported
- 'samp', '"SAMP', # will put quotes, cf. &apply_style
- 'sc', '&do_sc', # special case
- 'strong', 'STRONG',
- 't', 'TT',
- 'titlefont', '', # useless
- 'uref', '&do_uref', # insert a clickable URL
- 'url', '&do_url', # insert a clickable URL
- 'var', 'VAR',
- 'w', '', # unsupported
- 'H', '&do_accent',
- 'dotaccent', '&do_accent',
- 'ringaccent','&do_accent',
- 'tieaccent', '&do_accent',
- 'u','&do_accent',
- 'ubaraccent','&do_accent',
- 'udotaccent','&do_accent',
- 'v', '&do_accent',
- ',', '&do_accent',
- 'dotless', '&do_accent'
- );
-
-#
-# texinfo format (@foo/@end foo) to HTML ones
-#
-%format_map = (
- 'quotation', 'BLOCKQUOTE',
- # lists
- 'itemize', 'UL',
- 'enumerate', 'OL',
- # poorly supported
- 'flushleft', 'PRE',
- 'flushright', 'PRE',
- );
-
-#
-# an eval of these $complex_format_map->{what}->[0] yields beginning
-# an eval of these $complex_format_map->{what}->[1] yieleds end
-$complex_format_map =
-{
- example =>
- [
- q{"<TABLE><tr>$T2H_EXAMPLE_INDENT_CELL<td class=example><pre>"},
- q{'</pre></td></tr></table>'}
- ],
- smallexample =>
- [
- q{"<TABLE><tr>$T2H_SMALL_EXAMPLE_INDENT_CELL<td class=smallexample><FONT SIZE=$T2H_SMALL_FONT_SIZE><pre>"},
- q{'</FONT></pre></td></tr></table>'}
- ],
- display =>
- [
- q{"<TABLE><tr>$T2H_EXAMPLE_INDENT_CELL<td class=display><pre " . 'style="font-family: serif">'},
- q{'</pre></td></tr></table>'}
- ],
- smalldisplay =>
- [
- q{"<TABLE><tr>$T2H_SMALL_EXAMPLE_INDENT_CELL<td class=smalldisplay><FONT SIZE=$T2H_SMALL_FONT_SIZE><pre " . 'style="font-family: serif">'},
- q{'</pre></FONT></td></tr></table>'}
- ]
-};
-
-$complex_format_map->{lisp} = $complex_format_map->{example};
-$complex_format_map->{smalllisp} = $complex_format_map->{smallexample};
-$complex_format_map->{format} = $complex_format_map->{display};
-$complex_format_map->{smallformat} = $complex_format_map->{smalldisplay};
-
-#
-# texinfo definition shortcuts to real ones
-#
-%def_map = (
- # basic commands
- 'deffn', 0,
- 'defvr', 0,
- 'deftypefn', 0,
- 'deftypevr', 0,
- 'defcv', 0,
- 'defop', 0,
- 'deftp', 0,
- # basic x commands
- 'deffnx', 0,
- 'defvrx', 0,
- 'deftypefnx', 0,
- 'deftypevrx', 0,
- 'defcvx', 0,
- 'defopx', 0,
- 'deftpx', 0,
- # shortcuts
- 'defun', 'deffn Function',
- 'defmac', 'deffn Macro',
- 'defspec', 'deffn {Special Form}',
- 'defvar', 'defvr Variable',
- 'defopt', 'defvr {User Option}',
- 'deftypefun', 'deftypefn Function',
- 'deftypevar', 'deftypevr Variable',
- 'defivar', 'defcv {Instance Variable}',
- 'deftypeivar', 'defcv {Instance Variable}', # NEW: FIXME
- 'defmethod', 'defop Method',
- 'deftypemethod', 'defop Method', # NEW:FIXME
- # x shortcuts
- 'defunx', 'deffnx Function',
- 'defmacx', 'deffnx Macro',
- 'defspecx', 'deffnx {Special Form}',
- 'defvarx', 'defvrx Variable',
- 'defoptx', 'defvrx {User Option}',
- 'deftypefunx', 'deftypefnx Function',
- 'deftypevarx', 'deftypevrx Variable',
- 'defivarx', 'defcvx {Instance Variable}',
- 'defmethodx', 'defopx Method',
- );
-
-#
-# things to skip
-#
-%to_skip = (
- # comments
- 'c', 1,
- 'comment', 1,
- 'ifnotinfo', 1,
- 'ifnottex', 1,
- 'ifhtml', 1,
- 'end ifhtml', 1,
- 'end ifnotinfo', 1,
- 'end ifnottex', 1,
- # useless
- 'detailmenu', 1,
- 'direntry', 1,
- 'contents', 1,
- 'shortcontents', 1,
- 'summarycontents', 1,
- 'footnotestyle', 1,
- 'end ifclear', 1,
- 'end ifset', 1,
- 'titlepage', 1,
- 'end titlepage', 1,
- # unsupported commands (formatting)
- 'afourpaper', 1,
- 'cropmarks', 1,
- 'finalout', 1,
- 'headings', 1,
- 'sp', 1,
- 'need', 1,
- 'page', 1,
- 'setchapternewpage', 1,
- 'everyheading', 1,
- 'everyfooting', 1,
- 'evenheading', 1,
- 'evenfooting', 1,
- 'oddheading', 1,
- 'oddfooting', 1,
- 'smallbook', 1,
- 'vskip', 1,
- 'filbreak', 1,
- 'paragraphindent', 1,
- # unsupported formats
- 'cartouche', 1,
- 'end cartouche', 1,
- 'group', 1,
- 'end group', 1,
- );
-
-#+++############################################################################
-# #
-# Argument parsing, initialisation #
-# #
-#---############################################################################
-
-#
-# flush stdout and stderr after every write
-#
-select(STDERR);
-$| = 1;
-select(STDOUT);
-$| = 1;
-
-
-%value = (); # hold texinfo variables, see also -D
-$use_bibliography = 1;
-$use_acc = 1;
-
-#
-# called on -init-file
-sub LoadInitFile
-{
- my $init_file = shift;
- # second argument is value of options
- $init_file = shift;
- if (-f $init_file)
- {
- print "# reading initialization file from $init_file\n"
- if ($T2H_VERBOSE);
- require($init_file);
- }
- else
- {
- print "$ERROR Error: can't read init file $int_file\n";
- $init_file = '';
- }
-}
-
-#
-# called on -lang
-sub SetDocumentLanguage
-{
- my $lang = shift;
- if (! exists($T2H_WORDS->{$lang}))
- {
- warn "$ERROR: Language specs for '$lang' do not exists. Reverting to '" .
- ($T2H_LANG ? T2H_LANG : "en") . "'\n";
- }
- else
- {
- print "# using '$lang' as document language\n" if ($T2H_VERBOSE);
- $T2H_LANG = $lang;
- }
-}
-
-##
-## obsolete cmd line options
-##
-$T2H_OBSOLETE_OPTIONS -> {'no-section_navigation'} =
-{
- type => '!',
- linkage => sub {$main::T2H_SECTION_NAVIGATION = 0;},
- verbose => 'obsolete, use -nosec_nav',
- noHelp => 2,
-};
-$T2H_OBSOLETE_OPTIONS -> {use_acc} =
-{
- type => '!',
- linkage => \$use_acc,
- verbose => 'obsolete',
- noHelp => 2
-};
-$T2H_OBSOLETE_OPTIONS -> {expandinfo} =
-{
- type => '!',
- linkage => sub {$main::T2H_EXPAND = 'info';},
- verbose => 'obsolete, use "-expand info" instead',
- noHelp => 2,
-};
-$T2H_OBSOLETE_OPTIONS -> {expandtex} =
-{
- type => '!',
- linkage => sub {$main::T2H_EXPAND = 'tex';},
- verbose => 'obsolete, use "-expand tex" instead',
- noHelp => 2,
-};
-$T2H_OBSOLETE_OPTIONS -> {monolithic} =
-{
- type => '!',
- linkage => sub {$main::T2H_SPLIT = '';},
- verbose => 'obsolete, use "-split no" instead',
- noHelp => 2
-};
-$T2H_OBSOLETE_OPTIONS -> {split_node} =
-{
- type => '!',
- linkage => sub{$main::T2H_SPLIT = 'section';},
- verbose => 'obsolete, use "-split section" instead',
- noHelp => 2,
-};
-$T2H_OBSOLETE_OPTIONS -> {split_chapter} =
-{
- type => '!',
- linkage => sub{$main::T2H_SPLIT = 'chapter';},
- verbose => 'obsolete, use "-split chapter" instead',
- noHelp => 2,
-};
-$T2H_OBSOLETE_OPTIONS -> {no_verbose} =
-{
- type => '!',
- linkage => sub {$main::T2H_VERBOSE = 0;},
- verbose => 'obsolete, use -noverbose instead',
- noHelp => 2,
-};
-$T2H_OBSOLETE_OPTIONS -> {output_file} =
-{
- type => '=s',
- linkage => sub {$main::T2H_OUT = @_[1]; $T2H_SPLIT = '';},
- verbose => 'obsolete, use -out_file instead',
- noHelp => 2
-};
-
-$T2H_OBSOLETE_OPTIONS -> {section_navigation} =
-{
- type => '!',
- linkage => \$T2H_SECTION_NAVIGATION,
- verbose => 'obsolete, use -sec_nav instead',
- noHelp => 2,
-};
-
-$T2H_OBSOLETE_OPTIONS -> {verbose} =
-{
- type => '!',
- linkage => \$T2H_VERBOSE,
- verbose => 'obsolete, use -Verbose instead',
- noHelp => 2
-};
-
-# read initialzation from $sysconfdir/texi2htmlrc or $HOME/.texi2htmlrc
-my $home = $ENV{HOME};
-defined($home) or $home = '';
-foreach $i ('/usr/local/etc/texi2htmlrc', "$home/.texi2htmlrc") {
- if (-f $i) {
- print "# reading initialization file from $i\n"
- if ($T2H_VERBOSE);
- require($i);
- }
-}
-
-
-#+++############################################################################
-# #
-# parse command-line options
-# #
-#---############################################################################
-$T2H_USAGE_TEXT = <<EOT;
-Usage: texi2html [OPTIONS] TEXINFO-FILE
-Translates Texinfo source documentation to HTML.
-EOT
-$T2H_FAILURE_TEXT = <<EOT;
-Try 'texi2html -help' for usage instructions.
-EOT
-$options = new Getopt::MySimple;
-
-# some older version of GetOpt::Long don't have
-# Getopt::Long::Configure("pass_through")
-eval {Getopt::Long::Configure("pass_through");};
-$Configure_failed = $@ && <<EOT;
-**WARNING: Parsing of obsolete command-line options could have failed.
- Consider to use only documented command-line options (run
- 'texi2html -help 2' for a complete list) or upgrade to perl
- version 5.005 or higher.
-EOT
-
-if (! $options->getOptions($T2H_OPTIONS, $T2H_USAGE_TEXT, "$THISVERSION\n"))
-{
- print $Configure_failed if $Configure_failed;
- die $T2H_FAILURE_TEXT;
-}
-
-if (@ARGV > 1)
-{
- eval {Getopt::Long::Configure("no_pass_through");};
- if (! $options->getOptions($T2H_OBSOLETE_OPTIONS, $T2H_USAGE_TEXT, "$THISVERSION\n"))
- {
- print $Configure_failed if $Configure_failed;
- die $T2H_FAILURE_TEXT;
- }
-}
-
-if ($T2H_CHECK) {
- die "Need file to check\n$T2H_FAILURE_TEXT" unless @ARGV > 0;
- &check;
- exit;
-}
-
-#+++############################################################################
-# #
-# evaluation of cmd line options
-# #
-#---############################################################################
-
-if ($T2H_EXPAND eq 'info')
-{
- $to_skip{'ifinfo'} = 1;
- $to_skip{'end ifinfo'} = 1;
-}
-elsif ($T2H_EXPAND eq 'tex')
-{
- $to_skip{'iftex'} = 1;
- $to_skip{'end iftex'} = 1;
-
-}
-
-$T2H_INVISIBLE_MARK = '<IMG SRC="invisible.xbm">' if $T2H_INVISIBLE_MARK eq 'xbm';
-
-#
-# file name buisness
-#
-die "Need exactly one file to translate\n$T2H_FAILURE_TEXT" unless @ARGV == 1;
-$docu = shift(@ARGV);
-if ($docu =~ /.*\//) {
- chop($docu_dir = $&);
- $docu_name = $';
-} else {
- $docu_dir = '.';
- $docu_name = $docu;
-}
-unshift(@T2H_INCLUDE_DIRS, $docu_dir);
-$docu_name =~ s/\.te?x(i|info)?$//; # basename of the document
-$docu_name = $T2H_PREFIX if ($T2H_PREFIX);
-
-# subdir
-if ($T2H_SUBDIR && ! $T2H_OUT)
-{
- $T2H_SUBDIR =~ s|/*$||;
- unless (-d "$T2H_SUBDIR" && -w "$T2H_SUBDIR")
- {
- if ( mkdir($T2H_SUBDIR, oct(755)))
- {
- print "# created directory $T2H_SUBDIR\n" if ($T2H_VERBOSE);
- }
- else
- {
- warn "$ERROR can't create directory $T2H_SUBDIR. Put results into current directory\n";
- $T2H_SUBDIR = '';
- }
- }
-}
-
-if ($T2H_SUBDIR && ! $T2H_OUT)
-{
- $docu_rdir = "$T2H_SUBDIR/";
- print "# putting result files into directory $docu_rdir\n" if ($T2H_VERBOSE);
-}
-else
-{
- if ($T2H_OUT && $T2H_OUT =~ m|(.*)/|)
- {
- $docu_rdir = "$1/";
- print "# putting result files into directory $docu_rdir\n" if ($T2H_VERBOSE);
- }
- else
- {
- print "# putting result files into current directory \n" if ($T2H_VERBOSE);
- $docu_rdir = '';
- }
-}
-
-# extension
-if ($T2H_SHORTEXTN)
-{
- $docu_ext = "htm";
-}
-else
-{
- $docu_ext = "html";
-}
-if ($T2H_TOP_FILE =~ /\..*$/)
-{
- $T2H_TOP_FILE = $`.".$docu_ext";
-}
-
-# result files
-if (! $T2H_OUT && ($T2H_SPLIT =~ /section/i || $T2H_SPLIT =~ /node/i))
-{
- $T2H_SPLIT = 'section';
-}
-elsif (! $T2H_OUT && $T2H_SPLIT =~ /chapter/i)
-{
- $T2H_SPLIT = 'chapter'
-}
-else
-{
- undef $T2H_SPLIT;
-}
-
-$docu_doc = "$docu_name.$docu_ext"; # document's contents
-$docu_doc_file = "$docu_rdir$docu_doc";
-if ($T2H_SPLIT)
-{
- $docu_toc = $T2H_TOC_FILE || "${docu_name}_toc.$docu_ext"; # document's table of contents
- $docu_stoc = "${docu_name}_ovr.$docu_ext"; # document's short toc
- $docu_foot = "${docu_name}_fot.$docu_ext"; # document's footnotes
- $docu_about = "${docu_name}_abt.$docu_ext"; # about this document
- $docu_top = $T2H_TOP_FILE || $docu_doc;
-}
-else
-{
- if ($T2H_OUT)
- {
- $docu_doc = $T2H_OUT;
- $docu_doc =~ s|.*/||;
- }
- $docu_toc = $docu_foot = $docu_stoc = $docu_about = $docu_top = $docu_doc;
-}
-
-$docu_toc_file = "$docu_rdir$docu_toc";
-$docu_stoc_file = "$docu_rdir$docu_stoc";
-$docu_foot_file = "$docu_rdir$docu_foot";
-$docu_about_file = "$docu_rdir$docu_about";
-$docu_top_file = "$docu_rdir$docu_top";
-
-$docu_frame_file = "$docu_rdir${docu_name}_frame.$docu_ext";
-$docu_toc_frame_file = "$docu_rdir${docu_name}_toc_frame.$docu_ext";
-
-#
-# variables
-#
-$value{'html'} = 1; # predefine html (the output format)
-$value{'texi2html'} = $THISVERSION; # predefine texi2html (the translator)
-# _foo: internal to track @foo
-foreach ('_author', '_title', '_subtitle',
- '_settitle', '_setfilename', '_shorttitle') {
- $value{$_} = ''; # prevent -w warnings
-}
-%node2sec = (); # node to section name
-%sec2node = (); # section to node name
-%sec2number = (); # section to number
-%number2sec = (); # number to section
-%idx2node = (); # index keys to node
-%node2href = (); # node to HREF
-%node2next = (); # node to next
-%node2prev = (); # node to prev
-%node2up = (); # node to up
-%bib2href = (); # bibliography reference to HREF
-%gloss2href = (); # glossary term to HREF
-@sections = (); # list of sections
-%tag2pro = (); # protected sections
-
-#
-# initial indexes
-#
-$bib_num = 0;
-$foot_num = 0;
-$gloss_num = 0;
-$idx_num = 0;
-$sec_num = 0;
-$doc_num = 0;
-$html_num = 0;
-
-#
-# can I use ISO8879 characters? (HTML+)
-#
-if ($T2H_USE_ISO) {
- $things_map{'bullet'} = "&bull;";
- $things_map{'copyright'} = "&copy;";
- $things_map{'dots'} = "&hellip;";
- $things_map{'equiv'} = "&equiv;";
- $things_map{'expansion'} = "&rarr;";
- $things_map{'point'} = "&lowast;";
- $things_map{'result'} = "&rArr;";
-}
-
-#
-# read texi2html extensions (if any)
-#
-$extensions = 'texi2html.ext'; # extensions in working directory
-if (-f $extensions) {
- print "# reading extensions from $extensions\n" if $T2H_VERBOSE;
- require($extensions);
-}
-($progdir = $0) =~ s/[^\/]+$//;
-if ($progdir && ($progdir ne './')) {
- $extensions = "${progdir}texi2html.ext"; # extensions in texi2html directory
- if (-f $extensions) {
- print "# reading extensions from $extensions\n" if $T2H_VERBOSE;
- require($extensions);
- }
-}
-
-
-print "# reading from $docu\n" if $T2H_VERBOSE;
-
-#########################################################################
-#
-# latex2html stuff
-#
-# latex2html conversions consist of three stages:
-# 1) ToLatex: Put "latex" code into a latex file
-# 2) ToHtml: Use latex2html to generate corresponding html code and images
-# 3) FromHtml: Extract generated code and images from latex2html run
-#
-
-##########################
-# default settings
-#
-
-# defaults for files and names
-
-sub l2h_Init
-{
- local($root) = @_;
-
- return 0 unless ($root);
-
- $l2h_name = "${root}_l2h";
-
- $l2h_latex_file = "$docu_rdir${l2h_name}.tex";
- $l2h_cache_file = "${docu_rdir}l2h_cache.pm";
- $T2H_L2H_L2H = "latex2html" unless ($T2H_L2H_L2H);
-
- # destination dir -- generated images are put there, should be the same
- # as dir of enclosing html document --
- $l2h_html_file = "$docu_rdir${l2h_name}.html";
- $l2h_prefix = "${l2h_name}_";
- return 1;
-}
-
-
-##########################
-#
-# First stage: Generation of Latex file
-# Initialize with: l2h_InitToLatex
-# Add content with: l2h_ToLatex($text) --> HTML placeholder comment
-# Finish with: l2h_FinishToLatex
-#
-
-$l2h_latex_preample = <<EOT;
-% This document was automatically generated by the l2h extenstion of texi2html
-% DO NOT EDIT !!!
-\\documentclass{article}
-\\usepackage{html}
-\\begin{document}
-EOT
-
-$l2h_latex_closing = <<EOT;
-\\end{document}
-EOT
-
-# return used latex 1, if l2h could be initalized properly, 0 otherwise
-sub l2h_InitToLatex
-{
- %l2h_to_latex = ();
- unless ($T2H_L2H_SKIP)
- {
- unless (open(L2H_LATEX, ">$l2h_latex_file"))
- {
- warn "$ERROR Error l2h: Can't open latex file '$latex_file' for writing\n";
- return 0;
- }
- print "# l2h: use ${l2h_latex_file} as latex file\n" if ($T2H_VERBOSE);
- print L2H_LATEX $l2h_latex_preample;
- }
- # open database for caching
- l2h_InitCache();
- $l2h_latex_count = 0;
- $l2h_to_latex_count = 0;
- $l2h_cached_count = 0;
- return 1;
-}
-
-# print text (1st arg) into latex file (if not already there), return
-# HTML commentary which can be later on replaced by the latex2html
-# generated text
-sub l2h_ToLatex
-{
- my($text) = @_;
- my($count);
-
- $l2h_to_latex_count++;
- $text =~ s/(\s*)$//;
-
- # try whether we can cache it
- my $cached_text = l2h_FromCache($text);
- if ($cached_text)
- {
- $l2h_cached_count++;
- return $cached_text;
- }
-
- # try whether we have text already on things to do
- unless ($count = $l2h_to_latex{$text})
- {
- $count = $l2h_latex_count;
- $l2h_latex_count++;
- $l2h_to_latex{$text} = $count;
- $l2h_to_latex[$count] = $text;
- unless ($T2H_L2H_SKIP)
- {
- print L2H_LATEX "\\begin{rawhtml}\n";
- print L2H_LATEX "<!-- l2h_begin ${l2h_name} ${count} -->\n";
- print L2H_LATEX "\\end{rawhtml}\n";
-
- print L2H_LATEX "$text\n";
-
- print L2H_LATEX "\\begin{rawhtml}\n";
- print L2H_LATEX "<!-- l2h_end ${l2h_name} ${count} -->\n";
- print L2H_LATEX "\\end{rawhtml}\n";
- }
- }
- return "<!-- l2h_replace ${l2h_name} ${count} -->";
-}
-
-# print closing into latex file and close it
-sub l2h_FinishToLatex
-{
- local ($reused);
-
- $reused = $l2h_to_latex_count - $l2h_latex_count - $l2h_cached_count;
- unless ($T2H_L2H_SKIP)
- {
- print L2H_LATEX $l2h_latex_closing;
- close(L2H_LATEX);
- }
- print "# l2h: finished to latex ($l2h_cached_count cached, $reused reused, $l2h_latex_count contents)\n" if ($T2H_VERBOSE);
- unless ($l2h_latex_count)
- {
- l2h_Finish();
- return 0;
- }
- return 1;
-}
-
-###################################
-# Second stage: Use latex2html to generate corresponding html code and images
-#
-# l2h_ToHtml([$l2h_latex_file, [$l2h_html_dir]]):
-# Call latex2html on $l2h_latex_file
-# Put images (prefixed with $l2h_name."_") and html file(s) in $l2h_html_dir
-# Return 1, on success
-# 0, otherwise
-#
-sub l2h_ToHtml
-{
- local($call, $ext, $root, $dotbug);
-
- if ($T2H_L2H_SKIP)
- {
- print "# l2h: skipping latex2html run\n" if ($T2H_VERBOSE);
- return 1;
- }
-
- # Check for dot in directory where dvips will work
- if ($T2H_L2H_TMP)
- {
- if ($T2H_L2H_TMP =~ /\./)
- {
- warn "$ERROR Warning l2h: l2h_tmp dir contains a dot. Use /tmp, instead\n";
- $dotbug = 1;
- }
- }
- else
- {
- if (&getcwd =~ /\./)
- {
- warn "$ERROR Warning l2h: current dir contains a dot. Use /tmp as l2h_tmp dir \n";
- $dotbug = 1;
- }
- }
- # fix it, if necessary and hope that it works
- $T2H_L2H_TMP = "/tmp" if ($dotbug);
-
- $call = $T2H_L2H_L2H;
- # use init file, if specified
- $call = $call . " -init_file " . $init_file if ($init_file && -f $init_file);
- # set output dir
- $call .= ($docu_rdir ? " -dir $docu_rdir" : " -no_subdir");
- # use l2h_tmp, if specified
- $call = $call . " -tmp $T2H_L2H_TMP" if ($T2H_L2H_TMP);
- # options we want to be sure of
- $call = $call ." -address 0 -info 0 -split 0 -no_navigation -no_auto_link";
- $call = $call ." -prefix ${l2h_prefix} $l2h_latex_file";
-
- print "# l2h: executing '$call'\n" if ($T2H_VERBOSE);
- if (system($call))
- {
- warn "l2h ***Error: '${call}' did not succeed\n";
- return 0;
- }
- else
- {
- print "# l2h: latex2html finished successfully\n" if ($T2H_VERBOSE);
- return 1;
- }
-}
-
-# this is directly pasted over from latex2html
-sub getcwd {
- local($_) = `pwd`;
-
- die "'pwd' failed (out of memory?)\n"
- unless length;
- chop;
- $_;
-}
-
-
-##########################
-# Third stage: Extract generated contents from latex2html run
-# Initialize with: l2h_InitFromHtml
-# open $l2h_html_file for reading
-# reads in contents into array indexed by numbers
-# return 1, on success -- 0, otherwise
-# Extract Html code with: l2h_FromHtml($text)
-# replaces in $text all previosuly inserted comments by generated html code
-# returns (possibly changed) $text
-# Finish with: l2h_FinishFromHtml
-# closes $l2h_html_dir/$l2h_name.".$docu_ext"
-
-sub l2h_InitFromHtml
-{
- local($h_line, $h_content, $count, %l2h_img);
-
- if (! open(L2H_HTML, "<${l2h_html_file}"))
- {
- print "$ERROR Error l2h: Can't open ${l2h_html_file} for reading\n";
- return 0;
- }
- print "# l2h: use ${l2h_html_file} as html file\n" if ($T2H_VERBOSE);
-
- $l2h_html_count = 0;
-
- while ($h_line = <L2H_HTML>)
- {
- if ($h_line =~ /^<!-- l2h_begin $l2h_name ([0-9]+) -->/)
- {
- $count = $1;
- $h_content = "";
- while ($h_line = <L2H_HTML>)
- {
- if ($h_line =~ /^<!-- l2h_end $l2h_name $count -->/)
- {
- chomp $h_content;
- chomp $h_content;
- $l2h_html_count++;
- $h_content = l2h_ToCache($count, $h_content);
- $l2h_from_html[$count] = $h_content;
- $h_content = '';
- last;
- }
- $h_content = $h_content.$h_line;
- }
- if ($hcontent)
- {
- print "$ERROR Warning l2h: l2h_end $l2h_name $count not found\n"
- if ($T2H_VERBOSE);
- close(L2H_HTML);
- return 0;
- }
- }
- }
- print "# l2h: Got $l2h_html_count of $l2h_latex_count html contents\n"
- if ($T2H_VERBOSE);
-
- close(L2H_HTML);
- return 1;
-}
-
-sub l2h_FromHtml
-{
- local($text) = @_;
- local($done, $to_do, $count);
-
- $to_do = $text;
-
- while ($to_do =~ /([^\000]*)<!-- l2h_replace $l2h_name ([0-9]+) -->([^\000]*)/)
- {
- $to_do = $1;
- $count = $2;
- $done = $3.$done;
-
- $done = "<!-- l2h_end $l2h_name $count -->".$done
- if ($T2H_DEBUG & $DEBUG_L2H);
-
- $done = &l2h_ExtractFromHtml($count) . $done;
-
- $done = "<!-- l2h_begin $l2h_name $count -->".$done
- if ($T2H_DEBUG & $DEBUG_L2H);
- }
- return $to_do.$done;
-}
-
-
-sub l2h_ExtractFromHtml
-{
- local($count) = @_;
-
- return $l2h_from_html[$count] if ($l2h_from_html[$count]);
-
- if ($count >= 0 && $count < $l2h_latex_count)
- {
- # now we are in trouble
- local($l_l2h, $_);
-
- $l2h_extract_error++;
- print "$ERROR l2h: can't extract content $count from html\n"
- if ($T2H_VERBOSE);
- # try simple (ordinary) substition (without l2h)
- $l_l2h = $T2H_L2H;
- $T2H_L2H = 0;
- $_ = $l2h_to_latex{$count};
- $_ = &substitute_style($_);
- &unprotect_texi;
- $_ = "<!-- l2h: ". __LINE__ . " use texi2html -->" . $_
- if ($T2H_DEBUG & $DEBUG_L2H);
- $T2H_L2H = $l_l2h;
- return $_;
- }
- else
- {
- # now we have been incorrectly called
- $l2h_range_error++;
- print "$ERROR l2h: Request of $count content which is out of valide range [0,$l2h_latex_count)\n";
- return "<!-- l2h: ". __LINE__ . " out of range count $count -->"
- if ($T2H_DEBUG & $DEBUG_L2H);
- return "<!-- l2h: out of range count $count -->";
- }
-}
-
-sub l2h_FinishFromHtml
-{
- if ($T2H_VERBOSE)
- {
- if ($l2h_extract_error + $l2h_range_error)
- {
- print "# l2h: finished from html ($l2h_extract_error extract and $l2h_range_error errors)\n";
- }
- else
- {
- print "# l2h: finished from html (no errors)\n";
- }
- }
-}
-
-sub l2h_Finish
-{
- l2h_StoreCache();
- if ($T2H_L2H_CLEAN)
- {
- print "# l2h: removing temporary files generated by l2h extension\n"
- if $T2H_VERBOSE;
- while (<"$docu_rdir$l2h_name"*>)
- {
- unlink $_;
- }
- }
- print "# l2h: Finished\n" if $T2H_VERBOSE;
- return 1;
-}
-
-##############################
-# stuff for l2h caching
-#
-
-# I tried doing this with a dbm data base, but it did not store all
-# keys/values. Hence, I did as latex2html does it
-sub l2h_InitCache
-{
- if (-r "$l2h_cache_file")
- {
- my $rdo = do "$l2h_cache_file";
- warn("$ERROR l2h Error: could not load $docu_rdir$l2h_cache_file: $@\n")
- unless ($rdo);
- }
-}
-
-sub l2h_StoreCache
-{
- return unless $l2h_latex_count;
-
- my ($key, $value);
- open(FH, ">$l2h_cache_file") || return warn"$ERROR l2h Error: could not open $docu_rdir$l2h_cache_file for writing: $!\n";
-
-
- while (($key, $value) = each %l2h_cache)
- {
- # escape stuff
- $key =~ s|/|\\/|g;
- $key =~ s|\\\\/|\\/|g;
- # weird, a \ at the end of the key results in an error
- # maybe this also broke the dbm database stuff
- $key =~ s|\\$|\\\\|;
- $value =~ s/\|/\\\|/g;
- $value =~ s/\\\\\|/\\\|/g;
- $value =~ s|\\\\|\\\\\\\\|g;
- print FH "\n\$l2h_cache_key = q/$key/;\n";
- print FH "\$l2h_cache{\$l2h_cache_key} = q|$value|;\n";
- }
- print FH "1;";
- close(FH);
-}
-
-# return cached html, if it exists for text, and if all pictures
-# are there, as well
-sub l2h_FromCache
-{
- my $text = shift;
- my $cached = $l2h_cache{$text};
- if ($cached)
- {
- while ($cached =~ m/SRC="(.*?)"/g)
- {
- unless (-e "$docu_rdir$1")
- {
- return undef;
- }
- }
- return $cached;
- }
- return undef;
-}
-
-# insert generated html into cache, move away images,
-# return transformed html
-$maximage = 1;
-sub l2h_ToCache
-{
- my $count = shift;
- my $content = shift;
- my @images = ($content =~ /SRC="(.*?)"/g);
- my ($src, $dest);
-
- for $src (@images)
- {
- $dest = $l2h_img{$src};
- unless ($dest)
- {
- my $ext;
- if ($src =~ /.*\.(.*)$/ && $1 ne $docu_ext)
- {
- $ext = $1;
- }
- else
- {
- warn "$ERROR: L2h image $src has invalid extension\n";
- next;
- }
- while (-e "$docu_rdir${docu_name}_$maximage.$ext") { $maximage++;}
- $dest = "${docu_name}_$maximage.$ext";
- system("cp -f $docu_rdir$src $docu_rdir$dest");
- $l2h_img{$src} = $dest;
- unlink "$docu_rdir$src" unless ($DEBUG & DEBUG_L2H);
- }
- $content =~ s/$src/$dest/g;
- }
- $l2h_cache{$l2h_to_latex[$count]} = $content;
- return $content;
-}
-
-
-#+++############################################################################
-# #
-# Pass 1: read source, handle command, variable, simple substitution #
-# #
-#---############################################################################
-
-@lines = (); # whole document
-@toc_lines = (); # table of contents
-@stoc_lines = (); # table of contents
-$curlevel = 0; # current level in TOC
-$node = ''; # current node name
-$node_next = ''; # current node next name
-$node_prev = ''; # current node prev name
-$node_up = ''; # current node up name
-$in_table = 0; # am I inside a table
-$table_type = ''; # type of table ('', 'f', 'v', 'multi')
-@tables = (); # nested table support
-$in_bibliography = 0; # am I inside a bibliography
-$in_glossary = 0; # am I inside a glossary
-$in_top = 0; # am I inside the top node
-$has_top = 0; # did I see a top node?
-$has_top_command = 0; # did I see @top for automatic pointers?
-$in_pre = 0; # am I inside a preformatted section
-$in_list = 0; # am I inside a list
-$in_html = 0; # am I inside an HTML section
-$first_line = 1; # is it the first line
-$dont_html = 0; # don't protect HTML on this line
-$deferred_ref = ''; # deferred reference for indexes
-@html_stack = (); # HTML elements stack
-$html_element = ''; # current HTML element
-&html_reset;
-%macros = (); # macros
-
-# init l2h
-$T2H_L2H = &l2h_Init($docu_name) if ($T2H_L2H);
-$T2H_L2H = &l2h_InitToLatex if ($T2H_L2H);
-
-# build code for simple substitutions
-# the maps used (%simple_map and %things_map) MUST be aware of this
-# watch out for regexps, / and escaped characters!
-$subst_code = '';
-foreach (keys(%simple_map)) {
- ($re = $_) =~ s/(\W)/\\$1/g; # protect regexp chars
- $subst_code .= "s/\\\@$re/$simple_map{$_}/g;\n";
-}
-foreach (keys(%things_map)) {
- $subst_code .= "s/\\\@$_\\{\\}/$things_map{$_}/g;\n";
-}
-if ($use_acc) {
- # accentuated characters
- foreach (keys(%accent_map)) {
- if ($_ eq "`") {
- $subst_code .= "s/$;3";
- } elsif ($_ eq "'") {
- $subst_code .= "s/$;4";
- } else {
- $subst_code .= "s/\\\@\\$_";
- }
- $subst_code .= "([a-z])/&\${1}$accent_map{$_};/gi;\n";
- }
-}
-eval("sub simple_substitutions { $subst_code }");
-
-&init_input;
-INPUT_LINE: while ($_ = &next_line) {
- #
- # remove \input on the first lines only
- #
- if ($first_line) {
- next if /^\\input/;
- $first_line = 0;
- }
- # non-@ substitutions cf. texinfmt.el
- #
- # parse texinfo tags
- #
- $tag = '';
- $end_tag = '';
- if (/^\s*\@end\s+(\w+)\b/) {
- $end_tag = $1;
- } elsif (/^\s*\@(\w+)\b/) {
- $tag = $1;
- }
- #
- # handle @html / @end html
- #
- if ($in_html) {
- if ($end_tag eq 'html') {
- $in_html = 0;
- } else {
- $tag2pro{$in_html} .= $_;
- }
- next;
- } elsif ($tag eq 'html') {
- $in_html = $PROTECTTAG . ++$html_num;
- push(@lines, $in_html);
- next;
- }
-
- #
- # try to remove inlined comments
- # syntax from tex-mode.el comment-start-skip
- #
- s/((^|[^\@])(\@\@)*)\@c(omment | |\{|$).*/$1/;
-
-# Sometimes I use @c right at the end of a line ( to suppress the line feed )
-# s/((^|[^\@])(\@\@)*)\@c(omment)?$/$1/;
-# s/((^|[^\@])(\@\@)*)\@c(omment)? .*/$1/;
-# s/(.*)\@c{.*?}(.*)/$1$2/;
-# s/(.*)\@comment{.*?}(.*)/$1$2/;
-# s/^(.*)\@c /$1/;
-# s/^(.*)\@comment /$1/;
-
- #############################################################
- # value substitution before macro expansion, so that
- # it works in macro arguments
- s/\@value{($VARRE)}/$value{$1}/eg;
-
- #############################################################
- # macro substitution
- while (/\@(\w+)/g)
- {
- if (exists($macros->{$1}))
- {
- my $before = $`;
- my $name = $1;
- my $after = $';
- my @args;
- my $args;
- if ($after =~ /^\s*{(.*?[^\\])}(.*)/)
- {
- $args = $1;
- $after = $2;
- }
- elsif (@{$macros->{$name}->{Args}} == 1)
- {
- $args = $after;
- $args =~ s/^\s*//;
- $args =~ s/\s*$//;
- $after = '';
- }
- $args =~ s|\\\\|\\|g;
- $args =~ s|\\{|{|g;
- $args =~ s|\\}|}|g;
- if (@{$macros->{$name}->{Args}} > 1)
- {
- $args =~ s/(^|[^\\]),/$1$;/g ;
- $args =~ s|\\,|,|g;
- @args = split(/$;\s*/, $args) if (@{$macros->{$name}->{Args}} > 1);
- }
- else
- {
- $args =~ s|\\,|,|g;
- @args = ($args);
- }
- my $macrobody = $macros->{$name}->{Body};
- for ($i=0; $i<=$#args; $i++)
- {
- $macrobody =~ s|\\$macros->{$name}->{Args}->[$i]\\|$args[$i]|g;
- }
- $macrobody =~ s|\\\\|\\|g;
- $_ = $before . $macrobody . $after;
- unshift @input_spool, map {$_ = $_."\n"} split(/\n/, $_);
- next INPUT_LINE;
- }
- } #
-
-
- #
- # try to skip the line
- #
- if ($end_tag) {
- $in_titlepage = 0 if $end_tag eq 'titlepage';
- next if $to_skip{"end $end_tag"};
- } elsif ($tag) {
- $in_titlepage = 1 if $tag eq 'titlepage';
- next if $to_skip{$tag};
- last if $tag eq 'bye';
- }
- if ($in_top) {
- # parsing the top node
- if ($tag eq 'node' ||
- ($sec2level{$tag} && $tag !~ /unnumbered/ && $tag !~ /heading/))
- {
- # no more in top
- $in_top = 0;
- push(@lines, $TOPEND);
- }
- }
- unless ($in_pre) {
- s/``/\"/g;
- s/''/\"/g;
- s/([\w ])---([\w ])/$1--$2/g;
- }
- #
- # analyze the tag
- #
- if ($tag) {
- # skip lines
- &skip_until($tag), next if $tag eq 'ignore';
- &skip_until($tag), next if $tag eq 'ifnothtml';
- if ($tag eq 'ifinfo')
- {
- &skip_until($tag), next unless $T2H_EXPAND eq 'info';
- }
- if ($tag eq 'iftex')
- {
- &skip_until($tag), next unless $T2H_EXPAND eq 'tex';
- }
- if ($tag eq 'tex')
- {
- # add to latex2html file
- if ($T2H_EXPAND eq 'tex' && $T2H_L2H && ! $in_pre)
- {
- # add space to the end -- tex(i2dvi) does this, as well
- push(@lines, &l2h_ToLatex(&string_until($tag) . " "));
- }
- else
- {
- &skip_until($tag);
- }
- next;
- }
- if ($tag eq 'titlepage')
- {
- next;
- }
- # handle special tables
- if ($tag =~ /^(|f|v|multi)table$/) {
- $table_type = $1;
- $tag = 'table';
- }
- # special cases
- if ($tag eq 'top' || ($tag eq 'node' && /^\@node\s+top\s*,/i)) {
- $in_top = 1;
- $has_top = 1;
- $has_top_command = 1 if $tag eq 'top';
- @lines = (); # ignore all lines before top (title page garbage)
- next;
- } elsif ($tag eq 'node') {
- if ($in_top)
- {
- $in_top = 0;
- push(@lines, $TOPEND);
- }
- warn "$ERROR Bad node line: $_" unless $_ =~ /^\@node\s$NODESRE$/o;
- # request of "Richard Y. Kim" <ryk@ap.com>
- s/^\@node\s+//;
- $_ = &protect_html($_); # if node contains '&' for instance
- ($node, $node_next, $node_prev, $node_up) = split(/,/);
- &normalise_node($node);
- &normalise_node($node_next);
- &normalise_node($node_prev);
- &normalise_node($node_up);
- $node =~ /\"/ ?
- push @lines, &html_debug("<A NAME='$node'></A>\n", __LINE__) :
- push @lines, &html_debug("<A NAME=\"$node\"></A>\n", __LINE__);
- next;
- } elsif ($tag eq 'include') {
- if (/^\@include\s+($FILERE)\s*$/o) {
- $file = LocateIncludeFile($1);
- if ($file && -e $file) {
- &open($file);
- print "# including $file\n" if $T2H_VERBOSE;
- } else {
- warn "$ERROR Can't find $1, skipping";
- }
- } else {
- warn "$ERROR Bad include line: $_";
- }
- next;
- } elsif ($tag eq 'ifclear') {
- if (/^\@ifclear\s+($VARRE)\s*$/o) {
- next unless defined($value{$1});
- &skip_until($tag);
- } else {
- warn "$ERROR Bad ifclear line: $_";
- }
- next;
- } elsif ($tag eq 'ifset') {
- if (/^\@ifset\s+($VARRE)\s*$/o) {
- next if defined($value{$1});
- &skip_until($tag);
- } else {
- warn "$ERROR Bad ifset line: $_";
- }
- next;
- } elsif ($tag eq 'menu') {
- unless ($T2H_SHOW_MENU) {
- &skip_until($tag);
- next;
- }
- &html_push_if($tag);
- push(@lines, &html_debug('', __LINE__));
- } elsif ($format_map{$tag}) {
- $in_pre = 1 if $format_map{$tag} eq 'PRE';
- &html_push_if($format_map{$tag});
- push(@lines, &html_debug('', __LINE__));
- $in_list++ if $format_map{$tag} eq 'UL' || $format_map{$tag} eq 'OL' ;
-# push(@lines, &debug("<BLOCKQUOTE>\n", __LINE__))
-# if $tag =~ /example/i;
- # sunshine@sunshineco.com: <PRE>bla</PRE> looks better than
- # <PRE>\nbla</PRE> (at least on NeXTstep browser
- push(@lines, &debug("<$format_map{$tag}>" .
- ($in_pre ? '' : "\n"), __LINE__));
- next;
- }
- elsif (exists $complex_format_map->{$tag})
- {
- my $start = eval $complex_format_map->{$tag}->[0];
- if ($@)
- {
- print "$ERROR: eval of complex_format_map->{$tag}->[0] $complex_format_map->{$tag}->[0]: $@";
- $start = '<pre>'
- }
- $in_pre = 1 if $start =~ /<pre/;
- push(@lines, html_debug($start. ($in_pre ? '' : "\n"), __LINE__));
- next;
- } elsif ($tag eq 'table') {
- # anorland@hem2.passagen.se
- # if (/^\s*\@(|f|v|multi)table\s+\@(\w+)/) {
- if (/^\s*\@(|f|v|multi)table\s+\@(\w+)|(\{[^\}]*\})/) {
- $in_table = $2;
- unshift(@tables, join($;, $table_type, $in_table));
- if ($table_type eq "multi") {
- # don't use borders -- gets confused by empty cells
- push(@lines, &debug("<TABLE>\n", __LINE__));
- &html_push_if('TABLE');
- } else {
- push(@lines, &debug("<DL COMPACT>\n", __LINE__));
- &html_push_if('DL');
- }
- push(@lines, &html_debug('', __LINE__));
- } else {
- warn "$ERROR Bad table line: $_";
- }
- next;
- }
- elsif ($tag eq 'synindex' || $tag eq 'syncodeindex')
- {
- if (/^\@$tag\s+(\w+)\s+(\w+)\s*$/)
- {
- my $from = $1;
- my $to = $2;
- my $prefix_from = IndexName2Prefix($from);
- my $prefix_to = IndexName2Prefix($to);
-
- warn("$ERROR unknown from index name $from ind syn*index line: $_"), next
- unless $prefix_from;
- warn("$ERROR unknown to index name $to ind syn*index line: $_"), next
- unless $prefix_to;
-
- if ($tag eq 'syncodeindex')
- {
- $index_properties->{$prefix_to}->{'from_code'}->{$prefix_from} = 1;
- }
- else
- {
- $index_properties->{$prefix_to}->{'from'}->{$prefix_from} = 1;
- }
- }
- else
- {
- warn "$ERROR Bad syn*index line: $_";
- }
- next;
- }
- elsif ($tag eq 'defindex' || $tag eq 'defcodeindex')
- {
- if (/^\@$tag\s+(\w+)\s*$/)
- {
- my $name = $1;
- $index_properties->{$name}->{name} = $name;
- $index_properties->{$name}->{code} = 1 if $tag eq 'defcodeindex';
- }
- else
- {
- warn "$ERROR Bad defindex line: $_";
- }
- next;
- }
- elsif (/^\@printindex/)
- {
- push (@lines, "<!--::${section}::-->$_");
- next;
- }
- elsif ($tag eq 'sp') {
- push(@lines, &debug("<P>\n", __LINE__));
- next;
- } elsif ($tag eq 'center') {
- push(@lines, &debug("<center>\n", __LINE__));
- s/\@center//;
- } elsif ($tag eq 'setref') {
- &protect_html; # if setref contains '&' for instance
- if (/^\@$tag\s*{($NODERE)}\s*$/) {
- $setref = $1;
- $setref =~ s/\s+/ /g; # normalize
- $setref =~ s/ $//;
- $node2sec{$setref} = $name;
- $sec2node{$name} = $setref;
- $node2href{$setref} = "$docu_doc#$docid";
- } else {
- warn "$ERROR Bad setref line: $_";
- }
- next;
- } elsif ($tag eq 'lowersections') {
- local ($sec, $level);
- while (($sec, $level) = each %sec2level) {
- $sec2level{$sec} = $level + 1;
- }
- next;
- } elsif ($tag eq 'raisesections') {
- local ($sec, $level);
- while (($sec, $level) = each %sec2level) {
- $sec2level{$sec} = $level - 1;
- }
- next;
- }
- elsif ($tag eq 'macro' || $tag eq 'rmacro')
- {
- if (/^\@$tag\s*(\w+)\s*(.*)/)
- {
- my $name = $1;
- my @args;
- @args = split(/\s*,\s*/ , $1)
- if ($2 =~ /^\s*{(.*)}\s*/);
-
- $macros->{$name}->{Args} = \@args;
- $macros->{$name}->{Body} = '';
- while (($_ = &next_line) && $_ !~ /\@end $tag/)
- {
- $macros->{$name}->{Body} .= $_;
- }
- die "ERROR: No closing '\@end $tag' found for macro definition of '$name'\n"
- unless (/\@end $tag/);
- chomp $macros->{$name}->{Body};
- }
- else
- {
- warn "$ERROR: Bad macro defintion $_"
- }
- next;
- }
- elsif ($tag eq 'unmacro')
- {
- delete $macros->{$1} if (/^\@unmacro\s*(\w+)/);
- next;
- }
- elsif ($tag eq 'documentlanguage')
- {
- SetDocumentLanguage($1) if (!$T2H_LANG && /documentlanguage\s*(\w+)/);
- }
- elsif (defined($def_map{$tag})) {
- if ($def_map{$tag}) {
- s/^\@$tag\s+//;
- $tag = $def_map{$tag};
- $_ = "\@$tag $_";
- $tag =~ s/\s.*//;
- }
- } elsif (defined($user_sub{$tag})) {
- s/^\@$tag\s+//;
- $sub = $user_sub{$tag};
- print "# user $tag = $sub, arg: $_" if $T2H_DEBUG & $DEBUG_USER;
- if (defined(&$sub)) {
- chop($_);
- &$sub($_);
- } else {
- warn "$ERROR Bad user sub for $tag: $sub\n";
- }
- next;
- }
- if (defined($def_map{$tag})) {
- s/^\@$tag\s+//;
- if ($tag =~ /x$/) {
- # extra definition line
- $tag = $`;
- $is_extra = 1;
- } else {
- $is_extra = 0;
- }
- while (/\{([^\{\}]*)\}/) {
- # this is a {} construct
- ($before, $contents, $after) = ($`, $1, $');
- # protect spaces
- $contents =~ s/\s+/$;9/g;
- # restore $_ protecting {}
- $_ = "$before$;7$contents$;8$after";
- }
- @args = split(/\s+/, &protect_html($_));
- foreach (@args) {
- s/$;9/ /g; # unprotect spaces
- s/$;7/\{/g; # ... {
- s/$;8/\}/g; # ... }
- }
- $type = shift(@args);
- $type =~ s/^\{(.*)\}$/$1/;
- print "# def ($tag): {$type} ", join(', ', @args), "\n"
- if $T2H_DEBUG & $DEBUG_DEF;
- $type .= ':'; # it's nicer like this
- my $name = shift(@args);
- $name =~ s/^\{(.*)\}$/$1/;
- if ($is_extra) {
- $_ = &debug("<DT>", __LINE__);
- } else {
- $_ = &debug("<DL>\n<DT>", __LINE__);
- }
- if ($tag eq 'deffn' || $tag eq 'defvr' || $tag eq 'deftp') {
- $_ .= "<U>$type</U> <B>$name</B>";
- $_ .= " <I>@args</I>" if @args;
- } elsif ($tag eq 'deftypefn' || $tag eq 'deftypevr'
- || $tag eq 'defcv' || $tag eq 'defop') {
- $ftype = $name;
- $name = shift(@args);
- $name =~ s/^\{(.*)\}$/$1/;
- $_ .= "<U>$type</U> $ftype <B>$name</B>";
- $_ .= " <I>@args</I>" if @args;
- } else {
- warn "$ERROR Unknown definition type: $tag\n";
- $_ .= "<U>$type</U> <B>$name</B>";
- $_ .= " <I>@args</I>" if @args;
- }
- $_ .= &debug("\n<DD>", __LINE__);
- $name = &unprotect_html($name);
- if ($tag eq 'deffn' || $tag eq 'deftypefn') {
- EnterIndexEntry('f', $name, $docu_doc, $section, \@lines);
-# unshift(@input_spool, "\@findex $name\n");
- } elsif ($tag eq 'defop') {
- EnterIndexEntry('f', "$name on $ftype", $docu_doc, $section, \@lines);
-# unshift(@input_spool, "\@findex $name on $ftype\n");
- } elsif ($tag eq 'defvr' || $tag eq 'deftypevr' || $tag eq 'defcv') {
- EnterIndexEntry('v', $name, $docu_doc, $section, \@lines);
-# unshift(@input_spool, "\@vindex $name\n");
- } else {
- EnterIndexEntry('t', $name, $docu_doc, $section, \@lines);
-# unshift(@input_spool, "\@tindex $name\n");
- }
- $dont_html = 1;
- }
- } elsif ($end_tag) {
- if ($format_map{$end_tag}) {
- $in_pre = 0 if $format_map{$end_tag} eq 'PRE';
- $in_list-- if $format_map{$end_tag} eq 'UL' || $format_map{$end_tag} eq 'OL' ;
- &html_pop_if('P');
- &html_pop_if('LI');
- &html_pop_if();
- push(@lines, &debug("</$format_map{$end_tag}>\n", __LINE__));
- push(@lines, &html_debug('', __LINE__));
- }
- elsif (exists $complex_format_map->{$end_tag})
- {
- my $end = eval $complex_format_map->{$end_tag}->[1];
- if ($@)
- {
- print "$ERROR: eval of complex_format_map->{$end_tag}->[1] $complex_format_map->{$end_tag}->[0]: $@";
- $end = '</pre>'
- }
- $in_pre = 0 if $end =~ m|</pre>|;
- push(@lines, html_debug($end, __LINE__));
- } elsif ($end_tag =~ /^(|f|v|multi)table$/) {
- unless (@tables) {
- warn "$ERROR \@end $end_tag without \@*table\n";
- next;
- }
- &html_pop_if('P');
- ($table_type, $in_table) = split($;, shift(@tables));
- unless ($1 eq $table_type) {
- warn "$ERROR \@end $end_tag without matching \@$end_tag\n";
- next;
- }
- if ($table_type eq "multi") {
- push(@lines, "</TR></TABLE>\n");
- &html_pop_if('TR');
- } else {
- push(@lines, "</DL>\n");
- &html_pop_if('DD');
- }
- &html_pop_if();
- if (@tables) {
- ($table_type, $in_table) = split($;, $tables[0]);
- } else {
- $in_table = 0;
- }
- } elsif (defined($def_map{$end_tag})) {
- push(@lines, &debug("</DL>\n", __LINE__));
- } elsif ($end_tag eq 'menu') {
- &html_pop_if();
- push(@lines, $_); # must keep it for pass 2
- }
- next;
- }
- #############################################################
- # anchor insertion
- while (/\@anchor\s*\{(.*?)\}/)
- {
- $_ = $`.$';
- my $anchor = $1;
- $anchor = &normalise_node($anchor);
- push @lines, &html_debug("<A NAME=\"$anchor\"></A>\n");
- $node2href{$anchor} = "$docu_doc#$anchor";
- next INPUT_LINE if $_ =~ /^\s*$/;
- }
-
- #############################################################
- # index entry generation, after value substitutions
- if (/^\@(\w+?)index\s+/)
- {
- EnterIndexEntry($1, $', $docu_doc, $section, \@lines);
- next;
- }
- #
- # protect texi and HTML things
- &protect_texi;
- $_ = &protect_html($_) unless $dont_html;
- $dont_html = 0;
- # substitution (unsupported things)
- s/^\@exdent\s+//g;
- s/\@noindent\s+//g;
- s/\@refill\s+//g;
- # other substitutions
- &simple_substitutions;
- s/\@footnote\{/\@footnote$docu_doc\{/g; # mark footnotes, cf. pass 4
- #
- # analyze the tag again
- #
- if ($tag) {
- if (defined($sec2level{$tag}) && $sec2level{$tag} > 0) {
- if (/^\@$tag\s+(.+)$/) {
- $name = $1;
- $name = &normalise_node($name);
- $level = $sec2level{$tag};
- # check for index
- $first_index_chapter = $name
- if ($level == 1 && !$first_index_chapter &&
- $name =~ /index/i);
- if ($in_top && /heading/){
- $T2H_HAS_TOP_HEADING = 1;
- $_ = &debug("<H$level>$name</H$level>\n", __LINE__);
- &html_push_if('body');
- print "# top heading, section $name, level $level\n"
- if $T2H_DEBUG & $DEBUG_TOC;
- }
- else
- {
- unless (/^\@\w*heading/)
- {
- unless (/^\@unnumbered/)
- {
- my $number = &update_sec_num($tag, $level);
- $name = $number. ' ' . $name if $T2H_NUMBER_SECTIONS;
- $sec2number{$name} = $number;
- $number2sec{$number} = $name;
- }
- if (defined($toplevel))
- {
- push @lines, ($level==$toplevel ? $CHAPTEREND : $SECTIONEND);
- }
- else
- {
- # first time we see a "section"
- unless ($level == 1)
- {
- warn "$WARN The first section found is not of level 1: $_";
- }
- $toplevel = $level;
- }
- push(@sections, $name);
- next_doc() if ($T2H_SPLIT eq 'section' ||
- $T2H_SPLIT && $level == $toplevel);
- }
- $sec_num++;
- $docid = "SEC$sec_num";
- $tocid = (/^\@\w*heading/ ? undef : "TOC$sec_num");
- # check biblio and glossary
- $in_bibliography = ($name =~ /^([A-Z]|\d+)?(\.\d+)*\s*bibliography$/i);
- $in_glossary = ($name =~ /^([A-Z]|\d+)?(\.\d+)*\s*glossary$/i);
- # check node
- if ($node)
- {
- warn "$ERROR Duplicate node found: $node\n"
- if ($node2sec{$node});
- }
- else
- {
- $name .= ' ' while ($node2sec{$name});
- $node = $name;
- }
- $name .= ' ' while ($sec2node{$name});
- $section = $name;
- $node2sec{$node} = $name;
- $sec2node{$name} = $node;
- $node2href{$node} = "$docu_doc#$docid";
- $node2next{$node} = $node_next;
- $node2prev{$node} = $node_prev;
- $node2up{$node} = $node_up;
- print "# node $node, section $name, level $level\n"
- if $T2H_DEBUG & $DEBUG_TOC;
-
- $node = '';
- $node_next = '';
- $node_prev = '';
- $node_next = '';
- if ($tocid)
- {
- # update TOC
- while ($level > $curlevel) {
- $curlevel++;
- push(@toc_lines, "<UL>\n");
- }
- while ($level < $curlevel) {
- $curlevel--;
- push(@toc_lines, "</UL>\n");
- }
- $_ = &t2h_anchor($tocid, "$docu_doc#$docid", $name, 1);
- $_ = &substitute_style($_);
- push(@stoc_lines, "$_<BR>\n") if ($level == 1);
- if ($T2H_NUMBER_SECTIONS)
- {
- push(@toc_lines, $_ . "<BR>\n")
- }
- else
- {
- push(@toc_lines, "<LI>" . $_ ."</LI>");
- }
- }
- else
- {
- push(@lines, &html_debug("<A NAME=\"$docid\"></A>\n",
- __LINE__));
- }
- # update DOC
- push(@lines, &html_debug('', __LINE__));
- &html_reset;
- $_ = "<H$level> $name </H$level>\n<!--docid::${docid}::-->\n";
- $_ = &debug($_, __LINE__);
- push(@lines, &html_debug('', __LINE__));
- }
- # update DOC
- foreach $line (split(/\n+/, $_)) {
- push(@lines, "$line\n");
- }
- next;
- } else {
- warn "$ERROR Bad section line: $_";
- }
- } else {
- # track variables
- $value{$1} = Unprotect_texi($2), next if /^\@set\s+($VARRE)\s+(.*)$/o;
- delete $value{$1}, next if /^\@clear\s+($VARRE)\s*$/o;
- # store things
- $value{'_shorttitle'} = Unprotect_texi($1), next if /^\@shorttitle\s+(.*)$/;
- $value{'_setfilename'} = Unprotect_texi($1), next if /^\@setfilename\s+(.*)$/;
- $value{'_settitle'} = Unprotect_texi($1), next if /^\@settitle\s+(.*)$/;
- $value{'_author'} .= Unprotect_texi($1)."\n", next if /^\@author\s+(.*)$/;
- $value{'_subtitle'} .= Unprotect_texi($1)."\n", next if /^\@subtitle\s+(.*)$/;
- $value{'_title'} .= Unprotect_texi($1)."\n", next if /^\@title\s+(.*)$/;
-
- # list item
- if (/^\s*\@itemx?\s+/) {
- $what = $';
- $what =~ s/\s+$//;
- if ($in_bibliography && $use_bibliography) {
- if ($what =~ /^$BIBRE$/o) {
- $id = 'BIB' . ++$bib_num;
- $bib2href{$what} = "$docu_doc#$id";
- print "# found bibliography for '$what' id $id\n"
- if $T2H_DEBUG & $DEBUG_BIB;
- $what = &t2h_anchor($id, '', $what);
- }
- } elsif ($in_glossary && $T2H_USE_GLOSSARY) {
- $id = 'GLOSS' . ++$gloss_num;
- $entry = $what;
- $entry =~ tr/A-Z/a-z/ unless $entry =~ /^[A-Z\s]+$/;
- $gloss2href{$entry} = "$docu_doc#$id";
- print "# found glossary for '$entry' id $id\n"
- if $T2H_DEBUG & $DEBUG_GLOSS;
- $what = &t2h_anchor($id, '', $what);
- }
- elsif ($in_table && ($table_type eq 'f' || $table_type eq 'v'))
- {
- EnterIndexEntry($table_type, $what, $docu_doc, $section, \@lines);
- }
- &html_pop_if('P');
- if ($html_element eq 'DL' || $html_element eq 'DD') {
- if ($things_map{$in_table} && !$what) {
- # special case to allow @table @bullet for instance
- push(@lines, &debug("<DT>$things_map{$in_table}\n", __LINE__));
- } else {
- push(@lines, &debug("<DT>\@$in_table\{$what\}\n", __LINE__));
- }
- push(@lines, "<DD>");
- &html_push('DD') unless $html_element eq 'DD';
- if ($table_type) { # add also an index
- unshift(@input_spool, "\@${table_type}index $what\n");
- }
- } elsif ($html_element eq 'TABLE') {
- push(@lines, &debug("<TR><TD>$what</TD>\n", __LINE__));
- &html_push('TR');
- } elsif ($html_element eq 'TR') {
- push(@lines, &debug("</TR>\n", __LINE__));
- push(@lines, &debug("<TR><TD>$what</TD>\n", __LINE__));
- } else {
- push(@lines, &debug("<LI>$what\n", __LINE__));
- &html_push('LI') unless $html_element eq 'LI';
- }
- push(@lines, &html_debug('', __LINE__));
- if ($deferred_ref) {
- push(@lines, &debug("$deferred_ref\n", __LINE__));
- $deferred_ref = '';
- }
- next;
- } elsif (/^\@tab\s+(.*)$/) {
- push(@lines, "<TD>$1</TD>\n");
- next;
- }
- }
- }
- # paragraph separator
- if ($_ eq "\n" && ! $in_pre) {
- next if $#lines >= 0 && $lines[$#lines] eq "\n";
- if ($html_element eq 'P') {
- push (@lines, &debug("</P><P>\n", __LINE__));
- }
-# else
-# {
-# push(@lines, "<P></P>\n");
-# $_ = &debug("<P></P>\n", __LINE__);
-# }
- elsif ($html_element eq 'body' || $html_element eq 'BLOCKQUOTE' || $html_element eq 'DD' || $html_element eq 'LI')
- {
- &html_push('P');
- push(@lines, &debug("<P>\n", __LINE__));
- }
- }
- # otherwise
- push(@lines, $_) unless $in_titlepage;
- push(@lines, &debug("</center>\n", __LINE__)) if ($tag eq 'center');
-}
-
-# finish TOC
-$level = 0;
-while ($level < $curlevel) {
- $curlevel--;
- push(@toc_lines, "</UL>\n");
-}
-
-print "# end of pass 1\n" if $T2H_VERBOSE;
-
-SetDocumentLanguage('en') unless ($T2H_LANG);
-#+++############################################################################
-# #
-# Stuff related to Index generation #
-# #
-#---############################################################################
-
-sub EnterIndexEntry
-{
- my $prefix = shift;
- my $key = shift;
- my $docu_doc = shift;
- my $section = shift;
- my $lines = shift;
- local $_;
-
- warn "$ERROR Undefined index command: $_", next
- unless (exists ($index_properties->{$prefix}));
- $key =~ s/\s+$//;
- $_ = $key;
- &protect_texi;
- $key = $_;
- $_ = &protect_html($_);
- my $html_key = substitute_style($_);
- my $id;
- $key = remove_style($key);
- $key = remove_things($key);
- $_ = $key;
- &unprotect_texi;
- $key = $_;
- while (exists $index->{$prefix}->{$key}) {$key .= ' '};
- if ($lines->[$#lines] =~ /^<!--docid::(.+)::-->$/)
- {
- $id = $1;
- }
- else
- {
- $id = 'IDX' . ++$idx_num;
- push(@$lines, &t2h_anchor($id, '', $T2H_INVISIBLE_MARK, !$in_pre));
- }
- $index->{$prefix}->{$key}->{html_key} = $html_key;
- $index->{$prefix}->{$key}->{section} = $section;
- $index->{$prefix}->{$key}->{href} = "$docu_doc#$id";
- print "# found ${prefix}index for '$key' with id $id\n"
- if $T2H_DEBUG & $DEBUG_INDEX;
-}
-
-sub IndexName2Prefix
-{
- my $name = shift;
- my $prefix;
-
- for $prefix (keys %$index_properties)
- {
- return $prefix if ($index_properties->{$prefix}->{name} eq $name);
- }
- return undef;
-}
-
-sub GetIndexEntries
-{
- my $normal = shift;
- my $code = shift;
- my ($entries, $prefix, $key) = ({});
-
- for $prefix (keys %$normal)
- {
- for $key (keys %{$index->{$prefix}})
- {
- $entries->{$key} = {%{$index->{$prefix}->{$key}}};
- }
- }
-
- if (defined($code))
- {
- for $prefix (keys %$code)
- {
- unless (exists $normal->{$keys})
- {
- for $key (keys %{$index->{$prefix}})
- {
- $entries->{$key} = {%{$index->{$prefix}->{$key}}};
- $entries->{$key}->{html_key} = "<CODE>$entries->{$key}->{html_key}</CODE>";
- }
- }
- }
- }
- return $entries;
-}
-
-sub byAlpha
-{
- if ($a =~ /^[A-Za-z]/)
- {
- if ($b =~ /^[A-Za-z]/)
- {
- return lc($a) cmp lc($b);
- }
- else
- {
- return 1;
- }
- }
- elsif ($b =~ /^[A-Za-z]/)
- {
- return -1;
- }
- else
- {
- return lc($a) cmp lc($b);
- }
-}
-
-sub GetIndexPages
-{
- my $entries = shift;
- my (@Letters, $key);
- my ($EntriesByLetter, $Pages, $page) = ({}, [], {});
- my @keys = sort byAlpha keys %$entries;
-
- for $key (@keys)
- {
- push @{$EntriesByLetter->{uc(substr($key,0, 1))}} , $entries->{$key};
- }
- @Letters = sort byAlpha keys %$EntriesByLetter;
-
- $T2H_SPLIT_INDEX = 0 unless ($T2H_SPLIT);
-
- unless ($T2H_SPLIT_INDEX)
- {
- $page->{First} = $Letters[0];
- $page->{Last} = $Letters[$#Letters];
- $page->{Letters} = \@Letters;
- $page->{EntriesByLetter} = $EntriesByLetter;
- push @$Pages, $page;
- return $Pages;
- }
-
- if ($T2H_SPLIT_INDEX =~ /^\d+$/)
- {
- my $i = 0;
- my ($prev_letter, $letter);
- $page->{First} = $Letters[0];
- for $letter (@Letters)
- {
- if ($i > $T2H_SPLIT_INDEX)
- {
- $page->{Last} = $prev_letter;
- push @$Pages, {%$page};
- $page->{Letters} = [];
- $page->{EntriesByLetter} = {};
- $page->{First} = $letter;
- $i=0;
- }
- push @{$page->{Letters}}, $letter;
- $page->{EntriesByLetter}->{$letter} = [@{$EntriesByLetter->{$letter}}];
- $i += scalar(@{$EntriesByLetter->{$letter}});
- $prev_letter = $letter;
- }
- $page->{Last} = $Letters[$#Letters];
- push @$Pages, {%$page};
- }
- return $Pages;
-}
-
-sub GetIndexSummary
-{
- my $first_page = shift;
- my $Pages = shift;
- my $name = shift;
- my ($page, $letter, $summary, $i, $l1, $l2, $l);
-
- $i = 0;
- $summary = '<table><tr><th valign=top>Jump to: &nbsp; </th><td>';
-
- for $page ($first_page, @$Pages)
- {
- for $letter (@{$page->{Letters}})
- {
- $l = t2h_anchor('', "$page->{href}#${name}_$letter", "<b>$letter</b>",
- 0, 'style="text-decoration:none"') . "\n &nbsp; \n";
-
- if ($letter =~ /^[A-Za-z]/)
- {
- $l2 .= $l;
- }
- else
- {
- $l1 .= $l;
- }
- }
- }
- $summary .= $l1 . "<BR>\n" if ($l1);
- $summary .= $l2 . '</td></tr></table><br>';
- return $summary;
-}
-
-sub PrintIndexPage
-{
- my $lines = shift;
- my $summary = shift;
- my $page = shift;
- my $name = shift;
-
- push @$lines, $summary;
-
- push @$lines , <<EOT;
-<P></P>
-<TABLE border=0>
-<TR><TD></TD><TH ALIGN=LEFT>Index Entry</TH><TH ALIGN=LEFT> Section</TH></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-EOT
-
- for $letter (@{$page->{Letters}})
- {
- push @$lines, "<TR><TH><A NAME=\"${name}_$letter\"></A>$letter</TH><TD></TD><TD></TD></TR>\n";
- for $entry (@{$page->{EntriesByLetter}->{$letter}})
- {
- push @$lines,
- "<TR><TD></TD><TD valign=top>" .
- t2h_anchor('', $entry->{href}, $entry->{html_key}) .
- "</TD><TD valign=top>" .
- t2h_anchor('', sec_href($entry->{section}), clean_name($entry->{section})) .
- "</TD></TR>\n";
- }
- push @$lines, "<TR><TD COLSPAN=3> <HR></TD></TR>\n";
- }
- push @$lines, "</TABLE><P></P>";
- push @$lines, $summary;
-}
-
-sub PrintIndex
-{
- my $lines = shift;
- my $name = shift;
- my $section = shift;
- $section = 'Top' unless $section;
- my $prefix = IndexName2Prefix($name);
-
- warn ("$ERROR printindex: bad index name: $name"), return
- unless $prefix;
-
- if ($index_properties->{$prefix}->{code})
- {
- $index_properties->{$prefix}->{from_code}->{$prefix} = 1;
- }
- else
- {
- $index_properties->{$prefix}->{from}->{$prefix}= 1;
- }
-
- my $Entries = GetIndexEntries($index_properties->{$prefix}->{from},
- $index_properties->{$prefix}->{from_code});
- return unless %$Entries;
-
- if ($T2H_IDX_SUMMARY)
- {
- my $key;
- open(FHIDX, ">$docu_rdir$docu_name" . "_$name.idx")
- || die "Can't open > $docu_rdir$docu_name" . "_$name.idx for writing: $!\n";
- print "# writing $name index summary in $docu_rdir$docu_name" . "_$name.idx...\n" if $T2H_VERBOSE;
-
- for $key (sort keys %$Entries)
- {
- print FHIDX "$key\t$Entries->{$key}->{href}\n";
- }
- }
-
- my $Pages = GetIndexPages($Entries);
- my $page;
- my $first_page = shift @$Pages;
- my $sec_name = $section;
- # remove section number
- $sec_name =~ s/.*? // if $sec_name =~ /^([A-Z]|\d+)\./;
-
- ($first_page->{href} = sec_href($section)) =~ s/\#.*$//;
- # Update tree structure of document
- if (@$Pages)
- {
- my $sec;
- my @after;
-
- while (@sections && $sections[$#sections] ne $section)
- {
- unshift @after, pop @sections;
- }
-
- for $page (@$Pages)
- {
- my $node = ($page->{First} ne $page->{Last} ?
- "$sec_name: $page->{First} -- $page->{Last}" :
- "$sec_name: $page->{First}");
- push @sections, $node;
- $node2sec{$node} = $node;
- $sec2node{$node} = $node;
- $node2up{$node} = $section;
- $page->{href} = next_doc();
- $page->{name} = $node;
- $node2href{$node} = $page->{href};
- if ($prev_node)
- {
- $node2next{$prev_node} = $node;
- $node2prev{$node} = $prev_node;
- }
- $prev_node = $node;
- }
- push @sections, @after;
- }
-
- my $summary = GetIndexSummary($first_page, $Pages, $name);
- PrintIndexPage($lines, $summary, $first_page, $name);
- for $page (@$Pages)
- {
- push @$lines, ($T2H_SPLIT eq 'chapter' ? $CHAPTEREND : $SECTIONEND);
- push @$lines, "<H2 ALIGN=\"Left\">$page->{name}</H2>\n";
- PrintIndexPage($lines, $summary, $page, $name);
- }
-}
-
-
-#+++############################################################################
-# #
-# Pass 2/3: handle style, menu, index, cross-reference #
-# #
-#---############################################################################
-
-@lines2 = (); # whole document (2nd pass)
-@lines3 = (); # whole document (3rd pass)
-$in_menu = 0; # am I inside a menu
-
-while (@lines) {
- $_ = shift(@lines);
- #
- # special case (protected sections)
- #
- if (/^$PROTECTTAG/o) {
- push(@lines2, $_);
- next;
- }
- #
- # menu
- #
- if (/^\@menu\b/)
- {
- $in_menu = 1;
- $in_menu_listing = 1;
- push(@lines2, &debug("<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> \n", __LINE__));
- next;
- }
- if (/^\@end\s+menu\b/)
- {
- if ($in_menu_listing)
- {
- push(@lines2, &debug("</TABLE></BLOCKQUOTE>\n", __LINE__));
- }
- else
- {
- push(@lines2, &debug("</BLOCKQUOTE>\n", __LINE__));
- }
- $in_menu = 0;
- $in_menu_listing = 0;
- next;
- }
- if ($in_menu)
- {
- my ($node, $name, $descr);
- if (/^\*\s+($NODERE)::/o)
- {
- $node = $1;
- $descr = $';
- }
- elsif (/^\*\s+(.+):\s+([^\t,\.\n]+)[\t,\.\n]/)
- {
- $name = $1;
- $node = $2;
- $descr = $';
- }
- elsif (/^\*/)
- {
- warn "$ERROR Bad menu line: $_";
- }
- else
- {
- if ($in_menu_listing)
- {
- $in_menu_listing = 0;
- push(@lines2, &debug("</TABLE>\n", __LINE__));
- }
- # should be like verbatim -- preseve spaces, etc
- s/ /\&nbsp;/g;
- $_ .= "<br>\n";
- push(@lines2, $_);
- }
- if ($node)
- {
- if (! $in_menu_listing)
- {
- $in_menu_listing = 1;
- push(@lines2, &debug("<TABLE BORDER=0 CELLSPACING=0>\n", __LINE__));
- }
- # look for continuation
- while ($lines[0] =~ /^\s+\w+/)
- {
- $descr .= shift(@lines);
- }
- &menu_entry($node, $name, $descr);
- }
- next;
- }
- #
- # printindex
- #
- PrintIndex(\@lines2, $2, $1), next
- if (/^<!--::(.*)::-->\@printindex\s+(\w+)/);
- #
- # simple style substitutions
- #
- $_ = &substitute_style($_);
- #
- # xref
- #
- while (/\@(x|px|info|)ref{([^{}]+)(}?)/) {
- # note: Texinfo may accept other characters
- ($type, $nodes, $full) = ($1, $2, $3);
- ($before, $after) = ($`, $');
- if (! $full && $after) {
- warn "$ERROR Bad xref (no ending } on line): $_";
- $_ = "$before$;0${type}ref\{$nodes$after";
- next; # while xref
- }
- if ($type eq 'x') {
- $type = "$T2H_WORDS->{$T2H_LANG}->{'See'} ";
- } elsif ($type eq 'px') {
- $type = "$T2H_WORDS->{$T2H_LANG}->{'see'} ";
- } elsif ($type eq 'info') {
- $type = "$T2H_WORDS->{$T2H_LANG}->{'See'} Info";
- } else {
- $type = '';
- }
- unless ($full) {
- $next = shift(@lines);
- $next = &substitute_style($next);
- chop($nodes); # remove final newline
- if ($next =~ /\}/) { # split on 2 lines
- $nodes .= " $`";
- $after = $';
- } else {
- $nodes .= " $next";
- $next = shift(@lines);
- $next = &substitute_style($next);
- chop($nodes);
- if ($next =~ /\}/) { # split on 3 lines
- $nodes .= " $`";
- $after = $';
- } else {
- warn "$ERROR Bad xref (no ending }): $_";
- $_ = "$before$;0xref\{$nodes$after";
- unshift(@lines, $next);
- next; # while xref
- }
- }
- }
- $nodes =~ s/\s+/ /g; # remove useless spaces
- @args = split(/\s*,\s*/, $nodes);
- $node = $args[0]; # the node is always the first arg
- $node = &normalise_node($node);
- $sec = $args[2] || $args[1] || $node2sec{$node};
- $href = $node2href{$node};
- if (@args == 5) { # reference to another manual
- $sec = $args[2] || $node;
- $man = $args[4] || $args[3];
- $_ = "${before}${type}$T2H_WORDS->{$T2H_LANG}->{'section'} `$sec' in \@cite{$man}$after";
- } elsif ($type =~ /Info/) { # inforef
- warn "$ERROR Wrong number of arguments: $_" unless @args == 3;
- ($nn, $_, $in) = @args;
- $_ = "${before}${type} file `$in', node `$nn'$after";
- } elsif ($sec && $href && ! $T2H_SHORT_REF) {
- $_ = "${before}${type}";
- $_ .= "$T2H_WORDS->{$T2H_LANG}->{'section'} " if ${type};
- $_ .= &t2h_anchor('', $href, $sec) . $after;
- }
- elsif ($href)
- {
- $_ = "${before}${type} " .
- &t2h_anchor('', $href, $args[2] || $args[1] || $node) .
- $after;
- }
- else {
- warn "$ERROR Undefined node ($node): $_";
- $_ = "$before$;0xref{$nodes}$after";
- }
- }
-
- # replace images
- s[\@image\s*{(.+?)}]
- {
- my @args = split (/\s*,\s*/, $1);
- my $base = $args[0];
- my $image =
- LocateIncludeFile("$base.png") ||
- LocateIncludeFile("$base.jpg") ||
- LocateIncludeFile("$base.gif");
- warn "$ERROR no image file for $base: $_" unless ($image && -e $image);
- "<IMG SRC=\"$image\" ALT=\"$base\">";
- ($T2H_CENTER_IMAGE ?
- "<CENTER><IMG SRC=\"$image\" ALT=\"$base\"></CENTER>" :
- "<IMG SRC=\"$image\" ALT=\"$base\">");
- }eg;
-
- #
- # try to guess bibliography references or glossary terms
- #
- unless (/^<H\d><A NAME=\"SEC\d/) {
- if ($use_bibliography) {
- $done = '';
- while (/$BIBRE/o) {
- ($pre, $what, $post) = ($`, $&, $');
- $href = $bib2href{$what};
- if (defined($href) && $post !~ /^[^<]*<\/A>/) {
- $done .= $pre . &t2h_anchor('', $href, $what);
- } else {
- $done .= "$pre$what";
- }
- $_ = $post;
- }
- $_ = $done . $_;
- }
- if ($T2H_USE_GLOSSARY) {
- $done = '';
- while (/\b\w+\b/) {
- ($pre, $what, $post) = ($`, $&, $');
- $entry = $what;
- $entry =~ tr/A-Z/a-z/ unless $entry =~ /^[A-Z\s]+$/;
- $href = $gloss2href{$entry};
- if (defined($href) && $post !~ /^[^<]*<\/A>/) {
- $done .= $pre . &t2h_anchor('', $href, $what);
- } else {
- $done .= "$pre$what";
- }
- $_ = $post;
- }
- $_ = $done . $_;
- }
- }
- # otherwise
- push(@lines2, $_);
-}
-print "# end of pass 2\n" if $T2H_VERBOSE;
-
-#
-# split style substitutions
-#
-while (@lines2) {
- $_ = shift(@lines2);
- #
- # special case (protected sections)
- #
- if (/^$PROTECTTAG/o) {
- push(@lines3, $_);
- next;
- }
- #
- # split style substitutions
- #
- $old = '';
- while ($old ne $_) {
- $old = $_;
- if (/\@(\w+)\{/) {
- ($before, $style, $after) = ($`, $1, $');
- if (defined($style_map{$style})) {
- $_ = $after;
- $text = '';
- $after = '';
- $failed = 1;
- while (@lines2) {
- if (/\}/) {
- $text .= $`;
- $after = $';
- $failed = 0;
- last;
- } else {
- $text .= $_;
- $_ = shift(@lines2);
- }
- }
- if ($failed) {
- die "* Bad syntax (\@$style) after: $before\n";
- } else {
- $text = &apply_style($style, $text);
- $_ = "$before$text$after";
- }
- }
- }
- }
- # otherwise
- push(@lines3, $_);
-}
-print "# end of pass 3\n" if $T2H_VERBOSE;
-
-#+++############################################################################
-# #
-# Pass 4: foot notes, final cleanup #
-# #
-#---############################################################################
-
-@foot_lines = (); # footnotes
-@doc_lines = (); # final document
-$end_of_para = 0; # true if last line is <P>
-
-while (@lines3) {
- $_ = shift(@lines3);
- #
- # special case (protected sections)
- #
- if (/^$PROTECTTAG/o) {
- push(@doc_lines, $_);
- $end_of_para = 0;
- next;
- }
- #
- # footnotes
- #
- while (/\@footnote([^\{\s]+)\{/) {
- ($before, $d, $after) = ($`, $1, $');
- $_ = $after;
- $text = '';
- $after = '';
- $failed = 1;
- while (@lines3) {
- if (/\}/) {
- $text .= $`;
- $after = $';
- $failed = 0;
- last;
- } else {
- $text .= $_;
- $_ = shift(@lines3);
- }
- }
- if ($failed) {
- die "* Bad syntax (\@footnote) after: $before\n";
- } else {
- $foot_num++;
- $docid = "DOCF$foot_num";
- $footid = "FOOT$foot_num";
- $foot = "($foot_num)";
- push(@foot_lines, "<H3>" . &t2h_anchor($footid, "$d#$docid", $foot) . "</H3>\n");
- $text = "<P>$text" unless $text =~ /^\s*<P>/;
- push(@foot_lines, "$text\n");
- $_ = $before . &t2h_anchor($docid, "$docu_foot#$footid", $foot) . $after;
- }
- }
- #
- # remove unnecessary <P>
- #
- if (/^\s*<P>\s*$/) {
- next if $end_of_para++;
- } else {
- $end_of_para = 0;
- }
- # otherwise
- push(@doc_lines, $_);
-}
-
-print "# end of pass 4\n" if $T2H_VERBOSE;
-
-#+++############################################################################
-# #
-# Pass 5: print things #
-# #
-#---############################################################################
-
-$T2H_L2H = &l2h_FinishToLatex if ($T2H_L2H);
-$T2H_L2H = &l2h_ToHtml if ($T2H_L2H);
-$T2H_L2H = &l2h_InitFromHtml if ($T2H_L2H);
-
-# fix node2up, node2prev, node2next, if desired
-if ($has_top_command)
-{
- for $section (keys %sec2number)
- {
- $node = $sec2node{$section};
- $node2up{$node} = Sec2UpNode($section) unless $node2up{$node};
- $node2prev{$node} = Sec2PrevNode($section) unless $node2prev{$node};
- $node2next{$node} = Sec2NextNode($section) unless $node2next{$node};
- }
-}
-
-# prepare %T2H_THISDOC
-$T2H_THISDOC{fulltitle} = $value{'_title'} || $value{'_settitle'} || "Untitled Document";
-$T2H_THISDOC{title} = $value{'_settitle'} || $T2H_THISDOC{fulltitle};
-$T2H_THISDOC{author} = $value{'_author'};
-$T2H_THISDOC{subtitle} = $value{'_subtitle'};
-$T2H_THISDOC{shorttitle} = $value{'_shorttitle'};
-for $key (keys %T2H_THISDOC)
-{
- $_ = &substitute_style($T2H_THISDOC{$key});
- &unprotect_texi;
- s/\s*$//;
- $T2H_THISDOC{$key} = $_;
-}
-
-# if no sections, then simply print document as is
-unless (@sections)
-{
- print "# Writing content into $docu_top_file \n" if $T2H_VERBOSE;
- open(FILE, "> $docu_top_file")
- || die "$ERROR: Can't open $docu_top_file for writing: $!\n";
-
- &$T2H_print_page_head(\*FILE);
- $T2H_THIS_SECTION = \@doc_lines;
- t2h_print_lines(\*FILE);
- &$T2H_print_foot_navigation(\*FILE);
- &$T2H_print_page_foot(\*FILE);
- close(FILE);
- goto Finish;
-}
-
-# initialize $T2H_HREF, $T2H_NAME
-%T2H_HREF =
- (
- 'First' , sec_href($sections[0]),
- 'Last', sec_href($sections[$#sections]),
- 'About', $docu_about. '#SEC_About',
- );
-
-# prepare TOC, OVERVIEW, TOP
-$T2H_TOC = \@toc_lines;
-$T2H_OVERVIEW = \@stoc_lines;
-if ($has_top)
-{
- while (1)
- {
- $_ = shift @doc_lines;
- last if /$TOPEND/;
- push @$T2H_TOP, $_;
- }
- $T2H_HREF{'Top'} = $docu_top . '#SEC_Top';
-}
-else
-{
- $T2H_HREF{'Top'} = $T2H_HREF{First};
-}
-
-$node2href{Top} = $T2H_HREF{Top};
-$T2H_HREF{Contents} = $docu_toc.'#SEC_Contents' if @toc_lines;
-$T2H_HREF{Overview} = $docu_stoc.'#SEC_OVERVIEW' if @stoc_lines;
-
-# settle on index
-if ($T2H_INDEX_CHAPTER)
-{
- $T2H_HREF{Index} = $node2href{normalise_node($T2H_INDEX_CHAPTER)};
- warn "$ERROR T2H_INDEX_CHAPTER '$T2H_INDEX_CHAPTER' not found\n"
- unless $T2H_HREF{Index};
-}
-if (! $T2H_HREF{Index} && $first_index_chapter)
-{
- $T2H_INDEX_CHAPTER = $first_index_chapter;
- $T2H_HREF{Index} = $node2href{$T2H_INDEX_CHAPTER};
-}
-
-print "# Using '" . clean_name($T2H_INDEX_CHAPTER) . "' as index page\n"
- if ($T2H_VERBOSE && $T2H_HREF{Index});
-
-%T2H_NAME =
- (
- 'First', clean_name($sec2node{$sections[0]}),
- 'Last', clean_name($sec2node{$sections[$#sections]}),
- 'About', $T2H_WORDS->{$T2H_LANG}->{'About_Title'},
- 'Contents', $T2H_WORDS->{$T2H_LANG}->{'ToC_Title'},
- 'Overview', $T2H_WORDS->{$T2H_LANG}->{'Overview_Title'},
- 'Index' , clean_name($T2H_INDEX_CHAPTER),
- 'Top', clean_name($T2H_TOP_HEADING || $T2H_THISDOC{'title'} || $T2H_THISDOC{'shorttitle'}),
- );
-
-#############################################################################
-# print frame and frame toc file
-#
-if ( $T2H_FRAMES )
-{
- open(FILE, "> $docu_frame_file")
- || die "$ERROR: Can't open $docu_frame_file for writing: $!\n";
- print "# Creating frame in $docu_frame_file ...\n" if $T2H_VERBOSE;
- &$T2H_print_frame(\*FILE);
- close(FILE);
-
- open(FILE, "> $docu_toc_frame_file")
- || die "$ERROR: Can't open $docu_toc_frame_file for writing: $!\n";
- print "# Creating toc frame in $docu_frame_file ...\n" if $T2H_VERBOSE;
- &$T2H_print_toc_frame(\*FILE);
- close(FILE);
-}
-
-
-#############################################################################
-# print Top
-#
-open(FILE, "> $docu_top_file")
- || die "$ERROR: Can't open $docu_top_file for writing: $!\n";
-&$T2H_print_page_head(\*FILE) unless ($T2H_SPLIT);
-
-if ($has_top)
-{
- print "# Creating Top in $docu_top_file ...\n" if $T2H_VERBOSE;
- $T2H_THIS_SECTION = $T2H_TOP;
- $T2H_HREF{This} = $T2H_HREF{Top};
- $T2H_NAME{This} = $T2H_NAME{Top};
- &$T2H_print_Top(\*FILE);
-}
-
-close(FILE) if $T2H_SPLIT;
-
-#############################################################################
-# Print sections
-#
-$T2H_NODE{Forward} = $sec2node{$sections[0]};
-$T2H_NAME{Forward} = &clean_name($sec2node{$sections[0]});
-$T2H_HREF{Forward} = sec_href($sections[0]);
-$T2H_NODE{This} = 'Top';
-$T2H_NAME{This} = $T2H_NAME{Top};
-$T2H_HREF{This} = $T2H_HREF{Top};
-if ($T2H_SPLIT)
-{
- print "# writing " . scalar(@sections) .
- " sections in $docu_rdir$docu_name"."_[1..$doc_num]"
- if $T2H_VERBOSE;
- $previous = ($T2H_SPLIT eq 'chapter' ? $CHAPTEREND : $SECTIONEND);
- undef $FH;
- $doc_num = 0;
-}
-else
-{
- print "# writing " . scalar(@sections) . " sections in $docu_top_file ..."
- if $T2H_VERBOSE;
- $FH = \*FILE;
- $previous = '';
-}
-
-$counter = 0;
-# loop through sections
-while ($section = shift(@sections))
-{
- if ($T2H_SPLIT && ($T2H_SPLIT eq 'section' || $previous eq $CHAPTEREND))
- {
- if ($FH)
- {
- #close previous page
- &$T2H_print_chapter_footer($FH) if $T2H_SPLIT eq 'chapter';
- &$T2H_print_page_foot($FH);
- close($FH);
- undef $FH;
- }
- }
- $T2H_NAME{Back} = $T2H_NAME{This};
- $T2H_HREF{Back} = $T2H_HREF{This};
- $T2H_NODE{Back} = $T2H_NODE{This};
- $T2H_NAME{This} = $T2H_NAME{Forward};
- $T2H_HREF{This} = $T2H_HREF{Forward};
- $T2H_NODE{This} = $T2H_NODE{Forward};
- if ($sections[0])
- {
- $T2H_NODE{Forward} = $sec2node{$sections[0]};
- $T2H_NAME{Forward} = &clean_name($T2H_NODE{Forward});
- $T2H_HREF{Forward} = sec_href($sections[0]);
- }
- else
- {
- undef $T2H_HREF{Forward}, $T2H_NODE{Forward}, $T2H_NAME{Forward};
- }
-
- $node = $node2up{$T2H_NODE{This}};
- $T2H_HREF{Up} = $node2href{$node};
- if ($T2H_HREF{Up} eq $T2H_HREF{This} || ! $T2H_HREF{Up})
- {
- $T2H_NAME{Up} = $T2H_NAME{Top};
- $T2H_HREF{Up} = $T2H_HREF{Top};
- $T2H_NODE{Up} = 'Up';
- }
- else
- {
- $T2H_NAME{Up} = &clean_name($node);
- $T2H_NODE{Up} = $node;
- }
-
- $node = $T2H_NODE{This};
- $node = $node2prev{$node};
- $T2H_NAME{Prev} = &clean_name($node);
- $T2H_HREF{Prev} = $node2href{$node};
- $T2H_NODE{Prev} = $node;
-
- $node = $T2H_NODE{This};
- if ($node2up{$node} && $node2up{$node} ne 'Top'&&
- ($node2prev{$node} eq $T2H_NODE{Back} || ! $node2prev{$node}))
- {
- $node = $node2up{$node};
- while ($node && $node ne $node2up{$node} && ! $node2prev{$node})
- {
- $node = $node2up{$node};
- }
- $node = $node2prev{$node}
- unless $node2up{$node} eq 'Top' || ! $node2up{$node};
- }
- else
- {
- $node = $node2prev{$node};
- }
- $T2H_NAME{FastBack} = &clean_name($node);
- $T2H_HREF{FastBack} = $node2href{$node};
- $T2H_NODE{FastBack} = $node;
-
- $node = $T2H_NODE{This};
- $node = $node2next{$node};
- $T2H_NAME{Next} = &clean_name($node);
- $T2H_HREF{Next} = $node2href{$node};
- $T2H_NODE{Next} = $node;
-
- $node = $T2H_NODE{This};
- if ($node2up{$node} && $node2up{$node} ne 'Top'&&
- ($node2next{$node} eq $T2H_NODE{Forward} || ! $node2next{$node}))
- {
- $node = $node2up{$node};
- while ($node && $node ne $node2up{$node} && ! $node2next{$node})
- {
- $node = $node2up{$node};
- }
- }
- $node = $node2next{$node};
- $T2H_NAME{FastForward} = &clean_name($node);
- $T2H_HREF{FastForward} = $node2href{$node};
- $T2H_NODE{FastForward} = $node;
-
- if (! defined($FH))
- {
- my $file = $T2H_HREF{This};
- $file =~ s/\#.*$//;
- open(FILE, "> $docu_rdir$file") ||
- die "$ERROR: Can't open $docu_rdir$file for writing: $!\n";
- $FH = \*FILE;
- &$T2H_print_page_head($FH);
- t2h_print_label($FH);
- &$T2H_print_chapter_header($FH) if $T2H_SPLIT eq 'chapter';
- }
- else
- {
- t2h_print_label($FH);
- }
-
- $T2H_THIS_SECTION = [];
- while (@doc_lines) {
- $_ = shift(@doc_lines);
- last if ($_ eq $SECTIONEND || $_ eq $CHAPTEREND);
- push(@$T2H_THIS_SECTION, $_);
- }
- $previous = $_;
- &$T2H_print_section($FH);
-
- if ($T2H_VERBOSE)
- {
- $counter++;
- print "." if $counter =~ /00$/;
- }
-}
-if ($T2H_SPLIT)
-{
- &$T2H_print_chapter_footer($FH) if $T2H_SPLIT eq 'chapter';
- &$T2H_print_page_foot($FH);
- close($FH);
-}
-print "\n" if $T2H_VERBOSE;
-
-#############################################################################
-# Print ToC, Overview, Footnotes
-#
-undef $T2H_HREF{Prev};
-undef $T2H_HREF{Next};
-undef $T2H_HREF{Back};
-undef $T2H_HREF{Forward};
-undef $T2H_HREF{Up};
-
-if (@foot_lines)
-{
- print "# writing Footnotes in $docu_foot_file...\n" if $T2H_VERBOSE;
- open (FILE, "> $docu_foot_file") || die "$ERROR: Can't open $docu_foot_file for writing: $!\n"
- if $T2H_SPLIT;
- $T2H_HREF{This} = $docu_foot;
- $T2H_NAME{This} = $T2H_WORDS->{$T2H_LANG}->{'Footnotes_Title'};
- $T2H_THIS_SECTION = \@foot_lines;
- &$T2H_print_Footnotes(\*FILE);
- close(FILE) if $T2H_SPLIT;
-}
-
-if (@toc_lines)
-{
- print "# writing Toc in $docu_toc_file...\n" if $T2H_VERBOSE;
- open (FILE, "> $docu_toc_file") || die "$ERROR: Can't open $docu_toc_file for writing: $!\n"
- if $T2H_SPLIT;
- $T2H_HREF{This} = $T2H_HREF{Contents};
- $T2H_NAME{This} = $T2H_NAME{Contents};
- $T2H_THIS_SECTION = \@toc_lines;
- &$T2H_print_Toc(\*FILE);
- close(FILE) if $T2H_SPLIT;
-}
-
-if (@stoc_lines)
-{
- print "# writing Overview in $docu_stoc_file...\n" if $T2H_VERBOSE;
- open (FILE, "> $docu_stoc_file") || die "$ERROR: Can't open $docu_stoc_file for writing: $!\n"
- if $T2H_SPLIT;
-
- $T2H_HREF{This} = $T2H_HREF{Overview};
- $T2H_NAME{This} = $T2H_NAME{Overview};
- $T2H_THIS_SECTION = \@stoc_lines;
- unshift @$T2H_THIS_SECTION, "<BLOCKQUOTE>\n";
- push @$T2H_THIS_SECTION, "\n</BLOCKQUOTE>\n";
- &$T2H_print_Overview(\*FILE);
- close(FILE) if $T2H_SPLIT;
-}
-
-if ($about_body = &$T2H_about_body())
-{
- print "# writing About in $docu_about_file...\n" if $T2H_VERBOSE;
- open (FILE, "> $docu_about_file") || die "$ERROR: Can't open $docu_about_file for writing: $!\n"
- if $T2H_SPLIT;
-
- $T2H_HREF{This} = $T2H_HREF{About};
- $T2H_NAME{This} = $T2H_NAME{About};
- $T2H_THIS_SECTION = [$about_body];
- &$T2H_print_About(\*FILE);
- close(FILE) if $T2H_SPLIT;
-}
-
-unless ($T2H_SPLIT)
-{
- &$T2H_print_page_foot(\*FILE);
- close (FILE);
-}
-
-Finish:
-&l2h_FinishFromHtml if ($T2H_L2H);
-&l2h_Finish if($T2H_L2H);
-print "# that's all folks\n" if $T2H_VERBOSE;
-
-exit(0);
-
-#+++############################################################################
-# #
-# Low level functions #
-# #
-#---############################################################################
-
-sub LocateIncludeFile
-{
- my $file = shift;
- my $dir;
-
- return $file if (-e $file && -r $file);
- foreach $dir (@T2H_INCLUDE_DIRS)
- {
- return "$dir/$file" if (-e "$dir/$file" && -r "$dir/$file");
- }
- return undef;
-}
-
-sub clean_name
-{
- local ($_);
- $_ = &remove_style($_[0]);
- &unprotect_texi;
- return $_;
-}
-
-sub update_sec_num {
- local($name, $level) = @_;
- my $ret;
-
- $level--; # here we start at 0
- if ($name =~ /^appendix/ || defined(@appendix_sec_num)) {
- # appendix style
- if (defined(@appendix_sec_num)) {
- &incr_sec_num($level, @appendix_sec_num);
- } else {
- @appendix_sec_num = ('A', 0, 0, 0);
- }
- $ret = join('.', @appendix_sec_num[0..$level]);
- } else {
- # normal style
- if (defined(@normal_sec_num))
- {
- &incr_sec_num($level, @normal_sec_num);
- }
- else
- {
- @normal_sec_num = (1, 0, 0, 0);
- }
- $ret = join('.', @normal_sec_num[0..$level]);
- }
-
- $ret .= "." if $level == 0;
- return $ret;
-}
-
-sub incr_sec_num {
- local($level, $l);
- $level = shift(@_);
- $_[$level]++;
- foreach $l ($level+1 .. 3) {
- $_[$l] = 0;
- }
-}
-
-sub Sec2UpNode
-{
- my $sec = shift;
- my $num = $sec2number{$sec};
-
- return '' unless $num;
- return 'Top' unless $num =~ /\.\d+/;
- $num =~ s/\.[^\.]*$//;
- $num = $num . '.' unless $num =~ /\./;
- return $sec2node{$number2sec{$num}};
-}
-
-sub Sec2PrevNode
-{
- my $sec = shift;
- my $num = $sec2number{$sec};
- my ($i, $post);
-
- if ($num =~ /(\w+)(\.$|$)/)
- {
- $num = $`;
- $i = $1;
- $post = $2;
- if ($i eq 'A')
- {
- $i = $normal_sec_num[0];
- }
- elsif ($i ne '1')
- {
- # unfortunately, -- operator is not magical
- $i = chr(ord($i) + 1);
- }
- else
- {
- return '';
- }
- return $sec2node{$number2sec{$num . $i . $post}}
- }
- return '';
-}
-
-sub Sec2NextNode
-{
- my $sec = shift;
- my $num = $sec2number{$sec};
- my $i;
-
- if ($num =~ /(\w+)(\.$|$)/)
- {
- $num = $`;
- $i = $1;
- $post = $2;
- if ($post eq '.' && $i eq $normal_sec_num[0])
- {
- $i = 'A';
- }
- else
- {
- $i++;
- }
- return $sec2node{$number2sec{$num . $i . $post}}
- }
- return '';
-}
-
-sub check {
- local($_, %seen, %context, $before, $match, $after);
-
- while (<>) {
- if (/\@(\*|\.|\:|\@|\{|\})/) {
- $seen{$&}++;
- $context{$&} .= "> $_" if $T2H_VERBOSE;
- $_ = "$`XX$'";
- redo;
- }
- if (/\@(\w+)/) {
- ($before, $match, $after) = ($`, $&, $');
- if ($before =~ /\b[\w-]+$/ && $after =~ /^[\w-.]*\b/) { # e-mail address
- $seen{'e-mail address'}++;
- $context{'e-mail address'} .= "> $_" if $T2H_VERBOSE;
- } else {
- $seen{$match}++;
- $context{$match} .= "> $_" if $T2H_VERBOSE;
- }
- $match =~ s/^\@/X/;
- $_ = "$before$match$after";
- redo;
- }
- }
-
- foreach (sort(keys(%seen))) {
- if ($T2H_VERBOSE) {
- print "$_\n";
- print $context{$_};
- } else {
- print "$_ ($seen{$_})\n";
- }
- }
-}
-
-sub open {
- local($name) = @_;
-
- ++$fh_name;
- if (open($fh_name, $name)) {
- unshift(@fhs, $fh_name);
- } else {
- warn "$ERROR Can't read file $name: $!\n";
- }
-}
-
-sub init_input {
- @fhs = (); # hold the file handles to read
- @input_spool = (); # spooled lines to read
- $fh_name = 'FH000';
- &open($docu);
-}
-
-sub next_line {
- local($fh, $line);
-
- if (@input_spool) {
- $line = shift(@input_spool);
- return($line);
- }
- while (@fhs) {
- $fh = $fhs[0];
- $line = <$fh>;
- return($line) if $line;
- close($fh);
- shift(@fhs);
- }
- return(undef);
-}
-
-# used in pass 1, use &next_line
-sub skip_until {
- local($tag) = @_;
- local($_);
-
- while ($_ = &next_line) {
- return if /^\@end\s+$tag\s*$/;
- }
- die "* Failed to find '$tag' after: " . $lines[$#lines];
-}
-
-# used in pass 1 for l2h use &next_line
-sub string_until {
- local($tag) = @_;
- local($_, $string);
-
- while ($_ = &next_line) {
- return $string if /^\@end\s+$tag\s*$/;
-# $_ =~ s/hbox/mbox/g;
- $string = $string.$_;
- }
- die "* Failed to find '$tag' after: " . $lines[$#lines];
-}
-
-#
-# HTML stacking to have a better HTML output
-#
-
-sub html_reset {
- @html_stack = ('html');
- $html_element = 'body';
-}
-
-sub html_push {
- local($what) = @_;
- push(@html_stack, $html_element);
- $html_element = $what;
-}
-
-sub html_push_if {
- local($what) = @_;
- push(@html_stack, $html_element)
- if ($html_element && $html_element ne 'P');
- $html_element = $what;
-}
-
-sub html_pop {
- $html_element = pop(@html_stack);
-}
-
-sub html_pop_if {
- local($elt);
-
- if (@_) {
- foreach $elt (@_) {
- if ($elt eq $html_element) {
- $html_element = pop(@html_stack) if @html_stack;
- last;
- }
- }
- } else {
- $html_element = pop(@html_stack) if @html_stack;
- }
-}
-
-sub html_debug {
- local($what, $line) = @_;
- if ($T2H_DEBUG & $DEBUG_HTML)
- {
- $what = "\n" unless $what;
- return("<!-- $line @html_stack, $html_element -->$what")
- }
- return($what);
-}
-
-# to debug the output...
-sub debug {
- local($what, $line) = @_;
- return("<!-- $line -->$what")
- if $T2H_DEBUG & $DEBUG_HTML;
- return($what);
-}
-
-sub SimpleTexi2Html
-{
- local $_ = $_[0];
- &protect_texi;
- &protect_html;
- $_ = substitute_style($_);
- $_[0] = $_;
-}
-
-sub normalise_node {
- local $_ = $_[0];
- s/\s+/ /g;
- s/ $//;
- s/^ //;
- &protect_texi;
- &protect_html;
- $_ = substitute_style($_);
- $_[0] = $_;
-}
-
-sub menu_entry
-{
- my ($node, $name, $descr) = @_;
- my ($href, $entry);
-
- &normalise_node($node);
- $href = $node2href{$node};
- if ($href)
- {
- $descr =~ s/^\s+//;
- $descr =~ s/\s*$//;
- $descr = SimpleTexi2Html($descr);
- if ($T2H_NUMBER_SECTIONS && !$T2H_NODE_NAME_IN_MENU && $node2sec{$node})
- {
- $entry = $node2sec{$node};
- $name = '';
- }
- else
- {
- &normalise_node($name);
- $entry = ($name && ($name ne $node || ! $T2H_AVOID_MENU_REDUNDANCY)
- ? "$name : $node" : $node);
- }
-
- if ($T2H_AVOID_MENU_REDUNDANCY && $descr)
- {
- my $clean_entry = $entry;
- $clean_entry =~ s/^.*? // if ($clean_entry =~ /^([A-Z]|\d+)\.[\d\.]* /);
- $clean_entry =~ s/[^\w]//g;
- my $clean_descr = $descr;
- $clean_descr =~ s/[^\w]//g;
- $descr = '' if ($clean_entry eq $clean_descr)
- }
- push(@lines2,&debug('<TR><TD ALIGN="left" VALIGN="TOP">' .
- &t2h_anchor('', $href, $entry) .
- '</TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">' .
- $descr .
- "</TD></TR>\n", __LINE__));
- }
- elsif ($node =~ /^\(.*\)\w+/)
- {
- push(@lines2,&debug('<TR><TD ALIGN="left" VALIGN="TOP">' .
- $entry .
- '</TD><TD ALIGN="left" VALIGN="TOP">' . $descr .
- "</TD></TR>\n", __LINE__))
- }
- else
- {
- warn "$ERROR Undefined node of menu_entry ($node): $_";
- }
-}
-
-sub do_ctrl { "^$_[0]" }
-
-sub do_email {
- local($addr, $text) = split(/,\s*/, $_[0]);
-
- $text = $addr unless $text;
- &t2h_anchor('', "mailto:$addr", $text);
-}
-
-sub do_sc
-{
- # l2h does this much better
- return &l2h_ToLatex("{\\sc ".&unprotect_html($_[0])."}") if ($T2H_L2H);
- return "\U$_[0]\E";
-}
-
-sub do_math
-{
- return &l2h_ToLatex("\$".&unprotect_html($_[0])."\$") if ($T2H_L2H);
- return "<EM>".$text."</EM>";
-}
-
-sub do_uref {
- local($url, $text, $only_text) = split(/,\s*/, $_[0]);
-
- $text = $only_text if $only_text;
- $text = $url unless $text;
- &t2h_anchor('', $url, $text);
-}
-
-sub do_url { &t2h_anchor('', $_[0], $_[0]) }
-
-sub do_acronym
-{
- return '<FONT SIZE="-1">' . $_[0] . '</FONT>';
-}
-
-sub do_accent
-{
- return "&$_[0]acute;" if $_[1] eq 'H';
- return "$_[0]." if $_[1] eq 'dotaccent';
- return "$_[0]*" if $_[1] eq 'ringaccent';
- return "$_[0]".'[' if $_[1] eq 'tieaccent';
- return "$_[0]".'(' if $_[1] eq 'u';
- return "$_[0]_" if $_[1] eq 'ubaraccent';
- return ".$_[0]" if $_[1] eq 'udotaccent';
- return "$_[0]&lt;" if $_[1] eq 'v';
- return "&$_[0]cedil;" if $_[1] eq ',';
- return "$_[0]" if $_[1] eq 'dotless';
- return undef;
-}
-
-sub apply_style {
- local($texi_style, $text) = @_;
- local($style);
-
- $style = $style_map{$texi_style};
- if (defined($style)) { # known style
- if ($style =~ /^\"/) { # add quotes
- $style = $';
- $text = "\`$text\'";
- }
- if ($style =~ /^\&/) { # custom
- $style = $';
- $text = &$style($text, $texi_style);
- } elsif ($style) { # good style
- $text = "<$style>$text</$style>";
- } else { # no style
- }
- } else { # unknown style
- $text = undef;
- }
- return($text);
-}
-
-# remove Texinfo styles
-sub remove_style {
- local($_) = @_;
- 1 while(s/\@\w+{([^\{\}]+)}/$1/g);
- return($_);
-}
-
-sub remove_things
-{
- local ($_) = @_;
- s|\@(\w+)\{\}|$1|g;
- return $_;
-}
-
-sub substitute_style {
- local($_) = @_;
- local($changed, $done, $style, $text);
-
- &simple_substitutions;
- $changed = 1;
- while ($changed) {
- $changed = 0;
- $done = '';
- while (/\@(\w+){([^\{\}]+)}/ || /\@(,){([^\{\}]+)}/) {
- $text = &apply_style($1, $2);
- if ($text) {
- $_ = "$`$text$'";
- $changed = 1;
- } else {
- $done .= "$`\@$1";
- $_ = "{$2}$'";
- }
- }
- $_ = $done . $_;
- }
- return($_);
-}
-
-sub t2h_anchor {
- local($name, $href, $text, $newline, $extra_attribs) = @_;
- local($result);
-
- $result = "<A";
- $result .= " NAME=\"$name\"" if $name;
- if ($href)
- {
- $href =~ s|^$T2H_HREF_DIR_INSTEAD_FILE|./|
- if ($T2H_HREF_DIR_INSTEAD_FILE);
- $result .= ($href =~ /\"/ ? " HREF='$href'" : " HREF=\"$href\"");
- }
- $result .= " $extra_attribs" if $extra_attribs;
- $result .= ">$text</A>";
- $result .= "\n" if $newline;
- return($result);
-}
-
-sub pretty_date {
- local(@MoY, $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst);
-
- @MoY = ('January', 'February', 'March', 'April', 'May', 'June',
- 'July', 'August', 'September', 'October', 'November', 'December');
- ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time);
- $year += ($year < 70) ? 2000 : 1900;
- # obachman: Let's do it as the Americans do
- return("$MoY[$mon], $mday $year");
-}
-
-sub doc_href {
- local($num) = @_;
-
- return("${docu_name}_$num.$docu_ext");
-}
-
-sub sec_href
-{
- return $node2href{$sec2node{$_[0]}};
-}
-
-sub next_doc {
- $docu_doc = &doc_href(++$doc_num);
-}
-
-sub t2h_print_lines {
- my ($fh, $lines) = @_;
- local($_);
- $lines = $T2H_THIS_SECTION unless $lines;
- my $cnt = 0;
- for (@$lines)
- {
- $_ = l2h_FromHtml($_) if ($T2H_L2H);
- if (/^$PROTECTTAG/o) {
- $_ = $tag2pro{$_};
- } else {
- &unprotect_texi;
- }
- print $fh $_;
- $cnt += split(/\W*\s+\W*/);
- }
- return $cnt;
-}
-
-sub protect_texi {
- # protect @ { } ` '
- s/\@\@/$;0/go;
- s/\@\{/$;1/go;
- s/\@\}/$;2/go;
- s/\@\`/$;3/go;
- s/\@\'/$;4/go;
-}
-
-sub protect_html {
- local($what) = @_;
- # protect & < >
- $what =~ s/\&/\&\#38;/g;
- $what =~ s/\</\&\#60;/g;
- $what =~ s/\>/\&\#62;/g;
- # restore anything in quotes
- # this fixes my problem where I had:
- # < IMG SRC="leftarrow.gif" ALT="<--" > but what if I wanted &#60; in my ALT text ??
- # maybe byte stuffing or some other technique should be used.
- $what =~ s/\"([^\&]+)\&\#60;(.*)\"/"$1<$2"/g;
- $what =~ s/\"([^\&]+)\&\#62;(.*)\"/"$1>$2"/g;
- $what =~ s/\"([^\&]+)\&\#38;(.*)\"/"$1&$2"/g;
- # but recognize some HTML things
- $what =~ s/\&\#60;\/A\&\#62;/<\/A>/g; # </A>
- $what =~ s/\&\#60;A ([^\&]+)\&\#62;/<A $1>/g; # <A [^&]+>
- $what =~ s/\&\#60;IMG ([^\&]+)\&\#62;/<IMG $1>/g; # <IMG [^&]+>
- return($what);
-}
-
-sub unprotect_texi {
- s/$;0/\@/go;
- s/$;1/\{/go;
- s/$;2/\}/go;
- s/$;3/\`/go;
- s/$;4/\'/go;
-}
-
-sub Unprotect_texi
-{
- local $_ = shift;
- &unprotect_texi;
- return($_);
-}
-
-sub unprotect_html {
- local($what) = @_;
- $what =~ s/\&\#38;/\&/g;
- $what =~ s/\&\#60;/\</g;
- $what =~ s/\&\#62;/\>/g;
- return($what);
-}
-
-sub t2h_print_label
-{
- my $fh = shift;
- my $href = shift || $T2H_HREF{This};
- $href =~ s/.*#(.*)$/$1/;
- print $fh qq{<A NAME="$href"></A>\n};
-}
-
-##############################################################################
-
- # These next few lines are legal in both Perl and nroff.
-
-.00 ; # finish .ig
-
-'di \" finish diversion--previous line must be blank
-.nr nl 0-1 \" fake up transition to first page again
-.nr % 0 \" start at page 1
-'; __END__ ############# From here on it's a standard manual page ############
-.so /usr/local/man/man1/texi2html.1
diff --git a/readline-4.3.orig/doc/texinfo.tex b/readline-4.3.orig/doc/texinfo.tex
deleted file mode 100644
index c49af9f..0000000
--- a/readline-4.3.orig/doc/texinfo.tex
+++ /dev/null
@@ -1,5992 +0,0 @@
-% texinfo.tex -- TeX macros to handle Texinfo files.
-%
-% Load plain if necessary, i.e., if running under initex.
-\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
-%
-\def\texinfoversion{1999-09-25.10}
-%
-% Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99
-% Free Software Foundation, Inc.
-%
-% This texinfo.tex file is free software; you can redistribute it and/or
-% modify it under the terms of the GNU General Public License as
-% published by the Free Software Foundation; either version 2, or (at
-% your option) any later version.
-%
-% This texinfo.tex file is distributed in the hope that it will be
-% useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-% of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-% General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with this texinfo.tex file; see the file COPYING. If not, write
-% to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-% Boston, MA 02111-1307, USA.
-%
-% In other words, you are welcome to use, share and improve this program.
-% You are forbidden to forbid anyone else to use, share and improve
-% what you give them. Help stamp out software-hoarding!
-%
-% Please try the latest version of texinfo.tex before submitting bug
-% reports; you can get the latest version from:
-% ftp://ftp.gnu.org/gnu/texinfo.tex
-% (and all GNU mirrors, see http://www.gnu.org/order/ftp.html)
-% ftp://texinfo.org/tex/texinfo.tex
-% ftp://us.ctan.org/macros/texinfo/texinfo.tex
-% (and all CTAN mirrors, finger ctan@us.ctan.org for a list).
-% /home/gd/gnu/doc/texinfo.tex on the GNU machines.
-% The texinfo.tex in any given Texinfo distribution could well be out
-% of date, so if that's what you're using, please check.
-% Texinfo has a small home page at http://texinfo.org/.
-%
-% Send bug reports to bug-texinfo@gnu.org. Please include including a
-% complete document in each bug report with which we can reproduce the
-% problem. Patches are, of course, greatly appreciated.
-%
-% To process a Texinfo manual with TeX, it's most reliable to use the
-% texi2dvi shell script that comes with the distribution. For a simple
-% manual foo.texi, however, you can get away with this:
-% tex foo.texi
-% texindex foo.??
-% tex foo.texi
-% tex foo.texi
-% dvips foo.dvi -o # or whatever, to process the dvi file; this makes foo.ps.
-% The extra runs of TeX get the cross-reference information correct.
-% Sometimes one run after texindex suffices, and sometimes you need more
-% than two; texi2dvi does it as many times as necessary.
-%
-% It is possible to adapt texinfo.tex for other languages. You can get
-% the existing language-specific files from ftp://ftp.gnu.org/gnu/texinfo/.
-
-\message{Loading texinfo [version \texinfoversion]:}
-
-% If in a .fmt file, print the version number
-% and turn on active characters that we couldn't do earlier because
-% they might have appeared in the input file name.
-\everyjob{\message{[Texinfo version \texinfoversion]}%
- \catcode`+=\active \catcode`\_=\active}
-
-% Save some parts of plain tex whose names we will redefine.
-\let\ptexb=\b
-\let\ptexbullet=\bullet
-\let\ptexc=\c
-\let\ptexcomma=\,
-\let\ptexdot=\.
-\let\ptexdots=\dots
-\let\ptexend=\end
-\let\ptexequiv=\equiv
-\let\ptexexclam=\!
-\let\ptexi=\i
-\let\ptexlbrace=\{
-\let\ptexrbrace=\}
-\let\ptexstar=\*
-\let\ptext=\t
-
-% We never want plain's outer \+ definition in Texinfo.
-% For @tex, we can use \tabalign.
-\let\+ = \relax
-
-\message{Basics,}
-\chardef\other=12
-
-% If this character appears in an error message or help string, it
-% starts a new line in the output.
-\newlinechar = `^^J
-
-% Set up fixed words for English if not already set.
-\ifx\putwordAppendix\undefined \gdef\putwordAppendix{Appendix}\fi
-\ifx\putwordChapter\undefined \gdef\putwordChapter{Chapter}\fi
-\ifx\putwordfile\undefined \gdef\putwordfile{file}\fi
-\ifx\putwordin\undefined \gdef\putwordin{in}\fi
-\ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi
-\ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi
-\ifx\putwordInfo\undefined \gdef\putwordInfo{Info}\fi
-\ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi
-\ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi
-\ifx\putwordNoTitle\undefined \gdef\putwordNoTitle{No Title}\fi
-\ifx\putwordof\undefined \gdef\putwordof{of}\fi
-\ifx\putwordon\undefined \gdef\putwordon{on}\fi
-\ifx\putwordpage\undefined \gdef\putwordpage{page}\fi
-\ifx\putwordsection\undefined \gdef\putwordsection{section}\fi
-\ifx\putwordSection\undefined \gdef\putwordSection{Section}\fi
-\ifx\putwordsee\undefined \gdef\putwordsee{see}\fi
-\ifx\putwordSee\undefined \gdef\putwordSee{See}\fi
-\ifx\putwordShortTOC\undefined \gdef\putwordShortTOC{Short Contents}\fi
-\ifx\putwordTOC\undefined \gdef\putwordTOC{Table of Contents}\fi
-%
-\ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi
-\ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi
-\ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi
-\ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi
-\ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi
-\ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi
-\ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi
-\ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi
-\ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi
-\ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi
-\ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi
-\ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi
-%
-\ifx\putwordDefmac\undefined \gdef\putwordDefmac{Macro}\fi
-\ifx\putwordDefspec\undefined \gdef\putwordDefspec{Special Form}\fi
-\ifx\putwordDefvar\undefined \gdef\putwordDefvar{Variable}\fi
-\ifx\putwordDefopt\undefined \gdef\putwordDefopt{User Option}\fi
-\ifx\putwordDeftypevar\undefined\gdef\putwordDeftypevar{Variable}\fi
-\ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi
-\ifx\putwordDeftypefun\undefined\gdef\putwordDeftypefun{Function}\fi
-
-% Ignore a token.
-%
-\def\gobble#1{}
-
-\hyphenation{ap-pen-dix}
-\hyphenation{mini-buf-fer mini-buf-fers}
-\hyphenation{eshell}
-\hyphenation{white-space}
-
-% Margin to add to right of even pages, to left of odd pages.
-\newdimen \bindingoffset
-\newdimen \normaloffset
-\newdimen\pagewidth \newdimen\pageheight
-
-% Sometimes it is convenient to have everything in the transcript file
-% and nothing on the terminal. We don't just call \tracingall here,
-% since that produces some useless output on the terminal.
-%
-\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}%
-\ifx\eTeXversion\undefined
-\def\loggingall{\tracingcommands2 \tracingstats2
- \tracingpages1 \tracingoutput1 \tracinglostchars1
- \tracingmacros2 \tracingparagraphs1 \tracingrestores1
- \showboxbreadth\maxdimen\showboxdepth\maxdimen
-}%
-\else
-\def\loggingall{\tracingcommands3 \tracingstats2
- \tracingpages1 \tracingoutput1 \tracinglostchars1
- \tracingmacros2 \tracingparagraphs1 \tracingrestores1
- \tracingscantokens1 \tracingassigns1 \tracingifs1
- \tracinggroups1 \tracingnesting2
- \showboxbreadth\maxdimen\showboxdepth\maxdimen
-}%
-\fi
-
-% For @cropmarks command.
-% Do @cropmarks to get crop marks.
-%
-\newif\ifcropmarks
-\let\cropmarks = \cropmarkstrue
-%
-% Dimensions to add cropmarks at corners.
-% Added by P. A. MacKay, 12 Nov. 1986
-%
-\newdimen\outerhsize \newdimen\outervsize % set by the paper size routines
-\newdimen\cornerlong \cornerlong=1pc
-\newdimen\cornerthick \cornerthick=.3pt
-\newdimen\topandbottommargin \topandbottommargin=.75in
-
-% Main output routine.
-\chardef\PAGE = 255
-\output = {\onepageout{\pagecontents\PAGE}}
-
-\newbox\headlinebox
-\newbox\footlinebox
-
-% \onepageout takes a vbox as an argument. Note that \pagecontents
-% does insertions, but you have to call it yourself.
-\def\onepageout#1{%
- \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi
- %
- \ifodd\pageno \advance\hoffset by \bindingoffset
- \else \advance\hoffset by -\bindingoffset\fi
- %
- % Do this outside of the \shipout so @code etc. will be expanded in
- % the headline as they should be, not taken literally (outputting ''code).
- \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}%
- \setbox\footlinebox = \vbox{\let\hsize=\pagewidth \makefootline}%
- %
- {%
- % Have to do this stuff outside the \shipout because we want it to
- % take effect in \write's, yet the group defined by the \vbox ends
- % before the \shipout runs.
- %
- \escapechar = `\\ % use backslash in output files.
- \indexdummies % don't expand commands in the output.
- \normalturnoffactive % \ in index entries must not stay \, e.g., if
- % the page break happens to be in the middle of an example.
- \shipout\vbox{%
- \ifcropmarks \vbox to \outervsize\bgroup
- \hsize = \outerhsize
- \vskip-\topandbottommargin
- \vtop to0pt{%
- \line{\ewtop\hfil\ewtop}%
- \nointerlineskip
- \line{%
- \vbox{\moveleft\cornerthick\nstop}%
- \hfill
- \vbox{\moveright\cornerthick\nstop}%
- }%
- \vss}%
- \vskip\topandbottommargin
- \line\bgroup
- \hfil % center the page within the outer (page) hsize.
- \ifodd\pageno\hskip\bindingoffset\fi
- \vbox\bgroup
- \fi
- %
- \unvbox\headlinebox
- \pagebody{#1}%
- \ifdim\ht\footlinebox > 0pt
- % Only leave this space if the footline is nonempty.
- % (We lessened \vsize for it in \oddfootingxxx.)
- % The \baselineskip=24pt in plain's \makefootline has no effect.
- \vskip 2\baselineskip
- \unvbox\footlinebox
- \fi
- %
- \ifpdfmakepagedest \pdfmkdest{\the\pageno} \fi
- %
- \ifcropmarks
- \egroup % end of \vbox\bgroup
- \hfil\egroup % end of (centering) \line\bgroup
- \vskip\topandbottommargin plus1fill minus1fill
- \boxmaxdepth = \cornerthick
- \vbox to0pt{\vss
- \line{%
- \vbox{\moveleft\cornerthick\nsbot}%
- \hfill
- \vbox{\moveright\cornerthick\nsbot}%
- }%
- \nointerlineskip
- \line{\ewbot\hfil\ewbot}%
- }%
- \egroup % \vbox from first cropmarks clause
- \fi
- }% end of \shipout\vbox
- }% end of group with \turnoffactive
- \advancepageno
- \ifnum\outputpenalty>-20000 \else\dosupereject\fi
-}
-
-\newinsert\margin \dimen\margin=\maxdimen
-
-\def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}}
-{\catcode`\@ =11
-\gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi
-% marginal hacks, juha@viisa.uucp (Juha Takala)
-\ifvoid\margin\else % marginal info is present
- \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi
-\dimen@=\dp#1 \unvbox#1
-\ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi
-\ifr@ggedbottom \kern-\dimen@ \vfil \fi}
-}
-
-% Here are the rules for the cropmarks. Note that they are
-% offset so that the space between them is truly \outerhsize or \outervsize
-% (P. A. MacKay, 12 November, 1986)
-%
-\def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong}
-\def\nstop{\vbox
- {\hrule height\cornerthick depth\cornerlong width\cornerthick}}
-\def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong}
-\def\nsbot{\vbox
- {\hrule height\cornerlong depth\cornerthick width\cornerthick}}
-
-% Parse an argument, then pass it to #1. The argument is the rest of
-% the input line (except we remove a trailing comment). #1 should be a
-% macro which expects an ordinary undelimited TeX argument.
-%
-\def\parsearg#1{%
- \let\next = #1%
- \begingroup
- \obeylines
- \futurelet\temp\parseargx
-}
-
-% If the next token is an obeyed space (from an @example environment or
-% the like), remove it and recurse. Otherwise, we're done.
-\def\parseargx{%
- % \obeyedspace is defined far below, after the definition of \sepspaces.
- \ifx\obeyedspace\temp
- \expandafter\parseargdiscardspace
- \else
- \expandafter\parseargline
- \fi
-}
-
-% Remove a single space (as the delimiter token to the macro call).
-{\obeyspaces %
- \gdef\parseargdiscardspace {\futurelet\temp\parseargx}}
-
-{\obeylines %
- \gdef\parseargline#1^^M{%
- \endgroup % End of the group started in \parsearg.
- %
- % First remove any @c comment, then any @comment.
- % Result of each macro is put in \toks0.
- \argremovec #1\c\relax %
- \expandafter\argremovecomment \the\toks0 \comment\relax %
- %
- % Call the caller's macro, saved as \next in \parsearg.
- \expandafter\next\expandafter{\the\toks0}%
- }%
-}
-
-% Since all \c{,omment} does is throw away the argument, we can let TeX
-% do that for us. The \relax here is matched by the \relax in the call
-% in \parseargline; it could be more or less anything, its purpose is
-% just to delimit the argument to the \c.
-\def\argremovec#1\c#2\relax{\toks0 = {#1}}
-\def\argremovecomment#1\comment#2\relax{\toks0 = {#1}}
-
-% \argremovec{,omment} might leave us with trailing spaces, though; e.g.,
-% @end itemize @c foo
-% will have two active spaces as part of the argument with the
-% `itemize'. Here we remove all active spaces from #1, and assign the
-% result to \toks0.
-%
-% This loses if there are any *other* active characters besides spaces
-% in the argument -- _ ^ +, for example -- since they get expanded.
-% Fortunately, Texinfo does not define any such commands. (If it ever
-% does, the catcode of the characters in questionwill have to be changed
-% here.) But this means we cannot call \removeactivespaces as part of
-% \argremovec{,omment}, since @c uses \parsearg, and thus the argument
-% that \parsearg gets might well have any character at all in it.
-%
-\def\removeactivespaces#1{%
- \begingroup
- \ignoreactivespaces
- \edef\temp{#1}%
- \global\toks0 = \expandafter{\temp}%
- \endgroup
-}
-
-% Change the active space to expand to nothing.
-%
-\begingroup
- \obeyspaces
- \gdef\ignoreactivespaces{\obeyspaces\let =\empty}
-\endgroup
-
-
-\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next}
-
-%% These are used to keep @begin/@end levels from running away
-%% Call \inENV within environments (after a \begingroup)
-\newif\ifENV \ENVfalse \def\inENV{\ifENV\relax\else\ENVtrue\fi}
-\def\ENVcheck{%
-\ifENV\errmessage{Still within an environment; press RETURN to continue}
-\endgroup\fi} % This is not perfect, but it should reduce lossage
-
-% @begin foo is the same as @foo, for now.
-\newhelp\EMsimple{Press RETURN to continue.}
-
-\outer\def\begin{\parsearg\beginxxx}
-
-\def\beginxxx #1{%
-\expandafter\ifx\csname #1\endcsname\relax
-{\errhelp=\EMsimple \errmessage{Undefined command @begin #1}}\else
-\csname #1\endcsname\fi}
-
-% @end foo executes the definition of \Efoo.
-%
-\def\end{\parsearg\endxxx}
-\def\endxxx #1{%
- \removeactivespaces{#1}%
- \edef\endthing{\the\toks0}%
- %
- \expandafter\ifx\csname E\endthing\endcsname\relax
- \expandafter\ifx\csname \endthing\endcsname\relax
- % There's no \foo, i.e., no ``environment'' foo.
- \errhelp = \EMsimple
- \errmessage{Undefined command `@end \endthing'}%
- \else
- \unmatchedenderror\endthing
- \fi
- \else
- % Everything's ok; the right environment has been started.
- \csname E\endthing\endcsname
- \fi
-}
-
-% There is an environment #1, but it hasn't been started. Give an error.
-%
-\def\unmatchedenderror#1{%
- \errhelp = \EMsimple
- \errmessage{This `@end #1' doesn't have a matching `@#1'}%
-}
-
-% Define the control sequence \E#1 to give an unmatched @end error.
-%
-\def\defineunmatchedend#1{%
- \expandafter\def\csname E#1\endcsname{\unmatchedenderror{#1}}%
-}
-
-
-% Single-spacing is done by various environments (specifically, in
-% \nonfillstart and \quotations).
-\newskip\singlespaceskip \singlespaceskip = 12.5pt
-\def\singlespace{%
- % Why was this kern here? It messes up equalizing space above and below
- % environments. --karl, 6may93
- %{\advance \baselineskip by -\singlespaceskip
- %\kern \baselineskip}%
- \setleading \singlespaceskip
-}
-
-%% Simple single-character @ commands
-
-% @@ prints an @
-% Kludge this until the fonts are right (grr).
-\def\@{{\tt\char64}}
-
-% This is turned off because it was never documented
-% and you can use @w{...} around a quote to suppress ligatures.
-%% Define @` and @' to be the same as ` and '
-%% but suppressing ligatures.
-%\def\`{{`}}
-%\def\'{{'}}
-
-% Used to generate quoted braces.
-\def\mylbrace {{\tt\char123}}
-\def\myrbrace {{\tt\char125}}
-\let\{=\mylbrace
-\let\}=\myrbrace
-\begingroup
- % Definitions to produce actual \{ & \} command in an index.
- \catcode`\{ = 12 \catcode`\} = 12
- \catcode`\[ = 1 \catcode`\] = 2
- \catcode`\@ = 0 \catcode`\\ = 12
- @gdef@lbracecmd[\{]%
- @gdef@rbracecmd[\}]%
-@endgroup
-
-% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent
-% Others are defined by plain TeX: @` @' @" @^ @~ @= @v @H.
-\let\, = \c
-\let\dotaccent = \.
-\def\ringaccent#1{{\accent23 #1}}
-\let\tieaccent = \t
-\let\ubaraccent = \b
-\let\udotaccent = \d
-
-% Other special characters: @questiondown @exclamdown
-% Plain TeX defines: @AA @AE @O @OE @L (and lowercase versions) @ss.
-\def\questiondown{?`}
-\def\exclamdown{!`}
-
-% Dotless i and dotless j, used for accents.
-\def\imacro{i}
-\def\jmacro{j}
-\def\dotless#1{%
- \def\temp{#1}%
- \ifx\temp\imacro \ptexi
- \else\ifx\temp\jmacro \j
- \else \errmessage{@dotless can be used only with i or j}%
- \fi\fi
-}
-
-% Be sure we're in horizontal mode when doing a tie, since we make space
-% equivalent to this in @example-like environments. Otherwise, a space
-% at the beginning of a line will start with \penalty -- and
-% since \penalty is valid in vertical mode, we'd end up putting the
-% penalty on the vertical list instead of in the new paragraph.
-{\catcode`@ = 11
- % Avoid using \@M directly, because that causes trouble
- % if the definition is written into an index file.
- \global\let\tiepenalty = \@M
- \gdef\tie{\leavevmode\penalty\tiepenalty\ }
-}
-
-% @: forces normal size whitespace following.
-\def\:{\spacefactor=1000 }
-
-% @* forces a line break.
-\def\*{\hfil\break\hbox{}\ignorespaces}
-
-% @. is an end-of-sentence period.
-\def\.{.\spacefactor=3000 }
-
-% @! is an end-of-sentence bang.
-\def\!{!\spacefactor=3000 }
-
-% @? is an end-of-sentence query.
-\def\?{?\spacefactor=3000 }
-
-% @w prevents a word break. Without the \leavevmode, @w at the
-% beginning of a paragraph, when TeX is still in vertical mode, would
-% produce a whole line of output instead of starting the paragraph.
-\def\w#1{\leavevmode\hbox{#1}}
-
-% @group ... @end group forces ... to be all on one page, by enclosing
-% it in a TeX vbox. We use \vtop instead of \vbox to construct the box
-% to keep its height that of a normal line. According to the rules for
-% \topskip (p.114 of the TeXbook), the glue inserted is
-% max (\topskip - \ht (first item), 0). If that height is large,
-% therefore, no glue is inserted, and the space between the headline and
-% the text is small, which looks bad.
-%
-\def\group{\begingroup
- \ifnum\catcode13=\active \else
- \errhelp = \groupinvalidhelp
- \errmessage{@group invalid in context where filling is enabled}%
- \fi
- %
- % The \vtop we start below produces a box with normal height and large
- % depth; thus, TeX puts \baselineskip glue before it, and (when the
- % next line of text is done) \lineskip glue after it. (See p.82 of
- % the TeXbook.) Thus, space below is not quite equal to space
- % above. But it's pretty close.
- \def\Egroup{%
- \egroup % End the \vtop.
- \endgroup % End the \group.
- }%
- %
- \vtop\bgroup
- % We have to put a strut on the last line in case the @group is in
- % the midst of an example, rather than completely enclosing it.
- % Otherwise, the interline space between the last line of the group
- % and the first line afterwards is too small. But we can't put the
- % strut in \Egroup, since there it would be on a line by itself.
- % Hence this just inserts a strut at the beginning of each line.
- \everypar = {\strut}%
- %
- % Since we have a strut on every line, we don't need any of TeX's
- % normal interline spacing.
- \offinterlineskip
- %
- % OK, but now we have to do something about blank
- % lines in the input in @example-like environments, which normally
- % just turn into \lisppar, which will insert no space now that we've
- % turned off the interline space. Simplest is to make them be an
- % empty paragraph.
- \ifx\par\lisppar
- \edef\par{\leavevmode \par}%
- %
- % Reset ^^M's definition to new definition of \par.
- \obeylines
- \fi
- %
- % Do @comment since we are called inside an environment such as
- % @example, where each end-of-line in the input causes an
- % end-of-line in the output. We don't want the end-of-line after
- % the `@group' to put extra space in the output. Since @group
- % should appear on a line by itself (according to the Texinfo
- % manual), we don't worry about eating any user text.
- \comment
-}
-%
-% TeX puts in an \escapechar (i.e., `@') at the beginning of the help
-% message, so this ends up printing `@group can only ...'.
-%
-\newhelp\groupinvalidhelp{%
-group can only be used in environments such as @example,^^J%
-where each line of input produces a line of output.}
-
-% @need space-in-mils
-% forces a page break if there is not space-in-mils remaining.
-
-\newdimen\mil \mil=0.001in
-
-\def\need{\parsearg\needx}
-
-% Old definition--didn't work.
-%\def\needx #1{\par %
-%% This method tries to make TeX break the page naturally
-%% if the depth of the box does not fit.
-%{\baselineskip=0pt%
-%\vtop to #1\mil{\vfil}\kern -#1\mil\nobreak
-%\prevdepth=-1000pt
-%}}
-
-\def\needx#1{%
- % Ensure vertical mode, so we don't make a big box in the middle of a
- % paragraph.
- \par
- %
- % If the @need value is less than one line space, it's useless.
- \dimen0 = #1\mil
- \dimen2 = \ht\strutbox
- \advance\dimen2 by \dp\strutbox
- \ifdim\dimen0 > \dimen2
- %
- % Do a \strut just to make the height of this box be normal, so the
- % normal leading is inserted relative to the preceding line.
- % And a page break here is fine.
- \vtop to #1\mil{\strut\vfil}%
- %
- % TeX does not even consider page breaks if a penalty added to the
- % main vertical list is 10000 or more. But in order to see if the
- % empty box we just added fits on the page, we must make it consider
- % page breaks. On the other hand, we don't want to actually break the
- % page after the empty box. So we use a penalty of 9999.
- %
- % There is an extremely small chance that TeX will actually break the
- % page at this \penalty, if there are no other feasible breakpoints in
- % sight. (If the user is using lots of big @group commands, which
- % almost-but-not-quite fill up a page, TeX will have a hard time doing
- % good page breaking, for example.) However, I could not construct an
- % example where a page broke at this \penalty; if it happens in a real
- % document, then we can reconsider our strategy.
- \penalty9999
- %
- % Back up by the size of the box, whether we did a page break or not.
- \kern -#1\mil
- %
- % Do not allow a page break right after this kern.
- \nobreak
- \fi
-}
-
-% @br forces paragraph break
-
-\let\br = \par
-
-% @dots{} output an ellipsis using the current font.
-% We do .5em per period so that it has the same spacing in a typewriter
-% font as three actual period characters.
-%
-\def\dots{%
- \leavevmode
- \hbox to 1.5em{%
- \hskip 0pt plus 0.25fil minus 0.25fil
- .\hss.\hss.%
- \hskip 0pt plus 0.5fil minus 0.5fil
- }%
-}
-
-% @enddots{} is an end-of-sentence ellipsis.
-%
-\def\enddots{%
- \leavevmode
- \hbox to 2em{%
- \hskip 0pt plus 0.25fil minus 0.25fil
- .\hss.\hss.\hss.%
- \hskip 0pt plus 0.5fil minus 0.5fil
- }%
- \spacefactor=3000
-}
-
-
-% @page forces the start of a new page
-%
-\def\page{\par\vfill\supereject}
-
-% @exdent text....
-% outputs text on separate line in roman font, starting at standard page margin
-
-% This records the amount of indent in the innermost environment.
-% That's how much \exdent should take out.
-\newskip\exdentamount
-
-% This defn is used inside fill environments such as @defun.
-\def\exdent{\parsearg\exdentyyy}
-\def\exdentyyy #1{{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break}}
-
-% This defn is used inside nofill environments such as @example.
-\def\nofillexdent{\parsearg\nofillexdentyyy}
-\def\nofillexdentyyy #1{{\advance \leftskip by -\exdentamount
-\leftline{\hskip\leftskip{\rm#1}}}}
-
-% @inmargin{TEXT} puts TEXT in the margin next to the current paragraph.
-
-\def\inmargin#1{%
-\strut\vadjust{\nobreak\kern-\strutdepth
- \vtop to \strutdepth{\baselineskip\strutdepth\vss
- \llap{\rightskip=\inmarginspacing \vbox{\noindent #1}}\null}}}
-\newskip\inmarginspacing \inmarginspacing=1cm
-\def\strutdepth{\dp\strutbox}
-
-%\hbox{{\rm#1}}\hfil\break}}
-
-% @include file insert text of that file as input.
-% Allow normal characters that we make active in the argument (a file name).
-\def\include{\begingroup
- \catcode`\\=12
- \catcode`~=12
- \catcode`^=12
- \catcode`_=12
- \catcode`|=12
- \catcode`<=12
- \catcode`>=12
- \catcode`+=12
- \parsearg\includezzz}
-% Restore active chars for included file.
-\def\includezzz#1{\endgroup\begingroup
- % Read the included file in a group so nested @include's work.
- \def\thisfile{#1}%
- \input\thisfile
-\endgroup}
-
-\def\thisfile{}
-
-% @center line outputs that line, centered
-
-\def\center{\parsearg\centerzzz}
-\def\centerzzz #1{{\advance\hsize by -\leftskip
-\advance\hsize by -\rightskip
-\centerline{#1}}}
-
-% @sp n outputs n lines of vertical space
-
-\def\sp{\parsearg\spxxx}
-\def\spxxx #1{\vskip #1\baselineskip}
-
-% @comment ...line which is ignored...
-% @c is the same as @comment
-% @ignore ... @end ignore is another way to write a comment
-
-\def\comment{\begingroup \catcode`\^^M=\other%
-\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other%
-\commentxxx}
-{\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}}
-
-\let\c=\comment
-
-% @paragraphindent NCHARS
-% We'll use ems for NCHARS, close enough.
-% We cannot implement @paragraphindent asis, though.
-%
-\def\asisword{asis} % no translation, these are keywords
-\def\noneword{none}
-%
-\def\paragraphindent{\parsearg\doparagraphindent}
-\def\doparagraphindent#1{%
- \def\temp{#1}%
- \ifx\temp\asisword
- \else
- \ifx\temp\noneword
- \defaultparindent = 0pt
- \else
- \defaultparindent = #1em
- \fi
- \fi
- \parindent = \defaultparindent
-}
-
-% @exampleindent NCHARS
-% We'll use ems for NCHARS like @paragraphindent.
-% It seems @exampleindent asis isn't necessary, but
-% I preserve it to make it similar to @paragraphindent.
-\def\exampleindent{\parsearg\doexampleindent}
-\def\doexampleindent#1{%
- \def\temp{#1}%
- \ifx\temp\asisword
- \else
- \ifx\temp\noneword
- \lispnarrowing = 0pt
- \else
- \lispnarrowing = #1em
- \fi
- \fi
-}
-
-% @asis just yields its argument. Used with @table, for example.
-%
-\def\asis#1{#1}
-
-% @math means output in math mode.
-% We don't use $'s directly in the definition of \math because control
-% sequences like \math are expanded when the toc file is written. Then,
-% we read the toc file back, the $'s will be normal characters (as they
-% should be, according to the definition of Texinfo). So we must use a
-% control sequence to switch into and out of math mode.
-%
-% This isn't quite enough for @math to work properly in indices, but it
-% seems unlikely it will ever be needed there.
-%
-\let\implicitmath = $
-\def\math#1{\implicitmath #1\implicitmath}
-
-% @bullet and @minus need the same treatment as @math, just above.
-\def\bullet{\implicitmath\ptexbullet\implicitmath}
-\def\minus{\implicitmath-\implicitmath}
-
-% @refill is a no-op.
-\let\refill=\relax
-
-% If working on a large document in chapters, it is convenient to
-% be able to disable indexing, cross-referencing, and contents, for test runs.
-% This is done with @novalidate (before @setfilename).
-%
-\newif\iflinks \linkstrue % by default we want the aux files.
-\let\novalidate = \linksfalse
-
-% @setfilename is done at the beginning of every texinfo file.
-% So open here the files we need to have open while reading the input.
-% This makes it possible to make a .fmt file for texinfo.
-\def\setfilename{%
- \iflinks
- \readauxfile
- \fi % \openindices needs to do some work in any case.
- \openindices
- \fixbackslash % Turn off hack to swallow `\input texinfo'.
- \global\let\setfilename=\comment % Ignore extra @setfilename cmds.
- %
- % If texinfo.cnf is present on the system, read it.
- % Useful for site-wide @afourpaper, etc.
- % Just to be on the safe side, close the input stream before the \input.
- \openin 1 texinfo.cnf
- \ifeof1 \let\temp=\relax \else \def\temp{\input texinfo.cnf }\fi
- \closein1
- \temp
- %
- \comment % Ignore the actual filename.
-}
-
-% Called from \setfilename.
-%
-\def\openindices{%
- \newindex{cp}%
- \newcodeindex{fn}%
- \newcodeindex{vr}%
- \newcodeindex{tp}%
- \newcodeindex{ky}%
- \newcodeindex{pg}%
-}
-
-% @bye.
-\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend}
-
-
-\message{pdf,}
-% adobe `portable' document format
-\newcount\tempnum
-\newcount\lnkcount
-\newtoks\filename
-\newcount\filenamelength
-\newcount\pgn
-\newtoks\toksA
-\newtoks\toksB
-\newtoks\toksC
-\newtoks\toksD
-\newbox\boxA
-\newcount\countA
-\newif\ifpdf
-\newif\ifpdfmakepagedest
-
-\ifx\pdfoutput\undefined
- \pdffalse
- \let\pdfmkdest = \gobble
- \let\pdfurl = \gobble
- \let\endlink = \relax
- \let\linkcolor = \relax
- \let\pdfmakeoutlines = \relax
-\else
- \pdftrue
- \pdfoutput = 1
- \input pdfcolor
- \def\dopdfimage#1#2#3{%
- \def\imagewidth{#2}%
- \def\imageheight{#3}%
- \ifnum\pdftexversion < 14
- \pdfimage
- \else
- \pdfximage
- \fi
- \ifx\empty\imagewidth\else width \imagewidth \fi
- \ifx\empty\imageheight\else height \imageheight \fi
- {#1.pdf}%
- \ifnum\pdftexversion < 14 \else
- \pdfrefximage \pdflastximage
- \fi}
- \def\pdfmkdest#1{\pdfdest name{#1@} xyz}
- \def\pdfmkpgn#1{#1@}
- \let\linkcolor = \Cyan
- \def\endlink{\Black\pdfendlink}
- % Adding outlines to PDF; macros for calculating structure of outlines
- % come from Petr Olsak
- \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0%
- \else \csname#1\endcsname \fi}
- \def\advancenumber#1{\tempnum=\expnumber{#1}\relax
- \advance\tempnum by1
- \expandafter\xdef\csname#1\endcsname{\the\tempnum}}
- \def\pdfmakeoutlines{{%
- \openin 1 \jobname.toc
- \ifeof 1\else\bgroup
- \closein 1
- \indexnofonts
- \def\tt{}
- % thanh's hack / proper braces in bookmarks
- \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace
- \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace
- %
- \def\chapentry ##1##2##3{}
- \def\unnumbchapentry ##1##2{}
- \def\secentry ##1##2##3##4{\advancenumber{chap##2}}
- \def\unnumbsecentry ##1##2{}
- \def\subsecentry ##1##2##3##4##5{\advancenumber{sec##2.##3}}
- \def\unnumbsubsecentry ##1##2{}
- \def\subsubsecentry ##1##2##3##4##5##6{\advancenumber{subsec##2.##3.##4}}
- \def\unnumbsubsubsecentry ##1##2{}
- \input \jobname.toc
- \def\chapentry ##1##2##3{%
- \pdfoutline goto name{\pdfmkpgn{##3}}count-\expnumber{chap##2}{##1}}
- \def\unnumbchapentry ##1##2{%
- \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}
- \def\secentry ##1##2##3##4{%
- \pdfoutline goto name{\pdfmkpgn{##4}}count-\expnumber{sec##2.##3}{##1}}
- \def\unnumbsecentry ##1##2{%
- \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}
- \def\subsecentry ##1##2##3##4##5{%
- \pdfoutline goto name{\pdfmkpgn{##5}}count-\expnumber{subsec##2.##3.##4}{##1}}
- \def\unnumbsubsecentry ##1##2{%
- \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}
- \def\subsubsecentry ##1##2##3##4##5##6{%
- \pdfoutline goto name{\pdfmkpgn{##6}}{##1}}
- \def\unnumbsubsubsecentry ##1##2{%
- \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}
- \input \jobname.toc
- \egroup\fi
- }}
- \def\makelinks #1,{%
- \def\params{#1}\def\E{END}%
- \ifx\params\E
- \let\nextmakelinks=\relax
- \else
- \let\nextmakelinks=\makelinks
- \ifnum\lnkcount>0,\fi
- \picknum{#1}%
- \startlink attr{/Border [0 0 0]}
- goto name{\pdfmkpgn{\the\pgn}}%
- \linkcolor #1%
- \advance\lnkcount by 1%
- \endlink
- \fi
- \nextmakelinks
- }
- \def\picknum#1{\expandafter\pn#1}
- \def\pn#1{%
- \def\p{#1}%
- \ifx\p\lbrace
- \let\nextpn=\ppn
- \else
- \let\nextpn=\ppnn
- \def\first{#1}
- \fi
- \nextpn
- }
- \def\ppn#1{\pgn=#1\gobble}
- \def\ppnn{\pgn=\first}
- \def\pdfmklnk#1{\lnkcount=0\makelinks #1,END,}
- \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks}
- \def\skipspaces#1{\def\PP{#1}\def\D{|}%
- \ifx\PP\D\let\nextsp\relax
- \else\let\nextsp\skipspaces
- \ifx\p\space\else\addtokens{\filename}{\PP}%
- \advance\filenamelength by 1
- \fi
- \fi
- \nextsp}
- \def\getfilename#1{\filenamelength=0\expandafter\skipspaces#1|\relax}
- \ifnum\pdftexversion < 14
- \let \startlink \pdfannotlink
- \else
- \let \startlink \pdfstartlink
- \fi
- \def\pdfurl#1{%
- \begingroup
- \normalturnoffactive\def\@{@}%
- \leavevmode\Red
- \startlink attr{/Border [0 0 0]}%
- user{/Subtype /Link /A << /S /URI /URI (#1) >>}%
- % #1
- \endgroup}
- \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}}
- \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks}
- \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks}
- \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}}
- \def\maketoks{%
- \expandafter\poptoks\the\toksA|ENDTOKS|
- \ifx\first0\adn0
- \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3
- \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6
- \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9
- \else
- \ifnum0=\countA\else\makelink\fi
- \ifx\first.\let\next=\done\else
- \let\next=\maketoks
- \addtokens{\toksB}{\the\toksD}
- \ifx\first,\addtokens{\toksB}{\space}\fi
- \fi
- \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
- \next}
- \def\makelink{\addtokens{\toksB}%
- {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0}
- \def\pdflink#1{%
- \startlink attr{/Border [0 0 0]} goto name{\mkpgn{#1}}
- \linkcolor #1\endlink}
- \def\mkpgn#1{#1@}
- \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
-\fi % \ifx\pdfoutput
-
-
-\message{fonts,}
-% Font-change commands.
-
-% Texinfo sort of supports the sans serif font style, which plain TeX does not.
-% So we set up a \sf analogous to plain's \rm, etc.
-\newfam\sffam
-\def\sf{\fam=\sffam \tensf}
-\let\li = \sf % Sometimes we call it \li, not \sf.
-
-% We don't need math for this one.
-\def\ttsl{\tenttsl}
-
-% Use Computer Modern fonts at \magstephalf (11pt).
-\newcount\mainmagstep
-\mainmagstep=\magstephalf
-
-% Set the font macro #1 to the font named #2, adding on the
-% specified font prefix (normally `cm').
-% #3 is the font's design size, #4 is a scale factor
-\def\setfont#1#2#3#4{\font#1=\fontprefix#2#3 scaled #4}
-
-% Use cm as the default font prefix.
-% To specify the font prefix, you must define \fontprefix
-% before you read in texinfo.tex.
-\ifx\fontprefix\undefined
-\def\fontprefix{cm}
-\fi
-% Support font families that don't use the same naming scheme as CM.
-\def\rmshape{r}
-\def\rmbshape{bx} %where the normal face is bold
-\def\bfshape{b}
-\def\bxshape{bx}
-\def\ttshape{tt}
-\def\ttbshape{tt}
-\def\ttslshape{sltt}
-\def\itshape{ti}
-\def\itbshape{bxti}
-\def\slshape{sl}
-\def\slbshape{bxsl}
-\def\sfshape{ss}
-\def\sfbshape{ss}
-\def\scshape{csc}
-\def\scbshape{csc}
-
-\ifx\bigger\relax
-\let\mainmagstep=\magstep1
-\setfont\textrm\rmshape{12}{1000}
-\setfont\texttt\ttshape{12}{1000}
-\else
-\setfont\textrm\rmshape{10}{\mainmagstep}
-\setfont\texttt\ttshape{10}{\mainmagstep}
-\fi
-% Instead of cmb10, you many want to use cmbx10.
-% cmbx10 is a prettier font on its own, but cmb10
-% looks better when embedded in a line with cmr10.
-\setfont\textbf\bfshape{10}{\mainmagstep}
-\setfont\textit\itshape{10}{\mainmagstep}
-\setfont\textsl\slshape{10}{\mainmagstep}
-\setfont\textsf\sfshape{10}{\mainmagstep}
-\setfont\textsc\scshape{10}{\mainmagstep}
-\setfont\textttsl\ttslshape{10}{\mainmagstep}
-\font\texti=cmmi10 scaled \mainmagstep
-\font\textsy=cmsy10 scaled \mainmagstep
-
-% A few fonts for @defun, etc.
-\setfont\defbf\bxshape{10}{\magstep1} %was 1314
-\setfont\deftt\ttshape{10}{\magstep1}
-\def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf}
-
-% Fonts for indices, footnotes, small examples (9pt).
-\setfont\smallrm\rmshape{9}{1000}
-\setfont\smalltt\ttshape{9}{1000}
-\setfont\smallbf\bfshape{10}{900}
-\setfont\smallit\itshape{9}{1000}
-\setfont\smallsl\slshape{9}{1000}
-\setfont\smallsf\sfshape{9}{1000}
-\setfont\smallsc\scshape{10}{900}
-\setfont\smallttsl\ttslshape{10}{900}
-\font\smalli=cmmi9
-\font\smallsy=cmsy9
-
-% Fonts for title page:
-\setfont\titlerm\rmbshape{12}{\magstep3}
-\setfont\titleit\itbshape{10}{\magstep4}
-\setfont\titlesl\slbshape{10}{\magstep4}
-\setfont\titlett\ttbshape{12}{\magstep3}
-\setfont\titlettsl\ttslshape{10}{\magstep4}
-\setfont\titlesf\sfbshape{17}{\magstep1}
-\let\titlebf=\titlerm
-\setfont\titlesc\scbshape{10}{\magstep4}
-\font\titlei=cmmi12 scaled \magstep3
-\font\titlesy=cmsy10 scaled \magstep4
-\def\authorrm{\secrm}
-
-% Chapter (and unnumbered) fonts (17.28pt).
-\setfont\chaprm\rmbshape{12}{\magstep2}
-\setfont\chapit\itbshape{10}{\magstep3}
-\setfont\chapsl\slbshape{10}{\magstep3}
-\setfont\chaptt\ttbshape{12}{\magstep2}
-\setfont\chapttsl\ttslshape{10}{\magstep3}
-\setfont\chapsf\sfbshape{17}{1000}
-\let\chapbf=\chaprm
-\setfont\chapsc\scbshape{10}{\magstep3}
-\font\chapi=cmmi12 scaled \magstep2
-\font\chapsy=cmsy10 scaled \magstep3
-
-% Section fonts (14.4pt).
-\setfont\secrm\rmbshape{12}{\magstep1}
-\setfont\secit\itbshape{10}{\magstep2}
-\setfont\secsl\slbshape{10}{\magstep2}
-\setfont\sectt\ttbshape{12}{\magstep1}
-\setfont\secttsl\ttslshape{10}{\magstep2}
-\setfont\secsf\sfbshape{12}{\magstep1}
-\let\secbf\secrm
-\setfont\secsc\scbshape{10}{\magstep2}
-\font\seci=cmmi12 scaled \magstep1
-\font\secsy=cmsy10 scaled \magstep2
-
-% \setfont\ssecrm\bxshape{10}{\magstep1} % This size an font looked bad.
-% \setfont\ssecit\itshape{10}{\magstep1} % The letters were too crowded.
-% \setfont\ssecsl\slshape{10}{\magstep1}
-% \setfont\ssectt\ttshape{10}{\magstep1}
-% \setfont\ssecsf\sfshape{10}{\magstep1}
-
-%\setfont\ssecrm\bfshape{10}{1315} % Note the use of cmb rather than cmbx.
-%\setfont\ssecit\itshape{10}{1315} % Also, the size is a little larger than
-%\setfont\ssecsl\slshape{10}{1315} % being scaled magstep1.
-%\setfont\ssectt\ttshape{10}{1315}
-%\setfont\ssecsf\sfshape{10}{1315}
-
-%\let\ssecbf=\ssecrm
-
-% Subsection fonts (13.15pt).
-\setfont\ssecrm\rmbshape{12}{\magstephalf}
-\setfont\ssecit\itbshape{10}{1315}
-\setfont\ssecsl\slbshape{10}{1315}
-\setfont\ssectt\ttbshape{12}{\magstephalf}
-\setfont\ssecttsl\ttslshape{10}{1315}
-\setfont\ssecsf\sfbshape{12}{\magstephalf}
-\let\ssecbf\ssecrm
-\setfont\ssecsc\scbshape{10}{\magstep1}
-\font\sseci=cmmi12 scaled \magstephalf
-\font\ssecsy=cmsy10 scaled 1315
-% The smallcaps and symbol fonts should actually be scaled \magstep1.5,
-% but that is not a standard magnification.
-
-% In order for the font changes to affect most math symbols and letters,
-% we have to define the \textfont of the standard families. Since
-% texinfo doesn't allow for producing subscripts and superscripts, we
-% don't bother to reset \scriptfont and \scriptscriptfont (which would
-% also require loading a lot more fonts).
-%
-\def\resetmathfonts{%
- \textfont0 = \tenrm \textfont1 = \teni \textfont2 = \tensy
- \textfont\itfam = \tenit \textfont\slfam = \tensl \textfont\bffam = \tenbf
- \textfont\ttfam = \tentt \textfont\sffam = \tensf
-}
-
-
-% The font-changing commands redefine the meanings of \tenSTYLE, instead
-% of just \STYLE. We do this so that font changes will continue to work
-% in math mode, where it is the current \fam that is relevant in most
-% cases, not the current font. Plain TeX does \def\bf{\fam=\bffam
-% \tenbf}, for example. By redefining \tenbf, we obviate the need to
-% redefine \bf itself.
-\def\textfonts{%
- \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl
- \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc
- \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy \let\tenttsl=\textttsl
- \resetmathfonts}
-\def\titlefonts{%
- \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl
- \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc
- \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy
- \let\tenttsl=\titlettsl
- \resetmathfonts \setleading{25pt}}
-\def\titlefont#1{{\titlefonts\rm #1}}
-\def\chapfonts{%
- \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl
- \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc
- \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy \let\tenttsl=\chapttsl
- \resetmathfonts \setleading{19pt}}
-\def\secfonts{%
- \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl
- \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc
- \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy \let\tenttsl=\secttsl
- \resetmathfonts \setleading{16pt}}
-\def\subsecfonts{%
- \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl
- \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc
- \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy \let\tenttsl=\ssecttsl
- \resetmathfonts \setleading{15pt}}
-\let\subsubsecfonts = \subsecfonts % Maybe make sssec fonts scaled magstephalf?
-\def\smallfonts{%
- \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl
- \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc
- \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy
- \let\tenttsl=\smallttsl
- \resetmathfonts \setleading{11pt}}
-
-% Set up the default fonts, so we can use them for creating boxes.
-%
-\textfonts
-
-% Define these so they can be easily changed for other fonts.
-\def\angleleft{$\langle$}
-\def\angleright{$\rangle$}
-
-% Count depth in font-changes, for error checks
-\newcount\fontdepth \fontdepth=0
-
-% Fonts for short table of contents.
-\setfont\shortcontrm\rmshape{12}{1000}
-\setfont\shortcontbf\bxshape{12}{1000}
-\setfont\shortcontsl\slshape{12}{1000}
-
-%% Add scribe-like font environments, plus @l for inline lisp (usually sans
-%% serif) and @ii for TeX italic
-
-% \smartitalic{ARG} outputs arg in italics, followed by an italic correction
-% unless the following character is such as not to need one.
-\def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else\/\fi\fi\fi}
-\def\smartslanted#1{{\sl #1}\futurelet\next\smartitalicx}
-\def\smartitalic#1{{\it #1}\futurelet\next\smartitalicx}
-
-\let\i=\smartitalic
-\let\var=\smartslanted
-\let\dfn=\smartslanted
-\let\emph=\smartitalic
-\let\cite=\smartslanted
-
-\def\b#1{{\bf #1}}
-\let\strong=\b
-
-% We can't just use \exhyphenpenalty, because that only has effect at
-% the end of a paragraph. Restore normal hyphenation at the end of the
-% group within which \nohyphenation is presumably called.
-%
-\def\nohyphenation{\hyphenchar\font = -1 \aftergroup\restorehyphenation}
-\def\restorehyphenation{\hyphenchar\font = `- }
-
-\def\t#1{%
- {\tt \rawbackslash \frenchspacing #1}%
- \null
-}
-\let\ttfont=\t
-\def\samp#1{`\tclose{#1}'\null}
-\setfont\keyrm\rmshape{8}{1000}
-\font\keysy=cmsy9
-\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{%
- \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{%
- \vbox{\hrule\kern-0.4pt
- \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}%
- \kern-0.4pt\hrule}%
- \kern-.06em\raise0.4pt\hbox{\angleright}}}}
-% The old definition, with no lozenge:
-%\def\key #1{{\ttsl \nohyphenation \uppercase{#1}}\null}
-\def\ctrl #1{{\tt \rawbackslash \hat}#1}
-
-% @file, @option are the same as @samp.
-\let\file=\samp
-\let\option=\samp
-
-% @code is a modification of @t,
-% which makes spaces the same size as normal in the surrounding text.
-\def\tclose#1{%
- {%
- % Change normal interword space to be same as for the current font.
- \spaceskip = \fontdimen2\font
- %
- % Switch to typewriter.
- \tt
- %
- % But `\ ' produces the large typewriter interword space.
- \def\ {{\spaceskip = 0pt{} }}%
- %
- % Turn off hyphenation.
- \nohyphenation
- %
- \rawbackslash
- \frenchspacing
- #1%
- }%
- \null
-}
-
-% We *must* turn on hyphenation at `-' and `_' in \code.
-% Otherwise, it is too hard to avoid overfull hboxes
-% in the Emacs manual, the Library manual, etc.
-
-% Unfortunately, TeX uses one parameter (\hyphenchar) to control
-% both hyphenation at - and hyphenation within words.
-% We must therefore turn them both off (\tclose does that)
-% and arrange explicitly to hyphenate at a dash.
-% -- rms.
-{
- \catcode`\-=\active
- \catcode`\_=\active
- %
- \global\def\code{\begingroup
- \catcode`\-=\active \let-\codedash
- \catcode`\_=\active \let_\codeunder
- \codex
- }
- %
- % If we end up with any active - characters when handling the index,
- % just treat them as a normal -.
- \global\def\indexbreaks{\catcode`\-=\active \let-\realdash}
-}
-
-\def\realdash{-}
-\def\codedash{-\discretionary{}{}{}}
-\def\codeunder{\ifusingtt{\normalunderscore\discretionary{}{}{}}{\_}}
-\def\codex #1{\tclose{#1}\endgroup}
-
-%\let\exp=\tclose %Was temporary
-
-% @kbd is like @code, except that if the argument is just one @key command,
-% then @kbd has no effect.
-
-% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always),
-% `example' (@kbd uses ttsl only inside of @example and friends),
-% or `code' (@kbd uses normal tty font always).
-\def\kbdinputstyle{\parsearg\kbdinputstylexxx}
-\def\kbdinputstylexxx#1{%
- \def\arg{#1}%
- \ifx\arg\worddistinct
- \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}%
- \else\ifx\arg\wordexample
- \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}%
- \else\ifx\arg\wordcode
- \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}%
- \fi\fi\fi
-}
-\def\worddistinct{distinct}
-\def\wordexample{example}
-\def\wordcode{code}
-
-% Default is kbdinputdistinct. (Too much of a hassle to call the macro,
-% the catcodes are wrong for parsearg to work.)
-\gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}
-
-\def\xkey{\key}
-\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}%
-\ifx\one\xkey\ifx\threex\three \key{#2}%
-\else{\tclose{\kbdfont\look}}\fi
-\else{\tclose{\kbdfont\look}}\fi}
-
-% For @url, @env, @command quotes seem unnecessary, so use \code.
-\let\url=\code
-\let\env=\code
-\let\command=\code
-
-% @uref (abbreviation for `urlref') takes an optional (comma-separated)
-% second argument specifying the text to display and an optional third
-% arg as text to display instead of (rather than in addition to) the url
-% itself. First (mandatory) arg is the url. Perhaps eventually put in
-% a hypertex \special here.
-%
-\def\uref#1{\douref #1,,,\finish}
-\def\douref#1,#2,#3,#4\finish{\begingroup
- \unsepspaces
- \pdfurl{#1}%
- \setbox0 = \hbox{\ignorespaces #3}%
- \ifdim\wd0 > 0pt
- \unhbox0 % third arg given, show only that
- \else
- \setbox0 = \hbox{\ignorespaces #2}%
- \ifdim\wd0 > 0pt
- \ifpdf
- \unhbox0 % PDF: 2nd arg given, show only it
- \else
- \unhbox0\ (\code{#1})% DVI: 2nd arg given, show both it and url
- \fi
- \else
- \code{#1}% only url given, so show it
- \fi
- \fi
- \endlink
-\endgroup}
-
-% rms does not like angle brackets --karl, 17may97.
-% So now @email is just like @uref, unless we are pdf.
-%
-%\def\email#1{\angleleft{\tt #1}\angleright}
-\ifpdf
- \def\email#1{\doemail#1,,\finish}
- \def\doemail#1,#2,#3\finish{\begingroup
- \unsepspaces
- \pdfurl{mailto:#1}%
- \setbox0 = \hbox{\ignorespaces #2}%
- \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi
- \endlink
- \endgroup}
-\else
- \let\email=\uref
-\fi
-
-% Check if we are currently using a typewriter font. Since all the
-% Computer Modern typewriter fonts have zero interword stretch (and
-% shrink), and it is reasonable to expect all typewriter fonts to have
-% this property, we can check that font parameter.
-%
-\def\ifmonospace{\ifdim\fontdimen3\font=0pt }
-
-% Typeset a dimension, e.g., `in' or `pt'. The only reason for the
-% argument is to make the input look right: @dmn{pt} instead of @dmn{}pt.
-%
-\def\dmn#1{\thinspace #1}
-
-\def\kbd#1{\def\look{#1}\expandafter\kbdfoo\look??\par}
-
-% @l was never documented to mean ``switch to the Lisp font'',
-% and it is not used as such in any manual I can find. We need it for
-% Polish suppressed-l. --karl, 22sep96.
-%\def\l#1{{\li #1}\null}
-
-% Explicit font changes: @r, @sc, undocumented @ii.
-\def\r#1{{\rm #1}} % roman font
-\def\sc#1{{\smallcaps#1}} % smallcaps font
-\def\ii#1{{\it #1}} % italic font
-
-% @acronym downcases the argument and prints in smallcaps.
-\def\acronym#1{{\smallcaps \lowercase{#1}}}
-
-% @pounds{} is a sterling sign.
-\def\pounds{{\it\$}}
-
-
-\message{page headings,}
-
-\newskip\titlepagetopglue \titlepagetopglue = 1.5in
-\newskip\titlepagebottomglue \titlepagebottomglue = 2pc
-
-% First the title page. Must do @settitle before @titlepage.
-\newif\ifseenauthor
-\newif\iffinishedtitlepage
-
-% Do an implicit @contents or @shortcontents after @end titlepage if the
-% user says @setcontentsaftertitlepage or @setshortcontentsaftertitlepage.
-%
-\newif\ifsetcontentsaftertitlepage
- \let\setcontentsaftertitlepage = \setcontentsaftertitlepagetrue
-\newif\ifsetshortcontentsaftertitlepage
- \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue
-
-\def\shorttitlepage{\parsearg\shorttitlepagezzz}
-\def\shorttitlepagezzz #1{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}%
- \endgroup\page\hbox{}\page}
-
-\def\titlepage{\begingroup \parindent=0pt \textfonts
- \let\subtitlerm=\tenrm
- \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}%
- %
- \def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines}%
- %
- % Leave some space at the very top of the page.
- \vglue\titlepagetopglue
- %
- % Now you can print the title using @title.
- \def\title{\parsearg\titlezzz}%
- \def\titlezzz##1{\leftline{\titlefonts\rm ##1}
- % print a rule at the page bottom also.
- \finishedtitlepagefalse
- \vskip4pt \hrule height 4pt width \hsize \vskip4pt}%
- % No rule at page bottom unless we print one at the top with @title.
- \finishedtitlepagetrue
- %
- % Now you can put text using @subtitle.
- \def\subtitle{\parsearg\subtitlezzz}%
- \def\subtitlezzz##1{{\subtitlefont \rightline{##1}}}%
- %
- % @author should come last, but may come many times.
- \def\author{\parsearg\authorzzz}%
- \def\authorzzz##1{\ifseenauthor\else\vskip 0pt plus 1filll\seenauthortrue\fi
- {\authorfont \leftline{##1}}}%
- %
- % Most title ``pages'' are actually two pages long, with space
- % at the top of the second. We don't want the ragged left on the second.
- \let\oldpage = \page
- \def\page{%
- \iffinishedtitlepage\else
- \finishtitlepage
- \fi
- \oldpage
- \let\page = \oldpage
- \hbox{}}%
-% \def\page{\oldpage \hbox{}}
-}
-
-\def\Etitlepage{%
- \iffinishedtitlepage\else
- \finishtitlepage
- \fi
- % It is important to do the page break before ending the group,
- % because the headline and footline are only empty inside the group.
- % If we use the new definition of \page, we always get a blank page
- % after the title page, which we certainly don't want.
- \oldpage
- \endgroup
- %
- % If they want short, they certainly want long too.
- \ifsetshortcontentsaftertitlepage
- \shortcontents
- \contents
- \global\let\shortcontents = \relax
- \global\let\contents = \relax
- \fi
- %
- \ifsetcontentsaftertitlepage
- \contents
- \global\let\contents = \relax
- \global\let\shortcontents = \relax
- \fi
- %
- \ifpdf \pdfmakepagedesttrue \fi
- %
- \HEADINGSon
-}
-
-\def\finishtitlepage{%
- \vskip4pt \hrule height 2pt width \hsize
- \vskip\titlepagebottomglue
- \finishedtitlepagetrue
-}
-
-%%% Set up page headings and footings.
-
-\let\thispage=\folio
-
-\newtoks\evenheadline % headline on even pages
-\newtoks\oddheadline % headline on odd pages
-\newtoks\evenfootline % footline on even pages
-\newtoks\oddfootline % footline on odd pages
-
-% Now make Tex use those variables
-\headline={{\textfonts\rm \ifodd\pageno \the\oddheadline
- \else \the\evenheadline \fi}}
-\footline={{\textfonts\rm \ifodd\pageno \the\oddfootline
- \else \the\evenfootline \fi}\HEADINGShook}
-\let\HEADINGShook=\relax
-
-% Commands to set those variables.
-% For example, this is what @headings on does
-% @evenheading @thistitle|@thispage|@thischapter
-% @oddheading @thischapter|@thispage|@thistitle
-% @evenfooting @thisfile||
-% @oddfooting ||@thisfile
-
-\def\evenheading{\parsearg\evenheadingxxx}
-\def\oddheading{\parsearg\oddheadingxxx}
-\def\everyheading{\parsearg\everyheadingxxx}
-
-\def\evenfooting{\parsearg\evenfootingxxx}
-\def\oddfooting{\parsearg\oddfootingxxx}
-\def\everyfooting{\parsearg\everyfootingxxx}
-
-{\catcode`\@=0 %
-
-\gdef\evenheadingxxx #1{\evenheadingyyy #1@|@|@|@|\finish}
-\gdef\evenheadingyyy #1@|#2@|#3@|#4\finish{%
-\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
-
-\gdef\oddheadingxxx #1{\oddheadingyyy #1@|@|@|@|\finish}
-\gdef\oddheadingyyy #1@|#2@|#3@|#4\finish{%
-\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
-
-\gdef\everyheadingxxx#1{\oddheadingxxx{#1}\evenheadingxxx{#1}}%
-
-\gdef\evenfootingxxx #1{\evenfootingyyy #1@|@|@|@|\finish}
-\gdef\evenfootingyyy #1@|#2@|#3@|#4\finish{%
-\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
-
-\gdef\oddfootingxxx #1{\oddfootingyyy #1@|@|@|@|\finish}
-\gdef\oddfootingyyy #1@|#2@|#3@|#4\finish{%
- \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}%
- %
- % Leave some space for the footline. Hopefully ok to assume
- % @evenfooting will not be used by itself.
- \global\advance\pageheight by -\baselineskip
- \global\advance\vsize by -\baselineskip
-}
-
-\gdef\everyfootingxxx#1{\oddfootingxxx{#1}\evenfootingxxx{#1}}
-%
-}% unbind the catcode of @.
-
-% @headings double turns headings on for double-sided printing.
-% @headings single turns headings on for single-sided printing.
-% @headings off turns them off.
-% @headings on same as @headings double, retained for compatibility.
-% @headings after turns on double-sided headings after this page.
-% @headings doubleafter turns on double-sided headings after this page.
-% @headings singleafter turns on single-sided headings after this page.
-% By default, they are off at the start of a document,
-% and turned `on' after @end titlepage.
-
-\def\headings #1 {\csname HEADINGS#1\endcsname}
-
-\def\HEADINGSoff{
-\global\evenheadline={\hfil} \global\evenfootline={\hfil}
-\global\oddheadline={\hfil} \global\oddfootline={\hfil}}
-\HEADINGSoff
-% When we turn headings on, set the page number to 1.
-% For double-sided printing, put current file name in lower left corner,
-% chapter name on inside top of right hand pages, document
-% title on inside top of left hand pages, and page numbers on outside top
-% edge of all pages.
-\def\HEADINGSdouble{
-\global\pageno=1
-\global\evenfootline={\hfil}
-\global\oddfootline={\hfil}
-\global\evenheadline={\line{\folio\hfil\thistitle}}
-\global\oddheadline={\line{\thischapter\hfil\folio}}
-\global\let\contentsalignmacro = \chapoddpage
-}
-\let\contentsalignmacro = \chappager
-
-% For single-sided printing, chapter title goes across top left of page,
-% page number on top right.
-\def\HEADINGSsingle{
-\global\pageno=1
-\global\evenfootline={\hfil}
-\global\oddfootline={\hfil}
-\global\evenheadline={\line{\thischapter\hfil\folio}}
-\global\oddheadline={\line{\thischapter\hfil\folio}}
-\global\let\contentsalignmacro = \chappager
-}
-\def\HEADINGSon{\HEADINGSdouble}
-
-\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex}
-\let\HEADINGSdoubleafter=\HEADINGSafter
-\def\HEADINGSdoublex{%
-\global\evenfootline={\hfil}
-\global\oddfootline={\hfil}
-\global\evenheadline={\line{\folio\hfil\thistitle}}
-\global\oddheadline={\line{\thischapter\hfil\folio}}
-\global\let\contentsalignmacro = \chapoddpage
-}
-
-\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex}
-\def\HEADINGSsinglex{%
-\global\evenfootline={\hfil}
-\global\oddfootline={\hfil}
-\global\evenheadline={\line{\thischapter\hfil\folio}}
-\global\oddheadline={\line{\thischapter\hfil\folio}}
-\global\let\contentsalignmacro = \chappager
-}
-
-% Subroutines used in generating headings
-% Produces Day Month Year style of output.
-\def\today{%
- \number\day\space
- \ifcase\month
- \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr
- \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug
- \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec
- \fi
- \space\number\year}
-
-% @settitle line... specifies the title of the document, for headings.
-% It generates no output of its own.
-\def\thistitle{\putwordNoTitle}
-\def\settitle{\parsearg\settitlezzz}
-\def\settitlezzz #1{\gdef\thistitle{#1}}
-
-
-\message{tables,}
-% Tables -- @table, @ftable, @vtable, @item(x), @kitem(x), @xitem(x).
-
-% default indentation of table text
-\newdimen\tableindent \tableindent=.8in
-% default indentation of @itemize and @enumerate text
-\newdimen\itemindent \itemindent=.3in
-% margin between end of table item and start of table text.
-\newdimen\itemmargin \itemmargin=.1in
-
-% used internally for \itemindent minus \itemmargin
-\newdimen\itemmax
-
-% Note @table, @vtable, and @vtable define @item, @itemx, etc., with
-% these defs.
-% They also define \itemindex
-% to index the item name in whatever manner is desired (perhaps none).
-
-\newif\ifitemxneedsnegativevskip
-
-\def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi}
-
-\def\internalBitem{\smallbreak \parsearg\itemzzz}
-\def\internalBitemx{\itemxpar \parsearg\itemzzz}
-
-\def\internalBxitem "#1"{\def\xitemsubtopix{#1} \smallbreak \parsearg\xitemzzz}
-\def\internalBxitemx "#1"{\def\xitemsubtopix{#1} \itemxpar \parsearg\xitemzzz}
-
-\def\internalBkitem{\smallbreak \parsearg\kitemzzz}
-\def\internalBkitemx{\itemxpar \parsearg\kitemzzz}
-
-\def\kitemzzz #1{\dosubind {kw}{\code{#1}}{for {\bf \lastfunction}}%
- \itemzzz {#1}}
-
-\def\xitemzzz #1{\dosubind {kw}{\code{#1}}{for {\bf \xitemsubtopic}}%
- \itemzzz {#1}}
-
-\def\itemzzz #1{\begingroup %
- \advance\hsize by -\rightskip
- \advance\hsize by -\tableindent
- \setbox0=\hbox{\itemfont{#1}}%
- \itemindex{#1}%
- \nobreak % This prevents a break before @itemx.
- %
- % If the item text does not fit in the space we have, put it on a line
- % by itself, and do not allow a page break either before or after that
- % line. We do not start a paragraph here because then if the next
- % command is, e.g., @kindex, the whatsit would get put into the
- % horizontal list on a line by itself, resulting in extra blank space.
- \ifdim \wd0>\itemmax
- %
- % Make this a paragraph so we get the \parskip glue and wrapping,
- % but leave it ragged-right.
- \begingroup
- \advance\leftskip by-\tableindent
- \advance\hsize by\tableindent
- \advance\rightskip by0pt plus1fil
- \leavevmode\unhbox0\par
- \endgroup
- %
- % We're going to be starting a paragraph, but we don't want the
- % \parskip glue -- logically it's part of the @item we just started.
- \nobreak \vskip-\parskip
- %
- % Stop a page break at the \parskip glue coming up. Unfortunately
- % we can't prevent a possible page break at the following
- % \baselineskip glue.
- \nobreak
- \endgroup
- \itemxneedsnegativevskipfalse
- \else
- % The item text fits into the space. Start a paragraph, so that the
- % following text (if any) will end up on the same line.
- \noindent
- % Do this with kerns and \unhbox so that if there is a footnote in
- % the item text, it can migrate to the main vertical list and
- % eventually be printed.
- \nobreak\kern-\tableindent
- \dimen0 = \itemmax \advance\dimen0 by \itemmargin \advance\dimen0 by -\wd0
- \unhbox0
- \nobreak\kern\dimen0
- \endgroup
- \itemxneedsnegativevskiptrue
- \fi
-}
-
-\def\item{\errmessage{@item while not in a table}}
-\def\itemx{\errmessage{@itemx while not in a table}}
-\def\kitem{\errmessage{@kitem while not in a table}}
-\def\kitemx{\errmessage{@kitemx while not in a table}}
-\def\xitem{\errmessage{@xitem while not in a table}}
-\def\xitemx{\errmessage{@xitemx while not in a table}}
-
-% Contains a kludge to get @end[description] to work.
-\def\description{\tablez{\dontindex}{1}{}{}{}{}}
-
-% @table, @ftable, @vtable.
-\def\table{\begingroup\inENV\obeylines\obeyspaces\tablex}
-{\obeylines\obeyspaces%
-\gdef\tablex #1^^M{%
-\tabley\dontindex#1 \endtabley}}
-
-\def\ftable{\begingroup\inENV\obeylines\obeyspaces\ftablex}
-{\obeylines\obeyspaces%
-\gdef\ftablex #1^^M{%
-\tabley\fnitemindex#1 \endtabley
-\def\Eftable{\endgraf\afterenvbreak\endgroup}%
-\let\Etable=\relax}}
-
-\def\vtable{\begingroup\inENV\obeylines\obeyspaces\vtablex}
-{\obeylines\obeyspaces%
-\gdef\vtablex #1^^M{%
-\tabley\vritemindex#1 \endtabley
-\def\Evtable{\endgraf\afterenvbreak\endgroup}%
-\let\Etable=\relax}}
-
-\def\dontindex #1{}
-\def\fnitemindex #1{\doind {fn}{\code{#1}}}%
-\def\vritemindex #1{\doind {vr}{\code{#1}}}%
-
-{\obeyspaces %
-\gdef\tabley#1#2 #3 #4 #5 #6 #7\endtabley{\endgroup%
-\tablez{#1}{#2}{#3}{#4}{#5}{#6}}}
-
-\def\tablez #1#2#3#4#5#6{%
-\aboveenvbreak %
-\begingroup %
-\def\Edescription{\Etable}% Necessary kludge.
-\let\itemindex=#1%
-\ifnum 0#3>0 \advance \leftskip by #3\mil \fi %
-\ifnum 0#4>0 \tableindent=#4\mil \fi %
-\ifnum 0#5>0 \advance \rightskip by #5\mil \fi %
-\def\itemfont{#2}%
-\itemmax=\tableindent %
-\advance \itemmax by -\itemmargin %
-\advance \leftskip by \tableindent %
-\exdentamount=\tableindent
-\parindent = 0pt
-\parskip = \smallskipamount
-\ifdim \parskip=0pt \parskip=2pt \fi%
-\def\Etable{\endgraf\afterenvbreak\endgroup}%
-\let\item = \internalBitem %
-\let\itemx = \internalBitemx %
-\let\kitem = \internalBkitem %
-\let\kitemx = \internalBkitemx %
-\let\xitem = \internalBxitem %
-\let\xitemx = \internalBxitemx %
-}
-
-% This is the counter used by @enumerate, which is really @itemize
-
-\newcount \itemno
-
-\def\itemize{\parsearg\itemizezzz}
-
-\def\itemizezzz #1{%
- \begingroup % ended by the @end itemize
- \itemizey {#1}{\Eitemize}
-}
-
-\def\itemizey #1#2{%
-\aboveenvbreak %
-\itemmax=\itemindent %
-\advance \itemmax by -\itemmargin %
-\advance \leftskip by \itemindent %
-\exdentamount=\itemindent
-\parindent = 0pt %
-\parskip = \smallskipamount %
-\ifdim \parskip=0pt \parskip=2pt \fi%
-\def#2{\endgraf\afterenvbreak\endgroup}%
-\def\itemcontents{#1}%
-\let\item=\itemizeitem}
-
-% Set sfcode to normal for the chars that usually have another value.
-% These are `.?!:;,'
-\def\frenchspacing{\sfcode46=1000 \sfcode63=1000 \sfcode33=1000
- \sfcode58=1000 \sfcode59=1000 \sfcode44=1000 }
-
-% \splitoff TOKENS\endmark defines \first to be the first token in
-% TOKENS, and \rest to be the remainder.
-%
-\def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}%
-
-% Allow an optional argument of an uppercase letter, lowercase letter,
-% or number, to specify the first label in the enumerated list. No
-% argument is the same as `1'.
-%
-\def\enumerate{\parsearg\enumeratezzz}
-\def\enumeratezzz #1{\enumeratey #1 \endenumeratey}
-\def\enumeratey #1 #2\endenumeratey{%
- \begingroup % ended by the @end enumerate
- %
- % If we were given no argument, pretend we were given `1'.
- \def\thearg{#1}%
- \ifx\thearg\empty \def\thearg{1}\fi
- %
- % Detect if the argument is a single token. If so, it might be a
- % letter. Otherwise, the only valid thing it can be is a number.
- % (We will always have one token, because of the test we just made.
- % This is a good thing, since \splitoff doesn't work given nothing at
- % all -- the first parameter is undelimited.)
- \expandafter\splitoff\thearg\endmark
- \ifx\rest\empty
- % Only one token in the argument. It could still be anything.
- % A ``lowercase letter'' is one whose \lccode is nonzero.
- % An ``uppercase letter'' is one whose \lccode is both nonzero, and
- % not equal to itself.
- % Otherwise, we assume it's a number.
- %
- % We need the \relax at the end of the \ifnum lines to stop TeX from
- % continuing to look for a <number>.
- %
- \ifnum\lccode\expandafter`\thearg=0\relax
- \numericenumerate % a number (we hope)
- \else
- % It's a letter.
- \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax
- \lowercaseenumerate % lowercase letter
- \else
- \uppercaseenumerate % uppercase letter
- \fi
- \fi
- \else
- % Multiple tokens in the argument. We hope it's a number.
- \numericenumerate
- \fi
-}
-
-% An @enumerate whose labels are integers. The starting integer is
-% given in \thearg.
-%
-\def\numericenumerate{%
- \itemno = \thearg
- \startenumeration{\the\itemno}%
-}
-
-% The starting (lowercase) letter is in \thearg.
-\def\lowercaseenumerate{%
- \itemno = \expandafter`\thearg
- \startenumeration{%
- % Be sure we're not beyond the end of the alphabet.
- \ifnum\itemno=0
- \errmessage{No more lowercase letters in @enumerate; get a bigger
- alphabet}%
- \fi
- \char\lccode\itemno
- }%
-}
-
-% The starting (uppercase) letter is in \thearg.
-\def\uppercaseenumerate{%
- \itemno = \expandafter`\thearg
- \startenumeration{%
- % Be sure we're not beyond the end of the alphabet.
- \ifnum\itemno=0
- \errmessage{No more uppercase letters in @enumerate; get a bigger
- alphabet}
- \fi
- \char\uccode\itemno
- }%
-}
-
-% Call itemizey, adding a period to the first argument and supplying the
-% common last two arguments. Also subtract one from the initial value in
-% \itemno, since @item increments \itemno.
-%
-\def\startenumeration#1{%
- \advance\itemno by -1
- \itemizey{#1.}\Eenumerate\flushcr
-}
-
-% @alphaenumerate and @capsenumerate are abbreviations for giving an arg
-% to @enumerate.
-%
-\def\alphaenumerate{\enumerate{a}}
-\def\capsenumerate{\enumerate{A}}
-\def\Ealphaenumerate{\Eenumerate}
-\def\Ecapsenumerate{\Eenumerate}
-
-% Definition of @item while inside @itemize.
-
-\def\itemizeitem{%
-\advance\itemno by 1
-{\let\par=\endgraf \smallbreak}%
-\ifhmode \errmessage{In hmode at itemizeitem}\fi
-{\parskip=0in \hskip 0pt
-\hbox to 0pt{\hss \itemcontents\hskip \itemmargin}%
-\vadjust{\penalty 1200}}%
-\flushcr}
-
-% @multitable macros
-% Amy Hendrickson, 8/18/94, 3/6/96
-%
-% @multitable ... @end multitable will make as many columns as desired.
-% Contents of each column will wrap at width given in preamble. Width
-% can be specified either with sample text given in a template line,
-% or in percent of \hsize, the current width of text on page.
-
-% Table can continue over pages but will only break between lines.
-
-% To make preamble:
-%
-% Either define widths of columns in terms of percent of \hsize:
-% @multitable @columnfractions .25 .3 .45
-% @item ...
-%
-% Numbers following @columnfractions are the percent of the total
-% current hsize to be used for each column. You may use as many
-% columns as desired.
-
-
-% Or use a template:
-% @multitable {Column 1 template} {Column 2 template} {Column 3 template}
-% @item ...
-% using the widest term desired in each column.
-%
-% For those who want to use more than one line's worth of words in
-% the preamble, break the line within one argument and it
-% will parse correctly, i.e.,
-%
-% @multitable {Column 1 template} {Column 2 template} {Column 3
-% template}
-% Not:
-% @multitable {Column 1 template} {Column 2 template}
-% {Column 3 template}
-
-% Each new table line starts with @item, each subsequent new column
-% starts with @tab. Empty columns may be produced by supplying @tab's
-% with nothing between them for as many times as empty columns are needed,
-% ie, @tab@tab@tab will produce two empty columns.
-
-% @item, @tab, @multitable or @end multitable do not need to be on their
-% own lines, but it will not hurt if they are.
-
-% Sample multitable:
-
-% @multitable {Column 1 template} {Column 2 template} {Column 3 template}
-% @item first col stuff @tab second col stuff @tab third col
-% @item
-% first col stuff
-% @tab
-% second col stuff
-% @tab
-% third col
-% @item first col stuff @tab second col stuff
-% @tab Many paragraphs of text may be used in any column.
-%
-% They will wrap at the width determined by the template.
-% @item@tab@tab This will be in third column.
-% @end multitable
-
-% Default dimensions may be reset by user.
-% @multitableparskip is vertical space between paragraphs in table.
-% @multitableparindent is paragraph indent in table.
-% @multitablecolmargin is horizontal space to be left between columns.
-% @multitablelinespace is space to leave between table items, baseline
-% to baseline.
-% 0pt means it depends on current normal line spacing.
-%
-\newskip\multitableparskip
-\newskip\multitableparindent
-\newdimen\multitablecolspace
-\newskip\multitablelinespace
-\multitableparskip=0pt
-\multitableparindent=6pt
-\multitablecolspace=12pt
-\multitablelinespace=0pt
-
-% Macros used to set up halign preamble:
-%
-\let\endsetuptable\relax
-\def\xendsetuptable{\endsetuptable}
-\let\columnfractions\relax
-\def\xcolumnfractions{\columnfractions}
-\newif\ifsetpercent
-
-% #1 is the part of the @columnfraction before the decimal point, which
-% is presumably either 0 or the empty string (but we don't check, we
-% just throw it away). #2 is the decimal part, which we use as the
-% percent of \hsize for this column.
-\def\pickupwholefraction#1.#2 {%
- \global\advance\colcount by 1
- \expandafter\xdef\csname col\the\colcount\endcsname{.#2\hsize}%
- \setuptable
-}
-
-\newcount\colcount
-\def\setuptable#1{%
- \def\firstarg{#1}%
- \ifx\firstarg\xendsetuptable
- \let\go = \relax
- \else
- \ifx\firstarg\xcolumnfractions
- \global\setpercenttrue
- \else
- \ifsetpercent
- \let\go\pickupwholefraction
- \else
- \global\advance\colcount by 1
- \setbox0=\hbox{#1\unskip }% Add a normal word space as a separator;
- % typically that is always in the input, anyway.
- \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}%
- \fi
- \fi
- \ifx\go\pickupwholefraction
- % Put the argument back for the \pickupwholefraction call, so
- % we'll always have a period there to be parsed.
- \def\go{\pickupwholefraction#1}%
- \else
- \let\go = \setuptable
- \fi%
- \fi
- \go
-}
-
-% This used to have \hskip1sp. But then the space in a template line is
-% not enough. That is bad. So let's go back to just & until we
-% encounter the problem it was intended to solve again.
-% --karl, nathan@acm.org, 20apr99.
-\def\tab{&}
-
-% @multitable ... @end multitable definitions:
-%
-\def\multitable{\parsearg\dotable}
-\def\dotable#1{\bgroup
- \vskip\parskip
- \let\item\crcr
- \tolerance=9500
- \hbadness=9500
- \setmultitablespacing
- \parskip=\multitableparskip
- \parindent=\multitableparindent
- \overfullrule=0pt
- \global\colcount=0
- \def\Emultitable{\global\setpercentfalse\cr\egroup\egroup}%
- %
- % To parse everything between @multitable and @item:
- \setuptable#1 \endsetuptable
- %
- % \everycr will reset column counter, \colcount, at the end of
- % each line. Every column entry will cause \colcount to advance by one.
- % The table preamble
- % looks at the current \colcount to find the correct column width.
- \everycr{\noalign{%
- %
- % \filbreak%% keeps underfull box messages off when table breaks over pages.
- % Maybe so, but it also creates really weird page breaks when the table
- % breaks over pages. Wouldn't \vfil be better? Wait until the problem
- % manifests itself, so it can be fixed for real --karl.
- \global\colcount=0\relax}}%
- %
- % This preamble sets up a generic column definition, which will
- % be used as many times as user calls for columns.
- % \vtop will set a single line and will also let text wrap and
- % continue for many paragraphs if desired.
- \halign\bgroup&\global\advance\colcount by 1\relax
- \multistrut\vtop{\hsize=\expandafter\csname col\the\colcount\endcsname
- %
- % In order to keep entries from bumping into each other
- % we will add a \leftskip of \multitablecolspace to all columns after
- % the first one.
- %
- % If a template has been used, we will add \multitablecolspace
- % to the width of each template entry.
- %
- % If the user has set preamble in terms of percent of \hsize we will
- % use that dimension as the width of the column, and the \leftskip
- % will keep entries from bumping into each other. Table will start at
- % left margin and final column will justify at right margin.
- %
- % Make sure we don't inherit \rightskip from the outer environment.
- \rightskip=0pt
- \ifnum\colcount=1
- % The first column will be indented with the surrounding text.
- \advance\hsize by\leftskip
- \else
- \ifsetpercent \else
- % If user has not set preamble in terms of percent of \hsize
- % we will advance \hsize by \multitablecolspace.
- \advance\hsize by \multitablecolspace
- \fi
- % In either case we will make \leftskip=\multitablecolspace:
- \leftskip=\multitablecolspace
- \fi
- % Ignoring space at the beginning and end avoids an occasional spurious
- % blank line, when TeX decides to break the line at the space before the
- % box from the multistrut, so the strut ends up on a line by itself.
- % For example:
- % @multitable @columnfractions .11 .89
- % @item @code{#}
- % @tab Legal holiday which is valid in major parts of the whole country.
- % Is automatically provided with highlighting sequences respectively marking
- % characters.
- \noindent\ignorespaces##\unskip\multistrut}\cr
-}
-
-\def\setmultitablespacing{% test to see if user has set \multitablelinespace.
-% If so, do nothing. If not, give it an appropriate dimension based on
-% current baselineskip.
-\ifdim\multitablelinespace=0pt
-\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip
-\global\advance\multitablelinespace by-\ht0
-%% strut to put in table in case some entry doesn't have descenders,
-%% to keep lines equally spaced
-\let\multistrut = \strut
-\else
-%% FIXME: what is \box0 supposed to be?
-\gdef\multistrut{\vrule height\multitablelinespace depth\dp0
-width0pt\relax} \fi
-%% Test to see if parskip is larger than space between lines of
-%% table. If not, do nothing.
-%% If so, set to same dimension as multitablelinespace.
-\ifdim\multitableparskip>\multitablelinespace
-\global\multitableparskip=\multitablelinespace
-\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller
- %% than skip between lines in the table.
-\fi%
-\ifdim\multitableparskip=0pt
-\global\multitableparskip=\multitablelinespace
-\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller
- %% than skip between lines in the table.
-\fi}
-
-
-\message{conditionals,}
-% Prevent errors for section commands.
-% Used in @ignore and in failing conditionals.
-\def\ignoresections{%
- \let\chapter=\relax
- \let\unnumbered=\relax
- \let\top=\relax
- \let\unnumberedsec=\relax
- \let\unnumberedsection=\relax
- \let\unnumberedsubsec=\relax
- \let\unnumberedsubsection=\relax
- \let\unnumberedsubsubsec=\relax
- \let\unnumberedsubsubsection=\relax
- \let\section=\relax
- \let\subsec=\relax
- \let\subsubsec=\relax
- \let\subsection=\relax
- \let\subsubsection=\relax
- \let\appendix=\relax
- \let\appendixsec=\relax
- \let\appendixsection=\relax
- \let\appendixsubsec=\relax
- \let\appendixsubsection=\relax
- \let\appendixsubsubsec=\relax
- \let\appendixsubsubsection=\relax
- \let\contents=\relax
- \let\smallbook=\relax
- \let\titlepage=\relax
-}
-
-% Used in nested conditionals, where we have to parse the Texinfo source
-% and so want to turn off most commands, in case they are used
-% incorrectly.
-%
-\def\ignoremorecommands{%
- \let\defcodeindex = \relax
- \let\defcv = \relax
- \let\deffn = \relax
- \let\deffnx = \relax
- \let\defindex = \relax
- \let\defivar = \relax
- \let\defmac = \relax
- \let\defmethod = \relax
- \let\defop = \relax
- \let\defopt = \relax
- \let\defspec = \relax
- \let\deftp = \relax
- \let\deftypefn = \relax
- \let\deftypefun = \relax
- \let\deftypeivar = \relax
- \let\deftypeop = \relax
- \let\deftypevar = \relax
- \let\deftypevr = \relax
- \let\defun = \relax
- \let\defvar = \relax
- \let\defvr = \relax
- \let\ref = \relax
- \let\xref = \relax
- \let\printindex = \relax
- \let\pxref = \relax
- \let\settitle = \relax
- \let\setchapternewpage = \relax
- \let\setchapterstyle = \relax
- \let\everyheading = \relax
- \let\evenheading = \relax
- \let\oddheading = \relax
- \let\everyfooting = \relax
- \let\evenfooting = \relax
- \let\oddfooting = \relax
- \let\headings = \relax
- \let\include = \relax
- \let\lowersections = \relax
- \let\down = \relax
- \let\raisesections = \relax
- \let\up = \relax
- \let\set = \relax
- \let\clear = \relax
- \let\item = \relax
-}
-
-% Ignore @ignore ... @end ignore.
-%
-\def\ignore{\doignore{ignore}}
-
-% Ignore @ifinfo, @ifhtml, @ifnottex, @html, @menu, and @direntry text.
-%
-\def\ifinfo{\doignore{ifinfo}}
-\def\ifhtml{\doignore{ifhtml}}
-\def\ifnottex{\doignore{ifnottex}}
-\def\html{\doignore{html}}
-\def\menu{\doignore{menu}}
-\def\direntry{\doignore{direntry}}
-
-% @dircategory CATEGORY -- specify a category of the dir file
-% which this file should belong to. Ignore this in TeX.
-\let\dircategory = \comment
-
-% Ignore text until a line `@end #1'.
-%
-\def\doignore#1{\begingroup
- % Don't complain about control sequences we have declared \outer.
- \ignoresections
- %
- % Define a command to swallow text until we reach `@end #1'.
- % This @ is a catcode 12 token (that is the normal catcode of @ in
- % this texinfo.tex file). We change the catcode of @ below to match.
- \long\def\doignoretext##1@end #1{\enddoignore}%
- %
- % Make sure that spaces turn into tokens that match what \doignoretext wants.
- \catcode32 = 10
- %
- % Ignore braces, too, so mismatched braces don't cause trouble.
- \catcode`\{ = 9
- \catcode`\} = 9
- %
- % We must not have @c interpreted as a control sequence.
- \catcode`\@ = 12
- %
- % Make the letter c a comment character so that the rest of the line
- % will be ignored. This way, the document can have (for example)
- % @c @end ifinfo
- % and the @end ifinfo will be properly ignored.
- % (We've just changed @ to catcode 12.)
- \catcode`\c = 14
- %
- % And now expand that command.
- \doignoretext
-}
-
-% What we do to finish off ignored text.
-%
-\def\enddoignore{\endgroup\ignorespaces}%
-
-\newif\ifwarnedobs\warnedobsfalse
-\def\obstexwarn{%
- \ifwarnedobs\relax\else
- % We need to warn folks that they may have trouble with TeX 3.0.
- % This uses \immediate\write16 rather than \message to get newlines.
- \immediate\write16{}
- \immediate\write16{WARNING: for users of Unix TeX 3.0!}
- \immediate\write16{This manual trips a bug in TeX version 3.0 (tex hangs).}
- \immediate\write16{If you are running another version of TeX, relax.}
- \immediate\write16{If you are running Unix TeX 3.0, kill this TeX process.}
- \immediate\write16{ Then upgrade your TeX installation if you can.}
- \immediate\write16{ (See ftp://ftp.gnu.org/pub/gnu/TeX.README.)}
- \immediate\write16{If you are stuck with version 3.0, run the}
- \immediate\write16{ script ``tex3patch'' from the Texinfo distribution}
- \immediate\write16{ to use a workaround.}
- \immediate\write16{}
- \global\warnedobstrue
- \fi
-}
-
-% **In TeX 3.0, setting text in \nullfont hangs tex. For a
-% workaround (which requires the file ``dummy.tfm'' to be installed),
-% uncomment the following line:
-%%%%%\font\nullfont=dummy\let\obstexwarn=\relax
-
-% Ignore text, except that we keep track of conditional commands for
-% purposes of nesting, up to an `@end #1' command.
-%
-\def\nestedignore#1{%
- \obstexwarn
- % We must actually expand the ignored text to look for the @end
- % command, so that nested ignore constructs work. Thus, we put the
- % text into a \vbox and then do nothing with the result. To minimize
- % the change of memory overflow, we follow the approach outlined on
- % page 401 of the TeXbook: make the current font be a dummy font.
- %
- \setbox0 = \vbox\bgroup
- % Don't complain about control sequences we have declared \outer.
- \ignoresections
- %
- % Define `@end #1' to end the box, which will in turn undefine the
- % @end command again.
- \expandafter\def\csname E#1\endcsname{\egroup\ignorespaces}%
- %
- % We are going to be parsing Texinfo commands. Most cause no
- % trouble when they are used incorrectly, but some commands do
- % complicated argument parsing or otherwise get confused, so we
- % undefine them.
- %
- % We can't do anything about stray @-signs, unfortunately;
- % they'll produce `undefined control sequence' errors.
- \ignoremorecommands
- %
- % Set the current font to be \nullfont, a TeX primitive, and define
- % all the font commands to also use \nullfont. We don't use
- % dummy.tfm, as suggested in the TeXbook, because not all sites
- % might have that installed. Therefore, math mode will still
- % produce output, but that should be an extremely small amount of
- % stuff compared to the main input.
- %
- \nullfont
- \let\tenrm=\nullfont \let\tenit=\nullfont \let\tensl=\nullfont
- \let\tenbf=\nullfont \let\tentt=\nullfont \let\smallcaps=\nullfont
- \let\tensf=\nullfont
- % Similarly for index fonts (mostly for their use in smallexample).
- \let\smallrm=\nullfont \let\smallit=\nullfont \let\smallsl=\nullfont
- \let\smallbf=\nullfont \let\smalltt=\nullfont \let\smallsc=\nullfont
- \let\smallsf=\nullfont
- %
- % Don't complain when characters are missing from the fonts.
- \tracinglostchars = 0
- %
- % Don't bother to do space factor calculations.
- \frenchspacing
- %
- % Don't report underfull hboxes.
- \hbadness = 10000
- %
- % Do minimal line-breaking.
- \pretolerance = 10000
- %
- % Do not execute instructions in @tex
- \def\tex{\doignore{tex}}%
- % Do not execute macro definitions.
- % `c' is a comment character, so the word `macro' will get cut off.
- \def\macro{\doignore{ma}}%
-}
-
-% @set VAR sets the variable VAR to an empty value.
-% @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE.
-%
-% Since we want to separate VAR from REST-OF-LINE (which might be
-% empty), we can't just use \parsearg; we have to insert a space of our
-% own to delimit the rest of the line, and then take it out again if we
-% didn't need it. Make sure the catcode of space is correct to avoid
-% losing inside @example, for instance.
-%
-\def\set{\begingroup\catcode` =10
- \catcode`\-=12 \catcode`\_=12 % Allow - and _ in VAR.
- \parsearg\setxxx}
-\def\setxxx#1{\setyyy#1 \endsetyyy}
-\def\setyyy#1 #2\endsetyyy{%
- \def\temp{#2}%
- \ifx\temp\empty \global\expandafter\let\csname SET#1\endcsname = \empty
- \else \setzzz{#1}#2\endsetzzz % Remove the trailing space \setxxx inserted.
- \fi
- \endgroup
-}
-% Can't use \xdef to pre-expand #2 and save some time, since \temp or
-% \next or other control sequences that we've defined might get us into
-% an infinite loop. Consider `@set foo @cite{bar}'.
-\def\setzzz#1#2 \endsetzzz{\expandafter\gdef\csname SET#1\endcsname{#2}}
-
-% @clear VAR clears (i.e., unsets) the variable VAR.
-%
-\def\clear{\parsearg\clearxxx}
-\def\clearxxx#1{\global\expandafter\let\csname SET#1\endcsname=\relax}
-
-% @value{foo} gets the text saved in variable foo.
-{
- \catcode`\_ = \active
- %
- % We might end up with active _ or - characters in the argument if
- % we're called from @code, as @code{@value{foo-bar_}}. So \let any
- % such active characters to their normal equivalents.
- \gdef\value{\begingroup
- \catcode`\-=12 \catcode`\_=12
- \indexbreaks \let_\normalunderscore
- \valuexxx}
-}
-\def\valuexxx#1{\expandablevalue{#1}\endgroup}
-
-% We have this subroutine so that we can handle at least some @value's
-% properly in indexes (we \let\value to this in \indexdummies). Ones
-% whose names contain - or _ still won't work, but we can't do anything
-% about that. The command has to be fully expandable, since the result
-% winds up in the index file. This means that if the variable's value
-% contains other Texinfo commands, it's almost certain it will fail
-% (although perhaps we could fix that with sufficient work to do a
-% one-level expansion on the result, instead of complete).
-%
-\def\expandablevalue#1{%
- \expandafter\ifx\csname SET#1\endcsname\relax
- {[No value for ``#1'']}%
- \else
- \csname SET#1\endcsname
- \fi
-}
-
-% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined
-% with @set.
-%
-\def\ifset{\parsearg\ifsetxxx}
-\def\ifsetxxx #1{%
- \expandafter\ifx\csname SET#1\endcsname\relax
- \expandafter\ifsetfail
- \else
- \expandafter\ifsetsucceed
- \fi
-}
-\def\ifsetsucceed{\conditionalsucceed{ifset}}
-\def\ifsetfail{\nestedignore{ifset}}
-\defineunmatchedend{ifset}
-
-% @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been
-% defined with @set, or has been undefined with @clear.
-%
-\def\ifclear{\parsearg\ifclearxxx}
-\def\ifclearxxx #1{%
- \expandafter\ifx\csname SET#1\endcsname\relax
- \expandafter\ifclearsucceed
- \else
- \expandafter\ifclearfail
- \fi
-}
-\def\ifclearsucceed{\conditionalsucceed{ifclear}}
-\def\ifclearfail{\nestedignore{ifclear}}
-\defineunmatchedend{ifclear}
-
-% @iftex, @ifnothtml, @ifnotinfo always succeed; we read the text
-% following, through the first @end iftex (etc.). Make `@end iftex'
-% (etc.) valid only after an @iftex.
-%
-\def\iftex{\conditionalsucceed{iftex}}
-\def\ifnothtml{\conditionalsucceed{ifnothtml}}
-\def\ifnotinfo{\conditionalsucceed{ifnotinfo}}
-\defineunmatchedend{iftex}
-\defineunmatchedend{ifnothtml}
-\defineunmatchedend{ifnotinfo}
-
-% We can't just want to start a group at @iftex (for example) and end it
-% at @end iftex, since then @set commands inside the conditional have no
-% effect (they'd get reverted at the end of the group). So we must
-% define \Eiftex to redefine itself to be its previous value. (We can't
-% just define it to fail again with an ``unmatched end'' error, since
-% the @ifset might be nested.)
-%
-\def\conditionalsucceed#1{%
- \edef\temp{%
- % Remember the current value of \E#1.
- \let\nece{prevE#1} = \nece{E#1}%
- %
- % At the `@end #1', redefine \E#1 to be its previous value.
- \def\nece{E#1}{\let\nece{E#1} = \nece{prevE#1}}%
- }%
- \temp
-}
-
-% We need to expand lots of \csname's, but we don't want to expand the
-% control sequences after we've constructed them.
-%
-\def\nece#1{\expandafter\noexpand\csname#1\endcsname}
-
-% @defininfoenclose.
-\let\definfoenclose=\comment
-
-
-\message{indexing,}
-% Index generation facilities
-
-% Define \newwrite to be identical to plain tex's \newwrite
-% except not \outer, so it can be used within \newindex.
-{\catcode`\@=11
-\gdef\newwrite{\alloc@7\write\chardef\sixt@@n}}
-
-% \newindex {foo} defines an index named foo.
-% It automatically defines \fooindex such that
-% \fooindex ...rest of line... puts an entry in the index foo.
-% It also defines \fooindfile to be the number of the output channel for
-% the file that accumulates this index. The file's extension is foo.
-% The name of an index should be no more than 2 characters long
-% for the sake of vms.
-%
-\def\newindex#1{%
- \iflinks
- \expandafter\newwrite \csname#1indfile\endcsname
- \openout \csname#1indfile\endcsname \jobname.#1 % Open the file
- \fi
- \expandafter\xdef\csname#1index\endcsname{% % Define @#1index
- \noexpand\doindex{#1}}
-}
-
-% @defindex foo == \newindex{foo}
-
-\def\defindex{\parsearg\newindex}
-
-% Define @defcodeindex, like @defindex except put all entries in @code.
-
-\def\newcodeindex#1{%
- \iflinks
- \expandafter\newwrite \csname#1indfile\endcsname
- \openout \csname#1indfile\endcsname \jobname.#1
- \fi
- \expandafter\xdef\csname#1index\endcsname{%
- \noexpand\docodeindex{#1}}
-}
-
-\def\defcodeindex{\parsearg\newcodeindex}
-
-% @synindex foo bar makes index foo feed into index bar.
-% Do this instead of @defindex foo if you don't want it as a separate index.
-% The \closeout helps reduce unnecessary open files; the limit on the
-% Acorn RISC OS is a mere 16 files.
-\def\synindex#1 #2 {%
- \expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname
- \expandafter\closeout\csname#1indfile\endcsname
- \expandafter\let\csname#1indfile\endcsname=\synindexfoo
- \expandafter\xdef\csname#1index\endcsname{% define \xxxindex
- \noexpand\doindex{#2}}%
-}
-
-% @syncodeindex foo bar similar, but put all entries made for index foo
-% inside @code.
-\def\syncodeindex#1 #2 {%
- \expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname
- \expandafter\closeout\csname#1indfile\endcsname
- \expandafter\let\csname#1indfile\endcsname=\synindexfoo
- \expandafter\xdef\csname#1index\endcsname{% define \xxxindex
- \noexpand\docodeindex{#2}}%
-}
-
-% Define \doindex, the driver for all \fooindex macros.
-% Argument #1 is generated by the calling \fooindex macro,
-% and it is "foo", the name of the index.
-
-% \doindex just uses \parsearg; it calls \doind for the actual work.
-% This is because \doind is more useful to call from other macros.
-
-% There is also \dosubind {index}{topic}{subtopic}
-% which makes an entry in a two-level index such as the operation index.
-
-\def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer}
-\def\singleindexer #1{\doind{\indexname}{#1}}
-
-% like the previous two, but they put @code around the argument.
-\def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer}
-\def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}}
-
-\def\indexdummies{%
-\def\ { }%
-% Take care of the plain tex accent commands.
-\def\"{\realbackslash "}%
-\def\`{\realbackslash `}%
-\def\'{\realbackslash '}%
-\def\^{\realbackslash ^}%
-\def\~{\realbackslash ~}%
-\def\={\realbackslash =}%
-\def\b{\realbackslash b}%
-\def\c{\realbackslash c}%
-\def\d{\realbackslash d}%
-\def\u{\realbackslash u}%
-\def\v{\realbackslash v}%
-\def\H{\realbackslash H}%
-% Take care of the plain tex special European modified letters.
-\def\oe{\realbackslash oe}%
-\def\ae{\realbackslash ae}%
-\def\aa{\realbackslash aa}%
-\def\OE{\realbackslash OE}%
-\def\AE{\realbackslash AE}%
-\def\AA{\realbackslash AA}%
-\def\o{\realbackslash o}%
-\def\O{\realbackslash O}%
-\def\l{\realbackslash l}%
-\def\L{\realbackslash L}%
-\def\ss{\realbackslash ss}%
-% Take care of texinfo commands likely to appear in an index entry.
-% (Must be a way to avoid doing expansion at all, and thus not have to
-% laboriously list every single command here.)
-\def\@{@}% will be @@ when we switch to @ as escape char.
-% Need these in case \tex is in effect and \{ is a \delimiter again.
-% But can't use \lbracecmd and \rbracecmd because texindex assumes
-% braces and backslashes are used only as delimiters.
-\let\{ = \mylbrace
-\let\} = \myrbrace
-\def\_{{\realbackslash _}}%
-\def\w{\realbackslash w }%
-\def\bf{\realbackslash bf }%
-%\def\rm{\realbackslash rm }%
-\def\sl{\realbackslash sl }%
-\def\sf{\realbackslash sf}%
-\def\tt{\realbackslash tt}%
-\def\gtr{\realbackslash gtr}%
-\def\less{\realbackslash less}%
-\def\hat{\realbackslash hat}%
-\def\TeX{\realbackslash TeX}%
-\def\dots{\realbackslash dots }%
-\def\result{\realbackslash result}%
-\def\equiv{\realbackslash equiv}%
-\def\expansion{\realbackslash expansion}%
-\def\print{\realbackslash print}%
-\def\error{\realbackslash error}%
-\def\point{\realbackslash point}%
-\def\copyright{\realbackslash copyright}%
-\def\tclose##1{\realbackslash tclose {##1}}%
-\def\code##1{\realbackslash code {##1}}%
-\def\uref##1{\realbackslash uref {##1}}%
-\def\url##1{\realbackslash url {##1}}%
-\def\env##1{\realbackslash env {##1}}%
-\def\command##1{\realbackslash command {##1}}%
-\def\option##1{\realbackslash option {##1}}%
-\def\dotless##1{\realbackslash dotless {##1}}%
-\def\samp##1{\realbackslash samp {##1}}%
-\def\,##1{\realbackslash ,{##1}}%
-\def\t##1{\realbackslash t {##1}}%
-\def\r##1{\realbackslash r {##1}}%
-\def\i##1{\realbackslash i {##1}}%
-\def\b##1{\realbackslash b {##1}}%
-\def\sc##1{\realbackslash sc {##1}}%
-\def\cite##1{\realbackslash cite {##1}}%
-\def\key##1{\realbackslash key {##1}}%
-\def\file##1{\realbackslash file {##1}}%
-\def\var##1{\realbackslash var {##1}}%
-\def\kbd##1{\realbackslash kbd {##1}}%
-\def\dfn##1{\realbackslash dfn {##1}}%
-\def\emph##1{\realbackslash emph {##1}}%
-\def\acronym##1{\realbackslash acronym {##1}}%
-%
-% Handle some cases of @value -- where the variable name does not
-% contain - or _, and the value does not contain any
-% (non-fully-expandable) commands.
-\let\value = \expandablevalue
-%
-\unsepspaces
-% Turn off macro expansion
-\turnoffmacros
-}
-
-% If an index command is used in an @example environment, any spaces
-% therein should become regular spaces in the raw index file, not the
-% expansion of \tie (\\leavevmode \penalty \@M \ ).
-{\obeyspaces
- \gdef\unsepspaces{\obeyspaces\let =\space}}
-
-% \indexnofonts no-ops all font-change commands.
-% This is used when outputting the strings to sort the index by.
-\def\indexdummyfont#1{#1}
-\def\indexdummytex{TeX}
-\def\indexdummydots{...}
-
-\def\indexnofonts{%
-% Just ignore accents.
-\let\,=\indexdummyfont
-\let\"=\indexdummyfont
-\let\`=\indexdummyfont
-\let\'=\indexdummyfont
-\let\^=\indexdummyfont
-\let\~=\indexdummyfont
-\let\==\indexdummyfont
-\let\b=\indexdummyfont
-\let\c=\indexdummyfont
-\let\d=\indexdummyfont
-\let\u=\indexdummyfont
-\let\v=\indexdummyfont
-\let\H=\indexdummyfont
-\let\dotless=\indexdummyfont
-% Take care of the plain tex special European modified letters.
-\def\oe{oe}%
-\def\ae{ae}%
-\def\aa{aa}%
-\def\OE{OE}%
-\def\AE{AE}%
-\def\AA{AA}%
-\def\o{o}%
-\def\O{O}%
-\def\l{l}%
-\def\L{L}%
-\def\ss{ss}%
-\let\w=\indexdummyfont
-\let\t=\indexdummyfont
-\let\r=\indexdummyfont
-\let\i=\indexdummyfont
-\let\b=\indexdummyfont
-\let\emph=\indexdummyfont
-\let\strong=\indexdummyfont
-\let\cite=\indexdummyfont
-\let\sc=\indexdummyfont
-%Don't no-op \tt, since it isn't a user-level command
-% and is used in the definitions of the active chars like <, >, |...
-%\let\tt=\indexdummyfont
-\let\tclose=\indexdummyfont
-\let\code=\indexdummyfont
-\let\url=\indexdummyfont
-\let\uref=\indexdummyfont
-\let\env=\indexdummyfont
-\let\acronym=\indexdummyfont
-\let\command=\indexdummyfont
-\let\option=\indexdummyfont
-\let\file=\indexdummyfont
-\let\samp=\indexdummyfont
-\let\kbd=\indexdummyfont
-\let\key=\indexdummyfont
-\let\var=\indexdummyfont
-\let\TeX=\indexdummytex
-\let\dots=\indexdummydots
-\def\@{@}%
-}
-
-% To define \realbackslash, we must make \ not be an escape.
-% We must first make another character (@) an escape
-% so we do not become unable to do a definition.
-
-{\catcode`\@=0 \catcode`\\=\other
- @gdef@realbackslash{\}}
-
-\let\indexbackslash=0 %overridden during \printindex.
-\let\SETmarginindex=\relax % put index entries in margin (undocumented)?
-
-% For \ifx comparisons.
-\def\emptymacro{\empty}
-
-% Most index entries go through here, but \dosubind is the general case.
-%
-\def\doind#1#2{\dosubind{#1}{#2}\empty}
-
-% Workhorse for all \fooindexes.
-% #1 is name of index, #2 is stuff to put there, #3 is subentry --
-% \empty if called from \doind, as we usually are. The main exception
-% is with defuns, which call us directly.
-%
-\def\dosubind#1#2#3{%
- % Put the index entry in the margin if desired.
- \ifx\SETmarginindex\relax\else
- \insert\margin{\hbox{\vrule height8pt depth3pt width0pt #2}}%
- \fi
- {%
- \count255=\lastpenalty
- {%
- \indexdummies % Must do this here, since \bf, etc expand at this stage
- \escapechar=`\\
- {%
- \let\folio = 0% We will expand all macros now EXCEPT \folio.
- \def\rawbackslashxx{\indexbackslash}% \indexbackslash isn't defined now
- % so it will be output as is; and it will print as backslash.
- %
- \def\thirdarg{#3}%
- %
- % If third arg is present, precede it with space in sort key.
- \ifx\thirdarg\emptymacro
- \let\subentry = \empty
- \else
- \def\subentry{ #3}%
- \fi
- %
- % First process the index entry with all font commands turned
- % off to get the string to sort by.
- {\indexnofonts \xdef\indexsorttmp{#2\subentry}}%
- %
- % Now the real index entry with the fonts.
- \toks0 = {#2}%
- %
- % If third (subentry) arg is present, add it to the index
- % string. And include a space.
- \ifx\thirdarg\emptymacro \else
- \toks0 = \expandafter{\the\toks0 \space #3}%
- \fi
- %
- % Set up the complete index entry, with both the sort key
- % and the original text, including any font commands. We write
- % three arguments to \entry to the .?? file, texindex reduces to
- % two when writing the .??s sorted result.
- \edef\temp{%
- \write\csname#1indfile\endcsname{%
- \realbackslash entry{\indexsorttmp}{\folio}{\the\toks0}}%
- }%
- %
- % If a skip is the last thing on the list now, preserve it
- % by backing up by \lastskip, doing the \write, then inserting
- % the skip again. Otherwise, the whatsit generated by the
- % \write will make \lastskip zero. The result is that sequences
- % like this:
- % @end defun
- % @tindex whatever
- % @defun ...
- % will have extra space inserted, because the \medbreak in the
- % start of the @defun won't see the skip inserted by the @end of
- % the previous defun.
- %
- % But don't do any of this if we're not in vertical mode. We
- % don't want to do a \vskip and prematurely end a paragraph.
- %
- % Avoid page breaks due to these extra skips, too.
- %
- \iflinks
- \ifvmode
- \skip0 = \lastskip
- \ifdim\lastskip = 0pt \else \nobreak\vskip-\lastskip \fi
- \fi
- %
- \temp % do the write
- %
- %
- \ifvmode \ifdim\skip0 = 0pt \else \nobreak\vskip\skip0 \fi \fi
- \fi
- }%
- }%
- \penalty\count255
- }%
-}
-
-% The index entry written in the file actually looks like
-% \entry {sortstring}{page}{topic}
-% or
-% \entry {sortstring}{page}{topic}{subtopic}
-% The texindex program reads in these files and writes files
-% containing these kinds of lines:
-% \initial {c}
-% before the first topic whose initial is c
-% \entry {topic}{pagelist}
-% for a topic that is used without subtopics
-% \primary {topic}
-% for the beginning of a topic that is used with subtopics
-% \secondary {subtopic}{pagelist}
-% for each subtopic.
-
-% Define the user-accessible indexing commands
-% @findex, @vindex, @kindex, @cindex.
-
-\def\findex {\fnindex}
-\def\kindex {\kyindex}
-\def\cindex {\cpindex}
-\def\vindex {\vrindex}
-\def\tindex {\tpindex}
-\def\pindex {\pgindex}
-
-\def\cindexsub {\begingroup\obeylines\cindexsub}
-{\obeylines %
-\gdef\cindexsub "#1" #2^^M{\endgroup %
-\dosubind{cp}{#2}{#1}}}
-
-% Define the macros used in formatting output of the sorted index material.
-
-% @printindex causes a particular index (the ??s file) to get printed.
-% It does not print any chapter heading (usually an @unnumbered).
-%
-\def\printindex{\parsearg\doprintindex}
-\def\doprintindex#1{\begingroup
- \dobreak \chapheadingskip{10000}%
- %
- \smallfonts \rm
- \tolerance = 9500
- \indexbreaks
- %
- % See if the index file exists and is nonempty.
- % Change catcode of @ here so that if the index file contains
- % \initial {@}
- % as its first line, TeX doesn't complain about mismatched braces
- % (because it thinks @} is a control sequence).
- \catcode`\@ = 11
- \openin 1 \jobname.#1s
- \ifeof 1
- % \enddoublecolumns gets confused if there is no text in the index,
- % and it loses the chapter title and the aux file entries for the
- % index. The easiest way to prevent this problem is to make sure
- % there is some text.
- \putwordIndexNonexistent
- \else
- %
- % If the index file exists but is empty, then \openin leaves \ifeof
- % false. We have to make TeX try to read something from the file, so
- % it can discover if there is anything in it.
- \read 1 to \temp
- \ifeof 1
- \putwordIndexIsEmpty
- \else
- % Index files are almost Texinfo source, but we use \ as the escape
- % character. It would be better to use @, but that's too big a change
- % to make right now.
- \def\indexbackslash{\rawbackslashxx}%
- \catcode`\\ = 0
- \escapechar = `\\
- \begindoublecolumns
- \input \jobname.#1s
- \enddoublecolumns
- \fi
- \fi
- \closein 1
-\endgroup}
-
-% These macros are used by the sorted index file itself.
-% Change them to control the appearance of the index.
-
-\def\initial#1{{%
- % Some minor font changes for the special characters.
- \let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt
- %
- % Remove any glue we may have, we'll be inserting our own.
- \removelastskip
- %
- % We like breaks before the index initials, so insert a bonus.
- \penalty -300
- %
- % Typeset the initial. Making this add up to a whole number of
- % baselineskips increases the chance of the dots lining up from column
- % to column. It still won't often be perfect, because of the stretch
- % we need before each entry, but it's better.
- %
- % No shrink because it confuses \balancecolumns.
- \vskip 1.67\baselineskip plus .5\baselineskip
- \leftline{\secbf #1}%
- \vskip .33\baselineskip plus .1\baselineskip
- %
- % Do our best not to break after the initial.
- \nobreak
-}}
-
-% This typesets a paragraph consisting of #1, dot leaders, and then #2
-% flush to the right margin. It is used for index and table of contents
-% entries. The paragraph is indented by \leftskip.
-%
-\def\entry#1#2{\begingroup
- %
- % Start a new paragraph if necessary, so our assignments below can't
- % affect previous text.
- \par
- %
- % Do not fill out the last line with white space.
- \parfillskip = 0in
- %
- % No extra space above this paragraph.
- \parskip = 0in
- %
- % Do not prefer a separate line ending with a hyphen to fewer lines.
- \finalhyphendemerits = 0
- %
- % \hangindent is only relevant when the entry text and page number
- % don't both fit on one line. In that case, bob suggests starting the
- % dots pretty far over on the line. Unfortunately, a large
- % indentation looks wrong when the entry text itself is broken across
- % lines. So we use a small indentation and put up with long leaders.
- %
- % \hangafter is reset to 1 (which is the value we want) at the start
- % of each paragraph, so we need not do anything with that.
- \hangindent = 2em
- %
- % When the entry text needs to be broken, just fill out the first line
- % with blank space.
- \rightskip = 0pt plus1fil
- %
- % A bit of stretch before each entry for the benefit of balancing columns.
- \vskip 0pt plus1pt
- %
- % Start a ``paragraph'' for the index entry so the line breaking
- % parameters we've set above will have an effect.
- \noindent
- %
- % Insert the text of the index entry. TeX will do line-breaking on it.
- #1%
- % The following is kludged to not output a line of dots in the index if
- % there are no page numbers. The next person who breaks this will be
- % cursed by a Unix daemon.
- \def\tempa{{\rm }}%
- \def\tempb{#2}%
- \edef\tempc{\tempa}%
- \edef\tempd{\tempb}%
- \ifx\tempc\tempd\ \else%
- %
- % If we must, put the page number on a line of its own, and fill out
- % this line with blank space. (The \hfil is overwhelmed with the
- % fill leaders glue in \indexdotfill if the page number does fit.)
- \hfil\penalty50
- \null\nobreak\indexdotfill % Have leaders before the page number.
- %
- % The `\ ' here is removed by the implicit \unskip that TeX does as
- % part of (the primitive) \par. Without it, a spurious underfull
- % \hbox ensues.
- \ifpdf
- \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph.
- \else
- \ #2% The page number ends the paragraph.
- \fi
- \fi%
- \par
-\endgroup}
-
-% Like \dotfill except takes at least 1 em.
-\def\indexdotfill{\cleaders
- \hbox{$\mathsurround=0pt \mkern1.5mu ${\it .}$ \mkern1.5mu$}\hskip 1em plus 1fill}
-
-\def\primary #1{\line{#1\hfil}}
-
-\newskip\secondaryindent \secondaryindent=0.5cm
-
-\def\secondary #1#2{
-{\parfillskip=0in \parskip=0in
-\hangindent =1in \hangafter=1
-\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\par
-}}
-
-% Define two-column mode, which we use to typeset indexes.
-% Adapted from the TeXbook, page 416, which is to say,
-% the manmac.tex format used to print the TeXbook itself.
-\catcode`\@=11
-
-\newbox\partialpage
-\newdimen\doublecolumnhsize
-
-\def\begindoublecolumns{\begingroup % ended by \enddoublecolumns
- % Grab any single-column material above us.
- \output = {%
- %
- % Here is a possibility not foreseen in manmac: if we accumulate a
- % whole lot of material, we might end up calling this \output
- % routine twice in a row (see the doublecol-lose test, which is
- % essentially a couple of indexes with @setchapternewpage off). In
- % that case we just ship out what is in \partialpage with the normal
- % output routine. Generally, \partialpage will be empty when this
- % runs and this will be a no-op. See the indexspread.tex test case.
- \ifvoid\partialpage \else
- \onepageout{\pagecontents\partialpage}%
- \fi
- %
- \global\setbox\partialpage = \vbox{%
- % Unvbox the main output page.
- \unvbox\PAGE
- \kern-\topskip \kern\baselineskip
- }%
- }%
- \eject % run that output routine to set \partialpage
- %
- % Use the double-column output routine for subsequent pages.
- \output = {\doublecolumnout}%
- %
- % Change the page size parameters. We could do this once outside this
- % routine, in each of @smallbook, @afourpaper, and the default 8.5x11
- % format, but then we repeat the same computation. Repeating a couple
- % of assignments once per index is clearly meaningless for the
- % execution time, so we may as well do it in one place.
- %
- % First we halve the line length, less a little for the gutter between
- % the columns. We compute the gutter based on the line length, so it
- % changes automatically with the paper format. The magic constant
- % below is chosen so that the gutter has the same value (well, +-<1pt)
- % as it did when we hard-coded it.
- %
- % We put the result in a separate register, \doublecolumhsize, so we
- % can restore it in \pagesofar, after \hsize itself has (potentially)
- % been clobbered.
- %
- \doublecolumnhsize = \hsize
- \advance\doublecolumnhsize by -.04154\hsize
- \divide\doublecolumnhsize by 2
- \hsize = \doublecolumnhsize
- %
- % Double the \vsize as well. (We don't need a separate register here,
- % since nobody clobbers \vsize.)
- \advance\vsize by -\ht\partialpage
- \vsize = 2\vsize
-}
-
-% The double-column output routine for all double-column pages except
-% the last.
-%
-\def\doublecolumnout{%
- \splittopskip=\topskip \splitmaxdepth=\maxdepth
- % Get the available space for the double columns -- the normal
- % (undoubled) page height minus any material left over from the
- % previous page.
- \dimen@ = \vsize
- \divide\dimen@ by 2
- %
- % box0 will be the left-hand column, box2 the right.
- \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@
- \onepageout\pagesofar
- \unvbox255
- \penalty\outputpenalty
-}
-\def\pagesofar{%
- % Re-output the contents of the output page -- any previous material,
- % followed by the two boxes we just split, in box0 and box2.
- \unvbox\partialpage
- %
- \hsize = \doublecolumnhsize
- \wd0=\hsize \wd2=\hsize
- \hbox to\pagewidth{\box0\hfil\box2}%
-}
-\def\enddoublecolumns{%
- \output = {%
- % Split the last of the double-column material. Leave it on the
- % current page, no automatic page break.
- \balancecolumns
- %
- % If we end up splitting too much material for the current page,
- % though, there will be another page break right after this \output
- % invocation ends. Having called \balancecolumns once, we do not
- % want to call it again. Therefore, reset \output to its normal
- % definition right away. (We hope \balancecolumns will never be
- % called on to balance too much material, but if it is, this makes
- % the output somewhat more palatable.)
- \global\output = {\onepageout{\pagecontents\PAGE}}%
- }%
- \eject
- \endgroup % started in \begindoublecolumns
- %
- % \pagegoal was set to the doubled \vsize above, since we restarted
- % the current page. We're now back to normal single-column
- % typesetting, so reset \pagegoal to the normal \vsize (after the
- % \endgroup where \vsize got restored).
- \pagegoal = \vsize
-}
-\def\balancecolumns{%
- % Called at the end of the double column material.
- \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120.
- \dimen@ = \ht0
- \advance\dimen@ by \topskip
- \advance\dimen@ by-\baselineskip
- \divide\dimen@ by 2 % target to split to
- %debug\message{final 2-column material height=\the\ht0, target=\the\dimen@.}%
- \splittopskip = \topskip
- % Loop until we get a decent breakpoint.
- {%
- \vbadness = 10000
- \loop
- \global\setbox3 = \copy0
- \global\setbox1 = \vsplit3 to \dimen@
- \ifdim\ht3>\dimen@
- \global\advance\dimen@ by 1pt
- \repeat
- }%
- %debug\message{split to \the\dimen@, column heights: \the\ht1, \the\ht3.}%
- \setbox0=\vbox to\dimen@{\unvbox1}%
- \setbox2=\vbox to\dimen@{\unvbox3}%
- %
- \pagesofar
-}
-\catcode`\@ = \other
-
-
-\message{sectioning,}
-% Chapters, sections, etc.
-
-\newcount\chapno
-\newcount\secno \secno=0
-\newcount\subsecno \subsecno=0
-\newcount\subsubsecno \subsubsecno=0
-
-% This counter is funny since it counts through charcodes of letters A, B, ...
-\newcount\appendixno \appendixno = `\@
-% \def\appendixletter{\char\the\appendixno}
-% We do the following for the sake of pdftex, which needs the actual
-% letter in the expansion, not just typeset.
-\def\appendixletter{%
- \ifnum\appendixno=`A A%
- \else\ifnum\appendixno=`B B%
- \else\ifnum\appendixno=`C C%
- \else\ifnum\appendixno=`D D%
- \else\ifnum\appendixno=`E E%
- \else\ifnum\appendixno=`F F%
- \else\ifnum\appendixno=`G G%
- \else\ifnum\appendixno=`H H%
- \else\ifnum\appendixno=`I I%
- \else\ifnum\appendixno=`J J%
- \else\ifnum\appendixno=`K K%
- \else\ifnum\appendixno=`L L%
- \else\ifnum\appendixno=`M M%
- \else\ifnum\appendixno=`N N%
- \else\ifnum\appendixno=`O O%
- \else\ifnum\appendixno=`P P%
- \else\ifnum\appendixno=`Q Q%
- \else\ifnum\appendixno=`R R%
- \else\ifnum\appendixno=`S S%
- \else\ifnum\appendixno=`T T%
- \else\ifnum\appendixno=`U U%
- \else\ifnum\appendixno=`V V%
- \else\ifnum\appendixno=`W W%
- \else\ifnum\appendixno=`X X%
- \else\ifnum\appendixno=`Y Y%
- \else\ifnum\appendixno=`Z Z%
- % The \the is necessary, despite appearances, because \appendixletter is
- % expanded while writing the .toc file. \char\appendixno is not
- % expandable, thus it is written literally, thus all appendixes come out
- % with the same letter (or @) in the toc without it.
- \else\char\the\appendixno
- \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
- \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
-
-% Each @chapter defines this as the name of the chapter.
-% page headings and footings can use it. @section does likewise.
-\def\thischapter{}
-\def\thissection{}
-
-\newcount\absseclevel % used to calculate proper heading level
-\newcount\secbase\secbase=0 % @raise/lowersections modify this count
-
-% @raisesections: treat @section as chapter, @subsection as section, etc.
-\def\raisesections{\global\advance\secbase by -1}
-\let\up=\raisesections % original BFox name
-
-% @lowersections: treat @chapter as section, @section as subsection, etc.
-\def\lowersections{\global\advance\secbase by 1}
-\let\down=\lowersections % original BFox name
-
-% Choose a numbered-heading macro
-% #1 is heading level if unmodified by @raisesections or @lowersections
-% #2 is text for heading
-\def\numhead#1#2{\absseclevel=\secbase\advance\absseclevel by #1
-\ifcase\absseclevel
- \chapterzzz{#2}
-\or
- \seczzz{#2}
-\or
- \numberedsubseczzz{#2}
-\or
- \numberedsubsubseczzz{#2}
-\else
- \ifnum \absseclevel<0
- \chapterzzz{#2}
- \else
- \numberedsubsubseczzz{#2}
- \fi
-\fi
-}
-
-% like \numhead, but chooses appendix heading levels
-\def\apphead#1#2{\absseclevel=\secbase\advance\absseclevel by #1
-\ifcase\absseclevel
- \appendixzzz{#2}
-\or
- \appendixsectionzzz{#2}
-\or
- \appendixsubseczzz{#2}
-\or
- \appendixsubsubseczzz{#2}
-\else
- \ifnum \absseclevel<0
- \appendixzzz{#2}
- \else
- \appendixsubsubseczzz{#2}
- \fi
-\fi
-}
-
-% like \numhead, but chooses numberless heading levels
-\def\unnmhead#1#2{\absseclevel=\secbase\advance\absseclevel by #1
-\ifcase\absseclevel
- \unnumberedzzz{#2}
-\or
- \unnumberedseczzz{#2}
-\or
- \unnumberedsubseczzz{#2}
-\or
- \unnumberedsubsubseczzz{#2}
-\else
- \ifnum \absseclevel<0
- \unnumberedzzz{#2}
- \else
- \unnumberedsubsubseczzz{#2}
- \fi
-\fi
-}
-
-% @chapter, @appendix, @unnumbered.
-\def\thischaptername{No Chapter Title}
-\outer\def\chapter{\parsearg\chapteryyy}
-\def\chapteryyy #1{\numhead0{#1}} % normally numhead0 calls chapterzzz
-\def\chapterzzz #1{%
-\secno=0 \subsecno=0 \subsubsecno=0
-\global\advance \chapno by 1 \message{\putwordChapter\space \the\chapno}%
-\chapmacro {#1}{\the\chapno}%
-\gdef\thissection{#1}%
-\gdef\thischaptername{#1}%
-% We don't substitute the actual chapter name into \thischapter
-% because we don't want its macros evaluated now.
-\xdef\thischapter{\putwordChapter{} \the\chapno: \noexpand\thischaptername}%
-\toks0 = {#1}%
-\edef\temp{\noexpand\writetocentry{\realbackslash chapentry{\the\toks0}%
- {\the\chapno}}}%
-\temp
-\donoderef
-\global\let\section = \numberedsec
-\global\let\subsection = \numberedsubsec
-\global\let\subsubsection = \numberedsubsubsec
-}
-
-\outer\def\appendix{\parsearg\appendixyyy}
-\def\appendixyyy #1{\apphead0{#1}} % normally apphead0 calls appendixzzz
-\def\appendixzzz #1{%
-\secno=0 \subsecno=0 \subsubsecno=0
-\global\advance \appendixno by 1
-\message{\putwordAppendix\space \appendixletter}%
-\chapmacro {#1}{\putwordAppendix{} \appendixletter}%
-\gdef\thissection{#1}%
-\gdef\thischaptername{#1}%
-\xdef\thischapter{\putwordAppendix{} \appendixletter: \noexpand\thischaptername}%
-\toks0 = {#1}%
-\edef\temp{\noexpand\writetocentry{\realbackslash chapentry{\the\toks0}%
- {\putwordAppendix{} \appendixletter}}}%
-\temp
-\appendixnoderef
-\global\let\section = \appendixsec
-\global\let\subsection = \appendixsubsec
-\global\let\subsubsection = \appendixsubsubsec
-}
-
-% @centerchap is like @unnumbered, but the heading is centered.
-\outer\def\centerchap{\parsearg\centerchapyyy}
-\def\centerchapyyy #1{{\let\unnumbchapmacro=\centerchapmacro \unnumberedyyy{#1}}}
-
-% @top is like @unnumbered.
-\outer\def\top{\parsearg\unnumberedyyy}
-
-\outer\def\unnumbered{\parsearg\unnumberedyyy}
-\def\unnumberedyyy #1{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz
-\def\unnumberedzzz #1{%
-\secno=0 \subsecno=0 \subsubsecno=0
-%
-% This used to be simply \message{#1}, but TeX fully expands the
-% argument to \message. Therefore, if #1 contained @-commands, TeX
-% expanded them. For example, in `@unnumbered The @cite{Book}', TeX
-% expanded @cite (which turns out to cause errors because \cite is meant
-% to be executed, not expanded).
-%
-% Anyway, we don't want the fully-expanded definition of @cite to appear
-% as a result of the \message, we just want `@cite' itself. We use
-% \the<toks register> to achieve this: TeX expands \the<toks> only once,
-% simply yielding the contents of <toks register>. (We also do this for
-% the toc entries.)
-\toks0 = {#1}\message{(\the\toks0)}%
-%
-\unnumbchapmacro {#1}%
-\gdef\thischapter{#1}\gdef\thissection{#1}%
-\toks0 = {#1}%
-\edef\temp{\noexpand\writetocentry{\realbackslash unnumbchapentry{\the\toks0}}}%
-\temp
-\unnumbnoderef
-\global\let\section = \unnumberedsec
-\global\let\subsection = \unnumberedsubsec
-\global\let\subsubsection = \unnumberedsubsubsec
-}
-
-% Sections.
-\outer\def\numberedsec{\parsearg\secyyy}
-\def\secyyy #1{\numhead1{#1}} % normally calls seczzz
-\def\seczzz #1{%
-\subsecno=0 \subsubsecno=0 \global\advance \secno by 1 %
-\gdef\thissection{#1}\secheading {#1}{\the\chapno}{\the\secno}%
-\toks0 = {#1}%
-\edef\temp{\noexpand\writetocentry{\realbackslash secentry{\the\toks0}%
- {\the\chapno}{\the\secno}}}%
-\temp
-\donoderef
-\nobreak
-}
-
-\outer\def\appendixsection{\parsearg\appendixsecyyy}
-\outer\def\appendixsec{\parsearg\appendixsecyyy}
-\def\appendixsecyyy #1{\apphead1{#1}} % normally calls appendixsectionzzz
-\def\appendixsectionzzz #1{%
-\subsecno=0 \subsubsecno=0 \global\advance \secno by 1 %
-\gdef\thissection{#1}\secheading {#1}{\appendixletter}{\the\secno}%
-\toks0 = {#1}%
-\edef\temp{\noexpand\writetocentry{\realbackslash secentry{\the\toks0}%
- {\appendixletter}{\the\secno}}}%
-\temp
-\appendixnoderef
-\nobreak
-}
-
-\outer\def\unnumberedsec{\parsearg\unnumberedsecyyy}
-\def\unnumberedsecyyy #1{\unnmhead1{#1}} % normally calls unnumberedseczzz
-\def\unnumberedseczzz #1{%
-\plainsecheading {#1}\gdef\thissection{#1}%
-\toks0 = {#1}%
-\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsecentry{\the\toks0}}}%
-\temp
-\unnumbnoderef
-\nobreak
-}
-
-% Subsections.
-\outer\def\numberedsubsec{\parsearg\numberedsubsecyyy}
-\def\numberedsubsecyyy #1{\numhead2{#1}} % normally calls numberedsubseczzz
-\def\numberedsubseczzz #1{%
-\gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 %
-\subsecheading {#1}{\the\chapno}{\the\secno}{\the\subsecno}%
-\toks0 = {#1}%
-\edef\temp{\noexpand\writetocentry{\realbackslash subsecentry{\the\toks0}%
- {\the\chapno}{\the\secno}{\the\subsecno}}}%
-\temp
-\donoderef
-\nobreak
-}
-
-\outer\def\appendixsubsec{\parsearg\appendixsubsecyyy}
-\def\appendixsubsecyyy #1{\apphead2{#1}} % normally calls appendixsubseczzz
-\def\appendixsubseczzz #1{%
-\gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 %
-\subsecheading {#1}{\appendixletter}{\the\secno}{\the\subsecno}%
-\toks0 = {#1}%
-\edef\temp{\noexpand\writetocentry{\realbackslash subsecentry{\the\toks0}%
- {\appendixletter}{\the\secno}{\the\subsecno}}}%
-\temp
-\appendixnoderef
-\nobreak
-}
-
-\outer\def\unnumberedsubsec{\parsearg\unnumberedsubsecyyy}
-\def\unnumberedsubsecyyy #1{\unnmhead2{#1}} %normally calls unnumberedsubseczzz
-\def\unnumberedsubseczzz #1{%
-\plainsubsecheading {#1}\gdef\thissection{#1}%
-\toks0 = {#1}%
-\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsecentry%
- {\the\toks0}}}%
-\temp
-\unnumbnoderef
-\nobreak
-}
-
-% Subsubsections.
-\outer\def\numberedsubsubsec{\parsearg\numberedsubsubsecyyy}
-\def\numberedsubsubsecyyy #1{\numhead3{#1}} % normally numberedsubsubseczzz
-\def\numberedsubsubseczzz #1{%
-\gdef\thissection{#1}\global\advance \subsubsecno by 1 %
-\subsubsecheading {#1}
- {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}%
-\toks0 = {#1}%
-\edef\temp{\noexpand\writetocentry{\realbackslash subsubsecentry{\the\toks0}%
- {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}}}%
-\temp
-\donoderef
-\nobreak
-}
-
-\outer\def\appendixsubsubsec{\parsearg\appendixsubsubsecyyy}
-\def\appendixsubsubsecyyy #1{\apphead3{#1}} % normally appendixsubsubseczzz
-\def\appendixsubsubseczzz #1{%
-\gdef\thissection{#1}\global\advance \subsubsecno by 1 %
-\subsubsecheading {#1}
- {\appendixletter}{\the\secno}{\the\subsecno}{\the\subsubsecno}%
-\toks0 = {#1}%
-\edef\temp{\noexpand\writetocentry{\realbackslash subsubsecentry{\the\toks0}%
- {\appendixletter}{\the\secno}{\the\subsecno}{\the\subsubsecno}}}%
-\temp
-\appendixnoderef
-\nobreak
-}
-
-\outer\def\unnumberedsubsubsec{\parsearg\unnumberedsubsubsecyyy}
-\def\unnumberedsubsubsecyyy #1{\unnmhead3{#1}} %normally unnumberedsubsubseczzz
-\def\unnumberedsubsubseczzz #1{%
-\plainsubsubsecheading {#1}\gdef\thissection{#1}%
-\toks0 = {#1}%
-\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsubsecentry%
- {\the\toks0}}}%
-\temp
-\unnumbnoderef
-\nobreak
-}
-
-% These are variants which are not "outer", so they can appear in @ifinfo.
-% Actually, they should now be obsolete; ordinary section commands should work.
-\def\infotop{\parsearg\unnumberedzzz}
-\def\infounnumbered{\parsearg\unnumberedzzz}
-\def\infounnumberedsec{\parsearg\unnumberedseczzz}
-\def\infounnumberedsubsec{\parsearg\unnumberedsubseczzz}
-\def\infounnumberedsubsubsec{\parsearg\unnumberedsubsubseczzz}
-
-\def\infoappendix{\parsearg\appendixzzz}
-\def\infoappendixsec{\parsearg\appendixseczzz}
-\def\infoappendixsubsec{\parsearg\appendixsubseczzz}
-\def\infoappendixsubsubsec{\parsearg\appendixsubsubseczzz}
-
-\def\infochapter{\parsearg\chapterzzz}
-\def\infosection{\parsearg\sectionzzz}
-\def\infosubsection{\parsearg\subsectionzzz}
-\def\infosubsubsection{\parsearg\subsubsectionzzz}
-
-% These macros control what the section commands do, according
-% to what kind of chapter we are in (ordinary, appendix, or unnumbered).
-% Define them by default for a numbered chapter.
-\global\let\section = \numberedsec
-\global\let\subsection = \numberedsubsec
-\global\let\subsubsection = \numberedsubsubsec
-
-% Define @majorheading, @heading and @subheading
-
-% NOTE on use of \vbox for chapter headings, section headings, and such:
-% 1) We use \vbox rather than the earlier \line to permit
-% overlong headings to fold.
-% 2) \hyphenpenalty is set to 10000 because hyphenation in a
-% heading is obnoxious; this forbids it.
-% 3) Likewise, headings look best if no \parindent is used, and
-% if justification is not attempted. Hence \raggedright.
-
-
-\def\majorheading{\parsearg\majorheadingzzz}
-\def\majorheadingzzz #1{%
-{\advance\chapheadingskip by 10pt \chapbreak }%
-{\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
- \parindent=0pt\raggedright
- \rm #1\hfill}}\bigskip \par\penalty 200}
-
-\def\chapheading{\parsearg\chapheadingzzz}
-\def\chapheadingzzz #1{\chapbreak %
-{\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
- \parindent=0pt\raggedright
- \rm #1\hfill}}\bigskip \par\penalty 200}
-
-% @heading, @subheading, @subsubheading.
-\def\heading{\parsearg\plainsecheading}
-\def\subheading{\parsearg\plainsubsecheading}
-\def\subsubheading{\parsearg\plainsubsubsecheading}
-
-% These macros generate a chapter, section, etc. heading only
-% (including whitespace, linebreaking, etc. around it),
-% given all the information in convenient, parsed form.
-
-%%% Args are the skip and penalty (usually negative)
-\def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi}
-
-\def\setchapterstyle #1 {\csname CHAPF#1\endcsname}
-
-%%% Define plain chapter starts, and page on/off switching for it
-% Parameter controlling skip before chapter headings (if needed)
-
-\newskip\chapheadingskip
-
-\def\chapbreak{\dobreak \chapheadingskip {-4000}}
-\def\chappager{\par\vfill\supereject}
-\def\chapoddpage{\chappager \ifodd\pageno \else \hbox to 0pt{} \chappager\fi}
-
-\def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname}
-
-\def\CHAPPAGoff{%
-\global\let\contentsalignmacro = \chappager
-\global\let\pchapsepmacro=\chapbreak
-\global\let\pagealignmacro=\chappager}
-
-\def\CHAPPAGon{%
-\global\let\contentsalignmacro = \chappager
-\global\let\pchapsepmacro=\chappager
-\global\let\pagealignmacro=\chappager
-\global\def\HEADINGSon{\HEADINGSsingle}}
-
-\def\CHAPPAGodd{
-\global\let\contentsalignmacro = \chapoddpage
-\global\let\pchapsepmacro=\chapoddpage
-\global\let\pagealignmacro=\chapoddpage
-\global\def\HEADINGSon{\HEADINGSdouble}}
-
-\CHAPPAGon
-
-\def\CHAPFplain{
-\global\let\chapmacro=\chfplain
-\global\let\unnumbchapmacro=\unnchfplain
-\global\let\centerchapmacro=\centerchfplain}
-
-% Plain chapter opening.
-% #1 is the text, #2 the chapter number or empty if unnumbered.
-\def\chfplain#1#2{%
- \pchapsepmacro
- {%
- \chapfonts \rm
- \def\chapnum{#2}%
- \setbox0 = \hbox{#2\ifx\chapnum\empty\else\enspace\fi}%
- \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright
- \hangindent = \wd0 \centerparametersmaybe
- \unhbox0 #1\par}%
- }%
- \nobreak\bigskip % no page break after a chapter title
- \nobreak
-}
-
-% Plain opening for unnumbered.
-\def\unnchfplain#1{\chfplain{#1}{}}
-
-% @centerchap -- centered and unnumbered.
-\let\centerparametersmaybe = \relax
-\def\centerchfplain#1{{%
- \def\centerparametersmaybe{%
- \advance\rightskip by 3\rightskip
- \leftskip = \rightskip
- \parfillskip = 0pt
- }%
- \chfplain{#1}{}%
-}}
-
-\CHAPFplain % The default
-
-\def\unnchfopen #1{%
-\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
- \parindent=0pt\raggedright
- \rm #1\hfill}}\bigskip \par\nobreak
-}
-
-\def\chfopen #1#2{\chapoddpage {\chapfonts
-\vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}%
-\par\penalty 5000 %
-}
-
-\def\centerchfopen #1{%
-\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
- \parindent=0pt
- \hfill {\rm #1}\hfill}}\bigskip \par\nobreak
-}
-
-\def\CHAPFopen{
-\global\let\chapmacro=\chfopen
-\global\let\unnumbchapmacro=\unnchfopen
-\global\let\centerchapmacro=\centerchfopen}
-
-
-% Section titles.
-\newskip\secheadingskip
-\def\secheadingbreak{\dobreak \secheadingskip {-1000}}
-\def\secheading#1#2#3{\sectionheading{sec}{#2.#3}{#1}}
-\def\plainsecheading#1{\sectionheading{sec}{}{#1}}
-
-% Subsection titles.
-\newskip \subsecheadingskip
-\def\subsecheadingbreak{\dobreak \subsecheadingskip {-500}}
-\def\subsecheading#1#2#3#4{\sectionheading{subsec}{#2.#3.#4}{#1}}
-\def\plainsubsecheading#1{\sectionheading{subsec}{}{#1}}
-
-% Subsubsection titles.
-\let\subsubsecheadingskip = \subsecheadingskip
-\let\subsubsecheadingbreak = \subsecheadingbreak
-\def\subsubsecheading#1#2#3#4#5{\sectionheading{subsubsec}{#2.#3.#4.#5}{#1}}
-\def\plainsubsubsecheading#1{\sectionheading{subsubsec}{}{#1}}
-
-
-% Print any size section title.
-%
-% #1 is the section type (sec/subsec/subsubsec), #2 is the section
-% number (maybe empty), #3 the text.
-\def\sectionheading#1#2#3{%
- {%
- \expandafter\advance\csname #1headingskip\endcsname by \parskip
- \csname #1headingbreak\endcsname
- }%
- {%
- % Switch to the right set of fonts.
- \csname #1fonts\endcsname \rm
- %
- % Only insert the separating space if we have a section number.
- \def\secnum{#2}%
- \setbox0 = \hbox{#2\ifx\secnum\empty\else\enspace\fi}%
- %
- \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright
- \hangindent = \wd0 % zero if no section number
- \unhbox0 #3}%
- }%
- \ifdim\parskip<10pt \nobreak\kern10pt\nobreak\kern-\parskip\fi \nobreak
-}
-
-
-\message{toc,}
-% Table of contents.
-\newwrite\tocfile
-
-% Write an entry to the toc file, opening it if necessary.
-% Called from @chapter, etc. We supply {\folio} at the end of the
-% argument, which will end up as the last argument to the \...entry macro.
-%
-% We open the .toc file here instead of at @setfilename or any other
-% given time so that @contents can be put in the document anywhere.
-%
-\newif\iftocfileopened
-\def\writetocentry#1{%
- \iftocfileopened\else
- \immediate\openout\tocfile = \jobname.toc
- \global\tocfileopenedtrue
- \fi
- \iflinks \write\tocfile{#1{\folio}}\fi
-}
-
-\newskip\contentsrightmargin \contentsrightmargin=1in
-\newcount\savepageno
-\newcount\lastnegativepageno \lastnegativepageno = -1
-
-% Finish up the main text and prepare to read what we've written
-% to \tocfile.
-%
-\def\startcontents#1{%
- % If @setchapternewpage on, and @headings double, the contents should
- % start on an odd page, unlike chapters. Thus, we maintain
- % \contentsalignmacro in parallel with \pagealignmacro.
- % From: Torbjorn Granlund <tege@matematik.su.se>
- \contentsalignmacro
- \immediate\closeout\tocfile
- %
- % Don't need to put `Contents' or `Short Contents' in the headline.
- % It is abundantly clear what they are.
- \unnumbchapmacro{#1}\def\thischapter{}%
- \savepageno = \pageno
- \begingroup % Set up to handle contents files properly.
- \catcode`\\=0 \catcode`\{=1 \catcode`\}=2 \catcode`\@=11
- % We can't do this, because then an actual ^ in a section
- % title fails, e.g., @chapter ^ -- exponentiation. --karl, 9jul97.
- %\catcode`\^=7 % to see ^^e4 as \"a etc. juha@piuha.ydi.vtt.fi
- \raggedbottom % Worry more about breakpoints than the bottom.
- \advance\hsize by -\contentsrightmargin % Don't use the full line length.
- %
- % Roman numerals for page numbers.
- \ifnum \pageno>0 \pageno = \lastnegativepageno \fi
-}
-
-
-% Normal (long) toc.
-\def\contents{%
- \startcontents{\putwordTOC}%
- \openin 1 \jobname.toc
- \ifeof 1 \else
- \closein 1
- \input \jobname.toc
- \fi
- \vfill \eject
- \contentsalignmacro % in case @setchapternewpage odd is in effect
- \pdfmakeoutlines
- \endgroup
- \lastnegativepageno = \pageno
- \pageno = \savepageno
-}
-
-% And just the chapters.
-\def\summarycontents{%
- \startcontents{\putwordShortTOC}%
- %
- \let\chapentry = \shortchapentry
- \let\unnumbchapentry = \shortunnumberedentry
- % We want a true roman here for the page numbers.
- \secfonts
- \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl
- \rm
- \hyphenpenalty = 10000
- \advance\baselineskip by 1pt % Open it up a little.
- \def\secentry ##1##2##3##4{}
- \def\unnumbsecentry ##1##2{}
- \def\subsecentry ##1##2##3##4##5{}
- \def\unnumbsubsecentry ##1##2{}
- \def\subsubsecentry ##1##2##3##4##5##6{}
- \def\unnumbsubsubsecentry ##1##2{}
- \openin 1 \jobname.toc
- \ifeof 1 \else
- \closein 1
- \input \jobname.toc
- \fi
- \vfill \eject
- \contentsalignmacro % in case @setchapternewpage odd is in effect
- \endgroup
- \lastnegativepageno = \pageno
- \pageno = \savepageno
-}
-\let\shortcontents = \summarycontents
-
-\ifpdf
- \pdfcatalog{/PageMode /UseOutlines}%
-\fi
-
-% These macros generate individual entries in the table of contents.
-% The first argument is the chapter or section name.
-% The last argument is the page number.
-% The arguments in between are the chapter number, section number, ...
-
-% Chapter-level things, for both the long and short contents.
-\def\chapentry#1#2#3{\dochapentry{#2\labelspace#1}{#3}}
-
-% See comments in \dochapentry re vbox and related settings
-\def\shortchapentry#1#2#3{%
- \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#3\egroup}%
-}
-
-% Typeset the label for a chapter or appendix for the short contents.
-% The arg is, e.g. `Appendix A' for an appendix, or `3' for a chapter.
-% We could simplify the code here by writing out an \appendixentry
-% command in the toc file for appendices, instead of using \chapentry
-% for both, but it doesn't seem worth it.
-%
-\newdimen\shortappendixwidth
-%
-\def\shortchaplabel#1{%
- % Compute width of word "Appendix", may change with language.
- \setbox0 = \hbox{\shortcontrm \putwordAppendix}%
- \shortappendixwidth = \wd0
- %
- % We typeset #1 in a box of constant width, regardless of the text of
- % #1, so the chapter titles will come out aligned.
- \setbox0 = \hbox{#1}%
- \dimen0 = \ifdim\wd0 > \shortappendixwidth \shortappendixwidth \else 0pt \fi
- %
- % This space should be plenty, since a single number is .5em, and the
- % widest letter (M) is 1em, at least in the Computer Modern fonts.
- % (This space doesn't include the extra space that gets added after
- % the label; that gets put in by \shortchapentry above.)
- \advance\dimen0 by 1.1em
- \hbox to \dimen0{#1\hfil}%
-}
-
-\def\unnumbchapentry#1#2{\dochapentry{#1}{#2}}
-\def\shortunnumberedentry#1#2{\tocentry{#1}{\doshortpageno\bgroup#2\egroup}}
-
-% Sections.
-\def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}{#4}}
-\def\unnumbsecentry#1#2{\dosecentry{#1}{#2}}
-
-% Subsections.
-\def\subsecentry#1#2#3#4#5{\dosubsecentry{#2.#3.#4\labelspace#1}{#5}}
-\def\unnumbsubsecentry#1#2{\dosubsecentry{#1}{#2}}
-
-% And subsubsections.
-\def\subsubsecentry#1#2#3#4#5#6{%
- \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}{#6}}
-\def\unnumbsubsubsecentry#1#2{\dosubsubsecentry{#1}{#2}}
-
-% This parameter controls the indentation of the various levels.
-\newdimen\tocindent \tocindent = 3pc
-
-% Now for the actual typesetting. In all these, #1 is the text and #2 is the
-% page number.
-%
-% If the toc has to be broken over pages, we want it to be at chapters
-% if at all possible; hence the \penalty.
-\def\dochapentry#1#2{%
- \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip
- \begingroup
- \chapentryfonts
- \tocentry{#1}{\dopageno\bgroup#2\egroup}%
- \endgroup
- \nobreak\vskip .25\baselineskip plus.1\baselineskip
-}
-
-\def\dosecentry#1#2{\begingroup
- \secentryfonts \leftskip=\tocindent
- \tocentry{#1}{\dopageno\bgroup#2\egroup}%
-\endgroup}
-
-\def\dosubsecentry#1#2{\begingroup
- \subsecentryfonts \leftskip=2\tocindent
- \tocentry{#1}{\dopageno\bgroup#2\egroup}%
-\endgroup}
-
-\def\dosubsubsecentry#1#2{\begingroup
- \subsubsecentryfonts \leftskip=3\tocindent
- \tocentry{#1}{\dopageno\bgroup#2\egroup}%
-\endgroup}
-
-% Final typesetting of a toc entry; we use the same \entry macro as for
-% the index entries, but we want to suppress hyphenation here. (We
-% can't do that in the \entry macro, since index entries might consist
-% of hyphenated-identifiers-that-do-not-fit-on-a-line-and-nothing-else.)
-\def\tocentry#1#2{\begingroup
- \vskip 0pt plus1pt % allow a little stretch for the sake of nice page breaks
- % Do not use \turnoffactive in these arguments. Since the toc is
- % typeset in cmr, so characters such as _ would come out wrong; we
- % have to do the usual translation tricks.
- \entry{#1}{#2}%
-\endgroup}
-
-% Space between chapter (or whatever) number and the title.
-\def\labelspace{\hskip1em \relax}
-
-\def\dopageno#1{{\rm #1}}
-\def\doshortpageno#1{{\rm #1}}
-
-\def\chapentryfonts{\secfonts \rm}
-\def\secentryfonts{\textfonts}
-\let\subsecentryfonts = \textfonts
-\let\subsubsecentryfonts = \textfonts
-
-
-\message{environments,}
-% @foo ... @end foo.
-
-% Since these characters are used in examples, it should be an even number of
-% \tt widths. Each \tt character is 1en, so two makes it 1em.
-% Furthermore, these definitions must come after we define our fonts.
-\newbox\dblarrowbox \newbox\longdblarrowbox
-\newbox\pushcharbox \newbox\bullbox
-\newbox\equivbox \newbox\errorbox
-
-%{\tentt
-%\global\setbox\dblarrowbox = \hbox to 1em{\hfil$\Rightarrow$\hfil}
-%\global\setbox\longdblarrowbox = \hbox to 1em{\hfil$\mapsto$\hfil}
-%\global\setbox\pushcharbox = \hbox to 1em{\hfil$\dashv$\hfil}
-%\global\setbox\equivbox = \hbox to 1em{\hfil$\ptexequiv$\hfil}
-% Adapted from the manmac format (p.420 of TeXbook)
-%\global\setbox\bullbox = \hbox to 1em{\kern.15em\vrule height .75ex width .85ex
-% depth .1ex\hfil}
-%}
-
-% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
-\def\point{$\star$}
-\def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
-\def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}}
-\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
-\def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}}
-
-% Adapted from the TeXbook's \boxit.
-{\tentt \global\dimen0 = 3em}% Width of the box.
-\dimen2 = .55pt % Thickness of rules
-% The text. (`r' is open on the right, `e' somewhat less so on the left.)
-\setbox0 = \hbox{\kern-.75pt \tensf error\kern-1.5pt}
-
-\global\setbox\errorbox=\hbox to \dimen0{\hfil
- \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
- \advance\hsize by -2\dimen2 % Rules.
- \vbox{
- \hrule height\dimen2
- \hbox{\vrule width\dimen2 \kern3pt % Space to left of text.
- \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below.
- \kern3pt\vrule width\dimen2}% Space to right.
- \hrule height\dimen2}
- \hfil}
-
-% The @error{} command.
-\def\error{\leavevmode\lower.7ex\copy\errorbox}
-
-% @tex ... @end tex escapes into raw Tex temporarily.
-% One exception: @ is still an escape character, so that @end tex works.
-% But \@ or @@ will get a plain tex @ character.
-
-\def\tex{\begingroup
- \catcode `\\=0 \catcode `\{=1 \catcode `\}=2
- \catcode `\$=3 \catcode `\&=4 \catcode `\#=6
- \catcode `\^=7 \catcode `\_=8 \catcode `\~=13 \let~=\tie
- \catcode `\%=14
- \catcode 43=12 % plus
- \catcode`\"=12
- \catcode`\==12
- \catcode`\|=12
- \catcode`\<=12
- \catcode`\>=12
- \escapechar=`\\
- %
- \let\b=\ptexb
- \let\bullet=\ptexbullet
- \let\c=\ptexc
- \let\,=\ptexcomma
- \let\.=\ptexdot
- \let\dots=\ptexdots
- \let\equiv=\ptexequiv
- \let\!=\ptexexclam
- \let\i=\ptexi
- \let\{=\ptexlbrace
- \let\+=\tabalign
- \let\}=\ptexrbrace
- \let\*=\ptexstar
- \let\t=\ptext
- %
- \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}%
- \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}%
- \def\@{@}%
-\let\Etex=\endgroup}
-
-% Define @lisp ... @endlisp.
-% @lisp does a \begingroup so it can rebind things,
-% including the definition of @endlisp (which normally is erroneous).
-
-% Amount to narrow the margins by for @lisp.
-\newskip\lispnarrowing \lispnarrowing=0.4in
-
-% This is the definition that ^^M gets inside @lisp, @example, and other
-% such environments. \null is better than a space, since it doesn't
-% have any width.
-\def\lisppar{\null\endgraf}
-
-% Make each space character in the input produce a normal interword
-% space in the output. Don't allow a line break at this space, as this
-% is used only in environments like @example, where each line of input
-% should produce a line of output anyway.
-%
-{\obeyspaces %
-\gdef\sepspaces{\obeyspaces\let =\tie}}
-
-% Define \obeyedspace to be our active space, whatever it is. This is
-% for use in \parsearg.
-{\sepspaces%
-\global\let\obeyedspace= }
-
-% This space is always present above and below environments.
-\newskip\envskipamount \envskipamount = 0pt
-
-% Make spacing and below environment symmetrical. We use \parskip here
-% to help in doing that, since in @example-like environments \parskip
-% is reset to zero; thus the \afterenvbreak inserts no space -- but the
-% start of the next paragraph will insert \parskip
-%
-\def\aboveenvbreak{{\advance\envskipamount by \parskip
-\endgraf \ifdim\lastskip<\envskipamount
-\removelastskip \penalty-50 \vskip\envskipamount \fi}}
-
-\let\afterenvbreak = \aboveenvbreak
-
-% \nonarrowing is a flag. If "set", @lisp etc don't narrow margins.
-\let\nonarrowing=\relax
-
-% @cartouche ... @end cartouche: draw rectangle w/rounded corners around
-% environment contents.
-\font\circle=lcircle10
-\newdimen\circthick
-\newdimen\cartouter\newdimen\cartinner
-\newskip\normbskip\newskip\normpskip\newskip\normlskip
-\circthick=\fontdimen8\circle
-%
-\def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth
-\def\ctr{{\hskip 6pt\circle\char'010}}
-\def\cbl{{\circle\char'012\hskip -6pt}}
-\def\cbr{{\hskip 6pt\circle\char'011}}
-\def\carttop{\hbox to \cartouter{\hskip\lskip
- \ctl\leaders\hrule height\circthick\hfil\ctr
- \hskip\rskip}}
-\def\cartbot{\hbox to \cartouter{\hskip\lskip
- \cbl\leaders\hrule height\circthick\hfil\cbr
- \hskip\rskip}}
-%
-\newskip\lskip\newskip\rskip
-
-\long\def\cartouche{%
-\begingroup
- \lskip=\leftskip \rskip=\rightskip
- \leftskip=0pt\rightskip=0pt %we want these *outside*.
- \cartinner=\hsize \advance\cartinner by-\lskip
- \advance\cartinner by-\rskip
- \cartouter=\hsize
- \advance\cartouter by 18.4pt % allow for 3pt kerns on either
-% side, and for 6pt waste from
-% each corner char, and rule thickness
- \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip
- % Flag to tell @lisp, etc., not to narrow margin.
- \let\nonarrowing=\comment
- \vbox\bgroup
- \baselineskip=0pt\parskip=0pt\lineskip=0pt
- \carttop
- \hbox\bgroup
- \hskip\lskip
- \vrule\kern3pt
- \vbox\bgroup
- \hsize=\cartinner
- \kern3pt
- \begingroup
- \baselineskip=\normbskip
- \lineskip=\normlskip
- \parskip=\normpskip
- \vskip -\parskip
-\def\Ecartouche{%
- \endgroup
- \kern3pt
- \egroup
- \kern3pt\vrule
- \hskip\rskip
- \egroup
- \cartbot
- \egroup
-\endgroup
-}}
-
-
-% This macro is called at the beginning of all the @example variants,
-% inside a group.
-\def\nonfillstart{%
- \aboveenvbreak
- \inENV % This group ends at the end of the body
- \hfuzz = 12pt % Don't be fussy
- \sepspaces % Make spaces be word-separators rather than space tokens.
- \singlespace
- \let\par = \lisppar % don't ignore blank lines
- \obeylines % each line of input is a line of output
- \parskip = 0pt
- \parindent = 0pt
- \emergencystretch = 0pt % don't try to avoid overfull boxes
- % @cartouche defines \nonarrowing to inhibit narrowing
- % at next level down.
- \ifx\nonarrowing\relax
- \advance \leftskip by \lispnarrowing
- \exdentamount=\lispnarrowing
- \let\exdent=\nofillexdent
- \let\nonarrowing=\relax
- \fi
-}
-
-% Define the \E... control sequence only if we are inside the particular
-% environment, so the error checking in \end will work.
-%
-% To end an @example-like environment, we first end the paragraph (via
-% \afterenvbreak's vertical glue), and then the group. That way we keep
-% the zero \parskip that the environments set -- \parskip glue will be
-% inserted at the beginning of the next paragraph in the document, after
-% the environment.
-%
-\def\nonfillfinish{\afterenvbreak\endgroup}
-
-% @lisp: indented, narrowed, typewriter font.
-\def\lisp{\begingroup
- \nonfillstart
- \let\Elisp = \nonfillfinish
- \tt
- \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special.
- \gobble % eat return
-}
-
-% @example: Same as @lisp.
-\def\example{\begingroup \def\Eexample{\nonfillfinish\endgroup}\lisp}
-
-% @small... is usually equivalent to the non-small (@smallbook
-% redefines). We must call \example (or whatever) last in the
-% definition, since it reads the return following the @example (or
-% whatever) command.
-%
-% This actually allows (for example) @end display inside an
-% @smalldisplay. Too bad, but makeinfo will catch the error anyway.
-%
-\def\smalldisplay{\begingroup\def\Esmalldisplay{\nonfillfinish\endgroup}\display}
-\def\smallexample{\begingroup\def\Esmallexample{\nonfillfinish\endgroup}\lisp}
-\def\smallformat{\begingroup\def\Esmallformat{\nonfillfinish\endgroup}\format}
-\def\smalllisp{\begingroup\def\Esmalllisp{\nonfillfinish\endgroup}\lisp}
-
-% Real @smallexample and @smalllisp (when @smallbook): use smaller fonts.
-% Originally contributed by Pavel@xerox.
-\def\smalllispx{\begingroup
- \def\Esmalllisp{\nonfillfinish\endgroup}%
- \def\Esmallexample{\nonfillfinish\endgroup}%
- \smallfonts
- \lisp
-}
-
-% @display: same as @lisp except keep current font.
-%
-\def\display{\begingroup
- \nonfillstart
- \let\Edisplay = \nonfillfinish
- \gobble
-}
-
-% @smalldisplay (when @smallbook): @display plus smaller fonts.
-%
-\def\smalldisplayx{\begingroup
- \def\Esmalldisplay{\nonfillfinish\endgroup}%
- \smallfonts \rm
- \display
-}
-
-% @format: same as @display except don't narrow margins.
-%
-\def\format{\begingroup
- \let\nonarrowing = t
- \nonfillstart
- \let\Eformat = \nonfillfinish
- \gobble
-}
-
-% @smallformat (when @smallbook): @format plus smaller fonts.
-%
-\def\smallformatx{\begingroup
- \def\Esmallformat{\nonfillfinish\endgroup}%
- \smallfonts \rm
- \format
-}
-
-% @flushleft (same as @format).
-%
-\def\flushleft{\begingroup \def\Eflushleft{\nonfillfinish\endgroup}\format}
-
-% @flushright.
-%
-\def\flushright{\begingroup
- \let\nonarrowing = t
- \nonfillstart
- \let\Eflushright = \nonfillfinish
- \advance\leftskip by 0pt plus 1fill
- \gobble
-}
-
-% @quotation does normal linebreaking (hence we can't use \nonfillstart)
-% and narrows the margins.
-%
-\def\quotation{%
- \begingroup\inENV %This group ends at the end of the @quotation body
- {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
- \singlespace
- \parindent=0pt
- % We have retained a nonzero parskip for the environment, since we're
- % doing normal filling. So to avoid extra space below the environment...
- \def\Equotation{\parskip = 0pt \nonfillfinish}%
- %
- % @cartouche defines \nonarrowing to inhibit narrowing at next level down.
- \ifx\nonarrowing\relax
- \advance\leftskip by \lispnarrowing
- \advance\rightskip by \lispnarrowing
- \exdentamount = \lispnarrowing
- \let\nonarrowing = \relax
- \fi
-}
-
-
-\message{defuns,}
-% @defun etc.
-
-% Allow user to change definition object font (\df) internally
-\def\setdeffont #1 {\csname DEF#1\endcsname}
-
-\newskip\defbodyindent \defbodyindent=.4in
-\newskip\defargsindent \defargsindent=50pt
-\newskip\deftypemargin \deftypemargin=12pt
-\newskip\deflastargmargin \deflastargmargin=18pt
-
-\newcount\parencount
-% define \functionparens, which makes ( and ) and & do special things.
-% \functionparens affects the group it is contained in.
-\def\activeparens{%
-\catcode`\(=\active \catcode`\)=\active \catcode`\&=\active
-\catcode`\[=\active \catcode`\]=\active}
-
-% Make control sequences which act like normal parenthesis chars.
-\let\lparen = ( \let\rparen = )
-
-{\activeparens % Now, smart parens don't turn on until &foo (see \amprm)
-
-% Be sure that we always have a definition for `(', etc. For example,
-% if the fn name has parens in it, \boldbrax will not be in effect yet,
-% so TeX would otherwise complain about undefined control sequence.
-\global\let(=\lparen \global\let)=\rparen
-\global\let[=\lbrack \global\let]=\rbrack
-
-\gdef\functionparens{\boldbrax\let&=\amprm\parencount=0 }
-\gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}
-% This is used to turn on special parens
-% but make & act ordinary (given that it's active).
-\gdef\boldbraxnoamp{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb\let&=\ampnr}
-
-% Definitions of (, ) and & used in args for functions.
-% This is the definition of ( outside of all parentheses.
-\gdef\oprm#1 {{\rm\char`\(}#1 \bf \let(=\opnested
- \global\advance\parencount by 1
-}
-%
-% This is the definition of ( when already inside a level of parens.
-\gdef\opnested{\char`\(\global\advance\parencount by 1 }
-%
-\gdef\clrm{% Print a paren in roman if it is taking us back to depth of 0.
- % also in that case restore the outer-level definition of (.
- \ifnum \parencount=1 {\rm \char `\)}\sl \let(=\oprm \else \char `\) \fi
- \global\advance \parencount by -1 }
-% If we encounter &foo, then turn on ()-hacking afterwards
-\gdef\amprm#1 {{\rm\&#1}\let(=\oprm \let)=\clrm\ }
-%
-\gdef\normalparens{\boldbrax\let&=\ampnr}
-} % End of definition inside \activeparens
-%% These parens (in \boldbrax) actually are a little bolder than the
-%% contained text. This is especially needed for [ and ]
-\def\opnr{{\sf\char`\(}\global\advance\parencount by 1 }
-\def\clnr{{\sf\char`\)}\global\advance\parencount by -1 }
-\let\ampnr = \&
-\def\lbrb{{\bf\char`\[}}
-\def\rbrb{{\bf\char`\]}}
-
-% Active &'s sneak into the index arguments, so make sure it's defined.
-{
- \catcode`& = 13
- \global\let& = \ampnr
-}
-
-% First, defname, which formats the header line itself.
-% #1 should be the function name.
-% #2 should be the type of definition, such as "Function".
-
-\def\defname #1#2{%
-% Get the values of \leftskip and \rightskip as they were
-% outside the @def...
-\dimen2=\leftskip
-\advance\dimen2 by -\defbodyindent
-\noindent
-\setbox0=\hbox{\hskip \deflastargmargin{\rm #2}\hskip \deftypemargin}%
-\dimen0=\hsize \advance \dimen0 by -\wd0 % compute size for first line
-\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuations
-\parshape 2 0in \dimen0 \defargsindent \dimen1
-% Now output arg 2 ("Function" or some such)
-% ending at \deftypemargin from the right margin,
-% but stuck inside a box of width 0 so it does not interfere with linebreaking
-{% Adjust \hsize to exclude the ambient margins,
-% so that \rightline will obey them.
-\advance \hsize by -\dimen2
-\rlap{\rightline{{\rm #2}\hskip -1.25pc }}}%
-% Make all lines underfull and no complaints:
-\tolerance=10000 \hbadness=10000
-\advance\leftskip by -\defbodyindent
-\exdentamount=\defbodyindent
-{\df #1}\enskip % Generate function name
-}
-
-% Actually process the body of a definition
-% #1 should be the terminating control sequence, such as \Edefun.
-% #2 should be the "another name" control sequence, such as \defunx.
-% #3 should be the control sequence that actually processes the header,
-% such as \defunheader.
-
-\def\defparsebody #1#2#3{\begingroup\inENV% Environment for definitionbody
-\medbreak %
-% Define the end token that this defining construct specifies
-% so that it will exit this group.
-\def#1{\endgraf\endgroup\medbreak}%
-\def#2{\begingroup\obeylines\activeparens\spacesplit#3}%
-\parindent=0in
-\advance\leftskip by \defbodyindent
-\exdentamount=\defbodyindent
-\begingroup %
-\catcode 61=\active % 61 is `='
-\obeylines\activeparens\spacesplit#3}
-
-% #1 is the \E... control sequence to end the definition (which we define).
-% #2 is the \...x control sequence for consecutive fns (which we define).
-% #3 is the control sequence to call to resume processing.
-% #4, delimited by the space, is the class name.
-%
-\def\defmethparsebody#1#2#3#4 {\begingroup\inENV %
-\medbreak %
-% Define the end token that this defining construct specifies
-% so that it will exit this group.
-\def#1{\endgraf\endgroup\medbreak}%
-\def#2##1 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}}}%
-\parindent=0in
-\advance\leftskip by \defbodyindent
-\exdentamount=\defbodyindent
-\begingroup\obeylines\activeparens\spacesplit{#3{#4}}}
-
-% Used for @deftypemethod and @deftypeivar.
-% #1 is the \E... control sequence to end the definition (which we define).
-% #2 is the \...x control sequence for consecutive fns (which we define).
-% #3 is the control sequence to call to resume processing.
-% #4, delimited by a space, is the class name.
-% #5 is the method's return type.
-%
-\def\deftypemethparsebody#1#2#3#4 #5 {\begingroup\inENV
- \medbreak
- \def#1{\endgraf\endgroup\medbreak}%
- \def#2##1 ##2 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}{##2}}}%
- \parindent=0in
- \advance\leftskip by \defbodyindent
- \exdentamount=\defbodyindent
- \begingroup\obeylines\activeparens\spacesplit{#3{#4}{#5}}}
-
-% Used for @deftypeop. The change from \deftypemethparsebody is an
-% extra argument at the beginning which is the `category', instead of it
-% being the hardwired string `Method' or `Instance Variable'. We have
-% to account for this both in the \...x definition and in parsing the
-% input at hand. Thus also need a control sequence (passed as #5) for
-% the \E... definition to assign the category name to.
-%
-\def\deftypeopparsebody#1#2#3#4#5 #6 {\begingroup\inENV
- \medbreak
- \def#1{\endgraf\endgroup\medbreak}%
- \def#2##1 ##2 ##3 {%
- \def#4{##1}%
- \begingroup\obeylines\activeparens\spacesplit{#3{##2}{##3}}}%
- \parindent=0in
- \advance\leftskip by \defbodyindent
- \exdentamount=\defbodyindent
- \begingroup\obeylines\activeparens\spacesplit{#3{#5}{#6}}}
-
-\def\defopparsebody #1#2#3#4#5 {\begingroup\inENV %
-\medbreak %
-% Define the end token that this defining construct specifies
-% so that it will exit this group.
-\def#1{\endgraf\endgroup\medbreak}%
-\def#2##1 ##2 {\def#4{##1}%
-\begingroup\obeylines\activeparens\spacesplit{#3{##2}}}%
-\parindent=0in
-\advance\leftskip by \defbodyindent
-\exdentamount=\defbodyindent
-\begingroup\obeylines\activeparens\spacesplit{#3{#5}}}
-
-% These parsing functions are similar to the preceding ones
-% except that they do not make parens into active characters.
-% These are used for "variables" since they have no arguments.
-
-\def\defvarparsebody #1#2#3{\begingroup\inENV% Environment for definitionbody
-\medbreak %
-% Define the end token that this defining construct specifies
-% so that it will exit this group.
-\def#1{\endgraf\endgroup\medbreak}%
-\def#2{\begingroup\obeylines\spacesplit#3}%
-\parindent=0in
-\advance\leftskip by \defbodyindent
-\exdentamount=\defbodyindent
-\begingroup %
-\catcode 61=\active %
-\obeylines\spacesplit#3}
-
-% This is used for \def{tp,vr}parsebody. It could probably be used for
-% some of the others, too, with some judicious conditionals.
-%
-\def\parsebodycommon#1#2#3{%
- \begingroup\inENV %
- \medbreak %
- % Define the end token that this defining construct specifies
- % so that it will exit this group.
- \def#1{\endgraf\endgroup\medbreak}%
- \def#2##1 {\begingroup\obeylines\spacesplit{#3{##1}}}%
- \parindent=0in
- \advance\leftskip by \defbodyindent
- \exdentamount=\defbodyindent
- \begingroup\obeylines
-}
-
-\def\defvrparsebody#1#2#3#4 {%
- \parsebodycommon{#1}{#2}{#3}%
- \spacesplit{#3{#4}}%
-}
-
-% This loses on `@deftp {Data Type} {struct termios}' -- it thinks the
-% type is just `struct', because we lose the braces in `{struct
-% termios}' when \spacesplit reads its undelimited argument. Sigh.
-% \let\deftpparsebody=\defvrparsebody
-%
-% So, to get around this, we put \empty in with the type name. That
-% way, TeX won't find exactly `{...}' as an undelimited argument, and
-% won't strip off the braces.
-%
-\def\deftpparsebody #1#2#3#4 {%
- \parsebodycommon{#1}{#2}{#3}%
- \spacesplit{\parsetpheaderline{#3{#4}}}\empty
-}
-
-% Fine, but then we have to eventually remove the \empty *and* the
-% braces (if any). That's what this does.
-%
-\def\removeemptybraces\empty#1\relax{#1}
-
-% After \spacesplit has done its work, this is called -- #1 is the final
-% thing to call, #2 the type name (which starts with \empty), and #3
-% (which might be empty) the arguments.
-%
-\def\parsetpheaderline#1#2#3{%
- #1{\removeemptybraces#2\relax}{#3}%
-}%
-
-\def\defopvarparsebody #1#2#3#4#5 {\begingroup\inENV %
-\medbreak %
-% Define the end token that this defining construct specifies
-% so that it will exit this group.
-\def#1{\endgraf\endgroup\medbreak}%
-\def#2##1 ##2 {\def#4{##1}%
-\begingroup\obeylines\spacesplit{#3{##2}}}%
-\parindent=0in
-\advance\leftskip by \defbodyindent
-\exdentamount=\defbodyindent
-\begingroup\obeylines\spacesplit{#3{#5}}}
-
-% Split up #2 at the first space token.
-% call #1 with two arguments:
-% the first is all of #2 before the space token,
-% the second is all of #2 after that space token.
-% If #2 contains no space token, all of it is passed as the first arg
-% and the second is passed as empty.
-
-{\obeylines
-\gdef\spacesplit#1#2^^M{\endgroup\spacesplitfoo{#1}#2 \relax\spacesplitfoo}%
-\long\gdef\spacesplitfoo#1#2 #3#4\spacesplitfoo{%
-\ifx\relax #3%
-#1{#2}{}\else #1{#2}{#3#4}\fi}}
-
-% So much for the things common to all kinds of definitions.
-
-% Define @defun.
-
-% First, define the processing that is wanted for arguments of \defun
-% Use this to expand the args and terminate the paragraph they make up
-
-\def\defunargs#1{\functionparens \sl
-% Expand, preventing hyphenation at `-' chars.
-% Note that groups don't affect changes in \hyphenchar.
-% Set the font temporarily and use \font in case \setfont made \tensl a macro.
-{\tensl\hyphenchar\font=0}%
-#1%
-{\tensl\hyphenchar\font=45}%
-\ifnum\parencount=0 \else \errmessage{Unbalanced parentheses in @def}\fi%
-\interlinepenalty=10000
-\advance\rightskip by 0pt plus 1fil
-\endgraf\nobreak\vskip -\parskip\nobreak
-}
-
-\def\deftypefunargs #1{%
-% Expand, preventing hyphenation at `-' chars.
-% Note that groups don't affect changes in \hyphenchar.
-% Use \boldbraxnoamp, not \functionparens, so that & is not special.
-\boldbraxnoamp
-\tclose{#1}% avoid \code because of side effects on active chars
-\interlinepenalty=10000
-\advance\rightskip by 0pt plus 1fil
-\endgraf\nobreak\vskip -\parskip\nobreak
-}
-
-% Do complete processing of one @defun or @defunx line already parsed.
-
-% @deffn Command forward-char nchars
-
-\def\deffn{\defmethparsebody\Edeffn\deffnx\deffnheader}
-
-\def\deffnheader #1#2#3{\doind {fn}{\code{#2}}%
-\begingroup\defname {#2}{#1}\defunargs{#3}\endgroup %
-\catcode 61=\other % Turn off change made in \defparsebody
-}
-
-% @defun == @deffn Function
-
-\def\defun{\defparsebody\Edefun\defunx\defunheader}
-
-\def\defunheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index
-\begingroup\defname {#1}{\putwordDeffunc}%
-\defunargs {#2}\endgroup %
-\catcode 61=\other % Turn off change made in \defparsebody
-}
-
-% @deftypefun int foobar (int @var{foo}, float @var{bar})
-
-\def\deftypefun{\defparsebody\Edeftypefun\deftypefunx\deftypefunheader}
-
-% #1 is the data type. #2 is the name and args.
-\def\deftypefunheader #1#2{\deftypefunheaderx{#1}#2 \relax}
-% #1 is the data type, #2 the name, #3 the args.
-\def\deftypefunheaderx #1#2 #3\relax{%
-\doind {fn}{\code{#2}}% Make entry in function index
-\begingroup\defname {\defheaderxcond#1\relax$$$#2}{\putwordDeftypefun}%
-\deftypefunargs {#3}\endgroup %
-\catcode 61=\other % Turn off change made in \defparsebody
-}
-
-% @deftypefn {Library Function} int foobar (int @var{foo}, float @var{bar})
-
-\def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader}
-
-% \defheaderxcond#1\relax$$$
-% puts #1 in @code, followed by a space, but does nothing if #1 is null.
-\def\defheaderxcond#1#2$$${\ifx#1\relax\else\code{#1#2} \fi}
-
-% #1 is the classification. #2 is the data type. #3 is the name and args.
-\def\deftypefnheader #1#2#3{\deftypefnheaderx{#1}{#2}#3 \relax}
-% #1 is the classification, #2 the data type, #3 the name, #4 the args.
-\def\deftypefnheaderx #1#2#3 #4\relax{%
-\doind {fn}{\code{#3}}% Make entry in function index
-\begingroup
-\normalparens % notably, turn off `&' magic, which prevents
-% at least some C++ text from working
-\defname {\defheaderxcond#2\relax$$$#3}{#1}%
-\deftypefunargs {#4}\endgroup %
-\catcode 61=\other % Turn off change made in \defparsebody
-}
-
-% @defmac == @deffn Macro
-
-\def\defmac{\defparsebody\Edefmac\defmacx\defmacheader}
-
-\def\defmacheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index
-\begingroup\defname {#1}{\putwordDefmac}%
-\defunargs {#2}\endgroup %
-\catcode 61=\other % Turn off change made in \defparsebody
-}
-
-% @defspec == @deffn Special Form
-
-\def\defspec{\defparsebody\Edefspec\defspecx\defspecheader}
-
-\def\defspecheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index
-\begingroup\defname {#1}{\putwordDefspec}%
-\defunargs {#2}\endgroup %
-\catcode 61=\other % Turn off change made in \defparsebody
-}
-
-% @defop CATEGORY CLASS OPERATION ARG...
-%
-\def\defop #1 {\def\defoptype{#1}%
-\defopparsebody\Edefop\defopx\defopheader\defoptype}
-%
-\def\defopheader#1#2#3{%
-\dosubind {fn}{\code{#2}}{\putwordon\ #1}% Make entry in function index
-\begingroup\defname {#2}{\defoptype\ \putwordon\ #1}%
-\defunargs {#3}\endgroup %
-}
-
-% @deftypeop CATEGORY CLASS TYPE OPERATION ARG...
-%
-\def\deftypeop #1 {\def\deftypeopcategory{#1}%
- \deftypeopparsebody\Edeftypeop\deftypeopx\deftypeopheader
- \deftypeopcategory}
-%
-% #1 is the class name, #2 the data type, #3 the operation name, #4 the args.
-\def\deftypeopheader#1#2#3#4{%
- \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index
- \begingroup
- \defname{\defheaderxcond#2\relax$$$#3}
- {\deftypeopcategory\ \putwordon\ \code{#1}}%
- \deftypefunargs{#4}%
- \endgroup
-}
-
-% @deftypemethod CLASS TYPE METHOD ARG...
-%
-\def\deftypemethod{%
- \deftypemethparsebody\Edeftypemethod\deftypemethodx\deftypemethodheader}
-%
-% #1 is the class name, #2 the data type, #3 the method name, #4 the args.
-\def\deftypemethodheader#1#2#3#4{%
- \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index
- \begingroup
- \defname{\defheaderxcond#2\relax$$$#3}{\putwordMethodon\ \code{#1}}%
- \deftypefunargs{#4}%
- \endgroup
-}
-
-% @deftypeivar CLASS TYPE VARNAME
-%
-\def\deftypeivar{%
- \deftypemethparsebody\Edeftypeivar\deftypeivarx\deftypeivarheader}
-%
-% #1 is the class name, #2 the data type, #3 the variable name.
-\def\deftypeivarheader#1#2#3{%
- \dosubind{vr}{\code{#3}}{\putwordof\ \code{#1}}% entry in variable index
- \begingroup
- \defname{#3}{\putwordInstanceVariableof\ \code{#1}}%
- \defvarargs{#3}%
- \endgroup
-}
-
-% @defmethod == @defop Method
-%
-\def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader}
-%
-% #1 is the class name, #2 the method name, #3 the args.
-\def\defmethodheader#1#2#3{%
- \dosubind{fn}{\code{#2}}{\putwordon\ \code{#1}}% entry in function index
- \begingroup
- \defname{#2}{\putwordMethodon\ \code{#1}}%
- \defunargs{#3}%
- \endgroup
-}
-
-% @defcv {Class Option} foo-class foo-flag
-
-\def\defcv #1 {\def\defcvtype{#1}%
-\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}
-
-\def\defcvarheader #1#2#3{%
-\dosubind {vr}{\code{#2}}{\putwordof\ #1}% Make entry in var index
-\begingroup\defname {#2}{\defcvtype\ \putwordof\ #1}%
-\defvarargs {#3}\endgroup %
-}
-
-% @defivar CLASS VARNAME == @defcv {Instance Variable} CLASS VARNAME
-%
-\def\defivar{\defvrparsebody\Edefivar\defivarx\defivarheader}
-%
-\def\defivarheader#1#2#3{%
- \dosubind {vr}{\code{#2}}{\putwordof\ #1}% entry in var index
- \begingroup
- \defname{#2}{\putwordInstanceVariableof\ #1}%
- \defvarargs{#3}%
- \endgroup
-}
-
-% @defvar
-% First, define the processing that is wanted for arguments of @defvar.
-% This is actually simple: just print them in roman.
-% This must expand the args and terminate the paragraph they make up
-\def\defvarargs #1{\normalparens #1%
-\interlinepenalty=10000
-\endgraf\nobreak\vskip -\parskip\nobreak}
-
-% @defvr Counter foo-count
-
-\def\defvr{\defvrparsebody\Edefvr\defvrx\defvrheader}
-
-\def\defvrheader #1#2#3{\doind {vr}{\code{#2}}%
-\begingroup\defname {#2}{#1}\defvarargs{#3}\endgroup}
-
-% @defvar == @defvr Variable
-
-\def\defvar{\defvarparsebody\Edefvar\defvarx\defvarheader}
-
-\def\defvarheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index
-\begingroup\defname {#1}{\putwordDefvar}%
-\defvarargs {#2}\endgroup %
-}
-
-% @defopt == @defvr {User Option}
-
-\def\defopt{\defvarparsebody\Edefopt\defoptx\defoptheader}
-
-\def\defoptheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index
-\begingroup\defname {#1}{\putwordDefopt}%
-\defvarargs {#2}\endgroup %
-}
-
-% @deftypevar int foobar
-
-\def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader}
-
-% #1 is the data type. #2 is the name, perhaps followed by text that
-% is actually part of the data type, which should not be put into the index.
-\def\deftypevarheader #1#2{%
-\dovarind#2 \relax% Make entry in variables index
-\begingroup\defname {\defheaderxcond#1\relax$$$#2}{\putwordDeftypevar}%
-\interlinepenalty=10000
-\endgraf\nobreak\vskip -\parskip\nobreak
-\endgroup}
-\def\dovarind#1 #2\relax{\doind{vr}{\code{#1}}}
-
-% @deftypevr {Global Flag} int enable
-
-\def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader}
-
-\def\deftypevrheader #1#2#3{\dovarind#3 \relax%
-\begingroup\defname {\defheaderxcond#2\relax$$$#3}{#1}
-\interlinepenalty=10000
-\endgraf\nobreak\vskip -\parskip\nobreak
-\endgroup}
-
-% Now define @deftp
-% Args are printed in bold, a slight difference from @defvar.
-
-\def\deftpargs #1{\bf \defvarargs{#1}}
-
-% @deftp Class window height width ...
-
-\def\deftp{\deftpparsebody\Edeftp\deftpx\deftpheader}
-
-\def\deftpheader #1#2#3{\doind {tp}{\code{#2}}%
-\begingroup\defname {#2}{#1}\deftpargs{#3}\endgroup}
-
-% These definitions are used if you use @defunx (etc.)
-% anywhere other than immediately after a @defun or @defunx.
-%
-\def\defcvx#1 {\errmessage{@defcvx in invalid context}}
-\def\deffnx#1 {\errmessage{@deffnx in invalid context}}
-\def\defivarx#1 {\errmessage{@defivarx in invalid context}}
-\def\defmacx#1 {\errmessage{@defmacx in invalid context}}
-\def\defmethodx#1 {\errmessage{@defmethodx in invalid context}}
-\def\defoptx #1 {\errmessage{@defoptx in invalid context}}
-\def\defopx#1 {\errmessage{@defopx in invalid context}}
-\def\defspecx#1 {\errmessage{@defspecx in invalid context}}
-\def\deftpx#1 {\errmessage{@deftpx in invalid context}}
-\def\deftypefnx#1 {\errmessage{@deftypefnx in invalid context}}
-\def\deftypefunx#1 {\errmessage{@deftypefunx in invalid context}}
-\def\deftypeivarx#1 {\errmessage{@deftypeivarx in invalid context}}
-\def\deftypemethodx#1 {\errmessage{@deftypemethodx in invalid context}}
-\def\deftypeopx#1 {\errmessage{@deftypeopx in invalid context}}
-\def\deftypevarx#1 {\errmessage{@deftypevarx in invalid context}}
-\def\deftypevrx#1 {\errmessage{@deftypevrx in invalid context}}
-\def\defunx#1 {\errmessage{@defunx in invalid context}}
-\def\defvarx#1 {\errmessage{@defvarx in invalid context}}
-\def\defvrx#1 {\errmessage{@defvrx in invalid context}}
-
-
-\message{macros,}
-% @macro.
-
-% To do this right we need a feature of e-TeX, \scantokens,
-% which we arrange to emulate with a temporary file in ordinary TeX.
-\ifx\eTeXversion\undefined
- \newwrite\macscribble
- \def\scanmacro#1{%
- \begingroup \newlinechar`\^^M
- % Undo catcode changes of \startcontents and \doprintindex
- \catcode`\@=0 \catcode`\\=12 \escapechar=`\@
- % Append \endinput to make sure that TeX does not see the ending newline.
- \toks0={#1\endinput}%
- \immediate\openout\macscribble=\jobname.tmp
- \immediate\write\macscribble{\the\toks0}%
- \immediate\closeout\macscribble
- \let\xeatspaces\eatspaces
- \input \jobname.tmp
- \endgroup
-}
-\else
-\def\scanmacro#1{%
-\begingroup \newlinechar`\^^M
-% Undo catcode changes of \startcontents and \doprintindex
-\catcode`\@=0 \catcode`\\=12 \escapechar=`\@
-\let\xeatspaces\eatspaces\scantokens{#1\endinput}\endgroup}
-\fi
-
-\newcount\paramno % Count of parameters
-\newtoks\macname % Macro name
-\newif\ifrecursive % Is it recursive?
-\def\macrolist{} % List of all defined macros in the form
- % \do\macro1\do\macro2...
-
-% Utility routines.
-% Thisdoes \let #1 = #2, except with \csnames.
-\def\cslet#1#2{%
-\expandafter\expandafter
-\expandafter\let
-\expandafter\expandafter
-\csname#1\endcsname
-\csname#2\endcsname}
-
-% Trim leading and trailing spaces off a string.
-% Concepts from aro-bend problem 15 (see CTAN).
-{\catcode`\@=11
-\gdef\eatspaces #1{\expandafter\trim@\expandafter{#1 }}
-\gdef\trim@ #1{\trim@@ @#1 @ #1 @ @@}
-\gdef\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @}
-\def\unbrace#1{#1}
-\unbrace{\gdef\trim@@@ #1 } #2@{#1}
-}
-
-% Trim a single trailing ^^M off a string.
-{\catcode`\^^M=12\catcode`\Q=3%
-\gdef\eatcr #1{\eatcra #1Q^^MQ}%
-\gdef\eatcra#1^^MQ{\eatcrb#1Q}%
-\gdef\eatcrb#1Q#2Q{#1}%
-}
-
-% Macro bodies are absorbed as an argument in a context where
-% all characters are catcode 10, 11 or 12, except \ which is active
-% (as in normal texinfo). It is necessary to change the definition of \.
-
-% It's necessary to have hard CRs when the macro is executed. This is
-% done by making ^^M (\endlinechar) catcode 12 when reading the macro
-% body, and then making it the \newlinechar in \scanmacro.
-
-\def\macrobodyctxt{%
- \catcode`\~=12
- \catcode`\^=12
- \catcode`\_=12
- \catcode`\|=12
- \catcode`\<=12
- \catcode`\>=12
- \catcode`\+=12
- \catcode`\{=12
- \catcode`\}=12
- \catcode`\@=12
- \catcode`\^^M=12
- \usembodybackslash}
-
-\def\macroargctxt{%
- \catcode`\~=12
- \catcode`\^=12
- \catcode`\_=12
- \catcode`\|=12
- \catcode`\<=12
- \catcode`\>=12
- \catcode`\+=12
- \catcode`\@=12
- \catcode`\\=12}
-
-% \mbodybackslash is the definition of \ in @macro bodies.
-% It maps \foo\ => \csname macarg.foo\endcsname => #N
-% where N is the macro parameter number.
-% We define \csname macarg.\endcsname to be \realbackslash, so
-% \\ in macro replacement text gets you a backslash.
-
-{\catcode`@=0 @catcode`@\=@active
- @gdef@usembodybackslash{@let\=@mbodybackslash}
- @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname}
-}
-\expandafter\def\csname macarg.\endcsname{\realbackslash}
-
-\def\macro{\recursivefalse\parsearg\macroxxx}
-\def\rmacro{\recursivetrue\parsearg\macroxxx}
-
-\def\macroxxx#1{%
- \getargs{#1}% now \macname is the macname and \argl the arglist
- \ifx\argl\empty % no arguments
- \paramno=0%
- \else
- \expandafter\parsemargdef \argl;%
- \fi
- \if1\csname ismacro.\the\macname\endcsname
- \message{Warning: redefining \the\macname}%
- \else
- \expandafter\ifx\csname \the\macname\endcsname \relax
- \else \errmessage{The name \the\macname\space is reserved}\fi
- \global\cslet{macsave.\the\macname}{\the\macname}%
- \global\expandafter\let\csname ismacro.\the\macname\endcsname=1%
- % Add the macroname to \macrolist
- \toks0 = \expandafter{\macrolist\do}%
- \xdef\macrolist{\the\toks0
- \expandafter\noexpand\csname\the\macname\endcsname}%
- \fi
- \begingroup \macrobodyctxt
- \ifrecursive \expandafter\parsermacbody
- \else \expandafter\parsemacbody
- \fi}
-
-\def\unmacro{\parsearg\unmacroxxx}
-\def\unmacroxxx#1{%
- \if1\csname ismacro.#1\endcsname
- \global\cslet{#1}{macsave.#1}%
- \global\expandafter\let \csname ismacro.#1\endcsname=0%
- % Remove the macro name from \macrolist
- \begingroup
- \edef\tempa{\expandafter\noexpand\csname#1\endcsname}%
- \def\do##1{%
- \def\tempb{##1}%
- \ifx\tempa\tempb
- % remove this
- \else
- \toks0 = \expandafter{\newmacrolist\do}%
- \edef\newmacrolist{\the\toks0\expandafter\noexpand\tempa}%
- \fi}%
- \def\newmacrolist{}%
- % Execute macro list to define \newmacrolist
- \macrolist
- \global\let\macrolist\newmacrolist
- \endgroup
- \else
- \errmessage{Macro #1 not defined}%
- \fi
-}
-
-% This makes use of the obscure feature that if the last token of a
-% <parameter list> is #, then the preceding argument is delimited by
-% an opening brace, and that opening brace is not consumed.
-\def\getargs#1{\getargsxxx#1{}}
-\def\getargsxxx#1#{\getmacname #1 \relax\getmacargs}
-\def\getmacname #1 #2\relax{\macname={#1}}
-\def\getmacargs#1{\def\argl{#1}}
-
-% Parse the optional {params} list. Set up \paramno and \paramlist
-% so \defmacro knows what to do. Define \macarg.blah for each blah
-% in the params list, to be ##N where N is the position in that list.
-% That gets used by \mbodybackslash (above).
-
-% We need to get `macro parameter char #' into several definitions.
-% The technique used is stolen from LaTeX: let \hash be something
-% unexpandable, insert that wherever you need a #, and then redefine
-% it to # just before using the token list produced.
-%
-% The same technique is used to protect \eatspaces till just before
-% the macro is used.
-
-\def\parsemargdef#1;{\paramno=0\def\paramlist{}%
- \let\hash\relax\let\xeatspaces\relax\parsemargdefxxx#1,;,}
-\def\parsemargdefxxx#1,{%
- \if#1;\let\next=\relax
- \else \let\next=\parsemargdefxxx
- \advance\paramno by 1%
- \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname
- {\xeatspaces{\hash\the\paramno}}%
- \edef\paramlist{\paramlist\hash\the\paramno,}%
- \fi\next}
-
-% These two commands read recursive and nonrecursive macro bodies.
-% (They're different since rec and nonrec macros end differently.)
-
-\long\def\parsemacbody#1@end macro%
-{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
-\long\def\parsermacbody#1@end rmacro%
-{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
-
-% This defines the macro itself. There are six cases: recursive and
-% nonrecursive macros of zero, one, and many arguments.
-% Much magic with \expandafter here.
-% \xdef is used so that macro definitions will survive the file
-% they're defined in; @include reads the file inside a group.
-\def\defmacro{%
- \let\hash=##% convert placeholders to macro parameter chars
- \ifrecursive
- \ifcase\paramno
- % 0
- \expandafter\xdef\csname\the\macname\endcsname{%
- \noexpand\scanmacro{\temp}}%
- \or % 1
- \expandafter\xdef\csname\the\macname\endcsname{%
- \bgroup\noexpand\macroargctxt
- \noexpand\braceorline
- \expandafter\noexpand\csname\the\macname xxx\endcsname}%
- \expandafter\xdef\csname\the\macname xxx\endcsname##1{%
- \egroup\noexpand\scanmacro{\temp}}%
- \else % many
- \expandafter\xdef\csname\the\macname\endcsname{%
- \bgroup\noexpand\macroargctxt
- \noexpand\csname\the\macname xx\endcsname}%
- \expandafter\xdef\csname\the\macname xx\endcsname##1{%
- \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
- \expandafter\expandafter
- \expandafter\xdef
- \expandafter\expandafter
- \csname\the\macname xxx\endcsname
- \paramlist{\egroup\noexpand\scanmacro{\temp}}%
- \fi
- \else
- \ifcase\paramno
- % 0
- \expandafter\xdef\csname\the\macname\endcsname{%
- \noexpand\norecurse{\the\macname}%
- \noexpand\scanmacro{\temp}\egroup}%
- \or % 1
- \expandafter\xdef\csname\the\macname\endcsname{%
- \bgroup\noexpand\macroargctxt
- \noexpand\braceorline
- \expandafter\noexpand\csname\the\macname xxx\endcsname}%
- \expandafter\xdef\csname\the\macname xxx\endcsname##1{%
- \egroup
- \noexpand\norecurse{\the\macname}%
- \noexpand\scanmacro{\temp}\egroup}%
- \else % many
- \expandafter\xdef\csname\the\macname\endcsname{%
- \bgroup\noexpand\macroargctxt
- \expandafter\noexpand\csname\the\macname xx\endcsname}%
- \expandafter\xdef\csname\the\macname xx\endcsname##1{%
- \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
- \expandafter\expandafter
- \expandafter\xdef
- \expandafter\expandafter
- \csname\the\macname xxx\endcsname
- \paramlist{%
- \egroup
- \noexpand\norecurse{\the\macname}%
- \noexpand\scanmacro{\temp}\egroup}%
- \fi
- \fi}
-
-\def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}}
-
-% \braceorline decides whether the next nonwhitespace character is a
-% {. If so it reads up to the closing }, if not, it reads the whole
-% line. Whatever was read is then fed to the next control sequence
-% as an argument (by \parsebrace or \parsearg)
-\def\braceorline#1{\let\next=#1\futurelet\nchar\braceorlinexxx}
-\def\braceorlinexxx{%
- \ifx\nchar\bgroup\else
- \expandafter\parsearg
- \fi \next}
-
-% We mant to disable all macros during \shipout so that they are not
-% expanded by \write.
-\def\turnoffmacros{\begingroup \def\do##1{\let\noexpand##1=\relax}%
- \edef\next{\macrolist}\expandafter\endgroup\next}
-
-
-% @alias.
-% We need some trickery to remove the optional spaces around the equal
-% sign. Just make them active and then expand them all to nothing.
-\def\alias{\begingroup\obeyspaces\parsearg\aliasxxx}
-\def\aliasxxx #1{\aliasyyy#1\relax}
-\def\aliasyyy #1=#2\relax{\ignoreactivespaces
-\edef\next{\global\let\expandafter\noexpand\csname#1\endcsname=%
- \expandafter\noexpand\csname#2\endcsname}%
-\expandafter\endgroup\next}
-
-
-\message{cross references,}
-% @xref etc.
-
-\newwrite\auxfile
-
-\newif\ifhavexrefs % True if xref values are known.
-\newif\ifwarnedxrefs % True if we warned once that they aren't known.
-
-% @inforef is relatively simple.
-\def\inforef #1{\inforefzzz #1,,,,**}
-\def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}},
- node \samp{\ignorespaces#1{}}}
-
-% @node's job is to define \lastnode.
-\def\node{\ENVcheck\parsearg\nodezzz}
-\def\nodezzz#1{\nodexxx [#1,]}
-\def\nodexxx[#1,#2]{\gdef\lastnode{#1}}
-\let\nwnode=\node
-\let\lastnode=\relax
-
-% The sectioning commands (@chapter, etc.) call these.
-\def\donoderef{%
- \ifx\lastnode\relax\else
- \expandafter\expandafter\expandafter\setref{\lastnode}%
- {Ysectionnumberandtype}%
- \global\let\lastnode=\relax
- \fi
-}
-\def\unnumbnoderef{%
- \ifx\lastnode\relax\else
- \expandafter\expandafter\expandafter\setref{\lastnode}{Ynothing}%
- \global\let\lastnode=\relax
- \fi
-}
-\def\appendixnoderef{%
- \ifx\lastnode\relax\else
- \expandafter\expandafter\expandafter\setref{\lastnode}%
- {Yappendixletterandtype}%
- \global\let\lastnode=\relax
- \fi
-}
-
-
-% @anchor{NAME} -- define xref target at arbitrary point.
-%
-\newcount\savesfregister
-\gdef\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi}
-\gdef\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi}
-\gdef\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces}
-
-% \setref{NAME}{SNT} defines a cross-reference point NAME, namely
-% NAME-title, NAME-pg, and NAME-SNT. Called from \foonoderef. We have
-% to set \indexdummies so commands such as @code in a section title
-% aren't expanded. It would be nicer not to expand the titles in the
-% first place, but there's so many layers that that is hard to do.
-%
-\def\setref#1#2{{%
- \indexdummies
- \pdfmkdest{#1}%
- \dosetq{#1-title}{Ytitle}%
- \dosetq{#1-pg}{Ypagenumber}%
- \dosetq{#1-snt}{#2}%
-}}
-
-% @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is
-% the node name, #2 the name of the Info cross-reference, #3 the printed
-% node name, #4 the name of the Info file, #5 the name of the printed
-% manual. All but the node name can be omitted.
-%
-\def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]}
-\def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]}
-\def\ref#1{\xrefX[#1,,,,,,,]}
-\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup
- \unsepspaces
- \def\printedmanual{\ignorespaces #5}%
- \def\printednodename{\ignorespaces #3}%
- \setbox1=\hbox{\printedmanual}%
- \setbox0=\hbox{\printednodename}%
- \ifdim \wd0 = 0pt
- % No printed node name was explicitly given.
- \expandafter\ifx\csname SETxref-automatic-section-title\endcsname\relax
- % Use the node name inside the square brackets.
- \def\printednodename{\ignorespaces #1}%
- \else
- % Use the actual chapter/section title appear inside
- % the square brackets. Use the real section title if we have it.
- \ifdim \wd1 > 0pt
- % It is in another manual, so we don't have it.
- \def\printednodename{\ignorespaces #1}%
- \else
- \ifhavexrefs
- % We know the real title if we have the xref values.
- \def\printednodename{\refx{#1-title}{}}%
- \else
- % Otherwise just copy the Info node name.
- \def\printednodename{\ignorespaces #1}%
- \fi%
- \fi
- \fi
- \fi
- %
- % If we use \unhbox0 and \unhbox1 to print the node names, TeX does not
- % insert empty discretionaries after hyphens, which means that it will
- % not find a line break at a hyphen in a node names. Since some manuals
- % are best written with fairly long node names, containing hyphens, this
- % is a loss. Therefore, we give the text of the node name again, so it
- % is as if TeX is seeing it for the first time.
- \ifpdf
- \leavevmode
- \getfilename{#4}%
- \ifnum\filenamelength>0
- \startlink attr{/Border [0 0 0]}%
- goto file{\the\filename.pdf} name{#1@}%
- \else
- \startlink attr{/Border [0 0 0]}%
- goto name{#1@}%
- \fi
- \linkcolor
- \fi
- %
- \ifdim \wd1 > 0pt
- \putwordsection{} ``\printednodename'' \putwordin{} \cite{\printedmanual}%
- \else
- % _ (for example) has to be the character _ for the purposes of the
- % control sequence corresponding to the node, but it has to expand
- % into the usual \leavevmode...\vrule stuff for purposes of
- % printing. So we \turnoffactive for the \refx-snt, back on for the
- % printing, back off for the \refx-pg.
- {\normalturnoffactive
- % Only output a following space if the -snt ref is nonempty; for
- % @unnumbered and @anchor, it won't be.
- \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}%
- \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi
- }%
- % [mynode],
- [\printednodename],\space
- % page 3
- \turnoffactive \putwordpage\tie\refx{#1-pg}{}%
- \fi
- \endlink
-\endgroup}
-
-% \dosetq is the interface for calls from other macros
-
-% Use \normalturnoffactive so that punctuation chars such as underscore
-% and backslash work in node names. (\turnoffactive doesn't do \.)
-\def\dosetq#1#2{%
- {\let\folio=0%
- \normalturnoffactive
- \edef\next{\write\auxfile{\internalsetq{#1}{#2}}}%
- \iflinks
- \next
- \fi
- }%
-}
-
-% \internalsetq {foo}{page} expands into
-% CHARACTERS 'xrdef {foo}{...expansion of \Ypage...}
-% When the aux file is read, ' is the escape character
-
-\def\internalsetq #1#2{'xrdef {#1}{\csname #2\endcsname}}
-
-% Things to be expanded by \internalsetq
-
-\def\Ypagenumber{\folio}
-
-\def\Ytitle{\thissection}
-
-\def\Ynothing{}
-
-\def\Ysectionnumberandtype{%
-\ifnum\secno=0 \putwordChapter\xreftie\the\chapno %
-\else \ifnum \subsecno=0 \putwordSection\xreftie\the\chapno.\the\secno %
-\else \ifnum \subsubsecno=0 %
-\putwordSection\xreftie\the\chapno.\the\secno.\the\subsecno %
-\else %
-\putwordSection\xreftie\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno %
-\fi \fi \fi }
-
-\def\Yappendixletterandtype{%
-\ifnum\secno=0 \putwordAppendix\xreftie'char\the\appendixno{}%
-\else \ifnum \subsecno=0 \putwordSection\xreftie'char\the\appendixno.\the\secno %
-\else \ifnum \subsubsecno=0 %
-\putwordSection\xreftie'char\the\appendixno.\the\secno.\the\subsecno %
-\else %
-\putwordSection\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %
-\fi \fi \fi }
-
-\gdef\xreftie{'tie}
-
-% Use TeX 3.0's \inputlineno to get the line number, for better error
-% messages, but if we're using an old version of TeX, don't do anything.
-%
-\ifx\inputlineno\thisisundefined
- \let\linenumber = \empty % Non-3.0.
-\else
- \def\linenumber{\the\inputlineno:\space}
-\fi
-
-% Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME.
-% If its value is nonempty, SUFFIX is output afterward.
-
-\def\refx#1#2{%
- \expandafter\ifx\csname X#1\endcsname\relax
- % If not defined, say something at least.
- \angleleft un\-de\-fined\angleright
- \iflinks
- \ifhavexrefs
- \message{\linenumber Undefined cross reference `#1'.}%
- \else
- \ifwarnedxrefs\else
- \global\warnedxrefstrue
- \message{Cross reference values unknown; you must run TeX again.}%
- \fi
- \fi
- \fi
- \else
- % It's defined, so just use it.
- \csname X#1\endcsname
- \fi
- #2% Output the suffix in any case.
-}
-
-% This is the macro invoked by entries in the aux file.
-%
-\def\xrdef#1{\begingroup
- % Reenable \ as an escape while reading the second argument.
- \catcode`\\ = 0
- \afterassignment\endgroup
- \expandafter\gdef\csname X#1\endcsname
-}
-
-% Read the last existing aux file, if any. No error if none exists.
-\def\readauxfile{\begingroup
- \catcode`\^^@=\other
- \catcode`\^^A=\other
- \catcode`\^^B=\other
- \catcode`\^^C=\other
- \catcode`\^^D=\other
- \catcode`\^^E=\other
- \catcode`\^^F=\other
- \catcode`\^^G=\other
- \catcode`\^^H=\other
- \catcode`\^^K=\other
- \catcode`\^^L=\other
- \catcode`\^^N=\other
- \catcode`\^^P=\other
- \catcode`\^^Q=\other
- \catcode`\^^R=\other
- \catcode`\^^S=\other
- \catcode`\^^T=\other
- \catcode`\^^U=\other
- \catcode`\^^V=\other
- \catcode`\^^W=\other
- \catcode`\^^X=\other
- \catcode`\^^Z=\other
- \catcode`\^^[=\other
- \catcode`\^^\=\other
- \catcode`\^^]=\other
- \catcode`\^^^=\other
- \catcode`\^^_=\other
- \catcode`\@=\other
- \catcode`\^=\other
- % It was suggested to define this as 7, which would allow ^^e4 etc.
- % in xref tags, i.e., node names. But since ^^e4 notation isn't
- % supported in the main text, it doesn't seem desirable. Furthermore,
- % that is not enough: for node names that actually contain a ^
- % character, we would end up writing a line like this: 'xrdef {'hat
- % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first
- % argument, and \hat is not an expandable control sequence. It could
- % all be worked out, but why? Either we support ^^ or we don't.
- %
- % The other change necessary for this was to define \auxhat:
- % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter
- % and then to call \auxhat in \setq.
- %
- \catcode`\~=\other
- \catcode`\[=\other
- \catcode`\]=\other
- \catcode`\"=\other
- \catcode`\_=\other
- \catcode`\|=\other
- \catcode`\<=\other
- \catcode`\>=\other
- \catcode`\$=\other
- \catcode`\#=\other
- \catcode`\&=\other
- \catcode`+=\other % avoid \+ for paranoia even though we've turned it off
- % Make the characters 128-255 be printing characters
- {%
- \count 1=128
- \def\loop{%
- \catcode\count 1=\other
- \advance\count 1 by 1
- \ifnum \count 1<256 \loop \fi
- }%
- }%
- % The aux file uses ' as the escape (for now).
- % Turn off \ as an escape so we do not lose on
- % entries which were dumped with control sequences in their names.
- % For example, 'xrdef {$\leq $-fun}{page ...} made by @defun ^^
- % Reference to such entries still does not work the way one would wish,
- % but at least they do not bomb out when the aux file is read in.
- \catcode`\{=1
- \catcode`\}=2
- \catcode`\%=\other
- \catcode`\'=0
- \catcode`\\=\other
- %
- \openin 1 \jobname.aux
- \ifeof 1 \else
- \closein 1
- \input \jobname.aux
- \global\havexrefstrue
- \global\warnedobstrue
- \fi
- % Open the new aux file. TeX will close it automatically at exit.
- \openout\auxfile=\jobname.aux
-\endgroup}
-
-
-% Footnotes.
-
-\newcount \footnoteno
-
-% The trailing space in the following definition for supereject is
-% vital for proper filling; pages come out unaligned when you do a
-% pagealignmacro call if that space before the closing brace is
-% removed. (Generally, numeric constants should always be followed by a
-% space to prevent strange expansion errors.)
-\def\supereject{\par\penalty -20000\footnoteno =0 }
-
-% @footnotestyle is meaningful for info output only.
-\let\footnotestyle=\comment
-
-\let\ptexfootnote=\footnote
-
-{\catcode `\@=11
-%
-% Auto-number footnotes. Otherwise like plain.
-\gdef\footnote{%
- \global\advance\footnoteno by \@ne
- \edef\thisfootno{$^{\the\footnoteno}$}%
- %
- % In case the footnote comes at the end of a sentence, preserve the
- % extra spacing after we do the footnote number.
- \let\@sf\empty
- \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi
- %
- % Remove inadvertent blank space before typesetting the footnote number.
- \unskip
- \thisfootno\@sf
- \footnotezzz
-}%
-
-% Don't bother with the trickery in plain.tex to not require the
-% footnote text as a parameter. Our footnotes don't need to be so general.
-%
-% Oh yes, they do; otherwise, @ifset and anything else that uses
-% \parseargline fail inside footnotes because the tokens are fixed when
-% the footnote is read. --karl, 16nov96.
-%
-\long\gdef\footnotezzz{\insert\footins\bgroup
- % We want to typeset this text as a normal paragraph, even if the
- % footnote reference occurs in (for example) a display environment.
- % So reset some parameters.
- \interlinepenalty\interfootnotelinepenalty
- \splittopskip\ht\strutbox % top baseline for broken footnotes
- \splitmaxdepth\dp\strutbox
- \floatingpenalty\@MM
- \leftskip\z@skip
- \rightskip\z@skip
- \spaceskip\z@skip
- \xspaceskip\z@skip
- \parindent\defaultparindent
- %
- \smallfonts \rm
- %
- % Hang the footnote text off the number.
- \hang
- \textindent{\thisfootno}%
- %
- % Don't crash into the line above the footnote text. Since this
- % expands into a box, it must come within the paragraph, lest it
- % provide a place where TeX can split the footnote.
- \footstrut
- \futurelet\next\fo@t
-}
-\def\fo@t{\ifcat\bgroup\noexpand\next \let\next\f@@t
- \else\let\next\f@t\fi \next}
-\def\f@@t{\bgroup\aftergroup\@foot\let\next}
-\def\f@t#1{#1\@foot}
-\def\@foot{\strut\par\egroup}
-
-}%end \catcode `\@=11
-
-% Set the baselineskip to #1, and the lineskip and strut size
-% correspondingly. There is no deep meaning behind these magic numbers
-% used as factors; they just match (closely enough) what Knuth defined.
-%
-\def\lineskipfactor{.08333}
-\def\strutheightpercent{.70833}
-\def\strutdepthpercent {.29167}
-%
-\def\setleading#1{%
- \normalbaselineskip = #1\relax
- \normallineskip = \lineskipfactor\normalbaselineskip
- \normalbaselines
- \setbox\strutbox =\hbox{%
- \vrule width0pt height\strutheightpercent\baselineskip
- depth \strutdepthpercent \baselineskip
- }%
-}
-
-% @| inserts a changebar to the left of the current line. It should
-% surround any changed text. This approach does *not* work if the
-% change spans more than two lines of output. To handle that, we would
-% have adopt a much more difficult approach (putting marks into the main
-% vertical list for the beginning and end of each change).
-%
-\def\|{%
- % \vadjust can only be used in horizontal mode.
- \leavevmode
- %
- % Append this vertical mode material after the current line in the output.
- \vadjust{%
- % We want to insert a rule with the height and depth of the current
- % leading; that is exactly what \strutbox is supposed to record.
- \vskip-\baselineskip
- %
- % \vadjust-items are inserted at the left edge of the type. So
- % the \llap here moves out into the left-hand margin.
- \llap{%
- %
- % For a thicker or thinner bar, change the `1pt'.
- \vrule height\baselineskip width1pt
- %
- % This is the space between the bar and the text.
- \hskip 12pt
- }%
- }%
-}
-
-% For a final copy, take out the rectangles
-% that mark overfull boxes (in case you have decided
-% that the text looks ok even though it passes the margin).
-%
-\def\finalout{\overfullrule=0pt}
-
-% @image. We use the macros from epsf.tex to support this.
-% If epsf.tex is not installed and @image is used, we complain.
-%
-% Check for and read epsf.tex up front. If we read it only at @image
-% time, we might be inside a group, and then its definitions would get
-% undone and the next image would fail.
-\openin 1 = epsf.tex
-\ifeof 1 \else
- \closein 1
- % Do not bother showing banner with post-v2.7 epsf.tex (available in
- % doc/epsf.tex until it shows up on ctan).
- \def\epsfannounce{\toks0 = }%
- \input epsf.tex
-\fi
-%
-% We will only complain once about lack of epsf.tex.
-\newif\ifwarnednoepsf
-\newhelp\noepsfhelp{epsf.tex must be installed for images to
- work. It is also included in the Texinfo distribution, or you can get
- it from ftp://tug.org/tex/epsf.tex.}
-%
-\def\image#1{%
- \ifx\epsfbox\undefined
- \ifwarnednoepsf \else
- \errhelp = \noepsfhelp
- \errmessage{epsf.tex not found, images will be ignored}%
- \global\warnednoepsftrue
- \fi
- \else
- \imagexxx #1,,,\finish
- \fi
-}
-%
-% Arguments to @image:
-% #1 is (mandatory) image filename; we tack on .eps extension.
-% #2 is (optional) width, #3 is (optional) height.
-% #4 is just the usual extra ignored arg for parsing this stuff.
-\def\imagexxx#1,#2,#3,#4\finish{%
- \ifpdf
- \centerline{\dopdfimage{#1}{#2}{#3}}%
- \else
- % \epsfbox itself resets \epsf?size at each figure.
- \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi
- \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi
- \begingroup
- \catcode`\^^M = 5 % in case we're inside an example
- % If the image is by itself, center it.
- \ifvmode
- \nobreak\bigskip
- % Usually we'll have text after the image which will insert
- % \parskip glue, so insert it here too to equalize the space
- % above and below.
- \nobreak\vskip\parskip
- \nobreak
- \centerline{\epsfbox{#1.eps}}%
- \bigbreak
- \else
- % In the middle of a paragraph, no extra space.
- \epsfbox{#1.eps}%
- \fi
- \endgroup
- \fi
-}
-
-
-\message{localization,}
-% and i18n.
-
-% @documentlanguage is usually given very early, just after
-% @setfilename. If done too late, it may not override everything
-% properly. Single argument is the language abbreviation.
-% It would be nice if we could set up a hyphenation file here.
-%
-\def\documentlanguage{\parsearg\dodocumentlanguage}
-\def\dodocumentlanguage#1{%
- \tex % read txi-??.tex file in plain TeX.
- % Read the file if it exists.
- \openin 1 txi-#1.tex
- \ifeof1
- \errhelp = \nolanghelp
- \errmessage{Cannot read language file txi-#1.tex}%
- \let\temp = \relax
- \else
- \def\temp{\input txi-#1.tex }%
- \fi
- \temp
- \endgroup
-}
-\newhelp\nolanghelp{The given language definition file cannot be found or
-is empty. Maybe you need to install it? In the current directory
-should work if nowhere else does.}
-
-
-% @documentencoding should change something in TeX eventually, most
-% likely, but for now just recognize it.
-\let\documentencoding = \comment
-
-
-% Page size parameters.
-%
-\newdimen\defaultparindent \defaultparindent = 15pt
-
-\chapheadingskip = 15pt plus 4pt minus 2pt
-\secheadingskip = 12pt plus 3pt minus 2pt
-\subsecheadingskip = 9pt plus 2pt minus 2pt
-
-% Prevent underfull vbox error messages.
-\vbadness = 10000
-
-% Don't be so finicky about underfull hboxes, either.
-\hbadness = 2000
-
-% Following George Bush, just get rid of widows and orphans.
-\widowpenalty=10000
-\clubpenalty=10000
-
-% Use TeX 3.0's \emergencystretch to help line breaking, but if we're
-% using an old version of TeX, don't do anything. We want the amount of
-% stretch added to depend on the line length, hence the dependence on
-% \hsize. We call this whenever the paper size is set.
-%
-\def\setemergencystretch{%
- \ifx\emergencystretch\thisisundefined
- % Allow us to assign to \emergencystretch anyway.
- \def\emergencystretch{\dimen0}%
- \else
- \emergencystretch = .15\hsize
- \fi
-}
-
-% Parameters in order: 1) textheight; 2) textwidth; 3) voffset;
-% 4) hoffset; 5) binding offset; 6) topskip. Then whoever calls us can
-% set \parskip and call \setleading for \baselineskip.
-%
-\def\internalpagesizes#1#2#3#4#5#6{%
- \voffset = #3\relax
- \topskip = #6\relax
- \splittopskip = \topskip
- %
- \vsize = #1\relax
- \advance\vsize by \topskip
- \outervsize = \vsize
- \advance\outervsize by 2\topandbottommargin
- \pageheight = \vsize
- %
- \hsize = #2\relax
- \outerhsize = \hsize
- \advance\outerhsize by 0.5in
- \pagewidth = \hsize
- %
- \normaloffset = #4\relax
- \bindingoffset = #5\relax
- %
- \parindent = \defaultparindent
- \setemergencystretch
-}
-
-% @letterpaper (the default).
-\def\letterpaper{{\globaldefs = 1
- \parskip = 3pt plus 2pt minus 1pt
- \setleading{13.2pt}%
- %
- % If page is nothing but text, make it come out even.
- \internalpagesizes{46\baselineskip}{6in}{\voffset}{.25in}{\bindingoffset}{36pt}%
-}}
-
-% Use @smallbook to reset parameters for 7x9.5 (or so) format.
-\def\smallbook{{\globaldefs = 1
- \parskip = 2pt plus 1pt
- \setleading{12pt}%
- %
- \internalpagesizes{7.5in}{5.in}{\voffset}{.25in}{\bindingoffset}{16pt}%
- %
- \lispnarrowing = 0.3in
- \tolerance = 700
- \hfuzz = 1pt
- \contentsrightmargin = 0pt
- \deftypemargin = 0pt
- \defbodyindent = .5cm
- %
- \let\smalldisplay = \smalldisplayx
- \let\smallexample = \smalllispx
- \let\smallformat = \smallformatx
- \let\smalllisp = \smalllispx
-}}
-
-% Use @afourpaper to print on European A4 paper.
-\def\afourpaper{{\globaldefs = 1
- \setleading{12pt}%
- \parskip = 3pt plus 2pt minus 1pt
- %
- \internalpagesizes{53\baselineskip}{160mm}{\voffset}{4mm}{\bindingoffset}{44pt}%
- %
- \tolerance = 700
- \hfuzz = 1pt
-}}
-
-% A specific text layout, 24x15cm overall, intended for A4 paper. Top margin
-% 29mm, hence bottom margin 28mm, nominal side margin 3cm.
-\def\afourlatex{{\globaldefs = 1
- \setleading{13.6pt}%
- %
- \afourpaper
- \internalpagesizes{237mm}{150mm}{3.6mm}{3.6mm}{3mm}{7mm}%
- %
- \globaldefs = 0
-}}
-
-% Use @afourwide to print on European A4 paper in wide format.
-\def\afourwide{%
- \afourpaper
- \internalpagesizes{9.5in}{6.5in}{\hoffset}{\normaloffset}{\bindingoffset}{7mm}%
- %
- \globaldefs = 0
-}
-
-% @pagesizes TEXTHEIGHT[,TEXTWIDTH]
-% Perhaps we should allow setting the margins, \topskip, \parskip,
-% and/or leading, also. Or perhaps we should compute them somehow.
-%
-\def\pagesizes{\parsearg\pagesizesxxx}
-\def\pagesizesxxx#1{\pagesizesyyy #1,,\finish}
-\def\pagesizesyyy#1,#2,#3\finish{{%
- \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \hsize=#2\relax \fi
- \globaldefs = 1
- %
- \parskip = 3pt plus 2pt minus 1pt
- \setleading{13.2pt}%
- %
- \internalpagesizes{#1}{\hsize}{\voffset}{\normaloffset}{\bindingoffset}{44pt}%
-}}
-
-% Set default to letter.
-%
-\letterpaper
-
-
-\message{and turning on texinfo input format.}
-
-% Define macros to output various characters with catcode for normal text.
-\catcode`\"=\other
-\catcode`\~=\other
-\catcode`\^=\other
-\catcode`\_=\other
-\catcode`\|=\other
-\catcode`\<=\other
-\catcode`\>=\other
-\catcode`\+=\other
-\catcode`\$=\other
-\def\normaldoublequote{"}
-\def\normaltilde{~}
-\def\normalcaret{^}
-\def\normalunderscore{_}
-\def\normalverticalbar{|}
-\def\normalless{<}
-\def\normalgreater{>}
-\def\normalplus{+}
-\def\normaldollar{$}
-
-% This macro is used to make a character print one way in ttfont
-% where it can probably just be output, and another way in other fonts,
-% where something hairier probably needs to be done.
-%
-% #1 is what to print if we are indeed using \tt; #2 is what to print
-% otherwise. Since all the Computer Modern typewriter fonts have zero
-% interword stretch (and shrink), and it is reasonable to expect all
-% typewriter fonts to have this, we can check that font parameter.
-%
-\def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi}
-
-% Same as above, but check for italic font. Actually this also catches
-% non-italic slanted fonts since it is impossible to distinguish them from
-% italic fonts. But since this is only used by $ and it uses \sl anyway
-% this is not a problem.
-\def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi}
-
-% Turn off all special characters except @
-% (and those which the user can use as if they were ordinary).
-% Most of these we simply print from the \tt font, but for some, we can
-% use math or other variants that look better in normal text.
-
-\catcode`\"=\active
-\def\activedoublequote{{\tt\char34}}
-\let"=\activedoublequote
-\catcode`\~=\active
-\def~{{\tt\char126}}
-\chardef\hat=`\^
-\catcode`\^=\active
-\def^{{\tt \hat}}
-
-\catcode`\_=\active
-\def_{\ifusingtt\normalunderscore\_}
-% Subroutine for the previous macro.
-\def\_{\leavevmode \kern.06em \vbox{\hrule width.3em height.1ex}}
-
-\catcode`\|=\active
-\def|{{\tt\char124}}
-\chardef \less=`\<
-\catcode`\<=\active
-\def<{{\tt \less}}
-\chardef \gtr=`\>
-\catcode`\>=\active
-\def>{{\tt \gtr}}
-\catcode`\+=\active
-\def+{{\tt \char 43}}
-\catcode`\$=\active
-\def${\ifusingit{{\sl\$}}\normaldollar}
-%\catcode 27=\active
-%\def^^[{$\diamondsuit$}
-
-% Set up an active definition for =, but don't enable it most of the time.
-{\catcode`\==\active
-\global\def={{\tt \char 61}}}
-
-\catcode`+=\active
-\catcode`\_=\active
-
-% If a .fmt file is being used, characters that might appear in a file
-% name cannot be active until we have parsed the command line.
-% So turn them off again, and have \everyjob (or @setfilename) turn them on.
-% \otherifyactive is called near the end of this file.
-\def\otherifyactive{\catcode`+=\other \catcode`\_=\other}
-
-\catcode`\@=0
-
-% \rawbackslashxx output one backslash character in current font
-\global\chardef\rawbackslashxx=`\\
-%{\catcode`\\=\other
-%@gdef@rawbackslashxx{\}}
-
-% \rawbackslash redefines \ as input to do \rawbackslashxx.
-{\catcode`\\=\active
-@gdef@rawbackslash{@let\=@rawbackslashxx }}
-
-% \normalbackslash outputs one backslash in fixed width font.
-\def\normalbackslash{{\tt\rawbackslashxx}}
-
-% \catcode 17=0 % Define control-q
-\catcode`\\=\active
-
-% Used sometimes to turn off (effectively) the active characters
-% even after parsing them.
-@def@turnoffactive{@let"=@normaldoublequote
-@let\=@realbackslash
-@let~=@normaltilde
-@let^=@normalcaret
-@let_=@normalunderscore
-@let|=@normalverticalbar
-@let<=@normalless
-@let>=@normalgreater
-@let+=@normalplus
-@let$=@normaldollar}
-
-@def@normalturnoffactive{@let"=@normaldoublequote
-@let\=@normalbackslash
-@let~=@normaltilde
-@let^=@normalcaret
-@let_=@normalunderscore
-@let|=@normalverticalbar
-@let<=@normalless
-@let>=@normalgreater
-@let+=@normalplus
-@let$=@normaldollar}
-
-% Make _ and + \other characters, temporarily.
-% This is canceled by @fixbackslash.
-@otherifyactive
-
-% If a .fmt file is being used, we don't want the `\input texinfo' to show up.
-% That is what \eatinput is for; after that, the `\' should revert to printing
-% a backslash.
-%
-@gdef@eatinput input texinfo{@fixbackslash}
-@global@let\ = @eatinput
-
-% On the other hand, perhaps the file did not have a `\input texinfo'. Then
-% the first `\{ in the file would cause an error. This macro tries to fix
-% that, assuming it is called before the first `\' could plausibly occur.
-% Also back turn on active characters that might appear in the input
-% file name, in case not using a pre-dumped format.
-%
-@gdef@fixbackslash{%
- @ifx\@eatinput @let\ = @normalbackslash @fi
- @catcode`+=@active
- @catcode`@_=@active
-}
-
-% Say @foo, not \foo, in error messages.
-@escapechar = `@@
-
-% These look ok in all fonts, so just make them not special.
-@catcode`@& = @other
-@catcode`@# = @other
-@catcode`@% = @other
-
-@c Set initial fonts.
-@textfonts
-@rm
-
-
-@c Local variables:
-@c eval: (add-hook 'write-file-hooks 'time-stamp)
-@c page-delimiter: "^\\\\message"
-@c time-stamp-start: "def\\\\texinfoversion{"
-@c time-stamp-format: "%:y-%02m-%02d.%02H"
-@c time-stamp-end: "}"
-@c End:
diff --git a/readline-4.3.orig/emacs_keymap.c b/readline-4.3.orig/emacs_keymap.c
deleted file mode 100644
index ca9d134..0000000
--- a/readline-4.3.orig/emacs_keymap.c
+++ /dev/null
@@ -1,873 +0,0 @@
-/* emacs_keymap.c -- the keymap for emacs_mode in readline (). */
-
-/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if !defined (BUFSIZ)
-#include <stdio.h>
-#endif /* !BUFSIZ */
-
-#include "readline.h"
-
-/* An array of function pointers, one for each possible key.
- If the type byte is ISKMAP, then the pointer is the address of
- a keymap. */
-
-KEYMAP_ENTRY_ARRAY emacs_standard_keymap = {
-
- /* Control keys. */
- { ISFUNC, rl_set_mark }, /* Control-@ */
- { ISFUNC, rl_beg_of_line }, /* Control-a */
- { ISFUNC, rl_backward_char }, /* Control-b */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-c */
- { ISFUNC, rl_delete }, /* Control-d */
- { ISFUNC, rl_end_of_line }, /* Control-e */
- { ISFUNC, rl_forward_char }, /* Control-f */
- { ISFUNC, rl_abort }, /* Control-g */
- { ISFUNC, rl_rubout }, /* Control-h */
- { ISFUNC, rl_complete }, /* Control-i */
- { ISFUNC, rl_newline }, /* Control-j */
- { ISFUNC, rl_kill_line }, /* Control-k */
- { ISFUNC, rl_clear_screen }, /* Control-l */
- { ISFUNC, rl_newline }, /* Control-m */
- { ISFUNC, rl_get_next_history }, /* Control-n */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-o */
- { ISFUNC, rl_get_previous_history }, /* Control-p */
- { ISFUNC, rl_quoted_insert }, /* Control-q */
- { ISFUNC, rl_reverse_search_history }, /* Control-r */
- { ISFUNC, rl_forward_search_history }, /* Control-s */
- { ISFUNC, rl_transpose_chars }, /* Control-t */
- { ISFUNC, rl_unix_line_discard }, /* Control-u */
- { ISFUNC, rl_quoted_insert }, /* Control-v */
- { ISFUNC, rl_unix_word_rubout }, /* Control-w */
- { ISKMAP, (rl_command_func_t *)emacs_ctlx_keymap }, /* Control-x */
- { ISFUNC, rl_yank }, /* Control-y */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-z */
- { ISKMAP, (rl_command_func_t *)emacs_meta_keymap }, /* Control-[ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-\ */
- { ISFUNC, rl_char_search }, /* Control-] */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-^ */
- { ISFUNC, rl_undo_command }, /* Control-_ */
-
- /* The start of printing characters. */
- { ISFUNC, rl_insert }, /* SPACE */
- { ISFUNC, rl_insert }, /* ! */
- { ISFUNC, rl_insert }, /* " */
- { ISFUNC, rl_insert }, /* # */
- { ISFUNC, rl_insert }, /* $ */
- { ISFUNC, rl_insert }, /* % */
- { ISFUNC, rl_insert }, /* & */
- { ISFUNC, rl_insert }, /* ' */
- { ISFUNC, rl_insert }, /* ( */
- { ISFUNC, rl_insert }, /* ) */
- { ISFUNC, rl_insert }, /* * */
- { ISFUNC, rl_insert }, /* + */
- { ISFUNC, rl_insert }, /* , */
- { ISFUNC, rl_insert }, /* - */
- { ISFUNC, rl_insert }, /* . */
- { ISFUNC, rl_insert }, /* / */
-
- /* Regular digits. */
- { ISFUNC, rl_insert }, /* 0 */
- { ISFUNC, rl_insert }, /* 1 */
- { ISFUNC, rl_insert }, /* 2 */
- { ISFUNC, rl_insert }, /* 3 */
- { ISFUNC, rl_insert }, /* 4 */
- { ISFUNC, rl_insert }, /* 5 */
- { ISFUNC, rl_insert }, /* 6 */
- { ISFUNC, rl_insert }, /* 7 */
- { ISFUNC, rl_insert }, /* 8 */
- { ISFUNC, rl_insert }, /* 9 */
-
- /* A little more punctuation. */
- { ISFUNC, rl_insert }, /* : */
- { ISFUNC, rl_insert }, /* ; */
- { ISFUNC, rl_insert }, /* < */
- { ISFUNC, rl_insert }, /* = */
- { ISFUNC, rl_insert }, /* > */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* @ */
-
- /* Uppercase alphabet. */
- { ISFUNC, rl_insert }, /* A */
- { ISFUNC, rl_insert }, /* B */
- { ISFUNC, rl_insert }, /* C */
- { ISFUNC, rl_insert }, /* D */
- { ISFUNC, rl_insert }, /* E */
- { ISFUNC, rl_insert }, /* F */
- { ISFUNC, rl_insert }, /* G */
- { ISFUNC, rl_insert }, /* H */
- { ISFUNC, rl_insert }, /* I */
- { ISFUNC, rl_insert }, /* J */
- { ISFUNC, rl_insert }, /* K */
- { ISFUNC, rl_insert }, /* L */
- { ISFUNC, rl_insert }, /* M */
- { ISFUNC, rl_insert }, /* N */
- { ISFUNC, rl_insert }, /* O */
- { ISFUNC, rl_insert }, /* P */
- { ISFUNC, rl_insert }, /* Q */
- { ISFUNC, rl_insert }, /* R */
- { ISFUNC, rl_insert }, /* S */
- { ISFUNC, rl_insert }, /* T */
- { ISFUNC, rl_insert }, /* U */
- { ISFUNC, rl_insert }, /* V */
- { ISFUNC, rl_insert }, /* W */
- { ISFUNC, rl_insert }, /* X */
- { ISFUNC, rl_insert }, /* Y */
- { ISFUNC, rl_insert }, /* Z */
-
- /* Some more punctuation. */
- { ISFUNC, rl_insert }, /* [ */
- { ISFUNC, rl_insert }, /* \ */
- { ISFUNC, rl_insert }, /* ] */
- { ISFUNC, rl_insert }, /* ^ */
- { ISFUNC, rl_insert }, /* _ */
- { ISFUNC, rl_insert }, /* ` */
-
- /* Lowercase alphabet. */
- { ISFUNC, rl_insert }, /* a */
- { ISFUNC, rl_insert }, /* b */
- { ISFUNC, rl_insert }, /* c */
- { ISFUNC, rl_insert }, /* d */
- { ISFUNC, rl_insert }, /* e */
- { ISFUNC, rl_insert }, /* f */
- { ISFUNC, rl_insert }, /* g */
- { ISFUNC, rl_insert }, /* h */
- { ISFUNC, rl_insert }, /* i */
- { ISFUNC, rl_insert }, /* j */
- { ISFUNC, rl_insert }, /* k */
- { ISFUNC, rl_insert }, /* l */
- { ISFUNC, rl_insert }, /* m */
- { ISFUNC, rl_insert }, /* n */
- { ISFUNC, rl_insert }, /* o */
- { ISFUNC, rl_insert }, /* p */
- { ISFUNC, rl_insert }, /* q */
- { ISFUNC, rl_insert }, /* r */
- { ISFUNC, rl_insert }, /* s */
- { ISFUNC, rl_insert }, /* t */
- { ISFUNC, rl_insert }, /* u */
- { ISFUNC, rl_insert }, /* v */
- { ISFUNC, rl_insert }, /* w */
- { ISFUNC, rl_insert }, /* x */
- { ISFUNC, rl_insert }, /* y */
- { ISFUNC, rl_insert }, /* z */
-
- /* Final punctuation. */
- { ISFUNC, rl_insert }, /* { */
- { ISFUNC, rl_insert }, /* | */
- { ISFUNC, rl_insert }, /* } */
- { ISFUNC, rl_insert }, /* ~ */
- { ISFUNC, rl_rubout }, /* RUBOUT */
-
-#if KEYMAP_SIZE > 128
- /* Pure 8-bit characters (128 - 159).
- These might be used in some
- character sets. */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
-
- /* ISO Latin-1 characters (160 - 255) */
- { ISFUNC, rl_insert }, /* No-break space */
- { ISFUNC, rl_insert }, /* Inverted exclamation mark */
- { ISFUNC, rl_insert }, /* Cent sign */
- { ISFUNC, rl_insert }, /* Pound sign */
- { ISFUNC, rl_insert }, /* Currency sign */
- { ISFUNC, rl_insert }, /* Yen sign */
- { ISFUNC, rl_insert }, /* Broken bar */
- { ISFUNC, rl_insert }, /* Section sign */
- { ISFUNC, rl_insert }, /* Diaeresis */
- { ISFUNC, rl_insert }, /* Copyright sign */
- { ISFUNC, rl_insert }, /* Feminine ordinal indicator */
- { ISFUNC, rl_insert }, /* Left pointing double angle quotation mark */
- { ISFUNC, rl_insert }, /* Not sign */
- { ISFUNC, rl_insert }, /* Soft hyphen */
- { ISFUNC, rl_insert }, /* Registered sign */
- { ISFUNC, rl_insert }, /* Macron */
- { ISFUNC, rl_insert }, /* Degree sign */
- { ISFUNC, rl_insert }, /* Plus-minus sign */
- { ISFUNC, rl_insert }, /* Superscript two */
- { ISFUNC, rl_insert }, /* Superscript three */
- { ISFUNC, rl_insert }, /* Acute accent */
- { ISFUNC, rl_insert }, /* Micro sign */
- { ISFUNC, rl_insert }, /* Pilcrow sign */
- { ISFUNC, rl_insert }, /* Middle dot */
- { ISFUNC, rl_insert }, /* Cedilla */
- { ISFUNC, rl_insert }, /* Superscript one */
- { ISFUNC, rl_insert }, /* Masculine ordinal indicator */
- { ISFUNC, rl_insert }, /* Right pointing double angle quotation mark */
- { ISFUNC, rl_insert }, /* Vulgar fraction one quarter */
- { ISFUNC, rl_insert }, /* Vulgar fraction one half */
- { ISFUNC, rl_insert }, /* Vulgar fraction three quarters */
- { ISFUNC, rl_insert }, /* Inverted questionk mark */
- { ISFUNC, rl_insert }, /* Latin capital letter a with grave */
- { ISFUNC, rl_insert }, /* Latin capital letter a with acute */
- { ISFUNC, rl_insert }, /* Latin capital letter a with circumflex */
- { ISFUNC, rl_insert }, /* Latin capital letter a with tilde */
- { ISFUNC, rl_insert }, /* Latin capital letter a with diaeresis */
- { ISFUNC, rl_insert }, /* Latin capital letter a with ring above */
- { ISFUNC, rl_insert }, /* Latin capital letter ae */
- { ISFUNC, rl_insert }, /* Latin capital letter c with cedilla */
- { ISFUNC, rl_insert }, /* Latin capital letter e with grave */
- { ISFUNC, rl_insert }, /* Latin capital letter e with acute */
- { ISFUNC, rl_insert }, /* Latin capital letter e with circumflex */
- { ISFUNC, rl_insert }, /* Latin capital letter e with diaeresis */
- { ISFUNC, rl_insert }, /* Latin capital letter i with grave */
- { ISFUNC, rl_insert }, /* Latin capital letter i with acute */
- { ISFUNC, rl_insert }, /* Latin capital letter i with circumflex */
- { ISFUNC, rl_insert }, /* Latin capital letter i with diaeresis */
- { ISFUNC, rl_insert }, /* Latin capital letter eth (Icelandic) */
- { ISFUNC, rl_insert }, /* Latin capital letter n with tilde */
- { ISFUNC, rl_insert }, /* Latin capital letter o with grave */
- { ISFUNC, rl_insert }, /* Latin capital letter o with acute */
- { ISFUNC, rl_insert }, /* Latin capital letter o with circumflex */
- { ISFUNC, rl_insert }, /* Latin capital letter o with tilde */
- { ISFUNC, rl_insert }, /* Latin capital letter o with diaeresis */
- { ISFUNC, rl_insert }, /* Multiplication sign */
- { ISFUNC, rl_insert }, /* Latin capital letter o with stroke */
- { ISFUNC, rl_insert }, /* Latin capital letter u with grave */
- { ISFUNC, rl_insert }, /* Latin capital letter u with acute */
- { ISFUNC, rl_insert }, /* Latin capital letter u with circumflex */
- { ISFUNC, rl_insert }, /* Latin capital letter u with diaeresis */
- { ISFUNC, rl_insert }, /* Latin capital letter Y with acute */
- { ISFUNC, rl_insert }, /* Latin capital letter thorn (Icelandic) */
- { ISFUNC, rl_insert }, /* Latin small letter sharp s (German) */
- { ISFUNC, rl_insert }, /* Latin small letter a with grave */
- { ISFUNC, rl_insert }, /* Latin small letter a with acute */
- { ISFUNC, rl_insert }, /* Latin small letter a with circumflex */
- { ISFUNC, rl_insert }, /* Latin small letter a with tilde */
- { ISFUNC, rl_insert }, /* Latin small letter a with diaeresis */
- { ISFUNC, rl_insert }, /* Latin small letter a with ring above */
- { ISFUNC, rl_insert }, /* Latin small letter ae */
- { ISFUNC, rl_insert }, /* Latin small letter c with cedilla */
- { ISFUNC, rl_insert }, /* Latin small letter e with grave */
- { ISFUNC, rl_insert }, /* Latin small letter e with acute */
- { ISFUNC, rl_insert }, /* Latin small letter e with circumflex */
- { ISFUNC, rl_insert }, /* Latin small letter e with diaeresis */
- { ISFUNC, rl_insert }, /* Latin small letter i with grave */
- { ISFUNC, rl_insert }, /* Latin small letter i with acute */
- { ISFUNC, rl_insert }, /* Latin small letter i with circumflex */
- { ISFUNC, rl_insert }, /* Latin small letter i with diaeresis */
- { ISFUNC, rl_insert }, /* Latin small letter eth (Icelandic) */
- { ISFUNC, rl_insert }, /* Latin small letter n with tilde */
- { ISFUNC, rl_insert }, /* Latin small letter o with grave */
- { ISFUNC, rl_insert }, /* Latin small letter o with acute */
- { ISFUNC, rl_insert }, /* Latin small letter o with circumflex */
- { ISFUNC, rl_insert }, /* Latin small letter o with tilde */
- { ISFUNC, rl_insert }, /* Latin small letter o with diaeresis */
- { ISFUNC, rl_insert }, /* Division sign */
- { ISFUNC, rl_insert }, /* Latin small letter o with stroke */
- { ISFUNC, rl_insert }, /* Latin small letter u with grave */
- { ISFUNC, rl_insert }, /* Latin small letter u with acute */
- { ISFUNC, rl_insert }, /* Latin small letter u with circumflex */
- { ISFUNC, rl_insert }, /* Latin small letter u with diaeresis */
- { ISFUNC, rl_insert }, /* Latin small letter y with acute */
- { ISFUNC, rl_insert }, /* Latin small letter thorn (Icelandic) */
- { ISFUNC, rl_insert } /* Latin small letter y with diaeresis */
-#endif /* KEYMAP_SIZE > 128 */
-};
-
-KEYMAP_ENTRY_ARRAY emacs_meta_keymap = {
-
- /* Meta keys. Just like above, but the high bit is set. */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-@ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-a */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-b */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-c */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-d */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-e */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-f */
- { ISFUNC, rl_abort }, /* Meta-Control-g */
- { ISFUNC, rl_backward_kill_word }, /* Meta-Control-h */
- { ISFUNC, rl_tab_insert }, /* Meta-Control-i */
- { ISFUNC, rl_vi_editing_mode }, /* Meta-Control-j */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-k */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-l */
- { ISFUNC, rl_vi_editing_mode }, /* Meta-Control-m */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-n */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-o */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-p */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-q */
- { ISFUNC, rl_revert_line }, /* Meta-Control-r */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-s */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-t */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-u */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-v */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-w */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-x */
- { ISFUNC, rl_yank_nth_arg }, /* Meta-Control-y */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-z */
-
- { ISFUNC, rl_complete }, /* Meta-Control-[ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-\ */
- { ISFUNC, rl_backward_char_search }, /* Meta-Control-] */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-^ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-_ */
-
- /* The start of printing characters. */
- { ISFUNC, rl_set_mark }, /* Meta-SPACE */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-! */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-" */
- { ISFUNC, rl_insert_comment }, /* Meta-# */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-$ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-% */
- { ISFUNC, rl_tilde_expand }, /* Meta-& */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-' */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-( */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-) */
- { ISFUNC, rl_insert_completions }, /* Meta-* */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-+ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-, */
- { ISFUNC, rl_digit_argument }, /* Meta-- */
- { ISFUNC, rl_yank_last_arg}, /* Meta-. */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-/ */
-
- /* Regular digits. */
- { ISFUNC, rl_digit_argument }, /* Meta-0 */
- { ISFUNC, rl_digit_argument }, /* Meta-1 */
- { ISFUNC, rl_digit_argument }, /* Meta-2 */
- { ISFUNC, rl_digit_argument }, /* Meta-3 */
- { ISFUNC, rl_digit_argument }, /* Meta-4 */
- { ISFUNC, rl_digit_argument }, /* Meta-5 */
- { ISFUNC, rl_digit_argument }, /* Meta-6 */
- { ISFUNC, rl_digit_argument }, /* Meta-7 */
- { ISFUNC, rl_digit_argument }, /* Meta-8 */
- { ISFUNC, rl_digit_argument }, /* Meta-9 */
-
- /* A little more punctuation. */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-: */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-; */
- { ISFUNC, rl_beginning_of_history }, /* Meta-< */
- { ISFUNC, rl_possible_completions }, /* Meta-= */
- { ISFUNC, rl_end_of_history }, /* Meta-> */
- { ISFUNC, rl_possible_completions }, /* Meta-? */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-@ */
-
- /* Uppercase alphabet. */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-A */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-B */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-C */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-D */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-E */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-F */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-G */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-H */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-I */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-J */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-K */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-L */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-M */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-N */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-O */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-P */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-Q */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-R */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-S */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-T */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-U */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-V */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-W */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-X */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-Y */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-Z */
-
- /* Some more punctuation. */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-[ */ /* was rl_arrow_keys */
- { ISFUNC, rl_delete_horizontal_space }, /* Meta-\ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-] */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-^ */
- { ISFUNC, rl_yank_last_arg }, /* Meta-_ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-` */
-
- /* Lowercase alphabet. */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-a */
- { ISFUNC, rl_backward_word }, /* Meta-b */
- { ISFUNC, rl_capitalize_word }, /* Meta-c */
- { ISFUNC, rl_kill_word }, /* Meta-d */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-e */
- { ISFUNC, rl_forward_word }, /* Meta-f */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-g */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-h */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-i */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-j */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-k */
- { ISFUNC, rl_downcase_word }, /* Meta-l */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-m */
- { ISFUNC, rl_noninc_forward_search }, /* Meta-n */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-o */ /* was rl_arrow_keys */
- { ISFUNC, rl_noninc_reverse_search }, /* Meta-p */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-q */
- { ISFUNC, rl_revert_line }, /* Meta-r */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-s */
- { ISFUNC, rl_transpose_words }, /* Meta-t */
- { ISFUNC, rl_upcase_word }, /* Meta-u */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-v */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-w */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-x */
- { ISFUNC, rl_yank_pop }, /* Meta-y */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-z */
-
- /* Final punctuation. */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-{ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-| */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-} */
- { ISFUNC, rl_tilde_expand }, /* Meta-~ */
- { ISFUNC, rl_backward_kill_word }, /* Meta-rubout */
-
-#if KEYMAP_SIZE > 128
- /* Undefined keys. */
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 }
-#endif /* KEYMAP_SIZE > 128 */
-};
-
-KEYMAP_ENTRY_ARRAY emacs_ctlx_keymap = {
-
- /* Control keys. */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-@ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-a */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-b */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-c */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-d */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-e */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-f */
- { ISFUNC, rl_abort }, /* Control-g */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-h */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-i */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-j */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-k */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-l */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-m */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-n */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-o */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-p */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-q */
- { ISFUNC, rl_re_read_init_file }, /* Control-r */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-s */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-t */
- { ISFUNC, rl_undo_command }, /* Control-u */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-v */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-w */
- { ISFUNC, rl_exchange_point_and_mark }, /* Control-x */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-y */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-z */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-[ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-\ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-] */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-^ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-_ */
-
- /* The start of printing characters. */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* SPACE */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* ! */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* " */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* # */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* $ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* % */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* & */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* ' */
- { ISFUNC, rl_start_kbd_macro }, /* ( */
- { ISFUNC, rl_end_kbd_macro }, /* ) */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* * */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* + */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* , */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* - */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* . */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* / */
-
- /* Regular digits. */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* 0 */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* 1 */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* 2 */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* 3 */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* 4 */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* 5 */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* 6 */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* 7 */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* 8 */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* 9 */
-
- /* A little more punctuation. */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* : */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* ; */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* < */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* = */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* > */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* ? */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* @ */
-
- /* Uppercase alphabet. */
- { ISFUNC, rl_do_lowercase_version }, /* A */
- { ISFUNC, rl_do_lowercase_version }, /* B */
- { ISFUNC, rl_do_lowercase_version }, /* C */
- { ISFUNC, rl_do_lowercase_version }, /* D */
- { ISFUNC, rl_do_lowercase_version }, /* E */
- { ISFUNC, rl_do_lowercase_version }, /* F */
- { ISFUNC, rl_do_lowercase_version }, /* G */
- { ISFUNC, rl_do_lowercase_version }, /* H */
- { ISFUNC, rl_do_lowercase_version }, /* I */
- { ISFUNC, rl_do_lowercase_version }, /* J */
- { ISFUNC, rl_do_lowercase_version }, /* K */
- { ISFUNC, rl_do_lowercase_version }, /* L */
- { ISFUNC, rl_do_lowercase_version }, /* M */
- { ISFUNC, rl_do_lowercase_version }, /* N */
- { ISFUNC, rl_do_lowercase_version }, /* O */
- { ISFUNC, rl_do_lowercase_version }, /* P */
- { ISFUNC, rl_do_lowercase_version }, /* Q */
- { ISFUNC, rl_do_lowercase_version }, /* R */
- { ISFUNC, rl_do_lowercase_version }, /* S */
- { ISFUNC, rl_do_lowercase_version }, /* T */
- { ISFUNC, rl_do_lowercase_version }, /* U */
- { ISFUNC, rl_do_lowercase_version }, /* V */
- { ISFUNC, rl_do_lowercase_version }, /* W */
- { ISFUNC, rl_do_lowercase_version }, /* X */
- { ISFUNC, rl_do_lowercase_version }, /* Y */
- { ISFUNC, rl_do_lowercase_version }, /* Z */
-
- /* Some more punctuation. */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* [ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* \ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* ] */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* ^ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* _ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* ` */
-
- /* Lowercase alphabet. */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* a */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* b */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* c */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* d */
- { ISFUNC, rl_call_last_kbd_macro }, /* e */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* f */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* g */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* h */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* i */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* j */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* k */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* l */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* m */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* n */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* o */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* p */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* q */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* r */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* s */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* t */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* u */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* v */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* w */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* x */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* y */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* z */
-
- /* Final punctuation. */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* { */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* | */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* } */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* ~ */
- { ISFUNC, rl_backward_kill_line }, /* RUBOUT */
-
-#if KEYMAP_SIZE > 128
- /* Undefined keys. */
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 }
-#endif /* KEYMAP_SIZE > 128 */
-};
diff --git a/readline-4.3.orig/examples/Inputrc b/readline-4.3.orig/examples/Inputrc
deleted file mode 100644
index d7fdb42..0000000
--- a/readline-4.3.orig/examples/Inputrc
+++ /dev/null
@@ -1,81 +0,0 @@
-# My ~/.inputrc file is in -*- text -*- for easy editing with Emacs.
-#
-# Notice the various bindings which are conditionalized depending
-# on which program is running, or what terminal is active.
-#
-
-# Copyright (C) 1989-2002 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA.
-
-# In all programs, all terminals, make sure this is bound.
-"\C-x\C-r": re-read-init-file
-
-# Hp terminals (and some others) have ugly default behaviour for C-h.
-"\C-h": backward-delete-char
-"\e\C-h": backward-kill-word
-"\C-xd": dump-functions
-
-# In xterm windows, make the arrow keys do the right thing.
-$if TERM=xterm
-"\e[A": previous-history
-"\e[B": next-history
-"\e[C": forward-char
-"\e[D": backward-char
-
-# alternate arrow key prefix
-"\eOA": previous-history
-"\eOB": next-history
-"\eOC": forward-char
-"\eOD": backward-char
-
-# Under Xterm in Bash, we bind local Function keys to do something useful.
-$if Bash
-"\e[11~": "Function Key 1"
-"\e[12~": "Function Key 2"
-"\e[13~": "Function Key 3"
-"\e[14~": "Function Key 4"
-"\e[15~": "Function Key 5"
-
-# I know the following escape sequence numbers are 1 greater than
-# the function key. Don't ask me why, I didn't design the xterm terminal.
-"\e[17~": "Function Key 6"
-"\e[18~": "Function Key 7"
-"\e[19~": "Function Key 8"
-"\e[20~": "Function Key 9"
-"\e[21~": "Function Key 10"
-$endif
-$endif
-
-# For Bash, all terminals, add some Bash specific hacks.
-$if Bash
-"\C-xv": show-bash-version
-"\C-x\C-e": shell-expand-line
-
-# Here is one for editing my path.
-"\C-xp": "$PATH\C-x\C-e\C-e\"\C-aPATH=\":\C-b"
-
-# Make C-x r read my mail in emacs.
-# "\C-xr": "emacs -f rmail\C-j"
-$endif
-
-# For FTP, different hacks:
-$if Ftp
-"\C-xg": "get \M-?"
-"\C-xt": "put \M-?"
-"\M-.": yank-last-arg
-$endif
-
-" ": self-insert
diff --git a/readline-4.3.orig/examples/Makefile.in b/readline-4.3.orig/examples/Makefile.in
deleted file mode 100644
index 72c9904..0000000
--- a/readline-4.3.orig/examples/Makefile.in
+++ /dev/null
@@ -1,104 +0,0 @@
-#
-# This is the Makefile for the readline examples subdirectory.
-#
-# Copyright (C) 1994 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA.
-RL_LIBRARY_VERSION = @LIBVERSION@
-
-SHELL = @MAKE_SHELL@
-RM = rm -f
-
-srcdir = @srcdir@
-VPATH = .:@srcdir@
-top_srcdir = @top_srcdir@
-BUILD_DIR = .
-
-# Support an alternate destination root directory for package building
-DESTDIR =
-
-DEFS = @DEFS@
-CC = @CC@
-CFLAGS = @CFLAGS@
-LOCAL_CFLAGS = @LOCAL_CFLAGS@ -DREADLINE_LIBRARY -DRL_LIBRARY_VERSION='"$(RL_LIBRARY_VERSION)"'
-CPPFLAGS = @CPPFLAGS@
-
-INCLUDES = -I$(srcdir) -I$(top_srcdir) -I..
-
-CCFLAGS = $(DEFS) $(LOCAL_CFLAGS) $(CPPFLAGS) $(INCLUDES) $(CFLAGS)
-LDFLAGS = -g -L.. @LDFLAGS@
-
-READLINE_LIB = ../libreadline.a
-HISTORY_LIB = ../libhistory.a
-
-TERMCAP_LIB = @TERMCAP_LIB@
-
-.c.o:
- ${RM} $@
- $(CC) $(CCFLAGS) -c $<
-
-EXECUTABLES = fileman rltest rl rlcat rlversion histexamp
-OBJECTS = fileman.o rltest.o rl.o rlversion.o histexamp.o
-
-all: $(EXECUTABLES)
-everything: all rlfe
-
-rl: rl.o $(READLINE_LIB)
- $(CC) $(LDFLAGS) -o $@ rl.o -lreadline $(TERMCAP_LIB)
-
-rlcat: rlcat.o $(READLINE_LIB)
- $(CC) $(LDFLAGS) -o $@ rlcat.o -lreadline $(TERMCAP_LIB)
-
-fileman: fileman.o $(READLINE_LIB)
- $(CC) $(LDFLAGS) -o $@ fileman.o -lreadline $(TERMCAP_LIB)
-
-rltest: rltest.o $(READLINE_LIB)
- $(CC) $(LDFLAGS) -o $@ rltest.o -lreadline $(TERMCAP_LIB)
-
-rlversion: rlversion.o $(READLINE_LIB)
- $(CC) $(LDFLAGS) -o $@ rlversion.o -lreadline $(TERMCAP_LIB)
-
-histexamp: histexamp.o $(HISTORY_LIB)
- $(CC) $(LDFLAGS) -o $@ histexamp.o -lhistory $(TERMCAP_LIB)
-
-clean mostlyclean:
- $(RM) $(OBJECTS)
- $(RM) $(EXECUTABLES) *.exe
- $(RM) rlfe.o rlfe
-
-distclean maintainer-clean: clean
- $(RM) Makefile
-
-fileman.o: fileman.c
-rltest.o: rltest.c
-rl.o: rl.c
-rlversion.o: rlversion.c
-histexamp.o: histexamp.c
-
-fileman.o: $(top_srcdir)/readline.h
-rltest.o: $(top_srcdir)/readline.h
-rl.o: $(top_srcdir)/readline.h
-rlversion.o: $(top_srcdir)/readline.h
-histexamp.o: $(top_srcdir)/history.h
-
-# Stuff for Per Bothner's `rlfe' program
-
-rlfe: rlfe.o $(READLINE_LIB) $(HISTORY_LIB)
- $(CC) $(LDFLAGS) -o $@ rlfe.o -lreadline -lhistory ${TERMCAP_LIB}
-
-rlfe.o: rlfe.c
-
-rlfe.o: $(top_srcdir)/readline.h
-rlfe.o: $(top_srcdir)/history.h
diff --git a/readline-4.3.orig/examples/excallback.c b/readline-4.3.orig/examples/excallback.c
deleted file mode 100644
index 3d4bb18..0000000
--- a/readline-4.3.orig/examples/excallback.c
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
-From: Jeff Solomon <jsolomon@stanford.edu>
-Date: Fri, 9 Apr 1999 10:13:27 -0700 (PDT)
-To: chet@po.cwru.edu
-Subject: new readline example
-Message-ID: <14094.12094.527305.199695@mrclean.Stanford.EDU>
-
-Chet,
-
-I've been using readline 4.0. Specifically, I've been using the perl
-version Term::ReadLine::Gnu. It works great.
-
-Anyway, I've been playing around the alternate interface and I wanted
-to contribute a little C program, callback.c, to you that you could
-use as an example of the alternate interface in the /examples
-directory of the readline distribution.
-
-My example shows how, using the alternate interface, you can
-interactively change the prompt (which is very nice imo). Also, I
-point out that you must roll your own terminal setting when using the
-alternate interface because readline depreps (using your parlance) the
-terminal while in the user callback. I try to demostrate what I mean
-with an example. I've included the program below.
-
-To compile, I just put the program in the examples directory and made
-the appropriate changes to the EXECUTABLES and OBJECTS line and added
-an additional target 'callback'.
-
-I compiled on my Sun Solaris2.6 box using Sun's cc.
-
-Let me know what you think.
-
-Jeff
-*/
-
-#if defined (HAVE_CONFIG_H)
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <sys/types.h>
-
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-
-#include <termios.h> /* xxx - should make this more general */
-
-#ifdef READLINE_LIBRARY
-# include "readline.h"
-#else
-# include <readline/readline.h>
-#endif
-
-/* This little examples demonstrates the alternate interface to using readline.
- * In the alternate interface, the user maintains control over program flow and
- * only calls readline when STDIN is readable. Using the alternate interface,
- * you can do anything else while still using readline (like talking to a
- * network or another program) without blocking.
- *
- * Specifically, this program highlights two importants features of the
- * alternate interface. The first is the ability to interactively change the
- * prompt, which can't be done using the regular interface since rl_prompt is
- * read-only.
- *
- * The second feature really highlights a subtle point when using the alternate
- * interface. That is, readline will not alter the terminal when inside your
- * callback handler. So let's so, your callback executes a user command that
- * takes a non-trivial amount of time to complete (seconds). While your
- * executing the command, the user continues to type keystrokes and expects them
- * to be re-echoed on the new prompt when it returns. Unfortunately, the default
- * terminal configuration doesn't do this. After the prompt returns, the user
- * must hit one additional keystroke and then will see all of his previous
- * keystrokes. To illustrate this, compile and run this program. Type "sleep" at
- * the prompt and then type "bar" before the prompt returns (you have 3
- * seconds). Notice how "bar" is re-echoed on the prompt after the prompt
- * returns? This is what you expect to happen. Now comment out the 4 lines below
- * the line that says COMMENT LINE BELOW. Recompile and rerun the program and do
- * the same thing. When the prompt returns, you should not see "bar". Now type
- * "f", see how "barf" magically appears? This behavior is un-expected and not
- * desired.
- */
-
-void process_line(char *line);
-int change_prompt(void);
-char *get_prompt(void);
-
-int prompt = 1;
-char prompt_buf[40], line_buf[256];
-tcflag_t old_lflag;
-cc_t old_vtime;
-struct termios term;
-
-int
-main()
-{
- fd_set fds;
-
- /* Adjust the terminal slightly before the handler is installed. Disable
- * canonical mode processing and set the input character time flag to be
- * non-blocking.
- */
- if( tcgetattr(STDIN_FILENO, &term) < 0 ) {
- perror("tcgetattr");
- exit(1);
- }
- old_lflag = term.c_lflag;
- old_vtime = term.c_cc[VTIME];
- term.c_lflag &= ~ICANON;
- term.c_cc[VTIME] = 1;
- /* COMMENT LINE BELOW - see above */
- if( tcsetattr(STDIN_FILENO, TCSANOW, &term) < 0 ) {
- perror("tcsetattr");
- exit(1);
- }
-
- rl_add_defun("change-prompt", change_prompt, CTRL('t'));
- rl_callback_handler_install(get_prompt(), process_line);
-
- while(1) {
- FD_ZERO(&fds);
- FD_SET(fileno(stdin), &fds);
-
- if( select(FD_SETSIZE, &fds, NULL, NULL, NULL) < 0) {
- perror("select");
- exit(1);
- }
-
- if( FD_ISSET(fileno(stdin), &fds) ) {
- rl_callback_read_char();
- }
- }
-}
-
-void
-process_line(char *line)
-{
- if( line == NULL ) {
- fprintf(stderr, "\n", line);
-
- /* reset the old terminal setting before exiting */
- term.c_lflag = old_lflag;
- term.c_cc[VTIME] = old_vtime;
- if( tcsetattr(STDIN_FILENO, TCSANOW, &term) < 0 ) {
- perror("tcsetattr");
- exit(1);
- }
- exit(0);
- }
-
- if( strcmp(line, "sleep") == 0 ) {
- sleep(3);
- } else {
- fprintf(stderr, "|%s|\n", line);
- }
-
- free (line);
-}
-
-int
-change_prompt(void)
-{
- /* toggle the prompt variable */
- prompt = !prompt;
-
- /* save away the current contents of the line */
- strcpy(line_buf, rl_line_buffer);
-
- /* install a new handler which will change the prompt and erase the current line */
- rl_callback_handler_install(get_prompt(), process_line);
-
- /* insert the old text on the new line */
- rl_insert_text(line_buf);
-
- /* redraw the current line - this is an undocumented function. It invokes the
- * redraw-current-line command.
- */
- rl_refresh_line(0, 0);
-}
-
-char *
-get_prompt(void)
-{
- /* The prompts can even be different lengths! */
- sprintf(prompt_buf, "%s",
- prompt ? "Hit ctrl-t to toggle prompt> " : "Pretty cool huh?> ");
- return prompt_buf;
-}
diff --git a/readline-4.3.orig/examples/fileman.c b/readline-4.3.orig/examples/fileman.c
deleted file mode 100644
index 340eee7..0000000
--- a/readline-4.3.orig/examples/fileman.c
+++ /dev/null
@@ -1,485 +0,0 @@
-/* Copyright (C) 1987-2002 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-/* fileman.c -- A tiny application which demonstrates how to use the
- GNU Readline library. This application interactively allows users
- to manipulate files and their modes. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <sys/types.h>
-#ifdef HAVE_SYS_FILE_H
-# include <sys/file.h>
-#endif
-#include <sys/stat.h>
-
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-
-#include <fcntl.h>
-#include <stdio.h>
-#include <errno.h>
-
-#if defined (HAVE_STRING_H)
-# include <string.h>
-#else /* !HAVE_STRING_H */
-# include <strings.h>
-#endif /* !HAVE_STRING_H */
-
-#ifdef HAVE_STDLIB_H
-# include <stdlib.h>
-#endif
-
-#ifdef READLINE_LIBRARY
-# include "readline.h"
-# include "history.h"
-#else
-# include <readline/readline.h>
-# include <readline/history.h>
-#endif
-
-extern char *xmalloc ();
-
-/* The names of functions that actually do the manipulation. */
-int com_list PARAMS((char *));
-int com_view PARAMS((char *));
-int com_rename PARAMS((char *));
-int com_stat PARAMS((char *));
-int com_pwd PARAMS((char *));
-int com_delete PARAMS((char *));
-int com_help PARAMS((char *));
-int com_cd PARAMS((char *));
-int com_quit PARAMS((char *));
-
-/* A structure which contains information on the commands this program
- can understand. */
-
-typedef struct {
- char *name; /* User printable name of the function. */
- rl_icpfunc_t *func; /* Function to call to do the job. */
- char *doc; /* Documentation for this function. */
-} COMMAND;
-
-COMMAND commands[] = {
- { "cd", com_cd, "Change to directory DIR" },
- { "delete", com_delete, "Delete FILE" },
- { "help", com_help, "Display this text" },
- { "?", com_help, "Synonym for `help'" },
- { "list", com_list, "List files in DIR" },
- { "ls", com_list, "Synonym for `list'" },
- { "pwd", com_pwd, "Print the current working directory" },
- { "quit", com_quit, "Quit using Fileman" },
- { "rename", com_rename, "Rename FILE to NEWNAME" },
- { "stat", com_stat, "Print out statistics on FILE" },
- { "view", com_view, "View the contents of FILE" },
- { (char *)NULL, (rl_icpfunc_t *)NULL, (char *)NULL }
-};
-
-/* Forward declarations. */
-char *stripwhite ();
-COMMAND *find_command ();
-
-/* The name of this program, as taken from argv[0]. */
-char *progname;
-
-/* When non-zero, this global means the user is done using this program. */
-int done;
-
-char *
-dupstr (s)
- char *s;
-{
- char *r;
-
- r = xmalloc (strlen (s) + 1);
- strcpy (r, s);
- return (r);
-}
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- char *line, *s;
-
- progname = argv[0];
-
- initialize_readline (); /* Bind our completer. */
-
- /* Loop reading and executing lines until the user quits. */
- for ( ; done == 0; )
- {
- line = readline ("FileMan: ");
-
- if (!line)
- break;
-
- /* Remove leading and trailing whitespace from the line.
- Then, if there is anything left, add it to the history list
- and execute it. */
- s = stripwhite (line);
-
- if (*s)
- {
- add_history (s);
- execute_line (s);
- }
-
- free (line);
- }
- exit (0);
-}
-
-/* Execute a command line. */
-int
-execute_line (line)
- char *line;
-{
- register int i;
- COMMAND *command;
- char *word;
-
- /* Isolate the command word. */
- i = 0;
- while (line[i] && whitespace (line[i]))
- i++;
- word = line + i;
-
- while (line[i] && !whitespace (line[i]))
- i++;
-
- if (line[i])
- line[i++] = '\0';
-
- command = find_command (word);
-
- if (!command)
- {
- fprintf (stderr, "%s: No such command for FileMan.\n", word);
- return (-1);
- }
-
- /* Get argument to command, if any. */
- while (whitespace (line[i]))
- i++;
-
- word = line + i;
-
- /* Call the function. */
- return ((*(command->func)) (word));
-}
-
-/* Look up NAME as the name of a command, and return a pointer to that
- command. Return a NULL pointer if NAME isn't a command name. */
-COMMAND *
-find_command (name)
- char *name;
-{
- register int i;
-
- for (i = 0; commands[i].name; i++)
- if (strcmp (name, commands[i].name) == 0)
- return (&commands[i]);
-
- return ((COMMAND *)NULL);
-}
-
-/* Strip whitespace from the start and end of STRING. Return a pointer
- into STRING. */
-char *
-stripwhite (string)
- char *string;
-{
- register char *s, *t;
-
- for (s = string; whitespace (*s); s++)
- ;
-
- if (*s == 0)
- return (s);
-
- t = s + strlen (s) - 1;
- while (t > s && whitespace (*t))
- t--;
- *++t = '\0';
-
- return s;
-}
-
-/* **************************************************************** */
-/* */
-/* Interface to Readline Completion */
-/* */
-/* **************************************************************** */
-
-char *command_generator PARAMS((const char *, int));
-char **fileman_completion PARAMS((const char *, int, int));
-
-/* Tell the GNU Readline library how to complete. We want to try to complete
- on command names if this is the first word in the line, or on filenames
- if not. */
-initialize_readline ()
-{
- /* Allow conditional parsing of the ~/.inputrc file. */
- rl_readline_name = "FileMan";
-
- /* Tell the completer that we want a crack first. */
- rl_attempted_completion_function = fileman_completion;
-}
-
-/* Attempt to complete on the contents of TEXT. START and END bound the
- region of rl_line_buffer that contains the word to complete. TEXT is
- the word to complete. We can use the entire contents of rl_line_buffer
- in case we want to do some simple parsing. Return the array of matches,
- or NULL if there aren't any. */
-char **
-fileman_completion (text, start, end)
- const char *text;
- int start, end;
-{
- char **matches;
-
- matches = (char **)NULL;
-
- /* If this word is at the start of the line, then it is a command
- to complete. Otherwise it is the name of a file in the current
- directory. */
- if (start == 0)
- matches = rl_completion_matches (text, command_generator);
-
- return (matches);
-}
-
-/* Generator function for command completion. STATE lets us know whether
- to start from scratch; without any state (i.e. STATE == 0), then we
- start at the top of the list. */
-char *
-command_generator (text, state)
- const char *text;
- int state;
-{
- static int list_index, len;
- char *name;
-
- /* If this is a new word to complete, initialize now. This includes
- saving the length of TEXT for efficiency, and initializing the index
- variable to 0. */
- if (!state)
- {
- list_index = 0;
- len = strlen (text);
- }
-
- /* Return the next name which partially matches from the command list. */
- while (name = commands[list_index].name)
- {
- list_index++;
-
- if (strncmp (name, text, len) == 0)
- return (dupstr(name));
- }
-
- /* If no names matched, then return NULL. */
- return ((char *)NULL);
-}
-
-/* **************************************************************** */
-/* */
-/* FileMan Commands */
-/* */
-/* **************************************************************** */
-
-/* String to pass to system (). This is for the LIST, VIEW and RENAME
- commands. */
-static char syscom[1024];
-
-/* List the file(s) named in arg. */
-com_list (arg)
- char *arg;
-{
- if (!arg)
- arg = "";
-
- sprintf (syscom, "ls -FClg %s", arg);
- return (system (syscom));
-}
-
-com_view (arg)
- char *arg;
-{
- if (!valid_argument ("view", arg))
- return 1;
-
-#if defined (__MSDOS__)
- /* more.com doesn't grok slashes in pathnames */
- sprintf (syscom, "less %s", arg);
-#else
- sprintf (syscom, "more %s", arg);
-#endif
- return (system (syscom));
-}
-
-com_rename (arg)
- char *arg;
-{
- too_dangerous ("rename");
- return (1);
-}
-
-com_stat (arg)
- char *arg;
-{
- struct stat finfo;
-
- if (!valid_argument ("stat", arg))
- return (1);
-
- if (stat (arg, &finfo) == -1)
- {
- perror (arg);
- return (1);
- }
-
- printf ("Statistics for `%s':\n", arg);
-
- printf ("%s has %d link%s, and is %d byte%s in length.\n",
- arg,
- finfo.st_nlink,
- (finfo.st_nlink == 1) ? "" : "s",
- finfo.st_size,
- (finfo.st_size == 1) ? "" : "s");
- printf ("Inode Last Change at: %s", ctime (&finfo.st_ctime));
- printf (" Last access at: %s", ctime (&finfo.st_atime));
- printf (" Last modified at: %s", ctime (&finfo.st_mtime));
- return (0);
-}
-
-com_delete (arg)
- char *arg;
-{
- too_dangerous ("delete");
- return (1);
-}
-
-/* Print out help for ARG, or for all of the commands if ARG is
- not present. */
-com_help (arg)
- char *arg;
-{
- register int i;
- int printed = 0;
-
- for (i = 0; commands[i].name; i++)
- {
- if (!*arg || (strcmp (arg, commands[i].name) == 0))
- {
- printf ("%s\t\t%s.\n", commands[i].name, commands[i].doc);
- printed++;
- }
- }
-
- if (!printed)
- {
- printf ("No commands match `%s'. Possibilties are:\n", arg);
-
- for (i = 0; commands[i].name; i++)
- {
- /* Print in six columns. */
- if (printed == 6)
- {
- printed = 0;
- printf ("\n");
- }
-
- printf ("%s\t", commands[i].name);
- printed++;
- }
-
- if (printed)
- printf ("\n");
- }
- return (0);
-}
-
-/* Change to the directory ARG. */
-com_cd (arg)
- char *arg;
-{
- if (chdir (arg) == -1)
- {
- perror (arg);
- return 1;
- }
-
- com_pwd ("");
- return (0);
-}
-
-/* Print out the current working directory. */
-com_pwd (ignore)
- char *ignore;
-{
- char dir[1024], *s;
-
- s = getcwd (dir, sizeof(dir) - 1);
- if (s == 0)
- {
- printf ("Error getting pwd: %s\n", dir);
- return 1;
- }
-
- printf ("Current directory is %s\n", dir);
- return 0;
-}
-
-/* The user wishes to quit using this program. Just set DONE non-zero. */
-com_quit (arg)
- char *arg;
-{
- done = 1;
- return (0);
-}
-
-/* Function which tells you that you can't do this. */
-too_dangerous (caller)
- char *caller;
-{
- fprintf (stderr,
- "%s: Too dangerous for me to distribute. Write it yourself.\n",
- caller);
-}
-
-/* Return non-zero if ARG is a valid argument for CALLER, else print
- an error message and return zero. */
-int
-valid_argument (caller, arg)
- char *caller, *arg;
-{
- if (!arg || !*arg)
- {
- fprintf (stderr, "%s: Argument required.\n", caller);
- return (0);
- }
-
- return (1);
-}
diff --git a/readline-4.3.orig/examples/histexamp.c b/readline-4.3.orig/examples/histexamp.c
deleted file mode 100644
index 45651df..0000000
--- a/readline-4.3.orig/examples/histexamp.c
+++ /dev/null
@@ -1,112 +0,0 @@
-/* Copyright (C) 1987-2002 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#include <stdio.h>
-
-#ifdef READLINE_LIBRARY
-# include "history.h"
-#else
-# include <readline/history.h>
-#endif
-
-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;
-
- using_history ();
-
- 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");
- }
- }
- }
-}
diff --git a/readline-4.3.orig/examples/manexamp.c b/readline-4.3.orig/examples/manexamp.c
deleted file mode 100644
index 9c6cf2c..0000000
--- a/readline-4.3.orig/examples/manexamp.c
+++ /dev/null
@@ -1,112 +0,0 @@
-/* manexamp.c -- The examples which appear in the documentation are here. */
-
-/* Copyright (C) 1987-2002 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#include <stdio.h>
-#include <readline/readline.h>
-
-/* **************************************************************** */
-/* */
-/* How to Emulate gets () */
-/* */
-/* **************************************************************** */
-
-/* A static variable for holding the line. */
-static char *line_read = (char *)NULL;
-
-/* Read a string, and return a pointer to it. Returns NULL on EOF. */
-char *
-rl_gets ()
-{
- /* If the buffer has already been allocated, return the memory
- to the free pool. */
- if (line_read)
- {
- free (line_read);
- line_read = (char *)NULL;
- }
-
- /* Get a line from the user. */
- line_read = readline ("");
-
- /* If the line has any text in it, save it on the history. */
- if (line_read && *line_read)
- add_history (line_read);
-
- return (line_read);
-}
-
-/* **************************************************************** */
-/* */
-/* Writing a Function to be Called by Readline. */
-/* */
-/* **************************************************************** */
-
-/* Invert the case of the COUNT following characters. */
-invert_case_line (count, key)
- int count, key;
-{
- register int start, end;
-
- start = rl_point;
-
- if (count < 0)
- {
- direction = -1;
- count = -count;
- }
- else
- direction = 1;
-
- /* Find the end of the range to modify. */
- end = start + (count * direction);
-
- /* Force it to be within range. */
- if (end > rl_end)
- end = rl_end;
- else if (end < 0)
- end = -1;
-
- if (start > end)
- {
- int temp = start;
- start = end;
- end = temp;
- }
-
- if (start == end)
- return;
-
- /* Tell readline that we are modifying the line, so save the undo
- information. */
- rl_modifying (start, end);
-
- for (; start != end; start += direction)
- {
- if (_rl_uppercase_p (rl_line_buffer[start]))
- rl_line_buffer[start] = _rl_to_lower (rl_line_buffer[start]);
- else if (_rl_lowercase_p (rl_line_buffer[start]))
- rl_line_buffer[start] = _rl_to_upper (rl_line_buffer[start]);
- }
-
- /* Move point to on top of the last character changed. */
- rl_point = end - direction;
-}
diff --git a/readline-4.3.orig/examples/readlinebuf.h b/readline-4.3.orig/examples/readlinebuf.h
deleted file mode 100644
index 91ef4d6..0000000
--- a/readline-4.3.orig/examples/readlinebuf.h
+++ /dev/null
@@ -1,139 +0,0 @@
-/*******************************************************************************
- * $Revision$
- * $Date$
- * $Author$
- *
- * Contents: A streambuf which uses the GNU readline library for line I/O
- * (c) 2001 by Dimitris Vyzovitis [vyzo@media.mit.edu]
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the Free
- * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- *
- ******************************************************************************/
-
-#ifndef _READLINEBUF_H_
-#define _READLINEBUF_H_
-
-#include <iostream>
-#include <cstring>
-#include <cassert>
-#include <cstdlib>
-#include <cstdio>
-
-#include <readline/readline.h>
-#include <readline/history.h>
-
-#if (defined __GNUC__) && (__GNUC__ < 3)
-#include <streambuf.h>
-#else
-#include <streambuf>
-using std::streamsize;
-using std::streambuf;
-#endif
-
-class readlinebuf : public streambuf {
-public:
-#if (defined __GNUC__) && (__GNUC__ < 3)
- typedef char char_type;
- typedef int int_type;
- typedef streampos pos_type;
- typedef streamoff off_type;
-#endif
- static const int_type eof = EOF; // this is -1
- static const int_type not_eof = 0;
-
-private:
- const char* prompt_;
- bool history_;
- char* line_;
- int low_;
- int high_;
-
-protected:
-
- virtual int_type showmanyc() const { return high_ - low_; }
-
- virtual streamsize xsgetn( char_type* buf, streamsize n ) {
- int rd = n > (high_ - low_)? (high_ - low_) : n;
- memcpy( buf, line_, rd );
- low_ += rd;
-
- if ( rd < n ) {
- low_ = high_ = 0;
- free( line_ ); // free( NULL ) is a noop
- line_ = readline( prompt_ );
- if ( line_ ) {
- high_ = strlen( line_ );
- if ( history_ && high_ ) add_history( line_ );
- rd += xsgetn( buf + rd, n - rd );
- }
- }
-
- return rd;
- }
-
- virtual int_type underflow() {
- if ( high_ == low_ ) {
- low_ = high_ = 0;
- free( line_ ); // free( NULL ) is a noop
- line_ = readline( prompt_ );
- if ( line_ ) {
- high_ = strlen( line_ );
- if ( history_ && high_ ) add_history( line_ );
- }
- }
-
- if ( low_ < high_ ) return line_[low_];
- else return eof;
- }
-
- virtual int_type uflow() {
- int_type c = underflow();
- if ( c != eof ) ++low_;
- return c;
- }
-
- virtual int_type pbackfail( int_type c = eof ) {
- if ( low_ > 0 ) --low_;
- else if ( c != eof ) {
- if ( high_ > 0 ) {
- char* nl = (char*)realloc( line_, high_ + 1 );
- if ( nl ) {
- line_ = (char*)memcpy( nl + 1, line_, high_ );
- high_ += 1;
- line_[0] = char( c );
- } else return eof;
- } else {
- assert( !line_ );
- line_ = (char*)malloc( sizeof( char ) );
- *line_ = char( c );
- high_ = 1;
- }
- } else return eof;
-
- return not_eof;
- }
-
-public:
- readlinebuf( const char* prompt = NULL, bool history = true )
- : prompt_( prompt ), history_( history ),
- line_( NULL ), low_( 0 ), high_( 0 ) {
- setbuf( 0, 0 );
- }
-
-
-};
-
-#endif
diff --git a/readline-4.3.orig/examples/rl.c b/readline-4.3.orig/examples/rl.c
deleted file mode 100644
index d260489..0000000
--- a/readline-4.3.orig/examples/rl.c
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * rl - command-line interface to read a line from the standard input
- * (or another fd) using readline.
- *
- * usage: rl [-p prompt] [-u unit] [-d default] [-n nchars]
- */
-
-/* Copyright (C) 1987-2002 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <stdio.h>
-#include <sys/types.h>
-#include "posixstat.h"
-
-#if defined (READLINE_LIBRARY)
-# include "readline.h"
-# include "history.h"
-#else
-# include <readline/readline.h>
-# include <readline/history.h>
-#endif
-
-extern int optind;
-extern char *optarg;
-
-#if !defined (strchr) && !defined (__STDC__)
-extern char *strrchr();
-#endif
-
-static char *progname;
-static char *deftext;
-
-static int
-set_deftext ()
-{
- if (deftext)
- {
- rl_insert_text (deftext);
- deftext = (char *)NULL;
- rl_startup_hook = (rl_hook_func_t *)NULL;
- }
- return 0;
-}
-
-static void
-usage()
-{
- fprintf (stderr, "%s: usage: %s [-p prompt] [-u unit] [-d default] [-n nchars]\n",
- progname, progname);
-}
-
-int
-main (argc, argv)
- int argc;
- char **argv;
-{
- char *temp, *prompt;
- struct stat sb;
- int opt, fd, nch;
- FILE *ifp;
-
- progname = strrchr(argv[0], '/');
- if (progname == 0)
- progname = argv[0];
- else
- progname++;
-
- /* defaults */
- prompt = "readline$ ";
- fd = nch = 0;
- deftext = (char *)0;
-
- while ((opt = getopt(argc, argv, "p:u:d:n:")) != EOF)
- {
- switch (opt)
- {
- case 'p':
- prompt = optarg;
- break;
- case 'u':
- fd = atoi(optarg);
- if (fd < 0)
- {
- fprintf (stderr, "%s: bad file descriptor `%s'\n", progname, optarg);
- exit (2);
- }
- break;
- case 'd':
- deftext = optarg;
- break;
- case 'n':
- nch = atoi(optarg);
- if (nch < 0)
- {
- fprintf (stderr, "%s: bad value for -n: `%s'\n", progname, optarg);
- exit (2);
- }
- break;
- default:
- usage ();
- exit (2);
- }
- }
-
- if (fd != 0)
- {
- if (fstat (fd, &sb) < 0)
- {
- fprintf (stderr, "%s: %d: bad file descriptor\n", progname, fd);
- exit (1);
- }
- ifp = fdopen (fd, "r");
- rl_instream = ifp;
- }
-
- if (deftext && *deftext)
- rl_startup_hook = set_deftext;
-
- if (nch > 0)
- rl_num_chars_to_read = nch;
-
- temp = readline (prompt);
-
- /* Test for EOF. */
- if (temp == 0)
- exit (1);
-
- printf ("%s\n", temp);
- exit (0);
-}
diff --git a/readline-4.3.orig/examples/rlcat.c b/readline-4.3.orig/examples/rlcat.c
deleted file mode 100644
index 176b9f4..0000000
--- a/readline-4.3.orig/examples/rlcat.c
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * rlcat - cat(1) using readline
- *
- * usage: rlcat
- */
-
-/* Copyright (C) 1987-2002 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-
-#include <sys/types.h>
-#include "posixstat.h"
-
-#include <stdio.h>
-#include <ctype.h>
-#include <string.h>
-#include <errno.h>
-
-#ifndef errno
-extern int errno;
-#endif
-
-#if defined (READLINE_LIBRARY)
-# include "readline.h"
-# include "history.h"
-#else
-# include <readline/readline.h>
-# include <readline/history.h>
-#endif
-
-extern int optind;
-extern char *optarg;
-
-static int stdcat();
-
-static char *progname;
-static int vflag;
-
-static void
-usage()
-{
- fprintf (stderr, "%s: usage: %s [-vEVN] [filename]\n", progname, progname);
-}
-
-int
-main (argc, argv)
- int argc;
- char **argv;
-{
- char *temp;
- int opt, Vflag, Nflag;
-
- progname = strrchr(argv[0], '/');
- if (progname == 0)
- progname = argv[0];
- else
- progname++;
-
- vflag = Vflag = Nflag = 0;
- while ((opt = getopt(argc, argv, "vEVN")) != EOF)
- {
- switch (opt)
- {
- case 'v':
- vflag = 1;
- break;
- case 'V':
- Vflag = 1;
- break;
- case 'E':
- Vflag = 0;
- break;
- case 'N':
- Nflag = 1;
- break;
- default:
- usage ();
- exit (2);
- }
- }
-
- argc -= optind;
- argv += optind;
-
- if (isatty(0) == 0 || argc || Nflag)
- return stdcat(argc, argv);
-
- rl_variable_bind ("editing-mode", Vflag ? "vi" : "emacs");
- while (temp = readline (""))
- {
- if (*temp)
- add_history (temp);
- printf ("%s\n", temp);
- }
-
- return (ferror (stdout));
-}
-
-static int
-fcopy(fp)
- FILE *fp;
-{
- int c;
- char *x;
-
- while ((c = getc(fp)) != EOF)
- {
- if (vflag && isascii ((unsigned char)c) && isprint((unsigned char)c) == 0)
- {
- x = rl_untranslate_keyseq (c);
- if (fputs (x, stdout) != 0)
- return 1;
- }
- else if (putchar (c) == EOF)
- return 1;
- }
- return (ferror (stdout));
-}
-
-int
-stdcat (argc, argv)
- int argc;
- char **argv;
-{
- int i, fd, r;
- char *s;
- FILE *fp;
-
- if (argc == 0)
- return (fcopy(stdin));
-
- for (i = 0, r = 1; i < argc; i++)
- {
- if (*argv[i] == '-' && argv[i][1] == 0)
- fp = stdin;
- else
- {
- fp = fopen (argv[i], "r");
- if (fp == 0)
- {
- fprintf (stderr, "%s: %s: cannot open: %s\n", progname, argv[i], strerror(errno));
- continue;
- }
- }
- r = fcopy (fp);
- if (fp != stdin)
- fclose(fp);
- }
- return r;
-}
diff --git a/readline-4.3.orig/examples/rlfe.c b/readline-4.3.orig/examples/rlfe.c
deleted file mode 100644
index d634d7c..0000000
--- a/readline-4.3.orig/examples/rlfe.c
+++ /dev/null
@@ -1,1042 +0,0 @@
-/* A front-end using readline to "cook" input lines for Kawa.
- *
- * Copyright (C) 1999 Per Bothner
- *
- * This front-end program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as published
- * by the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * Some code from Johnson & Troan: "Linux Application Development"
- * (Addison-Wesley, 1998) was used directly or for inspiration.
- */
-
-/* PROBLEMS/TODO:
- *
- * Only tested under Linux; needs to be ported.
- *
- * When running mc -c under the Linux console, mc does not recognize
- * mouse clicks, which mc does when not running under fep.
- *
- * Pasting selected text containing tabs is like hitting the tab character,
- * which invokes readline completion. We don't want this. I don't know
- * if this is fixable without integrating fep into a terminal emulator.
- *
- * Echo suppression is a kludge, but can only be avoided with better kernel
- * support: We need a tty mode to disable "real" echoing, while still
- * letting the inferior think its tty driver to doing echoing.
- * Stevens's book claims SCR$ and BSD4.3+ have TIOCREMOTE.
- *
- * The latest readline may have some hooks we can use to avoid having
- * to back up the prompt.
- *
- * Desirable readline feature: When in cooked no-echo mode (e.g. password),
- * echo characters are they are types with '*', but remove them when done.
- *
- * A synchronous output while we're editing an input line should be
- * inserted in the output view *before* the input line, so that the
- * lines being edited (with the prompt) float at the end of the input.
- *
- * A "page mode" option to emulate more/less behavior: At each page of
- * output, pause for a user command. This required parsing the output
- * to keep track of line lengths. It also requires remembering the
- * output, if we want an option to scroll back, which suggests that
- * this should be integrated with a terminal emulator like xterm.
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <stdio.h>
-#include <fcntl.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <signal.h>
-#include <netdb.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <grp.h>
-#include <string.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <sys/ioctl.h>
-#include <termios.h>
-#include <limits.h>
-#include <dirent.h>
-
-#ifdef READLINE_LIBRARY
-# include "readline.h"
-# include "history.h"
-#else
-# include <readline/readline.h>
-# include <readline/history.h>
-#endif
-
-#ifndef COMMAND
-#define COMMAND "/bin/sh"
-#endif
-#ifndef COMMAND_ARGS
-#define COMMAND_ARGS COMMAND
-#endif
-
-#ifndef HAVE_MEMMOVE
-#ifndef memmove
-# if __GNUC__ > 1
-# define memmove(d, s, n) __builtin_memcpy(d, s, n)
-# else
-# define memmove(d, s, n) memcpy(d, s, n)
-# endif
-#else
-# define memmove(d, s, n) memcpy(d, s, n)
-#endif
-#endif
-
-#define APPLICATION_NAME "Rlfe"
-
-#ifndef errno
-extern int errno;
-#endif
-
-extern int optind;
-extern char *optarg;
-
-static char *progname;
-static char *progversion;
-
-static int in_from_inferior_fd;
-static int out_to_inferior_fd;
-
-/* Unfortunately, we cannot safely display echo from the inferior process.
- The reason is that the echo bit in the pty is "owned" by the inferior,
- and if we try to turn it off, we could confuse the inferior.
- Thus, when echoing, we get echo twice: First readline echoes while
- we're actually editing. Then we send the line to the inferior, and the
- terminal driver send back an extra echo.
- The work-around is to remember the input lines, and when we see that
- line come back, we supress the output.
- A better solution (supposedly available on SVR4) would be a smarter
- terminal driver, with more flags ... */
-#define ECHO_SUPPRESS_MAX 1024
-char echo_suppress_buffer[ECHO_SUPPRESS_MAX];
-int echo_suppress_start = 0;
-int echo_suppress_limit = 0;
-
-/* #define DEBUG */
-
-static FILE *logfile = NULL;
-
-#ifdef DEBUG
-FILE *debugfile = NULL;
-#define DPRINT0(FMT) (fprintf(debugfile, FMT), fflush(debugfile))
-#define DPRINT1(FMT, V1) (fprintf(debugfile, FMT, V1), fflush(debugfile))
-#define DPRINT2(FMT, V1, V2) (fprintf(debugfile, FMT, V1, V2), fflush(debugfile))
-#else
-#define DPRINT0(FMT) /* Do nothing */
-#define DPRINT1(FMT, V1) /* Do nothing */
-#define DPRINT2(FMT, V1, V2) /* Do nothing */
-#endif
-
-struct termios orig_term;
-
-static int rlfe_directory_completion_hook __P((char **));
-static int rlfe_directory_rewrite_hook __P((char **));
-static char *rlfe_filename_completion_function __P((const char *, int));
-
-/* Pid of child process. */
-static pid_t child = -1;
-
-static void
-sig_child (int signo)
-{
- int status;
- wait (&status);
- DPRINT0 ("(Child process died.)\n");
- tcsetattr(STDIN_FILENO, TCSANOW, &orig_term);
- exit (0);
-}
-
-volatile int propagate_sigwinch = 0;
-
-/* sigwinch_handler
- * propagate window size changes from input file descriptor to
- * master side of pty.
- */
-void sigwinch_handler(int signal) {
- propagate_sigwinch = 1;
-}
-
-/* get_master_pty() takes a double-indirect character pointer in which
- * to put a slave name, and returns an integer file descriptor.
- * If it returns < 0, an error has occurred.
- * Otherwise, it has returned the master pty file descriptor, and fills
- * in *name with the name of the corresponding slave pty.
- * Once the slave pty has been opened, you are responsible to free *name.
- */
-
-int get_master_pty(char **name) {
- int i, j;
- /* default to returning error */
- int master = -1;
-
- /* create a dummy name to fill in */
- *name = strdup("/dev/ptyXX");
-
- /* search for an unused pty */
- for (i=0; i<16 && master <= 0; i++) {
- for (j=0; j<16 && master <= 0; j++) {
- (*name)[5] = 'p';
- (*name)[8] = "pqrstuvwxyzPQRST"[i];
- (*name)[9] = "0123456789abcdef"[j];
- /* open the master pty */
- if ((master = open(*name, O_RDWR)) < 0) {
- if (errno == ENOENT) {
- /* we are out of pty devices */
- free (*name);
- return (master);
- }
- }
- else {
- /* By substituting a letter, we change the master pty
- * name into the slave pty name.
- */
- (*name)[5] = 't';
- if (access(*name, R_OK|W_OK) != 0)
- {
- close(master);
- master = -1;
- }
- }
- }
- }
- if ((master < 0) && (i == 16) && (j == 16)) {
- /* must have tried every pty unsuccessfully */
- free (*name);
- return (master);
- }
-
- (*name)[5] = 't';
-
- return (master);
-}
-
-/* get_slave_pty() returns an integer file descriptor.
- * If it returns < 0, an error has occurred.
- * Otherwise, it has returned the slave file descriptor.
- */
-
-int get_slave_pty(char *name) {
- struct group *gptr;
- gid_t gid;
- int slave = -1;
-
- /* chown/chmod the corresponding pty, if possible.
- * This will only work if the process has root permissions.
- * Alternatively, write and exec a small setuid program that
- * does just this.
- */
- if ((gptr = getgrnam("tty")) != 0) {
- gid = gptr->gr_gid;
- } else {
- /* if the tty group does not exist, don't change the
- * group on the slave pty, only the owner
- */
- gid = -1;
- }
-
- /* Note that we do not check for errors here. If this is code
- * where these actions are critical, check for errors!
- */
- chown(name, getuid(), gid);
- /* This code only makes the slave read/writeable for the user.
- * If this is for an interactive shell that will want to
- * receive "write" and "wall" messages, OR S_IWGRP into the
- * second argument below.
- */
- chmod(name, S_IRUSR|S_IWUSR);
-
- /* open the corresponding slave pty */
- slave = open(name, O_RDWR);
- return (slave);
-}
-
-/* Certain special characters, such as ctrl/C, we want to pass directly
- to the inferior, rather than letting readline handle them. */
-
-static char special_chars[20];
-static int special_chars_count;
-
-static void
-add_special_char(int ch)
-{
- if (ch != 0)
- special_chars[special_chars_count++] = ch;
-}
-
-static int eof_char;
-
-static int
-is_special_char(int ch)
-{
- int i;
-#if 0
- if (ch == eof_char && rl_point == rl_end)
- return 1;
-#endif
- for (i = special_chars_count; --i >= 0; )
- if (special_chars[i] == ch)
- return 1;
- return 0;
-}
-
-static char buf[1024];
-/* buf[0 .. buf_count-1] is the what has been emitted on the current line.
- It is used as the readline prompt. */
-static int buf_count = 0;
-
-int num_keys = 0;
-
-static void
-null_prep_terminal (int meta)
-{
-}
-
-static void
-null_deprep_terminal ()
-{
-}
-
-char pending_special_char;
-
-static void
-line_handler (char *line)
-{
- if (line == NULL)
- {
- char buf[1];
- DPRINT0("saw eof!\n");
- buf[0] = '\004'; /* ctrl/d */
- write (out_to_inferior_fd, buf, 1);
- }
- else
- {
- static char enter[] = "\r";
- /* Send line to inferior: */
- int length = strlen (line);
- if (length > ECHO_SUPPRESS_MAX-2)
- {
- echo_suppress_start = 0;
- echo_suppress_limit = 0;
- }
- else
- {
- if (echo_suppress_limit + length > ECHO_SUPPRESS_MAX - 2)
- {
- if (echo_suppress_limit - echo_suppress_start + length
- <= ECHO_SUPPRESS_MAX - 2)
- {
- memmove (echo_suppress_buffer,
- echo_suppress_buffer + echo_suppress_start,
- echo_suppress_limit - echo_suppress_start);
- echo_suppress_limit -= echo_suppress_start;
- echo_suppress_start = 0;
- }
- else
- {
- echo_suppress_limit = 0;
- }
- echo_suppress_start = 0;
- }
- memcpy (echo_suppress_buffer + echo_suppress_limit,
- line, length);
- echo_suppress_limit += length;
- echo_suppress_buffer[echo_suppress_limit++] = '\r';
- echo_suppress_buffer[echo_suppress_limit++] = '\n';
- }
- write (out_to_inferior_fd, line, length);
- if (pending_special_char == 0)
- {
- write (out_to_inferior_fd, enter, sizeof(enter)-1);
- if (*line)
- add_history (line);
- }
- free (line);
- }
- rl_callback_handler_remove ();
- buf_count = 0;
- num_keys = 0;
- if (pending_special_char != 0)
- {
- write (out_to_inferior_fd, &pending_special_char, 1);
- pending_special_char = 0;
- }
-}
-
-/* Value of rl_getc_function.
- Use this because readline should read from stdin, not rl_instream,
- points to the pty (so readline has monitor its terminal modes). */
-
-int
-my_rl_getc (FILE *dummy)
-{
- int ch = rl_getc (stdin);
- if (is_special_char (ch))
- {
- pending_special_char = ch;
- return '\r';
- }
- return ch;
-}
-
-static void
-usage()
-{
- fprintf (stderr, "%s: usage: %s [-l filename] [-a] [-n appname] [-hv] [command [arguments...]]\n",
- progname, progname);
-}
-
-int
-main(int argc, char** argv)
-{
- char *path;
- int i, append;
- int master;
- char *name, *logfname, *appname;
- int in_from_tty_fd;
- struct sigaction act;
- struct winsize ws;
- struct termios t;
- int maxfd;
- fd_set in_set;
- static char empty_string[1] = "";
- char *prompt = empty_string;
- int ioctl_err = 0;
-
- if ((progname = strrchr (argv[0], '/')) == 0)
- progname = argv[0];
- else
- progname++;
- progversion = RL_LIBRARY_VERSION;
-
- append = 0;
- appname = APPLICATION_NAME;
- logfname = (char *)NULL;
-
- while ((i = getopt (argc, argv, "ahl:n:v")) != EOF)
- {
- switch (i)
- {
- case 'l':
- logfname = optarg;
- break;
- case 'n':
- appname = optarg;
- break;
- case 'a':
- append = 1;
- break;
- case 'h':
- usage ();
- exit (0);
- case 'v':
- fprintf (stderr, "%s version %s\n", progname, progversion);
- exit (0);
- default:
- usage ();
- exit (2);
- }
- }
-
- argc -= optind;
- argv += optind;
-
- if (logfname)
- {
- logfile = fopen (logfname, append ? "a" : "w");
- if (logfile == 0)
- fprintf (stderr, "%s: warning: could not open log file %s: %s\n",
- progname, logfname, strerror (errno));
- }
-
- rl_readline_name = appname;
-
-#ifdef DEBUG
- debugfile = fopen("LOG", "w");
-#endif
-
- if ((master = get_master_pty(&name)) < 0)
- {
- perror("ptypair: could not open master pty");
- exit(1);
- }
-
- DPRINT1("pty name: '%s'\n", name);
-
- /* set up SIGWINCH handler */
- act.sa_handler = sigwinch_handler;
- sigemptyset(&(act.sa_mask));
- act.sa_flags = 0;
- if (sigaction(SIGWINCH, &act, NULL) < 0)
- {
- perror("ptypair: could not handle SIGWINCH ");
- exit(1);
- }
-
- if (ioctl(STDIN_FILENO, TIOCGWINSZ, &ws) < 0)
- {
- perror("ptypair: could not get window size");
- exit(1);
- }
-
- if ((child = fork()) < 0)
- {
- perror("cannot fork");
- exit(1);
- }
-
- if (child == 0)
- {
- int slave; /* file descriptor for slave pty */
-
- /* We are in the child process */
- close(master);
-
-#ifdef TIOCSCTTY
- if ((slave = get_slave_pty(name)) < 0)
- {
- perror("ptypair: could not open slave pty");
- exit(1);
- }
- free(name);
-#endif
-
- /* We need to make this process a session group leader, because
- * it is on a new PTY, and things like job control simply will
- * not work correctly unless there is a session group leader
- * and process group leader (which a session group leader
- * automatically is). This also disassociates us from our old
- * controlling tty.
- */
- if (setsid() < 0)
- {
- perror("could not set session leader");
- }
-
- /* Tie us to our new controlling tty. */
-#ifdef TIOCSCTTY
- if (ioctl(slave, TIOCSCTTY, NULL))
- {
- perror("could not set new controlling tty");
- }
-#else
- if ((slave = get_slave_pty(name)) < 0)
- {
- perror("ptypair: could not open slave pty");
- exit(1);
- }
- free(name);
-#endif
-
- /* make slave pty be standard in, out, and error */
- dup2(slave, STDIN_FILENO);
- dup2(slave, STDOUT_FILENO);
- dup2(slave, STDERR_FILENO);
-
- /* at this point the slave pty should be standard input */
- if (slave > 2)
- {
- close(slave);
- }
-
- /* Try to restore window size; failure isn't critical */
- if (ioctl(STDOUT_FILENO, TIOCSWINSZ, &ws) < 0)
- {
- perror("could not restore window size");
- }
-
- /* now start the shell */
- {
- static char* command_args[] = { COMMAND_ARGS, NULL };
- if (argc < 1)
- execvp(COMMAND, command_args);
- else
- execvp(argv[0], &argv[0]);
- }
-
- /* should never be reached */
- exit(1);
- }
-
- /* parent */
- signal (SIGCHLD, sig_child);
- free(name);
-
- /* Note that we only set termios settings for standard input;
- * the master side of a pty is NOT a tty.
- */
- tcgetattr(STDIN_FILENO, &orig_term);
-
- t = orig_term;
- eof_char = t.c_cc[VEOF];
- /* add_special_char(t.c_cc[VEOF]);*/
- add_special_char(t.c_cc[VINTR]);
- add_special_char(t.c_cc[VQUIT]);
- add_special_char(t.c_cc[VSUSP]);
-#if defined (VDISCARD)
- add_special_char(t.c_cc[VDISCARD]);
-#endif
-
-#if 0
- t.c_lflag |= (ICANON | ISIG | ECHO | ECHOCTL | ECHOE | \
- ECHOK | ECHOKE | ECHONL | ECHOPRT );
-#else
- t.c_lflag &= ~(ICANON | ISIG | ECHO | ECHOCTL | ECHOE | \
- ECHOK | ECHOKE | ECHONL | ECHOPRT );
-#endif
- t.c_iflag |= IGNBRK;
- t.c_cc[VMIN] = 1;
- t.c_cc[VTIME] = 0;
- tcsetattr(STDIN_FILENO, TCSANOW, &t);
- in_from_inferior_fd = master;
- out_to_inferior_fd = master;
- rl_instream = fdopen (master, "r");
- rl_getc_function = my_rl_getc;
-
- rl_prep_term_function = null_prep_terminal;
- rl_deprep_term_function = null_deprep_terminal;
- rl_callback_handler_install (prompt, line_handler);
-
-#if 1
- rl_directory_completion_hook = rlfe_directory_completion_hook;
- rl_completion_entry_function = rlfe_filename_completion_function;
-#else
- rl_directory_rewrite_hook = rlfe_directory_rewrite_hook;
-#endif
-
- in_from_tty_fd = STDIN_FILENO;
- FD_ZERO (&in_set);
- maxfd = in_from_inferior_fd > in_from_tty_fd ? in_from_inferior_fd
- : in_from_tty_fd;
- for (;;)
- {
- int num;
- FD_SET (in_from_inferior_fd, &in_set);
- FD_SET (in_from_tty_fd, &in_set);
-
- num = select(maxfd+1, &in_set, NULL, NULL, NULL);
-
- if (propagate_sigwinch)
- {
- struct winsize ws;
- if (ioctl (STDIN_FILENO, TIOCGWINSZ, &ws) >= 0)
- {
- ioctl (master, TIOCSWINSZ, &ws);
- }
- propagate_sigwinch = 0;
- continue;
- }
-
- if (num <= 0)
- {
- perror ("select");
- exit (-1);
- }
- if (FD_ISSET (in_from_tty_fd, &in_set))
- {
- extern int readline_echoing_p;
- struct termios term_master;
- int do_canon = 1;
- int ioctl_ret;
-
- DPRINT1("[tty avail num_keys:%d]\n", num_keys);
-
- /* If we can't get tty modes for the master side of the pty, we
- can't handle non-canonical-mode programs. Always assume the
- master is in canonical echo mode if we can't tell. */
- ioctl_ret = tcgetattr(master, &term_master);
-
- if (ioctl_ret >= 0)
- {
- DPRINT2 ("echo:%d, canon:%d\n",
- (term_master.c_lflag & ECHO) != 0,
- (term_master.c_lflag & ICANON) != 0);
- do_canon = (term_master.c_lflag & ICANON) != 0;
- readline_echoing_p = (term_master.c_lflag & ECHO) != 0;
- }
- else
- {
- if (ioctl_err == 0)
- DPRINT1("tcgetattr on master fd failed: errno = %d\n", errno);
- ioctl_err = 1;
- }
-
- if (do_canon == 0 && num_keys == 0)
- {
- char ch[10];
- int count = read (STDIN_FILENO, ch, sizeof(ch));
- write (out_to_inferior_fd, ch, count);
- }
- else
- {
- if (num_keys == 0)
- {
- int i;
- /* Re-install callback handler for new prompt. */
- if (prompt != empty_string)
- free (prompt);
- prompt = malloc (buf_count + 1);
- if (prompt == NULL)
- prompt = empty_string;
- else
- {
- memcpy (prompt, buf, buf_count);
- prompt[buf_count] = '\0';
- DPRINT1("New prompt '%s'\n", prompt);
-#if 0 /* ifdef HAVE_RL_ALREADY_PROMPTED -- doesn't work */
- rl_already_prompted = buf_count > 0;
-#else
- if (buf_count > 0)
- write (1, "\r", 1);
-#endif
- }
- rl_callback_handler_install (prompt, line_handler);
- }
- num_keys++;
- rl_callback_read_char ();
- }
- }
- else /* input from inferior. */
- {
- int i;
- int count;
- int old_count;
- if (buf_count > (sizeof(buf) >> 2))
- buf_count = 0;
- count = read (in_from_inferior_fd, buf+buf_count,
- sizeof(buf) - buf_count);
- if (count <= 0)
- {
- DPRINT0 ("(Connection closed by foreign host.)\n");
- tcsetattr(STDIN_FILENO, TCSANOW, &orig_term);
- exit (0);
- }
- old_count = buf_count;
-
- /* Do some minimal carriage return translation and backspace
- processing before logging the input line. */
- if (logfile)
- {
-#ifndef __GNUC__
- char *b;
-#else
- char b[count + 1];
-#endif
- int i, j;
-
-#ifndef __GNUC__
- b = malloc (count + 1);
- if (b) {
-#endif
- for (i = 0; i < count; i++)
- b[i] = buf[buf_count + i];
- b[i] = '\0';
- for (i = j = 0; i <= count; i++)
- {
- if (b[i] == '\r')
- {
- if (b[i+1] != '\n')
- b[j++] = '\n';
- }
- else if (b[i] == '\b')
- {
- if (i)
- j--;
- }
- else
- b[j++] = b[i];
- }
- fprintf (logfile, "%s", b);
-
-#ifndef __GNUC__
- free (b);
- }
-#endif
- }
-
- /* Look for any pending echo that we need to suppress. */
- while (echo_suppress_start < echo_suppress_limit
- && count > 0
- && buf[buf_count] == echo_suppress_buffer[echo_suppress_start])
- {
- count--;
- buf_count++;
- echo_suppress_start++;
- }
-
- /* Write to the terminal anything that was not suppressed. */
- if (count > 0)
- write (1, buf + buf_count, count);
-
- /* Finally, look for a prompt candidate.
- * When we get around to going input (from the keyboard),
- * we will consider the prompt to be anything since the last
- * line terminator. So we need to save that text in the
- * initial part of buf. However, anything before the
- * most recent end-of-line is not interesting. */
- buf_count += count;
-#if 1
- for (i = buf_count; --i >= old_count; )
-#else
- for (i = buf_count - 1; i-- >= buf_count - count; )
-#endif
- {
- if (buf[i] == '\n' || buf[i] == '\r')
- {
- i++;
- memmove (buf, buf+i, buf_count - i);
- buf_count -= i;
- break;
- }
- }
- DPRINT2("-> i: %d, buf_count: %d\n", i, buf_count);
- }
- }
-}
-
-/*
- *
- * FILENAME COMPLETION FOR RLFE
- *
- */
-
-#ifndef PATH_MAX
-# define PATH_MAX 1024
-#endif
-
-#define DIRSEP '/'
-#define ISDIRSEP(x) ((x) == '/')
-#define PATHSEP(x) (ISDIRSEP(x) || (x) == 0)
-
-#define DOT_OR_DOTDOT(x) \
- ((x)[0] == '.' && (PATHSEP((x)[1]) || \
- ((x)[1] == '.' && PATHSEP((x)[2]))))
-
-#define FREE(x) if (x) free(x)
-
-#define STRDUP(s, x) do { \
- s = strdup (x);\
- if (s == 0) \
- return ((char *)NULL); \
- } while (0)
-
-static int
-get_inferior_cwd (path, psize)
- char *path;
- size_t psize;
-{
- int n;
- static char procfsbuf[PATH_MAX] = { '\0' };
-
- if (procfsbuf[0] == '\0')
- sprintf (procfsbuf, "/proc/%d/cwd", (int)child);
- n = readlink (procfsbuf, path, psize);
- if (n < 0)
- return n;
- if (n > psize)
- return -1;
- path[n] = '\0';
- return n;
-}
-
-static int
-rlfe_directory_rewrite_hook (dirnamep)
- char **dirnamep;
-{
- char *ldirname, cwd[PATH_MAX], *retdir, *ld;
- int n, ldlen;
-
- ldirname = *dirnamep;
-
- if (*ldirname == '/')
- return 0;
-
- n = get_inferior_cwd (cwd, sizeof(cwd) - 1);
- if (n < 0)
- return 0;
- if (n == 0) /* current directory */
- {
- cwd[0] = '.';
- cwd[1] = '\0';
- n = 1;
- }
-
- /* Minimally canonicalize ldirname by removing leading `./' */
- for (ld = ldirname; *ld; )
- {
- if (ISDIRSEP (ld[0]))
- ld++;
- else if (ld[0] == '.' && PATHSEP(ld[1]))
- ld++;
- else
- break;
- }
- ldlen = (ld && *ld) ? strlen (ld) : 0;
-
- retdir = (char *)malloc (n + ldlen + 3);
- if (retdir == 0)
- return 0;
- if (ldlen)
- sprintf (retdir, "%s/%s", cwd, ld);
- else
- strcpy (retdir, cwd);
- free (ldirname);
-
- *dirnamep = retdir;
-
- DPRINT1("rl_directory_rewrite_hook returns %s\n", retdir);
- return 1;
-}
-
-/* Translate *DIRNAMEP to be relative to the inferior's CWD. Leave a trailing
- slash on the result. */
-static int
-rlfe_directory_completion_hook (dirnamep)
- char **dirnamep;
-{
- char *ldirname, *retdir;
- int n, ldlen;
-
- ldirname = *dirnamep;
-
- if (*ldirname == '/')
- return 0;
-
- n = rlfe_directory_rewrite_hook (dirnamep);
- if (n == 0)
- return 0;
-
- ldirname = *dirnamep;
- ldlen = (ldirname && *ldirname) ? strlen (ldirname) : 0;
-
- if (ldlen == 0 || ldirname[ldlen - 1] != '/')
- {
- retdir = (char *)malloc (ldlen + 3);
- if (retdir == 0)
- return 0;
- if (ldlen)
- strcpy (retdir, ldirname);
- else
- retdir[ldlen++] = '.';
- retdir[ldlen] = '/';
- retdir[ldlen+1] = '\0';
- free (ldirname);
-
- *dirnamep = retdir;
- }
-
- DPRINT1("rl_directory_completion_hook returns %s\n", retdir);
- return 1;
-}
-
-static char *
-rlfe_filename_completion_function (text, state)
- const char *text;
- int state;
-{
- static DIR *directory;
- static char *filename = (char *)NULL;
- static char *dirname = (char *)NULL, *ud = (char *)NULL;
- static int flen, udlen;
- char *temp;
- struct dirent *dentry;
-
- if (state == 0)
- {
- if (directory)
- {
- closedir (directory);
- directory = 0;
- }
- FREE (dirname);
- FREE (filename);
- FREE (ud);
-
- if (text && *text)
- STRDUP (filename, text);
- else
- {
- filename = malloc(1);
- if (filename == 0)
- return ((char *)NULL);
- filename[0] = '\0';
- }
- dirname = (text && *text) ? strdup (text) : strdup (".");
- if (dirname == 0)
- return ((char *)NULL);
-
- temp = strrchr (dirname, '/');
- if (temp)
- {
- strcpy (filename, ++temp);
- *temp = '\0';
- }
- else
- {
- dirname[0] = '.';
- dirname[1] = '\0';
- }
-
- STRDUP (ud, dirname);
- udlen = strlen (ud);
-
- rlfe_directory_completion_hook (&dirname);
-
- directory = opendir (dirname);
- flen = strlen (filename);
-
- rl_filename_completion_desired = 1;
- }
-
- dentry = 0;
- while (directory && (dentry = readdir (directory)))
- {
- if (flen == 0)
- {
- if (DOT_OR_DOTDOT(dentry->d_name) == 0)
- break;
- }
- else
- {
- if ((dentry->d_name[0] == filename[0]) &&
- (strlen (dentry->d_name) >= flen) &&
- (strncmp (filename, dentry->d_name, flen) == 0))
- break;
- }
- }
-
- if (dentry == 0)
- {
- if (directory)
- {
- closedir (directory);
- directory = 0;
- }
- FREE (dirname);
- FREE (filename);
- FREE (ud);
- dirname = filename = ud = 0;
- return ((char *)NULL);
- }
-
- if (ud == 0 || (ud[0] == '.' && ud[1] == '\0'))
- temp = strdup (dentry->d_name);
- else
- {
- temp = malloc (1 + udlen + strlen (dentry->d_name));
- strcpy (temp, ud);
- strcpy (temp + udlen, dentry->d_name);
- }
- return (temp);
-}
diff --git a/readline-4.3.orig/examples/rltest.c b/readline-4.3.orig/examples/rltest.c
deleted file mode 100644
index 99f083b..0000000
--- a/readline-4.3.orig/examples/rltest.c
+++ /dev/null
@@ -1,87 +0,0 @@
-/* **************************************************************** */
-/* */
-/* Testing Readline */
-/* */
-/* **************************************************************** */
-
-/* Copyright (C) 1987-2002 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if defined (HAVE_CONFIG_H)
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <sys/types.h>
-
-#ifdef READLINE_LIBRARY
-# include "readline.h"
-# include "history.h"
-#else
-# include <readline/readline.h>
-# include <readline/history.h>
-#endif
-
-extern HIST_ENTRY **history_list ();
-
-main ()
-{
- char *temp, *prompt;
- int done;
-
- temp = (char *)NULL;
- prompt = "readline$ ";
- done = 0;
-
- while (!done)
- {
- temp = readline (prompt);
-
- /* Test for EOF. */
- if (!temp)
- exit (1);
-
- /* If there is anything on the line, print it and remember it. */
- if (*temp)
- {
- fprintf (stderr, "%s\r\n", temp);
- add_history (temp);
- }
-
- /* Check for `command' that we handle. */
- if (strcmp (temp, "quit") == 0)
- done = 1;
-
- if (strcmp (temp, "list") == 0)
- {
- HIST_ENTRY **list;
- register int i;
-
- list = history_list ();
- if (list)
- {
- for (i = 0; list[i]; i++)
- fprintf (stderr, "%d: %s\r\n", i, list[i]->line);
- }
- }
- free (temp);
- }
- exit (0);
-}
diff --git a/readline-4.3.orig/examples/rlversion.c b/readline-4.3.orig/examples/rlversion.c
deleted file mode 100644
index 53949d1..0000000
--- a/readline-4.3.orig/examples/rlversion.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * rlversion -- print out readline's version number
- */
-
-/* Copyright (C) 1987-2002 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <stdio.h>
-#include <sys/types.h>
-#include "posixstat.h"
-
-#ifdef READLINE_LIBRARY
-# include "readline.h"
-#else
-# include <readline/readline.h>
-#endif
-
-main()
-{
- printf ("%s\n", rl_library_version ? rl_library_version : "unknown");
- exit (0);
-}
diff --git a/readline-4.3.orig/funmap.c b/readline-4.3.orig/funmap.c
deleted file mode 100644
index fe9a1da..0000000
--- a/readline-4.3.orig/funmap.c
+++ /dev/null
@@ -1,253 +0,0 @@
-/* funmap.c -- attach names to functions. */
-
-/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#if !defined (BUFSIZ)
-#include <stdio.h>
-#endif /* BUFSIZ */
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#include "rlconf.h"
-#include "readline.h"
-
-#include "xmalloc.h"
-
-#ifdef __STDC__
-typedef int QSFUNC (const void *, const void *);
-#else
-typedef int QSFUNC ();
-#endif
-
-extern int _rl_qsort_string_compare PARAMS((char **, char **));
-
-FUNMAP **funmap;
-static int funmap_size;
-static int funmap_entry;
-
-/* After initializing the function map, this is the index of the first
- program specific function. */
-int funmap_program_specific_entry_start;
-
-static FUNMAP default_funmap[] = {
- { "abort", rl_abort },
- { "accept-line", rl_newline },
- { "arrow-key-prefix", rl_arrow_keys },
- { "backward-byte", rl_backward_byte },
- { "backward-char", rl_backward_char },
- { "backward-delete-char", rl_rubout },
- { "backward-kill-line", rl_backward_kill_line },
- { "backward-kill-word", rl_backward_kill_word },
- { "backward-word", rl_backward_word },
- { "beginning-of-history", rl_beginning_of_history },
- { "beginning-of-line", rl_beg_of_line },
- { "call-last-kbd-macro", rl_call_last_kbd_macro },
- { "capitalize-word", rl_capitalize_word },
- { "character-search", rl_char_search },
- { "character-search-backward", rl_backward_char_search },
- { "clear-screen", rl_clear_screen },
- { "complete", rl_complete },
- { "copy-backward-word", rl_copy_backward_word },
- { "copy-forward-word", rl_copy_forward_word },
- { "copy-region-as-kill", rl_copy_region_to_kill },
- { "delete-char", rl_delete },
- { "delete-char-or-list", rl_delete_or_show_completions },
- { "delete-horizontal-space", rl_delete_horizontal_space },
- { "digit-argument", rl_digit_argument },
- { "do-lowercase-version", rl_do_lowercase_version },
- { "downcase-word", rl_downcase_word },
- { "dump-functions", rl_dump_functions },
- { "dump-macros", rl_dump_macros },
- { "dump-variables", rl_dump_variables },
- { "emacs-editing-mode", rl_emacs_editing_mode },
- { "end-kbd-macro", rl_end_kbd_macro },
- { "end-of-history", rl_end_of_history },
- { "end-of-line", rl_end_of_line },
- { "exchange-point-and-mark", rl_exchange_point_and_mark },
- { "forward-backward-delete-char", rl_rubout_or_delete },
- { "forward-byte", rl_forward_byte },
- { "forward-char", rl_forward_char },
- { "forward-search-history", rl_forward_search_history },
- { "forward-word", rl_forward_word },
- { "history-search-backward", rl_history_search_backward },
- { "history-search-forward", rl_history_search_forward },
- { "insert-comment", rl_insert_comment },
- { "insert-completions", rl_insert_completions },
- { "kill-whole-line", rl_kill_full_line },
- { "kill-line", rl_kill_line },
- { "kill-region", rl_kill_region },
- { "kill-word", rl_kill_word },
- { "menu-complete", rl_menu_complete },
- { "next-history", rl_get_next_history },
- { "non-incremental-forward-search-history", rl_noninc_forward_search },
- { "non-incremental-reverse-search-history", rl_noninc_reverse_search },
- { "non-incremental-forward-search-history-again", rl_noninc_forward_search_again },
- { "non-incremental-reverse-search-history-again", rl_noninc_reverse_search_again },
- { "overwrite-mode", rl_overwrite_mode },
-#ifdef __CYGWIN__
- { "paste-from-clipboard", rl_paste_from_clipboard },
-#endif
- { "possible-completions", rl_possible_completions },
- { "previous-history", rl_get_previous_history },
- { "quoted-insert", rl_quoted_insert },
- { "re-read-init-file", rl_re_read_init_file },
- { "redraw-current-line", rl_refresh_line},
- { "reverse-search-history", rl_reverse_search_history },
- { "revert-line", rl_revert_line },
- { "self-insert", rl_insert },
- { "set-mark", rl_set_mark },
- { "start-kbd-macro", rl_start_kbd_macro },
- { "tab-insert", rl_tab_insert },
- { "tilde-expand", rl_tilde_expand },
- { "transpose-chars", rl_transpose_chars },
- { "transpose-words", rl_transpose_words },
- { "tty-status", rl_tty_status },
- { "undo", rl_undo_command },
- { "universal-argument", rl_universal_argument },
- { "unix-line-discard", rl_unix_line_discard },
- { "unix-word-rubout", rl_unix_word_rubout },
- { "upcase-word", rl_upcase_word },
- { "yank", rl_yank },
- { "yank-last-arg", rl_yank_last_arg },
- { "yank-nth-arg", rl_yank_nth_arg },
- { "yank-pop", rl_yank_pop },
-
-#if defined (VI_MODE)
- { "vi-append-eol", rl_vi_append_eol },
- { "vi-append-mode", rl_vi_append_mode },
- { "vi-arg-digit", rl_vi_arg_digit },
- { "vi-back-to-indent", rl_vi_back_to_indent },
- { "vi-bWord", rl_vi_bWord },
- { "vi-bword", rl_vi_bword },
- { "vi-change-case", rl_vi_change_case },
- { "vi-change-char", rl_vi_change_char },
- { "vi-change-to", rl_vi_change_to },
- { "vi-char-search", rl_vi_char_search },
- { "vi-column", rl_vi_column },
- { "vi-complete", rl_vi_complete },
- { "vi-delete", rl_vi_delete },
- { "vi-delete-to", rl_vi_delete_to },
- { "vi-eWord", rl_vi_eWord },
- { "vi-editing-mode", rl_vi_editing_mode },
- { "vi-end-word", rl_vi_end_word },
- { "vi-eof-maybe", rl_vi_eof_maybe },
- { "vi-eword", rl_vi_eword },
- { "vi-fWord", rl_vi_fWord },
- { "vi-fetch-history", rl_vi_fetch_history },
- { "vi-first-print", rl_vi_first_print },
- { "vi-fword", rl_vi_fword },
- { "vi-goto-mark", rl_vi_goto_mark },
- { "vi-insert-beg", rl_vi_insert_beg },
- { "vi-insertion-mode", rl_vi_insertion_mode },
- { "vi-match", rl_vi_match },
- { "vi-movement-mode", rl_vi_movement_mode },
- { "vi-next-word", rl_vi_next_word },
- { "vi-overstrike", rl_vi_overstrike },
- { "vi-overstrike-delete", rl_vi_overstrike_delete },
- { "vi-prev-word", rl_vi_prev_word },
- { "vi-put", rl_vi_put },
- { "vi-redo", rl_vi_redo },
- { "vi-replace", rl_vi_replace },
- { "vi-search", rl_vi_search },
- { "vi-search-again", rl_vi_search_again },
- { "vi-set-mark", rl_vi_set_mark },
- { "vi-subst", rl_vi_subst },
- { "vi-tilde-expand", rl_vi_tilde_expand },
- { "vi-yank-arg", rl_vi_yank_arg },
- { "vi-yank-to", rl_vi_yank_to },
-#endif /* VI_MODE */
-
- {(char *)NULL, (rl_command_func_t *)NULL }
-};
-
-int
-rl_add_funmap_entry (name, function)
- const char *name;
- rl_command_func_t *function;
-{
- if (funmap_entry + 2 >= funmap_size)
- {
- funmap_size += 64;
- funmap = (FUNMAP **)xrealloc (funmap, funmap_size * sizeof (FUNMAP *));
- }
-
- funmap[funmap_entry] = (FUNMAP *)xmalloc (sizeof (FUNMAP));
- funmap[funmap_entry]->name = name;
- funmap[funmap_entry]->function = function;
-
- funmap[++funmap_entry] = (FUNMAP *)NULL;
- return funmap_entry;
-}
-
-static int funmap_initialized;
-
-/* Make the funmap contain all of the default entries. */
-void
-rl_initialize_funmap ()
-{
- register int i;
-
- if (funmap_initialized)
- return;
-
- for (i = 0; default_funmap[i].name; i++)
- rl_add_funmap_entry (default_funmap[i].name, default_funmap[i].function);
-
- funmap_initialized = 1;
- funmap_program_specific_entry_start = i;
-}
-
-/* Produce a NULL terminated array of known function names. The array
- is sorted. The array itself is allocated, but not the strings inside.
- You should free () the array when you done, but not the pointrs. */
-const char **
-rl_funmap_names ()
-{
- const char **result;
- int result_size, result_index;
-
- /* Make sure that the function map has been initialized. */
- rl_initialize_funmap ();
-
- for (result_index = result_size = 0, result = (const char **)NULL; funmap[result_index]; result_index++)
- {
- if (result_index + 2 > result_size)
- {
- result_size += 20;
- result = (const char **)xrealloc (result, result_size * sizeof (char *));
- }
-
- result[result_index] = funmap[result_index]->name;
- result[result_index + 1] = (char *)NULL;
- }
-
- qsort (result, result_index, sizeof (char *), (QSFUNC *)_rl_qsort_string_compare);
- return (result);
-}
diff --git a/readline-4.3.orig/histexpand.c b/readline-4.3.orig/histexpand.c
deleted file mode 100644
index 6c81196..0000000
--- a/readline-4.3.orig/histexpand.c
+++ /dev/null
@@ -1,1491 +0,0 @@
-/* histexpand.c -- history expansion. */
-
-/* Copyright (C) 1989, 1992 Free Software Foundation, Inc.
-
- This file contains the GNU History Library (the Library), a set of
- routines for managing the text of previously typed lines.
-
- The Library is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- The Library is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <stdio.h>
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#if defined (HAVE_UNISTD_H)
-# ifndef _MINIX
-# include <sys/types.h>
-# endif
-# include <unistd.h>
-#endif
-
-#include "rlmbutil.h"
-
-#include "history.h"
-#include "histlib.h"
-
-#include "rlshell.h"
-#include "xmalloc.h"
-
-#define HISTORY_WORD_DELIMITERS " \t\n;&()|<>"
-#define HISTORY_QUOTE_CHARACTERS "\"'`"
-
-typedef int _hist_search_func_t PARAMS((const char *, int));
-
-extern int rl_byte_oriented; /* declared in mbutil.c */
-
-static char error_pointer;
-
-static char *subst_lhs;
-static char *subst_rhs;
-static int subst_lhs_len;
-static int subst_rhs_len;
-
-static char *get_history_word_specifier PARAMS((char *, char *, int *));
-static char *history_find_word PARAMS((char *, int));
-
-static char *quote_breaks PARAMS((char *));
-
-/* Variables exported by this file. */
-/* The character that represents the start of a history expansion
- request. This is usually `!'. */
-char history_expansion_char = '!';
-
-/* The character that invokes word substitution if found at the start of
- a line. This is usually `^'. */
-char history_subst_char = '^';
-
-/* During tokenization, if this character is seen as the first character
- of a word, then it, and all subsequent characters upto a newline are
- ignored. For a Bourne shell, this should be '#'. Bash special cases
- the interactive comment character to not be a comment delimiter. */
-char history_comment_char = '\0';
-
-/* The list of characters which inhibit the expansion of text if found
- immediately following history_expansion_char. */
-char *history_no_expand_chars = " \t\n\r=";
-
-/* If set to a non-zero value, single quotes inhibit history expansion.
- The default is 0. */
-int history_quotes_inhibit_expansion = 0;
-
-/* Used to split words by history_tokenize_internal. */
-char *history_word_delimiters = HISTORY_WORD_DELIMITERS;
-
-/* If set, this points to a function that is called to verify that a
- particular history expansion should be performed. */
-rl_linebuf_func_t *history_inhibit_expansion_function;
-
-/* **************************************************************** */
-/* */
-/* History Expansion */
-/* */
-/* **************************************************************** */
-
-/* Hairy history expansion on text, not tokens. This is of general
- use, and thus belongs in this library. */
-
-/* The last string searched for by a !?string? search. */
-static char *search_string;
-
-/* The last string matched by a !?string? search. */
-static char *search_match;
-
-/* Return the event specified at TEXT + OFFSET modifying OFFSET to
- point to after the event specifier. Just a pointer to the history
- line is returned; NULL is returned in the event of a bad specifier.
- You pass STRING with *INDEX equal to the history_expansion_char that
- begins this specification.
- DELIMITING_QUOTE is a character that is allowed to end the string
- specification for what to search for in addition to the normal
- characters `:', ` ', `\t', `\n', and sometimes `?'.
- So you might call this function like:
- line = get_history_event ("!echo:p", &index, 0); */
-char *
-get_history_event (string, caller_index, delimiting_quote)
- const char *string;
- int *caller_index;
- int delimiting_quote;
-{
- register int i;
- register char c;
- HIST_ENTRY *entry;
- int which, sign, local_index, substring_okay;
- _hist_search_func_t *search_func;
- char *temp;
-
- /* The event can be specified in a number of ways.
-
- !! the previous command
- !n command line N
- !-n current command-line minus N
- !str the most recent command starting with STR
- !?str[?]
- the most recent command containing STR
-
- All values N are determined via HISTORY_BASE. */
-
- i = *caller_index;
-
- if (string[i] != history_expansion_char)
- return ((char *)NULL);
-
- /* Move on to the specification. */
- i++;
-
- sign = 1;
- substring_okay = 0;
-
-#define RETURN_ENTRY(e, w) \
- return ((e = history_get (w)) ? e->line : (char *)NULL)
-
- /* Handle !! case. */
- if (string[i] == history_expansion_char)
- {
- i++;
- which = history_base + (history_length - 1);
- *caller_index = i;
- RETURN_ENTRY (entry, which);
- }
-
- /* Hack case of numeric line specification. */
- if (string[i] == '-')
- {
- sign = -1;
- i++;
- }
-
- if (_rl_digit_p (string[i]))
- {
- /* Get the extent of the digits and compute the value. */
- for (which = 0; _rl_digit_p (string[i]); i++)
- which = (which * 10) + _rl_digit_value (string[i]);
-
- *caller_index = i;
-
- if (sign < 0)
- which = (history_length + history_base) - which;
-
- RETURN_ENTRY (entry, which);
- }
-
- /* This must be something to search for. If the spec begins with
- a '?', then the string may be anywhere on the line. Otherwise,
- the string must be found at the start of a line. */
- if (string[i] == '?')
- {
- substring_okay++;
- i++;
- }
-
- /* Only a closing `?' or a newline delimit a substring search string. */
- for (local_index = i; c = string[i]; i++)
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- int v;
- mbstate_t ps;
-
- memset (&ps, 0, sizeof (mbstate_t));
- /* These produce warnings because we're passing a const string to a
- function that takes a non-const string. */
- _rl_adjust_point (string, i, &ps);
- if ((v = _rl_get_char_len (string + i, &ps)) > 1)
- {
- i += v - 1;
- continue;
- }
- }
- else
-#endif /* HANDLE_MULTIBYTE */
- if ((!substring_okay && (whitespace (c) || c == ':' ||
- (history_search_delimiter_chars && member (c, history_search_delimiter_chars)) ||
- string[i] == delimiting_quote)) ||
- string[i] == '\n' ||
- (substring_okay && string[i] == '?'))
- break;
-
- which = i - local_index;
- temp = (char *)xmalloc (1 + which);
- if (which)
- strncpy (temp, string + local_index, which);
- temp[which] = '\0';
-
- if (substring_okay && string[i] == '?')
- i++;
-
- *caller_index = i;
-
-#define FAIL_SEARCH() \
- do { \
- history_offset = history_length; free (temp) ; return (char *)NULL; \
- } while (0)
-
- /* If there is no search string, try to use the previous search string,
- if one exists. If not, fail immediately. */
- if (*temp == '\0' && substring_okay)
- {
- if (search_string)
- {
- free (temp);
- temp = savestring (search_string);
- }
- else
- FAIL_SEARCH ();
- }
-
- search_func = substring_okay ? history_search : history_search_prefix;
- while (1)
- {
- local_index = (*search_func) (temp, -1);
-
- if (local_index < 0)
- FAIL_SEARCH ();
-
- if (local_index == 0 || substring_okay)
- {
- entry = current_history ();
- history_offset = history_length;
-
- /* If this was a substring search, then remember the
- string that we matched for word substitution. */
- if (substring_okay)
- {
- FREE (search_string);
- search_string = temp;
-
- FREE (search_match);
- search_match = history_find_word (entry->line, local_index);
- }
- else
- free (temp);
-
- return (entry->line);
- }
-
- if (history_offset)
- history_offset--;
- else
- FAIL_SEARCH ();
- }
-#undef FAIL_SEARCH
-#undef RETURN_ENTRY
-}
-
-/* Function for extracting single-quoted strings. Used for inhibiting
- history expansion within single quotes. */
-
-/* Extract the contents of STRING as if it is enclosed in single quotes.
- SINDEX, when passed in, is the offset of the character immediately
- following the opening single quote; on exit, SINDEX is left pointing
- to the closing single quote. */
-static void
-hist_string_extract_single_quoted (string, sindex)
- char *string;
- int *sindex;
-{
- register int i;
-
- for (i = *sindex; string[i] && string[i] != '\''; i++)
- ;
-
- *sindex = i;
-}
-
-static char *
-quote_breaks (s)
- char *s;
-{
- register char *p, *r;
- char *ret;
- int len = 3;
-
- for (p = s; p && *p; p++, len++)
- {
- if (*p == '\'')
- len += 3;
- else if (whitespace (*p) || *p == '\n')
- len += 2;
- }
-
- r = ret = (char *)xmalloc (len);
- *r++ = '\'';
- for (p = s; p && *p; )
- {
- if (*p == '\'')
- {
- *r++ = '\'';
- *r++ = '\\';
- *r++ = '\'';
- *r++ = '\'';
- p++;
- }
- else if (whitespace (*p) || *p == '\n')
- {
- *r++ = '\'';
- *r++ = *p++;
- *r++ = '\'';
- }
- else
- *r++ = *p++;
- }
- *r++ = '\'';
- *r = '\0';
- return ret;
-}
-
-static char *
-hist_error(s, start, current, errtype)
- char *s;
- int start, current, errtype;
-{
- char *temp;
- const char *emsg;
- int ll, elen;
-
- ll = current - start;
-
- switch (errtype)
- {
- case EVENT_NOT_FOUND:
- emsg = "event not found";
- elen = 15;
- break;
- case BAD_WORD_SPEC:
- emsg = "bad word specifier";
- elen = 18;
- break;
- case SUBST_FAILED:
- emsg = "substitution failed";
- elen = 19;
- break;
- case BAD_MODIFIER:
- emsg = "unrecognized history modifier";
- elen = 29;
- break;
- case NO_PREV_SUBST:
- emsg = "no previous substitution";
- elen = 24;
- break;
- default:
- emsg = "unknown expansion error";
- elen = 23;
- break;
- }
-
- temp = (char *)xmalloc (ll + elen + 3);
- strncpy (temp, s + start, ll);
- temp[ll] = ':';
- temp[ll + 1] = ' ';
- strcpy (temp + ll + 2, emsg);
- return (temp);
-}
-
-/* Get a history substitution string from STR starting at *IPTR
- and return it. The length is returned in LENPTR.
-
- A backslash can quote the delimiter. If the string is the
- empty string, the previous pattern is used. If there is
- no previous pattern for the lhs, the last history search
- string is used.
-
- If IS_RHS is 1, we ignore empty strings and set the pattern
- to "" anyway. subst_lhs is not changed if the lhs is empty;
- subst_rhs is allowed to be set to the empty string. */
-
-static char *
-get_subst_pattern (str, iptr, delimiter, is_rhs, lenptr)
- char *str;
- int *iptr, delimiter, is_rhs, *lenptr;
-{
- register int si, i, j, k;
- char *s;
-#if defined (HANDLE_MULTIBYTE)
- mbstate_t ps;
-#endif
-
- s = (char *)NULL;
- i = *iptr;
-
-#if defined (HANDLE_MULTIBYTE)
- memset (&ps, 0, sizeof (mbstate_t));
- _rl_adjust_point (str, i, &ps);
-#endif
-
- for (si = i; str[si] && str[si] != delimiter; si++)
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- int v;
- if ((v = _rl_get_char_len (str + si, &ps)) > 1)
- si += v - 1;
- else if (str[si] == '\\' && str[si + 1] == delimiter)
- si++;
- }
- else
-#endif /* HANDLE_MULTIBYTE */
- if (str[si] == '\\' && str[si + 1] == delimiter)
- si++;
-
- if (si > i || is_rhs)
- {
- s = (char *)xmalloc (si - i + 1);
- for (j = 0, k = i; k < si; j++, k++)
- {
- /* Remove a backslash quoting the search string delimiter. */
- if (str[k] == '\\' && str[k + 1] == delimiter)
- k++;
- s[j] = str[k];
- }
- s[j] = '\0';
- if (lenptr)
- *lenptr = j;
- }
-
- i = si;
- if (str[i])
- i++;
- *iptr = i;
-
- return s;
-}
-
-static void
-postproc_subst_rhs ()
-{
- char *new;
- int i, j, new_size;
-
- new = (char *)xmalloc (new_size = subst_rhs_len + subst_lhs_len);
- for (i = j = 0; i < subst_rhs_len; i++)
- {
- if (subst_rhs[i] == '&')
- {
- if (j + subst_lhs_len >= new_size)
- new = (char *)xrealloc (new, (new_size = new_size * 2 + subst_lhs_len));
- strcpy (new + j, subst_lhs);
- j += subst_lhs_len;
- }
- else
- {
- /* a single backslash protects the `&' from lhs interpolation */
- if (subst_rhs[i] == '\\' && subst_rhs[i + 1] == '&')
- i++;
- if (j >= new_size)
- new = (char *)xrealloc (new, new_size *= 2);
- new[j++] = subst_rhs[i];
- }
- }
- new[j] = '\0';
- free (subst_rhs);
- subst_rhs = new;
- subst_rhs_len = j;
-}
-
-/* Expand the bulk of a history specifier starting at STRING[START].
- Returns 0 if everything is OK, -1 if an error occurred, and 1
- if the `p' modifier was supplied and the caller should just print
- the returned string. Returns the new index into string in
- *END_INDEX_PTR, and the expanded specifier in *RET_STRING. */
-static int
-history_expand_internal (string, start, end_index_ptr, ret_string, current_line)
- char *string;
- int start, *end_index_ptr;
- char **ret_string;
- char *current_line; /* for !# */
-{
- int i, n, starting_index;
- int substitute_globally, want_quotes, print_only;
- char *event, *temp, *result, *tstr, *t, c, *word_spec;
- int result_len;
-#if defined (HANDLE_MULTIBYTE)
- mbstate_t ps;
-
- memset (&ps, 0, sizeof (mbstate_t));
-#endif
-
- result = (char *)xmalloc (result_len = 128);
-
- i = start;
-
- /* If it is followed by something that starts a word specifier,
- then !! is implied as the event specifier. */
-
- if (member (string[i + 1], ":$*%^"))
- {
- char fake_s[3];
- int fake_i = 0;
- i++;
- fake_s[0] = fake_s[1] = history_expansion_char;
- fake_s[2] = '\0';
- event = get_history_event (fake_s, &fake_i, 0);
- }
- else if (string[i + 1] == '#')
- {
- i += 2;
- event = current_line;
- }
- else
- {
- int quoted_search_delimiter = 0;
-
- /* If the character before this `!' is a double or single
- quote, then this expansion takes place inside of the
- quoted string. If we have to search for some text ("!foo"),
- allow the delimiter to end the search string. */
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- int c, l;
- l = _rl_find_prev_mbchar (string, i, MB_FIND_ANY);
- c = string[l];
- /* XXX - original patch had i - 1 ??? If i == 0 it would fail. */
- if (i && (c == '\'' || c == '"'))
- quoted_search_delimiter = c;
- }
- else
-#endif /* HANDLE_MULTIBYTE */
- if (i && (string[i - 1] == '\'' || string[i - 1] == '"'))
- quoted_search_delimiter = string[i - 1];
-
- event = get_history_event (string, &i, quoted_search_delimiter);
- }
-
- if (event == 0)
- {
- *ret_string = hist_error (string, start, i, EVENT_NOT_FOUND);
- free (result);
- return (-1);
- }
-
- /* If a word specifier is found, then do what that requires. */
- starting_index = i;
- word_spec = get_history_word_specifier (string, event, &i);
-
- /* There is no such thing as a `malformed word specifier'. However,
- it is possible for a specifier that has no match. In that case,
- we complain. */
- if (word_spec == (char *)&error_pointer)
- {
- *ret_string = hist_error (string, starting_index, i, BAD_WORD_SPEC);
- free (result);
- return (-1);
- }
-
- /* If no word specifier, than the thing of interest was the event. */
- temp = word_spec ? savestring (word_spec) : savestring (event);
- FREE (word_spec);
-
- /* Perhaps there are other modifiers involved. Do what they say. */
- want_quotes = substitute_globally = print_only = 0;
- starting_index = i;
-
- while (string[i] == ':')
- {
- c = string[i + 1];
-
- if (c == 'g')
- {
- substitute_globally = 1;
- i++;
- c = string[i + 1];
- }
-
- switch (c)
- {
- default:
- *ret_string = hist_error (string, i+1, i+2, BAD_MODIFIER);
- free (result);
- free (temp);
- return -1;
-
- case 'q':
- want_quotes = 'q';
- break;
-
- case 'x':
- want_quotes = 'x';
- break;
-
- /* :p means make this the last executed line. So we
- return an error state after adding this line to the
- history. */
- case 'p':
- print_only++;
- break;
-
- /* :t discards all but the last part of the pathname. */
- case 't':
- tstr = strrchr (temp, '/');
- if (tstr)
- {
- tstr++;
- t = savestring (tstr);
- free (temp);
- temp = t;
- }
- break;
-
- /* :h discards the last part of a pathname. */
- case 'h':
- tstr = strrchr (temp, '/');
- if (tstr)
- *tstr = '\0';
- break;
-
- /* :r discards the suffix. */
- case 'r':
- tstr = strrchr (temp, '.');
- if (tstr)
- *tstr = '\0';
- break;
-
- /* :e discards everything but the suffix. */
- case 'e':
- tstr = strrchr (temp, '.');
- if (tstr)
- {
- t = savestring (tstr);
- free (temp);
- temp = t;
- }
- break;
-
- /* :s/this/that substitutes `that' for the first
- occurrence of `this'. :gs/this/that substitutes `that'
- for each occurrence of `this'. :& repeats the last
- substitution. :g& repeats the last substitution
- globally. */
-
- case '&':
- case 's':
- {
- char *new_event;
- int delimiter, failed, si, l_temp;
-
- if (c == 's')
- {
- if (i + 2 < (int)strlen (string))
- {
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- _rl_adjust_point (string, i + 2, &ps);
- if (_rl_get_char_len (string + i + 2, &ps) > 1)
- delimiter = 0;
- else
- delimiter = string[i + 2];
- }
- else
-#endif /* HANDLE_MULTIBYTE */
- delimiter = string[i + 2];
- }
- else
- break; /* no search delimiter */
-
- i += 3;
-
- t = get_subst_pattern (string, &i, delimiter, 0, &subst_lhs_len);
- /* An empty substitution lhs with no previous substitution
- uses the last search string as the lhs. */
- if (t)
- {
- FREE (subst_lhs);
- subst_lhs = t;
- }
- else if (!subst_lhs)
- {
- if (search_string && *search_string)
- {
- subst_lhs = savestring (search_string);
- subst_lhs_len = strlen (subst_lhs);
- }
- else
- {
- subst_lhs = (char *) NULL;
- subst_lhs_len = 0;
- }
- }
-
- FREE (subst_rhs);
- subst_rhs = get_subst_pattern (string, &i, delimiter, 1, &subst_rhs_len);
-
- /* If `&' appears in the rhs, it's supposed to be replaced
- with the lhs. */
- if (member ('&', subst_rhs))
- postproc_subst_rhs ();
- }
- else
- i += 2;
-
- /* If there is no lhs, the substitution can't succeed. */
- if (subst_lhs_len == 0)
- {
- *ret_string = hist_error (string, starting_index, i, NO_PREV_SUBST);
- free (result);
- free (temp);
- return -1;
- }
-
- l_temp = strlen (temp);
- /* Ignore impossible cases. */
- if (subst_lhs_len > l_temp)
- {
- *ret_string = hist_error (string, starting_index, i, SUBST_FAILED);
- free (result);
- free (temp);
- return (-1);
- }
-
- /* Find the first occurrence of THIS in TEMP. */
- si = 0;
- for (failed = 1; (si + subst_lhs_len) <= l_temp; si++)
- if (STREQN (temp+si, subst_lhs, subst_lhs_len))
- {
- int len = subst_rhs_len - subst_lhs_len + l_temp;
- new_event = (char *)xmalloc (1 + len);
- strncpy (new_event, temp, si);
- strncpy (new_event + si, subst_rhs, subst_rhs_len);
- strncpy (new_event + si + subst_rhs_len,
- temp + si + subst_lhs_len,
- l_temp - (si + subst_lhs_len));
- new_event[len] = '\0';
- free (temp);
- temp = new_event;
-
- failed = 0;
-
- if (substitute_globally)
- {
- si += subst_rhs_len;
- l_temp = strlen (temp);
- substitute_globally++;
- continue;
- }
- else
- break;
- }
-
- if (substitute_globally > 1)
- {
- substitute_globally = 0;
- continue; /* don't want to increment i */
- }
-
- if (failed == 0)
- continue; /* don't want to increment i */
-
- *ret_string = hist_error (string, starting_index, i, SUBST_FAILED);
- free (result);
- free (temp);
- return (-1);
- }
- }
- i += 2;
- }
- /* Done with modfiers. */
- /* Believe it or not, we have to back the pointer up by one. */
- --i;
-
- if (want_quotes)
- {
- char *x;
-
- if (want_quotes == 'q')
- x = sh_single_quote (temp);
- else if (want_quotes == 'x')
- x = quote_breaks (temp);
- else
- x = savestring (temp);
-
- free (temp);
- temp = x;
- }
-
- n = strlen (temp);
- if (n >= result_len)
- result = (char *)xrealloc (result, n + 2);
- strcpy (result, temp);
- free (temp);
-
- *end_index_ptr = i;
- *ret_string = result;
- return (print_only);
-}
-
-/* Expand the string STRING, placing the result into OUTPUT, a pointer
- to a string. Returns:
-
- -1) If there was an error in expansion.
- 0) If no expansions took place (or, if the only change in
- the text was the de-slashifying of the history expansion
- character)
- 1) If expansions did take place
- 2) If the `p' modifier was given and the caller should print the result
-
- If an error ocurred in expansion, then OUTPUT contains a descriptive
- error message. */
-
-#define ADD_STRING(s) \
- do \
- { \
- int sl = strlen (s); \
- j += sl; \
- if (j >= result_len) \
- { \
- while (j >= result_len) \
- result_len += 128; \
- result = (char *)xrealloc (result, result_len); \
- } \
- strcpy (result + j - sl, s); \
- } \
- while (0)
-
-#define ADD_CHAR(c) \
- do \
- { \
- if (j >= result_len - 1) \
- result = (char *)xrealloc (result, result_len += 64); \
- result[j++] = c; \
- result[j] = '\0'; \
- } \
- while (0)
-
-int
-history_expand (hstring, output)
- char *hstring;
- char **output;
-{
- register int j;
- int i, r, l, passc, cc, modified, eindex, only_printing;
- char *string;
-
- /* The output string, and its length. */
- int result_len;
- char *result;
-
-#if defined (HANDLE_MULTIBYTE)
- char mb[MB_LEN_MAX];
- mbstate_t ps;
-#endif
-
- /* Used when adding the string. */
- char *temp;
-
- if (output == 0)
- return 0;
-
- /* Setting the history expansion character to 0 inhibits all
- history expansion. */
- if (history_expansion_char == 0)
- {
- *output = savestring (hstring);
- return (0);
- }
-
- /* Prepare the buffer for printing error messages. */
- result = (char *)xmalloc (result_len = 256);
- result[0] = '\0';
-
- only_printing = modified = 0;
- l = strlen (hstring);
-
- /* Grovel the string. Only backslash and single quotes can quote the
- history escape character. We also handle arg specifiers. */
-
- /* Before we grovel forever, see if the history_expansion_char appears
- anywhere within the text. */
-
- /* The quick substitution character is a history expansion all right. That
- is to say, "^this^that^" is equivalent to "!!:s^this^that^", and in fact,
- that is the substitution that we do. */
- if (hstring[0] == history_subst_char)
- {
- string = (char *)xmalloc (l + 5);
-
- string[0] = string[1] = history_expansion_char;
- string[2] = ':';
- string[3] = 's';
- strcpy (string + 4, hstring);
- l += 4;
- }
- else
- {
-#if defined (HANDLE_MULTIBYTE)
- memset (&ps, 0, sizeof (mbstate_t));
-#endif
-
- string = hstring;
- /* If not quick substitution, still maybe have to do expansion. */
-
- /* `!' followed by one of the characters in history_no_expand_chars
- is NOT an expansion. */
- for (i = 0; string[i]; i++)
- {
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- int v;
- v = _rl_get_char_len (string + i, &ps);
- if (v > 1)
- {
- i += v - 1;
- continue;
- }
- }
-#endif /* HANDLE_MULTIBYTE */
-
- cc = string[i + 1];
- /* The history_comment_char, if set, appearing at the beginning
- of a word signifies that the rest of the line should not have
- history expansion performed on it.
- Skip the rest of the line and break out of the loop. */
- if (history_comment_char && string[i] == history_comment_char &&
- (i == 0 || member (string[i - 1], history_word_delimiters)))
- {
- while (string[i])
- i++;
- break;
- }
- else if (string[i] == history_expansion_char)
- {
- if (!cc || member (cc, history_no_expand_chars))
- continue;
- /* If the calling application has set
- history_inhibit_expansion_function to a function that checks
- for special cases that should not be history expanded,
- call the function and skip the expansion if it returns a
- non-zero value. */
- else if (history_inhibit_expansion_function &&
- (*history_inhibit_expansion_function) (string, i))
- continue;
- else
- break;
- }
- /* XXX - at some point, might want to extend this to handle
- double quotes as well. */
- else if (history_quotes_inhibit_expansion && string[i] == '\'')
- {
- /* If this is bash, single quotes inhibit history expansion. */
- i++;
- hist_string_extract_single_quoted (string, &i);
- }
- else if (history_quotes_inhibit_expansion && string[i] == '\\')
- {
- /* If this is bash, allow backslashes to quote single
- quotes and the history expansion character. */
- if (cc == '\'' || cc == history_expansion_char)
- i++;
- }
- }
-
- if (string[i] != history_expansion_char)
- {
- free (result);
- *output = savestring (string);
- return (0);
- }
- }
-
- /* Extract and perform the substitution. */
- for (passc = i = j = 0; i < l; i++)
- {
- int tchar = string[i];
-
- if (passc)
- {
- passc = 0;
- ADD_CHAR (tchar);
- continue;
- }
-
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- int k, c;
-
- c = tchar;
- memset (mb, 0, sizeof (mb));
- for (k = 0; k < MB_LEN_MAX; k++)
- {
- mb[k] = (char)c;
- memset (&ps, 0, sizeof (mbstate_t));
- if (_rl_get_char_len (mb, &ps) == -2)
- c = string[++i];
- else
- break;
- }
- if (strlen (mb) > 1)
- {
- ADD_STRING (mb);
- break;
- }
- }
-#endif /* HANDLE_MULTIBYTE */
-
- if (tchar == history_expansion_char)
- tchar = -3;
- else if (tchar == history_comment_char)
- tchar = -2;
-
- switch (tchar)
- {
- default:
- ADD_CHAR (string[i]);
- break;
-
- case '\\':
- passc++;
- ADD_CHAR (tchar);
- break;
-
- case '\'':
- {
- /* If history_quotes_inhibit_expansion is set, single quotes
- inhibit history expansion. */
- if (history_quotes_inhibit_expansion)
- {
- int quote, slen;
-
- quote = i++;
- hist_string_extract_single_quoted (string, &i);
-
- slen = i - quote + 2;
- temp = (char *)xmalloc (slen);
- strncpy (temp, string + quote, slen);
- temp[slen - 1] = '\0';
- ADD_STRING (temp);
- free (temp);
- }
- else
- ADD_CHAR (string[i]);
- break;
- }
-
- case -2: /* history_comment_char */
- if (i == 0 || member (string[i - 1], history_word_delimiters))
- {
- temp = (char *)xmalloc (l - i + 1);
- strcpy (temp, string + i);
- ADD_STRING (temp);
- free (temp);
- i = l;
- }
- else
- ADD_CHAR (string[i]);
- break;
-
- case -3: /* history_expansion_char */
- cc = string[i + 1];
-
- /* If the history_expansion_char is followed by one of the
- characters in history_no_expand_chars, then it is not a
- candidate for expansion of any kind. */
- if (member (cc, history_no_expand_chars))
- {
- ADD_CHAR (string[i]);
- break;
- }
-
-#if defined (NO_BANG_HASH_MODIFIERS)
- /* There is something that is listed as a `word specifier' in csh
- documentation which means `the expanded text to this point'.
- That is not a word specifier, it is an event specifier. If we
- don't want to allow modifiers with `!#', just stick the current
- output line in again. */
- if (cc == '#')
- {
- if (result)
- {
- temp = (char *)xmalloc (1 + strlen (result));
- strcpy (temp, result);
- ADD_STRING (temp);
- free (temp);
- }
- i++;
- break;
- }
-#endif
-
- r = history_expand_internal (string, i, &eindex, &temp, result);
- if (r < 0)
- {
- *output = temp;
- free (result);
- if (string != hstring)
- free (string);
- return -1;
- }
- else
- {
- if (temp)
- {
- modified++;
- if (*temp)
- ADD_STRING (temp);
- free (temp);
- }
- only_printing = r == 1;
- i = eindex;
- }
- break;
- }
- }
-
- *output = result;
- if (string != hstring)
- free (string);
-
- if (only_printing)
- {
- add_history (result);
- return (2);
- }
-
- return (modified != 0);
-}
-
-/* Return a consed string which is the word specified in SPEC, and found
- in FROM. NULL is returned if there is no spec. The address of
- ERROR_POINTER is returned if the word specified cannot be found.
- CALLER_INDEX is the offset in SPEC to start looking; it is updated
- to point to just after the last character parsed. */
-static char *
-get_history_word_specifier (spec, from, caller_index)
- char *spec, *from;
- int *caller_index;
-{
- register int i = *caller_index;
- int first, last;
- int expecting_word_spec = 0;
- char *result;
-
- /* The range of words to return doesn't exist yet. */
- first = last = 0;
- result = (char *)NULL;
-
- /* If we found a colon, then this *must* be a word specification. If
- it isn't, then it is an error. */
- if (spec[i] == ':')
- {
- i++;
- expecting_word_spec++;
- }
-
- /* Handle special cases first. */
-
- /* `%' is the word last searched for. */
- if (spec[i] == '%')
- {
- *caller_index = i + 1;
- return (search_match ? savestring (search_match) : savestring (""));
- }
-
- /* `*' matches all of the arguments, but not the command. */
- if (spec[i] == '*')
- {
- *caller_index = i + 1;
- result = history_arg_extract (1, '$', from);
- return (result ? result : savestring (""));
- }
-
- /* `$' is last arg. */
- if (spec[i] == '$')
- {
- *caller_index = i + 1;
- return (history_arg_extract ('$', '$', from));
- }
-
- /* Try to get FIRST and LAST figured out. */
-
- if (spec[i] == '-')
- first = 0;
- else if (spec[i] == '^')
- first = 1;
- else if (_rl_digit_p (spec[i]) && expecting_word_spec)
- {
- for (first = 0; _rl_digit_p (spec[i]); i++)
- first = (first * 10) + _rl_digit_value (spec[i]);
- }
- else
- return ((char *)NULL); /* no valid `first' for word specifier */
-
- if (spec[i] == '^' || spec[i] == '*')
- {
- last = (spec[i] == '^') ? 1 : '$'; /* x* abbreviates x-$ */
- i++;
- }
- else if (spec[i] != '-')
- last = first;
- else
- {
- i++;
-
- if (_rl_digit_p (spec[i]))
- {
- for (last = 0; _rl_digit_p (spec[i]); i++)
- last = (last * 10) + _rl_digit_value (spec[i]);
- }
- else if (spec[i] == '$')
- {
- i++;
- last = '$';
- }
-#if 0
- else if (!spec[i] || spec[i] == ':')
- /* check against `:' because there could be a modifier separator */
-#else
- else
- /* csh seems to allow anything to terminate the word spec here,
- leaving it as an abbreviation. */
-#endif
- last = -1; /* x- abbreviates x-$ omitting word `$' */
- }
-
- *caller_index = i;
-
- if (last >= first || last == '$' || last < 0)
- result = history_arg_extract (first, last, from);
-
- return (result ? result : (char *)&error_pointer);
-}
-
-/* Extract the args specified, starting at FIRST, and ending at LAST.
- The args are taken from STRING. If either FIRST or LAST is < 0,
- then make that arg count from the right (subtract from the number of
- tokens, so that FIRST = -1 means the next to last token on the line).
- If LAST is `$' the last arg from STRING is used. */
-char *
-history_arg_extract (first, last, string)
- int first, last;
- const char *string;
-{
- register int i, len;
- char *result;
- int size, offset;
- char **list;
-
- /* XXX - think about making history_tokenize return a struct array,
- each struct in array being a string and a length to avoid the
- calls to strlen below. */
- if ((list = history_tokenize (string)) == NULL)
- return ((char *)NULL);
-
- for (len = 0; list[len]; len++)
- ;
-
- if (last < 0)
- last = len + last - 1;
-
- if (first < 0)
- first = len + first - 1;
-
- if (last == '$')
- last = len - 1;
-
- if (first == '$')
- first = len - 1;
-
- last++;
-
- if (first >= len || last > len || first < 0 || last < 0 || first > last)
- result = ((char *)NULL);
- else
- {
- for (size = 0, i = first; i < last; i++)
- size += strlen (list[i]) + 1;
- result = (char *)xmalloc (size + 1);
- result[0] = '\0';
-
- for (i = first, offset = 0; i < last; i++)
- {
- strcpy (result + offset, list[i]);
- offset += strlen (list[i]);
- if (i + 1 < last)
- {
- result[offset++] = ' ';
- result[offset] = 0;
- }
- }
- }
-
- for (i = 0; i < len; i++)
- free (list[i]);
- free (list);
-
- return (result);
-}
-
-#define slashify_in_quotes "\\`\"$"
-
-/* Parse STRING into tokens and return an array of strings. If WIND is
- not -1 and INDP is not null, we also want the word surrounding index
- WIND. The position in the returned array of strings is returned in
- *INDP. */
-static char **
-history_tokenize_internal (string, wind, indp)
- const char *string;
- int wind, *indp;
-{
- char **result;
- register int i, start, result_index, size;
- int len, delimiter;
-
- /* If we're searching for a string that's not part of a word (e.g., " "),
- make sure we set *INDP to a reasonable value. */
- if (indp && wind != -1)
- *indp = -1;
-
- /* Get a token, and stuff it into RESULT. The tokens are split
- exactly where the shell would split them. */
- for (i = result_index = size = 0, result = (char **)NULL; string[i]; )
- {
- delimiter = 0;
-
- /* Skip leading whitespace. */
- for (; string[i] && whitespace (string[i]); i++)
- ;
- if (string[i] == 0 || string[i] == history_comment_char)
- return (result);
-
- start = i;
-
- if (member (string[i], "()\n"))
- {
- i++;
- goto got_token;
- }
-
- if (member (string[i], "<>;&|$"))
- {
- int peek = string[i + 1];
-
- if (peek == string[i] && peek != '$')
- {
- if (peek == '<' && string[i + 2] == '-')
- i++;
- i += 2;
- goto got_token;
- }
- else
- {
- if ((peek == '&' && (string[i] == '>' || string[i] == '<')) ||
- ((peek == '>') && (string[i] == '&')) ||
- ((peek == '(') && (string[i] == '$')))
- {
- i += 2;
- goto got_token;
- }
- }
- if (string[i] != '$')
- {
- i++;
- goto got_token;
- }
- }
-
- /* Get word from string + i; */
-
- if (member (string[i], HISTORY_QUOTE_CHARACTERS))
- delimiter = string[i++];
-
- for (; string[i]; i++)
- {
- if (string[i] == '\\' && string[i + 1] == '\n')
- {
- i++;
- continue;
- }
-
- if (string[i] == '\\' && delimiter != '\'' &&
- (delimiter != '"' || member (string[i], slashify_in_quotes)))
- {
- i++;
- continue;
- }
-
- if (delimiter && string[i] == delimiter)
- {
- delimiter = 0;
- continue;
- }
-
- if (!delimiter && (member (string[i], history_word_delimiters)))
- break;
-
- if (!delimiter && member (string[i], HISTORY_QUOTE_CHARACTERS))
- delimiter = string[i];
- }
-
- got_token:
-
- /* If we are looking for the word in which the character at a
- particular index falls, remember it. */
- if (indp && wind != -1 && wind >= start && wind < i)
- *indp = result_index;
-
- len = i - start;
- if (result_index + 2 >= size)
- result = (char **)xrealloc (result, ((size += 10) * sizeof (char *)));
- result[result_index] = (char *)xmalloc (1 + len);
- strncpy (result[result_index], string + start, len);
- result[result_index][len] = '\0';
- result[++result_index] = (char *)NULL;
- }
-
- return (result);
-}
-
-/* Return an array of tokens, much as the shell might. The tokens are
- parsed out of STRING. */
-char **
-history_tokenize (string)
- const char *string;
-{
- return (history_tokenize_internal (string, -1, (int *)NULL));
-}
-
-/* Find and return the word which contains the character at index IND
- in the history line LINE. Used to save the word matched by the
- last history !?string? search. */
-static char *
-history_find_word (line, ind)
- char *line;
- int ind;
-{
- char **words, *s;
- int i, wind;
-
- words = history_tokenize_internal (line, ind, &wind);
- if (wind == -1 || words == 0)
- return ((char *)NULL);
- s = words[wind];
- for (i = 0; i < wind; i++)
- free (words[i]);
- for (i = wind + 1; words[i]; i++)
- free (words[i]);
- free (words);
- return s;
-}
diff --git a/readline-4.3.orig/histfile.c b/readline-4.3.orig/histfile.c
deleted file mode 100644
index 60a9125..0000000
--- a/readline-4.3.orig/histfile.c
+++ /dev/null
@@ -1,479 +0,0 @@
-/* histfile.c - functions to manipulate the history file. */
-
-/* Copyright (C) 1989, 1992 Free Software Foundation, Inc.
-
- This file contains the GNU History Library (the Library), a set of
- routines for managing the text of previously typed lines.
-
- The Library is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- The Library is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-/* The goal is to make the implementation transparent, so that you
- don't have to know what data types are used, just what functions
- you can call. I think I have done that. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <stdio.h>
-
-#include <sys/types.h>
-#ifndef _MINIX
-# include <sys/file.h>
-#endif
-#include "posixstat.h"
-#include <fcntl.h>
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#if defined (HAVE_UNISTD_H)
-# include <unistd.h>
-#endif
-
-#if defined (__EMX__) || defined (__CYGWIN__)
-# undef HAVE_MMAP
-#endif
-
-#ifdef HAVE_MMAP
-# include <sys/mman.h>
-
-# ifdef MAP_FILE
-# define MAP_RFLAGS (MAP_FILE|MAP_PRIVATE)
-# define MAP_WFLAGS (MAP_FILE|MAP_SHARED)
-# else
-# define MAP_RFLAGS MAP_PRIVATE
-# define MAP_WFLAGS MAP_SHARED
-# endif
-
-# ifndef MAP_FAILED
-# define MAP_FAILED ((void *)-1)
-# endif
-
-#endif /* HAVE_MMAP */
-
-/* If we're compiling for __EMX__ (OS/2) or __CYGWIN__ (cygwin32 environment
- on win 95/98/nt), we want to open files with O_BINARY mode so that there
- is no \n -> \r\n conversion performed. On other systems, we don't want to
- mess around with O_BINARY at all, so we ensure that it's defined to 0. */
-#if defined (__EMX__) || defined (__CYGWIN__)
-# ifndef O_BINARY
-# define O_BINARY 0
-# endif
-#else /* !__EMX__ && !__CYGWIN__ */
-# undef O_BINARY
-# define O_BINARY 0
-#endif /* !__EMX__ && !__CYGWIN__ */
-
-#include <errno.h>
-#if !defined (errno)
-extern int errno;
-#endif /* !errno */
-
-#include "history.h"
-#include "histlib.h"
-
-#include "rlshell.h"
-#include "xmalloc.h"
-
-/* Return the string that should be used in the place of this
- filename. This only matters when you don't specify the
- filename to read_history (), or write_history (). */
-static char *
-history_filename (filename)
- const char *filename;
-{
- char *return_val;
- const char *home;
- int home_len;
-
- return_val = filename ? savestring (filename) : (char *)NULL;
-
- if (return_val)
- return (return_val);
-
- home = sh_get_env_value ("HOME");
-
- if (home == 0)
- {
- home = ".";
- home_len = 1;
- }
- else
- home_len = strlen (home);
-
- return_val = (char *)xmalloc (2 + home_len + 8); /* strlen(".history") == 8 */
- strcpy (return_val, home);
- return_val[home_len] = '/';
-#if defined (__MSDOS__)
- strcpy (return_val + home_len + 1, "_history");
-#else
- strcpy (return_val + home_len + 1, ".history");
-#endif
-
- return (return_val);
-}
-
-/* Add the contents of FILENAME to the history list, a line at a time.
- If FILENAME is NULL, then read from ~/.history. Returns 0 if
- successful, or errno if not. */
-int
-read_history (filename)
- const char *filename;
-{
- return (read_history_range (filename, 0, -1));
-}
-
-/* Read a range of lines from FILENAME, adding them to the history list.
- Start reading at the FROM'th line and end at the TO'th. If FROM
- is zero, start at the beginning. If TO is less than FROM, read
- until the end of the file. If FILENAME is NULL, then read from
- ~/.history. Returns 0 if successful, or errno if not. */
-int
-read_history_range (filename, from, to)
- const char *filename;
- int from, to;
-{
- register char *line_start, *line_end;
- char *input, *buffer, *bufend;
- int file, current_line, chars_read;
- struct stat finfo;
- size_t file_size;
-
- buffer = (char *)NULL;
- input = history_filename (filename);
- file = open (input, O_RDONLY|O_BINARY, 0666);
-
- if ((file < 0) || (fstat (file, &finfo) == -1))
- goto error_and_exit;
-
- file_size = (size_t)finfo.st_size;
-
- /* check for overflow on very large files */
- if (file_size != finfo.st_size || file_size + 1 < file_size)
- {
-#if defined (EFBIG)
- errno = EFBIG;
-#elif defined (EOVERFLOW)
- errno = EOVERFLOW;
-#endif
- goto error_and_exit;
- }
-
-#ifdef HAVE_MMAP
- /* We map read/write and private so we can change newlines to NULs without
- affecting the underlying object. */
- buffer = (char *)mmap (0, file_size, PROT_READ|PROT_WRITE, MAP_RFLAGS, file, 0);
- if ((void *)buffer == MAP_FAILED)
- goto error_and_exit;
- chars_read = file_size;
-#else
- buffer = (char *)malloc (file_size + 1);
- if (buffer == 0)
- goto error_and_exit;
-
- chars_read = read (file, buffer, file_size);
-#endif
- if (chars_read < 0)
- {
- error_and_exit:
- chars_read = errno;
- if (file >= 0)
- close (file);
-
- FREE (input);
-#ifndef HAVE_MMAP
- FREE (buffer);
-#endif
-
- return (chars_read);
- }
-
- close (file);
-
- /* Set TO to larger than end of file if negative. */
- if (to < 0)
- to = chars_read;
-
- /* Start at beginning of file, work to end. */
- bufend = buffer + chars_read;
- current_line = 0;
-
- /* Skip lines until we are at FROM. */
- for (line_start = line_end = buffer; line_end < bufend && current_line < from; line_end++)
- if (*line_end == '\n')
- {
- current_line++;
- line_start = line_end + 1;
- }
-
- /* If there are lines left to gobble, then gobble them now. */
- for (line_end = line_start; line_end < bufend; line_end++)
- if (*line_end == '\n')
- {
- *line_end = '\0';
-
- if (*line_start)
- add_history (line_start);
-
- current_line++;
-
- if (current_line >= to)
- break;
-
- line_start = line_end + 1;
- }
-
- FREE (input);
-#ifndef HAVE_MMAP
- FREE (buffer);
-#else
- munmap (buffer, file_size);
-#endif
-
- return (0);
-}
-
-/* Truncate the history file FNAME, leaving only LINES trailing lines.
- If FNAME is NULL, then use ~/.history. Returns 0 on success, errno
- on failure. */
-int
-history_truncate_file (fname, lines)
- const char *fname;
- int lines;
-{
- char *buffer, *filename, *bp;
- int file, chars_read, rv;
- struct stat finfo;
- size_t file_size;
-
- buffer = (char *)NULL;
- filename = history_filename (fname);
- file = open (filename, O_RDONLY|O_BINARY, 0666);
- rv = 0;
-
- /* Don't try to truncate non-regular files. */
- if (file == -1 || fstat (file, &finfo) == -1)
- {
- rv = errno;
- if (file != -1)
- close (file);
- goto truncate_exit;
- }
-
- if (S_ISREG (finfo.st_mode) == 0)
- {
- close (file);
-#ifdef EFTYPE
- rv = EFTYPE;
-#else
- rv = EINVAL;
-#endif
- goto truncate_exit;
- }
-
- file_size = (size_t)finfo.st_size;
-
- /* check for overflow on very large files */
- if (file_size != finfo.st_size || file_size + 1 < file_size)
- {
- close (file);
-#if defined (EFBIG)
- rv = errno = EFBIG;
-#elif defined (EOVERFLOW)
- rv = errno = EOVERFLOW;
-#else
- rv = errno = EINVAL;
-#endif
- goto truncate_exit;
- }
-
- buffer = (char *)malloc (file_size + 1);
- if (buffer == 0)
- {
- close (file);
- goto truncate_exit;
- }
-
- chars_read = read (file, buffer, file_size);
- close (file);
-
- if (chars_read <= 0)
- {
- rv = (chars_read < 0) ? errno : 0;
- goto truncate_exit;
- }
-
- /* Count backwards from the end of buffer until we have passed
- LINES lines. */
- for (bp = buffer + chars_read - 1; lines && bp > buffer; bp--)
- {
- if (*bp == '\n')
- lines--;
- }
-
- /* If this is the first line, then the file contains exactly the
- number of lines we want to truncate to, so we don't need to do
- anything. It's the first line if we don't find a newline between
- the current value of i and 0. Otherwise, write from the start of
- this line until the end of the buffer. */
- for ( ; bp > buffer; bp--)
- if (*bp == '\n')
- {
- bp++;
- break;
- }
-
- /* Write only if there are more lines in the file than we want to
- truncate to. */
- if (bp > buffer && ((file = open (filename, O_WRONLY|O_TRUNC|O_BINARY, 0600)) != -1))
- {
- write (file, bp, chars_read - (bp - buffer));
-
-#if defined (__BEOS__)
- /* BeOS ignores O_TRUNC. */
- ftruncate (file, chars_read - (bp - buffer));
-#endif
-
- close (file);
- }
-
- truncate_exit:
-
- FREE (buffer);
-
- free (filename);
- return rv;
-}
-
-/* Workhorse function for writing history. Writes NELEMENT entries
- from the history list to FILENAME. OVERWRITE is non-zero if you
- wish to replace FILENAME with the entries. */
-static int
-history_do_write (filename, nelements, overwrite)
- const char *filename;
- int nelements, overwrite;
-{
- register int i;
- char *output;
- int file, mode, rv;
- size_t cursize;
-
-#ifdef HAVE_MMAP
- mode = overwrite ? O_RDWR|O_CREAT|O_TRUNC|O_BINARY : O_RDWR|O_APPEND|O_BINARY;
-#else
- mode = overwrite ? O_WRONLY|O_CREAT|O_TRUNC|O_BINARY : O_WRONLY|O_APPEND|O_BINARY;
-#endif
- output = history_filename (filename);
- rv = 0;
-
- if ((file = open (output, mode, 0600)) == -1)
- {
- FREE (output);
- return (errno);
- }
-
-#ifdef HAVE_MMAP
- cursize = overwrite ? 0 : lseek (file, 0, SEEK_END);
-#endif
-
- if (nelements > history_length)
- nelements = history_length;
-
- /* Build a buffer of all the lines to write, and write them in one syscall.
- Suggested by Peter Ho (peter@robosts.oxford.ac.uk). */
- {
- HIST_ENTRY **the_history; /* local */
- register int j;
- int buffer_size;
- char *buffer;
-
- the_history = history_list ();
- /* Calculate the total number of bytes to write. */
- for (buffer_size = 0, i = history_length - nelements; i < history_length; i++)
- buffer_size += 1 + strlen (the_history[i]->line);
-
- /* Allocate the buffer, and fill it. */
-#ifdef HAVE_MMAP
- if (ftruncate (file, buffer_size+cursize) == -1)
- goto mmap_error;
- buffer = (char *)mmap (0, buffer_size, PROT_READ|PROT_WRITE, MAP_WFLAGS, file, cursize);
- if ((void *)buffer == MAP_FAILED)
- {
-mmap_error:
- rv = errno;
- FREE (output);
- close (file);
- return rv;
- }
-#else
- buffer = (char *)malloc (buffer_size);
- if (buffer == 0)
- {
- rv = errno;
- FREE (output);
- close (file);
- return rv;
- }
-#endif
-
- for (j = 0, i = history_length - nelements; i < history_length; i++)
- {
- strcpy (buffer + j, the_history[i]->line);
- j += strlen (the_history[i]->line);
- buffer[j++] = '\n';
- }
-
-#ifdef HAVE_MMAP
- if (msync (buffer, buffer_size, 0) != 0 || munmap (buffer, buffer_size) != 0)
- rv = errno;
-#else
- if (write (file, buffer, buffer_size) < 0)
- rv = errno;
- free (buffer);
-#endif
- }
-
- close (file);
-
- FREE (output);
-
- return (rv);
-}
-
-/* Append NELEMENT entries to FILENAME. The entries appended are from
- the end of the list minus NELEMENTs up to the end of the list. */
-int
-append_history (nelements, filename)
- int nelements;
- const char *filename;
-{
- return (history_do_write (filename, nelements, HISTORY_APPEND));
-}
-
-/* Overwrite FILENAME with the current history. If FILENAME is NULL,
- then write the history list to ~/.history. Values returned
- are as in read_history ().*/
-int
-write_history (filename)
- const char *filename;
-{
- return (history_do_write (filename, history_length, HISTORY_OVERWRITE));
-}
diff --git a/readline-4.3.orig/histlib.h b/readline-4.3.orig/histlib.h
deleted file mode 100644
index c39af71..0000000
--- a/readline-4.3.orig/histlib.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/* histlib.h -- internal definitions for the history library. */
-/* Copyright (C) 1989, 1992 Free Software Foundation, Inc.
-
- This file contains the GNU History Library (the Library), a set of
- routines for managing the text of previously typed lines.
-
- The Library is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- The Library is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if !defined (_HISTLIB_H_)
-#define _HISTLIB_H_
-
-#if defined (HAVE_STRING_H)
-# include <string.h>
-#else
-# include <strings.h>
-#endif /* !HAVE_STRING_H */
-
-#if !defined (STREQ)
-#define STREQ(a, b) (((a)[0] == (b)[0]) && (strcmp ((a), (b)) == 0))
-#define STREQN(a, b, n) (((n) == 0) ? (1) \
- : ((a)[0] == (b)[0]) && (strncmp ((a), (b), (n)) == 0))
-#endif
-
-#ifndef savestring
-#define savestring(x) strcpy (xmalloc (1 + strlen (x)), (x))
-#endif
-
-#ifndef whitespace
-#define whitespace(c) (((c) == ' ') || ((c) == '\t'))
-#endif
-
-#ifndef _rl_digit_p
-#define _rl_digit_p(c) ((c) >= '0' && (c) <= '9')
-#endif
-
-#ifndef _rl_digit_value
-#define _rl_digit_value(c) ((c) - '0')
-#endif
-
-#ifndef member
-# ifndef strchr
-extern char *strchr ();
-# endif
-#define member(c, s) ((c) ? ((char *)strchr ((s), (c)) != (char *)NULL) : 0)
-#endif
-
-#ifndef FREE
-# define FREE(x) if (x) free (x)
-#endif
-
-/* Possible history errors passed to hist_error. */
-#define EVENT_NOT_FOUND 0
-#define BAD_WORD_SPEC 1
-#define SUBST_FAILED 2
-#define BAD_MODIFIER 3
-#define NO_PREV_SUBST 4
-
-/* Possible definitions for history starting point specification. */
-#define ANCHORED_SEARCH 1
-#define NON_ANCHORED_SEARCH 0
-
-/* Possible definitions for what style of writing the history file we want. */
-#define HISTORY_APPEND 0
-#define HISTORY_OVERWRITE 1
-
-/* Some variable definitions shared across history source files. */
-extern int history_offset;
-
-#endif /* !_HISTLIB_H_ */
diff --git a/readline-4.3.orig/history.c b/readline-4.3.orig/history.c
deleted file mode 100644
index 4242f33..0000000
--- a/readline-4.3.orig/history.c
+++ /dev/null
@@ -1,381 +0,0 @@
-/* History.c -- standalone history library */
-
-/* Copyright (C) 1989, 1992 Free Software Foundation, Inc.
-
- This file contains the GNU History Library (the Library), a set of
- routines for managing the text of previously typed lines.
-
- The Library is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- The Library is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-/* The goal is to make the implementation transparent, so that you
- don't have to know what data types are used, just what functions
- you can call. I think I have done that. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <stdio.h>
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#if defined (HAVE_UNISTD_H)
-# ifdef _MINIX
-# include <sys/types.h>
-# endif
-# include <unistd.h>
-#endif
-
-#include "history.h"
-#include "histlib.h"
-
-#include "xmalloc.h"
-
-/* The number of slots to increase the_history by. */
-#define DEFAULT_HISTORY_GROW_SIZE 50
-
-/* **************************************************************** */
-/* */
-/* History Functions */
-/* */
-/* **************************************************************** */
-
-/* An array of HIST_ENTRY. This is where we store the history. */
-static HIST_ENTRY **the_history = (HIST_ENTRY **)NULL;
-
-/* Non-zero means that we have enforced a limit on the amount of
- history that we save. */
-static int history_stifled;
-
-/* The current number of slots allocated to the input_history. */
-static int history_size;
-
-/* If HISTORY_STIFLED is non-zero, then this is the maximum number of
- entries to remember. */
-int history_max_entries;
-int max_input_history; /* backwards compatibility */
-
-/* The current location of the interactive history pointer. Just makes
- life easier for outside callers. */
-int history_offset;
-
-/* The number of strings currently stored in the history list. */
-int history_length;
-
-/* The logical `base' of the history array. It defaults to 1. */
-int history_base = 1;
-
-/* Return the current HISTORY_STATE of the history. */
-HISTORY_STATE *
-history_get_history_state ()
-{
- HISTORY_STATE *state;
-
- state = (HISTORY_STATE *)xmalloc (sizeof (HISTORY_STATE));
- state->entries = the_history;
- state->offset = history_offset;
- state->length = history_length;
- state->size = history_size;
- state->flags = 0;
- if (history_stifled)
- state->flags |= HS_STIFLED;
-
- return (state);
-}
-
-/* Set the state of the current history array to STATE. */
-void
-history_set_history_state (state)
- HISTORY_STATE *state;
-{
- the_history = state->entries;
- history_offset = state->offset;
- history_length = state->length;
- history_size = state->size;
- if (state->flags & HS_STIFLED)
- history_stifled = 1;
-}
-
-/* Begin a session in which the history functions might be used. This
- initializes interactive variables. */
-void
-using_history ()
-{
- history_offset = history_length;
-}
-
-/* Return the number of bytes that the primary history entries are using.
- This just adds up the lengths of the_history->lines. */
-int
-history_total_bytes ()
-{
- register int i, result;
-
- for (i = result = 0; the_history && the_history[i]; i++)
- result += strlen (the_history[i]->line);
-
- return (result);
-}
-
-/* Returns the magic number which says what history element we are
- looking at now. In this implementation, it returns history_offset. */
-int
-where_history ()
-{
- return (history_offset);
-}
-
-/* Make the current history item be the one at POS, an absolute index.
- Returns zero if POS is out of range, else non-zero. */
-int
-history_set_pos (pos)
- int pos;
-{
- if (pos > history_length || pos < 0 || !the_history)
- return (0);
- history_offset = pos;
- return (1);
-}
-
-/* Return the current history array. The caller has to be carefull, since this
- is the actual array of data, and could be bashed or made corrupt easily.
- The array is terminated with a NULL pointer. */
-HIST_ENTRY **
-history_list ()
-{
- return (the_history);
-}
-
-/* Return the history entry at the current position, as determined by
- history_offset. If there is no entry there, return a NULL pointer. */
-HIST_ENTRY *
-current_history ()
-{
- return ((history_offset == history_length) || the_history == 0)
- ? (HIST_ENTRY *)NULL
- : the_history[history_offset];
-}
-
-/* Back up history_offset to the previous history entry, and return
- a pointer to that entry. If there is no previous entry then return
- a NULL pointer. */
-HIST_ENTRY *
-previous_history ()
-{
- return history_offset ? the_history[--history_offset] : (HIST_ENTRY *)NULL;
-}
-
-/* Move history_offset forward to the next history entry, and return
- a pointer to that entry. If there is no next entry then return a
- NULL pointer. */
-HIST_ENTRY *
-next_history ()
-{
- return (history_offset == history_length) ? (HIST_ENTRY *)NULL : the_history[++history_offset];
-}
-
-/* Return the history entry which is logically at OFFSET in the history array.
- OFFSET is relative to history_base. */
-HIST_ENTRY *
-history_get (offset)
- int offset;
-{
- int local_index;
-
- local_index = offset - history_base;
- return (local_index >= history_length || local_index < 0 || !the_history)
- ? (HIST_ENTRY *)NULL
- : the_history[local_index];
-}
-
-/* Place STRING at the end of the history list. The data field
- is set to NULL. */
-void
-add_history (string)
- const char *string;
-{
- HIST_ENTRY *temp;
-
- if (history_stifled && (history_length == history_max_entries))
- {
- register int i;
-
- /* If the history is stifled, and history_length is zero,
- and it equals history_max_entries, we don't save items. */
- if (history_length == 0)
- return;
-
- /* If there is something in the slot, then remove it. */
- if (the_history[0])
- {
- free (the_history[0]->line);
- free (the_history[0]);
- }
-
- /* Copy the rest of the entries, moving down one slot. */
- for (i = 0; i < history_length; i++)
- the_history[i] = the_history[i + 1];
-
- history_base++;
- }
- else
- {
- if (history_size == 0)
- {
- history_size = DEFAULT_HISTORY_GROW_SIZE;
- the_history = (HIST_ENTRY **)xmalloc (history_size * sizeof (HIST_ENTRY *));
- history_length = 1;
- }
- else
- {
- if (history_length == (history_size - 1))
- {
- history_size += DEFAULT_HISTORY_GROW_SIZE;
- the_history = (HIST_ENTRY **)
- xrealloc (the_history, history_size * sizeof (HIST_ENTRY *));
- }
- history_length++;
- }
- }
-
- temp = (HIST_ENTRY *)xmalloc (sizeof (HIST_ENTRY));
- temp->line = savestring (string);
- temp->data = (char *)NULL;
-
- the_history[history_length] = (HIST_ENTRY *)NULL;
- the_history[history_length - 1] = temp;
-}
-
-/* Make the history entry at WHICH have LINE and DATA. This returns
- the old entry so you can dispose of the data. In the case of an
- invalid WHICH, a NULL pointer is returned. */
-HIST_ENTRY *
-replace_history_entry (which, line, data)
- int which;
- const char *line;
- histdata_t data;
-{
- HIST_ENTRY *temp, *old_value;
-
- if (which >= history_length)
- return ((HIST_ENTRY *)NULL);
-
- temp = (HIST_ENTRY *)xmalloc (sizeof (HIST_ENTRY));
- old_value = the_history[which];
-
- temp->line = savestring (line);
- temp->data = data;
- the_history[which] = temp;
-
- return (old_value);
-}
-
-/* Remove history element WHICH from the history. The removed
- element is returned to you so you can free the line, data,
- and containing structure. */
-HIST_ENTRY *
-remove_history (which)
- int which;
-{
- HIST_ENTRY *return_value;
- register int i;
-
- if (which >= history_length || !history_length)
- return_value = (HIST_ENTRY *)NULL;
- else
- {
- return_value = the_history[which];
-
- for (i = which; i < history_length; i++)
- the_history[i] = the_history[i + 1];
-
- history_length--;
- }
-
- return (return_value);
-}
-
-/* Stifle the history list, remembering only MAX number of lines. */
-void
-stifle_history (max)
- int max;
-{
- register int i, j;
-
- if (max < 0)
- max = 0;
-
- if (history_length > max)
- {
- /* This loses because we cannot free the data. */
- for (i = 0, j = history_length - max; i < j; i++)
- {
- free (the_history[i]->line);
- free (the_history[i]);
- }
-
- history_base = i;
- for (j = 0, i = history_length - max; j < max; i++, j++)
- the_history[j] = the_history[i];
- the_history[j] = (HIST_ENTRY *)NULL;
- history_length = j;
- }
-
- history_stifled = 1;
- max_input_history = history_max_entries = max;
-}
-
-/* Stop stifling the history. This returns the previous maximum
- number of history entries. The value is positive if the history
- was stifled, negative if it wasn't. */
-int
-unstifle_history ()
-{
- if (history_stifled)
- {
- history_stifled = 0;
- return (history_max_entries);
- }
- else
- return (-history_max_entries);
-}
-
-int
-history_is_stifled ()
-{
- return (history_stifled);
-}
-
-void
-clear_history ()
-{
- register int i;
-
- /* This loses because we cannot free the data. */
- for (i = 0; i < history_length; i++)
- {
- free (the_history[i]->line);
- free (the_history[i]);
- the_history[i] = (HIST_ENTRY *)NULL;
- }
-
- history_offset = history_length = 0;
-}
diff --git a/readline-4.3.orig/history.h b/readline-4.3.orig/history.h
deleted file mode 100644
index 58b5de4..0000000
--- a/readline-4.3.orig/history.h
+++ /dev/null
@@ -1,246 +0,0 @@
-/* History.h -- the names of functions that you can call in history. */
-/* Copyright (C) 1989, 1992 Free Software Foundation, Inc.
-
- This file contains the GNU History Library (the Library), a set of
- routines for managing the text of previously typed lines.
-
- The Library is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- The Library is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#ifndef _HISTORY_H_
-#define _HISTORY_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#if defined READLINE_LIBRARY
-# include "rlstdc.h"
-# include "rltypedefs.h"
-#else
-# include <readline/rlstdc.h>
-# include <readline/rltypedefs.h>
-#endif
-
-#ifdef __STDC__
-typedef void *histdata_t;
-#else
-typedef char *histdata_t;
-#endif
-
-/* The structure used to store a history entry. */
-typedef struct _hist_entry {
- char *line;
- histdata_t data;
-} HIST_ENTRY;
-
-/* A structure used to pass the current state of the history stuff around. */
-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;
-
-/* Flag values for the `flags' member of HISTORY_STATE. */
-#define HS_STIFLED 0x01
-
-/* Initialization and state management. */
-
-/* Begin a session in which the history functions might be used. This
- just initializes the interactive variables. */
-extern void using_history PARAMS((void));
-
-/* Return the current HISTORY_STATE of the history. */
-extern HISTORY_STATE *history_get_history_state PARAMS((void));
-
-/* Set the state of the current history array to STATE. */
-extern void history_set_history_state PARAMS((HISTORY_STATE *));
-
-/* Manage the history list. */
-
-/* Place STRING at the end of the history list.
- The associated data field (if any) is set to NULL. */
-extern void add_history PARAMS((const char *));
-
-/* A reasonably useless function, only here for completeness. WHICH
- is the magic number that tells us which element to delete. The
- elements are numbered from 0. */
-extern HIST_ENTRY *remove_history PARAMS((int));
-
-/* Make the history entry at WHICH have LINE and DATA. This returns
- the old entry so you can dispose of the data. In the case of an
- invalid WHICH, a NULL pointer is returned. */
-extern HIST_ENTRY *replace_history_entry PARAMS((int, const char *, histdata_t));
-
-/* Clear the history list and start over. */
-extern void clear_history PARAMS((void));
-
-/* Stifle the history list, remembering only MAX number of entries. */
-extern void stifle_history PARAMS((int));
-
-/* Stop stifling the history. This returns the previous amount the
- history was stifled by. The value is positive if the history was
- stifled, negative if it wasn't. */
-extern int unstifle_history PARAMS((void));
-
-/* Return 1 if the history is stifled, 0 if it is not. */
-extern int history_is_stifled PARAMS((void));
-
-/* Information about the history list. */
-
-/* Return a NULL terminated array of HIST_ENTRY which is the current input
- history. Element 0 of this list is the beginning of time. If there
- is no history, return NULL. */
-extern HIST_ENTRY **history_list PARAMS((void));
-
-/* Returns the number which says what history element we are now
- looking at. */
-extern int where_history PARAMS((void));
-
-/* Return the history entry at the current position, as determined by
- history_offset. If there is no entry there, return a NULL pointer. */
-extern HIST_ENTRY *current_history PARAMS((void));
-
-/* Return the history entry which is logically at OFFSET in the history
- array. OFFSET is relative to history_base. */
-extern HIST_ENTRY *history_get PARAMS((int));
-
-/* Return the number of bytes that the primary history entries are using.
- This just adds up the lengths of the_history->lines. */
-extern int history_total_bytes PARAMS((void));
-
-/* Moving around the history list. */
-
-/* Set the position in the history list to POS. */
-extern int history_set_pos PARAMS((int));
-
-/* Back up history_offset to the previous history entry, and return
- a pointer to that entry. If there is no previous entry, return
- a NULL pointer. */
-extern HIST_ENTRY *previous_history PARAMS((void));
-
-/* Move history_offset forward to the next item in the input_history,
- and return the a pointer to that entry. If there is no next entry,
- return a NULL pointer. */
-extern HIST_ENTRY *next_history PARAMS((void));
-
-/* Searching the history list. */
-
-/* Search the history for STRING, starting at history_offset.
- If DIRECTION < 0, then the search is through previous entries,
- else through subsequent. If the string is found, then
- current_history () is the history entry, and the value of this function
- is the offset in the line of that history entry that the string was
- found in. Otherwise, nothing is changed, and a -1 is returned. */
-extern int history_search PARAMS((const char *, int));
-
-/* Search the history for STRING, starting at history_offset.
- The search is anchored: matching lines must begin with string.
- DIRECTION is as in history_search(). */
-extern int history_search_prefix PARAMS((const char *, int));
-
-/* Search for STRING in the history list, starting at POS, an
- absolute index into the list. DIR, if negative, says to search
- backwards from POS, else forwards.
- Returns the absolute index of the history element where STRING
- was found, or -1 otherwise. */
-extern int history_search_pos PARAMS((const char *, int, int));
-
-/* Managing the history file. */
-
-/* Add the contents of FILENAME to the history list, a line at a time.
- If FILENAME is NULL, then read from ~/.history. Returns 0 if
- successful, or errno if not. */
-extern int read_history PARAMS((const char *));
-
-/* Read a range of lines from FILENAME, adding them to the history list.
- Start reading at the FROM'th line and end at the TO'th. If FROM
- is zero, start at the beginning. If TO is less than FROM, read
- until the end of the file. If FILENAME is NULL, then read from
- ~/.history. Returns 0 if successful, or errno if not. */
-extern int read_history_range PARAMS((const char *, int, int));
-
-/* Write the current history to FILENAME. If FILENAME is NULL,
- then write the history list to ~/.history. Values returned
- are as in read_history (). */
-extern int write_history PARAMS((const char *));
-
-/* Append NELEMENT entries to FILENAME. The entries appended are from
- the end of the list minus NELEMENTs up to the end of the list. */
-extern int append_history PARAMS((int, const char *));
-
-/* Truncate the history file, leaving only the last NLINES lines. */
-extern int history_truncate_file PARAMS((const char *, int));
-
-/* History expansion. */
-
-/* Expand the string STRING, placing the result into OUTPUT, a pointer
- to a string. Returns:
-
- 0) If no expansions took place (or, if the only change in
- the text was the de-slashifying of the history expansion
- character)
- 1) If expansions did take place
- -1) If there was an error in expansion.
- 2) If the returned line should just be printed.
-
- If an error ocurred in expansion, then OUTPUT contains a descriptive
- error message. */
-extern int history_expand PARAMS((char *, char **));
-
-/* Extract a string segment consisting of the FIRST through LAST
- arguments present in STRING. Arguments are broken up as in
- the shell. */
-extern char *history_arg_extract PARAMS((int, int, const char *));
-
-/* Return the text of the history event beginning at the current
- offset into STRING. Pass STRING with *INDEX equal to the
- history_expansion_char that begins this specification.
- DELIMITING_QUOTE is a character that is allowed to end the string
- specification for what to search for in addition to the normal
- characters `:', ` ', `\t', `\n', and sometimes `?'. */
-extern char *get_history_event PARAMS((const char *, int *, int));
-
-/* Return an array of tokens, much as the shell might. The tokens are
- parsed out of STRING. */
-extern char **history_tokenize PARAMS((const char *));
-
-/* Exported history variables. */
-extern int history_base;
-extern int history_length;
-extern int history_max_entries;
-extern char history_expansion_char;
-extern char history_subst_char;
-extern char *history_word_delimiters;
-extern char history_comment_char;
-extern char *history_no_expand_chars;
-extern char *history_search_delimiter_chars;
-extern int history_quotes_inhibit_expansion;
-
-/* Backwards compatibility */
-extern int max_input_history;
-
-/* If set, this function is called to decide whether or not a particular
- history expansion should be treated as a special case for the calling
- application and not expanded. */
-extern rl_linebuf_func_t *history_inhibit_expansion_function;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* !_HISTORY_H_ */
diff --git a/readline-4.3.orig/histsearch.c b/readline-4.3.orig/histsearch.c
deleted file mode 100644
index d94fd6c..0000000
--- a/readline-4.3.orig/histsearch.c
+++ /dev/null
@@ -1,195 +0,0 @@
-/* histsearch.c -- searching the history list. */
-
-/* Copyright (C) 1989, 1992 Free Software Foundation, Inc.
-
- This file contains the GNU History Library (the Library), a set of
- routines for managing the text of previously typed lines.
-
- The Library is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- The Library is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <stdio.h>
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#if defined (HAVE_UNISTD_H)
-# ifdef _MINIX
-# include <sys/types.h>
-# endif
-# include <unistd.h>
-#endif
-
-#include "history.h"
-#include "histlib.h"
-
-/* The list of alternate characters that can delimit a history search
- string. */
-char *history_search_delimiter_chars = (char *)NULL;
-
-static int history_search_internal PARAMS((const char *, int, int));
-
-/* Search the history for STRING, starting at history_offset.
- If DIRECTION < 0, then the search is through previous entries, else
- through subsequent. If ANCHORED is non-zero, the string must
- appear at the beginning of a history line, otherwise, the string
- may appear anywhere in the line. If the string is found, then
- current_history () is the history entry, and the value of this
- function is the offset in the line of that history entry that the
- string was found in. Otherwise, nothing is changed, and a -1 is
- returned. */
-
-static int
-history_search_internal (string, direction, anchored)
- const char *string;
- int direction, anchored;
-{
- register int i, reverse;
- register char *line;
- register int line_index;
- int string_len;
- HIST_ENTRY **the_history; /* local */
-
- i = history_offset;
- reverse = (direction < 0);
-
- /* Take care of trivial cases first. */
- if (string == 0 || *string == '\0')
- return (-1);
-
- if (!history_length || ((i == history_length) && !reverse))
- return (-1);
-
- if (reverse && (i == history_length))
- i--;
-
-#define NEXT_LINE() do { if (reverse) i--; else i++; } while (0)
-
- the_history = history_list ();
- string_len = strlen (string);
- while (1)
- {
- /* Search each line in the history list for STRING. */
-
- /* At limit for direction? */
- if ((reverse && i < 0) || (!reverse && i == history_length))
- return (-1);
-
- line = the_history[i]->line;
- line_index = strlen (line);
-
- /* If STRING is longer than line, no match. */
- if (string_len > line_index)
- {
- NEXT_LINE ();
- continue;
- }
-
- /* Handle anchored searches first. */
- if (anchored == ANCHORED_SEARCH)
- {
- if (STREQN (string, line, string_len))
- {
- history_offset = i;
- return (0);
- }
-
- NEXT_LINE ();
- continue;
- }
-
- /* Do substring search. */
- if (reverse)
- {
- line_index -= string_len;
-
- while (line_index >= 0)
- {
- if (STREQN (string, line + line_index, string_len))
- {
- history_offset = i;
- return (line_index);
- }
- line_index--;
- }
- }
- else
- {
- register int limit;
-
- limit = line_index - string_len + 1;
- line_index = 0;
-
- while (line_index < limit)
- {
- if (STREQN (string, line + line_index, string_len))
- {
- history_offset = i;
- return (line_index);
- }
- line_index++;
- }
- }
- NEXT_LINE ();
- }
-}
-
-/* Do a non-anchored search for STRING through the history in DIRECTION. */
-int
-history_search (string, direction)
- const char *string;
- int direction;
-{
- return (history_search_internal (string, direction, NON_ANCHORED_SEARCH));
-}
-
-/* Do an anchored search for string through the history in DIRECTION. */
-int
-history_search_prefix (string, direction)
- const char *string;
- int direction;
-{
- return (history_search_internal (string, direction, ANCHORED_SEARCH));
-}
-
-/* Search for STRING in the history list. DIR is < 0 for searching
- backwards. POS is an absolute index into the history list at
- which point to begin searching. */
-int
-history_search_pos (string, dir, pos)
- const char *string;
- int dir, pos;
-{
- int ret, old;
-
- old = where_history ();
- history_set_pos (pos);
- if (history_search (string, dir) == -1)
- {
- history_set_pos (old);
- return (-1);
- }
- ret = where_history ();
- history_set_pos (old);
- return ret;
-}
diff --git a/readline-4.3.orig/input.c b/readline-4.3.orig/input.c
deleted file mode 100644
index 841f05d..0000000
--- a/readline-4.3.orig/input.c
+++ /dev/null
@@ -1,540 +0,0 @@
-/* input.c -- character input functions for readline. */
-
-/* Copyright (C) 1994 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <sys/types.h>
-#include <fcntl.h>
-#if defined (HAVE_SYS_FILE_H)
-# include <sys/file.h>
-#endif /* HAVE_SYS_FILE_H */
-
-#if defined (HAVE_UNISTD_H)
-# include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#if defined (HAVE_SELECT)
-# if !defined (HAVE_SYS_SELECT_H) || !defined (M_UNIX)
-# include <sys/time.h>
-# endif
-#endif /* HAVE_SELECT */
-#if defined (HAVE_SYS_SELECT_H)
-# include <sys/select.h>
-#endif
-
-#if defined (FIONREAD_IN_SYS_IOCTL)
-# include <sys/ioctl.h>
-#endif
-
-#include <stdio.h>
-#include <errno.h>
-
-#if !defined (errno)
-extern int errno;
-#endif /* !errno */
-
-/* System-specific feature definitions and include files. */
-#include "rldefs.h"
-#include "rlmbutil.h"
-
-/* Some standard library routines. */
-#include "readline.h"
-
-#include "rlprivate.h"
-#include "rlshell.h"
-#include "xmalloc.h"
-
-/* What kind of non-blocking I/O do we have? */
-#if !defined (O_NDELAY) && defined (O_NONBLOCK)
-# define O_NDELAY O_NONBLOCK /* Posix style */
-#endif
-
-/* Non-null means it is a pointer to a function to run while waiting for
- character input. */
-rl_hook_func_t *rl_event_hook = (rl_hook_func_t *)NULL;
-
-rl_getc_func_t *rl_getc_function = rl_getc;
-
-static int _keyboard_input_timeout = 100000; /* 0.1 seconds; it's in usec */
-
-static int ibuffer_space PARAMS((void));
-static int rl_get_char PARAMS((int *));
-static int rl_gather_tyi PARAMS((void));
-
-/* **************************************************************** */
-/* */
-/* Character Input Buffering */
-/* */
-/* **************************************************************** */
-
-static int pop_index, push_index;
-static unsigned char ibuffer[512];
-static int ibuffer_len = sizeof (ibuffer) - 1;
-
-#define any_typein (push_index != pop_index)
-
-int
-_rl_any_typein ()
-{
- return any_typein;
-}
-
-/* Return the amount of space available in the buffer for stuffing
- characters. */
-static int
-ibuffer_space ()
-{
- if (pop_index > push_index)
- return (pop_index - push_index - 1);
- else
- return (ibuffer_len - (push_index - pop_index));
-}
-
-/* Get a key from the buffer of characters to be read.
- Return the key in KEY.
- Result is KEY if there was a key, or 0 if there wasn't. */
-static int
-rl_get_char (key)
- int *key;
-{
- if (push_index == pop_index)
- return (0);
-
- *key = ibuffer[pop_index++];
-
- if (pop_index >= ibuffer_len)
- pop_index = 0;
-
- return (1);
-}
-
-/* Stuff KEY into the *front* of the input buffer.
- Returns non-zero if successful, zero if there is
- no space left in the buffer. */
-int
-_rl_unget_char (key)
- int key;
-{
- if (ibuffer_space ())
- {
- pop_index--;
- if (pop_index < 0)
- pop_index = ibuffer_len - 1;
- ibuffer[pop_index] = key;
- return (1);
- }
- return (0);
-}
-
-/* If a character is available to be read, then read it and stuff it into
- IBUFFER. Otherwise, just return. Returns number of characters read
- (0 if none available) and -1 on error (EIO). */
-static int
-rl_gather_tyi ()
-{
- int tty;
- register int tem, result;
- int chars_avail;
- char input;
-#if defined(HAVE_SELECT)
- fd_set readfds, exceptfds;
- struct timeval timeout;
-#endif
-
- tty = fileno (rl_instream);
-
-#if defined (HAVE_SELECT)
- FD_ZERO (&readfds);
- FD_ZERO (&exceptfds);
- FD_SET (tty, &readfds);
- FD_SET (tty, &exceptfds);
- timeout.tv_sec = 0;
- timeout.tv_usec = _keyboard_input_timeout;
- result = select (tty + 1, &readfds, (fd_set *)NULL, &exceptfds, &timeout);
- if (result <= 0)
- return 0; /* Nothing to read. */
-#endif
-
- result = -1;
-#if defined (FIONREAD)
- errno = 0;
- result = ioctl (tty, FIONREAD, &chars_avail);
- if (result == -1 && errno == EIO)
- return -1;
-#endif
-
-#if defined (O_NDELAY)
- if (result == -1)
- {
- tem = fcntl (tty, F_GETFL, 0);
-
- fcntl (tty, F_SETFL, (tem | O_NDELAY));
- chars_avail = read (tty, &input, 1);
-
- fcntl (tty, F_SETFL, tem);
- if (chars_avail == -1 && errno == EAGAIN)
- return 0;
- }
-#endif /* O_NDELAY */
-
- /* If there's nothing available, don't waste time trying to read
- something. */
- if (chars_avail <= 0)
- return 0;
-
- tem = ibuffer_space ();
-
- if (chars_avail > tem)
- chars_avail = tem;
-
- /* One cannot read all of the available input. I can only read a single
- character at a time, or else programs which require input can be
- thwarted. If the buffer is larger than one character, I lose.
- Damn! */
- if (tem < ibuffer_len)
- chars_avail = 0;
-
- if (result != -1)
- {
- while (chars_avail--)
- rl_stuff_char ((*rl_getc_function) (rl_instream));
- }
- else
- {
- if (chars_avail)
- rl_stuff_char (input);
- }
-
- return 1;
-}
-
-int
-rl_set_keyboard_input_timeout (u)
- int u;
-{
- int o;
-
- o = _keyboard_input_timeout;
- if (u > 0)
- _keyboard_input_timeout = u;
- return (o);
-}
-
-/* Is there input available to be read on the readline input file
- descriptor? Only works if the system has select(2) or FIONREAD.
- Uses the value of _keyboard_input_timeout as the timeout; if another
- readline function wants to specify a timeout and not leave it up to
- the user, it should use _rl_input_queued(timeout_value_in_microseconds)
- instead. */
-int
-_rl_input_available ()
-{
-#if defined(HAVE_SELECT)
- fd_set readfds, exceptfds;
- struct timeval timeout;
-#endif
-#if !defined (HAVE_SELECT) && defined(FIONREAD)
- int chars_avail;
-#endif
- int tty;
-
- tty = fileno (rl_instream);
-
-#if defined (HAVE_SELECT)
- FD_ZERO (&readfds);
- FD_ZERO (&exceptfds);
- FD_SET (tty, &readfds);
- FD_SET (tty, &exceptfds);
- timeout.tv_sec = 0;
- timeout.tv_usec = _keyboard_input_timeout;
- return (select (tty + 1, &readfds, (fd_set *)NULL, &exceptfds, &timeout) > 0);
-#else
-
-#if defined (FIONREAD)
- if (ioctl (tty, FIONREAD, &chars_avail) == 0)
- return (chars_avail);
-#endif
-
-#endif
-
- return 0;
-}
-
-int
-_rl_input_queued (t)
- int t;
-{
- int old_timeout, r;
-
- old_timeout = rl_set_keyboard_input_timeout (t);
- r = _rl_input_available ();
- rl_set_keyboard_input_timeout (old_timeout);
- return r;
-}
-
-void
-_rl_insert_typein (c)
- int c;
-{
- int key, t, i;
- char *string;
-
- i = key = 0;
- string = (char *)xmalloc (ibuffer_len + 1);
- string[i++] = (char) c;
-
- while ((t = rl_get_char (&key)) &&
- _rl_keymap[key].type == ISFUNC &&
- _rl_keymap[key].function == rl_insert)
- string[i++] = key;
-
- if (t)
- _rl_unget_char (key);
-
- string[i] = '\0';
- rl_insert_text (string);
- free (string);
-}
-
-/* Add KEY to the buffer of characters to be read. Returns 1 if the
- character was stuffed correctly; 0 otherwise. */
-int
-rl_stuff_char (key)
- int key;
-{
- if (ibuffer_space () == 0)
- return 0;
-
- if (key == EOF)
- {
- key = NEWLINE;
- rl_pending_input = EOF;
- RL_SETSTATE (RL_STATE_INPUTPENDING);
- }
- ibuffer[push_index++] = key;
- if (push_index >= ibuffer_len)
- push_index = 0;
-
- return 1;
-}
-
-/* Make C be the next command to be executed. */
-int
-rl_execute_next (c)
- int c;
-{
- rl_pending_input = c;
- RL_SETSTATE (RL_STATE_INPUTPENDING);
- return 0;
-}
-
-/* Clear any pending input pushed with rl_execute_next() */
-int
-rl_clear_pending_input ()
-{
- rl_pending_input = 0;
- RL_UNSETSTATE (RL_STATE_INPUTPENDING);
- return 0;
-}
-
-/* **************************************************************** */
-/* */
-/* Character Input */
-/* */
-/* **************************************************************** */
-
-/* Read a key, including pending input. */
-int
-rl_read_key ()
-{
- int c;
-
- rl_key_sequence_length++;
-
- if (rl_pending_input)
- {
- c = rl_pending_input;
- rl_clear_pending_input ();
- }
- else
- {
- /* If input is coming from a macro, then use that. */
- if (c = _rl_next_macro_key ())
- return (c);
-
- /* If the user has an event function, then call it periodically. */
- if (rl_event_hook)
- {
- while (rl_event_hook && rl_get_char (&c) == 0)
- {
- (*rl_event_hook) ();
- if (rl_done) /* XXX - experimental */
- return ('\n');
- if (rl_gather_tyi () < 0) /* XXX - EIO */
- {
- rl_done = 1;
- return ('\n');
- }
- }
- }
- else
- {
- if (rl_get_char (&c) == 0)
- c = (*rl_getc_function) (rl_instream);
- }
- }
-
- return (c);
-}
-
-int
-rl_getc (stream)
- FILE *stream;
-{
- int result;
- unsigned char c;
-
- while (1)
- {
- result = read (fileno (stream), &c, sizeof (unsigned char));
-
- if (result == sizeof (unsigned char))
- return (c);
-
- /* If zero characters are returned, then the file that we are
- reading from is empty! Return EOF in that case. */
- if (result == 0)
- return (EOF);
-
-#if defined (__BEOS__)
- if (errno == EINTR)
- continue;
-#endif
-
-#if defined (EWOULDBLOCK)
-# define X_EWOULDBLOCK EWOULDBLOCK
-#else
-# define X_EWOULDBLOCK -99
-#endif
-
-#if defined (EAGAIN)
-# define X_EAGAIN EAGAIN
-#else
-# define X_EAGAIN -99
-#endif
-
- if (errno == X_EWOULDBLOCK || errno == X_EAGAIN)
- {
- if (sh_unset_nodelay_mode (fileno (stream)) < 0)
- return (EOF);
- continue;
- }
-
-#undef X_EWOULDBLOCK
-#undef X_EAGAIN
-
- /* If the error that we received was SIGINT, then try again,
- this is simply an interrupted system call to read ().
- Otherwise, some error ocurred, also signifying EOF. */
- if (errno != EINTR)
- return (EOF);
- }
-}
-
-#if defined (HANDLE_MULTIBYTE)
-/* read multibyte char */
-int
-_rl_read_mbchar (mbchar, size)
- char *mbchar;
- int size;
-{
- int mb_len = 0;
- size_t mbchar_bytes_length;
- wchar_t wc;
- mbstate_t ps, ps_back;
-
- memset(&ps, 0, sizeof (mbstate_t));
- memset(&ps_back, 0, sizeof (mbstate_t));
-
- while (mb_len < size)
- {
- RL_SETSTATE(RL_STATE_MOREINPUT);
- mbchar[mb_len++] = rl_read_key ();
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
-
- mbchar_bytes_length = mbrtowc (&wc, mbchar, mb_len, &ps);
- if (mbchar_bytes_length == (size_t)(-1))
- break; /* invalid byte sequence for the current locale */
- else if (mbchar_bytes_length == (size_t)(-2))
- {
- /* shorted bytes */
- ps = ps_back;
- continue;
- }
- else if (mbchar_bytes_length > (size_t)(0))
- break;
- }
-
- return mb_len;
-}
-
-/* Read a multibyte-character string whose first character is FIRST into
- the buffer MB of length MBLEN. Returns the last character read, which
- may be FIRST. Used by the search functions, among others. Very similar
- to _rl_read_mbchar. */
-int
-_rl_read_mbstring (first, mb, mblen)
- int first;
- char *mb;
- int mblen;
-{
- int i, c;
- mbstate_t ps;
-
- c = first;
- memset (mb, 0, mblen);
- for (i = 0; i < mblen; i++)
- {
- mb[i] = (char)c;
- memset (&ps, 0, sizeof (mbstate_t));
- if (_rl_get_char_len (mb, &ps) == -2)
- {
- /* Read more for multibyte character */
- RL_SETSTATE (RL_STATE_MOREINPUT);
- c = rl_read_key ();
- RL_UNSETSTATE (RL_STATE_MOREINPUT);
- }
- else
- break;
- }
- return c;
-}
-#endif /* HANDLE_MULTIBYTE */
diff --git a/readline-4.3.orig/isearch.c b/readline-4.3.orig/isearch.c
deleted file mode 100644
index c1ea5b3..0000000
--- a/readline-4.3.orig/isearch.c
+++ /dev/null
@@ -1,560 +0,0 @@
-/* **************************************************************** */
-/* */
-/* I-Search and Searching */
-/* */
-/* **************************************************************** */
-
-/* Copyright (C) 1987-2002 Free Software Foundation, Inc.
-
- This file contains the Readline Library (the Library), a set of
- routines for providing Emacs style line input to programs that ask
- for it.
-
- The Library is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- The Library is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <sys/types.h>
-
-#include <stdio.h>
-
-#if defined (HAVE_UNISTD_H)
-# include <unistd.h>
-#endif
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif
-
-#include "rldefs.h"
-#include "rlmbutil.h"
-
-#include "readline.h"
-#include "history.h"
-
-#include "rlprivate.h"
-#include "xmalloc.h"
-
-/* Variables exported to other files in the readline library. */
-char *_rl_isearch_terminators = (char *)NULL;
-
-/* Variables imported from other files in the readline library. */
-extern HIST_ENTRY *_rl_saved_line_for_history;
-
-/* Forward declarations */
-static int rl_search_history PARAMS((int, int));
-
-/* Last line found by the current incremental search, so we don't `find'
- identical lines many times in a row. */
-static char *prev_line_found;
-
-/* Last search string and its length. */
-static char *last_isearch_string;
-static int last_isearch_string_len;
-
-static char *default_isearch_terminators = "\033\012";
-
-/* Search backwards through the history looking for a string which is typed
- interactively. Start with the current line. */
-int
-rl_reverse_search_history (sign, key)
- int sign, key;
-{
- return (rl_search_history (-sign, key));
-}
-
-/* Search forwards through the history looking for a string which is typed
- interactively. Start with the current line. */
-int
-rl_forward_search_history (sign, key)
- int sign, key;
-{
- return (rl_search_history (sign, key));
-}
-
-/* Display the current state of the search in the echo-area.
- SEARCH_STRING contains the string that is being searched for,
- DIRECTION is zero for forward, or 1 for reverse,
- WHERE is the history list number of the current line. If it is
- -1, then this line is the starting one. */
-static void
-rl_display_search (search_string, reverse_p, where)
- char *search_string;
- int reverse_p, where;
-{
- char *message;
- int msglen, searchlen;
-
- searchlen = (search_string && *search_string) ? strlen (search_string) : 0;
-
- message = (char *)xmalloc (searchlen + 33);
- msglen = 0;
-
-#if defined (NOTDEF)
- if (where != -1)
- {
- sprintf (message, "[%d]", where + history_base);
- msglen = strlen (message);
- }
-#endif /* NOTDEF */
-
- message[msglen++] = '(';
-
- if (reverse_p)
- {
- strcpy (message + msglen, "reverse-");
- msglen += 8;
- }
-
- strcpy (message + msglen, "i-search)`");
- msglen += 10;
-
- if (search_string)
- {
- strcpy (message + msglen, search_string);
- msglen += searchlen;
- }
-
- strcpy (message + msglen, "': ");
-
- rl_message ("%s", message);
- free (message);
- (*rl_redisplay_function) ();
-}
-
-/* Search through the history looking for an interactively typed string.
- This is analogous to i-search. We start the search in the current line.
- DIRECTION is which direction to search; >= 0 means forward, < 0 means
- backwards. */
-static int
-rl_search_history (direction, invoking_key)
- int direction, invoking_key;
-{
- /* The string that the user types in to search for. */
- char *search_string;
-
- /* The current length of SEARCH_STRING. */
- int search_string_index;
-
- /* The amount of space that SEARCH_STRING has allocated to it. */
- int search_string_size;
-
- /* The list of lines to search through. */
- char **lines, *allocated_line;
-
- /* The length of LINES. */
- int hlen;
-
- /* Where we get LINES from. */
- HIST_ENTRY **hlist;
-
- register int i;
- int orig_point, orig_mark, orig_line, last_found_line;
- int c, found, failed, sline_len;
- int n, wstart, wlen;
-#if defined (HANDLE_MULTIBYTE)
- char mb[MB_LEN_MAX];
-#endif
-
- /* The line currently being searched. */
- char *sline;
-
- /* Offset in that line. */
- int line_index;
-
- /* Non-zero if we are doing a reverse search. */
- int reverse;
-
- /* The list of characters which terminate the search, but are not
- subsequently executed. If the variable isearch-terminators has
- been set, we use that value, otherwise we use ESC and C-J. */
- char *isearch_terminators;
-
- RL_SETSTATE(RL_STATE_ISEARCH);
- orig_point = rl_point;
- orig_mark = rl_mark;
- last_found_line = orig_line = where_history ();
- reverse = direction < 0;
- hlist = history_list ();
- allocated_line = (char *)NULL;
-
- isearch_terminators = _rl_isearch_terminators ? _rl_isearch_terminators
- : default_isearch_terminators;
-
- /* Create an arrary of pointers to the lines that we want to search. */
- rl_maybe_replace_line ();
- i = 0;
- if (hlist)
- for (i = 0; hlist[i]; i++);
-
- /* Allocate space for this many lines, +1 for the current input line,
- and remember those lines. */
- lines = (char **)xmalloc ((1 + (hlen = i)) * sizeof (char *));
- for (i = 0; i < hlen; i++)
- lines[i] = hlist[i]->line;
-
- if (_rl_saved_line_for_history)
- lines[i] = _rl_saved_line_for_history->line;
- else
- {
- /* Keep track of this so we can free it. */
- allocated_line = (char *)xmalloc (1 + strlen (rl_line_buffer));
- strcpy (allocated_line, &rl_line_buffer[0]);
- lines[i] = allocated_line;
- }
-
- hlen++;
-
- /* The line where we start the search. */
- i = orig_line;
-
- rl_save_prompt ();
-
- /* Initialize search parameters. */
- search_string = (char *)xmalloc (search_string_size = 128);
- *search_string = '\0';
- search_string_index = 0;
- prev_line_found = (char *)0; /* XXX */
-
- /* Normalize DIRECTION into 1 or -1. */
- direction = (direction >= 0) ? 1 : -1;
-
- rl_display_search (search_string, reverse, -1);
-
- sline = rl_line_buffer;
- sline_len = strlen (sline);
- line_index = rl_point;
-
- found = failed = 0;
- for (;;)
- {
- rl_command_func_t *f = (rl_command_func_t *)NULL;
-
- /* Read a key and decide how to proceed. */
- RL_SETSTATE(RL_STATE_MOREINPUT);
- c = rl_read_key ();
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
-
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- c = _rl_read_mbstring (c, mb, MB_LEN_MAX);
-#endif
-
- /* Translate the keys we do something with to opcodes. */
- if (c >= 0 && _rl_keymap[c].type == ISFUNC)
- {
- f = _rl_keymap[c].function;
-
- if (f == rl_reverse_search_history)
- c = reverse ? -1 : -2;
- else if (f == rl_forward_search_history)
- c = !reverse ? -1 : -2;
- else if (f == rl_rubout)
- c = -3;
- else if (c == CTRL ('G'))
- c = -4;
- else if (c == CTRL ('W')) /* XXX */
- c = -5;
- else if (c == CTRL ('Y')) /* XXX */
- c = -6;
- }
-
- /* The characters in isearch_terminators (set from the user-settable
- variable isearch-terminators) are used to terminate the search but
- not subsequently execute the character as a command. The default
- value is "\033\012" (ESC and C-J). */
- if (strchr (isearch_terminators, c))
- {
- /* ESC still terminates the search, but if there is pending
- input or if input arrives within 0.1 seconds (on systems
- with select(2)) it is used as a prefix character
- with rl_execute_next. WATCH OUT FOR THIS! This is intended
- to allow the arrow keys to be used like ^F and ^B are used
- to terminate the search and execute the movement command.
- XXX - since _rl_input_available depends on the application-
- settable keyboard timeout value, this could alternatively
- use _rl_input_queued(100000) */
- if (c == ESC && _rl_input_available ())
- rl_execute_next (ESC);
- break;
- }
-
-#define ENDSRCH_CHAR(c) \
- ((CTRL_CHAR (c) || META_CHAR (c) || (c) == RUBOUT) && ((c) != CTRL ('G')))
-
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- if (c >= 0 && strlen (mb) == 1 && ENDSRCH_CHAR (c))
- {
- /* This sets rl_pending_input to c; it will be picked up the next
- time rl_read_key is called. */
- rl_execute_next (c);
- break;
- }
- }
- else
-#endif
- if (c >= 0 && ENDSRCH_CHAR (c))
- {
- /* This sets rl_pending_input to c; it will be picked up the next
- time rl_read_key is called. */
- rl_execute_next (c);
- break;
- }
-
- switch (c)
- {
- case -1:
- if (search_string_index == 0)
- {
- if (last_isearch_string)
- {
- search_string_size = 64 + last_isearch_string_len;
- search_string = (char *)xrealloc (search_string, search_string_size);
- strcpy (search_string, last_isearch_string);
- search_string_index = last_isearch_string_len;
- rl_display_search (search_string, reverse, -1);
- break;
- }
- continue;
- }
- else if (reverse)
- --line_index;
- else if (line_index != sline_len)
- ++line_index;
- else
- rl_ding ();
- break;
-
- /* switch directions */
- case -2:
- direction = -direction;
- reverse = direction < 0;
- break;
-
- /* delete character from search string. */
- case -3: /* C-H, DEL */
- /* This is tricky. To do this right, we need to keep a
- stack of search positions for the current search, with
- sentinels marking the beginning and end. But this will
- do until we have a real isearch-undo. */
- if (search_string_index == 0)
- rl_ding ();
- else
- search_string[--search_string_index] = '\0';
-
- break;
-
- case -4: /* C-G */
- rl_replace_line (lines[orig_line], 0);
- rl_point = orig_point;
- rl_mark = orig_mark;
- rl_restore_prompt();
- rl_clear_message ();
- if (allocated_line)
- free (allocated_line);
- free (lines);
- RL_UNSETSTATE(RL_STATE_ISEARCH);
- return 0;
-
- case -5: /* C-W */
- /* skip over portion of line we already matched */
- wstart = rl_point + search_string_index;
- if (wstart >= rl_end)
- {
- rl_ding ();
- break;
- }
-
- /* if not in a word, move to one. */
- if (rl_alphabetic(rl_line_buffer[wstart]) == 0)
- {
- rl_ding ();
- break;
- }
- n = wstart;
- while (n < rl_end && rl_alphabetic(rl_line_buffer[n]))
- n++;
- wlen = n - wstart + 1;
- if (search_string_index + wlen + 1 >= search_string_size)
- {
- search_string_size += wlen + 1;
- search_string = (char *)xrealloc (search_string, search_string_size);
- }
- for (; wstart < n; wstart++)
- search_string[search_string_index++] = rl_line_buffer[wstart];
- search_string[search_string_index] = '\0';
- break;
-
- case -6: /* C-Y */
- /* skip over portion of line we already matched */
- wstart = rl_point + search_string_index;
- if (wstart >= rl_end)
- {
- rl_ding ();
- break;
- }
- n = rl_end - wstart + 1;
- if (search_string_index + n + 1 >= search_string_size)
- {
- search_string_size += n + 1;
- search_string = (char *)xrealloc (search_string, search_string_size);
- }
- for (n = wstart; n < rl_end; n++)
- search_string[search_string_index++] = rl_line_buffer[n];
- search_string[search_string_index] = '\0';
- break;
-
- default:
- /* Add character to search string and continue search. */
- if (search_string_index + 2 >= search_string_size)
- {
- search_string_size += 128;
- search_string = (char *)xrealloc (search_string, search_string_size);
- }
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- int j, l;
- for (j = 0, l = strlen (mb); j < l; )
- search_string[search_string_index++] = mb[j++];
- }
- else
-#endif
- search_string[search_string_index++] = c;
- search_string[search_string_index] = '\0';
- break;
- }
-
- for (found = failed = 0;;)
- {
- int limit = sline_len - search_string_index + 1;
-
- /* Search the current line. */
- while (reverse ? (line_index >= 0) : (line_index < limit))
- {
- if (STREQN (search_string, sline + line_index, search_string_index))
- {
- found++;
- break;
- }
- else
- line_index += direction;
- }
- if (found)
- break;
-
- /* Move to the next line, but skip new copies of the line
- we just found and lines shorter than the string we're
- searching for. */
- do
- {
- /* Move to the next line. */
- i += direction;
-
- /* At limit for direction? */
- if (reverse ? (i < 0) : (i == hlen))
- {
- failed++;
- break;
- }
-
- /* We will need these later. */
- sline = lines[i];
- sline_len = strlen (sline);
- }
- while ((prev_line_found && STREQ (prev_line_found, lines[i])) ||
- (search_string_index > sline_len));
-
- if (failed)
- break;
-
- /* Now set up the line for searching... */
- line_index = reverse ? sline_len - search_string_index : 0;
- }
-
- if (failed)
- {
- /* We cannot find the search string. Ding the bell. */
- rl_ding ();
- i = last_found_line;
- continue; /* XXX - was break */
- }
-
- /* We have found the search string. Just display it. But don't
- actually move there in the history list until the user accepts
- the location. */
- if (found)
- {
- prev_line_found = lines[i];
- rl_replace_line (lines[i], 0);
- rl_point = line_index;
- last_found_line = i;
- rl_display_search (search_string, reverse, (i == orig_line) ? -1 : i);
- }
- }
-
- /* The searching is over. The user may have found the string that she
- was looking for, or else she may have exited a failing search. If
- LINE_INDEX is -1, then that shows that the string searched for was
- not found. We use this to determine where to place rl_point. */
-
- /* First put back the original state. */
- strcpy (rl_line_buffer, lines[orig_line]);
-
- rl_restore_prompt ();
-
- /* Save the search string for possible later use. */
- FREE (last_isearch_string);
- last_isearch_string = search_string;
- last_isearch_string_len = search_string_index;
-
- if (last_found_line < orig_line)
- rl_get_previous_history (orig_line - last_found_line, 0);
- else
- rl_get_next_history (last_found_line - orig_line, 0);
-
- /* If the string was not found, put point at the end of the last matching
- line. If last_found_line == orig_line, we didn't find any matching
- history lines at all, so put point back in its original position. */
- if (line_index < 0)
- {
- if (last_found_line == orig_line)
- line_index = orig_point;
- else
- line_index = strlen (rl_line_buffer);
- rl_mark = orig_mark;
- }
-
- rl_point = line_index;
- /* Don't worry about where to put the mark here; rl_get_previous_history
- and rl_get_next_history take care of it. */
-
- rl_clear_message ();
-
- FREE (allocated_line);
- free (lines);
-
- RL_UNSETSTATE(RL_STATE_ISEARCH);
-
- return 0;
-}
diff --git a/readline-4.3.orig/keymaps.c b/readline-4.3.orig/keymaps.c
deleted file mode 100644
index 12506d3..0000000
--- a/readline-4.3.orig/keymaps.c
+++ /dev/null
@@ -1,150 +0,0 @@
-/* keymaps.c -- Functions and keymaps for the GNU Readline library. */
-
-/* Copyright (C) 1988,1989 Free Software Foundation, Inc.
-
- This file is part of GNU Readline, a library for reading lines
- of text with interactive input and history editing.
-
- Readline is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the
- Free Software Foundation; either version 2, or (at your option) any
- later version.
-
- Readline is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Readline; see the file COPYING. If not, write to the Free
- Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#include <stdio.h> /* for FILE * definition for readline.h */
-
-#include "readline.h"
-#include "rlconf.h"
-
-#include "emacs_keymap.c"
-
-#if defined (VI_MODE)
-#include "vi_keymap.c"
-#endif
-
-#include "xmalloc.h"
-
-/* **************************************************************** */
-/* */
-/* Functions for manipulating Keymaps. */
-/* */
-/* **************************************************************** */
-
-
-/* Return a new, empty keymap.
- Free it with free() when you are done. */
-Keymap
-rl_make_bare_keymap ()
-{
- register int i;
- Keymap keymap = (Keymap)xmalloc (KEYMAP_SIZE * sizeof (KEYMAP_ENTRY));
-
- for (i = 0; i < KEYMAP_SIZE; i++)
- {
- keymap[i].type = ISFUNC;
- keymap[i].function = (rl_command_func_t *)NULL;
- }
-
- for (i = 'A'; i < ('Z' + 1); i++)
- {
- keymap[i].type = ISFUNC;
- keymap[i].function = rl_do_lowercase_version;
- }
-
- return (keymap);
-}
-
-/* Return a new keymap which is a copy of MAP. */
-Keymap
-rl_copy_keymap (map)
- Keymap map;
-{
- register int i;
- Keymap temp = rl_make_bare_keymap ();
-
- for (i = 0; i < KEYMAP_SIZE; i++)
- {
- temp[i].type = map[i].type;
- temp[i].function = map[i].function;
- }
- return (temp);
-}
-
-/* Return a new keymap with the printing characters bound to rl_insert,
- the uppercase Meta characters bound to run their lowercase equivalents,
- and the Meta digits bound to produce numeric arguments. */
-Keymap
-rl_make_keymap ()
-{
- register int i;
- Keymap newmap;
-
- newmap = rl_make_bare_keymap ();
-
- /* All ASCII printing characters are self-inserting. */
- for (i = ' '; i < 127; i++)
- newmap[i].function = rl_insert;
-
- newmap[TAB].function = rl_insert;
- newmap[RUBOUT].function = rl_rubout; /* RUBOUT == 127 */
- newmap[CTRL('H')].function = rl_rubout;
-
-#if KEYMAP_SIZE > 128
- /* Printing characters in some 8-bit character sets. */
- for (i = 128; i < 160; i++)
- newmap[i].function = rl_insert;
-
- /* ISO Latin-1 printing characters should self-insert. */
- for (i = 160; i < 256; i++)
- newmap[i].function = rl_insert;
-#endif /* KEYMAP_SIZE > 128 */
-
- return (newmap);
-}
-
-/* Free the storage associated with MAP. */
-void
-rl_discard_keymap (map)
- Keymap map;
-{
- int i;
-
- if (!map)
- return;
-
- for (i = 0; i < KEYMAP_SIZE; i++)
- {
- switch (map[i].type)
- {
- case ISFUNC:
- break;
-
- case ISKMAP:
- rl_discard_keymap ((Keymap)map[i].function);
- break;
-
- case ISMACR:
- free ((char *)map[i].function);
- break;
- }
- }
-}
diff --git a/readline-4.3.orig/keymaps.h b/readline-4.3.orig/keymaps.h
deleted file mode 100644
index 66fa2a5..0000000
--- a/readline-4.3.orig/keymaps.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/* keymaps.h -- Manipulation of readline keymaps. */
-
-/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#ifndef _KEYMAPS_H_
-#define _KEYMAPS_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#if defined (READLINE_LIBRARY)
-# include "rlstdc.h"
-# include "chardefs.h"
-# include "rltypedefs.h"
-#else
-# include <readline/rlstdc.h>
-# include <readline/chardefs.h>
-# include <readline/rltypedefs.h>
-#endif
-
-/* A keymap contains one entry for each key in the ASCII set.
- Each entry consists of a type and a pointer.
- FUNCTION is the address of a function to run, or the
- address of a keymap to indirect through.
- TYPE says which kind of thing FUNCTION is. */
-typedef struct _keymap_entry {
- char type;
- rl_command_func_t *function;
-} KEYMAP_ENTRY;
-
-/* This must be large enough to hold bindings for all of the characters
- in a desired character set (e.g, 128 for ASCII, 256 for ISO Latin-x,
- and so on) plus one for subsequence matching. */
-#define KEYMAP_SIZE 257
-#define ANYOTHERKEY KEYMAP_SIZE-1
-
-/* I wanted to make the above structure contain a union of:
- union { rl_command_func_t *function; struct _keymap_entry *keymap; } value;
- but this made it impossible for me to create a static array.
- Maybe I need C lessons. */
-
-typedef KEYMAP_ENTRY KEYMAP_ENTRY_ARRAY[KEYMAP_SIZE];
-typedef KEYMAP_ENTRY *Keymap;
-
-/* The values that TYPE can have in a keymap entry. */
-#define ISFUNC 0
-#define ISKMAP 1
-#define ISMACR 2
-
-extern KEYMAP_ENTRY_ARRAY emacs_standard_keymap, emacs_meta_keymap, emacs_ctlx_keymap;
-extern KEYMAP_ENTRY_ARRAY vi_insertion_keymap, vi_movement_keymap;
-
-/* Return a new, empty keymap.
- Free it with free() when you are done. */
-extern Keymap rl_make_bare_keymap PARAMS((void));
-
-/* Return a new keymap which is a copy of MAP. */
-extern Keymap rl_copy_keymap PARAMS((Keymap));
-
-/* Return a new keymap with the printing characters bound to rl_insert,
- the lowercase Meta characters bound to run their equivalents, and
- the Meta digits bound to produce numeric arguments. */
-extern Keymap rl_make_keymap PARAMS((void));
-
-/* Free the storage associated with a keymap. */
-extern void rl_discard_keymap PARAMS((Keymap));
-
-/* These functions actually appear in bind.c */
-
-/* Return the keymap corresponding to a given name. Names look like
- `emacs' or `emacs-meta' or `vi-insert'. */
-extern Keymap rl_get_keymap_by_name PARAMS((const char *));
-
-/* Return the current keymap. */
-extern Keymap rl_get_keymap PARAMS((void));
-
-/* Set the current keymap to MAP. */
-extern void rl_set_keymap PARAMS((Keymap));
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _KEYMAPS_H_ */
diff --git a/readline-4.3.orig/kill.c b/readline-4.3.orig/kill.c
deleted file mode 100644
index a616b92..0000000
--- a/readline-4.3.orig/kill.c
+++ /dev/null
@@ -1,652 +0,0 @@
-/* kill.c -- kill ring management. */
-
-/* Copyright (C) 1994 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <sys/types.h>
-
-#if defined (HAVE_UNISTD_H)
-# include <unistd.h> /* for _POSIX_VERSION */
-#endif /* HAVE_UNISTD_H */
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#include <stdio.h>
-
-/* System-specific feature definitions and include files. */
-#include "rldefs.h"
-
-/* Some standard library routines. */
-#include "readline.h"
-#include "history.h"
-
-#include "rlprivate.h"
-#include "xmalloc.h"
-
-/* **************************************************************** */
-/* */
-/* Killing Mechanism */
-/* */
-/* **************************************************************** */
-
-/* What we assume for a max number of kills. */
-#define DEFAULT_MAX_KILLS 10
-
-/* The real variable to look at to find out when to flush kills. */
-static int rl_max_kills = DEFAULT_MAX_KILLS;
-
-/* Where to store killed text. */
-static char **rl_kill_ring = (char **)NULL;
-
-/* Where we are in the kill ring. */
-static int rl_kill_index;
-
-/* How many slots we have in the kill ring. */
-static int rl_kill_ring_length;
-
-static int _rl_copy_to_kill_ring PARAMS((char *, int));
-static int region_kill_internal PARAMS((int));
-static int _rl_copy_word_as_kill PARAMS((int, int));
-static int rl_yank_nth_arg_internal PARAMS((int, int, int));
-
-/* How to say that you only want to save a certain amount
- of kill material. */
-int
-rl_set_retained_kills (num)
- int num;
-{
- return 0;
-}
-
-/* Add TEXT to the kill ring, allocating a new kill ring slot as necessary.
- This uses TEXT directly, so the caller must not free it. If APPEND is
- non-zero, and the last command was a kill, the text is appended to the
- current kill ring slot, otherwise prepended. */
-static int
-_rl_copy_to_kill_ring (text, append)
- char *text;
- int append;
-{
- char *old, *new;
- int slot;
-
- /* First, find the slot to work with. */
- if (_rl_last_command_was_kill == 0)
- {
- /* Get a new slot. */
- if (rl_kill_ring == 0)
- {
- /* If we don't have any defined, then make one. */
- rl_kill_ring = (char **)
- xmalloc (((rl_kill_ring_length = 1) + 1) * sizeof (char *));
- rl_kill_ring[slot = 0] = (char *)NULL;
- }
- else
- {
- /* We have to add a new slot on the end, unless we have
- exceeded the max limit for remembering kills. */
- slot = rl_kill_ring_length;
- if (slot == rl_max_kills)
- {
- register int i;
- free (rl_kill_ring[0]);
- for (i = 0; i < slot; i++)
- rl_kill_ring[i] = rl_kill_ring[i + 1];
- }
- else
- {
- slot = rl_kill_ring_length += 1;
- rl_kill_ring = (char **)xrealloc (rl_kill_ring, slot * sizeof (char *));
- }
- rl_kill_ring[--slot] = (char *)NULL;
- }
- }
- else
- slot = rl_kill_ring_length - 1;
-
- /* If the last command was a kill, prepend or append. */
- if (_rl_last_command_was_kill && rl_editing_mode != vi_mode)
- {
- old = rl_kill_ring[slot];
- new = (char *)xmalloc (1 + strlen (old) + strlen (text));
-
- if (append)
- {
- strcpy (new, old);
- strcat (new, text);
- }
- else
- {
- strcpy (new, text);
- strcat (new, old);
- }
- free (old);
- free (text);
- rl_kill_ring[slot] = new;
- }
- else
- rl_kill_ring[slot] = text;
-
- rl_kill_index = slot;
- return 0;
-}
-
-/* The way to kill something. This appends or prepends to the last
- kill, if the last command was a kill command. if FROM is less
- than TO, then the text is appended, otherwise prepended. If the
- last command was not a kill command, then a new slot is made for
- this kill. */
-int
-rl_kill_text (from, to)
- int from, to;
-{
- char *text;
-
- /* Is there anything to kill? */
- if (from == to)
- {
- _rl_last_command_was_kill++;
- return 0;
- }
-
- text = rl_copy_text (from, to);
-
- /* Delete the copied text from the line. */
- rl_delete_text (from, to);
-
- _rl_copy_to_kill_ring (text, from < to);
-
- _rl_last_command_was_kill++;
- return 0;
-}
-
-/* Now REMEMBER! In order to do prepending or appending correctly, kill
- commands always make rl_point's original position be the FROM argument,
- and rl_point's extent be the TO argument. */
-
-/* **************************************************************** */
-/* */
-/* Killing Commands */
-/* */
-/* **************************************************************** */
-
-/* Delete the word at point, saving the text in the kill ring. */
-int
-rl_kill_word (count, key)
- int count, key;
-{
- int orig_point;
-
- if (count < 0)
- return (rl_backward_kill_word (-count, key));
- else
- {
- orig_point = rl_point;
- rl_forward_word (count, key);
-
- if (rl_point != orig_point)
- rl_kill_text (orig_point, rl_point);
-
- rl_point = orig_point;
- if (rl_editing_mode == emacs_mode)
- rl_mark = rl_point;
- }
- return 0;
-}
-
-/* Rubout the word before point, placing it on the kill ring. */
-int
-rl_backward_kill_word (count, ignore)
- int count, ignore;
-{
- int orig_point;
-
- if (count < 0)
- return (rl_kill_word (-count, ignore));
- else
- {
- orig_point = rl_point;
- rl_backward_word (count, ignore);
-
- if (rl_point != orig_point)
- rl_kill_text (orig_point, rl_point);
-
- if (rl_editing_mode == emacs_mode)
- rl_mark = rl_point;
- }
- return 0;
-}
-
-/* Kill from here to the end of the line. If DIRECTION is negative, kill
- back to the line start instead. */
-int
-rl_kill_line (direction, ignore)
- int direction, ignore;
-{
- int orig_point;
-
- if (direction < 0)
- return (rl_backward_kill_line (1, ignore));
- else
- {
- orig_point = rl_point;
- rl_end_of_line (1, ignore);
- if (orig_point != rl_point)
- rl_kill_text (orig_point, rl_point);
- rl_point = orig_point;
- if (rl_editing_mode == emacs_mode)
- rl_mark = rl_point;
- }
- return 0;
-}
-
-/* Kill backwards to the start of the line. If DIRECTION is negative, kill
- forwards to the line end instead. */
-int
-rl_backward_kill_line (direction, ignore)
- int direction, ignore;
-{
- int orig_point;
-
- if (direction < 0)
- return (rl_kill_line (1, ignore));
- else
- {
- if (!rl_point)
- rl_ding ();
- else
- {
- orig_point = rl_point;
- rl_beg_of_line (1, ignore);
- if (rl_point != orig_point)
- rl_kill_text (orig_point, rl_point);
- if (rl_editing_mode == emacs_mode)
- rl_mark = rl_point;
- }
- }
- return 0;
-}
-
-/* Kill the whole line, no matter where point is. */
-int
-rl_kill_full_line (count, ignore)
- int count, ignore;
-{
- rl_begin_undo_group ();
- rl_point = 0;
- rl_kill_text (rl_point, rl_end);
- rl_mark = 0;
- rl_end_undo_group ();
- return 0;
-}
-
-/* The next two functions mimic unix line editing behaviour, except they
- save the deleted text on the kill ring. This is safer than not saving
- it, and since we have a ring, nobody should get screwed. */
-
-/* This does what C-w does in Unix. We can't prevent people from
- using behaviour that they expect. */
-int
-rl_unix_word_rubout (count, key)
- int count, key;
-{
- int orig_point;
-
- if (rl_point == 0)
- rl_ding ();
- else
- {
- orig_point = rl_point;
- if (count <= 0)
- count = 1;
-
- while (count--)
- {
- while (rl_point && whitespace (rl_line_buffer[rl_point - 1]))
- rl_point--;
-
- while (rl_point && (whitespace (rl_line_buffer[rl_point - 1]) == 0))
- rl_point--;
- }
-
- rl_kill_text (orig_point, rl_point);
- if (rl_editing_mode == emacs_mode)
- rl_mark = rl_point;
- }
- return 0;
-}
-
-/* Here is C-u doing what Unix does. You don't *have* to use these
- key-bindings. We have a choice of killing the entire line, or
- killing from where we are to the start of the line. We choose the
- latter, because if you are a Unix weenie, then you haven't backspaced
- into the line at all, and if you aren't, then you know what you are
- doing. */
-int
-rl_unix_line_discard (count, key)
- int count, key;
-{
- if (rl_point == 0)
- rl_ding ();
- else
- {
- rl_kill_text (rl_point, 0);
- rl_point = 0;
- if (rl_editing_mode == emacs_mode)
- rl_mark = rl_point;
- }
- return 0;
-}
-
-/* Copy the text in the `region' to the kill ring. If DELETE is non-zero,
- delete the text from the line as well. */
-static int
-region_kill_internal (delete)
- int delete;
-{
- char *text;
-
- if (rl_mark != rl_point)
- {
- text = rl_copy_text (rl_point, rl_mark);
- if (delete)
- rl_delete_text (rl_point, rl_mark);
- _rl_copy_to_kill_ring (text, rl_point < rl_mark);
- }
-
- _rl_last_command_was_kill++;
- return 0;
-}
-
-/* Copy the text in the region to the kill ring. */
-int
-rl_copy_region_to_kill (count, ignore)
- int count, ignore;
-{
- return (region_kill_internal (0));
-}
-
-/* Kill the text between the point and mark. */
-int
-rl_kill_region (count, ignore)
- int count, ignore;
-{
- int r, npoint;
-
- npoint = (rl_point < rl_mark) ? rl_point : rl_mark;
- r = region_kill_internal (1);
- _rl_fix_point (1);
- rl_point = npoint;
- return r;
-}
-
-/* Copy COUNT words to the kill ring. DIR says which direction we look
- to find the words. */
-static int
-_rl_copy_word_as_kill (count, dir)
- int count, dir;
-{
- int om, op, r;
-
- om = rl_mark;
- op = rl_point;
-
- if (dir > 0)
- rl_forward_word (count, 0);
- else
- rl_backward_word (count, 0);
-
- rl_mark = rl_point;
-
- if (dir > 0)
- rl_backward_word (count, 0);
- else
- rl_forward_word (count, 0);
-
- r = region_kill_internal (0);
-
- rl_mark = om;
- rl_point = op;
-
- return r;
-}
-
-int
-rl_copy_forward_word (count, key)
- int count, key;
-{
- if (count < 0)
- return (rl_copy_backward_word (-count, key));
-
- return (_rl_copy_word_as_kill (count, 1));
-}
-
-int
-rl_copy_backward_word (count, key)
- int count, key;
-{
- if (count < 0)
- return (rl_copy_forward_word (-count, key));
-
- return (_rl_copy_word_as_kill (count, -1));
-}
-
-/* Yank back the last killed text. This ignores arguments. */
-int
-rl_yank (count, ignore)
- int count, ignore;
-{
- if (rl_kill_ring == 0)
- {
- _rl_abort_internal ();
- return -1;
- }
-
- _rl_set_mark_at_pos (rl_point);
- rl_insert_text (rl_kill_ring[rl_kill_index]);
- return 0;
-}
-
-/* If the last command was yank, or yank_pop, and the text just
- before point is identical to the current kill item, then
- delete that text from the line, rotate the index down, and
- yank back some other text. */
-int
-rl_yank_pop (count, key)
- int count, key;
-{
- int l, n;
-
- if (((rl_last_func != rl_yank_pop) && (rl_last_func != rl_yank)) ||
- !rl_kill_ring)
- {
- _rl_abort_internal ();
- return -1;
- }
-
- l = strlen (rl_kill_ring[rl_kill_index]);
- n = rl_point - l;
- if (n >= 0 && STREQN (rl_line_buffer + n, rl_kill_ring[rl_kill_index], l))
- {
- rl_delete_text (n, rl_point);
- rl_point = n;
- rl_kill_index--;
- if (rl_kill_index < 0)
- rl_kill_index = rl_kill_ring_length - 1;
- rl_yank (1, 0);
- return 0;
- }
- else
- {
- _rl_abort_internal ();
- return -1;
- }
-}
-
-/* Yank the COUNTh argument from the previous history line, skipping
- HISTORY_SKIP lines before looking for the `previous line'. */
-static int
-rl_yank_nth_arg_internal (count, ignore, history_skip)
- int count, ignore, history_skip;
-{
- register HIST_ENTRY *entry;
- char *arg;
- int i, pos;
-
- pos = where_history ();
-
- if (history_skip)
- {
- for (i = 0; i < history_skip; i++)
- entry = previous_history ();
- }
-
- entry = previous_history ();
-
- history_set_pos (pos);
-
- if (entry == 0)
- {
- rl_ding ();
- return -1;
- }
-
- arg = history_arg_extract (count, count, entry->line);
- if (!arg || !*arg)
- {
- rl_ding ();
- return -1;
- }
-
- rl_begin_undo_group ();
-
- _rl_set_mark_at_pos (rl_point);
-
-#if defined (VI_MODE)
- /* Vi mode always inserts a space before yanking the argument, and it
- inserts it right *after* rl_point. */
- if (rl_editing_mode == vi_mode)
- {
- rl_vi_append_mode (1, ignore);
- rl_insert_text (" ");
- }
-#endif /* VI_MODE */
-
- rl_insert_text (arg);
- free (arg);
-
- rl_end_undo_group ();
- return 0;
-}
-
-/* Yank the COUNTth argument from the previous history line. */
-int
-rl_yank_nth_arg (count, ignore)
- int count, ignore;
-{
- return (rl_yank_nth_arg_internal (count, ignore, 0));
-}
-
-/* Yank the last argument from the previous history line. This `knows'
- how rl_yank_nth_arg treats a count of `$'. With an argument, this
- behaves the same as rl_yank_nth_arg. */
-int
-rl_yank_last_arg (count, key)
- int count, key;
-{
- static int history_skip = 0;
- static int explicit_arg_p = 0;
- static int count_passed = 1;
- static int direction = 1;
- static int undo_needed = 0;
- int retval;
-
- if (rl_last_func != rl_yank_last_arg)
- {
- history_skip = 0;
- explicit_arg_p = rl_explicit_arg;
- count_passed = count;
- direction = 1;
- }
- else
- {
- if (undo_needed)
- rl_do_undo ();
- if (count < 1)
- direction = -direction;
- history_skip += direction;
- if (history_skip < 0)
- history_skip = 0;
- }
-
- if (explicit_arg_p)
- retval = rl_yank_nth_arg_internal (count_passed, key, history_skip);
- else
- retval = rl_yank_nth_arg_internal ('$', key, history_skip);
-
- undo_needed = retval == 0;
- return retval;
-}
-
-/* A special paste command for users of Cygnus's cygwin32. */
-#if defined (__CYGWIN__)
-#include <windows.h>
-
-int
-rl_paste_from_clipboard (count, key)
- int count, key;
-{
- char *data, *ptr;
- int len;
-
- if (OpenClipboard (NULL) == 0)
- return (0);
-
- data = (char *)GetClipboardData (CF_TEXT);
- if (data)
- {
- ptr = strchr (data, '\r');
- if (ptr)
- {
- len = ptr - data;
- ptr = (char *)xmalloc (len + 1);
- ptr[len] = '\0';
- strncpy (ptr, data, len);
- }
- else
- ptr = data;
- _rl_set_mark_at_pos (rl_point);
- rl_insert_text (ptr);
- if (ptr != data)
- free (ptr);
- CloseClipboard ();
- }
- return (0);
-}
-#endif /* __CYGWIN__ */
diff --git a/readline-4.3.orig/macro.c b/readline-4.3.orig/macro.c
deleted file mode 100644
index b73c3af..0000000
--- a/readline-4.3.orig/macro.c
+++ /dev/null
@@ -1,262 +0,0 @@
-/* macro.c -- keyboard macros for readline. */
-
-/* Copyright (C) 1994 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <sys/types.h>
-
-#if defined (HAVE_UNISTD_H)
-# include <unistd.h> /* for _POSIX_VERSION */
-#endif /* HAVE_UNISTD_H */
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#include <stdio.h>
-
-/* System-specific feature definitions and include files. */
-#include "rldefs.h"
-
-/* Some standard library routines. */
-#include "readline.h"
-#include "history.h"
-
-#include "rlprivate.h"
-#include "xmalloc.h"
-
-/* **************************************************************** */
-/* */
-/* Hacking Keyboard Macros */
-/* */
-/* **************************************************************** */
-
-/* The currently executing macro string. If this is non-zero,
- then it is a malloc ()'ed string where input is coming from. */
-char *rl_executing_macro = (char *)NULL;
-
-/* The offset in the above string to the next character to be read. */
-static int executing_macro_index;
-
-/* The current macro string being built. Characters get stuffed
- in here by add_macro_char (). */
-static char *current_macro = (char *)NULL;
-
-/* The size of the buffer allocated to current_macro. */
-static int current_macro_size;
-
-/* The index at which characters are being added to current_macro. */
-static int current_macro_index;
-
-/* A structure used to save nested macro strings.
- It is a linked list of string/index for each saved macro. */
-struct saved_macro {
- struct saved_macro *next;
- char *string;
- int sindex;
-};
-
-/* The list of saved macros. */
-static struct saved_macro *macro_list = (struct saved_macro *)NULL;
-
-/* Set up to read subsequent input from STRING.
- STRING is free ()'ed when we are done with it. */
-void
-_rl_with_macro_input (string)
- char *string;
-{
- _rl_push_executing_macro ();
- rl_executing_macro = string;
- executing_macro_index = 0;
- RL_SETSTATE(RL_STATE_MACROINPUT);
-}
-
-/* Return the next character available from a macro, or 0 if
- there are no macro characters. */
-int
-_rl_next_macro_key ()
-{
- if (rl_executing_macro == 0)
- return (0);
-
- if (rl_executing_macro[executing_macro_index] == 0)
- {
- _rl_pop_executing_macro ();
- return (_rl_next_macro_key ());
- }
-
- return (rl_executing_macro[executing_macro_index++]);
-}
-
-/* Save the currently executing macro on a stack of saved macros. */
-void
-_rl_push_executing_macro ()
-{
- struct saved_macro *saver;
-
- saver = (struct saved_macro *)xmalloc (sizeof (struct saved_macro));
- saver->next = macro_list;
- saver->sindex = executing_macro_index;
- saver->string = rl_executing_macro;
-
- macro_list = saver;
-}
-
-/* Discard the current macro, replacing it with the one
- on the top of the stack of saved macros. */
-void
-_rl_pop_executing_macro ()
-{
- struct saved_macro *macro;
-
- FREE (rl_executing_macro);
- rl_executing_macro = (char *)NULL;
- executing_macro_index = 0;
-
- if (macro_list)
- {
- macro = macro_list;
- rl_executing_macro = macro_list->string;
- executing_macro_index = macro_list->sindex;
- macro_list = macro_list->next;
- free (macro);
- }
-
- if (rl_executing_macro == 0)
- RL_UNSETSTATE(RL_STATE_MACROINPUT);
-}
-
-/* Add a character to the macro being built. */
-void
-_rl_add_macro_char (c)
- int c;
-{
- if (current_macro_index + 1 >= current_macro_size)
- {
- if (current_macro == 0)
- current_macro = (char *)xmalloc (current_macro_size = 25);
- else
- current_macro = (char *)xrealloc (current_macro, current_macro_size += 25);
- }
-
- current_macro[current_macro_index++] = c;
- current_macro[current_macro_index] = '\0';
-}
-
-void
-_rl_kill_kbd_macro ()
-{
- if (current_macro)
- {
- free (current_macro);
- current_macro = (char *) NULL;
- }
- current_macro_size = current_macro_index = 0;
-
- FREE (rl_executing_macro);
- rl_executing_macro = (char *) NULL;
- executing_macro_index = 0;
-
- RL_UNSETSTATE(RL_STATE_MACRODEF);
-}
-
-/* Begin defining a keyboard macro.
- Keystrokes are recorded as they are executed.
- End the definition with rl_end_kbd_macro ().
- If a numeric argument was explicitly typed, then append this
- definition to the end of the existing macro, and start by
- re-executing the existing macro. */
-int
-rl_start_kbd_macro (ignore1, ignore2)
- int ignore1, ignore2;
-{
- if (RL_ISSTATE (RL_STATE_MACRODEF))
- {
- _rl_abort_internal ();
- return -1;
- }
-
- if (rl_explicit_arg)
- {
- if (current_macro)
- _rl_with_macro_input (savestring (current_macro));
- }
- else
- current_macro_index = 0;
-
- RL_SETSTATE(RL_STATE_MACRODEF);
- return 0;
-}
-
-/* Stop defining a keyboard macro.
- A numeric argument says to execute the macro right now,
- that many times, counting the definition as the first time. */
-int
-rl_end_kbd_macro (count, ignore)
- int count, ignore;
-{
- if (RL_ISSTATE (RL_STATE_MACRODEF) == 0)
- {
- _rl_abort_internal ();
- return -1;
- }
-
- current_macro_index -= rl_key_sequence_length - 1;
- current_macro[current_macro_index] = '\0';
-
- RL_UNSETSTATE(RL_STATE_MACRODEF);
-
- return (rl_call_last_kbd_macro (--count, 0));
-}
-
-/* Execute the most recently defined keyboard macro.
- COUNT says how many times to execute it. */
-int
-rl_call_last_kbd_macro (count, ignore)
- int count, ignore;
-{
- if (current_macro == 0)
- _rl_abort_internal ();
-
- if (RL_ISSTATE (RL_STATE_MACRODEF))
- {
- rl_ding (); /* no recursive macros */
- current_macro[--current_macro_index] = '\0'; /* erase this char */
- return 0;
- }
-
- while (count--)
- _rl_with_macro_input (savestring (current_macro));
- return 0;
-}
-
-void
-rl_push_macro_input (macro)
- char *macro;
-{
- _rl_with_macro_input (macro);
-}
diff --git a/readline-4.3.orig/mbutil.c b/readline-4.3.orig/mbutil.c
deleted file mode 100644
index 50302f0..0000000
--- a/readline-4.3.orig/mbutil.c
+++ /dev/null
@@ -1,337 +0,0 @@
-/* mbutil.c -- readline multibyte character utility functions */
-
-/* Copyright (C) 2001 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <sys/types.h>
-#include <fcntl.h>
-#include "posixjmp.h"
-
-#if defined (HAVE_UNISTD_H)
-# include <unistd.h> /* for _POSIX_VERSION */
-#endif /* HAVE_UNISTD_H */
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#include <stdio.h>
-#include <ctype.h>
-
-/* System-specific feature definitions and include files. */
-#include "rldefs.h"
-#include "rlmbutil.h"
-
-#if defined (TIOCSTAT_IN_SYS_IOCTL)
-# include <sys/ioctl.h>
-#endif /* TIOCSTAT_IN_SYS_IOCTL */
-
-/* Some standard library routines. */
-#include "readline.h"
-
-#include "rlprivate.h"
-#include "xmalloc.h"
-
-/* Declared here so it can be shared between the readline and history
- libraries. */
-#if defined (HANDLE_MULTIBYTE)
-int rl_byte_oriented = 0;
-#else
-int rl_byte_oriented = 1;
-#endif
-
-/* **************************************************************** */
-/* */
-/* Multibyte Character Utility Functions */
-/* */
-/* **************************************************************** */
-
-#if defined(HANDLE_MULTIBYTE)
-
-static int
-_rl_find_next_mbchar_internal (string, seed, count, find_non_zero)
- char *string;
- int seed, count, find_non_zero;
-{
- size_t tmp = 0;
- mbstate_t ps;
- int point = 0;
- wchar_t wc;
-
- memset(&ps, 0, sizeof (mbstate_t));
- if (seed < 0)
- seed = 0;
- if (count <= 0)
- return seed;
-
- point = seed + _rl_adjust_point(string, seed, &ps);
- /* if this is true, means that seed was not pointed character
- started byte. So correct the point and consume count */
- if (seed < point)
- count --;
-
- while (count > 0)
- {
- tmp = mbrtowc (&wc, string+point, strlen(string + point), &ps);
- if ((size_t)(tmp) == (size_t)-1 || (size_t)(tmp) == (size_t)-2)
- {
- /* invalid bytes. asume a byte represents a character */
- point++;
- count--;
- /* reset states. */
- memset(&ps, 0, sizeof(mbstate_t));
- }
- else if (tmp == (size_t)0)
- /* found '\0' char */
- break;
- else
- {
- /* valid bytes */
- point += tmp;
- if (find_non_zero)
- {
- if (wcwidth (wc) == 0)
- continue;
- else
- count--;
- }
- else
- count--;
- }
- }
-
- if (find_non_zero)
- {
- tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps);
- while (wcwidth (wc) == 0)
- {
- point += tmp;
- tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps);
- if (tmp == (size_t)(0) || tmp == (size_t)(-1) || tmp == (size_t)(-2))
- break;
- }
- }
- return point;
-}
-
-static int
-_rl_find_prev_mbchar_internal (string, seed, find_non_zero)
- char *string;
- int seed, find_non_zero;
-{
- mbstate_t ps;
- int prev, non_zero_prev, point, length;
- size_t tmp;
- wchar_t wc;
-
- memset(&ps, 0, sizeof(mbstate_t));
- length = strlen(string);
-
- if (seed < 0)
- return 0;
- else if (length < seed)
- return length;
-
- prev = non_zero_prev = point = 0;
- while (point < seed)
- {
- tmp = mbrtowc (&wc, string + point, length - point, &ps);
- if ((size_t)(tmp) == (size_t)-1 || (size_t)(tmp) == (size_t)-2)
- {
- /* in this case, bytes are invalid or shorted to compose
- multibyte char, so assume that the first byte represents
- a single character anyway. */
- tmp = 1;
- /* clear the state of the byte sequence, because
- in this case effect of mbstate is undefined */
- memset(&ps, 0, sizeof (mbstate_t));
- }
- else if (tmp == 0)
- break; /* Found '\0' char. Can this happen? */
- else
- {
- if (find_non_zero)
- {
- if (wcwidth (wc) != 0)
- prev = point;
- }
- else
- prev = point;
- }
-
- point += tmp;
- }
-
- return prev;
-}
-
-/* return the number of bytes parsed from the multibyte sequence starting
- at src, if a non-L'\0' wide character was recognized. It returns 0,
- if a L'\0' wide character was recognized. It returns (size_t)(-1),
- if an invalid multibyte sequence was encountered. It returns (size_t)(-2)
- if it couldn't parse a complete multibyte character. */
-int
-_rl_get_char_len (src, ps)
- char *src;
- mbstate_t *ps;
-{
- size_t tmp;
-
- tmp = mbrlen((const char *)src, (size_t)strlen (src), ps);
- if (tmp == (size_t)(-2))
- {
- /* shorted to compose multibyte char */
- memset (ps, 0, sizeof(mbstate_t));
- return -2;
- }
- else if (tmp == (size_t)(-1))
- {
- /* invalid to compose multibyte char */
- /* initialize the conversion state */
- memset (ps, 0, sizeof(mbstate_t));
- return -1;
- }
- else if (tmp == (size_t)0)
- return 0;
- else
- return (int)tmp;
-}
-
-/* compare the specified two characters. If the characters matched,
- return 1. Otherwise return 0. */
-int
-_rl_compare_chars (buf1, pos1, ps1, buf2, pos2, ps2)
- char *buf1, *buf2;
- mbstate_t *ps1, *ps2;
- int pos1, pos2;
-{
- int i, w1, w2;
-
- if ((w1 = _rl_get_char_len (&buf1[pos1], ps1)) <= 0 ||
- (w2 = _rl_get_char_len (&buf2[pos2], ps2)) <= 0 ||
- (w1 != w2) ||
- (buf1[pos1] != buf2[pos2]))
- return 0;
-
- for (i = 1; i < w1; i++)
- if (buf1[pos1+i] != buf2[pos2+i])
- return 0;
-
- return 1;
-}
-
-/* adjust pointed byte and find mbstate of the point of string.
- adjusted point will be point <= adjusted_point, and returns
- differences of the byte(adjusted_point - point).
- if point is invalied (point < 0 || more than string length),
- it returns -1 */
-int
-_rl_adjust_point(string, point, ps)
- char *string;
- int point;
- mbstate_t *ps;
-{
- size_t tmp = 0;
- int length;
- int pos = 0;
-
- length = strlen(string);
- if (point < 0)
- return -1;
- if (length < point)
- return -1;
-
- while (pos < point)
- {
- tmp = mbrlen (string + pos, length - pos, ps);
- if((size_t)(tmp) == (size_t)-1 || (size_t)(tmp) == (size_t)-2)
- {
- /* in this case, bytes are invalid or shorted to compose
- multibyte char, so assume that the first byte represents
- a single character anyway. */
- pos++;
- /* clear the state of the byte sequence, because
- in this case effect of mbstate is undefined */
- memset (ps, 0, sizeof (mbstate_t));
- }
- else
- pos += tmp;
- }
-
- return (pos - point);
-}
-
-int
-_rl_is_mbchar_matched (string, seed, end, mbchar, length)
- char *string;
- int seed, end;
- char *mbchar;
- int length;
-{
- int i;
-
- if ((end - seed) < length)
- return 0;
-
- for (i = 0; i < length; i++)
- if (string[seed + i] != mbchar[i])
- return 0;
- return 1;
-}
-#endif /* HANDLE_MULTIBYTE */
-
-/* Find next `count' characters started byte point of the specified seed.
- If flags is MB_FIND_NONZERO, we look for non-zero-width multibyte
- characters. */
-#undef _rl_find_next_mbchar
-int
-_rl_find_next_mbchar (string, seed, count, flags)
- char *string;
- int seed, count, flags;
-{
-#if defined (HANDLE_MULTIBYTE)
- return _rl_find_next_mbchar_internal (string, seed, count, flags);
-#else
- return (seed + count);
-#endif
-}
-
-/* Find previous character started byte point of the specified seed.
- Returned point will be point <= seed. If flags is MB_FIND_NONZERO,
- we look for non-zero-width multibyte characters. */
-#undef _rl_find_prev_mbchar
-int
-_rl_find_prev_mbchar (string, seed, flags)
- char *string;
- int seed, flags;
-{
-#if defined (HANDLE_MULTIBYTE)
- return _rl_find_prev_mbchar_internal (string, seed, flags);
-#else
- return ((seed == 0) ? seed : seed - 1);
-#endif
-}
diff --git a/readline-4.3.orig/misc.c b/readline-4.3.orig/misc.c
deleted file mode 100644
index f3775d3..0000000
--- a/readline-4.3.orig/misc.c
+++ /dev/null
@@ -1,496 +0,0 @@
-/* misc.c -- miscellaneous bindable readline functions. */
-
-/* Copyright (C) 1987-2002 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#if defined (HAVE_UNISTD_H)
-# include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#if defined (HAVE_LOCALE_H)
-# include <locale.h>
-#endif
-
-#include <stdio.h>
-
-/* System-specific feature definitions and include files. */
-#include "rldefs.h"
-#include "rlmbutil.h"
-
-/* Some standard library routines. */
-#include "readline.h"
-#include "history.h"
-
-#include "rlprivate.h"
-#include "rlshell.h"
-#include "xmalloc.h"
-
-static int rl_digit_loop PARAMS((void));
-static void _rl_history_set_point PARAMS((void));
-
-/* Forward declarations used in this file */
-void _rl_free_history_entry PARAMS((HIST_ENTRY *));
-
-/* If non-zero, rl_get_previous_history and rl_get_next_history attempt
- to preserve the value of rl_point from line to line. */
-int _rl_history_preserve_point = 0;
-
-/* Saved target point for when _rl_history_preserve_point is set. Special
- value of -1 means that point is at the end of the line. */
-int _rl_history_saved_point = -1;
-
-/* **************************************************************** */
-/* */
-/* Numeric Arguments */
-/* */
-/* **************************************************************** */
-
-/* Handle C-u style numeric args, as well as M--, and M-digits. */
-static int
-rl_digit_loop ()
-{
- int key, c, sawminus, sawdigits;
-
- rl_save_prompt ();
-
- RL_SETSTATE(RL_STATE_NUMERICARG);
- sawminus = sawdigits = 0;
- while (1)
- {
- if (rl_numeric_arg > 1000000)
- {
- sawdigits = rl_explicit_arg = rl_numeric_arg = 0;
- rl_ding ();
- rl_restore_prompt ();
- rl_clear_message ();
- RL_UNSETSTATE(RL_STATE_NUMERICARG);
- return 1;
- }
- rl_message ("(arg: %d) ", rl_arg_sign * rl_numeric_arg);
- RL_SETSTATE(RL_STATE_MOREINPUT);
- key = c = rl_read_key ();
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
-
- if (c < 0)
- {
- _rl_abort_internal ();
- return -1;
- }
-
- /* If we see a key bound to `universal-argument' after seeing digits,
- it ends the argument but is otherwise ignored. */
- if (_rl_keymap[c].type == ISFUNC &&
- _rl_keymap[c].function == rl_universal_argument)
- {
- if (sawdigits == 0)
- {
- rl_numeric_arg *= 4;
- continue;
- }
- else
- {
- RL_SETSTATE(RL_STATE_MOREINPUT);
- key = rl_read_key ();
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
- rl_restore_prompt ();
- rl_clear_message ();
- RL_UNSETSTATE(RL_STATE_NUMERICARG);
- return (_rl_dispatch (key, _rl_keymap));
- }
- }
-
- c = UNMETA (c);
-
- if (_rl_digit_p (c))
- {
- rl_numeric_arg = rl_explicit_arg ? (rl_numeric_arg * 10) + c - '0' : c - '0';
- sawdigits = rl_explicit_arg = 1;
- }
- else if (c == '-' && rl_explicit_arg == 0)
- {
- rl_numeric_arg = sawminus = 1;
- rl_arg_sign = -1;
- }
- else
- {
- /* Make M-- command equivalent to M--1 command. */
- if (sawminus && rl_numeric_arg == 1 && rl_explicit_arg == 0)
- rl_explicit_arg = 1;
- rl_restore_prompt ();
- rl_clear_message ();
- RL_UNSETSTATE(RL_STATE_NUMERICARG);
- return (_rl_dispatch (key, _rl_keymap));
- }
- }
-
- /*NOTREACHED*/
-}
-
-/* Add the current digit to the argument in progress. */
-int
-rl_digit_argument (ignore, key)
- int ignore, key;
-{
- rl_execute_next (key);
- return (rl_digit_loop ());
-}
-
-/* What to do when you abort reading an argument. */
-int
-rl_discard_argument ()
-{
- rl_ding ();
- rl_clear_message ();
- _rl_init_argument ();
- return 0;
-}
-
-/* Create a default argument. */
-int
-_rl_init_argument ()
-{
- rl_numeric_arg = rl_arg_sign = 1;
- rl_explicit_arg = 0;
- return 0;
-}
-
-/* C-u, universal argument. Multiply the current argument by 4.
- Read a key. If the key has nothing to do with arguments, then
- dispatch on it. If the key is the abort character then abort. */
-int
-rl_universal_argument (count, key)
- int count, key;
-{
- rl_numeric_arg *= 4;
- return (rl_digit_loop ());
-}
-
-/* **************************************************************** */
-/* */
-/* History Utilities */
-/* */
-/* **************************************************************** */
-
-/* We already have a history library, and that is what we use to control
- the history features of readline. This is our local interface to
- the history mechanism. */
-
-/* While we are editing the history, this is the saved
- version of the original line. */
-HIST_ENTRY *_rl_saved_line_for_history = (HIST_ENTRY *)NULL;
-
-/* Set the history pointer back to the last entry in the history. */
-void
-_rl_start_using_history ()
-{
- using_history ();
- if (_rl_saved_line_for_history)
- _rl_free_history_entry (_rl_saved_line_for_history);
-
- _rl_saved_line_for_history = (HIST_ENTRY *)NULL;
-}
-
-/* Free the contents (and containing structure) of a HIST_ENTRY. */
-void
-_rl_free_history_entry (entry)
- HIST_ENTRY *entry;
-{
- if (entry == 0)
- return;
- if (entry->line)
- free (entry->line);
- free (entry);
-}
-
-/* Perhaps put back the current line if it has changed. */
-int
-rl_maybe_replace_line ()
-{
- HIST_ENTRY *temp;
-
- temp = current_history ();
- /* If the current line has changed, save the changes. */
- if (temp && ((UNDO_LIST *)(temp->data) != rl_undo_list))
- {
- temp = replace_history_entry (where_history (), rl_line_buffer, (histdata_t)rl_undo_list);
- free (temp->line);
- free (temp);
- }
- return 0;
-}
-
-/* Restore the _rl_saved_line_for_history if there is one. */
-int
-rl_maybe_unsave_line ()
-{
- if (_rl_saved_line_for_history)
- {
- rl_replace_line (_rl_saved_line_for_history->line, 0);
- rl_undo_list = (UNDO_LIST *)_rl_saved_line_for_history->data;
- _rl_free_history_entry (_rl_saved_line_for_history);
- _rl_saved_line_for_history = (HIST_ENTRY *)NULL;
- rl_point = rl_end; /* rl_replace_line sets rl_end */
- }
- else
- rl_ding ();
- return 0;
-}
-
-/* Save the current line in _rl_saved_line_for_history. */
-int
-rl_maybe_save_line ()
-{
- if (_rl_saved_line_for_history == 0)
- {
- _rl_saved_line_for_history = (HIST_ENTRY *)xmalloc (sizeof (HIST_ENTRY));
- _rl_saved_line_for_history->line = savestring (rl_line_buffer);
- _rl_saved_line_for_history->data = (char *)rl_undo_list;
- }
- return 0;
-}
-
-int
-_rl_free_saved_history_line ()
-{
- if (_rl_saved_line_for_history)
- {
- _rl_free_history_entry (_rl_saved_line_for_history);
- _rl_saved_line_for_history = (HIST_ENTRY *)NULL;
- }
- return 0;
-}
-
-static void
-_rl_history_set_point ()
-{
- rl_point = (_rl_history_preserve_point && _rl_history_saved_point != -1)
- ? _rl_history_saved_point
- : rl_end;
- if (rl_point > rl_end)
- rl_point = rl_end;
-
-#if defined (VI_MODE)
- if (rl_editing_mode == vi_mode)
- rl_point = 0;
-#endif /* VI_MODE */
-
- if (rl_editing_mode == emacs_mode)
- rl_mark = (rl_point == rl_end ? 0 : rl_end);
-}
-
-void
-rl_replace_from_history (entry, flags)
- HIST_ENTRY *entry;
- int flags; /* currently unused */
-{
- rl_replace_line (entry->line, 0);
- rl_undo_list = (UNDO_LIST *)entry->data;
- rl_point = rl_end;
- rl_mark = 0;
-
-#if defined (VI_MODE)
- if (rl_editing_mode == vi_mode)
- {
- rl_point = 0;
- rl_mark = rl_end;
- }
-#endif
-}
-
-/* **************************************************************** */
-/* */
-/* History Commands */
-/* */
-/* **************************************************************** */
-
-/* Meta-< goes to the start of the history. */
-int
-rl_beginning_of_history (count, key)
- int count, key;
-{
- return (rl_get_previous_history (1 + where_history (), key));
-}
-
-/* Meta-> goes to the end of the history. (The current line). */
-int
-rl_end_of_history (count, key)
- int count, key;
-{
- rl_maybe_replace_line ();
- using_history ();
- rl_maybe_unsave_line ();
- return 0;
-}
-
-/* Move down to the next history line. */
-int
-rl_get_next_history (count, key)
- int count, key;
-{
- HIST_ENTRY *temp;
-
- if (count < 0)
- return (rl_get_previous_history (-count, key));
-
- if (count == 0)
- return 0;
-
- rl_maybe_replace_line ();
-
- /* either not saved by rl_newline or at end of line, so set appropriately. */
- if (_rl_history_saved_point == -1 && (rl_point || rl_end))
- _rl_history_saved_point = (rl_point == rl_end) ? -1 : rl_point;
-
- temp = (HIST_ENTRY *)NULL;
- while (count)
- {
- temp = next_history ();
- if (!temp)
- break;
- --count;
- }
-
- if (temp == 0)
- rl_maybe_unsave_line ();
- else
- {
- rl_replace_from_history (temp, 0);
- _rl_history_set_point ();
- }
- return 0;
-}
-
-/* Get the previous item out of our interactive history, making it the current
- line. If there is no previous history, just ding. */
-int
-rl_get_previous_history (count, key)
- int count, key;
-{
- HIST_ENTRY *old_temp, *temp;
-
- if (count < 0)
- return (rl_get_next_history (-count, key));
-
- if (count == 0)
- return 0;
-
- /* either not saved by rl_newline or at end of line, so set appropriately. */
- if (_rl_history_saved_point == -1 && (rl_point || rl_end))
- _rl_history_saved_point = (rl_point == rl_end) ? -1 : rl_point;
-
- /* If we don't have a line saved, then save this one. */
- rl_maybe_save_line ();
-
- /* If the current line has changed, save the changes. */
- rl_maybe_replace_line ();
-
- temp = old_temp = (HIST_ENTRY *)NULL;
- while (count)
- {
- temp = previous_history ();
- if (temp == 0)
- break;
-
- old_temp = temp;
- --count;
- }
-
- /* If there was a large argument, and we moved back to the start of the
- history, that is not an error. So use the last value found. */
- if (!temp && old_temp)
- temp = old_temp;
-
- if (temp == 0)
- rl_ding ();
- else
- {
- rl_replace_from_history (temp, 0);
- _rl_history_set_point ();
- }
- return 0;
-}
-
-/* **************************************************************** */
-/* */
-/* Editing Modes */
-/* */
-/* **************************************************************** */
-/* How to toggle back and forth between editing modes. */
-int
-rl_vi_editing_mode (count, key)
- int count, key;
-{
-#if defined (VI_MODE)
- _rl_set_insert_mode (RL_IM_INSERT, 1); /* vi mode ignores insert mode */
- rl_editing_mode = vi_mode;
- rl_vi_insertion_mode (1, key);
-#endif /* VI_MODE */
-
- return 0;
-}
-
-int
-rl_emacs_editing_mode (count, key)
- int count, key;
-{
- rl_editing_mode = emacs_mode;
- _rl_set_insert_mode (RL_IM_INSERT, 1); /* emacs mode default is insert mode */
- _rl_keymap = emacs_standard_keymap;
- return 0;
-}
-
-/* Function for the rest of the library to use to set insert/overwrite mode. */
-void
-_rl_set_insert_mode (im, force)
- int im, force;
-{
-#ifdef CURSOR_MODE
- _rl_set_cursor (im, force);
-#endif
-
- rl_insert_mode = im;
-}
-
-/* Toggle overwrite mode. A positive explicit argument selects overwrite
- mode. A negative or zero explicit argument selects insert mode. */
-int
-rl_overwrite_mode (count, key)
- int count, key;
-{
- if (rl_explicit_arg == 0)
- _rl_set_insert_mode (rl_insert_mode ^ 1, 0);
- else if (count > 0)
- _rl_set_insert_mode (RL_IM_OVERWRITE, 0);
- else
- _rl_set_insert_mode (RL_IM_INSERT, 0);
-
- return 0;
-}
diff --git a/readline-4.3.orig/nls.c b/readline-4.3.orig/nls.c
deleted file mode 100644
index 706c819..0000000
--- a/readline-4.3.orig/nls.c
+++ /dev/null
@@ -1,225 +0,0 @@
-/* nls.c -- skeletal internationalization code. */
-
-/* Copyright (C) 1996 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <sys/types.h>
-
-#include <stdio.h>
-
-#if defined (HAVE_UNISTD_H)
-# include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#if defined (HAVE_LOCALE_H)
-# include <locale.h>
-#endif
-
-#include <ctype.h>
-
-#include "rldefs.h"
-#include "readline.h"
-#include "rlshell.h"
-#include "rlprivate.h"
-
-#if !defined (HAVE_SETLOCALE)
-/* A list of legal values for the LANG or LC_CTYPE environment variables.
- If a locale name in this list is the value for the LC_ALL, LC_CTYPE,
- or LANG environment variable (using the first of those with a value),
- readline eight-bit mode is enabled. */
-static char *legal_lang_values[] =
-{
- "iso88591",
- "iso88592",
- "iso88593",
- "iso88594",
- "iso88595",
- "iso88596",
- "iso88597",
- "iso88598",
- "iso88599",
- "iso885910",
- "koi8r",
- 0
-};
-
-static char *normalize_codeset PARAMS((char *));
-static char *find_codeset PARAMS((char *, size_t *));
-#endif /* !HAVE_SETLOCALE */
-
-/* Check for LC_ALL, LC_CTYPE, and LANG and use the first with a value
- to decide the defaults for 8-bit character input and output. Returns
- 1 if we set eight-bit mode. */
-int
-_rl_init_eightbit ()
-{
-/* If we have setlocale(3), just check the current LC_CTYPE category
- value, and go into eight-bit mode if it's not C or POSIX. */
-#if defined (HAVE_SETLOCALE)
- char *t;
-
- /* Set the LC_CTYPE locale category from environment variables. */
- t = setlocale (LC_CTYPE, "");
- if (t && *t && (t[0] != 'C' || t[1]) && (STREQ (t, "POSIX") == 0))
- {
- _rl_meta_flag = 1;
- _rl_convert_meta_chars_to_ascii = 0;
- _rl_output_meta_chars = 1;
- return (1);
- }
- else
- return (0);
-
-#else /* !HAVE_SETLOCALE */
- char *lspec, *t;
- int i;
-
- /* We don't have setlocale. Finesse it. Check the environment for the
- appropriate variables and set eight-bit mode if they have the right
- values. */
- lspec = sh_get_env_value ("LC_ALL");
- if (lspec == 0) lspec = sh_get_env_value ("LC_CTYPE");
- if (lspec == 0) lspec = sh_get_env_value ("LANG");
- if (lspec == 0 || (t = normalize_codeset (lspec)) == 0)
- return (0);
- for (i = 0; t && legal_lang_values[i]; i++)
- if (STREQ (t, legal_lang_values[i]))
- {
- _rl_meta_flag = 1;
- _rl_convert_meta_chars_to_ascii = 0;
- _rl_output_meta_chars = 1;
- break;
- }
- free (t);
- return (legal_lang_values[i] ? 1 : 0);
-
-#endif /* !HAVE_SETLOCALE */
-}
-
-#if !defined (HAVE_SETLOCALE)
-static char *
-normalize_codeset (codeset)
- char *codeset;
-{
- size_t namelen, i;
- int len, all_digits;
- char *wp, *retval;
-
- codeset = find_codeset (codeset, &namelen);
-
- if (codeset == 0)
- return (codeset);
-
- all_digits = 1;
- for (len = 0, i = 0; i < namelen; i++)
- {
- if (ISALNUM ((unsigned char)codeset[i]))
- {
- len++;
- all_digits &= _rl_digit_p (codeset[i]);
- }
- }
-
- retval = (char *)malloc ((all_digits ? 3 : 0) + len + 1);
- if (retval == 0)
- return ((char *)0);
-
- wp = retval;
- /* Add `iso' to beginning of an all-digit codeset */
- if (all_digits)
- {
- *wp++ = 'i';
- *wp++ = 's';
- *wp++ = 'o';
- }
-
- for (i = 0; i < namelen; i++)
- if (ISALPHA ((unsigned char)codeset[i]))
- *wp++ = _rl_to_lower (codeset[i]);
- else if (_rl_digit_p (codeset[i]))
- *wp++ = codeset[i];
- *wp = '\0';
-
- return retval;
-}
-
-/* Isolate codeset portion of locale specification. */
-static char *
-find_codeset (name, lenp)
- char *name;
- size_t *lenp;
-{
- char *cp, *language, *result;
-
- cp = language = name;
- result = (char *)0;
-
- while (*cp && *cp != '_' && *cp != '@' && *cp != '+' && *cp != ',')
- cp++;
-
- /* This does not make sense: language has to be specified. As
- an exception we allow the variable to contain only the codeset
- name. Perhaps there are funny codeset names. */
- if (language == cp)
- {
- *lenp = strlen (language);
- result = language;
- }
- else
- {
- /* Next is the territory. */
- if (*cp == '_')
- do
- ++cp;
- while (*cp && *cp != '.' && *cp != '@' && *cp != '+' && *cp != ',' && *cp != '_');
-
- /* Now, finally, is the codeset. */
- result = cp;
- if (*cp == '.')
- do
- ++cp;
- while (*cp && *cp != '@');
-
- if (cp - result > 2)
- {
- result++;
- *lenp = cp - result;
- }
- else
- {
- *lenp = strlen (language);
- result = language;
- }
- }
-
- return result;
-}
-#endif /* !HAVE_SETLOCALE */
diff --git a/readline-4.3.orig/parens.c b/readline-4.3.orig/parens.c
deleted file mode 100644
index 54ef1f3..0000000
--- a/readline-4.3.orig/parens.c
+++ /dev/null
@@ -1,179 +0,0 @@
-/* parens.c -- Implementation of matching parentheses feature. */
-
-/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#include "rlconf.h"
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <stdio.h>
-#include <sys/types.h>
-
-#if defined (HAVE_UNISTD_H)
-# include <unistd.h>
-#endif
-
-#if defined (FD_SET) && !defined (HAVE_SELECT)
-# define HAVE_SELECT
-#endif
-
-#if defined (HAVE_SELECT)
-# include <sys/time.h>
-#endif /* HAVE_SELECT */
-#if defined (HAVE_SYS_SELECT_H)
-# include <sys/select.h>
-#endif
-
-#if defined (HAVE_STRING_H)
-# include <string.h>
-#else /* !HAVE_STRING_H */
-# include <strings.h>
-#endif /* !HAVE_STRING_H */
-
-#if !defined (strchr) && !defined (__STDC__)
-extern char *strchr (), *strrchr ();
-#endif /* !strchr && !__STDC__ */
-
-#include "readline.h"
-#include "rlprivate.h"
-
-static int find_matching_open PARAMS((char *, int, int));
-
-/* Non-zero means try to blink the matching open parenthesis when the
- close parenthesis is inserted. */
-#if defined (HAVE_SELECT)
-int rl_blink_matching_paren = 1;
-#else /* !HAVE_SELECT */
-int rl_blink_matching_paren = 0;
-#endif /* !HAVE_SELECT */
-
-static int _paren_blink_usec = 500000;
-
-/* Change emacs_standard_keymap to have bindings for paren matching when
- ON_OR_OFF is 1, change them back to self_insert when ON_OR_OFF == 0. */
-void
-_rl_enable_paren_matching (on_or_off)
- int on_or_off;
-{
- if (on_or_off)
- { /* ([{ */
- rl_bind_key_in_map (')', rl_insert_close, emacs_standard_keymap);
- rl_bind_key_in_map (']', rl_insert_close, emacs_standard_keymap);
- rl_bind_key_in_map ('}', rl_insert_close, emacs_standard_keymap);
- }
- else
- { /* ([{ */
- rl_bind_key_in_map (')', rl_insert, emacs_standard_keymap);
- rl_bind_key_in_map (']', rl_insert, emacs_standard_keymap);
- rl_bind_key_in_map ('}', rl_insert, emacs_standard_keymap);
- }
-}
-
-int
-rl_set_paren_blink_timeout (u)
- int u;
-{
- int o;
-
- o = _paren_blink_usec;
- if (u > 0)
- _paren_blink_usec = u;
- return (o);
-}
-
-int
-rl_insert_close (count, invoking_key)
- int count, invoking_key;
-{
- if (rl_explicit_arg || !rl_blink_matching_paren)
- _rl_insert_char (count, invoking_key);
- else
- {
-#if defined (HAVE_SELECT)
- int orig_point, match_point, ready;
- struct timeval timer;
- fd_set readfds;
-
- _rl_insert_char (1, invoking_key);
- (*rl_redisplay_function) ();
- match_point =
- find_matching_open (rl_line_buffer, rl_point - 2, invoking_key);
-
- /* Emacs might message or ring the bell here, but I don't. */
- if (match_point < 0)
- return -1;
-
- FD_ZERO (&readfds);
- FD_SET (fileno (rl_instream), &readfds);
- timer.tv_sec = 0;
- timer.tv_usec = _paren_blink_usec;
-
- orig_point = rl_point;
- rl_point = match_point;
- (*rl_redisplay_function) ();
- ready = select (1, &readfds, (fd_set *)NULL, (fd_set *)NULL, &timer);
- rl_point = orig_point;
-#else /* !HAVE_SELECT */
- _rl_insert_char (count, invoking_key);
-#endif /* !HAVE_SELECT */
- }
- return 0;
-}
-
-static int
-find_matching_open (string, from, closer)
- char *string;
- int from, closer;
-{
- register int i;
- int opener, level, delimiter;
-
- switch (closer)
- {
- case ']': opener = '['; break;
- case '}': opener = '{'; break;
- case ')': opener = '('; break;
- default:
- return (-1);
- }
-
- level = 1; /* The closer passed in counts as 1. */
- delimiter = 0; /* Delimited state unknown. */
-
- for (i = from; i > -1; i--)
- {
- if (delimiter && (string[i] == delimiter))
- delimiter = 0;
- else if (rl_basic_quote_characters && strchr (rl_basic_quote_characters, string[i]))
- delimiter = string[i];
- else if (!delimiter && (string[i] == closer))
- level++;
- else if (!delimiter && (string[i] == opener))
- level--;
-
- if (!level)
- break;
- }
- return (i);
-}
diff --git a/readline-4.3.orig/posixdir.h b/readline-4.3.orig/posixdir.h
deleted file mode 100644
index 505e279..0000000
--- a/readline-4.3.orig/posixdir.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/* posixdir.h -- Posix directory reading includes and defines. */
-
-/* Copyright (C) 1987,1991 Free Software Foundation, Inc.
-
- This file is part of GNU Bash, the Bourne Again SHell.
-
- Bash is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- Bash is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Bash; see the file COPYING. If not, write to the Free
- Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-/* This file should be included instead of <dirent.h> or <sys/dir.h>. */
-
-#if !defined (_POSIXDIR_H_)
-#define _POSIXDIR_H_
-
-#if defined (HAVE_DIRENT_H)
-# include <dirent.h>
-# define D_NAMLEN(d) (strlen ((d)->d_name))
-#else
-# if defined (HAVE_SYS_NDIR_H)
-# include <sys/ndir.h>
-# endif
-# if defined (HAVE_SYS_DIR_H)
-# include <sys/dir.h>
-# endif
-# if defined (HAVE_NDIR_H)
-# include <ndir.h>
-# endif
-# if !defined (dirent)
-# define dirent direct
-# endif /* !dirent */
-# define D_NAMLEN(d) ((d)->d_namlen)
-#endif /* !HAVE_DIRENT_H */
-
-#if defined (STRUCT_DIRENT_HAS_D_INO) && !defined (STRUCT_DIRENT_HAS_D_FILENO)
-# define d_fileno d_ino
-#endif
-
-#if defined (_POSIX_SOURCE) && (!defined (STRUCT_DIRENT_HAS_D_INO) || defined (BROKEN_DIRENT_D_INO))
-/* Posix does not require that the d_ino field be present, and some
- systems do not provide it. */
-# define REAL_DIR_ENTRY(dp) 1
-#else
-# define REAL_DIR_ENTRY(dp) (dp->d_ino != 0)
-#endif /* _POSIX_SOURCE */
-
-#endif /* !_POSIXDIR_H_ */
diff --git a/readline-4.3.orig/posixjmp.h b/readline-4.3.orig/posixjmp.h
deleted file mode 100644
index b52aa00..0000000
--- a/readline-4.3.orig/posixjmp.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* posixjmp.h -- wrapper for setjmp.h with changes for POSIX systems. */
-
-/* Copyright (C) 1987,1991 Free Software Foundation, Inc.
-
- This file is part of GNU Bash, the Bourne Again SHell.
-
- Bash is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- Bash is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Bash; see the file COPYING. If not, write to the Free
- Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#ifndef _POSIXJMP_H_
-#define _POSIXJMP_H_
-
-#include <setjmp.h>
-
-/* This *must* be included *after* config.h */
-
-#if defined (HAVE_POSIX_SIGSETJMP)
-# define procenv_t sigjmp_buf
-# if !defined (__OPENNT)
-# undef setjmp
-# define setjmp(x) sigsetjmp((x), 1)
-# undef longjmp
-# define longjmp(x, n) siglongjmp((x), (n))
-# endif /* !__OPENNT */
-#else
-# define procenv_t jmp_buf
-#endif
-
-#endif /* _POSIXJMP_H_ */
diff --git a/readline-4.3.orig/posixstat.h b/readline-4.3.orig/posixstat.h
deleted file mode 100644
index c93b528..0000000
--- a/readline-4.3.orig/posixstat.h
+++ /dev/null
@@ -1,142 +0,0 @@
-/* posixstat.h -- Posix stat(2) definitions for systems that
- don't have them. */
-
-/* Copyright (C) 1987,1991 Free Software Foundation, Inc.
-
- This file is part of GNU Bash, the Bourne Again SHell.
-
- Bash is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- Bash is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Bash; see the file COPYING. If not, write to the Free
- Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-/* This file should be included instead of <sys/stat.h>.
- It relies on the local sys/stat.h to work though. */
-#if !defined (_POSIXSTAT_H_)
-#define _POSIXSTAT_H_
-
-#include <sys/stat.h>
-
-#if defined (STAT_MACROS_BROKEN)
-# undef S_ISBLK
-# undef S_ISCHR
-# undef S_ISDIR
-# undef S_ISFIFO
-# undef S_ISREG
-# undef S_ISLNK
-#endif /* STAT_MACROS_BROKEN */
-
-/* These are guaranteed to work only on isc386 */
-#if !defined (S_IFDIR) && !defined (S_ISDIR)
-# define S_IFDIR 0040000
-#endif /* !S_IFDIR && !S_ISDIR */
-#if !defined (S_IFMT)
-# define S_IFMT 0170000
-#endif /* !S_IFMT */
-
-/* Posix 1003.1 5.6.1.1 <sys/stat.h> file types */
-
-/* Some Posix-wannabe systems define _S_IF* macros instead of S_IF*, but
- do not provide the S_IS* macros that Posix requires. */
-
-#if defined (_S_IFMT) && !defined (S_IFMT)
-#define S_IFMT _S_IFMT
-#endif
-#if defined (_S_IFIFO) && !defined (S_IFIFO)
-#define S_IFIFO _S_IFIFO
-#endif
-#if defined (_S_IFCHR) && !defined (S_IFCHR)
-#define S_IFCHR _S_IFCHR
-#endif
-#if defined (_S_IFDIR) && !defined (S_IFDIR)
-#define S_IFDIR _S_IFDIR
-#endif
-#if defined (_S_IFBLK) && !defined (S_IFBLK)
-#define S_IFBLK _S_IFBLK
-#endif
-#if defined (_S_IFREG) && !defined (S_IFREG)
-#define S_IFREG _S_IFREG
-#endif
-#if defined (_S_IFLNK) && !defined (S_IFLNK)
-#define S_IFLNK _S_IFLNK
-#endif
-#if defined (_S_IFSOCK) && !defined (S_IFSOCK)
-#define S_IFSOCK _S_IFSOCK
-#endif
-
-/* Test for each symbol individually and define the ones necessary (some
- systems claiming Posix compatibility define some but not all). */
-
-#if defined (S_IFBLK) && !defined (S_ISBLK)
-#define S_ISBLK(m) (((m)&S_IFMT) == S_IFBLK) /* block device */
-#endif
-
-#if defined (S_IFCHR) && !defined (S_ISCHR)
-#define S_ISCHR(m) (((m)&S_IFMT) == S_IFCHR) /* character device */
-#endif
-
-#if defined (S_IFDIR) && !defined (S_ISDIR)
-#define S_ISDIR(m) (((m)&S_IFMT) == S_IFDIR) /* directory */
-#endif
-
-#if defined (S_IFREG) && !defined (S_ISREG)
-#define S_ISREG(m) (((m)&S_IFMT) == S_IFREG) /* file */
-#endif
-
-#if defined (S_IFIFO) && !defined (S_ISFIFO)
-#define S_ISFIFO(m) (((m)&S_IFMT) == S_IFIFO) /* fifo - named pipe */
-#endif
-
-#if defined (S_IFLNK) && !defined (S_ISLNK)
-#define S_ISLNK(m) (((m)&S_IFMT) == S_IFLNK) /* symbolic link */
-#endif
-
-#if defined (S_IFSOCK) && !defined (S_ISSOCK)
-#define S_ISSOCK(m) (((m)&S_IFMT) == S_IFSOCK) /* socket */
-#endif
-
-/*
- * POSIX 1003.1 5.6.1.2 <sys/stat.h> File Modes
- */
-
-#if !defined (S_IRWXU)
-# if !defined (S_IREAD)
-# define S_IREAD 00400
-# define S_IWRITE 00200
-# define S_IEXEC 00100
-# endif /* S_IREAD */
-
-# if !defined (S_IRUSR)
-# define S_IRUSR S_IREAD /* read, owner */
-# define S_IWUSR S_IWRITE /* write, owner */
-# define S_IXUSR S_IEXEC /* execute, owner */
-
-# define S_IRGRP (S_IREAD >> 3) /* read, group */
-# define S_IWGRP (S_IWRITE >> 3) /* write, group */
-# define S_IXGRP (S_IEXEC >> 3) /* execute, group */
-
-# define S_IROTH (S_IREAD >> 6) /* read, other */
-# define S_IWOTH (S_IWRITE >> 6) /* write, other */
-# define S_IXOTH (S_IEXEC >> 6) /* execute, other */
-# endif /* !S_IRUSR */
-
-# define S_IRWXU (S_IRUSR | S_IWUSR | S_IXUSR)
-# define S_IRWXG (S_IRGRP | S_IWGRP | S_IXGRP)
-# define S_IRWXO (S_IROTH | S_IWOTH | S_IXOTH)
-#endif /* !S_IRWXU */
-
-/* These are non-standard, but are used in builtins.c$symbolic_umask() */
-#define S_IRUGO (S_IRUSR | S_IRGRP | S_IROTH)
-#define S_IWUGO (S_IWUSR | S_IWGRP | S_IWOTH)
-#define S_IXUGO (S_IXUSR | S_IXGRP | S_IXOTH)
-
-#endif /* _POSIXSTAT_H_ */
diff --git a/readline-4.3.orig/readline.c b/readline-4.3.orig/readline.c
deleted file mode 100644
index 28801f1..0000000
--- a/readline-4.3.orig/readline.c
+++ /dev/null
@@ -1,973 +0,0 @@
-/* readline.c -- a general facility for reading lines of input
- with emacs style editing and completion. */
-
-/* Copyright (C) 1987-2002 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <sys/types.h>
-#include "posixstat.h"
-#include <fcntl.h>
-#if defined (HAVE_SYS_FILE_H)
-# include <sys/file.h>
-#endif /* HAVE_SYS_FILE_H */
-
-#if defined (HAVE_UNISTD_H)
-# include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#if defined (HAVE_LOCALE_H)
-# include <locale.h>
-#endif
-
-#include <stdio.h>
-#include "posixjmp.h"
-
-/* System-specific feature definitions and include files. */
-#include "rldefs.h"
-#include "rlmbutil.h"
-
-#if defined (__EMX__)
-# define INCL_DOSPROCESS
-# include <os2.h>
-#endif /* __EMX__ */
-
-/* Some standard library routines. */
-#include "readline.h"
-#include "history.h"
-
-#include "rlprivate.h"
-#include "rlshell.h"
-#include "xmalloc.h"
-
-#ifndef RL_LIBRARY_VERSION
-# define RL_LIBRARY_VERSION "4.3"
-#endif
-
-#ifndef RL_READLINE_VERSION
-# define RL_READLINE_VERSION 0x0403
-#endif
-
-extern void _rl_free_history_entry PARAMS((HIST_ENTRY *));
-
-/* Forward declarations used in this file. */
-static char *readline_internal PARAMS((void));
-static void readline_initialize_everything PARAMS((void));
-
-static void bind_arrow_keys_internal PARAMS((Keymap));
-static void bind_arrow_keys PARAMS((void));
-
-static void readline_default_bindings PARAMS((void));
-
-/* **************************************************************** */
-/* */
-/* Line editing input utility */
-/* */
-/* **************************************************************** */
-
-const char *rl_library_version = RL_LIBRARY_VERSION;
-
-int rl_readline_version = RL_READLINE_VERSION;
-
-/* True if this is `real' readline as opposed to some stub substitute. */
-int rl_gnu_readline_p = 1;
-
-/* A pointer to the keymap that is currently in use.
- By default, it is the standard emacs keymap. */
-Keymap _rl_keymap = emacs_standard_keymap;
-
-/* The current style of editing. */
-int rl_editing_mode = emacs_mode;
-
-/* The current insert mode: input (the default) or overwrite */
-int rl_insert_mode = RL_IM_DEFAULT;
-
-/* Non-zero if we called this function from _rl_dispatch(). It's present
- so functions can find out whether they were called from a key binding
- or directly from an application. */
-int rl_dispatching;
-
-/* Non-zero if the previous command was a kill command. */
-int _rl_last_command_was_kill = 0;
-
-/* The current value of the numeric argument specified by the user. */
-int rl_numeric_arg = 1;
-
-/* Non-zero if an argument was typed. */
-int rl_explicit_arg = 0;
-
-/* Temporary value used while generating the argument. */
-int rl_arg_sign = 1;
-
-/* Non-zero means we have been called at least once before. */
-static int rl_initialized;
-
-#if 0
-/* If non-zero, this program is running in an EMACS buffer. */
-static int running_in_emacs;
-#endif
-
-/* Flags word encapsulating the current readline state. */
-int rl_readline_state = RL_STATE_NONE;
-
-/* The current offset in the current input line. */
-int rl_point;
-
-/* Mark in the current input line. */
-int rl_mark;
-
-/* Length of the current input line. */
-int rl_end;
-
-/* Make this non-zero to return the current input_line. */
-int rl_done;
-
-/* The last function executed by readline. */
-rl_command_func_t *rl_last_func = (rl_command_func_t *)NULL;
-
-/* Top level environment for readline_internal (). */
-procenv_t readline_top_level;
-
-/* The streams we interact with. */
-FILE *_rl_in_stream, *_rl_out_stream;
-
-/* The names of the streams that we do input and output to. */
-FILE *rl_instream = (FILE *)NULL;
-FILE *rl_outstream = (FILE *)NULL;
-
-/* Non-zero means echo characters as they are read. Defaults to no echo;
- set to 1 if there is a controlling terminal, we can get its attributes,
- and the attributes include `echo'. Look at rltty.c:prepare_terminal_settings
- for the code that sets it. */
-int readline_echoing_p = 0;
-
-/* Current prompt. */
-char *rl_prompt = (char *)NULL;
-int rl_visible_prompt_length = 0;
-
-/* Set to non-zero by calling application if it has already printed rl_prompt
- and does not want readline to do it the first time. */
-int rl_already_prompted = 0;
-
-/* The number of characters read in order to type this complete command. */
-int rl_key_sequence_length = 0;
-
-/* If non-zero, then this is the address of a function to call just
- before readline_internal_setup () prints the first prompt. */
-rl_hook_func_t *rl_startup_hook = (rl_hook_func_t *)NULL;
-
-/* If non-zero, this is the address of a function to call just before
- readline_internal_setup () returns and readline_internal starts
- reading input characters. */
-rl_hook_func_t *rl_pre_input_hook = (rl_hook_func_t *)NULL;
-
-/* What we use internally. You should always refer to RL_LINE_BUFFER. */
-static char *the_line;
-
-/* The character that can generate an EOF. Really read from
- the terminal driver... just defaulted here. */
-int _rl_eof_char = CTRL ('D');
-
-/* Non-zero makes this the next keystroke to read. */
-int rl_pending_input = 0;
-
-/* Pointer to a useful terminal name. */
-const char *rl_terminal_name = (const char *)NULL;
-
-/* Non-zero means to always use horizontal scrolling in line display. */
-int _rl_horizontal_scroll_mode = 0;
-
-/* Non-zero means to display an asterisk at the starts of history lines
- which have been modified. */
-int _rl_mark_modified_lines = 0;
-
-/* The style of `bell' notification preferred. This can be set to NO_BELL,
- AUDIBLE_BELL, or VISIBLE_BELL. */
-int _rl_bell_preference = AUDIBLE_BELL;
-
-/* String inserted into the line by rl_insert_comment (). */
-char *_rl_comment_begin;
-
-/* Keymap holding the function currently being executed. */
-Keymap rl_executing_keymap;
-
-/* Non-zero means to erase entire line, including prompt, on empty input lines. */
-int rl_erase_empty_line = 0;
-
-/* Non-zero means to read only this many characters rather than up to a
- character bound to accept-line. */
-int rl_num_chars_to_read;
-
-/* Line buffer and maintenence. */
-char *rl_line_buffer = (char *)NULL;
-int rl_line_buffer_len = 0;
-
-/* Forward declarations used by the display, termcap, and history code. */
-
-/* **************************************************************** */
-/* */
-/* `Forward' declarations */
-/* */
-/* **************************************************************** */
-
-/* Non-zero means do not parse any lines other than comments and
- parser directives. */
-unsigned char _rl_parsing_conditionalized_out = 0;
-
-/* Non-zero means to convert characters with the meta bit set to
- escape-prefixed characters so we can indirect through
- emacs_meta_keymap or vi_escape_keymap. */
-int _rl_convert_meta_chars_to_ascii = 1;
-
-/* Non-zero means to output characters with the meta bit set directly
- rather than as a meta-prefixed escape sequence. */
-int _rl_output_meta_chars = 0;
-
-/* **************************************************************** */
-/* */
-/* Top Level Functions */
-/* */
-/* **************************************************************** */
-
-/* Non-zero means treat 0200 bit in terminal input as Meta bit. */
-int _rl_meta_flag = 0; /* Forward declaration */
-
-/* Set up the prompt and expand it. Called from readline() and
- rl_callback_handler_install (). */
-int
-rl_set_prompt (prompt)
- const char *prompt;
-{
- FREE (rl_prompt);
- rl_prompt = prompt ? savestring (prompt) : (char *)NULL;
-
- rl_visible_prompt_length = rl_expand_prompt (rl_prompt);
- return 0;
-}
-
-/* Read a line of input. Prompt with PROMPT. An empty PROMPT means
- none. A return value of NULL means that EOF was encountered. */
-char *
-readline (prompt)
- const char *prompt;
-{
- char *value;
-
- /* If we are at EOF return a NULL string. */
- if (rl_pending_input == EOF)
- {
- rl_clear_pending_input ();
- return ((char *)NULL);
- }
-
- rl_set_prompt (prompt);
-
- rl_initialize ();
- (*rl_prep_term_function) (_rl_meta_flag);
-
-#if defined (HANDLE_SIGNALS)
- rl_set_signals ();
-#endif
-
- value = readline_internal ();
- (*rl_deprep_term_function) ();
-
-#if defined (HANDLE_SIGNALS)
- rl_clear_signals ();
-#endif
-
- return (value);
-}
-
-#if defined (READLINE_CALLBACKS)
-# define STATIC_CALLBACK
-#else
-# define STATIC_CALLBACK static
-#endif
-
-STATIC_CALLBACK void
-readline_internal_setup ()
-{
- char *nprompt;
-
- _rl_in_stream = rl_instream;
- _rl_out_stream = rl_outstream;
-
- if (rl_startup_hook)
- (*rl_startup_hook) ();
-
- /* If we're not echoing, we still want to at least print a prompt, because
- rl_redisplay will not do it for us. If the calling application has a
- custom redisplay function, though, let that function handle it. */
- if (readline_echoing_p == 0 && rl_redisplay_function == rl_redisplay)
- {
- if (rl_prompt && rl_already_prompted == 0)
- {
- nprompt = _rl_strip_prompt (rl_prompt);
- fprintf (_rl_out_stream, "%s", nprompt);
- fflush (_rl_out_stream);
- free (nprompt);
- }
- }
- else
- {
- if (rl_prompt && rl_already_prompted)
- rl_on_new_line_with_prompt ();
- else
- rl_on_new_line ();
- (*rl_redisplay_function) ();
- }
-
-#if defined (VI_MODE)
- if (rl_editing_mode == vi_mode)
- rl_vi_insertion_mode (1, 0);
-#endif /* VI_MODE */
-
- if (rl_pre_input_hook)
- (*rl_pre_input_hook) ();
-}
-
-STATIC_CALLBACK char *
-readline_internal_teardown (eof)
- int eof;
-{
- char *temp;
- HIST_ENTRY *entry;
-
- /* Restore the original of this history line, iff the line that we
- are editing was originally in the history, AND the line has changed. */
- entry = current_history ();
-
- if (entry && rl_undo_list)
- {
- temp = savestring (the_line);
- rl_revert_line (1, 0);
- entry = replace_history_entry (where_history (), the_line, (histdata_t)NULL);
- _rl_free_history_entry (entry);
-
- strcpy (the_line, temp);
- free (temp);
- }
-
- /* At any rate, it is highly likely that this line has an undo list. Get
- rid of it now. */
- if (rl_undo_list)
- rl_free_undo_list ();
-
- /* Restore normal cursor, if available. */
- _rl_set_insert_mode (RL_IM_INSERT, 0);
-
- return (eof ? (char *)NULL : savestring (the_line));
-}
-
-STATIC_CALLBACK int
-#if defined (READLINE_CALLBACKS)
-readline_internal_char ()
-#else
-readline_internal_charloop ()
-#endif
-{
- static int lastc, eof_found;
- int c, code, lk;
-
- lastc = -1;
- eof_found = 0;
-
-#if !defined (READLINE_CALLBACKS)
- while (rl_done == 0)
- {
-#endif
- lk = _rl_last_command_was_kill;
-
- code = setjmp (readline_top_level);
-
- if (code)
- (*rl_redisplay_function) ();
-
- if (rl_pending_input == 0)
- {
- /* Then initialize the argument and number of keys read. */
- _rl_init_argument ();
- rl_key_sequence_length = 0;
- }
-
- RL_SETSTATE(RL_STATE_READCMD);
- c = rl_read_key ();
- RL_UNSETSTATE(RL_STATE_READCMD);
-
- /* EOF typed to a non-blank line is a <NL>. */
- if (c == EOF && rl_end)
- c = NEWLINE;
-
- /* The character _rl_eof_char typed to blank line, and not as the
- previous character is interpreted as EOF. */
- if (((c == _rl_eof_char && lastc != c) || c == EOF) && !rl_end)
- {
-#if defined (READLINE_CALLBACKS)
- RL_SETSTATE(RL_STATE_DONE);
- return (rl_done = 1);
-#else
- eof_found = 1;
- break;
-#endif
- }
-
- lastc = c;
- _rl_dispatch ((unsigned char)c, _rl_keymap);
-
- /* If there was no change in _rl_last_command_was_kill, then no kill
- has taken place. Note that if input is pending we are reading
- a prefix command, so nothing has changed yet. */
- if (rl_pending_input == 0 && lk == _rl_last_command_was_kill)
- _rl_last_command_was_kill = 0;
-
-#if defined (VI_MODE)
- /* In vi mode, when you exit insert mode, the cursor moves back
- over the previous character. We explicitly check for that here. */
- if (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap)
- rl_vi_check ();
-#endif /* VI_MODE */
-
- if (rl_num_chars_to_read && rl_end >= rl_num_chars_to_read)
- {
- (*rl_redisplay_function) ();
- rl_newline (1, '\n');
- }
-
- if (rl_done == 0)
- (*rl_redisplay_function) ();
-
- /* If the application writer has told us to erase the entire line if
- the only character typed was something bound to rl_newline, do so. */
- if (rl_erase_empty_line && rl_done && rl_last_func == rl_newline &&
- rl_point == 0 && rl_end == 0)
- _rl_erase_entire_line ();
-
-#if defined (READLINE_CALLBACKS)
- return 0;
-#else
- }
-
- return (eof_found);
-#endif
-}
-
-#if defined (READLINE_CALLBACKS)
-static int
-readline_internal_charloop ()
-{
- int eof = 1;
-
- while (rl_done == 0)
- eof = readline_internal_char ();
- return (eof);
-}
-#endif /* READLINE_CALLBACKS */
-
-/* Read a line of input from the global rl_instream, doing output on
- the global rl_outstream.
- If rl_prompt is non-null, then that is our prompt. */
-static char *
-readline_internal ()
-{
- int eof;
-
- readline_internal_setup ();
- eof = readline_internal_charloop ();
- return (readline_internal_teardown (eof));
-}
-
-void
-_rl_init_line_state ()
-{
- rl_point = rl_end = rl_mark = 0;
- the_line = rl_line_buffer;
- the_line[0] = 0;
-}
-
-void
-_rl_set_the_line ()
-{
- the_line = rl_line_buffer;
-}
-
-/* Do the command associated with KEY in MAP.
- If the associated command is really a keymap, then read
- another key, and dispatch into that map. */
-int
-_rl_dispatch (key, map)
- register int key;
- Keymap map;
-{
- return _rl_dispatch_subseq (key, map, 0);
-}
-
-int
-_rl_dispatch_subseq (key, map, got_subseq)
- register int key;
- Keymap map;
- int got_subseq;
-{
- int r, newkey;
- char *macro;
- rl_command_func_t *func;
-
- if (META_CHAR (key) && _rl_convert_meta_chars_to_ascii)
- {
- if (map[ESC].type == ISKMAP)
- {
- if (RL_ISSTATE (RL_STATE_MACRODEF))
- _rl_add_macro_char (ESC);
- map = FUNCTION_TO_KEYMAP (map, ESC);
- key = UNMETA (key);
- rl_key_sequence_length += 2;
- return (_rl_dispatch (key, map));
- }
- else
- rl_ding ();
- return 0;
- }
-
- if (RL_ISSTATE (RL_STATE_MACRODEF))
- _rl_add_macro_char (key);
-
- r = 0;
- switch (map[key].type)
- {
- case ISFUNC:
- func = map[key].function;
- if (func)
- {
- /* Special case rl_do_lowercase_version (). */
- if (func == rl_do_lowercase_version)
- return (_rl_dispatch (_rl_to_lower (key), map));
-
- rl_executing_keymap = map;
-
-#if 0
- _rl_suppress_redisplay = (map[key].function == rl_insert) && _rl_input_available ();
-#endif
-
- rl_dispatching = 1;
- RL_SETSTATE(RL_STATE_DISPATCHING);
- r = (*map[key].function)(rl_numeric_arg * rl_arg_sign, key);
- RL_UNSETSTATE(RL_STATE_DISPATCHING);
- rl_dispatching = 0;
-
- /* If we have input pending, then the last command was a prefix
- command. Don't change the state of rl_last_func. Otherwise,
- remember the last command executed in this variable. */
- if (rl_pending_input == 0 && map[key].function != rl_digit_argument)
- rl_last_func = map[key].function;
- }
- else if (map[ANYOTHERKEY].function)
- {
- /* OK, there's no function bound in this map, but there is a
- shadow function that was overridden when the current keymap
- was created. Return -2 to note that. */
- _rl_unget_char (key);
- return -2;
- }
- else if (got_subseq)
- {
- /* Return -1 to note that we're in a subsequence, but we don't
- have a matching key, nor was one overridden. This means
- we need to back up the recursion chain and find the last
- subsequence that is bound to a function. */
- _rl_unget_char (key);
- return -1;
- }
- else
- {
- _rl_abort_internal ();
- return -1;
- }
- break;
-
- case ISKMAP:
- if (map[key].function != 0)
- {
-#if defined (VI_MODE)
- /* The only way this test will be true is if a subsequence has been
- bound starting with ESC, generally the arrow keys. What we do is
- check whether there's input in the queue, which there generally
- will be if an arrow key has been pressed, and, if there's not,
- just dispatch to (what we assume is) rl_vi_movement_mode right
- away. This is essentially an input test with a zero timeout. */
- if (rl_editing_mode == vi_mode && key == ESC && map == vi_insertion_keymap
- && _rl_input_queued (0) == 0)
- return (_rl_dispatch (ANYOTHERKEY, FUNCTION_TO_KEYMAP (map, key)));
-#endif
-
- rl_key_sequence_length++;
-
- if (key == ESC)
- RL_SETSTATE(RL_STATE_METANEXT);
- RL_SETSTATE(RL_STATE_MOREINPUT);
- newkey = rl_read_key ();
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
- if (key == ESC)
- RL_UNSETSTATE(RL_STATE_METANEXT);
-
- if (newkey < 0)
- {
- _rl_abort_internal ();
- return -1;
- }
-
- r = _rl_dispatch_subseq (newkey, FUNCTION_TO_KEYMAP (map, key), got_subseq || map[ANYOTHERKEY].function);
-
- if (r == -2)
- /* We didn't match anything, and the keymap we're indexed into
- shadowed a function previously bound to that prefix. Call
- the function. The recursive call to _rl_dispatch_subseq has
- already taken care of pushing any necessary input back onto
- the input queue with _rl_unget_char. */
- r = _rl_dispatch (ANYOTHERKEY, FUNCTION_TO_KEYMAP (map, key));
- else if (r && map[ANYOTHERKEY].function)
- {
- /* We didn't match (r is probably -1), so return something to
- tell the caller that it should try ANYOTHERKEY for an
- overridden function. */
- _rl_unget_char (key);
- return -2;
- }
- else if (r && got_subseq)
- {
- /* OK, back up the chain. */
- _rl_unget_char (key);
- return -1;
- }
- }
- else
- {
- _rl_abort_internal ();
- return -1;
- }
- break;
-
- case ISMACR:
- if (map[key].function != 0)
- {
- macro = savestring ((char *)map[key].function);
- _rl_with_macro_input (macro);
- return 0;
- }
- break;
- }
-#if defined (VI_MODE)
- if (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap &&
- _rl_vi_textmod_command (key))
- _rl_vi_set_last (key, rl_numeric_arg, rl_arg_sign);
-#endif
- return (r);
-}
-
-/* **************************************************************** */
-/* */
-/* Initializations */
-/* */
-/* **************************************************************** */
-
-/* Initialize readline (and terminal if not already). */
-int
-rl_initialize ()
-{
- /* If we have never been called before, initialize the
- terminal and data structures. */
- if (!rl_initialized)
- {
- RL_SETSTATE(RL_STATE_INITIALIZING);
- readline_initialize_everything ();
- RL_UNSETSTATE(RL_STATE_INITIALIZING);
- rl_initialized++;
- RL_SETSTATE(RL_STATE_INITIALIZED);
- }
-
- /* Initalize the current line information. */
- _rl_init_line_state ();
-
- /* We aren't done yet. We haven't even gotten started yet! */
- rl_done = 0;
- RL_UNSETSTATE(RL_STATE_DONE);
-
- /* Tell the history routines what is going on. */
- _rl_start_using_history ();
-
- /* Make the display buffer match the state of the line. */
- rl_reset_line_state ();
-
- /* No such function typed yet. */
- rl_last_func = (rl_command_func_t *)NULL;
-
- /* Parsing of key-bindings begins in an enabled state. */
- _rl_parsing_conditionalized_out = 0;
-
-#if defined (VI_MODE)
- if (rl_editing_mode == vi_mode)
- _rl_vi_initialize_line ();
-#endif
-
- /* Each line starts in insert mode (the default). */
- _rl_set_insert_mode (RL_IM_DEFAULT, 1);
-
- return 0;
-}
-
-#if 0
-#if defined (__EMX__)
-static void
-_emx_build_environ ()
-{
- TIB *tibp;
- PIB *pibp;
- char *t, **tp;
- int c;
-
- DosGetInfoBlocks (&tibp, &pibp);
- t = pibp->pib_pchenv;
- for (c = 1; *t; c++)
- t += strlen (t) + 1;
- tp = environ = (char **)xmalloc ((c + 1) * sizeof (char *));
- t = pibp->pib_pchenv;
- while (*t)
- {
- *tp++ = t;
- t += strlen (t) + 1;
- }
- *tp = 0;
-}
-#endif /* __EMX__ */
-#endif
-
-/* Initialize the entire state of the world. */
-static void
-readline_initialize_everything ()
-{
-#if 0
-#if defined (__EMX__)
- if (environ == 0)
- _emx_build_environ ();
-#endif
-#endif
-
-#if 0
- /* Find out if we are running in Emacs -- UNUSED. */
- running_in_emacs = sh_get_env_value ("EMACS") != (char *)0;
-#endif
-
- /* Set up input and output if they are not already set up. */
- if (!rl_instream)
- rl_instream = stdin;
-
- if (!rl_outstream)
- rl_outstream = stdout;
-
- /* Bind _rl_in_stream and _rl_out_stream immediately. These values
- may change, but they may also be used before readline_internal ()
- is called. */
- _rl_in_stream = rl_instream;
- _rl_out_stream = rl_outstream;
-
- /* Allocate data structures. */
- if (rl_line_buffer == 0)
- rl_line_buffer = (char *)xmalloc (rl_line_buffer_len = DEFAULT_BUFFER_SIZE);
-
- /* Initialize the terminal interface. */
- if (rl_terminal_name == 0)
- rl_terminal_name = sh_get_env_value ("TERM");
- _rl_init_terminal_io (rl_terminal_name);
-
- /* Bind tty characters to readline functions. */
- readline_default_bindings ();
-
- /* Initialize the function names. */
- rl_initialize_funmap ();
-
- /* Decide whether we should automatically go into eight-bit mode. */
- _rl_init_eightbit ();
-
- /* Read in the init file. */
- rl_read_init_file ((char *)NULL);
-
- /* XXX */
- if (_rl_horizontal_scroll_mode && _rl_term_autowrap)
- {
- _rl_screenwidth--;
- _rl_screenchars -= _rl_screenheight;
- }
-
- /* Override the effect of any `set keymap' assignments in the
- inputrc file. */
- rl_set_keymap_from_edit_mode ();
-
- /* Try to bind a common arrow key prefix, if not already bound. */
- bind_arrow_keys ();
-
- /* Enable the meta key, if this terminal has one. */
- if (_rl_enable_meta)
- _rl_enable_meta_key ();
-
- /* If the completion parser's default word break characters haven't
- been set yet, then do so now. */
- if (rl_completer_word_break_characters == (char *)NULL)
- rl_completer_word_break_characters = rl_basic_word_break_characters;
-}
-
-/* If this system allows us to look at the values of the regular
- input editing characters, then bind them to their readline
- equivalents, iff the characters are not bound to keymaps. */
-static void
-readline_default_bindings ()
-{
- rl_tty_set_default_bindings (_rl_keymap);
-}
-
-/* Bind some common arrow key sequences in MAP. */
-static void
-bind_arrow_keys_internal (map)
- Keymap map;
-{
- Keymap xkeymap;
-
- xkeymap = _rl_keymap;
- _rl_keymap = map;
-
-#if defined (__MSDOS__)
- _rl_bind_if_unbound ("\033[0A", rl_get_previous_history);
- _rl_bind_if_unbound ("\033[0B", rl_backward_char);
- _rl_bind_if_unbound ("\033[0C", rl_forward_char);
- _rl_bind_if_unbound ("\033[0D", rl_get_next_history);
-#endif
-
- _rl_bind_if_unbound ("\033[A", rl_get_previous_history);
- _rl_bind_if_unbound ("\033[B", rl_get_next_history);
- _rl_bind_if_unbound ("\033[C", rl_forward_char);
- _rl_bind_if_unbound ("\033[D", rl_backward_char);
- _rl_bind_if_unbound ("\033[H", rl_beg_of_line);
- _rl_bind_if_unbound ("\033[F", rl_end_of_line);
-
- _rl_bind_if_unbound ("\033OA", rl_get_previous_history);
- _rl_bind_if_unbound ("\033OB", rl_get_next_history);
- _rl_bind_if_unbound ("\033OC", rl_forward_char);
- _rl_bind_if_unbound ("\033OD", rl_backward_char);
- _rl_bind_if_unbound ("\033OH", rl_beg_of_line);
- _rl_bind_if_unbound ("\033OF", rl_end_of_line);
-
- _rl_keymap = xkeymap;
-}
-
-/* Try and bind the common arrow key prefixes after giving termcap and
- the inputrc file a chance to bind them and create `real' keymaps
- for the arrow key prefix. */
-static void
-bind_arrow_keys ()
-{
- bind_arrow_keys_internal (emacs_standard_keymap);
-
-#if defined (VI_MODE)
- bind_arrow_keys_internal (vi_movement_keymap);
- bind_arrow_keys_internal (vi_insertion_keymap);
-#endif
-}
-
-/* **************************************************************** */
-/* */
-/* Saving and Restoring Readline's state */
-/* */
-/* **************************************************************** */
-
-int
-rl_save_state (sp)
- struct readline_state *sp;
-{
- if (sp == 0)
- return -1;
-
- sp->point = rl_point;
- sp->end = rl_end;
- sp->mark = rl_mark;
- sp->buffer = rl_line_buffer;
- sp->buflen = rl_line_buffer_len;
- sp->ul = rl_undo_list;
- sp->prompt = rl_prompt;
-
- sp->rlstate = rl_readline_state;
- sp->done = rl_done;
- sp->kmap = _rl_keymap;
-
- sp->lastfunc = rl_last_func;
- sp->insmode = rl_insert_mode;
- sp->edmode = rl_editing_mode;
- sp->kseqlen = rl_key_sequence_length;
- sp->inf = rl_instream;
- sp->outf = rl_outstream;
- sp->pendingin = rl_pending_input;
- sp->macro = rl_executing_macro;
-
- sp->catchsigs = rl_catch_signals;
- sp->catchsigwinch = rl_catch_sigwinch;
-
- return (0);
-}
-
-int
-rl_restore_state (sp)
- struct readline_state *sp;
-{
- if (sp == 0)
- return -1;
-
- rl_point = sp->point;
- rl_end = sp->end;
- rl_mark = sp->mark;
- the_line = rl_line_buffer = sp->buffer;
- rl_line_buffer_len = sp->buflen;
- rl_undo_list = sp->ul;
- rl_prompt = sp->prompt;
-
- rl_readline_state = sp->rlstate;
- rl_done = sp->done;
- _rl_keymap = sp->kmap;
-
- rl_last_func = sp->lastfunc;
- rl_insert_mode = sp->insmode;
- rl_editing_mode = sp->edmode;
- rl_key_sequence_length = sp->kseqlen;
- rl_instream = sp->inf;
- rl_outstream = sp->outf;
- rl_pending_input = sp->pendingin;
- rl_executing_macro = sp->macro;
-
- rl_catch_signals = sp->catchsigs;
- rl_catch_sigwinch = sp->catchsigwinch;
-
- return (0);
-}
diff --git a/readline-4.3.orig/readline.h b/readline-4.3.orig/readline.h
deleted file mode 100644
index f11b3d0..0000000
--- a/readline-4.3.orig/readline.h
+++ /dev/null
@@ -1,799 +0,0 @@
-/* Readline.h -- the names of functions callable from within readline. */
-
-/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if !defined (_READLINE_H_)
-#define _READLINE_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#if defined (READLINE_LIBRARY)
-# include "rlstdc.h"
-# include "rltypedefs.h"
-# include "keymaps.h"
-# include "tilde.h"
-#else
-# include <readline/rlstdc.h>
-# include <readline/rltypedefs.h>
-# include <readline/keymaps.h>
-# include <readline/tilde.h>
-#endif
-
-/* Hex-encoded Readline version number. */
-#define RL_READLINE_VERSION 0x0403 /* Readline 4.3 */
-#define RL_VERSION_MAJOR 4
-#define RL_VERSION_MINOR 3
-
-/* Readline data structures. */
-
-/* Maintaining the state of undo. We remember individual deletes and inserts
- on a chain of things to do. */
-
-/* The actions that undo knows how to undo. Notice that UNDO_DELETE means
- to insert some text, and UNDO_INSERT means to delete some text. I.e.,
- the code tells undo what to undo, not how to undo it. */
-enum undo_code { UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END };
-
-/* What an element of THE_UNDO_LIST looks like. */
-typedef struct undo_list {
- struct undo_list *next;
- int start, end; /* Where the change took place. */
- char *text; /* The text to insert, if undoing a delete. */
- enum undo_code what; /* Delete, Insert, Begin, End. */
-} UNDO_LIST;
-
-/* The current undo list for RL_LINE_BUFFER. */
-extern UNDO_LIST *rl_undo_list;
-
-/* The data structure for mapping textual names to code addresses. */
-typedef struct _funmap {
- const char *name;
- rl_command_func_t *function;
-} FUNMAP;
-
-extern FUNMAP **funmap;
-
-/* **************************************************************** */
-/* */
-/* Functions available to bind to key sequences */
-/* */
-/* **************************************************************** */
-
-/* Bindable commands for numeric arguments. */
-extern int rl_digit_argument PARAMS((int, int));
-extern int rl_universal_argument PARAMS((int, int));
-
-/* Bindable commands for moving the cursor. */
-extern int rl_forward_byte PARAMS((int, int));
-extern int rl_forward_char PARAMS((int, int));
-extern int rl_forward PARAMS((int, int));
-extern int rl_backward_byte PARAMS((int, int));
-extern int rl_backward_char PARAMS((int, int));
-extern int rl_backward PARAMS((int, int));
-extern int rl_beg_of_line PARAMS((int, int));
-extern int rl_end_of_line PARAMS((int, int));
-extern int rl_forward_word PARAMS((int, int));
-extern int rl_backward_word PARAMS((int, int));
-extern int rl_refresh_line PARAMS((int, int));
-extern int rl_clear_screen PARAMS((int, int));
-extern int rl_arrow_keys PARAMS((int, int));
-
-/* Bindable commands for inserting and deleting text. */
-extern int rl_insert PARAMS((int, int));
-extern int rl_quoted_insert PARAMS((int, int));
-extern int rl_tab_insert PARAMS((int, int));
-extern int rl_newline PARAMS((int, int));
-extern int rl_do_lowercase_version PARAMS((int, int));
-extern int rl_rubout PARAMS((int, int));
-extern int rl_delete PARAMS((int, int));
-extern int rl_rubout_or_delete PARAMS((int, int));
-extern int rl_delete_horizontal_space PARAMS((int, int));
-extern int rl_delete_or_show_completions PARAMS((int, int));
-extern int rl_insert_comment PARAMS((int, int));
-
-/* Bindable commands for changing case. */
-extern int rl_upcase_word PARAMS((int, int));
-extern int rl_downcase_word PARAMS((int, int));
-extern int rl_capitalize_word PARAMS((int, int));
-
-/* Bindable commands for transposing characters and words. */
-extern int rl_transpose_words PARAMS((int, int));
-extern int rl_transpose_chars PARAMS((int, int));
-
-/* Bindable commands for searching within a line. */
-extern int rl_char_search PARAMS((int, int));
-extern int rl_backward_char_search PARAMS((int, int));
-
-/* Bindable commands for readline's interface to the command history. */
-extern int rl_beginning_of_history PARAMS((int, int));
-extern int rl_end_of_history PARAMS((int, int));
-extern int rl_get_next_history PARAMS((int, int));
-extern int rl_get_previous_history PARAMS((int, int));
-
-/* Bindable commands for managing the mark and region. */
-extern int rl_set_mark PARAMS((int, int));
-extern int rl_exchange_point_and_mark PARAMS((int, int));
-
-/* Bindable commands to set the editing mode (emacs or vi). */
-extern int rl_vi_editing_mode PARAMS((int, int));
-extern int rl_emacs_editing_mode PARAMS((int, int));
-
-/* Bindable commands to change the insert mode (insert or overwrite) */
-extern int rl_overwrite_mode PARAMS((int, int));
-
-/* Bindable commands for managing key bindings. */
-extern int rl_re_read_init_file PARAMS((int, int));
-extern int rl_dump_functions PARAMS((int, int));
-extern int rl_dump_macros PARAMS((int, int));
-extern int rl_dump_variables PARAMS((int, int));
-
-/* Bindable commands for word completion. */
-extern int rl_complete PARAMS((int, int));
-extern int rl_possible_completions PARAMS((int, int));
-extern int rl_insert_completions PARAMS((int, int));
-extern int rl_menu_complete PARAMS((int, int));
-
-/* Bindable commands for killing and yanking text, and managing the kill ring. */
-extern int rl_kill_word PARAMS((int, int));
-extern int rl_backward_kill_word PARAMS((int, int));
-extern int rl_kill_line PARAMS((int, int));
-extern int rl_backward_kill_line PARAMS((int, int));
-extern int rl_kill_full_line PARAMS((int, int));
-extern int rl_unix_word_rubout PARAMS((int, int));
-extern int rl_unix_line_discard PARAMS((int, int));
-extern int rl_copy_region_to_kill PARAMS((int, int));
-extern int rl_kill_region PARAMS((int, int));
-extern int rl_copy_forward_word PARAMS((int, int));
-extern int rl_copy_backward_word PARAMS((int, int));
-extern int rl_yank PARAMS((int, int));
-extern int rl_yank_pop PARAMS((int, int));
-extern int rl_yank_nth_arg PARAMS((int, int));
-extern int rl_yank_last_arg PARAMS((int, int));
-/* Not available unless __CYGWIN__ is defined. */
-#ifdef __CYGWIN__
-extern int rl_paste_from_clipboard PARAMS((int, int));
-#endif
-
-/* Bindable commands for incremental searching. */
-extern int rl_reverse_search_history PARAMS((int, int));
-extern int rl_forward_search_history PARAMS((int, int));
-
-/* Bindable keyboard macro commands. */
-extern int rl_start_kbd_macro PARAMS((int, int));
-extern int rl_end_kbd_macro PARAMS((int, int));
-extern int rl_call_last_kbd_macro PARAMS((int, int));
-
-/* Bindable undo commands. */
-extern int rl_revert_line PARAMS((int, int));
-extern int rl_undo_command PARAMS((int, int));
-
-/* Bindable tilde expansion commands. */
-extern int rl_tilde_expand PARAMS((int, int));
-
-/* Bindable terminal control commands. */
-extern int rl_restart_output PARAMS((int, int));
-extern int rl_stop_output PARAMS((int, int));
-
-/* Miscellaneous bindable commands. */
-extern int rl_abort PARAMS((int, int));
-extern int rl_tty_status PARAMS((int, int));
-
-/* Bindable commands for incremental and non-incremental history searching. */
-extern int rl_history_search_forward PARAMS((int, int));
-extern int rl_history_search_backward PARAMS((int, int));
-extern int rl_noninc_forward_search PARAMS((int, int));
-extern int rl_noninc_reverse_search PARAMS((int, int));
-extern int rl_noninc_forward_search_again PARAMS((int, int));
-extern int rl_noninc_reverse_search_again PARAMS((int, int));
-
-/* Bindable command used when inserting a matching close character. */
-extern int rl_insert_close PARAMS((int, int));
-
-/* Not available unless READLINE_CALLBACKS is defined. */
-extern void rl_callback_handler_install PARAMS((const char *, rl_vcpfunc_t *));
-extern void rl_callback_read_char PARAMS((void));
-extern void rl_callback_handler_remove PARAMS((void));
-
-/* Things for vi mode. Not available unless readline is compiled -DVI_MODE. */
-/* VI-mode bindable commands. */
-extern int rl_vi_redo PARAMS((int, int));
-extern int rl_vi_undo PARAMS((int, int));
-extern int rl_vi_yank_arg PARAMS((int, int));
-extern int rl_vi_fetch_history PARAMS((int, int));
-extern int rl_vi_search_again PARAMS((int, int));
-extern int rl_vi_search PARAMS((int, int));
-extern int rl_vi_complete PARAMS((int, int));
-extern int rl_vi_tilde_expand PARAMS((int, int));
-extern int rl_vi_prev_word PARAMS((int, int));
-extern int rl_vi_next_word PARAMS((int, int));
-extern int rl_vi_end_word PARAMS((int, int));
-extern int rl_vi_insert_beg PARAMS((int, int));
-extern int rl_vi_append_mode PARAMS((int, int));
-extern int rl_vi_append_eol PARAMS((int, int));
-extern int rl_vi_eof_maybe PARAMS((int, int));
-extern int rl_vi_insertion_mode PARAMS((int, int));
-extern int rl_vi_movement_mode PARAMS((int, int));
-extern int rl_vi_arg_digit PARAMS((int, int));
-extern int rl_vi_change_case PARAMS((int, int));
-extern int rl_vi_put PARAMS((int, int));
-extern int rl_vi_column PARAMS((int, int));
-extern int rl_vi_delete_to PARAMS((int, int));
-extern int rl_vi_change_to PARAMS((int, int));
-extern int rl_vi_yank_to PARAMS((int, int));
-extern int rl_vi_delete PARAMS((int, int));
-extern int rl_vi_back_to_indent PARAMS((int, int));
-extern int rl_vi_first_print PARAMS((int, int));
-extern int rl_vi_char_search PARAMS((int, int));
-extern int rl_vi_match PARAMS((int, int));
-extern int rl_vi_change_char PARAMS((int, int));
-extern int rl_vi_subst PARAMS((int, int));
-extern int rl_vi_overstrike PARAMS((int, int));
-extern int rl_vi_overstrike_delete PARAMS((int, int));
-extern int rl_vi_replace PARAMS((int, int));
-extern int rl_vi_set_mark PARAMS((int, int));
-extern int rl_vi_goto_mark PARAMS((int, int));
-
-/* VI-mode utility functions. */
-extern int rl_vi_check PARAMS((void));
-extern int rl_vi_domove PARAMS((int, int *));
-extern int rl_vi_bracktype PARAMS((int));
-
-/* VI-mode pseudo-bindable commands, used as utility functions. */
-extern int rl_vi_fWord PARAMS((int, int));
-extern int rl_vi_bWord PARAMS((int, int));
-extern int rl_vi_eWord PARAMS((int, int));
-extern int rl_vi_fword PARAMS((int, int));
-extern int rl_vi_bword PARAMS((int, int));
-extern int rl_vi_eword PARAMS((int, int));
-
-/* **************************************************************** */
-/* */
-/* Well Published Functions */
-/* */
-/* **************************************************************** */
-
-/* Readline functions. */
-/* Read a line of input. Prompt with PROMPT. A NULL PROMPT means none. */
-extern char *readline PARAMS((const char *));
-
-extern int rl_set_prompt PARAMS((const char *));
-extern int rl_expand_prompt PARAMS((char *));
-
-extern int rl_initialize PARAMS((void));
-
-/* Undocumented; unused by readline */
-extern int rl_discard_argument PARAMS((void));
-
-/* Utility functions to bind keys to readline commands. */
-extern int rl_add_defun PARAMS((const char *, rl_command_func_t *, int));
-extern int rl_bind_key PARAMS((int, rl_command_func_t *));
-extern int rl_bind_key_in_map PARAMS((int, rl_command_func_t *, Keymap));
-extern int rl_unbind_key PARAMS((int));
-extern int rl_unbind_key_in_map PARAMS((int, Keymap));
-extern int rl_unbind_function_in_map PARAMS((rl_command_func_t *, Keymap));
-extern int rl_unbind_command_in_map PARAMS((const char *, Keymap));
-extern int rl_set_key PARAMS((const char *, rl_command_func_t *, Keymap));
-extern int rl_generic_bind PARAMS((int, const char *, char *, Keymap));
-extern int rl_variable_bind PARAMS((const char *, const char *));
-
-/* Backwards compatibility, use rl_generic_bind instead. */
-extern int rl_macro_bind PARAMS((const char *, const char *, Keymap));
-
-/* Undocumented in the texinfo manual; not really useful to programs. */
-extern int rl_translate_keyseq PARAMS((const char *, char *, int *));
-extern char *rl_untranslate_keyseq PARAMS((int));
-
-extern rl_command_func_t *rl_named_function PARAMS((const char *));
-extern rl_command_func_t *rl_function_of_keyseq PARAMS((const char *, Keymap, int *));
-
-extern void rl_list_funmap_names PARAMS((void));
-extern char **rl_invoking_keyseqs_in_map PARAMS((rl_command_func_t *, Keymap));
-extern char **rl_invoking_keyseqs PARAMS((rl_command_func_t *));
-
-extern void rl_function_dumper PARAMS((int));
-extern void rl_macro_dumper PARAMS((int));
-extern void rl_variable_dumper PARAMS((int));
-
-extern int rl_read_init_file PARAMS((const char *));
-extern int rl_parse_and_bind PARAMS((char *));
-
-/* Functions for manipulating keymaps. */
-extern Keymap rl_make_bare_keymap PARAMS((void));
-extern Keymap rl_copy_keymap PARAMS((Keymap));
-extern Keymap rl_make_keymap PARAMS((void));
-extern void rl_discard_keymap PARAMS((Keymap));
-
-extern Keymap rl_get_keymap_by_name PARAMS((const char *));
-extern char *rl_get_keymap_name PARAMS((Keymap));
-extern void rl_set_keymap PARAMS((Keymap));
-extern Keymap rl_get_keymap PARAMS((void));
-/* Undocumented; used internally only. */
-extern void rl_set_keymap_from_edit_mode PARAMS((void));
-extern char *rl_get_keymap_name_from_edit_mode PARAMS((void));
-
-/* Functions for manipulating the funmap, which maps command names to functions. */
-extern int rl_add_funmap_entry PARAMS((const char *, rl_command_func_t *));
-extern const char **rl_funmap_names PARAMS((void));
-/* Undocumented, only used internally -- there is only one funmap, and this
- function may be called only once. */
-extern void rl_initialize_funmap PARAMS((void));
-
-/* Utility functions for managing keyboard macros. */
-extern void rl_push_macro_input PARAMS((char *));
-
-/* Functions for undoing, from undo.c */
-extern void rl_add_undo PARAMS((enum undo_code, int, int, char *));
-extern void rl_free_undo_list PARAMS((void));
-extern int rl_do_undo PARAMS((void));
-extern int rl_begin_undo_group PARAMS((void));
-extern int rl_end_undo_group PARAMS((void));
-extern int rl_modifying PARAMS((int, int));
-
-/* Functions for redisplay. */
-extern void rl_redisplay PARAMS((void));
-extern int rl_on_new_line PARAMS((void));
-extern int rl_on_new_line_with_prompt PARAMS((void));
-extern int rl_forced_update_display PARAMS((void));
-extern int rl_clear_message PARAMS((void));
-extern int rl_reset_line_state PARAMS((void));
-extern int rl_crlf PARAMS((void));
-
-#if (defined (__STDC__) || defined (__cplusplus)) && defined (USE_VARARGS) && defined (PREFER_STDARG)
-extern int rl_message (const char *, ...) __attribute__((__format__ (printf, 1, 2)));
-#else
-extern int rl_message ();
-#endif
-
-extern int rl_show_char PARAMS((int));
-
-/* Undocumented in texinfo manual. */
-extern int rl_character_len PARAMS((int, int));
-
-/* Save and restore internal prompt redisplay information. */
-extern void rl_save_prompt PARAMS((void));
-extern void rl_restore_prompt PARAMS((void));
-
-/* Modifying text. */
-extern void rl_replace_line PARAMS((const char *, int));
-extern int rl_insert_text PARAMS((const char *));
-extern int rl_delete_text PARAMS((int, int));
-extern int rl_kill_text PARAMS((int, int));
-extern char *rl_copy_text PARAMS((int, int));
-
-/* Terminal and tty mode management. */
-extern void rl_prep_terminal PARAMS((int));
-extern void rl_deprep_terminal PARAMS((void));
-extern void rl_tty_set_default_bindings PARAMS((Keymap));
-
-extern int rl_reset_terminal PARAMS((const char *));
-extern void rl_resize_terminal PARAMS((void));
-extern void rl_set_screen_size PARAMS((int, int));
-extern void rl_get_screen_size PARAMS((int *, int *));
-
-extern char *rl_get_termcap PARAMS((const char *));
-
-/* Functions for character input. */
-extern int rl_stuff_char PARAMS((int));
-extern int rl_execute_next PARAMS((int));
-extern int rl_clear_pending_input PARAMS((void));
-extern int rl_read_key PARAMS((void));
-extern int rl_getc PARAMS((FILE *));
-extern int rl_set_keyboard_input_timeout PARAMS((int));
-
-/* `Public' utility functions . */
-extern void rl_extend_line_buffer PARAMS((int));
-extern int rl_ding PARAMS((void));
-extern int rl_alphabetic PARAMS((int));
-
-/* Readline signal handling, from signals.c */
-extern int rl_set_signals PARAMS((void));
-extern int rl_clear_signals PARAMS((void));
-extern void rl_cleanup_after_signal PARAMS((void));
-extern void rl_reset_after_signal PARAMS((void));
-extern void rl_free_line_state PARAMS((void));
-
-extern int rl_set_paren_blink_timeout PARAMS((int));
-
-/* Undocumented. */
-extern int rl_maybe_save_line PARAMS((void));
-extern int rl_maybe_unsave_line PARAMS((void));
-extern int rl_maybe_replace_line PARAMS((void));
-
-/* Completion functions. */
-extern int rl_complete_internal PARAMS((int));
-extern void rl_display_match_list PARAMS((char **, int, int));
-
-extern char **rl_completion_matches PARAMS((const char *, rl_compentry_func_t *));
-extern char *rl_username_completion_function PARAMS((const char *, int));
-extern char *rl_filename_completion_function PARAMS((const char *, int));
-
-extern int rl_completion_mode PARAMS((rl_command_func_t *));
-
-#if 0
-/* Backwards compatibility (compat.c). These will go away sometime. */
-extern void free_undo_list PARAMS((void));
-extern int maybe_save_line PARAMS((void));
-extern int maybe_unsave_line PARAMS((void));
-extern int maybe_replace_line PARAMS((void));
-
-extern int ding PARAMS((void));
-extern int alphabetic PARAMS((int));
-extern int crlf PARAMS((void));
-
-extern char **completion_matches PARAMS((char *, rl_compentry_func_t *));
-extern char *username_completion_function PARAMS((const char *, int));
-extern char *filename_completion_function PARAMS((const char *, int));
-#endif
-
-/* **************************************************************** */
-/* */
-/* Well Published Variables */
-/* */
-/* **************************************************************** */
-
-/* The version of this incarnation of the readline library. */
-extern const char *rl_library_version; /* e.g., "4.2" */
-extern int rl_readline_version; /* e.g., 0x0402 */
-
-/* True if this is real GNU readline. */
-extern int rl_gnu_readline_p;
-
-/* Flags word encapsulating the current readline state. */
-extern int rl_readline_state;
-
-/* Says which editing mode readline is currently using. 1 means emacs mode;
- 0 means vi mode. */
-extern int rl_editing_mode;
-
-/* Insert or overwrite mode for emacs mode. 1 means insert mode; 0 means
- overwrite mode. Reset to insert mode on each input line. */
-extern int rl_insert_mode;
-
-/* The name of the calling program. You should initialize this to
- whatever was in argv[0]. It is used when parsing conditionals. */
-extern const char *rl_readline_name;
-
-/* The prompt readline uses. This is set from the argument to
- readline (), and should not be assigned to directly. */
-extern char *rl_prompt;
-
-/* The line buffer that is in use. */
-extern char *rl_line_buffer;
-
-/* The location of point, and end. */
-extern int rl_point;
-extern int rl_end;
-
-/* The mark, or saved cursor position. */
-extern int rl_mark;
-
-/* Flag to indicate that readline has finished with the current input
- line and should return it. */
-extern int rl_done;
-
-/* If set to a character value, that will be the next keystroke read. */
-extern int rl_pending_input;
-
-/* Non-zero if we called this function from _rl_dispatch(). It's present
- so functions can find out whether they were called from a key binding
- or directly from an application. */
-extern int rl_dispatching;
-
-/* Non-zero if the user typed a numeric argument before executing the
- current function. */
-extern int rl_explicit_arg;
-
-/* The current value of the numeric argument specified by the user. */
-extern int rl_numeric_arg;
-
-/* The address of the last command function Readline executed. */
-extern rl_command_func_t *rl_last_func;
-
-/* The name of the terminal to use. */
-extern const char *rl_terminal_name;
-
-/* The input and output streams. */
-extern FILE *rl_instream;
-extern FILE *rl_outstream;
-
-/* If non-zero, then this is the address of a function to call just
- before readline_internal () prints the first prompt. */
-extern rl_hook_func_t *rl_startup_hook;
-
-/* If non-zero, this is the address of a function to call just before
- readline_internal_setup () returns and readline_internal starts
- reading input characters. */
-extern rl_hook_func_t *rl_pre_input_hook;
-
-/* The address of a function to call periodically while Readline is
- awaiting character input, or NULL, for no event handling. */
-extern rl_hook_func_t *rl_event_hook;
-
-/* The address of the function to call to fetch a character from the current
- Readline input stream */
-extern rl_getc_func_t *rl_getc_function;
-
-extern rl_voidfunc_t *rl_redisplay_function;
-
-extern rl_vintfunc_t *rl_prep_term_function;
-extern rl_voidfunc_t *rl_deprep_term_function;
-
-/* Dispatch variables. */
-extern Keymap rl_executing_keymap;
-extern Keymap rl_binding_keymap;
-
-/* Display variables. */
-/* If non-zero, readline will erase the entire line, including any prompt,
- if the only thing typed on an otherwise-blank line is something bound to
- rl_newline. */
-extern int rl_erase_empty_line;
-
-/* If non-zero, the application has already printed the prompt (rl_prompt)
- before calling readline, so readline should not output it the first time
- redisplay is done. */
-extern int rl_already_prompted;
-
-/* A non-zero value means to read only this many characters rather than
- up to a character bound to accept-line. */
-extern int rl_num_chars_to_read;
-
-/* The text of a currently-executing keyboard macro. */
-extern char *rl_executing_macro;
-
-/* Variables to control readline signal handling. */
-/* If non-zero, readline will install its own signal handlers for
- SIGINT, SIGTERM, SIGQUIT, SIGALRM, SIGTSTP, SIGTTIN, and SIGTTOU. */
-extern int rl_catch_signals;
-
-/* If non-zero, readline will install a signal handler for SIGWINCH
- that also attempts to call any calling application's SIGWINCH signal
- handler. Note that the terminal is not cleaned up before the
- application's signal handler is called; use rl_cleanup_after_signal()
- to do that. */
-extern int rl_catch_sigwinch;
-
-/* Completion variables. */
-/* Pointer to the generator function for completion_matches ().
- NULL means to use rl_filename_completion_function (), the default
- filename completer. */
-extern rl_compentry_func_t *rl_completion_entry_function;
-
-/* If rl_ignore_some_completions_function is non-NULL it is the address
- of a function to call after all of the possible matches have been
- generated, but before the actual completion is done to the input line.
- The function is called with one argument; a NULL terminated array
- of (char *). If your function removes any of the elements, they
- must be free()'ed. */
-extern rl_compignore_func_t *rl_ignore_some_completions_function;
-
-/* Pointer to alternative function to create matches.
- Function is called with TEXT, START, and END.
- START and END are indices in RL_LINE_BUFFER saying what the boundaries
- of TEXT are.
- If this function exists and returns NULL then call the value of
- rl_completion_entry_function to try to match, otherwise use the
- array of strings returned. */
-extern rl_completion_func_t *rl_attempted_completion_function;
-
-/* The basic list of characters that signal a break between words for the
- completer routine. The initial contents of this variable is what
- breaks words in the shell, i.e. "n\"\\'`@$>". */
-extern const char *rl_basic_word_break_characters;
-
-/* The list of characters that signal a break between words for
- rl_complete_internal. The default list is the contents of
- rl_basic_word_break_characters. */
-extern const char *rl_completer_word_break_characters;
-
-/* List of characters which can be used to quote a substring of the line.
- Completion occurs on the entire substring, and within the substring
- rl_completer_word_break_characters are treated as any other character,
- unless they also appear within this list. */
-extern const char *rl_completer_quote_characters;
-
-/* List of quote characters which cause a word break. */
-extern const char *rl_basic_quote_characters;
-
-/* List of characters that need to be quoted in filenames by the completer. */
-extern const char *rl_filename_quote_characters;
-
-/* List of characters that are word break characters, but should be left
- in TEXT when it is passed to the completion function. The shell uses
- this to help determine what kind of completing to do. */
-extern const char *rl_special_prefixes;
-
-/* If non-zero, then this is the address of a function to call when
- completing on a directory name. The function is called with
- the address of a string (the current directory name) as an arg. It
- changes what is displayed when the possible completions are printed
- or inserted. */
-extern rl_icppfunc_t *rl_directory_completion_hook;
-
-/* If non-zero, this is the address of a function to call when completing
- a directory name. This function takes the address of the directory name
- to be modified as an argument. Unlike rl_directory_completion_hook, it
- only modifies the directory name used in opendir(2), not what is displayed
- when the possible completions are printed or inserted. It is called
- before rl_directory_completion_hook. I'm not happy with how this works
- yet, so it's undocumented. */
-extern rl_icppfunc_t *rl_directory_rewrite_hook;
-
-/* Backwards compatibility with previous versions of readline. */
-#define rl_symbolic_link_hook rl_directory_completion_hook
-
-/* If non-zero, then this is the address of a function to call when
- completing a word would normally display the list of possible matches.
- This function is called instead of actually doing the display.
- It takes three arguments: (char **matches, int num_matches, int max_length)
- where MATCHES is the array of strings that matched, NUM_MATCHES is the
- number of strings in that array, and MAX_LENGTH is the length of the
- longest string in that array. */
-extern rl_compdisp_func_t *rl_completion_display_matches_hook;
-
-/* Non-zero means that the results of the matches are to be treated
- as filenames. This is ALWAYS zero on entry, and can only be changed
- within a completion entry finder function. */
-extern int rl_filename_completion_desired;
-
-/* Non-zero means that the results of the matches are to be quoted using
- double quotes (or an application-specific quoting mechanism) if the
- filename contains any characters in rl_word_break_chars. This is
- ALWAYS non-zero on entry, and can only be changed within a completion
- entry finder function. */
-extern int rl_filename_quoting_desired;
-
-/* Set to a function to quote a filename in an application-specific fashion.
- Called with the text to quote, the type of match found (single or multiple)
- and a pointer to the quoting character to be used, which the function can
- reset if desired. */
-extern rl_quote_func_t *rl_filename_quoting_function;
-
-/* Function to call to remove quoting characters from a filename. Called
- before completion is attempted, so the embedded quotes do not interfere
- with matching names in the file system. */
-extern rl_dequote_func_t *rl_filename_dequoting_function;
-
-/* Function to call to decide whether or not a word break character is
- quoted. If a character is quoted, it does not break words for the
- completer. */
-extern rl_linebuf_func_t *rl_char_is_quoted_p;
-
-/* Non-zero means to suppress normal filename completion after the
- user-specified completion function has been called. */
-extern int rl_attempted_completion_over;
-
-/* Set to a character describing the type of completion being attempted by
- rl_complete_internal; available for use by application completion
- functions. */
-extern int rl_completion_type;
-
-/* Character appended to completed words when at the end of the line. The
- default is a space. Nothing is added if this is '\0'. */
-extern int rl_completion_append_character;
-
-/* If set to non-zero by an application completion function,
- rl_completion_append_character will not be appended. */
-extern int rl_completion_suppress_append;
-
-/* Up to this many items will be displayed in response to a
- possible-completions call. After that, we ask the user if she
- is sure she wants to see them all. The default value is 100. */
-extern int rl_completion_query_items;
-
-/* If non-zero, a slash will be appended to completed filenames that are
- symbolic links to directory names, subject to the value of the
- mark-directories variable (which is user-settable). This exists so
- that application completion functions can override the user's preference
- (set via the mark-symlinked-directories variable) if appropriate.
- It's set to the value of _rl_complete_mark_symlink_dirs in
- rl_complete_internal before any application-specific completion
- function is called, so without that function doing anything, the user's
- preferences are honored. */
-extern int rl_completion_mark_symlink_dirs;
-
-/* If non-zero, then disallow duplicates in the matches. */
-extern int rl_ignore_completion_duplicates;
-
-/* If this is non-zero, completion is (temporarily) inhibited, and the
- completion character will be inserted as any other. */
-extern int rl_inhibit_completion;
-
-/* Definitions available for use by readline clients. */
-#define RL_PROMPT_START_IGNORE '\001'
-#define RL_PROMPT_END_IGNORE '\002'
-
-/* Possible values for do_replace argument to rl_filename_quoting_function,
- called by rl_complete_internal. */
-#define NO_MATCH 0
-#define SINGLE_MATCH 1
-#define MULT_MATCH 2
-
-/* Possible state values for rl_readline_state */
-#define RL_STATE_NONE 0x00000 /* no state; before first call */
-
-#define RL_STATE_INITIALIZING 0x00001 /* initializing */
-#define RL_STATE_INITIALIZED 0x00002 /* initialization done */
-#define RL_STATE_TERMPREPPED 0x00004 /* terminal is prepped */
-#define RL_STATE_READCMD 0x00008 /* reading a command key */
-#define RL_STATE_METANEXT 0x00010 /* reading input after ESC */
-#define RL_STATE_DISPATCHING 0x00020 /* dispatching to a command */
-#define RL_STATE_MOREINPUT 0x00040 /* reading more input in a command function */
-#define RL_STATE_ISEARCH 0x00080 /* doing incremental search */
-#define RL_STATE_NSEARCH 0x00100 /* doing non-inc search */
-#define RL_STATE_SEARCH 0x00200 /* doing a history search */
-#define RL_STATE_NUMERICARG 0x00400 /* reading numeric argument */
-#define RL_STATE_MACROINPUT 0x00800 /* getting input from a macro */
-#define RL_STATE_MACRODEF 0x01000 /* defining keyboard macro */
-#define RL_STATE_OVERWRITE 0x02000 /* overwrite mode */
-#define RL_STATE_COMPLETING 0x04000 /* doing completion */
-#define RL_STATE_SIGHANDLER 0x08000 /* in readline sighandler */
-#define RL_STATE_UNDOING 0x10000 /* doing an undo */
-#define RL_STATE_INPUTPENDING 0x20000 /* rl_execute_next called */
-
-#define RL_STATE_DONE 0x80000 /* done; accepted line */
-
-#define RL_SETSTATE(x) (rl_readline_state |= (x))
-#define RL_UNSETSTATE(x) (rl_readline_state &= ~(x))
-#define RL_ISSTATE(x) (rl_readline_state & (x))
-
-struct readline_state {
- /* line state */
- int point;
- int end;
- int mark;
- char *buffer;
- int buflen;
- UNDO_LIST *ul;
- char *prompt;
-
- /* global state */
- int rlstate;
- int done;
- Keymap kmap;
-
- /* input state */
- rl_command_func_t *lastfunc;
- int insmode;
- int edmode;
- int kseqlen;
- FILE *inf;
- FILE *outf;
- int pendingin;
- char *macro;
-
- /* signal state */
- int catchsigs;
- int catchsigwinch;
-
- /* reserved for future expansion, so the struct size doesn't change */
- char reserved[64];
-};
-
-extern int rl_save_state PARAMS((struct readline_state *));
-extern int rl_restore_state PARAMS((struct readline_state *));
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _READLINE_H_ */
diff --git a/readline-4.3.orig/rlconf.h b/readline-4.3.orig/rlconf.h
deleted file mode 100644
index c651fd8..0000000
--- a/readline-4.3.orig/rlconf.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/* rlconf.h -- readline configuration definitions */
-
-/* Copyright (C) 1994 Free Software Foundation, Inc.
-
- This file contains the Readline Library (the Library), a set of
- routines for providing Emacs style line input to programs that ask
- for it.
-
- The Library is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- The Library is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if !defined (_RLCONF_H_)
-#define _RLCONF_H_
-
-/* Define this if you want the vi-mode editing available. */
-#define VI_MODE
-
-/* Define this to get an indication of file type when listing completions. */
-#define VISIBLE_STATS
-
-/* This definition is needed by readline.c, rltty.c, and signals.c. */
-/* If on, then readline handles signals in a way that doesn't screw. */
-#define HANDLE_SIGNALS
-
-/* Ugly but working hack for binding prefix meta. */
-#define PREFIX_META_HACK
-
-/* The final, last-ditch effort file name for an init file. */
-#define DEFAULT_INPUTRC "~/.inputrc"
-
-/* If defined, expand tabs to spaces. */
-#define DISPLAY_TABS
-
-/* If defined, use the terminal escape sequence to move the cursor forward
- over a character when updating the line rather than rewriting it. */
-/* #define HACK_TERMCAP_MOTION */
-
-/* The string inserted by the `insert comment' command. */
-#define RL_COMMENT_BEGIN_DEFAULT "#"
-
-/* Define this if you want code that allows readline to be used in an
- X `callback' style. */
-#define READLINE_CALLBACKS
-
-/* Define this if you want the cursor to indicate insert or overwrite mode. */
-/* #define CURSOR_MODE */
-
-#endif /* _RLCONF_H_ */
diff --git a/readline-4.3.orig/rldefs.h b/readline-4.3.orig/rldefs.h
deleted file mode 100644
index 4a28bd1..0000000
--- a/readline-4.3.orig/rldefs.h
+++ /dev/null
@@ -1,156 +0,0 @@
-/* rldefs.h -- an attempt to isolate some of the system-specific defines
- for readline. This should be included after any files that define
- system-specific constants like _POSIX_VERSION or USG. */
-
-/* Copyright (C) 1987,1989 Free Software Foundation, Inc.
-
- This file contains the Readline Library (the Library), a set of
- routines for providing Emacs style line input to programs that ask
- for it.
-
- The Library is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- The Library is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if !defined (_RLDEFS_H_)
-#define _RLDEFS_H_
-
-#if defined (HAVE_CONFIG_H)
-# include "config.h"
-#endif
-
-#include "rlstdc.h"
-
-#if defined (_POSIX_VERSION) && !defined (TERMIOS_MISSING)
-# define TERMIOS_TTY_DRIVER
-#else
-# if defined (HAVE_TERMIO_H)
-# define TERMIO_TTY_DRIVER
-# else
-# define NEW_TTY_DRIVER
-# endif
-#endif
-
-/* Posix macro to check file in statbuf for directory-ness.
- This requires that <sys/stat.h> be included before this test. */
-#if defined (S_IFDIR) && !defined (S_ISDIR)
-# define S_ISDIR(m) (((m)&S_IFMT) == S_IFDIR)
-#endif
-
-/* Decide which flavor of the header file describing the C library
- string functions to include and include it. */
-
-#if defined (HAVE_STRING_H)
-# include <string.h>
-#else /* !HAVE_STRING_H */
-# include <strings.h>
-#endif /* !HAVE_STRING_H */
-
-#if !defined (strchr) && !defined (__STDC__)
-extern char *strchr (), *strrchr ();
-#endif /* !strchr && !__STDC__ */
-
-#if defined (PREFER_STDARG)
-# include <stdarg.h>
-#else
-# if defined (PREFER_VARARGS)
-# include <varargs.h>
-# endif
-#endif
-
-#if defined (HAVE_STRCASECMP)
-#define _rl_stricmp strcasecmp
-#define _rl_strnicmp strncasecmp
-#else
-extern int _rl_stricmp PARAMS((char *, char *));
-extern int _rl_strnicmp PARAMS((char *, char *, int));
-#endif
-
-#if defined (HAVE_STRPBRK)
-# define _rl_strpbrk(a,b) strpbrk((a),(b))
-#else
-extern char *_rl_strpbrk PARAMS((const char *, const char *));
-#endif
-
-#if !defined (emacs_mode)
-# define no_mode -1
-# define vi_mode 0
-# define emacs_mode 1
-#endif
-
-#if !defined (RL_IM_INSERT)
-# define RL_IM_INSERT 1
-# define RL_IM_OVERWRITE 0
-#
-# define RL_IM_DEFAULT RL_IM_INSERT
-#endif
-
-/* If you cast map[key].function to type (Keymap) on a Cray,
- the compiler takes the value of map[key].function and
- divides it by 4 to convert between pointer types (pointers
- to functions and pointers to structs are different sizes).
- This is not what is wanted. */
-#if defined (CRAY)
-# define FUNCTION_TO_KEYMAP(map, key) (Keymap)((int)map[key].function)
-# define KEYMAP_TO_FUNCTION(data) (rl_command_func_t *)((int)(data))
-#else
-# define FUNCTION_TO_KEYMAP(map, key) (Keymap)(map[key].function)
-# define KEYMAP_TO_FUNCTION(data) (rl_command_func_t *)(data)
-#endif
-
-#ifndef savestring
-#define savestring(x) strcpy ((char *)xmalloc (1 + strlen (x)), (x))
-#endif
-
-/* Possible values for _rl_bell_preference. */
-#define NO_BELL 0
-#define AUDIBLE_BELL 1
-#define VISIBLE_BELL 2
-
-/* Definitions used when searching the line for characters. */
-/* NOTE: it is necessary that opposite directions are inverses */
-#define FTO 1 /* forward to */
-#define BTO -1 /* backward to */
-#define FFIND 2 /* forward find */
-#define BFIND -2 /* backward find */
-
-/* Possible values for the found_quote flags word used by the completion
- functions. It says what kind of (shell-like) quoting we found anywhere
- in the line. */
-#define RL_QF_SINGLE_QUOTE 0x01
-#define RL_QF_DOUBLE_QUOTE 0x02
-#define RL_QF_BACKSLASH 0x04
-#define RL_QF_OTHER_QUOTE 0x08
-
-/* Default readline line buffer length. */
-#define DEFAULT_BUFFER_SIZE 256
-
-#if !defined (STREQ)
-#define STREQ(a, b) (((a)[0] == (b)[0]) && (strcmp ((a), (b)) == 0))
-#define STREQN(a, b, n) (((n) == 0) ? (1) \
- : ((a)[0] == (b)[0]) && (strncmp ((a), (b), (n)) == 0))
-#endif
-
-#if !defined (FREE)
-# define FREE(x) if (x) free (x)
-#endif
-
-#if !defined (SWAP)
-# define SWAP(s, e) do { int t; t = s; s = e; e = t; } while (0)
-#endif
-
-/* CONFIGURATION SECTION */
-#include "rlconf.h"
-
-#endif /* !_RLDEFS_H_ */
diff --git a/readline-4.3.orig/rlmbutil.h b/readline-4.3.orig/rlmbutil.h
deleted file mode 100644
index 27ca32b..0000000
--- a/readline-4.3.orig/rlmbutil.h
+++ /dev/null
@@ -1,108 +0,0 @@
-/* rlmbutil.h -- utility functions for multibyte characters. */
-
-/* Copyright (C) 2001 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if !defined (_RL_MBUTIL_H_)
-#define _RL_MBUTIL_H_
-
-#include "rlstdc.h"
-
-/************************************************/
-/* check multibyte capability for I18N code */
-/************************************************/
-
-/* For platforms which support the ISO C amendement 1 functionality we
- support user defined character classes. */
- /* Solaris 2.5 has a bug: <wchar.h> must be included before <wctype.h>. */
-#if defined (HAVE_WCTYPE_H) && defined (HAVE_WCHAR_H)
-# include <wchar.h>
-# include <wctype.h>
-# if defined (HAVE_MBSRTOWCS) /* system is supposed to support XPG5 */
-# define HANDLE_MULTIBYTE 1
-# endif
-#endif
-
-/* Some systems, like BeOS, have multibyte encodings but lack mbstate_t. */
-#if HANDLE_MULTIBYTE && !defined (HAVE_MBSTATE_T)
-# define wcsrtombs(dest, src, len, ps) (wcsrtombs) (dest, src, len, 0)
-# define mbsrtowcs(dest, src, len, ps) (mbsrtowcs) (dest, src, len, 0)
-# define wcrtomb(s, wc, ps) (wcrtomb) (s, wc, 0)
-# define mbrtowc(pwc, s, n, ps) (mbrtowc) (pwc, s, n, 0)
-# define mbrlen(s, n, ps) (mbrlen) (s, n, 0)
-# define mbstate_t int
-#endif
-
-/* Make sure MB_LEN_MAX is at least 16 on systems that claim to be able to
- handle multibyte chars (some systems define MB_LEN_MAX as 1) */
-#ifdef HANDLE_MULTIBYTE
-# include <limits.h>
-# if defined(MB_LEN_MAX) && (MB_LEN_MAX < 16)
-# undef MB_LEN_MAX
-# endif
-# if !defined (MB_LEN_MAX)
-# define MB_LEN_MAX 16
-# endif
-#endif
-
-/************************************************/
-/* end of multibyte capability checks for I18N */
-/************************************************/
-
-/*
- * Flags for _rl_find_prev_mbchar and _rl_find_next_mbchar:
- *
- * MB_FIND_ANY find any multibyte character
- * MB_FIND_NONZERO find a non-zero-width multibyte character
- */
-
-#define MB_FIND_ANY 0x00
-#define MB_FIND_NONZERO 0x01
-
-extern int _rl_find_prev_mbchar PARAMS((char *, int, int));
-extern int _rl_find_next_mbchar PARAMS((char *, int, int, int));
-
-#ifdef HANDLE_MULTIBYTE
-
-extern int _rl_compare_chars PARAMS((char *, int, mbstate_t *, char *, int, mbstate_t *));
-extern int _rl_get_char_len PARAMS((char *, mbstate_t *));
-extern int _rl_adjust_point PARAMS((char *, int, mbstate_t *));
-
-extern int _rl_read_mbchar PARAMS((char *, int));
-extern int _rl_read_mbstring PARAMS((int, char *, int));
-
-extern int _rl_is_mbchar_matched PARAMS((char *, int, int, char *, int));
-
-#else /* !HANDLE_MULTIBYTE */
-
-#undef MB_LEN_MAX
-#undef MB_CUR_MAX
-
-#define MB_LEN_MAX 1
-#define MB_CUR_MAX 1
-
-#define _rl_find_prev_mbchar(b, i, f) (((i) == 0) ? (i) : ((i) - 1))
-#define _rl_find_next_mbchar(b, i1, i2, f) ((i1) + (i2))
-
-#endif /* !HANDLE_MULTIBYTE */
-
-extern int rl_byte_oriented;
-
-#endif /* _RL_MBUTIL_H_ */
diff --git a/readline-4.3.orig/rlprivate.h b/readline-4.3.orig/rlprivate.h
deleted file mode 100644
index ccb9144..0000000
--- a/readline-4.3.orig/rlprivate.h
+++ /dev/null
@@ -1,284 +0,0 @@
-/* rlprivate.h -- functions and variables global to the readline library,
- but not intended for use by applications. */
-
-/* Copyright (C) 1999 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if !defined (_RL_PRIVATE_H_)
-#define _RL_PRIVATE_H_
-
-#include "rlconf.h" /* for VISIBLE_STATS */
-#include "rlstdc.h"
-#include "posixjmp.h" /* defines procenv_t */
-
-/*************************************************************************
- * *
- * Global functions undocumented in texinfo manual and not in readline.h *
- * *
- *************************************************************************/
-
-/*************************************************************************
- * *
- * Global variables undocumented in texinfo manual and not in readline.h *
- * *
- *************************************************************************/
-
-/* complete.c */
-extern int rl_complete_with_tilde_expansion;
-#if defined (VISIBLE_STATS)
-extern int rl_visible_stats;
-#endif /* VISIBLE_STATS */
-
-/* readline.c */
-extern int rl_line_buffer_len;
-extern int rl_arg_sign;
-extern int rl_visible_prompt_length;
-extern int readline_echoing_p;
-extern int rl_key_sequence_length;
-extern int rl_byte_oriented;
-
-/* display.c */
-extern int rl_display_fixed;
-
-/* parens.c */
-extern int rl_blink_matching_paren;
-
-/*************************************************************************
- * *
- * Global functions and variables unsed and undocumented *
- * *
- *************************************************************************/
-
-/* kill.c */
-extern int rl_set_retained_kills PARAMS((int));
-
-/* terminal.c */
-extern void _rl_set_screen_size PARAMS((int, int));
-
-/* undo.c */
-extern int _rl_fix_last_undo_of_type PARAMS((int, int, int));
-
-/* util.c */
-extern char *_rl_savestring PARAMS((const char *));
-
-/*************************************************************************
- * *
- * Functions and variables private to the readline library *
- * *
- *************************************************************************/
-
-/* NOTE: Functions and variables prefixed with `_rl_' are
- pseudo-global: they are global so they can be shared
- between files in the readline library, but are not intended
- to be visible to readline callers. */
-
-/*************************************************************************
- * Undocumented private functions *
- *************************************************************************/
-
-#if defined(READLINE_CALLBACKS)
-
-/* readline.c */
-extern void readline_internal_setup PARAMS((void));
-extern char *readline_internal_teardown PARAMS((int));
-extern int readline_internal_char PARAMS((void));
-
-#endif /* READLINE_CALLBACKS */
-
-/* bind.c */
-extern void _rl_bind_if_unbound PARAMS((const char *, rl_command_func_t *));
-
-/* complete.c */
-extern char _rl_find_completion_word PARAMS((int *, int *));
-extern void _rl_free_match_list PARAMS((char **));
-
-/* display.c */
-extern char *_rl_strip_prompt PARAMS((char *));
-extern void _rl_move_cursor_relative PARAMS((int, const char *));
-extern void _rl_move_vert PARAMS((int));
-extern void _rl_save_prompt PARAMS((void));
-extern void _rl_restore_prompt PARAMS((void));
-extern char *_rl_make_prompt_for_search PARAMS((int));
-extern void _rl_erase_at_end_of_line PARAMS((int));
-extern void _rl_clear_to_eol PARAMS((int));
-extern void _rl_clear_screen PARAMS((void));
-extern void _rl_update_final PARAMS((void));
-extern void _rl_redisplay_after_sigwinch PARAMS((void));
-extern void _rl_clean_up_for_exit PARAMS((void));
-extern void _rl_erase_entire_line PARAMS((void));
-extern int _rl_current_display_line PARAMS((void));
-
-/* input.c */
-extern int _rl_any_typein PARAMS((void));
-extern int _rl_input_available PARAMS((void));
-extern int _rl_input_queued PARAMS((int));
-extern void _rl_insert_typein PARAMS((int));
-extern int _rl_unget_char PARAMS((int));
-
-/* macro.c */
-extern void _rl_with_macro_input PARAMS((char *));
-extern int _rl_next_macro_key PARAMS((void));
-extern void _rl_push_executing_macro PARAMS((void));
-extern void _rl_pop_executing_macro PARAMS((void));
-extern void _rl_add_macro_char PARAMS((int));
-extern void _rl_kill_kbd_macro PARAMS((void));
-
-/* misc.c */
-extern int _rl_init_argument PARAMS((void));
-extern void _rl_start_using_history PARAMS((void));
-extern int _rl_free_saved_history_line PARAMS((void));
-extern void _rl_set_insert_mode PARAMS((int, int));
-
-/* nls.c */
-extern int _rl_init_eightbit PARAMS((void));
-
-/* parens.c */
-extern void _rl_enable_paren_matching PARAMS((int));
-
-/* readline.c */
-extern void _rl_init_line_state PARAMS((void));
-extern void _rl_set_the_line PARAMS((void));
-extern int _rl_dispatch PARAMS((int, Keymap));
-extern int _rl_dispatch_subseq PARAMS((int, Keymap, int));
-
-/* rltty.c */
-extern int _rl_disable_tty_signals PARAMS((void));
-extern int _rl_restore_tty_signals PARAMS((void));
-
-/* terminal.c */
-extern void _rl_get_screen_size PARAMS((int, int));
-extern int _rl_init_terminal_io PARAMS((const char *));
-#ifdef _MINIX
-extern void _rl_output_character_function PARAMS((int));
-#else
-extern int _rl_output_character_function PARAMS((int));
-#endif
-extern void _rl_output_some_chars PARAMS((const char *, int));
-extern int _rl_backspace PARAMS((int));
-extern void _rl_enable_meta_key PARAMS((void));
-extern void _rl_control_keypad PARAMS((int));
-extern void _rl_set_cursor PARAMS((int, int));
-
-/* text.c */
-extern void _rl_fix_point PARAMS((int));
-extern int _rl_replace_text PARAMS((const char *, int, int));
-extern int _rl_insert_char PARAMS((int, int));
-extern int _rl_overwrite_char PARAMS((int, int));
-extern int _rl_overwrite_rubout PARAMS((int, int));
-extern int _rl_rubout_char PARAMS((int, int));
-#if defined (HANDLE_MULTIBYTE)
-extern int _rl_char_search_internal PARAMS((int, int, char *, int));
-#else
-extern int _rl_char_search_internal PARAMS((int, int, int));
-#endif
-extern int _rl_set_mark_at_pos PARAMS((int));
-
-/* util.c */
-extern int _rl_abort_internal PARAMS((void));
-extern char *_rl_strindex PARAMS((const char *, const char *));
-extern int _rl_qsort_string_compare PARAMS((char **, char **));
-extern int (_rl_uppercase_p) PARAMS((int));
-extern int (_rl_lowercase_p) PARAMS((int));
-extern int (_rl_pure_alphabetic) PARAMS((int));
-extern int (_rl_digit_p) PARAMS((int));
-extern int (_rl_to_lower) PARAMS((int));
-extern int (_rl_to_upper) PARAMS((int));
-extern int (_rl_digit_value) PARAMS((int));
-
-/* vi_mode.c */
-extern void _rl_vi_initialize_line PARAMS((void));
-extern void _rl_vi_reset_last PARAMS((void));
-extern void _rl_vi_set_last PARAMS((int, int, int));
-extern int _rl_vi_textmod_command PARAMS((int));
-extern void _rl_vi_done_inserting PARAMS((void));
-
-/*************************************************************************
- * Undocumented private variables *
- *************************************************************************/
-
-/* bind.c */
-extern const char *_rl_possible_control_prefixes[];
-extern const char *_rl_possible_meta_prefixes[];
-
-/* complete.c */
-extern int _rl_complete_show_all;
-extern int _rl_complete_mark_directories;
-extern int _rl_complete_mark_symlink_dirs;
-extern int _rl_print_completions_horizontally;
-extern int _rl_completion_case_fold;
-extern int _rl_match_hidden_files;
-extern int _rl_page_completions;
-
-/* display.c */
-extern int _rl_vis_botlin;
-extern int _rl_last_c_pos;
-extern int _rl_suppress_redisplay;
-extern char *rl_display_prompt;
-
-/* isearch.c */
-extern char *_rl_isearch_terminators;
-
-/* macro.c */
-extern char *_rl_executing_macro;
-
-/* misc.c */
-extern int _rl_history_preserve_point;
-extern int _rl_history_saved_point;
-
-/* readline.c */
-extern int _rl_horizontal_scroll_mode;
-extern int _rl_mark_modified_lines;
-extern int _rl_bell_preference;
-extern int _rl_meta_flag;
-extern int _rl_convert_meta_chars_to_ascii;
-extern int _rl_output_meta_chars;
-extern char *_rl_comment_begin;
-extern unsigned char _rl_parsing_conditionalized_out;
-extern Keymap _rl_keymap;
-extern FILE *_rl_in_stream;
-extern FILE *_rl_out_stream;
-extern int _rl_last_command_was_kill;
-extern int _rl_eof_char;
-extern procenv_t readline_top_level;
-
-/* terminal.c */
-extern int _rl_enable_keypad;
-extern int _rl_enable_meta;
-extern char *_rl_term_clreol;
-extern char *_rl_term_clrpag;
-extern char *_rl_term_im;
-extern char *_rl_term_ic;
-extern char *_rl_term_ei;
-extern char *_rl_term_DC;
-extern char *_rl_term_up;
-extern char *_rl_term_dc;
-extern char *_rl_term_cr;
-extern char *_rl_term_IC;
-extern int _rl_screenheight;
-extern int _rl_screenwidth;
-extern int _rl_screenchars;
-extern int _rl_terminal_can_insert;
-extern int _rl_term_autowrap;
-
-/* undo.c */
-extern int _rl_doing_an_undo;
-extern int _rl_undo_group_level;
-
-#endif /* _RL_PRIVATE_H_ */
diff --git a/readline-4.3.orig/rlshell.h b/readline-4.3.orig/rlshell.h
deleted file mode 100644
index 3c03fba..0000000
--- a/readline-4.3.orig/rlshell.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/* rlshell.h -- utility functions normally provided by bash. */
-
-/* Copyright (C) 1999 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if !defined (_RL_SHELL_H_)
-#define _RL_SHELL_H_
-
-#include "rlstdc.h"
-
-extern char *sh_single_quote PARAMS((char *));
-extern void sh_set_lines_and_columns PARAMS((int, int));
-extern char *sh_get_env_value PARAMS((const char *));
-extern char *sh_get_home_dir PARAMS((void));
-extern int sh_unset_nodelay_mode PARAMS((int));
-
-#endif /* _RL_SHELL_H_ */
diff --git a/readline-4.3.orig/rlstdc.h b/readline-4.3.orig/rlstdc.h
deleted file mode 100644
index d6a22b3..0000000
--- a/readline-4.3.orig/rlstdc.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/* stdc.h -- macros to make source compile on both ANSI C and K&R C
- compilers. */
-
-/* Copyright (C) 1993 Free Software Foundation, Inc.
-
- This file is part of GNU Bash, the Bourne Again SHell.
-
- Bash is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- Bash is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Bash; see the file COPYING. If not, write to the Free
- Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if !defined (_RL_STDC_H_)
-#define _RL_STDC_H_
-
-/* Adapted from BSD /usr/include/sys/cdefs.h. */
-
-/* A function can be defined using prototypes and compile on both ANSI C
- and traditional C compilers with something like this:
- extern char *func PARAMS((char *, char *, int)); */
-
-#if !defined (PARAMS)
-# if defined (__STDC__) || defined (__GNUC__) || defined (__cplusplus)
-# define PARAMS(protos) protos
-# else
-# define PARAMS(protos) ()
-# endif
-#endif
-
-#ifndef __attribute__
-# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8) || __STRICT_ANSI__
-# define __attribute__(x)
-# endif
-#endif
-
-#endif /* !_RL_STDC_H_ */
diff --git a/readline-4.3.orig/rltty.c b/readline-4.3.orig/rltty.c
deleted file mode 100644
index 755efeb..0000000
--- a/readline-4.3.orig/rltty.c
+++ /dev/null
@@ -1,911 +0,0 @@
-/* rltty.c -- functions to prepare and restore the terminal for readline's
- use. */
-
-/* Copyright (C) 1992 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <sys/types.h>
-#include <signal.h>
-#include <errno.h>
-#include <stdio.h>
-
-#if defined (HAVE_UNISTD_H)
-# include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-
-#include "rldefs.h"
-
-#if defined (GWINSZ_IN_SYS_IOCTL)
-# include <sys/ioctl.h>
-#endif /* GWINSZ_IN_SYS_IOCTL */
-
-#include "rltty.h"
-#include "readline.h"
-#include "rlprivate.h"
-
-#if !defined (errno)
-extern int errno;
-#endif /* !errno */
-
-rl_vintfunc_t *rl_prep_term_function = rl_prep_terminal;
-rl_voidfunc_t *rl_deprep_term_function = rl_deprep_terminal;
-
-static void block_sigint PARAMS((void));
-static void release_sigint PARAMS((void));
-
-static void set_winsize PARAMS((int));
-
-/* **************************************************************** */
-/* */
-/* Signal Management */
-/* */
-/* **************************************************************** */
-
-#if defined (HAVE_POSIX_SIGNALS)
-static sigset_t sigint_set, sigint_oset;
-#else /* !HAVE_POSIX_SIGNALS */
-# if defined (HAVE_BSD_SIGNALS)
-static int sigint_oldmask;
-# endif /* HAVE_BSD_SIGNALS */
-#endif /* !HAVE_POSIX_SIGNALS */
-
-static int sigint_blocked;
-
-/* Cause SIGINT to not be delivered until the corresponding call to
- release_sigint(). */
-static void
-block_sigint ()
-{
- if (sigint_blocked)
- return;
-
-#if defined (HAVE_POSIX_SIGNALS)
- sigemptyset (&sigint_set);
- sigemptyset (&sigint_oset);
- sigaddset (&sigint_set, SIGINT);
- sigprocmask (SIG_BLOCK, &sigint_set, &sigint_oset);
-#else /* !HAVE_POSIX_SIGNALS */
-# if defined (HAVE_BSD_SIGNALS)
- sigint_oldmask = sigblock (sigmask (SIGINT));
-# else /* !HAVE_BSD_SIGNALS */
-# if defined (HAVE_USG_SIGHOLD)
- sighold (SIGINT);
-# endif /* HAVE_USG_SIGHOLD */
-# endif /* !HAVE_BSD_SIGNALS */
-#endif /* !HAVE_POSIX_SIGNALS */
-
- sigint_blocked = 1;
-}
-
-/* Allow SIGINT to be delivered. */
-static void
-release_sigint ()
-{
- if (sigint_blocked == 0)
- return;
-
-#if defined (HAVE_POSIX_SIGNALS)
- sigprocmask (SIG_SETMASK, &sigint_oset, (sigset_t *)NULL);
-#else
-# if defined (HAVE_BSD_SIGNALS)
- sigsetmask (sigint_oldmask);
-# else /* !HAVE_BSD_SIGNALS */
-# if defined (HAVE_USG_SIGHOLD)
- sigrelse (SIGINT);
-# endif /* HAVE_USG_SIGHOLD */
-# endif /* !HAVE_BSD_SIGNALS */
-#endif /* !HAVE_POSIX_SIGNALS */
-
- sigint_blocked = 0;
-}
-
-/* **************************************************************** */
-/* */
-/* Saving and Restoring the TTY */
-/* */
-/* **************************************************************** */
-
-/* Non-zero means that the terminal is in a prepped state. */
-static int terminal_prepped;
-
-static _RL_TTY_CHARS _rl_tty_chars, _rl_last_tty_chars;
-
-/* If non-zero, means that this process has called tcflow(fd, TCOOFF)
- and output is suspended. */
-#if defined (__ksr1__)
-static int ksrflow;
-#endif
-
-/* Dummy call to force a backgrounded readline to stop before it tries
- to get the tty settings. */
-static void
-set_winsize (tty)
- int tty;
-{
-#if defined (TIOCGWINSZ)
- struct winsize w;
-
- if (ioctl (tty, TIOCGWINSZ, &w) == 0)
- (void) ioctl (tty, TIOCSWINSZ, &w);
-#endif /* TIOCGWINSZ */
-}
-
-#if defined (NEW_TTY_DRIVER)
-
-/* Values for the `flags' field of a struct bsdtty. This tells which
- elements of the struct bsdtty have been fetched from the system and
- are valid. */
-#define SGTTY_SET 0x01
-#define LFLAG_SET 0x02
-#define TCHARS_SET 0x04
-#define LTCHARS_SET 0x08
-
-struct bsdtty {
- struct sgttyb sgttyb; /* Basic BSD tty driver information. */
- int lflag; /* Local mode flags, like LPASS8. */
-#if defined (TIOCGETC)
- struct tchars tchars; /* Terminal special characters, including ^S and ^Q. */
-#endif
-#if defined (TIOCGLTC)
- struct ltchars ltchars; /* 4.2 BSD editing characters */
-#endif
- int flags; /* Bitmap saying which parts of the struct are valid. */
-};
-
-#define TIOTYPE struct bsdtty
-
-static TIOTYPE otio;
-
-static void save_tty_chars PARAMS((TIOTYPE *));
-static int _get_tty_settings PARAMS((int, TIOTYPE *));
-static int get_tty_settings PARAMS((int, TIOTYPE *));
-static int _set_tty_settings PARAMS((int, TIOTYPE *));
-static int set_tty_settings PARAMS((int, TIOTYPE *));
-
-static void prepare_terminal_settings PARAMS((int, TIOTYPE, TIOTYPE *));
-
-static void
-save_tty_chars (tiop)
- TIOTYPE *tiop;
-{
- _rl_last_tty_chars = _rl_tty_chars;
-
- if (tiop->flags & SGTTY_SET)
- {
- _rl_tty_chars.t_erase = tiop->sgttyb.sg_erase;
- _rl_tty_chars.t_kill = tiop->sgttyb.sg_kill;
- }
-
- if (tiop->flags & TCHARS_SET)
- {
- _rl_tty_chars.t_intr = tiop->tchars.t_intrc;
- _rl_tty_chars.t_quit = tiop->tchars.t_quitc;
- _rl_tty_chars.t_start = tiop->tchars.t_startc;
- _rl_tty_chars.t_stop = tiop->tchars.t_stopc;
- _rl_tty_chars.t_eof = tiop->tchars.t_eofc;
- _rl_tty_chars.t_eol = '\n';
- _rl_tty_chars.t_eol2 = tiop->tchars.t_brkc;
- }
-
- if (tiop->flags & LTCHARS_SET)
- {
- _rl_tty_chars.t_susp = tiop->ltchars.t_suspc;
- _rl_tty_chars.t_dsusp = tiop->ltchars.t_dsuspc;
- _rl_tty_chars.t_reprint = tiop->ltchars.t_rprntc;
- _rl_tty_chars.t_flush = tiop->ltchars.t_flushc;
- _rl_tty_chars.t_werase = tiop->ltchars.t_werasc;
- _rl_tty_chars.t_lnext = tiop->ltchars.t_lnextc;
- }
-
- _rl_tty_chars.t_status = -1;
-}
-
-static int
-get_tty_settings (tty, tiop)
- int tty;
- TIOTYPE *tiop;
-{
- set_winsize (tty);
-
- tiop->flags = tiop->lflag = 0;
-
- if (ioctl (tty, TIOCGETP, &(tiop->sgttyb)) < 0)
- return -1;
- tiop->flags |= SGTTY_SET;
-
-#if defined (TIOCLGET)
- if (ioctl (tty, TIOCLGET, &(tiop->lflag)) == 0)
- tiop->flags |= LFLAG_SET;
-#endif
-
-#if defined (TIOCGETC)
- if (ioctl (tty, TIOCGETC, &(tiop->tchars)) == 0)
- tiop->flags |= TCHARS_SET;
-#endif
-
-#if defined (TIOCGLTC)
- if (ioctl (tty, TIOCGLTC, &(tiop->ltchars)) == 0)
- tiop->flags |= LTCHARS_SET;
-#endif
-
- return 0;
-}
-
-static int
-set_tty_settings (tty, tiop)
- int tty;
- TIOTYPE *tiop;
-{
- if (tiop->flags & SGTTY_SET)
- {
- ioctl (tty, TIOCSETN, &(tiop->sgttyb));
- tiop->flags &= ~SGTTY_SET;
- }
- readline_echoing_p = 1;
-
-#if defined (TIOCLSET)
- if (tiop->flags & LFLAG_SET)
- {
- ioctl (tty, TIOCLSET, &(tiop->lflag));
- tiop->flags &= ~LFLAG_SET;
- }
-#endif
-
-#if defined (TIOCSETC)
- if (tiop->flags & TCHARS_SET)
- {
- ioctl (tty, TIOCSETC, &(tiop->tchars));
- tiop->flags &= ~TCHARS_SET;
- }
-#endif
-
-#if defined (TIOCSLTC)
- if (tiop->flags & LTCHARS_SET)
- {
- ioctl (tty, TIOCSLTC, &(tiop->ltchars));
- tiop->flags &= ~LTCHARS_SET;
- }
-#endif
-
- return 0;
-}
-
-static void
-prepare_terminal_settings (meta_flag, oldtio, tiop)
- int meta_flag;
- TIOTYPE oldtio, *tiop;
-{
- readline_echoing_p = (oldtio.sgttyb.sg_flags & ECHO);
-
- /* Copy the original settings to the structure we're going to use for
- our settings. */
- tiop->sgttyb = oldtio.sgttyb;
- tiop->lflag = oldtio.lflag;
-#if defined (TIOCGETC)
- tiop->tchars = oldtio.tchars;
-#endif
-#if defined (TIOCGLTC)
- tiop->ltchars = oldtio.ltchars;
-#endif
- tiop->flags = oldtio.flags;
-
- /* First, the basic settings to put us into character-at-a-time, no-echo
- input mode. */
- tiop->sgttyb.sg_flags &= ~(ECHO | CRMOD);
- tiop->sgttyb.sg_flags |= CBREAK;
-
- /* If this terminal doesn't care how the 8th bit is used, then we can
- use it for the meta-key. If only one of even or odd parity is
- specified, then the terminal is using parity, and we cannot. */
-#if !defined (ANYP)
-# define ANYP (EVENP | ODDP)
-#endif
- if (((oldtio.sgttyb.sg_flags & ANYP) == ANYP) ||
- ((oldtio.sgttyb.sg_flags & ANYP) == 0))
- {
- tiop->sgttyb.sg_flags |= ANYP;
-
- /* Hack on local mode flags if we can. */
-#if defined (TIOCLGET)
-# if defined (LPASS8)
- tiop->lflag |= LPASS8;
-# endif /* LPASS8 */
-#endif /* TIOCLGET */
- }
-
-#if defined (TIOCGETC)
-# if defined (USE_XON_XOFF)
- /* Get rid of terminal output start and stop characters. */
- tiop->tchars.t_stopc = -1; /* C-s */
- tiop->tchars.t_startc = -1; /* C-q */
-
- /* If there is an XON character, bind it to restart the output. */
- if (oldtio.tchars.t_startc != -1)
- rl_bind_key (oldtio.tchars.t_startc, rl_restart_output);
-# endif /* USE_XON_XOFF */
-
- /* If there is an EOF char, bind _rl_eof_char to it. */
- if (oldtio.tchars.t_eofc != -1)
- _rl_eof_char = oldtio.tchars.t_eofc;
-
-# if defined (NO_KILL_INTR)
- /* Get rid of terminal-generated SIGQUIT and SIGINT. */
- tiop->tchars.t_quitc = -1; /* C-\ */
- tiop->tchars.t_intrc = -1; /* C-c */
-# endif /* NO_KILL_INTR */
-#endif /* TIOCGETC */
-
-#if defined (TIOCGLTC)
- /* Make the interrupt keys go away. Just enough to make people happy. */
- tiop->ltchars.t_dsuspc = -1; /* C-y */
- tiop->ltchars.t_lnextc = -1; /* C-v */
-#endif /* TIOCGLTC */
-}
-
-#else /* !defined (NEW_TTY_DRIVER) */
-
-#if !defined (VMIN)
-# define VMIN VEOF
-#endif
-
-#if !defined (VTIME)
-# define VTIME VEOL
-#endif
-
-#if defined (TERMIOS_TTY_DRIVER)
-# define TIOTYPE struct termios
-# define DRAIN_OUTPUT(fd) tcdrain (fd)
-# define GETATTR(tty, tiop) (tcgetattr (tty, tiop))
-# ifdef M_UNIX
-# define SETATTR(tty, tiop) (tcsetattr (tty, TCSANOW, tiop))
-# else
-# define SETATTR(tty, tiop) (tcsetattr (tty, TCSADRAIN, tiop))
-# endif /* !M_UNIX */
-#else
-# define TIOTYPE struct termio
-# define DRAIN_OUTPUT(fd)
-# define GETATTR(tty, tiop) (ioctl (tty, TCGETA, tiop))
-# define SETATTR(tty, tiop) (ioctl (tty, TCSETAW, tiop))
-#endif /* !TERMIOS_TTY_DRIVER */
-
-static TIOTYPE otio;
-
-static void save_tty_chars PARAMS((TIOTYPE *));
-static int _get_tty_settings PARAMS((int, TIOTYPE *));
-static int get_tty_settings PARAMS((int, TIOTYPE *));
-static int _set_tty_settings PARAMS((int, TIOTYPE *));
-static int set_tty_settings PARAMS((int, TIOTYPE *));
-
-static void prepare_terminal_settings PARAMS((int, TIOTYPE, TIOTYPE *));
-
-#if defined (FLUSHO)
-# define OUTPUT_BEING_FLUSHED(tp) (tp->c_lflag & FLUSHO)
-#else
-# define OUTPUT_BEING_FLUSHED(tp) 0
-#endif
-
-static void
-save_tty_chars (tiop)
- TIOTYPE *tiop;
-{
- _rl_last_tty_chars = _rl_tty_chars;
-
- _rl_tty_chars.t_eof = tiop->c_cc[VEOF];
- _rl_tty_chars.t_eol = tiop->c_cc[VEOL];
-#ifdef VEOL2
- _rl_tty_chars.t_eol2 = tiop->c_cc[VEOL2];
-#endif
- _rl_tty_chars.t_erase = tiop->c_cc[VERASE];
-#ifdef VWERASE
- _rl_tty_chars.t_werase = tiop->c_cc[VWERASE];
-#endif
- _rl_tty_chars.t_kill = tiop->c_cc[VKILL];
-#ifdef VREPRINT
- _rl_tty_chars.t_reprint = tiop->c_cc[VREPRINT];
-#endif
- _rl_tty_chars.t_intr = tiop->c_cc[VINTR];
- _rl_tty_chars.t_quit = tiop->c_cc[VQUIT];
-#ifdef VSUSP
- _rl_tty_chars.t_susp = tiop->c_cc[VSUSP];
-#endif
-#ifdef VDSUSP
- _rl_tty_chars.t_dsusp = tiop->c_cc[VDSUSP];
-#endif
-#ifdef VSTART
- _rl_tty_chars.t_start = tiop->c_cc[VSTART];
-#endif
-#ifdef VSTOP
- _rl_tty_chars.t_stop = tiop->c_cc[VSTOP];
-#endif
-#ifdef VLNEXT
- _rl_tty_chars.t_lnext = tiop->c_cc[VLNEXT];
-#endif
-#ifdef VDISCARD
- _rl_tty_chars.t_flush = tiop->c_cc[VDISCARD];
-#endif
-#ifdef VSTATUS
- _rl_tty_chars.t_status = tiop->c_cc[VSTATUS];
-#endif
-}
-
-#if defined (_AIX) || defined (_AIX41)
-/* Currently this is only used on AIX */
-static void
-rltty_warning (msg)
- char *msg;
-{
- fprintf (stderr, "readline: warning: %s\n", msg);
-}
-#endif
-
-#if defined (_AIX)
-void
-setopost(tp)
-TIOTYPE *tp;
-{
- if ((tp->c_oflag & OPOST) == 0)
- {
- rltty_warning ("turning on OPOST for terminal\r");
- tp->c_oflag |= OPOST|ONLCR;
- }
-}
-#endif
-
-static int
-_get_tty_settings (tty, tiop)
- int tty;
- TIOTYPE *tiop;
-{
- int ioctl_ret;
-
- while (1)
- {
- ioctl_ret = GETATTR (tty, tiop);
- if (ioctl_ret < 0)
- {
- if (errno != EINTR)
- return -1;
- else
- continue;
- }
- if (OUTPUT_BEING_FLUSHED (tiop))
- {
-#if defined (FLUSHO) && defined (_AIX41)
- rltty_warning ("turning off output flushing");
- tiop->c_lflag &= ~FLUSHO;
- break;
-#else
- continue;
-#endif
- }
- break;
- }
-
- return 0;
-}
-
-static int
-get_tty_settings (tty, tiop)
- int tty;
- TIOTYPE *tiop;
-{
- set_winsize (tty);
-
- if (_get_tty_settings (tty, tiop) < 0)
- return -1;
-
-#if defined (_AIX)
- setopost(tiop);
-#endif
-
- return 0;
-}
-
-static int
-_set_tty_settings (tty, tiop)
- int tty;
- TIOTYPE *tiop;
-{
- while (SETATTR (tty, tiop) < 0)
- {
- if (errno != EINTR)
- return -1;
- errno = 0;
- }
- return 0;
-}
-
-static int
-set_tty_settings (tty, tiop)
- int tty;
- TIOTYPE *tiop;
-{
- if (_set_tty_settings (tty, tiop) < 0)
- return -1;
-
-#if 0
-
-#if defined (TERMIOS_TTY_DRIVER)
-# if defined (__ksr1__)
- if (ksrflow)
- {
- ksrflow = 0;
- tcflow (tty, TCOON);
- }
-# else /* !ksr1 */
- tcflow (tty, TCOON); /* Simulate a ^Q. */
-# endif /* !ksr1 */
-#else
- ioctl (tty, TCXONC, 1); /* Simulate a ^Q. */
-#endif /* !TERMIOS_TTY_DRIVER */
-
-#endif /* 0 */
-
- return 0;
-}
-
-static void
-prepare_terminal_settings (meta_flag, oldtio, tiop)
- int meta_flag;
- TIOTYPE oldtio, *tiop;
-{
- readline_echoing_p = (oldtio.c_lflag & ECHO);
-
- tiop->c_lflag &= ~(ICANON | ECHO);
-
- if ((unsigned char) oldtio.c_cc[VEOF] != (unsigned char) _POSIX_VDISABLE)
- _rl_eof_char = oldtio.c_cc[VEOF];
-
-#if defined (USE_XON_XOFF)
-#if defined (IXANY)
- tiop->c_iflag &= ~(IXON | IXOFF | IXANY);
-#else
- /* `strict' Posix systems do not define IXANY. */
- tiop->c_iflag &= ~(IXON | IXOFF);
-#endif /* IXANY */
-#endif /* USE_XON_XOFF */
-
- /* Only turn this off if we are using all 8 bits. */
- if (((tiop->c_cflag & CSIZE) == CS8) || meta_flag)
- tiop->c_iflag &= ~(ISTRIP | INPCK);
-
- /* Make sure we differentiate between CR and NL on input. */
- tiop->c_iflag &= ~(ICRNL | INLCR);
-
-#if !defined (HANDLE_SIGNALS)
- tiop->c_lflag &= ~ISIG;
-#else
- tiop->c_lflag |= ISIG;
-#endif
-
- tiop->c_cc[VMIN] = 1;
- tiop->c_cc[VTIME] = 0;
-
-#if defined (FLUSHO)
- if (OUTPUT_BEING_FLUSHED (tiop))
- {
- tiop->c_lflag &= ~FLUSHO;
- oldtio.c_lflag &= ~FLUSHO;
- }
-#endif
-
- /* Turn off characters that we need on Posix systems with job control,
- just to be sure. This includes ^Y and ^V. This should not really
- be necessary. */
-#if defined (TERMIOS_TTY_DRIVER) && defined (_POSIX_VDISABLE)
-
-#if defined (VLNEXT)
- tiop->c_cc[VLNEXT] = _POSIX_VDISABLE;
-#endif
-
-#if defined (VDSUSP)
- tiop->c_cc[VDSUSP] = _POSIX_VDISABLE;
-#endif
-
-#endif /* TERMIOS_TTY_DRIVER && _POSIX_VDISABLE */
-}
-#endif /* NEW_TTY_DRIVER */
-
-/* Put the terminal in CBREAK mode so that we can detect key presses. */
-void
-rl_prep_terminal (meta_flag)
- int meta_flag;
-{
- int tty;
- TIOTYPE tio;
-
- if (terminal_prepped)
- return;
-
- /* Try to keep this function from being INTerrupted. */
- block_sigint ();
-
- tty = fileno (rl_instream);
-
- if (get_tty_settings (tty, &tio) < 0)
- {
- release_sigint ();
- return;
- }
-
- otio = tio;
-
- save_tty_chars (&otio);
-
- prepare_terminal_settings (meta_flag, otio, &tio);
-
- if (set_tty_settings (tty, &tio) < 0)
- {
- release_sigint ();
- return;
- }
-
- if (_rl_enable_keypad)
- _rl_control_keypad (1);
-
- fflush (rl_outstream);
- terminal_prepped = 1;
- RL_SETSTATE(RL_STATE_TERMPREPPED);
-
- release_sigint ();
-}
-
-/* Restore the terminal's normal settings and modes. */
-void
-rl_deprep_terminal ()
-{
- int tty;
-
- if (!terminal_prepped)
- return;
-
- /* Try to keep this function from being interrupted. */
- block_sigint ();
-
- tty = fileno (rl_instream);
-
- if (_rl_enable_keypad)
- _rl_control_keypad (0);
-
- fflush (rl_outstream);
-
- if (set_tty_settings (tty, &otio) < 0)
- {
- release_sigint ();
- return;
- }
-
- terminal_prepped = 0;
- RL_UNSETSTATE(RL_STATE_TERMPREPPED);
-
- release_sigint ();
-}
-
-/* **************************************************************** */
-/* */
-/* Bogus Flow Control */
-/* */
-/* **************************************************************** */
-
-int
-rl_restart_output (count, key)
- int count, key;
-{
- int fildes = fileno (rl_outstream);
-#if defined (TIOCSTART)
-#if defined (apollo)
- ioctl (&fildes, TIOCSTART, 0);
-#else
- ioctl (fildes, TIOCSTART, 0);
-#endif /* apollo */
-
-#else /* !TIOCSTART */
-# if defined (TERMIOS_TTY_DRIVER)
-# if defined (__ksr1__)
- if (ksrflow)
- {
- ksrflow = 0;
- tcflow (fildes, TCOON);
- }
-# else /* !ksr1 */
- tcflow (fildes, TCOON); /* Simulate a ^Q. */
-# endif /* !ksr1 */
-# else /* !TERMIOS_TTY_DRIVER */
-# if defined (TCXONC)
- ioctl (fildes, TCXONC, TCOON);
-# endif /* TCXONC */
-# endif /* !TERMIOS_TTY_DRIVER */
-#endif /* !TIOCSTART */
-
- return 0;
-}
-
-int
-rl_stop_output (count, key)
- int count, key;
-{
- int fildes = fileno (rl_instream);
-
-#if defined (TIOCSTOP)
-# if defined (apollo)
- ioctl (&fildes, TIOCSTOP, 0);
-# else
- ioctl (fildes, TIOCSTOP, 0);
-# endif /* apollo */
-#else /* !TIOCSTOP */
-# if defined (TERMIOS_TTY_DRIVER)
-# if defined (__ksr1__)
- ksrflow = 1;
-# endif /* ksr1 */
- tcflow (fildes, TCOOFF);
-# else
-# if defined (TCXONC)
- ioctl (fildes, TCXONC, TCOON);
-# endif /* TCXONC */
-# endif /* !TERMIOS_TTY_DRIVER */
-#endif /* !TIOCSTOP */
-
- return 0;
-}
-
-/* **************************************************************** */
-/* */
-/* Default Key Bindings */
-/* */
-/* **************************************************************** */
-
-/* Set the system's default editing characters to their readline equivalents
- in KMAP. Should be static, now that we have rl_tty_set_default_bindings. */
-void
-rltty_set_default_bindings (kmap)
- Keymap kmap;
-{
- TIOTYPE ttybuff;
- int tty = fileno (rl_instream);
-
-#if defined (NEW_TTY_DRIVER)
-
-#define SET_SPECIAL(sc, func) \
- do \
- { \
- int ic; \
- ic = sc; \
- if (ic != -1 && kmap[(unsigned char)ic].type == ISFUNC) \
- kmap[(unsigned char)ic].function = func; \
- } \
- while (0)
-
- if (get_tty_settings (tty, &ttybuff) == 0)
- {
- if (ttybuff.flags & SGTTY_SET)
- {
- SET_SPECIAL (ttybuff.sgttyb.sg_erase, rl_rubout);
- SET_SPECIAL (ttybuff.sgttyb.sg_kill, rl_unix_line_discard);
- }
-
-# if defined (TIOCGLTC)
- if (ttybuff.flags & LTCHARS_SET)
- {
- SET_SPECIAL (ttybuff.ltchars.t_werasc, rl_unix_word_rubout);
- SET_SPECIAL (ttybuff.ltchars.t_lnextc, rl_quoted_insert);
- }
-# endif /* TIOCGLTC */
- }
-
-#else /* !NEW_TTY_DRIVER */
-
-#define SET_SPECIAL(sc, func) \
- do \
- { \
- unsigned char uc; \
- uc = ttybuff.c_cc[sc]; \
- if (uc != (unsigned char)_POSIX_VDISABLE && kmap[uc].type == ISFUNC) \
- kmap[uc].function = func; \
- } \
- while (0)
-
- if (get_tty_settings (tty, &ttybuff) == 0)
- {
- SET_SPECIAL (VERASE, rl_rubout);
- SET_SPECIAL (VKILL, rl_unix_line_discard);
-
-# if defined (VLNEXT) && defined (TERMIOS_TTY_DRIVER)
- SET_SPECIAL (VLNEXT, rl_quoted_insert);
-# endif /* VLNEXT && TERMIOS_TTY_DRIVER */
-
-# if defined (VWERASE) && defined (TERMIOS_TTY_DRIVER)
- SET_SPECIAL (VWERASE, rl_unix_word_rubout);
-# endif /* VWERASE && TERMIOS_TTY_DRIVER */
- }
-#endif /* !NEW_TTY_DRIVER */
-}
-
-/* New public way to set the system default editing chars to their readline
- equivalents. */
-void
-rl_tty_set_default_bindings (kmap)
- Keymap kmap;
-{
- rltty_set_default_bindings (kmap);
-}
-
-#if defined (HANDLE_SIGNALS)
-
-#if defined (NEW_TTY_DRIVER)
-int
-_rl_disable_tty_signals ()
-{
- return 0;
-}
-
-int
-_rl_restore_tty_signals ()
-{
- return 0;
-}
-#else
-
-static TIOTYPE sigstty, nosigstty;
-static int tty_sigs_disabled = 0;
-
-int
-_rl_disable_tty_signals ()
-{
- if (tty_sigs_disabled)
- return 0;
-
- if (_get_tty_settings (fileno (rl_instream), &sigstty) < 0)
- return -1;
-
- nosigstty = sigstty;
-
- nosigstty.c_lflag &= ~ISIG;
- nosigstty.c_iflag &= ~IXON;
-
- if (_set_tty_settings (fileno (rl_instream), &nosigstty) < 0)
- return (_set_tty_settings (fileno (rl_instream), &sigstty));
-
- tty_sigs_disabled = 1;
- return 0;
-}
-
-int
-_rl_restore_tty_signals ()
-{
- int r;
-
- if (tty_sigs_disabled == 0)
- return 0;
-
- r = _set_tty_settings (fileno (rl_instream), &sigstty);
-
- if (r == 0)
- tty_sigs_disabled = 0;
-
- return r;
-}
-#endif /* !NEW_TTY_DRIVER */
-
-#endif /* HANDLE_SIGNALS */
diff --git a/readline-4.3.orig/rltty.h b/readline-4.3.orig/rltty.h
deleted file mode 100644
index 029a3fb..0000000
--- a/readline-4.3.orig/rltty.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/* rltty.h - tty driver-related definitions used by some library files. */
-
-/* Copyright (C) 1995 Free Software Foundation, Inc.
-
- This file contains the Readline Library (the Library), a set of
- routines for providing Emacs style line input to programs that ask
- for it.
-
- The Library is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- The Library is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if !defined (_RLTTY_H_)
-#define _RLTTY_H_
-
-/* Posix systems use termios and the Posix signal functions. */
-#if defined (TERMIOS_TTY_DRIVER)
-# include <termios.h>
-#endif /* TERMIOS_TTY_DRIVER */
-
-/* System V machines use termio. */
-#if defined (TERMIO_TTY_DRIVER)
-# include <termio.h>
-# if !defined (TCOON)
-# define TCOON 1
-# endif
-#endif /* TERMIO_TTY_DRIVER */
-
-/* Other (BSD) machines use sgtty. */
-#if defined (NEW_TTY_DRIVER)
-# include <sgtty.h>
-#endif
-
-#include "rlwinsize.h"
-
-/* Define _POSIX_VDISABLE if we are not using the `new' tty driver and
- it is not already defined. It is used both to determine if a
- special character is disabled and to disable certain special
- characters. Posix systems should set to 0, USG systems to -1. */
-#if !defined (NEW_TTY_DRIVER) && !defined (_POSIX_VDISABLE)
-# if defined (_SVR4_VDISABLE)
-# define _POSIX_VDISABLE _SVR4_VDISABLE
-# else
-# if defined (_POSIX_VERSION)
-# define _POSIX_VDISABLE 0
-# else /* !_POSIX_VERSION */
-# define _POSIX_VDISABLE -1
-# endif /* !_POSIX_VERSION */
-# endif /* !_SVR4_DISABLE */
-#endif /* !NEW_TTY_DRIVER && !_POSIX_VDISABLE */
-
-typedef struct _rl_tty_chars {
- char t_eof;
- char t_eol;
- char t_eol2;
- char t_erase;
- char t_werase;
- char t_kill;
- char t_reprint;
- char t_intr;
- char t_quit;
- char t_susp;
- char t_dsusp;
- char t_start;
- char t_stop;
- char t_lnext;
- char t_flush;
- char t_status;
-} _RL_TTY_CHARS;
-
-#endif /* _RLTTY_H_ */
diff --git a/readline-4.3.orig/rltypedefs.h b/readline-4.3.orig/rltypedefs.h
deleted file mode 100644
index f3280e9..0000000
--- a/readline-4.3.orig/rltypedefs.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/* rltypedefs.h -- Type declarations for readline functions. */
-
-/* Copyright (C) 2000 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#ifndef _RL_TYPEDEFS_H_
-#define _RL_TYPEDEFS_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Old-style */
-
-#if !defined (_FUNCTION_DEF)
-# define _FUNCTION_DEF
-
-typedef int Function ();
-typedef void VFunction ();
-typedef char *CPFunction ();
-typedef char **CPPFunction ();
-
-#endif /* _FUNCTION_DEF */
-
-/* New style. */
-
-#if !defined (_RL_FUNCTION_TYPEDEF)
-# define _RL_FUNCTION_TYPEDEF
-
-/* Bindable functions */
-typedef int rl_command_func_t PARAMS((int, int));
-
-/* Typedefs for the completion system */
-typedef char *rl_compentry_func_t PARAMS((const char *, int));
-typedef char **rl_completion_func_t PARAMS((const char *, int, int));
-
-typedef char *rl_quote_func_t PARAMS((char *, int, char *));
-typedef char *rl_dequote_func_t PARAMS((char *, int));
-
-typedef int rl_compignore_func_t PARAMS((char **));
-
-typedef void rl_compdisp_func_t PARAMS((char **, int, int));
-
-/* Type for input and pre-read hook functions like rl_event_hook */
-typedef int rl_hook_func_t PARAMS((void));
-
-/* Input function type */
-typedef int rl_getc_func_t PARAMS((FILE *));
-
-/* Generic function that takes a character buffer (which could be the readline
- line buffer) and an index into it (which could be rl_point) and returns
- an int. */
-typedef int rl_linebuf_func_t PARAMS((char *, int));
-
-/* `Generic' function pointer typedefs */
-typedef int rl_intfunc_t PARAMS((int));
-#define rl_ivoidfunc_t rl_hook_func_t
-typedef int rl_icpfunc_t PARAMS((char *));
-typedef int rl_icppfunc_t PARAMS((char **));
-
-typedef void rl_voidfunc_t PARAMS((void));
-typedef void rl_vintfunc_t PARAMS((int));
-typedef void rl_vcpfunc_t PARAMS((char *));
-typedef void rl_vcppfunc_t PARAMS((char **));
-#endif /* _RL_FUNCTION_TYPEDEF */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _RL_TYPEDEFS_H_ */
diff --git a/readline-4.3.orig/rlwinsize.h b/readline-4.3.orig/rlwinsize.h
deleted file mode 100644
index 7838154..0000000
--- a/readline-4.3.orig/rlwinsize.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/* rlwinsize.h -- an attempt to isolate some of the system-specific defines
- for `struct winsize' and TIOCGWINSZ. */
-
-/* Copyright (C) 1997 Free Software Foundation, Inc.
-
- This file contains the Readline Library (the Library), a set of
- routines for providing Emacs style line input to programs that ask
- for it.
-
- The Library is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- The Library is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if !defined (_RLWINSIZE_H_)
-#define _RLWINSIZE_H_
-
-#if defined (HAVE_CONFIG_H)
-# include "config.h"
-#endif
-
-/* Try to find the definitions of `struct winsize' and TIOGCWINSZ */
-
-#if defined (GWINSZ_IN_SYS_IOCTL) && !defined (TIOCGWINSZ)
-# include <sys/ioctl.h>
-#endif /* GWINSZ_IN_SYS_IOCTL && !TIOCGWINSZ */
-
-#if defined (STRUCT_WINSIZE_IN_TERMIOS) && !defined (STRUCT_WINSIZE_IN_SYS_IOCTL)
-# include <termios.h>
-#endif /* STRUCT_WINSIZE_IN_TERMIOS && !STRUCT_WINSIZE_IN_SYS_IOCTL */
-
-/* Not in either of the standard places, look around. */
-#if !defined (STRUCT_WINSIZE_IN_TERMIOS) && !defined (STRUCT_WINSIZE_IN_SYS_IOCTL)
-# if defined (HAVE_SYS_STREAM_H)
-# include <sys/stream.h>
-# endif /* HAVE_SYS_STREAM_H */
-# if defined (HAVE_SYS_PTEM_H) /* SVR4.2, at least, has it here */
-# include <sys/ptem.h>
-# define _IO_PTEM_H /* work around SVR4.2 1.1.4 bug */
-# endif /* HAVE_SYS_PTEM_H */
-# if defined (HAVE_SYS_PTE_H) /* ??? */
-# include <sys/pte.h>
-# endif /* HAVE_SYS_PTE_H */
-#endif /* !STRUCT_WINSIZE_IN_TERMIOS && !STRUCT_WINSIZE_IN_SYS_IOCTL */
-
-#endif /* _RL_WINSIZE_H */
-
diff --git a/readline-4.3.orig/savestring.c b/readline-4.3.orig/savestring.c
deleted file mode 100644
index c7ebeb1..0000000
--- a/readline-4.3.orig/savestring.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* savestring.c */
-
-/* Copyright (C) 1998 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#include <config.h>
-#ifdef HAVE_STRING_H
-# include <string.h>
-#endif
-#include "xmalloc.h"
-
-/* Backwards compatibility, now that savestring has been removed from
- all `public' readline header files. */
-char *
-savestring (s)
- const char *s;
-{
- return ((char *)strcpy ((char *)xmalloc (1 + strlen (s)), (s)));
-}
diff --git a/readline-4.3.orig/search.c b/readline-4.3.orig/search.c
deleted file mode 100644
index 7e0d60b..0000000
--- a/readline-4.3.orig/search.c
+++ /dev/null
@@ -1,465 +0,0 @@
-/* search.c - code for non-incremental searching in emacs and vi modes. */
-
-/* Copyright (C) 1992 Free Software Foundation, Inc.
-
- This file is part of the Readline Library (the Library), a set of
- routines for providing Emacs style line input to programs that ask
- for it.
-
- The Library is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- The Library is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <sys/types.h>
-#include <stdio.h>
-
-#if defined (HAVE_UNISTD_H)
-# include <unistd.h>
-#endif
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif
-
-#include "rldefs.h"
-#include "rlmbutil.h"
-
-#include "readline.h"
-#include "history.h"
-
-#include "rlprivate.h"
-#include "xmalloc.h"
-
-#ifdef abs
-# undef abs
-#endif
-#define abs(x) (((x) >= 0) ? (x) : -(x))
-
-extern HIST_ENTRY *_rl_saved_line_for_history;
-
-/* Functions imported from the rest of the library. */
-extern int _rl_free_history_entry PARAMS((HIST_ENTRY *));
-
-static char *noninc_search_string = (char *) NULL;
-static int noninc_history_pos;
-
-static char *prev_line_found = (char *) NULL;
-
-static int rl_history_search_len;
-static int rl_history_search_pos;
-static char *history_search_string;
-static int history_string_size;
-
-static void make_history_line_current PARAMS((HIST_ENTRY *));
-static int noninc_search_from_pos PARAMS((char *, int, int));
-static void noninc_dosearch PARAMS((char *, int));
-static void noninc_search PARAMS((int, int));
-static int rl_history_search_internal PARAMS((int, int));
-static void rl_history_search_reinit PARAMS((void));
-
-/* Make the data from the history entry ENTRY be the contents of the
- current line. This doesn't do anything with rl_point; the caller
- must set it. */
-static void
-make_history_line_current (entry)
- HIST_ENTRY *entry;
-{
- rl_replace_line (entry->line, 0);
- rl_undo_list = (UNDO_LIST *)entry->data;
-
- if (_rl_saved_line_for_history)
- _rl_free_history_entry (_rl_saved_line_for_history);
- _rl_saved_line_for_history = (HIST_ENTRY *)NULL;
-}
-
-/* Search the history list for STRING starting at absolute history position
- POS. If STRING begins with `^', the search must match STRING at the
- beginning of a history line, otherwise a full substring match is performed
- for STRING. DIR < 0 means to search backwards through the history list,
- DIR >= 0 means to search forward. */
-static int
-noninc_search_from_pos (string, pos, dir)
- char *string;
- int pos, dir;
-{
- int ret, old;
-
- if (pos < 0)
- return -1;
-
- old = where_history ();
- if (history_set_pos (pos) == 0)
- return -1;
-
- RL_SETSTATE(RL_STATE_SEARCH);
- if (*string == '^')
- ret = history_search_prefix (string + 1, dir);
- else
- ret = history_search (string, dir);
- RL_UNSETSTATE(RL_STATE_SEARCH);
-
- if (ret != -1)
- ret = where_history ();
-
- history_set_pos (old);
- return (ret);
-}
-
-/* Search for a line in the history containing STRING. If DIR is < 0, the
- search is backwards through previous entries, else through subsequent
- entries. */
-static void
-noninc_dosearch (string, dir)
- char *string;
- int dir;
-{
- int oldpos, pos;
- HIST_ENTRY *entry;
-
- if (string == 0 || *string == '\0' || noninc_history_pos < 0)
- {
- rl_ding ();
- return;
- }
-
- pos = noninc_search_from_pos (string, noninc_history_pos + dir, dir);
- if (pos == -1)
- {
- /* Search failed, current history position unchanged. */
- rl_maybe_unsave_line ();
- rl_clear_message ();
- rl_point = 0;
- rl_ding ();
- return;
- }
-
- noninc_history_pos = pos;
-
- oldpos = where_history ();
- history_set_pos (noninc_history_pos);
- entry = current_history ();
-#if defined (VI_MODE)
- if (rl_editing_mode != vi_mode)
-#endif
- history_set_pos (oldpos);
-
- make_history_line_current (entry);
-
- rl_point = 0;
- rl_mark = rl_end;
-
- rl_clear_message ();
-}
-
-/* Search non-interactively through the history list. DIR < 0 means to
- search backwards through the history of previous commands; otherwise
- the search is for commands subsequent to the current position in the
- history list. PCHAR is the character to use for prompting when reading
- the search string; if not specified (0), it defaults to `:'. */
-static void
-noninc_search (dir, pchar)
- int dir;
- int pchar;
-{
- int saved_point, saved_mark, c;
- char *p;
-#if defined (HANDLE_MULTIBYTE)
- char mb[MB_LEN_MAX];
-#endif
-
- rl_maybe_save_line ();
- saved_point = rl_point;
- saved_mark = rl_mark;
-
- /* Use the line buffer to read the search string. */
- rl_line_buffer[0] = 0;
- rl_end = rl_point = 0;
-
- p = _rl_make_prompt_for_search (pchar ? pchar : ':');
- rl_message (p, 0, 0);
- free (p);
-
-#define SEARCH_RETURN rl_restore_prompt (); RL_UNSETSTATE(RL_STATE_NSEARCH); return
-
- RL_SETSTATE(RL_STATE_NSEARCH);
- /* Read the search string. */
- while (1)
- {
- RL_SETSTATE(RL_STATE_MOREINPUT);
- c = rl_read_key ();
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
-
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- c = _rl_read_mbstring (c, mb, MB_LEN_MAX);
-#endif
-
- if (c == 0)
- break;
-
- switch (c)
- {
- case CTRL('H'):
- case RUBOUT:
- if (rl_point == 0)
- {
- rl_maybe_unsave_line ();
- rl_clear_message ();
- rl_point = saved_point;
- rl_mark = saved_mark;
- SEARCH_RETURN;
- }
- _rl_rubout_char (1, c);
- break;
-
- case CTRL('W'):
- rl_unix_word_rubout (1, c);
- break;
-
- case CTRL('U'):
- rl_unix_line_discard (1, c);
- break;
-
- case RETURN:
- case NEWLINE:
- goto dosearch;
- /* NOTREACHED */
- break;
-
- case CTRL('C'):
- case CTRL('G'):
- rl_maybe_unsave_line ();
- rl_clear_message ();
- rl_point = saved_point;
- rl_mark = saved_mark;
- rl_ding ();
- SEARCH_RETURN;
-
- default:
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- rl_insert_text (mb);
- else
-#endif
- _rl_insert_char (1, c);
- break;
- }
- (*rl_redisplay_function) ();
- }
-
- dosearch:
- rl_mark = saved_mark;
-
- /* If rl_point == 0, we want to re-use the previous search string and
- start from the saved history position. If there's no previous search
- string, punt. */
- if (rl_point == 0)
- {
- if (!noninc_search_string)
- {
- rl_ding ();
- SEARCH_RETURN;
- }
- }
- else
- {
- /* We want to start the search from the current history position. */
- noninc_history_pos = where_history ();
- FREE (noninc_search_string);
- noninc_search_string = savestring (rl_line_buffer);
- }
-
- rl_restore_prompt ();
- noninc_dosearch (noninc_search_string, dir);
- RL_UNSETSTATE(RL_STATE_NSEARCH);
-}
-
-/* Search forward through the history list for a string. If the vi-mode
- code calls this, KEY will be `?'. */
-int
-rl_noninc_forward_search (count, key)
- int count, key;
-{
- noninc_search (1, (key == '?') ? '?' : 0);
- return 0;
-}
-
-/* Reverse search the history list for a string. If the vi-mode code
- calls this, KEY will be `/'. */
-int
-rl_noninc_reverse_search (count, key)
- int count, key;
-{
- noninc_search (-1, (key == '/') ? '/' : 0);
- return 0;
-}
-
-/* Search forward through the history list for the last string searched
- for. If there is no saved search string, abort. */
-int
-rl_noninc_forward_search_again (count, key)
- int count, key;
-{
- if (!noninc_search_string)
- {
- rl_ding ();
- return (-1);
- }
- noninc_dosearch (noninc_search_string, 1);
- return 0;
-}
-
-/* Reverse search in the history list for the last string searched
- for. If there is no saved search string, abort. */
-int
-rl_noninc_reverse_search_again (count, key)
- int count, key;
-{
- if (!noninc_search_string)
- {
- rl_ding ();
- return (-1);
- }
- noninc_dosearch (noninc_search_string, -1);
- return 0;
-}
-
-static int
-rl_history_search_internal (count, dir)
- int count, dir;
-{
- HIST_ENTRY *temp;
- int ret, oldpos;
-
- rl_maybe_save_line ();
- temp = (HIST_ENTRY *)NULL;
-
- /* Search COUNT times through the history for a line whose prefix
- matches history_search_string. When this loop finishes, TEMP,
- if non-null, is the history line to copy into the line buffer. */
- while (count)
- {
- ret = noninc_search_from_pos (history_search_string, rl_history_search_pos + dir, dir);
- if (ret == -1)
- break;
-
- /* Get the history entry we found. */
- rl_history_search_pos = ret;
- oldpos = where_history ();
- history_set_pos (rl_history_search_pos);
- temp = current_history ();
- history_set_pos (oldpos);
-
- /* Don't find multiple instances of the same line. */
- if (prev_line_found && STREQ (prev_line_found, temp->line))
- continue;
- prev_line_found = temp->line;
- count--;
- }
-
- /* If we didn't find anything at all, return. */
- if (temp == 0)
- {
- rl_maybe_unsave_line ();
- rl_ding ();
- /* If you don't want the saved history line (last match) to show up
- in the line buffer after the search fails, change the #if 0 to
- #if 1 */
-#if 0
- if (rl_point > rl_history_search_len)
- {
- rl_point = rl_end = rl_history_search_len;
- rl_line_buffer[rl_end] = '\0';
- rl_mark = 0;
- }
-#else
- rl_point = rl_history_search_len; /* rl_maybe_unsave_line changes it */
- rl_mark = rl_end;
-#endif
- return 1;
- }
-
- /* Copy the line we found into the current line buffer. */
- make_history_line_current (temp);
-
- rl_point = rl_history_search_len;
- rl_mark = rl_end;
-
- return 0;
-}
-
-static void
-rl_history_search_reinit ()
-{
- rl_history_search_pos = where_history ();
- rl_history_search_len = rl_point;
- prev_line_found = (char *)NULL;
- if (rl_point)
- {
- if (rl_history_search_len >= history_string_size - 2)
- {
- history_string_size = rl_history_search_len + 2;
- history_search_string = (char *)xrealloc (history_search_string, history_string_size);
- }
- history_search_string[0] = '^';
- strncpy (history_search_string + 1, rl_line_buffer, rl_point);
- history_search_string[rl_point + 1] = '\0';
- }
- _rl_free_saved_history_line ();
-}
-
-/* Search forward in the history for the string of characters
- from the start of the line to rl_point. This is a non-incremental
- search. */
-int
-rl_history_search_forward (count, ignore)
- int count, ignore;
-{
- if (count == 0)
- return (0);
-
- if (rl_last_func != rl_history_search_forward &&
- rl_last_func != rl_history_search_backward)
- rl_history_search_reinit ();
-
- if (rl_history_search_len == 0)
- return (rl_get_next_history (count, ignore));
- return (rl_history_search_internal (abs (count), (count > 0) ? 1 : -1));
-}
-
-/* Search backward through the history for the string of characters
- from the start of the line to rl_point. This is a non-incremental
- search. */
-int
-rl_history_search_backward (count, ignore)
- int count, ignore;
-{
- if (count == 0)
- return (0);
-
- if (rl_last_func != rl_history_search_forward &&
- rl_last_func != rl_history_search_backward)
- rl_history_search_reinit ();
-
- if (rl_history_search_len == 0)
- return (rl_get_previous_history (count, ignore));
- return (rl_history_search_internal (abs (count), (count > 0) ? -1 : 1));
-}
diff --git a/readline-4.3.orig/shell.c b/readline-4.3.orig/shell.c
deleted file mode 100644
index ad27cc1..0000000
--- a/readline-4.3.orig/shell.c
+++ /dev/null
@@ -1,196 +0,0 @@
-/* shell.c -- readline utility functions that are normally provided by
- bash when readline is linked as part of the shell. */
-
-/* Copyright (C) 1997 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <sys/types.h>
-
-#if defined (HAVE_UNISTD_H)
-# include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#if defined (HAVE_STRING_H)
-# include <string.h>
-#else
-# include <strings.h>
-#endif /* !HAVE_STRING_H */
-
-#if defined (HAVE_LIMITS_H)
-# include <limits.h>
-#endif
-
-#include <fcntl.h>
-#include <pwd.h>
-
-#include <stdio.h>
-
-#include "rlstdc.h"
-#include "rlshell.h"
-#include "xmalloc.h"
-
-#if !defined (HAVE_GETPW_DECLS)
-extern struct passwd *getpwuid PARAMS((uid_t));
-#endif /* !HAVE_GETPW_DECLS */
-
-#ifndef NULL
-# define NULL 0
-#endif
-
-#ifndef CHAR_BIT
-# define CHAR_BIT 8
-#endif
-
-/* Nonzero if the integer type T is signed. */
-#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1))
-
-/* Bound on length of the string representing an integer value of type T.
- Subtract one for the sign bit if T is signed;
- 302 / 1000 is log10 (2) rounded up;
- add one for integer division truncation;
- add one more for a minus sign if t is signed. */
-#define INT_STRLEN_BOUND(t) \
- ((sizeof (t) * CHAR_BIT - TYPE_SIGNED (t)) * 302 / 1000 \
- + 1 + TYPE_SIGNED (t))
-
-/* All of these functions are resolved from bash if we are linking readline
- as part of bash. */
-
-/* Does shell-like quoting using single quotes. */
-char *
-sh_single_quote (string)
- char *string;
-{
- register int c;
- char *result, *r, *s;
-
- result = (char *)xmalloc (3 + (4 * strlen (string)));
- r = result;
- *r++ = '\'';
-
- for (s = string; s && (c = *s); s++)
- {
- *r++ = c;
-
- if (c == '\'')
- {
- *r++ = '\\'; /* insert escaped single quote */
- *r++ = '\'';
- *r++ = '\''; /* start new quoted string */
- }
- }
-
- *r++ = '\'';
- *r = '\0';
-
- return (result);
-}
-
-/* Set the environment variables LINES and COLUMNS to lines and cols,
- respectively. */
-void
-sh_set_lines_and_columns (lines, cols)
- int lines, cols;
-{
- char *b;
-
-#if defined (HAVE_PUTENV)
- b = (char *)xmalloc (INT_STRLEN_BOUND (int) + sizeof ("LINES=") + 1);
- sprintf (b, "LINES=%d", lines);
- putenv (b);
- b = (char *)xmalloc (INT_STRLEN_BOUND (int) + sizeof ("COLUMNS=") + 1);
- sprintf (b, "COLUMNS=%d", cols);
- putenv (b);
-#else /* !HAVE_PUTENV */
-# if defined (HAVE_SETENV)
- b = (char *)xmalloc (INT_STRLEN_BOUND (int) + 1);
- sprintf (b, "%d", lines);
- setenv ("LINES", b, 1);
- b = (char *)xmalloc (INT_STRLEN_BOUND (int) + 1);
- sprintf (b, "%d", cols);
- setenv ("COLUMNS", b, 1);
-# endif /* HAVE_SETENV */
-#endif /* !HAVE_PUTENV */
-}
-
-char *
-sh_get_env_value (varname)
- const char *varname;
-{
- return ((char *)getenv (varname));
-}
-
-char *
-sh_get_home_dir ()
-{
- char *home_dir;
- struct passwd *entry;
-
- home_dir = (char *)NULL;
- entry = getpwuid (getuid ());
- if (entry)
- home_dir = entry->pw_dir;
- return (home_dir);
-}
-
-#if !defined (O_NDELAY)
-# if defined (FNDELAY)
-# define O_NDELAY FNDELAY
-# endif
-#endif
-
-int
-sh_unset_nodelay_mode (fd)
- int fd;
-{
- int flags, bflags;
-
- if ((flags = fcntl (fd, F_GETFL, 0)) < 0)
- return -1;
-
- bflags = 0;
-
-#ifdef O_NONBLOCK
- bflags |= O_NONBLOCK;
-#endif
-
-#ifdef O_NDELAY
- bflags |= O_NDELAY;
-#endif
-
- if (flags & bflags)
- {
- flags &= ~bflags;
- return (fcntl (fd, F_SETFL, flags));
- }
-
- return 0;
-}
diff --git a/readline-4.3.orig/shlib/Makefile.in b/readline-4.3.orig/shlib/Makefile.in
deleted file mode 100644
index 0cba57e..0000000
--- a/readline-4.3.orig/shlib/Makefile.in
+++ /dev/null
@@ -1,437 +0,0 @@
-## -*- text -*- ##
-# Makefile for the GNU readline library shared library support.
-#
-# Copyright (C) 1998 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA.
-
-RL_LIBRARY_VERSION = @LIBVERSION@
-RL_LIBRARY_NAME = readline
-
-srcdir = @srcdir@
-VPATH = .:@top_srcdir@
-topdir = @top_srcdir@
-BUILD_DIR = @BUILD_DIR@
-
-INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_DATA = @INSTALL_DATA@
-
-CC = @CC@
-RANLIB = @RANLIB@
-AR = @AR@
-ARFLAGS = @ARFLAGS@
-RM = rm -f
-CP = cp
-MV = mv
-LN = ln
-
-SHELL = @MAKE_SHELL@
-
-host_os = @host_os@
-
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-includedir = @includedir@
-libdir = @libdir@
-
-# Support an alternate destination root directory for package building
-DESTDIR =
-
-CFLAGS = @CFLAGS@
-LOCAL_CFLAGS = @LOCAL_CFLAGS@ -DRL_LIBRARY_VERSION='"$(RL_LIBRARY_VERSION)"'
-CPPFLAGS = @CPPFLAGS@
-LDFLAGS = @LDFLAGS@ @LOCAL_LDFLAGS@ @CFLAGS@
-
-DEFS = @DEFS@
-LOCAL_DEFS = @LOCAL_DEFS@
-
-#
-# These values are generated for configure by ${topdir}/support/shobj-conf.
-# If your system is not supported by that script, but includes facilities for
-# dynamic loading of shared objects, please update the script and send the
-# changes to bash-maintainers@gnu.org.
-#
-SHOBJ_CC = @SHOBJ_CC@
-SHOBJ_CFLAGS = @SHOBJ_CFLAGS@
-SHOBJ_LD = @SHOBJ_LD@
-
-SHOBJ_LDFLAGS = @SHOBJ_LDFLAGS@
-SHOBJ_XLDFLAGS = @SHOBJ_XLDFLAGS@
-SHOBJ_LIBS = @SHOBJ_LIBS@
-
-SHLIB_XLDFLAGS = @SHLIB_XLDFLAGS@
-SHLIB_LIBS = @SHLIB_LIBS@
-SHLIB_LIBSUFF = @SHLIB_LIBSUFF@
-
-SHLIB_LIBVERSION = @SHLIB_LIBVERSION@
-
-SHLIB_STATUS = @SHLIB_STATUS@
-
-# shared library versioning
-SHLIB_MAJOR= @SHLIB_MAJOR@
-# shared library systems like SVR4's do not use minor versions
-SHLIB_MINOR= .@SHLIB_MINOR@
-
-# For libraries which include headers from other libraries.
-INCLUDES = -I. -I.. -I$(topdir)
-
-CCFLAGS = $(DEFS) $(LOCAL_DEFS) $(CPPFLAGS) $(INCLUDES) $(LOCAL_CFLAGS) $(CFLAGS)
-
-.SUFFIXES: .so
-
-.c.so:
- ${RM} $@
- $(SHOBJ_CC) -c $(CCFLAGS) $(SHOBJ_CFLAGS) -o $*.o $<
- $(MV) $*.o $@
-
-# The name of the main library target.
-
-SHARED_READLINE = libreadline.$(SHLIB_LIBVERSION)
-SHARED_HISTORY = libhistory.$(SHLIB_LIBVERSION)
-SHARED_LIBS = $(SHARED_READLINE) $(SHARED_HISTORY)
-
-# The C code source files for this library.
-CSOURCES = $(topdir)/readline.c $(topdir)/funmap.c $(topdir)/keymaps.c \
- $(topdir)/vi_mode.c $(topdir)/parens.c $(topdir)/rltty.c \
- $(topdir)/complete.c $(topdir)/bind.c $(topdir)/isearch.c \
- $(topdir)/display.c $(topdir)/signals.c $(topdir)/emacs_keymap.c \
- $(topdir)/vi_keymap.c $(topdir)/util.c $(topdir)/kill.c \
- $(topdir)/undo.c $(topdir)/macro.c $(topdir)/input.c \
- $(topdir)/callback.c $(topdir)/terminal.c $(topdir)/xmalloc.c \
- $(topdir)/history.c $(topdir)/histsearch.c $(topdir)/histexpand.c \
- $(topdir)/histfile.c $(topdir)/nls.c $(topdir)/search.c \
- $(topdir)/shell.c $(topdir)/savestring.c $(topdir)/tilde.c \
- $(topdir)/text.c $(topdir)/misc.c $(topdir)/compat.c \
- $(topdir)/mbutil.c
-
-# The header files for this library.
-HSOURCES = readline.h rldefs.h chardefs.h keymaps.h history.h histlib.h \
- posixstat.h posixdir.h posixjmp.h tilde.h rlconf.h rltty.h \
- ansi_stdlib.h tcap.h xmalloc.h rlprivate.h rlshell.h rlmbutil.h
-
-SHARED_HISTOBJ = history.so histexpand.so histfile.so histsearch.so shell.so \
- mbutil.so
-SHARED_TILDEOBJ = tilde.so
-SHARED_OBJ = readline.so vi_mode.so funmap.so keymaps.so parens.so search.so \
- rltty.so complete.so bind.so isearch.so display.so signals.so \
- util.so kill.so undo.so macro.so input.so callback.so terminal.so \
- text.so nls.so misc.so xmalloc.so $(SHARED_HISTOBJ) $(SHARED_TILDEOBJ) \
- compat.so
-
-##########################################################################
-
-all: $(SHLIB_STATUS)
-
-supported: $(SHARED_LIBS)
-
-unsupported:
- @echo "Your system and compiler (${host_os}-${CC}) are not supported by the"
- @echo "${topdir}/support/shobj-conf script."
- @echo "If your operating system provides facilities for creating"
- @echo "shared libraries, please update the script and re-run configure."
- @echo "Please send the changes you made to bash-maintainers@gnu.org"
- @echo "for inclusion in future bash and readline releases."
-
-$(SHARED_READLINE): $(SHARED_OBJ)
- $(RM) $@
- $(SHOBJ_LD) ${SHOBJ_LDFLAGS} ${SHLIB_XLDFLAGS} -o $@ $(SHARED_OBJ) $(SHLIB_LIBS)
-
-$(SHARED_HISTORY): $(SHARED_HISTOBJ) xmalloc.so
- $(RM) $@
- $(SHOBJ_LD) ${SHOBJ_LDFLAGS} ${SHLIB_XLDFLAGS} -o $@ $(SHARED_HISTOBJ) xmalloc.so $(SHLIB_LIBS)
-
-# Since tilde.c is shared between readline and bash, make sure we compile
-# it with the right flags when it's built as part of readline
-tilde.so: tilde.c
- ${RM} $@
- $(SHOBJ_CC) -c $(CCFLAGS) $(SHOBJ_CFLAGS) -DREADLINE_LIBRARY -c -o tilde.o $(topdir)/tilde.c
- $(MV) tilde.o $@
-
-installdirs: $(topdir)/support/mkdirs
- -$(SHELL) $(topdir)/support/mkdirs $(DESTDIR)$(libdir)
-
-install: installdirs $(SHLIB_STATUS)
- $(SHELL) $(topdir)/support/shlib-install -O $(host_os) -d $(DESTDIR)$(libdir) -i "$(INSTALL_DATA)" $(SHARED_HISTORY)
- $(SHELL) $(topdir)/support/shlib-install -O $(host_os) -d $(DESTDIR)$(libdir) -i "$(INSTALL_DATA)" $(SHARED_READLINE)
- @echo install: you may need to run ldconfig
-
-uninstall:
- $(SHELL) $(topdir)/support/shlib-install -O $(host_os) -d $(DESTDIR)$(libdir) -U $(SHARED_HISTORY)
- $(SHELL) $(topdir)/support/shlib-install -O $(host_os) -d $(DESTDIR)$(libdir) -U $(SHARED_READLINE)
- @echo uninstall: you may need to run ldconfig
-
-clean mostlyclean: force
- $(RM) $(SHARED_OBJ) $(SHARED_LIBS)
-
-distclean maintainer-clean: clean
- $(RM) Makefile
-
-force:
-
-# Tell versions [3.59,3.63) of GNU make not to export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
-
-# Dependencies
-bind.so: $(topdir)/ansi_stdlib.h $(topdir)/posixstat.h
-bind.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h
-bind.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h
-bind.so: $(topdir)/rltypedefs.h
-bind.so: $(topdir)/tilde.h $(topdir)/history.h
-compat.so: $(topdir)/rlstdc.h
-callback.so: $(topdir)/rlconf.h
-callback.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h
-callback.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h
-callback.so: $(topdir)/rltypedefs.h
-callback.so: $(topdir)/tilde.h
-complete.so: $(topdir)/ansi_stdlib.h posixdir.h $(topdir)/posixstat.h
-complete.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h
-complete.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h
-complete.so: $(topdir)/rltypedefs.h
-complete.so: $(topdir)/tilde.h
-display.so: $(topdir)/ansi_stdlib.h $(topdir)/posixstat.h
-display.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h
-display.so: $(topdir)/tcap.h
-display.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h
-display.so: $(topdir)/rltypedefs.h
-display.so: $(topdir)/tilde.h $(topdir)/history.h
-funmap.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h
-funmap.so: $(topdir)/rltypedefs.h
-funmap.so: $(topdir)/rlconf.h $(topdir)/ansi_stdlib.h
-funmap.so: ${BUILD_DIR}/config.h $(topdir)/tilde.h
-histexpand.so: $(topdir)/ansi_stdlib.h
-histexpand.so: $(topdir)/history.h $(topdir)/histlib.h $(topdir)/rltypedefs.h
-histexpand.so: ${BUILD_DIR}/config.h
-histfile.so: $(topdir)/ansi_stdlib.h
-histfile.so: $(topdir)/history.h $(topdir)/histlib.h $(topdir)/rltypedefs.h
-histfile.so: ${BUILD_DIR}/config.h
-history.so: $(topdir)/ansi_stdlib.h
-history.so: $(topdir)/history.h $(topdir)/histlib.h $(topdir)/rltypedefs.h
-history.so: ${BUILD_DIR}/config.h
-histsearch.so: $(topdir)/ansi_stdlib.h
-histsearch.so: $(topdir)/history.h $(topdir)/histlib.h $(topdir)/rltypedefs.h
-histsearch.so: ${BUILD_DIR}/config.h
-input.so: $(topdir)/ansi_stdlib.h
-input.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h
-input.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h
-input.so: $(topdir)/rltypedefs.h
-input.so: $(topdir)/tilde.h
-isearch.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h
-isearch.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h
-isearch.so: $(topdir)/rltypedefs.h
-isearch.so: $(topdir)/ansi_stdlib.h $(topdir)/history.h $(topdir)/tilde.h
-keymaps.so: emacs_keymap.c vi_keymap.c
-keymaps.so: $(topdir)/keymaps.h $(topdir)/chardefs.h $(topdir)/rlconf.h
-keymaps.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h
-keymaps.so: $(topdir)/rltypedefs.h
-keymaps.so: ${BUILD_DIR}/config.h $(topdir)/ansi_stdlib.h $(topdir)/tilde.h
-kill.so: $(topdir)/ansi_stdlib.h
-kill.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h
-kill.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h
-kill.so: $(topdir)/tilde.h $(topdir)/history.h $(topdir)/rltypedefs.h
-macro.so: $(topdir)/ansi_stdlib.h
-macro.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h
-macro.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h
-macro.so: $(topdir)/tilde.h $(topdir)/history.h $(topdir)/rltypedefs.h
-mbutil.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h
-mbutil.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/rltypedefs.h
-mbutil.so: $(topdir)/chardefs.h $(topdir)/rlstdc.h
-misc.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h
-misc.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h
-misc.so: $(topdir)/rltypedefs.h
-misc.so: $(topdir)/history.h $(topdir)/tilde.h $(topdir)/ansi_stdlib.h
-nls.so: $(topdir)/ansi_stdlib.h
-nls.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h
-nls.o: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h
-nls.o: $(topdir)/rltypedefs.h
-nls.o: $(topdir)/tilde.h $(topdir)/history.h $(topdir)/rlstdc.h
-parens.so: $(topdir)/rlconf.h ${BUILD_DIR}/config.h
-parens.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h
-parens.so: $(topdir)/rltypedefs.h
-parens.so: $(topdir)/tilde.h
-rltty.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h
-rltty.so: $(topdir)/rltty.h $(topdir)/tilde.h
-rltty.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h
-rltty.so: $(topdir)/rltypedefs.h
-search.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h
-search.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h
-search.so: $(topdir)/ansi_stdlib.h $(topdir)/history.h $(topdir)/tilde.h
-search.so: $(topdir)/rltypedefs.h
-signals.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h
-signals.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h
-signals.so: $(topdir)/history.h $(topdir)/tilde.h
-signals.so: $(topdir)/rltypedefs.h
-terminal.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h
-terminal.so: $(topdir)/tcap.h
-terminal.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h
-terminal.so: $(topdir)/tilde.h $(topdir)/history.h
-terminal.so: $(topdir)/rltypedefs.h
-text.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h
-text.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h
-text.so: $(topdir)/rltypedefs.h
-text.so: $(topdir)/history.h $(topdir)/tilde.h $(topdir)/ansi_stdlib.h
-tilde.so: $(topdir)/ansi_stdlib.h ${BUILD_DIR}/config.h $(topdir)/tilde.h
-undo.so: $(topdir)/ansi_stdlib.h
-undo.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h
-undo.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h
-undo.so: $(topdir)/rltypedefs.h
-undo.so: $(topdir)/tilde.h $(topdir)/history.h
-util.so: $(topdir)/posixjmp.h $(topdir)/ansi_stdlib.h
-util.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h
-util.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h
-util.so: $(topdir)/rltypedefs.h $(topdir)/tilde.h
-vi_mode.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h
-vi_mode.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h
-vi_mode.so: $(topdir)/history.h $(topdir)/ansi_stdlib.h $(topdir)/tilde.h
-vi_mode.so: $(topdir)/rltypedefs.h
-xmalloc.so: ${BUILD_DIR}/config.h
-xmalloc.so: $(topdir)/ansi_stdlib.h
-
-bind.so: $(topdir)/rlshell.h
-histfile.so: $(topdir)/rlshell.h
-nls.so: $(topdir)/rlshell.h
-readline.so: $(topdir)/rlshell.h
-shell.so: $(topdir)/rlshell.h
-terminal.so: $(topdir)/rlshell.h
-histexpand.so: $(topdir)/rlshell.h
-
-bind.so: $(topdir)/rlprivate.h
-callback.so: $(topdir)/rlprivate.h
-complete.so: $(topdir)/rlprivate.h
-display.so: $(topdir)/rlprivate.h
-input.so: $(topdir)/rlprivate.h
-isearch.so: $(topdir)/rlprivate.h
-kill.so: $(topdir)/rlprivate.h
-macro.so: $(topdir)/rlprivate.h
-mbutil.so: $(topdir)/rlprivate.h
-misc.so: $(topdir)/rlprivate.h
-nls.so: $(topdir)/rlprivate.h
-parens.so: $(topdir)/rlprivate.h
-readline.so: $(topdir)/rlprivate.h
-rltty.so: $(topdir)/rlprivate.h
-search.so: $(topdir)/rlprivate.h
-signals.so: $(topdir)/rlprivate.h
-terminal.so: $(topdir)/rlprivate.h
-text.so: $(topdir)/rlprivate.h
-undo.so: $(topdir)/rlprivate.h
-util.so: $(topdir)/rlprivate.h
-vi_mode.so: $(topdir)/rlprivate.h
-
-bind.so: $(topdir)/xmalloc.h
-complete.so: $(topdir)/xmalloc.h
-display.so: $(topdir)/xmalloc.h
-funmap.so: $(topdir)/xmalloc.h
-histexpand.so: $(topdir)/xmalloc.h
-histfile.so: $(topdir)/xmalloc.h
-history.so: $(topdir)/xmalloc.h
-input.so: $(topdir)/xmalloc.h
-isearch.so: $(topdir)/xmalloc.h
-keymaps.so: $(topdir)/xmalloc.h
-kill.so: $(topdir)/xmalloc.h
-macro.so: $(topdir)/xmalloc.h
-mbutil.so: $(topdir)/xmalloc.h
-misc.so: $(topdir)/xmalloc.h
-readline.so: $(topdir)/xmalloc.h
-savestring.so: $(topdir)/xmalloc.h
-search.so: $(topdir)/xmalloc.h
-shell.so: $(topdir)/xmalloc.h
-terminal.so: $(topdir)/xmalloc.h
-text.so: $(topdir)/xmalloc.h
-tilde.so: $(topdir)/xmalloc.h
-undo.so: $(topdir)/xmalloc.h
-util.so: $(topdir)/xmalloc.h
-vi_mode.so: $(topdir)/xmalloc.h
-xmalloc.so: $(topdir)/xmalloc.h
-
-complete.o: $(topdir)/rlmbutil.h
-display.o: $(topdir)/rlmbutil.h
-histexpand.o: $(topdir)/rlmbutil.h
-input.o: $(topdir)/rlmbutil.h
-isearch.o: $(topdir)/rlmbutil.h
-mbutil.o: $(topdir)/rlmbutil.h
-misc.o: $(topdir)/rlmbutil.h
-readline.o: $(topdir)/rlmbutil.h
-search.o: $(topdir)/rlmbutil.h
-text.o: $(topdir)/rlmbutil.h
-vi_mode.o: $(topdir)/rlmbutil.h
-
-bind.so: $(topdir)/bind.c
-callback.so: $(topdir)/callback.c
-compat.so: $(topdir)/compat.c
-complete.so: $(topdir)/complete.c
-display.so: $(topdir)/display.c
-funmap.so: $(topdir)/funmap.c
-input.so: $(topdir)/input.c
-isearch.so: $(topdir)/isearch.c
-keymaps.so: $(topdir)/keymaps.c $(topdir)/emacs_keymap.c $(topdir)/vi_keymap.c
-kill.so: $(topdir)/kill.c
-macro.so: $(topdir)/macro.c
-mbutil.so: $(topdir)/mbutil.c
-misc.so: $(topdir)/mbutil.c
-nls.so: $(topdir)/nls.c
-parens.so: $(topdir)/parens.c
-readline.so: $(topdir)/readline.c
-rltty.so: $(topdir)/rltty.c
-savestring.so: $(topdir)/savestring.c
-search.so: $(topdir)/search.c
-shell.so: $(topdir)/shell.c
-signals.so: $(topdir)/signals.c
-terminal.so: $(topdir)/terminal.c
-text.so: $(topdir)/terminal.c
-tilde.so: $(topdir)/tilde.c
-undo.so: $(topdir)/undo.c
-util.so: $(topdir)/util.c
-vi_mode.so: $(topdir)/vi_mode.c
-xmalloc.so: $(topdir)/xmalloc.c
-
-histexpand.so: $(topdir)/histexpand.c
-histfile.so: $(topdir)/histfile.c
-history.so: $(topdir)/history.c
-histsearch.so: $(topdir)/histsearch.c
-
-bind.so: bind.c
-callback.so: callback.c
-comapt.so: compat.c
-complete.so: complete.c
-display.so: display.c
-funmap.so: funmap.c
-input.so: input.c
-isearch.so: isearch.c
-keymaps.so: keymaps.c emacs_keymap.c vi_keymap.c
-kill.so: kill.c
-macro.so: macro.c
-mbutil.so: mbutil.c
-misc.so: misc.c
-nls.so: nls.c
-parens.so: parens.c
-readline.so: readline.c
-rltty.so: rltty.c
-savestring.so: savestring.c
-search.so: search.c
-signals.so: signals.c
-shell.so: shell.c
-terminal.so: terminal.c
-text.so: terminal.c
-tilde.so: tilde.c
-undo.so: undo.c
-util.so: util.c
-vi_mode.so: vi_mode.c
-xmalloc.so: xmalloc.c
-
-histexpand.so: histexpand.c
-histfile.so: histfile.c
-history.so: history.c
-histsearch.so: histsearch.c
diff --git a/readline-4.3.orig/signals.c b/readline-4.3.orig/signals.c
deleted file mode 100644
index 0a1468b..0000000
--- a/readline-4.3.orig/signals.c
+++ /dev/null
@@ -1,398 +0,0 @@
-/* signals.c -- signal handling support for readline. */
-
-/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <stdio.h> /* Just for NULL. Yuck. */
-#include <sys/types.h>
-#include <signal.h>
-
-#if defined (HAVE_UNISTD_H)
-# include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-
-/* System-specific feature definitions and include files. */
-#include "rldefs.h"
-
-#if defined (GWINSZ_IN_SYS_IOCTL)
-# include <sys/ioctl.h>
-#endif /* GWINSZ_IN_SYS_IOCTL */
-
-#if defined (HANDLE_SIGNALS)
-/* Some standard library routines. */
-#include "readline.h"
-#include "history.h"
-
-#include "rlprivate.h"
-
-#if !defined (RETSIGTYPE)
-# if defined (VOID_SIGHANDLER)
-# define RETSIGTYPE void
-# else
-# define RETSIGTYPE int
-# endif /* !VOID_SIGHANDLER */
-#endif /* !RETSIGTYPE */
-
-#if defined (VOID_SIGHANDLER)
-# define SIGHANDLER_RETURN return
-#else
-# define SIGHANDLER_RETURN return (0)
-#endif
-
-/* This typedef is equivalent to the one for Function; it allows us
- to say SigHandler *foo = signal (SIGKILL, SIG_IGN); */
-typedef RETSIGTYPE SigHandler ();
-
-#if defined (HAVE_POSIX_SIGNALS)
-typedef struct sigaction sighandler_cxt;
-# define rl_sigaction(s, nh, oh) sigaction(s, nh, oh)
-#else
-typedef struct { SigHandler *sa_handler; int sa_mask, sa_flags; } sighandler_cxt;
-# define sigemptyset(m)
-#endif /* !HAVE_POSIX_SIGNALS */
-
-static SigHandler *rl_set_sighandler PARAMS((int, SigHandler *, sighandler_cxt *));
-static void rl_maybe_set_sighandler PARAMS((int, SigHandler *, sighandler_cxt *));
-
-/* Exported variables for use by applications. */
-
-/* If non-zero, readline will install its own signal handlers for
- SIGINT, SIGTERM, SIGQUIT, SIGALRM, SIGTSTP, SIGTTIN, and SIGTTOU. */
-int rl_catch_signals = 1;
-
-/* If non-zero, readline will install a signal handler for SIGWINCH. */
-#ifdef SIGWINCH
-int rl_catch_sigwinch = 1;
-#endif
-
-static int signals_set_flag;
-static int sigwinch_set_flag;
-
-/* **************************************************************** */
-/* */
-/* Signal Handling */
-/* */
-/* **************************************************************** */
-
-static sighandler_cxt old_int, old_term, old_alrm, old_quit;
-#if defined (SIGTSTP)
-static sighandler_cxt old_tstp, old_ttou, old_ttin;
-#endif
-#if defined (SIGWINCH)
-static sighandler_cxt old_winch;
-#endif
-
-/* Readline signal handler functions. */
-
-static RETSIGTYPE
-rl_signal_handler (sig)
- int sig;
-{
-#if defined (HAVE_POSIX_SIGNALS)
- sigset_t set;
-#else /* !HAVE_POSIX_SIGNALS */
-# if defined (HAVE_BSD_SIGNALS)
- long omask;
-# else /* !HAVE_BSD_SIGNALS */
- sighandler_cxt dummy_cxt; /* needed for rl_set_sighandler call */
-# endif /* !HAVE_BSD_SIGNALS */
-#endif /* !HAVE_POSIX_SIGNALS */
-
- RL_SETSTATE(RL_STATE_SIGHANDLER);
-
-#if !defined (HAVE_BSD_SIGNALS) && !defined (HAVE_POSIX_SIGNALS)
- /* Since the signal will not be blocked while we are in the signal
- handler, ignore it until rl_clear_signals resets the catcher. */
- if (sig == SIGINT || sig == SIGALRM)
- rl_set_sighandler (sig, SIG_IGN, &dummy_cxt);
-#endif /* !HAVE_BSD_SIGNALS && !HAVE_POSIX_SIGNALS */
-
- switch (sig)
- {
- case SIGINT:
- rl_free_line_state ();
- /* FALLTHROUGH */
-
-#if defined (SIGTSTP)
- case SIGTSTP:
- case SIGTTOU:
- case SIGTTIN:
-#endif /* SIGTSTP */
- case SIGALRM:
- case SIGTERM:
- case SIGQUIT:
- rl_cleanup_after_signal ();
-
-#if defined (HAVE_POSIX_SIGNALS)
- sigprocmask (SIG_BLOCK, (sigset_t *)NULL, &set);
- sigdelset (&set, sig);
-#else /* !HAVE_POSIX_SIGNALS */
-# if defined (HAVE_BSD_SIGNALS)
- omask = sigblock (0);
-# endif /* HAVE_BSD_SIGNALS */
-#endif /* !HAVE_POSIX_SIGNALS */
-
-#if defined (__EMX__)
- signal (sig, SIG_ACK);
-#endif
-
- kill (getpid (), sig);
-
- /* Let the signal that we just sent through. */
-#if defined (HAVE_POSIX_SIGNALS)
- sigprocmask (SIG_SETMASK, &set, (sigset_t *)NULL);
-#else /* !HAVE_POSIX_SIGNALS */
-# if defined (HAVE_BSD_SIGNALS)
- sigsetmask (omask & ~(sigmask (sig)));
-# endif /* HAVE_BSD_SIGNALS */
-#endif /* !HAVE_POSIX_SIGNALS */
-
- rl_reset_after_signal ();
- }
-
- RL_UNSETSTATE(RL_STATE_SIGHANDLER);
- SIGHANDLER_RETURN;
-}
-
-#if defined (SIGWINCH)
-static RETSIGTYPE
-rl_sigwinch_handler (sig)
- int sig;
-{
- SigHandler *oh;
-
-#if defined (MUST_REINSTALL_SIGHANDLERS)
- sighandler_cxt dummy_winch;
-
- /* We don't want to change old_winch -- it holds the state of SIGWINCH
- disposition set by the calling application. We need this state
- because we call the application's SIGWINCH handler after updating
- our own idea of the screen size. */
- rl_set_sighandler (SIGWINCH, rl_sigwinch_handler, &dummy_winch);
-#endif
-
- RL_SETSTATE(RL_STATE_SIGHANDLER);
- rl_resize_terminal ();
-
- /* If another sigwinch handler has been installed, call it. */
- oh = (SigHandler *)old_winch.sa_handler;
- if (oh && oh != (SigHandler *)SIG_IGN && oh != (SigHandler *)SIG_DFL)
- (*oh) (sig);
-
- RL_UNSETSTATE(RL_STATE_SIGHANDLER);
- SIGHANDLER_RETURN;
-}
-#endif /* SIGWINCH */
-
-/* Functions to manage signal handling. */
-
-#if !defined (HAVE_POSIX_SIGNALS)
-static int
-rl_sigaction (sig, nh, oh)
- int sig;
- sighandler_cxt *nh, *oh;
-{
- oh->sa_handler = signal (sig, nh->sa_handler);
- return 0;
-}
-#endif /* !HAVE_POSIX_SIGNALS */
-
-/* Set up a readline-specific signal handler, saving the old signal
- information in OHANDLER. Return the old signal handler, like
- signal(). */
-static SigHandler *
-rl_set_sighandler (sig, handler, ohandler)
- int sig;
- SigHandler *handler;
- sighandler_cxt *ohandler;
-{
- sighandler_cxt old_handler;
-#if defined (HAVE_POSIX_SIGNALS)
- struct sigaction act;
-
- act.sa_handler = handler;
- act.sa_flags = 0; /* XXX - should we set SA_RESTART for SIGWINCH? */
- sigemptyset (&act.sa_mask);
- sigemptyset (&ohandler->sa_mask);
- sigaction (sig, &act, &old_handler);
-#else
- old_handler.sa_handler = (SigHandler *)signal (sig, handler);
-#endif /* !HAVE_POSIX_SIGNALS */
-
- /* XXX -- assume we have memcpy */
- /* If rl_set_signals is called twice in a row, don't set the old handler to
- rl_signal_handler, because that would cause infinite recursion. */
- if (handler != rl_signal_handler || old_handler.sa_handler != rl_signal_handler)
- memcpy (ohandler, &old_handler, sizeof (sighandler_cxt));
-
- return (ohandler->sa_handler);
-}
-
-static void
-rl_maybe_set_sighandler (sig, handler, ohandler)
- int sig;
- SigHandler *handler;
- sighandler_cxt *ohandler;
-{
- sighandler_cxt dummy;
- SigHandler *oh;
-
- sigemptyset (&dummy.sa_mask);
- oh = rl_set_sighandler (sig, handler, ohandler);
- if (oh == (SigHandler *)SIG_IGN)
- rl_sigaction (sig, ohandler, &dummy);
-}
-
-int
-rl_set_signals ()
-{
- sighandler_cxt dummy;
- SigHandler *oh;
-
- if (rl_catch_signals && signals_set_flag == 0)
- {
- rl_maybe_set_sighandler (SIGINT, rl_signal_handler, &old_int);
- rl_maybe_set_sighandler (SIGTERM, rl_signal_handler, &old_term);
- rl_maybe_set_sighandler (SIGQUIT, rl_signal_handler, &old_quit);
-
- oh = rl_set_sighandler (SIGALRM, rl_signal_handler, &old_alrm);
- if (oh == (SigHandler *)SIG_IGN)
- rl_sigaction (SIGALRM, &old_alrm, &dummy);
-#if defined (HAVE_POSIX_SIGNALS) && defined (SA_RESTART)
- /* If the application using readline has already installed a signal
- handler with SA_RESTART, SIGALRM will cause reads to be restarted
- automatically, so readline should just get out of the way. Since
- we tested for SIG_IGN above, we can just test for SIG_DFL here. */
- if (oh != (SigHandler *)SIG_DFL && (old_alrm.sa_flags & SA_RESTART))
- rl_sigaction (SIGALRM, &old_alrm, &dummy);
-#endif /* HAVE_POSIX_SIGNALS */
-
-#if defined (SIGTSTP)
- rl_maybe_set_sighandler (SIGTSTP, rl_signal_handler, &old_tstp);
-#endif /* SIGTSTP */
-
-#if defined (SIGTTOU)
- rl_maybe_set_sighandler (SIGTTOU, rl_signal_handler, &old_ttou);
-#endif /* SIGTTOU */
-
-#if defined (SIGTTIN)
- rl_maybe_set_sighandler (SIGTTIN, rl_signal_handler, &old_ttin);
-#endif /* SIGTTIN */
-
- signals_set_flag = 1;
- }
-
-#if defined (SIGWINCH)
- if (rl_catch_sigwinch && sigwinch_set_flag == 0)
- {
- rl_maybe_set_sighandler (SIGWINCH, rl_sigwinch_handler, &old_winch);
- sigwinch_set_flag = 1;
- }
-#endif /* SIGWINCH */
-
- return 0;
-}
-
-int
-rl_clear_signals ()
-{
- sighandler_cxt dummy;
-
- if (rl_catch_signals && signals_set_flag == 1)
- {
- sigemptyset (&dummy.sa_mask);
-
- rl_sigaction (SIGINT, &old_int, &dummy);
- rl_sigaction (SIGTERM, &old_term, &dummy);
- rl_sigaction (SIGQUIT, &old_quit, &dummy);
- rl_sigaction (SIGALRM, &old_alrm, &dummy);
-
-#if defined (SIGTSTP)
- rl_sigaction (SIGTSTP, &old_tstp, &dummy);
-#endif /* SIGTSTP */
-
-#if defined (SIGTTOU)
- rl_sigaction (SIGTTOU, &old_ttou, &dummy);
-#endif /* SIGTTOU */
-
-#if defined (SIGTTIN)
- rl_sigaction (SIGTTIN, &old_ttin, &dummy);
-#endif /* SIGTTIN */
-
- signals_set_flag = 0;
- }
-
-#if defined (SIGWINCH)
- if (rl_catch_sigwinch && sigwinch_set_flag == 1)
- {
- sigemptyset (&dummy.sa_mask);
- rl_sigaction (SIGWINCH, &old_winch, &dummy);
- sigwinch_set_flag = 0;
- }
-#endif
-
- return 0;
-}
-
-/* Clean up the terminal and readline state after catching a signal, before
- resending it to the calling application. */
-void
-rl_cleanup_after_signal ()
-{
- _rl_clean_up_for_exit ();
- (*rl_deprep_term_function) ();
- rl_clear_signals ();
- rl_clear_pending_input ();
-}
-
-/* Reset the terminal and readline state after a signal handler returns. */
-void
-rl_reset_after_signal ()
-{
- (*rl_prep_term_function) (_rl_meta_flag);
- rl_set_signals ();
-}
-
-/* Free up the readline variable line state for the current line (undo list,
- any partial history entry, any keyboard macros in progress, and any
- numeric arguments in process) after catching a signal, before calling
- rl_cleanup_after_signal(). */
-void
-rl_free_line_state ()
-{
- register HIST_ENTRY *entry;
-
- rl_free_undo_list ();
-
- entry = current_history ();
- if (entry)
- entry->data = (char *)NULL;
-
- _rl_kill_kbd_macro ();
- rl_clear_message ();
- _rl_init_argument ();
-}
-
-#endif /* HANDLE_SIGNALS */
diff --git a/readline-4.3.orig/support/config.guess b/readline-4.3.orig/support/config.guess
deleted file mode 100755
index 5668108..0000000
--- a/readline-4.3.orig/support/config.guess
+++ /dev/null
@@ -1,1393 +0,0 @@
-#! /bin/sh
-# Attempt to guess a canonical system name.
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002 Free Software Foundation, Inc.
-
-timestamp='2002-03-20'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# Originally written by Per Bothner <per@bothner.com>.
-# Please send patches to <config-patches@gnu.org>. Submit a context
-# diff and a properly formatted ChangeLog entry.
-#
-# This script attempts to guess a canonical system name similar to
-# config.sub. If it succeeds, it prints the system name on stdout, and
-# exits with 0. Otherwise, it exits with 1.
-#
-# The plan is that this can be called by configure scripts if you
-# don't specify an explicit build system type.
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION]
-
-Output the configuration name of the system \`$me' is run on.
-
-Operation modes:
- -h, --help print this help, then exit
- -t, --time-stamp print date of last modification, then exit
- -v, --version print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.guess ($timestamp)
-
-Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
-Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions. There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
- case $1 in
- --time-stamp | --time* | -t )
- echo "$timestamp" ; exit 0 ;;
- --version | -v )
- echo "$version" ; exit 0 ;;
- --help | --h* | -h )
- echo "$usage"; exit 0 ;;
- -- ) # Stop option processing
- shift; break ;;
- - ) # Use stdin as input.
- break ;;
- -* )
- echo "$me: invalid option $1$help" >&2
- exit 1 ;;
- * )
- break ;;
- esac
-done
-
-if test $# != 0; then
- echo "$me: too many arguments$help" >&2
- exit 1
-fi
-
-
-dummy=dummy-$$
-trap 'rm -f $dummy.c $dummy.o $dummy.rel $dummy; exit 1' 1 2 15
-
-# CC_FOR_BUILD -- compiler used by this script.
-# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
-# use `HOST_CC' if defined, but it is deprecated.
-
-set_cc_for_build='case $CC_FOR_BUILD,$HOST_CC,$CC in
- ,,) echo "int dummy(){}" > $dummy.c ;
- for c in cc gcc c89 c99 ; do
- ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1 ;
- if test $? = 0 ; then
- CC_FOR_BUILD="$c"; break ;
- fi ;
- done ;
- rm -f $dummy.c $dummy.o $dummy.rel ;
- if test x"$CC_FOR_BUILD" = x ; then
- CC_FOR_BUILD=no_compiler_found ;
- fi
- ;;
- ,,*) CC_FOR_BUILD=$CC ;;
- ,*,*) CC_FOR_BUILD=$HOST_CC ;;
-esac'
-
-# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
-# (ghazi@noc.rutgers.edu 1994-08-24)
-if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
- PATH=$PATH:/.attbin ; export PATH
-elif (test -f /usr/5bin/uname) >/dev/null 2>&1 ; then # bash
- PATH=$PATH:/usr/5bin
-fi
-
-UNAME=`(uname) 2>/dev/null` || UNAME=unknown # bash
-UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
-UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
-UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-
-# Note: order is significant - the case branches are not exclusive.
-
-case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
- # NOTE -- begin cases added for bash (mostly legacy) -- NOTE
- mac68k:machten:*:*)
- echo mac68k-apple-machten${UNAME_RELEASE}
- exit 0 ;;
- concurrent*:*:*:*)
- if test "`(/bin/universe) 2>/dev/null`" = att ; then
- echo concurrent-concurrent-sysv3
- else
- echo concurrent-concurrent-bsd
- fi
- exit 0 ;;
- ppc*:SunOS:5.*:*)
- echo ppc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
- sparc:UNIX_SV:4.*:*)
- echo sparc-unknown-sysv${UNAME_RELEASE}
- exit 0 ;;
- mips:UNIX_SV:4.*:*)
- echo mips-mips-sysv${UNAME_RELEASE}
- exit 0 ;;
- mips:OSF*1:*:*)
- echo mips-mips-osf1
- exit 0 ;;
- mips:4.4BSD:*:*)
- echo mips-mips-bsd4.4
- exit 0 ;;
- MIS*:SMP_DC.OSx:*:dcosx) # not the same as below
- echo pyramid-pyramid-sysv4
- exit 0 ;;
- news*:NEWS*:*:*)
- echo mips-sony-newsos${UNAME_RELEASE}
- exit 0 ;;
- *370:AIX:*:*)
- echo ibm370-ibm-aix${UNAME_RELEASE}
- exit 0 ;;
- ksr1:OSF*1:*:*)
- echo ksr1-ksr-osf1
- exit 0 ;;
- esa:OSF*1:*:* | ESA:OSF*:*:*)
- echo esa-ibm-osf1
- exit 0 ;;
- DNP*:DNIX:*:*)
- echo m68k-dnix-sysv
- exit 0 ;;
- *3b2*:*:*:*)
- echo we32k-att-sysv3
- exit 0 ;;
- Alpha*:Windows_NT:*:SP*)
- echo alpha-pc-opennt
- exit 0 ;;
- *:Windows_NT:*:SP*)
- echo i386-pc-opennt
- exit 0 ;;
-
- # NOTE -- end legacy cases added for bash -- NOTE
- *:NetBSD:*:*)
- # NetBSD (nbsd) targets should (where applicable) match one or
- # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
- # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
- # switched to ELF, *-*-netbsd* would select the old
- # object file format. This provides both forward
- # compatibility and a consistent mechanism for selecting the
- # object file format.
- #
- # Note: NetBSD doesn't particularly care about the vendor
- # portion of the name. We always set it to "unknown".
- sysctl="sysctl -n hw.machine_arch"
- UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
- /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
- case "${UNAME_MACHINE_ARCH}" in
- arm*) machine=arm-unknown ;;
- sh3el) machine=shl-unknown ;;
- sh3eb) machine=sh-unknown ;;
- *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
- esac
- # The Operating System including object format, if it has switched
- # to ELF recently, or will in the future.
- case "${UNAME_MACHINE_ARCH}" in
- arm*|i386|m68k|ns32k|sh3*|sparc|vax)
- eval $set_cc_for_build
- if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
- | grep __ELF__ >/dev/null
- then
- # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
- # Return netbsd for either. FIX?
- os=netbsd
- else
- os=netbsdelf
- fi
- ;;
- *)
- os=netbsd
- ;;
- esac
- # The OS release
- release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
- # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
- # contains redundant information, the shorter form:
- # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
- echo "${machine}-${os}${release}"
- exit 0 ;;
- amiga:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- arc:OpenBSD:*:*)
- echo mipsel-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- hp300:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- mac68k:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- macppc:OpenBSD:*:*)
- echo powerpc-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- mvme68k:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- mvme88k:OpenBSD:*:*)
- echo m88k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- mvmeppc:OpenBSD:*:*)
- echo powerpc-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- pmax:OpenBSD:*:*)
- echo mipsel-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- sgi:OpenBSD:*:*)
- echo mipseb-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- sun3:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- vax:OpenBSD:*:*) # bash
- echo vax-dec-openbsd${UNAME_RELEASE}
- exit 0 ;;
- wgrisc:OpenBSD:*:*)
- echo mipsel-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- *:OpenBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- alpha:OSF1:*:*)
- if test $UNAME_RELEASE = "V4.0"; then
- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
- fi
- # A Vn.n version is a released version.
- # A Tn.n version is a released field test version.
- # A Xn.n version is an unreleased experimental baselevel.
- # 1.2 uses "1.2" for uname -r.
- cat <<EOF >$dummy.s
- .data
-\$Lformat:
- .byte 37,100,45,37,120,10,0 # "%d-%x\n"
-
- .text
- .globl main
- .align 4
- .ent main
-main:
- .frame \$30,16,\$26,0
- ldgp \$29,0(\$27)
- .prologue 1
- .long 0x47e03d80 # implver \$0
- lda \$2,-1
- .long 0x47e20c21 # amask \$2,\$1
- lda \$16,\$Lformat
- mov \$0,\$17
- not \$1,\$18
- jsr \$26,printf
- ldgp \$29,0(\$26)
- mov 0,\$16
- jsr \$26,exit
- .end main
-EOF
- eval $set_cc_for_build
- $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
- if test "$?" = 0 ; then
- case `./$dummy` in
- 0-0)
- UNAME_MACHINE="alpha"
- ;;
- 1-0)
- UNAME_MACHINE="alphaev5"
- ;;
- 1-1)
- UNAME_MACHINE="alphaev56"
- ;;
- 1-101)
- UNAME_MACHINE="alphapca56"
- ;;
- 2-303)
- UNAME_MACHINE="alphaev6"
- ;;
- 2-307)
- UNAME_MACHINE="alphaev67"
- ;;
- 2-1307)
- UNAME_MACHINE="alphaev68"
- ;;
- esac
- fi
- rm -f $dummy.s $dummy
- echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- exit 0 ;;
- Alpha\ *:Windows_NT*:*)
- # How do we know it's Interix rather than the generic POSIX subsystem?
- # Should we change UNAME_MACHINE based on the output of uname instead
- # of the specific Alpha model?
- echo alpha-pc-interix
- exit 0 ;;
- 21064:Windows_NT:50:3)
- echo alpha-dec-winnt3.5
- exit 0 ;;
- Amiga*:UNIX_System_V:4.0:*)
- echo m68k-unknown-sysv4
- exit 0;;
- *:[Aa]miga[Oo][Ss]:*:*)
- echo ${UNAME_MACHINE}-unknown-amigaos
- exit 0 ;;
- *:[Mm]orph[Oo][Ss]:*:*)
- echo ${UNAME_MACHINE}-unknown-morphos
- exit 0 ;;
- *:OS/390:*:*)
- echo i370-ibm-openedition
- exit 0 ;;
- arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
- echo arm-acorn-riscix${UNAME_RELEASE}
- exit 0;;
- SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
- echo hppa1.1-hitachi-hiuxmpp
- exit 0;;
- Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
- # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
- if test "`(/bin/universe) 2>/dev/null`" = att ; then
- echo pyramid-pyramid-sysv3
- else
- echo pyramid-pyramid-bsd
- fi
- exit 0 ;;
- NILE*:*:*:dcosx)
- echo pyramid-pyramid-svr4
- exit 0 ;;
- sun4H:SunOS:5.*:*)
- echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
- sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
- echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
- i86pc:SunOS:5.*:*)
- echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
- sun4*:SunOS:6*:*)
- # According to config.sub, this is the proper way to canonicalize
- # SunOS6. Hard to guess exactly what SunOS6 will be like, but
- # it's likely to be more like Solaris than SunOS4.
- echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
- sun4*:SunOS:*:*)
- case "`/usr/bin/arch -k`" in
- Series*|S4*)
- UNAME_RELEASE=`uname -v`
- ;;
- esac
- # Japanese Language versions have a version number like `4.1.3-JL'.
- echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
- exit 0 ;;
- sun3*:SunOS:*:*)
- echo m68k-sun-sunos${UNAME_RELEASE}
- exit 0 ;;
- sun*:*:4.2BSD:*)
- UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
- test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
- case "`/bin/arch`" in
- sun3)
- echo m68k-sun-sunos${UNAME_RELEASE}
- ;;
- sun4)
- echo sparc-sun-sunos${UNAME_RELEASE}
- ;;
- esac
- exit 0 ;;
- aushp:SunOS:*:*)
- echo sparc-auspex-sunos${UNAME_RELEASE}
- exit 0 ;;
- # The situation for MiNT is a little confusing. The machine name
- # can be virtually everything (everything which is not
- # "atarist" or "atariste" at least should have a processor
- # > m68000). The system name ranges from "MiNT" over "FreeMiNT"
- # to the lowercase version "mint" (or "freemint"). Finally
- # the system name "TOS" denotes a system which is actually not
- # MiNT. But MiNT is downward compatible to TOS, so this should
- # be no problem.
- atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
- exit 0 ;;
- atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
- exit 0 ;;
- *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
- exit 0 ;;
- milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
- echo m68k-milan-mint${UNAME_RELEASE}
- exit 0 ;;
- hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
- echo m68k-hades-mint${UNAME_RELEASE}
- exit 0 ;;
- *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
- echo m68k-unknown-mint${UNAME_RELEASE}
- exit 0 ;;
- powerpc:machten:*:*)
- echo powerpc-apple-machten${UNAME_RELEASE}
- exit 0 ;;
- RISC*:Mach:*:*)
- echo mips-dec-mach_bsd4.3
- exit 0 ;;
- RISC*:ULTRIX:*:*)
- echo mips-dec-ultrix${UNAME_RELEASE}
- exit 0 ;;
- VAX*:ULTRIX*:*:*)
- echo vax-dec-ultrix${UNAME_RELEASE}
- exit 0 ;;
- 2020:CLIX:*:* | 2430:CLIX:*:*)
- echo clipper-intergraph-clix${UNAME_RELEASE}
- exit 0 ;;
- mips:*:*:UMIPS | mips:*:*:RISCos)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
-#ifdef __cplusplus
-#include <stdio.h> /* for printf() prototype */
- int main (int argc, char *argv[]) {
-#else
- int main (argc, argv) int argc; char *argv[]; {
-#endif
- #if defined (host_mips) && defined (MIPSEB)
- #if defined (SYSTYPE_SYSV)
- printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
- #endif
- #if defined (SYSTYPE_SVR4)
- printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
- #endif
- #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
- printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
- #endif
- #endif
- exit (-1);
- }
-EOF
- $CC_FOR_BUILD $dummy.c -o $dummy \
- && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
- && rm -f $dummy.c $dummy && exit 0
- rm -f $dummy.c $dummy
- echo mips-mips-riscos${UNAME_RELEASE}
- exit 0 ;;
- Motorola:PowerMAX_OS:*:*)
- echo powerpc-motorola-powermax
- exit 0 ;;
- Night_Hawk:Power_UNIX:*:*)
- echo powerpc-harris-powerunix
- exit 0 ;;
- m88k:CX/UX:7*:*)
- echo m88k-harris-cxux7
- exit 0 ;;
- m88k:*:4*:R4*)
- echo m88k-motorola-sysv4
- exit 0 ;;
- m88k:*:3*:R3*)
- echo m88k-motorola-sysv3
- exit 0 ;;
- AViiON:dgux:*:*)
- # DG/UX returns AViiON for all architectures
- UNAME_PROCESSOR=`/usr/bin/uname -p`
- if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
- then
- if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
- [ ${TARGET_BINARY_INTERFACE}x = x ]
- then
- echo m88k-dg-dgux${UNAME_RELEASE}
- else
- echo m88k-dg-dguxbcs${UNAME_RELEASE}
- fi
- else
- echo i586-dg-dgux${UNAME_RELEASE}
- fi
- exit 0 ;;
- M88*:DolphinOS:*:*) # DolphinOS (SVR3)
- echo m88k-dolphin-sysv3
- exit 0 ;;
- M88*:*:R3*:*)
- # Delta 88k system running SVR3
- echo m88k-motorola-sysv3
- exit 0 ;;
- XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
- echo m88k-tektronix-sysv3
- exit 0 ;;
- Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
- echo m68k-tektronix-bsd
- exit 0 ;;
- *:IRIX*:*:*)
- echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
- exit 0 ;;
- ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
- echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
- exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX '
- i*86:AIX:*:*)
- echo i386-ibm-aix
- exit 0 ;;
- ia64:AIX:*:*)
- if [ -x /usr/bin/oslevel ] ; then
- IBM_REV=`/usr/bin/oslevel`
- else
- IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
- fi
- echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
- exit 0 ;;
- *:AIX:2:3)
- if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #include <sys/systemcfg.h>
-
- main()
- {
- if (!__power_pc())
- exit(1);
- puts("powerpc-ibm-aix3.2.5");
- exit(0);
- }
-EOF
- $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0
- rm -f $dummy.c $dummy
- echo rs6000-ibm-aix3.2.5
- elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
- echo rs6000-ibm-aix3.2.4
- else
- echo rs6000-ibm-aix3.2
- fi
- exit 0 ;;
- *:AIX:*:[45])
- IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
- if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
- IBM_ARCH=rs6000
- else
- IBM_ARCH=powerpc
- fi
- if [ -x /usr/bin/oslevel ] ; then
- IBM_REV=`/usr/bin/oslevel`
- else
- IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
- fi
- echo ${IBM_ARCH}-ibm-aix${IBM_REV}
- exit 0 ;;
- *:AIX:*:*)
- echo rs6000-ibm-aix
- exit 0 ;;
- ibmrt:4.4BSD:*|romp-ibm:BSD:*)
- echo romp-ibm-bsd4.4
- exit 0 ;;
- ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
- echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
- exit 0 ;; # report: romp-ibm BSD 4.3
- *:BOSX:*:*)
- echo rs6000-bull-bosx
- exit 0 ;;
- DPX/2?00:B.O.S.:*:*)
- echo m68k-bull-sysv3
- exit 0 ;;
- 9000/[34]??:4.3bsd:1.*:*)
- echo m68k-hp-bsd
- exit 0 ;;
- hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
- echo m68k-hp-bsd4.4
- exit 0 ;;
- 9000/[34678]??:HP-UX:*:*)
- HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
- case "${UNAME_MACHINE}" in
- 9000/31? ) HP_ARCH=m68000 ;;
- 9000/[34]?? ) HP_ARCH=m68k ;;
- 9000/[678][0-9][0-9])
- if [ -x /usr/bin/getconf ]; then
- sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
- sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
- case "${sc_cpu_version}" in
- 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
- 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
- 532) # CPU_PA_RISC2_0
- case "${sc_kernel_bits}" in
- 32) HP_ARCH="hppa2.0n" ;;
- 64) HP_ARCH="hppa2.0w" ;;
- '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
- esac ;;
- esac
- fi
- if [ "${HP_ARCH}" = "" ]; then
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
-
- #define _HPUX_SOURCE
- #include <stdlib.h>
- #include <unistd.h>
-
- int main ()
- {
- #if defined(_SC_KERNEL_BITS)
- long bits = sysconf(_SC_KERNEL_BITS);
- #endif
- long cpu = sysconf (_SC_CPU_VERSION);
-
- switch (cpu)
- {
- case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
- case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
- case CPU_PA_RISC2_0:
- #if defined(_SC_KERNEL_BITS)
- switch (bits)
- {
- case 64: puts ("hppa2.0w"); break;
- case 32: puts ("hppa2.0n"); break;
- default: puts ("hppa2.0"); break;
- } break;
- #else /* !defined(_SC_KERNEL_BITS) */
- puts ("hppa2.0"); break;
- #endif
- default: puts ("hppa1.0"); break;
- }
- exit (0);
- }
-EOF
- (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null) && HP_ARCH=`./$dummy`
- if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi
- rm -f $dummy.c $dummy
- fi ;;
- esac
- echo ${HP_ARCH}-hp-hpux${HPUX_REV}
- exit 0 ;;
- ia64:HP-UX:*:*)
- HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
- echo ia64-hp-hpux${HPUX_REV}
- exit 0 ;;
- 3050*:HI-UX:*:*)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #include <unistd.h>
- int
- main ()
- {
- long cpu = sysconf (_SC_CPU_VERSION);
- /* The order matters, because CPU_IS_HP_MC68K erroneously returns
- true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
- results, however. */
- if (CPU_IS_PA_RISC (cpu))
- {
- switch (cpu)
- {
- case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
- case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
- case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
- default: puts ("hppa-hitachi-hiuxwe2"); break;
- }
- }
- else if (CPU_IS_HP_MC68K (cpu))
- puts ("m68k-hitachi-hiuxwe2");
- else puts ("unknown-hitachi-hiuxwe2");
- exit (0);
- }
-EOF
- $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0
- rm -f $dummy.c $dummy
- echo unknown-hitachi-hiuxwe2
- exit 0 ;;
- 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
- echo hppa1.1-hp-bsd
- exit 0 ;;
- 9000/8??:4.3bsd:*:*)
- echo hppa1.0-hp-bsd
- exit 0 ;;
- *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
- echo hppa1.0-hp-mpeix
- exit 0 ;;
- hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
- echo hppa1.1-hp-osf
- exit 0 ;;
- hp8??:OSF1:*:*)
- echo hppa1.0-hp-osf
- exit 0 ;;
- i*86:OSF1:*:*)
- if [ -x /usr/sbin/sysversion ] ; then
- echo ${UNAME_MACHINE}-unknown-osf1mk
- else
- echo ${UNAME_MACHINE}-unknown-osf1
- fi
- exit 0 ;;
- parisc*:Lites*:*:*)
- echo hppa1.1-hp-lites
- exit 0 ;;
- C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
- echo c1-convex-bsd
- exit 0 ;;
- C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
- if getsysinfo -f scalar_acc
- then echo c32-convex-bsd
- else echo c2-convex-bsd
- fi
- exit 0 ;;
- C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
- echo c34-convex-bsd
- exit 0 ;;
- C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
- echo c38-convex-bsd
- exit 0 ;;
- C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
- echo c4-convex-bsd
- exit 0 ;;
- CRAY*Y-MP:*:*:*)
- echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
- CRAY*[A-Z]90:*:*:*)
- echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
- | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
- -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
- -e 's/\.[^.]*$/.X/'
- exit 0 ;;
- CRAY*TS:*:*:*)
- echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
- CRAY*T3D:*:*:*)
- echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
- CRAY*T3E:*:*:*)
- echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
- CRAY*SV1:*:*:*)
- echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
- F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
- FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
- echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit 0 ;;
- i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
- echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
- exit 0 ;;
- sparc*:BSD/OS:*:*)
- echo sparc-unknown-bsdi${UNAME_RELEASE}
- exit 0 ;;
- *:BSD/OS:*:*)
- echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
- exit 0 ;;
- *:FreeBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
- exit 0 ;;
- i*:CYGWIN*:*)
- echo ${UNAME_MACHINE}-pc-cygwin
- exit 0 ;;
- i*:MINGW*:*)
- echo ${UNAME_MACHINE}-pc-mingw32
- exit 0 ;;
- i*:PW*:*)
- echo ${UNAME_MACHINE}-pc-pw32
- exit 0 ;;
- x86:Interix*:3*)
- echo i386-pc-interix3
- exit 0 ;;
- i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
- # How do we know it's Interix rather than the generic POSIX subsystem?
- # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
- # UNAME_MACHINE based on the output of uname instead of i386?
- echo i386-pc-interix
- exit 0 ;;
- i*:UWIN*:*)
- echo ${UNAME_MACHINE}-pc-uwin
- exit 0 ;;
- p*:CYGWIN*:*)
- echo powerpcle-unknown-cygwin
- exit 0 ;;
- prep*:SunOS:5.*:*)
- echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
- *:GNU:*:*)
- echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
- exit 0 ;;
- i*86:Minix:*:*)
- echo ${UNAME_MACHINE}-pc-minix
- exit 0 ;;
- arm*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
- ia64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
- m68*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
- mips:Linux:*:*)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #undef CPU
- #undef mips
- #undef mipsel
- #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
- CPU=mipsel
- #else
- #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
- CPU=mips
- #else
- CPU=
- #endif
- #endif
-EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
- rm -f $dummy.c
- test x"${CPU}" != x && echo "${CPU}-pc-linux-gnu" && exit 0
- ;;
- ppc:Linux:*:*)
- echo powerpc-unknown-linux-gnu
- exit 0 ;;
- ppc64:Linux:*:*)
- echo powerpc64-unknown-linux-gnu
- exit 0 ;;
- alpha:Linux:*:*)
- case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
- EV5) UNAME_MACHINE=alphaev5 ;;
- EV56) UNAME_MACHINE=alphaev56 ;;
- PCA56) UNAME_MACHINE=alphapca56 ;;
- PCA57) UNAME_MACHINE=alphapca56 ;;
- EV6) UNAME_MACHINE=alphaev6 ;;
- EV67) UNAME_MACHINE=alphaev67 ;;
- EV68*) UNAME_MACHINE=alphaev68 ;;
- esac
- objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
- if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
- echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
- exit 0 ;;
- parisc:Linux:*:* | hppa:Linux:*:*)
- # Look for CPU level
- case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
- PA7*) echo hppa1.1-unknown-linux-gnu ;;
- PA8*) echo hppa2.0-unknown-linux-gnu ;;
- *) echo hppa-unknown-linux-gnu ;;
- esac
- exit 0 ;;
- parisc64:Linux:*:* | hppa64:Linux:*:*)
- echo hppa64-unknown-linux-gnu
- exit 0 ;;
- s390:Linux:*:* | s390x:Linux:*:*)
- echo ${UNAME_MACHINE}-ibm-linux
- exit 0 ;;
- sh*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
- sparc:Linux:*:* | sparc64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
- x86_64:Linux:*:*)
- echo x86_64-unknown-linux-gnu
- exit 0 ;;
- i*86:Linux:*:*)
- # The BFD linker knows what the default object file format is, so
- # first see if it will tell us. cd to the root directory to prevent
- # problems with other programs or directories called `ld' in the path.
- # Set LC_ALL=C to ensure ld outputs messages in English.
- ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
- | sed -ne '/supported targets:/!d
- s/[ ][ ]*/ /g
- s/.*supported targets: *//
- s/ .*//
- p'`
- case "$ld_supported_targets" in
- elf32-i386)
- TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
- ;;
- a.out-i386-linux)
- echo "${UNAME_MACHINE}-pc-linux-gnuaout"
- exit 0 ;;
- coff-i386)
- echo "${UNAME_MACHINE}-pc-linux-gnucoff"
- exit 0 ;;
- "")
- # Either a pre-BFD a.out linker (linux-gnuoldld) or
- # one that does not give us useful --help.
- echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
- exit 0 ;;
- esac
- # Determine whether the default compiler is a.out or elf
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #include <features.h>
- #ifdef __ELF__
- # ifdef __GLIBC__
- # if __GLIBC__ >= 2
- LIBC=gnu
- # else
- LIBC=gnulibc1
- # endif
- # else
- LIBC=gnulibc1
- # endif
- #else
- #ifdef __INTEL_COMPILER
- LIBC=gnu
- #else
- LIBC=gnuaout
- #endif
- #endif
-EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
- rm -f $dummy.c
- test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
- test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
- ;;
- i*86:DYNIX/ptx:4*:*)
- # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
- # earlier versions are messed up and put the nodename in both
- # sysname and nodename.
- echo i386-sequent-sysv4
- exit 0 ;;
- i*86:UNIX_SV:4.2MP:2.*)
- # Unixware is an offshoot of SVR4, but it has its own version
- # number series starting with 2...
- # I am not positive that other SVR4 systems won't match this,
- # I just have to hope. -- rms.
- # Use sysv4.2uw... so that sysv4* matches it.
- echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
- exit 0 ;;
- i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
- UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
- if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
- echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
- else
- echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
- fi
- exit 0 ;;
- i*86:*:5:[78]*)
- case `/bin/uname -X | grep "^Machine"` in
- *486*) UNAME_MACHINE=i486 ;;
- *Pentium) UNAME_MACHINE=i586 ;;
- *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
- esac
- echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
- exit 0 ;;
- i*86:*:3.2:*)
- if test -f /usr/options/cb.name; then
- UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
- echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
- elif /bin/uname -X 2>/dev/null >/dev/null ; then
- UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')`
- (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
- (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
- && UNAME_MACHINE=i586
- (/bin/uname -X|egrep '^Machine.*Pent ?II' >/dev/null) \
- && UNAME_MACHINE=i686
- (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \
- && UNAME_MACHINE=i686
- echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
- else
- echo ${UNAME_MACHINE}-pc-sysv32
- fi
- exit 0 ;;
- i*86:*DOS:*:*)
- echo ${UNAME_MACHINE}-pc-msdosdjgpp
- exit 0 ;;
- pc:*:*:*)
- # Left here for compatibility:
- # uname -m prints for DJGPP always 'pc', but it prints nothing about
- # the processor, so we play safe by assuming i386.
- echo i386-pc-msdosdjgpp
- exit 0 ;;
- Intel:Mach:3*:*)
- echo i386-pc-mach3
- exit 0 ;;
- paragon:*:*:*)
- echo i860-intel-osf1
- exit 0 ;;
- i860:*:4.*:*) # i860-SVR4
- if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
- echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
- else # Add other i860-SVR4 vendors below as they are discovered.
- echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
- fi
- exit 0 ;;
- mini*:CTIX:SYS*5:*)
- # "miniframe"
- echo m68010-convergent-sysv
- exit 0 ;;
- M68*:*:R3V[567]*:*)
- test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
- 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0)
- OS_REL=''
- test -r /etc/.relid \
- && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && echo i486-ncr-sysv4.3${OS_REL} && exit 0
- /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
- && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;;
- 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && echo i486-ncr-sysv4 && exit 0 ;;
- m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
- echo m68k-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
- mc68030:UNIX_System_V:4.*:*)
- echo m68k-atari-sysv4
- exit 0 ;;
- i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
- echo i386-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
- TSUNAMI:LynxOS:2.*:*)
- echo sparc-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
- rs6000:LynxOS:2.*:*)
- echo rs6000-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
- PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
- echo powerpc-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
- SM[BE]S:UNIX_SV:*:*)
- echo mips-dde-sysv${UNAME_RELEASE}
- exit 0 ;;
- RM*:ReliantUNIX-*:*:*)
- echo mips-sni-sysv4
- exit 0 ;;
- RM*:SINIX-*:*:*)
- echo mips-sni-sysv4
- exit 0 ;;
- *:SINIX-*:*:*)
- if uname -p 2>/dev/null >/dev/null ; then
- UNAME_MACHINE=`(uname -p) 2>/dev/null`
- echo ${UNAME_MACHINE}-sni-sysv4
- else
- echo ns32k-sni-sysv
- fi
- exit 0 ;;
- PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
- # says <Richard.M.Bartel@ccMail.Census.GOV>
- echo i586-unisys-sysv4
- exit 0 ;;
- *:UNIX_System_V:4*:FTX*)
- # From Gerald Hewes <hewes@openmarket.com>.
- # How about differentiating between stratus architectures? -djm
- echo hppa1.1-stratus-sysv4
- exit 0 ;;
- *:*:*:FTX*)
- # From seanf@swdc.stratus.com.
- echo i860-stratus-sysv4
- exit 0 ;;
- *:VOS:*:*)
- # From Paul.Green@stratus.com.
- echo hppa1.1-stratus-vos
- exit 0 ;;
- mc68*:A/UX:*:*)
- echo m68k-apple-aux${UNAME_RELEASE}
- exit 0 ;;
- news*:NEWS-OS:6*:*)
- echo mips-sony-newsos6
- exit 0 ;;
- R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
- if [ -d /usr/nec ]; then
- echo mips-nec-sysv${UNAME_RELEASE}
- else
- echo mips-unknown-sysv${UNAME_RELEASE}
- fi
- exit 0 ;;
- BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
- echo powerpc-be-beos
- exit 0 ;;
- BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
- echo powerpc-apple-beos
- exit 0 ;;
- BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
- echo i586-pc-beos
- exit 0 ;;
- SX-4:SUPER-UX:*:*)
- echo sx4-nec-superux${UNAME_RELEASE}
- exit 0 ;;
- SX-5:SUPER-UX:*:*)
- echo sx5-nec-superux${UNAME_RELEASE}
- exit 0 ;;
- Power*:Rhapsody:*:*)
- echo powerpc-apple-rhapsody${UNAME_RELEASE}
- exit 0 ;;
- *:Rhapsody:*:*)
- echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
- exit 0 ;;
- *:Darwin:*:*)
- echo `uname -p`-apple-darwin${UNAME_RELEASE}
- exit 0 ;;
- *:procnto*:*:* | *:QNX:[0123456789]*:*)
- UNAME_PROCESSOR=`uname -p`
- if test "$UNAME_PROCESSOR" = "x86"; then
- UNAME_PROCESSOR=i386
- UNAME_MACHINE=pc
- fi
- echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
- exit 0 ;;
- *:QNX:*:4*)
- echo i386-pc-qnx
- exit 0 ;;
- NSR-[GKLNPTVW]:NONSTOP_KERNEL:*:*)
- echo nsr-tandem-nsk${UNAME_RELEASE}
- exit 0 ;;
- *:NonStop-UX:*:*)
- echo mips-compaq-nonstopux
- exit 0 ;;
- BS2000:POSIX*:*:*)
- echo bs2000-siemens-sysv
- exit 0 ;;
- DS/*:UNIX_System_V:*:*)
- echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
- exit 0 ;;
- *:Plan9:*:*)
- # "uname -m" is not consistent, so use $cputype instead. 386
- # is converted to i386 for consistency with other x86
- # operating systems.
- if test "$cputype" = "386"; then
- UNAME_MACHINE=i386
- else
- UNAME_MACHINE="$cputype"
- fi
- echo ${UNAME_MACHINE}-unknown-plan9
- exit 0 ;;
- i*86:OS/2:*:*)
- # If we were able to find `uname', then EMX Unix compatibility
- # is probably installed.
- echo ${UNAME_MACHINE}-pc-os2-emx
- exit 0 ;;
- *:TOPS-10:*:*)
- echo pdp10-unknown-tops10
- exit 0 ;;
- *:TENEX:*:*)
- echo pdp10-unknown-tenex
- exit 0 ;;
- KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
- echo pdp10-dec-tops20
- exit 0 ;;
- XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
- echo pdp10-xkl-tops20
- exit 0 ;;
- *:TOPS-20:*:*)
- echo pdp10-unknown-tops20
- exit 0 ;;
- *:ITS:*:*)
- echo pdp10-unknown-its
- exit 0 ;;
- i*86:XTS-300:*:STOP)
- echo ${UNAME_MACHINE}-unknown-stop
- exit 0 ;;
- i*86:atheos:*:*)
- echo ${UNAME_MACHINE}-unknown-atheos
- exit 0 ;;
-esac
-
-#echo '(No uname command or uname output not recognized.)' 1>&2
-#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
-
-eval $set_cc_for_build
-cat >$dummy.c <<EOF
-#ifdef _SEQUENT_
-# include <sys/types.h>
-# include <sys/utsname.h>
-#endif
-main ()
-{
-#if defined (sony)
-#if defined (MIPSEB)
- /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
- I don't know.... */
- printf ("mips-sony-bsd\n"); exit (0);
-#else
-#include <sys/param.h>
- printf ("m68k-sony-newsos%s\n",
-#ifdef NEWSOS4
- "4"
-#else
- ""
-#endif
- ); exit (0);
-#endif
-#endif
-
-#if defined (__arm) && defined (__acorn) && defined (__unix)
- printf ("arm-acorn-riscix"); exit (0);
-#endif
-
-#if defined (hp300) && !defined (hpux)
- printf ("m68k-hp-bsd\n"); exit (0);
-#endif
-
-#if defined (NeXT)
-#if !defined (__ARCHITECTURE__)
-#define __ARCHITECTURE__ "m68k"
-#endif
- int version;
- version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
- if (version < 4)
- printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
- else
- printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
- exit (0);
-#endif
-
-#if defined (MULTIMAX) || defined (n16)
-#if defined (UMAXV)
- printf ("ns32k-encore-sysv\n"); exit (0);
-#else
-#if defined (CMU)
- printf ("ns32k-encore-mach\n"); exit (0);
-#else
- printf ("ns32k-encore-bsd\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (__386BSD__)
- printf ("i386-pc-bsd\n"); exit (0);
-#endif
-
-#if defined (sequent)
-#if defined (i386)
- printf ("i386-sequent-dynix\n"); exit (0);
-#endif
-#if defined (ns32000)
- printf ("ns32k-sequent-dynix\n"); exit (0);
-#endif
-#endif
-
-#if defined (_SEQUENT_)
- struct utsname un;
-
- uname(&un);
-
- if (strncmp(un.version, "V2", 2) == 0) {
- printf ("i386-sequent-ptx2\n"); exit (0);
- }
- if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
- printf ("i386-sequent-ptx1\n"); exit (0);
- }
- printf ("i386-sequent-ptx\n"); exit (0);
-
-#endif
-
-#if defined (vax)
-# if !defined (ultrix)
-# include <sys/param.h>
-# if defined (BSD)
-# if BSD == 43
- printf ("vax-dec-bsd4.3\n"); exit (0);
-# else
-# if BSD == 199006
- printf ("vax-dec-bsd4.3reno\n"); exit (0);
-# else
- printf ("vax-dec-bsd\n"); exit (0);
-# endif
-# endif
-# else
- printf ("vax-dec-bsd\n"); exit (0);
-# endif
-# else
- printf ("vax-dec-ultrix\n"); exit (0);
-# endif
-#endif
-
-#if defined (alliant) && defined (i860)
- printf ("i860-alliant-bsd\n"); exit (0);
-#endif
-
- exit (1);
-}
-EOF
-
-$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm -f $dummy.c $dummy && exit 0
-rm -f $dummy.c $dummy
-
-# Apollos put the system type in the environment.
-
-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; }
-
-# Convex versions that predate uname can use getsysinfo(1)
-
-if [ -x /usr/convex/getsysinfo ]
-then
- case `getsysinfo -f cpu_type` in
- c1*)
- echo c1-convex-bsd
- exit 0 ;;
- c2*)
- if getsysinfo -f scalar_acc
- then echo c32-convex-bsd
- else echo c2-convex-bsd
- fi
- exit 0 ;;
- c34*)
- echo c34-convex-bsd
- exit 0 ;;
- c38*)
- echo c38-convex-bsd
- exit 0 ;;
- c4*)
- echo c4-convex-bsd
- exit 0 ;;
- esac
-fi
-
-# NOTE -- Begin fallback cases added for bash -- NOTE
-case "$UNAME" in
-uts) echo uts-amdahl-sysv${UNAME_RELEASE}; exit 0 ;;
-esac
-
-if [ -f /bin/fxc.info ]; then
- echo fxc-alliant-concentrix
- exit 0
-fi
-# NOTE -- End fallback cases added for bash -- NOTE
-
-cat >&2 <<EOF
-$0: unable to guess system type
-
-This script, last modified $timestamp, has failed to recognize
-the operating system you are using. It is advised that you
-download the most up to date version of the config scripts from
-
- ftp://ftp.gnu.org/pub/gnu/config/
-
-If the version you run ($0) is already up to date, please
-send the following data and any information you think might be
-pertinent to <config-patches@gnu.org> in order to provide the needed
-information to handle your system.
-
-config.guess timestamp = $timestamp
-
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
-/bin/uname -X = `(/bin/uname -X) 2>/dev/null`
-
-hostinfo = `(hostinfo) 2>/dev/null`
-/bin/universe = `(/bin/universe) 2>/dev/null`
-/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null`
-/bin/arch = `(/bin/arch) 2>/dev/null`
-/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
-
-UNAME_MACHINE = ${UNAME_MACHINE}
-UNAME_RELEASE = ${UNAME_RELEASE}
-UNAME_SYSTEM = ${UNAME_SYSTEM}
-UNAME_VERSION = ${UNAME_VERSION}
-EOF
-
-exit 1
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/readline-4.3.orig/support/config.sub b/readline-4.3.orig/support/config.sub
deleted file mode 100644
index 538dc09..0000000
--- a/readline-4.3.orig/support/config.sub
+++ /dev/null
@@ -1,1497 +0,0 @@
-#! /bin/sh
-# Configuration validation subroutine script.
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002 Free Software Foundation, Inc.
-
-timestamp='2002-03-07'
-
-# This file is (in principle) common to ALL GNU software.
-# The presence of a machine in this file suggests that SOME GNU software
-# can handle that machine. It does not imply ALL GNU software can.
-#
-# This file is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# Please send patches to <config-patches@gnu.org>. Submit a context
-# diff and a properly formatted ChangeLog entry.
-#
-# Configuration subroutine to validate and canonicalize a configuration type.
-# Supply the specified configuration type as an argument.
-# If it is invalid, we print an error message on stderr and exit with code 1.
-# Otherwise, we print the canonical config type on stdout and succeed.
-
-# This file is supposed to be the same for all GNU packages
-# and recognize all the CPU types, system types and aliases
-# that are meaningful with *any* GNU software.
-# Each package is responsible for reporting which valid configurations
-# it does not support. The user should be able to distinguish
-# a failure to support a valid configuration from a meaningless
-# configuration.
-
-# The goal of this file is to map all the various variations of a given
-# machine specification into a single specification in the form:
-# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or in some cases, the newer four-part form:
-# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-# It is wrong to echo any other type of specification.
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION] CPU-MFR-OPSYS
- $0 [OPTION] ALIAS
-
-Canonicalize a configuration name.
-
-Operation modes:
- -h, --help print this help, then exit
- -t, --time-stamp print date of last modification, then exit
- -v, --version print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.sub ($timestamp)
-
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
-Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions. There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
- case $1 in
- --time-stamp | --time* | -t )
- echo "$timestamp" ; exit 0 ;;
- --version | -v )
- echo "$version" ; exit 0 ;;
- --help | --h* | -h )
- echo "$usage"; exit 0 ;;
- -- ) # Stop option processing
- shift; break ;;
- - ) # Use stdin as input.
- break ;;
- -* )
- echo "$me: invalid option $1$help"
- exit 1 ;;
-
- *local*)
- # First pass through any local machine types.
- echo $1
- exit 0;;
-
- * )
- break ;;
- esac
-done
-
-case $# in
- 0) echo "$me: missing argument$help" >&2
- exit 1;;
- 1) ;;
- *) echo "$me: too many arguments$help" >&2
- exit 1;;
-esac
-
-# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
-# Here we must recognize all the valid KERNEL-OS combinations.
-maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
-case $maybe_os in
- nto-qnx* | linux-gnu* | storm-chaos* | os2-emx* | windows32-* | rtmk-nova*)
- os=-$maybe_os
- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
- ;;
- *)
- basic_machine=`echo $1 | sed 's/-[^-]*$//'`
- if [ $basic_machine != $1 ]
- then os=`echo $1 | sed 's/.*-/-/'`
- else os=; fi
- ;;
-esac
-
-### Let's recognize common machines as not being operating systems so
-### that things like config.sub decstation-3100 work. We also
-### recognize some manufacturers as not being operating systems, so we
-### can provide default operating systems below.
-case $os in
- -sun*os*)
- # Prevent following clause from handling this invalid input.
- ;;
- -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
- -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
- -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
- -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
- -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
- -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
- -apple | -axis)
- os=
- basic_machine=$1
- ;;
- -sim | -cisco | -oki | -wec | -winbond)
- os=
- basic_machine=$1
- ;;
- -scout)
- ;;
- -wrs)
- os=-vxworks
- basic_machine=$1
- ;;
- -chorusos*)
- os=-chorusos
- basic_machine=$1
- ;;
- -chorusrdb)
- os=-chorusrdb
- basic_machine=$1
- ;;
- -hiux*)
- os=-hiuxwe2
- ;;
- -sco5)
- os=-sco3.2v5
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco4)
- os=-sco3.2v4
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco3.2.[4-9]*)
- os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco3.2v[4-9]*)
- # Don't forget version if it is 3.2v4 or newer.
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco*)
- os=-sco3.2v2
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -udk*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -isc)
- os=-isc2.2
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -clix*)
- basic_machine=clipper-intergraph
- ;;
- -isc*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -lynx*)
- os=-lynxos
- ;;
- -ptx*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
- ;;
- -windowsnt*)
- os=`echo $os | sed -e 's/windowsnt/winnt/'`
- ;;
- -psos*)
- os=-psos
- ;;
- -mint | -mint[0-9]*)
- basic_machine=m68k-atari
- os=-mint
- ;;
-esac
-
-# Decode aliases for certain CPU-COMPANY combinations.
-case $basic_machine in
- # Recognize the basic CPU types without company name.
- # Some are omitted here because they have special meanings below.
- 1750a | 580 \
- | a29k \
- | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
- | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
- | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
- | c4x | clipper \
- | d10v | d30v | dsp16xx \
- | fr30 \
- | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
- | i370 | i860 | i960 | ia64 \
- | m32r | m68000 | m68k | m88k | mcore \
- | mips | mips16 | mips64 | mips64el | mips64orion | mips64orionel \
- | mips64vr4100 | mips64vr4100el | mips64vr4300 \
- | mips64vr4300el | mips64vr5000 | mips64vr5000el \
- | mipsbe | mipseb | mipsel | mipsle | mipstx39 | mipstx39el \
- | mipsisa32 | mipsisa64 \
- | mn10200 | mn10300 \
- | ns16k | ns32k \
- | openrisc | or32 \
- | pdp10 | pdp11 | pj | pjl \
- | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
- | pyramid \
- | sh | sh[34] | sh[34]eb | shbe | shle | sh64 \
- | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \
- | strongarm \
- | tahoe | thumb | tic80 | tron \
- | v850 | v850e \
- | we32k \
- | x86 | xscale | xstormy16 | xtensa \
- | z8k)
- basic_machine=$basic_machine-unknown
- ;;
- m6811 | m68hc11 | m6812 | m68hc12)
- # Motorola 68HC11/12.
- basic_machine=$basic_machine-unknown
- os=-none
- ;;
- m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
- ;;
-
- # We use `pc' rather than `unknown'
- # because (1) that's what they normally are, and
- # (2) the word "unknown" tends to confuse beginning users.
- i*86 | x86_64)
- basic_machine=$basic_machine-pc
- ;;
- # Object if more than one company name word.
- *-*-*)
- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
- exit 1
- ;;
- # Recognize the basic CPU types with company name.
- 580-* \
- | a29k-* \
- | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
- | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
- | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
- | arm-* | armbe-* | armle-* | armv*-* \
- | avr-* \
- | bs2000-* \
- | c[123]* | c30-* | [cjt]90-* | c54x-* \
- | clipper-* | cydra-* \
- | d10v-* | d30v-* \
- | elxsi-* \
- | f30[01]-* | f700-* | fr30-* | fx80-* \
- | h8300-* | h8500-* \
- | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
- | i*86-* | i860-* | i960-* | ia64-* \
- | m32r-* \
- | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
- | m88110-* | m88k-* | mcore-* \
- | mips-* | mips16-* | mips64-* | mips64el-* | mips64orion-* \
- | mips64orionel-* | mips64vr4100-* | mips64vr4100el-* \
- | mips64vr4300-* | mips64vr4300el-* | mipsbe-* | mipseb-* \
- | mipsle-* | mipsel-* | mipstx39-* | mipstx39el-* \
- | none-* | np1-* | ns16k-* | ns32k-* \
- | orion-* \
- | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
- | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
- | pyramid-* \
- | romp-* | rs6000-* \
- | sh-* | sh[34]-* | sh[34]eb-* | shbe-* | shle-* | sh64-* \
- | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
- | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
- | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \
- | v850-* | v850e-* | vax-* \
- | we32k-* \
- | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \
- | xtensa-* \
- | ymp-* \
- | z8k-*)
- ;;
-
- # NOTE -- BEGIN cases added for Bash -- NOTE
- butterfly-bbn* | cadmus-* | ews*-nec | masscomp-masscomp \
- | tandem-* | symmetric-* | drs6000-icl | *-*ardent | concurrent-* \
- | ksr1-* | esa-ibm | fxc-alliant | *370-amdahl | sx[45]*-nec )
- ;;
- # NOTE -- END cases added for Bash -- NOTE
-
- # Recognize the various machine names and aliases which stand
- # for a CPU type and a company and sometimes even an OS.
- 386bsd)
- basic_machine=i386-unknown
- os=-bsd
- ;;
- 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
- basic_machine=m68000-att
- ;;
- 3b*)
- basic_machine=we32k-att
- ;;
- a29khif)
- basic_machine=a29k-amd
- os=-udi
- ;;
- adobe68k)
- basic_machine=m68010-adobe
- os=-scout
- ;;
- alliant | fx80)
- basic_machine=fx80-alliant
- ;;
- altos | altos3068)
- basic_machine=m68k-altos
- ;;
- am29k)
- basic_machine=a29k-none
- os=-bsd
- ;;
- amdahl)
- basic_machine=580-amdahl
- os=-sysv
- ;;
- amiga | amiga-*)
- basic_machine=m68k-unknown
- ;;
- amigaos | amigados)
- basic_machine=m68k-unknown
- os=-amigaos
- ;;
- amigaunix | amix)
- basic_machine=m68k-unknown
- os=-sysv4
- ;;
- apollo68)
- basic_machine=m68k-apollo
- os=-sysv
- ;;
- apollo68bsd)
- basic_machine=m68k-apollo
- os=-bsd
- ;;
- aux)
- basic_machine=m68k-apple
- os=-aux
- ;;
- balance)
- basic_machine=ns32k-sequent
- os=-dynix
- ;;
- c90)
- basic_machine=c90-cray
- os=-unicos
- ;;
- convex-c1)
- basic_machine=c1-convex
- os=-bsd
- ;;
- convex-c2)
- basic_machine=c2-convex
- os=-bsd
- ;;
- convex-c32)
- basic_machine=c32-convex
- os=-bsd
- ;;
- convex-c34)
- basic_machine=c34-convex
- os=-bsd
- ;;
- convex-c38)
- basic_machine=c38-convex
- os=-bsd
- ;;
- cray | j90)
- basic_machine=j90-cray
- os=-unicos
- ;;
- crds | unos)
- basic_machine=m68k-crds
- ;;
- cris | cris-* | etrax*)
- basic_machine=cris-axis
- ;;
- da30 | da30-*)
- basic_machine=m68k-da30
- ;;
- decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
- basic_machine=mips-dec
- ;;
- decsystem10* | dec10*)
- basic_machine=pdp10-dec
- os=-tops10
- ;;
- decsystem20* | dec20*)
- basic_machine=pdp10-dec
- os=-tops20
- ;;
- delta | 3300 | motorola-3300 | motorola-delta \
- | 3300-motorola | delta-motorola)
- basic_machine=m68k-motorola
- ;;
- delta88)
- basic_machine=m88k-motorola
- os=-sysv3
- ;;
- dpx20 | dpx20-*)
- basic_machine=rs6000-bull
- os=-bosx
- ;;
- dpx2* | dpx2*-bull)
- basic_machine=m68k-bull
- os=-sysv3
- ;;
- ebmon29k)
- basic_machine=a29k-amd
- os=-ebmon
- ;;
- elxsi)
- basic_machine=elxsi-elxsi
- os=-bsd
- ;;
- encore | umax | mmax | multimax) # bash
- basic_machine=ns32k-encore
- ;;
- es1800 | OSE68k | ose68k | ose | OSE)
- basic_machine=m68k-ericsson
- os=-ose
- ;;
- fx2800)
- basic_machine=i860-alliant
- ;;
- genix)
- basic_machine=ns32k-ns
- ;;
- gmicro)
- basic_machine=tron-gmicro
- os=-sysv
- ;;
- go32)
- basic_machine=i386-pc
- os=-go32
- ;;
- h3050r* | hiux*)
- basic_machine=hppa1.1-hitachi
- os=-hiuxwe2
- ;;
- h8300hms)
- basic_machine=h8300-hitachi
- os=-hms
- ;;
- h8300xray)
- basic_machine=h8300-hitachi
- os=-xray
- ;;
- h8500hms)
- basic_machine=h8500-hitachi
- os=-hms
- ;;
- harris)
- basic_machine=m88k-harris
- os=-sysv3
- ;;
- hbullx20-bull)
- basic_machine=m68k-bull # bash
- ;;
- hp300-*)
- basic_machine=m68k-hp
- ;;
- hp300bsd)
- basic_machine=m68k-hp
- os=-bsd
- ;;
- hp300hpux)
- basic_machine=m68k-hp
- os=-hpux
- ;;
- hp3k9[0-9][0-9] | hp9[0-9][0-9])
- basic_machine=hppa1.0-hp
- ;;
- hp9k2[0-9][0-9] | hp9k31[0-9])
- basic_machine=m68000-hp
- ;;
- hp9k3[2-9][0-9])
- basic_machine=m68k-hp
- ;;
- hp9k6[0-9][0-9] | hp6[0-9][0-9])
- basic_machine=hppa1.0-hp
- ;;
- hp9k7[0-79][0-9] | hp7[0-79][0-9])
- basic_machine=hppa1.1-hp
- ;;
- hp9k78[0-9] | hp78[0-9])
- # FIXME: really hppa2.0-hp
- basic_machine=hppa1.1-hp
- ;;
- hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
- # FIXME: really hppa2.0-hp
- basic_machine=hppa1.1-hp
- ;;
- hp9k8[0-9][13679] | hp8[0-9][13679])
- basic_machine=hppa1.1-hp
- ;;
- hp9k8[0-9][0-9] | hp8[0-9][0-9])
- basic_machine=hppa1.0-hp
- ;;
- hppa-next)
- os=-nextstep3
- ;;
- hppaosf)
- basic_machine=hppa1.1-hp
- os=-osf
- ;;
- hppro)
- basic_machine=hppa1.1-hp
- os=-proelf
- ;;
- ibm032-*)
- basic_machine=ibmrt-ibm # bash
- ;;
- i370-ibm* | ibm*)
- basic_machine=i370-ibm
- ;;
-# I'm not sure what "Sysv32" means. Should this be sysv3.2?
- i*86v32)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv32
- ;;
- i*86v4*)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv4
- ;;
- i*86v)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv
- ;;
- i*86sol2)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-solaris2
- ;;
- i386-go32)
- basic_machine=i386-pc # bash
- os=-go32
- ;;
- i386-mingw32)
- basic_machine=i386-pc # bash
- os=-mingw32
- ;;
- i386mach)
- basic_machine=i386-mach
- os=-mach
- ;;
- i386-vsta | vsta)
- basic_machine=i386-unknown
- os=-vsta
- ;;
- iris | iris4d)
- basic_machine=mips-sgi
- case $os in
- -irix*)
- ;;
- *)
- os=-irix4
- ;;
- esac
- ;;
- isi68 | isi)
- basic_machine=m68k-isi
- os=-sysv
- ;;
- luna88k-omron* | m88k-omron*) # bash
- basic_machine=m88k-omron
- ;;
- magicstation*)
- basic_machine=magicstation-unknown # bash
- ;;
- magnum | m3230)
- basic_machine=mips-mips
- os=-sysv
- ;;
- merlin)
- basic_machine=ns32k-utek
- os=-sysv
- ;;
- mingw32)
- basic_machine=i386-pc
- os=-mingw32
- ;;
- miniframe)
- basic_machine=m68000-convergent
- ;;
- *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
- basic_machine=m68k-atari
- os=-mint
- ;;
- mips3*-*)
- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
- ;;
- mips3*)
- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
- ;;
- mmix*)
- basic_machine=mmix-knuth
- os=-mmixware
- ;;
- monitor)
- basic_machine=m68k-rom68k
- os=-coff
- ;;
- morphos)
- basic_machine=powerpc-unknown
- os=-morphos
- ;;
- msdos)
- basic_machine=i386-pc
- os=-msdos
- ;;
- mvs)
- basic_machine=i370-ibm
- os=-mvs
- ;;
- ncr3000)
- basic_machine=i486-ncr
- os=-sysv4
- ;;
- netbsd386)
- basic_machine=i386-unknown
- os=-netbsd
- ;;
- netwinder)
- basic_machine=armv4l-rebel
- os=-linux
- ;;
- news | news700 | news800 | news900)
- basic_machine=m68k-sony
- os=-newsos
- ;;
- news1000)
- basic_machine=m68030-sony
- os=-newsos
- ;;
- news-3600 | risc-news)
- basic_machine=mips-sony
- os=-newsos
- ;;
- necv70)
- basic_machine=v70-nec
- os=-sysv
- ;;
- next | m*-next )
- basic_machine=m68k-next
- case $os in
- -nextstep* )
- ;;
- -ns2*)
- os=-nextstep2
- ;;
- *)
- os=-nextstep3
- ;;
- esac
- ;;
- nh3000)
- basic_machine=m68k-harris
- os=-cxux
- ;;
- nh[45]000)
- basic_machine=m88k-harris
- os=-cxux
- ;;
- nindy960)
- basic_machine=i960-intel
- os=-nindy
- ;;
- mon960)
- basic_machine=i960-intel
- os=-mon960
- ;;
- nonstopux)
- basic_machine=mips-compaq
- os=-nonstopux
- ;;
- np1)
- basic_machine=np1-gould
- ;;
- nsr-tandem)
- basic_machine=nsr-tandem
- ;;
- odt | odt3 | odt4) # SCO Open Desktop
- basic_machine=i386-pc # bash
- os=-sco3.2v4
- ;;
- op50n-* | op60c-*)
- basic_machine=hppa1.1-oki
- os=-proelf
- ;;
- or32 | or32-*)
- basic_machine=or32-unknown
- os=-coff
- ;;
- OSE68000 | ose68000)
- basic_machine=m68000-ericsson
- os=-ose
- ;;
- osr5 | sco5) # SCO Open Server
- basic_machine=i386-pc # bash
- os=-sco3.2v5
- ;;
- os68k)
- basic_machine=m68k-none
- os=-os68k
- ;;
- pa-hitachi)
- basic_machine=hppa1.1-hitachi
- os=-hiuxwe2
- ;;
- paragon)
- basic_machine=i860-intel
- os=-osf
- ;;
- pbd)
- basic_machine=sparc-tti
- ;;
- pbb)
- basic_machine=m68k-tti
- ;;
- pc532 | pc532-*)
- basic_machine=ns32k-pc532
- ;;
- pentium | p5 | k5 | k6 | nexgen | viac3)
- basic_machine=i586-pc
- ;;
- pentiumpro | p6 | 6x86 | athlon)
- basic_machine=i686-pc
- ;;
- pentiumii | pentium2)
- basic_machine=i686-pc
- ;;
- pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
- basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentiumpro-* | p6-* | 6x86-* | athlon-*)
- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentiumii-* | pentium2-*)
- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pn)
- basic_machine=pn-gould
- ;;
- power) basic_machine=power-ibm
- ;;
- ppc) basic_machine=powerpc-unknown
- ;;
- ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppcle | powerpclittle | ppc-le | powerpc-little)
- basic_machine=powerpcle-unknown
- ;;
- ppcle-* | powerpclittle-*)
- basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppc64) basic_machine=powerpc64-unknown
- ;;
- ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppc64le | powerpc64little | ppc64-le | powerpc64-little)
- basic_machine=powerpc64le-unknown
- ;;
- ppc64le-* | powerpc64little-*)
- basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ps2)
- basic_machine=i386-ibm
- ;;
- pw32)
- basic_machine=i586-unknown
- os=-pw32
- ;;
- rom68k)
- basic_machine=m68k-rom68k
- os=-coff
- ;;
- rm[46]00)
- basic_machine=mips-siemens
- ;;
- rtpc | rtpc-*)
- basic_machine=romp-ibm
- ;;
- s390 | s390-*)
- basic_machine=s390-ibm
- ;;
- s390x | s390x-*)
- basic_machine=s390x-ibm
- ;;
- sa29200)
- basic_machine=a29k-amd
- os=-udi
- ;;
- sequent)
- basic_machine=i386-sequent
- ;;
- sh)
- basic_machine=sh-hitachi
- os=-hms
- ;;
- sparclite-wrs | simso-wrs)
- basic_machine=sparclite-wrs
- os=-vxworks
- ;;
- sps7)
- basic_machine=m68k-bull
- os=-sysv2
- ;;
- spur)
- basic_machine=spur-unknown
- ;;
- st2000)
- basic_machine=m68k-tandem
- ;;
- stratus)
- basic_machine=i860-stratus
- os=-sysv4
- ;;
- sun2)
- basic_machine=m68000-sun
- ;;
- sun2os3)
- basic_machine=m68000-sun
- os=-sunos3
- ;;
- sun2os4)
- basic_machine=m68000-sun
- os=-sunos4
- ;;
- sun3os3)
- basic_machine=m68k-sun
- os=-sunos3
- ;;
- sun3os4)
- basic_machine=m68k-sun
- os=-sunos4
- ;;
- sun4os3)
- basic_machine=sparc-sun
- os=-sunos3
- ;;
- sun4os4)
- basic_machine=sparc-sun
- os=-sunos4
- ;;
- sun4sol2)
- basic_machine=sparc-sun
- os=-solaris2
- ;;
- sun3 | sun3-*)
- basic_machine=m68k-sun
- ;;
- sun4)
- basic_machine=sparc-sun
- ;;
- sun386 | sun386i | roadrunner)
- basic_machine=i386-sun
- ;;
- sv1)
- basic_machine=sv1-cray
- os=-unicos
- ;;
- symmetry)
- basic_machine=i386-sequent
- os=-dynix
- ;;
- t3d)
- basic_machine=alpha-cray
- os=-unicos
- ;;
- t3e)
- basic_machine=alphaev5-cray
- os=-unicos
- ;;
- t90)
- basic_machine=t90-cray
- os=-unicos
- ;;
- tic54x | c54x*)
- basic_machine=tic54x-unknown
- os=-coff
- ;;
- tx39)
- basic_machine=mipstx39-unknown
- ;;
- tx39el)
- basic_machine=mipstx39el-unknown
- ;;
- toad1)
- basic_machine=pdp10-xkl
- os=-tops20
- ;;
- tower | tower-32)
- basic_machine=m68k-ncr
- ;;
- udi29k)
- basic_machine=a29k-amd
- os=-udi
- ;;
- ultra3)
- basic_machine=a29k-nyu
- os=-sym1
- ;;
- uw2 | unixware | unixware2) # bash
- basic_machine=i386-pc
- os=-sysv4.2uw2.1
- ;;
- uw7 | unixware7) # bash
- basic_machine=i386-pc
- os=-sysv5uw7
- ;;
- v810 | necv810)
- basic_machine=v810-nec
- os=-none
- ;;
- vaxv)
- basic_machine=vax-dec
- os=-sysv
- ;;
- vms)
- basic_machine=vax-dec
- os=-vms
- ;;
- vpp*|vx|vx-*)
- basic_machine=f301-fujitsu
- ;;
- vxworks960)
- basic_machine=i960-wrs
- os=-vxworks
- ;;
- vxworks68)
- basic_machine=m68k-wrs
- os=-vxworks
- ;;
- vxworks29k)
- basic_machine=a29k-wrs
- os=-vxworks
- ;;
- w65*)
- basic_machine=w65-wdc
- os=-none
- ;;
- w89k-*)
- basic_machine=hppa1.1-winbond
- os=-proelf
- ;;
- windows32)
- basic_machine=i386-pc
- os=-windows32-msvcrt
- ;;
- xps | xps100)
- basic_machine=xps100-honeywell
- ;;
- ymp)
- basic_machine=ymp-cray
- os=-unicos
- ;;
- z8k-*-coff)
- basic_machine=z8k-unknown
- os=-sim
- ;;
- none)
- basic_machine=none-none
- os=-none
- ;;
-
-# Here we handle the default manufacturer of certain CPU types. It is in
-# some cases the only manufacturer, in others, it is the most popular.
- w89k)
- basic_machine=hppa1.1-winbond
- ;;
- op50n)
- basic_machine=hppa1.1-oki
- ;;
- op60c)
- basic_machine=hppa1.1-oki
- ;;
- romp)
- basic_machine=romp-ibm
- ;;
- rs6000)
- basic_machine=rs6000-ibm
- ;;
- vax)
- basic_machine=vax-dec
- ;;
- pdp10)
- # there are many clones, so DEC is not a safe bet
- basic_machine=pdp10-unknown
- ;;
- pdp11)
- basic_machine=pdp11-dec
- ;;
- we32k)
- basic_machine=we32k-att
- ;;
- sh3 | sh4 | sh3eb | sh4eb)
- basic_machine=sh-unknown
- ;;
- sh64)
- basic_machine=sh64-unknown
- ;;
- sparc | sparcv9 | sparcv9b)
- basic_machine=sparc-sun
- ;;
- cydra)
- basic_machine=cydra-cydrome
- ;;
- orion)
- basic_machine=orion-highlevel
- ;;
- orion105)
- basic_machine=clipper-highlevel
- ;;
- mac | mpw | mac-mpw)
- basic_machine=m68k-apple
- ;;
- pmac | pmac-mpw)
- basic_machine=powerpc-apple
- ;;
- c4x*)
- basic_machine=c4x-none
- os=-coff
- ;;
- *-unknown)
- # Make sure to match an already-canonicalized machine name.
- ;;
- *)
- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
- exit 1
- ;;
-esac
-
-# Here we canonicalize certain aliases for manufacturers.
-case $basic_machine in
- *-digital*)
- basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
- ;;
- *-commodore*)
- basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
- ;;
- *)
- ;;
-esac
-
-# Decode manufacturer-specific aliases for certain operating systems.
-
-if [ x"$os" != x"" ]
-then
-case $os in
- # First match some system type aliases
- # that might get confused with valid system types.
- # -solaris* is a basic system type, with this one exception.
- -solaris1 | -solaris1.*)
- os=`echo $os | sed -e 's|solaris1|sunos4|'`
- ;;
- -solaris)
- os=-solaris2
- ;;
- -svr4*)
- os=-sysv4
- ;;
- -unixware7*) # bash
- os=-sysv5uw7
- ;;
- -unixware*)
- os=-sysv4.2uw
- ;;
- -gnu/linux*)
- os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
- ;;
- # First accept the basic system types.
- # The portable systems comes first.
- # Each alternative MUST END IN A *, to match a version number.
- # -sysv* is not here because it comes later, after sysvr4.
- -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
- | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
- | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
- | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
- | -aos* \
- | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
- | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
- | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \
- | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
- | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
- | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
- | -chorusos* | -chorusrdb* \
- | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
- | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \
- | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
- | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
- | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
- | -morphos* | -superux* | -rtmk* | -rtmk-nova*)
- # Remember, each alternative MUST END IN *, to match a version number.
- ;;
- # NOTE -- BEGIN CASES ADDED FOR Bash -- NOTE
- -powerux* | -superux*)
- ;;
- # NOTE -- END CASES ADDED FOR Bash -- NOTE
- -qnx*)
- case $basic_machine in
- x86-* | i*86-*)
- ;;
- *)
- os=-nto$os
- ;;
- esac
- ;;
- -nto*)
- os=-nto-qnx
- ;;
- -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
- | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
- | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
- ;;
- -mac*)
- os=`echo $os | sed -e 's|mac|macos|'`
- ;;
- -linux*)
- os=`echo $os | sed -e 's|linux|linux-gnu|'`
- ;;
- -sunos5*)
- os=`echo $os | sed -e 's|sunos5|solaris2|'`
- ;;
- -sunos6*)
- os=`echo $os | sed -e 's|sunos6|solaris3|'`
- ;;
- -opened*)
- os=-openedition
- ;;
- -wince*)
- os=-wince
- ;;
- -osfrose*)
- os=-osfrose
- ;;
- -osf*)
- os=-osf
- ;;
- -utek*)
- os=-bsd
- ;;
- -dynix*)
- os=-bsd
- ;;
- -acis*)
- os=-aos
- ;;
- -atheos*)
- os=-atheos
- ;;
- -386bsd)
- os=-bsd
- ;;
- -ctix* | -uts*)
- os=-sysv
- ;;
- -nova*)
- os=-rtmk-nova
- ;;
- -ns2 )
- os=-nextstep2
- ;;
- -nsk*)
- os=-nsk
- ;;
- # Preserve the version number of sinix5.
- -sinix5.*)
- os=`echo $os | sed -e 's|sinix|sysv|'`
- ;;
- -sinix*)
- os=-sysv4
- ;;
- -triton*)
- os=-sysv3
- ;;
- -oss*)
- os=-sysv3
- ;;
- -svr4)
- os=-sysv4
- ;;
- -svr3)
- os=-sysv3
- ;;
- -sysvr4)
- os=-sysv4
- ;;
- -sysvr5) # bash
- os=-sysv5
- ;;
- # This must come after -sysvr4.
- -sysv*)
- ;;
- -ose*)
- os=-ose
- ;;
- -es1800*)
- os=-ose
- ;;
- -xenix)
- os=-xenix
- ;;
- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
- os=-mint
- ;;
- -none)
- ;;
- *)
- # Get rid of the `-' at the beginning of $os.
- os=`echo $os | sed 's/[^-]*-//'`
- echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
- exit 1
- ;;
-esac
-else
-
-# Here we handle the default operating systems that come with various machines.
-# The value should be what the vendor currently ships out the door with their
-# machine or put another way, the most popular os provided with the machine.
-
-# Note that if you're going to try to match "-MANUFACTURER" here (say,
-# "-sun"), then you have to tell the case statement up towards the top
-# that MANUFACTURER isn't an operating system. Otherwise, code above
-# will signal an error saying that MANUFACTURER isn't an operating
-# system, and we'll never get to this point.
-
-case $basic_machine in
- *-acorn)
- os=-riscix1.2
- ;;
- arm*-rebel)
- os=-linux
- ;;
- arm*-semi)
- os=-aout
- ;;
- # This must come before the *-dec entry.
- pdp10-*)
- os=-tops20
- ;;
- pdp11-*)
- os=-none
- ;;
- *-dec | vax-*)
- os=-ultrix4.2
- ;;
- m68*-apollo)
- os=-domain
- ;;
- i386-sun)
- os=-sunos4.0.2
- ;;
- m68000-sun)
- os=-sunos3
- # This also exists in the configure program, but was not the
- # default.
- # os=-sunos4
- ;;
- m68*-cisco)
- os=-aout
- ;;
- mips*-cisco)
- os=-elf
- ;;
- mips*-*)
- os=-elf
- ;;
- or32-*)
- os=-coff
- ;;
- *-tti) # must be before sparc entry or we get the wrong os.
- os=-sysv3
- ;;
- sparc-* | *-sun)
- os=-sunos4.1.1
- ;;
- *-be)
- os=-beos
- ;;
- *-ibm)
- os=-aix
- ;;
- *-wec)
- os=-proelf
- ;;
- *-winbond)
- os=-proelf
- ;;
- *-oki)
- os=-proelf
- ;;
- *-hp)
- os=-hpux
- ;;
- *-hitachi)
- os=-hiux
- ;;
- i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
- os=-sysv
- ;;
- *-cbm)
- os=-amigaos
- ;;
- *-dg)
- os=-dgux
- ;;
- *-dolphin)
- os=-sysv3
- ;;
- m68k-ccur)
- os=-rtu
- ;;
- m88k-omron*)
- os=-luna
- ;;
- *-next )
- os=-nextstep
- ;;
- *-sequent)
- os=-ptx
- ;;
- *-crds)
- os=-unos
- ;;
- *-ns)
- os=-genix
- ;;
- i370-*)
- os=-mvs
- ;;
- *-next)
- os=-nextstep3
- ;;
- *-gould)
- os=-sysv
- ;;
- *-highlevel)
- os=-bsd
- ;;
- *-encore)
- os=-bsd
- ;;
- *-sgi)
- os=-irix
- ;;
- *-siemens)
- os=-sysv4
- ;;
- *-masscomp)
- os=-rtu
- ;;
- f30[01]-fujitsu | f700-fujitsu)
- os=-uxpv
- ;;
- *-rom68k)
- os=-coff
- ;;
- *-*bug)
- os=-coff
- ;;
- *-apple)
- os=-macos
- ;;
- *-atari*)
- os=-mint
- ;;
- *)
- os=-none
- ;;
-esac
-fi
-
-# Here we handle the case where we know the os, and the CPU type, but not the
-# manufacturer. We pick the logical manufacturer.
-vendor=unknown
-case $basic_machine in
- *-unknown)
- case $os in
- -riscix*)
- vendor=acorn
- ;;
- -sunos*)
- vendor=sun
- ;;
- -lynxos*) # bash
- vendor=lynx
- ;;
- -aix*)
- vendor=ibm
- ;;
- -beos*)
- vendor=be
- ;;
- -hpux*)
- vendor=hp
- ;;
- -mpeix*)
- vendor=hp
- ;;
- -hiux*)
- vendor=hitachi
- ;;
- -unos*)
- vendor=crds
- ;;
- -dgux*)
- vendor=dg
- ;;
- -luna*)
- vendor=omron
- ;;
- -genix*)
- vendor=ns
- ;;
- -mvs* | -opened*)
- vendor=ibm
- ;;
- -ptx*)
- vendor=sequent
- ;;
- -vxsim* | -vxworks*)
- vendor=wrs
- ;;
- -aux*)
- vendor=apple
- ;;
- -hms*)
- vendor=hitachi
- ;;
- -mpw* | -macos*)
- vendor=apple
- ;;
- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
- vendor=atari
- ;;
- -vos*)
- vendor=stratus
- ;;
- esac
- basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
- ;;
-esac
-
-echo $basic_machine$os
-exit 0
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/readline-4.3.orig/support/install.sh b/readline-4.3.orig/support/install.sh
deleted file mode 100755
index 0cac004..0000000
--- a/readline-4.3.orig/support/install.sh
+++ /dev/null
@@ -1,247 +0,0 @@
-#!/bin/sh
-#
-# install - install a program, script, or datafile
-# This comes from X11R5.
-#
-# $XConsortium: install.sh,v 1.2 89/12/18 14:47:22 jim Exp $
-#
-# Copyright 1991 by the Massachusetts Institute of Technology
-#
-# Permission to use, copy, modify, distribute, and sell this software and its
-# documentation for any purpose is hereby granted without fee, provided that
-# the above copyright notice appear in all copies and that both that
-# copyright notice and this permission notice appear in supporting
-# documentation, and that the name of M.I.T. not be used in advertising or
-# publicity pertaining to distribution of the software without specific,
-# written prior permission. M.I.T. makes no representations about the
-# suitability of this software for any purpose. It is provided "as is"
-# without express or implied warranty.
-#
-# This script is compatible with the BSD install script, but was written
-# from scratch.
-#
-
-# set DOITPROG to echo to test this script
-
-# Don't use :- since 4.3BSD and earlier shells don't like it.
-doit="${DOITPROG-}"
-
-
-# put in absolute paths if you don't have them in your path; or use env. vars.
-
-mvprog="${MVPROG-mv}"
-cpprog="${CPPROG-cp}"
-chmodprog="${CHMODPROG-chmod}"
-chownprog="${CHOWNPROG-chown}"
-chgrpprog="${CHGRPPROG-chgrp}"
-stripprog="${STRIPPROG-strip}"
-rmprog="${RMPROG-rm}"
-mkdirprog="${MKDIRPROG-mkdir}"
-
-tranformbasename=""
-transform_arg=""
-instcmd="$mvprog"
-chmodcmd="$chmodprog 0755"
-chowncmd=""
-chgrpcmd=""
-stripcmd=""
-rmcmd="$rmprog -f"
-mvcmd="$mvprog"
-src=""
-dst=""
-dir_arg=""
-
-while [ x"$1" != x ]; do
- case $1 in
- -c) instcmd="$cpprog"
- shift
- continue;;
-
- -d) dir_arg=true
- shift
- continue;;
-
- -m) chmodcmd="$chmodprog $2"
- shift
- shift
- continue;;
-
- -o) chowncmd="$chownprog $2"
- shift
- shift
- continue;;
-
- -g) chgrpcmd="$chgrpprog $2"
- shift
- shift
- continue;;
-
- -s) stripcmd="$stripprog"
- shift
- continue;;
-
- -t=*) transformarg=`echo $1 | sed 's/-t=//'`
- shift
- continue;;
-
- -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
- shift
- continue;;
-
- *) if [ x"$src" = x ]
- then
- src=$1
- else
- # this colon is to work around a 386BSD /bin/sh bug
- :
- dst=$1
- fi
- shift
- continue;;
- esac
-done
-
-if [ x"$src" = x ]
-then
- echo "install: no input file specified"
- exit 1
-else
- true
-fi
-
-if [ x"$dir_arg" != x ]; then
- dst=$src
- src=""
-
- if [ -d $dst ]; then
- instcmd=:
- else
- instcmd=mkdir
- fi
-else
-
-# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
-# might cause directories to be created, which would be especially bad
-# if $src (and thus $dsttmp) contains '*'.
-
- if [ -f $src -o -d $src ]
- then
- true
- else
- echo "install: $src does not exist"
- exit 1
- fi
-
- if [ x"$dst" = x ]
- then
- echo "install: no destination specified"
- exit 1
- else
- true
- fi
-
-# If destination is a directory, append the input filename; if your system
-# does not like double slashes in filenames, you may need to add some logic
-
- if [ -d $dst ]
- then
- dst="$dst"/`basename $src`
- else
- true
- fi
-fi
-
-## this sed command emulates the dirname command
-dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
-
-# Make sure that the destination directory exists.
-# this part is taken from Noah Friedman's mkinstalldirs script
-
-# Skip lots of stat calls in the usual case.
-if [ ! -d "$dstdir" ]; then
-defaultIFS='
-'
-IFS="${IFS-${defaultIFS}}"
-
-oIFS="${IFS}"
-# Some sh's can't handle IFS=/ for some reason.
-IFS='%'
-set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
-IFS="${oIFS}"
-
-pathcomp=''
-
-while [ $# -ne 0 ] ; do
- pathcomp="${pathcomp}${1}"
- shift
-
- if [ ! -d "${pathcomp}" ] ;
- then
- $mkdirprog "${pathcomp}"
- else
- true
- fi
-
- pathcomp="${pathcomp}/"
-done
-fi
-
-if [ x"$dir_arg" != x ]
-then
- $doit $instcmd $dst &&
-
- if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
- if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
-else
-
-# If we're going to rename the final executable, determine the name now.
-
- if [ x"$transformarg" = x ]
- then
- dstfile=`basename $dst`
- else
- dstfile=`basename $dst $transformbasename |
- sed $transformarg`$transformbasename
- fi
-
-# don't allow the sed command to completely eliminate the filename
-
- if [ x"$dstfile" = x ]
- then
- dstfile=`basename $dst`
- else
- true
- fi
-
-# Make a temp file name in the proper directory.
-
- dsttmp=$dstdir/#inst.$$#
-
-# Move or copy the file name to the temp name
-
- $doit $instcmd $src $dsttmp &&
-
- trap "rm -f ${dsttmp}" 0 &&
-
-# and set any options; do chmod last to preserve setuid bits
-
-# If any of these fail, we abort the whole thing. If we want to
-# ignore errors from any of these, just make sure not to ignore
-# errors from the above "$doit $instcmd $src $dsttmp" command.
-
- if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
- if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
-
-# Now rename the file to the real destination.
-
- $doit $rmcmd -f $dstdir/$dstfile &&
- $doit $mvcmd $dsttmp $dstdir/$dstfile
-
-fi &&
-
-
-exit 0
diff --git a/readline-4.3.orig/support/mkdirs b/readline-4.3.orig/support/mkdirs
deleted file mode 100755
index ce4fb23..0000000
--- a/readline-4.3.orig/support/mkdirs
+++ /dev/null
@@ -1,48 +0,0 @@
-#! /bin/sh
-#
-# mkdirs - a work-alike for `mkdir -p'
-#
-# Chet Ramey
-# chet@po.cwru.edu
-
-# Copyright (C) 1996-2002 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA.
-
-for dir
-do
-
- test -d "$dir" && continue
-
- tomake=$dir
- while test -n "$dir" ; do
- # dir=${dir%/*}
- # dir=`expr "$dir" ':' '\(/.*\)/[^/]*'`
- if dir=`expr "$dir" ':' '\(.*\)/[^/]*'`; then
- tomake="$dir $tomake"
- else
- dir=
- fi
- done
-
- for d in $tomake
- do
- test -d "$d" && continue
- echo mkdir "$d"
- mkdir "$d"
- done
-done
-
-exit 0
diff --git a/readline-4.3.orig/support/mkdist b/readline-4.3.orig/support/mkdist
deleted file mode 100755
index 06e6155..0000000
--- a/readline-4.3.orig/support/mkdist
+++ /dev/null
@@ -1,120 +0,0 @@
-#! /bin/bash -
-#
-# mkdist - make a distribution directory from a master manifest file
-#
-# usage: mkdist [-m manifest] [-s srcdir] [-r rootname] [-v] version
-#
-# SRCDIR defaults to src
-# MANIFEST defaults to $SRCDIR/MANIFEST
-#
-# Chet Ramey
-# chet@po.cwru.edu
-
-# Copyright (C) 1996-2002 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA.
-
-SRCDIR=src
-ROOTNAME=bash
-
-usage()
-{
- echo usage: mkdist [-m manifest] [-s srcdir] [-r rootname] [-v] version 1>&2
- exit 2
-}
-
-vmsg()
-{
- if [ -n "$verbose" ]; then
- echo mkdist: "$@"
- fi
-}
-
-while getopts m:s:r:v name
-do
- case $name in
- m) MANIFEST=$OPTARG ;;
- s) SRCDIR=$OPTARG ;;
- r) ROOTNAME=$OPTARG ;;
- v) verbose=yes ;;
- ?) usage ;;
- esac
-done
-
-: ${MANIFEST:=$SRCDIR/MANIFEST}
-
-vmsg using $MANIFEST
-
-shift $(( $OPTIND - 1 ))
-
-if [ $# -lt 1 ]; then
- usage
-fi
-
-version=$1
-newdir=${ROOTNAME}-$version
-
-vmsg creating distribution for $ROOTNAME version $version in $newdir
-
-if [ ! -d $newdir ]; then
- mkdir $newdir || { echo $0: cannot make directory $newdir 1>&2 ; exit 1; }
-fi
-
-dirmode=755
-filmode=644
-
-while read fname type mode
-do
- [ -z "$fname" ] && continue
-
- case "$fname" in
- \#*) continue ;;
- esac
-
- case "$type" in
- d) mkdir $newdir/$fname ;;
- f) cp -p $SRCDIR/$fname $newdir/$fname ;;
- s) ln -s $mode $newdir/$fname ; mode= ;; # symlink
- l) ln $mode $newdir/$fname ; mode= ;; # hard link
- *) echo "unknown file type $type" 1>&2 ;;
- esac
-
- if [ -n "$mode" ]; then
- chmod $mode $newdir/$fname
- fi
-
-done < $MANIFEST
-
-# cut off the `-alpha' in something like `2.0-alpha', leaving just the
-# numeric version
-#version=${version%%-*}
-
-#case "$version" in
-#*.*.*) vers=${version%.*} ;;
-#*.*) vers=${version} ;;
-#esac
-
-#echo $vers > $newdir/.distribution
-
-#case "$version" in
-#*.*.*) plevel=${version##*.} ;;
-#*) plevel=0 ;;
-#esac
-#[ -z "$plevel" ] && plevel=0
-#echo ${plevel} > $newdir/.patchlevel
-
-vmsg $newdir created
-
-exit 0
diff --git a/readline-4.3.orig/support/shlib-install b/readline-4.3.orig/support/shlib-install
deleted file mode 100755
index 654cfa9..0000000
--- a/readline-4.3.orig/support/shlib-install
+++ /dev/null
@@ -1,156 +0,0 @@
-#! /bin/sh
-#
-# shlib-install - install a shared library and do any necessary host-specific
-# post-installation configuration (like ldconfig)
-#
-# usage: shlib-install [-D] -O host_os -d installation-dir -i install-prog [-U] library
-#
-# Chet Ramey
-# chet@po.cwru.edu
-
-#
-# defaults
-#
-INSTALLDIR=/usr/local/lib
-LDCONFIG=ldconfig
-
-PROGNAME=`basename $0`
-USAGE="$PROGNAME [-D] -O host_os -d installation-dir -i install-prog [-U] library"
-
-# process options
-
-while [ $# -gt 0 ]; do
- case "$1" in
- -O) shift; host_os="$1"; shift ;;
- -d) shift; INSTALLDIR="$1"; shift ;;
- -i) shift; INSTALLPROG="$1" ; shift ;;
- -D) echo=echo ; shift ;;
- -U) uninstall=true ; shift ;;
- -*) echo "$USAGE" >&2 ; exit 2;;
- *) break ;;
- esac
-done
-
-# set install target name
-LIBNAME="$1"
-
-if [ -z "$LIBNAME" ]; then
- echo "$USAGE" >&2
- exit 2
-fi
-
-OLDSUFF=old
-MV=mv
-RM="rm -f"
-LN="ln -s"
-
-# pre-install
-
-if [ -z "$uninstall" ]; then
- ${echo} $RM ${INSTALLDIR}/${LIBNAME}.${OLDSUFF}
- if [ -f "$INSTALLDIR/$LIBNAME" ]; then
- ${echo} $MV $INSTALLDIR/$LIBNAME ${INSTALLDIR}/${LIBNAME}.${OLDSUFF}
- fi
-fi
-
-# install/uninstall
-
-if [ -z "$uninstall" ] ; then
- ${echo} eval ${INSTALLPROG} $LIBNAME ${INSTALLDIR}/${LIBNAME}
-else
- ${echo} ${RM} ${INSTALLDIR}/${LIBNAME}
-fi
-
-# post-install/uninstall
-
-# HP-UX and Darwin/MacOS X require that a shared library have execute permission
-case "$host_os" in
-hpux*|darwin*|macosx*)
- if [ -z "$uninstall" ]; then
- chmod 555 ${INSTALLDIR}/${LIBNAME}
- fi ;;
-*) ;;
-esac
-
-case "$LIBNAME" in
-*.*.[0-9].[0-9]) # libname.so.M.N
- LINK2=`echo $LIBNAME | sed 's:\(.*\..*\.[0-9]\)\.[0-9]:\1:'` # libname.so.M
- LINK1=`echo $LIBNAME | sed 's:\(.*\..*\)\.[0-9]\.[0-9]:\1:'` # libname.so
- ;;
-*.*.[0-9]) # libname.so.M
- LINK1=`echo $LIBNAME | sed 's:\(.*\..*\)\.[0-9]:\1:'` # libname.so
- ;;
-*.[0-9]) # libname.M
- LINK1=`echo $LIBNAME | sed 's:\(.*\)\.[0-9]:\1:'` # libname
- ;;
-*.[0-9].[0-9].dylib) # libname.M.N.dylib
- LINK2=`echo $LIBNAME | sed 's:\(.*\.[0-9]\)\.[0-9]:\1:'` # libname.M.dylib
- LINK1=`echo $LIBNAME | sed 's:\(.*\)\.[0-9]\.[0-9]:\1:'` # libname.dylib
-esac
-
-INSTALL_LINK1='cd $INSTALLDIR ; ln -s $LIBNAME $LINK1'
-INSTALL_LINK2='cd $INSTALLDIR ; ln -s $LIBNAME $LINK2'
-
-#
-# Create symlinks to the installed library. This section is incomplete.
-#
-case "$host_os" in
-*linux*|bsdi4*|*gnu*|darwin*|macosx*)
- # libname.so.M -> libname.so.M.N
- ${echo} ${RM} ${INSTALLDIR}/$LINK2
- if [ -z "$uninstall" ]; then
- ${echo} ln -s $LIBNAME ${INSTALLDIR}/$LINK2
- fi
-
- # libname.so -> libname.so.M.N
- ${echo} ${RM} ${INSTALLDIR}/$LINK1
- if [ -z "$uninstall" ]; then
- ${echo} ln -s $LIBNAME ${INSTALLDIR}/$LINK1
- fi
- ;;
-
-solaris2*|aix4.[2-9]*|osf*|irix[56]*|sysv[45]*|dgux*)
- # libname.so -> libname.so.M
- ${echo} ${RM} ${INSTALLDIR}/$LINK1
- if [ -z "$uninstall" ]; then
- ${echo} ln -s $LIBNAME ${INSTALLDIR}/$LINK1
- fi
- ;;
-
-
-# FreeBSD 3.x and above can have either a.out or ELF shared libraries
-freebsd[3-9]*|freebsdelf[3-9]*|freebsdaout[3-9]*)
- if [ -x /usr/bin/objformat ] && [ "`/usr/bin/objformat`" = "elf" ]; then
- # libname.so -> libname.so.M
- ${echo} ${RM} ${INSTALLDIR}/$LINK1
- if [ -z "$uninstall" ]; then
- ${echo} ln -s $LIBNAME ${INSTALLDIR}/$LINK1
- fi
- else
- # libname.so.M -> libname.so.M.N
- ${echo} ${RM} ${INSTALLDIR}/$LINK2
- if [ -z "$uninstall" ]; then
- ${echo} ln -s $LIBNAME ${INSTALLDIR}/$LINK2
- fi
-
- # libname.so -> libname.so.M.N
- ${echo} ${RM} ${INSTALLDIR}/$LINK1
- if [ -z "$uninstall" ]; then
- ${echo} ln -s $LIBNAME ${INSTALLDIR}/$LINK1
- fi
- fi
- ;;
-
-hpux1*)
- # libname.sl -> libname.M
- ${echo} ${RM} ${INSTALLDIR}/$LINK1.sl
- if [ -z "$uninstall" ]; then
-# ${echo} ln -s $LIBNAME ${INSTALLDIR}/${LINK1}.sl
- ${echo} ln -s $LIBNAME ${INSTALLDIR}/${LINK1}
- fi
- ;;
-
-*) ;;
-esac
-
-exit 0
diff --git a/readline-4.3.orig/support/shobj-conf b/readline-4.3.orig/support/shobj-conf
deleted file mode 100755
index 6bd7fb1..0000000
--- a/readline-4.3.orig/support/shobj-conf
+++ /dev/null
@@ -1,458 +0,0 @@
-#! /bin/sh
-#
-# shobj-conf -- output a series of variable assignments to be substituted
-# into a Makefile by configure which specify system-dependent
-# information for creating shared objects that may be loaded
-# into bash with `enable -f'
-#
-# usage: shobj-conf [-C compiler] -c host_cpu -o host_os -v host_vendor
-#
-# Chet Ramey
-# chet@po.cwru.edu
-
-# Copyright (C) 1996-2002 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA.
-
-#
-# defaults
-#
-SHOBJ_STATUS=supported
-SHLIB_STATUS=supported
-
-SHOBJ_CC=cc
-SHOBJ_CFLAGS=
-SHOBJ_LD=
-SHOBJ_LDFLAGS=
-SHOBJ_XLDFLAGS=
-SHOBJ_LIBS=
-
-SHLIB_XLDFLAGS=
-SHLIB_LIBS=
-SHLIB_LIBSUFF='so'
-
-SHLIB_LIBVERSION='$(SHLIB_LIBSUFF)'
-
-PROGNAME=`basename $0`
-USAGE="$PROGNAME [-C compiler] -c host_cpu -o host_os -v host_vendor"
-
-while [ $# -gt 0 ]; do
- case "$1" in
- -C) shift; SHOBJ_CC="$1"; shift ;;
- -c) shift; host_cpu="$1"; shift ;;
- -o) shift; host_os="$1"; shift ;;
- -v) shift; host_vendor="$1"; shift ;;
- *) echo "$USAGE" >&2 ; exit 2;;
- esac
-done
-
-case "${host_os}-${SHOBJ_CC}" in
-sunos4*-*gcc*)
- SHOBJ_CFLAGS=-fpic
- SHOBJ_LD=/usr/bin/ld
- SHOBJ_LDFLAGS='-assert pure-text'
-
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
- ;;
-
-sunos4*)
- SHOBJ_CFLAGS=-pic
- SHOBJ_LD=/usr/bin/ld
- SHOBJ_LDFLAGS='-assert pure-text'
-
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
- ;;
-
-sunos5*-*gcc*|solaris2*-*gcc*)
- SHOBJ_CFLAGS=-fpic
- SHOBJ_LD='${CC}'
- # This line works for the Solaris linker in /usr/ccs/bin/ld
- SHOBJ_LDFLAGS='-shared -Wl,-i -Wl,-h,$@'
- # This line works for the GNU ld
-# SHOBJ_LDFLAGS='-shared -Wl,-h,$@'
-
-# SHLIB_XLDFLAGS='-R $(libdir)'
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
- ;;
-
-sunos5*|solaris2*)
- SHOBJ_CFLAGS='-K pic'
- SHOBJ_LD=/usr/ccs/bin/ld
- SHOBJ_LDFLAGS='-G -dy -z text -i -h $@'
-
-# SHLIB_XLDFLAGS='-R $(libdir)'
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
- ;;
-
-# All versions of Linux or the semi-mythical GNU Hurd.
-linux*|gnu*)
- SHOBJ_CFLAGS=-fPIC
- SHOBJ_LD='${CC}'
- SHOBJ_LDFLAGS='-shared -Wl,-soname,$@'
-
- SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir) -Wl,-soname,`basename $@ $(SHLIB_MINOR)`'
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
- ;;
-
-freebsd2* | netbsd*)
- SHOBJ_CFLAGS=-fpic
- SHOBJ_LD=ld
- SHOBJ_LDFLAGS='-x -Bshareable'
-
- SHLIB_XLDFLAGS='-R$(libdir)'
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
- ;;
-
-# FreeBSD-3.x ELF
-freebsd[3-9]*|freebsdelf[3-9]*|freebsdaout[3-9]*)
- SHOBJ_CFLAGS=-fpic
- SHOBJ_LD='${CC}'
-
- if [ -x /usr/bin/objformat ] && [ "`/usr/bin/objformat`" = "elf" ]; then
- SHOBJ_LDFLAGS='-shared -Wl,-soname,$@'
-
- SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir)'
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
- else
- SHOBJ_LDFLAGS='-shared'
-
- SHLIB_XLDFLAGS='-R$(libdir)'
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
- fi
- ;;
-
-# Darwin/MacOS X
-darwin*|macosx*)
- SHOBJ_STATUS=unsupported
- SHLIB_STATUS=supported
-
- SHOBJ_CFLAGS='-dynamic -fno-common'
-
- SHOBJ_LD=/usr/bin/libtool
-
- SHLIB_LIBVERSION='$(SHLIB_MAJOR)$(SHLIB_MINOR).$(SHLIB_LIBSUFF)'
- SHLIB_LIBSUFF='dylib'
-
- SHOBJ_LDFLAGS='-dynamic'
- SHLIB_XLDFLAGS='-arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v'
-
- SHLIB_LIBS='-lSystem'
- ;;
-
-openbsd*)
- SHOBJ_CFLAGS=-fPIC
- SHOBJ_LD='${CC}'
- SHOBJ_LDFLAGS='-shared'
-
- SHLIB_XLDFLAGS='-R$(libdir)'
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
- ;;
-
-bsdi2*)
- SHOBJ_CC=shlicc2
- SHOBJ_CFLAGS=
- SHOBJ_LD=ld
- SHOBJ_LDFLAGS=-r
- SHOBJ_LIBS=-lc_s.2.1.0
-
- # BSD/OS 2.x and 3.x `shared libraries' are too much of a pain in
- # the ass -- they require changing {/usr/lib,etc}/shlib.map on
- # each system, and the library creation process is byzantine
- SHLIB_STATUS=unsupported
- ;;
-
-bsdi3*)
- SHOBJ_CC=shlicc2
- SHOBJ_CFLAGS=
- SHOBJ_LD=ld
- SHOBJ_LDFLAGS=-r
- SHOBJ_LIBS=-lc_s.3.0.0
-
- # BSD/OS 2.x and 3.x `shared libraries' are too much of a pain in
- # the ass -- they require changing {/usr/lib,etc}/shlib.map on
- # each system, and the library creation process is byzantine
- SHLIB_STATUS=unsupported
- ;;
-
-bsdi4*)
- # BSD/OS 4.x now supports ELF and SunOS-style dynamically-linked
- # shared libraries. gcc 2.x is the standard compiler, and the
- # `normal' gcc options should work as they do in Linux.
-
- SHOBJ_CFLAGS=-fPIC
- SHOBJ_LD='${CC}'
- SHOBJ_LDFLAGS='-shared -Wl,-soname,$@'
-
- SHLIB_XLDFLAGS='-Wl,-soname,`basename $@ $(SHLIB_MINOR)`'
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
- ;;
-
-osf*-*gcc*)
- # Fix to use gcc linker driver from bfischer@TechFak.Uni-Bielefeld.DE
- SHOBJ_LD='${CC}'
- SHOBJ_LDFLAGS='-shared -Wl,-soname,$@'
-
- SHLIB_XLDFLAGS='-rpath $(libdir)'
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
- ;;
-
-osf*)
- SHOBJ_LD=ld
- SHOBJ_LDFLAGS='-shared -soname $@ -expect_unresolved "*"'
-
- SHLIB_XLDFLAGS='-rpath $(libdir)'
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
- ;;
-
-aix4.[2-9]*-*gcc*) # lightly tested by jik@cisco.com
- SHOBJ_CFLAGS=-fpic
- SHOBJ_LD='ld'
- SHOBJ_LDFLAGS='-bdynamic -bnoentry -bexpall'
- SHOBJ_XLDFLAGS='-G'
-
- SHLIB_XLDFLAGS='-bM:SRE'
- SHLIB_LIBS='-lcurses -lc'
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
- ;;
-
-aix4.[2-9]*)
- SHOBJ_CFLAGS=-K
- SHOBJ_LD='ld'
- SHOBJ_LDFLAGS='-bdynamic -bnoentry -bexpall'
- SHOBJ_XLDFLAGS='-G'
-
- SHLIB_XLDFLAGS='-bM:SRE'
- SHLIB_LIBS='-lcurses -lc'
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
- ;;
-
-#
-# THE FOLLOWING ARE UNTESTED -- and some may not support the dlopen interface
-#
-irix[56]*-*gcc*)
- SHOBJ_CFLAGS='-fpic'
- SHOBJ_LD='${CC}'
- SHOBJ_LDFLAGS='-shared -Wl,-soname,$@'
-
- SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir)'
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
- ;;
-
-irix[56]*)
- SHOBJ_CFLAGS='-K PIC'
- SHOBJ_LD=ld
-# SHOBJ_LDFLAGS='-call_shared -hidden_symbol -no_unresolved -soname $@'
-# Change from David Kaelbling <drk@sgi.com>. If you have problems,
-# remove the `-no_unresolved'
- SHOBJ_LDFLAGS='-shared -no_unresolved -soname $@'
-
- SHLIB_XLDFLAGS='-rpath $(libdir)'
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
- ;;
-
-hpux9*-*gcc*)
- # must use gcc; the bundled cc cannot compile PIC code
- SHOBJ_CFLAGS='-fpic'
- SHOBJ_LD='${CC}'
- SHOBJ_LDFLAGS='-shared -Wl,-b -Wl,+s'
-
- SHLIB_XLDFLAGS='-Wl,+b,$(libdir)'
- SHLIB_LIBSUFF='sl'
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
- ;;
-
-hpux9*)
- SHOBJ_STATUS=unsupported
- SHLIB_STATUS=unsupported
-
- # If you are using the HP ANSI C compiler, you can uncomment and use
- # this code (I have not tested it)
-# SHOBJ_STATUS=supported
-# SHLIB_STATUS=supported
-#
-# SHOBJ_CFLAGS='+z'
-# SHOBJ_LD='ld'
-# SHOBJ_LDFLAGS='-b +s'
-#
-# SHLIB_XLDFLAGS='+b $(libdir)'
-# SHLIB_LIBSUFF='sl'
-# SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
-
- ;;
-
-hpux10*-*gcc*)
- # must use gcc; the bundled cc cannot compile PIC code
- SHOBJ_CFLAGS='-fpic'
- SHOBJ_LD='${CC}'
- SHOBJ_LDFLAGS='-shared -Wl,-b -Wl,+s'
-
- SHLIB_XLDFLAGS='-Wl,+h,$@ -Wl,+b,$(libdir)'
- SHLIB_LIBSUFF='sl'
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
- ;;
-
-hpux10*)
- SHOBJ_STATUS=unsupported
- SHLIB_STATUS=unsupported
-
- # If you are using the HP ANSI C compiler, you can uncomment and use
- # this code (I have not tested it)
-# SHOBJ_STATUS=supported
-# SHLIB_STATUS=supported
-#
-# SHOBJ_CFLAGS='+z'
-# SHOBJ_LD='ld'
-# SHOBJ_LDFLAGS='-b +s +h $@'
-#
-# SHLIB_XLDFLAGS='+b $(libdir)'
-# SHLIB_LIBSUFF='sl'
-# SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
-
- ;;
-
-hpux11*-*gcc*)
- # must use gcc; the bundled cc cannot compile PIC code
- SHOBJ_CFLAGS='-fpic'
- SHOBJ_LD='${CC}'
-# SHOBJ_LDFLAGS='-shared -Wl,-b -Wl,-B,symbolic -Wl,+s -Wl,+std -Wl,+h,$@'
- SHOBJ_LDFLAGS='-shared -fpic -Wl,-b -Wl,+s -Wl,+h,$@'
-
- SHLIB_XLDFLAGS='-Wl,+b,$(libdir)'
- SHLIB_LIBSUFF='sl'
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
- ;;
-
-hpux11*)
- SHOBJ_STATUS=unsupported
- SHLIB_STATUS=unsupported
-
- # If you are using the HP ANSI C compiler, you can uncomment and use
- # this code (I have not tested it)
-# SHOBJ_STATUS=supported
-# SHLIB_STATUS=supported
-#
-# SHOBJ_CFLAGS='+z'
-# SHOBJ_LD='ld'
-# SHOBJ_LDFLAGS='-b +s +h $@'
-#
-# SHLIB_XLDFLAGS='+b $(libdir)'
-# SHLIB_LIBSUFF='sl'
-# SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
-
- ;;
-
-sysv4*-*gcc*)
- SHOBJ_CFLAGS=-shared
- SHOBJ_LDFLAGS='-shared -h $@'
- SHOBJ_LD='${CC}'
-
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
- ;;
-
-sysv4*)
- SHOBJ_CFLAGS='-K PIC'
- SHOBJ_LD=ld
- SHOBJ_LDFLAGS='-dy -z text -G -h $@'
-
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
- ;;
-
-sco3.2v5*-*gcc*)
- SHOBJ_CFLAGS='-fpic' # DEFAULTS TO ELF
- SHOBJ_LD='${CC}'
- SHOBJ_LDFLAGS='-shared'
-
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
- ;;
-
-sco3.2v5*)
- SHOBJ_CFLAGS='-K pic -b elf'
- SHOBJ_LD=ld
- SHOBJ_LDFLAGS='-G -b elf -dy -z text -h $@'
-
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
- ;;
-
-sysv5uw7*-*gcc*)
- SHOBJ_CFLAGS='-fpic'
- SHOBJ_LD='${CC}'
- SHOBJ_LDFLAGS='-shared'
-
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
- ;;
-
-sysv5uw7*)
- SHOBJ_CFLAGS='-K PIC'
- SHOBJ_LD=ld
- SHOBJ_LDFLAGS='-G -dy -z text -h $@'
-
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
- ;;
-
-dgux*-*gcc*)
- SHOBJ_CFLAGS=-fpic
- SHOBJ_LD='${CC}'
- SHOBJ_LDFLAGS='-shared'
-
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
- ;;
-
-dgux*)
- SHOBJ_CFLAGS='-K pic'
- SHOBJ_LD=ld
- SHOBJ_LDFLAGS='-G -dy -h $@'
-
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
- ;;
-
-msdos*)
- SHOBJ_STATUS=unsupported
- SHLIB_STATUS=unsupported
- ;;
-
-#
-# Rely on correct gcc configuration for everything else
-#
-*-*gcc*)
- SHOBJ_CFLAGS=-fpic
- SHOBJ_LD='${CC}'
- SHOBJ_LDFLAGS='-shared'
-
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
- ;;
-
-*)
- SHOBJ_STATUS=unsupported
- SHLIB_STATUS=unsupported
- ;;
-
-esac
-
-echo SHOBJ_CC=\'"$SHOBJ_CC"\'
-echo SHOBJ_CFLAGS=\'"$SHOBJ_CFLAGS"\'
-echo SHOBJ_LD=\'"$SHOBJ_LD"\'
-echo SHOBJ_LDFLAGS=\'"$SHOBJ_LDFLAGS"\'
-echo SHOBJ_XLDFLAGS=\'"$SHOBJ_XLDFLAGS"\'
-echo SHOBJ_LIBS=\'"$SHOBJ_LIBS"\'
-
-echo SHLIB_XLDFLAGS=\'"$SHLIB_XLDFLAGS"\'
-echo SHLIB_LIBS=\'"$SHLIB_LIBS"\'
-echo SHLIB_LIBSUFF=\'"$SHLIB_LIBSUFF"\'
-echo SHLIB_LIBVERSION=\'"$SHLIB_LIBVERSION"\'
-
-echo SHOBJ_STATUS=\'"$SHOBJ_STATUS"\'
-echo SHLIB_STATUS=\'"$SHLIB_STATUS"\'
-
-exit 0
diff --git a/readline-4.3.orig/support/wcwidth.c b/readline-4.3.orig/support/wcwidth.c
deleted file mode 100644
index ace9a3a..0000000
--- a/readline-4.3.orig/support/wcwidth.c
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
- * This is an implementation of wcwidth() and wcswidth() as defined in
- * "The Single UNIX Specification, Version 2, The Open Group, 1997"
- * <http://www.UNIX-systems.org/online.html>
- *
- * Markus Kuhn -- 2001-09-08 -- public domain
- */
-
-#include <wchar.h>
-
-struct interval {
- unsigned short first;
- unsigned short last;
-};
-
-/* auxiliary function for binary search in interval table */
-static int bisearch(wchar_t ucs, const struct interval *table, int max) {
- int min = 0;
- int mid;
-
- if (ucs < table[0].first || ucs > table[max].last)
- return 0;
- while (max >= min) {
- mid = (min + max) / 2;
- if (ucs > table[mid].last)
- min = mid + 1;
- else if (ucs < table[mid].first)
- max = mid - 1;
- else
- return 1;
- }
-
- return 0;
-}
-
-
-/* The following functions define the column width of an ISO 10646
- * character as follows:
- *
- * - The null character (U+0000) has a column width of 0.
- *
- * - Other C0/C1 control characters and DEL will lead to a return
- * value of -1.
- *
- * - Non-spacing and enclosing combining characters (general
- * category code Mn or Me in the Unicode database) have a
- * column width of 0.
- *
- * - Other format characters (general category code Cf in the Unicode
- * database) and ZERO WIDTH SPACE (U+200B) have a column width of 0.
- *
- * - Hangul Jamo medial vowels and final consonants (U+1160-U+11FF)
- * have a column width of 0.
- *
- * - Spacing characters in the East Asian Wide (W) or East Asian
- * FullWidth (F) category as defined in Unicode Technical
- * Report #11 have a column width of 2.
- *
- * - All remaining characters (including all printable
- * ISO 8859-1 and WGL4 characters, Unicode control characters,
- * etc.) have a column width of 1.
- *
- * This implementation assumes that wchar_t characters are encoded
- * in ISO 10646.
- */
-
-int wcwidth(wchar_t ucs)
-{
- /* sorted list of non-overlapping intervals of non-spacing characters */
- static const struct interval combining[] = {
- { 0x0300, 0x034E }, { 0x0360, 0x0362 }, { 0x0483, 0x0486 },
- { 0x0488, 0x0489 }, { 0x0591, 0x05A1 }, { 0x05A3, 0x05B9 },
- { 0x05BB, 0x05BD }, { 0x05BF, 0x05BF }, { 0x05C1, 0x05C2 },
- { 0x05C4, 0x05C4 }, { 0x064B, 0x0655 }, { 0x0670, 0x0670 },
- { 0x06D6, 0x06E4 }, { 0x06E7, 0x06E8 }, { 0x06EA, 0x06ED },
- { 0x070F, 0x070F }, { 0x0711, 0x0711 }, { 0x0730, 0x074A },
- { 0x07A6, 0x07B0 }, { 0x0901, 0x0902 }, { 0x093C, 0x093C },
- { 0x0941, 0x0948 }, { 0x094D, 0x094D }, { 0x0951, 0x0954 },
- { 0x0962, 0x0963 }, { 0x0981, 0x0981 }, { 0x09BC, 0x09BC },
- { 0x09C1, 0x09C4 }, { 0x09CD, 0x09CD }, { 0x09E2, 0x09E3 },
- { 0x0A02, 0x0A02 }, { 0x0A3C, 0x0A3C }, { 0x0A41, 0x0A42 },
- { 0x0A47, 0x0A48 }, { 0x0A4B, 0x0A4D }, { 0x0A70, 0x0A71 },
- { 0x0A81, 0x0A82 }, { 0x0ABC, 0x0ABC }, { 0x0AC1, 0x0AC5 },
- { 0x0AC7, 0x0AC8 }, { 0x0ACD, 0x0ACD }, { 0x0B01, 0x0B01 },
- { 0x0B3C, 0x0B3C }, { 0x0B3F, 0x0B3F }, { 0x0B41, 0x0B43 },
- { 0x0B4D, 0x0B4D }, { 0x0B56, 0x0B56 }, { 0x0B82, 0x0B82 },
- { 0x0BC0, 0x0BC0 }, { 0x0BCD, 0x0BCD }, { 0x0C3E, 0x0C40 },
- { 0x0C46, 0x0C48 }, { 0x0C4A, 0x0C4D }, { 0x0C55, 0x0C56 },
- { 0x0CBF, 0x0CBF }, { 0x0CC6, 0x0CC6 }, { 0x0CCC, 0x0CCD },
- { 0x0D41, 0x0D43 }, { 0x0D4D, 0x0D4D }, { 0x0DCA, 0x0DCA },
- { 0x0DD2, 0x0DD4 }, { 0x0DD6, 0x0DD6 }, { 0x0E31, 0x0E31 },
- { 0x0E34, 0x0E3A }, { 0x0E47, 0x0E4E }, { 0x0EB1, 0x0EB1 },
- { 0x0EB4, 0x0EB9 }, { 0x0EBB, 0x0EBC }, { 0x0EC8, 0x0ECD },
- { 0x0F18, 0x0F19 }, { 0x0F35, 0x0F35 }, { 0x0F37, 0x0F37 },
- { 0x0F39, 0x0F39 }, { 0x0F71, 0x0F7E }, { 0x0F80, 0x0F84 },
- { 0x0F86, 0x0F87 }, { 0x0F90, 0x0F97 }, { 0x0F99, 0x0FBC },
- { 0x0FC6, 0x0FC6 }, { 0x102D, 0x1030 }, { 0x1032, 0x1032 },
- { 0x1036, 0x1037 }, { 0x1039, 0x1039 }, { 0x1058, 0x1059 },
- { 0x1160, 0x11FF }, { 0x17B7, 0x17BD }, { 0x17C6, 0x17C6 },
- { 0x17C9, 0x17D3 }, { 0x180B, 0x180E }, { 0x18A9, 0x18A9 },
- { 0x200B, 0x200F }, { 0x202A, 0x202E }, { 0x206A, 0x206F },
- { 0x20D0, 0x20E3 }, { 0x302A, 0x302F }, { 0x3099, 0x309A },
- { 0xFB1E, 0xFB1E }, { 0xFE20, 0xFE23 }, { 0xFEFF, 0xFEFF },
- { 0xFFF9, 0xFFFB }
- };
-
- /* test for 8-bit control characters */
- if (ucs == 0)
- return 0;
- if (ucs < 32 || (ucs >= 0x7f && ucs < 0xa0))
- return -1;
-
- /* binary search in table of non-spacing characters */
- if (bisearch(ucs, combining,
- sizeof(combining) / sizeof(struct interval) - 1))
- return 0;
-
- /* if we arrive here, ucs is not a combining or C0/C1 control character */
-
- return 1 +
- (ucs >= 0x1100 &&
- (ucs <= 0x115f || /* Hangul Jamo init. consonants */
- (ucs >= 0x2e80 && ucs <= 0xa4cf && (ucs & ~0x0011) != 0x300a &&
- ucs != 0x303f) || /* CJK ... Yi */
- (ucs >= 0xac00 && ucs <= 0xd7a3) || /* Hangul Syllables */
- (ucs >= 0xf900 && ucs <= 0xfaff) || /* CJK Compatibility Ideographs */
- (ucs >= 0xfe30 && ucs <= 0xfe6f) || /* CJK Compatibility Forms */
- (ucs >= 0xff00 && ucs <= 0xff5f) || /* Fullwidth Forms */
- (ucs >= 0xffe0 && ucs <= 0xffe6) ||
- (ucs >= 0x20000 && ucs <= 0x2ffff)));
-}
-
-
-int wcswidth(const wchar_t *pwcs, size_t n)
-{
- int w, width = 0;
-
- for (;*pwcs && n-- > 0; pwcs++)
- if ((w = wcwidth(*pwcs)) < 0)
- return -1;
- else
- width += w;
-
- return width;
-}
-
-
-/*
- * The following function is the same as wcwidth(), except that
- * spacing characters in the East Asian Ambiguous (A) category as
- * defined in Unicode Technical Report #11 have a column width of 2.
- * This experimental variant might be useful for users of CJK legacy
- * encodings who want to migrate to UCS. It is not otherwise
- * recommended for general use.
- */
-static int wcwidth_cjk(wchar_t ucs)
-{
- /* sorted list of non-overlapping intervals of East Asian Ambiguous
- * characters */
- static const struct interval ambiguous[] = {
- { 0x00A1, 0x00A1 }, { 0x00A4, 0x00A4 }, { 0x00A7, 0x00A8 },
- { 0x00AA, 0x00AA }, { 0x00AD, 0x00AE }, { 0x00B0, 0x00B4 },
- { 0x00B6, 0x00BA }, { 0x00BC, 0x00BF }, { 0x00C6, 0x00C6 },
- { 0x00D0, 0x00D0 }, { 0x00D7, 0x00D8 }, { 0x00DE, 0x00E1 },
- { 0x00E6, 0x00E6 }, { 0x00E8, 0x00EA }, { 0x00EC, 0x00ED },
- { 0x00F0, 0x00F0 }, { 0x00F2, 0x00F3 }, { 0x00F7, 0x00FA },
- { 0x00FC, 0x00FC }, { 0x00FE, 0x00FE }, { 0x0101, 0x0101 },
- { 0x0111, 0x0111 }, { 0x0113, 0x0113 }, { 0x011B, 0x011B },
- { 0x0126, 0x0127 }, { 0x012B, 0x012B }, { 0x0131, 0x0133 },
- { 0x0138, 0x0138 }, { 0x013F, 0x0142 }, { 0x0144, 0x0144 },
- { 0x0148, 0x014B }, { 0x014D, 0x014D }, { 0x0152, 0x0153 },
- { 0x0166, 0x0167 }, { 0x016B, 0x016B }, { 0x01CE, 0x01CE },
- { 0x01D0, 0x01D0 }, { 0x01D2, 0x01D2 }, { 0x01D4, 0x01D4 },
- { 0x01D6, 0x01D6 }, { 0x01D8, 0x01D8 }, { 0x01DA, 0x01DA },
- { 0x01DC, 0x01DC }, { 0x0251, 0x0251 }, { 0x0261, 0x0261 },
- { 0x02C4, 0x02C4 }, { 0x02C7, 0x02C7 }, { 0x02C9, 0x02CB },
- { 0x02CD, 0x02CD }, { 0x02D0, 0x02D0 }, { 0x02D8, 0x02DB },
- { 0x02DD, 0x02DD }, { 0x02DF, 0x02DF }, { 0x0300, 0x034E },
- { 0x0360, 0x0362 }, { 0x0391, 0x03A1 }, { 0x03A3, 0x03A9 },
- { 0x03B1, 0x03C1 }, { 0x03C3, 0x03C9 }, { 0x0401, 0x0401 },
- { 0x0410, 0x044F }, { 0x0451, 0x0451 }, { 0x2010, 0x2010 },
- { 0x2013, 0x2016 }, { 0x2018, 0x2019 }, { 0x201C, 0x201D },
- { 0x2020, 0x2022 }, { 0x2024, 0x2027 }, { 0x2030, 0x2030 },
- { 0x2032, 0x2033 }, { 0x2035, 0x2035 }, { 0x203B, 0x203B },
- { 0x203E, 0x203E }, { 0x2074, 0x2074 }, { 0x207F, 0x207F },
- { 0x2081, 0x2084 }, { 0x20AC, 0x20AC }, { 0x2103, 0x2103 },
- { 0x2105, 0x2105 }, { 0x2109, 0x2109 }, { 0x2113, 0x2113 },
- { 0x2116, 0x2116 }, { 0x2121, 0x2122 }, { 0x2126, 0x2126 },
- { 0x212B, 0x212B }, { 0x2153, 0x2155 }, { 0x215B, 0x215E },
- { 0x2160, 0x216B }, { 0x2170, 0x2179 }, { 0x2190, 0x2199 },
- { 0x21B8, 0x21B9 }, { 0x21D2, 0x21D2 }, { 0x21D4, 0x21D4 },
- { 0x21E7, 0x21E7 }, { 0x2200, 0x2200 }, { 0x2202, 0x2203 },
- { 0x2207, 0x2208 }, { 0x220B, 0x220B }, { 0x220F, 0x220F },
- { 0x2211, 0x2211 }, { 0x2215, 0x2215 }, { 0x221A, 0x221A },
- { 0x221D, 0x2220 }, { 0x2223, 0x2223 }, { 0x2225, 0x2225 },
- { 0x2227, 0x222C }, { 0x222E, 0x222E }, { 0x2234, 0x2237 },
- { 0x223C, 0x223D }, { 0x2248, 0x2248 }, { 0x224C, 0x224C },
- { 0x2252, 0x2252 }, { 0x2260, 0x2261 }, { 0x2264, 0x2267 },
- { 0x226A, 0x226B }, { 0x226E, 0x226F }, { 0x2282, 0x2283 },
- { 0x2286, 0x2287 }, { 0x2295, 0x2295 }, { 0x2299, 0x2299 },
- { 0x22A5, 0x22A5 }, { 0x22BF, 0x22BF }, { 0x2312, 0x2312 },
- { 0x2329, 0x232A }, { 0x2460, 0x24BF }, { 0x24D0, 0x24E9 },
- { 0x2500, 0x254B }, { 0x2550, 0x2574 }, { 0x2580, 0x258F },
- { 0x2592, 0x2595 }, { 0x25A0, 0x25A1 }, { 0x25A3, 0x25A9 },
- { 0x25B2, 0x25B3 }, { 0x25B6, 0x25B7 }, { 0x25BC, 0x25BD },
- { 0x25C0, 0x25C1 }, { 0x25C6, 0x25C8 }, { 0x25CB, 0x25CB },
- { 0x25CE, 0x25D1 }, { 0x25E2, 0x25E5 }, { 0x25EF, 0x25EF },
- { 0x2605, 0x2606 }, { 0x2609, 0x2609 }, { 0x260E, 0x260F },
- { 0x261C, 0x261C }, { 0x261E, 0x261E }, { 0x2640, 0x2640 },
- { 0x2642, 0x2642 }, { 0x2660, 0x2661 }, { 0x2663, 0x2665 },
- { 0x2667, 0x266A }, { 0x266C, 0x266D }, { 0x266F, 0x266F },
- { 0x273D, 0x273D }, { 0x3008, 0x300B }, { 0x3014, 0x3015 },
- { 0x3018, 0x301B }, { 0xFFFD, 0xFFFD }
- };
-
- /* binary search in table of non-spacing characters */
- if (bisearch(ucs, ambiguous,
- sizeof(ambiguous) / sizeof(struct interval) - 1))
- return 2;
-
- return wcwidth(ucs);
-}
-
-
-int wcswidth_cjk(const wchar_t *pwcs, size_t n)
-{
- int w, width = 0;
-
- for (;*pwcs && n-- > 0; pwcs++)
- if ((w = wcwidth_cjk(*pwcs)) < 0)
- return -1;
- else
- width += w;
-
- return width;
-}
diff --git a/readline-4.3.orig/tcap.h b/readline-4.3.orig/tcap.h
deleted file mode 100644
index 58ab894..0000000
--- a/readline-4.3.orig/tcap.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/* tcap.h -- termcap library functions and variables. */
-
-/* Copyright (C) 1996 Free Software Foundation, Inc.
-
- This file contains the Readline Library (the Library), a set of
- routines for providing Emacs style line input to programs that ask
- for it.
-
- The Library is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- The Library is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if !defined (_RLTCAP_H_)
-#define _RLTCAP_H_
-
-#if defined (HAVE_CONFIG_H)
-# include "config.h"
-#endif
-
-#if defined (HAVE_TERMCAP_H)
-# if defined (__linux__) && !defined (SPEED_T_IN_SYS_TYPES)
-# include "rltty.h"
-# endif
-# include <termcap.h>
-#else
-
-/* On Solaris2, sys/types.h #includes sys/reg.h, which #defines PC.
- Unfortunately, PC is a global variable used by the termcap library. */
-#ifdef PC
-# undef PC
-#endif
-
-extern char PC;
-extern char *UP, *BC;
-
-extern short ospeed;
-
-extern int tgetent ();
-extern int tgetflag ();
-extern int tgetnum ();
-extern char *tgetstr ();
-
-extern int tputs ();
-
-extern char *tgoto ();
-
-#endif /* HAVE_TERMCAP_H */
-
-#endif /* !_RLTCAP_H_ */
diff --git a/readline-4.3.orig/terminal.c b/readline-4.3.orig/terminal.c
deleted file mode 100644
index f3f5b6c..0000000
--- a/readline-4.3.orig/terminal.c
+++ /dev/null
@@ -1,662 +0,0 @@
-/* terminal.c -- controlling the terminal with termcap. */
-
-/* Copyright (C) 1996 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <sys/types.h>
-#include "posixstat.h"
-#include <fcntl.h>
-#if defined (HAVE_SYS_FILE_H)
-# include <sys/file.h>
-#endif /* HAVE_SYS_FILE_H */
-
-#if defined (HAVE_UNISTD_H)
-# include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#if defined (HAVE_LOCALE_H)
-# include <locale.h>
-#endif
-
-#include <stdio.h>
-
-/* System-specific feature definitions and include files. */
-#include "rldefs.h"
-
-#if defined (GWINSZ_IN_SYS_IOCTL) && !defined (TIOCGWINSZ)
-# include <sys/ioctl.h>
-#endif /* GWINSZ_IN_SYS_IOCTL && !TIOCGWINSZ */
-
-#include "rltty.h"
-#include "tcap.h"
-
-/* Some standard library routines. */
-#include "readline.h"
-#include "history.h"
-
-#include "rlprivate.h"
-#include "rlshell.h"
-#include "xmalloc.h"
-
-#define CUSTOM_REDISPLAY_FUNC() (rl_redisplay_function != rl_redisplay)
-#define CUSTOM_INPUT_FUNC() (rl_getc_function != rl_getc)
-
-/* **************************************************************** */
-/* */
-/* Terminal and Termcap */
-/* */
-/* **************************************************************** */
-
-static char *term_buffer = (char *)NULL;
-static char *term_string_buffer = (char *)NULL;
-
-static int tcap_initialized;
-
-#if !defined (__linux__)
-# if defined (__EMX__) || defined (NEED_EXTERN_PC)
-extern
-# endif /* __EMX__ || NEED_EXTERN_PC */
-char PC, *BC, *UP;
-#endif /* __linux__ */
-
-/* Some strings to control terminal actions. These are output by tputs (). */
-char *_rl_term_clreol;
-char *_rl_term_clrpag;
-char *_rl_term_cr;
-char *_rl_term_backspace;
-char *_rl_term_goto;
-char *_rl_term_pc;
-
-/* Non-zero if we determine that the terminal can do character insertion. */
-int _rl_terminal_can_insert = 0;
-
-/* How to insert characters. */
-char *_rl_term_im;
-char *_rl_term_ei;
-char *_rl_term_ic;
-char *_rl_term_ip;
-char *_rl_term_IC;
-
-/* How to delete characters. */
-char *_rl_term_dc;
-char *_rl_term_DC;
-
-#if defined (HACK_TERMCAP_MOTION)
-char *_rl_term_forward_char;
-#endif /* HACK_TERMCAP_MOTION */
-
-/* How to go up a line. */
-char *_rl_term_up;
-
-/* A visible bell; char if the terminal can be made to flash the screen. */
-static char *_rl_visible_bell;
-
-/* Non-zero means the terminal can auto-wrap lines. */
-int _rl_term_autowrap;
-
-/* Non-zero means that this terminal has a meta key. */
-static int term_has_meta;
-
-/* The sequences to write to turn on and off the meta key, if this
- terminal has one. */
-static char *_rl_term_mm;
-static char *_rl_term_mo;
-
-/* The key sequences output by the arrow keys, if this terminal has any. */
-static char *_rl_term_ku;
-static char *_rl_term_kd;
-static char *_rl_term_kr;
-static char *_rl_term_kl;
-
-/* How to initialize and reset the arrow keys, if this terminal has any. */
-static char *_rl_term_ks;
-static char *_rl_term_ke;
-
-/* The key sequences sent by the Home and End keys, if any. */
-static char *_rl_term_kh;
-static char *_rl_term_kH;
-static char *_rl_term_at7; /* @7 */
-
-/* Insert key */
-static char *_rl_term_kI;
-
-/* Cursor control */
-static char *_rl_term_vs; /* very visible */
-static char *_rl_term_ve; /* normal */
-
-static void bind_termcap_arrow_keys PARAMS((Keymap));
-
-/* Variables that hold the screen dimensions, used by the display code. */
-int _rl_screenwidth, _rl_screenheight, _rl_screenchars;
-
-/* Non-zero means the user wants to enable the keypad. */
-int _rl_enable_keypad;
-
-/* Non-zero means the user wants to enable a meta key. */
-int _rl_enable_meta = 1;
-
-#if defined (__EMX__)
-static void
-_emx_get_screensize (swp, shp)
- int *swp, *shp;
-{
- int sz[2];
-
- _scrsize (sz);
-
- if (swp)
- *swp = sz[0];
- if (shp)
- *shp = sz[1];
-}
-#endif
-
-/* Get readline's idea of the screen size. TTY is a file descriptor open
- to the terminal. If IGNORE_ENV is true, we do not pay attention to the
- values of $LINES and $COLUMNS. The tests for TERM_STRING_BUFFER being
- non-null serve to check whether or not we have initialized termcap. */
-void
-_rl_get_screen_size (tty, ignore_env)
- int tty, ignore_env;
-{
- char *ss;
-#if defined (TIOCGWINSZ)
- struct winsize window_size;
-#endif /* TIOCGWINSZ */
-
-#if defined (TIOCGWINSZ)
- if (ioctl (tty, TIOCGWINSZ, &window_size) == 0)
- {
- _rl_screenwidth = (int) window_size.ws_col;
- _rl_screenheight = (int) window_size.ws_row;
- }
-#endif /* TIOCGWINSZ */
-
-#if defined (__EMX__)
- _emx_get_screensize (&_rl_screenwidth, &_rl_screenheight);
-#endif
-
- /* Environment variable COLUMNS overrides setting of "co" if IGNORE_ENV
- is unset. */
- if (_rl_screenwidth <= 0)
- {
- if (ignore_env == 0 && (ss = sh_get_env_value ("COLUMNS")))
- _rl_screenwidth = atoi (ss);
-
-#if !defined (__DJGPP__)
- if (_rl_screenwidth <= 0 && term_string_buffer)
- _rl_screenwidth = tgetnum ("co");
-#endif
- }
-
- /* Environment variable LINES overrides setting of "li" if IGNORE_ENV
- is unset. */
- if (_rl_screenheight <= 0)
- {
- if (ignore_env == 0 && (ss = sh_get_env_value ("LINES")))
- _rl_screenheight = atoi (ss);
-
-#if !defined (__DJGPP__)
- if (_rl_screenheight <= 0 && term_string_buffer)
- _rl_screenheight = tgetnum ("li");
-#endif
- }
-
- /* If all else fails, default to 80x24 terminal. */
- if (_rl_screenwidth <= 1)
- _rl_screenwidth = 80;
-
- if (_rl_screenheight <= 0)
- _rl_screenheight = 24;
-
- /* If we're being compiled as part of bash, set the environment
- variables $LINES and $COLUMNS to new values. Otherwise, just
- do a pair of putenv () or setenv () calls. */
- sh_set_lines_and_columns (_rl_screenheight, _rl_screenwidth);
-
- if (_rl_term_autowrap == 0)
- _rl_screenwidth--;
-
- _rl_screenchars = _rl_screenwidth * _rl_screenheight;
-}
-
-void
-_rl_set_screen_size (rows, cols)
- int rows, cols;
-{
- if (rows == 0 || cols == 0)
- return;
-
- _rl_screenheight = rows;
- _rl_screenwidth = cols;
-
- if (_rl_term_autowrap == 0)
- _rl_screenwidth--;
-
- _rl_screenchars = _rl_screenwidth * _rl_screenheight;
-}
-
-void
-rl_set_screen_size (rows, cols)
- int rows, cols;
-{
- _rl_set_screen_size (rows, cols);
-}
-
-void
-rl_get_screen_size (rows, cols)
- int *rows, *cols;
-{
- if (rows)
- *rows = _rl_screenheight;
- if (cols)
- *cols = _rl_screenwidth;
-}
-
-void
-rl_resize_terminal ()
-{
- if (readline_echoing_p)
- {
- _rl_get_screen_size (fileno (rl_instream), 1);
- if (CUSTOM_REDISPLAY_FUNC ())
- rl_forced_update_display ();
- else
- _rl_redisplay_after_sigwinch ();
- }
-}
-
-struct _tc_string {
- const char *tc_var;
- char **tc_value;
-};
-
-/* This should be kept sorted, just in case we decide to change the
- search algorithm to something smarter. */
-static struct _tc_string tc_strings[] =
-{
- { "@7", &_rl_term_at7 },
- { "DC", &_rl_term_DC },
- { "IC", &_rl_term_IC },
- { "ce", &_rl_term_clreol },
- { "cl", &_rl_term_clrpag },
- { "cr", &_rl_term_cr },
- { "dc", &_rl_term_dc },
- { "ei", &_rl_term_ei },
- { "ic", &_rl_term_ic },
- { "im", &_rl_term_im },
- { "kH", &_rl_term_kH }, /* home down ?? */
- { "kI", &_rl_term_kI }, /* insert */
- { "kd", &_rl_term_kd },
- { "ke", &_rl_term_ke }, /* end keypad mode */
- { "kh", &_rl_term_kh }, /* home */
- { "kl", &_rl_term_kl },
- { "kr", &_rl_term_kr },
- { "ks", &_rl_term_ks }, /* start keypad mode */
- { "ku", &_rl_term_ku },
- { "le", &_rl_term_backspace },
- { "mm", &_rl_term_mm },
- { "mo", &_rl_term_mo },
-#if defined (HACK_TERMCAP_MOTION)
- { "nd", &_rl_term_forward_char },
-#endif
- { "pc", &_rl_term_pc },
- { "up", &_rl_term_up },
- { "vb", &_rl_visible_bell },
- { "vs", &_rl_term_vs },
- { "ve", &_rl_term_ve },
-};
-
-#define NUM_TC_STRINGS (sizeof (tc_strings) / sizeof (struct _tc_string))
-
-/* Read the desired terminal capability strings into BP. The capabilities
- are described in the TC_STRINGS table. */
-static void
-get_term_capabilities (bp)
- char **bp;
-{
-#if !defined (__DJGPP__) /* XXX - doesn't DJGPP have a termcap library? */
- register int i;
-
- for (i = 0; i < NUM_TC_STRINGS; i++)
-# ifdef __LCC__
- *(tc_strings[i].tc_value) = tgetstr ((char *)tc_strings[i].tc_var, bp);
-# else
- *(tc_strings[i].tc_value) = tgetstr (tc_strings[i].tc_var, bp);
-# endif
-#endif
- tcap_initialized = 1;
-}
-
-int
-_rl_init_terminal_io (terminal_name)
- const char *terminal_name;
-{
- const char *term;
- char *buffer;
- int tty, tgetent_ret;
-
- term = terminal_name ? terminal_name : sh_get_env_value ("TERM");
- _rl_term_clrpag = _rl_term_cr = _rl_term_clreol = (char *)NULL;
- tty = rl_instream ? fileno (rl_instream) : 0;
- _rl_screenwidth = _rl_screenheight = 0;
-
- if (term == 0)
- term = "dumb";
-
- /* I've separated this out for later work on not calling tgetent at all
- if the calling application has supplied a custom redisplay function,
- (and possibly if the application has supplied a custom input function). */
- if (CUSTOM_REDISPLAY_FUNC())
- {
- tgetent_ret = -1;
- }
- else
- {
- if (term_string_buffer == 0)
- term_string_buffer = (char *)xmalloc(2032);
-
- if (term_buffer == 0)
- term_buffer = (char *)xmalloc(4080);
-
- buffer = term_string_buffer;
-
- tgetent_ret = tgetent (term_buffer, term);
- }
-
- if (tgetent_ret <= 0)
- {
- FREE (term_string_buffer);
- FREE (term_buffer);
- buffer = term_buffer = term_string_buffer = (char *)NULL;
-
- _rl_term_autowrap = 0; /* used by _rl_get_screen_size */
-
-#if defined (__EMX__)
- _emx_get_screensize (&_rl_screenwidth, &_rl_screenheight);
- _rl_screenwidth--;
-#else /* !__EMX__ */
- _rl_get_screen_size (tty, 0);
-#endif /* !__EMX__ */
-
- /* Defaults. */
- if (_rl_screenwidth <= 0 || _rl_screenheight <= 0)
- {
- _rl_screenwidth = 79;
- _rl_screenheight = 24;
- }
-
- /* Everything below here is used by the redisplay code (tputs). */
- _rl_screenchars = _rl_screenwidth * _rl_screenheight;
- _rl_term_cr = "\r";
- _rl_term_im = _rl_term_ei = _rl_term_ic = _rl_term_IC = (char *)NULL;
- _rl_term_up = _rl_term_dc = _rl_term_DC = _rl_visible_bell = (char *)NULL;
- _rl_term_ku = _rl_term_kd = _rl_term_kl = _rl_term_kr = (char *)NULL;
- _rl_term_kh = _rl_term_kH = _rl_term_kI = (char *)NULL;
- _rl_term_ks = _rl_term_ke = _rl_term_at7 = (char *)NULL;
- _rl_term_mm = _rl_term_mo = (char *)NULL;
- _rl_term_ve = _rl_term_vs = (char *)NULL;
-#if defined (HACK_TERMCAP_MOTION)
- term_forward_char = (char *)NULL;
-#endif
- _rl_terminal_can_insert = term_has_meta = 0;
-
- /* Reasonable defaults for tgoto(). Readline currently only uses
- tgoto if _rl_term_IC or _rl_term_DC is defined, but just in case we
- change that later... */
- PC = '\0';
- BC = _rl_term_backspace = "\b";
- UP = _rl_term_up;
-
- return 0;
- }
-
- get_term_capabilities (&buffer);
-
- /* Set up the variables that the termcap library expects the application
- to provide. */
- PC = _rl_term_pc ? *_rl_term_pc : 0;
- BC = _rl_term_backspace;
- UP = _rl_term_up;
-
- if (!_rl_term_cr)
- _rl_term_cr = "\r";
-
- _rl_term_autowrap = tgetflag ("am") && tgetflag ("xn");
-
- _rl_get_screen_size (tty, 0);
-
- /* "An application program can assume that the terminal can do
- character insertion if *any one of* the capabilities `IC',
- `im', `ic' or `ip' is provided." But we can't do anything if
- only `ip' is provided, so... */
- _rl_terminal_can_insert = (_rl_term_IC || _rl_term_im || _rl_term_ic);
-
- /* Check to see if this terminal has a meta key and clear the capability
- variables if there is none. */
- term_has_meta = (tgetflag ("km") || tgetflag ("MT"));
- if (!term_has_meta)
- _rl_term_mm = _rl_term_mo = (char *)NULL;
-
- /* Attempt to find and bind the arrow keys. Do not override already
- bound keys in an overzealous attempt, however. */
-
- bind_termcap_arrow_keys (emacs_standard_keymap);
-
-#if defined (VI_MODE)
- bind_termcap_arrow_keys (vi_movement_keymap);
- bind_termcap_arrow_keys (vi_insertion_keymap);
-#endif /* VI_MODE */
-
- return 0;
-}
-
-/* Bind the arrow key sequences from the termcap description in MAP. */
-static void
-bind_termcap_arrow_keys (map)
- Keymap map;
-{
- Keymap xkeymap;
-
- xkeymap = _rl_keymap;
- _rl_keymap = map;
-
- _rl_bind_if_unbound (_rl_term_ku, rl_get_previous_history);
- _rl_bind_if_unbound (_rl_term_kd, rl_get_next_history);
- _rl_bind_if_unbound (_rl_term_kr, rl_forward);
- _rl_bind_if_unbound (_rl_term_kl, rl_backward);
-
- _rl_bind_if_unbound (_rl_term_kh, rl_beg_of_line); /* Home */
- _rl_bind_if_unbound (_rl_term_at7, rl_end_of_line); /* End */
-
- _rl_keymap = xkeymap;
-}
-
-char *
-rl_get_termcap (cap)
- const char *cap;
-{
- register int i;
-
- if (tcap_initialized == 0)
- return ((char *)NULL);
- for (i = 0; i < NUM_TC_STRINGS; i++)
- {
- if (tc_strings[i].tc_var[0] == cap[0] && strcmp (tc_strings[i].tc_var, cap) == 0)
- return *(tc_strings[i].tc_value);
- }
- return ((char *)NULL);
-}
-
-/* Re-initialize the terminal considering that the TERM/TERMCAP variable
- has changed. */
-int
-rl_reset_terminal (terminal_name)
- const char *terminal_name;
-{
- _rl_init_terminal_io (terminal_name);
- return 0;
-}
-
-/* A function for the use of tputs () */
-#ifdef _MINIX
-void
-_rl_output_character_function (c)
- int c;
-{
- putc (c, _rl_out_stream);
-}
-#else /* !_MINIX */
-int
-_rl_output_character_function (c)
- int c;
-{
- return putc (c, _rl_out_stream);
-}
-#endif /* !_MINIX */
-
-/* Write COUNT characters from STRING to the output stream. */
-void
-_rl_output_some_chars (string, count)
- const char *string;
- int count;
-{
- fwrite (string, 1, count, _rl_out_stream);
-}
-
-/* Move the cursor back. */
-int
-_rl_backspace (count)
- int count;
-{
- register int i;
-
- if (_rl_term_backspace)
- for (i = 0; i < count; i++)
- tputs (_rl_term_backspace, 1, _rl_output_character_function);
- else
- for (i = 0; i < count; i++)
- putc ('\b', _rl_out_stream);
- return 0;
-}
-
-/* Move to the start of the next line. */
-int
-rl_crlf ()
-{
-#if defined (NEW_TTY_DRIVER)
- if (_rl_term_cr)
- tputs (_rl_term_cr, 1, _rl_output_character_function);
-#endif /* NEW_TTY_DRIVER */
- putc ('\n', _rl_out_stream);
- return 0;
-}
-
-/* Ring the terminal bell. */
-int
-rl_ding ()
-{
- if (readline_echoing_p)
- {
- switch (_rl_bell_preference)
- {
- case NO_BELL:
- default:
- break;
- case VISIBLE_BELL:
- if (_rl_visible_bell)
- {
- tputs (_rl_visible_bell, 1, _rl_output_character_function);
- break;
- }
- /* FALLTHROUGH */
- case AUDIBLE_BELL:
- fprintf (stderr, "\007");
- fflush (stderr);
- break;
- }
- return (0);
- }
- return (-1);
-}
-
-/* **************************************************************** */
-/* */
-/* Controlling the Meta Key and Keypad */
-/* */
-/* **************************************************************** */
-
-void
-_rl_enable_meta_key ()
-{
-#if !defined (__DJGPP__)
- if (term_has_meta && _rl_term_mm)
- tputs (_rl_term_mm, 1, _rl_output_character_function);
-#endif
-}
-
-void
-_rl_control_keypad (on)
- int on;
-{
-#if !defined (__DJGPP__)
- if (on && _rl_term_ks)
- tputs (_rl_term_ks, 1, _rl_output_character_function);
- else if (!on && _rl_term_ke)
- tputs (_rl_term_ke, 1, _rl_output_character_function);
-#endif
-}
-
-/* **************************************************************** */
-/* */
-/* Controlling the Cursor */
-/* */
-/* **************************************************************** */
-
-/* Set the cursor appropriately depending on IM, which is one of the
- insert modes (insert or overwrite). Insert mode gets the normal
- cursor. Overwrite mode gets a very visible cursor. Only does
- anything if we have both capabilities. */
-void
-_rl_set_cursor (im, force)
- int im, force;
-{
- if (_rl_term_ve && _rl_term_vs)
- {
- if (force || im != rl_insert_mode)
- {
- if (im == RL_IM_OVERWRITE)
- tputs (_rl_term_vs, 1, _rl_output_character_function);
- else
- tputs (_rl_term_ve, 1, _rl_output_character_function);
- }
- }
-}
diff --git a/readline-4.3.orig/text.c b/readline-4.3.orig/text.c
deleted file mode 100644
index 2a7b724..0000000
--- a/readline-4.3.orig/text.c
+++ /dev/null
@@ -1,1540 +0,0 @@
-/* text.c -- text handling commands for readline. */
-
-/* Copyright (C) 1987-2002 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#if defined (HAVE_UNISTD_H)
-# include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#if defined (HAVE_LOCALE_H)
-# include <locale.h>
-#endif
-
-#include <stdio.h>
-
-/* System-specific feature definitions and include files. */
-#include "rldefs.h"
-#include "rlmbutil.h"
-
-#if defined (__EMX__)
-# define INCL_DOSPROCESS
-# include <os2.h>
-#endif /* __EMX__ */
-
-/* Some standard library routines. */
-#include "readline.h"
-#include "history.h"
-
-#include "rlprivate.h"
-#include "rlshell.h"
-#include "xmalloc.h"
-
-/* Forward declarations. */
-static int rl_change_case PARAMS((int, int));
-static int _rl_char_search PARAMS((int, int, int));
-
-/* **************************************************************** */
-/* */
-/* Insert and Delete */
-/* */
-/* **************************************************************** */
-
-/* Insert a string of text into the line at point. This is the only
- way that you should do insertion. _rl_insert_char () calls this
- function. Returns the number of characters inserted. */
-int
-rl_insert_text (string)
- const char *string;
-{
- register int i, l;
-
- l = (string && *string) ? strlen (string) : 0;
- if (l == 0)
- return 0;
-
- if (rl_end + l >= rl_line_buffer_len)
- rl_extend_line_buffer (rl_end + l);
-
- for (i = rl_end; i >= rl_point; i--)
- rl_line_buffer[i + l] = rl_line_buffer[i];
- strncpy (rl_line_buffer + rl_point, string, l);
-
- /* Remember how to undo this if we aren't undoing something. */
- if (_rl_doing_an_undo == 0)
- {
- /* If possible and desirable, concatenate the undos. */
- if ((l == 1) &&
- rl_undo_list &&
- (rl_undo_list->what == UNDO_INSERT) &&
- (rl_undo_list->end == rl_point) &&
- (rl_undo_list->end - rl_undo_list->start < 20))
- rl_undo_list->end++;
- else
- rl_add_undo (UNDO_INSERT, rl_point, rl_point + l, (char *)NULL);
- }
- rl_point += l;
- rl_end += l;
- rl_line_buffer[rl_end] = '\0';
- return l;
-}
-
-/* Delete the string between FROM and TO. FROM is inclusive, TO is not.
- Returns the number of characters deleted. */
-int
-rl_delete_text (from, to)
- int from, to;
-{
- register char *text;
- register int diff, i;
-
- /* Fix it if the caller is confused. */
- if (from > to)
- SWAP (from, to);
-
- /* fix boundaries */
- if (to > rl_end)
- {
- to = rl_end;
- if (from > to)
- from = to;
- }
- if (from < 0)
- from = 0;
-
- text = rl_copy_text (from, to);
-
- /* Some versions of strncpy() can't handle overlapping arguments. */
- diff = to - from;
- for (i = from; i < rl_end - diff; i++)
- rl_line_buffer[i] = rl_line_buffer[i + diff];
-
- /* Remember how to undo this delete. */
- if (_rl_doing_an_undo == 0)
- rl_add_undo (UNDO_DELETE, from, to, text);
- else
- free (text);
-
- rl_end -= diff;
- rl_line_buffer[rl_end] = '\0';
- return (diff);
-}
-
-/* Fix up point so that it is within the line boundaries after killing
- text. If FIX_MARK_TOO is non-zero, the mark is forced within line
- boundaries also. */
-
-#define _RL_FIX_POINT(x) \
- do { \
- if (x > rl_end) \
- x = rl_end; \
- else if (x < 0) \
- x = 0; \
- } while (0)
-
-void
-_rl_fix_point (fix_mark_too)
- int fix_mark_too;
-{
- _RL_FIX_POINT (rl_point);
- if (fix_mark_too)
- _RL_FIX_POINT (rl_mark);
-}
-#undef _RL_FIX_POINT
-
-int
-_rl_replace_text (text, start, end)
- const char *text;
- int start, end;
-{
- int n;
-
- rl_begin_undo_group ();
- rl_delete_text (start, end + 1);
- rl_point = start;
- n = rl_insert_text (text);
- rl_end_undo_group ();
-
- return n;
-}
-
-/* Replace the current line buffer contents with TEXT. If CLEAR_UNDO is
- non-zero, we free the current undo list. */
-void
-rl_replace_line (text, clear_undo)
- const char *text;
- int clear_undo;
-{
- int len;
-
- len = strlen (text);
- if (len >= rl_line_buffer_len)
- rl_extend_line_buffer (len);
- strcpy (rl_line_buffer, text);
- rl_end = len;
-
- if (clear_undo)
- rl_free_undo_list ();
-
- _rl_fix_point (1);
-}
-
-/* **************************************************************** */
-/* */
-/* Readline character functions */
-/* */
-/* **************************************************************** */
-
-/* This is not a gap editor, just a stupid line input routine. No hair
- is involved in writing any of the functions, and none should be. */
-
-/* Note that:
-
- rl_end is the place in the string that we would place '\0';
- i.e., it is always safe to place '\0' there.
-
- rl_point is the place in the string where the cursor is. Sometimes
- this is the same as rl_end.
-
- Any command that is called interactively receives two arguments.
- The first is a count: the numeric arg pased to this command.
- The second is the key which invoked this command.
-*/
-
-/* **************************************************************** */
-/* */
-/* Movement Commands */
-/* */
-/* **************************************************************** */
-
-/* Note that if you `optimize' the display for these functions, you cannot
- use said functions in other functions which do not do optimizing display.
- I.e., you will have to update the data base for rl_redisplay, and you
- might as well let rl_redisplay do that job. */
-
-/* Move forward COUNT bytes. */
-int
-rl_forward_byte (count, key)
- int count, key;
-{
- if (count < 0)
- return (rl_backward_byte (-count, key));
-
- if (count > 0)
- {
- int end = rl_point + count;
-#if defined (VI_MODE)
- int lend = rl_end > 0 ? rl_end - (rl_editing_mode == vi_mode) : rl_end;
-#else
- int lend = rl_end;
-#endif
-
- if (end > lend)
- {
- rl_point = lend;
- rl_ding ();
- }
- else
- rl_point = end;
- }
-
- if (rl_end < 0)
- rl_end = 0;
-
- return 0;
-}
-
-#if defined (HANDLE_MULTIBYTE)
-/* Move forward COUNT characters. */
-int
-rl_forward_char (count, key)
- int count, key;
-{
- int point;
-
- if (MB_CUR_MAX == 1 || rl_byte_oriented)
- return (rl_forward_byte (count, key));
-
- if (count < 0)
- return (rl_backward_char (-count, key));
-
- if (count > 0)
- {
- point = _rl_find_next_mbchar (rl_line_buffer, rl_point, count, MB_FIND_NONZERO);
-
-#if defined (VI_MODE)
- if (rl_end <= point && rl_editing_mode == vi_mode)
- point = _rl_find_prev_mbchar (rl_line_buffer, rl_end, MB_FIND_NONZERO);
-#endif
-
- if (rl_point == point)
- rl_ding ();
-
- rl_point = point;
-
- if (rl_end < 0)
- rl_end = 0;
- }
-
- return 0;
-}
-#else /* !HANDLE_MULTIBYTE */
-int
-rl_forward_char (count, key)
- int count, key;
-{
- return (rl_forward_byte (count, key));
-}
-#endif /* !HANDLE_MULTIBYTE */
-
-/* Backwards compatibility. */
-int
-rl_forward (count, key)
- int count, key;
-{
- return (rl_forward_char (count, key));
-}
-
-/* Move backward COUNT bytes. */
-int
-rl_backward_byte (count, key)
- int count, key;
-{
- if (count < 0)
- return (rl_forward_byte (-count, key));
-
- if (count > 0)
- {
- if (rl_point < count)
- {
- rl_point = 0;
- rl_ding ();
- }
- else
- rl_point -= count;
- }
-
- if (rl_point < 0)
- rl_point = 0;
-
- return 0;
-}
-
-#if defined (HANDLE_MULTIBYTE)
-/* Move backward COUNT characters. */
-int
-rl_backward_char (count, key)
- int count, key;
-{
- int point;
-
- if (MB_CUR_MAX == 1 || rl_byte_oriented)
- return (rl_backward_byte (count, key));
-
- if (count < 0)
- return (rl_forward_char (-count, key));
-
- if (count > 0)
- {
- point = rl_point;
-
- while (count > 0 && point > 0)
- {
- point = _rl_find_prev_mbchar (rl_line_buffer, point, MB_FIND_NONZERO);
- count--;
- }
- if (count > 0)
- {
- rl_point = 0;
- rl_ding ();
- }
- else
- rl_point = point;
- }
-
- return 0;
-}
-#else
-int
-rl_backward_char (count, key)
- int count, key;
-{
- return (rl_backward_byte (count, key));
-}
-#endif
-
-/* Backwards compatibility. */
-int
-rl_backward (count, key)
- int count, key;
-{
- return (rl_backward_char (count, key));
-}
-
-/* Move to the beginning of the line. */
-int
-rl_beg_of_line (count, key)
- int count, key;
-{
- rl_point = 0;
- return 0;
-}
-
-/* Move to the end of the line. */
-int
-rl_end_of_line (count, key)
- int count, key;
-{
- rl_point = rl_end;
- return 0;
-}
-
-/* XXX - these might need changes for multibyte characters */
-/* Move forward a word. We do what Emacs does. */
-int
-rl_forward_word (count, key)
- int count, key;
-{
- int c;
-
- if (count < 0)
- return (rl_backward_word (-count, key));
-
- while (count)
- {
- if (rl_point == rl_end)
- return 0;
-
- /* If we are not in a word, move forward until we are in one.
- Then, move forward until we hit a non-alphabetic character. */
- c = rl_line_buffer[rl_point];
- if (rl_alphabetic (c) == 0)
- {
- while (++rl_point < rl_end)
- {
- c = rl_line_buffer[rl_point];
- if (rl_alphabetic (c))
- break;
- }
- }
-
- if (rl_point == rl_end)
- return 0;
-
- while (++rl_point < rl_end)
- {
- c = rl_line_buffer[rl_point];
- if (rl_alphabetic (c) == 0)
- break;
- }
- --count;
- }
-
- return 0;
-}
-
-/* Move backward a word. We do what Emacs does. */
-int
-rl_backward_word (count, key)
- int count, key;
-{
- int c;
-
- if (count < 0)
- return (rl_forward_word (-count, key));
-
- while (count)
- {
- if (!rl_point)
- return 0;
-
- /* Like rl_forward_word (), except that we look at the characters
- just before point. */
-
- c = rl_line_buffer[rl_point - 1];
- if (rl_alphabetic (c) == 0)
- {
- while (--rl_point)
- {
- c = rl_line_buffer[rl_point - 1];
- if (rl_alphabetic (c))
- break;
- }
- }
-
- while (rl_point)
- {
- c = rl_line_buffer[rl_point - 1];
- if (rl_alphabetic (c) == 0)
- break;
- else
- --rl_point;
- }
-
- --count;
- }
-
- return 0;
-}
-
-/* Clear the current line. Numeric argument to C-l does this. */
-int
-rl_refresh_line (ignore1, ignore2)
- int ignore1, ignore2;
-{
- int curr_line;
-
- curr_line = _rl_current_display_line ();
-
- _rl_move_vert (curr_line);
- _rl_move_cursor_relative (0, rl_line_buffer); /* XXX is this right */
-
- _rl_clear_to_eol (0); /* arg of 0 means to not use spaces */
-
- rl_forced_update_display ();
- rl_display_fixed = 1;
-
- return 0;
-}
-
-/* C-l typed to a line without quoting clears the screen, and then reprints
- the prompt and the current input line. Given a numeric arg, redraw only
- the current line. */
-int
-rl_clear_screen (count, key)
- int count, key;
-{
- if (rl_explicit_arg)
- {
- rl_refresh_line (count, key);
- return 0;
- }
-
- _rl_clear_screen (); /* calls termcap function to clear screen */
- rl_forced_update_display ();
- rl_display_fixed = 1;
-
- return 0;
-}
-
-int
-rl_arrow_keys (count, c)
- int count, c;
-{
- int ch;
-
- RL_SETSTATE(RL_STATE_MOREINPUT);
- ch = rl_read_key ();
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
-
- switch (_rl_to_upper (ch))
- {
- case 'A':
- rl_get_previous_history (count, ch);
- break;
-
- case 'B':
- rl_get_next_history (count, ch);
- break;
-
- case 'C':
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- rl_forward_char (count, ch);
- else
- rl_forward_byte (count, ch);
- break;
-
- case 'D':
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- rl_backward_char (count, ch);
- else
- rl_backward_byte (count, ch);
- break;
-
- default:
- rl_ding ();
- }
-
- return 0;
-}
-
-/* **************************************************************** */
-/* */
-/* Text commands */
-/* */
-/* **************************************************************** */
-
-#ifdef HANDLE_MULTIBYTE
-static char pending_bytes[MB_LEN_MAX];
-static int pending_bytes_length = 0;
-static mbstate_t ps = {0};
-#endif
-
-/* Insert the character C at the current location, moving point forward.
- If C introduces a multibyte sequence, we read the whole sequence and
- then insert the multibyte char into the line buffer. */
-int
-_rl_insert_char (count, c)
- int count, c;
-{
- register int i;
- char *string;
-#ifdef HANDLE_MULTIBYTE
- int string_size;
- char incoming[MB_LEN_MAX + 1];
- int incoming_length = 0;
- mbstate_t ps_back;
- static int stored_count = 0;
-#endif
-
- if (count <= 0)
- return 0;
-
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX == 1 || rl_byte_oriented)
- {
- incoming[0] = c;
- incoming[1] = '\0';
- incoming_length = 1;
- }
- else
- {
- wchar_t wc;
- size_t ret;
-
- if (stored_count <= 0)
- stored_count = count;
- else
- count = stored_count;
-
- ps_back = ps;
- pending_bytes[pending_bytes_length++] = c;
- ret = mbrtowc (&wc, pending_bytes, pending_bytes_length, &ps);
-
- if (ret == (size_t)-2)
- {
- /* Bytes too short to compose character, try to wait for next byte.
- Restore the state of the byte sequence, because in this case the
- effect of mbstate is undefined. */
- ps = ps_back;
- return 1;
- }
- else if (ret == (size_t)-1)
- {
- /* Invalid byte sequence for the current locale. Treat first byte
- as a single character. */
- incoming[0] = pending_bytes[0];
- incoming[1] = '\0';
- incoming_length = 1;
- pending_bytes_length--;
- memmove (pending_bytes, pending_bytes + 1, pending_bytes_length);
- /* Clear the state of the byte sequence, because in this case the
- effect of mbstate is undefined. */
- memset (&ps, 0, sizeof (mbstate_t));
- }
- else if (ret == (size_t)0)
- {
- incoming[0] = '\0';
- incoming_length = 0;
- pending_bytes_length--;
- /* Clear the state of the byte sequence, because in this case the
- effect of mbstate is undefined. */
- memset (&ps, 0, sizeof (mbstate_t));
- }
- else
- {
- /* We successfully read a single multibyte character. */
- memcpy (incoming, pending_bytes, pending_bytes_length);
- incoming[pending_bytes_length] = '\0';
- incoming_length = pending_bytes_length;
- pending_bytes_length = 0;
- }
- }
-#endif /* HANDLE_MULTIBYTE */
-
- /* If we can optimize, then do it. But don't let people crash
- readline because of extra large arguments. */
- if (count > 1 && count <= 1024)
- {
-#if defined (HANDLE_MULTIBYTE)
- string_size = count * incoming_length;
- string = (char *)xmalloc (1 + string_size);
-
- i = 0;
- while (i < string_size)
- {
- strncpy (string + i, incoming, incoming_length);
- i += incoming_length;
- }
- incoming_length = 0;
- stored_count = 0;
-#else /* !HANDLE_MULTIBYTE */
- string = (char *)xmalloc (1 + count);
-
- for (i = 0; i < count; i++)
- string[i] = c;
-#endif /* !HANDLE_MULTIBYTE */
-
- string[i] = '\0';
- rl_insert_text (string);
- free (string);
-
- return 0;
- }
-
- if (count > 1024)
- {
- int decreaser;
-#if defined (HANDLE_MULTIBYTE)
- string_size = incoming_length * 1024;
- string = (char *)xmalloc (1 + string_size);
-
- i = 0;
- while (i < string_size)
- {
- strncpy (string + i, incoming, incoming_length);
- i += incoming_length;
- }
-
- while (count)
- {
- decreaser = (count > 1024) ? 1024 : count;
- string[decreaser*incoming_length] = '\0';
- rl_insert_text (string);
- count -= decreaser;
- }
-
- free (string);
- incoming_length = 0;
- stored_count = 0;
-#else /* !HANDLE_MULTIBYTE */
- char str[1024+1];
-
- for (i = 0; i < 1024; i++)
- str[i] = c;
-
- while (count)
- {
- decreaser = (count > 1024 ? 1024 : count);
- str[decreaser] = '\0';
- rl_insert_text (str);
- count -= decreaser;
- }
-#endif /* !HANDLE_MULTIBYTE */
-
- return 0;
- }
-
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX == 1 || rl_byte_oriented)
- {
-#endif
- /* We are inserting a single character.
- If there is pending input, then make a string of all of the
- pending characters that are bound to rl_insert, and insert
- them all. */
- if (_rl_any_typein ())
- _rl_insert_typein (c);
- else
- {
- /* Inserting a single character. */
- char str[2];
-
- str[1] = '\0';
- str[0] = c;
- rl_insert_text (str);
- }
-#if defined (HANDLE_MULTIBYTE)
- }
- else
- {
- rl_insert_text (incoming);
- stored_count = 0;
- }
-#endif
-
- return 0;
-}
-
-/* Overwrite the character at point (or next COUNT characters) with C.
- If C introduces a multibyte character sequence, read the entire sequence
- before starting the overwrite loop. */
-int
-_rl_overwrite_char (count, c)
- int count, c;
-{
- int i;
-#if defined (HANDLE_MULTIBYTE)
- char mbkey[MB_LEN_MAX];
- int k;
-
- /* Read an entire multibyte character sequence to insert COUNT times. */
- if (count > 0 && MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- k = _rl_read_mbstring (c, mbkey, MB_LEN_MAX);
-#endif
-
- for (i = 0; i < count; i++)
- {
- rl_begin_undo_group ();
-
- if (rl_point < rl_end)
- rl_delete (1, c);
-
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- rl_insert_text (mbkey);
- else
-#endif
- _rl_insert_char (1, c);
-
- rl_end_undo_group ();
- }
-
- return 0;
-}
-
-int
-rl_insert (count, c)
- int count, c;
-{
- return (rl_insert_mode == RL_IM_INSERT ? _rl_insert_char (count, c)
- : _rl_overwrite_char (count, c));
-}
-
-/* Insert the next typed character verbatim. */
-int
-rl_quoted_insert (count, key)
- int count, key;
-{
- int c;
-
-#if defined (HANDLE_SIGNALS)
- _rl_disable_tty_signals ();
-#endif
-
- RL_SETSTATE(RL_STATE_MOREINPUT);
- c = rl_read_key ();
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
-
-#if defined (HANDLE_SIGNALS)
- _rl_restore_tty_signals ();
-#endif
-
- return (_rl_insert_char (count, c));
-}
-
-/* Insert a tab character. */
-int
-rl_tab_insert (count, key)
- int count, key;
-{
- return (_rl_insert_char (count, '\t'));
-}
-
-/* What to do when a NEWLINE is pressed. We accept the whole line.
- KEY is the key that invoked this command. I guess it could have
- meaning in the future. */
-int
-rl_newline (count, key)
- int count, key;
-{
- rl_done = 1;
-
- if (_rl_history_preserve_point)
- _rl_history_saved_point = (rl_point == rl_end) ? -1 : rl_point;
-
- RL_SETSTATE(RL_STATE_DONE);
-
-#if defined (VI_MODE)
- if (rl_editing_mode == vi_mode)
- {
- _rl_vi_done_inserting ();
- _rl_vi_reset_last ();
- }
-#endif /* VI_MODE */
-
- /* If we've been asked to erase empty lines, suppress the final update,
- since _rl_update_final calls rl_crlf(). */
- if (rl_erase_empty_line && rl_point == 0 && rl_end == 0)
- return 0;
-
- if (readline_echoing_p)
- _rl_update_final ();
- return 0;
-}
-
-/* What to do for some uppercase characters, like meta characters,
- and some characters appearing in emacs_ctlx_keymap. This function
- is just a stub, you bind keys to it and the code in _rl_dispatch ()
- is special cased. */
-int
-rl_do_lowercase_version (ignore1, ignore2)
- int ignore1, ignore2;
-{
- return 0;
-}
-
-/* This is different from what vi does, so the code's not shared. Emacs
- rubout in overwrite mode has one oddity: it replaces a control
- character that's displayed as two characters (^X) with two spaces. */
-int
-_rl_overwrite_rubout (count, key)
- int count, key;
-{
- int opoint;
- int i, l;
-
- if (rl_point == 0)
- {
- rl_ding ();
- return 1;
- }
-
- opoint = rl_point;
-
- /* L == number of spaces to insert */
- for (i = l = 0; i < count; i++)
- {
- rl_backward_char (1, key);
- l += rl_character_len (rl_line_buffer[rl_point], rl_point); /* not exactly right */
- }
-
- rl_begin_undo_group ();
-
- if (count > 1 || rl_explicit_arg)
- rl_kill_text (opoint, rl_point);
- else
- rl_delete_text (opoint, rl_point);
-
- /* Emacs puts point at the beginning of the sequence of spaces. */
- opoint = rl_point;
- _rl_insert_char (l, ' ');
- rl_point = opoint;
-
- rl_end_undo_group ();
-
- return 0;
-}
-
-/* Rubout the character behind point. */
-int
-rl_rubout (count, key)
- int count, key;
-{
- if (count < 0)
- return (rl_delete (-count, key));
-
- if (!rl_point)
- {
- rl_ding ();
- return -1;
- }
-
- if (rl_insert_mode == RL_IM_OVERWRITE)
- return (_rl_overwrite_rubout (count, key));
-
- return (_rl_rubout_char (count, key));
-}
-
-int
-_rl_rubout_char (count, key)
- int count, key;
-{
- int orig_point;
- unsigned char c;
-
- /* Duplicated code because this is called from other parts of the library. */
- if (count < 0)
- return (rl_delete (-count, key));
-
- if (rl_point == 0)
- {
- rl_ding ();
- return -1;
- }
-
- if (count > 1 || rl_explicit_arg)
- {
- orig_point = rl_point;
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- rl_backward_char (count, key);
- else
-#endif
- rl_backward_byte (count, key);
- rl_kill_text (orig_point, rl_point);
- }
- else
- {
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX == 1 || rl_byte_oriented)
- {
-#endif
- c = rl_line_buffer[--rl_point];
- rl_delete_text (rl_point, rl_point + 1);
-#if defined (HANDLE_MULTIBYTE)
- }
- else
- {
- int orig_point;
-
- orig_point = rl_point;
- rl_point = _rl_find_prev_mbchar (rl_line_buffer, rl_point, MB_FIND_NONZERO);
- c = rl_line_buffer[rl_point];
- rl_delete_text (rl_point, orig_point);
- }
-#endif /* HANDLE_MULTIBYTE */
-
- /* I don't think that the hack for end of line is needed for
- multibyte chars. */
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX == 1 || rl_byte_oriented)
-#endif
- if (rl_point == rl_end && ISPRINT (c) && _rl_last_c_pos)
- {
- int l;
- l = rl_character_len (c, rl_point);
- _rl_erase_at_end_of_line (l);
- }
- }
-
- return 0;
-}
-
-/* Delete the character under the cursor. Given a numeric argument,
- kill that many characters instead. */
-int
-rl_delete (count, key)
- int count, key;
-{
- int r;
-
- if (count < 0)
- return (_rl_rubout_char (-count, key));
-
- if (rl_point == rl_end)
- {
- rl_ding ();
- return -1;
- }
-
- if (count > 1 || rl_explicit_arg)
- {
- int orig_point = rl_point;
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- rl_forward_char (count, key);
- else
-#endif
- rl_forward_byte (count, key);
-
- r = rl_kill_text (orig_point, rl_point);
- rl_point = orig_point;
- return r;
- }
- else
- {
- int new_point;
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- new_point = _rl_find_next_mbchar (rl_line_buffer, rl_point, 1, MB_FIND_NONZERO);
- else
- new_point = rl_point + 1;
-
- return (rl_delete_text (rl_point, new_point));
- }
-}
-
-/* Delete the character under the cursor, unless the insertion
- point is at the end of the line, in which case the character
- behind the cursor is deleted. COUNT is obeyed and may be used
- to delete forward or backward that many characters. */
-int
-rl_rubout_or_delete (count, key)
- int count, key;
-{
- if (rl_end != 0 && rl_point == rl_end)
- return (_rl_rubout_char (count, key));
- else
- return (rl_delete (count, key));
-}
-
-/* Delete all spaces and tabs around point. */
-int
-rl_delete_horizontal_space (count, ignore)
- int count, ignore;
-{
- int start = rl_point;
-
- while (rl_point && whitespace (rl_line_buffer[rl_point - 1]))
- rl_point--;
-
- start = rl_point;
-
- while (rl_point < rl_end && whitespace (rl_line_buffer[rl_point]))
- rl_point++;
-
- if (start != rl_point)
- {
- rl_delete_text (start, rl_point);
- rl_point = start;
- }
- return 0;
-}
-
-/* Like the tcsh editing function delete-char-or-list. The eof character
- is caught before this is invoked, so this really does the same thing as
- delete-char-or-list-or-eof, as long as it's bound to the eof character. */
-int
-rl_delete_or_show_completions (count, key)
- int count, key;
-{
- if (rl_end != 0 && rl_point == rl_end)
- return (rl_possible_completions (count, key));
- else
- return (rl_delete (count, key));
-}
-
-#ifndef RL_COMMENT_BEGIN_DEFAULT
-#define RL_COMMENT_BEGIN_DEFAULT "#"
-#endif
-
-/* Turn the current line into a comment in shell history.
- A K*rn shell style function. */
-int
-rl_insert_comment (count, key)
- int count, key;
-{
- char *rl_comment_text;
- int rl_comment_len;
-
- rl_beg_of_line (1, key);
- rl_comment_text = _rl_comment_begin ? _rl_comment_begin : RL_COMMENT_BEGIN_DEFAULT;
-
- if (rl_explicit_arg == 0)
- rl_insert_text (rl_comment_text);
- else
- {
- rl_comment_len = strlen (rl_comment_text);
- if (STREQN (rl_comment_text, rl_line_buffer, rl_comment_len))
- rl_delete_text (rl_point, rl_point + rl_comment_len);
- else
- rl_insert_text (rl_comment_text);
- }
-
- (*rl_redisplay_function) ();
- rl_newline (1, '\n');
-
- return (0);
-}
-
-/* **************************************************************** */
-/* */
-/* Changing Case */
-/* */
-/* **************************************************************** */
-
-/* The three kinds of things that we know how to do. */
-#define UpCase 1
-#define DownCase 2
-#define CapCase 3
-
-/* Uppercase the word at point. */
-int
-rl_upcase_word (count, key)
- int count, key;
-{
- return (rl_change_case (count, UpCase));
-}
-
-/* Lowercase the word at point. */
-int
-rl_downcase_word (count, key)
- int count, key;
-{
- return (rl_change_case (count, DownCase));
-}
-
-/* Upcase the first letter, downcase the rest. */
-int
-rl_capitalize_word (count, key)
- int count, key;
-{
- return (rl_change_case (count, CapCase));
-}
-
-/* The meaty function.
- Change the case of COUNT words, performing OP on them.
- OP is one of UpCase, DownCase, or CapCase.
- If a negative argument is given, leave point where it started,
- otherwise, leave it where it moves to. */
-static int
-rl_change_case (count, op)
- int count, op;
-{
- register int start, end;
- int inword, c;
-
- start = rl_point;
- rl_forward_word (count, 0);
- end = rl_point;
-
- if (count < 0)
- SWAP (start, end);
-
- /* We are going to modify some text, so let's prepare to undo it. */
- rl_modifying (start, end);
-
- for (inword = 0; start < end; start++)
- {
- c = rl_line_buffer[start];
- switch (op)
- {
- case UpCase:
- rl_line_buffer[start] = _rl_to_upper (c);
- break;
-
- case DownCase:
- rl_line_buffer[start] = _rl_to_lower (c);
- break;
-
- case CapCase:
- rl_line_buffer[start] = (inword == 0) ? _rl_to_upper (c) : _rl_to_lower (c);
- inword = rl_alphabetic (rl_line_buffer[start]);
- break;
-
- default:
- rl_ding ();
- return -1;
- }
- }
- rl_point = end;
- return 0;
-}
-
-/* **************************************************************** */
-/* */
-/* Transposition */
-/* */
-/* **************************************************************** */
-
-/* Transpose the words at point. If point is at the end of the line,
- transpose the two words before point. */
-int
-rl_transpose_words (count, key)
- int count, key;
-{
- char *word1, *word2;
- int w1_beg, w1_end, w2_beg, w2_end;
- int orig_point = rl_point;
-
- if (!count)
- return 0;
-
- /* Find the two words. */
- rl_forward_word (count, key);
- w2_end = rl_point;
- rl_backward_word (1, key);
- w2_beg = rl_point;
- rl_backward_word (count, key);
- w1_beg = rl_point;
- rl_forward_word (1, key);
- w1_end = rl_point;
-
- /* Do some check to make sure that there really are two words. */
- if ((w1_beg == w2_beg) || (w2_beg < w1_end))
- {
- rl_ding ();
- rl_point = orig_point;
- return -1;
- }
-
- /* Get the text of the words. */
- word1 = rl_copy_text (w1_beg, w1_end);
- word2 = rl_copy_text (w2_beg, w2_end);
-
- /* We are about to do many insertions and deletions. Remember them
- as one operation. */
- rl_begin_undo_group ();
-
- /* Do the stuff at word2 first, so that we don't have to worry
- about word1 moving. */
- rl_point = w2_beg;
- rl_delete_text (w2_beg, w2_end);
- rl_insert_text (word1);
-
- rl_point = w1_beg;
- rl_delete_text (w1_beg, w1_end);
- rl_insert_text (word2);
-
- /* This is exactly correct since the text before this point has not
- changed in length. */
- rl_point = w2_end;
-
- /* I think that does it. */
- rl_end_undo_group ();
- free (word1);
- free (word2);
-
- return 0;
-}
-
-/* Transpose the characters at point. If point is at the end of the line,
- then transpose the characters before point. */
-int
-rl_transpose_chars (count, key)
- int count, key;
-{
-#if defined (HANDLE_MULTIBYTE)
- char *dummy;
- int i, prev_point;
-#else
- char dummy[2];
-#endif
- int char_length;
-
- if (count == 0)
- return 0;
-
- if (!rl_point || rl_end < 2)
- {
- rl_ding ();
- return -1;
- }
-
- rl_begin_undo_group ();
-
- if (rl_point == rl_end)
- {
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- rl_point = _rl_find_prev_mbchar (rl_line_buffer, rl_point, MB_FIND_NONZERO);
- else
- --rl_point;
- count = 1;
- }
-
-#if defined (HANDLE_MULTIBYTE)
- prev_point = rl_point;
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- rl_point = _rl_find_prev_mbchar (rl_line_buffer, rl_point, MB_FIND_NONZERO);
- else
-#endif
- rl_point--;
-
-#if defined (HANDLE_MULTIBYTE)
- char_length = prev_point - rl_point;
- dummy = (char *)xmalloc (char_length + 1);
- for (i = 0; i < char_length; i++)
- dummy[i] = rl_line_buffer[rl_point + i];
- dummy[i] = '\0';
-#else
- dummy[0] = rl_line_buffer[rl_point];
- dummy[char_length = 1] = '\0';
-#endif
-
- rl_delete_text (rl_point, rl_point + char_length);
-
- rl_point = _rl_find_next_mbchar (rl_line_buffer, rl_point, count, MB_FIND_NONZERO);
-
- _rl_fix_point (0);
- rl_insert_text (dummy);
- rl_end_undo_group ();
-
-#if defined (HANDLE_MULTIBYTE)
- free (dummy);
-#endif
-
- return 0;
-}
-
-/* **************************************************************** */
-/* */
-/* Character Searching */
-/* */
-/* **************************************************************** */
-
-int
-#if defined (HANDLE_MULTIBYTE)
-_rl_char_search_internal (count, dir, smbchar, len)
- int count, dir;
- char *smbchar;
- int len;
-#else
-_rl_char_search_internal (count, dir, schar)
- int count, dir, schar;
-#endif
-{
- int pos, inc;
-#if defined (HANDLE_MULTIBYTE)
- int prepos;
-#endif
-
- pos = rl_point;
- inc = (dir < 0) ? -1 : 1;
- while (count)
- {
- if ((dir < 0 && pos <= 0) || (dir > 0 && pos >= rl_end))
- {
- rl_ding ();
- return -1;
- }
-
-#if defined (HANDLE_MULTIBYTE)
- pos = (inc > 0) ? _rl_find_next_mbchar (rl_line_buffer, pos, 1, MB_FIND_ANY)
- : _rl_find_prev_mbchar (rl_line_buffer, pos, MB_FIND_ANY);
-#else
- pos += inc;
-#endif
- do
- {
-#if defined (HANDLE_MULTIBYTE)
- if (_rl_is_mbchar_matched (rl_line_buffer, pos, rl_end, smbchar, len))
-#else
- if (rl_line_buffer[pos] == schar)
-#endif
- {
- count--;
- if (dir < 0)
- rl_point = (dir == BTO) ? _rl_find_next_mbchar (rl_line_buffer, pos, 1, MB_FIND_ANY)
- : pos;
- else
- rl_point = (dir == FTO) ? _rl_find_prev_mbchar (rl_line_buffer, pos, MB_FIND_ANY)
- : pos;
- break;
- }
-#if defined (HANDLE_MULTIBYTE)
- prepos = pos;
-#endif
- }
-#if defined (HANDLE_MULTIBYTE)
- while ((dir < 0) ? (pos = _rl_find_prev_mbchar (rl_line_buffer, pos, MB_FIND_ANY)) != prepos
- : (pos = _rl_find_next_mbchar (rl_line_buffer, pos, 1, MB_FIND_ANY)) != prepos);
-#else
- while ((dir < 0) ? pos-- : ++pos < rl_end);
-#endif
- }
- return (0);
-}
-
-/* Search COUNT times for a character read from the current input stream.
- FDIR is the direction to search if COUNT is non-negative; otherwise
- the search goes in BDIR. So much is dependent on HANDLE_MULTIBYTE
- that there are two separate versions of this function. */
-#if defined (HANDLE_MULTIBYTE)
-static int
-_rl_char_search (count, fdir, bdir)
- int count, fdir, bdir;
-{
- char mbchar[MB_LEN_MAX];
- int mb_len;
-
- mb_len = _rl_read_mbchar (mbchar, MB_LEN_MAX);
-
- if (count < 0)
- return (_rl_char_search_internal (-count, bdir, mbchar, mb_len));
- else
- return (_rl_char_search_internal (count, fdir, mbchar, mb_len));
-}
-#else /* !HANDLE_MULTIBYTE */
-static int
-_rl_char_search (count, fdir, bdir)
- int count, fdir, bdir;
-{
- int c;
-
- RL_SETSTATE(RL_STATE_MOREINPUT);
- c = rl_read_key ();
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
-
- if (count < 0)
- return (_rl_char_search_internal (-count, bdir, c));
- else
- return (_rl_char_search_internal (count, fdir, c));
-}
-#endif /* !HANDLE_MULTIBYTE */
-
-int
-rl_char_search (count, key)
- int count, key;
-{
- return (_rl_char_search (count, FFIND, BFIND));
-}
-
-int
-rl_backward_char_search (count, key)
- int count, key;
-{
- return (_rl_char_search (count, BFIND, FFIND));
-}
-
-/* **************************************************************** */
-/* */
-/* The Mark and the Region. */
-/* */
-/* **************************************************************** */
-
-/* Set the mark at POSITION. */
-int
-_rl_set_mark_at_pos (position)
- int position;
-{
- if (position > rl_end)
- return -1;
-
- rl_mark = position;
- return 0;
-}
-
-/* A bindable command to set the mark. */
-int
-rl_set_mark (count, key)
- int count, key;
-{
- return (_rl_set_mark_at_pos (rl_explicit_arg ? count : rl_point));
-}
-
-/* Exchange the position of mark and point. */
-int
-rl_exchange_point_and_mark (count, key)
- int count, key;
-{
- if (rl_mark > rl_end)
- rl_mark = -1;
-
- if (rl_mark == -1)
- {
- rl_ding ();
- return -1;
- }
- else
- SWAP (rl_point, rl_mark);
-
- return 0;
-}
diff --git a/readline-4.3.orig/tilde.c b/readline-4.3.orig/tilde.c
deleted file mode 100644
index 154f7f8..0000000
--- a/readline-4.3.orig/tilde.c
+++ /dev/null
@@ -1,458 +0,0 @@
-/* tilde.c -- Tilde expansion code (~/foo := $HOME/foo). */
-
-/* Copyright (C) 1988,1989 Free Software Foundation, Inc.
-
- This file is part of GNU Readline, a library for reading lines
- of text with interactive input and history editing.
-
- Readline is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the
- Free Software Foundation; either version 2, or (at your option) any
- later version.
-
- Readline is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Readline; see the file COPYING. If not, write to the Free
- Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#if defined (HAVE_UNISTD_H)
-# ifdef _MINIX
-# include <sys/types.h>
-# endif
-# include <unistd.h>
-#endif
-
-#if defined (HAVE_STRING_H)
-# include <string.h>
-#else /* !HAVE_STRING_H */
-# include <strings.h>
-#endif /* !HAVE_STRING_H */
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#include <sys/types.h>
-#include <pwd.h>
-
-#include "tilde.h"
-
-#if defined (TEST) || defined (STATIC_MALLOC)
-static void *xmalloc (), *xrealloc ();
-#else
-# include "xmalloc.h"
-#endif /* TEST || STATIC_MALLOC */
-
-#if !defined (HAVE_GETPW_DECLS)
-extern struct passwd *getpwuid PARAMS((uid_t));
-extern struct passwd *getpwnam PARAMS((const char *));
-#endif /* !HAVE_GETPW_DECLS */
-
-#if !defined (savestring)
-#define savestring(x) strcpy ((char *)xmalloc (1 + strlen (x)), (x))
-#endif /* !savestring */
-
-#if !defined (NULL)
-# if defined (__STDC__)
-# define NULL ((void *) 0)
-# else
-# define NULL 0x0
-# endif /* !__STDC__ */
-#endif /* !NULL */
-
-/* If being compiled as part of bash, these will be satisfied from
- variables.o. If being compiled as part of readline, they will
- be satisfied from shell.o. */
-extern char *sh_get_home_dir PARAMS((void));
-extern char *sh_get_env_value PARAMS((const char *));
-
-/* The default value of tilde_additional_prefixes. This is set to
- whitespace preceding a tilde so that simple programs which do not
- perform any word separation get desired behaviour. */
-static const char *default_prefixes[] =
- { " ~", "\t~", (const char *)NULL };
-
-/* The default value of tilde_additional_suffixes. This is set to
- whitespace or newline so that simple programs which do not
- perform any word separation get desired behaviour. */
-static const char *default_suffixes[] =
- { " ", "\n", (const char *)NULL };
-
-/* If non-null, this contains the address of a function that the application
- wants called before trying the standard tilde expansions. The function
- is called with the text sans tilde, and returns a malloc()'ed string
- which is the expansion, or a NULL pointer if the expansion fails. */
-tilde_hook_func_t *tilde_expansion_preexpansion_hook = (tilde_hook_func_t *)NULL;
-
-/* If non-null, this contains the address of a function to call if the
- standard meaning for expanding a tilde fails. The function is called
- with the text (sans tilde, as in "foo"), and returns a malloc()'ed string
- which is the expansion, or a NULL pointer if there is no expansion. */
-tilde_hook_func_t *tilde_expansion_failure_hook = (tilde_hook_func_t *)NULL;
-
-/* When non-null, this is a NULL terminated array of strings which
- are duplicates for a tilde prefix. Bash uses this to expand
- `=~' and `:~'. */
-char **tilde_additional_prefixes = (char **)default_prefixes;
-
-/* When non-null, this is a NULL terminated array of strings which match
- the end of a username, instead of just "/". Bash sets this to
- `:' and `=~'. */
-char **tilde_additional_suffixes = (char **)default_suffixes;
-
-static int tilde_find_prefix PARAMS((const char *, int *));
-static int tilde_find_suffix PARAMS((const char *));
-static char *isolate_tilde_prefix PARAMS((const char *, int *));
-static char *glue_prefix_and_suffix PARAMS((char *, const char *, int));
-
-/* Find the start of a tilde expansion in STRING, and return the index of
- the tilde which starts the expansion. Place the length of the text
- which identified this tilde starter in LEN, excluding the tilde itself. */
-static int
-tilde_find_prefix (string, len)
- const char *string;
- int *len;
-{
- register int i, j, string_len;
- register char **prefixes;
-
- prefixes = tilde_additional_prefixes;
-
- string_len = strlen (string);
- *len = 0;
-
- if (*string == '\0' || *string == '~')
- return (0);
-
- if (prefixes)
- {
- for (i = 0; i < string_len; i++)
- {
- for (j = 0; prefixes[j]; j++)
- {
- if (strncmp (string + i, prefixes[j], strlen (prefixes[j])) == 0)
- {
- *len = strlen (prefixes[j]) - 1;
- return (i + *len);
- }
- }
- }
- }
- return (string_len);
-}
-
-/* Find the end of a tilde expansion in STRING, and return the index of
- the character which ends the tilde definition. */
-static int
-tilde_find_suffix (string)
- const char *string;
-{
- register int i, j, string_len;
- register char **suffixes;
-
- suffixes = tilde_additional_suffixes;
- string_len = strlen (string);
-
- for (i = 0; i < string_len; i++)
- {
-#if defined (__MSDOS__)
- if (string[i] == '/' || string[i] == '\\' /* || !string[i] */)
-#else
- if (string[i] == '/' /* || !string[i] */)
-#endif
- break;
-
- for (j = 0; suffixes && suffixes[j]; j++)
- {
- if (strncmp (string + i, suffixes[j], strlen (suffixes[j])) == 0)
- return (i);
- }
- }
- return (i);
-}
-
-/* Return a new string which is the result of tilde expanding STRING. */
-char *
-tilde_expand (string)
- const char *string;
-{
- char *result;
- int result_size, result_index;
-
- result_index = result_size = 0;
- if (result = strchr (string, '~'))
- result = (char *)xmalloc (result_size = (strlen (string) + 16));
- else
- result = (char *)xmalloc (result_size = (strlen (string) + 1));
-
- /* Scan through STRING expanding tildes as we come to them. */
- while (1)
- {
- register int start, end;
- char *tilde_word, *expansion;
- int len;
-
- /* Make START point to the tilde which starts the expansion. */
- start = tilde_find_prefix (string, &len);
-
- /* Copy the skipped text into the result. */
- if ((result_index + start + 1) > result_size)
- result = (char *)xrealloc (result, 1 + (result_size += (start + 20)));
-
- strncpy (result + result_index, string, start);
- result_index += start;
-
- /* Advance STRING to the starting tilde. */
- string += start;
-
- /* Make END be the index of one after the last character of the
- username. */
- end = tilde_find_suffix (string);
-
- /* If both START and END are zero, we are all done. */
- if (!start && !end)
- break;
-
- /* Expand the entire tilde word, and copy it into RESULT. */
- tilde_word = (char *)xmalloc (1 + end);
- strncpy (tilde_word, string, end);
- tilde_word[end] = '\0';
- string += end;
-
- expansion = tilde_expand_word (tilde_word);
- free (tilde_word);
-
- len = strlen (expansion);
-#ifdef __CYGWIN__
- /* Fix for Cygwin to prevent ~user/xxx from expanding to //xxx when
- $HOME for `user' is /. On cygwin, // denotes a network drive. */
- if (len > 1 || *expansion != '/' || *string != '/')
-#endif
- {
- if ((result_index + len + 1) > result_size)
- result = (char *)xrealloc (result, 1 + (result_size += (len + 20)));
-
- strcpy (result + result_index, expansion);
- result_index += len;
- }
- free (expansion);
- }
-
- result[result_index] = '\0';
-
- return (result);
-}
-
-/* Take FNAME and return the tilde prefix we want expanded. If LENP is
- non-null, the index of the end of the prefix into FNAME is returned in
- the location it points to. */
-static char *
-isolate_tilde_prefix (fname, lenp)
- const char *fname;
- int *lenp;
-{
- char *ret;
- int i;
-
- ret = (char *)xmalloc (strlen (fname));
-#if defined (__MSDOS__)
- for (i = 1; fname[i] && fname[i] != '/' && fname[i] != '\\'; i++)
-#else
- for (i = 1; fname[i] && fname[i] != '/'; i++)
-#endif
- ret[i - 1] = fname[i];
- ret[i - 1] = '\0';
- if (lenp)
- *lenp = i;
- return ret;
-}
-
-/* Return a string that is PREFIX concatenated with SUFFIX starting at
- SUFFIND. */
-static char *
-glue_prefix_and_suffix (prefix, suffix, suffind)
- char *prefix;
- const char *suffix;
- int suffind;
-{
- char *ret;
- int plen, slen;
-
- plen = (prefix && *prefix) ? strlen (prefix) : 0;
- slen = strlen (suffix + suffind);
- ret = (char *)xmalloc (plen + slen + 1);
- if (plen)
- strcpy (ret, prefix);
- strcpy (ret + plen, suffix + suffind);
- return ret;
-}
-
-/* Do the work of tilde expansion on FILENAME. FILENAME starts with a
- tilde. If there is no expansion, call tilde_expansion_failure_hook.
- This always returns a newly-allocated string, never static storage. */
-char *
-tilde_expand_word (filename)
- const char *filename;
-{
- char *dirname, *expansion, *username;
- int user_len;
- struct passwd *user_entry;
-
- if (filename == 0)
- return ((char *)NULL);
-
- if (*filename != '~')
- return (savestring (filename));
-
- /* A leading `~/' or a bare `~' is *always* translated to the value of
- $HOME or the home directory of the current user, regardless of any
- preexpansion hook. */
- if (filename[1] == '\0' || filename[1] == '/')
- {
- /* Prefix $HOME to the rest of the string. */
- expansion = sh_get_env_value ("HOME");
-
- /* If there is no HOME variable, look up the directory in
- the password database. */
- if (expansion == 0)
- expansion = sh_get_home_dir ();
-
- return (glue_prefix_and_suffix (expansion, filename, 1));
- }
-
- username = isolate_tilde_prefix (filename, &user_len);
-
- if (tilde_expansion_preexpansion_hook)
- {
- expansion = (*tilde_expansion_preexpansion_hook) (username);
- if (expansion)
- {
- dirname = glue_prefix_and_suffix (expansion, filename, user_len);
- free (username);
- free (expansion);
- return (dirname);
- }
- }
-
- /* No preexpansion hook, or the preexpansion hook failed. Look in the
- password database. */
- dirname = (char *)NULL;
- user_entry = getpwnam (username);
- if (user_entry == 0)
- {
- /* If the calling program has a special syntax for expanding tildes,
- and we couldn't find a standard expansion, then let them try. */
- if (tilde_expansion_failure_hook)
- {
- expansion = (*tilde_expansion_failure_hook) (username);
- if (expansion)
- {
- dirname = glue_prefix_and_suffix (expansion, filename, user_len);
- free (expansion);
- }
- }
- free (username);
- /* If we don't have a failure hook, or if the failure hook did not
- expand the tilde, return a copy of what we were passed. */
- if (dirname == 0)
- dirname = savestring (filename);
- }
- else
- {
- free (username);
- dirname = glue_prefix_and_suffix (user_entry->pw_dir, filename, user_len);
- }
-
- endpwent ();
- return (dirname);
-}
-
-
-#if defined (TEST)
-#undef NULL
-#include <stdio.h>
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- char *result, line[512];
- int done = 0;
-
- while (!done)
- {
- printf ("~expand: ");
- fflush (stdout);
-
- if (!gets (line))
- strcpy (line, "done");
-
- if ((strcmp (line, "done") == 0) ||
- (strcmp (line, "quit") == 0) ||
- (strcmp (line, "exit") == 0))
- {
- done = 1;
- break;
- }
-
- result = tilde_expand (line);
- printf (" --> %s\n", result);
- free (result);
- }
- exit (0);
-}
-
-static void memory_error_and_abort ();
-
-static void *
-xmalloc (bytes)
- size_t bytes;
-{
- void *temp = (char *)malloc (bytes);
-
- if (!temp)
- memory_error_and_abort ();
- return (temp);
-}
-
-static void *
-xrealloc (pointer, bytes)
- void *pointer;
- int bytes;
-{
- void *temp;
-
- if (!pointer)
- temp = malloc (bytes);
- else
- temp = realloc (pointer, bytes);
-
- if (!temp)
- memory_error_and_abort ();
-
- return (temp);
-}
-
-static void
-memory_error_and_abort ()
-{
- fprintf (stderr, "readline: out of virtual memory\n");
- abort ();
-}
-
-/*
- * Local variables:
- * compile-command: "gcc -g -DTEST -o tilde tilde.c"
- * end:
- */
-#endif /* TEST */
diff --git a/readline-4.3.orig/tilde.h b/readline-4.3.orig/tilde.h
deleted file mode 100644
index f8182c9..0000000
--- a/readline-4.3.orig/tilde.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/* tilde.h: Externally available variables and function in libtilde.a. */
-
-/* Copyright (C) 1992 Free Software Foundation, Inc.
-
- This file contains the Readline Library (the Library), a set of
- routines for providing Emacs style line input to programs that ask
- for it.
-
- The Library is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- The Library is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if !defined (_TILDE_H_)
-# define _TILDE_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* A function can be defined using prototypes and compile on both ANSI C
- and traditional C compilers with something like this:
- extern char *func PARAMS((char *, char *, int)); */
-
-#if !defined (PARAMS)
-# if defined (__STDC__) || defined (__GNUC__) || defined (__cplusplus)
-# define PARAMS(protos) protos
-# else
-# define PARAMS(protos) ()
-# endif
-#endif
-
-typedef char *tilde_hook_func_t PARAMS((char *));
-
-/* If non-null, this contains the address of a function that the application
- wants called before trying the standard tilde expansions. The function
- is called with the text sans tilde, and returns a malloc()'ed string
- which is the expansion, or a NULL pointer if the expansion fails. */
-extern tilde_hook_func_t *tilde_expansion_preexpansion_hook;
-
-/* If non-null, this contains the address of a function to call if the
- standard meaning for expanding a tilde fails. The function is called
- with the text (sans tilde, as in "foo"), and returns a malloc()'ed string
- which is the expansion, or a NULL pointer if there is no expansion. */
-extern tilde_hook_func_t *tilde_expansion_failure_hook;
-
-/* When non-null, this is a NULL terminated array of strings which
- are duplicates for a tilde prefix. Bash uses this to expand
- `=~' and `:~'. */
-extern char **tilde_additional_prefixes;
-
-/* When non-null, this is a NULL terminated array of strings which match
- the end of a username, instead of just "/". Bash sets this to
- `:' and `=~'. */
-extern char **tilde_additional_suffixes;
-
-/* Return a new string which is the result of tilde expanding STRING. */
-extern char *tilde_expand PARAMS((const char *));
-
-/* Do the work of tilde expansion on FILENAME. FILENAME starts with a
- tilde. If there is no expansion, call tilde_expansion_failure_hook. */
-extern char *tilde_expand_word PARAMS((const char *));
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _TILDE_H_ */
diff --git a/readline-4.3.orig/undo.c b/readline-4.3.orig/undo.c
deleted file mode 100644
index 25c287b..0000000
--- a/readline-4.3.orig/undo.c
+++ /dev/null
@@ -1,263 +0,0 @@
-/* readline.c -- a general facility for reading lines of input
- with emacs style editing and completion. */
-
-/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <sys/types.h>
-
-#if defined (HAVE_UNISTD_H)
-# include <unistd.h> /* for _POSIX_VERSION */
-#endif /* HAVE_UNISTD_H */
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#include <stdio.h>
-
-/* System-specific feature definitions and include files. */
-#include "rldefs.h"
-
-/* Some standard library routines. */
-#include "readline.h"
-#include "history.h"
-
-#include "rlprivate.h"
-#include "xmalloc.h"
-
-/* Non-zero tells rl_delete_text and rl_insert_text to not add to
- the undo list. */
-int _rl_doing_an_undo = 0;
-
-/* How many unclosed undo groups we currently have. */
-int _rl_undo_group_level = 0;
-
-/* The current undo list for THE_LINE. */
-UNDO_LIST *rl_undo_list = (UNDO_LIST *)NULL;
-
-/* **************************************************************** */
-/* */
-/* Undo, and Undoing */
-/* */
-/* **************************************************************** */
-
-/* Remember how to undo something. Concatenate some undos if that
- seems right. */
-void
-rl_add_undo (what, start, end, text)
- enum undo_code what;
- int start, end;
- char *text;
-{
- UNDO_LIST *temp = (UNDO_LIST *)xmalloc (sizeof (UNDO_LIST));
- temp->what = what;
- temp->start = start;
- temp->end = end;
- temp->text = text;
- temp->next = rl_undo_list;
- rl_undo_list = temp;
-}
-
-/* Free the existing undo list. */
-void
-rl_free_undo_list ()
-{
- while (rl_undo_list)
- {
- UNDO_LIST *release = rl_undo_list;
- rl_undo_list = rl_undo_list->next;
-
- if (release->what == UNDO_DELETE)
- free (release->text);
-
- free (release);
- }
- rl_undo_list = (UNDO_LIST *)NULL;
-}
-
-/* Undo the next thing in the list. Return 0 if there
- is nothing to undo, or non-zero if there was. */
-int
-rl_do_undo ()
-{
- UNDO_LIST *release;
- int waiting_for_begin, start, end;
-
-#define TRANS(i) ((i) == -1 ? rl_point : ((i) == -2 ? rl_end : (i)))
-
- start = end = waiting_for_begin = 0;
- do
- {
- if (!rl_undo_list)
- return (0);
-
- _rl_doing_an_undo = 1;
- RL_SETSTATE(RL_STATE_UNDOING);
-
- /* To better support vi-mode, a start or end value of -1 means
- rl_point, and a value of -2 means rl_end. */
- if (rl_undo_list->what == UNDO_DELETE || rl_undo_list->what == UNDO_INSERT)
- {
- start = TRANS (rl_undo_list->start);
- end = TRANS (rl_undo_list->end);
- }
-
- switch (rl_undo_list->what)
- {
- /* Undoing deletes means inserting some text. */
- case UNDO_DELETE:
- rl_point = start;
- rl_insert_text (rl_undo_list->text);
- free (rl_undo_list->text);
- break;
-
- /* Undoing inserts means deleting some text. */
- case UNDO_INSERT:
- rl_delete_text (start, end);
- rl_point = start;
- break;
-
- /* Undoing an END means undoing everything 'til we get to a BEGIN. */
- case UNDO_END:
- waiting_for_begin++;
- break;
-
- /* Undoing a BEGIN means that we are done with this group. */
- case UNDO_BEGIN:
- if (waiting_for_begin)
- waiting_for_begin--;
- else
- rl_ding ();
- break;
- }
-
- _rl_doing_an_undo = 0;
- RL_UNSETSTATE(RL_STATE_UNDOING);
-
- release = rl_undo_list;
- rl_undo_list = rl_undo_list->next;
- free (release);
- }
- while (waiting_for_begin);
-
- return (1);
-}
-#undef TRANS
-
-int
-_rl_fix_last_undo_of_type (type, start, end)
- int type, start, end;
-{
- UNDO_LIST *rl;
-
- for (rl = rl_undo_list; rl; rl = rl->next)
- {
- if (rl->what == type)
- {
- rl->start = start;
- rl->end = end;
- return 0;
- }
- }
- return 1;
-}
-
-/* Begin a group. Subsequent undos are undone as an atomic operation. */
-int
-rl_begin_undo_group ()
-{
- rl_add_undo (UNDO_BEGIN, 0, 0, 0);
- _rl_undo_group_level++;
- return 0;
-}
-
-/* End an undo group started with rl_begin_undo_group (). */
-int
-rl_end_undo_group ()
-{
- rl_add_undo (UNDO_END, 0, 0, 0);
- _rl_undo_group_level--;
- return 0;
-}
-
-/* Save an undo entry for the text from START to END. */
-int
-rl_modifying (start, end)
- int start, end;
-{
- if (start > end)
- {
- SWAP (start, end);
- }
-
- if (start != end)
- {
- char *temp = rl_copy_text (start, end);
- rl_begin_undo_group ();
- rl_add_undo (UNDO_DELETE, start, end, temp);
- rl_add_undo (UNDO_INSERT, start, end, (char *)NULL);
- rl_end_undo_group ();
- }
- return 0;
-}
-
-/* Revert the current line to its previous state. */
-int
-rl_revert_line (count, key)
- int count, key;
-{
- if (!rl_undo_list)
- rl_ding ();
- else
- {
- while (rl_undo_list)
- rl_do_undo ();
- }
- return 0;
-}
-
-/* Do some undoing of things that were done. */
-int
-rl_undo_command (count, key)
- int count, key;
-{
- if (count < 0)
- return 0; /* Nothing to do. */
-
- while (count)
- {
- if (rl_do_undo ())
- count--;
- else
- {
- rl_ding ();
- break;
- }
- }
- return 0;
-}
diff --git a/readline-4.3.orig/util.c b/readline-4.3.orig/util.c
deleted file mode 100644
index c7bd360..0000000
--- a/readline-4.3.orig/util.c
+++ /dev/null
@@ -1,338 +0,0 @@
-/* util.c -- readline utility functions */
-
-/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <sys/types.h>
-#include <fcntl.h>
-#include "posixjmp.h"
-
-#if defined (HAVE_UNISTD_H)
-# include <unistd.h> /* for _POSIX_VERSION */
-#endif /* HAVE_UNISTD_H */
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#include <stdio.h>
-#include <ctype.h>
-
-/* System-specific feature definitions and include files. */
-#include "rldefs.h"
-
-#if defined (TIOCSTAT_IN_SYS_IOCTL)
-# include <sys/ioctl.h>
-#endif /* TIOCSTAT_IN_SYS_IOCTL */
-
-/* Some standard library routines. */
-#include "readline.h"
-
-#include "rlprivate.h"
-#include "xmalloc.h"
-
-/* **************************************************************** */
-/* */
-/* Utility Functions */
-/* */
-/* **************************************************************** */
-
-/* Return 0 if C is not a member of the class of characters that belong
- in words, or 1 if it is. */
-
-int _rl_allow_pathname_alphabetic_chars = 0;
-static const char *pathname_alphabetic_chars = "/-_=~.#$";
-
-int
-rl_alphabetic (c)
- int c;
-{
- if (ALPHABETIC (c))
- return (1);
-
- return (_rl_allow_pathname_alphabetic_chars &&
- strchr (pathname_alphabetic_chars, c) != NULL);
-}
-
-/* How to abort things. */
-int
-_rl_abort_internal ()
-{
- rl_ding ();
- rl_clear_message ();
- _rl_init_argument ();
- rl_clear_pending_input ();
-
- RL_UNSETSTATE (RL_STATE_MACRODEF);
- while (rl_executing_macro)
- _rl_pop_executing_macro ();
-
- rl_last_func = (rl_command_func_t *)NULL;
- longjmp (readline_top_level, 1);
- return (0);
-}
-
-int
-rl_abort (count, key)
- int count, key;
-{
- return (_rl_abort_internal ());
-}
-
-int
-rl_tty_status (count, key)
- int count, key;
-{
-#if defined (TIOCSTAT)
- ioctl (1, TIOCSTAT, (char *)0);
- rl_refresh_line (count, key);
-#else
- rl_ding ();
-#endif
- return 0;
-}
-
-/* Return a copy of the string between FROM and TO.
- FROM is inclusive, TO is not. */
-char *
-rl_copy_text (from, to)
- int from, to;
-{
- register int length;
- char *copy;
-
- /* Fix it if the caller is confused. */
- if (from > to)
- SWAP (from, to);
-
- length = to - from;
- copy = (char *)xmalloc (1 + length);
- strncpy (copy, rl_line_buffer + from, length);
- copy[length] = '\0';
- return (copy);
-}
-
-/* Increase the size of RL_LINE_BUFFER until it has enough space to hold
- LEN characters. */
-void
-rl_extend_line_buffer (len)
- int len;
-{
- while (len >= rl_line_buffer_len)
- {
- rl_line_buffer_len += DEFAULT_BUFFER_SIZE;
- rl_line_buffer = (char *)xrealloc (rl_line_buffer, rl_line_buffer_len);
- }
-
- _rl_set_the_line ();
-}
-
-
-/* A function for simple tilde expansion. */
-int
-rl_tilde_expand (ignore, key)
- int ignore, key;
-{
- register int start, end;
- char *homedir, *temp;
- int len;
-
- end = rl_point;
- start = end - 1;
-
- if (rl_point == rl_end && rl_line_buffer[rl_point] == '~')
- {
- homedir = tilde_expand ("~");
- _rl_replace_text (homedir, start, end);
- return (0);
- }
- else if (rl_line_buffer[start] != '~')
- {
- for (; !whitespace (rl_line_buffer[start]) && start >= 0; start--)
- ;
- start++;
- }
-
- end = start;
- do
- end++;
- while (whitespace (rl_line_buffer[end]) == 0 && end < rl_end);
-
- if (whitespace (rl_line_buffer[end]) || end >= rl_end)
- end--;
-
- /* If the first character of the current word is a tilde, perform
- tilde expansion and insert the result. If not a tilde, do
- nothing. */
- if (rl_line_buffer[start] == '~')
- {
- len = end - start + 1;
- temp = (char *)xmalloc (len + 1);
- strncpy (temp, rl_line_buffer + start, len);
- temp[len] = '\0';
- homedir = tilde_expand (temp);
- free (temp);
-
- _rl_replace_text (homedir, start, end);
- }
-
- return (0);
-}
-
-/* **************************************************************** */
-/* */
-/* String Utility Functions */
-/* */
-/* **************************************************************** */
-
-/* Determine if s2 occurs in s1. If so, return a pointer to the
- match in s1. The compare is case insensitive. */
-char *
-_rl_strindex (s1, s2)
- register const char *s1, *s2;
-{
- register int i, l, len;
-
- for (i = 0, l = strlen (s2), len = strlen (s1); (len - i) >= l; i++)
- if (_rl_strnicmp (s1 + i, s2, l) == 0)
- return ((char *) (s1 + i));
- return ((char *)NULL);
-}
-
-#ifndef HAVE_STRPBRK
-/* Find the first occurrence in STRING1 of any character from STRING2.
- Return a pointer to the character in STRING1. */
-char *
-_rl_strpbrk (string1, string2)
- const char *string1, *string2;
-{
- register const char *scan;
-#if defined (HANDLE_MULTIBYTE)
- mbstate_t ps;
- register int i, v;
-
- memset (&ps, 0, sizeof (mbstate_t));
-#endif
-
- for (; *string1; string1++)
- {
- for (scan = string2; *scan; scan++)
- {
- if (*string1 == *scan)
- return ((char *)string1);
- }
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- v = _rl_get_char_len (string1, &ps);
- if (v > 1)
- string += v - 1; /* -1 to account for auto-increment in loop */
- }
-#endif
- }
- return ((char *)NULL);
-}
-#endif
-
-#if !defined (HAVE_STRCASECMP)
-/* Compare at most COUNT characters from string1 to string2. Case
- doesn't matter. */
-int
-_rl_strnicmp (string1, string2, count)
- char *string1, *string2;
- int count;
-{
- register char ch1, ch2;
-
- while (count)
- {
- ch1 = *string1++;
- ch2 = *string2++;
- if (_rl_to_upper(ch1) == _rl_to_upper(ch2))
- count--;
- else
- break;
- }
- return (count);
-}
-
-/* strcmp (), but caseless. */
-int
-_rl_stricmp (string1, string2)
- char *string1, *string2;
-{
- register char ch1, ch2;
-
- while (*string1 && *string2)
- {
- ch1 = *string1++;
- ch2 = *string2++;
- if (_rl_to_upper(ch1) != _rl_to_upper(ch2))
- return (1);
- }
- return (*string1 - *string2);
-}
-#endif /* !HAVE_STRCASECMP */
-
-/* Stupid comparison routine for qsort () ing strings. */
-int
-_rl_qsort_string_compare (s1, s2)
- char **s1, **s2;
-{
-#if defined (HAVE_STRCOLL)
- return (strcoll (*s1, *s2));
-#else
- int result;
-
- result = **s1 - **s2;
- if (result == 0)
- result = strcmp (*s1, *s2);
-
- return result;
-#endif
-}
-
-/* Function equivalents for the macros defined in chardefs.h. */
-#define FUNCTION_FOR_MACRO(f) int (f) (c) int c; { return f (c); }
-
-FUNCTION_FOR_MACRO (_rl_digit_p)
-FUNCTION_FOR_MACRO (_rl_digit_value)
-FUNCTION_FOR_MACRO (_rl_lowercase_p)
-FUNCTION_FOR_MACRO (_rl_pure_alphabetic)
-FUNCTION_FOR_MACRO (_rl_to_lower)
-FUNCTION_FOR_MACRO (_rl_to_upper)
-FUNCTION_FOR_MACRO (_rl_uppercase_p)
-
-/* Backwards compatibility, now that savestring has been removed from
- all `public' readline header files. */
-#undef _rl_savestring
-char *
-_rl_savestring (s)
- const char *s;
-{
- return (strcpy ((char *)xmalloc (1 + (int)strlen (s)), (s)));
-}
diff --git a/readline-4.3.orig/vi_keymap.c b/readline-4.3.orig/vi_keymap.c
deleted file mode 100644
index 53a67c6..0000000
--- a/readline-4.3.orig/vi_keymap.c
+++ /dev/null
@@ -1,877 +0,0 @@
-/* vi_keymap.c -- the keymap for vi_mode in readline (). */
-
-/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if !defined (BUFSIZ)
-#include <stdio.h>
-#endif /* !BUFSIZ */
-
-#include "readline.h"
-
-#if 0
-extern KEYMAP_ENTRY_ARRAY vi_escape_keymap;
-#endif
-
-/* The keymap arrays for handling vi mode. */
-KEYMAP_ENTRY_ARRAY vi_movement_keymap = {
- /* The regular control keys come first. */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-@ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-a */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-b */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-c */
- { ISFUNC, rl_vi_eof_maybe }, /* Control-d */
- { ISFUNC, rl_emacs_editing_mode }, /* Control-e */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-f */
- { ISFUNC, rl_abort }, /* Control-g */
- { ISFUNC, rl_backward_char }, /* Control-h */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-i */
- { ISFUNC, rl_newline }, /* Control-j */
- { ISFUNC, rl_kill_line }, /* Control-k */
- { ISFUNC, rl_clear_screen }, /* Control-l */
- { ISFUNC, rl_newline }, /* Control-m */
- { ISFUNC, rl_get_next_history }, /* Control-n */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-o */
- { ISFUNC, rl_get_previous_history }, /* Control-p */
- { ISFUNC, rl_quoted_insert }, /* Control-q */
- { ISFUNC, rl_reverse_search_history }, /* Control-r */
- { ISFUNC, rl_forward_search_history }, /* Control-s */
- { ISFUNC, rl_transpose_chars }, /* Control-t */
- { ISFUNC, rl_unix_line_discard }, /* Control-u */
- { ISFUNC, rl_quoted_insert }, /* Control-v */
- { ISFUNC, rl_unix_word_rubout }, /* Control-w */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-x */
- { ISFUNC, rl_yank }, /* Control-y */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-z */
-
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-[ */ /* vi_escape_keymap */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-\ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-] */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-^ */
- { ISFUNC, rl_vi_undo }, /* Control-_ */
-
- /* The start of printing characters. */
- { ISFUNC, rl_forward_char }, /* SPACE */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* ! */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* " */
- { ISFUNC, rl_insert_comment }, /* # */
- { ISFUNC, rl_end_of_line }, /* $ */
- { ISFUNC, rl_vi_match }, /* % */
- { ISFUNC, rl_vi_tilde_expand }, /* & */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* ' */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* ( */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* ) */
- { ISFUNC, rl_vi_complete }, /* * */
- { ISFUNC, rl_get_next_history}, /* + */
- { ISFUNC, rl_vi_char_search }, /* , */
- { ISFUNC, rl_get_previous_history }, /* - */
- { ISFUNC, rl_vi_redo }, /* . */
- { ISFUNC, rl_vi_search }, /* / */
-
- /* Regular digits. */
- { ISFUNC, rl_beg_of_line }, /* 0 */
- { ISFUNC, rl_vi_arg_digit }, /* 1 */
- { ISFUNC, rl_vi_arg_digit }, /* 2 */
- { ISFUNC, rl_vi_arg_digit }, /* 3 */
- { ISFUNC, rl_vi_arg_digit }, /* 4 */
- { ISFUNC, rl_vi_arg_digit }, /* 5 */
- { ISFUNC, rl_vi_arg_digit }, /* 6 */
- { ISFUNC, rl_vi_arg_digit }, /* 7 */
- { ISFUNC, rl_vi_arg_digit }, /* 8 */
- { ISFUNC, rl_vi_arg_digit }, /* 9 */
-
- /* A little more punctuation. */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* : */
- { ISFUNC, rl_vi_char_search }, /* ; */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* < */
- { ISFUNC, rl_vi_complete }, /* = */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* > */
- { ISFUNC, rl_vi_search }, /* ? */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* @ */
-
- /* Uppercase alphabet. */
- { ISFUNC, rl_vi_append_eol }, /* A */
- { ISFUNC, rl_vi_prev_word}, /* B */
- { ISFUNC, rl_vi_change_to }, /* C */
- { ISFUNC, rl_vi_delete_to }, /* D */
- { ISFUNC, rl_vi_end_word }, /* E */
- { ISFUNC, rl_vi_char_search }, /* F */
- { ISFUNC, rl_vi_fetch_history }, /* G */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* H */
- { ISFUNC, rl_vi_insert_beg }, /* I */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* J */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* K */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* L */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* M */
- { ISFUNC, rl_vi_search_again }, /* N */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* O */
- { ISFUNC, rl_vi_put }, /* P */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Q */
- { ISFUNC, rl_vi_replace }, /* R */
- { ISFUNC, rl_vi_subst }, /* S */
- { ISFUNC, rl_vi_char_search }, /* T */
- { ISFUNC, rl_revert_line }, /* U */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* V */
- { ISFUNC, rl_vi_next_word }, /* W */
- { ISFUNC, rl_rubout }, /* X */
- { ISFUNC, rl_vi_yank_to }, /* Y */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Z */
-
- /* Some more punctuation. */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* [ */
- { ISFUNC, rl_vi_complete }, /* \ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* ] */
- { ISFUNC, rl_vi_first_print }, /* ^ */
- { ISFUNC, rl_vi_yank_arg }, /* _ */
- { ISFUNC, rl_vi_goto_mark }, /* ` */
-
- /* Lowercase alphabet. */
- { ISFUNC, rl_vi_append_mode }, /* a */
- { ISFUNC, rl_vi_prev_word }, /* b */
- { ISFUNC, rl_vi_change_to }, /* c */
- { ISFUNC, rl_vi_delete_to }, /* d */
- { ISFUNC, rl_vi_end_word }, /* e */
- { ISFUNC, rl_vi_char_search }, /* f */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* g */
- { ISFUNC, rl_backward_char }, /* h */
- { ISFUNC, rl_vi_insertion_mode }, /* i */
- { ISFUNC, rl_get_next_history }, /* j */
- { ISFUNC, rl_get_previous_history }, /* k */
- { ISFUNC, rl_forward_char }, /* l */
- { ISFUNC, rl_vi_set_mark }, /* m */
- { ISFUNC, rl_vi_search_again }, /* n */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* o */
- { ISFUNC, rl_vi_put }, /* p */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* q */
- { ISFUNC, rl_vi_change_char }, /* r */
- { ISFUNC, rl_vi_subst }, /* s */
- { ISFUNC, rl_vi_char_search }, /* t */
- { ISFUNC, rl_vi_undo }, /* u */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* v */
- { ISFUNC, rl_vi_next_word }, /* w */
- { ISFUNC, rl_vi_delete }, /* x */
- { ISFUNC, rl_vi_yank_to }, /* y */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* z */
-
- /* Final punctuation. */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* { */
- { ISFUNC, rl_vi_column }, /* | */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* } */
- { ISFUNC, rl_vi_change_case }, /* ~ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* RUBOUT */
-
-#if KEYMAP_SIZE > 128
- /* Undefined keys. */
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 }
-#endif /* KEYMAP_SIZE > 128 */
-};
-
-
-KEYMAP_ENTRY_ARRAY vi_insertion_keymap = {
- /* The regular control keys come first. */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-@ */
- { ISFUNC, rl_insert }, /* Control-a */
- { ISFUNC, rl_insert }, /* Control-b */
- { ISFUNC, rl_insert }, /* Control-c */
- { ISFUNC, rl_vi_eof_maybe }, /* Control-d */
- { ISFUNC, rl_insert }, /* Control-e */
- { ISFUNC, rl_insert }, /* Control-f */
- { ISFUNC, rl_insert }, /* Control-g */
- { ISFUNC, rl_rubout }, /* Control-h */
- { ISFUNC, rl_complete }, /* Control-i */
- { ISFUNC, rl_newline }, /* Control-j */
- { ISFUNC, rl_insert }, /* Control-k */
- { ISFUNC, rl_insert }, /* Control-l */
- { ISFUNC, rl_newline }, /* Control-m */
- { ISFUNC, rl_insert }, /* Control-n */
- { ISFUNC, rl_insert }, /* Control-o */
- { ISFUNC, rl_insert }, /* Control-p */
- { ISFUNC, rl_insert }, /* Control-q */
- { ISFUNC, rl_reverse_search_history }, /* Control-r */
- { ISFUNC, rl_forward_search_history }, /* Control-s */
- { ISFUNC, rl_transpose_chars }, /* Control-t */
- { ISFUNC, rl_unix_line_discard }, /* Control-u */
- { ISFUNC, rl_quoted_insert }, /* Control-v */
- { ISFUNC, rl_unix_word_rubout }, /* Control-w */
- { ISFUNC, rl_insert }, /* Control-x */
- { ISFUNC, rl_yank }, /* Control-y */
- { ISFUNC, rl_insert }, /* Control-z */
-
- { ISFUNC, rl_vi_movement_mode }, /* Control-[ */
- { ISFUNC, rl_insert }, /* Control-\ */
- { ISFUNC, rl_insert }, /* Control-] */
- { ISFUNC, rl_insert }, /* Control-^ */
- { ISFUNC, rl_vi_undo }, /* Control-_ */
-
- /* The start of printing characters. */
- { ISFUNC, rl_insert }, /* SPACE */
- { ISFUNC, rl_insert }, /* ! */
- { ISFUNC, rl_insert }, /* " */
- { ISFUNC, rl_insert }, /* # */
- { ISFUNC, rl_insert }, /* $ */
- { ISFUNC, rl_insert }, /* % */
- { ISFUNC, rl_insert }, /* & */
- { ISFUNC, rl_insert }, /* ' */
- { ISFUNC, rl_insert }, /* ( */
- { ISFUNC, rl_insert }, /* ) */
- { ISFUNC, rl_insert }, /* * */
- { ISFUNC, rl_insert }, /* + */
- { ISFUNC, rl_insert }, /* , */
- { ISFUNC, rl_insert }, /* - */
- { ISFUNC, rl_insert }, /* . */
- { ISFUNC, rl_insert }, /* / */
-
- /* Regular digits. */
- { ISFUNC, rl_insert }, /* 0 */
- { ISFUNC, rl_insert }, /* 1 */
- { ISFUNC, rl_insert }, /* 2 */
- { ISFUNC, rl_insert }, /* 3 */
- { ISFUNC, rl_insert }, /* 4 */
- { ISFUNC, rl_insert }, /* 5 */
- { ISFUNC, rl_insert }, /* 6 */
- { ISFUNC, rl_insert }, /* 7 */
- { ISFUNC, rl_insert }, /* 8 */
- { ISFUNC, rl_insert }, /* 9 */
-
- /* A little more punctuation. */
- { ISFUNC, rl_insert }, /* : */
- { ISFUNC, rl_insert }, /* ; */
- { ISFUNC, rl_insert }, /* < */
- { ISFUNC, rl_insert }, /* = */
- { ISFUNC, rl_insert }, /* > */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* @ */
-
- /* Uppercase alphabet. */
- { ISFUNC, rl_insert }, /* A */
- { ISFUNC, rl_insert }, /* B */
- { ISFUNC, rl_insert }, /* C */
- { ISFUNC, rl_insert }, /* D */
- { ISFUNC, rl_insert }, /* E */
- { ISFUNC, rl_insert }, /* F */
- { ISFUNC, rl_insert }, /* G */
- { ISFUNC, rl_insert }, /* H */
- { ISFUNC, rl_insert }, /* I */
- { ISFUNC, rl_insert }, /* J */
- { ISFUNC, rl_insert }, /* K */
- { ISFUNC, rl_insert }, /* L */
- { ISFUNC, rl_insert }, /* M */
- { ISFUNC, rl_insert }, /* N */
- { ISFUNC, rl_insert }, /* O */
- { ISFUNC, rl_insert }, /* P */
- { ISFUNC, rl_insert }, /* Q */
- { ISFUNC, rl_insert }, /* R */
- { ISFUNC, rl_insert }, /* S */
- { ISFUNC, rl_insert }, /* T */
- { ISFUNC, rl_insert }, /* U */
- { ISFUNC, rl_insert }, /* V */
- { ISFUNC, rl_insert }, /* W */
- { ISFUNC, rl_insert }, /* X */
- { ISFUNC, rl_insert }, /* Y */
- { ISFUNC, rl_insert }, /* Z */
-
- /* Some more punctuation. */
- { ISFUNC, rl_insert }, /* [ */
- { ISFUNC, rl_insert }, /* \ */
- { ISFUNC, rl_insert }, /* ] */
- { ISFUNC, rl_insert }, /* ^ */
- { ISFUNC, rl_insert }, /* _ */
- { ISFUNC, rl_insert }, /* ` */
-
- /* Lowercase alphabet. */
- { ISFUNC, rl_insert }, /* a */
- { ISFUNC, rl_insert }, /* b */
- { ISFUNC, rl_insert }, /* c */
- { ISFUNC, rl_insert }, /* d */
- { ISFUNC, rl_insert }, /* e */
- { ISFUNC, rl_insert }, /* f */
- { ISFUNC, rl_insert }, /* g */
- { ISFUNC, rl_insert }, /* h */
- { ISFUNC, rl_insert }, /* i */
- { ISFUNC, rl_insert }, /* j */
- { ISFUNC, rl_insert }, /* k */
- { ISFUNC, rl_insert }, /* l */
- { ISFUNC, rl_insert }, /* m */
- { ISFUNC, rl_insert }, /* n */
- { ISFUNC, rl_insert }, /* o */
- { ISFUNC, rl_insert }, /* p */
- { ISFUNC, rl_insert }, /* q */
- { ISFUNC, rl_insert }, /* r */
- { ISFUNC, rl_insert }, /* s */
- { ISFUNC, rl_insert }, /* t */
- { ISFUNC, rl_insert }, /* u */
- { ISFUNC, rl_insert }, /* v */
- { ISFUNC, rl_insert }, /* w */
- { ISFUNC, rl_insert }, /* x */
- { ISFUNC, rl_insert }, /* y */
- { ISFUNC, rl_insert }, /* z */
-
- /* Final punctuation. */
- { ISFUNC, rl_insert }, /* { */
- { ISFUNC, rl_insert }, /* | */
- { ISFUNC, rl_insert }, /* } */
- { ISFUNC, rl_insert }, /* ~ */
- { ISFUNC, rl_rubout }, /* RUBOUT */
-
-#if KEYMAP_SIZE > 128
- /* Pure 8-bit characters (128 - 159).
- These might be used in some
- character sets. */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
-
- /* ISO Latin-1 characters (160 - 255) */
- { ISFUNC, rl_insert }, /* No-break space */
- { ISFUNC, rl_insert }, /* Inverted exclamation mark */
- { ISFUNC, rl_insert }, /* Cent sign */
- { ISFUNC, rl_insert }, /* Pound sign */
- { ISFUNC, rl_insert }, /* Currency sign */
- { ISFUNC, rl_insert }, /* Yen sign */
- { ISFUNC, rl_insert }, /* Broken bar */
- { ISFUNC, rl_insert }, /* Section sign */
- { ISFUNC, rl_insert }, /* Diaeresis */
- { ISFUNC, rl_insert }, /* Copyright sign */
- { ISFUNC, rl_insert }, /* Feminine ordinal indicator */
- { ISFUNC, rl_insert }, /* Left pointing double angle quotation mark */
- { ISFUNC, rl_insert }, /* Not sign */
- { ISFUNC, rl_insert }, /* Soft hyphen */
- { ISFUNC, rl_insert }, /* Registered sign */
- { ISFUNC, rl_insert }, /* Macron */
- { ISFUNC, rl_insert }, /* Degree sign */
- { ISFUNC, rl_insert }, /* Plus-minus sign */
- { ISFUNC, rl_insert }, /* Superscript two */
- { ISFUNC, rl_insert }, /* Superscript three */
- { ISFUNC, rl_insert }, /* Acute accent */
- { ISFUNC, rl_insert }, /* Micro sign */
- { ISFUNC, rl_insert }, /* Pilcrow sign */
- { ISFUNC, rl_insert }, /* Middle dot */
- { ISFUNC, rl_insert }, /* Cedilla */
- { ISFUNC, rl_insert }, /* Superscript one */
- { ISFUNC, rl_insert }, /* Masculine ordinal indicator */
- { ISFUNC, rl_insert }, /* Right pointing double angle quotation mark */
- { ISFUNC, rl_insert }, /* Vulgar fraction one quarter */
- { ISFUNC, rl_insert }, /* Vulgar fraction one half */
- { ISFUNC, rl_insert }, /* Vulgar fraction three quarters */
- { ISFUNC, rl_insert }, /* Inverted questionk mark */
- { ISFUNC, rl_insert }, /* Latin capital letter a with grave */
- { ISFUNC, rl_insert }, /* Latin capital letter a with acute */
- { ISFUNC, rl_insert }, /* Latin capital letter a with circumflex */
- { ISFUNC, rl_insert }, /* Latin capital letter a with tilde */
- { ISFUNC, rl_insert }, /* Latin capital letter a with diaeresis */
- { ISFUNC, rl_insert }, /* Latin capital letter a with ring above */
- { ISFUNC, rl_insert }, /* Latin capital letter ae */
- { ISFUNC, rl_insert }, /* Latin capital letter c with cedilla */
- { ISFUNC, rl_insert }, /* Latin capital letter e with grave */
- { ISFUNC, rl_insert }, /* Latin capital letter e with acute */
- { ISFUNC, rl_insert }, /* Latin capital letter e with circumflex */
- { ISFUNC, rl_insert }, /* Latin capital letter e with diaeresis */
- { ISFUNC, rl_insert }, /* Latin capital letter i with grave */
- { ISFUNC, rl_insert }, /* Latin capital letter i with acute */
- { ISFUNC, rl_insert }, /* Latin capital letter i with circumflex */
- { ISFUNC, rl_insert }, /* Latin capital letter i with diaeresis */
- { ISFUNC, rl_insert }, /* Latin capital letter eth (Icelandic) */
- { ISFUNC, rl_insert }, /* Latin capital letter n with tilde */
- { ISFUNC, rl_insert }, /* Latin capital letter o with grave */
- { ISFUNC, rl_insert }, /* Latin capital letter o with acute */
- { ISFUNC, rl_insert }, /* Latin capital letter o with circumflex */
- { ISFUNC, rl_insert }, /* Latin capital letter o with tilde */
- { ISFUNC, rl_insert }, /* Latin capital letter o with diaeresis */
- { ISFUNC, rl_insert }, /* Multiplication sign */
- { ISFUNC, rl_insert }, /* Latin capital letter o with stroke */
- { ISFUNC, rl_insert }, /* Latin capital letter u with grave */
- { ISFUNC, rl_insert }, /* Latin capital letter u with acute */
- { ISFUNC, rl_insert }, /* Latin capital letter u with circumflex */
- { ISFUNC, rl_insert }, /* Latin capital letter u with diaeresis */
- { ISFUNC, rl_insert }, /* Latin capital letter Y with acute */
- { ISFUNC, rl_insert }, /* Latin capital letter thorn (Icelandic) */
- { ISFUNC, rl_insert }, /* Latin small letter sharp s (German) */
- { ISFUNC, rl_insert }, /* Latin small letter a with grave */
- { ISFUNC, rl_insert }, /* Latin small letter a with acute */
- { ISFUNC, rl_insert }, /* Latin small letter a with circumflex */
- { ISFUNC, rl_insert }, /* Latin small letter a with tilde */
- { ISFUNC, rl_insert }, /* Latin small letter a with diaeresis */
- { ISFUNC, rl_insert }, /* Latin small letter a with ring above */
- { ISFUNC, rl_insert }, /* Latin small letter ae */
- { ISFUNC, rl_insert }, /* Latin small letter c with cedilla */
- { ISFUNC, rl_insert }, /* Latin small letter e with grave */
- { ISFUNC, rl_insert }, /* Latin small letter e with acute */
- { ISFUNC, rl_insert }, /* Latin small letter e with circumflex */
- { ISFUNC, rl_insert }, /* Latin small letter e with diaeresis */
- { ISFUNC, rl_insert }, /* Latin small letter i with grave */
- { ISFUNC, rl_insert }, /* Latin small letter i with acute */
- { ISFUNC, rl_insert }, /* Latin small letter i with circumflex */
- { ISFUNC, rl_insert }, /* Latin small letter i with diaeresis */
- { ISFUNC, rl_insert }, /* Latin small letter eth (Icelandic) */
- { ISFUNC, rl_insert }, /* Latin small letter n with tilde */
- { ISFUNC, rl_insert }, /* Latin small letter o with grave */
- { ISFUNC, rl_insert }, /* Latin small letter o with acute */
- { ISFUNC, rl_insert }, /* Latin small letter o with circumflex */
- { ISFUNC, rl_insert }, /* Latin small letter o with tilde */
- { ISFUNC, rl_insert }, /* Latin small letter o with diaeresis */
- { ISFUNC, rl_insert }, /* Division sign */
- { ISFUNC, rl_insert }, /* Latin small letter o with stroke */
- { ISFUNC, rl_insert }, /* Latin small letter u with grave */
- { ISFUNC, rl_insert }, /* Latin small letter u with acute */
- { ISFUNC, rl_insert }, /* Latin small letter u with circumflex */
- { ISFUNC, rl_insert }, /* Latin small letter u with diaeresis */
- { ISFUNC, rl_insert }, /* Latin small letter y with acute */
- { ISFUNC, rl_insert }, /* Latin small letter thorn (Icelandic) */
- { ISFUNC, rl_insert } /* Latin small letter y with diaeresis */
-#endif /* KEYMAP_SIZE > 128 */
-};
-
-/* Unused for the time being. */
-#if 0
-KEYMAP_ENTRY_ARRAY vi_escape_keymap = {
- /* The regular control keys come first. */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-@ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-a */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-b */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-c */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-d */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-e */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-f */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-g */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-h */
- { ISFUNC, rl_tab_insert}, /* Control-i */
- { ISFUNC, rl_emacs_editing_mode}, /* Control-j */
- { ISFUNC, rl_kill_line }, /* Control-k */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-l */
- { ISFUNC, rl_emacs_editing_mode}, /* Control-m */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-n */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-o */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-p */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-q */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-r */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-s */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-t */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-u */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-v */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-w */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-x */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-y */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-z */
-
- { ISFUNC, rl_vi_movement_mode }, /* Control-[ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-\ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-] */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-^ */
- { ISFUNC, rl_vi_undo }, /* Control-_ */
-
- /* The start of printing characters. */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* SPACE */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* ! */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* " */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* # */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* $ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* % */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* & */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* ' */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* ( */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* ) */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* * */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* + */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* , */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* - */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* . */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* / */
-
- /* Regular digits. */
- { ISFUNC, rl_vi_arg_digit }, /* 0 */
- { ISFUNC, rl_vi_arg_digit }, /* 1 */
- { ISFUNC, rl_vi_arg_digit }, /* 2 */
- { ISFUNC, rl_vi_arg_digit }, /* 3 */
- { ISFUNC, rl_vi_arg_digit }, /* 4 */
- { ISFUNC, rl_vi_arg_digit }, /* 5 */
- { ISFUNC, rl_vi_arg_digit }, /* 6 */
- { ISFUNC, rl_vi_arg_digit }, /* 7 */
- { ISFUNC, rl_vi_arg_digit }, /* 8 */
- { ISFUNC, rl_vi_arg_digit }, /* 9 */
-
- /* A little more punctuation. */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* : */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* ; */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* < */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* = */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* > */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* ? */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* @ */
-
- /* Uppercase alphabet. */
- { ISFUNC, rl_do_lowercase_version }, /* A */
- { ISFUNC, rl_do_lowercase_version }, /* B */
- { ISFUNC, rl_do_lowercase_version }, /* C */
- { ISFUNC, rl_do_lowercase_version }, /* D */
- { ISFUNC, rl_do_lowercase_version }, /* E */
- { ISFUNC, rl_do_lowercase_version }, /* F */
- { ISFUNC, rl_do_lowercase_version }, /* G */
- { ISFUNC, rl_do_lowercase_version }, /* H */
- { ISFUNC, rl_do_lowercase_version }, /* I */
- { ISFUNC, rl_do_lowercase_version }, /* J */
- { ISFUNC, rl_do_lowercase_version }, /* K */
- { ISFUNC, rl_do_lowercase_version }, /* L */
- { ISFUNC, rl_do_lowercase_version }, /* M */
- { ISFUNC, rl_do_lowercase_version }, /* N */
- { ISFUNC, rl_do_lowercase_version }, /* O */
- { ISFUNC, rl_do_lowercase_version }, /* P */
- { ISFUNC, rl_do_lowercase_version }, /* Q */
- { ISFUNC, rl_do_lowercase_version }, /* R */
- { ISFUNC, rl_do_lowercase_version }, /* S */
- { ISFUNC, rl_do_lowercase_version }, /* T */
- { ISFUNC, rl_do_lowercase_version }, /* U */
- { ISFUNC, rl_do_lowercase_version }, /* V */
- { ISFUNC, rl_do_lowercase_version }, /* W */
- { ISFUNC, rl_do_lowercase_version }, /* X */
- { ISFUNC, rl_do_lowercase_version }, /* Y */
- { ISFUNC, rl_do_lowercase_version }, /* Z */
-
- /* Some more punctuation. */
- { ISFUNC, rl_arrow_keys }, /* [ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* \ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* ] */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* ^ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* _ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* ` */
-
- /* Lowercase alphabet. */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* a */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* b */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* c */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* d */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* e */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* f */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* g */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* h */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* i */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* j */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* k */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* l */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* m */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* n */
- { ISFUNC, rl_arrow_keys }, /* o */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* p */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* q */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* r */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* s */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* t */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* u */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* v */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* w */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* x */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* y */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* z */
-
- /* Final punctuation. */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* { */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* | */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* } */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* ~ */
- { ISFUNC, rl_backward_kill_word }, /* RUBOUT */
-
-#if KEYMAP_SIZE > 128
- /* Undefined keys. */
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 }
-#endif /* KEYMAP_SIZE > 128 */
-};
-#endif
diff --git a/readline-4.3.orig/vi_mode.c b/readline-4.3.orig/vi_mode.c
deleted file mode 100644
index 5d146b3..0000000
--- a/readline-4.3.orig/vi_mode.c
+++ /dev/null
@@ -1,1485 +0,0 @@
-/* vi_mode.c -- A vi emulation mode for Bash.
- Derived from code written by Jeff Sparkes (jsparkes@bnr.ca). */
-
-/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-/* **************************************************************** */
-/* */
-/* VI Emulation Mode */
-/* */
-/* **************************************************************** */
-#include "rlconf.h"
-
-#if defined (VI_MODE)
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <sys/types.h>
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#if defined (HAVE_UNISTD_H)
-# include <unistd.h>
-#endif
-
-#include <stdio.h>
-
-/* Some standard library routines. */
-#include "rldefs.h"
-#include "rlmbutil.h"
-
-#include "readline.h"
-#include "history.h"
-
-#include "rlprivate.h"
-#include "xmalloc.h"
-
-#ifndef member
-#define member(c, s) ((c) ? (char *)strchr ((s), (c)) != (char *)NULL : 0)
-#endif
-
-/* Non-zero means enter insertion mode. */
-static int _rl_vi_doing_insert;
-
-/* Command keys which do movement for xxx_to commands. */
-static const char *vi_motion = " hl^$0ftFT;,%wbeWBE|";
-
-/* Keymap used for vi replace characters. Created dynamically since
- rarely used. */
-static Keymap vi_replace_map;
-
-/* The number of characters inserted in the last replace operation. */
-static int vi_replace_count;
-
-/* If non-zero, we have text inserted after a c[motion] command that put
- us implicitly into insert mode. Some people want this text to be
- attached to the command so that it is `redoable' with `.'. */
-static int vi_continued_command;
-static char *vi_insert_buffer;
-static int vi_insert_buffer_size;
-
-static int _rl_vi_last_command = 'i'; /* default `.' puts you in insert mode */
-static int _rl_vi_last_repeat = 1;
-static int _rl_vi_last_arg_sign = 1;
-static int _rl_vi_last_motion;
-#if defined (HANDLE_MULTIBYTE)
-static char _rl_vi_last_search_mbchar[MB_LEN_MAX];
-#else
-static int _rl_vi_last_search_char;
-#endif
-static int _rl_vi_last_replacement;
-
-static int _rl_vi_last_key_before_insert;
-
-static int vi_redoing;
-
-/* Text modification commands. These are the `redoable' commands. */
-static const char *vi_textmod = "_*\\AaIiCcDdPpYyRrSsXx~";
-
-/* Arrays for the saved marks. */
-static int vi_mark_chars['z' - 'a' + 1];
-
-static void _rl_vi_stuff_insert PARAMS((int));
-static void _rl_vi_save_insert PARAMS((UNDO_LIST *));
-static int rl_digit_loop1 PARAMS((void));
-
-void
-_rl_vi_initialize_line ()
-{
- register int i;
-
- for (i = 0; i < sizeof (vi_mark_chars) / sizeof (int); i++)
- vi_mark_chars[i] = -1;
-}
-
-void
-_rl_vi_reset_last ()
-{
- _rl_vi_last_command = 'i';
- _rl_vi_last_repeat = 1;
- _rl_vi_last_arg_sign = 1;
- _rl_vi_last_motion = 0;
-}
-
-void
-_rl_vi_set_last (key, repeat, sign)
- int key, repeat, sign;
-{
- _rl_vi_last_command = key;
- _rl_vi_last_repeat = repeat;
- _rl_vi_last_arg_sign = sign;
-}
-
-/* Is the command C a VI mode text modification command? */
-int
-_rl_vi_textmod_command (c)
- int c;
-{
- return (member (c, vi_textmod));
-}
-
-static void
-_rl_vi_stuff_insert (count)
- int count;
-{
- rl_begin_undo_group ();
- while (count--)
- rl_insert_text (vi_insert_buffer);
- rl_end_undo_group ();
-}
-
-/* Bound to `.'. Called from command mode, so we know that we have to
- redo a text modification command. The default for _rl_vi_last_command
- puts you back into insert mode. */
-int
-rl_vi_redo (count, c)
- int count, c;
-{
- int r;
-
- if (!rl_explicit_arg)
- {
- rl_numeric_arg = _rl_vi_last_repeat;
- rl_arg_sign = _rl_vi_last_arg_sign;
- }
-
- r = 0;
- vi_redoing = 1;
- /* If we're redoing an insert with `i', stuff in the inserted text
- and do not go into insertion mode. */
- if (_rl_vi_last_command == 'i' && vi_insert_buffer && *vi_insert_buffer)
- {
- _rl_vi_stuff_insert (count);
- /* And back up point over the last character inserted. */
- if (rl_point > 0)
- rl_point--;
- }
- else
- r = _rl_dispatch (_rl_vi_last_command, _rl_keymap);
- vi_redoing = 0;
-
- return (r);
-}
-
-/* A placeholder for further expansion. */
-int
-rl_vi_undo (count, key)
- int count, key;
-{
- return (rl_undo_command (count, key));
-}
-
-/* Yank the nth arg from the previous line into this line at point. */
-int
-rl_vi_yank_arg (count, key)
- int count, key;
-{
- /* Readline thinks that the first word on a line is the 0th, while vi
- thinks the first word on a line is the 1st. Compensate. */
- if (rl_explicit_arg)
- rl_yank_nth_arg (count - 1, 0);
- else
- rl_yank_nth_arg ('$', 0);
-
- return (0);
-}
-
-/* With an argument, move back that many history lines, else move to the
- beginning of history. */
-int
-rl_vi_fetch_history (count, c)
- int count, c;
-{
- int wanted;
-
- /* Giving an argument of n means we want the nth command in the history
- file. The command number is interpreted the same way that the bash
- `history' command does it -- that is, giving an argument count of 450
- to this command would get the command listed as number 450 in the
- output of `history'. */
- if (rl_explicit_arg)
- {
- wanted = history_base + where_history () - count;
- if (wanted <= 0)
- rl_beginning_of_history (0, 0);
- else
- rl_get_previous_history (wanted, c);
- }
- else
- rl_beginning_of_history (count, 0);
- return (0);
-}
-
-/* Search again for the last thing searched for. */
-int
-rl_vi_search_again (count, key)
- int count, key;
-{
- switch (key)
- {
- case 'n':
- rl_noninc_reverse_search_again (count, key);
- break;
-
- case 'N':
- rl_noninc_forward_search_again (count, key);
- break;
- }
- return (0);
-}
-
-/* Do a vi style search. */
-int
-rl_vi_search (count, key)
- int count, key;
-{
- switch (key)
- {
- case '?':
- rl_noninc_forward_search (count, key);
- break;
-
- case '/':
- rl_noninc_reverse_search (count, key);
- break;
-
- default:
- rl_ding ();
- break;
- }
- return (0);
-}
-
-/* Completion, from vi's point of view. */
-int
-rl_vi_complete (ignore, key)
- int ignore, key;
-{
- if ((rl_point < rl_end) && (!whitespace (rl_line_buffer[rl_point])))
- {
- if (!whitespace (rl_line_buffer[rl_point + 1]))
- rl_vi_end_word (1, 'E');
- rl_point++;
- }
-
- if (key == '*')
- rl_complete_internal ('*'); /* Expansion and replacement. */
- else if (key == '=')
- rl_complete_internal ('?'); /* List possible completions. */
- else if (key == '\\')
- rl_complete_internal (TAB); /* Standard Readline completion. */
- else
- rl_complete (0, key);
-
- if (key == '*' || key == '\\')
- {
- _rl_vi_set_last (key, 1, rl_arg_sign);
- rl_vi_insertion_mode (1, key);
- }
- return (0);
-}
-
-/* Tilde expansion for vi mode. */
-int
-rl_vi_tilde_expand (ignore, key)
- int ignore, key;
-{
- rl_tilde_expand (0, key);
- _rl_vi_set_last (key, 1, rl_arg_sign); /* XXX */
- rl_vi_insertion_mode (1, key);
- return (0);
-}
-
-/* Previous word in vi mode. */
-int
-rl_vi_prev_word (count, key)
- int count, key;
-{
- if (count < 0)
- return (rl_vi_next_word (-count, key));
-
- if (rl_point == 0)
- {
- rl_ding ();
- return (0);
- }
-
- if (_rl_uppercase_p (key))
- rl_vi_bWord (count, key);
- else
- rl_vi_bword (count, key);
-
- return (0);
-}
-
-/* Next word in vi mode. */
-int
-rl_vi_next_word (count, key)
- int count, key;
-{
- if (count < 0)
- return (rl_vi_prev_word (-count, key));
-
- if (rl_point >= (rl_end - 1))
- {
- rl_ding ();
- return (0);
- }
-
- if (_rl_uppercase_p (key))
- rl_vi_fWord (count, key);
- else
- rl_vi_fword (count, key);
- return (0);
-}
-
-/* Move to the end of the ?next? word. */
-int
-rl_vi_end_word (count, key)
- int count, key;
-{
- if (count < 0)
- {
- rl_ding ();
- return -1;
- }
-
- if (_rl_uppercase_p (key))
- rl_vi_eWord (count, key);
- else
- rl_vi_eword (count, key);
- return (0);
-}
-
-/* Move forward a word the way that 'W' does. */
-int
-rl_vi_fWord (count, ignore)
- int count, ignore;
-{
- while (count-- && rl_point < (rl_end - 1))
- {
- /* Skip until whitespace. */
- while (!whitespace (rl_line_buffer[rl_point]) && rl_point < rl_end)
- rl_point++;
-
- /* Now skip whitespace. */
- while (whitespace (rl_line_buffer[rl_point]) && rl_point < rl_end)
- rl_point++;
- }
- return (0);
-}
-
-int
-rl_vi_bWord (count, ignore)
- int count, ignore;
-{
- while (count-- && rl_point > 0)
- {
- /* If we are at the start of a word, move back to whitespace so
- we will go back to the start of the previous word. */
- if (!whitespace (rl_line_buffer[rl_point]) &&
- whitespace (rl_line_buffer[rl_point - 1]))
- rl_point--;
-
- while (rl_point > 0 && whitespace (rl_line_buffer[rl_point]))
- rl_point--;
-
- if (rl_point > 0)
- {
- while (--rl_point >= 0 && !whitespace (rl_line_buffer[rl_point]));
- rl_point++;
- }
- }
- return (0);
-}
-
-int
-rl_vi_eWord (count, ignore)
- int count, ignore;
-{
- while (count-- && rl_point < (rl_end - 1))
- {
- if (!whitespace (rl_line_buffer[rl_point]))
- rl_point++;
-
- /* Move to the next non-whitespace character (to the start of the
- next word). */
- while (++rl_point < rl_end && whitespace (rl_line_buffer[rl_point]));
-
- if (rl_point && rl_point < rl_end)
- {
- /* Skip whitespace. */
- while (rl_point < rl_end && whitespace (rl_line_buffer[rl_point]))
- rl_point++;
-
- /* Skip until whitespace. */
- while (rl_point < rl_end && !whitespace (rl_line_buffer[rl_point]))
- rl_point++;
-
- /* Move back to the last character of the word. */
- rl_point--;
- }
- }
- return (0);
-}
-
-int
-rl_vi_fword (count, ignore)
- int count, ignore;
-{
- while (count-- && rl_point < (rl_end - 1))
- {
- /* Move to white space (really non-identifer). */
- if (_rl_isident (rl_line_buffer[rl_point]))
- {
- while (_rl_isident (rl_line_buffer[rl_point]) && rl_point < rl_end)
- rl_point++;
- }
- else /* if (!whitespace (rl_line_buffer[rl_point])) */
- {
- while (!_rl_isident (rl_line_buffer[rl_point]) &&
- !whitespace (rl_line_buffer[rl_point]) && rl_point < rl_end)
- rl_point++;
- }
-
- /* Move past whitespace. */
- while (whitespace (rl_line_buffer[rl_point]) && rl_point < rl_end)
- rl_point++;
- }
- return (0);
-}
-
-int
-rl_vi_bword (count, ignore)
- int count, ignore;
-{
- while (count-- && rl_point > 0)
- {
- int last_is_ident;
-
- /* If we are at the start of a word, move back to whitespace
- so we will go back to the start of the previous word. */
- if (!whitespace (rl_line_buffer[rl_point]) &&
- whitespace (rl_line_buffer[rl_point - 1]))
- rl_point--;
-
- /* If this character and the previous character are `opposite', move
- back so we don't get messed up by the rl_point++ down there in
- the while loop. Without this code, words like `l;' screw up the
- function. */
- last_is_ident = _rl_isident (rl_line_buffer[rl_point - 1]);
- if ((_rl_isident (rl_line_buffer[rl_point]) && !last_is_ident) ||
- (!_rl_isident (rl_line_buffer[rl_point]) && last_is_ident))
- rl_point--;
-
- while (rl_point > 0 && whitespace (rl_line_buffer[rl_point]))
- rl_point--;
-
- if (rl_point > 0)
- {
- if (_rl_isident (rl_line_buffer[rl_point]))
- while (--rl_point >= 0 && _rl_isident (rl_line_buffer[rl_point]));
- else
- while (--rl_point >= 0 && !_rl_isident (rl_line_buffer[rl_point]) &&
- !whitespace (rl_line_buffer[rl_point]));
- rl_point++;
- }
- }
- return (0);
-}
-
-int
-rl_vi_eword (count, ignore)
- int count, ignore;
-{
- while (count-- && rl_point < rl_end - 1)
- {
- if (!whitespace (rl_line_buffer[rl_point]))
- rl_point++;
-
- while (rl_point < rl_end && whitespace (rl_line_buffer[rl_point]))
- rl_point++;
-
- if (rl_point < rl_end)
- {
- if (_rl_isident (rl_line_buffer[rl_point]))
- while (++rl_point < rl_end && _rl_isident (rl_line_buffer[rl_point]));
- else
- while (++rl_point < rl_end && !_rl_isident (rl_line_buffer[rl_point])
- && !whitespace (rl_line_buffer[rl_point]));
- }
- rl_point--;
- }
- return (0);
-}
-
-int
-rl_vi_insert_beg (count, key)
- int count, key;
-{
- rl_beg_of_line (1, key);
- rl_vi_insertion_mode (1, key);
- return (0);
-}
-
-int
-rl_vi_append_mode (count, key)
- int count, key;
-{
- if (rl_point < rl_end)
- {
- if (MB_CUR_MAX == 1 || rl_byte_oriented)
- rl_point++;
- else
- {
- int point = rl_point;
- rl_forward_char (1, key);
- if (point == rl_point)
- rl_point = rl_end;
- }
- }
- rl_vi_insertion_mode (1, key);
- return (0);
-}
-
-int
-rl_vi_append_eol (count, key)
- int count, key;
-{
- rl_end_of_line (1, key);
- rl_vi_append_mode (1, key);
- return (0);
-}
-
-/* What to do in the case of C-d. */
-int
-rl_vi_eof_maybe (count, c)
- int count, c;
-{
- return (rl_newline (1, '\n'));
-}
-
-/* Insertion mode stuff. */
-
-/* Switching from one mode to the other really just involves
- switching keymaps. */
-int
-rl_vi_insertion_mode (count, key)
- int count, key;
-{
- _rl_keymap = vi_insertion_keymap;
- _rl_vi_last_key_before_insert = key;
- return (0);
-}
-
-static void
-_rl_vi_save_insert (up)
- UNDO_LIST *up;
-{
- int len, start, end;
-
- if (up == 0)
- {
- if (vi_insert_buffer_size >= 1)
- vi_insert_buffer[0] = '\0';
- return;
- }
-
- start = up->start;
- end = up->end;
- len = end - start + 1;
- if (len >= vi_insert_buffer_size)
- {
- vi_insert_buffer_size += (len + 32) - (len % 32);
- vi_insert_buffer = (char *)xrealloc (vi_insert_buffer, vi_insert_buffer_size);
- }
- strncpy (vi_insert_buffer, rl_line_buffer + start, len - 1);
- vi_insert_buffer[len-1] = '\0';
-}
-
-void
-_rl_vi_done_inserting ()
-{
- if (_rl_vi_doing_insert)
- {
- /* The `C', `s', and `S' commands set this. */
- rl_end_undo_group ();
- /* Now, the text between rl_undo_list->next->start and
- rl_undo_list->next->end is what was inserted while in insert
- mode. It gets copied to VI_INSERT_BUFFER because it depends
- on absolute indices into the line which may change (though they
- probably will not). */
- _rl_vi_doing_insert = 0;
- _rl_vi_save_insert (rl_undo_list->next);
- vi_continued_command = 1;
- }
- else
- {
- if (_rl_vi_last_key_before_insert == 'i' && rl_undo_list)
- _rl_vi_save_insert (rl_undo_list);
- /* XXX - Other keys probably need to be checked. */
- else if (_rl_vi_last_key_before_insert == 'C')
- rl_end_undo_group ();
- while (_rl_undo_group_level > 0)
- rl_end_undo_group ();
- vi_continued_command = 0;
- }
-}
-
-int
-rl_vi_movement_mode (count, key)
- int count, key;
-{
- if (rl_point > 0)
- rl_backward_char (1, key);
-
- _rl_keymap = vi_movement_keymap;
- _rl_vi_done_inserting ();
- return (0);
-}
-
-int
-rl_vi_arg_digit (count, c)
- int count, c;
-{
- if (c == '0' && rl_numeric_arg == 1 && !rl_explicit_arg)
- return (rl_beg_of_line (1, c));
- else
- return (rl_digit_argument (count, c));
-}
-
-/* Change the case of the next COUNT characters. */
-#if defined (HANDLE_MULTIBYTE)
-static int
-_rl_vi_change_mbchar_case (count)
- int count;
-{
- wchar_t wc;
- char mb[MB_LEN_MAX];
- mbstate_t ps;
-
- memset (&ps, 0, sizeof (mbstate_t));
- if (_rl_adjust_point (rl_line_buffer, rl_point, &ps) > 0)
- count--;
- while (count-- && rl_point < rl_end)
- {
- mbrtowc (&wc, rl_line_buffer + rl_point, rl_end - rl_point, &ps);
- if (iswupper (wc))
- wc = towlower (wc);
- else if (iswlower (wc))
- wc = towupper (wc);
- else
- {
- /* Just skip over chars neither upper nor lower case */
- rl_forward_char (1, 0);
- continue;
- }
-
- /* Vi is kind of strange here. */
- if (wc)
- {
- wctomb (mb, wc);
- rl_begin_undo_group ();
- rl_delete (1, 0);
- rl_insert_text (mb);
- rl_end_undo_group ();
- rl_vi_check ();
- }
- else
- rl_forward_char (1, 0);
- }
-
- return 0;
-}
-#endif
-
-int
-rl_vi_change_case (count, ignore)
- int count, ignore;
-{
- char c = 0;
-
- /* Don't try this on an empty line. */
- if (rl_point >= rl_end)
- return (0);
-
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- return (_rl_vi_change_mbchar_case (count));
-#endif
-
- while (count-- && rl_point < rl_end)
- {
- if (_rl_uppercase_p (rl_line_buffer[rl_point]))
- c = _rl_to_lower (rl_line_buffer[rl_point]);
- else if (_rl_lowercase_p (rl_line_buffer[rl_point]))
- c = _rl_to_upper (rl_line_buffer[rl_point]);
- else
- {
- /* Just skip over characters neither upper nor lower case. */
- rl_forward_char (1, c);
- continue;
- }
-
- /* Vi is kind of strange here. */
- if (c)
- {
- rl_begin_undo_group ();
- rl_delete (1, c);
- _rl_insert_char (1, c);
- rl_end_undo_group ();
- rl_vi_check ();
- }
- else
- rl_forward_char (1, c);
- }
- return (0);
-}
-
-int
-rl_vi_put (count, key)
- int count, key;
-{
- if (!_rl_uppercase_p (key) && (rl_point + 1 <= rl_end))
- rl_point = _rl_find_next_mbchar (rl_line_buffer, rl_point, 1, MB_FIND_NONZERO);
-
- rl_yank (1, key);
- rl_backward_char (1, key);
- return (0);
-}
-
-int
-rl_vi_check ()
-{
- if (rl_point && rl_point == rl_end)
- {
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- rl_point = _rl_find_prev_mbchar (rl_line_buffer, rl_point, MB_FIND_NONZERO);
- else
- rl_point--;
- }
- return (0);
-}
-
-int
-rl_vi_column (count, key)
- int count, key;
-{
- if (count > rl_end)
- rl_end_of_line (1, key);
- else
- rl_point = count - 1;
- return (0);
-}
-
-int
-rl_vi_domove (key, nextkey)
- int key, *nextkey;
-{
- int c, save;
- int old_end;
-
- rl_mark = rl_point;
- RL_SETSTATE(RL_STATE_MOREINPUT);
- c = rl_read_key ();
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
- *nextkey = c;
-
- if (!member (c, vi_motion))
- {
- if (_rl_digit_p (c))
- {
- save = rl_numeric_arg;
- rl_numeric_arg = _rl_digit_value (c);
- rl_digit_loop1 ();
- rl_numeric_arg *= save;
- RL_SETSTATE(RL_STATE_MOREINPUT);
- c = rl_read_key (); /* real command */
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
- *nextkey = c;
- }
- else if (key == c && (key == 'd' || key == 'y' || key == 'c'))
- {
- rl_mark = rl_end;
- rl_beg_of_line (1, c);
- _rl_vi_last_motion = c;
- return (0);
- }
- else
- return (-1);
- }
-
- _rl_vi_last_motion = c;
-
- /* Append a blank character temporarily so that the motion routines
- work right at the end of the line. */
- old_end = rl_end;
- rl_line_buffer[rl_end++] = ' ';
- rl_line_buffer[rl_end] = '\0';
-
- _rl_dispatch (c, _rl_keymap);
-
- /* Remove the blank that we added. */
- rl_end = old_end;
- rl_line_buffer[rl_end] = '\0';
- if (rl_point > rl_end)
- rl_point = rl_end;
-
- /* No change in position means the command failed. */
- if (rl_mark == rl_point)
- return (-1);
-
- /* rl_vi_f[wW]ord () leaves the cursor on the first character of the next
- word. If we are not at the end of the line, and we are on a
- non-whitespace character, move back one (presumably to whitespace). */
- if ((_rl_to_upper (c) == 'W') && rl_point < rl_end && rl_point > rl_mark &&
- !whitespace (rl_line_buffer[rl_point]))
- rl_point--;
-
- /* If cw or cW, back up to the end of a word, so the behaviour of ce
- or cE is the actual result. Brute-force, no subtlety. */
- if (key == 'c' && rl_point >= rl_mark && (_rl_to_upper (c) == 'W'))
- {
- /* Don't move farther back than where we started. */
- while (rl_point > rl_mark && whitespace (rl_line_buffer[rl_point]))
- rl_point--;
-
- /* Posix.2 says that if cw or cW moves the cursor towards the end of
- the line, the character under the cursor should be deleted. */
- if (rl_point == rl_mark)
- rl_point++;
- else
- {
- /* Move past the end of the word so that the kill doesn't
- remove the last letter of the previous word. Only do this
- if we are not at the end of the line. */
- if (rl_point >= 0 && rl_point < (rl_end - 1) && !whitespace (rl_line_buffer[rl_point]))
- rl_point++;
- }
- }
-
- if (rl_mark < rl_point)
- SWAP (rl_point, rl_mark);
-
- return (0);
-}
-
-/* A simplified loop for vi. Don't dispatch key at end.
- Don't recognize minus sign?
- Should this do rl_save_prompt/rl_restore_prompt? */
-static int
-rl_digit_loop1 ()
-{
- int key, c;
-
- RL_SETSTATE(RL_STATE_NUMERICARG);
- while (1)
- {
- if (rl_numeric_arg > 1000000)
- {
- rl_explicit_arg = rl_numeric_arg = 0;
- rl_ding ();
- rl_clear_message ();
- RL_UNSETSTATE(RL_STATE_NUMERICARG);
- return 1;
- }
- rl_message ("(arg: %d) ", rl_arg_sign * rl_numeric_arg);
- RL_SETSTATE(RL_STATE_MOREINPUT);
- key = c = rl_read_key ();
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
-
- if (c >= 0 && _rl_keymap[c].type == ISFUNC &&
- _rl_keymap[c].function == rl_universal_argument)
- {
- rl_numeric_arg *= 4;
- continue;
- }
-
- c = UNMETA (c);
- if (_rl_digit_p (c))
- {
- if (rl_explicit_arg)
- rl_numeric_arg = (rl_numeric_arg * 10) + _rl_digit_value (c);
- else
- rl_numeric_arg = _rl_digit_value (c);
- rl_explicit_arg = 1;
- }
- else
- {
- rl_clear_message ();
- rl_stuff_char (key);
- break;
- }
- }
-
- RL_UNSETSTATE(RL_STATE_NUMERICARG);
- return (0);
-}
-
-int
-rl_vi_delete_to (count, key)
- int count, key;
-{
- int c;
-
- if (_rl_uppercase_p (key))
- rl_stuff_char ('$');
- else if (vi_redoing)
- rl_stuff_char (_rl_vi_last_motion);
-
- if (rl_vi_domove (key, &c))
- {
- rl_ding ();
- return -1;
- }
-
- /* These are the motion commands that do not require adjusting the
- mark. */
- if ((strchr (" l|h^0bB", c) == 0) && (rl_mark < rl_end))
- rl_mark++;
-
- rl_kill_text (rl_point, rl_mark);
- return (0);
-}
-
-int
-rl_vi_change_to (count, key)
- int count, key;
-{
- int c, start_pos;
-
- if (_rl_uppercase_p (key))
- rl_stuff_char ('$');
- else if (vi_redoing)
- rl_stuff_char (_rl_vi_last_motion);
-
- start_pos = rl_point;
-
- if (rl_vi_domove (key, &c))
- {
- rl_ding ();
- return -1;
- }
-
- /* These are the motion commands that do not require adjusting the
- mark. c[wW] are handled by special-case code in rl_vi_domove(),
- and already leave the mark at the correct location. */
- if ((strchr (" l|hwW^0bB", c) == 0) && (rl_mark < rl_end))
- rl_mark++;
-
- /* The cursor never moves with c[wW]. */
- if ((_rl_to_upper (c) == 'W') && rl_point < start_pos)
- rl_point = start_pos;
-
- if (vi_redoing)
- {
- if (vi_insert_buffer && *vi_insert_buffer)
- rl_begin_undo_group ();
- rl_delete_text (rl_point, rl_mark);
- if (vi_insert_buffer && *vi_insert_buffer)
- {
- rl_insert_text (vi_insert_buffer);
- rl_end_undo_group ();
- }
- }
- else
- {
- rl_begin_undo_group (); /* to make the `u' command work */
- rl_kill_text (rl_point, rl_mark);
- /* `C' does not save the text inserted for undoing or redoing. */
- if (_rl_uppercase_p (key) == 0)
- _rl_vi_doing_insert = 1;
- _rl_vi_set_last (key, count, rl_arg_sign);
- rl_vi_insertion_mode (1, key);
- }
-
- return (0);
-}
-
-int
-rl_vi_yank_to (count, key)
- int count, key;
-{
- int c, save = rl_point;
-
- if (_rl_uppercase_p (key))
- rl_stuff_char ('$');
-
- if (rl_vi_domove (key, &c))
- {
- rl_ding ();
- return -1;
- }
-
- /* These are the motion commands that do not require adjusting the
- mark. */
- if ((strchr (" l|h^0%bB", c) == 0) && (rl_mark < rl_end))
- rl_mark++;
-
- rl_begin_undo_group ();
- rl_kill_text (rl_point, rl_mark);
- rl_end_undo_group ();
- rl_do_undo ();
- rl_point = save;
-
- return (0);
-}
-
-int
-rl_vi_delete (count, key)
- int count, key;
-{
- int end;
-
- if (rl_end == 0)
- {
- rl_ding ();
- return -1;
- }
-
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- end = _rl_find_next_mbchar (rl_line_buffer, rl_point, count, MB_FIND_NONZERO);
- else
- end = rl_point + count;
-
- if (end >= rl_end)
- end = rl_end;
-
- rl_kill_text (rl_point, end);
-
- if (rl_point > 0 && rl_point == rl_end)
- rl_backward_char (1, key);
- return (0);
-}
-
-int
-rl_vi_back_to_indent (count, key)
- int count, key;
-{
- rl_beg_of_line (1, key);
- while (rl_point < rl_end && whitespace (rl_line_buffer[rl_point]))
- rl_point++;
- return (0);
-}
-
-int
-rl_vi_first_print (count, key)
- int count, key;
-{
- return (rl_vi_back_to_indent (1, key));
-}
-
-int
-rl_vi_char_search (count, key)
- int count, key;
-{
-#if defined (HANDLE_MULTIBYTE)
- static char *target;
- static int mb_len;
-#else
- static char target;
-#endif
- static int orig_dir, dir;
-
- if (key == ';' || key == ',')
- dir = key == ';' ? orig_dir : -orig_dir;
- else
- {
- if (vi_redoing)
-#if defined (HANDLE_MULTIBYTE)
- target = _rl_vi_last_search_mbchar;
-#else
- target = _rl_vi_last_search_char;
-#endif
- else
- {
-#if defined (HANDLE_MULTIBYTE)
- mb_len = _rl_read_mbchar (_rl_vi_last_search_mbchar, MB_LEN_MAX);
- target = _rl_vi_last_search_mbchar;
-#else
- RL_SETSTATE(RL_STATE_MOREINPUT);
- _rl_vi_last_search_char = target = rl_read_key ();
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
-#endif
- }
-
- switch (key)
- {
- case 't':
- orig_dir = dir = FTO;
- break;
-
- case 'T':
- orig_dir = dir = BTO;
- break;
-
- case 'f':
- orig_dir = dir = FFIND;
- break;
-
- case 'F':
- orig_dir = dir = BFIND;
- break;
- }
- }
-
-#if defined (HANDLE_MULTIBYTE)
- return (_rl_char_search_internal (count, dir, target, mb_len));
-#else
- return (_rl_char_search_internal (count, dir, target));
-#endif
-}
-
-/* Match brackets */
-int
-rl_vi_match (ignore, key)
- int ignore, key;
-{
- int count = 1, brack, pos, tmp, pre;
-
- pos = rl_point;
- if ((brack = rl_vi_bracktype (rl_line_buffer[rl_point])) == 0)
- {
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- while ((brack = rl_vi_bracktype (rl_line_buffer[rl_point])) == 0)
- {
- pre = rl_point;
- rl_forward_char (1, key);
- if (pre == rl_point)
- break;
- }
- }
- else
- while ((brack = rl_vi_bracktype (rl_line_buffer[rl_point])) == 0 &&
- rl_point < rl_end - 1)
- rl_forward_char (1, key);
-
- if (brack <= 0)
- {
- rl_point = pos;
- rl_ding ();
- return -1;
- }
- }
-
- pos = rl_point;
-
- if (brack < 0)
- {
- while (count)
- {
- tmp = pos;
- if (MB_CUR_MAX == 1 || rl_byte_oriented)
- pos--;
- else
- {
- pos = _rl_find_prev_mbchar (rl_line_buffer, pos, MB_FIND_ANY);
- if (tmp == pos)
- pos--;
- }
- if (pos >= 0)
- {
- int b = rl_vi_bracktype (rl_line_buffer[pos]);
- if (b == -brack)
- count--;
- else if (b == brack)
- count++;
- }
- else
- {
- rl_ding ();
- return -1;
- }
- }
- }
- else
- { /* brack > 0 */
- while (count)
- {
- if (MB_CUR_MAX == 1 || rl_byte_oriented)
- pos++;
- else
- pos = _rl_find_next_mbchar (rl_line_buffer, pos, 1, MB_FIND_ANY);
-
- if (pos < rl_end)
- {
- int b = rl_vi_bracktype (rl_line_buffer[pos]);
- if (b == -brack)
- count--;
- else if (b == brack)
- count++;
- }
- else
- {
- rl_ding ();
- return -1;
- }
- }
- }
- rl_point = pos;
- return (0);
-}
-
-int
-rl_vi_bracktype (c)
- int c;
-{
- switch (c)
- {
- case '(': return 1;
- case ')': return -1;
- case '[': return 2;
- case ']': return -2;
- case '{': return 3;
- case '}': return -3;
- default: return 0;
- }
-}
-
-/* XXX - think about reading an entire mbchar with _rl_read_mbchar and
- inserting it in one bunch instead of the loop below (like in
- rl_vi_char_search or _rl_vi_change_mbchar_case. Set c to mbchar[0]
- for test against 033 or ^C. Make sure that _rl_read_mbchar does
- this right. */
-int
-rl_vi_change_char (count, key)
- int count, key;
-{
- int c;
-
- if (vi_redoing)
- c = _rl_vi_last_replacement;
- else
- {
- RL_SETSTATE(RL_STATE_MOREINPUT);
- _rl_vi_last_replacement = c = rl_read_key ();
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
- }
-
- if (c == '\033' || c == CTRL ('C'))
- return -1;
-
- while (count-- && rl_point < rl_end)
- {
- rl_begin_undo_group ();
-
- rl_delete (1, c);
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- while (_rl_insert_char (1, c))
- {
- RL_SETSTATE (RL_STATE_MOREINPUT);
- c = rl_read_key ();
- RL_UNSETSTATE (RL_STATE_MOREINPUT);
- }
- else
-#endif
- _rl_insert_char (1, c);
- if (count == 0)
- rl_backward_char (1, c);
-
- rl_end_undo_group ();
- }
- return (0);
-}
-
-int
-rl_vi_subst (count, key)
- int count, key;
-{
- /* If we are redoing, rl_vi_change_to will stuff the last motion char */
- if (vi_redoing == 0)
- rl_stuff_char ((key == 'S') ? 'c' : ' '); /* `S' == `cc', `s' == `c ' */
-
- return (rl_vi_change_to (count, 'c'));
-}
-
-int
-rl_vi_overstrike (count, key)
- int count, key;
-{
- if (_rl_vi_doing_insert == 0)
- {
- _rl_vi_doing_insert = 1;
- rl_begin_undo_group ();
- }
-
- if (count > 0)
- {
- _rl_overwrite_char (count, key);
- vi_replace_count += count;
- }
-
- return (0);
-}
-
-int
-rl_vi_overstrike_delete (count, key)
- int count, key;
-{
- int i, s;
-
- for (i = 0; i < count; i++)
- {
- if (vi_replace_count == 0)
- {
- rl_ding ();
- break;
- }
- s = rl_point;
-
- if (rl_do_undo ())
- vi_replace_count--;
-
- if (rl_point == s)
- rl_backward_char (1, key);
- }
-
- if (vi_replace_count == 0 && _rl_vi_doing_insert)
- {
- rl_end_undo_group ();
- rl_do_undo ();
- _rl_vi_doing_insert = 0;
- }
- return (0);
-}
-
-int
-rl_vi_replace (count, key)
- int count, key;
-{
- int i;
-
- vi_replace_count = 0;
-
- if (!vi_replace_map)
- {
- vi_replace_map = rl_make_bare_keymap ();
-
- for (i = ' '; i < KEYMAP_SIZE; i++)
- vi_replace_map[i].function = rl_vi_overstrike;
-
- vi_replace_map[RUBOUT].function = rl_vi_overstrike_delete;
- vi_replace_map[ESC].function = rl_vi_movement_mode;
- vi_replace_map[RETURN].function = rl_newline;
- vi_replace_map[NEWLINE].function = rl_newline;
-
- /* If the normal vi insertion keymap has ^H bound to erase, do the
- same here. Probably should remove the assignment to RUBOUT up
- there, but I don't think it will make a difference in real life. */
- if (vi_insertion_keymap[CTRL ('H')].type == ISFUNC &&
- vi_insertion_keymap[CTRL ('H')].function == rl_rubout)
- vi_replace_map[CTRL ('H')].function = rl_vi_overstrike_delete;
-
- }
- _rl_keymap = vi_replace_map;
- return (0);
-}
-
-#if 0
-/* Try to complete the word we are standing on or the word that ends with
- the previous character. A space matches everything. Word delimiters are
- space and ;. */
-int
-rl_vi_possible_completions()
-{
- int save_pos = rl_point;
-
- if (rl_line_buffer[rl_point] != ' ' && rl_line_buffer[rl_point] != ';')
- {
- while (rl_point < rl_end && rl_line_buffer[rl_point] != ' ' &&
- rl_line_buffer[rl_point] != ';')
- rl_point++;
- }
- else if (rl_line_buffer[rl_point - 1] == ';')
- {
- rl_ding ();
- return (0);
- }
-
- rl_possible_completions ();
- rl_point = save_pos;
-
- return (0);
-}
-#endif
-
-/* Functions to save and restore marks. */
-int
-rl_vi_set_mark (count, key)
- int count, key;
-{
- int ch;
-
- RL_SETSTATE(RL_STATE_MOREINPUT);
- ch = rl_read_key ();
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
-
- if (ch < 'a' || ch > 'z')
- {
- rl_ding ();
- return -1;
- }
- ch -= 'a';
- vi_mark_chars[ch] = rl_point;
- return 0;
-}
-
-int
-rl_vi_goto_mark (count, key)
- int count, key;
-{
- int ch;
-
- RL_SETSTATE(RL_STATE_MOREINPUT);
- ch = rl_read_key ();
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
-
- if (ch == '`')
- {
- rl_point = rl_mark;
- return 0;
- }
- else if (ch < 'a' || ch > 'z')
- {
- rl_ding ();
- return -1;
- }
-
- ch -= 'a';
- if (vi_mark_chars[ch] == -1)
- {
- rl_ding ();
- return -1;
- }
- rl_point = vi_mark_chars[ch];
- return 0;
-}
-
-#endif /* VI_MODE */
diff --git a/readline-4.3.orig/xmalloc.c b/readline-4.3.orig/xmalloc.c
deleted file mode 100644
index 8985d34..0000000
--- a/readline-4.3.orig/xmalloc.c
+++ /dev/null
@@ -1,88 +0,0 @@
-/* xmalloc.c -- safe versions of malloc and realloc */
-
-/* Copyright (C) 1991 Free Software Foundation, Inc.
-
- This file is part of GNU Readline, a library for reading lines
- of text with interactive input and history editing.
-
- Readline is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the
- Free Software Foundation; either version 2, or (at your option) any
- later version.
-
- Readline is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Readline; see the file COPYING. If not, write to the Free
- Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-#include <config.h>
-#endif
-
-#include <stdio.h>
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#include "xmalloc.h"
-
-/* **************************************************************** */
-/* */
-/* Memory Allocation and Deallocation. */
-/* */
-/* **************************************************************** */
-
-static void
-memory_error_and_abort (fname)
- char *fname;
-{
- fprintf (stderr, "%s: out of virtual memory\n", fname);
- exit (2);
-}
-
-/* Return a pointer to free()able block of memory large enough
- to hold BYTES number of bytes. If the memory cannot be allocated,
- print an error message and abort. */
-PTR_T
-xmalloc (bytes)
- size_t bytes;
-{
- PTR_T temp;
-
- temp = malloc (bytes);
- if (temp == 0)
- memory_error_and_abort ("xmalloc");
- return (temp);
-}
-
-PTR_T
-xrealloc (pointer, bytes)
- PTR_T pointer;
- size_t bytes;
-{
- PTR_T temp;
-
- temp = pointer ? realloc (pointer, bytes) : malloc (bytes);
-
- if (temp == 0)
- memory_error_and_abort ("xrealloc");
- return (temp);
-}
-
-/* Use this as the function to call when adding unwind protects so we
- don't need to know what free() returns. */
-void
-xfree (string)
- PTR_T string;
-{
- if (string)
- free (string);
-}
diff --git a/readline-4.3.orig/xmalloc.h b/readline-4.3.orig/xmalloc.h
deleted file mode 100644
index 9cb08ba..0000000
--- a/readline-4.3.orig/xmalloc.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/* xmalloc.h -- memory allocation that aborts on errors. */
-
-/* Copyright (C) 1999 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if !defined (_XMALLOC_H_)
-#define _XMALLOC_H_
-
-#if defined (READLINE_LIBRARY)
-# include "rlstdc.h"
-#else
-# include <readline/rlstdc.h>
-#endif
-
-#ifndef PTR_T
-
-#ifdef __STDC__
-# define PTR_T void *
-#else
-# define PTR_T char *
-#endif
-
-#endif /* !PTR_T */
-
-extern PTR_T xmalloc PARAMS((size_t));
-extern PTR_T xrealloc PARAMS((void *, size_t));
-extern void xfree PARAMS((void *));
-
-#endif /* _XMALLOC_H_ */
diff --git a/readline-4.3/CHANGELOG-ReadLine b/readline-4.3/CHANGELOG-ReadLine
deleted file mode 100644
index 350defa..0000000
--- a/readline-4.3/CHANGELOG-ReadLine
+++ /dev/null
@@ -1,699 +0,0 @@
-[Readline-specific changelog. Descriptions of changes to the source are
- found in the bash changelog.]
-
- 6/9
- ---
-Makefile.in
- - quote value of ${INSTALL_DATA} when passing it to makes in
- subdirectories
-
- 7/1
- ---
-Makefile.in
- - don't pass INSTALL_DATA to a make in the `doc' subdirectory; let
- autoconf set the value itself in the Makefile
- - removed a stray `-' before $(RANLIB) in the `install' recipe
-
-doc/Makefile.in
- - add a VPATH assignment so the documentation is not remade if it's
- already up-to-date in the distribution
-
-configure.in
- - call AC_SUBST(LOCAL_LDFLAGS), since Makefile.in contains
- @LOCAL_LDFLAGS@
-
- 7/9
- ---
-
-config.h.in
- - add define lines for STRUCT_WINSIZE_IN_SYS_IOCTL and
- STRUCT_WINSIZE_IN_TERMIOS
-
-configure.in
- - call BASH_STRUCT_WINSIZE to look for the definition of
- `struct winsize'
-
- 7/17
- ----
-configure.in
- - call AC_MINIX
-
-config.h.in
- - add define line for AC_MINIX
-
- 7/18
- ----
-Makefile.in
- - add `install-shared' and `uninstall-shared' targets
-
- 8/4
- ---
-Makefile.in
- - install and uninstall libhistory.a in the `install' and
- `uninstall' targets
-
- 9/4
- ---
-configure.in
- - bumped LIBVERSION up to 2.1.1, indicating that this is patch
- level 1 to release 2.1
-
-
- 9/16
- ----
-Makefile.in
- - `make distclean' now descends into the `examples' subdir
-
-doc/Makefile.in
- - the `distclean' and `maintainer-clean' targets should remove
- Makefile
-
-examples/Makefile.in
- - added the various clean targets
-
- 4/2
- ---
-configure.in
- - bumped LIBVERSION up to 2.2
-
- 4/18
- ----
-[readline-2.2 released]
-
- 4/20
- ----
-Makefile.in
- - make `libhistory.a' a dependency of `install'
- - fixed a typo in the recipe for `install' that copied libreadline.a
- to libhistory.old right after installing it
-
- 4/27
- ----
-doc/Makefile.in
- - install {readline,history}.info out of the source directory if
- they are not found in the current (build) directory -- only an
- issue if the libraries are built in a different directory than
- the source directory
-
- 5/1
- ---
-support/shobj-conf
- - script from the bash distribution to do shared object and library
- configuration
-
-shlib/Makefile.in
- - new directory and makefile to handle building shared versions of
- libreadline and libhistory, controlled by support/shobj-conf
-
- 5/7
- ---
-doc/Makefile.in
- - set SHELL to /bin/sh, rather than relying on make to be correct
-
- 5/14
- ----
-savestring.c
- - new file, moved from shell.c, for backwards compatibility
-
-Makefile.in, shlib/Makefile.in
- - make sure savestring.c is compiled and added to libreadline and
- libhistory
-
-[THERE ARE NO MORE #ifdef SHELL LINES IN THE C SOURCE FILES.]
-
- 5/15
- ----
-README
- - updated description of shared library creation for the new scheme
-
-[THERE ARE NO MORE #ifdef SHELL LINES IN ANY OF THE SOURCE FILES.]
-
-Makefile.in
- - bumped SHLIB_MAJOR up to 4 since we've augmented the library
- API
- - rlconf.h is now one of the installed headers, so applications can
- find out whether things like vi-mode are available in the installed
- libreadline
-
- 5/20
- ----
-configure.in
- - changed RL_LIBRARY_VERSION to 4.0 to match the version of the
- installed shared libraries
-
- 6/5
- ---
-rlstdc.h
- - new file
-
-Makefile.in
- - rlstdc.h is now one of the installed headers
-
- 8/3
- ---
-shlib/Makefile.in
- - made the suffix rule that creates xx.so from xx.c write the
- compiler output to `a.o', which is then mv'd to xx.so, because
- some compilers (Sun WSpro 4.2, for example) don't allow any
- suffixes other than `.o' for `cc -c' (not even `a.out')
-
- 9/15
- ----
-
-Makefile.in
- - AR and ARFLAGS are now substituted by configure, used in recipes
- that build the libraries
-
-configure.in
- - use AC_CHECK_PROG to check for ar
- - set ARFLAGS if it has not already been set in the environment
-
- 10/5
- ----
-Makefile.in
- - removed savestring.o from object file list
-
- 10/28
- -----
-shlib/Makefile.in
- - don't use a fixed filename in the .c.so suffix rule to avoid
- problems with parallel makes
-
- 12/21
- -----
-support/shlib-install
- - new script to install shared readline and history libraries
-
-shlib/Makefile.in
- - changed to call shlib-install for install and uninstall targets
-
-[readline-4.0-beta1 frozen]
-
- 12/22
- -----
-configure.in
- - call AC_SUBST for SHOBJ_XLDFLAGS and SHLIB_LIBS
-
-shlib/Makefile.in
- - SHOBJ_XLDFLAGS and SHLIB_LIBS are now substituted by configure
- - add $(SHLIB_LIBS) at end of command line that builds the shared
- libraries (currently needed only by AIX 4.2)
-
- 12/31
- -----
-MANIFEST, MANIFEST.doc
- - the TOC html files are no longer generated and no longer part of
- the distribution
-
- 2/18/1999
- ---------
-configure.in
- - set MAKE_SHELL to /bin/sh and substitute into the Makefiles
-
-Makefile.in,{doc,examples,shlib}/Makefile.in
- - set SHELL from @MAKE_SHELL@
-
-[readline-4.0 released]
-
- 3/11
- ----
-doc/Makefile.in
- - removed references to HTMLTOC, since separate HTML table-of-contents
- files are no longer created
-
-examples/Makefile.in
- - remove `*.exe' in clean target for MS-DOS
-
-Makefile.in
- - make `readline' target depend on ./libreadline.a
- - configure now substitutes TERMCAP_LIB into Makefile.in
- - use ${TERMCAP_LIB} instead of -ltermcap in recipe for `readline'
- - clean target now removes readline and readline.exe in case they
- get built
-
-configure.in
- - use `pwd.exe' to set BUILD_DIR on MS-DOS DJGPP
-
- 3/15
- ----
-support/shlib-install
- - Irix 5.x and Irix 6.x should install shared libraries like Solaris 2
- - changes for installing on hp-ux 1[01].x
-
- 3/23
- ----
-configure.in
- - make sure that the $CC argument to shobj-conf is quoted
-
- 4/8
- ---
-
-xmalloc.h, rlprivate.h, rlshell.h
- - new files
-
-Makefile.in,shlib/Makefile.in
- - add dependencies on xmalloc.h, rlshell.h
- - add xmalloc.h, rlprivate.h, rlshell.h to list of header files
-
-MANIFEST
- - add xmalloc.h, rlprivate.h, rlshell.h
-
- 4/9
- ---
-Makefile.in,shlib/Makefile.in
- - add dependencies on rlprivate.h
-
- 4/13
- ----
-doc/Makefile.in
- - add variable, PSDVI, which is the desired resolution of the
- generated postscript files. Set to 300 because I don't have
- any 600-dpi printers
- - set LANGUAGE= before calling makeinfo, so messages are in English
- - add rluserman.{info,dvi,ps,html} to appropriate variables
- - add rules to create rluserman.{info,dvi,ps,html}
- - install and uninstall rluserman.info, but don't update the directory
- file in $(infodir) yet
-
-MANIFEST
- - add doc/rluserman.{texinfo,info,dvi,ps,html}
-
- 4/30
- ----
-configure.in
- - updated library version to 4.1
-
- 5/3
- ---
-configure.in
- - SHLIB_MAJOR and SHLIB_MINOR shared library version numbers are
- constructed from $LIBRARY_VERSION and substituted into Makefiles
-
- 5/5
- ---
-support/shlib-install
- - OSF/1 installs shared libraries like Solaris
-
-Makefile.in
- - broke the header file install and uninstall into two new targets:
- install-headers and uninstall-headers
- - install and uninstall depend on install-headers and uninstall-headers
- respectively
- - changed install-shared and uninstall-shared targets to depend on
- install-headers and uninstall-headers, respectively, so users may
- choose to install only the shared libraries. I'm not sure about
- the uninstall one yet -- maybe it should check whether or not
- the static libraries are installed and not remove the header files
- if they are
-
- 9/3
- ---
-configure.in, config.h.in
- - added test for memmove (for later use)
- - changed version to 4.1-beta1
-
- 9/13
- ----
-examples/rlfe.c
- - Per Bothner's `rlfe' readline front-end program
-
-examples/Makefile.in
- - added rules to build rlfe
-
- 9/21
- ----
-support/shlib-install
- - changes to handle FreeBSD-3.x elf or a.out shared libraries, which
- have different semantics and need different naming conventions
-
- 1/24/2000
- ---------
-doc/Makefile.in
- - remove *.bt and *.bts on `make clean'
-
- 2/4
- ---
-
-
-configure.in
- - changed LIBVERSION to 4.1-beta5
-
- 3/17/2000
- ---------
-[readline-4.1 released]
-
- 3/23
- ----
-Makefile.in
- - remove the `-t' argument to ranlib in the install recipe; some
- ranlibs don't have it and attempt to create a file named `-t'
-
- 3/27
- ----
-support/shlib-install
- - install shared libraries unwritable by anyone on HP-UX
- - changed symlinks to relative pathnames on all platforms
-
-shlib/Makefile.in
- - added missing `includedir' assignment, substituted by configure
-
-Makefile.in
- - added missing @SET_MAKE@ so configure can set $MAKE appropriately
-
-configure.in
- - add call to AC_PROG_MAKE_SET
-
- 8/30
- ----
-shlib/Makefile.in
- - change the soname bound into the shared libraries, so it includes
- only the major version number. If it includes the minor version,
- programs depending on it must be rebuilt (which may or may not be
- a bad thing)
-
- 9/6
- ---
-examples/rlfe.c
- - add -l option to log input and output (-a option appends to logfile)
- - add -n option to set readline application name
- - add -v, -h options for version and help information
- - change a few things because getopt() is now used to parse arguments
-
- 9/12
- ----
-support/shlib-install
- - fix up the libname on HPUX 11
-
- 10/18
- -----
-configure.in
- - changed library version to 4.2-alpha
-
- 10/30
- -----
-configure.in
- - add -fsigned-char to LOCAL_CFLAGS for Linux running on the IBM
- S/390
-
-Makefile.in
- - added new file, rltypedefs.h, installed by default with `make install'
-
- 11/2
- ----
-compat.c
- - new file, with backwards-compatibility function definitions
-
-Makefile.in,shlib/Makefile.in
- - make sure that compat.o/compat.so are built and linked apppropriately
-
-support/shobj-conf
- - picked up bash version, which means that shared libs built on
- linux and BSD/OS 4.x will have an soname that does not include
- the minor version number
-
- 11/13
- -----
-examples/rlfe.c
- - rlfe can perform filename completion for relative pathnames in the
- inferior process's context if the OS supports /proc/PID/cwd (linux
- does it OK, Solaris is slightly warped, none of the BSDs have it)
-
- 11/17/2000
- ----------
-[readline-4.2-alpha released]
-
- 11/27
- -----
-Makefile.in,shlib/Makefile.in
- - added dependencies for rltypedefs.h
-
-shlib/Makefile.in
- - changed dependencies on histlib.h to $(topdir)/histlib.h
-
- 1/22
- ----
-configure.in
- - changed release version to 4.2-beta
-
- 2/2
- ---
-examples/Makefile.in
- - build histexamp as part of the examples
-
- 2/5
- ---
-doc/Makefile.in
- - don't remove the dvi, postscript, html, info, and text `objects'
- on a `make distclean', only on a `make maintainer-clean'
-
- 3/6
- ---
-doc/history.{0,3}, doc/history_3.ps
- - new manual page for history library
-
-doc/Makefile.in
- - rules to install and uninstall history.3 in ${man3dir}
- - rules to build history.0 and history_3.ps
-
- 4/2
- ---
-configure.in
- - changed LIBVERSION to `4.2'
-
- 4/5
- ---
-[readline-4.2 frozen]
-
- 4/9
- ---
-[readline-4.2 released]
-
- 5/2
- ---
-Makefile.in,{doc,examples,shlib}/Makefile.in
- - added support for DESTDIR installation root prefix, to support
- building packages
-
-doc/Makefile.in
- - add an info `dir' file entry for rluserman.info on `make install'
- - change man1ext to `.1' and man3ext to `.3'
- - install man pages with a $(man3ext) extension in the target directory
- - add support for installing html documentation if `htmldir' has a
- value
-
-Makefile.in
- - on `make install', install from the `shlib' directory, too
- - on `make uninstall', uninstall in the `doc' and `shlib'
- subdirectories, too
-
-support/shlib-install
- - add `freebsdelf*', `freebsdaout*', Hurd, `sysv4*', `sysv5*', `dgux*'
- targets for symlink creation
-
- 5/7
- ---
-configure.in, config.h.in
- - check for <limits.h>, define HAVE_LIMITS_H if found
-
- 5/8
- ---
-aclocal.m4
- - pick up change to BASH_CHECK_LIB_TERMCAP that adds check for
- libtinfo (termcap-specific portion of ncurses-5.2)
-
- 5/9
- ---
-configure.in
- - call AC_C_CONST to find out whether or not the compiler supports
- `const'
-
-config.h.in
- - placeholder for `const' define, if any
-
- 5/10
- ----
-configure.in
- - fix AC_CHECK_PROG(ar, ...) test to specify right value for the
- case where ar is not found; should produce a better error message
-
- 5/14
- ----
-configure.in,config.h.in
- - check for vsnprintf, define HAVE_VSNPRINTF if found
-
- 5/21
- ----
-configure.in, config.h.in
- - add checks for size_t, ssize_t
-
- 5/30
- ----
-configure.in
- - update autoconf to version 2.50, use in AC_PREREQ
- - changed AC_INIT to new flavor
- - added AC_CONFIG_SRCDIR
- - AC_CONFIG_HEADER -> AC_CONFIG_HEADERS
- - call AC_C_PROTOTYPES
- - AC_RETSIGTYPE -> AC_TYPE_SIGNAL
-
- 8/22
- ----
-configure.in
- - updated the version number to 4.2a
-
-Makefile.in,shlib/Makefile.in
- - make sure tilde.o is built -DREADLINE_LIBRARY when being built as
- part of the standalone library, so it picks up the right include
- files
-
- 8/23
- ----
-support/shlib-install
- - support for Darwin/MacOS X shared library installation
-
- 9/24
- ----
-examples/readlinebuf.h
- - a new file, a C++ streambuf interface that uses readline for I/O.
- Donated by Dimitris Vyzovitis <vyzo@media.mit.edu>
-
- 10/9
- ----
-configure.in
- - replaced call to BASH_HAVE_TIOCGWINSZ with AC_HEADER_TIOCGWINSZ
-
-[readline-4.2a-beta1 frozen]
-
- 10/15
- -----
-configure.in, config.h.in
- - check for <memory.h>, define HAVE_MEMORY_H if found
- - check for <strings.h>, define HAVE_STRINGS_H if found
-
- 10/18
- -----
-configure.in, config.h.in
- - check for isascii, define HAVE_ISASCII if found
-
-configure.in
- - changed the macro names from bash as appropriate:
- BASH_SIGNAL_CHECK -> BASH_SYS_SIGNAL_VINTAGE
- BASH_REINSTALL_SIGHANDLERS -> BASH_SYS_REINSTALL_SIGHANDLERS
- BASH_MISC_SPEED_T -> BASH_CHECK_SPEED_T
-
- 10/22
- -----
-configure.in
- - check for isxdigit with AC_CHECK_FUNCS
-
-config.h.in
- - new define for HAVE_ISXDIGIT
-
- 10/29
- -----
-configure.in, config.h.in
- - check for strpbrk with AC_CHECK_FUNCS, define HAVE_STRPBRK if found
-
- 11/1
- ----
-Makefile.in
- - make sure DESTDIR is passed to install and uninstall makes in
- subdirectories
- - when saving old copies of installed libraries, make sure we use
- DESTDIR for the old installation tree
-
-[readline-4.2a-rc1 frozen]
-
- 11/2
- ----
-Makefile.in, shlib/Makefile.in
- - don't put -I$(includedir) into CFLAGS
-
- 11/15
- -----
-[readline-4.2a released]
-
- 11/20
- -----
-examples/rlcat.c
- - new file
-
-examples/Makefile.in
- - changes for rlcat
-
- 11/28
- -----
-configure.in
- - default TERMCAP_LIB to -lcurses if $prefer_curses == yes (as when
- --with-curses is supplied)
-
-examples/Makefile.in
- - substitute @LDFLAGS@ in LDFLAGS assignment
-
- 11/29
- -----
-config.h.in
- - add necessary defines for multibyte include files and functions
- - add code to define HANDLE_MULTIBYTE if prerequisites are met
-
-configure.in
- - call BASH_CHECK_MULTIBYTE
-
- 12/14
- -----
-config.h.in
- - add #undef PROTOTYPES, filled in by AC_C_PROTOTYPES
-
- 12/17
- -----
-config.h.in
- - moved HANDLE_MULTIBYTE code to rlmbutil.h
-
-rlmbutil.h, mbutil.c
- - new files
-
-Makefile.in, shlib/Makefile.in
- - added rules for mbutil.c
-
- 12/20
- -----
-configure.in
- - added --enable-shared, --enable-static options to configure to
- say which libraries are built by default (both default to yes)
- - if SHLIB_STATUS == 'unsupported', turn off default shared library
- building
- - substitute new STATIC_TARGET, SHARED_TARGET, STATIC_INSTALL_TARGET,
- and SHARED_INSTALL_TARGET
-
-Makefile.in
- - `all' target now depends on (substituted) @STATIC_TARGET@ and
- @SHARED_TARGET@
- - `install' target now depends on (substituted) @STATIC_INSTALL_TARGET@
- and @SHARED_INSTALL_TARGET@
-
-INSTALL, README
- - updated with new info about --enable-shared and --enable-static
-
- 1/10/2002
- ---------
-configure.in
- - bumped the library version number to 4.3
-
- 1/24
- ----
-Makefile.in,shlib/Makefile.in
- - changes for new file, text.c, with character and text handling
- functions from readline.c
-
- 2/20
- ----
-{configure.config.h}.in
- - call AC_C_CHAR_UNSIGNED, define __CHAR_UNSIGNED__ if chars are
- unsigned by default
-
- 5/20
- ----
-doc/Makefile.in
- - new maybe-clean target that removes the generated documentation if
- the build directory differs from the source directory
- - distclean target now depends on maybe-clean
diff --git a/readline-4.3/CHANGES b/readline-4.3/CHANGES
deleted file mode 100644
index bc9fe94..0000000
--- a/readline-4.3/CHANGES
+++ /dev/null
@@ -1,612 +0,0 @@
-This document details the changes between this version, readline-4.3,
-and the previous version, readline-4.2a.
-
-1. Changes to Readline
-
-a. Fixed output of comment-begin character when listing variable values.
-
-b. Added some default key bindings for common escape sequences produced by
- HOME and END keys.
-
-c. Fixed the mark handling code to be more emacs-compatible.
-
-d. A bug was fixed in the code that prints possible completions to keep it
- from printing empty strings in certain circumstances.
-
-e. Change the key sequence printing code to print ESC as M\- if ESC is a
- meta-prefix character -- it's easier for users to understand than \e.
-
-f. Fixed unstifle_history() to return values that match the documentation.
-
-g. Fixed the event loop (rl_event_hook) to handle the case where the input
- file descriptor is invalidated.
-
-h. Fixed the prompt display code to work better when the application has a
- custom redisplay function.
-
-i. Changes to make reading and writing the history file a little faster, and
- to cope with huge history files without calling abort(3) from xmalloc.
-
-j. The vi-mode `S' and `s' commands are now undone correctly.
-
-k. Fixed a problem which caused the display to be messed up when the last
- line of a multi-line prompt (possibly containing invisible characters)
- was longer than the screen width.
-
-2. New Features in Readline
-
-a. Support for key `subsequences': allows, e.g., ESC and ESC-a to both
- be bound to readline functions. Now the arrow keys may be used in vi
- insert mode.
-
-b. When listing completions, and the number of lines displayed is more than
- the screen length, readline uses an internal pager to display the results.
- This is controlled by the `page-completions' variable (default on).
-
-c. New code to handle editing and displaying multibyte characters.
-
-d. The behavior introduced in bash-2.05a of deciding whether or not to
- append a slash to a completed name that is a symlink to a directory has
- been made optional, controlled by the `mark-symlinked-directories'
- variable (default is the 2.05a behavior).
-
-e. The `insert-comment' command now acts as a toggle if given a numeric
- argument: if the first characters on the line don't specify a
- comment, insert one; if they do, delete the comment text
-
-f. New application-settable completion variable:
- rl_completion_mark_symlink_dirs, allows an application's completion
- function to temporarily override the user's preference for appending
- slashes to names which are symlinks to directories.
-
-g. New function available to application completion functions:
- rl_completion_mode, to tell how the completion function was invoked
- and decide which argument to supply to rl_complete_internal (to list
- completions, etc.).
-
-h. Readline now has an overwrite mode, toggled by the `overwrite-mode'
- bindable command, which could be bound to `Insert'.
-
-i. New application-settable completion variable:
- rl_completion_suppress_append, inhibits appending of
- rl_completion_append_character to completed words.
-
-j. New key bindings when reading an incremental search string: ^W yanks
- the currently-matched word out of the current line into the search
- string; ^Y yanks the rest of the current line into the search string,
- DEL or ^H deletes characters from the search string.
-
--------------------------------------------------------------------------------
-This document details the changes between this version, readline-4.2a,
-and the previous version, readline-4.2.
-
-1. Changes to Readline
-
-a. More `const' and type casting fixes.
-
-b. Changed rl_message() to use vsnprintf(3) (if available) to fix buffer
- overflow problems.
-
-c. The completion code no longer appends a `/' or ` ' to a match when
- completing a symbolic link that resolves to a directory name, unless
- the match does not add anything to the word being completed. This
- means that a tab will complete the word up to the full name, but not
- add anything, and a subsequent tab will add a slash.
-
-d. Fixed a trivial typo that made the vi-mode `dT' command not work.
-
-e. Fixed the tty code so that ^S and ^Q can be inserted with rl_quoted_insert.
-
-f. Fixed the tty code so that ^V works more than once.
-
-g. Changed the use of __P((...)) for function prototypes to PARAMS((...))
- because the use of __P in typedefs conflicted g++ and glibc.
-
-h. The completion code now attempts to do a better job of preserving the
- case of the word the user typed if ignoring case in completions.
-
-i. Readline defaults to not echoing the input and lets the terminal
- initialization code enable echoing if there is a controlling terminal.
-
-j. The key binding code now processes only two hex digits after a `\x'
- escape sequence, and the documentation was changed to note that the
- octal and hex escape sequences result in an eight-bit value rather
- than strict ASCII.
-
-k. Fixed a few places where negative array subscripts could have occurred.
-
-l. Fixed the vi-mode code to use a better method to determine the bounds of
- the array used to hold the marks, and to avoid out-of-bounds references.
-
-m. Fixed the defines in chardefs.h to work better when chars are signed.
-
-n. Fixed configure.in to use the new names for bash autoconf macros.
-
-o. Readline no longer attempts to define its own versions of some ctype
- macros if they are implemented as functions in libc but not as macros in
- <ctype.h>.
-
-p. Fixed a problem where rl_backward could possibly set point to before
- the beginning of the line.
-
-q. Fixed Makefile to not put -I/usr/include into CFLAGS, since it can cause
- include file problems.
-
-2. New Features in Readline
-
-a. Added extern declaration for rl_get_termcap to readline.h, making it a
- public function (it was always there, just not in readline.h).
-
-b. New #defines in readline.h: RL_READLINE_VERSION, currently 0x0402,
- RL_VERSION_MAJOR, currently 4, and RL_VERSION_MINOR, currently 2.
-
-c. New readline variable: rl_readline_version, mirrors RL_READLINE_VERSION.
-
-d. New bindable boolean readline variable: match-hidden-files. Controls
- completion of files beginning with a `.' (on Unix). Enabled by default.
-
-e. The history expansion code now allows any character to terminate a
- `:first-' modifier, like csh.
-
-f. The incremental search code remembers the last search string and uses
- it if ^R^R is typed without a search string.
-
-h. New bindable variable `history-preserve-point'. If set, the history
- code attempts to place the user at the same location on each history
- line retrived with previous-history or next-history.
-
--------------------------------------------------------------------------------
-This document details the changes between this version, readline-4.2,
-and the previous version, readline-4.1.
-
-1. Changes to Readline
-
-a. When setting the terminal attributes on systems using `struct termio',
- readline waits for output to drain before changing the attributes.
-
-b. A fix was made to the history word tokenization code to avoid attempts to
- dereference a null pointer.
-
-c. Readline now defaults rl_terminal_name to $TERM if the calling application
- has left it unset, and tries to initialize with the resultant value.
-
-d. Instead of calling (*rl_getc_function)() directly to get input in certain
- places, readline now calls rl_read_key() consistently.
-
-e. Fixed a bug in the completion code that allowed a backslash to quote a
- single quote inside a single-quoted string.
-
-f. rl_prompt is no longer assigned directly from the argument to readline(),
- but uses memory allocated by readline. This allows constant strings to
- be passed to readline without problems arising when the prompt processing
- code wants to modify the string.
-
-g. Fixed a bug that caused non-interactive history searches to return the
- wrong line when performing multiple searches backward for the same string.
-
-h. Many variables, function arguments, and function return values are now
- declared `const' where appropriate, to improve behavior when linking with
- C++ code.
-
-i. The control character detection code now works better on systems where
- `char' is unsigned by default.
-
-j. The vi-mode numeric argument is now capped at 999999, just like emacs mode.
-
-k. The Function, CPFunction, CPPFunction, and VFunction typedefs have been
- replaced with a set of specific prototyped typedefs, though they are
- still in the readline header files for backwards compatibility.
-
-m. Nearly all of the (undocumented) internal global variables in the library
- now have an _rl_ prefix -- there were a number that did not, like
- screenheight, screenwidth, alphabetic, etc.
-
-n. The ding() convenience function has been renamed to rl_ding(), though the
- old function is still defined for backwards compatibility.
-
-o. The completion convenience functions filename_completion_function,
- username_completion_function, and completion_matches now have an rl_
- prefix, though the old names are still defined for backwards compatibility.
-
-p. The functions shared by readline and bash (linkage is satisfied from bash
- when compiling with bash, and internally otherwise) now have an sh_ prefix.
-
-q. Changed the shared library creation procedure on Linux and BSD/OS 4.x so
- that the `soname' contains only the major version number rather than the
- major and minor numbers.
-
-r. Fixed a redisplay bug that occurred when the prompt spanned more than one
- physical line and contained invisible characters.
-
-s. Added a missing `includedir' variable to the Makefile.
-
-t. When installing the shared libraries, make sure symbolic links are relative.
-
-u. Added configure test so that it can set `${MAKE}' appropriately.
-
-v. Fixed a bug in rl_forward that could cause the point to be set to before
- the beginning of the line in vi mode.
-
-w. Fixed a bug in the callback read-char interface to make it work when a
- readline function pushes some input onto the input stream with
- rl_execute_next (like the incremental search functions).
-
-x. Fixed a file descriptor leak in the history file manipulation code that
- was tripped when attempting to truncate a non-regular file (like
- /dev/null).
-
-y. Changes to make all of the exported readline functions declared in
- readline.h have an rl_ prefix (rltty_set_default_bindings is now
- rl_tty_set_default_bindings, crlf is now rl_crlf, etc.)
-
-z. The formatted documentation included in the base readline distribution
- is no longer removed on a `make distclean'.
-
-aa. Some changes were made to avoid gcc warnings with -Wall.
-
-bb. rl_get_keymap_by_name now finds keymaps case-insensitively, so
- `set keymap EMACS' works.
-
-cc. The history file writing and truncation functions now return a useful
- status on error.
-
-dd. Fixed a bug that could cause applications to dereference a NULL pointer
- if a NULL second argument was passed to history_expand().
-
-ee. If a hook function assigned to rl_event_hook sets rl_done to a non-zero
- value, rl_read_key() now immediately returns '\n' (which is assumed to
- be bound to accept-line).
-
-2. New Features in Readline
-
-a. The blink timeout for paren matching is now settable by applications,
- via the rl_set_paren_blink_timeout() function.
-
-b. _rl_executing_macro has been renamed to rl_executing_macro, which means
- it's now part of the public interface.
-
-c. Readline has a new variable, rl_readline_state, which is a bitmap that
- encapsulates the current state of the library; intended for use by
- callbacks and hook functions.
-
-d. rlfe has a new -l option to log input and output (-a appends to logfile),
- a new -n option to set the readline application name, and -v and -h
- options for version and help information.
-
-e. rlfe can now perform filename completion for the inferior process if the
- OS has a /proc/<PID>/cwd that can be read with readlink(2) to get the
- inferior's current working directory.
-
-f. A new file, rltypedefs.h, contains the new typedefs for function pointers
- and is installed by `make install'.
-
-g. New application-callable function rl_set_prompt(const char *prompt):
- expands its prompt string argument and sets rl_prompt to the result.
-
-h. New application-callable function rl_set_screen_size(int rows, int cols):
- public method for applications to set readline's idea of the screen
- dimensions.
-
-i. The history example program (examples/histexamp.c) is now built as one
- of the examples.
-
-j. The documentation has been updated to cover nearly all of the public
- functions and variables declared in readline.h.
-
-k. New function, rl_get_screen_size (int *rows, int *columns), returns
- readline's idea of the screen dimensions.
-
-l. The timeout in rl_gather_tyi (readline keyboard input polling function)
- is now settable via a function (rl_set_keyboard_input_timeout()).
-
-m. Renamed the max_input_history variable to history_max_entries; the old
- variable is maintained for backwards compatibility.
-
-n. The list of characters that separate words for the history tokenizer is
- now settable with a variable: history_word_delimiters. The default
- value is as before.
-
-o. There is a new history.3 manual page documenting the history library.
-
--------------------------------------------------------------------------------
-This document details the changes between this version, readline-4.1,
-and the previous version, readline-4.0.
-
-1. Changes to Readline
-
-a. Changed the HTML documents so that the table-of-contents is no longer
- a separate file.
-
-b. Changes to the shared object configuration for: Irix 5.x, Irix 6.x,
- OSF/1.
-
-c. The shared library major and minor versions are now constructed
- automatically by configure and substituted into the makefiles.
-
-d. It's now possible to install the shared libraries separately from the
- static libraries.
-
-e. The history library tries to truncate the history file only if it is a
- regular file.
-
-f. A bug that caused _rl_dispatch to address negative array indices on
- systems with signed chars was fixed.
-
-g. rl-yank-nth-arg now leaves the history position the same as when it was
- called.
-
-h. Changes to the completion code to handle MS-DOS drive-letter:pathname
- filenames.
-
-i. Completion is now case-insensitive by default on MS-DOS.
-
-j. Fixes to the history file manipulation code for MS-DOS.
-
-k. Readline attempts to bind the arrow keys to appropriate defaults on MS-DOS.
-
-l. Some fixes were made to the redisplay code for better operation on MS-DOS.
-
-m. The quoted-insert code will now insert tty special chars like ^C.
-
-n. A bug was fixed that caused the display code to reference memory before
- the start of the prompt string.
-
-o. More support for __EMX__ (OS/2).
-
-p. A bug was fixed in readline's signal handling that could cause infinite
- recursion in signal handlers.
-
-q. A bug was fixed that caused the point to be less than zero when rl_forward
- was given a very large numeric argument.
-
-r. The vi-mode code now gets characters via the application-settable value
- of rl_getc_function rather than calling rl_getc directly.
-
-s. The history file code now uses O_BINARY mode when reading and writing
- the history file on cygwin32.
-
-t. Fixed a bug in the redisplay code for lines with more than 256 line
- breaks.
-
-u. A bug was fixed which caused invisible character markers to not be
- stripped from the prompt string if the terminal was in no-echo mode.
-
-v. Readline no longer tries to get the variables it needs for redisplay
- from the termcap entry if the calling application has specified its
- own redisplay function. Readline treats the terminal as `dumb' in
- this case.
-
-w. Fixes to the SIGWINCH code so that a multiple-line prompt with escape
- sequences is redrawn correctly.
-
-x. Changes to the install and install-shared targets so that the libraries
- and header files are installed separately.
-
-2. New Features in Readline
-
-a. A new Readline `user manual' is in doc/rluserman.texinfo.
-
-b. Parentheses matching is now always compiled into readline, and enabled
- or disabled when the value of the `blink-matching-paren' variable is
- changed.
-
-c. MS-DOS systems now use ~/_inputrc as the last-ditch inputrc filename.
-
-d. MS-DOS systems now use ~/_history as the default history file.
-
-e. history-search-{forward,backward} now leave the point at the end of the
- line when the string to search for is empty, like
- {reverse,forward}-search-history.
-
-f. history-search-{forward,backward} now leave the last history line found
- in the readline buffer if the second or subsequent search fails.
-
-g. New function for use by applications: rl_on_new_line_with_prompt, used
- when an application displays the prompt itself before calling readline().
-
-h. New variable for use by applications: rl_already_prompted. An application
- that displays the prompt itself before calling readline() must set this to
- a non-zero value.
-
-i. A new variable, rl_gnu_readline_p, always 1. The intent is that an
- application can verify whether or not it is linked with the `real'
- readline library or some substitute.
-
-j. Per Bothner's `rlfe' (pronounced `Ralphie') readline front-end program
- is included in the examples subdirectory, though it is not built
- by default.
-
--------------------------------------------------------------------------------
-This document details the changes between this version, readline-4.0,
-and the previous version, readline-2.2.
-
-1. Changes to Readline
-
-a. The version number is now 4.0, to match the major and minor version
- numbers on the shared readline and history libraries. Future
- releases will maintain the identical numbering.
-
-b. Fixed a typo in the `make install' recipe that copied libreadline.a
- to libhistory.old right after installing it.
-
-c. The readline and history info files are now installed out of the source
- directory if they are not found in the build directory.
-
-d. The library no longer exports a function named `savestring' -- backwards
- compatibility be damned.
-
-e. There is no longer any #ifdef SHELL code in the source files.
-
-f. Some changes were made to the key binding code to fix memory leaks and
- better support Win32 systems.
-
-g. Fixed a silly typo in the paren matching code -- it's microseconds, not
- milliseconds.
-
-h. The readline library should be compilable by C++ compilers.
-
-i. The readline.h public header file now includes function prototypes for
- all readline functions, and some changes were made to fix errors in the
- source files uncovered by the use of prototypes.
-
-j. The maximum numeric argument is now clamped at 1000000.
-
-k. Fixes to rl_yank_last_arg to make it behave better.
-
-l. Fixed a bug in the display code that caused core dumps if the prompt
- string length exceeded 1024 characters.
-
-m. The menu completion code was fixed to properly insert a single completion
- if there is only one match.
-
-n. A bug was fixed that caused the display code to improperly display tabs
- after newlines.
-
-o. A fix was made to the completion code in which a typo caused the wrong
- value to be passed to the function that computed the longest common
- prefix of the list of matches.
-
-p. The completion code now checks the value of rl_filename_completion_desired,
- which is set by application-supplied completion functions to indicate
- that filename completion is being performed, to decide whether or not to
- call an application-supplied `ignore completions' function.
-
-q. Code was added to the history library to catch history substitutions
- using `&' without a previous history substitution or search having been
- performed.
-
-
-2. New Features in Readline
-
-a. There is a new script, support/shobj-conf, to do system-specific shared
- object and library configuration. It generates variables for configure
- to substitute into makefiles. The README file provides a detailed
- explanation of the shared library creation process.
-
-b. Shared libraries and objects are now built in the `shlib' subdirectory.
- There is a shlib/Makefile.in to control the build process. `make shared'
- from the top-level directory is still the right way to build shared
- versions of the libraries.
-
-c. rlconf.h is now installed, so applications can find out which features
- have been compiled into the installed readline and history libraries.
-
-d. rlstdc.h is now an installed header file.
-
-e. Many changes to the signal handling:
- o Readline now catches SIGQUIT and cleans up the tty before returning;
- o A new variable, rl_catch_signals, is available to application writers
- to indicate to readline whether or not it should install its own
- signal handlers for SIGINT, SIGTERM, SIGQUIT, SIGALRM, SIGTSTP,
- SIGTTIN, and SIGTTOU;
- o A new variable, rl_catch_sigwinch, is available to application
- writers to indicate to readline whether or not it should install its
- own signal handler for SIGWINCH, which will chain to the calling
- applications's SIGWINCH handler, if one is installed;
- o There is a new function, rl_free_line_state, for application signal
- handlers to call to free up the state associated with the current
- line after receiving a signal;
- o There is a new function, rl_cleanup_after_signal, to clean up the
- display and terminal state after receiving a signal;
- o There is a new function, rl_reset_after_signal, to reinitialize the
- terminal and display state after an application signal handler
- returns and readline continues
-
-f. There is a new function, rl_resize_terminal, to reset readline's idea of
- the screen size after a SIGWINCH.
-
-g. New public functions: rl_save_prompt and rl_restore_prompt. These were
- previously private functions with a `_' prefix. These functions are
- used when an application wants to write a message to the `message area'
- with rl_message and have the prompt restored correctly when the message
- is erased.
-
-h. New function hook: rl_pre_input_hook, called just before readline starts
- reading input, after initialization.
-
-i. New function hook: rl_display_matches_hook, called when readline would
- display the list of completion matches. The new function
- rl_display_match_list is what readline uses internally, and is available
- for use by application functions called via this hook.
-
-j. New bindable function, delete-char-or-list, like tcsh.
-
-k. A new variable, rl_erase_empty_line, which, if set by an application using
- readline, will cause readline to erase, prompt and all, lines on which the
- only thing typed was a newline.
-
-l. There is a new script, support/shlib-install, to install and uninstall
- the shared readline and history libraries.
-
-m. A new bindable variable, `isearch-terminators', which is a string
- containing the set of characters that should terminate an incremental
- search without being executed as a command.
-
-n. A new bindable function, forward-backward-delete-char.
-
--------------------------------------------------------------------------------
-This document details the changes between this version, readline-2.2,
-and the previous version, readline-2.1.
-
-1. Changes to Readline
-
-a. Added a missing `extern' to a declaration in readline.h that kept
- readline from compiling cleanly on some systems.
-
-b. The history file is now opened with mode 0600 when it is written for
- better security.
-
-c. Changes were made to the SIGWINCH handling code so that prompt redisplay
- is done better.
-
-d. ^G now interrupts incremental searches correctly.
-
-e. A bug that caused a core dump when the set of characters to be quoted
- when completing words was empty was fixed.
-
-f. Fixed a problem in the readline test program rltest.c that caused a core
- dump.
-
-g. The code that handles parser directives in inputrc files now displays
- more error messages.
-
-h. The history expansion code was fixed so that the appearance of the
- history comment character at the beginning of a word inhibits history
- expansion for that word and the rest of the input line.
-
-i. The code that prints completion listings now behaves better if one or
- more of the filenames contains non-printable characters.
-
-j. The time delay when showing matching parentheses is now 0.5 seconds.
-
-
-2. New Features in Readline
-
-a. There is now an option for `iterative' yank-last-arg handline, so a user
- can keep entering `M-.', yanking the last argument of successive history
- lines.
-
-b. New variable, `print-completions-horizontally', which causes completion
- matches to be displayed across the screen (like `ls -x') rather than up
- and down the screen (like `ls').
-
-c. New variable, `completion-ignore-case', which causes filename completion
- and matching to be performed case-insensitively.
-
-d. There is a new bindable command, `magic-space', which causes history
- expansion to be performed on the current readline buffer and a space to
- be inserted into the result.
-
-e. There is a new bindable command, `menu-complete', which enables tcsh-like
- menu completion (successive executions of menu-complete insert a single
- completion match, cycling through the list of possible completions).
-
-f. There is a new bindable command, `paste-from-clipboard', for use on Win32
- systems, to insert the text from the Win32 clipboard into the editing
- buffer.
-
-g. The key sequence translation code now understands printf-style backslash
- escape sequences, including \NNN octal escapes. These escape sequences
- may be used in key sequence definitions or macro values.
-
-h. An `$include' inputrc file parser directive has been added.
diff --git a/readline-4.3/COPYING b/readline-4.3/COPYING
deleted file mode 100644
index 1bf1526..0000000
--- a/readline-4.3/COPYING
+++ /dev/null
@@ -1,339 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- Appendix: How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) 19yy <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) 19yy name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/readline-4.3/ChangeLog b/readline-4.3/ChangeLog
deleted file mode 100644
index 9e5af6b..0000000
--- a/readline-4.3/ChangeLog
+++ /dev/null
@@ -1,5 +0,0 @@
-2008-08-21 Joel Sherrill <joel.sherrill@OARcorp.com>
-
- * display.c, histexpand.c, terminal.c: Fix warnings.
- * ChangeLog: New file.
-
diff --git a/readline-4.3/INSTALL b/readline-4.3/INSTALL
deleted file mode 100644
index adb27a9..0000000
--- a/readline-4.3/INSTALL
+++ /dev/null
@@ -1,273 +0,0 @@
-Basic Installation
-==================
-
-These are installation instructions for Readline-4.3.
-
-The simplest way to compile readline is:
-
- 1. `cd' to the directory containing the readline source code and type
- `./configure' to configure readline for your system. If you're
- using `csh' on an old version of System V, you might need to type
- `sh ./configure' instead to prevent `csh' from trying to execute
- `configure' itself.
-
- Running `configure' takes some time. While running, it prints some
- messages telling which features it is checking for.
-
- 2. Type `make' to compile readline and build the static readline
- and history libraries. If supported, the shared readline and history
- libraries will be built also. See below for instructions on compiling
- the other parts of the distribution. Typing `make everything' will
- cause the static and shared libraries (if supported) and the example
- programs to be built.
-
- 3. Type `make install' to install the static readline and history
- libraries, the readline include files, the documentation, and, if
- supported, the shared readline and history libraries.
-
- 4. You can remove the created libraries and object files from the
- build directory by typing `make clean'. To also remove the
- files that `configure' created (so you can compile readline for
- a different kind of computer), type `make distclean'. There is
- also a `make maintainer-clean' target, but that is intended mainly
- for the readline developers, and should be used with care.
-
-The `configure' shell script attempts to guess correct values for
-various system-dependent variables used during compilation. It
-uses those values to create a `Makefile' in the build directory,
-and Makefiles in the `doc', `shlib', and `examples'
-subdirectories. It also creates a `config.h' file containing
-system-dependent definitions. Finally, it creates a shell script
-`config.status' that you can run in the future to recreate the
-current configuration, a file `config.cache' that saves the
-results of its tests to speed up reconfiguring, and a file
-`config.log' containing compiler output (useful mainly for
-debugging `configure').
-
-If you need to do unusual things to compile readline, please try
-to figure out how `configure' could check whether to do them, and
-mail diffs or instructions to <bug-readline@gnu.org> so they can
-be considered for the next release. If at some point
-`config.cache' contains results you don't want to keep, you may
-remove or edit it.
-
-The file `configure.in' is used to create `configure' by a
-program called `autoconf'. You only need `configure.in' if you
-want to change it or regenerate `configure' using a newer version
-of `autoconf'. The readline `configure.in' requires autoconf
-version 2.50 or newer.
-
-Compilers and Options
-=====================
-
-Some systems require unusual options for compilation or linking that
-the `configure' script does not know about. You can give `configure'
-initial values for variables by setting them in the environment. Using
-a Bourne-compatible shell, you can do that on the command line like
-this:
-
- CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
-
-Or on systems that have the `env' program, you can do it like this:
-
- env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
-
-Compiling For Multiple Architectures
-====================================
-
-You can compile readline for more than one kind of computer at the
-same time, by placing the object files for each architecture in their
-own directory. To do this, you must use a version of `make' that
-supports the `VPATH' variable, such as GNU `make'. `cd' to the
-directory where you want the object files and executables to go and run
-the `configure' script. `configure' automatically checks for the
-source code in the directory that `configure' is in and in `..'.
-
-If you have to use a `make' that does not supports the `VPATH'
-variable, you have to compile readline for one architecture at a
-time in the source code directory. After you have installed
-readline for one architecture, use `make distclean' before
-reconfiguring for another architecture.
-
-Installation Names
-==================
-
-By default, `make install' will install the readline libraries in
-`/usr/local/lib', the include files in
-`/usr/local/include/readline', the man pages in `/usr/local/man',
-and the info files in `/usr/local/info'. You can specify an
-installation prefix other than `/usr/local' by giving `configure'
-the option `--prefix=PATH' or by supplying a value for the
-DESTDIR variable when running `make install'.
-
-You can specify separate installation prefixes for
-architecture-specific files and architecture-independent files.
-If you give `configure' the option `--exec-prefix=PATH', the
-readline Makefiles will use PATH as the prefix for installing the
-libraries. Documentation and other data files will still use the
-regular prefix.
-
-Specifying the System Type
-==========================
-
-There may be some features `configure' can not figure out
-automatically, but need to determine by the type of host readline
-will run on. Usually `configure' can figure that out, but if it
-prints a message saying it can not guess the host type, give it
-the `--host=TYPE' option. TYPE can either be a short name for
-the system type, such as `sun4', or a canonical name with three
-fields: CPU-COMPANY-SYSTEM (e.g., i386-unknown-freebsd4.2).
-
-See the file `config.sub' for the possible values of each field.
-
-Sharing Defaults
-================
-
-If you want to set default values for `configure' scripts to share,
-you can create a site shell script called `config.site' that gives
-default values for variables like `CC', `cache_file', and `prefix'.
-`configure' looks for `PREFIX/share/config.site' if it exists, then
-`PREFIX/etc/config.site' if it exists. Or, you can set the
-`CONFIG_SITE' environment variable to the location of the site script.
-A warning: the readline `configure' looks for a site script, but not
-all `configure' scripts do.
-
-Operation Controls
-==================
-
-`configure' recognizes the following options to control how it
-operates.
-
-`--cache-file=FILE'
- Use and save the results of the tests in FILE instead of
- `./config.cache'. Set FILE to `/dev/null' to disable caching, for
- debugging `configure'.
-
-`--help'
- Print a summary of the options to `configure', and exit.
-
-`--quiet'
-`--silent'
-`-q'
- Do not print messages saying which checks are being made.
-
-`--srcdir=DIR'
- Look for the package's source code in directory DIR. Usually
- `configure' can determine that directory automatically.
-
-`--version'
- Print the version of Autoconf used to generate the `configure'
- script, and exit.
-
-`configure' also accepts some other, not widely useful, options.
-
-Optional Features
-=================
-
-The readline `configure' recognizes a single `--with-PACKAGE' option:
-
-`--with-curses'
- This tells readline that it can find the termcap library functions
- (tgetent, et al.) in the curses library, rather than a separate
- termcap library. Readline uses the termcap functions, but does not
- link with the termcap or curses library itself, allowing applications
- which link with readline the to choose an appropriate library.
- This option tells readline to link the example programs with the
- curses library rather than libtermcap.
-
-`configure' also recognizes two `--enable-FEATURE' options:
-
-`--enable-shared'
- Build the shared libraries by default on supported platforms. The
- default is `yes'.
-
-`--enable-static'
- Build the static libraries by default. The default is `yes'.
-
-Shared Libraries
-================
-
-There is support for building shared versions of the readline and
-history libraries. The configure script creates a Makefile in
-the `shlib' subdirectory, and typing `make shared' will cause
-shared versions of the readline and history libraries to be built
-on supported platforms.
-
-If `configure' is given the `--enable-shared' option, it will attempt
-to build the shared libraries by default on supported platforms.
-
-Configure calls the script support/shobj-conf to test whether or
-not shared library creation is supported and to generate the values
-of variables that are substituted into shlib/Makefile. If you
-try to build shared libraries on an unsupported platform, `make'
-will display a message asking you to update support/shobj-conf for
-your platform.
-
-If you need to update support/shobj-conf, you will need to create
-a `stanza' for your operating system and compiler. The script uses
-the value of host_os and ${CC} as determined by configure. For
-instance, FreeBSD 4.2 with any version of gcc is identified as
-`freebsd4.2-gcc*'.
-
-In the stanza for your operating system-compiler pair, you will need to
-define several variables. They are:
-
-SHOBJ_CC The C compiler used to compile source files into shareable
- object files. This is normally set to the value of ${CC}
- by configure, and should not need to be changed.
-
-SHOBJ_CFLAGS Flags to pass to the C compiler ($SHOBJ_CC) to create
- position-independent code. If you are using gcc, this
- should probably be set to `-fpic'.
-
-SHOBJ_LD The link editor to be used to create the shared library from
- the object files created by $SHOBJ_CC. If you are using
- gcc, a value of `gcc' will probably work.
-
-SHOBJ_LDFLAGS Flags to pass to SHOBJ_LD to enable shared object creation.
- If you are using gcc, `-shared' may be all that is necessary.
- These should be the flags needed for generic shared object
- creation.
-
-SHLIB_XLDFLAGS Additional flags to pass to SHOBJ_LD for shared library
- creation. Many systems use the -R option to the link
- editor to embed a path within the library for run-time
- library searches. A reasonable value for such systems would
- be `-R$(libdir)'.
-
-SHLIB_LIBS Any additional libraries that shared libraries should be
- linked against when they are created.
-
-SHLIB_LIBSUFF The suffix to add to `libreadline' and `libhistory' when
- generating the filename of the shared library. Many systems
- use `so'; HP-UX uses `sl'.
-
-SHLIB_LIBVERSION The string to append to the filename to indicate the version
- of the shared library. It should begin with $(SHLIB_LIBSUFF),
- and possibly include version information that allows the
- run-time loader to load the version of the shared library
- appropriate for a particular program. Systems using shared
- libraries similar to SunOS 4.x use major and minor library
- version numbers; for those systems a value of
- `$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' is appropriate.
- Systems based on System V Release 4 don't use minor version
- numbers; use `$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' on those systems.
- Other Unix versions use different schemes.
-
-SHLIB_STATUS Set this to `supported' when you have defined the other
- necessary variables. Make uses this to determine whether
- or not shared library creation should be attempted. If
- shared libraries are not supported, this will be set to
- `unsupported'.
-
-You should look at the existing stanzas in support/shobj-conf for ideas.
-
-Once you have updated support/shobj-conf, re-run configure and type
-`make shared' or `make'. The shared libraries will be created in the
-shlib subdirectory.
-
-If shared libraries are created, `make install' will install them.
-You may install only the shared libraries by running `make
-install-shared' from the top-level build directory. Running `make
-install' in the shlib subdirectory will also work. If you don't want
-to install any created shared libraries, run `make install-static'.
diff --git a/readline-4.3/MANIFEST b/readline-4.3/MANIFEST
deleted file mode 100644
index 1507eda..0000000
--- a/readline-4.3/MANIFEST
+++ /dev/null
@@ -1,126 +0,0 @@
-#
-# Master distribution manifest for the standalone readline distribution
-#
-doc d
-examples d
-support d
-shlib d
-COPYING f
-README f
-MANIFEST f
-INSTALL f
-CHANGELOG f
-CHANGES f
-USAGE f
-aclocal.m4 f
-config.h.in f
-configure f
-configure.in f
-Makefile.in f
-ansi_stdlib.h f
-chardefs.h f
-history.h f
-histlib.h f
-keymaps.h f
-posixdir.h f
-posixjmp.h f
-posixstat.h f
-readline.h f
-rlconf.h f
-rldefs.h f
-rlmbutil.h f
-rlprivate.h f
-rlshell.h f
-rlstdc.h f
-rltty.h f
-rltypedefs.h f
-rlwinsize.h f
-tcap.h f
-tilde.h f
-xmalloc.h f
-bind.c f
-callback.c f
-compat.c f
-complete.c f
-display.c f
-emacs_keymap.c f
-funmap.c f
-input.c f
-isearch.c f
-keymaps.c f
-kill.c f
-macro.c f
-mbutil.c f
-misc.c f
-nls.c f
-parens.c f
-readline.c f
-rltty.c f
-savestring.c f
-search.c f
-shell.c f
-signals.c f
-terminal.c f
-text.c f
-tilde.c f
-undo.c f
-util.c f
-vi_keymap.c f
-vi_mode.c f
-xmalloc.c f
-history.c f
-histexpand.c f
-histfile.c f
-histsearch.c f
-shlib/Makefile.in f
-support/config.guess f
-support/config.sub f
-support/install.sh f
-support/mkdirs f
-support/mkdist f
-support/shobj-conf f
-support/shlib-install f
-support/wcwidth.c f
-doc/Makefile.in f
-doc/texinfo.tex f
-doc/manvers.texinfo f
-doc/rlman.texinfo f
-doc/rltech.texinfo f
-doc/rluser.texinfo f
-doc/rluserman.texinfo f
-doc/hist.texinfo f
-doc/hstech.texinfo f
-doc/hsuser.texinfo f
-doc/readline.3 f
-doc/history.3 f
-doc/texi2dvi f
-doc/texi2html f
-examples/Makefile.in f
-examples/excallback.c f
-examples/fileman.c f
-examples/manexamp.c f
-examples/readlinebuf.h f
-examples/rlcat.c f
-examples/rlfe.c f
-examples/rltest.c f
-examples/rl.c f
-examples/rlversion.c f
-examples/histexamp.c f
-examples/Inputrc f
-# formatted documentation, from MANIFEST.doc
-doc/readline.ps f
-doc/history.ps f
-doc/rluserman.ps f
-doc/readline.dvi f
-doc/history.dvi f
-doc/rluserman.dvi f
-doc/readline.info f
-doc/history.info f
-doc/rluserman.info f
-doc/readline.html f
-doc/history.html f
-doc/rluserman.html f
-doc/readline.0 f
-doc/history.0 f
-doc/readline_3.ps f
-doc/history_3.ps f
diff --git a/readline-4.3/Makefile.in b/readline-4.3/Makefile.in
deleted file mode 100644
index 0ff0c31..0000000
--- a/readline-4.3/Makefile.in
+++ /dev/null
@@ -1,520 +0,0 @@
-## -*- text -*- ##
-# Master Makefile for the GNU readline library.
-# Copyright (C) 1994 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA.
-RL_LIBRARY_VERSION = @LIBVERSION@
-RL_LIBRARY_NAME = readline
-
-srcdir = @srcdir@
-VPATH = .:@srcdir@
-top_srcdir = @top_srcdir@
-BUILD_DIR = @BUILD_DIR@
-
-INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_DATA = @INSTALL_DATA@
-
-CC = @CC@
-RANLIB = @RANLIB@
-AR = @AR@
-ARFLAGS = @ARFLAGS@
-RM = rm -f
-CP = cp
-MV = mv
-
-@SET_MAKE@
-SHELL = @MAKE_SHELL@
-
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-
-bindir = @bindir@
-libdir = @libdir@
-mandir = @mandir@
-includedir = @includedir@
-
-infodir = @infodir@
-
-man3dir = $(mandir)/man3
-
-# Support an alternate destination root directory for package building
-DESTDIR =
-
-# Programs to make tags files.
-ETAGS = etags -tw
-CTAGS = ctags -tw
-
-CFLAGS = @CFLAGS@
-LOCAL_CFLAGS = @LOCAL_CFLAGS@ -DRL_LIBRARY_VERSION='"$(RL_LIBRARY_VERSION)"'
-CPPFLAGS = @CPPFLAGS@
-
-DEFS = @DEFS@
-LOCAL_DEFS = @LOCAL_DEFS@
-
-TERMCAP_LIB = @TERMCAP_LIB@
-
-# For libraries which include headers from other libraries.
-INCLUDES = -I. -I$(srcdir)
-
-XCCFLAGS = $(DEFS) $(LOCAL_DEFS) $(CPPFLAGS) $(INCLUDES)
-CCFLAGS = $(XCCFLAGS) $(LOCAL_CFLAGS) $(CFLAGS)
-
-# could add -Werror here
-GCC_LINT_FLAGS = -ansi -Wall -Wshadow -Wpointer-arith -Wcast-qual \
- -Wwrite-strings -Wstrict-prototypes \
- -Wmissing-prototypes -Wno-implicit -pedantic
-GCC_LINT_CFLAGS = $(XCCFLAGS) $(GCC_LINT_FLAGS) @CFLAGS@ @LOCAL_CFLAGS@
-
-.c.o:
- ${RM} $@
- $(CC) -c $(CCFLAGS) $<
-
-# The name of the main library target.
-LIBRARY_NAME = libreadline.a
-STATIC_LIBS = libreadline.a libhistory.a
-
-# The C code source files for this library.
-CSOURCES = $(srcdir)/readline.c $(srcdir)/funmap.c $(srcdir)/keymaps.c \
- $(srcdir)/vi_mode.c $(srcdir)/parens.c $(srcdir)/rltty.c \
- $(srcdir)/complete.c $(srcdir)/bind.c $(srcdir)/isearch.c \
- $(srcdir)/display.c $(srcdir)/signals.c $(srcdir)/emacs_keymap.c \
- $(srcdir)/vi_keymap.c $(srcdir)/util.c $(srcdir)/kill.c \
- $(srcdir)/undo.c $(srcdir)/macro.c $(srcdir)/input.c \
- $(srcdir)/callback.c $(srcdir)/terminal.c $(srcdir)/xmalloc.c \
- $(srcdir)/history.c $(srcdir)/histsearch.c $(srcdir)/histexpand.c \
- $(srcdir)/histfile.c $(srcdir)/nls.c $(srcdir)/search.c \
- $(srcdir)/shell.c $(srcdir)/savestring.c $(srcdir)/tilde.c \
- $(srcdir)/text.c $(srcdir)/misc.c $(srcdir)/compat.c \
- $(srcdir)/mbutil.c
-
-# The header files for this library.
-HSOURCES = readline.h rldefs.h chardefs.h keymaps.h history.h histlib.h \
- posixstat.h posixdir.h posixjmp.h tilde.h rlconf.h rltty.h \
- ansi_stdlib.h tcap.h rlstdc.h xmalloc.h rlprivate.h rlshell.h \
- rltypedefs.h rlmbutil.h
-
-HISTOBJ = history.o histexpand.o histfile.o histsearch.o shell.o mbutil.o
-TILDEOBJ = tilde.o
-OBJECTS = readline.o vi_mode.o funmap.o keymaps.o parens.o search.o \
- rltty.o complete.o bind.o isearch.o display.o signals.o \
- util.o kill.o undo.o macro.o input.o callback.o terminal.o \
- text.o nls.o misc.o compat.o xmalloc.o $(HISTOBJ) $(TILDEOBJ)
-
-# The texinfo files which document this library.
-DOCSOURCE = doc/rlman.texinfo doc/rltech.texinfo doc/rluser.texinfo
-DOCOBJECT = doc/readline.dvi
-DOCSUPPORT = doc/Makefile
-DOCUMENTATION = $(DOCSOURCE) $(DOCOBJECT) $(DOCSUPPORT)
-
-CREATED_MAKEFILES = Makefile doc/Makefile examples/Makefile shlib/Makefile
-CREATED_CONFIGURE = config.status config.h config.cache config.log \
- stamp-config stamp-h
-CREATED_TAGS = TAGS tags
-
-INSTALLED_HEADERS = readline.h chardefs.h keymaps.h history.h tilde.h \
- rlstdc.h rlconf.h rltypedefs.h
-
-##########################################################################
-TARGETS = @STATIC_TARGET@ @SHARED_TARGET@
-INSTALL_TARGETS = @STATIC_INSTALL_TARGET@ @SHARED_INSTALL_TARGET@
-
-all: $(TARGETS)
-
-everything: all examples
-
-static: $(STATIC_LIBS)
-
-libreadline.a: $(OBJECTS)
- $(RM) $@
- $(AR) $(ARFLAGS) $@ $(OBJECTS)
- -test -n "$(RANLIB)" && $(RANLIB) $@
-
-libhistory.a: $(HISTOBJ) xmalloc.o
- $(RM) $@
- $(AR) $(ARFLAGS) $@ $(HISTOBJ) xmalloc.o
- -test -n "$(RANLIB)" && $(RANLIB) $@
-
-# Since tilde.c is shared between readline and bash, make sure we compile
-# it with the right flags when it's built as part of readline
-tilde.o: tilde.c
- rm -f $@
- $(CC) $(CCFLAGS) -DREADLINE_LIBRARY -c $(srcdir)/tilde.c
-
-readline: $(OBJECTS) readline.h rldefs.h chardefs.h ./libreadline.a
- $(CC) $(CCFLAGS) -o $@ ./examples/rl.c ./libreadline.a ${TERMCAP_LIB}
-
-lint: force
- $(MAKE) $(MFLAGS) CCFLAGS='$(GCC_LINT_CFLAGS)' static
-
-Makefile makefile: config.status $(srcdir)/Makefile.in
- CONFIG_FILES=Makefile CONFIG_HEADERS= $(SHELL) ./config.status
-
-Makefiles makefiles: config.status $(srcdir)/Makefile.in
- @for mf in $(CREATED_MAKEFILES); do \
- CONFIG_FILES=$$mf CONFIG_HEADERS= $(SHELL) ./config.status ; \
- done
-
-config.status: configure
- $(SHELL) ./config.status --recheck
-
-config.h: stamp-h
-
-stamp-h: config.status $(srcdir)/config.h.in
- CONFIG_FILES= CONFIG_HEADERS=config.h ./config.status
- echo > $@
-
-#$(srcdir)/configure: $(srcdir)/configure.in ## Comment-me-out in distribution
-# cd $(srcdir) && autoconf ## Comment-me-out in distribution
-
-
-shared: force
- -test -d shlib || mkdir shlib
- -( cd shlib ; ${MAKE} ${MFLAGS} all )
-
-documentation: force
- -test -d doc || mkdir doc
- -( cd doc && $(MAKE) $(MFLAGS) )
-
-examples: force
- -test -d examples || mkdir examples
- -(cd examples && ${MAKE} ${MFLAGS} all )
-
-force:
-
-install-headers: installdirs ${INSTALLED_HEADERS}
- for f in ${INSTALLED_HEADERS}; do \
- $(INSTALL_DATA) $(srcdir)/$$f $(DESTDIR)$(includedir)/readline ; \
- done
-
-uninstall-headers:
- -test -n "$(includedir)" && cd $(DESTDIR)$(includedir)/readline && \
- ${RM} ${INSTALLED_HEADERS}
-
-maybe-uninstall-headers: uninstall-headers
-
-install: $(INSTALL_TARGETS)
-
-install-static: installdirs $(STATIC_LIBS) install-headers
- -$(MV) $(DESTDIR)$(libdir)/libreadline.a $(DESTDIR)$(libdir)/libreadline.old
- $(INSTALL_DATA) libreadline.a $(DESTDIR)$(libdir)/libreadline.a
- -test -n "$(RANLIB)" && $(RANLIB) $(DESTDIR)$(libdir)/libreadline.a
- -$(MV) $(DESTDIR)$(libdir)/libhistory.a $(DESTDIR)$(libdir)/libhistory.old
- $(INSTALL_DATA) libhistory.a $(DESTDIR)$(libdir)/libhistory.a
- -test -n "$(RANLIB)" && $(RANLIB) $(DESTDIR)$(libdir)/libhistory.a
- -( if test -d doc ; then \
- cd doc && \
- ${MAKE} ${MFLAGS} infodir=$(infodir) DESTDIR=${DESTDIR} install; \
- fi )
-
-installdirs: $(srcdir)/support/mkdirs
- -$(SHELL) $(srcdir)/support/mkdirs $(DESTDIR)$(includedir) \
- $(DESTDIR)$(includedir)/readline $(DESTDIR)$(libdir) \
- $(DESTDIR)$(infodir) $(DESTDIR)$(man3dir)
-
-uninstall: uninstall-headers
- -test -n "$(DESTDIR)$(libdir)" && cd $(DESTDIR)$(libdir) && \
- ${RM} libreadline.a libreadline.old libhistory.a libhistory.old $(SHARED_LIBS)
- -( if test -d doc ; then \
- cd doc && \
- ${MAKE} ${MFLAGS} infodir=$(infodir) DESTDIR=${DESTDIR} $@; \
- fi )
- -( cd shlib; ${MAKE} ${MFLAGS} DESTDIR=${DESTDIR} uninstall )
-
-install-shared: installdirs install-headers shared
- -( cd shlib ; ${MAKE} ${MFLAGS} DESTDIR=${DESTDIR} install )
-
-uninstall-shared: maybe-uninstall-headers
- -( cd shlib; ${MAKE} ${MFLAGS} DESTDIR=${DESTDIR} uninstall )
-
-TAGS: force
- $(ETAGS) $(CSOURCES) $(HSOURCES)
-
-tags: force
- $(CTAGS) $(CSOURCES) $(HSOURCES)
-
-clean: force
- $(RM) $(OBJECTS) $(STATIC_LIBS)
- $(RM) readline readline.exe
- -( cd shlib && $(MAKE) $(MFLAGS) $@ )
- -( cd doc && $(MAKE) $(MFLAGS) $@ )
- -( cd examples && $(MAKE) $(MFLAGS) $@ )
-
-mostlyclean: clean
- -( cd shlib && $(MAKE) $(MFLAGS) $@ )
- -( cd doc && $(MAKE) $(MFLAGS) $@ )
- -( cd examples && $(MAKE) $(MFLAGS) $@ )
-
-distclean maintainer-clean: clean
- -( cd shlib && $(MAKE) $(MFLAGS) $@ )
- -( cd doc && $(MAKE) $(MFLAGS) $@ )
- -( cd examples && $(MAKE) $(MFLAGS) $@ )
- $(RM) Makefile
- $(RM) $(CREATED_CONFIGURE)
- $(RM) $(CREATED_TAGS)
-
-info dvi:
- -( cd doc && $(MAKE) $(MFLAGS) $@ )
-
-install-info:
-check:
-installcheck:
-
-dist: force
- @echo Readline distributions are created using $(srcdir)/support/mkdist.
- @echo Here is a sample of the necessary commands:
- @echo bash $(srcdir)/support/mkdist -m $(srcdir)/MANIFEST -s $(srcdir) -r $(RL_LIBRARY_NAME) $(RL_LIBRARY_VERSION)
- @echo tar cf $(RL_LIBRARY_NAME)-${RL_LIBRARY_VERSION}.tar ${RL_LIBRARY_NAME}-$(RL_LIBRARY_VERSION)
- @echo gzip $(RL_LIBRARY_NAME)-$(RL_LIBRARY_VERSION).tar
-
-# Tell versions [3.59,3.63) of GNU make not to export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
-
-# Dependencies
-bind.o: ansi_stdlib.h posixstat.h
-bind.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h
-bind.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h
-bind.o: history.h
-callback.o: rlconf.h
-callback.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h
-callback.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h
-compat.o: rlstdc.h
-complete.o: ansi_stdlib.h posixdir.h posixstat.h
-complete.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h
-complete.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h
-display.o: ansi_stdlib.h posixstat.h
-display.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h
-display.o: tcap.h
-display.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h
-display.o: history.h rlstdc.h
-funmap.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h
-funmap.o: rlconf.h ansi_stdlib.h rlstdc.h
-funmap.o: ${BUILD_DIR}/config.h
-histexpand.o: ansi_stdlib.h
-histexpand.o: history.h histlib.h rlstdc.h rltypedefs.h
-histexpand.o: ${BUILD_DIR}/config.h
-histfile.o: ansi_stdlib.h
-histfile.o: history.h histlib.h rlstdc.h rltypedefs.h
-histfile.o: ${BUILD_DIR}/config.h
-history.o: ansi_stdlib.h
-history.o: history.h histlib.h rlstdc.h rltypedefs.h
-history.o: ${BUILD_DIR}/config.h
-histsearch.o: ansi_stdlib.h
-histsearch.o: history.h histlib.h rlstdc.h rltypedefs.h
-histsearch.o: ${BUILD_DIR}/config.h
-input.o: ansi_stdlib.h
-input.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h
-input.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h
-isearch.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h
-isearch.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h
-isearch.o: ansi_stdlib.h history.h rlstdc.h
-keymaps.o: emacs_keymap.c vi_keymap.c
-keymaps.o: keymaps.h rltypedefs.h chardefs.h rlconf.h ansi_stdlib.h
-keymaps.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h
-keymaps.o: ${BUILD_DIR}/config.h rlstdc.h
-kill.o: ansi_stdlib.h
-kill.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h
-kill.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h
-kill.o: history.h rlstdc.h
-macro.o: ansi_stdlib.h
-macro.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h
-macro.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h
-macro.o: history.h rlstdc.h
-mbutil.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h
-mbutil.o: readline.h keymaps.h rltypedefs.h chardefs.h rlstdc.h
-misc.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h
-misc.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h
-misc.o: history.h rlstdc.h ansi_stdlib.h
-nls.o: ansi_stdlib.h
-nls.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h
-nls.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h
-nls.o: history.h rlstdc.h
-parens.o: rlconf.h
-parens.o: ${BUILD_DIR}/config.h
-parens.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h
-readline.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h
-readline.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h
-readline.o: history.h rlstdc.h
-readline.o: posixstat.h ansi_stdlib.h posixjmp.h
-rltty.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h
-rltty.o: rltty.h
-rltty.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h
-search.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h
-search.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h
-search.o: ansi_stdlib.h history.h rlstdc.h
-shell.o: ${BUILD_DIR}/config.h
-shell.o: ansi_stdlib.h
-signals.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h
-signals.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h
-signals.o: history.h rlstdc.h
-terminal.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h
-terminal.o: tcap.h
-terminal.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h
-terminal.o: history.h rlstdc.h
-text.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h
-text.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h
-text.o: history.h rlstdc.h ansi_stdlib.h
-tilde.o: ansi_stdlib.h
-tilde.o: ${BUILD_DIR}/config.h
-tilde.o: tilde.h
-undo.o: ansi_stdlib.h
-undo.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h
-undo.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h
-undo.o: history.h rlstdc.h
-util.o: posixjmp.h ansi_stdlib.h
-util.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h
-util.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h
-vi_mode.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h
-vi_mode.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h
-vi_mode.o: history.h ansi_stdlib.h rlstdc.h
-xmalloc.o: ${BUILD_DIR}/config.h
-xmalloc.o: ansi_stdlib.h
-
-bind.o: rlshell.h
-histfile.o: rlshell.h
-nls.o: rlshell.h
-readline.o: rlshell.h
-shell.o: rlshell.h
-terminal.o: rlshell.h
-histexpand.o: rlshell.h
-
-bind.o: rlprivate.h
-callback.o: rlprivate.h
-complete.o: rlprivate.h
-display.o: rlprivate.h
-input.o: rlprivate.h
-isearch.o: rlprivate.h
-kill.o: rlprivate.h
-macro.o: rlprivate.h
-mbutil.o: rlprivate.h
-misc.o: rlprivate.h
-nls.o: rlprivate.h
-parens.o: rlprivate.h
-readline.o: rlprivate.h
-rltty.o: rlprivate.h
-search.o: rlprivate.h
-signals.o: rlprivate.h
-terminal.o: rlprivate.h
-text.o: rlprivate.h
-undo.o: rlprivate.h
-util.o: rlprivate.h
-vi_mode.o: rlprivate.h
-
-bind.o: xmalloc.h
-complete.o: xmalloc.h
-display.o: xmalloc.h
-funmap.o: xmalloc.h
-histexpand.o: xmalloc.h
-histfile.o: xmalloc.h
-history.o: xmalloc.h
-input.o: xmalloc.h
-isearch.o: xmalloc.h
-keymaps.o: xmalloc.h
-kill.o: xmalloc.h
-macro.o: xmalloc.h
-mbutil.o: xmalloc.h
-misc.o: xmalloc.h
-readline.o: xmalloc.h
-savestring.o: xmalloc.h
-search.o: xmalloc.h
-shell.o: xmalloc.h
-terminal.o: xmalloc.h
-text.o: xmalloc.h
-tilde.o: xmalloc.h
-undo.o: xmalloc.h
-util.o: xmalloc.h
-vi_mode.o: xmalloc.h
-xmalloc.o: xmalloc.h
-
-complete.o: rlmbutil.h
-display.o: rlmbutil.h
-histexpand.o: rlmbutil.h
-input.o: rlmbutil.h
-isearch.o: rlmbutil.h
-mbutil.o: rlmbutil.h
-misc.o: rlmbutil.h
-readline.o: rlmbutil.h
-search.o: rlmbutil.h
-text.o: rlmbutil.h
-vi_mode.o: rlmbutil.h
-
-bind.o: $(srcdir)/bind.c
-callback.o: $(srcdir)/callback.c
-compat.o: $(srcdir)/compat.c
-complete.o: $(srcdir)/complete.c
-display.o: $(srcdir)/display.c
-funmap.o: $(srcdir)/funmap.c
-input.o: $(srcdir)/input.c
-isearch.o: $(srcdir)/isearch.c
-keymaps.o: $(srcdir)/keymaps.c $(srcdir)/emacs_keymap.c $(srcdir)/vi_keymap.c
-kill.o: $(srcdir)/kill.c
-macro.o: $(srcdir)/macro.c
-mbutil.o: $(srcdir)/mbutil.c
-misc.o: $(srcdir)/misc.c
-nls.o: $(srcdir)/nls.c
-parens.o: $(srcdir)/parens.c
-readline.o: $(srcdir)/readline.c
-rltty.o: $(srcdir)/rltty.c
-savestring.o: $(srcdir)/savestring.c
-search.o: $(srcdir)/search.c
-shell.o: $(srcdir)/shell.c
-signals.o: $(srcdir)/signals.c
-terminal.o: $(srcdir)/terminal.c
-text.o: $(srcdir)/text.c
-tilde.o: $(srcdir)/tilde.c
-undo.o: $(srcdir)/undo.c
-util.o: $(srcdir)/util.c
-vi_mode.o: $(srcdir)/vi_mode.c
-xmalloc.o: $(srcdir)/xmalloc.c
-
-histexpand.o: $(srcdir)/histexpand.c
-histfile.o: $(srcdir)/histfile.c
-history.o: $(srcdir)/history.c
-histsearch.o: $(srcdir)/histsearch.c
-
-bind.o: bind.c
-callback.o: callback.c
-compat.o: compat.c
-complete.o: complete.c
-display.o: display.c
-funmap.o: funmap.c
-input.o: input.c
-isearch.o: isearch.c
-keymaps.o: keymaps.c emacs_keymap.c vi_keymap.c
-kill.o: kill.c
-macro.o: macro.c
-mbutil.o: mbutil.c
-misc.o: misc.c
-nls.o: nls.c
-parens.o: parens.c
-readline.o: readline.c
-rltty.o: rltty.c
-savestring.o: savestring.c
-search.o: search.c
-shell.o: shell.c
-signals.o: signals.c
-terminal.o: terminal.c
-text.o: text.c
-tilde.o: tilde.c
-undo.o: undo.c
-util.o: util.c
-vi_mode.o: vi_mode.c
-xmalloc.o: xmalloc.c
-
-histexpand.o: histexpand.c
-histfile.o: histfile.c
-history.o: history.c
-histsearch.o: histsearch.c
diff --git a/readline-4.3/README b/readline-4.3/README
deleted file mode 100644
index 7aa9394..0000000
--- a/readline-4.3/README
+++ /dev/null
@@ -1,172 +0,0 @@
-Introduction
-============
-
-This is the Gnu Readline library, version 4.3.
-
-The Readline library provides a set of functions for use by applications
-that allow users to edit command lines as they are typed in. Both
-Emacs and vi editing modes are available. The Readline library includes
-additional functions to maintain a list of previously-entered command
-lines, to recall and perhaps reedit those lines, and perform csh-like
-history expansion on previous commands.
-
-The history facilites are also placed into a separate library, the
-History library, as part of the build process. The History library
-may be used without Readline in applications which desire its
-capabilities.
-
-The Readline library is free software, distributed under the terms of
-the [GNU] General Public License, version 2. For more information, see
-the file COPYING.
-
-To build the library, try typing `./configure', then `make'. The
-configuration process is automated, so no further intervention should
-be necessary. Readline builds with `gcc' by default if it is
-available. If you want to use `cc' instead, type
-
- CC=cc ./configure
-
-if you are using a Bourne-style shell. If you are not, the following
-may work:
-
- env CC=cc ./configure
-
-Read the file INSTALL in this directory for more information about how
-to customize and control the build process.
-
-The file rlconf.h contains C preprocessor defines that enable and disable
-certain Readline features.
-
-The special make target `everything' will build the static and shared
-libraries (if the target platform supports them) and the examples.
-
-Examples
-========
-
-There are several example programs that use Readline features in the
-examples directory. The `rl' program is of particular interest. It
-is a command-line interface to Readline, suitable for use in shell
-scripts in place of `read'.
-
-Shared Libraries
-================
-
-There is skeletal support for building shared versions of the
-Readline and History libraries. The configure script creates
-a Makefile in the `shlib' subdirectory, and typing `make shared'
-will cause shared versions of the Readline and History libraries
-to be built on supported platforms.
-
-If `configure' is given the `--enable-shared' option, it will attempt
-to build the shared libraries by default on supported platforms.
-
-Configure calls the script support/shobj-conf to test whether or
-not shared library creation is supported and to generate the values
-of variables that are substituted into shlib/Makefile. If you
-try to build shared libraries on an unsupported platform, `make'
-will display a message asking you to update support/shobj-conf for
-your platform.
-
-If you need to update support/shobj-conf, you will need to create
-a `stanza' for your operating system and compiler. The script uses
-the value of host_os and ${CC} as determined by configure. For
-instance, FreeBSD 4.2 with any version of gcc is identified as
-`freebsd4.2-gcc*'.
-
-In the stanza for your operating system-compiler pair, you will need to
-define several variables. They are:
-
-SHOBJ_CC The C compiler used to compile source files into shareable
- object files. This is normally set to the value of ${CC}
- by configure, and should not need to be changed.
-
-SHOBJ_CFLAGS Flags to pass to the C compiler ($SHOBJ_CC) to create
- position-independent code. If you are using gcc, this
- should probably be set to `-fpic'.
-
-SHOBJ_LD The link editor to be used to create the shared library from
- the object files created by $SHOBJ_CC. If you are using
- gcc, a value of `gcc' will probably work.
-
-SHOBJ_LDFLAGS Flags to pass to SHOBJ_LD to enable shared object creation.
- If you are using gcc, `-shared' may be all that is necessary.
- These should be the flags needed for generic shared object
- creation.
-
-SHLIB_XLDFLAGS Additional flags to pass to SHOBJ_LD for shared library
- creation. Many systems use the -R option to the link
- editor to embed a path within the library for run-time
- library searches. A reasonable value for such systems would
- be `-R$(libdir)'.
-
-SHLIB_LIBS Any additional libraries that shared libraries should be
- linked against when they are created.
-
-SHLIB_LIBSUFF The suffix to add to `libreadline' and `libhistory' when
- generating the filename of the shared library. Many systems
- use `so'; HP-UX uses `sl'.
-
-SHLIB_LIBVERSION The string to append to the filename to indicate the version
- of the shared library. It should begin with $(SHLIB_LIBSUFF),
- and possibly include version information that allows the
- run-time loader to load the version of the shared library
- appropriate for a particular program. Systems using shared
- libraries similar to SunOS 4.x use major and minor library
- version numbers; for those systems a value of
- `$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' is appropriate.
- Systems based on System V Release 4 don't use minor version
- numbers; use `$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' on those systems.
- Other Unix versions use different schemes.
-
-SHLIB_STATUS Set this to `supported' when you have defined the other
- necessary variables. Make uses this to determine whether
- or not shared library creation should be attempted.
-
-You should look at the existing stanzas in support/shobj-conf for ideas.
-
-Once you have updated support/shobj-conf, re-run configure and type
-`make shared'. The shared libraries will be created in the shlib
-subdirectory.
-
-If shared libraries are created, `make install' will install them.
-You may install only the shared libraries by running `make
-install-shared' from the top-level build directory. Running `make
-install' in the shlib subdirectory will also work. If you don't want
-to install any created shared libraries, run `make install-static'.
-
-Documentation
-=============
-
-The documentation for the Readline and History libraries appears in
-the `doc' subdirectory. There are three texinfo files and a
-Unix-style manual page describing the facilities available in the
-Readline library. The texinfo files include both user and
-programmer's manuals. HTML versions of the manuals appear in the
-`doc' subdirectory as well.
-
-Reporting Bugs
-==============
-
-Bug reports for Readline should be sent to:
-
- bug-readline@gnu.org
-
-When reporting a bug, please include the following information:
-
- * the version number and release status of Readline (e.g., 4.2-release)
- * the machine and OS that it is running on
- * a list of the compilation flags or the contents of `config.h', if
- appropriate
- * a description of the bug
- * a recipe for recreating the bug reliably
- * a fix for the bug if you have one!
-
-If you would like to contact the Readline maintainer directly, send mail
-to bash-maintainers@gnu.org.
-
-Since Readline is developed along with bash, the bug-bash@gnu.org mailing
-list (mirrored to the Usenet newsgroup gnu.bash.bug) often contains
-Readline bug reports and fixes.
-
-Chet Ramey
-chet@po.cwru.edu
diff --git a/readline-4.3/USAGE b/readline-4.3/USAGE
deleted file mode 100644
index edc9f54..0000000
--- a/readline-4.3/USAGE
+++ /dev/null
@@ -1,37 +0,0 @@
-From rms@gnu.org Thu Jul 22 20:37:55 1999
-Flags: 10
-Return-Path: rms@gnu.org
-Received: from arthur.INS.CWRU.Edu (root@arthur.INS.CWRU.Edu [129.22.8.215]) by odin.INS.CWRU.Edu with ESMTP (8.8.6+cwru/CWRU-2.4-ins)
- id UAA25349; Thu, 22 Jul 1999 20:37:54 -0400 (EDT) (from rms@gnu.org for <chet@odin.INS.CWRU.Edu>)
-Received: from nike.ins.cwru.edu (root@nike.INS.CWRU.Edu [129.22.8.219]) by arthur.INS.CWRU.Edu with ESMTP (8.8.8+cwru/CWRU-3.6)
- id UAA05311; Thu, 22 Jul 1999 20:37:51 -0400 (EDT) (from rms@gnu.org for <chet@po.cwru.edu>)
-Received: from pele.santafe.edu (pele.santafe.edu [192.12.12.119]) by nike.ins.cwru.edu with ESMTP (8.8.7/CWRU-2.5-bsdi)
- id UAA13350; Thu, 22 Jul 1999 20:37:50 -0400 (EDT) (from rms@gnu.org for <chet@nike.ins.cwru.edu>)
-Received: from wijiji.santafe.edu (wijiji [192.12.12.5])
- by pele.santafe.edu (8.9.1/8.9.1) with ESMTP id SAA10831
- for <chet@nike.ins.cwru.edu>; Thu, 22 Jul 1999 18:37:47 -0600 (MDT)
-Received: (from rms@localhost)
- by wijiji.santafe.edu (8.9.1b+Sun/8.9.1) id SAA01089;
- Thu, 22 Jul 1999 18:37:46 -0600 (MDT)
-Date: Thu, 22 Jul 1999 18:37:46 -0600 (MDT)
-Message-Id: <199907230037.SAA01089@wijiji.santafe.edu>
-X-Authentication-Warning: wijiji.santafe.edu: rms set sender to rms@gnu.org using -f
-From: Richard Stallman <rms@gnu.org>
-To: chet@nike.ins.cwru.edu
-Subject: Use of Readline
-Reply-to: rms@gnu.org
-
-I think Allbery's suggestion is a good one. So please add this text
-in a suitable place. Please don't put it in the GPL itself; that
-should be the same as the GPL everywhere else. Putting it in the
-README and/or the documentation would be a good idea.
-
-
-======================================================================
-Our position on the use of Readline through a shared-library linking
-mechanism is that there is no legal difference between shared-library
-linking and static linking--either kind of linking combines various
-modules into a single larger work. The conditions for using Readline
-in a larger work are stated in section 3 of the GNU GPL.
-
-
diff --git a/readline-4.3/aclocal.m4 b/readline-4.3/aclocal.m4
deleted file mode 100644
index d1ad025..0000000
--- a/readline-4.3/aclocal.m4
+++ /dev/null
@@ -1,1792 +0,0 @@
-dnl
-dnl Bash specific tests
-dnl
-dnl Some derived from PDKSH 5.1.3 autoconf tests
-dnl
-
-AC_DEFUN(BASH_C_LONG_LONG,
-[AC_CACHE_CHECK(for long long, ac_cv_c_long_long,
-[if test "$GCC" = yes; then
- ac_cv_c_long_long=yes
-else
-AC_TRY_RUN([
-int
-main()
-{
-long long foo = 0;
-exit(sizeof(long long) < sizeof(long));
-}
-], ac_cv_c_long_long=yes, ac_cv_c_long_long=no)
-fi])
-if test $ac_cv_c_long_long = yes; then
- AC_DEFINE(HAVE_LONG_LONG, 1, [Define if the `long long' type works.])
-fi
-])
-
-dnl
-dnl This is very similar to AC_C_LONG_DOUBLE, with the fix for IRIX
-dnl (< changed to <=) added.
-dnl
-AC_DEFUN(BASH_C_LONG_DOUBLE,
-[AC_CACHE_CHECK(for long double, ac_cv_c_long_double,
-[if test "$GCC" = yes; then
- ac_cv_c_long_double=yes
-else
-AC_TRY_RUN([
-int
-main()
-{
- /* The Stardent Vistra knows sizeof(long double), but does not
- support it. */
- long double foo = 0.0;
- /* On Ultrix 4.3 cc, long double is 4 and double is 8. */
- /* On IRIX 5.3, the compiler converts long double to double with a warning,
- but compiles this successfully. */
- exit(sizeof(long double) <= sizeof(double));
-}
-], ac_cv_c_long_double=yes, ac_cv_c_long_double=no)
-fi])
-if test $ac_cv_c_long_double = yes; then
- AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if the `long double' type works.])
-fi
-])
-
-dnl
-dnl Check for <inttypes.h>. This is separated out so that it can be
-dnl AC_REQUIREd.
-dnl
-dnl BASH_HEADER_INTTYPES
-AC_DEFUN(BASH_HEADER_INTTYPES,
-[
- AC_CHECK_HEADERS(inttypes.h)
-])
-
-dnl
-dnl check for typedef'd symbols in header files, but allow the caller to
-dnl specify the include files to be checked in addition to the default
-dnl
-dnl BASH_CHECK_TYPE(TYPE, HEADERS, DEFAULT[, VALUE-IF-FOUND])
-AC_DEFUN(BASH_CHECK_TYPE,
-[
-AC_REQUIRE([AC_HEADER_STDC])dnl
-AC_REQUIRE([BASH_HEADER_INTTYPES])
-AC_MSG_CHECKING(for $1)
-AC_CACHE_VAL(bash_cv_type_$1,
-[AC_EGREP_CPP($1, [#include <sys/types.h>
-#if STDC_HEADERS
-#include <stdlib.h>
-#include <stddef.h>
-#endif
-#if HAVE_INTTYPES_H
-#include <inttypes.h>
-#endif
-$2
-], bash_cv_type_$1=yes, bash_cv_type_$1=no)])
-AC_MSG_RESULT($bash_cv_type_$1)
-ifelse($#, 4, [if test $bash_cv_type_$1 = yes; then
- AC_DEFINE($4)
- fi])
-if test $bash_cv_type_$1 = no; then
- AC_DEFINE_UNQUOTED($1, $3)
-fi
-])
-
-dnl
-dnl BASH_CHECK_DECL(FUNC)
-dnl
-dnl Check for a declaration of FUNC in stdlib.h and inttypes.h like
-dnl AC_CHECK_DECL
-dnl
-AC_DEFUN(BASH_CHECK_DECL,
-[
-AC_REQUIRE([AC_HEADER_STDC])
-AC_REQUIRE([BASH_HEADER_INTTYPES])
-AC_CACHE_CHECK([for declaration of $1], bash_cv_decl_$1,
-[AC_TRY_LINK(
-[
-#if STDC_HEADERS
-# include <stdlib.h>
-#endif
-#if HAVE_INTTYPES_H
-# include <inttypes.h>
-#endif
-],
-[return !$1;],
-bash_cv_decl_$1=yes, bash_cv_decl_$1=no)])
-bash_tr_func=HAVE_DECL_`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-if test $bash_cv_decl_$1 = yes; then
- AC_DEFINE_UNQUOTED($bash_tr_func, 1)
-else
- AC_DEFINE_UNQUOTED($bash_tr_func, 0)
-fi
-])
-
-AC_DEFUN(BASH_DECL_PRINTF,
-[AC_MSG_CHECKING(for declaration of printf in <stdio.h>)
-AC_CACHE_VAL(bash_cv_printf_declared,
-[AC_TRY_RUN([
-#include <stdio.h>
-#ifdef __STDC__
-typedef int (*_bashfunc)(const char *, ...);
-#else
-typedef int (*_bashfunc)();
-#endif
-main()
-{
-_bashfunc pf;
-pf = (_bashfunc) printf;
-exit(pf == 0);
-}
-], bash_cv_printf_declared=yes, bash_cv_printf_declared=no,
- [AC_MSG_WARN(cannot check printf declaration if cross compiling -- defaulting to yes)
- bash_cv_printf_declared=yes]
-)])
-AC_MSG_RESULT($bash_cv_printf_declared)
-if test $bash_cv_printf_declared = yes; then
-AC_DEFINE(PRINTF_DECLARED)
-fi
-])
-
-AC_DEFUN(BASH_DECL_SBRK,
-[AC_MSG_CHECKING(for declaration of sbrk in <unistd.h>)
-AC_CACHE_VAL(bash_cv_sbrk_declared,
-[AC_EGREP_HEADER(sbrk, unistd.h,
- bash_cv_sbrk_declared=yes, bash_cv_sbrk_declared=no)])
-AC_MSG_RESULT($bash_cv_sbrk_declared)
-if test $bash_cv_sbrk_declared = yes; then
-AC_DEFINE(SBRK_DECLARED)
-fi
-])
-
-dnl
-dnl Check for sys_siglist[] or _sys_siglist[]
-dnl
-AC_DEFUN(BASH_DECL_UNDER_SYS_SIGLIST,
-[AC_MSG_CHECKING([for _sys_siglist in signal.h or unistd.h])
-AC_CACHE_VAL(bash_cv_decl_under_sys_siglist,
-[AC_TRY_COMPILE([
-#include <sys/types.h>
-#include <signal.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif], [ char *msg = _sys_siglist[2]; ],
- bash_cv_decl_under_sys_siglist=yes, bash_cv_decl_under_sys_siglist=no,
- [AC_MSG_WARN(cannot check for _sys_siglist[] if cross compiling -- defaulting to no)])])dnl
-AC_MSG_RESULT($bash_cv_decl_under_sys_siglist)
-if test $bash_cv_decl_under_sys_siglist = yes; then
-AC_DEFINE(UNDER_SYS_SIGLIST_DECLARED)
-fi
-])
-
-AC_DEFUN(BASH_UNDER_SYS_SIGLIST,
-[AC_REQUIRE([BASH_DECL_UNDER_SYS_SIGLIST])
-AC_MSG_CHECKING([for _sys_siglist in system C library])
-AC_CACHE_VAL(bash_cv_under_sys_siglist,
-[AC_TRY_RUN([
-#include <sys/types.h>
-#include <signal.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#ifndef UNDER_SYS_SIGLIST_DECLARED
-extern char *_sys_siglist[];
-#endif
-main()
-{
-char *msg = (char *)_sys_siglist[2];
-exit(msg == 0);
-}],
- bash_cv_under_sys_siglist=yes, bash_cv_under_sys_siglist=no,
- [AC_MSG_WARN(cannot check for _sys_siglist[] if cross compiling -- defaulting to no)
- bash_cv_under_sys_siglist=no])])
-AC_MSG_RESULT($bash_cv_under_sys_siglist)
-if test $bash_cv_under_sys_siglist = yes; then
-AC_DEFINE(HAVE_UNDER_SYS_SIGLIST)
-fi
-])
-
-AC_DEFUN(BASH_SYS_SIGLIST,
-[AC_REQUIRE([AC_DECL_SYS_SIGLIST])
-AC_MSG_CHECKING([for sys_siglist in system C library])
-AC_CACHE_VAL(bash_cv_sys_siglist,
-[AC_TRY_RUN([
-#include <sys/types.h>
-#include <signal.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#ifndef SYS_SIGLIST_DECLARED
-extern char *sys_siglist[];
-#endif
-main()
-{
-char *msg = sys_siglist[2];
-exit(msg == 0);
-}],
- bash_cv_sys_siglist=yes, bash_cv_sys_siglist=no,
- [AC_MSG_WARN(cannot check for sys_siglist if cross compiling -- defaulting to no)
- bash_cv_sys_siglist=no])])
-AC_MSG_RESULT($bash_cv_sys_siglist)
-if test $bash_cv_sys_siglist = yes; then
-AC_DEFINE(HAVE_SYS_SIGLIST)
-fi
-])
-
-dnl Check for the various permutations of sys_siglist and make sure we
-dnl compile in siglist.o if they're not defined
-AC_DEFUN(BASH_CHECK_SYS_SIGLIST, [
-AC_REQUIRE([BASH_SYS_SIGLIST])
-AC_REQUIRE([BASH_DECL_UNDER_SYS_SIGLIST])
-AC_REQUIRE([BASH_FUNC_STRSIGNAL])
-if test "$bash_cv_sys_siglist" = no && test "$bash_cv_under_sys_siglist" = no && test "$bash_cv_have_strsignal" = no; then
- SIGLIST_O=siglist.o
-else
- SIGLIST_O=
-fi
-AC_SUBST([SIGLIST_O])
-])
-
-dnl Check for sys_errlist[] and sys_nerr, check for declaration
-AC_DEFUN(BASH_SYS_ERRLIST,
-[AC_MSG_CHECKING([for sys_errlist and sys_nerr])
-AC_CACHE_VAL(bash_cv_sys_errlist,
-[AC_TRY_LINK([#include <errno.h>],
-[extern char *sys_errlist[];
- extern int sys_nerr;
- char *msg = sys_errlist[sys_nerr - 1];],
- bash_cv_sys_errlist=yes, bash_cv_sys_errlist=no)])dnl
-AC_MSG_RESULT($bash_cv_sys_errlist)
-if test $bash_cv_sys_errlist = yes; then
-AC_DEFINE(HAVE_SYS_ERRLIST)
-fi
-])
-
-dnl
-dnl Check if dup2() does not clear the close on exec flag
-dnl
-AC_DEFUN(BASH_FUNC_DUP2_CLOEXEC_CHECK,
-[AC_MSG_CHECKING(if dup2 fails to clear the close-on-exec flag)
-AC_CACHE_VAL(bash_cv_dup2_broken,
-[AC_TRY_RUN([
-#include <sys/types.h>
-#include <fcntl.h>
-main()
-{
- int fd1, fd2, fl;
- fd1 = open("/dev/null", 2);
- if (fcntl(fd1, 2, 1) < 0)
- exit(1);
- fd2 = dup2(fd1, 1);
- if (fd2 < 0)
- exit(2);
- fl = fcntl(fd2, 1, 0);
- /* fl will be 1 if dup2 did not reset the close-on-exec flag. */
- exit(fl != 1);
-}
-], bash_cv_dup2_broken=yes, bash_cv_dup2_broken=no,
- [AC_MSG_WARN(cannot check dup2 if cross compiling -- defaulting to no)
- bash_cv_dup2_broken=no])
-])
-AC_MSG_RESULT($bash_cv_dup2_broken)
-if test $bash_cv_dup2_broken = yes; then
-AC_DEFINE(DUP2_BROKEN)
-fi
-])
-
-AC_DEFUN(BASH_FUNC_STRSIGNAL,
-[AC_MSG_CHECKING([for the existence of strsignal])
-AC_CACHE_VAL(bash_cv_have_strsignal,
-[AC_TRY_LINK([#include <sys/types.h>
-#include <signal.h>],
-[char *s = (char *)strsignal(2);],
- bash_cv_have_strsignal=yes, bash_cv_have_strsignal=no)])
-AC_MSG_RESULT($bash_cv_have_strsignal)
-if test $bash_cv_have_strsignal = yes; then
-AC_DEFINE(HAVE_STRSIGNAL)
-fi
-])
-
-dnl Check to see if opendir will open non-directories (not a nice thing)
-AC_DEFUN(BASH_FUNC_OPENDIR_CHECK,
-[AC_REQUIRE([AC_HEADER_DIRENT])dnl
-AC_MSG_CHECKING(if opendir() opens non-directories)
-AC_CACHE_VAL(bash_cv_opendir_not_robust,
-[AC_TRY_RUN([
-#include <stdio.h>
-#include <sys/types.h>
-#include <fcntl.h>
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-#if defined(HAVE_DIRENT_H)
-# include <dirent.h>
-#else
-# define dirent direct
-# ifdef HAVE_SYS_NDIR_H
-# include <sys/ndir.h>
-# endif /* SYSNDIR */
-# ifdef HAVE_SYS_DIR_H
-# include <sys/dir.h>
-# endif /* SYSDIR */
-# ifdef HAVE_NDIR_H
-# include <ndir.h>
-# endif
-#endif /* HAVE_DIRENT_H */
-main()
-{
-DIR *dir;
-int fd, err;
-err = mkdir("/tmp/bash-aclocal", 0700);
-if (err < 0) {
- perror("mkdir");
- exit(1);
-}
-unlink("/tmp/bash-aclocal/not_a_directory");
-fd = open("/tmp/bash-aclocal/not_a_directory", O_WRONLY|O_CREAT|O_EXCL, 0666);
-write(fd, "\n", 1);
-close(fd);
-dir = opendir("/tmp/bash-aclocal/not_a_directory");
-unlink("/tmp/bash-aclocal/not_a_directory");
-rmdir("/tmp/bash-aclocal");
-exit (dir == 0);
-}], bash_cv_opendir_not_robust=yes,bash_cv_opendir_not_robust=no,
- [AC_MSG_WARN(cannot check opendir if cross compiling -- defaulting to no)
- bash_cv_opendir_not_robust=no]
-)])
-AC_MSG_RESULT($bash_cv_opendir_not_robust)
-if test $bash_cv_opendir_not_robust = yes; then
-AC_DEFINE(OPENDIR_NOT_ROBUST)
-fi
-])
-
-dnl
-AC_DEFUN(BASH_TYPE_SIGHANDLER,
-[AC_MSG_CHECKING([whether signal handlers are of type void])
-AC_CACHE_VAL(bash_cv_void_sighandler,
-[AC_TRY_COMPILE([#include <sys/types.h>
-#include <signal.h>
-#ifdef signal
-#undef signal
-#endif
-#ifdef __cplusplus
-extern "C"
-#endif
-void (*signal ()) ();],
-[int i;], bash_cv_void_sighandler=yes, bash_cv_void_sighandler=no)])dnl
-AC_MSG_RESULT($bash_cv_void_sighandler)
-if test $bash_cv_void_sighandler = yes; then
-AC_DEFINE(VOID_SIGHANDLER)
-fi
-])
-
-dnl
-dnl A signed 16-bit integer quantity
-dnl
-AC_DEFUN(BASH_TYPE_BITS16_T,
-[
-if test "$ac_cv_sizeof_short" = 2; then
- AC_CHECK_TYPE(bits16_t, short)
-elif test "$ac_cv_sizeof_char" = 2; then
- AC_CHECK_TYPE(bits16_t, char)
-else
- AC_CHECK_TYPE(bits16_t, short)
-fi
-])
-
-dnl
-dnl An unsigned 16-bit integer quantity
-dnl
-AC_DEFUN(BASH_TYPE_U_BITS16_T,
-[
-if test "$ac_cv_sizeof_short" = 2; then
- AC_CHECK_TYPE(u_bits16_t, unsigned short)
-elif test "$ac_cv_sizeof_char" = 2; then
- AC_CHECK_TYPE(u_bits16_t, unsigned char)
-else
- AC_CHECK_TYPE(u_bits16_t, unsigned short)
-fi
-])
-
-dnl
-dnl A signed 32-bit integer quantity
-dnl
-AC_DEFUN(BASH_TYPE_BITS32_T,
-[
-if test "$ac_cv_sizeof_int" = 4; then
- AC_CHECK_TYPE(bits32_t, int)
-elif test "$ac_cv_sizeof_long" = 4; then
- AC_CHECK_TYPE(bits32_t, long)
-else
- AC_CHECK_TYPE(bits32_t, int)
-fi
-])
-
-dnl
-dnl An unsigned 32-bit integer quantity
-dnl
-AC_DEFUN(BASH_TYPE_U_BITS32_T,
-[
-if test "$ac_cv_sizeof_int" = 4; then
- AC_CHECK_TYPE(u_bits32_t, unsigned int)
-elif test "$ac_cv_sizeof_long" = 4; then
- AC_CHECK_TYPE(u_bits32_t, unsigned long)
-else
- AC_CHECK_TYPE(u_bits32_t, unsigned int)
-fi
-])
-
-AC_DEFUN(BASH_TYPE_PTRDIFF_T,
-[
-if test "$ac_cv_sizeof_int" = "$ac_cv_sizeof_char_p"; then
- AC_CHECK_TYPE(ptrdiff_t, int)
-elif test "$ac_cv_sizeof_long" = "$ac_cv_sizeof_char_p"; then
- AC_CHECK_TYPE(ptrdiff_t, long)
-elif test "$ac_cv_type_long_long" = yes && test "$ac_cv_sizeof_long_long" = "$ac_cv_sizeof_char_p"; then
- AC_CHECK_TYPE(ptrdiff_t, [long long])
-else
- AC_CHECK_TYPE(ptrdiff_t, int)
-fi
-])
-
-dnl
-dnl A signed 64-bit quantity
-dnl
-AC_DEFUN(BASH_TYPE_BITS64_T,
-[
-if test "$ac_cv_sizeof_char_p" = 8; then
- AC_CHECK_TYPE(bits64_t, char *)
-elif test "$ac_cv_sizeof_double" = 8; then
- AC_CHECK_TYPE(bits64_t, double)
-elif test -n "$ac_cv_type_long_long" && test "$ac_cv_sizeof_long_long" = 8; then
- AC_CHECK_TYPE(bits64_t, [long long])
-elif test "$ac_cv_sizeof_long" = 8; then
- AC_CHECK_TYPE(bits64_t, long)
-else
- AC_CHECK_TYPE(bits64_t, double)
-fi
-])
-
-AC_DEFUN(BASH_TYPE_LONG_LONG,
-[
-AC_CACHE_CHECK([for long long], bash_cv_type_long_long,
-[AC_TRY_LINK([
-long long ll = 1; int i = 63;],
-[
-long long llm = (long long) -1;
-return ll << i | ll >> i | llm / ll | llm % ll;
-], bash_cv_type_long_long='long long', bash_cv_type_long_long='long')])
-if test "$bash_cv_type_long_long" = 'long long'; then
- AC_DEFINE(HAVE_LONG_LONG, 1)
-fi
-])
-
-AC_DEFUN(BASH_TYPE_UNSIGNED_LONG_LONG,
-[
-AC_CACHE_CHECK([for unsigned long long], bash_cv_type_unsigned_long_long,
-[AC_TRY_LINK([
-unsigned long long ull = 1; int i = 63;],
-[
-unsigned long long ullmax = (unsigned long long) -1;
-return ull << i | ull >> i | ullmax / ull | ullmax % ull;
-], bash_cv_type_unsigned_long_long='unsigned long long',
- bash_cv_type_unsigned_long_long='unsigned long')])
-if test "$bash_cv_type_unsigned_long_long" = 'unsigned long long'; then
- AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1)
-fi
-])
-
-dnl
-dnl Type of struct rlimit fields: some systems (OSF/1, NetBSD, RISC/os 5.0)
-dnl have a rlim_t, others (4.4BSD based systems) use quad_t, others use
-dnl long and still others use int (HP-UX 9.01, SunOS 4.1.3). To simplify
-dnl matters, this just checks for rlim_t, quad_t, or long.
-dnl
-AC_DEFUN(BASH_TYPE_RLIMIT,
-[AC_MSG_CHECKING(for size and type of struct rlimit fields)
-AC_CACHE_VAL(bash_cv_type_rlimit,
-[AC_TRY_COMPILE([#include <sys/types.h>
-#include <sys/resource.h>],
-[rlim_t xxx;], bash_cv_type_rlimit=rlim_t,[
-AC_TRY_RUN([
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/resource.h>
-main()
-{
-#ifdef HAVE_QUAD_T
- struct rlimit rl;
- if (sizeof(rl.rlim_cur) == sizeof(quad_t))
- exit(0);
-#endif
- exit(1);
-}], bash_cv_type_rlimit=quad_t, bash_cv_type_rlimit=long,
- [AC_MSG_WARN(cannot check quad_t if cross compiling -- defaulting to long)
- bash_cv_type_rlimit=long])])
-])
-AC_MSG_RESULT($bash_cv_type_rlimit)
-if test $bash_cv_type_rlimit = quad_t; then
-AC_DEFINE(RLIMTYPE, quad_t)
-elif test $bash_cv_type_rlimit = rlim_t; then
-AC_DEFINE(RLIMTYPE, rlim_t)
-fi
-])
-
-AC_DEFUN(BASH_FUNC_LSTAT,
-[dnl Cannot use AC_CHECK_FUNCS(lstat) because Linux defines lstat() as an
-dnl inline function in <sys/stat.h>.
-AC_CACHE_CHECK([for lstat], bash_cv_func_lstat,
-[AC_TRY_LINK([
-#include <sys/types.h>
-#include <sys/stat.h>
-],[ lstat(".",(struct stat *)0); ],
-bash_cv_func_lstat=yes, bash_cv_func_lstat=no)])
-if test $bash_cv_func_lstat = yes; then
- AC_DEFINE(HAVE_LSTAT)
-fi
-])
-
-AC_DEFUN(BASH_FUNC_INET_ATON,
-[
-AC_CACHE_CHECK([for inet_aton], bash_cv_func_inet_aton,
-[AC_TRY_LINK([
-#include <sys/types.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-struct in_addr ap;], [ inet_aton("127.0.0.1", &ap); ],
-bash_cv_func_inet_aton=yes, bash_cv_func_inet_aton=no)])
-if test $bash_cv_func_inet_aton = yes; then
- AC_DEFINE(HAVE_INET_ATON)
-else
- AC_LIBOBJ(inet_aton)
-fi
-])
-
-AC_DEFUN(BASH_FUNC_GETENV,
-[AC_MSG_CHECKING(to see if getenv can be redefined)
-AC_CACHE_VAL(bash_cv_getenv_redef,
-[AC_TRY_RUN([
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-#ifndef __STDC__
-# ifndef const
-# define const
-# endif
-#endif
-char *
-getenv (name)
-#if defined (__linux__) || defined (__bsdi__) || defined (convex)
- const char *name;
-#else
- char const *name;
-#endif /* !__linux__ && !__bsdi__ && !convex */
-{
-return "42";
-}
-main()
-{
-char *s;
-/* The next allows this program to run, but does not allow bash to link
- when it redefines getenv. I'm not really interested in figuring out
- why not. */
-#if defined (NeXT)
-exit(1);
-#endif
-s = getenv("ABCDE");
-exit(s == 0); /* force optimizer to leave getenv in */
-}
-], bash_cv_getenv_redef=yes, bash_cv_getenv_redef=no,
- [AC_MSG_WARN(cannot check getenv redefinition if cross compiling -- defaulting to yes)
- bash_cv_getenv_redef=yes]
-)])
-AC_MSG_RESULT($bash_cv_getenv_redef)
-if test $bash_cv_getenv_redef = yes; then
-AC_DEFINE(CAN_REDEFINE_GETENV)
-fi
-])
-
-# We should check for putenv before calling this
-AC_DEFUN(BASH_FUNC_STD_PUTENV,
-[
-AC_REQUIRE([AC_HEADER_STDC])
-AC_REQUIRE([AC_C_PROTOTYPES])
-AC_CACHE_CHECK([for standard-conformant putenv declaration], bash_cv_std_putenv,
-[AC_TRY_LINK([
-#if STDC_HEADERS
-#include <stdlib.h>
-#include <stddef.h>
-#endif
-#ifndef __STDC__
-# ifndef const
-# define const
-# endif
-#endif
-#ifdef PROTOTYPES
-extern int putenv (char *);
-#else
-extern int putenv ();
-#endif
-],
-[return (putenv == 0);],
-bash_cv_std_putenv=yes, bash_cv_std_putenv=no
-)])
-if test $bash_cv_std_putenv = yes; then
-AC_DEFINE(HAVE_STD_PUTENV)
-fi
-])
-
-# We should check for unsetenv before calling this
-AC_DEFUN(BASH_FUNC_STD_UNSETENV,
-[
-AC_REQUIRE([AC_HEADER_STDC])
-AC_REQUIRE([AC_C_PROTOTYPES])
-AC_CACHE_CHECK([for standard-conformant unsetenv declaration], bash_cv_std_unsetenv,
-[AC_TRY_LINK([
-#if STDC_HEADERS
-#include <stdlib.h>
-#include <stddef.h>
-#endif
-#ifndef __STDC__
-# ifndef const
-# define const
-# endif
-#endif
-#ifdef PROTOTYPES
-extern int unsetenv (const char *);
-#else
-extern int unsetenv ();
-#endif
-],
-[return (unsetenv == 0);],
-bash_cv_std_unsetenv=yes, bash_cv_std_unsetenv=no
-)])
-if test $bash_cv_std_unsetenv = yes; then
-AC_DEFINE(HAVE_STD_UNSETENV)
-fi
-])
-
-AC_DEFUN(BASH_FUNC_ULIMIT_MAXFDS,
-[AC_MSG_CHECKING(whether ulimit can substitute for getdtablesize)
-AC_CACHE_VAL(bash_cv_ulimit_maxfds,
-[AC_TRY_RUN([
-main()
-{
-long maxfds = ulimit(4, 0L);
-exit (maxfds == -1L);
-}
-], bash_cv_ulimit_maxfds=yes, bash_cv_ulimit_maxfds=no,
- [AC_MSG_WARN(cannot check ulimit if cross compiling -- defaulting to no)
- bash_cv_ulimit_maxfds=no]
-)])
-AC_MSG_RESULT($bash_cv_ulimit_maxfds)
-if test $bash_cv_ulimit_maxfds = yes; then
-AC_DEFINE(ULIMIT_MAXFDS)
-fi
-])
-
-AC_DEFUN(BASH_FUNC_GETCWD,
-[AC_MSG_CHECKING([if getcwd() calls popen()])
-AC_CACHE_VAL(bash_cv_getcwd_calls_popen,
-[AC_TRY_RUN([
-#include <stdio.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-
-#ifndef __STDC__
-#ifndef const
-#define const
-#endif
-#endif
-
-int popen_called;
-
-FILE *
-popen(command, type)
- const char *command;
- const char *type;
-{
- popen_called = 1;
- return (FILE *)NULL;
-}
-
-FILE *_popen(command, type)
- const char *command;
- const char *type;
-{
- return (popen (command, type));
-}
-
-int
-pclose(stream)
-FILE *stream;
-{
- return 0;
-}
-
-int
-_pclose(stream)
-FILE *stream;
-{
- return 0;
-}
-
-main()
-{
- char lbuf[32];
- popen_called = 0;
- getcwd(lbuf, 32);
- exit (popen_called);
-}
-], bash_cv_getcwd_calls_popen=no, bash_cv_getcwd_calls_popen=yes,
- [AC_MSG_WARN(cannot check whether getcwd calls popen if cross compiling -- defaulting to no)
- bash_cv_getcwd_calls_popen=no]
-)])
-AC_MSG_RESULT($bash_cv_getcwd_calls_popen)
-if test $bash_cv_getcwd_calls_popen = yes; then
-AC_DEFINE(GETCWD_BROKEN)
-AC_LIBOBJ(getcwd)
-fi
-])
-
-dnl
-dnl This needs BASH_CHECK_SOCKLIB, but since that's not called on every
-dnl system, we can't use AC_PREREQ
-dnl
-AC_DEFUN(BASH_FUNC_GETHOSTBYNAME,
-[if test "X$bash_cv_have_gethostbyname" = "X"; then
-_bash_needmsg=yes
-else
-AC_MSG_CHECKING(for gethostbyname in socket library)
-_bash_needmsg=
-fi
-AC_CACHE_VAL(bash_cv_have_gethostbyname,
-[AC_TRY_LINK([#include <netdb.h>],
-[ struct hostent *hp;
- hp = gethostbyname("localhost");
-], bash_cv_have_gethostbyname=yes, bash_cv_have_gethostbyname=no)]
-)
-if test "X$_bash_needmsg" = Xyes; then
- AC_MSG_CHECKING(for gethostbyname in socket library)
-fi
-AC_MSG_RESULT($bash_cv_have_gethostbyname)
-if test "$bash_cv_have_gethostbyname" = yes; then
-AC_DEFINE(HAVE_GETHOSTBYNAME)
-fi
-])
-
-AC_DEFUN(BASH_FUNC_FNMATCH_EXTMATCH,
-[AC_MSG_CHECKING(if fnmatch does extended pattern matching with FNM_EXTMATCH)
-AC_CACHE_VAL(bash_cv_fnm_extmatch,
-[AC_TRY_RUN([
-#include <fnmatch.h>
-
-main()
-{
-#ifdef FNM_EXTMATCH
- exit (0);
-#else
- exit (1);
-#endif
-}
-], bash_cv_fnm_extmatch=yes, bash_cv_fnm_extmatch=no,
- [AC_MSG_WARN(cannot check FNM_EXTMATCH if cross compiling -- defaulting to no)
- bash_cv_fnm_extmatch=no])
-])
-AC_MSG_RESULT($bash_cv_fnm_extmatch)
-if test $bash_cv_fnm_extmatch = yes; then
-AC_DEFINE(HAVE_LIBC_FNM_EXTMATCH)
-fi
-])
-
-AC_DEFUN(BASH_FUNC_POSIX_SETJMP,
-[AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE])
-AC_MSG_CHECKING(for presence of POSIX-style sigsetjmp/siglongjmp)
-AC_CACHE_VAL(bash_cv_func_sigsetjmp,
-[AC_TRY_RUN([
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#include <sys/types.h>
-#include <signal.h>
-#include <setjmp.h>
-
-main()
-{
-#if !defined (_POSIX_VERSION) || !defined (HAVE_POSIX_SIGNALS)
-exit (1);
-#else
-
-int code;
-sigset_t set, oset;
-sigjmp_buf xx;
-
-/* get the mask */
-sigemptyset(&set);
-sigemptyset(&oset);
-sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &set);
-sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &oset);
-
-/* save it */
-code = sigsetjmp(xx, 1);
-if (code)
- exit(0); /* could get sigmask and compare to oset here. */
-
-/* change it */
-sigaddset(&set, SIGINT);
-sigprocmask(SIG_BLOCK, &set, (sigset_t *)NULL);
-
-/* and siglongjmp */
-siglongjmp(xx, 10);
-exit(1);
-#endif
-}], bash_cv_func_sigsetjmp=present, bash_cv_func_sigsetjmp=missing,
- [AC_MSG_WARN(cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing)
- bash_cv_func_sigsetjmp=missing]
-)])
-AC_MSG_RESULT($bash_cv_func_sigsetjmp)
-if test $bash_cv_func_sigsetjmp = present; then
-AC_DEFINE(HAVE_POSIX_SIGSETJMP)
-fi
-])
-
-AC_DEFUN(BASH_FUNC_STRCOLL,
-[
-AC_MSG_CHECKING(whether or not strcoll and strcmp differ)
-AC_CACHE_VAL(bash_cv_func_strcoll_broken,
-[AC_TRY_RUN([
-#include <stdio.h>
-#if defined (HAVE_LOCALE_H)
-#include <locale.h>
-#endif
-
-main(c, v)
-int c;
-char *v[];
-{
- int r1, r2;
- char *deflocale, *defcoll;
-
-#ifdef HAVE_SETLOCALE
- deflocale = setlocale(LC_ALL, "");
- defcoll = setlocale(LC_COLLATE, "");
-#endif
-
-#ifdef HAVE_STRCOLL
- /* These two values are taken from tests/glob-test. */
- r1 = strcoll("abd", "aXd");
-#else
- r1 = 0;
-#endif
- r2 = strcmp("abd", "aXd");
-
- /* These two should both be greater than 0. It is permissible for
- a system to return different values, as long as the sign is the
- same. */
-
- /* Exit with 1 (failure) if these two values are both > 0, since
- this tests whether strcoll(3) is broken with respect to strcmp(3)
- in the default locale. */
- exit (r1 > 0 && r2 > 0);
-}
-], bash_cv_func_strcoll_broken=yes, bash_cv_func_strcoll_broken=no,
- [AC_MSG_WARN(cannot check strcoll if cross compiling -- defaulting to no)
- bash_cv_func_strcoll_broken=no]
-)])
-AC_MSG_RESULT($bash_cv_func_strcoll_broken)
-if test $bash_cv_func_strcoll_broken = yes; then
-AC_DEFINE(STRCOLL_BROKEN)
-fi
-])
-
-AC_DEFUN(BASH_FUNC_PRINTF_A_FORMAT,
-[AC_MSG_CHECKING([for printf floating point output in hex notation])
-AC_CACHE_VAL(bash_cv_printf_a_format,
-[AC_TRY_RUN([
-#include <stdio.h>
-#include <string.h>
-
-int
-main()
-{
- double y = 0.0;
- char abuf[1024];
-
- sprintf(abuf, "%A", y);
- exit(strchr(abuf, 'P') == (char *)0);
-}
-], bash_cv_printf_a_format=yes, bash_cv_printf_a_format=no,
- [AC_MSG_WARN(cannot check printf if cross compiling -- defaulting to no)
- bash_cv_printf_a_format=no]
-)])
-AC_MSG_RESULT($bash_cv_printf_a_format)
-if test $bash_cv_printf_a_format = yes; then
-AC_DEFINE(HAVE_PRINTF_A_FORMAT)
-fi
-])
-
-AC_DEFUN(BASH_STRUCT_TERMIOS_LDISC,
-[
-AC_CHECK_MEMBER(struct termios.c_line, AC_DEFINE(TERMIOS_LDISC), ,[
-#include <sys/types.h>
-#include <termios.h>
-])
-])
-
-AC_DEFUN(BASH_STRUCT_TERMIO_LDISC,
-[
-AC_CHECK_MEMBER(struct termio.c_line, AC_DEFINE(TERMIO_LDISC), ,[
-#include <sys/types.h>
-#include <termio.h>
-])
-])
-
-dnl
-dnl Like AC_STRUCT_ST_BLOCKS, but doesn't muck with LIBOBJS
-dnl
-dnl sets bash_cv_struct_stat_st_blocks
-dnl
-dnl unused for now; we'll see how AC_CHECK_MEMBERS works
-dnl
-AC_DEFUN(BASH_STRUCT_ST_BLOCKS,
-[
-AC_MSG_CHECKING([for struct stat.st_blocks])
-AC_CACHE_VAL(bash_cv_struct_stat_st_blocks,
-[AC_TRY_COMPILE(
-[
-#include <sys/types.h>
-#include <sys/stat.h>
-],
-[
-main()
-{
-static struct stat a;
-if (a.st_blocks) return 0;
-return 0;
-}
-], bash_cv_struct_stat_st_blocks=yes, bash_cv_struct_stat_st_blocks=no)
-])
-AC_MSG_RESULT($bash_cv_struct_stat_st_blocks)
-if test "$bash_cv_struct_stat_st_blocks" = "yes"; then
-AC_DEFINE(HAVE_STRUCT_STAT_ST_BLOCKS)
-fi
-])
-
-AC_DEFUN(BASH_CHECK_LIB_TERMCAP,
-[
-if test "X$bash_cv_termcap_lib" = "X"; then
-_bash_needmsg=yes
-else
-AC_MSG_CHECKING(which library has the termcap functions)
-_bash_needmsg=
-fi
-AC_CACHE_VAL(bash_cv_termcap_lib,
-[AC_CHECK_LIB(termcap, tgetent, bash_cv_termcap_lib=libtermcap,
- [AC_CHECK_LIB(tinfo, tgetent, bash_cv_termcap_lib=libtinfo,
- [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses,
- [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses,
- bash_cv_termcap_lib=gnutermcap)])])])])
-if test "X$_bash_needmsg" = "Xyes"; then
-AC_MSG_CHECKING(which library has the termcap functions)
-fi
-AC_MSG_RESULT(using $bash_cv_termcap_lib)
-if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then
-LDFLAGS="$LDFLAGS -L./lib/termcap"
-TERMCAP_LIB="./lib/termcap/libtermcap.a"
-TERMCAP_DEP="./lib/termcap/libtermcap.a"
-elif test $bash_cv_termcap_lib = libtermcap && test -z "$prefer_curses"; then
-TERMCAP_LIB=-ltermcap
-TERMCAP_DEP=
-elif test $bash_cv_termcap_lib = libtinfo; then
-TERMCAP_LIB=-ltinfo
-TERMCAP_DEP=
-elif test $bash_cv_termcap_lib = libncurses; then
-TERMCAP_LIB=-lncurses
-TERMCAP_DEP=
-else
-TERMCAP_LIB=-lcurses
-TERMCAP_DEP=
-fi
-])
-
-dnl
-dnl Check for the presence of getpeername in libsocket.
-dnl If libsocket is present, check for libnsl and add it to LIBS if
-dnl it's there, since most systems with libsocket require linking
-dnl with libnsl as well. This should only be called if getpeername
-dnl was not found in libc.
-dnl
-dnl NOTE: IF WE FIND GETPEERNAME, WE ASSUME THAT WE HAVE BIND/CONNECT
-dnl AS WELL
-dnl
-AC_DEFUN(BASH_CHECK_LIB_SOCKET,
-[
-if test "X$bash_cv_have_socklib" = "X"; then
-_bash_needmsg=
-else
-AC_MSG_CHECKING(for socket library)
-_bash_needmsg=yes
-fi
-AC_CACHE_VAL(bash_cv_have_socklib,
-[AC_CHECK_LIB(socket, getpeername,
- bash_cv_have_socklib=yes, bash_cv_have_socklib=no, -lnsl)])
-if test "X$_bash_needmsg" = Xyes; then
- AC_MSG_RESULT($bash_cv_have_socklib)
- _bash_needmsg=
-fi
-if test $bash_cv_have_socklib = yes; then
- # check for libnsl, add it to LIBS if present
- if test "X$bash_cv_have_libnsl" = "X"; then
- _bash_needmsg=
- else
- AC_MSG_CHECKING(for libnsl)
- _bash_needmsg=yes
- fi
- AC_CACHE_VAL(bash_cv_have_libnsl,
- [AC_CHECK_LIB(nsl, t_open,
- bash_cv_have_libnsl=yes, bash_cv_have_libnsl=no)])
- if test "X$_bash_needmsg" = Xyes; then
- AC_MSG_RESULT($bash_cv_have_libnsl)
- _bash_needmsg=
- fi
- if test $bash_cv_have_libnsl = yes; then
- LIBS="-lsocket -lnsl $LIBS"
- else
- LIBS="-lsocket $LIBS"
- fi
- AC_DEFINE(HAVE_LIBSOCKET)
- AC_DEFINE(HAVE_GETPEERNAME)
-fi
-])
-
-AC_DEFUN(BASH_STRUCT_DIRENT_D_INO,
-[AC_REQUIRE([AC_HEADER_DIRENT])
-AC_MSG_CHECKING(if struct dirent has a d_ino member)
-AC_CACHE_VAL(bash_cv_dirent_has_dino,
-[AC_TRY_COMPILE([
-#include <stdio.h>
-#include <sys/types.h>
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-#if defined(HAVE_DIRENT_H)
-# include <dirent.h>
-#else
-# define dirent direct
-# ifdef HAVE_SYS_NDIR_H
-# include <sys/ndir.h>
-# endif /* SYSNDIR */
-# ifdef HAVE_SYS_DIR_H
-# include <sys/dir.h>
-# endif /* SYSDIR */
-# ifdef HAVE_NDIR_H
-# include <ndir.h>
-# endif
-#endif /* HAVE_DIRENT_H */
-],[
-struct dirent d; int z; z = d.d_ino;
-], bash_cv_dirent_has_dino=yes, bash_cv_dirent_has_dino=no)])
-AC_MSG_RESULT($bash_cv_dirent_has_dino)
-if test $bash_cv_dirent_has_dino = yes; then
-AC_DEFINE(STRUCT_DIRENT_HAS_D_INO)
-fi
-])
-
-AC_DEFUN(BASH_STRUCT_DIRENT_D_FILENO,
-[AC_REQUIRE([AC_HEADER_DIRENT])
-AC_MSG_CHECKING(if struct dirent has a d_fileno member)
-AC_CACHE_VAL(bash_cv_dirent_has_d_fileno,
-[AC_TRY_COMPILE([
-#include <stdio.h>
-#include <sys/types.h>
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-#if defined(HAVE_DIRENT_H)
-# include <dirent.h>
-#else
-# define dirent direct
-# ifdef HAVE_SYS_NDIR_H
-# include <sys/ndir.h>
-# endif /* SYSNDIR */
-# ifdef HAVE_SYS_DIR_H
-# include <sys/dir.h>
-# endif /* SYSDIR */
-# ifdef HAVE_NDIR_H
-# include <ndir.h>
-# endif
-#endif /* HAVE_DIRENT_H */
-],[
-struct dirent d; int z; z = d.d_fileno;
-], bash_cv_dirent_has_d_fileno=yes, bash_cv_dirent_has_d_fileno=no)])
-AC_MSG_RESULT($bash_cv_dirent_has_d_fileno)
-if test $bash_cv_dirent_has_d_fileno = yes; then
-AC_DEFINE(STRUCT_DIRENT_HAS_D_FILENO)
-fi
-])
-
-AC_DEFUN(BASH_STRUCT_TIMEVAL,
-[AC_MSG_CHECKING(for struct timeval in sys/time.h and time.h)
-AC_CACHE_VAL(bash_cv_struct_timeval,
-[
-AC_EGREP_HEADER(struct timeval, sys/time.h,
- bash_cv_struct_timeval=yes,
- AC_EGREP_HEADER(struct timeval, time.h,
- bash_cv_struct_timeval=yes,
- bash_cv_struct_timeval=no))
-])
-AC_MSG_RESULT($bash_cv_struct_timeval)
-if test $bash_cv_struct_timeval = yes; then
- AC_DEFINE(HAVE_TIMEVAL)
-fi
-])
-
-AC_DEFUN(BASH_STRUCT_WINSIZE,
-[AC_MSG_CHECKING(for struct winsize in sys/ioctl.h and termios.h)
-AC_CACHE_VAL(bash_cv_struct_winsize_header,
-[AC_TRY_COMPILE([#include <sys/types.h>
-#include <sys/ioctl.h>], [struct winsize x;],
- bash_cv_struct_winsize_header=ioctl_h,
- [AC_TRY_COMPILE([#include <sys/types.h>
-#include <termios.h>], [struct winsize x;],
- bash_cv_struct_winsize_header=termios_h, bash_cv_struct_winsize_header=other)
-])])
-if test $bash_cv_struct_winsize_header = ioctl_h; then
- AC_MSG_RESULT(sys/ioctl.h)
- AC_DEFINE(STRUCT_WINSIZE_IN_SYS_IOCTL)
-elif test $bash_cv_struct_winsize_header = termios_h; then
- AC_MSG_RESULT(termios.h)
- AC_DEFINE(STRUCT_WINSIZE_IN_TERMIOS)
-else
- AC_MSG_RESULT(not found)
-fi
-])
-
-dnl Check type of signal routines (posix, 4.2bsd, 4.1bsd or v7)
-AC_DEFUN(BASH_SYS_SIGNAL_VINTAGE,
-[AC_REQUIRE([AC_TYPE_SIGNAL])
-AC_MSG_CHECKING(for type of signal functions)
-AC_CACHE_VAL(bash_cv_signal_vintage,
-[
- AC_TRY_LINK([#include <signal.h>],[
- sigset_t ss;
- struct sigaction sa;
- sigemptyset(&ss); sigsuspend(&ss);
- sigaction(SIGINT, &sa, (struct sigaction *) 0);
- sigprocmask(SIG_BLOCK, &ss, (sigset_t *) 0);
- ], bash_cv_signal_vintage=posix,
- [
- AC_TRY_LINK([#include <signal.h>], [
- int mask = sigmask(SIGINT);
- sigsetmask(mask); sigblock(mask); sigpause(mask);
- ], bash_cv_signal_vintage=4.2bsd,
- [
- AC_TRY_LINK([
- #include <signal.h>
- RETSIGTYPE foo() { }], [
- int mask = sigmask(SIGINT);
- sigset(SIGINT, foo); sigrelse(SIGINT);
- sighold(SIGINT); sigpause(SIGINT);
- ], bash_cv_signal_vintage=svr3, bash_cv_signal_vintage=v7
- )]
- )]
-)
-])
-AC_MSG_RESULT($bash_cv_signal_vintage)
-if test "$bash_cv_signal_vintage" = posix; then
-AC_DEFINE(HAVE_POSIX_SIGNALS)
-elif test "$bash_cv_signal_vintage" = "4.2bsd"; then
-AC_DEFINE(HAVE_BSD_SIGNALS)
-elif test "$bash_cv_signal_vintage" = svr3; then
-AC_DEFINE(HAVE_USG_SIGHOLD)
-fi
-])
-
-dnl Check if the pgrp of setpgrp() can't be the pid of a zombie process.
-AC_DEFUN(BASH_SYS_PGRP_SYNC,
-[AC_REQUIRE([AC_FUNC_GETPGRP])
-AC_MSG_CHECKING(whether pgrps need synchronization)
-AC_CACHE_VAL(bash_cv_pgrp_pipe,
-[AC_TRY_RUN([
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-main()
-{
-# ifdef GETPGRP_VOID
-# define getpgID() getpgrp()
-# else
-# define getpgID() getpgrp(0)
-# define setpgid(x,y) setpgrp(x,y)
-# endif
- int pid1, pid2, fds[2];
- int status;
- char ok;
-
- switch (pid1 = fork()) {
- case -1:
- exit(1);
- case 0:
- setpgid(0, getpid());
- exit(0);
- }
- setpgid(pid1, pid1);
-
- sleep(2); /* let first child die */
-
- if (pipe(fds) < 0)
- exit(2);
-
- switch (pid2 = fork()) {
- case -1:
- exit(3);
- case 0:
- setpgid(0, pid1);
- ok = getpgID() == pid1;
- write(fds[1], &ok, 1);
- exit(0);
- }
- setpgid(pid2, pid1);
-
- close(fds[1]);
- if (read(fds[0], &ok, 1) != 1)
- exit(4);
- wait(&status);
- wait(&status);
- exit(ok ? 0 : 5);
-}
-], bash_cv_pgrp_pipe=no,bash_cv_pgrp_pipe=yes,
- [AC_MSG_WARN(cannot check pgrp synchronization if cross compiling -- defaulting to no)
- bash_cv_pgrp_pipe=no])
-])
-AC_MSG_RESULT($bash_cv_pgrp_pipe)
-if test $bash_cv_pgrp_pipe = yes; then
-AC_DEFINE(PGRP_PIPE)
-fi
-])
-
-AC_DEFUN(BASH_SYS_REINSTALL_SIGHANDLERS,
-[AC_REQUIRE([AC_TYPE_SIGNAL])
-AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE])
-AC_MSG_CHECKING([if signal handlers must be reinstalled when invoked])
-AC_CACHE_VAL(bash_cv_must_reinstall_sighandlers,
-[AC_TRY_RUN([
-#include <signal.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-
-typedef RETSIGTYPE sigfunc();
-
-int nsigint;
-
-#ifdef HAVE_POSIX_SIGNALS
-sigfunc *
-set_signal_handler(sig, handler)
- int sig;
- sigfunc *handler;
-{
- struct sigaction act, oact;
- act.sa_handler = handler;
- act.sa_flags = 0;
- sigemptyset (&act.sa_mask);
- sigemptyset (&oact.sa_mask);
- sigaction (sig, &act, &oact);
- return (oact.sa_handler);
-}
-#else
-#define set_signal_handler(s, h) signal(s, h)
-#endif
-
-RETSIGTYPE
-sigint(s)
-int s;
-{
- nsigint++;
-}
-
-main()
-{
- nsigint = 0;
- set_signal_handler(SIGINT, sigint);
- kill((int)getpid(), SIGINT);
- kill((int)getpid(), SIGINT);
- exit(nsigint != 2);
-}
-], bash_cv_must_reinstall_sighandlers=no, bash_cv_must_reinstall_sighandlers=yes,
- [AC_MSG_WARN(cannot check signal handling if cross compiling -- defaulting to no)
- bash_cv_must_reinstall_sighandlers=no]
-)])
-AC_MSG_RESULT($bash_cv_must_reinstall_sighandlers)
-if test $bash_cv_must_reinstall_sighandlers = yes; then
-AC_DEFINE(MUST_REINSTALL_SIGHANDLERS)
-fi
-])
-
-dnl check that some necessary job control definitions are present
-AC_DEFUN(BASH_SYS_JOB_CONTROL_MISSING,
-[AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE])
-AC_MSG_CHECKING(for presence of necessary job control definitions)
-AC_CACHE_VAL(bash_cv_job_control_missing,
-[AC_TRY_RUN([
-#include <sys/types.h>
-#ifdef HAVE_SYS_WAIT_H
-#include <sys/wait.h>
-#endif
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#include <signal.h>
-
-/* Add more tests in here as appropriate. */
-main()
-{
-/* signal type */
-#if !defined (HAVE_POSIX_SIGNALS) && !defined (HAVE_BSD_SIGNALS)
-exit(1);
-#endif
-
-/* signals and tty control. */
-#if !defined (SIGTSTP) || !defined (SIGSTOP) || !defined (SIGCONT)
-exit (1);
-#endif
-
-/* process control */
-#if !defined (WNOHANG) || !defined (WUNTRACED)
-exit(1);
-#endif
-
-/* Posix systems have tcgetpgrp and waitpid. */
-#if defined (_POSIX_VERSION) && !defined (HAVE_TCGETPGRP)
-exit(1);
-#endif
-
-#if defined (_POSIX_VERSION) && !defined (HAVE_WAITPID)
-exit(1);
-#endif
-
-/* Other systems have TIOCSPGRP/TIOCGPRGP and wait3. */
-#if !defined (_POSIX_VERSION) && !defined (HAVE_WAIT3)
-exit(1);
-#endif
-
-exit(0);
-}], bash_cv_job_control_missing=present, bash_cv_job_control_missing=missing,
- [AC_MSG_WARN(cannot check job control if cross-compiling -- defaulting to missing)
- bash_cv_job_control_missing=missing]
-)])
-AC_MSG_RESULT($bash_cv_job_control_missing)
-if test $bash_cv_job_control_missing = missing; then
-AC_DEFINE(JOB_CONTROL_MISSING)
-fi
-])
-
-dnl check whether named pipes are present
-dnl this requires a previous check for mkfifo, but that is awkward to specify
-AC_DEFUN(BASH_SYS_NAMED_PIPES,
-[AC_MSG_CHECKING(for presence of named pipes)
-AC_CACHE_VAL(bash_cv_sys_named_pipes,
-[AC_TRY_RUN([
-#include <sys/types.h>
-#include <sys/stat.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-
-/* Add more tests in here as appropriate. */
-main()
-{
-int fd, err;
-
-#if defined (HAVE_MKFIFO)
-exit (0);
-#endif
-
-#if !defined (S_IFIFO) && (defined (_POSIX_VERSION) && !defined (S_ISFIFO))
-exit (1);
-#endif
-
-#if defined (NeXT)
-exit (1);
-#endif
-err = mkdir("/tmp/bash-aclocal", 0700);
-if (err < 0) {
- perror ("mkdir");
- exit(1);
-}
-fd = mknod ("/tmp/bash-aclocal/sh-np-autoconf", 0666 | S_IFIFO, 0);
-if (fd == -1) {
- rmdir ("/tmp/bash-aclocal");
- exit (1);
-}
-close(fd);
-unlink ("/tmp/bash-aclocal/sh-np-autoconf");
-rmdir ("/tmp/bash-aclocal");
-exit(0);
-}], bash_cv_sys_named_pipes=present, bash_cv_sys_named_pipes=missing,
- [AC_MSG_WARN(cannot check for named pipes if cross-compiling -- defaulting to missing)
- bash_cv_sys_named_pipes=missing]
-)])
-AC_MSG_RESULT($bash_cv_sys_named_pipes)
-if test $bash_cv_sys_named_pipes = missing; then
-AC_DEFINE(NAMED_PIPES_MISSING)
-fi
-])
-
-AC_DEFUN(BASH_SYS_DEFAULT_MAIL_DIR,
-[AC_MSG_CHECKING(for default mail directory)
-AC_CACHE_VAL(bash_cv_mail_dir,
-[if test -d /var/mail; then
- bash_cv_mail_dir=/var/mail
- elif test -d /var/spool/mail; then
- bash_cv_mail_dir=/var/spool/mail
- elif test -d /usr/mail; then
- bash_cv_mail_dir=/usr/mail
- elif test -d /usr/spool/mail; then
- bash_cv_mail_dir=/usr/spool/mail
- else
- bash_cv_mail_dir=unknown
- fi
-])
-AC_MSG_RESULT($bash_cv_mail_dir)
-AC_DEFINE_UNQUOTED(DEFAULT_MAIL_DIRECTORY, "$bash_cv_mail_dir")
-])
-
-AC_DEFUN(BASH_HAVE_TIOCGWINSZ,
-[AC_MSG_CHECKING(for TIOCGWINSZ in sys/ioctl.h)
-AC_CACHE_VAL(bash_cv_tiocgwinsz_in_ioctl,
-[AC_TRY_COMPILE([#include <sys/types.h>
-#include <sys/ioctl.h>], [int x = TIOCGWINSZ;],
- bash_cv_tiocgwinsz_in_ioctl=yes,bash_cv_tiocgwinsz_in_ioctl=no)])
-AC_MSG_RESULT($bash_cv_tiocgwinsz_in_ioctl)
-if test $bash_cv_tiocgwinsz_in_ioctl = yes; then
-AC_DEFINE(GWINSZ_IN_SYS_IOCTL)
-fi
-])
-
-AC_DEFUN(BASH_HAVE_TIOCSTAT,
-[AC_MSG_CHECKING(for TIOCSTAT in sys/ioctl.h)
-AC_CACHE_VAL(bash_cv_tiocstat_in_ioctl,
-[AC_TRY_COMPILE([#include <sys/types.h>
-#include <sys/ioctl.h>], [int x = TIOCSTAT;],
- bash_cv_tiocstat_in_ioctl=yes,bash_cv_tiocstat_in_ioctl=no)])
-AC_MSG_RESULT($bash_cv_tiocstat_in_ioctl)
-if test $bash_cv_tiocstat_in_ioctl = yes; then
-AC_DEFINE(TIOCSTAT_IN_SYS_IOCTL)
-fi
-])
-
-AC_DEFUN(BASH_HAVE_FIONREAD,
-[AC_MSG_CHECKING(for FIONREAD in sys/ioctl.h)
-AC_CACHE_VAL(bash_cv_fionread_in_ioctl,
-[AC_TRY_COMPILE([#include <sys/types.h>
-#include <sys/ioctl.h>], [int x = FIONREAD;],
- bash_cv_fionread_in_ioctl=yes,bash_cv_fionread_in_ioctl=no)])
-AC_MSG_RESULT($bash_cv_fionread_in_ioctl)
-if test $bash_cv_fionread_in_ioctl = yes; then
-AC_DEFINE(FIONREAD_IN_SYS_IOCTL)
-fi
-])
-
-dnl
-dnl See if speed_t is declared in <sys/types.h>. Some versions of linux
-dnl require a definition of speed_t each time <termcap.h> is included,
-dnl but you can only get speed_t if you include <termios.h> (on some
-dnl versions) or <sys/types.h> (on others).
-dnl
-AC_DEFUN(BASH_CHECK_SPEED_T,
-[AC_MSG_CHECKING(for speed_t in sys/types.h)
-AC_CACHE_VAL(bash_cv_speed_t_in_sys_types,
-[AC_TRY_COMPILE([#include <sys/types.h>], [speed_t x;],
- bash_cv_speed_t_in_sys_types=yes,bash_cv_speed_t_in_sys_types=no)])
-AC_MSG_RESULT($bash_cv_speed_t_in_sys_types)
-if test $bash_cv_speed_t_in_sys_types = yes; then
-AC_DEFINE(SPEED_T_IN_SYS_TYPES)
-fi
-])
-
-AC_DEFUN(BASH_CHECK_GETPW_FUNCS,
-[AC_MSG_CHECKING(whether getpw functions are declared in pwd.h)
-AC_CACHE_VAL(bash_cv_getpw_declared,
-[AC_EGREP_CPP(getpwuid,
-[
-#include <sys/types.h>
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-#include <pwd.h>
-],
-bash_cv_getpw_declared=yes,bash_cv_getpw_declared=no)])
-AC_MSG_RESULT($bash_cv_getpw_declared)
-if test $bash_cv_getpw_declared = yes; then
-AC_DEFINE(HAVE_GETPW_DECLS)
-fi
-])
-
-AC_DEFUN(BASH_CHECK_DEV_FD,
-[AC_MSG_CHECKING(whether /dev/fd is available)
-AC_CACHE_VAL(bash_cv_dev_fd,
-[if test -d /dev/fd && test -r /dev/fd/0; then
- bash_cv_dev_fd=standard
- elif test -d /proc/self/fd && test -r /proc/self/fd/0; then
- bash_cv_dev_fd=whacky
- else
- bash_cv_dev_fd=absent
- fi
-])
-AC_MSG_RESULT($bash_cv_dev_fd)
-if test $bash_cv_dev_fd = "standard"; then
- AC_DEFINE(HAVE_DEV_FD)
- AC_DEFINE(DEV_FD_PREFIX, "/dev/fd/")
-elif test $bash_cv_dev_fd = "whacky"; then
- AC_DEFINE(HAVE_DEV_FD)
- AC_DEFINE(DEV_FD_PREFIX, "/proc/self/fd/")
-fi
-])
-
-AC_DEFUN(BASH_CHECK_DEV_STDIN,
-[AC_MSG_CHECKING(whether /dev/stdin stdout stderr are available)
-AC_CACHE_VAL(bash_cv_dev_stdin,
-[if test -d /dev/fd && test -r /dev/stdin; then
- bash_cv_dev_stdin=present
- elif test -d /proc/self/fd && test -r /dev/stdin; then
- bash_cv_dev_stdin=present
- else
- bash_cv_dev_stdin=absent
- fi
-])
-AC_MSG_RESULT($bash_cv_dev_stdin)
-if test $bash_cv_dev_stdin = "present"; then
- AC_DEFINE(HAVE_DEV_STDIN)
-fi
-])
-
-dnl
-dnl Check if HPUX needs _KERNEL defined for RLIMIT_* definitions
-dnl
-AC_DEFUN(BASH_CHECK_KERNEL_RLIMIT,
-[AC_MSG_CHECKING([whether $host_os needs _KERNEL for RLIMIT defines])
-AC_CACHE_VAL(bash_cv_kernel_rlimit,
-[AC_TRY_COMPILE([
-#include <sys/types.h>
-#include <sys/resource.h>
-],
-[
- int f;
- f = RLIMIT_DATA;
-], bash_cv_kernel_rlimit=no,
-[AC_TRY_COMPILE([
-#include <sys/types.h>
-#define _KERNEL
-#include <sys/resource.h>
-#undef _KERNEL
-],
-[
- int f;
- f = RLIMIT_DATA;
-], bash_cv_kernel_rlimit=yes, bash_cv_kernel_rlimit=no)]
-)])
-AC_MSG_RESULT($bash_cv_kernel_rlimit)
-if test $bash_cv_kernel_rlimit = yes; then
-AC_DEFINE(RLIMIT_NEEDS_KERNEL)
-fi
-])
-
-dnl
-dnl Check for 64-bit off_t -- used for malloc alignment
-dnl
-dnl C does not allow duplicate case labels, so the compile will fail if
-dnl sizeof(off_t) is > 4.
-dnl
-AC_DEFUN(BASH_CHECK_OFF_T_64,
-[AC_CACHE_CHECK(for 64-bit off_t, bash_cv_off_t_64,
-AC_TRY_COMPILE([
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#include <sys/types.h>
-],[
-switch (0) case 0: case (sizeof (off_t) <= 4):;
-], bash_cv_off_t_64=no, bash_cv_off_t_64=yes))
-if test $bash_cv_off_t_64 = yes; then
- AC_DEFINE(HAVE_OFF_T_64)
-fi])
-
-AC_DEFUN(BASH_CHECK_RTSIGS,
-[AC_MSG_CHECKING(for unusable real-time signals due to large values)
-AC_CACHE_VAL(bash_cv_unusable_rtsigs,
-[AC_TRY_RUN([
-#include <sys/types.h>
-#include <signal.h>
-
-#ifndef NSIG
-# define NSIG 64
-#endif
-
-main ()
-{
- int n_sigs = 2 * NSIG;
-#ifdef SIGRTMIN
- int rtmin = SIGRTMIN;
-#else
- int rtmin = 0;
-#endif
-
- exit(rtmin < n_sigs);
-}], bash_cv_unusable_rtsigs=yes, bash_cv_unusable_rtsigs=no,
- [AC_MSG_WARN(cannot check real-time signals if cross compiling -- defaulting to yes)
- bash_cv_unusable_rtsigs=yes]
-)])
-AC_MSG_RESULT($bash_cv_unusable_rtsigs)
-if test $bash_cv_unusable_rtsigs = yes; then
-AC_DEFINE(UNUSABLE_RT_SIGNALS)
-fi
-])
-
-dnl
-dnl check for availability of multibyte characters and functions
-dnl
-AC_DEFUN(BASH_CHECK_MULTIBYTE,
-[
-AC_CHECK_HEADERS(wctype.h)
-AC_CHECK_HEADERS(wchar.h)
-AC_CHECK_HEADERS(langinfo.h)
-
-AC_CHECK_FUNC(mbsrtowcs, AC_DEFINE(HAVE_MBSRTOWCS))
-AC_CHECK_FUNC(wcwidth, AC_DEFINE(HAVE_WCWIDTH))
-
-AC_CACHE_CHECK([for mbstate_t], bash_cv_have_mbstate_t,
-[AC_TRY_RUN([
-#include <wchar.h>
-int
-main ()
-{
- mbstate_t ps;
- return 0;
-}], bash_cv_have_mbstate_t=yes, bash_cv_have_mbstate_t=no)])
-if test $bash_cv_have_mbstate_t = yes; then
- AC_DEFINE(HAVE_MBSTATE_T)
-fi
-
-AC_CACHE_CHECK([for nl_langinfo and CODESET], bash_cv_langinfo_codeset,
-[AC_TRY_LINK(
-[#include <langinfo.h>],
-[char* cs = nl_langinfo(CODESET);],
-bash_cv_langinfo_codeset=yes, bash_cv_langinfo_codeset=no)])
-if test $bash_cv_langinfo_codeset = yes; then
- AC_DEFINE(HAVE_LANGINFO_CODESET)
-fi
-
-])
-
-dnl need: prefix exec_prefix libdir includedir CC TERMCAP_LIB
-dnl require:
-dnl AC_PROG_CC
-dnl BASH_CHECK_LIB_TERMCAP
-
-AC_DEFUN(RL_LIB_READLINE_VERSION,
-[
-AC_REQUIRE([BASH_CHECK_LIB_TERMCAP])
-
-AC_MSG_CHECKING([version of installed readline library])
-
-# What a pain in the ass this is.
-
-# save cpp and ld options
-_save_CFLAGS="$CFLAGS"
-_save_LDFLAGS="$LDFLAGS"
-_save_LIBS="$LIBS"
-
-# Don't set ac_cv_rl_prefix if the caller has already assigned a value. This
-# allows the caller to do something like $_rl_prefix=$withval if the user
-# specifies --with-installed-readline=PREFIX as an argument to configure
-
-if test -z "$ac_cv_rl_prefix"; then
-test "x$prefix" = xNONE && ac_cv_rl_prefix=$ac_default_prefix || ac_cv_rl_prefix=${prefix}
-fi
-
-eval ac_cv_rl_includedir=${ac_cv_rl_prefix}/include
-eval ac_cv_rl_libdir=${ac_cv_rl_prefix}/lib
-
-LIBS="$LIBS -lreadline ${TERMCAP_LIB}"
-CFLAGS="$CFLAGS -I${ac_cv_rl_includedir}"
-LDFLAGS="$LDFLAGS -L${ac_cv_rl_libdir}"
-
-AC_TRY_RUN([
-#include <stdio.h>
-#include <readline/readline.h>
-
-main()
-{
- FILE *fp;
- fp = fopen("conftest.rlv", "w");
- if (fp == 0) exit(1);
- fprintf(fp, "%s\n", rl_library_version ? rl_library_version : "0.0");
- fclose(fp);
- exit(0);
-}
-],
-ac_cv_rl_version=`cat conftest.rlv`,
-ac_cv_rl_version='0.0',
-ac_cv_rl_version='4.2')
-
-CFLAGS="$_save_CFLAGS"
-LDFLAGS="$_save_LDFLAGS"
-LIBS="$_save_LIBS"
-
-RL_MAJOR=0
-RL_MINOR=0
-
-# (
-case "$ac_cv_rl_version" in
-2*|3*|4*|5*|6*|7*|8*|9*)
- RL_MAJOR=`echo $ac_cv_rl_version | sed 's:\..*$::'`
- RL_MINOR=`echo $ac_cv_rl_version | sed -e 's:^.*\.::' -e 's:[[a-zA-Z]]*$::'`
- ;;
-esac
-
-# (((
-case $RL_MAJOR in
-[[0-9][0-9]]) _RL_MAJOR=$RL_MAJOR ;;
-[[0-9]]) _RL_MAJOR=0$RL_MAJOR ;;
-*) _RL_MAJOR=00 ;;
-esac
-
-# (((
-case $RL_MINOR in
-[[0-9][0-9]]) _RL_MINOR=$RL_MINOR ;;
-[[0-9]]) _RL_MINOR=0$RL_MINOR ;;
-*) _RL_MINOR=00 ;;
-esac
-
-RL_VERSION="0x${_RL_MAJOR}${_RL_MINOR}"
-
-# Readline versions greater than 4.2 have these defines in readline.h
-
-if test $ac_cv_rl_version = '0.0' ; then
- AC_MSG_WARN([Could not test version of installed readline library.])
-elif test $RL_MAJOR -gt 4 || { test $RL_MAJOR = 4 && test $RL_MINOR -gt 2 ; } ; then
- # set these for use by the caller
- RL_PREFIX=$ac_cv_rl_prefix
- RL_LIBDIR=$ac_cv_rl_libdir
- RL_INCLUDEDIR=$ac_cv_rl_includedir
- AC_MSG_RESULT($ac_cv_rl_version)
-else
-
-AC_DEFINE_UNQUOTED(RL_READLINE_VERSION, $RL_VERSION, [encoded version of the installed readline library])
-AC_DEFINE_UNQUOTED(RL_VERSION_MAJOR, $RL_MAJOR, [major version of installed readline library])
-AC_DEFINE_UNQUOTED(RL_VERSION_MINOR, $RL_MINOR, [minor version of installed readline library])
-
-AC_SUBST(RL_VERSION)
-AC_SUBST(RL_MAJOR)
-AC_SUBST(RL_MINOR)
-
-# set these for use by the caller
-RL_PREFIX=$ac_cv_rl_prefix
-RL_LIBDIR=$ac_cv_rl_libdir
-RL_INCLUDEDIR=$ac_cv_rl_includedir
-
-AC_MSG_RESULT($ac_cv_rl_version)
-
-fi
-])
diff --git a/readline-4.3/ansi_stdlib.h b/readline-4.3/ansi_stdlib.h
deleted file mode 100644
index db13cd2..0000000
--- a/readline-4.3/ansi_stdlib.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* ansi_stdlib.h -- An ANSI Standard stdlib.h. */
-/* A minimal stdlib.h containing extern declarations for those functions
- that bash uses. */
-
-/* Copyright (C) 1993 Free Software Foundation, Inc.
-
- This file is part of GNU Bash, the Bourne Again SHell.
-
- Bash is free software; you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free
- Software Foundation; either version 2, or (at your option) any later
- version.
-
- Bash is distributed in the hope that it will be useful, but WITHOUT ANY
- WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- for more details.
-
- You should have received a copy of the GNU General Public License along
- with Bash; see the file COPYING. If not, write to the Free Software
- Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if !defined (_STDLIB_H_)
-#define _STDLIB_H_ 1
-
-/* String conversion functions. */
-extern int atoi ();
-
-extern double atof ();
-extern double strtod ();
-
-/* Memory allocation functions. */
-/* Generic pointer type. */
-#ifndef PTR_T
-
-#if defined (__STDC__)
-# define PTR_T void *
-#else
-# define PTR_T char *
-#endif
-
-#endif /* PTR_T */
-
-extern PTR_T malloc ();
-extern PTR_T realloc ();
-extern void free ();
-
-/* Other miscellaneous functions. */
-extern void abort ();
-extern void exit ();
-extern char *getenv ();
-extern void qsort ();
-
-#endif /* _STDLIB_H */
diff --git a/readline-4.3/bind.c b/readline-4.3/bind.c
deleted file mode 100644
index 65ef401..0000000
--- a/readline-4.3/bind.c
+++ /dev/null
@@ -1,2150 +0,0 @@
-/* bind.c -- key binding and startup file support for the readline library. */
-
-/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <fcntl.h>
-#if defined (HAVE_SYS_FILE_H)
-# include <sys/file.h>
-#endif /* HAVE_SYS_FILE_H */
-
-#if defined (HAVE_UNISTD_H)
-# include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#include <errno.h>
-
-#if !defined (errno)
-extern int errno;
-#endif /* !errno */
-
-#include "posixstat.h"
-
-/* System-specific feature definitions and include files. */
-#include "rldefs.h"
-
-/* Some standard library routines. */
-#include "readline.h"
-#include "history.h"
-
-#include "rlprivate.h"
-#include "rlshell.h"
-#include "xmalloc.h"
-
-#if !defined (strchr) && !defined (__STDC__)
-extern char *strchr (), *strrchr ();
-#endif /* !strchr && !__STDC__ */
-
-/* Variables exported by this file. */
-Keymap rl_binding_keymap;
-
-static char *_rl_read_file PARAMS((char *, size_t *));
-static void _rl_init_file_error PARAMS((const char *));
-static int _rl_read_init_file PARAMS((const char *, int));
-static int glean_key_from_name PARAMS((char *));
-static int substring_member_of_array PARAMS((char *, const char **));
-
-static int currently_reading_init_file;
-
-/* used only in this file */
-static int _rl_prefer_visible_bell = 1;
-
-/* **************************************************************** */
-/* */
-/* Binding keys */
-/* */
-/* **************************************************************** */
-
-/* rl_add_defun (char *name, rl_command_func_t *function, int key)
- Add NAME to the list of named functions. Make FUNCTION be the function
- that gets called. If KEY is not -1, then bind it. */
-int
-rl_add_defun (name, function, key)
- const char *name;
- rl_command_func_t *function;
- int key;
-{
- if (key != -1)
- rl_bind_key (key, function);
- rl_add_funmap_entry (name, function);
- return 0;
-}
-
-/* Bind KEY to FUNCTION. Returns non-zero if KEY is out of range. */
-int
-rl_bind_key (key, function)
- int key;
- rl_command_func_t *function;
-{
- if (key < 0)
- return (key);
-
- if (META_CHAR (key) && _rl_convert_meta_chars_to_ascii)
- {
- if (_rl_keymap[ESC].type == ISKMAP)
- {
- Keymap escmap;
-
- escmap = FUNCTION_TO_KEYMAP (_rl_keymap, ESC);
- key = UNMETA (key);
- escmap[key].type = ISFUNC;
- escmap[key].function = function;
- return (0);
- }
- return (key);
- }
-
- _rl_keymap[key].type = ISFUNC;
- _rl_keymap[key].function = function;
- rl_binding_keymap = _rl_keymap;
- return (0);
-}
-
-/* Bind KEY to FUNCTION in MAP. Returns non-zero in case of invalid
- KEY. */
-int
-rl_bind_key_in_map (key, function, map)
- int key;
- rl_command_func_t *function;
- Keymap map;
-{
- int result;
- Keymap oldmap;
-
- oldmap = _rl_keymap;
- _rl_keymap = map;
- result = rl_bind_key (key, function);
- _rl_keymap = oldmap;
- return (result);
-}
-
-/* Make KEY do nothing in the currently selected keymap.
- Returns non-zero in case of error. */
-int
-rl_unbind_key (key)
- int key;
-{
- return (rl_bind_key (key, (rl_command_func_t *)NULL));
-}
-
-/* Make KEY do nothing in MAP.
- Returns non-zero in case of error. */
-int
-rl_unbind_key_in_map (key, map)
- int key;
- Keymap map;
-{
- return (rl_bind_key_in_map (key, (rl_command_func_t *)NULL, map));
-}
-
-/* Unbind all keys bound to FUNCTION in MAP. */
-int
-rl_unbind_function_in_map (func, map)
- rl_command_func_t *func;
- Keymap map;
-{
- register int i, rval;
-
- for (i = rval = 0; i < KEYMAP_SIZE; i++)
- {
- if (map[i].type == ISFUNC && map[i].function == func)
- {
- map[i].function = (rl_command_func_t *)NULL;
- rval = 1;
- }
- }
- return rval;
-}
-
-int
-rl_unbind_command_in_map (command, map)
- const char *command;
- Keymap map;
-{
- rl_command_func_t *func;
-
- func = rl_named_function (command);
- if (func == 0)
- return 0;
- return (rl_unbind_function_in_map (func, map));
-}
-
-/* Bind the key sequence represented by the string KEYSEQ to
- FUNCTION. This makes new keymaps as necessary. The initial
- place to do bindings is in MAP. */
-int
-rl_set_key (keyseq, function, map)
- const char *keyseq;
- rl_command_func_t *function;
- Keymap map;
-{
- return (rl_generic_bind (ISFUNC, keyseq, (char *)function, map));
-}
-
-/* Bind the key sequence represented by the string KEYSEQ to
- the string of characters MACRO. This makes new keymaps as
- necessary. The initial place to do bindings is in MAP. */
-int
-rl_macro_bind (keyseq, macro, map)
- const char *keyseq, *macro;
- Keymap map;
-{
- char *macro_keys;
- int macro_keys_len;
-
- macro_keys = (char *)xmalloc ((2 * strlen (macro)) + 1);
-
- if (rl_translate_keyseq (macro, macro_keys, &macro_keys_len))
- {
- free (macro_keys);
- return -1;
- }
- rl_generic_bind (ISMACR, keyseq, macro_keys, map);
- return 0;
-}
-
-/* Bind the key sequence represented by the string KEYSEQ to
- the arbitrary pointer DATA. TYPE says what kind of data is
- pointed to by DATA, right now this can be a function (ISFUNC),
- a macro (ISMACR), or a keymap (ISKMAP). This makes new keymaps
- as necessary. The initial place to do bindings is in MAP. */
-int
-rl_generic_bind (type, keyseq, data, map)
- int type;
- const char *keyseq;
- char *data;
- Keymap map;
-{
- char *keys;
- int keys_len;
- register int i;
- KEYMAP_ENTRY k;
-
- k.function = 0;
-
- /* If no keys to bind to, exit right away. */
- if (!keyseq || !*keyseq)
- {
- if (type == ISMACR)
- free (data);
- return -1;
- }
-
- keys = (char *)xmalloc (1 + (2 * strlen (keyseq)));
-
- /* Translate the ASCII representation of KEYSEQ into an array of
- characters. Stuff the characters into KEYS, and the length of
- KEYS into KEYS_LEN. */
- if (rl_translate_keyseq (keyseq, keys, &keys_len))
- {
- free (keys);
- return -1;
- }
-
- /* Bind keys, making new keymaps as necessary. */
- for (i = 0; i < keys_len; i++)
- {
- unsigned char uc = keys[i];
- int ic;
-
- ic = uc;
- if (ic < 0 || ic >= KEYMAP_SIZE)
- return -1;
-
- if (_rl_convert_meta_chars_to_ascii && META_CHAR (ic))
- {
- ic = UNMETA (ic);
- if (map[ESC].type == ISKMAP)
- map = FUNCTION_TO_KEYMAP (map, ESC);
- }
-
- if ((i + 1) < keys_len)
- {
- if (map[ic].type != ISKMAP)
- {
- /* We allow subsequences of keys. If a keymap is being
- created that will `shadow' an existing function or macro
- key binding, we save that keybinding into the ANYOTHERKEY
- index in the new map. The dispatch code will look there
- to find the function to execute if the subsequence is not
- matched. ANYOTHERKEY was chosen to be greater than
- UCHAR_MAX. */
- k = map[ic];
-
- map[ic].type = ISKMAP;
- map[ic].function = KEYMAP_TO_FUNCTION (rl_make_bare_keymap());
- }
- map = FUNCTION_TO_KEYMAP (map, ic);
- /* The dispatch code will return this function if no matching
- key sequence is found in the keymap. This (with a little
- help from the dispatch code in readline.c) allows `a' to be
- mapped to something, `abc' to be mapped to something else,
- and the function bound to `a' to be executed when the user
- types `abx', leaving `bx' in the input queue. */
- if (k.function /* && k.type == ISFUNC */)
- {
- map[ANYOTHERKEY] = k;
- k.function = 0;
- }
- }
- else
- {
- if (map[ic].type == ISMACR)
- free ((char *)map[ic].function);
- else if (map[ic].type == ISKMAP)
- {
- map = FUNCTION_TO_KEYMAP (map, ic);
- ic = ANYOTHERKEY;
- }
-
- map[ic].function = KEYMAP_TO_FUNCTION (data);
- map[ic].type = type;
- }
-
- rl_binding_keymap = map;
- }
- free (keys);
- return 0;
-}
-
-/* Translate the ASCII representation of SEQ, stuffing the values into ARRAY,
- an array of characters. LEN gets the final length of ARRAY. Return
- non-zero if there was an error parsing SEQ. */
-int
-rl_translate_keyseq (seq, array, len)
- const char *seq;
- char *array;
- int *len;
-{
- register int i, c, l, temp;
-
- for (i = l = 0; c = seq[i]; i++)
- {
- if (c == '\\')
- {
- c = seq[++i];
-
- if (c == 0)
- break;
-
- /* Handle \C- and \M- prefixes. */
- if ((c == 'C' || c == 'M') && seq[i + 1] == '-')
- {
- /* Handle special case of backwards define. */
- if (strncmp (&seq[i], "C-\\M-", 5) == 0)
- {
- array[l++] = ESC; /* ESC is meta-prefix */
- i += 5;
- array[l++] = CTRL (_rl_to_upper (seq[i]));
- if (seq[i] == '\0')
- i--;
- }
- else if (c == 'M')
- {
- i++;
- array[l++] = ESC; /* ESC is meta-prefix */
- }
- else if (c == 'C')
- {
- i += 2;
- /* Special hack for C-?... */
- array[l++] = (seq[i] == '?') ? RUBOUT : CTRL (_rl_to_upper (seq[i]));
- }
- continue;
- }
-
- /* Translate other backslash-escaped characters. These are the
- same escape sequences that bash's `echo' and `printf' builtins
- handle, with the addition of \d -> RUBOUT. A backslash
- preceding a character that is not special is stripped. */
- switch (c)
- {
- case 'a':
- array[l++] = '\007';
- break;
- case 'b':
- array[l++] = '\b';
- break;
- case 'd':
- array[l++] = RUBOUT; /* readline-specific */
- break;
- case 'e':
- array[l++] = ESC;
- break;
- case 'f':
- array[l++] = '\f';
- break;
- case 'n':
- array[l++] = NEWLINE;
- break;
- case 'r':
- array[l++] = RETURN;
- break;
- case 't':
- array[l++] = TAB;
- break;
- case 'v':
- array[l++] = 0x0B;
- break;
- case '\\':
- array[l++] = '\\';
- break;
- case '0': case '1': case '2': case '3':
- case '4': case '5': case '6': case '7':
- i++;
- for (temp = 2, c -= '0'; ISOCTAL (seq[i]) && temp--; i++)
- c = (c * 8) + OCTVALUE (seq[i]);
- i--; /* auto-increment in for loop */
- array[l++] = c & largest_char;
- break;
- case 'x':
- i++;
- for (temp = 2, c = 0; ISXDIGIT ((unsigned char)seq[i]) && temp--; i++)
- c = (c * 16) + HEXVALUE (seq[i]);
- if (temp == 2)
- c = 'x';
- i--; /* auto-increment in for loop */
- array[l++] = c & largest_char;
- break;
- default: /* backslashes before non-special chars just add the char */
- array[l++] = c;
- break; /* the backslash is stripped */
- }
- continue;
- }
-
- array[l++] = c;
- }
-
- *len = l;
- array[l] = '\0';
- return (0);
-}
-
-char *
-rl_untranslate_keyseq (seq)
- int seq;
-{
- static char kseq[16];
- int i, c;
-
- i = 0;
- c = seq;
- if (META_CHAR (c))
- {
- kseq[i++] = '\\';
- kseq[i++] = 'M';
- kseq[i++] = '-';
- c = UNMETA (c);
- }
- else if (CTRL_CHAR (c))
- {
- kseq[i++] = '\\';
- kseq[i++] = 'C';
- kseq[i++] = '-';
- c = _rl_to_lower (UNCTRL (c));
- }
- else if (c == RUBOUT)
- {
- kseq[i++] = '\\';
- kseq[i++] = 'C';
- kseq[i++] = '-';
- c = '?';
- }
-
- if (c == ESC)
- {
- kseq[i++] = '\\';
- c = 'e';
- }
- else if (c == '\\' || c == '"')
- {
- kseq[i++] = '\\';
- }
-
- kseq[i++] = (unsigned char) c;
- kseq[i] = '\0';
- return kseq;
-}
-
-static char *
-_rl_untranslate_macro_value (seq)
- char *seq;
-{
- char *ret, *r, *s;
- int c;
-
- r = ret = (char *)xmalloc (7 * strlen (seq) + 1);
- for (s = seq; *s; s++)
- {
- c = *s;
- if (META_CHAR (c))
- {
- *r++ = '\\';
- *r++ = 'M';
- *r++ = '-';
- c = UNMETA (c);
- }
- else if (CTRL_CHAR (c) && c != ESC)
- {
- *r++ = '\\';
- *r++ = 'C';
- *r++ = '-';
- c = _rl_to_lower (UNCTRL (c));
- }
- else if (c == RUBOUT)
- {
- *r++ = '\\';
- *r++ = 'C';
- *r++ = '-';
- c = '?';
- }
-
- if (c == ESC)
- {
- *r++ = '\\';
- c = 'e';
- }
- else if (c == '\\' || c == '"')
- *r++ = '\\';
-
- *r++ = (unsigned char)c;
- }
- *r = '\0';
- return ret;
-}
-
-/* Return a pointer to the function that STRING represents.
- If STRING doesn't have a matching function, then a NULL pointer
- is returned. */
-rl_command_func_t *
-rl_named_function (string)
- const char *string;
-{
- register int i;
-
- rl_initialize_funmap ();
-
- for (i = 0; funmap[i]; i++)
- if (_rl_stricmp (funmap[i]->name, string) == 0)
- return (funmap[i]->function);
- return ((rl_command_func_t *)NULL);
-}
-
-/* Return the function (or macro) definition which would be invoked via
- KEYSEQ if executed in MAP. If MAP is NULL, then the current keymap is
- used. TYPE, if non-NULL, is a pointer to an int which will receive the
- type of the object pointed to. One of ISFUNC (function), ISKMAP (keymap),
- or ISMACR (macro). */
-rl_command_func_t *
-rl_function_of_keyseq (keyseq, map, type)
- const char *keyseq;
- Keymap map;
- int *type;
-{
- register int i;
-
- if (!map)
- map = _rl_keymap;
-
- for (i = 0; keyseq && keyseq[i]; i++)
- {
- unsigned char ic = keyseq[i];
-
- if (META_CHAR (ic) && _rl_convert_meta_chars_to_ascii)
- {
- if (map[ESC].type != ISKMAP)
- {
- if (type)
- *type = map[ESC].type;
-
- return (map[ESC].function);
- }
- else
- {
- map = FUNCTION_TO_KEYMAP (map, ESC);
- ic = UNMETA (ic);
- }
- }
-
- if (map[ic].type == ISKMAP)
- {
- /* If this is the last key in the key sequence, return the
- map. */
- if (!keyseq[i + 1])
- {
- if (type)
- *type = ISKMAP;
-
- return (map[ic].function);
- }
- else
- map = FUNCTION_TO_KEYMAP (map, ic);
- }
- else
- {
- if (type)
- *type = map[ic].type;
-
- return (map[ic].function);
- }
- }
- return ((rl_command_func_t *) NULL);
-}
-
-/* The last key bindings file read. */
-static char *last_readline_init_file = (char *)NULL;
-
-/* The file we're currently reading key bindings from. */
-static const char *current_readline_init_file;
-static int current_readline_init_include_level;
-static int current_readline_init_lineno;
-
-/* Read FILENAME into a locally-allocated buffer and return the buffer.
- The size of the buffer is returned in *SIZEP. Returns NULL if any
- errors were encountered. */
-static char *
-_rl_read_file (filename, sizep)
- char *filename;
- size_t *sizep;
-{
- struct stat finfo;
- size_t file_size;
- char *buffer;
- int i, file;
-
- if ((stat (filename, &finfo) < 0) || (file = open (filename, O_RDONLY, 0666)) < 0)
- return ((char *)NULL);
-
- file_size = (size_t)finfo.st_size;
-
- /* check for overflow on very large files */
- if (file_size != finfo.st_size || file_size + 1 < file_size)
- {
- if (file >= 0)
- close (file);
-#if defined (EFBIG)
- errno = EFBIG;
-#endif
- return ((char *)NULL);
- }
-
- /* Read the file into BUFFER. */
- buffer = (char *)xmalloc (file_size + 1);
- i = read (file, buffer, file_size);
- close (file);
-
- if (i < 0)
- {
- free (buffer);
- return ((char *)NULL);
- }
-
- buffer[i] = '\0';
- if (sizep)
- *sizep = i;
-
- return (buffer);
-}
-
-/* Re-read the current keybindings file. */
-int
-rl_re_read_init_file (count, ignore)
- int count, ignore;
-{
- int r;
- r = rl_read_init_file ((const char *)NULL);
- rl_set_keymap_from_edit_mode ();
- return r;
-}
-
-/* Do key bindings from a file. If FILENAME is NULL it defaults
- to the first non-null filename from this list:
- 1. the filename used for the previous call
- 2. the value of the shell variable `INPUTRC'
- 3. ~/.inputrc
- If the file existed and could be opened and read, 0 is returned,
- otherwise errno is returned. */
-int
-rl_read_init_file (filename)
- const char *filename;
-{
- /* Default the filename. */
- if (filename == 0)
- {
- filename = last_readline_init_file;
- if (filename == 0)
- filename = sh_get_env_value ("INPUTRC");
- if (filename == 0)
- filename = DEFAULT_INPUTRC;
- }
-
- if (*filename == 0)
- filename = DEFAULT_INPUTRC;
-
-#if defined (__MSDOS__)
- if (_rl_read_init_file (filename, 0) == 0)
- return 0;
- filename = "~/_inputrc";
-#endif
- return (_rl_read_init_file (filename, 0));
-}
-
-static int
-_rl_read_init_file (filename, include_level)
- const char *filename;
- int include_level;
-{
- register int i;
- char *buffer, *openname, *line, *end;
- size_t file_size;
-
- current_readline_init_file = filename;
- current_readline_init_include_level = include_level;
-
- openname = tilde_expand (filename);
- buffer = _rl_read_file (openname, &file_size);
- free (openname);
-
- if (buffer == 0)
- return (errno);
-
- if (include_level == 0 && filename != last_readline_init_file)
- {
- FREE (last_readline_init_file);
- last_readline_init_file = savestring (filename);
- }
-
- currently_reading_init_file = 1;
-
- /* Loop over the lines in the file. Lines that start with `#' are
- comments; all other lines are commands for readline initialization. */
- current_readline_init_lineno = 1;
- line = buffer;
- end = buffer + file_size;
- while (line < end)
- {
- /* Find the end of this line. */
- for (i = 0; line + i != end && line[i] != '\n'; i++);
-
-#if defined (__CYGWIN__)
- /* ``Be liberal in what you accept.'' */
- if (line[i] == '\n' && line[i-1] == '\r')
- line[i - 1] = '\0';
-#endif
-
- /* Mark end of line. */
- line[i] = '\0';
-
- /* Skip leading whitespace. */
- while (*line && whitespace (*line))
- {
- line++;
- i--;
- }
-
- /* If the line is not a comment, then parse it. */
- if (*line && *line != '#')
- rl_parse_and_bind (line);
-
- /* Move to the next line. */
- line += i + 1;
- current_readline_init_lineno++;
- }
-
- free (buffer);
- currently_reading_init_file = 0;
- return (0);
-}
-
-static void
-_rl_init_file_error (msg)
- const char *msg;
-{
- if (currently_reading_init_file)
- fprintf (stderr, "readline: %s: line %d: %s\n", current_readline_init_file,
- current_readline_init_lineno, msg);
- else
- fprintf (stderr, "readline: %s\n", msg);
-}
-
-/* **************************************************************** */
-/* */
-/* Parser Directives */
-/* */
-/* **************************************************************** */
-
-typedef int _rl_parser_func_t PARAMS((char *));
-
-/* Things that mean `Control'. */
-const char *_rl_possible_control_prefixes[] = {
- "Control-", "C-", "CTRL-", (const char *)NULL
-};
-
-const char *_rl_possible_meta_prefixes[] = {
- "Meta", "M-", (const char *)NULL
-};
-
-/* Conditionals. */
-
-/* Calling programs set this to have their argv[0]. */
-const char *rl_readline_name = "other";
-
-/* Stack of previous values of parsing_conditionalized_out. */
-static unsigned char *if_stack = (unsigned char *)NULL;
-static int if_stack_depth;
-static int if_stack_size;
-
-/* Push _rl_parsing_conditionalized_out, and set parser state based
- on ARGS. */
-static int
-parser_if (args)
- char *args;
-{
- register int i;
-
- /* Push parser state. */
- if (if_stack_depth + 1 >= if_stack_size)
- {
- if (!if_stack)
- if_stack = (unsigned char *)xmalloc (if_stack_size = 20);
- else
- if_stack = (unsigned char *)xrealloc (if_stack, if_stack_size += 20);
- }
- if_stack[if_stack_depth++] = _rl_parsing_conditionalized_out;
-
- /* If parsing is turned off, then nothing can turn it back on except
- for finding the matching endif. In that case, return right now. */
- if (_rl_parsing_conditionalized_out)
- return 0;
-
- /* Isolate first argument. */
- for (i = 0; args[i] && !whitespace (args[i]); i++);
-
- if (args[i])
- args[i++] = '\0';
-
- /* Handle "$if term=foo" and "$if mode=emacs" constructs. If this
- isn't term=foo, or mode=emacs, then check to see if the first
- word in ARGS is the same as the value stored in rl_readline_name. */
- if (rl_terminal_name && _rl_strnicmp (args, "term=", 5) == 0)
- {
- char *tem, *tname;
-
- /* Terminals like "aaa-60" are equivalent to "aaa". */
- tname = savestring (rl_terminal_name);
- tem = strchr (tname, '-');
- if (tem)
- *tem = '\0';
-
- /* Test the `long' and `short' forms of the terminal name so that
- if someone has a `sun-cmd' and does not want to have bindings
- that will be executed if the terminal is a `sun', they can put
- `$if term=sun-cmd' into their .inputrc. */
- _rl_parsing_conditionalized_out = _rl_stricmp (args + 5, tname) &&
- _rl_stricmp (args + 5, rl_terminal_name);
- free (tname);
- }
-#if defined (VI_MODE)
- else if (_rl_strnicmp (args, "mode=", 5) == 0)
- {
- int mode;
-
- if (_rl_stricmp (args + 5, "emacs") == 0)
- mode = emacs_mode;
- else if (_rl_stricmp (args + 5, "vi") == 0)
- mode = vi_mode;
- else
- mode = no_mode;
-
- _rl_parsing_conditionalized_out = mode != rl_editing_mode;
- }
-#endif /* VI_MODE */
- /* Check to see if the first word in ARGS is the same as the
- value stored in rl_readline_name. */
- else if (_rl_stricmp (args, rl_readline_name) == 0)
- _rl_parsing_conditionalized_out = 0;
- else
- _rl_parsing_conditionalized_out = 1;
- return 0;
-}
-
-/* Invert the current parser state if there is anything on the stack. */
-static int
-parser_else (args)
- char *args;
-{
- register int i;
-
- if (if_stack_depth == 0)
- {
- _rl_init_file_error ("$else found without matching $if");
- return 0;
- }
-
- /* Check the previous (n - 1) levels of the stack to make sure that
- we haven't previously turned off parsing. */
- for (i = 0; i < if_stack_depth - 1; i++)
- if (if_stack[i] == 1)
- return 0;
-
- /* Invert the state of parsing if at top level. */
- _rl_parsing_conditionalized_out = !_rl_parsing_conditionalized_out;
- return 0;
-}
-
-/* Terminate a conditional, popping the value of
- _rl_parsing_conditionalized_out from the stack. */
-static int
-parser_endif (args)
- char *args;
-{
- if (if_stack_depth)
- _rl_parsing_conditionalized_out = if_stack[--if_stack_depth];
- else
- _rl_init_file_error ("$endif without matching $if");
- return 0;
-}
-
-static int
-parser_include (args)
- char *args;
-{
- const char *old_init_file;
- char *e;
- int old_line_number, old_include_level, r;
-
- if (_rl_parsing_conditionalized_out)
- return (0);
-
- old_init_file = current_readline_init_file;
- old_line_number = current_readline_init_lineno;
- old_include_level = current_readline_init_include_level;
-
- e = strchr (args, '\n');
- if (e)
- *e = '\0';
- r = _rl_read_init_file ((const char *)args, old_include_level + 1);
-
- current_readline_init_file = old_init_file;
- current_readline_init_lineno = old_line_number;
- current_readline_init_include_level = old_include_level;
-
- return r;
-}
-
-/* Associate textual names with actual functions. */
-static struct {
- const char *name;
- _rl_parser_func_t *function;
-} parser_directives [] = {
- { "if", parser_if },
- { "endif", parser_endif },
- { "else", parser_else },
- { "include", parser_include },
- { (char *)0x0, (_rl_parser_func_t *)0x0 }
-};
-
-/* Handle a parser directive. STATEMENT is the line of the directive
- without any leading `$'. */
-static int
-handle_parser_directive (statement)
- char *statement;
-{
- register int i;
- char *directive, *args;
-
- /* Isolate the actual directive. */
-
- /* Skip whitespace. */
- for (i = 0; whitespace (statement[i]); i++);
-
- directive = &statement[i];
-
- for (; statement[i] && !whitespace (statement[i]); i++);
-
- if (statement[i])
- statement[i++] = '\0';
-
- for (; statement[i] && whitespace (statement[i]); i++);
-
- args = &statement[i];
-
- /* Lookup the command, and act on it. */
- for (i = 0; parser_directives[i].name; i++)
- if (_rl_stricmp (directive, parser_directives[i].name) == 0)
- {
- (*parser_directives[i].function) (args);
- return (0);
- }
-
- /* display an error message about the unknown parser directive */
- _rl_init_file_error ("unknown parser directive");
- return (1);
-}
-
-/* Read the binding command from STRING and perform it.
- A key binding command looks like: Keyname: function-name\0,
- a variable binding command looks like: set variable value.
- A new-style keybinding looks like "\C-x\C-x": exchange-point-and-mark. */
-int
-rl_parse_and_bind (string)
- char *string;
-{
- char *funname, *kname;
- register int c, i;
- int key, equivalency;
-
- while (string && whitespace (*string))
- string++;
-
- if (!string || !*string || *string == '#')
- return 0;
-
- /* If this is a parser directive, act on it. */
- if (*string == '$')
- {
- handle_parser_directive (&string[1]);
- return 0;
- }
-
- /* If we aren't supposed to be parsing right now, then we're done. */
- if (_rl_parsing_conditionalized_out)
- return 0;
-
- i = 0;
- /* If this keyname is a complex key expression surrounded by quotes,
- advance to after the matching close quote. This code allows the
- backslash to quote characters in the key expression. */
- if (*string == '"')
- {
- int passc = 0;
-
- for (i = 1; c = string[i]; i++)
- {
- if (passc)
- {
- passc = 0;
- continue;
- }
-
- if (c == '\\')
- {
- passc++;
- continue;
- }
-
- if (c == '"')
- break;
- }
- /* If we didn't find a closing quote, abort the line. */
- if (string[i] == '\0')
- {
- _rl_init_file_error ("no closing `\"' in key binding");
- return 1;
- }
- }
-
- /* Advance to the colon (:) or whitespace which separates the two objects. */
- for (; (c = string[i]) && c != ':' && c != ' ' && c != '\t'; i++ );
-
- equivalency = (c == ':' && string[i + 1] == '=');
-
- /* Mark the end of the command (or keyname). */
- if (string[i])
- string[i++] = '\0';
-
- /* If doing assignment, skip the '=' sign as well. */
- if (equivalency)
- string[i++] = '\0';
-
- /* If this is a command to set a variable, then do that. */
- if (_rl_stricmp (string, "set") == 0)
- {
- char *var = string + i;
- char *value;
-
- /* Make VAR point to start of variable name. */
- while (*var && whitespace (*var)) var++;
-
- /* Make VALUE point to start of value string. */
- value = var;
- while (*value && !whitespace (*value)) value++;
- if (*value)
- *value++ = '\0';
- while (*value && whitespace (*value)) value++;
-
- rl_variable_bind (var, value);
- return 0;
- }
-
- /* Skip any whitespace between keyname and funname. */
- for (; string[i] && whitespace (string[i]); i++);
- funname = &string[i];
-
- /* Now isolate funname.
- For straight function names just look for whitespace, since
- that will signify the end of the string. But this could be a
- macro definition. In that case, the string is quoted, so skip
- to the matching delimiter. We allow the backslash to quote the
- delimiter characters in the macro body. */
- /* This code exists to allow whitespace in macro expansions, which
- would otherwise be gobbled up by the next `for' loop.*/
- /* XXX - it may be desirable to allow backslash quoting only if " is
- the quoted string delimiter, like the shell. */
- if (*funname == '\'' || *funname == '"')
- {
- int delimiter = string[i++], passc;
-
- for (passc = 0; c = string[i]; i++)
- {
- if (passc)
- {
- passc = 0;
- continue;
- }
-
- if (c == '\\')
- {
- passc = 1;
- continue;
- }
-
- if (c == delimiter)
- break;
- }
- if (c)
- i++;
- }
-
- /* Advance to the end of the string. */
- for (; string[i] && !whitespace (string[i]); i++);
-
- /* No extra whitespace at the end of the string. */
- string[i] = '\0';
-
- /* Handle equivalency bindings here. Make the left-hand side be exactly
- whatever the right-hand evaluates to, including keymaps. */
- if (equivalency)
- {
- return 0;
- }
-
- /* If this is a new-style key-binding, then do the binding with
- rl_set_key (). Otherwise, let the older code deal with it. */
- if (*string == '"')
- {
- char *seq;
- register int j, k, passc;
-
- seq = (char *)xmalloc (1 + strlen (string));
- for (j = 1, k = passc = 0; string[j]; j++)
- {
- /* Allow backslash to quote characters, but leave them in place.
- This allows a string to end with a backslash quoting another
- backslash, or with a backslash quoting a double quote. The
- backslashes are left in place for rl_translate_keyseq (). */
- if (passc || (string[j] == '\\'))
- {
- seq[k++] = string[j];
- passc = !passc;
- continue;
- }
-
- if (string[j] == '"')
- break;
-
- seq[k++] = string[j];
- }
- seq[k] = '\0';
-
- /* Binding macro? */
- if (*funname == '\'' || *funname == '"')
- {
- j = strlen (funname);
-
- /* Remove the delimiting quotes from each end of FUNNAME. */
- if (j && funname[j - 1] == *funname)
- funname[j - 1] = '\0';
-
- rl_macro_bind (seq, &funname[1], _rl_keymap);
- }
- else
- rl_set_key (seq, rl_named_function (funname), _rl_keymap);
-
- free (seq);
- return 0;
- }
-
- /* Get the actual character we want to deal with. */
- kname = strrchr (string, '-');
- if (!kname)
- kname = string;
- else
- kname++;
-
- key = glean_key_from_name (kname);
-
- /* Add in control and meta bits. */
- if (substring_member_of_array (string, _rl_possible_control_prefixes))
- key = CTRL (_rl_to_upper (key));
-
- if (substring_member_of_array (string, _rl_possible_meta_prefixes))
- key = META (key);
-
- /* Temporary. Handle old-style keyname with macro-binding. */
- if (*funname == '\'' || *funname == '"')
- {
- char useq[2];
- int fl = strlen (funname);
-
- useq[0] = key; useq[1] = '\0';
- if (fl && funname[fl - 1] == *funname)
- funname[fl - 1] = '\0';
-
- rl_macro_bind (useq, &funname[1], _rl_keymap);
- }
-#if defined (PREFIX_META_HACK)
- /* Ugly, but working hack to keep prefix-meta around. */
- else if (_rl_stricmp (funname, "prefix-meta") == 0)
- {
- char seq[2];
-
- seq[0] = key;
- seq[1] = '\0';
- rl_generic_bind (ISKMAP, seq, (char *)emacs_meta_keymap, _rl_keymap);
- }
-#endif /* PREFIX_META_HACK */
- else
- rl_bind_key (key, rl_named_function (funname));
- return 0;
-}
-
-/* Simple structure for boolean readline variables (i.e., those that can
- have one of two values; either "On" or 1 for truth, or "Off" or 0 for
- false. */
-
-#define V_SPECIAL 0x1
-
-static struct {
- const char *name;
- int *value;
- int flags;
-} boolean_varlist [] = {
- { "blink-matching-paren", &rl_blink_matching_paren, V_SPECIAL },
- { "byte-oriented", &rl_byte_oriented, 0 },
- { "completion-ignore-case", &_rl_completion_case_fold, 0 },
- { "convert-meta", &_rl_convert_meta_chars_to_ascii, 0 },
- { "disable-completion", &rl_inhibit_completion, 0 },
- { "enable-keypad", &_rl_enable_keypad, 0 },
- { "expand-tilde", &rl_complete_with_tilde_expansion, 0 },
- { "history-preserve-point", &_rl_history_preserve_point, 0 },
- { "horizontal-scroll-mode", &_rl_horizontal_scroll_mode, 0 },
- { "input-meta", &_rl_meta_flag, 0 },
- { "mark-directories", &_rl_complete_mark_directories, 0 },
- { "mark-modified-lines", &_rl_mark_modified_lines, 0 },
- { "mark-symlinked-directories", &_rl_complete_mark_symlink_dirs, 0 },
- { "match-hidden-files", &_rl_match_hidden_files, 0 },
- { "meta-flag", &_rl_meta_flag, 0 },
- { "output-meta", &_rl_output_meta_chars, 0 },
- { "page-completions", &_rl_page_completions, 0 },
- { "prefer-visible-bell", &_rl_prefer_visible_bell, V_SPECIAL },
- { "print-completions-horizontally", &_rl_print_completions_horizontally, 0 },
- { "show-all-if-ambiguous", &_rl_complete_show_all, 0 },
-#if defined (VISIBLE_STATS)
- { "visible-stats", &rl_visible_stats, 0 },
-#endif /* VISIBLE_STATS */
- { (char *)NULL, (int *)NULL }
-};
-
-static int
-find_boolean_var (name)
- const char *name;
-{
- register int i;
-
- for (i = 0; boolean_varlist[i].name; i++)
- if (_rl_stricmp (name, boolean_varlist[i].name) == 0)
- return i;
- return -1;
-}
-
-/* Hooks for handling special boolean variables, where a
- function needs to be called or another variable needs
- to be changed when they're changed. */
-static void
-hack_special_boolean_var (i)
- int i;
-{
- const char *name;
-
- name = boolean_varlist[i].name;
-
- if (_rl_stricmp (name, "blink-matching-paren") == 0)
- _rl_enable_paren_matching (rl_blink_matching_paren);
- else if (_rl_stricmp (name, "prefer-visible-bell") == 0)
- {
- if (_rl_prefer_visible_bell)
- _rl_bell_preference = VISIBLE_BELL;
- else
- _rl_bell_preference = AUDIBLE_BELL;
- }
-}
-
-typedef int _rl_sv_func_t PARAMS((const char *));
-
-/* These *must* correspond to the array indices for the appropriate
- string variable. (Though they're not used right now.) */
-#define V_BELLSTYLE 0
-#define V_COMBEGIN 1
-#define V_EDITMODE 2
-#define V_ISRCHTERM 3
-#define V_KEYMAP 4
-
-#define V_STRING 1
-#define V_INT 2
-
-/* Forward declarations */
-static int sv_bell_style PARAMS((const char *));
-static int sv_combegin PARAMS((const char *));
-static int sv_compquery PARAMS((const char *));
-static int sv_editmode PARAMS((const char *));
-static int sv_isrchterm PARAMS((const char *));
-static int sv_keymap PARAMS((const char *));
-
-static struct {
- const char *name;
- int flags;
- _rl_sv_func_t *set_func;
-} string_varlist[] = {
- { "bell-style", V_STRING, sv_bell_style },
- { "comment-begin", V_STRING, sv_combegin },
- { "completion-query-items", V_INT, sv_compquery },
- { "editing-mode", V_STRING, sv_editmode },
- { "isearch-terminators", V_STRING, sv_isrchterm },
- { "keymap", V_STRING, sv_keymap },
- { (char *)NULL, 0 }
-};
-
-static int
-find_string_var (name)
- const char *name;
-{
- register int i;
-
- for (i = 0; string_varlist[i].name; i++)
- if (_rl_stricmp (name, string_varlist[i].name) == 0)
- return i;
- return -1;
-}
-
-/* A boolean value that can appear in a `set variable' command is true if
- the value is null or empty, `on' (case-insenstive), or "1". Any other
- values result in 0 (false). */
-static int
-bool_to_int (value)
- char *value;
-{
- return (value == 0 || *value == '\0' ||
- (_rl_stricmp (value, "on") == 0) ||
- (value[0] == '1' && value[1] == '\0'));
-}
-
-int
-rl_variable_bind (name, value)
- const char *name, *value;
-{
- register int i;
- int v;
-
- /* Check for simple variables first. */
- i = find_boolean_var (name);
- if (i >= 0)
- {
- *boolean_varlist[i].value = bool_to_int (value);
- if (boolean_varlist[i].flags & V_SPECIAL)
- hack_special_boolean_var (i);
- return 0;
- }
-
- i = find_string_var (name);
-
- /* For the time being, unknown variable names or string names without a
- handler function are simply ignored. */
- if (i < 0 || string_varlist[i].set_func == 0)
- return 0;
-
- v = (*string_varlist[i].set_func) (value);
- return v;
-}
-
-static int
-sv_editmode (value)
- const char *value;
-{
- if (_rl_strnicmp (value, "vi", 2) == 0)
- {
-#if defined (VI_MODE)
- _rl_keymap = vi_insertion_keymap;
- rl_editing_mode = vi_mode;
-#endif /* VI_MODE */
- return 0;
- }
- else if (_rl_strnicmp (value, "emacs", 5) == 0)
- {
- _rl_keymap = emacs_standard_keymap;
- rl_editing_mode = emacs_mode;
- return 0;
- }
- return 1;
-}
-
-static int
-sv_combegin (value)
- const char *value;
-{
- if (value && *value)
- {
- FREE (_rl_comment_begin);
- _rl_comment_begin = savestring (value);
- return 0;
- }
- return 1;
-}
-
-static int
-sv_compquery (value)
- const char *value;
-{
- int nval = 100;
-
- if (value && *value)
- {
- nval = atoi (value);
- if (nval < 0)
- nval = 0;
- }
- rl_completion_query_items = nval;
- return 0;
-}
-
-static int
-sv_keymap (value)
- const char *value;
-{
- Keymap kmap;
-
- kmap = rl_get_keymap_by_name (value);
- if (kmap)
- {
- rl_set_keymap (kmap);
- return 0;
- }
- return 1;
-}
-
-static int
-sv_bell_style (value)
- const char *value;
-{
- if (value == 0 || *value == '\0')
- _rl_bell_preference = AUDIBLE_BELL;
- else if (_rl_stricmp (value, "none") == 0 || _rl_stricmp (value, "off") == 0)
- _rl_bell_preference = NO_BELL;
- else if (_rl_stricmp (value, "audible") == 0 || _rl_stricmp (value, "on") == 0)
- _rl_bell_preference = AUDIBLE_BELL;
- else if (_rl_stricmp (value, "visible") == 0)
- _rl_bell_preference = VISIBLE_BELL;
- else
- return 1;
- return 0;
-}
-
-static int
-sv_isrchterm (value)
- const char *value;
-{
- int beg, end, delim;
- char *v;
-
- if (value == 0)
- return 1;
-
- /* Isolate the value and translate it into a character string. */
- v = savestring (value);
- FREE (_rl_isearch_terminators);
- if (v[0] == '"' || v[0] == '\'')
- {
- delim = v[0];
- for (beg = end = 1; v[end] && v[end] != delim; end++)
- ;
- }
- else
- {
- for (beg = end = 0; whitespace (v[end]) == 0; end++)
- ;
- }
-
- v[end] = '\0';
-
- /* The value starts at v + beg. Translate it into a character string. */
- _rl_isearch_terminators = (char *)xmalloc (2 * strlen (v) + 1);
- rl_translate_keyseq (v + beg, _rl_isearch_terminators, &end);
- _rl_isearch_terminators[end] = '\0';
-
- free (v);
- return 0;
-}
-
-/* Return the character which matches NAME.
- For example, `Space' returns ' '. */
-
-typedef struct {
- const char *name;
- int value;
-} assoc_list;
-
-static assoc_list name_key_alist[] = {
- { "DEL", 0x7f },
- { "ESC", '\033' },
- { "Escape", '\033' },
- { "LFD", '\n' },
- { "Newline", '\n' },
- { "RET", '\r' },
- { "Return", '\r' },
- { "Rubout", 0x7f },
- { "SPC", ' ' },
- { "Space", ' ' },
- { "Tab", 0x09 },
- { (char *)0x0, 0 }
-};
-
-static int
-glean_key_from_name (name)
- char *name;
-{
- register int i;
-
- for (i = 0; name_key_alist[i].name; i++)
- if (_rl_stricmp (name, name_key_alist[i].name) == 0)
- return (name_key_alist[i].value);
-
- return (*(unsigned char *)name); /* XXX was return (*name) */
-}
-
-/* Auxiliary functions to manage keymaps. */
-static struct {
- const char *name;
- Keymap map;
-} keymap_names[] = {
- { "emacs", emacs_standard_keymap },
- { "emacs-standard", emacs_standard_keymap },
- { "emacs-meta", emacs_meta_keymap },
- { "emacs-ctlx", emacs_ctlx_keymap },
-#if defined (VI_MODE)
- { "vi", vi_movement_keymap },
- { "vi-move", vi_movement_keymap },
- { "vi-command", vi_movement_keymap },
- { "vi-insert", vi_insertion_keymap },
-#endif /* VI_MODE */
- { (char *)0x0, (Keymap)0x0 }
-};
-
-Keymap
-rl_get_keymap_by_name (name)
- const char *name;
-{
- register int i;
-
- for (i = 0; keymap_names[i].name; i++)
- if (_rl_stricmp (name, keymap_names[i].name) == 0)
- return (keymap_names[i].map);
- return ((Keymap) NULL);
-}
-
-char *
-rl_get_keymap_name (map)
- Keymap map;
-{
- register int i;
- for (i = 0; keymap_names[i].name; i++)
- if (map == keymap_names[i].map)
- return ((char *)keymap_names[i].name);
- return ((char *)NULL);
-}
-
-void
-rl_set_keymap (map)
- Keymap map;
-{
- if (map)
- _rl_keymap = map;
-}
-
-Keymap
-rl_get_keymap ()
-{
- return (_rl_keymap);
-}
-
-void
-rl_set_keymap_from_edit_mode ()
-{
- if (rl_editing_mode == emacs_mode)
- _rl_keymap = emacs_standard_keymap;
-#if defined (VI_MODE)
- else if (rl_editing_mode == vi_mode)
- _rl_keymap = vi_insertion_keymap;
-#endif /* VI_MODE */
-}
-
-char *
-rl_get_keymap_name_from_edit_mode ()
-{
- if (rl_editing_mode == emacs_mode)
- return "emacs";
-#if defined (VI_MODE)
- else if (rl_editing_mode == vi_mode)
- return "vi";
-#endif /* VI_MODE */
- else
- return "none";
-}
-
-/* **************************************************************** */
-/* */
-/* Key Binding and Function Information */
-/* */
-/* **************************************************************** */
-
-/* Each of the following functions produces information about the
- state of keybindings and functions known to Readline. The info
- is always printed to rl_outstream, and in such a way that it can
- be read back in (i.e., passed to rl_parse_and_bind (). */
-
-/* Print the names of functions known to Readline. */
-void
-rl_list_funmap_names ()
-{
- register int i;
- const char **funmap_names;
-
- funmap_names = rl_funmap_names ();
-
- if (!funmap_names)
- return;
-
- for (i = 0; funmap_names[i]; i++)
- fprintf (rl_outstream, "%s\n", funmap_names[i]);
-
- free (funmap_names);
-}
-
-static char *
-_rl_get_keyname (key)
- int key;
-{
- char *keyname;
- int i, c;
-
- keyname = (char *)xmalloc (8);
-
- c = key;
- /* Since this is going to be used to write out keysequence-function
- pairs for possible inclusion in an inputrc file, we don't want to
- do any special meta processing on KEY. */
-
-#if 1
- /* XXX - Experimental */
- /* We might want to do this, but the old version of the code did not. */
-
- /* If this is an escape character, we don't want to do any more processing.
- Just add the special ESC key sequence and return. */
- if (c == ESC)
- {
- keyname[0] = '\\';
- keyname[1] = 'e';
- keyname[2] = '\0';
- return keyname;
- }
-#endif
-
- /* RUBOUT is translated directly into \C-? */
- if (key == RUBOUT)
- {
- keyname[0] = '\\';
- keyname[1] = 'C';
- keyname[2] = '-';
- keyname[3] = '?';
- keyname[4] = '\0';
- return keyname;
- }
-
- i = 0;
- /* Now add special prefixes needed for control characters. This can
- potentially change C. */
- if (CTRL_CHAR (c))
- {
- keyname[i++] = '\\';
- keyname[i++] = 'C';
- keyname[i++] = '-';
- c = _rl_to_lower (UNCTRL (c));
- }
-
- /* XXX experimental code. Turn the characters that are not ASCII or
- ISO Latin 1 (128 - 159) into octal escape sequences (\200 - \237).
- This changes C. */
- if (c >= 128 && c <= 159)
- {
- keyname[i++] = '\\';
- keyname[i++] = '2';
- c -= 128;
- keyname[i++] = (c / 8) + '0';
- c = (c % 8) + '0';
- }
-
- /* Now, if the character needs to be quoted with a backslash, do that. */
- if (c == '\\' || c == '"')
- keyname[i++] = '\\';
-
- /* Now add the key, terminate the string, and return it. */
- keyname[i++] = (char) c;
- keyname[i] = '\0';
-
- return keyname;
-}
-
-/* Return a NULL terminated array of strings which represent the key
- sequences that are used to invoke FUNCTION in MAP. */
-char **
-rl_invoking_keyseqs_in_map (function, map)
- rl_command_func_t *function;
- Keymap map;
-{
- register int key;
- char **result;
- int result_index, result_size;
-
- result = (char **)NULL;
- result_index = result_size = 0;
-
- for (key = 0; key < KEYMAP_SIZE; key++)
- {
- switch (map[key].type)
- {
- case ISMACR:
- /* Macros match, if, and only if, the pointers are identical.
- Thus, they are treated exactly like functions in here. */
- case ISFUNC:
- /* If the function in the keymap is the one we are looking for,
- then add the current KEY to the list of invoking keys. */
- if (map[key].function == function)
- {
- char *keyname;
-
- keyname = _rl_get_keyname (key);
-
- if (result_index + 2 > result_size)
- {
- result_size += 10;
- result = (char **)xrealloc (result, result_size * sizeof (char *));
- }
-
- result[result_index++] = keyname;
- result[result_index] = (char *)NULL;
- }
- break;
-
- case ISKMAP:
- {
- char **seqs;
- register int i;
-
- /* Find the list of keyseqs in this map which have FUNCTION as
- their target. Add the key sequences found to RESULT. */
- if (map[key].function)
- seqs =
- rl_invoking_keyseqs_in_map (function, FUNCTION_TO_KEYMAP (map, key));
- else
- break;
-
- if (seqs == 0)
- break;
-
- for (i = 0; seqs[i]; i++)
- {
- char *keyname = (char *)xmalloc (6 + strlen (seqs[i]));
-
- if (key == ESC)
-#if 0
- sprintf (keyname, "\\e");
-#else
- /* XXX - experimental */
- sprintf (keyname, "\\M-");
-#endif
- else if (CTRL_CHAR (key))
- sprintf (keyname, "\\C-%c", _rl_to_lower (UNCTRL (key)));
- else if (key == RUBOUT)
- sprintf (keyname, "\\C-?");
- else if (key == '\\' || key == '"')
- {
- keyname[0] = '\\';
- keyname[1] = (char) key;
- keyname[2] = '\0';
- }
- else
- {
- keyname[0] = (char) key;
- keyname[1] = '\0';
- }
-
- strcat (keyname, seqs[i]);
- free (seqs[i]);
-
- if (result_index + 2 > result_size)
- {
- result_size += 10;
- result = (char **)xrealloc (result, result_size * sizeof (char *));
- }
-
- result[result_index++] = keyname;
- result[result_index] = (char *)NULL;
- }
-
- free (seqs);
- }
- break;
- }
- }
- return (result);
-}
-
-/* Return a NULL terminated array of strings which represent the key
- sequences that can be used to invoke FUNCTION using the current keymap. */
-char **
-rl_invoking_keyseqs (function)
- rl_command_func_t *function;
-{
- return (rl_invoking_keyseqs_in_map (function, _rl_keymap));
-}
-
-/* Print all of the functions and their bindings to rl_outstream. If
- PRINT_READABLY is non-zero, then print the output in such a way
- that it can be read back in. */
-void
-rl_function_dumper (print_readably)
- int print_readably;
-{
- register int i;
- const char **names;
- const char *name;
-
- names = rl_funmap_names ();
-
- fprintf (rl_outstream, "\n");
-
- for (i = 0; name = names[i]; i++)
- {
- rl_command_func_t *function;
- char **invokers;
-
- function = rl_named_function (name);
- invokers = rl_invoking_keyseqs_in_map (function, _rl_keymap);
-
- if (print_readably)
- {
- if (!invokers)
- fprintf (rl_outstream, "# %s (not bound)\n", name);
- else
- {
- register int j;
-
- for (j = 0; invokers[j]; j++)
- {
- fprintf (rl_outstream, "\"%s\": %s\n",
- invokers[j], name);
- free (invokers[j]);
- }
-
- free (invokers);
- }
- }
- else
- {
- if (!invokers)
- fprintf (rl_outstream, "%s is not bound to any keys\n",
- name);
- else
- {
- register int j;
-
- fprintf (rl_outstream, "%s can be found on ", name);
-
- for (j = 0; invokers[j] && j < 5; j++)
- {
- fprintf (rl_outstream, "\"%s\"%s", invokers[j],
- invokers[j + 1] ? ", " : ".\n");
- }
-
- if (j == 5 && invokers[j])
- fprintf (rl_outstream, "...\n");
-
- for (j = 0; invokers[j]; j++)
- free (invokers[j]);
-
- free (invokers);
- }
- }
- }
-}
-
-/* Print all of the current functions and their bindings to
- rl_outstream. If an explicit argument is given, then print
- the output in such a way that it can be read back in. */
-int
-rl_dump_functions (count, key)
- int count, key;
-{
- if (rl_dispatching)
- fprintf (rl_outstream, "\r\n");
- rl_function_dumper (rl_explicit_arg);
- rl_on_new_line ();
- return (0);
-}
-
-static void
-_rl_macro_dumper_internal (print_readably, map, prefix)
- int print_readably;
- Keymap map;
- char *prefix;
-{
- register int key;
- char *keyname, *out;
- int prefix_len;
-
- for (key = 0; key < KEYMAP_SIZE; key++)
- {
- switch (map[key].type)
- {
- case ISMACR:
- keyname = _rl_get_keyname (key);
- out = _rl_untranslate_macro_value ((char *)map[key].function);
-
- if (print_readably)
- fprintf (rl_outstream, "\"%s%s\": \"%s\"\n", prefix ? prefix : "",
- keyname,
- out ? out : "");
- else
- fprintf (rl_outstream, "%s%s outputs %s\n", prefix ? prefix : "",
- keyname,
- out ? out : "");
- free (keyname);
- free (out);
- break;
- case ISFUNC:
- break;
- case ISKMAP:
- prefix_len = prefix ? strlen (prefix) : 0;
- if (key == ESC)
- {
- keyname = (char *)xmalloc (3 + prefix_len);
- if (prefix)
- strcpy (keyname, prefix);
- keyname[prefix_len] = '\\';
- keyname[prefix_len + 1] = 'e';
- keyname[prefix_len + 2] = '\0';
- }
- else
- {
- keyname = _rl_get_keyname (key);
- if (prefix)
- {
- out = (char *)xmalloc (strlen (keyname) + prefix_len + 1);
- strcpy (out, prefix);
- strcpy (out + prefix_len, keyname);
- free (keyname);
- keyname = out;
- }
- }
-
- _rl_macro_dumper_internal (print_readably, FUNCTION_TO_KEYMAP (map, key), keyname);
- free (keyname);
- break;
- }
- }
-}
-
-void
-rl_macro_dumper (print_readably)
- int print_readably;
-{
- _rl_macro_dumper_internal (print_readably, _rl_keymap, (char *)NULL);
-}
-
-int
-rl_dump_macros (count, key)
- int count, key;
-{
- if (rl_dispatching)
- fprintf (rl_outstream, "\r\n");
- rl_macro_dumper (rl_explicit_arg);
- rl_on_new_line ();
- return (0);
-}
-
-void
-rl_variable_dumper (print_readably)
- int print_readably;
-{
- int i;
- const char *kname;
-
- for (i = 0; boolean_varlist[i].name; i++)
- {
- if (print_readably)
- fprintf (rl_outstream, "set %s %s\n", boolean_varlist[i].name,
- *boolean_varlist[i].value ? "on" : "off");
- else
- fprintf (rl_outstream, "%s is set to `%s'\n", boolean_varlist[i].name,
- *boolean_varlist[i].value ? "on" : "off");
- }
-
- /* bell-style */
- switch (_rl_bell_preference)
- {
- case NO_BELL:
- kname = "none"; break;
- case VISIBLE_BELL:
- kname = "visible"; break;
- case AUDIBLE_BELL:
- default:
- kname = "audible"; break;
- }
- if (print_readably)
- fprintf (rl_outstream, "set bell-style %s\n", kname);
- else
- fprintf (rl_outstream, "bell-style is set to `%s'\n", kname);
-
- /* comment-begin */
- if (print_readably)
- fprintf (rl_outstream, "set comment-begin %s\n", _rl_comment_begin ? _rl_comment_begin : RL_COMMENT_BEGIN_DEFAULT);
- else
- fprintf (rl_outstream, "comment-begin is set to `%s'\n", _rl_comment_begin ? _rl_comment_begin : RL_COMMENT_BEGIN_DEFAULT);
-
- /* completion-query-items */
- if (print_readably)
- fprintf (rl_outstream, "set completion-query-items %d\n", rl_completion_query_items);
- else
- fprintf (rl_outstream, "completion-query-items is set to `%d'\n", rl_completion_query_items);
-
- /* editing-mode */
- if (print_readably)
- fprintf (rl_outstream, "set editing-mode %s\n", (rl_editing_mode == emacs_mode) ? "emacs" : "vi");
- else
- fprintf (rl_outstream, "editing-mode is set to `%s'\n", (rl_editing_mode == emacs_mode) ? "emacs" : "vi");
-
- /* isearch-terminators */
- if (_rl_isearch_terminators)
- {
- char *disp;
-
- disp = _rl_untranslate_macro_value (_rl_isearch_terminators);
-
- if (print_readably)
- fprintf (rl_outstream, "set isearch-terminators \"%s\"\n", disp);
- else
- fprintf (rl_outstream, "isearch-terminators is set to \"%s\"\n", disp);
-
- free (disp);
- }
-
- /* keymap */
- kname = rl_get_keymap_name (_rl_keymap);
- if (kname == 0)
- kname = rl_get_keymap_name_from_edit_mode ();
- if (print_readably)
- fprintf (rl_outstream, "set keymap %s\n", kname ? kname : "none");
- else
- fprintf (rl_outstream, "keymap is set to `%s'\n", kname ? kname : "none");
-}
-
-/* Print all of the current variables and their values to
- rl_outstream. If an explicit argument is given, then print
- the output in such a way that it can be read back in. */
-int
-rl_dump_variables (count, key)
- int count, key;
-{
- if (rl_dispatching)
- fprintf (rl_outstream, "\r\n");
- rl_variable_dumper (rl_explicit_arg);
- rl_on_new_line ();
- return (0);
-}
-
-/* Bind key sequence KEYSEQ to DEFAULT_FUNC if KEYSEQ is unbound. Right
- now, this is always used to attempt to bind the arrow keys, hence the
- check for rl_vi_movement_mode. */
-void
-_rl_bind_if_unbound (keyseq, default_func)
- const char *keyseq;
- rl_command_func_t *default_func;
-{
- rl_command_func_t *func;
-
- if (keyseq)
- {
- func = rl_function_of_keyseq (keyseq, _rl_keymap, (int *)NULL);
-#if defined (VI_MODE)
- if (!func || func == rl_do_lowercase_version || func == rl_vi_movement_mode)
-#else
- if (!func || func == rl_do_lowercase_version)
-#endif
- rl_set_key (keyseq, default_func, _rl_keymap);
- }
-}
-
-/* Return non-zero if any members of ARRAY are a substring in STRING. */
-static int
-substring_member_of_array (string, array)
- char *string;
- const char **array;
-{
- while (*array)
- {
- if (_rl_strindex (string, *array))
- return (1);
- array++;
- }
- return (0);
-}
diff --git a/readline-4.3/callback.c b/readline-4.3/callback.c
deleted file mode 100644
index a8f4323..0000000
--- a/readline-4.3/callback.c
+++ /dev/null
@@ -1,156 +0,0 @@
-/* callback.c -- functions to use readline as an X `callback' mechanism. */
-
-/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include "rlconf.h"
-
-#if defined (READLINE_CALLBACKS)
-
-#include <sys/types.h>
-
-#ifdef HAVE_STDLIB_H
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif
-
-#include <stdio.h>
-
-/* System-specific feature definitions and include files. */
-#include "rldefs.h"
-#include "readline.h"
-#include "rlprivate.h"
-
-/* **************************************************************** */
-/* */
-/* Callback Readline Functions */
-/* */
-/* **************************************************************** */
-
-/* Allow using readline in situations where a program may have multiple
- things to handle at once, and dispatches them via select(). Call
- rl_callback_handler_install() with the prompt and a function to call
- whenever a complete line of input is ready. The user must then
- call rl_callback_read_char() every time some input is available, and
- rl_callback_read_char() will call the user's function with the complete
- text read in at each end of line. The terminal is kept prepped and
- signals handled all the time, except during calls to the user's function. */
-
-rl_vcpfunc_t *rl_linefunc; /* user callback function */
-static int in_handler; /* terminal_prepped and signals set? */
-
-/* Make sure the terminal is set up, initialize readline, and prompt. */
-static void
-_rl_callback_newline ()
-{
- rl_initialize ();
-
- if (in_handler == 0)
- {
- in_handler = 1;
-
- (*rl_prep_term_function) (_rl_meta_flag);
-
-#if defined (HANDLE_SIGNALS)
- rl_set_signals ();
-#endif
- }
-
- readline_internal_setup ();
-}
-
-/* Install a readline handler, set up the terminal, and issue the prompt. */
-void
-rl_callback_handler_install (prompt, linefunc)
- const char *prompt;
- rl_vcpfunc_t *linefunc;
-{
- rl_set_prompt (prompt);
- rl_linefunc = linefunc;
- _rl_callback_newline ();
-}
-
-/* Read one character, and dispatch to the handler if it ends the line. */
-void
-rl_callback_read_char ()
-{
- char *line;
- int eof;
-
- if (rl_linefunc == NULL)
- {
- fprintf (stderr, "readline: readline_callback_read_char() called with no handler!\r\n");
- abort ();
- }
-
- eof = readline_internal_char ();
-
- /* We loop in case some function has pushed input back with rl_execute_next. */
- for (;;)
- {
- if (rl_done)
- {
- line = readline_internal_teardown (eof);
-
- (*rl_deprep_term_function) ();
-#if defined (HANDLE_SIGNALS)
- rl_clear_signals ();
-#endif
- in_handler = 0;
- (*rl_linefunc) (line);
-
- /* If the user did not clear out the line, do it for him. */
- if (rl_line_buffer[0])
- _rl_init_line_state ();
-
- /* Redisplay the prompt if readline_handler_{install,remove}
- not called. */
- if (in_handler == 0 && rl_linefunc)
- _rl_callback_newline ();
- }
- if (rl_pending_input)
- eof = readline_internal_char ();
- else
- break;
- }
-}
-
-/* Remove the handler, and make sure the terminal is in its normal state. */
-void
-rl_callback_handler_remove ()
-{
- rl_linefunc = NULL;
- if (in_handler)
- {
- in_handler = 0;
- (*rl_deprep_term_function) ();
-#if defined (HANDLE_SIGNALS)
- rl_clear_signals ();
-#endif
- }
-}
-
-#endif
diff --git a/readline-4.3/chardefs.h b/readline-4.3/chardefs.h
deleted file mode 100644
index a537be2..0000000
--- a/readline-4.3/chardefs.h
+++ /dev/null
@@ -1,159 +0,0 @@
-/* chardefs.h -- Character definitions for readline. */
-
-/* Copyright (C) 1994 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#ifndef _CHARDEFS_H_
-#define _CHARDEFS_H_
-
-#include <ctype.h>
-
-#if defined (HAVE_CONFIG_H)
-# if defined (HAVE_STRING_H)
-# if ! defined (STDC_HEADERS) && defined (HAVE_MEMORY_H)
-# include <memory.h>
-# endif
-# include <string.h>
-# endif /* HAVE_STRING_H */
-# if defined (HAVE_STRINGS_H)
-# include <strings.h>
-# endif /* HAVE_STRINGS_H */
-#else
-# include <string.h>
-#endif /* !HAVE_CONFIG_H */
-
-#ifndef whitespace
-#define whitespace(c) (((c) == ' ') || ((c) == '\t'))
-#endif
-
-#ifdef CTRL
-# undef CTRL
-#endif
-#ifdef UNCTRL
-# undef UNCTRL
-#endif
-
-/* Some character stuff. */
-#define control_character_threshold 0x020 /* Smaller than this is control. */
-#define control_character_mask 0x1f /* 0x20 - 1 */
-#define meta_character_threshold 0x07f /* Larger than this is Meta. */
-#define control_character_bit 0x40 /* 0x000000, must be off. */
-#define meta_character_bit 0x080 /* x0000000, must be on. */
-#define largest_char 255 /* Largest character value. */
-
-#define CTRL_CHAR(c) ((c) < control_character_threshold && (((c) & 0x80) == 0))
-#define META_CHAR(c) ((c) > meta_character_threshold && (c) <= largest_char)
-
-#define CTRL(c) ((c) & control_character_mask)
-#define META(c) ((c) | meta_character_bit)
-
-#define UNMETA(c) ((c) & (~meta_character_bit))
-#define UNCTRL(c) _rl_to_upper(((c)|control_character_bit))
-
-#if defined STDC_HEADERS || (!defined (isascii) && !defined (HAVE_ISASCII))
-# define IN_CTYPE_DOMAIN(c) 1
-#else
-# define IN_CTYPE_DOMAIN(c) isascii(c)
-#endif
-
-#if !defined (isxdigit) && !defined (HAVE_ISXDIGIT)
-# define isxdigit(c) (isdigit((c)) || ((c) >= 'a' && (c) <= 'f') || ((c) >= 'A' && (c) <= 'F'))
-#endif
-
-#define NON_NEGATIVE(c) ((unsigned char)(c) == (c))
-
-/* Some systems define these; we want our definitions. */
-#undef ISPRINT
-
-#define ISALNUM(c) (IN_CTYPE_DOMAIN (c) && isalnum (c))
-#define ISALPHA(c) (IN_CTYPE_DOMAIN (c) && isalpha (c))
-#define ISDIGIT(c) (IN_CTYPE_DOMAIN (c) && isdigit (c))
-#define ISLOWER(c) (IN_CTYPE_DOMAIN (c) && islower (c))
-#define ISPRINT(c) (IN_CTYPE_DOMAIN (c) && isprint (c))
-#define ISUPPER(c) (IN_CTYPE_DOMAIN (c) && isupper (c))
-#define ISXDIGIT(c) (IN_CTYPE_DOMAIN (c) && isxdigit (c))
-
-#define _rl_lowercase_p(c) (NON_NEGATIVE(c) && ISLOWER(c))
-#define _rl_uppercase_p(c) (NON_NEGATIVE(c) && ISUPPER(c))
-#define _rl_digit_p(c) ((c) >= '0' && (c) <= '9')
-
-#define _rl_pure_alphabetic(c) (NON_NEGATIVE(c) && ISALPHA(c))
-#define ALPHABETIC(c) (NON_NEGATIVE(c) && ISALNUM(c))
-
-#ifndef _rl_to_upper
-# define _rl_to_upper(c) (_rl_lowercase_p(c) ? toupper((unsigned char)c) : (c))
-# define _rl_to_lower(c) (_rl_uppercase_p(c) ? tolower((unsigned char)c) : (c))
-#endif
-
-#ifndef _rl_digit_value
-# define _rl_digit_value(x) ((x) - '0')
-#endif
-
-#ifndef _rl_isident
-# define _rl_isident(c) (ISALNUM(c) || (c) == '_')
-#endif
-
-#ifndef ISOCTAL
-# define ISOCTAL(c) ((c) >= '0' && (c) <= '7')
-#endif
-#define OCTVALUE(c) ((c) - '0')
-
-#define HEXVALUE(c) \
- (((c) >= 'a' && (c) <= 'f') \
- ? (c)-'a'+10 \
- : (c) >= 'A' && (c) <= 'F' ? (c)-'A'+10 : (c)-'0')
-
-#ifndef NEWLINE
-#define NEWLINE '\n'
-#endif
-
-#ifndef RETURN
-#define RETURN CTRL('M')
-#endif
-
-#ifndef RUBOUT
-#define RUBOUT 0x7f
-#endif
-
-#ifndef TAB
-#define TAB '\t'
-#endif
-
-#ifdef ABORT_CHAR
-#undef ABORT_CHAR
-#endif
-#define ABORT_CHAR CTRL('G')
-
-#ifdef PAGE
-#undef PAGE
-#endif
-#define PAGE CTRL('L')
-
-#ifdef SPACE
-#undef SPACE
-#endif
-#define SPACE ' ' /* XXX - was 0x20 */
-
-#ifdef ESC
-#undef ESC
-#endif
-#define ESC CTRL('[')
-
-#endif /* _CHARDEFS_H_ */
diff --git a/readline-4.3/compat.c b/readline-4.3/compat.c
deleted file mode 100644
index a66d210..0000000
--- a/readline-4.3/compat.c
+++ /dev/null
@@ -1,113 +0,0 @@
-/* compat.c -- backwards compatibility functions. */
-
-/* Copyright (C) 2000 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <stdio.h>
-
-#include "rlstdc.h"
-#include "rltypedefs.h"
-
-extern void rl_free_undo_list PARAMS((void));
-extern int rl_maybe_save_line PARAMS((void));
-extern int rl_maybe_unsave_line PARAMS((void));
-extern int rl_maybe_replace_line PARAMS((void));
-
-extern int rl_crlf PARAMS((void));
-extern int rl_ding PARAMS((void));
-extern int rl_alphabetic PARAMS((int));
-
-extern char **rl_completion_matches PARAMS((const char *, rl_compentry_func_t *));
-extern char *rl_username_completion_function PARAMS((const char *, int));
-extern char *rl_filename_completion_function PARAMS((const char *, int));
-
-/* Provide backwards-compatible entry points for old function names. */
-
-void
-free_undo_list ()
-{
- rl_free_undo_list ();
-}
-
-int
-maybe_replace_line ()
-{
- return rl_maybe_replace_line ();
-}
-
-int
-maybe_save_line ()
-{
- return rl_maybe_save_line ();
-}
-
-int
-maybe_unsave_line ()
-{
- return rl_maybe_unsave_line ();
-}
-
-int
-ding ()
-{
- return rl_ding ();
-}
-
-int
-crlf ()
-{
- return rl_crlf ();
-}
-
-int
-alphabetic (c)
- int c;
-{
- return rl_alphabetic (c);
-}
-
-char **
-completion_matches (s, f)
- const char *s;
- rl_compentry_func_t *f;
-{
- return rl_completion_matches (s, f);
-}
-
-char *
-username_completion_function (s, i)
- const char *s;
- int i;
-{
- return rl_username_completion_function (s, i);
-}
-
-char *
-filename_completion_function (s, i)
- const char *s;
- int i;
-{
- return rl_filename_completion_function (s, i);
-}
diff --git a/readline-4.3/complete.c b/readline-4.3/complete.c
deleted file mode 100644
index 21a9d70..0000000
--- a/readline-4.3/complete.c
+++ /dev/null
@@ -1,2004 +0,0 @@
-/* complete.c -- filename completion for readline. */
-
-/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <sys/types.h>
-#include <fcntl.h>
-#if defined (HAVE_SYS_FILE_H)
-#include <sys/file.h>
-#endif
-
-#if defined (HAVE_UNISTD_H)
-# include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#include <stdio.h>
-
-#include <errno.h>
-#if !defined (errno)
-extern int errno;
-#endif /* !errno */
-
-#include <pwd.h>
-
-#include "posixdir.h"
-#include "posixstat.h"
-
-/* System-specific feature definitions and include files. */
-#include "rldefs.h"
-#include "rlmbutil.h"
-
-/* Some standard library routines. */
-#include "readline.h"
-#include "xmalloc.h"
-#include "rlprivate.h"
-
-#ifdef __STDC__
-typedef int QSFUNC (const void *, const void *);
-#else
-typedef int QSFUNC ();
-#endif
-
-#ifdef HAVE_LSTAT
-# define LSTAT lstat
-#else
-# define LSTAT stat
-#endif
-
-/* Unix version of a hidden file. Could be different on other systems. */
-#define HIDDEN_FILE(fname) ((fname)[0] == '.')
-
-/* Most systems don't declare getpwent in <pwd.h> if _POSIX_SOURCE is
- defined. */
-#if !defined (HAVE_GETPW_DECLS) || defined (_POSIX_SOURCE)
-extern struct passwd *getpwent PARAMS((void));
-#endif /* !HAVE_GETPW_DECLS || _POSIX_SOURCE */
-
-/* If non-zero, then this is the address of a function to call when
- completing a word would normally display the list of possible matches.
- This function is called instead of actually doing the display.
- It takes three arguments: (char **matches, int num_matches, int max_length)
- where MATCHES is the array of strings that matched, NUM_MATCHES is the
- number of strings in that array, and MAX_LENGTH is the length of the
- longest string in that array. */
-rl_compdisp_func_t *rl_completion_display_matches_hook = (rl_compdisp_func_t *)NULL;
-
-#if defined (VISIBLE_STATS)
-# if !defined (X_OK)
-# define X_OK 1
-# endif
-static int stat_char PARAMS((char *));
-#endif
-
-static char *rl_quote_filename PARAMS((char *, int, char *));
-
-static void set_completion_defaults PARAMS((int));
-static int get_y_or_n PARAMS((int));
-static int _rl_internal_pager PARAMS((int));
-static char *printable_part PARAMS((char *));
-static int print_filename PARAMS((char *, char *));
-
-static char **gen_completion_matches PARAMS((char *, int, int, rl_compentry_func_t *, int, int));
-
-static char **remove_duplicate_matches PARAMS((char **));
-static void insert_match PARAMS((char *, int, int, char *));
-static int append_to_match PARAMS((char *, int, int, int));
-static void insert_all_matches PARAMS((char **, int, char *));
-static void display_matches PARAMS((char **));
-static int compute_lcd_of_matches PARAMS((char **, int, const char *));
-static int postprocess_matches PARAMS((char ***, int));
-
-static char *make_quoted_replacement PARAMS((char *, int, char *));
-
-/* **************************************************************** */
-/* */
-/* Completion matching, from readline's point of view. */
-/* */
-/* **************************************************************** */
-
-/* Variables known only to the readline library. */
-
-/* If non-zero, non-unique completions always show the list of matches. */
-int _rl_complete_show_all = 0;
-
-/* If non-zero, completed directory names have a slash appended. */
-int _rl_complete_mark_directories = 1;
-
-/* If non-zero, the symlinked directory completion behavior introduced in
- readline-4.2a is disabled, and symlinks that point to directories have
- a slash appended (subject to the value of _rl_complete_mark_directories).
- This is user-settable via the mark-symlinked-directories variable. */
-int _rl_complete_mark_symlink_dirs = 0;
-
-/* If non-zero, completions are printed horizontally in alphabetical order,
- like `ls -x'. */
-int _rl_print_completions_horizontally;
-
-/* Non-zero means that case is not significant in filename completion. */
-#if defined (__MSDOS__) && !defined (__DJGPP__)
-int _rl_completion_case_fold = 1;
-#else
-int _rl_completion_case_fold;
-#endif
-
-/* If non-zero, don't match hidden files (filenames beginning with a `.' on
- Unix) when doing filename completion. */
-int _rl_match_hidden_files = 1;
-
-/* Global variables available to applications using readline. */
-
-#if defined (VISIBLE_STATS)
-/* Non-zero means add an additional character to each filename displayed
- during listing completion iff rl_filename_completion_desired which helps
- to indicate the type of file being listed. */
-int rl_visible_stats = 0;
-#endif /* VISIBLE_STATS */
-
-/* If non-zero, then this is the address of a function to call when
- completing on a directory name. The function is called with
- the address of a string (the current directory name) as an arg. */
-rl_icppfunc_t *rl_directory_completion_hook = (rl_icppfunc_t *)NULL;
-
-rl_icppfunc_t *rl_directory_rewrite_hook = (rl_icppfunc_t *)NULL;
-
-/* Non-zero means readline completion functions perform tilde expansion. */
-int rl_complete_with_tilde_expansion = 0;
-
-/* Pointer to the generator function for completion_matches ().
- NULL means to use rl_filename_completion_function (), the default filename
- completer. */
-rl_compentry_func_t *rl_completion_entry_function = (rl_compentry_func_t *)NULL;
-
-/* Pointer to alternative function to create matches.
- Function is called with TEXT, START, and END.
- START and END are indices in RL_LINE_BUFFER saying what the boundaries
- of TEXT are.
- If this function exists and returns NULL then call the value of
- rl_completion_entry_function to try to match, otherwise use the
- array of strings returned. */
-rl_completion_func_t *rl_attempted_completion_function = (rl_completion_func_t *)NULL;
-
-/* Non-zero means to suppress normal filename completion after the
- user-specified completion function has been called. */
-int rl_attempted_completion_over = 0;
-
-/* Set to a character indicating the type of completion being performed
- by rl_complete_internal, available for use by application completion
- functions. */
-int rl_completion_type = 0;
-
-/* Up to this many items will be displayed in response to a
- possible-completions call. After that, we ask the user if
- she is sure she wants to see them all. */
-int rl_completion_query_items = 100;
-
-int _rl_page_completions = 1;
-
-/* The basic list of characters that signal a break between words for the
- completer routine. The contents of this variable is what breaks words
- in the shell, i.e. " \t\n\"\\'`@$><=" */
-const char *rl_basic_word_break_characters = " \t\n\"\\'`@$><=;|&{("; /* }) */
-
-/* List of basic quoting characters. */
-const char *rl_basic_quote_characters = "\"'";
-
-/* The list of characters that signal a break between words for
- rl_complete_internal. The default list is the contents of
- rl_basic_word_break_characters. */
-const char *rl_completer_word_break_characters = (const char *)NULL;
-
-/* List of characters which can be used to quote a substring of the line.
- Completion occurs on the entire substring, and within the substring
- rl_completer_word_break_characters are treated as any other character,
- unless they also appear within this list. */
-const char *rl_completer_quote_characters = (const char *)NULL;
-
-/* List of characters that should be quoted in filenames by the completer. */
-const char *rl_filename_quote_characters = (const char *)NULL;
-
-/* List of characters that are word break characters, but should be left
- in TEXT when it is passed to the completion function. The shell uses
- this to help determine what kind of completing to do. */
-const char *rl_special_prefixes = (const char *)NULL;
-
-/* If non-zero, then disallow duplicates in the matches. */
-int rl_ignore_completion_duplicates = 1;
-
-/* Non-zero means that the results of the matches are to be treated
- as filenames. This is ALWAYS zero on entry, and can only be changed
- within a completion entry finder function. */
-int rl_filename_completion_desired = 0;
-
-/* Non-zero means that the results of the matches are to be quoted using
- double quotes (or an application-specific quoting mechanism) if the
- filename contains any characters in rl_filename_quote_chars. This is
- ALWAYS non-zero on entry, and can only be changed within a completion
- entry finder function. */
-int rl_filename_quoting_desired = 1;
-
-/* This function, if defined, is called by the completer when real
- filename completion is done, after all the matching names have been
- generated. It is passed a (char**) known as matches in the code below.
- It consists of a NULL-terminated array of pointers to potential
- matching strings. The 1st element (matches[0]) is the maximal
- substring that is common to all matches. This function can re-arrange
- the list of matches as required, but all elements of the array must be
- free()'d if they are deleted. The main intent of this function is
- to implement FIGNORE a la SunOS csh. */
-rl_compignore_func_t *rl_ignore_some_completions_function = (rl_compignore_func_t *)NULL;
-
-/* Set to a function to quote a filename in an application-specific fashion.
- Called with the text to quote, the type of match found (single or multiple)
- and a pointer to the quoting character to be used, which the function can
- reset if desired. */
-rl_quote_func_t *rl_filename_quoting_function = rl_quote_filename;
-
-/* Function to call to remove quoting characters from a filename. Called
- before completion is attempted, so the embedded quotes do not interfere
- with matching names in the file system. Readline doesn't do anything
- with this; it's set only by applications. */
-rl_dequote_func_t *rl_filename_dequoting_function = (rl_dequote_func_t *)NULL;
-
-/* Function to call to decide whether or not a word break character is
- quoted. If a character is quoted, it does not break words for the
- completer. */
-rl_linebuf_func_t *rl_char_is_quoted_p = (rl_linebuf_func_t *)NULL;
-
-/* If non-zero, the completion functions don't append anything except a
- possible closing quote. This is set to 0 by rl_complete_internal and
- may be changed by an application-specific completion function. */
-int rl_completion_suppress_append = 0;
-
-/* Character appended to completed words when at the end of the line. The
- default is a space. */
-int rl_completion_append_character = ' ';
-
-/* If non-zero, a slash will be appended to completed filenames that are
- symbolic links to directory names, subject to the value of the
- mark-directories variable (which is user-settable). This exists so
- that application completion functions can override the user's preference
- (set via the mark-symlinked-directories variable) if appropriate.
- It's set to the value of _rl_complete_mark_symlink_dirs in
- rl_complete_internal before any application-specific completion
- function is called, so without that function doing anything, the user's
- preferences are honored. */
-int rl_completion_mark_symlink_dirs;
-
-/* If non-zero, inhibit completion (temporarily). */
-int rl_inhibit_completion;
-
-/* Variables local to this file. */
-
-/* Local variable states what happened during the last completion attempt. */
-static int completion_changed_buffer;
-
-/*************************************/
-/* */
-/* Bindable completion functions */
-/* */
-/*************************************/
-
-/* Complete the word at or before point. You have supplied the function
- that does the initial simple matching selection algorithm (see
- rl_completion_matches ()). The default is to do filename completion. */
-int
-rl_complete (ignore, invoking_key)
- int ignore, invoking_key;
-{
- if (rl_inhibit_completion)
- return (_rl_insert_char (ignore, invoking_key));
- else if (rl_last_func == rl_complete && !completion_changed_buffer)
- return (rl_complete_internal ('?'));
- else if (_rl_complete_show_all)
- return (rl_complete_internal ('!'));
- else
- return (rl_complete_internal (TAB));
-}
-
-/* List the possible completions. See description of rl_complete (). */
-int
-rl_possible_completions (ignore, invoking_key)
- int ignore, invoking_key;
-{
- return (rl_complete_internal ('?'));
-}
-
-int
-rl_insert_completions (ignore, invoking_key)
- int ignore, invoking_key;
-{
- return (rl_complete_internal ('*'));
-}
-
-/* Return the correct value to pass to rl_complete_internal performing
- the same tests as rl_complete. This allows consecutive calls to an
- application's completion function to list possible completions and for
- an application-specific completion function to honor the
- show-all-if-ambiguous readline variable. */
-int
-rl_completion_mode (cfunc)
- rl_command_func_t *cfunc;
-{
- if (rl_last_func == cfunc && !completion_changed_buffer)
- return '?';
- else if (_rl_complete_show_all)
- return '!';
- else
- return TAB;
-}
-
-/************************************/
-/* */
-/* Completion utility functions */
-/* */
-/************************************/
-
-/* Set default values for readline word completion. These are the variables
- that application completion functions can change or inspect. */
-static void
-set_completion_defaults (what_to_do)
- int what_to_do;
-{
- /* Only the completion entry function can change these. */
- rl_filename_completion_desired = 0;
- rl_filename_quoting_desired = 1;
- rl_completion_type = what_to_do;
- rl_completion_suppress_append = 0;
-
- /* The completion entry function may optionally change this. */
- rl_completion_mark_symlink_dirs = _rl_complete_mark_symlink_dirs;
-}
-
-/* The user must press "y" or "n". Non-zero return means "y" pressed. */
-static int
-get_y_or_n (for_pager)
- int for_pager;
-{
- int c;
-
- for (;;)
- {
- RL_SETSTATE(RL_STATE_MOREINPUT);
- c = rl_read_key ();
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
-
- if (c == 'y' || c == 'Y' || c == ' ')
- return (1);
- if (c == 'n' || c == 'N' || c == RUBOUT)
- return (0);
- if (c == ABORT_CHAR)
- _rl_abort_internal ();
- if (for_pager && (c == NEWLINE || c == RETURN))
- return (2);
- if (for_pager && (c == 'q' || c == 'Q'))
- return (0);
- rl_ding ();
- }
-}
-
-static int
-_rl_internal_pager (lines)
- int lines;
-{
- int i;
-
- fprintf (rl_outstream, "--More--");
- fflush (rl_outstream);
- i = get_y_or_n (1);
- _rl_erase_entire_line ();
- if (i == 0)
- return -1;
- else if (i == 2)
- return (lines - 1);
- else
- return 0;
-}
-
-#if defined (VISIBLE_STATS)
-/* Return the character which best describes FILENAME.
- `@' for symbolic links
- `/' for directories
- `*' for executables
- `=' for sockets
- `|' for FIFOs
- `%' for character special devices
- `#' for block special devices */
-static int
-stat_char (filename)
- char *filename;
-{
- struct stat finfo;
- int character, r;
-
-#if defined (HAVE_LSTAT) && defined (S_ISLNK)
- r = lstat (filename, &finfo);
-#else
- r = stat (filename, &finfo);
-#endif
-
- if (r == -1)
- return (0);
-
- character = 0;
- if (S_ISDIR (finfo.st_mode))
- character = '/';
-#if defined (S_ISCHR)
- else if (S_ISCHR (finfo.st_mode))
- character = '%';
-#endif /* S_ISCHR */
-#if defined (S_ISBLK)
- else if (S_ISBLK (finfo.st_mode))
- character = '#';
-#endif /* S_ISBLK */
-#if defined (S_ISLNK)
- else if (S_ISLNK (finfo.st_mode))
- character = '@';
-#endif /* S_ISLNK */
-#if defined (S_ISSOCK)
- else if (S_ISSOCK (finfo.st_mode))
- character = '=';
-#endif /* S_ISSOCK */
-#if defined (S_ISFIFO)
- else if (S_ISFIFO (finfo.st_mode))
- character = '|';
-#endif
- else if (S_ISREG (finfo.st_mode))
- {
- if (access (filename, X_OK) == 0)
- character = '*';
- }
- return (character);
-}
-#endif /* VISIBLE_STATS */
-
-/* Return the portion of PATHNAME that should be output when listing
- possible completions. If we are hacking filename completion, we
- are only interested in the basename, the portion following the
- final slash. Otherwise, we return what we were passed. Since
- printing empty strings is not very informative, if we're doing
- filename completion, and the basename is the empty string, we look
- for the previous slash and return the portion following that. If
- there's no previous slash, we just return what we were passed. */
-static char *
-printable_part (pathname)
- char *pathname;
-{
- char *temp, *x;
-
- if (rl_filename_completion_desired == 0) /* don't need to do anything */
- return (pathname);
-
- temp = strrchr (pathname, '/');
-#if defined (__MSDOS__)
- if (temp == 0 && ISALPHA ((unsigned char)pathname[0]) && pathname[1] == ':')
- temp = pathname + 1;
-#endif
-
- if (temp == 0 || *temp == '\0')
- return (pathname);
- /* If the basename is NULL, we might have a pathname like '/usr/src/'.
- Look for a previous slash and, if one is found, return the portion
- following that slash. If there's no previous slash, just return the
- pathname we were passed. */
- else if (temp[1] == '\0')
- {
- for (x = temp - 1; x > pathname; x--)
- if (*x == '/')
- break;
- return ((*x == '/') ? x + 1 : pathname);
- }
- else
- return ++temp;
-}
-
-/* Output TO_PRINT to rl_outstream. If VISIBLE_STATS is defined and we
- are using it, check for and output a single character for `special'
- filenames. Return the number of characters we output. */
-
-#define PUTX(c) \
- do { \
- if (CTRL_CHAR (c)) \
- { \
- putc ('^', rl_outstream); \
- putc (UNCTRL (c), rl_outstream); \
- printed_len += 2; \
- } \
- else if (c == RUBOUT) \
- { \
- putc ('^', rl_outstream); \
- putc ('?', rl_outstream); \
- printed_len += 2; \
- } \
- else \
- { \
- putc (c, rl_outstream); \
- printed_len++; \
- } \
- } while (0)
-
-static int
-print_filename (to_print, full_pathname)
- char *to_print, *full_pathname;
-{
- int printed_len = 0;
-#if !defined (VISIBLE_STATS)
- char *s;
-
- for (s = to_print; *s; s++)
- {
- PUTX (*s);
- }
-#else
- char *s, c, *new_full_pathname;
- int extension_char, slen, tlen;
-
- for (s = to_print; *s; s++)
- {
- PUTX (*s);
- }
-
- if (rl_filename_completion_desired && rl_visible_stats)
- {
- /* If to_print != full_pathname, to_print is the basename of the
- path passed. In this case, we try to expand the directory
- name before checking for the stat character. */
- if (to_print != full_pathname)
- {
- /* Terminate the directory name. */
- c = to_print[-1];
- to_print[-1] = '\0';
-
- /* If setting the last slash in full_pathname to a NUL results in
- full_pathname being the empty string, we are trying to complete
- files in the root directory. If we pass a null string to the
- bash directory completion hook, for example, it will expand it
- to the current directory. We just want the `/'. */
- s = tilde_expand (full_pathname && *full_pathname ? full_pathname : "/");
- if (rl_directory_completion_hook)
- (*rl_directory_completion_hook) (&s);
-
- slen = strlen (s);
- tlen = strlen (to_print);
- new_full_pathname = (char *)xmalloc (slen + tlen + 2);
- strcpy (new_full_pathname, s);
- new_full_pathname[slen] = '/';
- strcpy (new_full_pathname + slen + 1, to_print);
-
- extension_char = stat_char (new_full_pathname);
-
- free (new_full_pathname);
- to_print[-1] = c;
- }
- else
- {
- s = tilde_expand (full_pathname);
- extension_char = stat_char (s);
- }
-
- free (s);
- if (extension_char)
- {
- putc (extension_char, rl_outstream);
- printed_len++;
- }
- }
-#endif /* VISIBLE_STATS */
- return printed_len;
-}
-
-static char *
-rl_quote_filename (s, rtype, qcp)
- char *s;
- int rtype;
- char *qcp;
-{
- char *r;
-
- r = (char *)xmalloc (strlen (s) + 2);
- *r = *rl_completer_quote_characters;
- strcpy (r + 1, s);
- if (qcp)
- *qcp = *rl_completer_quote_characters;
- return r;
-}
-
-/* Find the bounds of the current word for completion purposes, and leave
- rl_point set to the end of the word. This function skips quoted
- substrings (characters between matched pairs of characters in
- rl_completer_quote_characters). First we try to find an unclosed
- quoted substring on which to do matching. If one is not found, we use
- the word break characters to find the boundaries of the current word.
- We call an application-specific function to decide whether or not a
- particular word break character is quoted; if that function returns a
- non-zero result, the character does not break a word. This function
- returns the opening quote character if we found an unclosed quoted
- substring, '\0' otherwise. FP, if non-null, is set to a value saying
- which (shell-like) quote characters we found (single quote, double
- quote, or backslash) anywhere in the string. DP, if non-null, is set to
- the value of the delimiter character that caused a word break. */
-
-char
-_rl_find_completion_word (fp, dp)
- int *fp, *dp;
-{
- int scan, end, found_quote, delimiter, pass_next, isbrk;
- char quote_char;
-
- end = rl_point;
- found_quote = delimiter = 0;
- quote_char = '\0';
-
- if (rl_completer_quote_characters)
- {
- /* We have a list of characters which can be used in pairs to
- quote substrings for the completer. Try to find the start
- of an unclosed quoted substring. */
- /* FOUND_QUOTE is set so we know what kind of quotes we found. */
- for (scan = pass_next = 0; scan < end; scan++)
- {
- if (pass_next)
- {
- pass_next = 0;
- continue;
- }
-
- /* Shell-like semantics for single quotes -- don't allow backslash
- to quote anything in single quotes, especially not the closing
- quote. If you don't like this, take out the check on the value
- of quote_char. */
- if (quote_char != '\'' && rl_line_buffer[scan] == '\\')
- {
- pass_next = 1;
- found_quote |= RL_QF_BACKSLASH;
- continue;
- }
-
- if (quote_char != '\0')
- {
- /* Ignore everything until the matching close quote char. */
- if (rl_line_buffer[scan] == quote_char)
- {
- /* Found matching close. Abandon this substring. */
- quote_char = '\0';
- rl_point = end;
- }
- }
- else if (strchr (rl_completer_quote_characters, rl_line_buffer[scan]))
- {
- /* Found start of a quoted substring. */
- quote_char = rl_line_buffer[scan];
- rl_point = scan + 1;
- /* Shell-like quoting conventions. */
- if (quote_char == '\'')
- found_quote |= RL_QF_SINGLE_QUOTE;
- else if (quote_char == '"')
- found_quote |= RL_QF_DOUBLE_QUOTE;
- else
- found_quote |= RL_QF_OTHER_QUOTE;
- }
- }
- }
-
- if (rl_point == end && quote_char == '\0')
- {
- /* We didn't find an unclosed quoted substring upon which to do
- completion, so use the word break characters to find the
- substring on which to complete. */
-#if defined (HANDLE_MULTIBYTE)
- while (rl_point = _rl_find_prev_mbchar (rl_line_buffer, rl_point, MB_FIND_ANY))
-#else
- while (--rl_point)
-#endif
- {
- scan = rl_line_buffer[rl_point];
-
- if (strchr (rl_completer_word_break_characters, scan) == 0)
- continue;
-
- /* Call the application-specific function to tell us whether
- this word break character is quoted and should be skipped. */
- if (rl_char_is_quoted_p && found_quote &&
- (*rl_char_is_quoted_p) (rl_line_buffer, rl_point))
- continue;
-
- /* Convoluted code, but it avoids an n^2 algorithm with calls
- to char_is_quoted. */
- break;
- }
- }
-
- /* If we are at an unquoted word break, then advance past it. */
- scan = rl_line_buffer[rl_point];
-
- /* If there is an application-specific function to say whether or not
- a character is quoted and we found a quote character, let that
- function decide whether or not a character is a word break, even
- if it is found in rl_completer_word_break_characters. Don't bother
- if we're at the end of the line, though. */
- if (scan)
- {
- if (rl_char_is_quoted_p)
- isbrk = (found_quote == 0 ||
- (*rl_char_is_quoted_p) (rl_line_buffer, rl_point) == 0) &&
- strchr (rl_completer_word_break_characters, scan) != 0;
- else
- isbrk = strchr (rl_completer_word_break_characters, scan) != 0;
-
- if (isbrk)
- {
- /* If the character that caused the word break was a quoting
- character, then remember it as the delimiter. */
- if (rl_basic_quote_characters &&
- strchr (rl_basic_quote_characters, scan) &&
- (end - rl_point) > 1)
- delimiter = scan;
-
- /* If the character isn't needed to determine something special
- about what kind of completion to perform, then advance past it. */
- if (rl_special_prefixes == 0 || strchr (rl_special_prefixes, scan) == 0)
- rl_point++;
- }
- }
-
- if (fp)
- *fp = found_quote;
- if (dp)
- *dp = delimiter;
-
- return (quote_char);
-}
-
-static char **
-gen_completion_matches (text, start, end, our_func, found_quote, quote_char)
- char *text;
- int start, end;
- rl_compentry_func_t *our_func;
- int found_quote, quote_char;
-{
- char **matches, *temp;
-
- /* If the user wants to TRY to complete, but then wants to give
- up and use the default completion function, they set the
- variable rl_attempted_completion_function. */
- if (rl_attempted_completion_function)
- {
- matches = (*rl_attempted_completion_function) (text, start, end);
-
- if (matches || rl_attempted_completion_over)
- {
- rl_attempted_completion_over = 0;
- return (matches);
- }
- }
-
- /* Beware -- we're stripping the quotes here. Do this only if we know
- we are doing filename completion and the application has defined a
- filename dequoting function. */
- temp = (char *)NULL;
-
- if (found_quote && our_func == rl_filename_completion_function &&
- rl_filename_dequoting_function)
- {
- /* delete single and double quotes */
- temp = (*rl_filename_dequoting_function) (text, quote_char);
- text = temp; /* not freeing text is not a memory leak */
- }
-
- matches = rl_completion_matches (text, our_func);
- FREE (temp);
- return matches;
-}
-
-/* Filter out duplicates in MATCHES. This frees up the strings in
- MATCHES. */
-static char **
-remove_duplicate_matches (matches)
- char **matches;
-{
- char *lowest_common;
- int i, j, newlen;
- char dead_slot;
- char **temp_array;
-
- /* Sort the items. */
- for (i = 0; matches[i]; i++)
- ;
-
- /* Sort the array without matches[0], since we need it to
- stay in place no matter what. */
- if (i)
- qsort (matches+1, i-1, sizeof (char *), (QSFUNC *)_rl_qsort_string_compare);
-
- /* Remember the lowest common denominator for it may be unique. */
- lowest_common = savestring (matches[0]);
-
- for (i = newlen = 0; matches[i + 1]; i++)
- {
- if (strcmp (matches[i], matches[i + 1]) == 0)
- {
- free (matches[i]);
- matches[i] = (char *)&dead_slot;
- }
- else
- newlen++;
- }
-
- /* We have marked all the dead slots with (char *)&dead_slot.
- Copy all the non-dead entries into a new array. */
- temp_array = (char **)xmalloc ((3 + newlen) * sizeof (char *));
- for (i = j = 1; matches[i]; i++)
- {
- if (matches[i] != (char *)&dead_slot)
- temp_array[j++] = matches[i];
- }
- temp_array[j] = (char *)NULL;
-
- if (matches[0] != (char *)&dead_slot)
- free (matches[0]);
-
- /* Place the lowest common denominator back in [0]. */
- temp_array[0] = lowest_common;
-
- /* If there is one string left, and it is identical to the
- lowest common denominator, then the LCD is the string to
- insert. */
- if (j == 2 && strcmp (temp_array[0], temp_array[1]) == 0)
- {
- free (temp_array[1]);
- temp_array[1] = (char *)NULL;
- }
- return (temp_array);
-}
-
-/* Find the common prefix of the list of matches, and put it into
- matches[0]. */
-static int
-compute_lcd_of_matches (match_list, matches, text)
- char **match_list;
- int matches;
- const char *text;
-{
- register int i, c1, c2, si;
- int low; /* Count of max-matched characters. */
-#if defined (HANDLE_MULTIBYTE)
- int v;
- mbstate_t ps1, ps2;
- wchar_t wc1, wc2;
-#endif
-
- /* If only one match, just use that. Otherwise, compare each
- member of the list with the next, finding out where they
- stop matching. */
- if (matches == 1)
- {
- match_list[0] = match_list[1];
- match_list[1] = (char *)NULL;
- return 1;
- }
-
- for (i = 1, low = 100000; i < matches; i++)
- {
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- memset (&ps1, 0, sizeof (mbstate_t));
- memset (&ps2, 0, sizeof (mbstate_t));
- }
-#endif
- if (_rl_completion_case_fold)
- {
- for (si = 0;
- (c1 = _rl_to_lower(match_list[i][si])) &&
- (c2 = _rl_to_lower(match_list[i + 1][si]));
- si++)
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- v = mbrtowc (&wc1, match_list[i]+si, strlen (match_list[i]+si), &ps1);
- mbrtowc (&wc2, match_list[i+1]+si, strlen (match_list[i+1]+si), &ps2);
- wc1 = towlower (wc1);
- wc2 = towlower (wc2);
- if (wc1 != wc2)
- break;
- else if (v > 1)
- si += v - 1;
- }
- else
-#endif
- if (c1 != c2)
- break;
- }
- else
- {
- for (si = 0;
- (c1 = match_list[i][si]) &&
- (c2 = match_list[i + 1][si]);
- si++)
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- mbstate_t ps_back = ps1;
- if (!_rl_compare_chars (match_list[i], si, &ps1, match_list[i+1], si, &ps2))
- break;
- else if ((v = _rl_get_char_len (&match_list[i][si], &ps_back)) > 1)
- si += v - 1;
- }
- else
-#endif
- if (c1 != c2)
- break;
- }
-
- if (low > si)
- low = si;
- }
-
- /* If there were multiple matches, but none matched up to even the
- first character, and the user typed something, use that as the
- value of matches[0]. */
- if (low == 0 && text && *text)
- {
- match_list[0] = (char *)xmalloc (strlen (text) + 1);
- strcpy (match_list[0], text);
- }
- else
- {
- match_list[0] = (char *)xmalloc (low + 1);
-
- /* XXX - this might need changes in the presence of multibyte chars */
-
- /* If we are ignoring case, try to preserve the case of the string
- the user typed in the face of multiple matches differing in case. */
- if (_rl_completion_case_fold)
- {
- /* sort the list to get consistent answers. */
- qsort (match_list+1, matches, sizeof(char *), (QSFUNC *)_rl_qsort_string_compare);
-
- si = strlen (text);
- if (si <= low)
- {
- for (i = 1; i <= matches; i++)
- if (strncmp (match_list[i], text, si) == 0)
- {
- strncpy (match_list[0], match_list[i], low);
- break;
- }
- /* no casematch, use first entry */
- if (i > matches)
- strncpy (match_list[0], match_list[1], low);
- }
- else
- /* otherwise, just use the text the user typed. */
- strncpy (match_list[0], text, low);
- }
- else
- strncpy (match_list[0], match_list[1], low);
-
- match_list[0][low] = '\0';
- }
-
- return matches;
-}
-
-static int
-postprocess_matches (matchesp, matching_filenames)
- char ***matchesp;
- int matching_filenames;
-{
- char *t, **matches, **temp_matches;
- int nmatch, i;
-
- matches = *matchesp;
-
- if (matches == 0)
- return 0;
-
- /* It seems to me that in all the cases we handle we would like
- to ignore duplicate possiblilities. Scan for the text to
- insert being identical to the other completions. */
- if (rl_ignore_completion_duplicates)
- {
- temp_matches = remove_duplicate_matches (matches);
- free (matches);
- matches = temp_matches;
- }
-
- /* If we are matching filenames, then here is our chance to
- do clever processing by re-examining the list. Call the
- ignore function with the array as a parameter. It can
- munge the array, deleting matches as it desires. */
- if (rl_ignore_some_completions_function && matching_filenames)
- {
- for (nmatch = 1; matches[nmatch]; nmatch++)
- ;
- (void)(*rl_ignore_some_completions_function) (matches);
- if (matches == 0 || matches[0] == 0)
- {
- FREE (matches);
- *matchesp = (char **)0;
- return 0;
- }
- else
- {
- /* If we removed some matches, recompute the common prefix. */
- for (i = 1; matches[i]; i++)
- ;
- if (i > 1 && i < nmatch)
- {
- t = matches[0];
- compute_lcd_of_matches (matches, i - 1, t);
- FREE (t);
- }
- }
- }
-
- *matchesp = matches;
- return (1);
-}
-
-/* A convenience function for displaying a list of strings in
- columnar format on readline's output stream. MATCHES is the list
- of strings, in argv format, LEN is the number of strings in MATCHES,
- and MAX is the length of the longest string in MATCHES. */
-void
-rl_display_match_list (matches, len, max)
- char **matches;
- int len, max;
-{
- int count, limit, printed_len, lines;
- int i, j, k, l;
- char *temp;
-
- /* How many items of MAX length can we fit in the screen window? */
- max += 2;
- limit = _rl_screenwidth / max;
- if (limit != 1 && (limit * max == _rl_screenwidth))
- limit--;
-
- /* Avoid a possible floating exception. If max > _rl_screenwidth,
- limit will be 0 and a divide-by-zero fault will result. */
- if (limit == 0)
- limit = 1;
-
- /* How many iterations of the printing loop? */
- count = (len + (limit - 1)) / limit;
-
- /* Watch out for special case. If LEN is less than LIMIT, then
- just do the inner printing loop.
- 0 < len <= limit implies count = 1. */
-
- /* Sort the items if they are not already sorted. */
- if (rl_ignore_completion_duplicates == 0)
- qsort (matches + 1, len, sizeof (char *), (QSFUNC *)_rl_qsort_string_compare);
-
- rl_crlf ();
-
- lines = 0;
- if (_rl_print_completions_horizontally == 0)
- {
- /* Print the sorted items, up-and-down alphabetically, like ls. */
- for (i = 1; i <= count; i++)
- {
- for (j = 0, l = i; j < limit; j++)
- {
- if (l > len || matches[l] == 0)
- break;
- else
- {
- temp = printable_part (matches[l]);
- printed_len = print_filename (temp, matches[l]);
-
- if (j + 1 < limit)
- for (k = 0; k < max - printed_len; k++)
- putc (' ', rl_outstream);
- }
- l += count;
- }
- rl_crlf ();
- lines++;
- if (_rl_page_completions && lines >= (_rl_screenheight - 1) && i < count)
- {
- lines = _rl_internal_pager (lines);
- if (lines < 0)
- return;
- }
- }
- }
- else
- {
- /* Print the sorted items, across alphabetically, like ls -x. */
- for (i = 1; matches[i]; i++)
- {
- temp = printable_part (matches[i]);
- printed_len = print_filename (temp, matches[i]);
- /* Have we reached the end of this line? */
- if (matches[i+1])
- {
- if (i && (limit > 1) && (i % limit) == 0)
- {
- rl_crlf ();
- lines++;
- if (_rl_page_completions && lines >= _rl_screenheight - 1)
- {
- lines = _rl_internal_pager (lines);
- if (lines < 0)
- return;
- }
- }
- else
- for (k = 0; k < max - printed_len; k++)
- putc (' ', rl_outstream);
- }
- }
- rl_crlf ();
- }
-}
-
-/* Display MATCHES, a list of matching filenames in argv format. This
- handles the simple case -- a single match -- first. If there is more
- than one match, we compute the number of strings in the list and the
- length of the longest string, which will be needed by the display
- function. If the application wants to handle displaying the list of
- matches itself, it sets RL_COMPLETION_DISPLAY_MATCHES_HOOK to the
- address of a function, and we just call it. If we're handling the
- display ourselves, we just call rl_display_match_list. We also check
- that the list of matches doesn't exceed the user-settable threshold,
- and ask the user if he wants to see the list if there are more matches
- than RL_COMPLETION_QUERY_ITEMS. */
-static void
-display_matches (matches)
- char **matches;
-{
- int len, max, i;
- char *temp;
-
- /* Move to the last visible line of a possibly-multiple-line command. */
- _rl_move_vert (_rl_vis_botlin);
-
- /* Handle simple case first. What if there is only one answer? */
- if (matches[1] == 0)
- {
- temp = printable_part (matches[0]);
- rl_crlf ();
- print_filename (temp, matches[0]);
- rl_crlf ();
-
- rl_forced_update_display ();
- rl_display_fixed = 1;
-
- return;
- }
-
- /* There is more than one answer. Find out how many there are,
- and find the maximum printed length of a single entry. */
- for (max = 0, i = 1; matches[i]; i++)
- {
- temp = printable_part (matches[i]);
- len = strlen (temp);
-
- if (len > max)
- max = len;
- }
-
- len = i - 1;
-
- /* If the caller has defined a display hook, then call that now. */
- if (rl_completion_display_matches_hook)
- {
- (*rl_completion_display_matches_hook) (matches, len, max);
- return;
- }
-
- /* If there are many items, then ask the user if she really wants to
- see them all. */
- if (len >= rl_completion_query_items)
- {
- rl_crlf ();
- fprintf (rl_outstream, "Display all %d possibilities? (y or n)", len);
- fflush (rl_outstream);
- if (get_y_or_n (0) == 0)
- {
- rl_crlf ();
-
- rl_forced_update_display ();
- rl_display_fixed = 1;
-
- return;
- }
- }
-
- rl_display_match_list (matches, len, max);
-
- rl_forced_update_display ();
- rl_display_fixed = 1;
-}
-
-static char *
-make_quoted_replacement (match, mtype, qc)
- char *match;
- int mtype;
- char *qc; /* Pointer to quoting character, if any */
-{
- int should_quote, do_replace;
- char *replacement;
-
- /* If we are doing completion on quoted substrings, and any matches
- contain any of the completer_word_break_characters, then auto-
- matically prepend the substring with a quote character (just pick
- the first one from the list of such) if it does not already begin
- with a quote string. FIXME: Need to remove any such automatically
- inserted quote character when it no longer is necessary, such as
- if we change the string we are completing on and the new set of
- matches don't require a quoted substring. */
- replacement = match;
-
- should_quote = match && rl_completer_quote_characters &&
- rl_filename_completion_desired &&
- rl_filename_quoting_desired;
-
- if (should_quote)
- should_quote = should_quote && (!qc || !*qc ||
- (rl_completer_quote_characters && strchr (rl_completer_quote_characters, *qc)));
-
- if (should_quote)
- {
- /* If there is a single match, see if we need to quote it.
- This also checks whether the common prefix of several
- matches needs to be quoted. */
- should_quote = rl_filename_quote_characters
- ? (_rl_strpbrk (match, rl_filename_quote_characters) != 0)
- : 0;
-
- do_replace = should_quote ? mtype : NO_MATCH;
- /* Quote the replacement, since we found an embedded
- word break character in a potential match. */
- if (do_replace != NO_MATCH && rl_filename_quoting_function)
- replacement = (*rl_filename_quoting_function) (match, do_replace, qc);
- }
- return (replacement);
-}
-
-static void
-insert_match (match, start, mtype, qc)
- char *match;
- int start, mtype;
- char *qc;
-{
- char *replacement;
- char oqc;
-
- oqc = qc ? *qc : '\0';
- replacement = make_quoted_replacement (match, mtype, qc);
-
- /* Now insert the match. */
- if (replacement)
- {
- /* Don't double an opening quote character. */
- if (qc && *qc && start && rl_line_buffer[start - 1] == *qc &&
- replacement[0] == *qc)
- start--;
- /* If make_quoted_replacement changed the quoting character, remove
- the opening quote and insert the (fully-quoted) replacement. */
- else if (qc && (*qc != oqc) && start && rl_line_buffer[start - 1] == oqc &&
- replacement[0] != oqc)
- start--;
- _rl_replace_text (replacement, start, rl_point - 1);
- if (replacement != match)
- free (replacement);
- }
-}
-
-/* Append any necessary closing quote and a separator character to the
- just-inserted match. If the user has specified that directories
- should be marked by a trailing `/', append one of those instead. The
- default trailing character is a space. Returns the number of characters
- appended. If NONTRIVIAL_MATCH is set, we test for a symlink (if the OS
- has them) and don't add a suffix for a symlink to a directory. A
- nontrivial match is one that actually adds to the word being completed.
- The variable rl_completion_mark_symlink_dirs controls this behavior
- (it's initially set to the what the user has chosen, indicated by the
- value of _rl_complete_mark_symlink_dirs, but may be modified by an
- application's completion function). */
-static int
-append_to_match (text, delimiter, quote_char, nontrivial_match)
- char *text;
- int delimiter, quote_char, nontrivial_match;
-{
- char temp_string[4], *filename;
- int temp_string_index, s;
- struct stat finfo;
-
- temp_string_index = 0;
- if (quote_char && rl_point && rl_line_buffer[rl_point - 1] != quote_char)
- temp_string[temp_string_index++] = quote_char;
-
- if (delimiter)
- temp_string[temp_string_index++] = delimiter;
- else if (rl_completion_suppress_append == 0 && rl_completion_append_character)
- temp_string[temp_string_index++] = rl_completion_append_character;
-
- temp_string[temp_string_index++] = '\0';
-
- if (rl_filename_completion_desired)
- {
- filename = tilde_expand (text);
- s = (nontrivial_match && rl_completion_mark_symlink_dirs == 0)
- ? LSTAT (filename, &finfo)
- : stat (filename, &finfo);
- if (s == 0 && S_ISDIR (finfo.st_mode))
- {
- if (_rl_complete_mark_directories)
- {
- /* This is clumsy. Avoid putting in a double slash if point
- is at the end of the line and the previous character is a
- slash. */
- if (rl_point && rl_line_buffer[rl_point] == '\0' && rl_line_buffer[rl_point - 1] == '/')
- ;
- else if (rl_line_buffer[rl_point] != '/')
- rl_insert_text ("/");
- }
- }
-#ifdef S_ISLNK
- /* Don't add anything if the filename is a symlink and resolves to a
- directory. */
- else if (s == 0 && S_ISLNK (finfo.st_mode) &&
- stat (filename, &finfo) == 0 && S_ISDIR (finfo.st_mode))
- ;
-#endif
- else
- {
- if (rl_point == rl_end && temp_string_index)
- rl_insert_text (temp_string);
- }
- free (filename);
- }
- else
- {
- if (rl_point == rl_end && temp_string_index)
- rl_insert_text (temp_string);
- }
-
- return (temp_string_index);
-}
-
-static void
-insert_all_matches (matches, point, qc)
- char **matches;
- int point;
- char *qc;
-{
- int i;
- char *rp;
-
- rl_begin_undo_group ();
- /* remove any opening quote character; make_quoted_replacement will add
- it back. */
- if (qc && *qc && point && rl_line_buffer[point - 1] == *qc)
- point--;
- rl_delete_text (point, rl_point);
- rl_point = point;
-
- if (matches[1])
- {
- for (i = 1; matches[i]; i++)
- {
- rp = make_quoted_replacement (matches[i], SINGLE_MATCH, qc);
- rl_insert_text (rp);
- rl_insert_text (" ");
- if (rp != matches[i])
- free (rp);
- }
- }
- else
- {
- rp = make_quoted_replacement (matches[0], SINGLE_MATCH, qc);
- rl_insert_text (rp);
- rl_insert_text (" ");
- if (rp != matches[0])
- free (rp);
- }
- rl_end_undo_group ();
-}
-
-void
-_rl_free_match_list (matches)
- char **matches;
-{
- register int i;
-
- if (matches == 0)
- return;
-
- for (i = 0; matches[i]; i++)
- free (matches[i]);
- free (matches);
-}
-
-/* Complete the word at or before point.
- WHAT_TO_DO says what to do with the completion.
- `?' means list the possible completions.
- TAB means do standard completion.
- `*' means insert all of the possible completions.
- `!' means to do standard completion, and list all possible completions if
- there is more than one. */
-int
-rl_complete_internal (what_to_do)
- int what_to_do;
-{
- char **matches;
- rl_compentry_func_t *our_func;
- int start, end, delimiter, found_quote, i, nontrivial_lcd;
- char *text, *saved_line_buffer;
- char quote_char;
-
- RL_SETSTATE(RL_STATE_COMPLETING);
-
- set_completion_defaults (what_to_do);
-
- saved_line_buffer = rl_line_buffer ? savestring (rl_line_buffer) : (char *)NULL;
- our_func = rl_completion_entry_function
- ? rl_completion_entry_function
- : rl_filename_completion_function;
-
- /* We now look backwards for the start of a filename/variable word. */
- end = rl_point;
- found_quote = delimiter = 0;
- quote_char = '\0';
-
- if (rl_point)
- /* This (possibly) changes rl_point. If it returns a non-zero char,
- we know we have an open quote. */
- quote_char = _rl_find_completion_word (&found_quote, &delimiter);
-
- start = rl_point;
- rl_point = end;
-
- text = rl_copy_text (start, end);
- matches = gen_completion_matches (text, start, end, our_func, found_quote, quote_char);
- /* nontrivial_lcd is set if the common prefix adds something to the word
- being completed. */
- nontrivial_lcd = matches && strcmp (text, matches[0]) != 0;
- free (text);
-
- if (matches == 0)
- {
- rl_ding ();
- FREE (saved_line_buffer);
- completion_changed_buffer = 0;
- RL_UNSETSTATE(RL_STATE_COMPLETING);
- return (0);
- }
-
- /* If we are matching filenames, the attempted completion function will
- have set rl_filename_completion_desired to a non-zero value. The basic
- rl_filename_completion_function does this. */
- i = rl_filename_completion_desired;
-
- if (postprocess_matches (&matches, i) == 0)
- {
- rl_ding ();
- FREE (saved_line_buffer);
- completion_changed_buffer = 0;
- RL_UNSETSTATE(RL_STATE_COMPLETING);
- return (0);
- }
-
- switch (what_to_do)
- {
- case TAB:
- case '!':
- /* Insert the first match with proper quoting. */
- if (*matches[0])
- insert_match (matches[0], start, matches[1] ? MULT_MATCH : SINGLE_MATCH, &quote_char);
-
- /* If there are more matches, ring the bell to indicate.
- If we are in vi mode, Posix.2 says to not ring the bell.
- If the `show-all-if-ambiguous' variable is set, display
- all the matches immediately. Otherwise, if this was the
- only match, and we are hacking files, check the file to
- see if it was a directory. If so, and the `mark-directories'
- variable is set, add a '/' to the name. If not, and we
- are at the end of the line, then add a space. */
- if (matches[1])
- {
- if (what_to_do == '!')
- {
- display_matches (matches);
- break;
- }
- else if (rl_editing_mode != vi_mode)
- rl_ding (); /* There are other matches remaining. */
- }
- else
- append_to_match (matches[0], delimiter, quote_char, nontrivial_lcd);
-
- break;
-
- case '*':
- insert_all_matches (matches, start, &quote_char);
- break;
-
- case '?':
- display_matches (matches);
- break;
-
- default:
- fprintf (stderr, "\r\nreadline: bad value %d for what_to_do in rl_complete\n", what_to_do);
- rl_ding ();
- FREE (saved_line_buffer);
- RL_UNSETSTATE(RL_STATE_COMPLETING);
- return 1;
- }
-
- _rl_free_match_list (matches);
-
- /* Check to see if the line has changed through all of this manipulation. */
- if (saved_line_buffer)
- {
- completion_changed_buffer = strcmp (rl_line_buffer, saved_line_buffer) != 0;
- free (saved_line_buffer);
- }
-
- RL_UNSETSTATE(RL_STATE_COMPLETING);
- return 0;
-}
-
-/***************************************************************/
-/* */
-/* Application-callable completion match generator functions */
-/* */
-/***************************************************************/
-
-/* Return an array of (char *) which is a list of completions for TEXT.
- If there are no completions, return a NULL pointer.
- The first entry in the returned array is the substitution for TEXT.
- The remaining entries are the possible completions.
- The array is terminated with a NULL pointer.
-
- ENTRY_FUNCTION is a function of two args, and returns a (char *).
- The first argument is TEXT.
- The second is a state argument; it should be zero on the first call, and
- non-zero on subsequent calls. It returns a NULL pointer to the caller
- when there are no more matches.
- */
-char **
-rl_completion_matches (text, entry_function)
- const char *text;
- rl_compentry_func_t *entry_function;
-{
- /* Number of slots in match_list. */
- int match_list_size;
-
- /* The list of matches. */
- char **match_list;
-
- /* Number of matches actually found. */
- int matches;
-
- /* Temporary string binder. */
- char *string;
-
- matches = 0;
- match_list_size = 10;
- match_list = (char **)xmalloc ((match_list_size + 1) * sizeof (char *));
- match_list[1] = (char *)NULL;
-
- while (string = (*entry_function) (text, matches))
- {
- if (matches + 1 == match_list_size)
- match_list = (char **)xrealloc
- (match_list, ((match_list_size += 10) + 1) * sizeof (char *));
-
- match_list[++matches] = string;
- match_list[matches + 1] = (char *)NULL;
- }
-
- /* If there were any matches, then look through them finding out the
- lowest common denominator. That then becomes match_list[0]. */
- if (matches)
- compute_lcd_of_matches (match_list, matches, text);
- else /* There were no matches. */
- {
- free (match_list);
- match_list = (char **)NULL;
- }
- return (match_list);
-}
-
-/* A completion function for usernames.
- TEXT contains a partial username preceded by a random
- character (usually `~'). */
-char *
-rl_username_completion_function (text, state)
- const char *text;
- int state;
-{
-#if defined (__WIN32__) || defined (__OPENNT)
- return (char *)NULL;
-#else /* !__WIN32__ && !__OPENNT) */
- static char *username = (char *)NULL;
- static struct passwd *entry;
- static int namelen, first_char, first_char_loc;
- char *value;
-
- if (state == 0)
- {
- FREE (username);
-
- first_char = *text;
- first_char_loc = first_char == '~';
-
- username = savestring (&text[first_char_loc]);
- namelen = strlen (username);
- setpwent ();
- }
-
- while (entry = getpwent ())
- {
- /* Null usernames should result in all users as possible completions. */
- if (namelen == 0 || (STREQN (username, entry->pw_name, namelen)))
- break;
- }
-
- if (entry == 0)
- {
- endpwent ();
- return ((char *)NULL);
- }
- else
- {
- value = (char *)xmalloc (2 + strlen (entry->pw_name));
-
- *value = *text;
-
- strcpy (value + first_char_loc, entry->pw_name);
-
- if (first_char == '~')
- rl_filename_completion_desired = 1;
-
- return (value);
- }
-#endif /* !__WIN32__ && !__OPENNT */
-}
-
-/* Okay, now we write the entry_function for filename completion. In the
- general case. Note that completion in the shell is a little different
- because of all the pathnames that must be followed when looking up the
- completion for a command. */
-char *
-rl_filename_completion_function (text, state)
- const char *text;
- int state;
-{
- static DIR *directory = (DIR *)NULL;
- static char *filename = (char *)NULL;
- static char *dirname = (char *)NULL;
- static char *users_dirname = (char *)NULL;
- static int filename_len;
- char *temp;
- int dirlen;
- struct dirent *entry;
-
- /* If we don't have any state, then do some initialization. */
- if (state == 0)
- {
- /* If we were interrupted before closing the directory or reading
- all of its contents, close it. */
- if (directory)
- {
- closedir (directory);
- directory = (DIR *)NULL;
- }
- FREE (dirname);
- FREE (filename);
- FREE (users_dirname);
-
- filename = savestring (text);
- if (*text == 0)
- text = ".";
- dirname = savestring (text);
-
- temp = strrchr (dirname, '/');
-
-#if defined (__MSDOS__)
- /* special hack for //X/... */
- if (dirname[0] == '/' && dirname[1] == '/' && ISALPHA ((unsigned char)dirname[2]) && dirname[3] == '/')
- temp = strrchr (dirname + 3, '/');
-#endif
-
- if (temp)
- {
- strcpy (filename, ++temp);
- *temp = '\0';
- }
-#if defined (__MSDOS__)
- /* searches from current directory on the drive */
- else if (ISALPHA ((unsigned char)dirname[0]) && dirname[1] == ':')
- {
- strcpy (filename, dirname + 2);
- dirname[2] = '\0';
- }
-#endif
- else
- {
- dirname[0] = '.';
- dirname[1] = '\0';
- }
-
- /* We aren't done yet. We also support the "~user" syntax. */
-
- /* Save the version of the directory that the user typed. */
- users_dirname = savestring (dirname);
-
- if (*dirname == '~')
- {
- temp = tilde_expand (dirname);
- free (dirname);
- dirname = temp;
- }
-
- if (rl_directory_rewrite_hook)
- (*rl_directory_rewrite_hook) (&dirname);
-
- if (rl_directory_completion_hook && (*rl_directory_completion_hook) (&dirname))
- {
- free (users_dirname);
- users_dirname = savestring (dirname);
- }
-
- directory = opendir (dirname);
- filename_len = strlen (filename);
-
- rl_filename_completion_desired = 1;
- }
-
- /* At this point we should entertain the possibility of hacking wildcarded
- filenames, like /usr/man/man<WILD>/te<TAB>. If the directory name
- contains globbing characters, then build an array of directories, and
- then map over that list while completing. */
- /* *** UNIMPLEMENTED *** */
-
- /* Now that we have some state, we can read the directory. */
-
- entry = (struct dirent *)NULL;
- while (directory && (entry = readdir (directory)))
- {
- /* Special case for no filename. If the user has disabled the
- `match-hidden-files' variable, skip filenames beginning with `.'.
- All other entries except "." and ".." match. */
- if (filename_len == 0)
- {
- if (_rl_match_hidden_files == 0 && HIDDEN_FILE (entry->d_name))
- continue;
-
- if (entry->d_name[0] != '.' ||
- (entry->d_name[1] &&
- (entry->d_name[1] != '.' || entry->d_name[2])))
- break;
- }
- else
- {
- /* Otherwise, if these match up to the length of filename, then
- it is a match. */
- if (_rl_completion_case_fold)
- {
- if ((_rl_to_lower (entry->d_name[0]) == _rl_to_lower (filename[0])) &&
- (((int)D_NAMLEN (entry)) >= filename_len) &&
- (_rl_strnicmp (filename, entry->d_name, filename_len) == 0))
- break;
- }
- else
- {
- if ((entry->d_name[0] == filename[0]) &&
- (((int)D_NAMLEN (entry)) >= filename_len) &&
- (strncmp (filename, entry->d_name, filename_len) == 0))
- break;
- }
- }
- }
-
- if (entry == 0)
- {
- if (directory)
- {
- closedir (directory);
- directory = (DIR *)NULL;
- }
- if (dirname)
- {
- free (dirname);
- dirname = (char *)NULL;
- }
- if (filename)
- {
- free (filename);
- filename = (char *)NULL;
- }
- if (users_dirname)
- {
- free (users_dirname);
- users_dirname = (char *)NULL;
- }
-
- return (char *)NULL;
- }
- else
- {
- /* dirname && (strcmp (dirname, ".") != 0) */
- if (dirname && (dirname[0] != '.' || dirname[1]))
- {
- if (rl_complete_with_tilde_expansion && *users_dirname == '~')
- {
- dirlen = strlen (dirname);
- temp = (char *)xmalloc (2 + dirlen + D_NAMLEN (entry));
- strcpy (temp, dirname);
- /* Canonicalization cuts off any final slash present. We
- may need to add it back. */
- if (dirname[dirlen - 1] != '/')
- {
- temp[dirlen++] = '/';
- temp[dirlen] = '\0';
- }
- }
- else
- {
- dirlen = strlen (users_dirname);
- temp = (char *)xmalloc (2 + dirlen + D_NAMLEN (entry));
- strcpy (temp, users_dirname);
- /* Make sure that temp has a trailing slash here. */
- if (users_dirname[dirlen - 1] != '/')
- temp[dirlen++] = '/';
- }
-
- strcpy (temp + dirlen, entry->d_name);
- }
- else
- temp = savestring (entry->d_name);
-
- return (temp);
- }
-}
-
-/* An initial implementation of a menu completion function a la tcsh. The
- first time (if the last readline command was not rl_menu_complete), we
- generate the list of matches. This code is very similar to the code in
- rl_complete_internal -- there should be a way to combine the two. Then,
- for each item in the list of matches, we insert the match in an undoable
- fashion, with the appropriate character appended (this happens on the
- second and subsequent consecutive calls to rl_menu_complete). When we
- hit the end of the match list, we restore the original unmatched text,
- ring the bell, and reset the counter to zero. */
-int
-rl_menu_complete (count, ignore)
- int count, ignore;
-{
- rl_compentry_func_t *our_func;
- int matching_filenames, found_quote;
-
- static char *orig_text;
- static char **matches = (char **)0;
- static int match_list_index = 0;
- static int match_list_size = 0;
- static int orig_start, orig_end;
- static char quote_char;
- static int delimiter;
-
- /* The first time through, we generate the list of matches and set things
- up to insert them. */
- if (rl_last_func != rl_menu_complete)
- {
- /* Clean up from previous call, if any. */
- FREE (orig_text);
- if (matches)
- _rl_free_match_list (matches);
-
- match_list_index = match_list_size = 0;
- matches = (char **)NULL;
-
- /* Only the completion entry function can change these. */
- set_completion_defaults ('%');
-
- our_func = rl_completion_entry_function
- ? rl_completion_entry_function
- : rl_filename_completion_function;
-
- /* We now look backwards for the start of a filename/variable word. */
- orig_end = rl_point;
- found_quote = delimiter = 0;
- quote_char = '\0';
-
- if (rl_point)
- /* This (possibly) changes rl_point. If it returns a non-zero char,
- we know we have an open quote. */
- quote_char = _rl_find_completion_word (&found_quote, &delimiter);
-
- orig_start = rl_point;
- rl_point = orig_end;
-
- orig_text = rl_copy_text (orig_start, orig_end);
- matches = gen_completion_matches (orig_text, orig_start, orig_end,
- our_func, found_quote, quote_char);
-
- /* If we are matching filenames, the attempted completion function will
- have set rl_filename_completion_desired to a non-zero value. The basic
- rl_filename_completion_function does this. */
- matching_filenames = rl_filename_completion_desired;
-
- if (matches == 0 || postprocess_matches (&matches, matching_filenames) == 0)
- {
- rl_ding ();
- FREE (matches);
- matches = (char **)0;
- FREE (orig_text);
- orig_text = (char *)0;
- completion_changed_buffer = 0;
- return (0);
- }
-
- for (match_list_size = 0; matches[match_list_size]; match_list_size++)
- ;
- /* matches[0] is lcd if match_list_size > 1, but the circular buffer
- code below should take care of it. */
- }
-
- /* Now we have the list of matches. Replace the text between
- rl_line_buffer[orig_start] and rl_line_buffer[rl_point] with
- matches[match_list_index], and add any necessary closing char. */
-
- if (matches == 0 || match_list_size == 0)
- {
- rl_ding ();
- FREE (matches);
- matches = (char **)0;
- completion_changed_buffer = 0;
- return (0);
- }
-
- match_list_index = (match_list_index + count) % match_list_size;
- if (match_list_index < 0)
- match_list_index += match_list_size;
-
- if (match_list_index == 0 && match_list_size > 1)
- {
- rl_ding ();
- insert_match (orig_text, orig_start, MULT_MATCH, &quote_char);
- }
- else
- {
- insert_match (matches[match_list_index], orig_start, SINGLE_MATCH, &quote_char);
- append_to_match (matches[match_list_index], delimiter, quote_char,
- strcmp (orig_text, matches[match_list_index]));
- }
-
- completion_changed_buffer = 1;
- return (0);
-}
diff --git a/readline-4.3/config.h.in b/readline-4.3/config.h.in
deleted file mode 100644
index c53c2a1..0000000
--- a/readline-4.3/config.h.in
+++ /dev/null
@@ -1,200 +0,0 @@
-/* config.h.in. Maintained by hand. */
-
-/* Define if on MINIX. */
-#undef _MINIX
-
-/* Define as the return type of signal handlers (int or void). */
-#undef RETSIGTYPE
-
-/* Characteristics of the compiler. */
-#undef const
-
-#undef size_t
-
-#undef ssize_t
-
-#undef PROTOTYPES
-
-#undef __CHAR_UNSIGNED__
-
-/* Define if the `S_IS*' macros in <sys/stat.h> do not work properly. */
-#undef STAT_MACROS_BROKEN
-
-#undef VOID_SIGHANDLER
-
-/* Define if you have the isascii function. */
-#undef HAVE_ISASCII
-
-/* Define if you have the isxdigit function. */
-#undef HAVE_ISXDIGIT
-
-/* Define if you have the lstat function. */
-#undef HAVE_LSTAT
-
-/* Define if you have the mbsrtowcs function. */
-#undef HAVE_MBSRTOWCS
-
-/* Define if you have the memmove function. */
-#undef HAVE_MEMMOVE
-
-/* Define if you have the putenv function. */
-#undef HAVE_PUTENV
-
-/* Define if you have the select function. */
-#undef HAVE_SELECT
-
-/* Define if you have the setenv function. */
-#undef HAVE_SETENV
-
-/* Define if you have the setlocale function. */
-#undef HAVE_SETLOCALE
-
-/* Define if you have the strcasecmp function. */
-#undef HAVE_STRCASECMP
-
-/* Define if you have the strcoll function. */
-#undef HAVE_STRCOLL
-
-#undef STRCOLL_BROKEN
-
-/* Define if you have the strpbrk function. */
-#undef HAVE_STRPBRK
-
-/* Define if you have the tcgetattr function. */
-#undef HAVE_TCGETATTR
-
-/* Define if you have the vsnprintf function. */
-#undef HAVE_VSNPRINTF
-
-/* Define if you have the wcwidth function. */
-#undef HAVE_WCWIDTH
-
-/* Define if you have the <dirent.h> header file. */
-#undef HAVE_DIRENT_H
-
-/* Define if you have the <langinfo.h> header file. */
-#undef HAVE_LANGINFO_H
-
-/* Define if you have the <limits.h> header file. */
-#undef HAVE_LIMITS_H
-
-/* Define if you have the <locale.h> header file. */
-#undef HAVE_LOCALE_H
-
-/* Define if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
-
-/* Define if you have the <ndir.h> header file. */
-#undef HAVE_NDIR_H
-
-/* Define if you have the <stdarg.h> header file. */
-#undef HAVE_STDARG_H
-
-/* Define if you have the <stdlib.h> header file. */
-#undef HAVE_STDLIB_H
-
-/* Define if you have the <string.h> header file. */
-#undef HAVE_STRING_H
-
-/* Define if you have the <strings.h> header file. */
-#undef HAVE_STRINGS_H
-
-/* Define if you have the <sys/dir.h> header file. */
-#undef HAVE_SYS_DIR_H
-
-/* Define if you have the <sys/file.h> header file. */
-#undef HAVE_SYS_FILE_H
-
-/* Define if you have the <sys/ndir.h> header file. */
-#undef HAVE_SYS_NDIR_H
-
-/* Define if you have the <sys/pte.h> header file. */
-#undef HAVE_SYS_PTE_H
-
-/* Define if you have the <sys/ptem.h> header file. */
-#undef HAVE_SYS_PTEM_H
-
-/* Define if you have the <sys/select.h> header file. */
-#undef HAVE_SYS_SELECT_H
-
-/* Define if you have the <sys/stream.h> header file. */
-#undef HAVE_SYS_STREAM_H
-
-/* Define if you have the <termcap.h> header file. */
-#undef HAVE_TERMCAP_H
-
-/* Define if you have the <termio.h> header file. */
-#undef HAVE_TERMIO_H
-
-/* Define if you have the <termios.h> header file. */
-#undef HAVE_TERMIOS_H
-
-/* Define if you have the <unistd.h> header file. */
-#undef HAVE_UNISTD_H
-
-/* Define if you have the <varargs.h> header file. */
-#undef HAVE_VARARGS_H
-
-/* Define if you have the <wchar.h> header file. */
-#undef HAVE_WCHAR_H
-
-/* Define if you have the <varargs.h> header file. */
-#undef HAVE_WCTYPE_H
-
-#undef HAVE_MBSTATE_T
-
-/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
-#undef HAVE_LANGINFO_CODESET
-
-/* Definitions pulled in from aclocal.m4. */
-#undef VOID_SIGHANDLER
-
-#undef GWINSZ_IN_SYS_IOCTL
-
-#undef STRUCT_WINSIZE_IN_SYS_IOCTL
-
-#undef STRUCT_WINSIZE_IN_TERMIOS
-
-#undef TIOCSTAT_IN_SYS_IOCTL
-
-#undef FIONREAD_IN_SYS_IOCTL
-
-#undef SPEED_T_IN_SYS_TYPES
-
-#undef HAVE_GETPW_DECLS
-
-#undef STRUCT_DIRENT_HAS_D_INO
-
-#undef STRUCT_DIRENT_HAS_D_FILENO
-
-#undef HAVE_BSD_SIGNALS
-
-#undef HAVE_POSIX_SIGNALS
-
-#undef HAVE_USG_SIGHOLD
-
-#undef MUST_REINSTALL_SIGHANDLERS
-
-#undef HAVE_POSIX_SIGSETJMP
-
-/* modify settings or make new ones based on what autoconf tells us. */
-
-/* Ultrix botches type-ahead when switching from canonical to
- non-canonical mode, at least through version 4.3 */
-#if !defined (HAVE_TERMIOS_H) || !defined (HAVE_TCGETATTR) || defined (ultrix)
-# define TERMIOS_MISSING
-#endif
-
-#if defined (STRCOLL_BROKEN)
-# undef HAVE_STRCOLL
-#endif
-
-#if defined (__STDC__) && defined (HAVE_STDARG_H)
-# define PREFER_STDARG
-# define USE_VARARGS
-#else
-# if defined (HAVE_VARARGS_H)
-# define PREFER_VARARGS
-# define USE_VARARGS
-# endif
-#endif
diff --git a/readline-4.3/configure b/readline-4.3/configure
deleted file mode 100755
index fc3769f..0000000
--- a/readline-4.3/configure
+++ /dev/null
@@ -1,5865 +0,0 @@
-#! /bin/sh
-# From configure.in for Readline 4.3, version 2.45, from autoconf version 2.52.
-# Guess values for system-dependent variables and create Makefiles.
-# Generated by Autoconf 2.52 for readline 4.3.
-#
-# Report bugs to <bug-readline@gnu.org>.
-#
-# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
-# Free Software Foundation, Inc.
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
-
-# Be Bourne compatible
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
- emulate sh
- NULLCMD=:
-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
- set -o posix
-fi
-
-# Name of the executable.
-as_me=`echo "$0" |sed 's,.*[\\/],,'`
-
-if expr a : '\(a\)' >/dev/null 2>&1; then
- as_expr=expr
-else
- as_expr=false
-fi
-
-rm -f conf$$ conf$$.exe conf$$.file
-echo >conf$$.file
-if ln -s conf$$.file conf$$ 2>/dev/null; then
- # We could just check for DJGPP; but this test a) works b) is more generic
- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
- if test -f conf$$.exe; then
- # Don't use ln at all; we don't have any links
- as_ln_s='cp -p'
- else
- as_ln_s='ln -s'
- fi
-elif ln conf$$.file conf$$ 2>/dev/null; then
- as_ln_s=ln
-else
- as_ln_s='cp -p'
-fi
-rm -f conf$$ conf$$.exe conf$$.file
-
-as_executable_p="test -f"
-
-# Support unset when possible.
-if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
- as_unset=unset
-else
- as_unset=false
-fi
-
-# NLS nuisances.
-$as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; }
-$as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; }
-$as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; }
-$as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; }
-$as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; }
-$as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; }
-$as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; }
-$as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; }
-
-# IFS
-# We need space, tab and new line, in precisely that order.
-as_nl='
-'
-IFS=" $as_nl"
-
-# CDPATH.
-$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; }
-
-# Name of the host.
-# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
-# so uname gets run too.
-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
-
-exec 6>&1
-
-#
-# Initializations.
-#
-ac_default_prefix=/usr/local
-cross_compiling=no
-subdirs=
-MFLAGS= MAKEFLAGS=
-SHELL=${CONFIG_SHELL-/bin/sh}
-
-# Maximum number of lines to put in a shell here document.
-# This variable seems obsolete. It should probably be removed, and
-# only ac_max_sed_lines should be used.
-: ${ac_max_here_lines=38}
-
-ac_unique_file="readline.h"
-# Factoring default headers for most tests.
-ac_includes_default="\
-#include <stdio.h>
-#if HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#if HAVE_SYS_STAT_H
-# include <sys/stat.h>
-#endif
-#if STDC_HEADERS
-# include <stdlib.h>
-# include <stddef.h>
-#else
-# if HAVE_STDLIB_H
-# include <stdlib.h>
-# endif
-#endif
-#if HAVE_STRING_H
-# if !STDC_HEADERS && HAVE_MEMORY_H
-# include <memory.h>
-# endif
-# include <string.h>
-#endif
-#if HAVE_STRINGS_H
-# include <strings.h>
-#endif
-#if HAVE_INTTYPES_H
-# include <inttypes.h>
-#else
-# if HAVE_STDINT_H
-# include <stdint.h>
-# endif
-#endif
-#if HAVE_UNISTD_H
-# include <unistd.h>
-#endif"
-
-# Initialize some variables set by options.
-ac_init_help=
-ac_init_version=false
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-cache_file=/dev/null
-exec_prefix=NONE
-no_create=
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-verbose=
-x_includes=NONE
-x_libraries=NONE
-
-# Installation directory options.
-# These are left unexpanded so users can "make install exec_prefix=/foo"
-# and all the variables that are supposed to be based on exec_prefix
-# by default will actually change.
-# Use braces instead of parens because sh, perl, etc. also accept them.
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datadir='${prefix}/share'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-libdir='${exec_prefix}/lib'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-infodir='${prefix}/info'
-mandir='${prefix}/man'
-
-# Identity of this package.
-PACKAGE_NAME='readline'
-PACKAGE_TARNAME='readline'
-PACKAGE_VERSION='4.3'
-PACKAGE_STRING='readline 4.3'
-PACKAGE_BUGREPORT='bug-readline@gnu.org'
-
-ac_prev=
-for ac_option
-do
- # If the previous option needs an argument, assign it.
- if test -n "$ac_prev"; then
- eval "$ac_prev=\$ac_option"
- ac_prev=
- continue
- fi
-
- ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
-
- # Accept the important Cygnus configure options, so we can diagnose typos.
-
- case $ac_option in
-
- -bindir | --bindir | --bindi | --bind | --bin | --bi)
- ac_prev=bindir ;;
- -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
- bindir=$ac_optarg ;;
-
- -build | --build | --buil | --bui | --bu)
- ac_prev=build_alias ;;
- -build=* | --build=* | --buil=* | --bui=* | --bu=*)
- build_alias=$ac_optarg ;;
-
- -cache-file | --cache-file | --cache-fil | --cache-fi \
- | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
- ac_prev=cache_file ;;
- -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
- | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
- cache_file=$ac_optarg ;;
-
- --config-cache | -C)
- cache_file=config.cache ;;
-
- -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
- ac_prev=datadir ;;
- -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
- | --da=*)
- datadir=$ac_optarg ;;
-
- -disable-* | --disable-*)
- ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid feature name: $ac_feature" >&2
- { (exit 1); exit 1; }; }
- ac_feature=`echo $ac_feature | sed 's/-/_/g'`
- eval "enable_$ac_feature=no" ;;
-
- -enable-* | --enable-*)
- ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid feature name: $ac_feature" >&2
- { (exit 1); exit 1; }; }
- ac_feature=`echo $ac_feature | sed 's/-/_/g'`
- case $ac_option in
- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
- *) ac_optarg=yes ;;
- esac
- eval "enable_$ac_feature='$ac_optarg'" ;;
-
- -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
- | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
- | --exec | --exe | --ex)
- ac_prev=exec_prefix ;;
- -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
- | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
- | --exec=* | --exe=* | --ex=*)
- exec_prefix=$ac_optarg ;;
-
- -gas | --gas | --ga | --g)
- # Obsolete; use --with-gas.
- with_gas=yes ;;
-
- -help | --help | --hel | --he | -h)
- ac_init_help=long ;;
- -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
- ac_init_help=recursive ;;
- -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
- ac_init_help=short ;;
-
- -host | --host | --hos | --ho)
- ac_prev=host_alias ;;
- -host=* | --host=* | --hos=* | --ho=*)
- host_alias=$ac_optarg ;;
-
- -includedir | --includedir | --includedi | --included | --include \
- | --includ | --inclu | --incl | --inc)
- ac_prev=includedir ;;
- -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
- | --includ=* | --inclu=* | --incl=* | --inc=*)
- includedir=$ac_optarg ;;
-
- -infodir | --infodir | --infodi | --infod | --info | --inf)
- ac_prev=infodir ;;
- -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
- infodir=$ac_optarg ;;
-
- -libdir | --libdir | --libdi | --libd)
- ac_prev=libdir ;;
- -libdir=* | --libdir=* | --libdi=* | --libd=*)
- libdir=$ac_optarg ;;
-
- -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
- | --libexe | --libex | --libe)
- ac_prev=libexecdir ;;
- -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
- | --libexe=* | --libex=* | --libe=*)
- libexecdir=$ac_optarg ;;
-
- -localstatedir | --localstatedir | --localstatedi | --localstated \
- | --localstate | --localstat | --localsta | --localst \
- | --locals | --local | --loca | --loc | --lo)
- ac_prev=localstatedir ;;
- -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
- | --localstate=* | --localstat=* | --localsta=* | --localst=* \
- | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
- localstatedir=$ac_optarg ;;
-
- -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
- ac_prev=mandir ;;
- -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
- mandir=$ac_optarg ;;
-
- -nfp | --nfp | --nf)
- # Obsolete; use --without-fp.
- with_fp=no ;;
-
- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
- | --no-cr | --no-c)
- no_create=yes ;;
-
- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
- no_recursion=yes ;;
-
- -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
- | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
- | --oldin | --oldi | --old | --ol | --o)
- ac_prev=oldincludedir ;;
- -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
- | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
- | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
- oldincludedir=$ac_optarg ;;
-
- -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
- ac_prev=prefix ;;
- -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
- prefix=$ac_optarg ;;
-
- -program-prefix | --program-prefix | --program-prefi | --program-pref \
- | --program-pre | --program-pr | --program-p)
- ac_prev=program_prefix ;;
- -program-prefix=* | --program-prefix=* | --program-prefi=* \
- | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
- program_prefix=$ac_optarg ;;
-
- -program-suffix | --program-suffix | --program-suffi | --program-suff \
- | --program-suf | --program-su | --program-s)
- ac_prev=program_suffix ;;
- -program-suffix=* | --program-suffix=* | --program-suffi=* \
- | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
- program_suffix=$ac_optarg ;;
-
- -program-transform-name | --program-transform-name \
- | --program-transform-nam | --program-transform-na \
- | --program-transform-n | --program-transform- \
- | --program-transform | --program-transfor \
- | --program-transfo | --program-transf \
- | --program-trans | --program-tran \
- | --progr-tra | --program-tr | --program-t)
- ac_prev=program_transform_name ;;
- -program-transform-name=* | --program-transform-name=* \
- | --program-transform-nam=* | --program-transform-na=* \
- | --program-transform-n=* | --program-transform-=* \
- | --program-transform=* | --program-transfor=* \
- | --program-transfo=* | --program-transf=* \
- | --program-trans=* | --program-tran=* \
- | --progr-tra=* | --program-tr=* | --program-t=*)
- program_transform_name=$ac_optarg ;;
-
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil)
- silent=yes ;;
-
- -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
- ac_prev=sbindir ;;
- -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
- | --sbi=* | --sb=*)
- sbindir=$ac_optarg ;;
-
- -sharedstatedir | --sharedstatedir | --sharedstatedi \
- | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
- | --sharedst | --shareds | --shared | --share | --shar \
- | --sha | --sh)
- ac_prev=sharedstatedir ;;
- -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
- | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
- | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
- | --sha=* | --sh=*)
- sharedstatedir=$ac_optarg ;;
-
- -site | --site | --sit)
- ac_prev=site ;;
- -site=* | --site=* | --sit=*)
- site=$ac_optarg ;;
-
- -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
- ac_prev=srcdir ;;
- -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
- srcdir=$ac_optarg ;;
-
- -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
- | --syscon | --sysco | --sysc | --sys | --sy)
- ac_prev=sysconfdir ;;
- -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
- | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
- sysconfdir=$ac_optarg ;;
-
- -target | --target | --targe | --targ | --tar | --ta | --t)
- ac_prev=target_alias ;;
- -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
- target_alias=$ac_optarg ;;
-
- -v | -verbose | --verbose | --verbos | --verbo | --verb)
- verbose=yes ;;
-
- -version | --version | --versio | --versi | --vers | -V)
- ac_init_version=: ;;
-
- -with-* | --with-*)
- ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid package name: $ac_package" >&2
- { (exit 1); exit 1; }; }
- ac_package=`echo $ac_package| sed 's/-/_/g'`
- case $ac_option in
- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
- *) ac_optarg=yes ;;
- esac
- eval "with_$ac_package='$ac_optarg'" ;;
-
- -without-* | --without-*)
- ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid package name: $ac_package" >&2
- { (exit 1); exit 1; }; }
- ac_package=`echo $ac_package | sed 's/-/_/g'`
- eval "with_$ac_package=no" ;;
-
- --x)
- # Obsolete; use --with-x.
- with_x=yes ;;
-
- -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
- | --x-incl | --x-inc | --x-in | --x-i)
- ac_prev=x_includes ;;
- -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
- | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
- x_includes=$ac_optarg ;;
-
- -x-libraries | --x-libraries | --x-librarie | --x-librari \
- | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
- ac_prev=x_libraries ;;
- -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
- | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
- x_libraries=$ac_optarg ;;
-
- -*) { echo "$as_me: error: unrecognized option: $ac_option
-Try \`$0 --help' for more information." >&2
- { (exit 1); exit 1; }; }
- ;;
-
- *=*)
- ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
- # Reject names that are not valid shell variable names.
- expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
- { (exit 1); exit 1; }; }
- ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
- eval "$ac_envvar='$ac_optarg'"
- export $ac_envvar ;;
-
- *)
- # FIXME: should be removed in autoconf 3.0.
- echo "$as_me: WARNING: you should use --build, --host, --target" >&2
- expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
- echo "$as_me: WARNING: invalid host type: $ac_option" >&2
- : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
- ;;
-
- esac
-done
-
-if test -n "$ac_prev"; then
- ac_option=--`echo $ac_prev | sed 's/_/-/g'`
- { echo "$as_me: error: missing argument to $ac_option" >&2
- { (exit 1); exit 1; }; }
-fi
-
-# Be sure to have absolute paths.
-for ac_var in exec_prefix prefix
-do
- eval ac_val=$`echo $ac_var`
- case $ac_val in
- [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
- *) { echo "$as_me: error: expected an absolute path for --$ac_var: $ac_val" >&2
- { (exit 1); exit 1; }; };;
- esac
-done
-
-# Be sure to have absolute paths.
-for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
- localstatedir libdir includedir oldincludedir infodir mandir
-do
- eval ac_val=$`echo $ac_var`
- case $ac_val in
- [\\/$]* | ?:[\\/]* ) ;;
- *) { echo "$as_me: error: expected an absolute path for --$ac_var: $ac_val" >&2
- { (exit 1); exit 1; }; };;
- esac
-done
-
-# There might be people who depend on the old broken behavior: `$host'
-# used to hold the argument of --host etc.
-build=$build_alias
-host=$host_alias
-target=$target_alias
-
-# FIXME: should be removed in autoconf 3.0.
-if test "x$host_alias" != x; then
- if test "x$build_alias" = x; then
- cross_compiling=maybe
- echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
- If a cross compiler is detected then cross compile mode will be used." >&2
- elif test "x$build_alias" != "x$host_alias"; then
- cross_compiling=yes
- fi
-fi
-
-ac_tool_prefix=
-test -n "$host_alias" && ac_tool_prefix=$host_alias-
-
-test "$silent" = yes && exec 6>/dev/null
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
- ac_srcdir_defaulted=yes
- # Try the directory containing this script, then its parent.
- ac_prog=$0
- ac_confdir=`echo "$ac_prog" | sed 's%[\\/][^\\/][^\\/]*$%%'`
- test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
- srcdir=$ac_confdir
- if test ! -r $srcdir/$ac_unique_file; then
- srcdir=..
- fi
-else
- ac_srcdir_defaulted=no
-fi
-if test ! -r $srcdir/$ac_unique_file; then
- if test "$ac_srcdir_defaulted" = yes; then
- { echo "$as_me: error: cannot find sources in $ac_confdir or .." >&2
- { (exit 1); exit 1; }; }
- else
- { echo "$as_me: error: cannot find sources in $srcdir" >&2
- { (exit 1); exit 1; }; }
- fi
-fi
-srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
-ac_env_build_alias_set=${build_alias+set}
-ac_env_build_alias_value=$build_alias
-ac_cv_env_build_alias_set=${build_alias+set}
-ac_cv_env_build_alias_value=$build_alias
-ac_env_host_alias_set=${host_alias+set}
-ac_env_host_alias_value=$host_alias
-ac_cv_env_host_alias_set=${host_alias+set}
-ac_cv_env_host_alias_value=$host_alias
-ac_env_target_alias_set=${target_alias+set}
-ac_env_target_alias_value=$target_alias
-ac_cv_env_target_alias_set=${target_alias+set}
-ac_cv_env_target_alias_value=$target_alias
-ac_env_CC_set=${CC+set}
-ac_env_CC_value=$CC
-ac_cv_env_CC_set=${CC+set}
-ac_cv_env_CC_value=$CC
-ac_env_CFLAGS_set=${CFLAGS+set}
-ac_env_CFLAGS_value=$CFLAGS
-ac_cv_env_CFLAGS_set=${CFLAGS+set}
-ac_cv_env_CFLAGS_value=$CFLAGS
-ac_env_LDFLAGS_set=${LDFLAGS+set}
-ac_env_LDFLAGS_value=$LDFLAGS
-ac_cv_env_LDFLAGS_set=${LDFLAGS+set}
-ac_cv_env_LDFLAGS_value=$LDFLAGS
-ac_env_CPPFLAGS_set=${CPPFLAGS+set}
-ac_env_CPPFLAGS_value=$CPPFLAGS
-ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}
-ac_cv_env_CPPFLAGS_value=$CPPFLAGS
-ac_env_CPP_set=${CPP+set}
-ac_env_CPP_value=$CPP
-ac_cv_env_CPP_set=${CPP+set}
-ac_cv_env_CPP_value=$CPP
-
-#
-# Report the --help message.
-#
-if test "$ac_init_help" = "long"; then
- # Omit some internal or obsolete options to make the list less imposing.
- # This message is too long to be a string in the A/UX 3.1 sh.
- cat <<EOF
-\`configure' configures readline 4.3 to adapt to many kinds of systems.
-
-Usage: $0 [OPTION]... [VAR=VALUE]...
-
-To assign environment variables (e.g., CC, CFLAGS...), specify them as
-VAR=VALUE. See below for descriptions of some of the useful variables.
-
-Defaults for the options are specified in brackets.
-
-Configuration:
- -h, --help display this help and exit
- --help=short display options specific to this package
- --help=recursive display the short help of all the included packages
- -V, --version display version information and exit
- -q, --quiet, --silent do not print \`checking...' messages
- --cache-file=FILE cache test results in FILE [disabled]
- -C, --config-cache alias for \`--cache-file=config.cache'
- -n, --no-create do not create output files
- --srcdir=DIR find the sources in DIR [configure dir or \`..']
-
-EOF
-
- cat <<EOF
-Installation directories:
- --prefix=PREFIX install architecture-independent files in PREFIX
- [$ac_default_prefix]
- --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
- [PREFIX]
-
-By default, \`make install' will install all the files in
-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
-an installation prefix other than \`$ac_default_prefix' using \`--prefix',
-for instance \`--prefix=\$HOME'.
-
-For better control, use the options below.
-
-Fine tuning of the installation directories:
- --bindir=DIR user executables [EPREFIX/bin]
- --sbindir=DIR system admin executables [EPREFIX/sbin]
- --libexecdir=DIR program executables [EPREFIX/libexec]
- --datadir=DIR read-only architecture-independent data [PREFIX/share]
- --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
- --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
- --localstatedir=DIR modifiable single-machine data [PREFIX/var]
- --libdir=DIR object code libraries [EPREFIX/lib]
- --includedir=DIR C header files [PREFIX/include]
- --oldincludedir=DIR C header files for non-gcc [/usr/include]
- --infodir=DIR info documentation [PREFIX/info]
- --mandir=DIR man documentation [PREFIX/man]
-EOF
-
- cat <<\EOF
-
-System types:
- --build=BUILD configure for building on BUILD [guessed]
- --host=HOST build programs to run on HOST [BUILD]
-EOF
-fi
-
-if test -n "$ac_init_help"; then
- case $ac_init_help in
- short | recursive ) echo "Configuration of readline 4.3:";;
- esac
- cat <<\EOF
-
-Optional Features:
- --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
- --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
- --enable-shared build shared libraries [default=YES]
- --enable-static build static libraries [default=YES]
-
-Optional Packages:
- --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
- --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
- --with-curses use the curses library instead of the termcap
- library
-
-Some influential environment variables:
- CC C compiler command
- CFLAGS C compiler flags
- LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
- nonstandard directory <lib dir>
- CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have
- headers in a nonstandard directory <include dir>
- CPP C preprocessor
-
-Use these variables to override the choices made by `configure' or to help
-it to find libraries and programs with nonstandard names/locations.
-
-Report bugs to <bug-readline@gnu.org>.
-EOF
-fi
-
-if test "$ac_init_help" = "recursive"; then
- # If there are subdirs, report their specific --help.
- ac_popdir=`pwd`
- for ac_subdir in : $ac_subdirs_all; do test "x$ac_subdir" = x: && continue
- cd $ac_subdir
- # A "../" for each directory in /$ac_subdir.
- ac_dots=`echo $ac_subdir |
- sed 's,^\./,,;s,[^/]$,&/,;s,[^/]*/,../,g'`
-
- case $srcdir in
- .) # No --srcdir option. We are building in place.
- ac_sub_srcdir=$srcdir ;;
- [\\/]* | ?:[\\/]* ) # Absolute path.
- ac_sub_srcdir=$srcdir/$ac_subdir ;;
- *) # Relative path.
- ac_sub_srcdir=$ac_dots$srcdir/$ac_subdir ;;
- esac
-
- # Check for guested configure; otherwise get Cygnus style configure.
- if test -f $ac_sub_srcdir/configure.gnu; then
- echo
- $SHELL $ac_sub_srcdir/configure.gnu --help=recursive
- elif test -f $ac_sub_srcdir/configure; then
- echo
- $SHELL $ac_sub_srcdir/configure --help=recursive
- elif test -f $ac_sub_srcdir/configure.ac ||
- test -f $ac_sub_srcdir/configure.in; then
- echo
- $ac_configure --help
- else
- echo "$as_me: WARNING: no configuration information is in $ac_subdir" >&2
- fi
- cd $ac_popdir
- done
-fi
-
-test -n "$ac_init_help" && exit 0
-if $ac_init_version; then
- cat <<\EOF
-readline configure 4.3
-generated by GNU Autoconf 2.52
-
-Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
-Free Software Foundation, Inc.
-This configure script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it.
-EOF
- exit 0
-fi
-exec 5>config.log
-cat >&5 <<EOF
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-
-It was created by readline $as_me 4.3, which was
-generated by GNU Autoconf 2.52. Invocation command line was
-
- $ $0 $@
-
-EOF
-{
-cat <<_ASUNAME
-## ---------- ##
-## Platform. ##
-## ---------- ##
-
-hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
-/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
-
-/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
-/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
-hostinfo = `(hostinfo) 2>/dev/null || echo unknown`
-/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
-/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
-/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
-
-PATH = $PATH
-
-_ASUNAME
-} >&5
-
-cat >&5 <<EOF
-## ------------ ##
-## Core tests. ##
-## ------------ ##
-
-EOF
-
-# Keep a trace of the command line.
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Also quote any args containing shell meta-characters.
-ac_configure_args=
-ac_sep=
-for ac_arg
-do
- case $ac_arg in
- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
- | --no-cr | --no-c) ;;
- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
- ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"`
- ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
- ac_sep=" " ;;
- *) ac_configure_args="$ac_configure_args$ac_sep$ac_arg"
- ac_sep=" " ;;
- esac
- # Get rid of the leading space.
-done
-
-# When interrupted or exit'd, cleanup temporary files, and complete
-# config.log. We remove comments because anyway the quotes in there
-# would cause problems or look ugly.
-trap 'exit_status=$?
- # Save into config.log some information that might help in debugging.
- echo >&5
- echo "## ----------------- ##" >&5
- echo "## Cache variables. ##" >&5
- echo "## ----------------- ##" >&5
- echo >&5
- # The following way of writing the cache mishandles newlines in values,
-{
- (set) 2>&1 |
- case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
- *ac_space=\ *)
- sed -n \
- "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
- ;;
- *)
- sed -n \
- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
- ;;
- esac;
-} >&5
- sed "/^$/d" confdefs.h >conftest.log
- if test -s conftest.log; then
- echo >&5
- echo "## ------------ ##" >&5
- echo "## confdefs.h. ##" >&5
- echo "## ------------ ##" >&5
- echo >&5
- cat conftest.log >&5
- fi
- (echo; echo) >&5
- test "$ac_signal" != 0 &&
- echo "$as_me: caught signal $ac_signal" >&5
- echo "$as_me: exit $exit_status" >&5
- rm -rf conftest* confdefs* core core.* *.core conf$$* $ac_clean_files &&
- exit $exit_status
- ' 0
-for ac_signal in 1 2 13 15; do
- trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
-done
-ac_signal=0
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -rf conftest* confdefs.h
-# AIX cpp loses on an empty file, so make sure it contains at least a newline.
-echo >confdefs.h
-
-# Let the site file select an alternate cache file if it wants to.
-# Prefer explicitly selected file to automatically selected ones.
-if test -z "$CONFIG_SITE"; then
- if test "x$prefix" != xNONE; then
- CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
- else
- CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
- fi
-fi
-for ac_site_file in $CONFIG_SITE; do
- if test -r "$ac_site_file"; then
- { echo "$as_me:879: loading site script $ac_site_file" >&5
-echo "$as_me: loading site script $ac_site_file" >&6;}
- cat "$ac_site_file" >&5
- . "$ac_site_file"
- fi
-done
-
-if test -r "$cache_file"; then
- # Some versions of bash will fail to source /dev/null (special
- # files actually), so we avoid doing that.
- if test -f "$cache_file"; then
- { echo "$as_me:890: loading cache $cache_file" >&5
-echo "$as_me: loading cache $cache_file" >&6;}
- case $cache_file in
- [\\/]* | ?:[\\/]* ) . $cache_file;;
- *) . ./$cache_file;;
- esac
- fi
-else
- { echo "$as_me:898: creating cache $cache_file" >&5
-echo "$as_me: creating cache $cache_file" >&6;}
- >$cache_file
-fi
-
-# Check that the precious variables saved in the cache have kept the same
-# value.
-ac_cache_corrupted=false
-for ac_var in `(set) 2>&1 |
- sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
- eval ac_old_set=\$ac_cv_env_${ac_var}_set
- eval ac_new_set=\$ac_env_${ac_var}_set
- eval ac_old_val="\$ac_cv_env_${ac_var}_value"
- eval ac_new_val="\$ac_env_${ac_var}_value"
- case $ac_old_set,$ac_new_set in
- set,)
- { echo "$as_me:914: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
- ac_cache_corrupted=: ;;
- ,set)
- { echo "$as_me:918: error: \`$ac_var' was not set in the previous run" >&5
-echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
- ac_cache_corrupted=: ;;
- ,);;
- *)
- if test "x$ac_old_val" != "x$ac_new_val"; then
- { echo "$as_me:924: error: \`$ac_var' has changed since the previous run:" >&5
-echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
- { echo "$as_me:926: former value: $ac_old_val" >&5
-echo "$as_me: former value: $ac_old_val" >&2;}
- { echo "$as_me:928: current value: $ac_new_val" >&5
-echo "$as_me: current value: $ac_new_val" >&2;}
- ac_cache_corrupted=:
- fi;;
- esac
- # Pass precious variables to config.status. It doesn't matter if
- # we pass some twice (in addition to the command line arguments).
- if test "$ac_new_set" = set; then
- case $ac_new_val in
- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
- ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"`
- ac_configure_args="$ac_configure_args '$ac_arg'"
- ;;
- *) ac_configure_args="$ac_configure_args $ac_var=$ac_new_val"
- ;;
- esac
- fi
-done
-if $ac_cache_corrupted; then
- { echo "$as_me:947: error: changes in the environment can compromise the build" >&5
-echo "$as_me: error: changes in the environment can compromise the build" >&2;}
- { { echo "$as_me:949: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
-echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
- { (exit 1); exit 1; }; }
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
- *c*,-n*) ECHO_N= ECHO_C='
-' ECHO_T=' ' ;;
- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
- *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
-esac
-echo "#! $SHELL" >conftest.sh
-echo "exit 0" >>conftest.sh
-chmod +x conftest.sh
-if { (echo "$as_me:969: PATH=\".;.\"; conftest.sh") >&5
- (PATH=".;."; conftest.sh) 2>&5
- ac_status=$?
- echo "$as_me:972: \$? = $ac_status" >&5
- (exit $ac_status); }; then
- ac_path_separator=';'
-else
- ac_path_separator=:
-fi
-PATH_SEPARATOR="$ac_path_separator"
-rm -f conftest.sh
-
-ac_aux_dir=
-for ac_dir in ./support $srcdir/./support; do
- if test -f $ac_dir/install-sh; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install-sh -c"
- break
- elif test -f $ac_dir/install.sh; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install.sh -c"
- break
- elif test -f $ac_dir/shtool; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/shtool install -c"
- break
- fi
-done
-if test -z "$ac_aux_dir"; then
- { { echo "$as_me:998: error: cannot find install-sh or install.sh in ./support $srcdir/./support" >&5
-echo "$as_me: error: cannot find install-sh or install.sh in ./support $srcdir/./support" >&2;}
- { (exit 1); exit 1; }; }
-fi
-ac_config_guess="$SHELL $ac_aux_dir/config.guess"
-ac_config_sub="$SHELL $ac_aux_dir/config.sub"
-ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
-
-ac_config_headers="$ac_config_headers config.h"
-
-LIBVERSION=4.3
-
-# Make sure we can run config.sub.
-$ac_config_sub sun4 >/dev/null 2>&1 ||
- { { echo "$as_me:1012: error: cannot run $ac_config_sub" >&5
-echo "$as_me: error: cannot run $ac_config_sub" >&2;}
- { (exit 1); exit 1; }; }
-
-echo "$as_me:1016: checking build system type" >&5
-echo $ECHO_N "checking build system type... $ECHO_C" >&6
-if test "${ac_cv_build+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_cv_build_alias=$build_alias
-test -z "$ac_cv_build_alias" &&
- ac_cv_build_alias=`$ac_config_guess`
-test -z "$ac_cv_build_alias" &&
- { { echo "$as_me:1025: error: cannot guess build type; you must specify one" >&5
-echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
- { (exit 1); exit 1; }; }
-ac_cv_build=`$ac_config_sub $ac_cv_build_alias` ||
- { { echo "$as_me:1029: error: $ac_config_sub $ac_cv_build_alias failed." >&5
-echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed." >&2;}
- { (exit 1); exit 1; }; }
-
-fi
-echo "$as_me:1034: result: $ac_cv_build" >&5
-echo "${ECHO_T}$ac_cv_build" >&6
-build=$ac_cv_build
-build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-
-echo "$as_me:1041: checking host system type" >&5
-echo $ECHO_N "checking host system type... $ECHO_C" >&6
-if test "${ac_cv_host+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_cv_host_alias=$host_alias
-test -z "$ac_cv_host_alias" &&
- ac_cv_host_alias=$ac_cv_build_alias
-ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
- { { echo "$as_me:1050: error: $ac_config_sub $ac_cv_host_alias failed" >&5
-echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
- { (exit 1); exit 1; }; }
-
-fi
-echo "$as_me:1055: result: $ac_cv_host" >&5
-echo "${ECHO_T}$ac_cv_host" >&6
-host=$ac_cv_host
-host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-
-opt_curses=no
-
-# Check whether --with-curses or --without-curses was given.
-if test "${with_curses+set}" = set; then
- withval="$with_curses"
- opt_curses=$withval
-fi;
-
-if test "$opt_curses" = "yes"; then
- prefer_curses=yes
-fi
-
-opt_static_libs=yes
-opt_shared_libs=yes
-
-# Check whether --enable-shared or --disable-shared was given.
-if test "${enable_shared+set}" = set; then
- enableval="$enable_shared"
- opt_shared_libs=$enableval
-fi;
-# Check whether --enable-static or --disable-static was given.
-if test "${enable_static+set}" = set; then
- enableval="$enable_static"
- opt_static_libs=$enableval
-fi;
-
-echo ""
-echo "Beginning configuration for readline-$LIBVERSION for ${host_cpu}-${host_vendor}-${host_os}"
-echo ""
-
-# We want these before the checks, so the checks can modify their values.
-test -z "$CFLAGS" && CFLAGS=-g auto_cflags=1
-
-echo "$as_me:1095: checking whether ${MAKE-make} sets \${MAKE}" >&5
-echo $ECHO_N "checking whether ${MAKE-make} sets \${MAKE}... $ECHO_C" >&6
-set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'`
-if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.make <<\EOF
-all:
- @echo 'ac_maketemp="${MAKE}"'
-EOF
-# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
-eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=`
-if test -n "$ac_maketemp"; then
- eval ac_cv_prog_make_${ac_make}_set=yes
-else
- eval ac_cv_prog_make_${ac_make}_set=no
-fi
-rm -f conftest.make
-fi
-if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
- echo "$as_me:1115: result: yes" >&5
-echo "${ECHO_T}yes" >&6
- SET_MAKE=
-else
- echo "$as_me:1119: result: no" >&5
-echo "${ECHO_T}no" >&6
- SET_MAKE="MAKE=${MAKE-make}"
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}gcc; ac_word=$2
-echo "$as_me:1132: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
- ac_save_IFS=$IFS; IFS=$ac_path_separator
-ac_dummy="$PATH"
-for ac_dir in $ac_dummy; do
- IFS=$ac_save_IFS
- test -z "$ac_dir" && ac_dir=.
- $as_executable_p "$ac_dir/$ac_word" || continue
-ac_cv_prog_CC="${ac_tool_prefix}gcc"
-echo "$as_me:1147: found $ac_dir/$ac_word" >&5
-break
-done
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- echo "$as_me:1155: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6
-else
- echo "$as_me:1158: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-fi
-if test -z "$ac_cv_prog_CC"; then
- ac_ct_CC=$CC
- # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-echo "$as_me:1167: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$ac_ct_CC"; then
- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
- ac_save_IFS=$IFS; IFS=$ac_path_separator
-ac_dummy="$PATH"
-for ac_dir in $ac_dummy; do
- IFS=$ac_save_IFS
- test -z "$ac_dir" && ac_dir=.
- $as_executable_p "$ac_dir/$ac_word" || continue
-ac_cv_prog_ac_ct_CC="gcc"
-echo "$as_me:1182: found $ac_dir/$ac_word" >&5
-break
-done
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
- echo "$as_me:1190: result: $ac_ct_CC" >&5
-echo "${ECHO_T}$ac_ct_CC" >&6
-else
- echo "$as_me:1193: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- CC=$ac_ct_CC
-else
- CC="$ac_cv_prog_CC"
-fi
-
-if test -z "$CC"; then
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}cc; ac_word=$2
-echo "$as_me:1206: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
- ac_save_IFS=$IFS; IFS=$ac_path_separator
-ac_dummy="$PATH"
-for ac_dir in $ac_dummy; do
- IFS=$ac_save_IFS
- test -z "$ac_dir" && ac_dir=.
- $as_executable_p "$ac_dir/$ac_word" || continue
-ac_cv_prog_CC="${ac_tool_prefix}cc"
-echo "$as_me:1221: found $ac_dir/$ac_word" >&5
-break
-done
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- echo "$as_me:1229: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6
-else
- echo "$as_me:1232: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-fi
-if test -z "$ac_cv_prog_CC"; then
- ac_ct_CC=$CC
- # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-echo "$as_me:1241: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$ac_ct_CC"; then
- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
- ac_save_IFS=$IFS; IFS=$ac_path_separator
-ac_dummy="$PATH"
-for ac_dir in $ac_dummy; do
- IFS=$ac_save_IFS
- test -z "$ac_dir" && ac_dir=.
- $as_executable_p "$ac_dir/$ac_word" || continue
-ac_cv_prog_ac_ct_CC="cc"
-echo "$as_me:1256: found $ac_dir/$ac_word" >&5
-break
-done
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
- echo "$as_me:1264: result: $ac_ct_CC" >&5
-echo "${ECHO_T}$ac_ct_CC" >&6
-else
- echo "$as_me:1267: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- CC=$ac_ct_CC
-else
- CC="$ac_cv_prog_CC"
-fi
-
-fi
-if test -z "$CC"; then
- # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-echo "$as_me:1280: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
- ac_prog_rejected=no
- ac_save_IFS=$IFS; IFS=$ac_path_separator
-ac_dummy="$PATH"
-for ac_dir in $ac_dummy; do
- IFS=$ac_save_IFS
- test -z "$ac_dir" && ac_dir=.
- $as_executable_p "$ac_dir/$ac_word" || continue
-if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
- ac_prog_rejected=yes
- continue
-fi
-ac_cv_prog_CC="cc"
-echo "$as_me:1300: found $ac_dir/$ac_word" >&5
-break
-done
-
-if test $ac_prog_rejected = yes; then
- # We found a bogon in the path, so make sure we never use it.
- set dummy $ac_cv_prog_CC
- shift
- if test $# != 0; then
- # We chose a different compiler from the bogus one.
- # However, it has the same basename, so the bogon will be chosen
- # first if we set CC to just the basename; use the full file name.
- shift
- set dummy "$ac_dir/$ac_word" ${1+"$@"}
- shift
- ac_cv_prog_CC="$@"
- fi
-fi
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- echo "$as_me:1322: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6
-else
- echo "$as_me:1325: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-fi
-if test -z "$CC"; then
- if test -n "$ac_tool_prefix"; then
- for ac_prog in cl
- do
- # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-echo "$as_me:1336: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
- ac_save_IFS=$IFS; IFS=$ac_path_separator
-ac_dummy="$PATH"
-for ac_dir in $ac_dummy; do
- IFS=$ac_save_IFS
- test -z "$ac_dir" && ac_dir=.
- $as_executable_p "$ac_dir/$ac_word" || continue
-ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-echo "$as_me:1351: found $ac_dir/$ac_word" >&5
-break
-done
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- echo "$as_me:1359: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6
-else
- echo "$as_me:1362: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- test -n "$CC" && break
- done
-fi
-if test -z "$CC"; then
- ac_ct_CC=$CC
- for ac_prog in cl
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo "$as_me:1375: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$ac_ct_CC"; then
- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
- ac_save_IFS=$IFS; IFS=$ac_path_separator
-ac_dummy="$PATH"
-for ac_dir in $ac_dummy; do
- IFS=$ac_save_IFS
- test -z "$ac_dir" && ac_dir=.
- $as_executable_p "$ac_dir/$ac_word" || continue
-ac_cv_prog_ac_ct_CC="$ac_prog"
-echo "$as_me:1390: found $ac_dir/$ac_word" >&5
-break
-done
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
- echo "$as_me:1398: result: $ac_ct_CC" >&5
-echo "${ECHO_T}$ac_ct_CC" >&6
-else
- echo "$as_me:1401: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- test -n "$ac_ct_CC" && break
-done
-
- CC=$ac_ct_CC
-fi
-
-fi
-
-test -z "$CC" && { { echo "$as_me:1413: error: no acceptable cc found in \$PATH" >&5
-echo "$as_me: error: no acceptable cc found in \$PATH" >&2;}
- { (exit 1); exit 1; }; }
-
-# Provide some information about the compiler.
-echo "$as_me:1418:" \
- "checking for C compiler version" >&5
-ac_compiler=`set X $ac_compile; echo $2`
-{ (eval echo "$as_me:1421: \"$ac_compiler --version </dev/null >&5\"") >&5
- (eval $ac_compiler --version </dev/null >&5) 2>&5
- ac_status=$?
- echo "$as_me:1424: \$? = $ac_status" >&5
- (exit $ac_status); }
-{ (eval echo "$as_me:1426: \"$ac_compiler -v </dev/null >&5\"") >&5
- (eval $ac_compiler -v </dev/null >&5) 2>&5
- ac_status=$?
- echo "$as_me:1429: \$? = $ac_status" >&5
- (exit $ac_status); }
-{ (eval echo "$as_me:1431: \"$ac_compiler -V </dev/null >&5\"") >&5
- (eval $ac_compiler -V </dev/null >&5) 2>&5
- ac_status=$?
- echo "$as_me:1434: \$? = $ac_status" >&5
- (exit $ac_status); }
-
-cat >conftest.$ac_ext <<_ACEOF
-#line 1438 "configure"
-#include "confdefs.h"
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files a.out a.exe"
-# Try to create an executable without -o first, disregard a.out.
-# It will help us diagnose broken compilers, and finding out an intuition
-# of exeext.
-echo "$as_me:1454: checking for C compiler default output" >&5
-echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6
-ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
-if { (eval echo "$as_me:1457: \"$ac_link_default\"") >&5
- (eval $ac_link_default) 2>&5
- ac_status=$?
- echo "$as_me:1460: \$? = $ac_status" >&5
- (exit $ac_status); }; then
- # Find the output, starting from the most likely. This scheme is
-# not robust to junk in `.', hence go to wildcards (a.*) only as a last
-# resort.
-for ac_file in `ls a.exe conftest.exe 2>/dev/null;
- ls a.out conftest 2>/dev/null;
- ls a.* conftest.* 2>/dev/null`; do
- case $ac_file in
- *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;;
- a.out ) # We found the default executable, but exeext='' is most
- # certainly right.
- break;;
- *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
- # FIXME: I believe we export ac_cv_exeext for Libtool --akim.
- export ac_cv_exeext
- break;;
- * ) break;;
- esac
-done
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-{ { echo "$as_me:1483: error: C compiler cannot create executables" >&5
-echo "$as_me: error: C compiler cannot create executables" >&2;}
- { (exit 77); exit 77; }; }
-fi
-
-ac_exeext=$ac_cv_exeext
-echo "$as_me:1489: result: $ac_file" >&5
-echo "${ECHO_T}$ac_file" >&6
-
-# Check the compiler produces executables we can run. If not, either
-# the compiler is broken, or we cross compile.
-echo "$as_me:1494: checking whether the C compiler works" >&5
-echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6
-# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
-# If not cross compiling, check that we can run a simple program.
-if test "$cross_compiling" != yes; then
- if { ac_try='./$ac_file'
- { (eval echo "$as_me:1500: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:1503: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cross_compiling=no
- else
- if test "$cross_compiling" = maybe; then
- cross_compiling=yes
- else
- { { echo "$as_me:1510: error: cannot run C compiled programs.
-If you meant to cross compile, use \`--host'." >&5
-echo "$as_me: error: cannot run C compiled programs.
-If you meant to cross compile, use \`--host'." >&2;}
- { (exit 1); exit 1; }; }
- fi
- fi
-fi
-echo "$as_me:1518: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-
-rm -f a.out a.exe conftest$ac_cv_exeext
-ac_clean_files=$ac_clean_files_save
-# Check the compiler produces executables we can run. If not, either
-# the compiler is broken, or we cross compile.
-echo "$as_me:1525: checking whether we are cross compiling" >&5
-echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
-echo "$as_me:1527: result: $cross_compiling" >&5
-echo "${ECHO_T}$cross_compiling" >&6
-
-echo "$as_me:1530: checking for executable suffix" >&5
-echo $ECHO_N "checking for executable suffix... $ECHO_C" >&6
-if { (eval echo "$as_me:1532: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:1535: \$? = $ac_status" >&5
- (exit $ac_status); }; then
- # If both `conftest.exe' and `conftest' are `present' (well, observable)
-# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
-# work properly (i.e., refer to `conftest.exe'), while it won't with
-# `rm'.
-for ac_file in `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do
- case $ac_file in
- *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;;
- *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
- export ac_cv_exeext
- break;;
- * ) break;;
- esac
-done
-else
- { { echo "$as_me:1551: error: cannot compute EXEEXT: cannot compile and link" >&5
-echo "$as_me: error: cannot compute EXEEXT: cannot compile and link" >&2;}
- { (exit 1); exit 1; }; }
-fi
-
-rm -f conftest$ac_cv_exeext
-echo "$as_me:1557: result: $ac_cv_exeext" >&5
-echo "${ECHO_T}$ac_cv_exeext" >&6
-
-rm -f conftest.$ac_ext
-EXEEXT=$ac_cv_exeext
-ac_exeext=$EXEEXT
-echo "$as_me:1563: checking for object suffix" >&5
-echo $ECHO_N "checking for object suffix... $ECHO_C" >&6
-if test "${ac_cv_objext+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 1569 "configure"
-#include "confdefs.h"
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.o conftest.obj
-if { (eval echo "$as_me:1581: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:1584: \$? = $ac_status" >&5
- (exit $ac_status); }; then
- for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
- case $ac_file in
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb ) ;;
- *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
- break;;
- esac
-done
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-{ { echo "$as_me:1596: error: cannot compute OBJEXT: cannot compile" >&5
-echo "$as_me: error: cannot compute OBJEXT: cannot compile" >&2;}
- { (exit 1); exit 1; }; }
-fi
-
-rm -f conftest.$ac_cv_objext conftest.$ac_ext
-fi
-echo "$as_me:1603: result: $ac_cv_objext" >&5
-echo "${ECHO_T}$ac_cv_objext" >&6
-OBJEXT=$ac_cv_objext
-ac_objext=$OBJEXT
-echo "$as_me:1607: checking whether we are using the GNU C compiler" >&5
-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
-if test "${ac_cv_c_compiler_gnu+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 1613 "configure"
-#include "confdefs.h"
-
-int
-main ()
-{
-#ifndef __GNUC__
- choke me
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:1628: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:1631: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:1634: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:1637: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_compiler_gnu=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_compiler_gnu=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
-fi
-echo "$as_me:1649: result: $ac_cv_c_compiler_gnu" >&5
-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
-GCC=`test $ac_compiler_gnu = yes && echo yes`
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-CFLAGS="-g"
-echo "$as_me:1655: checking whether $CC accepts -g" >&5
-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
-if test "${ac_cv_prog_cc_g+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 1661 "configure"
-#include "confdefs.h"
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:1673: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:1676: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:1679: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:1682: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_prog_cc_g=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_prog_cc_g=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:1692: result: $ac_cv_prog_cc_g" >&5
-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
-if test "$ac_test_CFLAGS" = set; then
- CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
- if test "$GCC" = yes; then
- CFLAGS="-g -O2"
- else
- CFLAGS="-g"
- fi
-else
- if test "$GCC" = yes; then
- CFLAGS="-O2"
- else
- CFLAGS=
- fi
-fi
-# Some people use a C++ compiler to compile C. Since we use `exit',
-# in C++ we need to declare it. In case someone uses the same compiler
-# for both compiling C and C++ we need to have the C++ compiler decide
-# the declaration of exit, since it's the most demanding environment.
-cat >conftest.$ac_ext <<_ACEOF
-#ifndef __cplusplus
- choke me
-#endif
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:1719: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:1722: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:1725: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:1728: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- for ac_declaration in \
- ''\
- '#include <stdlib.h>' \
- 'extern "C" void std::exit (int) throw (); using std::exit;' \
- 'extern "C" void std::exit (int); using std::exit;' \
- 'extern "C" void exit (int) throw ();' \
- 'extern "C" void exit (int);' \
- 'void exit (int);'
-do
- cat >conftest.$ac_ext <<_ACEOF
-#line 1740 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-$ac_declaration
-int
-main ()
-{
-exit (42);
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:1753: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:1756: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:1759: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:1762: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- :
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-continue
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
- cat >conftest.$ac_ext <<_ACEOF
-#line 1772 "configure"
-#include "confdefs.h"
-$ac_declaration
-int
-main ()
-{
-exit (42);
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:1784: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:1787: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:1790: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:1793: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- break
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-done
-rm -f conftest*
-if test -n "$ac_declaration"; then
- echo '#ifdef __cplusplus' >>confdefs.h
- echo $ac_declaration >>confdefs.h
- echo '#endif' >>confdefs.h
-fi
-
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-echo "$as_me:1825: checking how to run the C preprocessor" >&5
-echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
- CPP=
-fi
-if test -z "$CPP"; then
- if test "${ac_cv_prog_CPP+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- # Double quotes because CPP needs to be expanded
- for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
- do
- ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
- # Use a header file that comes with gcc, so configuring glibc
- # with a fresh cross-compiler works.
- # On the NeXT, cc -E runs the code through the compiler's parser,
- # not just through cpp. "Syntax error" is here to catch this case.
- cat >conftest.$ac_ext <<_ACEOF
-#line 1846 "configure"
-#include "confdefs.h"
-#include <assert.h>
- Syntax error
-_ACEOF
-if { (eval echo "$as_me:1851: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:1857: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- :
-else
- echo "$as_me: failed program was:" >&5
- cat conftest.$ac_ext >&5
- # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.$ac_ext
-
- # OK, works on sane cases. Now check whether non-existent headers
- # can be detected and how.
- cat >conftest.$ac_ext <<_ACEOF
-#line 1880 "configure"
-#include "confdefs.h"
-#include <ac_nonexistent.h>
-_ACEOF
-if { (eval echo "$as_me:1884: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:1890: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- # Broken: success on invalid input.
-continue
-else
- echo "$as_me: failed program was:" >&5
- cat conftest.$ac_ext >&5
- # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then
- break
-fi
-
- done
- ac_cv_prog_CPP=$CPP
-
-fi
- CPP=$ac_cv_prog_CPP
-else
- ac_cv_prog_CPP=$CPP
-fi
-echo "$as_me:1927: result: $CPP" >&5
-echo "${ECHO_T}$CPP" >&6
-ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
- # Use a header file that comes with gcc, so configuring glibc
- # with a fresh cross-compiler works.
- # On the NeXT, cc -E runs the code through the compiler's parser,
- # not just through cpp. "Syntax error" is here to catch this case.
- cat >conftest.$ac_ext <<_ACEOF
-#line 1937 "configure"
-#include "confdefs.h"
-#include <assert.h>
- Syntax error
-_ACEOF
-if { (eval echo "$as_me:1942: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:1948: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- :
-else
- echo "$as_me: failed program was:" >&5
- cat conftest.$ac_ext >&5
- # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.$ac_ext
-
- # OK, works on sane cases. Now check whether non-existent headers
- # can be detected and how.
- cat >conftest.$ac_ext <<_ACEOF
-#line 1971 "configure"
-#include "confdefs.h"
-#include <ac_nonexistent.h>
-_ACEOF
-if { (eval echo "$as_me:1975: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:1981: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- # Broken: success on invalid input.
-continue
-else
- echo "$as_me: failed program was:" >&5
- cat conftest.$ac_ext >&5
- # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then
- :
-else
- { { echo "$as_me:2009: error: C preprocessor \"$CPP\" fails sanity check" >&5
-echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;}
- { (exit 1); exit 1; }; }
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-echo "$as_me:2020: checking for minix/config.h" >&5
-echo $ECHO_N "checking for minix/config.h... $ECHO_C" >&6
-if test "${ac_cv_header_minix_config_h+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 2026 "configure"
-#include "confdefs.h"
-#include <minix/config.h>
-_ACEOF
-if { (eval echo "$as_me:2030: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:2036: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- ac_cv_header_minix_config_h=yes
-else
- echo "$as_me: failed program was:" >&5
- cat conftest.$ac_ext >&5
- ac_cv_header_minix_config_h=no
-fi
-rm -f conftest.err conftest.$ac_ext
-fi
-echo "$as_me:2055: result: $ac_cv_header_minix_config_h" >&5
-echo "${ECHO_T}$ac_cv_header_minix_config_h" >&6
-if test $ac_cv_header_minix_config_h = yes; then
- MINIX=yes
-else
- MINIX=
-fi
-
-if test "$MINIX" = yes; then
-
-cat >>confdefs.h <<\EOF
-#define _POSIX_SOURCE 1
-EOF
-
-cat >>confdefs.h <<\EOF
-#define _POSIX_1_SOURCE 2
-EOF
-
-cat >>confdefs.h <<\EOF
-#define _MINIX 1
-EOF
-
-fi
-
-# If we're using gcc and the user hasn't specified CFLAGS, add -O to CFLAGS.
-test -n "$GCC" && test -n "$auto_cflags" && CFLAGS="$CFLAGS -O"
-
-if test $ac_cv_c_compiler_gnu = yes; then
- echo "$as_me:2083: checking whether $CC needs -traditional" >&5
-echo $ECHO_N "checking whether $CC needs -traditional... $ECHO_C" >&6
-if test "${ac_cv_prog_gcc_traditional+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_pattern="Autoconf.*'x'"
- cat >conftest.$ac_ext <<_ACEOF
-#line 2090 "configure"
-#include "confdefs.h"
-#include <sgtty.h>
-Autoconf TIOCGETP
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- egrep "$ac_pattern" >/dev/null 2>&1; then
- ac_cv_prog_gcc_traditional=yes
-else
- ac_cv_prog_gcc_traditional=no
-fi
-rm -f conftest*
-
- if test $ac_cv_prog_gcc_traditional = no; then
- cat >conftest.$ac_ext <<_ACEOF
-#line 2105 "configure"
-#include "confdefs.h"
-#include <termio.h>
-Autoconf TCGETA
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- egrep "$ac_pattern" >/dev/null 2>&1; then
- ac_cv_prog_gcc_traditional=yes
-fi
-rm -f conftest*
-
- fi
-fi
-echo "$as_me:2118: result: $ac_cv_prog_gcc_traditional" >&5
-echo "${ECHO_T}$ac_cv_prog_gcc_traditional" >&6
- if test $ac_cv_prog_gcc_traditional = yes; then
- CC="$CC -traditional"
- fi
-fi
-
-# Find a good install program. We prefer a C program (faster),
-# so one script is as good as another. But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AmigaOS /C/install, which installs bootblocks on floppy discs
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# ./install, which can be erroneously created by make from ./install.sh.
-echo "$as_me:2137: checking for a BSD compatible install" >&5
-echo $ECHO_N "checking for a BSD compatible install... $ECHO_C" >&6
-if test -z "$INSTALL"; then
-if test "${ac_cv_path_install+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_save_IFS=$IFS; IFS=$ac_path_separator
- for ac_dir in $PATH; do
- IFS=$ac_save_IFS
- # Account for people who put trailing slashes in PATH elements.
- case $ac_dir/ in
- / | ./ | .// | /cC/* \
- | /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* \
- | /usr/ucb/* ) ;;
- *)
- # OSF1 and SCO ODT 3.0 have their own names for install.
- # Don't use installbsd from OSF since it installs stuff as root
- # by default.
- for ac_prog in ginstall scoinst install; do
- if $as_executable_p "$ac_dir/$ac_prog"; then
- if test $ac_prog = install &&
- grep dspmsg "$ac_dir/$ac_prog" >/dev/null 2>&1; then
- # AIX install. It has an incompatible calling convention.
- :
- elif test $ac_prog = install &&
- grep pwplus "$ac_dir/$ac_prog" >/dev/null 2>&1; then
- # program-specific install script used by HP pwplus--don't use.
- :
- else
- ac_cv_path_install="$ac_dir/$ac_prog -c"
- break 2
- fi
- fi
- done
- ;;
- esac
- done
-
-fi
- if test "${ac_cv_path_install+set}" = set; then
- INSTALL=$ac_cv_path_install
- else
- # As a last resort, use the slow shell script. We don't cache a
- # path for INSTALL within a source directory, because that will
- # break other packages using the cache if that directory is
- # removed, or if the path is relative.
- INSTALL=$ac_install_sh
- fi
-fi
-echo "$as_me:2186: result: $INSTALL" >&5
-echo "${ECHO_T}$INSTALL" >&6
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-# Extract the first word of "ar", so it can be a program name with args.
-set dummy ar; ac_word=$2
-echo "$as_me:2199: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_AR+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$AR"; then
- ac_cv_prog_AR="$AR" # Let the user override the test.
-else
- ac_save_IFS=$IFS; IFS=$ac_path_separator
-ac_dummy="$PATH"
-for ac_dir in $ac_dummy; do
- IFS=$ac_save_IFS
- test -z "$ac_dir" && ac_dir=.
- $as_executable_p "$ac_dir/$ac_word" || continue
-ac_cv_prog_AR=""
-echo "$as_me:2214: found $ac_dir/$ac_word" >&5
-break
-done
-
- test -z "$ac_cv_prog_AR" && ac_cv_prog_AR="ar"
-fi
-fi
-AR=$ac_cv_prog_AR
-if test -n "$AR"; then
- echo "$as_me:2223: result: $AR" >&5
-echo "${ECHO_T}$AR" >&6
-else
- echo "$as_me:2226: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-test -n "$ARFLAGS" || ARFLAGS="cr"
-if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-echo "$as_me:2234: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_RANLIB+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$RANLIB"; then
- ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-else
- ac_save_IFS=$IFS; IFS=$ac_path_separator
-ac_dummy="$PATH"
-for ac_dir in $ac_dummy; do
- IFS=$ac_save_IFS
- test -z "$ac_dir" && ac_dir=.
- $as_executable_p "$ac_dir/$ac_word" || continue
-ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
-echo "$as_me:2249: found $ac_dir/$ac_word" >&5
-break
-done
-
-fi
-fi
-RANLIB=$ac_cv_prog_RANLIB
-if test -n "$RANLIB"; then
- echo "$as_me:2257: result: $RANLIB" >&5
-echo "${ECHO_T}$RANLIB" >&6
-else
- echo "$as_me:2260: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-fi
-if test -z "$ac_cv_prog_RANLIB"; then
- ac_ct_RANLIB=$RANLIB
- # Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
-echo "$as_me:2269: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$ac_ct_RANLIB"; then
- ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
-else
- ac_save_IFS=$IFS; IFS=$ac_path_separator
-ac_dummy="$PATH"
-for ac_dir in $ac_dummy; do
- IFS=$ac_save_IFS
- test -z "$ac_dir" && ac_dir=.
- $as_executable_p "$ac_dir/$ac_word" || continue
-ac_cv_prog_ac_ct_RANLIB="ranlib"
-echo "$as_me:2284: found $ac_dir/$ac_word" >&5
-break
-done
-
- test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
-fi
-fi
-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
-if test -n "$ac_ct_RANLIB"; then
- echo "$as_me:2293: result: $ac_ct_RANLIB" >&5
-echo "${ECHO_T}$ac_ct_RANLIB" >&6
-else
- echo "$as_me:2296: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- RANLIB=$ac_ct_RANLIB
-else
- RANLIB="$ac_cv_prog_RANLIB"
-fi
-
-MAKE_SHELL=/bin/sh
-
-echo "$as_me:2307: checking for $CC option to accept ANSI C" >&5
-echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
-if test "${ac_cv_prog_cc_stdc+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_cv_prog_cc_stdc=no
-ac_save_CC=$CC
-cat >conftest.$ac_ext <<_ACEOF
-#line 2315 "configure"
-#include "confdefs.h"
-#include <stdarg.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
- char **p;
- int i;
-{
- return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
- char *s;
- va_list v;
- va_start (v,p);
- s = g (p, va_arg (v,int));
- va_end (v);
- return s;
-}
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
- ;
- return 0;
-}
-_ACEOF
-# Don't try gcc -ansi; that turns off useful extensions and
-# breaks some systems' header files.
-# AIX -qlanglvl=ansi
-# Ultrix and OSF/1 -std1
-# HP-UX 10.20 and later -Ae
-# HP-UX older versions -Aa -D_HPUX_SOURCE
-# SVR4 -Xc -D__EXTENSIONS__
-for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
- CC="$ac_save_CC $ac_arg"
- rm -f conftest.$ac_objext
-if { (eval echo "$as_me:2364: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:2367: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:2370: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:2373: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_prog_cc_stdc=$ac_arg
-break
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-fi
-rm -f conftest.$ac_objext
-done
-rm -f conftest.$ac_ext conftest.$ac_objext
-CC=$ac_save_CC
-
-fi
-
-case "x$ac_cv_prog_cc_stdc" in
- x|xno)
- echo "$as_me:2390: result: none needed" >&5
-echo "${ECHO_T}none needed" >&6 ;;
- *)
- echo "$as_me:2393: result: $ac_cv_prog_cc_stdc" >&5
-echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
- CC="$CC $ac_cv_prog_cc_stdc" ;;
-esac
-
-echo "$as_me:2398: checking for an ANSI C-conforming const" >&5
-echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6
-if test "${ac_cv_c_const+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 2404 "configure"
-#include "confdefs.h"
-
-int
-main ()
-{
-/* FIXME: Include the comments suggested by Paul. */
-#ifndef __cplusplus
- /* Ultrix mips cc rejects this. */
- typedef int charset[2];
- const charset x;
- /* SunOS 4.1.1 cc rejects this. */
- char const *const *ccp;
- char **p;
- /* NEC SVR4.0.2 mips cc rejects this. */
- struct point {int x, y;};
- static struct point const zero = {0,0};
- /* AIX XL C 1.02.0.0 rejects this.
- It does not let you subtract one const X* pointer from another in
- an arm of an if-expression whose if-part is not a constant
- expression */
- const char *g = "string";
- ccp = &g + (g ? g-g : 0);
- /* HPUX 7.0 cc rejects these. */
- ++ccp;
- p = (char**) ccp;
- ccp = (char const *const *) p;
- { /* SCO 3.2v4 cc rejects this. */
- char *t;
- char const *s = 0 ? (char *) 0 : (char const *) 0;
-
- *t++ = 0;
- }
- { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */
- int x[] = {25, 17};
- const int *foo = &x[0];
- ++foo;
- }
- { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
- typedef const int *iptr;
- iptr p = 0;
- ++p;
- }
- { /* AIX XL C 1.02.0.0 rejects this saying
- "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
- struct s { int j; const int *ap[3]; };
- struct s *b; b->j = 5;
- }
- { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
- const int foo = 10;
- }
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:2462: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:2465: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:2468: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:2471: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_c_const=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_c_const=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:2481: result: $ac_cv_c_const" >&5
-echo "${ECHO_T}$ac_cv_c_const" >&6
-if test $ac_cv_c_const = no; then
-
-cat >>confdefs.h <<\EOF
-#define const
-EOF
-
-fi
-
-echo "$as_me:2491: checking for function prototypes" >&5
-echo $ECHO_N "checking for function prototypes... $ECHO_C" >&6
-if test "$ac_cv_prog_cc_stdc" != no; then
- echo "$as_me:2494: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-
-cat >>confdefs.h <<\EOF
-#define PROTOTYPES 1
-EOF
-
-else
- echo "$as_me:2502: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-echo "$as_me:2506: checking for ANSI C header files" >&5
-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
-if test "${ac_cv_header_stdc+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 2512 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-_ACEOF
-if { (eval echo "$as_me:2520: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:2526: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- ac_cv_header_stdc=yes
-else
- echo "$as_me: failed program was:" >&5
- cat conftest.$ac_ext >&5
- ac_cv_header_stdc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
- # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
- cat >conftest.$ac_ext <<_ACEOF
-#line 2548 "configure"
-#include "confdefs.h"
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- egrep "memchr" >/dev/null 2>&1; then
- :
-else
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
- cat >conftest.$ac_ext <<_ACEOF
-#line 2566 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- egrep "free" >/dev/null 2>&1; then
- :
-else
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
- # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
- if test "$cross_compiling" = yes; then
- :
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 2587 "configure"
-#include "confdefs.h"
-#include <ctype.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \
- || ('j' <= (c) && (c) <= 'r') \
- || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
- int i;
- for (i = 0; i < 256; i++)
- if (XOR (islower (i), ISLOWER (i))
- || toupper (i) != TOUPPER (i))
- exit(2);
- exit (0);
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:2613: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:2616: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:2618: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:2621: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- :
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_header_stdc=no
-fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-fi
-echo "$as_me:2634: result: $ac_cv_header_stdc" >&5
-echo "${ECHO_T}$ac_cv_header_stdc" >&6
-if test $ac_cv_header_stdc = yes; then
-
-cat >>confdefs.h <<\EOF
-#define STDC_HEADERS 1
-EOF
-
-fi
-
-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
- inttypes.h stdint.h unistd.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:2650: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 2656 "configure"
-#include "confdefs.h"
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:2662: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:2665: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:2668: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:2671: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_Header=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_Header=no"
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:2681: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-EOF
-
-fi
-done
-
-echo "$as_me:2691: checking whether char is unsigned" >&5
-echo $ECHO_N "checking whether char is unsigned... $ECHO_C" >&6
-if test "${ac_cv_c_char_unsigned+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 2697 "configure"
-#include "confdefs.h"
-$ac_includes_default
-int
-main ()
-{
-int _array_ [1 - 2 * !(((char) -1) < 0)]
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:2709: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:2712: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:2715: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:2718: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_c_char_unsigned=no
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_c_char_unsigned=yes
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:2728: result: $ac_cv_c_char_unsigned" >&5
-echo "${ECHO_T}$ac_cv_c_char_unsigned" >&6
-if test $ac_cv_c_char_unsigned = yes && test "$GCC" != yes; then
- cat >>confdefs.h <<\EOF
-#define __CHAR_UNSIGNED__ 1
-EOF
-
-fi
-
-echo "$as_me:2737: checking return type of signal handlers" >&5
-echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6
-if test "${ac_cv_type_signal+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 2743 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <signal.h>
-#ifdef signal
-# undef signal
-#endif
-#ifdef __cplusplus
-extern "C" void (*signal (int, void (*)(int)))(int);
-#else
-void (*signal ()) ();
-#endif
-
-int
-main ()
-{
-int i;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:2765: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:2768: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:2771: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:2774: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_type_signal=void
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_type_signal=int
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:2784: result: $ac_cv_type_signal" >&5
-echo "${ECHO_T}$ac_cv_type_signal" >&6
-
-cat >>confdefs.h <<EOF
-#define RETSIGTYPE $ac_cv_type_signal
-EOF
-
-echo "$as_me:2791: checking for size_t" >&5
-echo $ECHO_N "checking for size_t... $ECHO_C" >&6
-if test "${ac_cv_type_size_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 2797 "configure"
-#include "confdefs.h"
-$ac_includes_default
-int
-main ()
-{
-if ((size_t *) 0)
- return 0;
-if (sizeof (size_t))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:2812: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:2815: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:2818: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:2821: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_type_size_t=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_type_size_t=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:2831: result: $ac_cv_type_size_t" >&5
-echo "${ECHO_T}$ac_cv_type_size_t" >&6
-if test $ac_cv_type_size_t = yes; then
- :
-else
-
-cat >>confdefs.h <<EOF
-#define size_t unsigned
-EOF
-
-fi
-
-echo "$as_me:2843: checking for ssize_t" >&5
-echo $ECHO_N "checking for ssize_t... $ECHO_C" >&6
-if test "${ac_cv_type_ssize_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 2849 "configure"
-#include "confdefs.h"
-$ac_includes_default
-int
-main ()
-{
-if ((ssize_t *) 0)
- return 0;
-if (sizeof (ssize_t))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:2864: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:2867: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:2870: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:2873: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_type_ssize_t=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_type_ssize_t=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:2883: result: $ac_cv_type_ssize_t" >&5
-echo "${ECHO_T}$ac_cv_type_ssize_t" >&6
-if test $ac_cv_type_ssize_t = yes; then
- :
-else
-
-cat >>confdefs.h <<EOF
-#define ssize_t int
-EOF
-
-fi
-
-echo "$as_me:2895: checking whether stat file-mode macros are broken" >&5
-echo $ECHO_N "checking whether stat file-mode macros are broken... $ECHO_C" >&6
-if test "${ac_cv_header_stat_broken+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 2901 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <sys/stat.h>
-
-#if defined(S_ISBLK) && defined(S_IFDIR)
-# if S_ISBLK (S_IFDIR)
-You lose.
-# endif
-#endif
-
-#if defined(S_ISBLK) && defined(S_IFCHR)
-# if S_ISBLK (S_IFCHR)
-You lose.
-# endif
-#endif
-
-#if defined(S_ISLNK) && defined(S_IFREG)
-# if S_ISLNK (S_IFREG)
-You lose.
-# endif
-#endif
-
-#if defined(S_ISSOCK) && defined(S_IFREG)
-# if S_ISSOCK (S_IFREG)
-You lose.
-# endif
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- egrep "You lose" >/dev/null 2>&1; then
- ac_cv_header_stat_broken=yes
-else
- ac_cv_header_stat_broken=no
-fi
-rm -f conftest*
-
-fi
-echo "$as_me:2940: result: $ac_cv_header_stat_broken" >&5
-echo "${ECHO_T}$ac_cv_header_stat_broken" >&6
-if test $ac_cv_header_stat_broken = yes; then
-
-cat >>confdefs.h <<\EOF
-#define STAT_MACROS_BROKEN 1
-EOF
-
-fi
-
-ac_header_dirent=no
-for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do
- as_ac_Header=`echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
-echo "$as_me:2953: checking for $ac_hdr that defines DIR" >&5
-echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 2959 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <$ac_hdr>
-
-int
-main ()
-{
-if ((DIR *) 0)
-return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:2974: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:2977: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:2980: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:2983: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_Header=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_Header=no"
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:2993: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_hdr" | $as_tr_cpp` 1
-EOF
-
-ac_header_dirent=$ac_hdr; break
-fi
-
-done
-# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
-if test $ac_header_dirent = dirent.h; then
- echo "$as_me:3006: checking for opendir in -ldir" >&5
-echo $ECHO_N "checking for opendir in -ldir... $ECHO_C" >&6
-if test "${ac_cv_lib_dir_opendir+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldir $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 3014 "configure"
-#include "confdefs.h"
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char opendir ();
-int
-main ()
-{
-opendir ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:3033: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:3036: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:3039: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3042: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_dir_opendir=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_dir_opendir=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:3053: result: $ac_cv_lib_dir_opendir" >&5
-echo "${ECHO_T}$ac_cv_lib_dir_opendir" >&6
-if test $ac_cv_lib_dir_opendir = yes; then
- LIBS="$LIBS -ldir"
-fi
-
-else
- echo "$as_me:3060: checking for opendir in -lx" >&5
-echo $ECHO_N "checking for opendir in -lx... $ECHO_C" >&6
-if test "${ac_cv_lib_x_opendir+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lx $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 3068 "configure"
-#include "confdefs.h"
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char opendir ();
-int
-main ()
-{
-opendir ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:3087: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:3090: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:3093: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3096: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_x_opendir=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_x_opendir=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:3107: result: $ac_cv_lib_x_opendir" >&5
-echo "${ECHO_T}$ac_cv_lib_x_opendir" >&6
-if test $ac_cv_lib_x_opendir = yes; then
- LIBS="$LIBS -lx"
-fi
-
-fi
-
-for ac_func in lstat memmove putenv select setenv setlocale \
- strcasecmp strpbrk tcgetattr vsnprintf isascii isxdigit
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:3119: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3125 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
-
-int
-main ()
-{
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-f = $ac_func;
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:3156: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:3159: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:3162: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3165: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:3175: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-EOF
-
-fi
-done
-
-echo "$as_me:3185: checking for working strcoll" >&5
-echo $ECHO_N "checking for working strcoll... $ECHO_C" >&6
-if test "${ac_cv_func_strcoll_works+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test "$cross_compiling" = yes; then
- ac_cv_func_strcoll_works=no
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3194 "configure"
-#include "confdefs.h"
-$ac_includes_default
-int
-main ()
-{
-exit (strcoll ("abc", "def") >= 0 ||
- strcoll ("ABC", "DEF") >= 0 ||
- strcoll ("123", "456") >= 0)
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:3208: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:3211: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:3213: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3216: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_func_strcoll_works=yes
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_func_strcoll_works=no
-fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-echo "$as_me:3228: result: $ac_cv_func_strcoll_works" >&5
-echo "${ECHO_T}$ac_cv_func_strcoll_works" >&6
-if test $ac_cv_func_strcoll_works = yes; then
-
-cat >>confdefs.h <<\EOF
-#define HAVE_STRCOLL 1
-EOF
-
-fi
-
-for ac_header in unistd.h stdlib.h varargs.h stdarg.h string.h strings.h \
- limits.h sys/ptem.h sys/pte.h sys/stream.h sys/select.h \
- termcap.h termios.h termio.h sys/file.h locale.h memory.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:3243: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3249 "configure"
-#include "confdefs.h"
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:3253: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:3259: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- eval "$as_ac_Header=yes"
-else
- echo "$as_me: failed program was:" >&5
- cat conftest.$ac_ext >&5
- eval "$as_ac_Header=no"
-fi
-rm -f conftest.err conftest.$ac_ext
-fi
-echo "$as_me:3278: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-EOF
-
-fi
-done
-
-echo "$as_me:3288: checking for type of signal functions" >&5
-echo $ECHO_N "checking for type of signal functions... $ECHO_C" >&6
-if test "${bash_cv_signal_vintage+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
- cat >conftest.$ac_ext <<_ACEOF
-#line 3295 "configure"
-#include "confdefs.h"
-#include <signal.h>
-int
-main ()
-{
-
- sigset_t ss;
- struct sigaction sa;
- sigemptyset(&ss); sigsuspend(&ss);
- sigaction(SIGINT, &sa, (struct sigaction *) 0);
- sigprocmask(SIG_BLOCK, &ss, (sigset_t *) 0);
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:3313: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:3316: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:3319: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3322: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- bash_cv_signal_vintage=posix
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-
- cat >conftest.$ac_ext <<_ACEOF
-#line 3330 "configure"
-#include "confdefs.h"
-#include <signal.h>
-int
-main ()
-{
-
- int mask = sigmask(SIGINT);
- sigsetmask(mask); sigblock(mask); sigpause(mask);
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:3345: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:3348: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:3351: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3354: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- bash_cv_signal_vintage=4.2bsd
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-
- cat >conftest.$ac_ext <<_ACEOF
-#line 3362 "configure"
-#include "confdefs.h"
-
- #include <signal.h>
- RETSIGTYPE foo() { }
-int
-main ()
-{
-
- int mask = sigmask(SIGINT);
- sigset(SIGINT, foo); sigrelse(SIGINT);
- sighold(SIGINT); sigpause(SIGINT);
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:3380: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:3383: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:3386: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3389: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- bash_cv_signal_vintage=svr3
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-bash_cv_signal_vintage=v7
-
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-echo "$as_me:3408: result: $bash_cv_signal_vintage" >&5
-echo "${ECHO_T}$bash_cv_signal_vintage" >&6
-if test "$bash_cv_signal_vintage" = posix; then
-cat >>confdefs.h <<\EOF
-#define HAVE_POSIX_SIGNALS 1
-EOF
-
-elif test "$bash_cv_signal_vintage" = "4.2bsd"; then
-cat >>confdefs.h <<\EOF
-#define HAVE_BSD_SIGNALS 1
-EOF
-
-elif test "$bash_cv_signal_vintage" = svr3; then
-cat >>confdefs.h <<\EOF
-#define HAVE_USG_SIGHOLD 1
-EOF
-
-fi
-
-echo "$as_me:3427: checking if signal handlers must be reinstalled when invoked" >&5
-echo $ECHO_N "checking if signal handlers must be reinstalled when invoked... $ECHO_C" >&6
-if test "${bash_cv_must_reinstall_sighandlers+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test "$cross_compiling" = yes; then
- { echo "$as_me:3433: WARNING: cannot check signal handling if cross compiling -- defaulting to no" >&5
-echo "$as_me: WARNING: cannot check signal handling if cross compiling -- defaulting to no" >&2;}
- bash_cv_must_reinstall_sighandlers=no
-
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3439 "configure"
-#include "confdefs.h"
-
-#include <signal.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-
-typedef RETSIGTYPE sigfunc();
-
-int nsigint;
-
-#ifdef HAVE_POSIX_SIGNALS
-sigfunc *
-set_signal_handler(sig, handler)
- int sig;
- sigfunc *handler;
-{
- struct sigaction act, oact;
- act.sa_handler = handler;
- act.sa_flags = 0;
- sigemptyset (&act.sa_mask);
- sigemptyset (&oact.sa_mask);
- sigaction (sig, &act, &oact);
- return (oact.sa_handler);
-}
-#else
-#define set_signal_handler(s, h) signal(s, h)
-#endif
-
-RETSIGTYPE
-sigint(s)
-int s;
-{
- nsigint++;
-}
-
-main()
-{
- nsigint = 0;
- set_signal_handler(SIGINT, sigint);
- kill((int)getpid(), SIGINT);
- kill((int)getpid(), SIGINT);
- exit(nsigint != 2);
-}
-
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:3487: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:3490: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:3492: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3495: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- bash_cv_must_reinstall_sighandlers=no
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-bash_cv_must_reinstall_sighandlers=yes
-fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-
-echo "$as_me:3508: result: $bash_cv_must_reinstall_sighandlers" >&5
-echo "${ECHO_T}$bash_cv_must_reinstall_sighandlers" >&6
-if test $bash_cv_must_reinstall_sighandlers = yes; then
-cat >>confdefs.h <<\EOF
-#define MUST_REINSTALL_SIGHANDLERS 1
-EOF
-
-fi
-
-echo "$as_me:3517: checking for presence of POSIX-style sigsetjmp/siglongjmp" >&5
-echo $ECHO_N "checking for presence of POSIX-style sigsetjmp/siglongjmp... $ECHO_C" >&6
-if test "${bash_cv_func_sigsetjmp+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test "$cross_compiling" = yes; then
- { echo "$as_me:3523: WARNING: cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing" >&5
-echo "$as_me: WARNING: cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing" >&2;}
- bash_cv_func_sigsetjmp=missing
-
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3529 "configure"
-#include "confdefs.h"
-
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#include <sys/types.h>
-#include <signal.h>
-#include <setjmp.h>
-
-main()
-{
-#if !defined (_POSIX_VERSION) || !defined (HAVE_POSIX_SIGNALS)
-exit (1);
-#else
-
-int code;
-sigset_t set, oset;
-sigjmp_buf xx;
-
-/* get the mask */
-sigemptyset(&set);
-sigemptyset(&oset);
-sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &set);
-sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &oset);
-
-/* save it */
-code = sigsetjmp(xx, 1);
-if (code)
- exit(0); /* could get sigmask and compare to oset here. */
-
-/* change it */
-sigaddset(&set, SIGINT);
-sigprocmask(SIG_BLOCK, &set, (sigset_t *)NULL);
-
-/* and siglongjmp */
-siglongjmp(xx, 10);
-exit(1);
-#endif
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:3571: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:3574: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:3576: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3579: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- bash_cv_func_sigsetjmp=present
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-bash_cv_func_sigsetjmp=missing
-fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-
-echo "$as_me:3592: result: $bash_cv_func_sigsetjmp" >&5
-echo "${ECHO_T}$bash_cv_func_sigsetjmp" >&6
-if test $bash_cv_func_sigsetjmp = present; then
-cat >>confdefs.h <<\EOF
-#define HAVE_POSIX_SIGSETJMP 1
-EOF
-
-fi
-
-echo "$as_me:3601: checking for lstat" >&5
-echo $ECHO_N "checking for lstat... $ECHO_C" >&6
-if test "${bash_cv_func_lstat+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3607 "configure"
-#include "confdefs.h"
-
-#include <sys/types.h>
-#include <sys/stat.h>
-
-int
-main ()
-{
- lstat(".",(struct stat *)0);
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:3622: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:3625: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:3628: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3631: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- bash_cv_func_lstat=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-bash_cv_func_lstat=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:3641: result: $bash_cv_func_lstat" >&5
-echo "${ECHO_T}$bash_cv_func_lstat" >&6
-if test $bash_cv_func_lstat = yes; then
- cat >>confdefs.h <<\EOF
-#define HAVE_LSTAT 1
-EOF
-
-fi
-
-echo "$as_me:3650: checking whether or not strcoll and strcmp differ" >&5
-echo $ECHO_N "checking whether or not strcoll and strcmp differ... $ECHO_C" >&6
-if test "${bash_cv_func_strcoll_broken+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test "$cross_compiling" = yes; then
- { echo "$as_me:3656: WARNING: cannot check strcoll if cross compiling -- defaulting to no" >&5
-echo "$as_me: WARNING: cannot check strcoll if cross compiling -- defaulting to no" >&2;}
- bash_cv_func_strcoll_broken=no
-
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3662 "configure"
-#include "confdefs.h"
-
-#include <stdio.h>
-#if defined (HAVE_LOCALE_H)
-#include <locale.h>
-#endif
-
-main(c, v)
-int c;
-char *v[];
-{
- int r1, r2;
- char *deflocale, *defcoll;
-
-#ifdef HAVE_SETLOCALE
- deflocale = setlocale(LC_ALL, "");
- defcoll = setlocale(LC_COLLATE, "");
-#endif
-
-#ifdef HAVE_STRCOLL
- /* These two values are taken from tests/glob-test. */
- r1 = strcoll("abd", "aXd");
-#else
- r1 = 0;
-#endif
- r2 = strcmp("abd", "aXd");
-
- /* These two should both be greater than 0. It is permissible for
- a system to return different values, as long as the sign is the
- same. */
-
- /* Exit with 1 (failure) if these two values are both > 0, since
- this tests whether strcoll(3) is broken with respect to strcmp(3)
- in the default locale. */
- exit (r1 > 0 && r2 > 0);
-}
-
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:3702: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:3705: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:3707: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3710: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- bash_cv_func_strcoll_broken=yes
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-bash_cv_func_strcoll_broken=no
-fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-
-echo "$as_me:3723: result: $bash_cv_func_strcoll_broken" >&5
-echo "${ECHO_T}$bash_cv_func_strcoll_broken" >&6
-if test $bash_cv_func_strcoll_broken = yes; then
-cat >>confdefs.h <<\EOF
-#define STRCOLL_BROKEN 1
-EOF
-
-fi
-
-echo "$as_me:3732: checking whether getpw functions are declared in pwd.h" >&5
-echo $ECHO_N "checking whether getpw functions are declared in pwd.h... $ECHO_C" >&6
-if test "${bash_cv_getpw_declared+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3738 "configure"
-#include "confdefs.h"
-
-#include <sys/types.h>
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-#include <pwd.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- egrep "getpwuid" >/dev/null 2>&1; then
- bash_cv_getpw_declared=yes
-else
- bash_cv_getpw_declared=no
-fi
-rm -f conftest*
-
-fi
-
-echo "$as_me:3758: result: $bash_cv_getpw_declared" >&5
-echo "${ECHO_T}$bash_cv_getpw_declared" >&6
-if test $bash_cv_getpw_declared = yes; then
-cat >>confdefs.h <<\EOF
-#define HAVE_GETPW_DECLS 1
-EOF
-
-fi
-
-echo "$as_me:3767: checking POSIX termios" >&5
-echo $ECHO_N "checking POSIX termios... $ECHO_C" >&6
-if test "${ac_cv_sys_posix_termios+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3773 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <unistd.h>
-#include <termios.h>
-int
-main ()
-{
-/* SunOS 4.0.3 has termios.h but not the library calls. */
- tcgetattr(0, 0);
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:3788: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:3791: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:3794: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3797: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_sys_posix_termios=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_sys_posix_termios=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:3807: result: $ac_cv_sys_posix_termios" >&5
-echo "${ECHO_T}$ac_cv_sys_posix_termios" >&6
-
-if test $ac_cv_sys_posix_termios = yes; then
- echo "$as_me:3811: checking whether termios.h defines TIOCGWINSZ" >&5
-echo $ECHO_N "checking whether termios.h defines TIOCGWINSZ... $ECHO_C" >&6
-if test "${ac_cv_sys_tiocgwinsz_in_termios_h+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3817 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <termios.h>
-#ifdef TIOCGWINSZ
- yes
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- egrep "yes" >/dev/null 2>&1; then
- ac_cv_sys_tiocgwinsz_in_termios_h=yes
-else
- ac_cv_sys_tiocgwinsz_in_termios_h=no
-fi
-rm -f conftest*
-
-fi
-echo "$as_me:3835: result: $ac_cv_sys_tiocgwinsz_in_termios_h" >&5
-echo "${ECHO_T}$ac_cv_sys_tiocgwinsz_in_termios_h" >&6
-
-fi
-if test $ac_cv_sys_tiocgwinsz_in_termios_h != yes; then
- echo "$as_me:3840: checking whether sys/ioctl.h defines TIOCGWINSZ" >&5
-echo $ECHO_N "checking whether sys/ioctl.h defines TIOCGWINSZ... $ECHO_C" >&6
-if test "${ac_cv_sys_tiocgwinsz_in_sys_ioctl_h+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3846 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <sys/ioctl.h>
-#ifdef TIOCGWINSZ
- yes
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- egrep "yes" >/dev/null 2>&1; then
- ac_cv_sys_tiocgwinsz_in_sys_ioctl_h=yes
-else
- ac_cv_sys_tiocgwinsz_in_sys_ioctl_h=no
-fi
-rm -f conftest*
-
-fi
-echo "$as_me:3864: result: $ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&5
-echo "${ECHO_T}$ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&6
-
- if test $ac_cv_sys_tiocgwinsz_in_sys_ioctl_h = yes; then
-
-cat >>confdefs.h <<\EOF
-#define GWINSZ_IN_SYS_IOCTL 1
-EOF
-
- fi
-fi
-
-echo "$as_me:3876: checking whether signal handlers are of type void" >&5
-echo $ECHO_N "checking whether signal handlers are of type void... $ECHO_C" >&6
-if test "${bash_cv_void_sighandler+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3882 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <signal.h>
-#ifdef signal
-#undef signal
-#endif
-#ifdef __cplusplus
-extern "C"
-#endif
-void (*signal ()) ();
-int
-main ()
-{
-int i;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:3902: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:3905: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:3908: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3911: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- bash_cv_void_sighandler=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-bash_cv_void_sighandler=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:3921: result: $bash_cv_void_sighandler" >&5
-echo "${ECHO_T}$bash_cv_void_sighandler" >&6
-if test $bash_cv_void_sighandler = yes; then
-cat >>confdefs.h <<\EOF
-#define VOID_SIGHANDLER 1
-EOF
-
-fi
-
-echo "$as_me:3930: checking for TIOCSTAT in sys/ioctl.h" >&5
-echo $ECHO_N "checking for TIOCSTAT in sys/ioctl.h... $ECHO_C" >&6
-if test "${bash_cv_tiocstat_in_ioctl+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3936 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <sys/ioctl.h>
-int
-main ()
-{
-int x = TIOCSTAT;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:3949: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:3952: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:3955: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3958: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- bash_cv_tiocstat_in_ioctl=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-bash_cv_tiocstat_in_ioctl=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-
-echo "$as_me:3969: result: $bash_cv_tiocstat_in_ioctl" >&5
-echo "${ECHO_T}$bash_cv_tiocstat_in_ioctl" >&6
-if test $bash_cv_tiocstat_in_ioctl = yes; then
-cat >>confdefs.h <<\EOF
-#define TIOCSTAT_IN_SYS_IOCTL 1
-EOF
-
-fi
-
-echo "$as_me:3978: checking for FIONREAD in sys/ioctl.h" >&5
-echo $ECHO_N "checking for FIONREAD in sys/ioctl.h... $ECHO_C" >&6
-if test "${bash_cv_fionread_in_ioctl+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3984 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <sys/ioctl.h>
-int
-main ()
-{
-int x = FIONREAD;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:3997: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:4000: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:4003: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4006: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- bash_cv_fionread_in_ioctl=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-bash_cv_fionread_in_ioctl=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-
-echo "$as_me:4017: result: $bash_cv_fionread_in_ioctl" >&5
-echo "${ECHO_T}$bash_cv_fionread_in_ioctl" >&6
-if test $bash_cv_fionread_in_ioctl = yes; then
-cat >>confdefs.h <<\EOF
-#define FIONREAD_IN_SYS_IOCTL 1
-EOF
-
-fi
-
-echo "$as_me:4026: checking for speed_t in sys/types.h" >&5
-echo $ECHO_N "checking for speed_t in sys/types.h... $ECHO_C" >&6
-if test "${bash_cv_speed_t_in_sys_types+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 4032 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-int
-main ()
-{
-speed_t x;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:4044: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:4047: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:4050: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4053: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- bash_cv_speed_t_in_sys_types=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-bash_cv_speed_t_in_sys_types=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-
-echo "$as_me:4064: result: $bash_cv_speed_t_in_sys_types" >&5
-echo "${ECHO_T}$bash_cv_speed_t_in_sys_types" >&6
-if test $bash_cv_speed_t_in_sys_types = yes; then
-cat >>confdefs.h <<\EOF
-#define SPEED_T_IN_SYS_TYPES 1
-EOF
-
-fi
-
-echo "$as_me:4073: checking for struct winsize in sys/ioctl.h and termios.h" >&5
-echo $ECHO_N "checking for struct winsize in sys/ioctl.h and termios.h... $ECHO_C" >&6
-if test "${bash_cv_struct_winsize_header+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 4079 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <sys/ioctl.h>
-int
-main ()
-{
-struct winsize x;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:4092: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:4095: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:4098: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4101: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- bash_cv_struct_winsize_header=ioctl_h
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-cat >conftest.$ac_ext <<_ACEOF
-#line 4108 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <termios.h>
-int
-main ()
-{
-struct winsize x;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:4121: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:4124: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:4127: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4130: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- bash_cv_struct_winsize_header=termios_h
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-bash_cv_struct_winsize_header=other
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-
-if test $bash_cv_struct_winsize_header = ioctl_h; then
- echo "$as_me:4145: result: sys/ioctl.h" >&5
-echo "${ECHO_T}sys/ioctl.h" >&6
- cat >>confdefs.h <<\EOF
-#define STRUCT_WINSIZE_IN_SYS_IOCTL 1
-EOF
-
-elif test $bash_cv_struct_winsize_header = termios_h; then
- echo "$as_me:4152: result: termios.h" >&5
-echo "${ECHO_T}termios.h" >&6
- cat >>confdefs.h <<\EOF
-#define STRUCT_WINSIZE_IN_TERMIOS 1
-EOF
-
-else
- echo "$as_me:4159: result: not found" >&5
-echo "${ECHO_T}not found" >&6
-fi
-
-echo "$as_me:4163: checking if struct dirent has a d_ino member" >&5
-echo $ECHO_N "checking if struct dirent has a d_ino member... $ECHO_C" >&6
-if test "${bash_cv_dirent_has_dino+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 4169 "configure"
-#include "confdefs.h"
-
-#include <stdio.h>
-#include <sys/types.h>
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-#if defined(HAVE_DIRENT_H)
-# include <dirent.h>
-#else
-# define dirent direct
-# ifdef HAVE_SYS_NDIR_H
-# include <sys/ndir.h>
-# endif /* SYSNDIR */
-# ifdef HAVE_SYS_DIR_H
-# include <sys/dir.h>
-# endif /* SYSDIR */
-# ifdef HAVE_NDIR_H
-# include <ndir.h>
-# endif
-#endif /* HAVE_DIRENT_H */
-
-int
-main ()
-{
-
-struct dirent d; int z; z = d.d_ino;
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:4203: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:4206: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:4209: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4212: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- bash_cv_dirent_has_dino=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-bash_cv_dirent_has_dino=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-
-echo "$as_me:4223: result: $bash_cv_dirent_has_dino" >&5
-echo "${ECHO_T}$bash_cv_dirent_has_dino" >&6
-if test $bash_cv_dirent_has_dino = yes; then
-cat >>confdefs.h <<\EOF
-#define STRUCT_DIRENT_HAS_D_INO 1
-EOF
-
-fi
-
-echo "$as_me:4232: checking if struct dirent has a d_fileno member" >&5
-echo $ECHO_N "checking if struct dirent has a d_fileno member... $ECHO_C" >&6
-if test "${bash_cv_dirent_has_d_fileno+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 4238 "configure"
-#include "confdefs.h"
-
-#include <stdio.h>
-#include <sys/types.h>
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-#if defined(HAVE_DIRENT_H)
-# include <dirent.h>
-#else
-# define dirent direct
-# ifdef HAVE_SYS_NDIR_H
-# include <sys/ndir.h>
-# endif /* SYSNDIR */
-# ifdef HAVE_SYS_DIR_H
-# include <sys/dir.h>
-# endif /* SYSDIR */
-# ifdef HAVE_NDIR_H
-# include <ndir.h>
-# endif
-#endif /* HAVE_DIRENT_H */
-
-int
-main ()
-{
-
-struct dirent d; int z; z = d.d_fileno;
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:4272: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:4275: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:4278: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4281: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- bash_cv_dirent_has_d_fileno=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-bash_cv_dirent_has_d_fileno=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-
-echo "$as_me:4292: result: $bash_cv_dirent_has_d_fileno" >&5
-echo "${ECHO_T}$bash_cv_dirent_has_d_fileno" >&6
-if test $bash_cv_dirent_has_d_fileno = yes; then
-cat >>confdefs.h <<\EOF
-#define STRUCT_DIRENT_HAS_D_FILENO 1
-EOF
-
-fi
-
-case "$host_os" in
-aix*) prefer_curses=yes ;;
-esac
-
-if test "X$bash_cv_termcap_lib" = "X"; then
-_bash_needmsg=yes
-else
-echo "$as_me:4308: checking which library has the termcap functions" >&5
-echo $ECHO_N "checking which library has the termcap functions... $ECHO_C" >&6
-_bash_needmsg=
-fi
-if test "${bash_cv_termcap_lib+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- echo "$as_me:4315: checking for tgetent in -ltermcap" >&5
-echo $ECHO_N "checking for tgetent in -ltermcap... $ECHO_C" >&6
-if test "${ac_cv_lib_termcap_tgetent+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-ltermcap $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 4323 "configure"
-#include "confdefs.h"
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char tgetent ();
-int
-main ()
-{
-tgetent ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:4342: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:4345: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:4348: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4351: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_termcap_tgetent=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_termcap_tgetent=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:4362: result: $ac_cv_lib_termcap_tgetent" >&5
-echo "${ECHO_T}$ac_cv_lib_termcap_tgetent" >&6
-if test $ac_cv_lib_termcap_tgetent = yes; then
- bash_cv_termcap_lib=libtermcap
-else
- echo "$as_me:4367: checking for tgetent in -ltinfo" >&5
-echo $ECHO_N "checking for tgetent in -ltinfo... $ECHO_C" >&6
-if test "${ac_cv_lib_tinfo_tgetent+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-ltinfo $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 4375 "configure"
-#include "confdefs.h"
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char tgetent ();
-int
-main ()
-{
-tgetent ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:4394: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:4397: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:4400: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4403: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_tinfo_tgetent=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_tinfo_tgetent=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:4414: result: $ac_cv_lib_tinfo_tgetent" >&5
-echo "${ECHO_T}$ac_cv_lib_tinfo_tgetent" >&6
-if test $ac_cv_lib_tinfo_tgetent = yes; then
- bash_cv_termcap_lib=libtinfo
-else
- echo "$as_me:4419: checking for tgetent in -lcurses" >&5
-echo $ECHO_N "checking for tgetent in -lcurses... $ECHO_C" >&6
-if test "${ac_cv_lib_curses_tgetent+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lcurses $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 4427 "configure"
-#include "confdefs.h"
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char tgetent ();
-int
-main ()
-{
-tgetent ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:4446: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:4449: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:4452: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4455: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_curses_tgetent=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_curses_tgetent=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:4466: result: $ac_cv_lib_curses_tgetent" >&5
-echo "${ECHO_T}$ac_cv_lib_curses_tgetent" >&6
-if test $ac_cv_lib_curses_tgetent = yes; then
- bash_cv_termcap_lib=libcurses
-else
- echo "$as_me:4471: checking for tgetent in -lncurses" >&5
-echo $ECHO_N "checking for tgetent in -lncurses... $ECHO_C" >&6
-if test "${ac_cv_lib_ncurses_tgetent+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lncurses $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 4479 "configure"
-#include "confdefs.h"
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char tgetent ();
-int
-main ()
-{
-tgetent ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:4498: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:4501: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:4504: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4507: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_ncurses_tgetent=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_ncurses_tgetent=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:4518: result: $ac_cv_lib_ncurses_tgetent" >&5
-echo "${ECHO_T}$ac_cv_lib_ncurses_tgetent" >&6
-if test $ac_cv_lib_ncurses_tgetent = yes; then
- bash_cv_termcap_lib=libncurses
-else
- bash_cv_termcap_lib=gnutermcap
-fi
-
-fi
-
-fi
-
-fi
-
-fi
-
-if test "X$_bash_needmsg" = "Xyes"; then
-echo "$as_me:4535: checking which library has the termcap functions" >&5
-echo $ECHO_N "checking which library has the termcap functions... $ECHO_C" >&6
-fi
-echo "$as_me:4538: result: using $bash_cv_termcap_lib" >&5
-echo "${ECHO_T}using $bash_cv_termcap_lib" >&6
-if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then
-LDFLAGS="$LDFLAGS -L./lib/termcap"
-TERMCAP_LIB="./lib/termcap/libtermcap.a"
-TERMCAP_DEP="./lib/termcap/libtermcap.a"
-elif test $bash_cv_termcap_lib = libtermcap && test -z "$prefer_curses"; then
-TERMCAP_LIB=-ltermcap
-TERMCAP_DEP=
-elif test $bash_cv_termcap_lib = libtinfo; then
-TERMCAP_LIB=-ltinfo
-TERMCAP_DEP=
-elif test $bash_cv_termcap_lib = libncurses; then
-TERMCAP_LIB=-lncurses
-TERMCAP_DEP=
-else
-TERMCAP_LIB=-lcurses
-TERMCAP_DEP=
-fi
-
-if test "$TERMCAP_LIB" = "./lib/termcap/libtermcap.a"; then
- if test "$prefer_curses" = yes; then
- TERMCAP_LIB=-lcurses
- else
- TERMCAP_LIB=-ltermcap #default
- fi
-fi
-
-for ac_header in wctype.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:4569: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 4575 "configure"
-#include "confdefs.h"
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:4579: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:4585: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- eval "$as_ac_Header=yes"
-else
- echo "$as_me: failed program was:" >&5
- cat conftest.$ac_ext >&5
- eval "$as_ac_Header=no"
-fi
-rm -f conftest.err conftest.$ac_ext
-fi
-echo "$as_me:4604: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-EOF
-
-fi
-done
-
-for ac_header in wchar.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:4617: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 4623 "configure"
-#include "confdefs.h"
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:4627: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:4633: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- eval "$as_ac_Header=yes"
-else
- echo "$as_me: failed program was:" >&5
- cat conftest.$ac_ext >&5
- eval "$as_ac_Header=no"
-fi
-rm -f conftest.err conftest.$ac_ext
-fi
-echo "$as_me:4652: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-EOF
-
-fi
-done
-
-for ac_header in langinfo.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:4665: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 4671 "configure"
-#include "confdefs.h"
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:4675: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:4681: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- eval "$as_ac_Header=yes"
-else
- echo "$as_me: failed program was:" >&5
- cat conftest.$ac_ext >&5
- eval "$as_ac_Header=no"
-fi
-rm -f conftest.err conftest.$ac_ext
-fi
-echo "$as_me:4700: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-EOF
-
-fi
-done
-
-echo "$as_me:4710: checking for mbsrtowcs" >&5
-echo $ECHO_N "checking for mbsrtowcs... $ECHO_C" >&6
-if test "${ac_cv_func_mbsrtowcs+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 4716 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char mbsrtowcs (); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char mbsrtowcs ();
-char (*f) ();
-
-int
-main ()
-{
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined (__stub_mbsrtowcs) || defined (__stub___mbsrtowcs)
-choke me
-#else
-f = mbsrtowcs;
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:4747: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:4750: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:4753: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4756: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_func_mbsrtowcs=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_func_mbsrtowcs=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:4766: result: $ac_cv_func_mbsrtowcs" >&5
-echo "${ECHO_T}$ac_cv_func_mbsrtowcs" >&6
-if test $ac_cv_func_mbsrtowcs = yes; then
- cat >>confdefs.h <<\EOF
-#define HAVE_MBSRTOWCS 1
-EOF
-
-fi
-
-echo "$as_me:4775: checking for wcwidth" >&5
-echo $ECHO_N "checking for wcwidth... $ECHO_C" >&6
-if test "${ac_cv_func_wcwidth+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 4781 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char wcwidth (); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char wcwidth ();
-char (*f) ();
-
-int
-main ()
-{
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined (__stub_wcwidth) || defined (__stub___wcwidth)
-choke me
-#else
-f = wcwidth;
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:4812: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:4815: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:4818: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4821: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_func_wcwidth=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_func_wcwidth=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:4831: result: $ac_cv_func_wcwidth" >&5
-echo "${ECHO_T}$ac_cv_func_wcwidth" >&6
-if test $ac_cv_func_wcwidth = yes; then
- cat >>confdefs.h <<\EOF
-#define HAVE_WCWIDTH 1
-EOF
-
-fi
-
-echo "$as_me:4840: checking for mbstate_t" >&5
-echo $ECHO_N "checking for mbstate_t... $ECHO_C" >&6
-if test "${bash_cv_have_mbstate_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test "$cross_compiling" = yes; then
- { { echo "$as_me:4846: error: cannot run test program while cross compiling" >&5
-echo "$as_me: error: cannot run test program while cross compiling" >&2;}
- { (exit 1); exit 1; }; }
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 4851 "configure"
-#include "confdefs.h"
-
-#include <wchar.h>
-int
-main ()
-{
- mbstate_t ps;
- return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:4863: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:4866: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:4868: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4871: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- bash_cv_have_mbstate_t=yes
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-bash_cv_have_mbstate_t=no
-fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-echo "$as_me:4883: result: $bash_cv_have_mbstate_t" >&5
-echo "${ECHO_T}$bash_cv_have_mbstate_t" >&6
-if test $bash_cv_have_mbstate_t = yes; then
- cat >>confdefs.h <<\EOF
-#define HAVE_MBSTATE_T 1
-EOF
-
-fi
-
-echo "$as_me:4892: checking for nl_langinfo and CODESET" >&5
-echo $ECHO_N "checking for nl_langinfo and CODESET... $ECHO_C" >&6
-if test "${bash_cv_langinfo_codeset+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 4898 "configure"
-#include "confdefs.h"
-#include <langinfo.h>
-int
-main ()
-{
-char* cs = nl_langinfo(CODESET);
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:4910: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:4913: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:4916: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4919: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- bash_cv_langinfo_codeset=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-bash_cv_langinfo_codeset=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:4929: result: $bash_cv_langinfo_codeset" >&5
-echo "${ECHO_T}$bash_cv_langinfo_codeset" >&6
-if test $bash_cv_langinfo_codeset = yes; then
- cat >>confdefs.h <<\EOF
-#define HAVE_LANGINFO_CODESET 1
-EOF
-
-fi
-
-case "$host_cpu" in
-*cray*) LOCAL_CFLAGS=-DCRAY ;;
-*s390*) LOCAL_CFLAGS=-fsigned-char ;;
-esac
-
-case "$host_os" in
-isc*) LOCAL_CFLAGS=-Disc386 ;;
-esac
-
-# shared library configuration section
-#
-# Shared object configuration section. These values are generated by
-# ${srcdir}/support/shobj-conf
-#
-if test -f ${srcdir}/support/shobj-conf; then
- echo "$as_me:4953: checking configuration for building shared libraries" >&5
-echo $ECHO_N "checking configuration for building shared libraries... $ECHO_C" >&6
- eval `${CONFIG_SHELL-/bin/sh} ${srcdir}/support/shobj-conf -C "${CC}" -c ${host_cpu} -o ${host_os} -v ${host_vendor}`
-
- echo "$as_me:4957: result: $SHLIB_STATUS" >&5
-echo "${ECHO_T}$SHLIB_STATUS" >&6
-
- # SHLIB_STATUS is either `supported' or `unsupported'. If it's
- # `unsupported', turn off any default shared library building
- if test "$SHLIB_STATUS" = 'unsupported'; then
- opt_shared_libs=no
- fi
-
- # shared library versioning
- # quoted for m4 so I can use character classes
- SHLIB_MAJOR=`expr "$LIBVERSION" : '\([0-9]\)\..*'`
- SHLIB_MINOR=`expr "$LIBVERSION" : '[0-9]\.\([0-9]\).*'`
-
-fi
-
-if test "$opt_static_libs" = "yes"; then
- STATIC_TARGET=static
- STATIC_INSTALL_TARGET=install-static
-fi
-if test "$opt_shared_libs" = "yes"; then
- SHARED_TARGET=shared
- SHARED_INSTALL_TARGET=install-shared
-fi
-
-case "$host_os" in
-msdosdjgpp*) BUILD_DIR=`pwd.exe` ;; # to prevent //d/path/file
-*) BUILD_DIR=`pwd` ;;
-esac
-
-ac_config_files="$ac_config_files Makefile doc/Makefile examples/Makefile shlib/Makefile"
-ac_config_commands="$ac_config_commands default"
-cat >confcache <<\_ACEOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs, see configure's option --config-cache.
-# It is not useful on other systems. If it contains results you don't
-# want to keep, you may remove or edit it.
-#
-# config.status only pays attention to the cache file if you give it
-# the --recheck option to rerun configure.
-#
-# `ac_cv_env_foo' variables (set or unset) will be overriden when
-# loading this file, other *unset* `ac_cv_foo' will be assigned the
-# following values.
-
-_ACEOF
-
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, don't put newlines in cache variables' values.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-{
- (set) 2>&1 |
- case `(ac_space=' '; set | grep ac_space) 2>&1` in
- *ac_space=\ *)
- # `set' does not quote correctly, so add quotes (double-quote
- # substitution turns \\\\ into \\, and sed turns \\ into \).
- sed -n \
- "s/'/'\\\\''/g;
- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
- ;;
- *)
- # `set' quotes correctly as required by POSIX, so do not add quotes.
- sed -n \
- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
- ;;
- esac;
-} |
- sed '
- t clear
- : clear
- s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
- t end
- /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
- : end' >>confcache
-if cmp -s $cache_file confcache; then :; else
- if test -w $cache_file; then
- test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
- cat confcache >$cache_file
- else
- echo "not updating unwritable cache $cache_file"
- fi
-fi
-rm -f confcache
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-# VPATH may cause trouble with some makes, so we remove $(srcdir),
-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
-# trailing colons and then remove the whole line if VPATH becomes empty
-# (actually we leave an empty line to preserve line numbers).
-if test "x$srcdir" = x.; then
- ac_vpsub='/^[ ]*VPATH[ ]*=/{
-s/:*\$(srcdir):*/:/;
-s/:*\${srcdir}:*/:/;
-s/:*@srcdir@:*/:/;
-s/^\([^=]*=[ ]*\):*/\1/;
-s/:*$//;
-s/^[^=]*=[ ]*$//;
-}'
-fi
-
-DEFS=-DHAVE_CONFIG_H
-
-: ${CONFIG_STATUS=./config.status}
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ echo "$as_me:5068: creating $CONFIG_STATUS" >&5
-echo "$as_me: creating $CONFIG_STATUS" >&6;}
-cat >$CONFIG_STATUS <<_ACEOF
-#! $SHELL
-# Generated automatically by configure.
-# Run this file to recreate the current configuration.
-# Compiler output produced by configure, useful for debugging
-# configure, is in config.log if it exists.
-
-debug=false
-SHELL=\${CONFIG_SHELL-$SHELL}
-ac_cs_invocation="\$0 \$@"
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF
-# Be Bourne compatible
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
- emulate sh
- NULLCMD=:
-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
- set -o posix
-fi
-
-# Name of the executable.
-as_me=`echo "$0" |sed 's,.*[\\/],,'`
-
-if expr a : '\(a\)' >/dev/null 2>&1; then
- as_expr=expr
-else
- as_expr=false
-fi
-
-rm -f conf$$ conf$$.exe conf$$.file
-echo >conf$$.file
-if ln -s conf$$.file conf$$ 2>/dev/null; then
- # We could just check for DJGPP; but this test a) works b) is more generic
- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
- if test -f conf$$.exe; then
- # Don't use ln at all; we don't have any links
- as_ln_s='cp -p'
- else
- as_ln_s='ln -s'
- fi
-elif ln conf$$.file conf$$ 2>/dev/null; then
- as_ln_s=ln
-else
- as_ln_s='cp -p'
-fi
-rm -f conf$$ conf$$.exe conf$$.file
-
-as_executable_p="test -f"
-
-# Support unset when possible.
-if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
- as_unset=unset
-else
- as_unset=false
-fi
-
-# NLS nuisances.
-$as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; }
-$as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; }
-$as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; }
-$as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; }
-$as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; }
-$as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; }
-$as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; }
-$as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; }
-
-# IFS
-# We need space, tab and new line, in precisely that order.
-as_nl='
-'
-IFS=" $as_nl"
-
-# CDPATH.
-$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; }
-
-exec 6>&1
-
-_ACEOF
-
-# Files that config.status was made for.
-if test -n "$ac_config_files"; then
- echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
-fi
-
-if test -n "$ac_config_headers"; then
- echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
-fi
-
-if test -n "$ac_config_links"; then
- echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
-fi
-
-if test -n "$ac_config_commands"; then
- echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
-fi
-
-cat >>$CONFIG_STATUS <<\EOF
-
-ac_cs_usage="\
-\`$as_me' instantiates files from templates according to the
-current configuration.
-
-Usage: $0 [OPTIONS] [FILE]...
-
- -h, --help print this help, then exit
- -V, --version print version number, then exit
- -d, --debug don't remove temporary files
- --recheck update $as_me by reconfiguring in the same conditions
- --file=FILE[:TEMPLATE]
- instantiate the configuration file FILE
- --header=FILE[:TEMPLATE]
- instantiate the configuration header FILE
-
-Configuration files:
-$config_files
-
-Configuration headers:
-$config_headers
-
-Configuration commands:
-$config_commands
-
-Report bugs to <bug-autoconf@gnu.org>."
-EOF
-
-cat >>$CONFIG_STATUS <<EOF
-ac_cs_version="\\
-readline config.status 4.3
-configured by $0, generated by GNU Autoconf 2.52,
- with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
-
-Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
-Free Software Foundation, Inc.
-This config.status script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it."
-srcdir=$srcdir
-INSTALL="$INSTALL"
-EOF
-
-cat >>$CONFIG_STATUS <<\EOF
-# If no file are specified by the user, then we need to provide default
-# value. By we need to know if files were specified by the user.
-ac_need_defaults=:
-while test $# != 0
-do
- case $1 in
- --*=*)
- ac_option=`expr "x$1" : 'x\([^=]*\)='`
- ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
- shift
- set dummy "$ac_option" "$ac_optarg" ${1+"$@"}
- shift
- ;;
- -*);;
- *) # This is not an option, so the user has probably given explicit
- # arguments.
- ac_need_defaults=false;;
- esac
-
- case $1 in
- # Handling of the options.
-EOF
-cat >>$CONFIG_STATUS <<EOF
- -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
- echo "running $SHELL $0 " $ac_configure_args " --no-create --no-recursion"
- exec $SHELL $0 $ac_configure_args --no-create --no-recursion ;;
-EOF
-cat >>$CONFIG_STATUS <<\EOF
- --version | --vers* | -V )
- echo "$ac_cs_version"; exit 0 ;;
- --he | --h)
- # Conflict between --help and --header
- { { echo "$as_me:5244: error: ambiguous option: $1
-Try \`$0 --help' for more information." >&5
-echo "$as_me: error: ambiguous option: $1
-Try \`$0 --help' for more information." >&2;}
- { (exit 1); exit 1; }; };;
- --help | --hel | -h )
- echo "$ac_cs_usage"; exit 0 ;;
- --debug | --d* | -d )
- debug=: ;;
- --file | --fil | --fi | --f )
- shift
- CONFIG_FILES="$CONFIG_FILES $1"
- ac_need_defaults=false;;
- --header | --heade | --head | --hea )
- shift
- CONFIG_HEADERS="$CONFIG_HEADERS $1"
- ac_need_defaults=false;;
-
- # This is an error.
- -*) { { echo "$as_me:5263: error: unrecognized option: $1
-Try \`$0 --help' for more information." >&5
-echo "$as_me: error: unrecognized option: $1
-Try \`$0 --help' for more information." >&2;}
- { (exit 1); exit 1; }; } ;;
-
- *) ac_config_targets="$ac_config_targets $1" ;;
-
- esac
- shift
-done
-
-exec 5>>config.log
-cat >&5 << _ACEOF
-
-## ----------------------- ##
-## Running config.status. ##
-## ----------------------- ##
-
-This file was extended by $as_me (readline 4.3) 2.52, executed with
- CONFIG_FILES = $CONFIG_FILES
- CONFIG_HEADERS = $CONFIG_HEADERS
- CONFIG_LINKS = $CONFIG_LINKS
- CONFIG_COMMANDS = $CONFIG_COMMANDS
- > $ac_cs_invocation
-on `(hostname || uname -n) 2>/dev/null | sed 1q`
-
-_ACEOF
-EOF
-
-cat >>$CONFIG_STATUS <<\EOF
-for ac_config_target in $ac_config_targets
-do
- case "$ac_config_target" in
- # Handling of arguments.
- "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
- "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
- "examples/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;;
- "shlib/Makefile" ) CONFIG_FILES="$CONFIG_FILES shlib/Makefile" ;;
- "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
- "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
- *) { { echo "$as_me:5304: error: invalid argument: $ac_config_target" >&5
-echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
- { (exit 1); exit 1; }; };;
- esac
-done
-
-# If the user did not use the arguments to specify the items to instantiate,
-# then the envvar interface is used. Set only those that are not.
-# We use the long form for the default assignment because of an extremely
-# bizarre bug on SunOS 4.1.3.
-if $ac_need_defaults; then
- test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
- test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
- test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
-fi
-
-# Create a temporary directory, and hook for its removal unless debugging.
-$debug ||
-{
- trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
- trap '{ (exit 1); exit 1; }' 1 2 13 15
-}
-
-# Create a (secure) tmp directory for tmp files.
-: ${TMPDIR=/tmp}
-{
- tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` &&
- test -n "$tmp" && test -d "$tmp"
-} ||
-{
- tmp=$TMPDIR/cs$$-$RANDOM
- (umask 077 && mkdir $tmp)
-} ||
-{
- echo "$me: cannot create a temporary directory in $TMPDIR" >&2
- { (exit 1); exit 1; }
-}
-
-EOF
-
-cat >>$CONFIG_STATUS <<EOF
-
-#
-# CONFIG_FILES section.
-#
-
-# No need to generate the scripts if there are no CONFIG_FILES.
-# This happens for instance when ./config.status config.h
-if test -n "\$CONFIG_FILES"; then
- # Protect against being on the right side of a sed subst in config.status.
- sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
- s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
-s,@SHELL@,$SHELL,;t t
-s,@exec_prefix@,$exec_prefix,;t t
-s,@prefix@,$prefix,;t t
-s,@program_transform_name@,$program_transform_name,;t t
-s,@bindir@,$bindir,;t t
-s,@sbindir@,$sbindir,;t t
-s,@libexecdir@,$libexecdir,;t t
-s,@datadir@,$datadir,;t t
-s,@sysconfdir@,$sysconfdir,;t t
-s,@sharedstatedir@,$sharedstatedir,;t t
-s,@localstatedir@,$localstatedir,;t t
-s,@libdir@,$libdir,;t t
-s,@includedir@,$includedir,;t t
-s,@oldincludedir@,$oldincludedir,;t t
-s,@infodir@,$infodir,;t t
-s,@mandir@,$mandir,;t t
-s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t
-s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
-s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
-s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t
-s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
-s,@build_alias@,$build_alias,;t t
-s,@host_alias@,$host_alias,;t t
-s,@target_alias@,$target_alias,;t t
-s,@ECHO_C@,$ECHO_C,;t t
-s,@ECHO_N@,$ECHO_N,;t t
-s,@ECHO_T@,$ECHO_T,;t t
-s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
-s,@DEFS@,$DEFS,;t t
-s,@LIBS@,$LIBS,;t t
-s,@build@,$build,;t t
-s,@build_cpu@,$build_cpu,;t t
-s,@build_vendor@,$build_vendor,;t t
-s,@build_os@,$build_os,;t t
-s,@host@,$host,;t t
-s,@host_cpu@,$host_cpu,;t t
-s,@host_vendor@,$host_vendor,;t t
-s,@host_os@,$host_os,;t t
-s,@SET_MAKE@,$SET_MAKE,;t t
-s,@CC@,$CC,;t t
-s,@CFLAGS@,$CFLAGS,;t t
-s,@LDFLAGS@,$LDFLAGS,;t t
-s,@CPPFLAGS@,$CPPFLAGS,;t t
-s,@ac_ct_CC@,$ac_ct_CC,;t t
-s,@EXEEXT@,$EXEEXT,;t t
-s,@OBJEXT@,$OBJEXT,;t t
-s,@CPP@,$CPP,;t t
-s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
-s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
-s,@INSTALL_DATA@,$INSTALL_DATA,;t t
-s,@AR@,$AR,;t t
-s,@RANLIB@,$RANLIB,;t t
-s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
-s,@MAKE_SHELL@,$MAKE_SHELL,;t t
-s,@SHOBJ_CC@,$SHOBJ_CC,;t t
-s,@SHOBJ_CFLAGS@,$SHOBJ_CFLAGS,;t t
-s,@SHOBJ_LD@,$SHOBJ_LD,;t t
-s,@SHOBJ_LDFLAGS@,$SHOBJ_LDFLAGS,;t t
-s,@SHOBJ_XLDFLAGS@,$SHOBJ_XLDFLAGS,;t t
-s,@SHOBJ_LIBS@,$SHOBJ_LIBS,;t t
-s,@SHOBJ_STATUS@,$SHOBJ_STATUS,;t t
-s,@SHLIB_STATUS@,$SHLIB_STATUS,;t t
-s,@SHLIB_XLDFLAGS@,$SHLIB_XLDFLAGS,;t t
-s,@SHLIB_LIBSUFF@,$SHLIB_LIBSUFF,;t t
-s,@SHLIB_LIBVERSION@,$SHLIB_LIBVERSION,;t t
-s,@SHLIB_LIBS@,$SHLIB_LIBS,;t t
-s,@SHLIB_MAJOR@,$SHLIB_MAJOR,;t t
-s,@SHLIB_MINOR@,$SHLIB_MINOR,;t t
-s,@STATIC_TARGET@,$STATIC_TARGET,;t t
-s,@SHARED_TARGET@,$SHARED_TARGET,;t t
-s,@STATIC_INSTALL_TARGET@,$STATIC_INSTALL_TARGET,;t t
-s,@SHARED_INSTALL_TARGET@,$SHARED_INSTALL_TARGET,;t t
-s,@BUILD_DIR@,$BUILD_DIR,;t t
-s,@LOCAL_CFLAGS@,$LOCAL_CFLAGS,;t t
-s,@LOCAL_LDFLAGS@,$LOCAL_LDFLAGS,;t t
-s,@LOCAL_DEFS@,$LOCAL_DEFS,;t t
-s,@ARFLAGS@,$ARFLAGS,;t t
-s,@LIBVERSION@,$LIBVERSION,;t t
-s,@TERMCAP_LIB@,$TERMCAP_LIB,;t t
-CEOF
-
-EOF
-
- cat >>$CONFIG_STATUS <<\EOF
- # Split the substitutions into bite-sized pieces for seds with
- # small command number limits, like on Digital OSF/1 and HP-UX.
- ac_max_sed_lines=48
- ac_sed_frag=1 # Number of current file.
- ac_beg=1 # First line for current file.
- ac_end=$ac_max_sed_lines # Line after last line for current file.
- ac_more_lines=:
- ac_sed_cmds=
- while $ac_more_lines; do
- if test $ac_beg -gt 1; then
- sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
- else
- sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
- fi
- if test ! -s $tmp/subs.frag; then
- ac_more_lines=false
- else
- # The purpose of the label and of the branching condition is to
- # speed up the sed processing (if there are no `@' at all, there
- # is no need to browse any of the substitutions).
- # These are the two extra sed commands mentioned above.
- (echo ':t
- /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
- if test -z "$ac_sed_cmds"; then
- ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
- else
- ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
- fi
- ac_sed_frag=`expr $ac_sed_frag + 1`
- ac_beg=$ac_end
- ac_end=`expr $ac_end + $ac_max_sed_lines`
- fi
- done
- if test -z "$ac_sed_cmds"; then
- ac_sed_cmds=cat
- fi
-fi # test -n "$CONFIG_FILES"
-
-EOF
-cat >>$CONFIG_STATUS <<\EOF
-for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
- case $ac_file in
- - | *:- | *:-:* ) # input from stdin
- cat >$tmp/stdin
- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
- * ) ac_file_in=$ac_file.in ;;
- esac
-
- # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
- ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$ac_file" : 'X\(//\)[^/]' \| \
- X"$ac_file" : 'X\(//\)$' \| \
- X"$ac_file" : 'X\(/\)' \| \
- . : '\(.\)' 2>/dev/null ||
-echo X"$ac_file" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
- /^X\(\/\/\)$/{ s//\1/; q; }
- /^X\(\/\).*/{ s//\1/; q; }
- s/.*/./; q'`
- if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
- { case "$ac_dir" in
- [\\/]* | ?:[\\/]* ) as_incr_dir=;;
- *) as_incr_dir=.;;
-esac
-as_dummy="$ac_dir"
-for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do
- case $as_mkdir_dir in
- # Skip DOS drivespec
- ?:) as_incr_dir=$as_mkdir_dir ;;
- *)
- as_incr_dir=$as_incr_dir/$as_mkdir_dir
- test -d "$as_incr_dir" || mkdir "$as_incr_dir"
- ;;
- esac
-done; }
-
- ac_dir_suffix="/`echo $ac_dir|sed 's,^\./,,'`"
- # A "../" for each directory in $ac_dir_suffix.
- ac_dots=`echo "$ac_dir_suffix" | sed 's,/[^/]*,../,g'`
- else
- ac_dir_suffix= ac_dots=
- fi
-
- case $srcdir in
- .) ac_srcdir=.
- if test -z "$ac_dots"; then
- ac_top_srcdir=.
- else
- ac_top_srcdir=`echo $ac_dots | sed 's,/$,,'`
- fi ;;
- [\\/]* | ?:[\\/]* )
- ac_srcdir=$srcdir$ac_dir_suffix;
- ac_top_srcdir=$srcdir ;;
- *) # Relative path.
- ac_srcdir=$ac_dots$srcdir$ac_dir_suffix
- ac_top_srcdir=$ac_dots$srcdir ;;
- esac
-
- case $INSTALL in
- [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
- *) ac_INSTALL=$ac_dots$INSTALL ;;
- esac
-
- if test x"$ac_file" != x-; then
- { echo "$as_me:5549: creating $ac_file" >&5
-echo "$as_me: creating $ac_file" >&6;}
- rm -f "$ac_file"
- fi
- # Let's still pretend it is `configure' which instantiates (i.e., don't
- # use $as_me), people would be surprised to read:
- # /* config.h. Generated automatically by config.status. */
- configure_input="Generated automatically from `echo $ac_file_in |
- sed 's,.*/,,'` by configure."
-
- # First look for the input files in the build tree, otherwise in the
- # src tree.
- ac_file_inputs=`IFS=:
- for f in $ac_file_in; do
- case $f in
- -) echo $tmp/stdin ;;
- [\\/$]*)
- # Absolute (can't be DOS-style, as IFS=:)
- test -f "$f" || { { echo "$as_me:5567: error: cannot find input file: $f" >&5
-echo "$as_me: error: cannot find input file: $f" >&2;}
- { (exit 1); exit 1; }; }
- echo $f;;
- *) # Relative
- if test -f "$f"; then
- # Build tree
- echo $f
- elif test -f "$srcdir/$f"; then
- # Source tree
- echo $srcdir/$f
- else
- # /dev/null tree
- { { echo "$as_me:5580: error: cannot find input file: $f" >&5
-echo "$as_me: error: cannot find input file: $f" >&2;}
- { (exit 1); exit 1; }; }
- fi;;
- esac
- done` || { (exit 1); exit 1; }
-EOF
-cat >>$CONFIG_STATUS <<EOF
- sed "$ac_vpsub
-$extrasub
-EOF
-cat >>$CONFIG_STATUS <<\EOF
-:t
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-s,@configure_input@,$configure_input,;t t
-s,@srcdir@,$ac_srcdir,;t t
-s,@top_srcdir@,$ac_top_srcdir,;t t
-s,@INSTALL@,$ac_INSTALL,;t t
-" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
- rm -f $tmp/stdin
- if test x"$ac_file" != x-; then
- mv $tmp/out $ac_file
- else
- cat $tmp/out
- rm -f $tmp/out
- fi
-
-done
-EOF
-cat >>$CONFIG_STATUS <<\EOF
-
-#
-# CONFIG_HEADER section.
-#
-
-# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
-# NAME is the cpp macro being defined and VALUE is the value it is being given.
-#
-# ac_d sets the value in "#define NAME VALUE" lines.
-ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)'
-ac_dB='[ ].*$,\1#\2'
-ac_dC=' '
-ac_dD=',;t'
-# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
-ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
-ac_uB='$,\1#\2define\3'
-ac_uC=' '
-ac_uD=',;t'
-
-for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
- case $ac_file in
- - | *:- | *:-:* ) # input from stdin
- cat >$tmp/stdin
- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
- * ) ac_file_in=$ac_file.in ;;
- esac
-
- test x"$ac_file" != x- && { echo "$as_me:5641: creating $ac_file" >&5
-echo "$as_me: creating $ac_file" >&6;}
-
- # First look for the input files in the build tree, otherwise in the
- # src tree.
- ac_file_inputs=`IFS=:
- for f in $ac_file_in; do
- case $f in
- -) echo $tmp/stdin ;;
- [\\/$]*)
- # Absolute (can't be DOS-style, as IFS=:)
- test -f "$f" || { { echo "$as_me:5652: error: cannot find input file: $f" >&5
-echo "$as_me: error: cannot find input file: $f" >&2;}
- { (exit 1); exit 1; }; }
- echo $f;;
- *) # Relative
- if test -f "$f"; then
- # Build tree
- echo $f
- elif test -f "$srcdir/$f"; then
- # Source tree
- echo $srcdir/$f
- else
- # /dev/null tree
- { { echo "$as_me:5665: error: cannot find input file: $f" >&5
-echo "$as_me: error: cannot find input file: $f" >&2;}
- { (exit 1); exit 1; }; }
- fi;;
- esac
- done` || { (exit 1); exit 1; }
- # Remove the trailing spaces.
- sed 's/[ ]*$//' $ac_file_inputs >$tmp/in
-
-EOF
-
-# Transform confdefs.h into two sed scripts, `conftest.defines' and
-# `conftest.undefs', that substitutes the proper values into
-# config.h.in to produce config.h. The first handles `#define'
-# templates, and the second `#undef' templates.
-# And first: Protect against being on the right side of a sed subst in
-# config.status. Protect against being in an unquoted here document
-# in config.status.
-rm -f conftest.defines conftest.undefs
-# Using a here document instead of a string reduces the quoting nightmare.
-# Putting comments in sed scripts is not portable.
-#
-# `end' is used to avoid that the second main sed command (meant for
-# 0-ary CPP macros) applies to n-ary macro definitions.
-# See the Autoconf documentation for `clear'.
-cat >confdef2sed.sed <<\EOF
-s/[\\&,]/\\&/g
-s,[\\$`],\\&,g
-t clear
-: clear
-s,^[ ]*#[ ]*define[ ][ ]*\(\([^ (][^ (]*\)([^)]*)\)[ ]*\(.*\)$,${ac_dA}\2${ac_dB}\1${ac_dC}\3${ac_dD},gp
-t end
-s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
-: end
-EOF
-# If some macros were called several times there might be several times
-# the same #defines, which is useless. Nevertheless, we may not want to
-# sort them, since we want the *last* AC-DEFINE to be honored.
-uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines
-sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs
-rm -f confdef2sed.sed
-
-# This sed command replaces #undef with comments. This is necessary, for
-# example, in the case of _POSIX_SOURCE, which is predefined and required
-# on some systems where configure will not decide to define it.
-cat >>conftest.undefs <<\EOF
-s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
-EOF
-
-# Break up conftest.defines because some shells have a limit on the size
-# of here documents, and old seds have small limits too (100 cmds).
-echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
-echo ' if egrep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
-echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
-echo ' :' >>$CONFIG_STATUS
-rm -f conftest.tail
-while grep . conftest.defines >/dev/null
-do
- # Write a limited-size here document to $tmp/defines.sed.
- echo ' cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
- # Speed up: don't consider the non `#define' lines.
- echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS
- # Work around the forget-to-reset-the-flag bug.
- echo 't clr' >>$CONFIG_STATUS
- echo ': clr' >>$CONFIG_STATUS
- sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS
- echo 'CEOF
- sed -f $tmp/defines.sed $tmp/in >$tmp/out
- rm -f $tmp/in
- mv $tmp/out $tmp/in
-' >>$CONFIG_STATUS
- sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail
- rm -f conftest.defines
- mv conftest.tail conftest.defines
-done
-rm -f conftest.defines
-echo ' fi # egrep' >>$CONFIG_STATUS
-echo >>$CONFIG_STATUS
-
-# Break up conftest.undefs because some shells have a limit on the size
-# of here documents, and old seds have small limits too (100 cmds).
-echo ' # Handle all the #undef templates' >>$CONFIG_STATUS
-rm -f conftest.tail
-while grep . conftest.undefs >/dev/null
-do
- # Write a limited-size here document to $tmp/undefs.sed.
- echo ' cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
- # Speed up: don't consider the non `#undef'
- echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS
- # Work around the forget-to-reset-the-flag bug.
- echo 't clr' >>$CONFIG_STATUS
- echo ': clr' >>$CONFIG_STATUS
- sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS
- echo 'CEOF
- sed -f $tmp/undefs.sed $tmp/in >$tmp/out
- rm -f $tmp/in
- mv $tmp/out $tmp/in
-' >>$CONFIG_STATUS
- sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail
- rm -f conftest.undefs
- mv conftest.tail conftest.undefs
-done
-rm -f conftest.undefs
-
-cat >>$CONFIG_STATUS <<\EOF
- # Let's still pretend it is `configure' which instantiates (i.e., don't
- # use $as_me), people would be surprised to read:
- # /* config.h. Generated automatically by config.status. */
- if test x"$ac_file" = x-; then
- echo "/* Generated automatically by configure. */" >$tmp/config.h
- else
- echo "/* $ac_file. Generated automatically by configure. */" >$tmp/config.h
- fi
- cat $tmp/in >>$tmp/config.h
- rm -f $tmp/in
- if test x"$ac_file" != x-; then
- if cmp -s $ac_file $tmp/config.h 2>/dev/null; then
- { echo "$as_me:5782: $ac_file is unchanged" >&5
-echo "$as_me: $ac_file is unchanged" >&6;}
- else
- ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$ac_file" : 'X\(//\)[^/]' \| \
- X"$ac_file" : 'X\(//\)$' \| \
- X"$ac_file" : 'X\(/\)' \| \
- . : '\(.\)' 2>/dev/null ||
-echo X"$ac_file" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
- /^X\(\/\/\)$/{ s//\1/; q; }
- /^X\(\/\).*/{ s//\1/; q; }
- s/.*/./; q'`
- if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
- { case "$ac_dir" in
- [\\/]* | ?:[\\/]* ) as_incr_dir=;;
- *) as_incr_dir=.;;
-esac
-as_dummy="$ac_dir"
-for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do
- case $as_mkdir_dir in
- # Skip DOS drivespec
- ?:) as_incr_dir=$as_mkdir_dir ;;
- *)
- as_incr_dir=$as_incr_dir/$as_mkdir_dir
- test -d "$as_incr_dir" || mkdir "$as_incr_dir"
- ;;
- esac
-done; }
-
- fi
- rm -f $ac_file
- mv $tmp/config.h $ac_file
- fi
- else
- cat $tmp/config.h
- rm -f $tmp/config.h
- fi
-done
-EOF
-cat >>$CONFIG_STATUS <<\EOF
-
-#
-# CONFIG_COMMANDS section.
-#
-for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue
- ac_dest=`echo "$ac_file" | sed 's,:.*,,'`
- ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'`
-
- case $ac_dest in
- default )
-# Makefile uses this timestamp file to record whether config.h is up to date.
-echo > stamp-h
- ;;
- esac
-done
-EOF
-
-cat >>$CONFIG_STATUS <<\EOF
-
-{ (exit 0); exit 0; }
-EOF
-chmod +x $CONFIG_STATUS
-ac_clean_files=$ac_clean_files_save
-
-# configure is writing to config.log, and then calls config.status.
-# config.status does its own redirection, appending to config.log.
-# Unfortunately, on DOS this fails, as config.log is still kept open
-# by configure, so config.status won't be able to write to it; its
-# output is simply discarded. So we exec the FD to /dev/null,
-# effectively closing config.log, so it can be properly (re)opened and
-# appended to by config.status. When coming back to configure, we
-# need to make the FD available again.
-if test "$no_create" != yes; then
- ac_cs_success=:
- exec 5>/dev/null
- $SHELL $CONFIG_STATUS || ac_cs_success=false
- exec 5>>config.log
- # Use ||, not &&, to avoid exiting from the if with $? = 1, which
- # would make configure fail if this is the last instruction.
- $ac_cs_success || { (exit 1); exit 1; }
-fi
-
diff --git a/readline-4.3/configure.in b/readline-4.3/configure.in
deleted file mode 100644
index bc78f8a..0000000
--- a/readline-4.3/configure.in
+++ /dev/null
@@ -1,206 +0,0 @@
-dnl
-dnl Configure script for readline library
-dnl
-dnl report bugs to chet@po.cwru.edu
-dnl
-dnl Process this file with autoconf to produce a configure script.
-AC_REVISION([for Readline 4.3, version 2.45, from autoconf version] AC_ACVERSION)
-
-AC_INIT(readline, 4.3, bug-readline@gnu.org)
-
-dnl make sure we are using a recent autoconf version
-AC_PREREQ(2.50)
-
-AC_CONFIG_SRCDIR(readline.h)
-AC_CONFIG_AUX_DIR(./support)
-AC_CONFIG_HEADERS(config.h)
-
-dnl update the value of RL_READLINE_VERSION in readline.h when this changes
-LIBVERSION=4.3
-
-AC_CANONICAL_HOST
-
-dnl configure defaults
-opt_curses=no
-
-dnl arguments to configure
-AC_ARG_WITH(curses, AC_HELP_STRING([--with-curses], [use the curses library instead of the termcap library]), opt_curses=$withval)
-
-if test "$opt_curses" = "yes"; then
- prefer_curses=yes
-fi
-
-dnl option parsing for optional features
-opt_static_libs=yes
-opt_shared_libs=yes
-
-AC_ARG_ENABLE(shared, AC_HELP_STRING([--enable-shared], [build shared libraries [[default=YES]]]), opt_shared_libs=$enableval)
-AC_ARG_ENABLE(static, AC_HELP_STRING([--enable-static], [build static libraries [[default=YES]]]), opt_static_libs=$enableval)
-
-echo ""
-echo "Beginning configuration for readline-$LIBVERSION for ${host_cpu}-${host_vendor}-${host_os}"
-echo ""
-
-# We want these before the checks, so the checks can modify their values.
-test -z "$CFLAGS" && CFLAGS=-g auto_cflags=1
-
-AC_PROG_MAKE_SET
-AC_PROG_CC
-dnl AC_AIX
-AC_MINIX
-
-# If we're using gcc and the user hasn't specified CFLAGS, add -O to CFLAGS.
-test -n "$GCC" && test -n "$auto_cflags" && CFLAGS="$CFLAGS -O"
-
-AC_PROG_GCC_TRADITIONAL
-AC_PROG_INSTALL
-AC_CHECK_PROG(AR, ar, , ar)
-dnl Set default for ARFLAGS, since autoconf does not have a macro for it.
-dnl This allows people to set it when running configure or make
-test -n "$ARFLAGS" || ARFLAGS="cr"
-AC_PROG_RANLIB
-
-MAKE_SHELL=/bin/sh
-AC_SUBST(MAKE_SHELL)
-
-AC_C_CONST
-AC_C_PROTOTYPES
-AC_C_CHAR_UNSIGNED
-
-AC_TYPE_SIGNAL
-
-AC_TYPE_SIZE_T
-AC_CHECK_TYPE(ssize_t, int)
-
-AC_HEADER_STAT
-AC_HEADER_DIRENT
-
-AC_CHECK_FUNCS(lstat memmove putenv select setenv setlocale \
- strcasecmp strpbrk tcgetattr vsnprintf isascii isxdigit)
-
-AC_FUNC_STRCOLL
-
-AC_CHECK_HEADERS(unistd.h stdlib.h varargs.h stdarg.h string.h strings.h \
- limits.h sys/ptem.h sys/pte.h sys/stream.h sys/select.h \
- termcap.h termios.h termio.h sys/file.h locale.h memory.h )
-
-BASH_SYS_SIGNAL_VINTAGE
-BASH_SYS_REINSTALL_SIGHANDLERS
-
-BASH_FUNC_POSIX_SETJMP
-BASH_FUNC_LSTAT
-BASH_FUNC_STRCOLL
-
-BASH_CHECK_GETPW_FUNCS
-
-AC_HEADER_TIOCGWINSZ
-
-BASH_TYPE_SIGHANDLER
-BASH_HAVE_TIOCSTAT
-BASH_HAVE_FIONREAD
-BASH_CHECK_SPEED_T
-BASH_STRUCT_WINSIZE
-BASH_STRUCT_DIRENT_D_INO
-BASH_STRUCT_DIRENT_D_FILENO
-
-dnl yuck
-case "$host_os" in
-aix*) prefer_curses=yes ;;
-esac
-BASH_CHECK_LIB_TERMCAP
-if test "$TERMCAP_LIB" = "./lib/termcap/libtermcap.a"; then
- if test "$prefer_curses" = yes; then
- TERMCAP_LIB=-lcurses
- else
- TERMCAP_LIB=-ltermcap #default
- fi
-fi
-
-BASH_CHECK_MULTIBYTE
-
-case "$host_cpu" in
-*cray*) LOCAL_CFLAGS=-DCRAY ;;
-*s390*) LOCAL_CFLAGS=-fsigned-char ;;
-esac
-
-case "$host_os" in
-isc*) LOCAL_CFLAGS=-Disc386 ;;
-esac
-
-# shared library configuration section
-#
-# Shared object configuration section. These values are generated by
-# ${srcdir}/support/shobj-conf
-#
-if test -f ${srcdir}/support/shobj-conf; then
- AC_MSG_CHECKING(configuration for building shared libraries)
- eval `${CONFIG_SHELL-/bin/sh} ${srcdir}/support/shobj-conf -C "${CC}" -c ${host_cpu} -o ${host_os} -v ${host_vendor}`
- AC_SUBST(SHOBJ_CC)
- AC_SUBST(SHOBJ_CFLAGS)
- AC_SUBST(SHOBJ_LD)
- AC_SUBST(SHOBJ_LDFLAGS)
- AC_SUBST(SHOBJ_XLDFLAGS)
- AC_SUBST(SHOBJ_LIBS)
- AC_SUBST(SHOBJ_STATUS)
- AC_SUBST(SHLIB_STATUS)
- AC_SUBST(SHLIB_XLDFLAGS)
- AC_SUBST(SHLIB_LIBSUFF)
- AC_SUBST(SHLIB_LIBVERSION)
- AC_SUBST(SHLIB_LIBS)
- AC_MSG_RESULT($SHLIB_STATUS)
-
- # SHLIB_STATUS is either `supported' or `unsupported'. If it's
- # `unsupported', turn off any default shared library building
- if test "$SHLIB_STATUS" = 'unsupported'; then
- opt_shared_libs=no
- fi
-
- # shared library versioning
- # quoted for m4 so I can use character classes
- SHLIB_MAJOR=[`expr "$LIBVERSION" : '\([0-9]\)\..*'`]
- SHLIB_MINOR=[`expr "$LIBVERSION" : '[0-9]\.\([0-9]\).*'`]
- AC_SUBST(SHLIB_MAJOR)
- AC_SUBST(SHLIB_MINOR)
-fi
-
-if test "$opt_static_libs" = "yes"; then
- STATIC_TARGET=static
- STATIC_INSTALL_TARGET=install-static
-fi
-if test "$opt_shared_libs" = "yes"; then
- SHARED_TARGET=shared
- SHARED_INSTALL_TARGET=install-shared
-fi
-
-AC_SUBST(STATIC_TARGET)
-AC_SUBST(SHARED_TARGET)
-AC_SUBST(STATIC_INSTALL_TARGET)
-AC_SUBST(SHARED_INSTALL_TARGET)
-
-case "$host_os" in
-msdosdjgpp*) BUILD_DIR=`pwd.exe` ;; # to prevent //d/path/file
-*) BUILD_DIR=`pwd` ;;
-esac
-
-AC_SUBST(BUILD_DIR)
-
-AC_SUBST(CFLAGS)
-AC_SUBST(LOCAL_CFLAGS)
-AC_SUBST(LOCAL_LDFLAGS)
-AC_SUBST(LOCAL_DEFS)
-
-AC_SUBST(AR)
-AC_SUBST(ARFLAGS)
-
-AC_SUBST(host_cpu)
-AC_SUBST(host_os)
-
-AC_SUBST(LIBVERSION)
-
-AC_SUBST(TERMCAP_LIB)
-
-AC_OUTPUT([Makefile doc/Makefile examples/Makefile shlib/Makefile],
-[
-# Makefile uses this timestamp file to record whether config.h is up to date.
-echo > stamp-h
-])
diff --git a/readline-4.3/display.c b/readline-4.3/display.c
deleted file mode 100644
index 1488036..0000000
--- a/readline-4.3/display.c
+++ /dev/null
@@ -1,2196 +0,0 @@
-/* display.c -- readline redisplay facility. */
-
-/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <sys/types.h>
-
-#if defined (HAVE_UNISTD_H)
-# include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-
-#include "posixstat.h"
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#include <stdio.h>
-
-/* System-specific feature definitions and include files. */
-#include "rldefs.h"
-#include "rlmbutil.h"
-
-/* Termcap library stuff. */
-#include "tcap.h"
-
-/* Some standard library routines. */
-#include "readline.h"
-#include "history.h"
-
-#include "rlprivate.h"
-#include "xmalloc.h"
-
-#if !defined (strchr) && !defined (__STDC__)
-extern char *strchr (), *strrchr ();
-#endif /* !strchr && !__STDC__ */
-
-#if defined (HACK_TERMCAP_MOTION)
-extern char *_rl_term_forward_char;
-#endif
-
-static void update_line PARAMS((char *, char *, int, int, int, int));
-static void space_to_eol PARAMS((int));
-static void delete_chars PARAMS((int));
-static void insert_some_chars PARAMS((char *, int, int));
-static void cr PARAMS((void));
-
-#if defined (HANDLE_MULTIBYTE)
-static int _rl_col_width PARAMS((char *, int, int));
-static int *_rl_wrapped_line;
-#else
-# define _rl_col_width(l, s, e) (((e) <= (s)) ? 0 : (e) - (s))
-#endif
-
-static int *inv_lbreaks, *vis_lbreaks;
-static int inv_lbsize, vis_lbsize;
-
-/* Heuristic used to decide whether it is faster to move from CUR to NEW
- by backing up or outputting a carriage return and moving forward. */
-#define CR_FASTER(new, cur) (((new) + 1) < ((cur) - (new)))
-
-/* **************************************************************** */
-/* */
-/* Display stuff */
-/* */
-/* **************************************************************** */
-
-/* This is the stuff that is hard for me. I never seem to write good
- display routines in C. Let's see how I do this time. */
-
-/* (PWP) Well... Good for a simple line updater, but totally ignores
- the problems of input lines longer than the screen width.
-
- update_line and the code that calls it makes a multiple line,
- automatically wrapping line update. Careful attention needs
- to be paid to the vertical position variables. */
-
-/* Keep two buffers; one which reflects the current contents of the
- screen, and the other to draw what we think the new contents should
- be. Then compare the buffers, and make whatever changes to the
- screen itself that we should. Finally, make the buffer that we
- just drew into be the one which reflects the current contents of the
- screen, and place the cursor where it belongs.
-
- Commands that want to can fix the display themselves, and then let
- this function know that the display has been fixed by setting the
- RL_DISPLAY_FIXED variable. This is good for efficiency. */
-
-/* Application-specific redisplay function. */
-rl_voidfunc_t *rl_redisplay_function = rl_redisplay;
-
-/* Global variables declared here. */
-/* What YOU turn on when you have handled all redisplay yourself. */
-int rl_display_fixed = 0;
-
-int _rl_suppress_redisplay = 0;
-
-/* The stuff that gets printed out before the actual text of the line.
- This is usually pointing to rl_prompt. */
-char *rl_display_prompt = (char *)NULL;
-
-/* Pseudo-global variables declared here. */
-/* The visible cursor position. If you print some text, adjust this. */
-int _rl_last_c_pos = 0;
-int _rl_last_v_pos = 0;
-
-/* Number of lines currently on screen minus 1. */
-int _rl_vis_botlin = 0;
-
-/* Variables used only in this file. */
-/* The last left edge of text that was displayed. This is used when
- doing horizontal scrolling. It shifts in thirds of a screenwidth. */
-static int last_lmargin;
-
-/* The line display buffers. One is the line currently displayed on
- the screen. The other is the line about to be displayed. */
-static char *visible_line = (char *)NULL;
-static char *invisible_line = (char *)NULL;
-
-/* A buffer for `modeline' messages. */
-static char msg_buf[128];
-
-/* Non-zero forces the redisplay even if we thought it was unnecessary. */
-static int forced_display;
-
-/* Default and initial buffer size. Can grow. */
-static int line_size = 1024;
-
-/* Variables to keep track of the expanded prompt string, which may
- include invisible characters. */
-
-static char *local_prompt, *local_prompt_prefix;
-static int prompt_visible_length, prompt_prefix_length;
-
-/* The number of invisible characters in the line currently being
- displayed on the screen. */
-static int visible_wrap_offset;
-
-/* The number of invisible characters in the prompt string. Static so it
- can be shared between rl_redisplay and update_line */
-static int wrap_offset;
-
-/* The index of the last invisible character in the prompt string. */
-static int prompt_last_invisible;
-
-/* The length (buffer offset) of the first line of the last (possibly
- multi-line) buffer displayed on the screen. */
-static int visible_first_line_len;
-
-/* Number of invisible characters on the first physical line of the prompt.
- Only valid when the number of physical characters in the prompt exceeds
- (or is equal to) _rl_screenwidth. */
-static int prompt_invis_chars_first_line;
-
-static int prompt_last_screen_line;
-
-/* Expand the prompt string S and return the number of visible
- characters in *LP, if LP is not null. This is currently more-or-less
- a placeholder for expansion. LIP, if non-null is a place to store the
- index of the last invisible character in the returned string. NIFLP,
- if non-zero, is a place to store the number of invisible characters in
- the first prompt line. */
-
-/* Current implementation:
- \001 (^A) start non-visible characters
- \002 (^B) end non-visible characters
- all characters except \001 and \002 (following a \001) are copied to
- the returned string; all characters except those between \001 and
- \002 are assumed to be `visible'. */
-
-static char *
-expand_prompt (pmt, lp, lip, niflp)
- char *pmt;
- int *lp, *lip, *niflp;
-{
- char *r, *ret, *p;
- int l, rl, last, ignoring, ninvis, invfl;
-
- /* Short-circuit if we can. */
- if (strchr (pmt, RL_PROMPT_START_IGNORE) == 0)
- {
- r = savestring (pmt);
- if (lp)
- *lp = strlen (r);
- return r;
- }
-
- l = strlen (pmt);
- r = ret = (char *)xmalloc (l + 1);
-
- invfl = 0; /* invisible chars in first line of prompt */
-
- for (rl = ignoring = last = ninvis = 0, p = pmt; p && *p; p++)
- {
- /* This code strips the invisible character string markers
- RL_PROMPT_START_IGNORE and RL_PROMPT_END_IGNORE */
- if (*p == RL_PROMPT_START_IGNORE)
- {
- ignoring++;
- continue;
- }
- else if (ignoring && *p == RL_PROMPT_END_IGNORE)
- {
- ignoring = 0;
- last = r - ret - 1;
- continue;
- }
- else
- {
- *r++ = *p;
- if (!ignoring)
- rl++;
- else
- ninvis++;
- if (rl == _rl_screenwidth)
- invfl = ninvis;
- }
- }
-
- if (rl < _rl_screenwidth)
- invfl = ninvis;
-
- *r = '\0';
- if (lp)
- *lp = rl;
- if (lip)
- *lip = last;
- if (niflp)
- *niflp = invfl;
- return ret;
-}
-
-/* Just strip out RL_PROMPT_START_IGNORE and RL_PROMPT_END_IGNORE from
- PMT and return the rest of PMT. */
-char *
-_rl_strip_prompt (pmt)
- char *pmt;
-{
- char *ret;
-
- ret = expand_prompt (pmt, (int *)NULL, (int *)NULL, (int *)NULL);
- return ret;
-}
-
-/*
- * Expand the prompt string into the various display components, if
- * necessary.
- *
- * local_prompt = expanded last line of string in rl_display_prompt
- * (portion after the final newline)
- * local_prompt_prefix = portion before last newline of rl_display_prompt,
- * expanded via expand_prompt
- * prompt_visible_length = number of visible characters in local_prompt
- * prompt_prefix_length = number of visible characters in local_prompt_prefix
- *
- * This function is called once per call to readline(). It may also be
- * called arbitrarily to expand the primary prompt.
- *
- * The return value is the number of visible characters on the last line
- * of the (possibly multi-line) prompt.
- */
-int
-rl_expand_prompt (prompt)
- char *prompt;
-{
- char *p, *t;
- int c;
-
- /* Clear out any saved values. */
- FREE (local_prompt);
- FREE (local_prompt_prefix);
-
- local_prompt = local_prompt_prefix = (char *)0;
- prompt_last_invisible = prompt_visible_length = 0;
-
- if (prompt == 0 || *prompt == 0)
- return (0);
-
- p = strrchr (prompt, '\n');
- if (!p)
- {
- /* The prompt is only one logical line, though it might wrap. */
- local_prompt = expand_prompt (prompt, &prompt_visible_length,
- &prompt_last_invisible,
- &prompt_invis_chars_first_line);
- local_prompt_prefix = (char *)0;
- return (prompt_visible_length);
- }
- else
- {
- /* The prompt spans multiple lines. */
- t = ++p;
- local_prompt = expand_prompt (p, &prompt_visible_length,
- &prompt_last_invisible,
- &prompt_invis_chars_first_line);
- c = *t; *t = '\0';
- /* The portion of the prompt string up to and including the
- final newline is now null-terminated. */
- local_prompt_prefix = expand_prompt (prompt, &prompt_prefix_length,
- (int *)NULL,
- &prompt_invis_chars_first_line);
- *t = c;
- return (prompt_prefix_length);
- }
-}
-
-/* Initialize the VISIBLE_LINE and INVISIBLE_LINE arrays, and their associated
- arrays of line break markers. MINSIZE is the minimum size of VISIBLE_LINE
- and INVISIBLE_LINE; if it is greater than LINE_SIZE, LINE_SIZE is
- increased. If the lines have already been allocated, this ensures that
- they can hold at least MINSIZE characters. */
-static void
-init_line_structures (minsize)
- int minsize;
-{
- register int n;
-
- if (invisible_line == 0) /* initialize it */
- {
- if (line_size < minsize)
- line_size = minsize;
- visible_line = (char *)xmalloc (line_size);
- invisible_line = (char *)xmalloc (line_size);
- }
- else if (line_size < minsize) /* ensure it can hold MINSIZE chars */
- {
- line_size *= 2;
- if (line_size < minsize)
- line_size = minsize;
- visible_line = (char *)xrealloc (visible_line, line_size);
- invisible_line = (char *)xrealloc (invisible_line, line_size);
- }
-
- for (n = minsize; n < line_size; n++)
- {
- visible_line[n] = 0;
- invisible_line[n] = 1;
- }
-
- if (vis_lbreaks == 0)
- {
- /* should be enough. */
- inv_lbsize = vis_lbsize = 256;
- inv_lbreaks = (int *)xmalloc (inv_lbsize * sizeof (int));
- vis_lbreaks = (int *)xmalloc (vis_lbsize * sizeof (int));
-#if defined (HANDLE_MULTIBYTE)
- _rl_wrapped_line = (int *)xmalloc (vis_lbsize * sizeof (int));
-#endif
- inv_lbreaks[0] = vis_lbreaks[0] = 0;
- }
-}
-
-/* Basic redisplay algorithm. */
-void
-rl_redisplay ()
-{
- register int in, out, c, linenum, cursor_linenum;
- register char *line;
- int c_pos, inv_botlin, lb_botlin, lb_linenum;
- int newlines, lpos, temp;
- char *prompt_this_line;
-#if defined (HANDLE_MULTIBYTE)
- wchar_t wc;
- size_t wc_bytes;
- int wc_width;
- mbstate_t ps;
- int _rl_wrapped_multicolumn = 0;
-#endif
-
- if (!readline_echoing_p)
- return;
-
- if (!rl_display_prompt)
- rl_display_prompt = "";
-
- if (invisible_line == 0)
- {
- init_line_structures (0);
- rl_on_new_line ();
- }
-
- /* Draw the line into the buffer. */
- c_pos = -1;
-
- line = invisible_line;
- out = inv_botlin = 0;
-
- /* Mark the line as modified or not. We only do this for history
- lines. */
- if (_rl_mark_modified_lines && current_history () && rl_undo_list)
- {
- line[out++] = '*';
- line[out] = '\0';
- }
-
- /* If someone thought that the redisplay was handled, but the currently
- visible line has a different modification state than the one about
- to become visible, then correct the caller's misconception. */
- if (visible_line[0] != invisible_line[0])
- rl_display_fixed = 0;
-
- /* If the prompt to be displayed is the `primary' readline prompt (the
- one passed to readline()), use the values we have already expanded.
- If not, use what's already in rl_display_prompt. WRAP_OFFSET is the
- number of non-visible characters in the prompt string. */
- if (rl_display_prompt == rl_prompt || local_prompt)
- {
- int local_len = local_prompt ? strlen (local_prompt) : 0;
- if (local_prompt_prefix && forced_display)
- _rl_output_some_chars (local_prompt_prefix, strlen (local_prompt_prefix));
-
- if (local_len > 0)
- {
- temp = local_len + out + 2;
- if (temp >= line_size)
- {
- line_size = (temp + 1024) - (temp % 1024);
- visible_line = (char *)xrealloc (visible_line, line_size);
- line = invisible_line = (char *)xrealloc (invisible_line, line_size);
- }
- strncpy (line + out, local_prompt, local_len);
- out += local_len;
- }
- line[out] = '\0';
- wrap_offset = local_len - prompt_visible_length;
- }
- else
- {
- int pmtlen;
- prompt_this_line = strrchr (rl_display_prompt, '\n');
- if (!prompt_this_line)
- prompt_this_line = rl_display_prompt;
- else
- {
- prompt_this_line++;
- pmtlen = prompt_this_line - rl_display_prompt; /* temp var */
- if (forced_display)
- {
- _rl_output_some_chars (rl_display_prompt, pmtlen);
- /* Make sure we are at column zero even after a newline,
- regardless of the state of terminal output processing. */
- if (pmtlen < 2 || prompt_this_line[-2] != '\r')
- cr ();
- }
- }
-
- pmtlen = strlen (prompt_this_line);
- temp = pmtlen + out + 2;
- if (temp >= line_size)
- {
- line_size = (temp + 1024) - (temp % 1024);
- visible_line = (char *)xrealloc (visible_line, line_size);
- line = invisible_line = (char *)xrealloc (invisible_line, line_size);
- }
- strncpy (line + out, prompt_this_line, pmtlen);
- out += pmtlen;
- line[out] = '\0';
- wrap_offset = prompt_invis_chars_first_line = 0;
- }
-
-#define CHECK_INV_LBREAKS() \
- do { \
- if (newlines >= (inv_lbsize - 2)) \
- { \
- inv_lbsize *= 2; \
- inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \
- } \
- } while (0)
-
-#if defined (HANDLE_MULTIBYTE)
-#define CHECK_LPOS() \
- do { \
- lpos++; \
- if (lpos >= _rl_screenwidth) \
- { \
- if (newlines >= (inv_lbsize - 2)) \
- { \
- inv_lbsize *= 2; \
- inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \
- _rl_wrapped_line = (int *)xrealloc (_rl_wrapped_line, inv_lbsize * sizeof (int)); \
- } \
- inv_lbreaks[++newlines] = out; \
- _rl_wrapped_line[newlines] = _rl_wrapped_multicolumn; \
- lpos = 0; \
- } \
- } while (0)
-#else
-#define CHECK_LPOS() \
- do { \
- lpos++; \
- if (lpos >= _rl_screenwidth) \
- { \
- if (newlines >= (inv_lbsize - 2)) \
- { \
- inv_lbsize *= 2; \
- inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \
- } \
- inv_lbreaks[++newlines] = out; \
- lpos = 0; \
- } \
- } while (0)
-#endif
-
- /* inv_lbreaks[i] is where line i starts in the buffer. */
- inv_lbreaks[newlines = 0] = 0;
- lpos = out - wrap_offset;
-#if defined (HANDLE_MULTIBYTE)
- memset (_rl_wrapped_line, 0, vis_lbsize);
-#endif
-
- /* prompt_invis_chars_first_line is the number of invisible characters in
- the first physical line of the prompt.
- wrap_offset - prompt_invis_chars_first_line is the number of invis
- chars on the second line. */
-
- /* what if lpos is already >= _rl_screenwidth before we start drawing the
- contents of the command line? */
- while (lpos >= _rl_screenwidth)
- {
- /* fix from Darin Johnson <darin@acuson.com> for prompt string with
- invisible characters that is longer than the screen width. The
- prompt_invis_chars_first_line variable could be made into an array
- saying how many invisible characters there are per line, but that's
- probably too much work for the benefit gained. How many people have
- prompts that exceed two physical lines? */
- temp = ((newlines + 1) * _rl_screenwidth) +
-#if 0
- ((newlines == 0) ? prompt_invis_chars_first_line : 0) +
-#else
- ((newlines == 0 && local_prompt_prefix == 0) ? prompt_invis_chars_first_line : 0) +
-#endif
- ((newlines == 1) ? wrap_offset : 0);
-
- inv_lbreaks[++newlines] = temp;
- lpos -= _rl_screenwidth;
- }
-
- prompt_last_screen_line = newlines;
-
- /* Draw the rest of the line (after the prompt) into invisible_line, keeping
- track of where the cursor is (c_pos), the number of the line containing
- the cursor (lb_linenum), the last line number (lb_botlin and inv_botlin).
- It maintains an array of line breaks for display (inv_lbreaks).
- This handles expanding tabs for display and displaying meta characters. */
- lb_linenum = 0;
-#if defined (HANDLE_MULTIBYTE)
- in = 0;
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- memset (&ps, 0, sizeof (mbstate_t));
- wc_bytes = mbrtowc (&wc, rl_line_buffer, rl_end, &ps);
- }
- else
- wc_bytes = 1;
- while (in < rl_end)
-#else
- for (in = 0; in < rl_end; in++)
-#endif
- {
- c = (unsigned char)rl_line_buffer[in];
-
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- if (wc_bytes == (size_t)-1 || wc_bytes == (size_t)-2)
- {
- /* Byte sequence is invalid or shortened. Assume that the
- first byte represents a character. */
- wc_bytes = 1;
- /* Assume that a character occupies a single column. */
- wc_width = 1;
- memset (&ps, 0, sizeof (mbstate_t));
- }
- else if (wc_bytes == (size_t)0)
- break; /* Found '\0' */
- else
- {
- temp = wcwidth (wc);
- wc_width = (temp < 0) ? 1 : temp;
- }
- }
-#endif
-
- if (out + 8 >= line_size) /* XXX - 8 for \t */
- {
- line_size *= 2;
- visible_line = (char *)xrealloc (visible_line, line_size);
- invisible_line = (char *)xrealloc (invisible_line, line_size);
- line = invisible_line;
- }
-
- if (in == rl_point)
- {
- c_pos = out;
- lb_linenum = newlines;
- }
-
-#if defined (HANDLE_MULTIBYTE)
- if (META_CHAR (c) && _rl_output_meta_chars == 0) /* XXX - clean up */
-#else
- if (META_CHAR (c))
-#endif
- {
- if (_rl_output_meta_chars == 0)
- {
- sprintf (line + out, "\\%o", c);
-
- if (lpos + 4 >= _rl_screenwidth)
- {
- temp = _rl_screenwidth - lpos;
- CHECK_INV_LBREAKS ();
- inv_lbreaks[++newlines] = out + temp;
- lpos = 4 - temp;
- }
- else
- lpos += 4;
-
- out += 4;
- }
- else
- {
- line[out++] = c;
- CHECK_LPOS();
- }
- }
-#if defined (DISPLAY_TABS)
- else if (c == '\t')
- {
- register int newout;
-
-#if 0
- newout = (out | (int)7) + 1;
-#else
- newout = out + 8 - lpos % 8;
-#endif
- temp = newout - out;
- if (lpos + temp >= _rl_screenwidth)
- {
- register int temp2;
- temp2 = _rl_screenwidth - lpos;
- CHECK_INV_LBREAKS ();
- inv_lbreaks[++newlines] = out + temp2;
- lpos = temp - temp2;
- while (out < newout)
- line[out++] = ' ';
- }
- else
- {
- while (out < newout)
- line[out++] = ' ';
- lpos += temp;
- }
- }
-#endif
- else if (c == '\n' && _rl_horizontal_scroll_mode == 0 && _rl_term_up && *_rl_term_up)
- {
- line[out++] = '\0'; /* XXX - sentinel */
- CHECK_INV_LBREAKS ();
- inv_lbreaks[++newlines] = out;
- lpos = 0;
- }
- else if (CTRL_CHAR (c) || c == RUBOUT)
- {
- line[out++] = '^';
- CHECK_LPOS();
- line[out++] = CTRL_CHAR (c) ? UNCTRL (c) : '?';
- CHECK_LPOS();
- }
- else
- {
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- register int i;
-
- _rl_wrapped_multicolumn = 0;
-
- if (_rl_screenwidth < lpos + wc_width)
- for (i = lpos; i < _rl_screenwidth; i++)
- {
- /* The space will be removed in update_line() */
- line[out++] = ' ';
- _rl_wrapped_multicolumn++;
- CHECK_LPOS();
- }
- if (in == rl_point)
- {
- c_pos = out;
- lb_linenum = newlines;
- }
- for (i = in; i < in+wc_bytes; i++)
- line[out++] = rl_line_buffer[i];
- for (i = 0; i < wc_width; i++)
- CHECK_LPOS();
- }
- else
- {
- line[out++] = c;
- CHECK_LPOS();
- }
-#else
- line[out++] = c;
- CHECK_LPOS();
-#endif
- }
-
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- in += wc_bytes;
- wc_bytes = mbrtowc (&wc, rl_line_buffer + in, rl_end - in, &ps);
- }
- else
- in++;
-#endif
-
- }
- line[out] = '\0';
- if (c_pos < 0)
- {
- c_pos = out;
- lb_linenum = newlines;
- }
-
- inv_botlin = lb_botlin = newlines;
- CHECK_INV_LBREAKS ();
- inv_lbreaks[newlines+1] = out;
- cursor_linenum = lb_linenum;
-
- /* C_POS == position in buffer where cursor should be placed.
- CURSOR_LINENUM == line number where the cursor should be placed. */
-
- /* PWP: now is when things get a bit hairy. The visible and invisible
- line buffers are really multiple lines, which would wrap every
- (screenwidth - 1) characters. Go through each in turn, finding
- the changed region and updating it. The line order is top to bottom. */
-
- /* If we can move the cursor up and down, then use multiple lines,
- otherwise, let long lines display in a single terminal line, and
- horizontally scroll it. */
-
- if (_rl_horizontal_scroll_mode == 0 && _rl_term_up && *_rl_term_up)
- {
- int nleft, pos, changed_screen_line;
-
- if (!rl_display_fixed || forced_display)
- {
- forced_display = 0;
-
- /* If we have more than a screenful of material to display, then
- only display a screenful. We should display the last screen,
- not the first. */
- if (out >= _rl_screenchars)
- {
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- out = _rl_find_prev_mbchar (line, _rl_screenchars, MB_FIND_ANY);
- else
- out = _rl_screenchars - 1;
- }
-
- /* The first line is at character position 0 in the buffer. The
- second and subsequent lines start at inv_lbreaks[N], offset by
- OFFSET (which has already been calculated above). */
-
-#define W_OFFSET(line, offset) ((line) == 0 ? offset : 0)
-#define VIS_LLEN(l) ((l) > _rl_vis_botlin ? 0 : (vis_lbreaks[l+1] - vis_lbreaks[l]))
-#define INV_LLEN(l) (inv_lbreaks[l+1] - inv_lbreaks[l])
-#define VIS_CHARS(line) (visible_line + vis_lbreaks[line])
-#define VIS_LINE(line) ((line) > _rl_vis_botlin) ? "" : VIS_CHARS(line)
-#define INV_LINE(line) (invisible_line + inv_lbreaks[line])
-
- /* For each line in the buffer, do the updating display. */
- for (linenum = 0; linenum <= inv_botlin; linenum++)
- {
- update_line (VIS_LINE(linenum), INV_LINE(linenum), linenum,
- VIS_LLEN(linenum), INV_LLEN(linenum), inv_botlin);
-
- /* If this is the line with the prompt, we might need to
- compensate for invisible characters in the new line. Do
- this only if there is not more than one new line (which
- implies that we completely overwrite the old visible line)
- and the new line is shorter than the old. Make sure we are
- at the end of the new line before clearing. */
- if (linenum == 0 &&
- inv_botlin == 0 && _rl_last_c_pos == out &&
- (wrap_offset > visible_wrap_offset) &&
- (_rl_last_c_pos < visible_first_line_len))
- {
- nleft = _rl_screenwidth + wrap_offset - _rl_last_c_pos;
- if (nleft)
- _rl_clear_to_eol (nleft);
- }
-
- /* Since the new first line is now visible, save its length. */
- if (linenum == 0)
- visible_first_line_len = (inv_botlin > 0) ? inv_lbreaks[1] : out - wrap_offset;
- }
-
- /* We may have deleted some lines. If so, clear the left over
- blank ones at the bottom out. */
- if (_rl_vis_botlin > inv_botlin)
- {
- char *tt;
- for (; linenum <= _rl_vis_botlin; linenum++)
- {
- tt = VIS_CHARS (linenum);
- _rl_move_vert (linenum);
- _rl_move_cursor_relative (0, tt);
- _rl_clear_to_eol
- ((linenum == _rl_vis_botlin) ? strlen (tt) : _rl_screenwidth);
- }
- }
- _rl_vis_botlin = inv_botlin;
-
- /* CHANGED_SCREEN_LINE is set to 1 if we have moved to a
- different screen line during this redisplay. */
- changed_screen_line = _rl_last_v_pos != cursor_linenum;
- if (changed_screen_line)
- {
- _rl_move_vert (cursor_linenum);
- /* If we moved up to the line with the prompt using _rl_term_up,
- the physical cursor position on the screen stays the same,
- but the buffer position needs to be adjusted to account
- for invisible characters. */
- if (cursor_linenum == 0 && wrap_offset)
- _rl_last_c_pos += wrap_offset;
- }
-
- /* We have to reprint the prompt if it contains invisible
- characters, since it's not generally OK to just reprint
- the characters from the current cursor position. But we
- only need to reprint it if the cursor is before the last
- invisible character in the prompt string. */
- nleft = prompt_visible_length + wrap_offset;
- if (cursor_linenum == 0 && wrap_offset > 0 && _rl_last_c_pos > 0 &&
- _rl_last_c_pos <= prompt_last_invisible && local_prompt)
- {
-#if defined (__MSDOS__)
- putc ('\r', rl_outstream);
-#else
- if (_rl_term_cr)
- tputs (_rl_term_cr, 1, _rl_output_character_function);
-#endif
- _rl_output_some_chars (local_prompt, nleft);
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- _rl_last_c_pos = _rl_col_width(local_prompt, 0, nleft);
- else
- _rl_last_c_pos = nleft;
- }
-
- /* Where on that line? And where does that line start
- in the buffer? */
- pos = inv_lbreaks[cursor_linenum];
- /* nleft == number of characters in the line buffer between the
- start of the line and the cursor position. */
- nleft = c_pos - pos;
-
- /* Since _rl_backspace() doesn't know about invisible characters in the
- prompt, and there's no good way to tell it, we compensate for
- those characters here and call _rl_backspace() directly. */
- if (wrap_offset && cursor_linenum == 0 && nleft < _rl_last_c_pos)
- {
- _rl_backspace (_rl_last_c_pos - nleft);
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- _rl_last_c_pos = _rl_col_width (&visible_line[pos], 0, nleft);
- else
- _rl_last_c_pos = nleft;
- }
-
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- _rl_move_cursor_relative (nleft, &invisible_line[pos]);
- else if (nleft != _rl_last_c_pos)
- _rl_move_cursor_relative (nleft, &invisible_line[pos]);
- }
- }
- else /* Do horizontal scrolling. */
- {
-#define M_OFFSET(margin, offset) ((margin) == 0 ? offset : 0)
- int lmargin, ndisp, nleft, phys_c_pos, t;
-
- /* Always at top line. */
- _rl_last_v_pos = 0;
-
- /* Compute where in the buffer the displayed line should start. This
- will be LMARGIN. */
-
- /* The number of characters that will be displayed before the cursor. */
- ndisp = c_pos - wrap_offset;
- nleft = prompt_visible_length + wrap_offset;
- /* Where the new cursor position will be on the screen. This can be
- longer than SCREENWIDTH; if it is, lmargin will be adjusted. */
- phys_c_pos = c_pos - (last_lmargin ? last_lmargin : wrap_offset);
- t = _rl_screenwidth / 3;
-
- /* If the number of characters had already exceeded the screenwidth,
- last_lmargin will be > 0. */
-
- /* If the number of characters to be displayed is more than the screen
- width, compute the starting offset so that the cursor is about
- two-thirds of the way across the screen. */
- if (phys_c_pos > _rl_screenwidth - 2)
- {
- lmargin = c_pos - (2 * t);
- if (lmargin < 0)
- lmargin = 0;
- /* If the left margin would be in the middle of a prompt with
- invisible characters, don't display the prompt at all. */
- if (wrap_offset && lmargin > 0 && lmargin < nleft)
- lmargin = nleft;
- }
- else if (ndisp < _rl_screenwidth - 2) /* XXX - was -1 */
- lmargin = 0;
- else if (phys_c_pos < 1)
- {
- /* If we are moving back towards the beginning of the line and
- the last margin is no longer correct, compute a new one. */
- lmargin = ((c_pos - 1) / t) * t; /* XXX */
- if (wrap_offset && lmargin > 0 && lmargin < nleft)
- lmargin = nleft;
- }
- else
- lmargin = last_lmargin;
-
- /* If the first character on the screen isn't the first character
- in the display line, indicate this with a special character. */
- if (lmargin > 0)
- line[lmargin] = '<';
-
- /* If SCREENWIDTH characters starting at LMARGIN do not encompass
- the whole line, indicate that with a special character at the
- right edge of the screen. If LMARGIN is 0, we need to take the
- wrap offset into account. */
- t = lmargin + M_OFFSET (lmargin, wrap_offset) + _rl_screenwidth;
- if (t < out)
- line[t - 1] = '>';
-
- if (!rl_display_fixed || forced_display || lmargin != last_lmargin)
- {
- forced_display = 0;
- update_line (&visible_line[last_lmargin],
- &invisible_line[lmargin],
- 0,
- _rl_screenwidth + visible_wrap_offset,
- _rl_screenwidth + (lmargin ? 0 : wrap_offset),
- 0);
-
- /* If the visible new line is shorter than the old, but the number
- of invisible characters is greater, and we are at the end of
- the new line, we need to clear to eol. */
- t = _rl_last_c_pos - M_OFFSET (lmargin, wrap_offset);
- if ((M_OFFSET (lmargin, wrap_offset) > visible_wrap_offset) &&
- (_rl_last_c_pos == out) &&
- t < visible_first_line_len)
- {
- nleft = _rl_screenwidth - t;
- _rl_clear_to_eol (nleft);
- }
- visible_first_line_len = out - lmargin - M_OFFSET (lmargin, wrap_offset);
- if (visible_first_line_len > _rl_screenwidth)
- visible_first_line_len = _rl_screenwidth;
-
- _rl_move_cursor_relative (c_pos - lmargin, &invisible_line[lmargin]);
- last_lmargin = lmargin;
- }
- }
- fflush (rl_outstream);
-
- /* Swap visible and non-visible lines. */
- {
- char *vtemp = visible_line;
- int *itemp = vis_lbreaks, ntemp = vis_lbsize;
-
- visible_line = invisible_line;
- invisible_line = vtemp;
-
- vis_lbreaks = inv_lbreaks;
- inv_lbreaks = itemp;
-
- vis_lbsize = inv_lbsize;
- inv_lbsize = ntemp;
-
- rl_display_fixed = 0;
- /* If we are displaying on a single line, and last_lmargin is > 0, we
- are not displaying any invisible characters, so set visible_wrap_offset
- to 0. */
- if (_rl_horizontal_scroll_mode && last_lmargin)
- visible_wrap_offset = 0;
- else
- visible_wrap_offset = wrap_offset;
- }
-}
-
-/* PWP: update_line() is based on finding the middle difference of each
- line on the screen; vis:
-
- /old first difference
- /beginning of line | /old last same /old EOL
- v v v v
-old: eddie> Oh, my little gruntle-buggy is to me, as lurgid as
-new: eddie> Oh, my little buggy says to me, as lurgid as
- ^ ^ ^ ^
- \beginning of line | \new last same \new end of line
- \new first difference
-
- All are character pointers for the sake of speed. Special cases for
- no differences, as well as for end of line additions must be handled.
-
- Could be made even smarter, but this works well enough */
-static void
-update_line (old, new, current_line, omax, nmax, inv_botlin)
- register char *old, *new;
- int current_line, omax, nmax, inv_botlin;
-{
- register char *ofd, *ols, *oe, *nfd, *nls, *ne;
- int temp, lendiff, wsatend, od, nd;
- int current_invis_chars;
- int col_lendiff, col_temp;
-#if defined (HANDLE_MULTIBYTE)
- mbstate_t ps_new, ps_old;
- int new_offset, old_offset, tmp;
-#endif
-
- /* If we're at the right edge of a terminal that supports xn, we're
- ready to wrap around, so do so. This fixes problems with knowing
- the exact cursor position and cut-and-paste with certain terminal
- emulators. In this calculation, TEMP is the physical screen
- position of the cursor. */
- temp = _rl_last_c_pos - W_OFFSET(_rl_last_v_pos, visible_wrap_offset);
- if (temp == _rl_screenwidth && _rl_term_autowrap && !_rl_horizontal_scroll_mode
- && _rl_last_v_pos == current_line - 1)
- {
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- wchar_t wc;
- mbstate_t ps;
- int tempwidth, bytes;
- size_t ret;
-
- /* This fixes only double-column characters, but if the wrapped
- character comsumes more than three columns, spaces will be
- inserted in the string buffer. */
- if (_rl_wrapped_line[current_line] > 0)
- _rl_clear_to_eol (_rl_wrapped_line[current_line]);
-
- memset (&ps, 0, sizeof (mbstate_t));
- ret = mbrtowc (&wc, new, MB_CUR_MAX, &ps);
- if (ret == (size_t)-1 || ret == (size_t)-2)
- {
- tempwidth = 1;
- ret = 1;
- }
- else if (ret == 0)
- tempwidth = 0;
- else
- tempwidth = wcwidth (wc);
-
- if (tempwidth > 0)
- {
- int count;
- bytes = ret;
- for (count = 0; count < bytes; count++)
- putc (new[count], rl_outstream);
- _rl_last_c_pos = tempwidth;
- _rl_last_v_pos++;
- memset (&ps, 0, sizeof (mbstate_t));
- ret = mbrtowc (&wc, old, MB_CUR_MAX, &ps);
- if (ret != 0 && bytes != 0)
- {
- if (ret == (size_t)-1 || ret == (size_t)-2)
- memmove (old+bytes, old+1, strlen (old+1));
- else
- memmove (old+bytes, old+ret, strlen (old+ret));
- memcpy (old, new, bytes);
- }
- }
- else
- {
- putc (' ', rl_outstream);
- _rl_last_c_pos = 1;
- _rl_last_v_pos++;
- if (old[0] && new[0])
- old[0] = new[0];
- }
- }
- else
-#endif
- {
- if (new[0])
- putc (new[0], rl_outstream);
- else
- putc (' ', rl_outstream);
- _rl_last_c_pos = 1; /* XXX */
- _rl_last_v_pos++;
- if (old[0] && new[0])
- old[0] = new[0];
- }
- }
-
-
- /* Find first difference. */
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- memset (&ps_new, 0, sizeof(mbstate_t));
- memset (&ps_old, 0, sizeof(mbstate_t));
-
- new_offset = old_offset = 0;
- for (ofd = old, nfd = new;
- (ofd - old < omax) && *ofd &&
- _rl_compare_chars(old, old_offset, &ps_old, new, new_offset, &ps_new); )
- {
- old_offset = _rl_find_next_mbchar (old, old_offset, 1, MB_FIND_ANY);
- new_offset = _rl_find_next_mbchar (new, new_offset, 1, MB_FIND_ANY);
- ofd = old + old_offset;
- nfd = new + new_offset;
- }
- }
- else
-#endif
- for (ofd = old, nfd = new;
- (ofd - old < omax) && *ofd && (*ofd == *nfd);
- ofd++, nfd++)
- ;
-
- /* Move to the end of the screen line. ND and OD are used to keep track
- of the distance between ne and new and oe and old, respectively, to
- move a subtraction out of each loop. */
- for (od = ofd - old, oe = ofd; od < omax && *oe; oe++, od++);
- for (nd = nfd - new, ne = nfd; nd < nmax && *ne; ne++, nd++);
-
- /* If no difference, continue to next line. */
- if (ofd == oe && nfd == ne)
- return;
-
- wsatend = 1; /* flag for trailing whitespace */
-
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- ols = old + _rl_find_prev_mbchar (old, oe - old, MB_FIND_ANY);
- nls = new + _rl_find_prev_mbchar (new, ne - new, MB_FIND_ANY);
- while ((ols > ofd) && (nls > nfd))
- {
- memset (&ps_old, 0, sizeof (mbstate_t));
- memset (&ps_new, 0, sizeof (mbstate_t));
-
- _rl_adjust_point (old, ols - old, &ps_old);
- _rl_adjust_point (new, nls - new, &ps_new);
-
- if (_rl_compare_chars (old, ols - old, &ps_old, new, nls - new, &ps_new) == 0)
- break;
-
- if (*ols == ' ')
- wsatend = 0;
-
- ols = old + _rl_find_prev_mbchar (old, ols - old, MB_FIND_ANY);
- nls = new + _rl_find_prev_mbchar (new, nls - new, MB_FIND_ANY);
- }
- }
- else
- {
-#endif /* HANDLE_MULTIBYTE */
- ols = oe - 1; /* find last same */
- nls = ne - 1;
- while ((ols > ofd) && (nls > nfd) && (*ols == *nls))
- {
- if (*ols != ' ')
- wsatend = 0;
- ols--;
- nls--;
- }
-#if defined (HANDLE_MULTIBYTE)
- }
-#endif
-
- if (wsatend)
- {
- ols = oe;
- nls = ne;
- }
-#if defined (HANDLE_MULTIBYTE)
- /* This may not work for stateful encoding, but who cares? To handle
- stateful encoding properly, we have to scan each string from the
- beginning and compare. */
- else if (_rl_compare_chars (ols, 0, NULL, nls, 0, NULL) == 0)
-#else
- else if (*ols != *nls)
-#endif
- {
- if (*ols) /* don't step past the NUL */
- {
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- ols = old + _rl_find_next_mbchar (old, ols - old, 1, MB_FIND_ANY);
- else
- ols++;
- }
- if (*nls)
- {
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- nls = new + _rl_find_next_mbchar (new, nls - new, 1, MB_FIND_ANY);
- else
- nls++;
- }
- }
-
- /* count of invisible characters in the current invisible line. */
- current_invis_chars = W_OFFSET (current_line, wrap_offset);
- if (_rl_last_v_pos != current_line)
- {
- _rl_move_vert (current_line);
- if (current_line == 0 && visible_wrap_offset)
- _rl_last_c_pos += visible_wrap_offset;
- }
-
- /* If this is the first line and there are invisible characters in the
- prompt string, and the prompt string has not changed, and the current
- cursor position is before the last invisible character in the prompt,
- and the index of the character to move to is past the end of the prompt
- string, then redraw the entire prompt string. We can only do this
- reliably if the terminal supports a `cr' capability.
-
- This is not an efficiency hack -- there is a problem with redrawing
- portions of the prompt string if they contain terminal escape
- sequences (like drawing the `unbold' sequence without a corresponding
- `bold') that manifests itself on certain terminals. */
-
- lendiff = local_prompt ? strlen (local_prompt) : 0;
- od = ofd - old; /* index of first difference in visible line */
- if (current_line == 0 && !_rl_horizontal_scroll_mode &&
- _rl_term_cr && lendiff > prompt_visible_length && _rl_last_c_pos > 0 &&
- od >= lendiff && _rl_last_c_pos <= prompt_last_invisible)
- {
-#if defined (__MSDOS__)
- putc ('\r', rl_outstream);
-#else
- tputs (_rl_term_cr, 1, _rl_output_character_function);
-#endif
- _rl_output_some_chars (local_prompt, lendiff);
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- _rl_last_c_pos = _rl_col_width (local_prompt, 0, lendiff);
- else
- _rl_last_c_pos = lendiff;
- }
-
- _rl_move_cursor_relative (od, old);
-
- /* if (len (new) > len (old))
- lendiff == difference in buffer
- col_lendiff == difference on screen
- When not using multibyte characters, these are equal */
- lendiff = (nls - nfd) - (ols - ofd);
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- col_lendiff = _rl_col_width (new, nfd - new, nls - new) - _rl_col_width (old, ofd - old, ols - old);
- else
- col_lendiff = lendiff;
-
- /* If we are changing the number of invisible characters in a line, and
- the spot of first difference is before the end of the invisible chars,
- lendiff needs to be adjusted. */
- if (current_line == 0 && !_rl_horizontal_scroll_mode &&
- current_invis_chars != visible_wrap_offset)
- {
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- lendiff += visible_wrap_offset - current_invis_chars;
- col_lendiff += visible_wrap_offset - current_invis_chars;
- }
- else
- {
- lendiff += visible_wrap_offset - current_invis_chars;
- col_lendiff = lendiff;
- }
- }
-
- /* Insert (diff (len (old), len (new)) ch. */
- temp = ne - nfd;
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- col_temp = _rl_col_width (new, nfd - new, ne - new);
- else
- col_temp = temp;
-
- if (col_lendiff > 0) /* XXX - was lendiff */
- {
- /* Non-zero if we're increasing the number of lines. */
- int gl = current_line >= _rl_vis_botlin && inv_botlin > _rl_vis_botlin;
- /* Sometimes it is cheaper to print the characters rather than
- use the terminal's capabilities. If we're growing the number
- of lines, make sure we actually cause the new line to wrap
- around on auto-wrapping terminals. */
- if (_rl_terminal_can_insert && ((2 * col_temp) >= col_lendiff || _rl_term_IC) && (!_rl_term_autowrap || !gl))
- {
- /* If lendiff > prompt_visible_length and _rl_last_c_pos == 0 and
- _rl_horizontal_scroll_mode == 1, inserting the characters with
- _rl_term_IC or _rl_term_ic will screw up the screen because of the
- invisible characters. We need to just draw them. */
- if (*ols && (!_rl_horizontal_scroll_mode || _rl_last_c_pos > 0 ||
- lendiff <= prompt_visible_length || !current_invis_chars))
- {
- insert_some_chars (nfd, lendiff, col_lendiff);
- _rl_last_c_pos += col_lendiff;
- }
- else if (*ols == 0)
- {
- /* At the end of a line the characters do not have to
- be "inserted". They can just be placed on the screen. */
- /* However, this screws up the rest of this block, which
- assumes you've done the insert because you can. */
- _rl_output_some_chars (nfd, lendiff);
- _rl_last_c_pos += col_lendiff;
- }
- else
- {
- /* We have horizontal scrolling and we are not inserting at
- the end. We have invisible characters in this line. This
- is a dumb update. */
- _rl_output_some_chars (nfd, temp);
- _rl_last_c_pos += col_temp;
- return;
- }
- /* Copy (new) chars to screen from first diff to last match. */
- temp = nls - nfd;
- if ((temp - lendiff) > 0)
- {
- _rl_output_some_chars (nfd + lendiff, temp - lendiff);
-#if 0
- _rl_last_c_pos += _rl_col_width (nfd+lendiff, 0, temp-lendiff) - col_lendiff;
-#else
- _rl_last_c_pos += _rl_col_width (nfd+lendiff, 0, temp-col_lendiff);
-#endif
- }
- }
- else
- {
- /* cannot insert chars, write to EOL */
- _rl_output_some_chars (nfd, temp);
- _rl_last_c_pos += col_temp;
- }
- }
- else /* Delete characters from line. */
- {
- /* If possible and inexpensive to use terminal deletion, then do so. */
- if (_rl_term_dc && (2 * col_temp) >= -col_lendiff)
- {
- /* If all we're doing is erasing the invisible characters in the
- prompt string, don't bother. It screws up the assumptions
- about what's on the screen. */
- if (_rl_horizontal_scroll_mode && _rl_last_c_pos == 0 &&
- -lendiff == visible_wrap_offset)
- col_lendiff = 0;
-
- if (col_lendiff)
- delete_chars (-col_lendiff); /* delete (diff) characters */
-
- /* Copy (new) chars to screen from first diff to last match */
- temp = nls - nfd;
- if (temp > 0)
- {
- _rl_output_some_chars (nfd, temp);
- _rl_last_c_pos += _rl_col_width (nfd, 0, temp);;
- }
- }
- /* Otherwise, print over the existing material. */
- else
- {
- if (temp > 0)
- {
- _rl_output_some_chars (nfd, temp);
- _rl_last_c_pos += col_temp;
- }
- lendiff = (oe - old) - (ne - new);
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- col_lendiff = _rl_col_width (old, 0, oe - old) - _rl_col_width (new, 0, ne - new);
- else
- col_lendiff = lendiff;
-
- if (col_lendiff)
- {
- if (_rl_term_autowrap && current_line < inv_botlin)
- space_to_eol (col_lendiff);
- else
- _rl_clear_to_eol (col_lendiff);
- }
- }
- }
-}
-
-/* Tell the update routines that we have moved onto a new (empty) line. */
-int
-rl_on_new_line ()
-{
- if (visible_line)
- visible_line[0] = '\0';
-
- _rl_last_c_pos = _rl_last_v_pos = 0;
- _rl_vis_botlin = last_lmargin = 0;
- if (vis_lbreaks)
- vis_lbreaks[0] = vis_lbreaks[1] = 0;
- visible_wrap_offset = 0;
- return 0;
-}
-
-/* Tell the update routines that we have moved onto a new line with the
- prompt already displayed. Code originally from the version of readline
- distributed with CLISP. */
-int
-rl_on_new_line_with_prompt ()
-{
- int prompt_size, i, l, real_screenwidth, newlines;
- char *prompt_last_line;
-
- /* Initialize visible_line and invisible_line to ensure that they can hold
- the already-displayed prompt. */
- prompt_size = strlen (rl_prompt) + 1;
- init_line_structures (prompt_size);
-
- /* Make sure the line structures hold the already-displayed prompt for
- redisplay. */
- strcpy (visible_line, rl_prompt);
- strcpy (invisible_line, rl_prompt);
-
- /* If the prompt contains newlines, take the last tail. */
- prompt_last_line = strrchr (rl_prompt, '\n');
- if (!prompt_last_line)
- prompt_last_line = rl_prompt;
-
- l = strlen (prompt_last_line);
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- _rl_last_c_pos = _rl_col_width (prompt_last_line, 0, l);
- else
- _rl_last_c_pos = l;
-
- /* Dissect prompt_last_line into screen lines. Note that here we have
- to use the real screenwidth. Readline's notion of screenwidth might be
- one less, see terminal.c. */
- real_screenwidth = _rl_screenwidth + (_rl_term_autowrap ? 0 : 1);
- _rl_last_v_pos = l / real_screenwidth;
- /* If the prompt length is a multiple of real_screenwidth, we don't know
- whether the cursor is at the end of the last line, or already at the
- beginning of the next line. Output a newline just to be safe. */
- if (l > 0 && (l % real_screenwidth) == 0)
- _rl_output_some_chars ("\n", 1);
- last_lmargin = 0;
-
- newlines = 0; i = 0;
- while (i <= l)
- {
- _rl_vis_botlin = newlines;
- vis_lbreaks[newlines++] = i;
- i += real_screenwidth;
- }
- vis_lbreaks[newlines] = l;
- visible_wrap_offset = 0;
-
- return 0;
-}
-
-/* Actually update the display, period. */
-int
-rl_forced_update_display ()
-{
- if (visible_line)
- {
- register char *temp = visible_line;
-
- while (*temp)
- *temp++ = '\0';
- }
- rl_on_new_line ();
- forced_display++;
- (*rl_redisplay_function) ();
- return 0;
-}
-
-/* Move the cursor from _rl_last_c_pos to NEW, which are buffer indices.
- DATA is the contents of the screen line of interest; i.e., where
- the movement is being done. */
-void
-_rl_move_cursor_relative (new, data)
- int new;
- const char *data;
-{
- register int i;
-
- /* If we don't have to do anything, then return. */
-#if defined (HANDLE_MULTIBYTE)
- /* If we have multibyte characters, NEW is indexed by the buffer point in
- a multibyte string, but _rl_last_c_pos is the display position. In
- this case, NEW's display position is not obvious. */
- if ((MB_CUR_MAX == 1 || rl_byte_oriented ) && _rl_last_c_pos == new) return;
-#else
- if (_rl_last_c_pos == new) return;
-#endif
-
- /* It may be faster to output a CR, and then move forwards instead
- of moving backwards. */
- /* i == current physical cursor position. */
- i = _rl_last_c_pos - W_OFFSET(_rl_last_v_pos, visible_wrap_offset);
- if (new == 0 || CR_FASTER (new, _rl_last_c_pos) ||
- (_rl_term_autowrap && i == _rl_screenwidth))
- {
-#if defined (__MSDOS__)
- putc ('\r', rl_outstream);
-#else
- tputs (_rl_term_cr, 1, _rl_output_character_function);
-#endif /* !__MSDOS__ */
- _rl_last_c_pos = 0;
- }
-
- if (_rl_last_c_pos < new)
- {
- /* Move the cursor forward. We do it by printing the command
- to move the cursor forward if there is one, else print that
- portion of the output buffer again. Which is cheaper? */
-
- /* The above comment is left here for posterity. It is faster
- to print one character (non-control) than to print a control
- sequence telling the terminal to move forward one character.
- That kind of control is for people who don't know what the
- data is underneath the cursor. */
-#if defined (HACK_TERMCAP_MOTION)
- if (_rl_term_forward_char)
- {
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- int width;
- width = _rl_col_width (data, _rl_last_c_pos, new);
- for (i = 0; i < width; i++)
- tputs (_rl_term_forward_char, 1, _rl_output_character_function);
- }
- else
- {
- for (i = _rl_last_c_pos; i < new; i++)
- tputs (_rl_term_forward_char, 1, _rl_output_character_function);
- }
- }
- else if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- tputs (_rl_term_cr, 1, _rl_output_character_function);
- for (i = 0; i < new; i++)
- putc (data[i], rl_outstream);
- }
- else
- for (i = _rl_last_c_pos; i < new; i++)
- putc (data[i], rl_outstream);
-
-#else /* !HACK_TERMCAP_MOTION */
-
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- tputs (_rl_term_cr, 1, _rl_output_character_function);
- for (i = 0; i < new; i++)
- putc (data[i], rl_outstream);
- }
- else
- for (i = _rl_last_c_pos; i < new; i++)
- putc (data[i], rl_outstream);
-
-#endif /* !HACK_TERMCAP_MOTION */
-
- }
-#if defined (HANDLE_MULTIBYTE)
- /* NEW points to the buffer point, but _rl_last_c_pos is the display point.
- The byte length of the string is probably bigger than the column width
- of the string, which means that if NEW == _rl_last_c_pos, then NEW's
- display point is less than _rl_last_c_pos. */
- else if (_rl_last_c_pos >= new)
-#else
- else if (_rl_last_c_pos > new)
-#endif
- {
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- tputs (_rl_term_cr, 1, _rl_output_character_function);
- for (i = 0; i < new; i++)
- putc (data[i], rl_outstream);
- }
- else
- _rl_backspace (_rl_last_c_pos - new);
- }
-
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- _rl_last_c_pos = _rl_col_width ((char *)data, 0, new);
- else
- _rl_last_c_pos = new;
-}
-
-/* PWP: move the cursor up or down. */
-void
-_rl_move_vert (to)
- int to;
-{
- register int delta, i;
-
- if (_rl_last_v_pos == to || to > _rl_screenheight)
- return;
-
- if ((delta = to - _rl_last_v_pos) > 0)
- {
- for (i = 0; i < delta; i++)
- putc ('\n', rl_outstream);
-#if defined (__MSDOS__)
- putc ('\r', rl_outstream);
-#else
- tputs (_rl_term_cr, 1, _rl_output_character_function);
-#endif
- _rl_last_c_pos = 0;
- }
- else
- { /* delta < 0 */
- if (_rl_term_up && *_rl_term_up)
- for (i = 0; i < -delta; i++)
- tputs (_rl_term_up, 1, _rl_output_character_function);
- }
-
- _rl_last_v_pos = to; /* Now TO is here */
-}
-
-/* Physically print C on rl_outstream. This is for functions which know
- how to optimize the display. Return the number of characters output. */
-int
-rl_show_char (c)
- int c;
-{
- int n = 1;
- if (META_CHAR (c) && (_rl_output_meta_chars == 0))
- {
- fprintf (rl_outstream, "M-");
- n += 2;
- c = UNMETA (c);
- }
-
-#if defined (DISPLAY_TABS)
- if ((CTRL_CHAR (c) && c != '\t') || c == RUBOUT)
-#else
- if (CTRL_CHAR (c) || c == RUBOUT)
-#endif /* !DISPLAY_TABS */
- {
- fprintf (rl_outstream, "C-");
- n += 2;
- c = CTRL_CHAR (c) ? UNCTRL (c) : '?';
- }
-
- putc (c, rl_outstream);
- fflush (rl_outstream);
- return n;
-}
-
-int
-rl_character_len (c, pos)
- register int c, pos;
-{
- unsigned char uc;
-
- uc = (unsigned char)c;
-
- if (META_CHAR (uc))
- return ((_rl_output_meta_chars == 0) ? 4 : 1);
-
- if (uc == '\t')
- {
-#if defined (DISPLAY_TABS)
- return (((pos | 7) + 1) - pos);
-#else
- return (2);
-#endif /* !DISPLAY_TABS */
- }
-
- if (CTRL_CHAR (c) || c == RUBOUT)
- return (2);
-
- return ((ISPRINT (uc)) ? 1 : 2);
-}
-
-/* How to print things in the "echo-area". The prompt is treated as a
- mini-modeline. */
-
-#if defined (USE_VARARGS)
-int
-#if defined (PREFER_STDARG)
-rl_message (const char *format, ...)
-#else
-rl_message (va_alist)
- va_dcl
-#endif
-{
- va_list args;
-#if defined (PREFER_VARARGS)
- char *format;
-#endif
-
-#if defined (PREFER_STDARG)
- va_start (args, format);
-#else
- va_start (args);
- format = va_arg (args, char *);
-#endif
-
-#if defined (HAVE_VSNPRINTF)
- vsnprintf (msg_buf, sizeof (msg_buf) - 1, format, args);
-#else
- vsprintf (msg_buf, format, args);
- msg_buf[sizeof(msg_buf) - 1] = '\0'; /* overflow? */
-#endif
- va_end (args);
-
- rl_display_prompt = msg_buf;
- (*rl_redisplay_function) ();
- return 0;
-}
-#else /* !USE_VARARGS */
-int
-rl_message (format, arg1, arg2)
- char *format;
-{
- sprintf (msg_buf, format, arg1, arg2);
- msg_buf[sizeof(msg_buf) - 1] = '\0'; /* overflow? */
- rl_display_prompt = msg_buf;
- (*rl_redisplay_function) ();
- return 0;
-}
-#endif /* !USE_VARARGS */
-
-/* How to clear things from the "echo-area". */
-int
-rl_clear_message ()
-{
- rl_display_prompt = rl_prompt;
- (*rl_redisplay_function) ();
- return 0;
-}
-
-int
-rl_reset_line_state ()
-{
- rl_on_new_line ();
-
- rl_display_prompt = rl_prompt ? rl_prompt : "";
- forced_display = 1;
- return 0;
-}
-
-static char *saved_local_prompt;
-static char *saved_local_prefix;
-static int saved_last_invisible;
-static int saved_visible_length;
-
-void
-rl_save_prompt ()
-{
- saved_local_prompt = local_prompt;
- saved_local_prefix = local_prompt_prefix;
- saved_last_invisible = prompt_last_invisible;
- saved_visible_length = prompt_visible_length;
-
- local_prompt = local_prompt_prefix = (char *)0;
- prompt_last_invisible = prompt_visible_length = 0;
-}
-
-void
-rl_restore_prompt ()
-{
- FREE (local_prompt);
- FREE (local_prompt_prefix);
-
- local_prompt = saved_local_prompt;
- local_prompt_prefix = saved_local_prefix;
- prompt_last_invisible = saved_last_invisible;
- prompt_visible_length = saved_visible_length;
-}
-
-char *
-_rl_make_prompt_for_search (pchar)
- int pchar;
-{
- int len;
- char *pmt;
-
- rl_save_prompt ();
-
- if (saved_local_prompt == 0)
- {
- len = (rl_prompt && *rl_prompt) ? strlen (rl_prompt) : 0;
- pmt = (char *)xmalloc (len + 2);
- if (len)
- strcpy (pmt, rl_prompt);
- pmt[len] = pchar;
- pmt[len+1] = '\0';
- }
- else
- {
- len = *saved_local_prompt ? strlen (saved_local_prompt) : 0;
- pmt = (char *)xmalloc (len + 2);
- if (len)
- strcpy (pmt, saved_local_prompt);
- pmt[len] = pchar;
- pmt[len+1] = '\0';
- local_prompt = savestring (pmt);
- prompt_last_invisible = saved_last_invisible;
- prompt_visible_length = saved_visible_length + 1;
- }
- return pmt;
-}
-
-/* Quick redisplay hack when erasing characters at the end of the line. */
-void
-_rl_erase_at_end_of_line (l)
- int l;
-{
- register int i;
-
- _rl_backspace (l);
- for (i = 0; i < l; i++)
- putc (' ', rl_outstream);
- _rl_backspace (l);
- for (i = 0; i < l; i++)
- visible_line[--_rl_last_c_pos] = '\0';
- rl_display_fixed++;
-}
-
-/* Clear to the end of the line. COUNT is the minimum
- number of character spaces to clear, */
-void
-_rl_clear_to_eol (count)
- int count;
-{
- if (_rl_term_clreol)
- tputs (_rl_term_clreol, 1, _rl_output_character_function);
- else if (count)
- space_to_eol (count);
-}
-
-/* Clear to the end of the line using spaces. COUNT is the minimum
- number of character spaces to clear, */
-static void
-space_to_eol (count)
- int count;
-{
- register int i;
-
- for (i = 0; i < count; i++)
- putc (' ', rl_outstream);
-
- _rl_last_c_pos += count;
-}
-
-void
-_rl_clear_screen ()
-{
- if (_rl_term_clrpag)
- tputs (_rl_term_clrpag, 1, _rl_output_character_function);
- else
- rl_crlf ();
-}
-
-/* Insert COUNT characters from STRING to the output stream at column COL. */
-static void
-insert_some_chars (string, count, col)
- char *string;
- int count, col;
-{
- /* DEBUGGING */
- if (MB_CUR_MAX == 1 || rl_byte_oriented)
- if (count != col)
- fprintf(stderr, "readline: debug: insert_some_chars: count (%d) != col (%d)\n", count, col);
-
- /* If IC is defined, then we do not have to "enter" insert mode. */
- if (_rl_term_IC)
- {
- char *buffer;
-
- buffer = tgoto (_rl_term_IC, 0, col);
- tputs (buffer, 1, _rl_output_character_function);
- _rl_output_some_chars (string, count);
- }
- else
- {
- register int i;
-
- /* If we have to turn on insert-mode, then do so. */
- if (_rl_term_im && *_rl_term_im)
- tputs (_rl_term_im, 1, _rl_output_character_function);
-
- /* If there is a special command for inserting characters, then
- use that first to open up the space. */
- if (_rl_term_ic && *_rl_term_ic)
- {
- for (i = col; i--; )
- tputs (_rl_term_ic, 1, _rl_output_character_function);
- }
-
- /* Print the text. */
- _rl_output_some_chars (string, count);
-
- /* If there is a string to turn off insert mode, we had best use
- it now. */
- if (_rl_term_ei && *_rl_term_ei)
- tputs (_rl_term_ei, 1, _rl_output_character_function);
- }
-}
-
-/* Delete COUNT characters from the display line. */
-static void
-delete_chars (count)
- int count;
-{
- if (count > _rl_screenwidth) /* XXX */
- return;
-
- if (_rl_term_DC && *_rl_term_DC)
- {
- char *buffer;
- buffer = tgoto (_rl_term_DC, count, count);
- tputs (buffer, count, _rl_output_character_function);
- }
- else
- {
- if (_rl_term_dc && *_rl_term_dc)
- while (count--)
- tputs (_rl_term_dc, 1, _rl_output_character_function);
- }
-}
-
-void
-_rl_update_final ()
-{
- int full_lines;
-
- full_lines = 0;
- /* If the cursor is the only thing on an otherwise-blank last line,
- compensate so we don't print an extra CRLF. */
- if (_rl_vis_botlin && _rl_last_c_pos == 0 &&
- visible_line[vis_lbreaks[_rl_vis_botlin]] == 0)
- {
- _rl_vis_botlin--;
- full_lines = 1;
- }
- _rl_move_vert (_rl_vis_botlin);
- /* If we've wrapped lines, remove the final xterm line-wrap flag. */
- if (full_lines && _rl_term_autowrap && (VIS_LLEN(_rl_vis_botlin) == _rl_screenwidth))
- {
- char *last_line;
-
- last_line = &visible_line[vis_lbreaks[_rl_vis_botlin]];
- _rl_move_cursor_relative (_rl_screenwidth - 1, last_line);
- _rl_clear_to_eol (0);
- putc (last_line[_rl_screenwidth - 1], rl_outstream);
- }
- _rl_vis_botlin = 0;
- rl_crlf ();
- fflush (rl_outstream);
- rl_display_fixed++;
-}
-
-/* Move to the start of the current line. */
-static void
-cr ()
-{
- if (_rl_term_cr)
- {
-#if defined (__MSDOS__)
- putc ('\r', rl_outstream);
-#else
- tputs (_rl_term_cr, 1, _rl_output_character_function);
-#endif
- _rl_last_c_pos = 0;
- }
-}
-
-/* Redraw the last line of a multi-line prompt that may possibly contain
- terminal escape sequences. Called with the cursor at column 0 of the
- line to draw the prompt on. */
-static void
-redraw_prompt (t)
- char *t;
-{
- char *oldp, *oldl, *oldlprefix;
- int oldlen, oldlast, oldplen, oldninvis;
-
- /* Geez, I should make this a struct. */
- oldp = rl_display_prompt;
- oldl = local_prompt;
- oldlprefix = local_prompt_prefix;
- oldlen = prompt_visible_length;
- oldplen = prompt_prefix_length;
- oldlast = prompt_last_invisible;
- oldninvis = prompt_invis_chars_first_line;
-
- rl_display_prompt = t;
- local_prompt = expand_prompt (t, &prompt_visible_length,
- &prompt_last_invisible,
- &prompt_invis_chars_first_line);
- local_prompt_prefix = (char *)NULL;
- rl_forced_update_display ();
-
- rl_display_prompt = oldp;
- local_prompt = oldl;
- local_prompt_prefix = oldlprefix;
- prompt_visible_length = oldlen;
- prompt_prefix_length = oldplen;
- prompt_last_invisible = oldlast;
- prompt_invis_chars_first_line = oldninvis;
-}
-
-/* Redisplay the current line after a SIGWINCH is received. */
-void
-_rl_redisplay_after_sigwinch ()
-{
- char *t;
-
- /* Clear the current line and put the cursor at column 0. Make sure
- the right thing happens if we have wrapped to a new screen line. */
- if (_rl_term_cr)
- {
-#if defined (__MSDOS__)
- putc ('\r', rl_outstream);
-#else
- tputs (_rl_term_cr, 1, _rl_output_character_function);
-#endif
- _rl_last_c_pos = 0;
-#if defined (__MSDOS__)
- space_to_eol (_rl_screenwidth);
- putc ('\r', rl_outstream);
-#else
- if (_rl_term_clreol)
- tputs (_rl_term_clreol, 1, _rl_output_character_function);
- else
- {
- space_to_eol (_rl_screenwidth);
- tputs (_rl_term_cr, 1, _rl_output_character_function);
- }
-#endif
- if (_rl_last_v_pos > 0)
- _rl_move_vert (0);
- }
- else
- rl_crlf ();
-
- /* Redraw only the last line of a multi-line prompt. */
- t = strrchr (rl_display_prompt, '\n');
- if (t)
- redraw_prompt (++t);
- else
- rl_forced_update_display ();
-}
-
-void
-_rl_clean_up_for_exit ()
-{
- if (readline_echoing_p)
- {
- _rl_move_vert (_rl_vis_botlin);
- _rl_vis_botlin = 0;
- fflush (rl_outstream);
- rl_restart_output (1, 0);
- }
-}
-
-void
-_rl_erase_entire_line ()
-{
- cr ();
- _rl_clear_to_eol (0);
- cr ();
- fflush (rl_outstream);
-}
-
-/* return the `current display line' of the cursor -- the number of lines to
- move up to get to the first screen line of the current readline line. */
-int
-_rl_current_display_line ()
-{
- int ret, nleft;
-
- /* Find out whether or not there might be invisible characters in the
- editing buffer. */
- if (rl_display_prompt == rl_prompt)
- nleft = _rl_last_c_pos - _rl_screenwidth - rl_visible_prompt_length;
- else
- nleft = _rl_last_c_pos - _rl_screenwidth;
-
- if (nleft > 0)
- ret = 1 + nleft / _rl_screenwidth;
- else
- ret = 0;
-
- return ret;
-}
-
-#if defined (HANDLE_MULTIBYTE)
-/* Calculate the number of screen columns occupied by STR from START to END.
- In the case of multibyte characters with stateful encoding, we have to
- scan from the beginning of the string to take the state into account. */
-static int
-_rl_col_width (str, start, end)
- char *str;
- int start, end;
-{
- wchar_t wc;
- mbstate_t ps = {0};
- int tmp, point, width, max;
-
- if (end <= start)
- return 0;
-
- point = 0;
- max = end;
-
- while (point < start)
- {
- tmp = mbrlen (str + point, max, &ps);
- if ((size_t)tmp == (size_t)-1 || (size_t)tmp == (size_t)-2)
- {
- /* In this case, the bytes are invalid or too short to compose a
- multibyte character, so we assume that the first byte represents
- a single character. */
- point++;
- max--;
-
- /* Clear the state of the byte sequence, because in this case the
- effect of mbstate is undefined. */
- memset (&ps, 0, sizeof (mbstate_t));
- }
- else if (tmp == 0)
- break; /* Found '\0' */
- else
- {
- point += tmp;
- max -= tmp;
- }
- }
-
- /* If START is not a byte that starts a character, then POINT will be
- greater than START. In this case, assume that (POINT - START) gives
- a byte count that is the number of columns of difference. */
- width = point - start;
-
- while (point < end)
- {
- tmp = mbrtowc (&wc, str + point, max, &ps);
- if ((size_t)tmp == (size_t)-1 || (size_t)tmp == (size_t)-2)
- {
- /* In this case, the bytes are invalid or too short to compose a
- multibyte character, so we assume that the first byte represents
- a single character. */
- point++;
- max--;
-
- /* and assume that the byte occupies a single column. */
- width++;
-
- /* Clear the state of the byte sequence, because in this case the
- effect of mbstate is undefined. */
- memset (&ps, 0, sizeof (mbstate_t));
- }
- else if (tmp == 0)
- break; /* Found '\0' */
- else
- {
- point += tmp;
- max -= tmp;
- tmp = wcwidth(wc);
- width += (tmp >= 0) ? tmp : 1;
- }
- }
-
- width += point - end;
-
- return width;
-}
-#endif /* HANDLE_MULTIBYTE */
-
diff --git a/readline-4.3/doc/Makefile.in b/readline-4.3/doc/Makefile.in
deleted file mode 100644
index 8a85ae1..0000000
--- a/readline-4.3/doc/Makefile.in
+++ /dev/null
@@ -1,234 +0,0 @@
-# This makefile for Readline library documentation is in -*- text -*- mode.
-# Emacs likes it that way.
-
-# Copyright (C) 1996 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA.
-
-topdir = @top_srcdir@
-srcdir = @srcdir@
-VPATH = .:@srcdir@
-
-prefix = @prefix@
-infodir = @infodir@
-
-mandir = @mandir@
-manpfx = man
-
-man1ext = .1
-man1dir = $(mandir)/$(manpfx)1
-man3ext = .3
-man3dir = $(mandir)/$(manpfx)3
-
-# set this to a value to have the HTML documentation installed
-htmldir =
-
-# Support an alternate destination root directory for package building
-DESTDIR =
-
-SHELL = @MAKE_SHELL@
-RM = rm -f
-
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-
-BUILD_DIR = @BUILD_DIR@
-TEXINPUTDIR = $(srcdir)
-
-MAKEINFO = LANGUAGE= makeinfo
-TEXI2DVI = $(srcdir)/texi2dvi
-TEXI2HTML = $(srcdir)/texi2html
-QUIETPS = #set this to -q to shut up dvips
-PAPERSIZE = letter
-PSDPI = 300 # I don't have any 600-dpi printers
-DVIPS = dvips -D ${PSDPI} $(QUIETPS) -t ${PAPERSIZE} -o $@ # tricky
-
-RLSRC = $(srcdir)/rlman.texinfo $(srcdir)/rluser.texinfo \
- $(srcdir)/rltech.texinfo $(srcdir)/manvers.texinfo \
- $(srcdir)/rluserman.texinfo
-HISTSRC = $(srcdir)/hist.texinfo $(srcdir)/hsuser.texinfo \
- $(srcdir)/hstech.texinfo $(srcdir)/manvers.texinfo
-
-# This should be a program that converts troff to an ascii-readable format
-NROFF = groff -Tascii
-
-# This should be a program that converts troff to postscript
-GROFF = groff
-
-DVIOBJ = readline.dvi history.dvi rluserman.dvi
-INFOOBJ = readline.info history.info rluserman.info
-PSOBJ = readline.ps history.ps rluserman.ps readline_3.ps history_3.ps
-HTMLOBJ = readline.html history.html rluserman.html
-TEXTOBJ = readline.0 history.0
-
-INTERMEDIATE_OBJ = rlman.dvi hist.dvi rluserman.dvi
-
-DIST_DOCS = $(DVIOBJ) $(PSOBJ) $(HTMLOBJ) $(INFOOBJ) $(TEXTOBJ)
-
-.SUFFIXES: .0 .3 .ps .txt .dvi
-
-.3.0:
- $(RM) $@
- -${NROFF} -man $< > $@
-
-all: info dvi html ps text
-nodvi: info html text
-
-readline.dvi: $(RLSRC)
- TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/rlman.texinfo
- mv rlman.dvi readline.dvi
-
-readline.info: $(RLSRC)
- $(MAKEINFO) --no-split -I $(TEXINPUTDIR) -o $@ $(srcdir)/rlman.texinfo
-
-rluserman.dvi: $(RLSRC)
- TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/rluserman.texinfo
-
-rluserman.info: $(RLSRC)
- $(MAKEINFO) --no-split -I $(TEXINPUTDIR) -o $@ $(srcdir)/rluserman.texinfo
-
-history.dvi: ${HISTSRC}
- TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/hist.texinfo
- mv hist.dvi history.dvi
-
-history.info: ${HISTSRC}
- $(MAKEINFO) --no-split -I $(TEXINPUTDIR) -o $@ $(srcdir)/hist.texinfo
-
-readline.ps: readline.dvi
- $(RM) $@
- $(DVIPS) readline.dvi
-
-rluserman.ps: rluserman.dvi
- $(RM) $@
- $(DVIPS) rluserman.dvi
-
-history.ps: history.dvi
- $(RM) $@
- $(DVIPS) history.dvi
-
-#
-# This leaves readline.html and rlman.html -- rlman.html is for www.gnu.org
-#
-readline.html: ${RLSRC}
- $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/rlman.texinfo
- sed -e 's:rlman.html:readline.html:g' rlman.html > readline.html
-
-rluserman.html: ${RLSRC}
- $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/rluserman.texinfo
-
-history.html: ${HISTSRC}
- $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/hist.texinfo
- sed -e 's:hist.html:history.html:g' hist.html > history.html
- $(RM) hist.html
-
-info: $(INFOOBJ)
-dvi: $(DVIOBJ)
-ps: $(PSOBJ)
-html: $(HTMLOBJ)
-text: $(TEXTOBJ)
-
-readline.0: readline.3
-
-readline_3.ps: readline.3
- ${RM} $@
- ${GROFF} -man < $(srcdir)/readline.3 > $@
-
-history.0: history.3
-
-history_3.ps: history.3
- ${RM} $@
- ${GROFF} -man < $(srcdir)/history.3 > $@
-
-clean:
- $(RM) *.aux *.cp *.fn *.ky *.log *.pg *.toc *.tp *.vr *.cps *.pgs \
- *.fns *.kys *.tps *.vrs *.bt *.bts *.o core *.core
-
-mostlyclean: clean
-
-distclean: clean maybe-clean
- $(RM) $(INTERMEDIATE_OBJ)
- $(RM) Makefile
-
-maybe-clean:
- -if test "X$(topdir)" != "X$(BUILD_DIR)"; then \
- $(RM) $(DIST_DOCS); \
- fi
-
-maintainer-clean: clean
- $(RM) $(DIST_DOCS)
- $(RM) $(INTERMEDIATE_OBJ)
- $(RM) Makefile
-
-installdirs: $(topdir)/support/mkdirs
- -$(SHELL) $(topdir)/support/mkdirs $(DESTDIR)$(infodir) $(DESTDIR)$(man3dir)
- -if test -n "${htmldir}" ; then \
- $(SHELL) $(topdir)/support/mkdirs $(DESTDIR)$(htmldir) ; \
- fi
-
-install: installdirs
- if test -f readline.info; then \
- ${INSTALL_DATA} readline.info $(DESTDIR)$(infodir)/readline.info; \
- else \
- ${INSTALL_DATA} $(srcdir)/readline.info $(DESTDIR)$(infodir)/readline.info; \
- fi
- if test -f rluserman.info; then \
- ${INSTALL_DATA} rluserman.info $(DESTDIR)$(infodir)/rluserman.info; \
- else \
- ${INSTALL_DATA} $(srcdir)/rluserman.info $(DESTDIR)$(infodir)/rluserman.info; \
- fi
- if test -f history.info; then \
- ${INSTALL_DATA} history.info $(DESTDIR)$(infodir)/history.info; \
- else \
- ${INSTALL_DATA} $(srcdir)/history.info $(DESTDIR)$(infodir)/history.info; \
- fi
- -if $(SHELL) -c 'install-info --version' >/dev/null 2>&1; then \
- install-info --dir-file=$(DESTDIR)$(infodir)/dir \
- $(DESTDIR)$(infodir)/readline.info ; \
- install-info --dir-file=$(DESTDIR)$(infodir)/dir \
- $(DESTDIR)$(infodir)/history.info ; \
- install-info --dir-file=$(DESTDIR)$(infodir)/dir \
- $(DESTDIR)$(infodir)/rluserman.info ; \
- else true; fi
- -${INSTALL_DATA} $(srcdir)/readline.3 $(DESTDIR)$(man3dir)/readline$(man3ext)
- -${INSTALL_DATA} $(srcdir)/history.3 $(DESTDIR)$(man3dir)/history$(man3ext)
- -if test -n "${htmldir}" ; then \
- if test -f readline.html; then \
- ${INSTALL_DATA} readline.html $(DESTDIR)$(htmldir)/readline.html; \
- else \
- ${INSTALL_DATA} $(srcdir)/readline.html $(DESTDIR)$(htmldir)/readline.html; \
- fi ; \
- if test -f history.html; then \
- ${INSTALL_DATA} history.html $(DESTDIR)$(htmldir)/history.html; \
- else \
- ${INSTALL_DATA} $(srcdir)/history.html $(DESTDIR)$(htmldir)/history.html; \
- fi ; \
- if test -f rluserman.html; then \
- ${INSTALL_DATA} rluserman.html $(DESTDIR)$(htmldir)/rluserman.html; \
- else \
- ${INSTALL_DATA} $(srcdir)/rluserman.html $(DESTDIR)$(htmldir)/rluserman.html; \
- fi ; \
- fi
-
-uninstall:
- $(RM) $(DESTDIR)$(infodir)/readline.info
- $(RM) $(DESTDIR)$(infodir)/rluserman.info
- $(RM) $(DESTDIR)$(infodir)/history.info
- $(RM) $(DESTDIR)$(man3dir)/readline$(man3ext)
- $(RM) $(DESTDIR)$(man3dir)/history$(man3ext)
- -if test -n "${htmldir}" ; then \
- $(RM) $(DESTDIR)$(htmldir)/readline.html ; \
- $(RM) $(DESTDIR)$(htmldir)/rluserman.html ; \
- $(RM) $(DESTDIR)$(htmldir)/history.html ; \
- fi
diff --git a/readline-4.3/doc/hist.texinfo b/readline-4.3/doc/hist.texinfo
deleted file mode 100644
index 63ceb16..0000000
--- a/readline-4.3/doc/hist.texinfo
+++ /dev/null
@@ -1,110 +0,0 @@
-\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.)
-
-@setchapternewpage odd
-
-@include manvers.texinfo
-
-@ifinfo
-@dircategory Libraries
-@direntry
-* History: (history). The GNU history library API
-@end direntry
-
-This document describes the GNU History library, a programming tool that
-provides a consistent user interface for recalling lines of previously
-typed input.
-
-Copyright (C) 1988-2002 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-pare preserved on all copies.
-
-@ignore
-Permission is granted to process this file through TeX and print the
-results, provided the printed document carries copying permission
-notice identical to this one except for the removal of this paragraph
-(this paragraph not being relevant to the printed manual).
-@end ignore
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the entire
-resulting derived work is distributed under the terms of a permission
-notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that this permission notice may be stated in a translation approved
-by the Free Software Foundation.
-@end ifinfo
-
-@titlepage
-@title GNU History Library
-@subtitle Edition @value{EDITION}, for @code{History Library} Version @value{VERSION}.
-@subtitle @value{UPDATE-MONTH}
-@author Brian Fox, Free Software Foundation
-@author Chet Ramey, Case Western Reserve University
-
-@page
-This document describes the GNU History library, a programming tool that
-provides a consistent user interface for recalling lines of previously
-typed input.
-
-Published by the Free Software Foundation @*
-59 Temple Place, Suite 330, @*
-Boston, MA 02111 USA
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the entire
-resulting derived work is distributed under the terms of a permission
-notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that this permission notice may be stated in a translation approved
-by the Free Software Foundation.
-
-@vskip 0pt plus 1filll
-Copyright @copyright{} 1988-2002 Free Software Foundation, Inc.
-@end titlepage
-
-@ifinfo
-@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.
-* Concept Index:: Index of concepts described in this manual.
-* Function and Variable Index:: Index of externally visible functions
- and variables.
-@end menu
-@end ifinfo
-
-@syncodeindex fn vr
-
-@include hsuser.texinfo
-@include hstech.texinfo
-
-@node Concept Index
-@appendix Concept Index
-@printindex cp
-
-@node Function and Variable Index
-@appendix Function and Variable Index
-@printindex vr
-
-@contents
-@bye
diff --git a/readline-4.3/doc/history.3 b/readline-4.3/doc/history.3
deleted file mode 100644
index ed0cb9f..0000000
--- a/readline-4.3/doc/history.3
+++ /dev/null
@@ -1,640 +0,0 @@
-.\"
-.\" MAN PAGE COMMENTS to
-.\"
-.\" Chet Ramey
-.\" Information Network Services
-.\" Case Western Reserve University
-.\" chet@ins.CWRU.Edu
-.\"
-.\" Last Change: Thu Jan 31 16:08:07 EST 2002
-.\"
-.TH HISTORY 3 "2002 January 31" "GNU History 4.3"
-.\"
-.\" File Name macro. This used to be `.PN', for Path Name,
-.\" but Sun doesn't seem to like that very much.
-.\"
-.de FN
-\fI\|\\$1\|\fP
-..
-.ds lp \fR\|(\fP
-.ds rp \fR\|)\fP
-.\" FnN return-value fun-name N arguments
-.de Fn1
-\fI\\$1\fP \fB\\$2\fP \\*(lp\fI\\$3\fP\\*(rp
-.br
-..
-.de Fn2
-.if t \fI\\$1\fP \fB\\$2\fP \\*(lp\fI\\$3,\|\\$4\fP\\*(rp
-.if n \fI\\$1\fP \fB\\$2\fP \\*(lp\fI\\$3, \\$4\fP\\*(rp
-.br
-..
-.de Fn3
-.if t \fI\\$1\fP \fB\\$2\fP \\*(lp\fI\\$3,\|\\$4,\|\\$5\fP\|\\*(rp
-.if n \fI\\$1\fP \fB\\$2\fP \\*(lp\fI\\$3, \\$4, \\$5\fP\\*(rp
-.br
-..
-.de Vb
-\fI\\$1\fP \fB\\$2\fP
-.br
-..
-.SH NAME
-history \- GNU History Library
-.SH COPYRIGHT
-.if t The GNU History Library is Copyright \(co 1989-2002 by the Free Software Foundation, Inc.
-.if n The GNU History Library is Copyright (C) 1989-2002 by the Free Software Foundation, Inc.
-.SH DESCRIPTION
-Many programs read input from the user a line at a time. The 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.
-.PP
-.SH "HISTORY EXPANSION"
-.PP
-The history library supports a history expansion feature that
-is identical to the history expansion in
-.BR bash.
-This section describes what syntax features are available.
-.PP
-History expansions introduce words from the history list into
-the input stream, making it easy to repeat commands, insert the
-arguments to a previous command into the current input line, or
-fix errors in previous commands quickly.
-.PP
-History expansion is usually performed immediately after a complete line
-is read.
-It takes place in two parts.
-The first is to determine which line from the history list
-to use during substitution.
-The second is to select portions of that line for inclusion into
-the current one.
-The line selected from the history is the \fIevent\fP,
-and the portions of that line that are acted upon are \fIwords\fP.
-Various \fImodifiers\fP are available to manipulate the selected words.
-The line is broken into words in the same fashion as \fBbash\fP
-does when reading input,
-so that several words that would otherwise be separated
-are considered one word when surrounded by quotes (see the
-description of \fBhistory_tokenize()\fP below).
-History expansions are introduced by the appearance of the
-history expansion character, which is \^\fB!\fP\^ by default.
-Only backslash (\^\fB\e\fP\^) and single quotes can quote
-the history expansion character.
-.SS Event Designators
-.PP
-An event designator is a reference to a command line entry in the
-history list.
-.PP
-.PD 0
-.TP
-.B !
-Start a history substitution, except when followed by a
-.BR blank ,
-newline, = or (.
-.TP
-.B !\fIn\fR
-Refer to command line
-.IR n .
-.TP
-.B !\-\fIn\fR
-Refer to the current command line minus
-.IR n .
-.TP
-.B !!
-Refer to the previous command. This is a synonym for `!\-1'.
-.TP
-.B !\fIstring\fR
-Refer to the most recent command starting with
-.IR string .
-.TP
-.B !?\fIstring\fR\fB[?]\fR
-Refer to the most recent command containing
-.IR string .
-The trailing \fB?\fP may be omitted if
-.I string
-is followed immediately by a newline.
-.TP
-.B \d\s+2^\s-2\u\fIstring1\fP\d\s+2^\s-2\u\fIstring2\fP\d\s+2^\s-2\u
-Quick substitution. Repeat the last command, replacing
-.I string1
-with
-.IR string2 .
-Equivalent to
-``!!:s/\fIstring1\fP/\fIstring2\fP/''
-(see \fBModifiers\fP below).
-.TP
-.B !#
-The entire command line typed so far.
-.PD
-.SS Word Designators
-.PP
-Word designators are used to select desired words from the event.
-A
-.B :
-separates the event specification from the word designator.
-It may be omitted if the word designator begins with a
-.BR ^ ,
-.BR $ ,
-.BR * ,
-.BR \- ,
-or
-.BR % .
-Words are numbered from the beginning of the line,
-with the first word being denoted by 0 (zero).
-Words are inserted into the current line separated by single spaces.
-.PP
-.PD 0
-.TP
-.B 0 (zero)
-The zeroth word. For the shell, this is the command
-word.
-.TP
-.I n
-The \fIn\fRth word.
-.TP
-.B ^
-The first argument. That is, word 1.
-.TP
-.B $
-The last argument.
-.TP
-.B %
-The word matched by the most recent `?\fIstring\fR?' search.
-.TP
-.I x\fB\-\fPy
-A range of words; `\-\fIy\fR' abbreviates `0\-\fIy\fR'.
-.TP
-.B *
-All of the words but the zeroth. This is a synonym
-for `\fI1\-$\fP'. It is not an error to use
-.B *
-if there is just one
-word in the event; the empty string is returned in that case.
-.TP
-.B x*
-Abbreviates \fIx\-$\fP.
-.TP
-.B x\-
-Abbreviates \fIx\-$\fP like \fBx*\fP, but omits the last word.
-.PD
-.PP
-If a word designator is supplied without an event specification, the
-previous command is used as the event.
-.SS Modifiers
-.PP
-After the optional word designator, there may appear a sequence of
-one or more of the following modifiers, each preceded by a `:'.
-.PP
-.PD 0
-.PP
-.TP
-.B h
-Remove a trailing file name component, leaving only the head.
-.TP
-.B t
-Remove all leading file name components, leaving the tail.
-.TP
-.B r
-Remove a trailing suffix of the form \fI.xxx\fP, leaving the
-basename.
-.TP
-.B e
-Remove all but the trailing suffix.
-.TP
-.B p
-Print the new command but do not execute it.
-.TP
-.B q
-Quote the substituted words, escaping further substitutions.
-.TP
-.B x
-Quote the substituted words as with
-.BR q ,
-but break into words at
-.B blanks
-and newlines.
-.TP
-.B s/\fIold\fP/\fInew\fP/
-Substitute
-.I new
-for the first occurrence of
-.I old
-in the event line. Any delimiter can be used in place of /. The
-final delimiter is optional if it is the last character of the
-event line. The delimiter may be quoted in
-.I old
-and
-.I new
-with a single backslash. If & appears in
-.IR new ,
-it is replaced by
-.IR old .
-A single backslash will quote the &. If
-.I old
-is null, it is set to the last
-.I old
-substituted, or, if no previous history substitutions took place,
-the last
-.I string
-in a
-.B !?\fIstring\fR\fB[?]\fR
-search.
-.TP
-.B &
-Repeat the previous substitution.
-.TP
-.B g
-Cause changes to be applied over the entire event line. This is
-used in conjunction with `\fB:s\fP' (e.g., `\fB:gs/\fIold\fP/\fInew\fP/\fR')
-or `\fB:&\fP'. If used with
-`\fB:s\fP', any delimiter can be used
-in place of /, and the final delimiter is optional
-if it is the last character of the event line.
-.PD
-.SH "PROGRAMMING WITH HISTORY FUNCTIONS"
-This section describes how to use the History library in other programs.
-.SS Introduction to History
-.PP
-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 \fIexpansion\fP function
-is available which provides for a consistent user interface across
-different programs.
-.PP
-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
-identical to
-the history substitution provided by \fBbash\fP.
-.PP
-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.
-.PP
-Before declaring any functions using any functionality the History
-library provides in other code, an application writer should include
-the file
-.FN <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.
-
-.SS History Storage
-.PP
-The history list is an array of history entries. A history entry is
-declared as follows:
-.PP
-.Vb "typedef void *" histdata_t;
-.PP
-.nf
-typedef struct _hist_entry {
- char *line;
- histdata_t data;
-} HIST_ENTRY;
-.fi
-.PP
-The history list itself might therefore be declared as
-.PP
-.Vb "HIST_ENTRY **" the_history_list;
-.PP
-The state of the History library is encapsulated into a single structure:
-.PP
-.nf
-/*
- * 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;
-.fi
-.PP
-If the flags member includes \fBHS_STIFLED\fP, the history has been
-stifled.
-.SH "History Functions"
-.PP
-This section describes the calling sequence for the various functions
-exported by the GNU History library.
-.SS 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.
-
-.Fn1 void using_history void
-Begin a session in which the history functions might be used. This
-initializes the interactive variables.
-
-.Fn1 "HISTORY_STATE *" history_get_history_state void
-Return a structure describing the current state of the input history.
-
-.Fn1 void history_set_history_state "HISTORY_STATE *state"
-Set the state of the history list according to \fIstate\fP.
-
-.SS History List Management
-
-These functions manage individual entries on the history list, or set
-parameters managing the list itself.
-
-.Fn1 void add_history "const char *string"
-Place \fIstring\fP at the end of the history list. The associated data
-field (if any) is set to \fBNULL\fP.
-
-.Fn1 "HIST_ENTRY *" remove_history "int which"
-Remove history entry at offset \fIwhich\fP from the history. The
-removed element is returned so you can free the line, data,
-and containing structure.
-
-.Fn3 "HIST_ENTRY *" replace_history_entry "int which" "const char *line" "histdata_t data"
-Make the history entry at offset \fIwhich\fP have \fIline\fP and \fIdata\fP.
-This returns the old entry so you can dispose of the data. In the case
-of an invalid \fIwhich\fP, a \fBNULL\fP pointer is returned.
-
-.Fn1 void clear_history "void"
-Clear the history list by deleting all the entries.
-
-.Fn1 void stifle_history "int max"
-Stifle the history list, remembering only the last \fImax\fP entries.
-
-.Fn1 int unstifle_history "void"
-Stop stifling the history. This returns the previously-set
-maximum number of history entries (as set by \fBstifle_history()\fP).
-history was stifled. The value is positive if the history was
-stifled, negative if it wasn't.
-
-.Fn1 int history_is_stifled "void"
-Returns non-zero if the history is stifled, zero if it is not.
-
-.SS Information About the History List
-
-These functions return information about the entire history list or
-individual list entries.
-
-.Fn1 "HIST_ENTRY **" history_list "void"
-Return a \fBNULL\fP terminated array of \fIHIST_ENTRY *\fP which is the
-current input history. Element 0 of this list is the beginning of time.
-If there is no history, return \fBNULL\fP.
-
-.Fn1 int where_history "void"
-Returns the offset of the current history element.
-
-.Fn1 "HIST_ENTRY *" current_history "void"
-Return the history entry at the current position, as determined by
-\fBwhere_history()\fP. If there is no entry there, return a \fBNULL\fP
-pointer.
-
-.Fn1 "HIST_ENTRY *" history_get "int offset"
-Return the history entry at position \fIoffset\fP, starting from
-\fBhistory_base\fP.
-If there is no entry there, or if \fIoffset\fP
-is greater than the history length, return a \fBNULL\fP pointer.
-
-.Fn1 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.
-
-.SS Moving Around the History List
-
-These functions allow the current index into the history list to be
-set or changed.
-
-.Fn1 int history_set_pos "int pos"
-Set the current history offset to \fIpos\fP, an absolute index
-into the list.
-Returns 1 on success, 0 if \fIpos\fP is less than zero or greater
-than the number of history entries.
-
-.Fn1 "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 \fBNULL\fP pointer.
-
-.Fn1 "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 \fBNULL\fP pointer.
-
-.SS Searching the History List
-
-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 \fIanchored\fP,
-meaning that the string must match at the beginning of the history entry.
-
-.Fn2 int history_search "const char *string" "int direction"
-Search the history for \fIstring\fP, starting at the current history offset.
-If \fIdirection\fP is less than 0, then the search is through
-previous entries, otherwise through subsequent entries.
-If \fIstring\fP 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
-\fIstring\fP was found. Otherwise, nothing is changed, and a -1 is
-returned.
-
-.Fn2 int history_search_prefix "const char *string" "int direction"
-Search the history for \fIstring\fP, starting at the current history
-offset. The search is anchored: matching lines must begin with
-\fIstring\fP. If \fIdirection\fP is less than 0, then the search is
-through previous entries, otherwise through subsequent entries.
-If \fIstring\fP 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.
-
-.Fn3 int history_search_pos "const char *string" "int direction" "int pos"
-Search for \fIstring\fP in the history list, starting at \fIpos\fP, an
-absolute index into the list. If \fIdirection\fP is negative, the search
-proceeds backward from \fIpos\fP, otherwise forward. Returns the absolute
-index of the history element where \fIstring\fP was found, or -1 otherwise.
-
-.SS 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.
-
-.Fn1 int read_history "const char *filename"
-Add the contents of \fIfilename\fP to the history list, a line at a time.
-If \fIfilename\fP is \fBNULL\fP, then read from \fI~/.history\fP.
-Returns 0 if successful, or \fBerrno\fP if not.
-
-.Fn3 int read_history_range "const char *filename" "int from" "int to"
-Read a range of lines from \fIfilename\fP, adding them to the history list.
-Start reading at line \fIfrom\fP and end at \fIto\fP.
-If \fIfrom\fP is zero, start at the beginning. If \fIto\fP is less than
-\fIfrom\fP, then read until the end of the file. If \fIfilename\fP is
-\fBNULL\fP, then read from \fI~/.history\fP. Returns 0 if successful,
-or \fBerrno\fP if not.
-
-.Fn1 int write_history "const char *filename"
-Write the current history to \fIfilename\fP, overwriting \fIfilename\fP
-if necessary.
-If \fIfilename\fP is \fBNULL\fP, then write the history list to \fI~/.history\fP.
-Returns 0 on success, or \fBerrno\fP on a read or write error.
-
-
-.Fn2 int append_history "int nelements" "const char *filename"
-Append the last \fInelements\fP of the history list to \fIfilename\fP.
-If \fIfilename\fP is \fBNULL\fP, then append to \fI~/.history\fP.
-Returns 0 on success, or \fBerrno\fP on a read or write error.
-
-.Fn2 int history_truncate_file "const char *filename" "int nlines"
-Truncate the history file \fIfilename\fP, leaving only the last
-\fInlines\fP lines.
-If \fIfilename\fP is \fBNULL\fP, then \fI~/.history\fP is truncated.
-Returns 0 on success, or \fBerrno\fP on failure.
-
-.SS History Expansion
-
-These functions implement history expansion.
-
-.Fn2 int history_expand "char *string" "char **output"
-Expand \fIstring\fP, placing the result into \fIoutput\fP, a pointer
-to a string. Returns:
-.RS
-.PD 0
-.TP
-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);
-.TP
-1
-if expansions did take place;
-.TP
--1
-if there was an error in expansion;
-.TP
-2
-if the returned line should be displayed, but not executed,
-as with the \fB:p\fP modifier.
-.PD
-.RE
-If an error ocurred in expansion, then \fIoutput\fP contains a descriptive
-error message.
-
-.Fn3 "char *" get_history_event "const char *string" "int *cindex" "int qchar"
-Returns the text of the history event beginning at \fIstring\fP +
-\fI*cindex\fP. \fI*cindex\fP is modified to point to after the event
-specifier. At function entry, \fIcindex\fP points to the index into
-\fIstring\fP where the history event specification begins. \fIqchar\fP
-is a character that is allowed to end the event specification in addition
-to the ``normal'' terminating characters.
-
-.Fn1 "char **" history_tokenize "const char *string"
-Return an array of tokens parsed out of \fIstring\fP, much as the
-shell might.
-The tokens are split on the characters in the
-\fBhistory_word_delimiters\fP variable,
-and shell quoting conventions are obeyed.
-
-.Fn3 "char *" history_arg_extract "int first" "int last" "const char *string"
-Extract a string segment consisting of the \fIfirst\fP through \fIlast\fP
-arguments present in \fIstring\fP. Arguments are split using
-\fBhistory_tokenize()\fP.
-
-.SS History Variables
-
-This section describes the externally-visible variables exported by
-the GNU History Library.
-
-.Vb int history_base
-The logical offset of the first entry in the history list.
-
-.Vb int history_length
-The number of entries currently stored in the history list.
-
-.Vb int history_max_entries
-The maximum number of history entries. This must be changed using
-\fBstifle_history()\fP.
-
-.Vb char history_expansion_char
-The character that introduces a history event. The default is \fB!\fP.
-Setting this to 0 inhibits history expansion.
-
-.Vb char history_subst_char
-The character that invokes word substitution if found at the start of
-a line. The default is \fB^\fP.
-
-.Vb 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.
-
-.Vb "char *" history_word_delimiters
-The characters that separate tokens for \fBhistory_tokenize()\fP.
-The default value is \fB"\ \et\en()<>;&|"\fP.
-
-.Vb "char *" history_no_expand_chars
-The list of characters which inhibit history expansion if found immediately
-following \fBhistory_expansion_char\fP. The default is space, tab, newline,
-\fB\er\fP, and \fB=\fP.
-
-.Vb "char *" history_search_delimiter_chars
-The list of additional characters which can delimit a history search
-string, in addition to space, tab, \fI:\fP and \fI?\fP in the case of
-a substring search. The default is empty.
-
-.Vb int history_quotes_inhibit_expansion
-If non-zero, single-quoted words are not scanned for the history expansion
-character. The default value is 0.
-
-.Vb "rl_linebuf_func_t *" history_inhibit_expansion_function
-This should be set to the address of a function that takes two arguments:
-a \fBchar *\fP (\fIstring\fP)
-and an \fBint\fP index into that string (\fIi\fP).
-It should return a non-zero value if the history expansion starting at
-\fIstring[i]\fP should not be performed; zero if the expansion should
-be done.
-It is intended for use by applications like \fBbash\fP that use the history
-expansion character for additional purposes.
-By default, this variable is set to \fBNULL\fP.
-.SH FILES
-.PD 0
-.TP
-.FN ~/.history
-Default filename for reading and writing saved history
-.PD
-.SH "SEE ALSO"
-.PD 0
-.TP
-\fIThe Gnu Readline Library\fP, Brian Fox and Chet Ramey
-.TP
-\fIThe Gnu History Library\fP, Brian Fox and Chet Ramey
-.TP
-\fIbash\fP(1)
-.TP
-\fIreadline\fP(3)
-.PD
-.SH AUTHORS
-Brian Fox, Free Software Foundation
-.br
-bfox@gnu.org
-.PP
-Chet Ramey, Case Western Reserve University
-.br
-chet@ins.CWRU.Edu
-.SH BUG REPORTS
-If you find a bug in the
-.B history
-library, you should report it. But first, you should
-make sure that it really is a bug, and that it appears in the latest
-version of the
-.B history
-library that you have.
-.PP
-Once you have determined that a bug actually exists, mail a
-bug report to \fIbug\-readline\fP@\fIgnu.org\fP.
-If you have a fix, you are welcome to mail that
-as well! Suggestions and `philosophical' bug reports may be mailed
-to \fPbug-readline\fP@\fIgnu.org\fP or posted to the Usenet
-newsgroup
-.BR gnu.bash.bug .
-.PP
-Comments and bug reports concerning
-this manual page should be directed to
-.IR chet@ins.CWRU.Edu .
diff --git a/readline-4.3/doc/hstech.texinfo b/readline-4.3/doc/hstech.texinfo
deleted file mode 100644
index 9494446..0000000
--- a/readline-4.3/doc/hstech.texinfo
+++ /dev/null
@@ -1,550 +0,0 @@
-@ignore
-This file documents the user interface to the GNU History library.
-
-Copyright (C) 1988-2002 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;
- 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 {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 {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 you can dispose of the 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 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 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_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 {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 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
diff --git a/readline-4.3/doc/hsuser.texinfo b/readline-4.3/doc/hsuser.texinfo
deleted file mode 100644
index 418bfa8..0000000
--- a/readline-4.3/doc/hsuser.texinfo
+++ /dev/null
@@ -1,437 +0,0 @@
-@ignore
-This file documents the user interface to the GNU History library.
-
-Copyright (C) 1988-2002 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 Using History Interactively
-@chapter Using History Interactively
-
-@ifclear BashFeatures
-@defcodeindex bt
-@end ifclear
-
-@ifset BashFeatures
-This chapter describes how to use the @sc{gnu} History Library
-interactively, from a user's standpoint.
-It should be considered a user's guide.
-For information on using the @sc{gnu} History Library in other programs,
-see the @sc{gnu} Readline Library Manual.
-@end ifset
-@ifclear BashFeatures
-This chapter describes how to use the @sc{gnu} History Library interactively,
-from a user's standpoint. It should be considered a user's guide. For
-information on using the @sc{gnu} History Library in your own programs,
-@pxref{Programming with GNU History}.
-@end ifclear
-
-@ifset BashFeatures
-@menu
-* Bash History Facilities:: How Bash lets you manipulate your command
- history.
-* Bash History Builtins:: The Bash builtin commands that manipulate
- the command history.
-* History Interaction:: What it feels like using History as a user.
-@end menu
-@end ifset
-@ifclear BashFeatures
-@menu
-* History Interaction:: What it feels like using History as a user.
-@end menu
-@end ifclear
-
-@ifset BashFeatures
-@node Bash History Facilities
-@section Bash History Facilities
-@cindex command history
-@cindex history list
-
-When the @option{-o history} option to the @code{set} builtin
-is enabled (@pxref{The Set Builtin}),
-the shell provides access to the @dfn{command history},
-the list of commands previously typed.
-The value of the @env{HISTSIZE} shell variable is used as the
-number of commands to save in a history list.
-The text of the last @env{$HISTSIZE}
-commands (default 500) is saved.
-The shell stores each command in the history list prior to
-parameter and variable expansion
-but after history expansion is performed, subject to the
-values of the shell variables
-@env{HISTIGNORE} and @env{HISTCONTROL}.
-
-When the shell starts up, the history is initialized from the
-file named by the @env{HISTFILE} variable (default @file{~/.bash_history}).
-The file named by the value of @env{HISTFILE} is truncated, if
-necessary, to contain no more than the number of lines specified by
-the value of the @env{HISTFILESIZE} variable.
-When an interactive shell exits, the last
-@env{$HISTSIZE} lines are copied from the history list to the file
-named by @env{$HISTFILE}.
-If the @code{histappend} shell option is set (@pxref{Bash Builtins}),
-the lines are appended to the history file,
-otherwise the history file is overwritten.
-If @env{HISTFILE}
-is unset, or if the history file is unwritable, the history is
-not saved. After saving the history, the history file is truncated
-to contain no more than @env{$HISTFILESIZE}
-lines. If @env{HISTFILESIZE} is not set, no truncation is performed.
-
-The builtin command @code{fc} may be used to list or edit and re-execute
-a portion of the history list.
-The @code{history} builtin may be used to display or modify the history
-list and manipulate the history file.
-When using command-line editing, search commands
-are available in each editing mode that provide access to the
-history list (@pxref{Commands For History}).
-
-The shell allows control over which commands are saved on the history
-list. The @env{HISTCONTROL} and @env{HISTIGNORE}
-variables may be set to cause the shell to save only a subset of the
-commands entered.
-The @code{cmdhist}
-shell option, if enabled, causes the shell to attempt to save each
-line of a multi-line command in the same history entry, adding
-semicolons where necessary to preserve syntactic correctness.
-The @code{lithist}
-shell option causes the shell to save the command with embedded newlines
-instead of semicolons.
-The @code{shopt} builtin is used to set these options.
-@xref{Bash Builtins}, for a description of @code{shopt}.
-
-@node Bash History Builtins
-@section Bash History Builtins
-@cindex history builtins
-
-Bash provides two builtin commands which manipulate the
-history list and history file.
-
-@table @code
-
-@item fc
-@btindex fc
-@example
-@code{fc [-e @var{ename}] [-nlr] [@var{first}] [@var{last}]}
-@code{fc -s [@var{pat}=@var{rep}] [@var{command}]}
-@end example
-
-Fix Command. In the first form, a range of commands from @var{first} to
-@var{last} is selected from the history list. Both @var{first} and
-@var{last} may be specified as a string (to locate the most recent
-command beginning with that string) or as a number (an index into the
-history list, where a negative number is used as an offset from the
-current command number). If @var{last} is not specified it is set to
-@var{first}. If @var{first} is not specified it is set to the previous
-command for editing and @minus{}16 for listing. If the @option{-l} flag is
-given, the commands are listed on standard output. The @option{-n} flag
-suppresses the command numbers when listing. The @option{-r} flag
-reverses the order of the listing. Otherwise, the editor given by
-@var{ename} is invoked on a file containing those commands. If
-@var{ename} is not given, the value of the following variable expansion
-is used: @code{$@{FCEDIT:-$@{EDITOR:-vi@}@}}. This says to use the
-value of the @env{FCEDIT} variable if set, or the value of the
-@env{EDITOR} variable if that is set, or @code{vi} if neither is set.
-When editing is complete, the edited commands are echoed and executed.
-
-In the second form, @var{command} is re-executed after each instance
-of @var{pat} in the selected command is replaced by @var{rep}.
-
-A useful alias to use with the @code{fc} command is @code{r='fc -s'}, so
-that typing @samp{r cc} runs the last command beginning with @code{cc}
-and typing @samp{r} re-executes the last command (@pxref{Aliases}).
-
-@item history
-@btindex history
-@example
-history [@var{n}]
-history -c
-history -d @var{offset}
-history [-anrw] [@var{filename}]
-history -ps @var{arg}
-@end example
-
-With no options, display the history list with line numbers.
-Lines prefixed with a @samp{*} have been modified.
-An argument of @var{n} lists only the last @var{n} lines.
-Options, if supplied, have the following meanings:
-
-@table @code
-@item -c
-Clear the history list. This may be combined
-with the other options to replace the history list completely.
-
-@item -d @var{offset}
-Delete the history entry at position @var{offset}.
-@var{offset} should be specified as it appears when the history is
-displayed.
-
-@item -a
-Append the new
-history lines (history lines entered since the beginning of the
-current Bash session) to the history file.
-
-@item -n
-Append the history lines not already read from the history file
-to the current history list. These are lines appended to the history
-file since the beginning of the current Bash session.
-
-@item -r
-Read the current history file and append its contents to
-the history list.
-
-@item -w
-Write out the current history to the history file.
-
-@item -p
-Perform history substitution on the @var{arg}s and display the result
-on the standard output, without storing the results in the history list.
-
-@item -s
-The @var{arg}s are added to the end of
-the history list as a single entry.
-
-@end table
-
-When any of the @option{-w}, @option{-r}, @option{-a}, or @option{-n} options is
-used, if @var{filename}
-is given, then it is used as the history file. If not, then
-the value of the @env{HISTFILE} variable is used.
-
-@end table
-@end ifset
-
-@node History Interaction
-@section History Expansion
-@cindex history expansion
-
-The History library provides a history expansion feature that is similar
-to the history expansion provided by @code{csh}. This section
-describes the syntax used to manipulate the history information.
-
-History expansions introduce words from the history list into
-the input stream, making it easy to repeat commands, insert the
-arguments to a previous command into the current input line, or
-fix errors in previous commands quickly.
-
-History expansion takes place in two parts. The first is to determine
-which line from the history list should be used during substitution.
-The second is to select portions of that line for inclusion into the
-current one. The line selected from the history is called the
-@dfn{event}, and the portions of that line that are acted upon are
-called @dfn{words}. Various @dfn{modifiers} are available to manipulate
-the selected words. The line is broken into words in the same fashion
-that Bash does, so that several words
-surrounded by quotes are considered one word.
-History expansions are introduced by the appearance of the
-history expansion character, which is @samp{!} by default.
-@ifset BashFeatures
-Only @samp{\} and @samp{'} may be used to escape the history expansion
-character.
-@end ifset
-
-@ifset BashFeatures
-Several shell options settable with the @code{shopt}
-builtin (@pxref{Bash Builtins}) may be used to tailor
-the behavior of history expansion. If the
-@code{histverify} shell option is enabled, and Readline
-is being used, history substitutions are not immediately passed to
-the shell parser.
-Instead, the expanded line is reloaded into the Readline
-editing buffer for further modification.
-If Readline is being used, and the @code{histreedit}
-shell option is enabled, a failed history expansion will be
-reloaded into the Readline editing buffer for correction.
-The @option{-p} option to the @code{history} builtin command
-may be used to see what a history expansion will do before using it.
-The @option{-s} option to the @code{history} builtin may be used to
-add commands to the end of the history list without actually executing
-them, so that they are available for subsequent recall.
-This is most useful in conjunction with Readline.
-
-The shell allows control of the various characters used by the
-history expansion mechanism with the @code{histchars} variable.
-@end ifset
-
-@menu
-* Event Designators:: How to specify which history line to use.
-* Word Designators:: Specifying which words are of interest.
-* Modifiers:: Modifying the results of substitution.
-@end menu
-
-@node Event Designators
-@subsection Event Designators
-@cindex event designators
-
-An event designator is a reference to a command line entry in the
-history list.
-@cindex history events
-
-@table @asis
-
-@item @code{!}
-Start a history substitution, except when followed by a space, tab,
-the end of the line, @samp{=} or @samp{(}.
-
-@item @code{!@var{n}}
-Refer to command line @var{n}.
-
-@item @code{!-@var{n}}
-Refer to the command @var{n} lines back.
-
-@item @code{!!}
-Refer to the previous command. This is a synonym for @samp{!-1}.
-
-@item @code{!@var{string}}
-Refer to the most recent command starting with @var{string}.
-
-@item @code{!?@var{string}[?]}
-Refer to the most recent command containing @var{string}. The trailing
-@samp{?} may be omitted if the @var{string} is followed immediately by
-a newline.
-
-@item @code{^@var{string1}^@var{string2}^}
-Quick Substitution. Repeat the last command, replacing @var{string1}
-with @var{string2}. Equivalent to
-@code{!!:s/@var{string1}/@var{string2}/}.
-
-@item @code{!#}
-The entire command line typed so far.
-
-@end table
-
-@node Word Designators
-@subsection Word Designators
-
-Word designators are used to select desired words from the event.
-A @samp{:} separates the event specification from the word designator. It
-may be omitted if the word designator begins with a @samp{^}, @samp{$},
-@samp{*}, @samp{-}, or @samp{%}. Words are numbered from the beginning
-of the line, with the first word being denoted by 0 (zero). Words are
-inserted into the current line separated by single spaces.
-
-@need 0.75
-For example,
-
-@table @code
-@item !!
-designates the preceding command. When you type this, the preceding
-command is repeated in toto.
-
-@item !!:$
-designates the last argument of the preceding command. This may be
-shortened to @code{!$}.
-
-@item !fi:2
-designates the second argument of the most recent command starting with
-the letters @code{fi}.
-@end table
-
-@need 0.75
-Here are the word designators:
-
-@table @code
-
-@item 0 (zero)
-The @code{0}th word. For many applications, this is the command word.
-
-@item @var{n}
-The @var{n}th word.
-
-@item ^
-The first argument; that is, word 1.
-
-@item $
-The last argument.
-
-@item %
-The word matched by the most recent @samp{?@var{string}?} search.
-
-@item @var{x}-@var{y}
-A range of words; @samp{-@var{y}} abbreviates @samp{0-@var{y}}.
-
-@item *
-All of the words, except the @code{0}th. This is a synonym for @samp{1-$}.
-It is not an error to use @samp{*} if there is just one word in the event;
-the empty string is returned in that case.
-
-@item @var{x}*
-Abbreviates @samp{@var{x}-$}
-
-@item @var{x}-
-Abbreviates @samp{@var{x}-$} like @samp{@var{x}*}, but omits the last word.
-
-@end table
-
-If a word designator is supplied without an event specification, the
-previous command is used as the event.
-
-@node Modifiers
-@subsection Modifiers
-
-After the optional word designator, you can add a sequence of one or more
-of the following modifiers, each preceded by a @samp{:}.
-
-@table @code
-
-@item h
-Remove a trailing pathname component, leaving only the head.
-
-@item t
-Remove all leading pathname components, leaving the tail.
-
-@item r
-Remove a trailing suffix of the form @samp{.@var{suffix}}, leaving
-the basename.
-
-@item e
-Remove all but the trailing suffix.
-
-@item p
-Print the new command but do not execute it.
-
-@ifset BashFeatures
-@item q
-Quote the substituted words, escaping further substitutions.
-
-@item x
-Quote the substituted words as with @samp{q},
-but break into words at spaces, tabs, and newlines.
-@end ifset
-
-@item s/@var{old}/@var{new}/
-Substitute @var{new} for the first occurrence of @var{old} in the
-event line. Any delimiter may be used in place of @samp{/}.
-The delimiter may be quoted in @var{old} and @var{new}
-with a single backslash. If @samp{&} appears in @var{new},
-it is replaced by @var{old}. A single backslash will quote
-the @samp{&}. The final delimiter is optional if it is the last
-character on the input line.
-
-@item &
-Repeat the previous substitution.
-
-@item g
-Cause changes to be applied over the entire event line. Used in
-conjunction with @samp{s}, as in @code{gs/@var{old}/@var{new}/},
-or with @samp{&}.
-
-@end table
diff --git a/readline-4.3/doc/manvers.texinfo b/readline-4.3/doc/manvers.texinfo
deleted file mode 100644
index 1206cf0..0000000
--- a/readline-4.3/doc/manvers.texinfo
+++ /dev/null
@@ -1,10 +0,0 @@
-@ignore
-Copyright (C) 1988-2002 Free Software Foundation, Inc.
-@end ignore
-
-@set EDITION 4.3
-@set VERSION 4.3
-@set UPDATED 2002 March 4
-@set UPDATE-MONTH March 2002
-
-@set LASTCHANGE Mon Mar 4 12:00:16 EST 2002
diff --git a/readline-4.3/doc/readline.3 b/readline-4.3/doc/readline.3
deleted file mode 100644
index afd6ba2..0000000
--- a/readline-4.3/doc/readline.3
+++ /dev/null
@@ -1,1272 +0,0 @@
-.\"
-.\" MAN PAGE COMMENTS to
-.\"
-.\" Chet Ramey
-.\" Information Network Services
-.\" Case Western Reserve University
-.\" chet@ins.CWRU.Edu
-.\"
-.\" Last Change: Tue Jan 22 09:18:25 EST 2002
-.\"
-.TH READLINE 3 "2002 January 22" "GNU Readline 4.3"
-.\"
-.\" File Name macro. This used to be `.PN', for Path Name,
-.\" but Sun doesn't seem to like that very much.
-.\"
-.de FN
-\fI\|\\$1\|\fP
-..
-.SH NAME
-readline \- get a line from a user with editing
-.SH SYNOPSIS
-.LP
-.nf
-.ft B
-#include <stdio.h>
-#include <readline/readline.h>
-#include <readline/history.h>
-.ft
-.fi
-.LP
-.nf
-\fIchar *\fP
-.br
-\fBreadline\fP (\fIconst char *prompt\fP);
-.fi
-.SH COPYRIGHT
-.if n Readline is Copyright (C) 1989\-2002 by the Free Software Foundation, Inc.
-.if t Readline is Copyright \(co 1989\-2002 by the Free Software Foundation, Inc.
-.SH DESCRIPTION
-.LP
-.B readline
-will read a line from the terminal
-and return it, using
-.B prompt
-as a prompt. If
-.B prompt
-is \fBNULL\fP or the empty string, no prompt is issued.
-The line returned is allocated with
-.IR malloc (3);
-the caller must free it when finished. The line returned
-has the final newline removed, so only the text of the line
-remains.
-.LP
-.B readline
-offers editing capabilities while the user is entering the
-line.
-By default, the line editing commands
-are similar to those of emacs.
-A vi\-style line editing interface is also available.
-.LP
-This manual page describes only the most basic use of \fBreadline\fP.
-Much more functionality is available; see
-\fIThe GNU Readline Library\fP and \fIThe GNU History Library\fP
-for additional information.
-.SH RETURN VALUE
-.LP
-.B readline
-returns the text of the line read. A blank line
-returns the empty string. If
-.B EOF
-is encountered while reading a line, and the line is empty,
-.B NULL
-is returned. If an
-.B EOF
-is read with a non\-empty line, it is
-treated as a newline.
-.SH NOTATION
-.LP
-An emacs-style notation is used to denote
-keystrokes. Control keys are denoted by C\-\fIkey\fR, e.g., C\-n
-means Control\-N. Similarly,
-.I meta
-keys are denoted by M\-\fIkey\fR, so M\-x means Meta\-X. (On keyboards
-without a
-.I meta
-key, M\-\fIx\fP means ESC \fIx\fP, i.e., press the Escape key
-then the
-.I x
-key. This makes ESC the \fImeta prefix\fP.
-The combination M\-C\-\fIx\fP means ESC\-Control\-\fIx\fP,
-or press the Escape key
-then hold the Control key while pressing the
-.I x
-key.)
-.PP
-Readline commands may be given numeric
-.IR arguments ,
-which normally act as a repeat count. Sometimes, however, it is the
-sign of the argument that is significant. Passing a negative argument
-to a command that acts in the forward direction (e.g., \fBkill\-line\fP)
-causes that command to act in a backward direction. Commands whose
-behavior with arguments deviates from this are noted.
-.PP
-When a command is described as \fIkilling\fP text, the text
-deleted is saved for possible future retrieval
-(\fIyanking\fP). The killed text is saved in a
-\fIkill ring\fP. Consecutive kills cause the text to be
-accumulated into one unit, which can be yanked all at once.
-Commands which do not kill text separate the chunks of text
-on the kill ring.
-.SH INITIALIZATION FILE
-.LP
-Readline is customized by putting commands in an initialization
-file (the \fIinputrc\fP file).
-The name of this file is taken from the value of the
-.B INPUTRC
-environment variable. If that variable is unset, the default is
-.IR ~/.inputrc .
-When a program which uses the readline library starts up, the
-init file is read, and the key bindings and variables are set.
-There are only a few basic constructs allowed in the
-readline init file. Blank lines are ignored.
-Lines beginning with a \fB#\fP are comments.
-Lines beginning with a \fB$\fP indicate conditional constructs.
-Other lines denote key bindings and variable settings.
-Each program using this library may add its own commands
-and bindings.
-.PP
-For example, placing
-.RS
-.PP
-M\-Control\-u: universal\-argument
-.RE
-or
-.RS
-C\-Meta\-u: universal\-argument
-.RE
-.sp
-into the
-.I inputrc
-would make M\-C\-u execute the readline command
-.IR universal\-argument .
-.PP
-The following symbolic character names are recognized while
-processing key bindings:
-.IR DEL ,
-.IR ESC ,
-.IR ESCAPE ,
-.IR LFD ,
-.IR NEWLINE ,
-.IR RET ,
-.IR RETURN ,
-.IR RUBOUT ,
-.IR SPACE ,
-.IR SPC ,
-and
-.IR TAB .
-.PP
-In addition to command names, readline allows keys to be bound
-to a string that is inserted when the key is pressed (a \fImacro\fP).
-.PP
-.SS Key Bindings
-.PP
-The syntax for controlling key bindings in the
-.I inputrc
-file is simple. All that is required is the name of the
-command or the text of a macro and a key sequence to which
-it should be bound. The name may be specified in one of two ways:
-as a symbolic key name, possibly with \fIMeta\-\fP or \fIControl\-\fP
-prefixes, or as a key sequence.
-.PP
-When using the form \fBkeyname\fP:\^\fIfunction-name\fP or \fImacro\fP,
-.I keyname
-is the name of a key spelled out in English. For example:
-.sp
-.RS
-Control\-u: universal\-argument
-.br
-Meta\-Rubout: backward\-kill\-word
-.br
-Control\-o: "> output"
-.RE
-.LP
-In the above example,
-.I C\-u
-is bound to the function
-.BR universal\-argument ,
-.I M-DEL
-is bound to the function
-.BR backward\-kill\-word ,
-and
-.I C\-o
-is bound to run the macro
-expressed on the right hand side (that is, to insert the text
-.if t \f(CW> output\fP
-.if n ``> output''
-into the line).
-.PP
-In the second form, \fB"keyseq"\fP:\^\fIfunction\-name\fP or \fImacro\fP,
-.B keyseq
-differs from
-.B keyname
-above in that strings denoting
-an entire key sequence may be specified by placing the sequence
-within double quotes. Some GNU Emacs style key escapes can be
-used, as in the following example, but the symbolic character names
-are not recognized.
-.sp
-.RS
-"\eC\-u": universal\-argument
-.br
-"\eC\-x\eC\-r": re\-read\-init\-file
-.br
-"\ee[11~": "Function Key 1"
-.RE
-.PP
-In this example,
-.I C-u
-is again bound to the function
-.BR universal\-argument .
-.I "C-x C-r"
-is bound to the function
-.BR re\-read\-init\-file ,
-and
-.I "ESC [ 1 1 ~"
-is bound to insert the text
-.if t \f(CWFunction Key 1\fP.
-.if n ``Function Key 1''.
-.PP
-The full set of GNU Emacs style escape sequences available when specifying
-key sequences is
-.RS
-.PD 0
-.TP
-.B \eC\-
-control prefix
-.TP
-.B \eM\-
-meta prefix
-.TP
-.B \ee
-an escape character
-.TP
-.B \e\e
-backslash
-.TP
-.B \e"
-literal ", a double quote
-.TP
-.B \e'
-literal ', a single quote
-.RE
-.PD
-.PP
-In addition to the GNU Emacs style escape sequences, a second
-set of backslash escapes is available:
-.RS
-.PD 0
-.TP
-.B \ea
-alert (bell)
-.TP
-.B \eb
-backspace
-.TP
-.B \ed
-delete
-.TP
-.B \ef
-form feed
-.TP
-.B \en
-newline
-.TP
-.B \er
-carriage return
-.TP
-.B \et
-horizontal tab
-.TP
-.B \ev
-vertical tab
-.TP
-.B \e\fInnn\fP
-the eight-bit character whose value is the octal value \fInnn\fP
-(one to three digits)
-.TP
-.B \ex\fIHH\fP
-the eight-bit character whose value is the hexadecimal value \fIHH\fP
-(one or two hex digits)
-.RE
-.PD
-.PP
-When entering the text of a macro, single or double quotes should
-be used to indicate a macro definition. Unquoted text
-is assumed to be a function name.
-In the macro body, the backslash escapes described above are expanded.
-Backslash will quote any other character in the macro text,
-including " and '.
-.PP
-.B Bash
-allows the current readline key bindings to be displayed or modified
-with the
-.B bind
-builtin command. The editing mode may be switched during interactive
-use by using the
-.B \-o
-option to the
-.B set
-builtin command. Other programs using this library provide
-similar mechanisms. The
-.I inputrc
-file may be edited and re-read if a program does not provide
-any other means to incorporate new bindings.
-.SS Variables
-.PP
-Readline has variables that can be used to further customize its
-behavior. A variable may be set in the
-.I inputrc
-file with a statement of the form
-.RS
-.PP
-\fBset\fP \fIvariable\-name\fP \fIvalue\fP
-.RE
-.PP
-Except where noted, readline variables can take the values
-.B On
-or
-.B Off
-(without regard to case).
-The variables and their default values are:
-.PP
-.PD 0
-.TP
-.B bell\-style (audible)
-Controls what happens when readline wants to ring the terminal bell.
-If set to \fBnone\fP, readline never rings the bell. If set to
-\fBvisible\fP, readline uses a visible bell if one is available.
-If set to \fBaudible\fP, readline attempts to ring the terminal's bell.
-.TP
-.B comment\-begin (``#'')
-The string that is inserted in \fBvi\fP mode when the
-.B insert\-comment
-command is executed.
-This command is bound to
-.B M\-#
-in emacs mode and to
-.B #
-in vi command mode.
-.TP
-.B completion\-ignore\-case (Off)
-If set to \fBOn\fP, readline performs filename matching and completion
-in a case\-insensitive fashion.
-.TP
-.B completion\-query\-items (100)
-This determines when the user is queried about viewing
-the number of possible completions
-generated by the \fBpossible\-completions\fP command.
-It may be set to any integer value greater than or equal to
-zero. If the number of possible completions is greater than
-or equal to the value of this variable, the user is asked whether
-or not he wishes to view them; otherwise they are simply listed
-on the terminal.
-.TP
-.B convert\-meta (On)
-If set to \fBOn\fP, readline will convert characters with the
-eighth bit set to an ASCII key sequence
-by stripping the eighth bit and prefixing it with an
-escape character (in effect, using escape as the \fImeta prefix\fP).
-.TP
-.B disable\-completion (Off)
-If set to \fBOn\fP, readline will inhibit word completion. Completion
-characters will be inserted into the line as if they had been
-mapped to \fBself-insert\fP.
-.TP
-.B editing\-mode (emacs)
-Controls whether readline begins with a set of key bindings similar
-to emacs or vi.
-.B editing\-mode
-can be set to either
-.B emacs
-or
-.BR vi .
-.TP
-.B enable\-keypad (Off)
-When set to \fBOn\fP, readline will try to enable the application
-keypad when it is called. Some systems need this to enable the
-arrow keys.
-.TP
-.B expand\-tilde (Off)
-If set to \fBon\fP, tilde expansion is performed when readline
-attempts word completion.
-.TP
-.B history-preserve-point
-If set to \fBon\fP, the history code attempts to place point at the
-same location on each history line retrived with \fBprevious-history\fP
-or \fBnext-history\fP.
-.TP
-.B horizontal\-scroll\-mode (Off)
-When set to \fBOn\fP, makes readline use a single line for display,
-scrolling the input horizontally on a single screen line when it
-becomes longer than the screen width rather than wrapping to a new line.
-.TP
-.B input\-meta (Off)
-If set to \fBOn\fP, readline will enable eight-bit input (that is,
-it will not clear the eighth bit in the characters it reads),
-regardless of what the terminal claims it can support. The name
-.B meta\-flag
-is a synonym for this variable.
-.TP
-.B isearch\-terminators (``C\-[ C\-J'')
-The string of characters that should terminate an incremental
-search without subsequently executing the character as a command.
-If this variable has not been given a value, the characters
-\fIESC\fP and \fIC\-J\fP will terminate an incremental search.
-.TP
-.B keymap (emacs)
-Set the current readline keymap. The set of legal keymap names is
-\fIemacs, emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,
-vi-command\fP, and
-.IR vi-insert .
-\fIvi\fP is equivalent to \fIvi-command\fP; \fIemacs\fP is
-equivalent to \fIemacs-standard\fP. The default value is
-.IR emacs .
-The value of
-.B editing\-mode
-also affects the default keymap.
-.TP
-.B mark\-directories (On)
-If set to \fBOn\fP, completed directory names have a slash
-appended.
-.TP
-.B mark\-modified\-lines (Off)
-If set to \fBOn\fP, history lines that have been modified are displayed
-with a preceding asterisk (\fB*\fP).
-.TP
-.B mark\-symlinked\-directories (Off)
-If set to \fBOn\fP, completed names which are symbolic links to directories
-have a slash appended (subject to the value of
-\fBmark\-directories\fP).
-.TP
-.B match\-hidden\-files (On)
-This variable, when set to \fBOn\fP, causes readline to match files whose
-names begin with a `.' (hidden files) when performing filename
-completion, unless the leading `.' is
-supplied by the user in the filename to be completed.
-.TP
-.B output\-meta (Off)
-If set to \fBOn\fP, readline will display characters with the
-eighth bit set directly rather than as a meta-prefixed escape
-sequence.
-.TP
-.B page\-completions (On)
-If set to \fBOn\fP, readline uses an internal \fImore\fP-like pager
-to display a screenful of possible completions at a time.
-.TP
-.B print\-completions\-horizontally (Off)
-If set to \fBOn\fP, readline will display completions with matches
-sorted horizontally in alphabetical order, rather than down the screen.
-.TP
-.B show\-all\-if\-ambiguous (Off)
-This alters the default behavior of the completion functions. If
-set to
-.BR on ,
-words which have more than one possible completion cause the
-matches to be listed immediately instead of ringing the bell.
-.TP
-.B visible\-stats (Off)
-If set to \fBOn\fP, a character denoting a file's type as reported
-by \fIstat\fP(2) is appended to the filename when listing possible
-completions.
-.PD
-.SS Conditional Constructs
-.PP
-Readline implements a facility similar in spirit to the conditional
-compilation features of the C preprocessor which allows key
-bindings and variable settings to be performed as the result
-of tests. There are four parser directives used.
-.IP \fB$if\fP
-The
-.B $if
-construct allows bindings to be made based on the
-editing mode, the terminal being used, or the application using
-readline. The text of the test extends to the end of the line;
-no characters are required to isolate it.
-.RS
-.IP \fBmode\fP
-The \fBmode=\fP form of the \fB$if\fP directive is used to test
-whether readline is in emacs or vi mode.
-This may be used in conjunction
-with the \fBset keymap\fP command, for instance, to set bindings in
-the \fIemacs-standard\fP and \fIemacs-ctlx\fP keymaps only if
-readline is starting out in emacs mode.
-.IP \fBterm\fP
-The \fBterm=\fP form may be used to include terminal-specific
-key bindings, perhaps to bind the key sequences output by the
-terminal's function keys. The word on the right side of the
-.B =
-is tested against the full name of the terminal and the portion
-of the terminal name before the first \fB\-\fP. This allows
-.I sun
-to match both
-.I sun
-and
-.IR sun\-cmd ,
-for instance.
-.IP \fBapplication\fP
-The \fBapplication\fP construct is used to include
-application-specific settings. Each program using the readline
-library sets the \fIapplication name\fP, and an initialization
-file can test for a particular value.
-This could be used to bind key sequences to functions useful for
-a specific program. For instance, the following command adds a
-key sequence that quotes the current or previous word in Bash:
-.sp 1
-.RS
-.nf
-\fB$if\fP Bash
-# Quote the current or previous word
-"\eC-xq": "\eeb\e"\eef\e""
-\fB$endif\fP
-.fi
-.RE
-.RE
-.IP \fB$endif\fP
-This command, as seen in the previous example, terminates an
-\fB$if\fP command.
-.IP \fB$else\fP
-Commands in this branch of the \fB$if\fP directive are executed if
-the test fails.
-.IP \fB$include\fP
-This directive takes a single filename as an argument and reads commands
-and bindings from that file. For example, the following directive
-would read \fI/etc/inputrc\fP:
-.sp 1
-.RS
-.nf
-\fB$include\fP \^ \fI/etc/inputrc\fP
-.fi
-.RE
-.SH SEARCHING
-.PP
-Readline provides commands for searching through the command history
-for lines containing a specified string.
-There are two search modes:
-.I incremental
-and
-.IR non-incremental .
-.PP
-Incremental searches begin before the user has finished typing the
-search string.
-As each character of the search string is typed, readline displays
-the next entry from the history matching the string typed so far.
-An incremental search requires only as many characters as needed to
-find the desired history entry.
-To search backward in the history for a particular string, type
-\fBC\-r\fP. Typing \fBC\-s\fP searches forward through the history.
-The characters present in the value of the \fBisearch-terminators\fP
-variable are used to terminate an incremental search.
-If that variable has not been assigned a value the \fIEscape\fP and
-\fBC\-J\fP characters will terminate an incremental search.
-\fBC\-G\fP will abort an incremental search and restore the original
-line.
-When the search is terminated, the history entry containing the
-search string becomes the current line.
-.PP
-To find other matching entries in the history list, type \fBC\-s\fP or
-\fBC\-r\fP as appropriate.
-This will search backward or forward in the history for the next
-line matching the search string typed so far.
-Any other key sequence bound to a readline command will terminate
-the search and execute that command.
-For instance, a newline will terminate the search and accept
-the line, thereby executing the command from the history list.
-A movement command will terminate the search, make the last line found
-the current line, and begin editing.
-.PP
-Non-incremental searches read the entire search string before starting
-to search for matching history lines. The search string may be
-typed by the user or be part of the contents of the current line.
-.SH EDITING COMMANDS
-.PP
-The following is a list of the names of the commands and the default
-key sequences to which they are bound.
-Command names without an accompanying key sequence are unbound by default.
-.PP
-In the following descriptions, \fIpoint\fP refers to the current cursor
-position, and \fImark\fP refers to a cursor position saved by the
-\fBset\-mark\fP command.
-The text between the point and mark is referred to as the \fIregion\fP.
-.SS Commands for Moving
-.PP
-.PD 0
-.TP
-.B beginning\-of\-line (C\-a)
-Move to the start of the current line.
-.TP
-.B end\-of\-line (C\-e)
-Move to the end of the line.
-.TP
-.B forward\-char (C\-f)
-Move forward a character.
-.TP
-.B backward\-char (C\-b)
-Move back a character.
-.TP
-.B forward\-word (M\-f)
-Move forward to the end of the next word. Words are composed of
-alphanumeric characters (letters and digits).
-.TP
-.B backward\-word (M\-b)
-Move back to the start of the current or previous word. Words are
-composed of alphanumeric characters (letters and digits).
-.TP
-.B clear\-screen (C\-l)
-Clear the screen leaving the current line at the top of the screen.
-With an argument, refresh the current line without clearing the
-screen.
-.TP
-.B redraw\-current\-line
-Refresh the current line.
-.PD
-.SS Commands for Manipulating the History
-.PP
-.PD 0
-.TP
-.B accept\-line (Newline, Return)
-Accept the line regardless of where the cursor is.
-If this line is
-non-empty, it may be added to the history list for future recall with
-\fBadd_history()\fP.
-If the line is a modified history line, the history line is restored to its original state.
-.TP
-.B previous\-history (C\-p)
-Fetch the previous command from the history list, moving back in
-the list.
-.TP
-.B next\-history (C\-n)
-Fetch the next command from the history list, moving forward in the
-list.
-.TP
-.B beginning\-of\-history (M\-<)
-Move to the first line in the history.
-.TP
-.B end\-of\-history (M\->)
-Move to the end of the input history, i.e., the line currently being
-entered.
-.TP
-.B reverse\-search\-history (C\-r)
-Search backward starting at the current line and moving `up' through
-the history as necessary. This is an incremental search.
-.TP
-.B forward\-search\-history (C\-s)
-Search forward starting at the current line and moving `down' through
-the history as necessary. This is an incremental search.
-.TP
-.B non\-incremental\-reverse\-search\-history (M\-p)
-Search backward through the history starting at the current line
-using a non-incremental search for a string supplied by the user.
-.TP
-.B non\-incremental\-forward\-search\-history (M\-n)
-Search forward through the history using a non-incremental search
-for a string supplied by the user.
-.TP
-.B history\-search\-forward
-Search forward through the history for the string of characters
-between the start of the current line and the current cursor
-position (the \fIpoint\fP).
-This is a non-incremental search.
-.TP
-.B history\-search\-backward
-Search backward through the history for the string of characters
-between the start of the current line and the point.
-This is a non-incremental search.
-.TP
-.B yank\-nth\-arg (M\-C\-y)
-Insert the first argument to the previous command (usually
-the second word on the previous line) at point.
-With an argument
-.IR n ,
-insert the \fIn\fPth word from the previous command (the words
-in the previous command begin with word 0). A negative argument
-inserts the \fIn\fPth word from the end of the previous command.
-.TP
-.B
-yank\-last\-arg (M\-.\^, M\-_\^)
-Insert the last argument to the previous command (the last word of
-the previous history entry). With an argument,
-behave exactly like \fByank\-nth\-arg\fP.
-Successive calls to \fByank\-last\-arg\fP move back through the history
-list, inserting the last argument of each line in turn.
-.PD
-.SS Commands for Changing Text
-.PP
-.PD 0
-.TP
-.B delete\-char (C\-d)
-Delete the character at point. If point is at the
-beginning of the line, there are no characters in the line, and
-the last character typed was not bound to \fBdelete\-char\fP, then return
-.SM
-.BR EOF .
-.TP
-.B backward\-delete\-char (Rubout)
-Delete the character behind the cursor. When given a numeric argument,
-save the deleted text on the kill ring.
-.TP
-.B forward\-backward\-delete\-char
-Delete the character under the cursor, unless the cursor is at the
-end of the line, in which case the character behind the cursor is
-deleted.
-.TP
-.B quoted\-insert (C\-q, C\-v)
-Add the next character that you type to the line verbatim. This is
-how to insert characters like \fBC\-q\fP, for example.
-.TP
-.B tab\-insert (M-TAB)
-Insert a tab character.
-.TP
-.B self\-insert (a,\ b,\ A,\ 1,\ !,\ ...)
-Insert the character typed.
-.TP
-.B transpose\-chars (C\-t)
-Drag the character before point forward over the character at point,
-moving point forward as well.
-If point is at the end of the line, then this transposes
-the two characters before point.
-Negative arguments have no effect.
-.TP
-.B transpose\-words (M\-t)
-Drag the word before point past the word after point,
-moving point over that word as well.
-If point is at the end of the line, this transposes
-the last two words on the line.
-.TP
-.B upcase\-word (M\-u)
-Uppercase the current (or following) word. With a negative argument,
-uppercase the previous word, but do not move point.
-.TP
-.B downcase\-word (M\-l)
-Lowercase the current (or following) word. With a negative argument,
-lowercase the previous word, but do not move point.
-.TP
-.B capitalize\-word (M\-c)
-Capitalize the current (or following) word. With a negative argument,
-capitalize the previous word, but do not move point.
-.TP
-.B overwrite\-mode
-Toggle overwrite mode. With an explicit positive numeric argument,
-switches to overwrite mode. With an explicit non-positive numeric
-argument, switches to insert mode. This command affects only
-\fBemacs\fP mode; \fBvi\fP mode does overwrite differently.
-Each call to \fIreadline()\fP starts in insert mode.
-In overwrite mode, characters bound to \fBself\-insert\fP replace
-the text at point rather than pushing the text to the right.
-Characters bound to \fBbackward\-delete\-char\fP replace the character
-before point with a space. By default, this command is unbound.
-.PD
-.SS Killing and Yanking
-.PP
-.PD 0
-.TP
-.B kill\-line (C\-k)
-Kill the text from point to the end of the line.
-.TP
-.B backward\-kill\-line (C\-x Rubout)
-Kill backward to the beginning of the line.
-.TP
-.B unix\-line\-discard (C\-u)
-Kill backward from point to the beginning of the line.
-The killed text is saved on the kill-ring.
-.\" There is no real difference between this and backward-kill-line
-.TP
-.B kill\-whole\-line
-Kill all characters on the current line, no matter where point is.
-.TP
-.B kill\-word (M\-d)
-Kill from point the end of the current word, or if between
-words, to the end of the next word. Word boundaries are the same as
-those used by \fBforward\-word\fP.
-.TP
-.B backward\-kill\-word (M\-Rubout)
-Kill the word behind point.
-Word boundaries are the same as those used by \fBbackward\-word\fP.
-.TP
-.B unix\-word\-rubout (C\-w)
-Kill the word behind point, using white space as a word boundary.
-The killed text is saved on the kill-ring.
-.TP
-.B delete\-horizontal\-space (M\-\e)
-Delete all spaces and tabs around point.
-.TP
-.B kill\-region
-Kill the text between the point and \fImark\fP (saved cursor position).
-This text is referred to as the \fIregion\fP.
-.TP
-.B copy\-region\-as\-kill
-Copy the text in the region to the kill buffer.
-.TP
-.B copy\-backward\-word
-Copy the word before point to the kill buffer.
-The word boundaries are the same as \fBbackward\-word\fP.
-.TP
-.B copy\-forward\-word
-Copy the word following point to the kill buffer.
-The word boundaries are the same as \fBforward\-word\fP.
-.TP
-.B yank (C\-y)
-Yank the top of the kill ring into the buffer at point.
-.TP
-.B yank\-pop (M\-y)
-Rotate the kill ring, and yank the new top. Only works following
-.B yank
-or
-.BR yank\-pop .
-.PD
-.SS Numeric Arguments
-.PP
-.PD 0
-.TP
-.B digit\-argument (M\-0, M\-1, ..., M\-\-)
-Add this digit to the argument already accumulating, or start a new
-argument. M\-\- starts a negative argument.
-.TP
-.B universal\-argument
-This is another way to specify an argument.
-If this command is followed by one or more digits, optionally with a
-leading minus sign, those digits define the argument.
-If the command is followed by digits, executing
-.B universal\-argument
-again ends the numeric argument, but is otherwise ignored.
-As a special case, if this command is immediately followed by a
-character that is neither a digit or minus sign, the argument count
-for the next command is multiplied by four.
-The argument count is initially one, so executing this function the
-first time makes the argument count four, a second time makes the
-argument count sixteen, and so on.
-.PD
-.SS Completing
-.PP
-.PD 0
-.TP
-.B complete (TAB)
-Attempt to perform completion on the text before point.
-The actual completion performed is application-specific.
-.BR Bash ,
-for instance, attempts completion treating the text as a variable
-(if the text begins with \fB$\fP), username (if the text begins with
-\fB~\fP), hostname (if the text begins with \fB@\fP), or
-command (including aliases and functions) in turn. If none
-of these produces a match, filename completion is attempted.
-.BR Gdb ,
-on the other hand,
-allows completion of program functions and variables, and
-only attempts filename completion under certain circumstances.
-.TP
-.B possible\-completions (M\-?)
-List the possible completions of the text before point.
-.TP
-.B insert\-completions (M\-*)
-Insert all completions of the text before point
-that would have been generated by
-\fBpossible\-completions\fP.
-.TP
-.B menu\-complete
-Similar to \fBcomplete\fP, but replaces the word to be completed
-with a single match from the list of possible completions.
-Repeated execution of \fBmenu\-complete\fP steps through the list
-of possible completions, inserting each match in turn.
-At the end of the list of completions, the bell is rung
-(subject to the setting of \Bbell\-style\fP)
-and the original text is restored.
-An argument of \fIn\fP moves \fIn\fP positions forward in the list
-of matches; a negative argument may be used to move backward
-through the list.
-This command is intended to be bound to \fBTAB\fP, but is unbound
-by default.
-.TP
-.B delete\-char\-or\-list
-Deletes the character under the cursor if not at the beginning or
-end of the line (like \fBdelete-char\fP).
-If at the end of the line, behaves identically to
-\fBpossible-completions\fP.
-.PD
-.SS Keyboard Macros
-.PP
-.PD 0
-.TP
-.B start\-kbd\-macro (C\-x (\^)
-Begin saving the characters typed into the current keyboard macro.
-.TP
-.B end\-kbd\-macro (C\-x )\^)
-Stop saving the characters typed into the current keyboard macro
-and store the definition.
-.TP
-.B call\-last\-kbd\-macro (C\-x e)
-Re-execute the last keyboard macro defined, by making the characters
-in the macro appear as if typed at the keyboard.
-.PD
-.SS Miscellaneous
-.PP
-.PD 0
-.TP
-.B re\-read\-init\-file (C\-x C\-r)
-Read in the contents of the \fIinputrc\fP file, and incorporate
-any bindings or variable assignments found there.
-.TP
-.B abort (C\-g)
-Abort the current editing command and
-ring the terminal's bell (subject to the setting of
-.BR bell\-style ).
-.TP
-.B do\-uppercase\-version (M\-a, M\-b, M\-\fIx\fP, ...)
-If the metafied character \fIx\fP is lowercase, run the command
-that is bound to the corresponding uppercase character.
-.TP
-.B prefix\-meta (ESC)
-Metafy the next character typed.
-.SM
-.B ESC
-.B f
-is equivalent to
-.BR Meta\-f .
-.TP
-.B undo (C\-_, C\-x C\-u)
-Incremental undo, separately remembered for each line.
-.TP
-.B revert\-line (M\-r)
-Undo all changes made to this line. This is like executing the
-.B undo
-command enough times to return the line to its initial state.
-.TP
-.B tilde\-expand (M\-&)
-Perform tilde expansion on the current word.
-.TP
-.B set\-mark (C\-@, M\-<space>)
-Set the mark to the point. If a
-numeric argument is supplied, the mark is set to that position.
-.TP
-.B exchange\-point\-and\-mark (C\-x C\-x)
-Swap the point with the mark. The current cursor position is set to
-the saved position, and the old cursor position is saved as the mark.
-.TP
-.B character\-search (C\-])
-A character is read and point is moved to the next occurrence of that
-character. A negative count searches for previous occurrences.
-.TP
-.B character\-search\-backward (M\-C\-])
-A character is read and point is moved to the previous occurrence of that
-character. A negative count searches for subsequent occurrences.
-.TP
-.B insert\-comment (M\-#)
-Without a numeric argument, the value of the readline
-.B comment\-begin
-variable is inserted at the beginning of the current line.
-If a numeric argument is supplied, this command acts as a toggle: if
-the characters at the beginning of the line do not match the value
-of \fBcomment\-begin\fP, the value is inserted, otherwise
-the characters in \fBcomment-begin\fP are deleted from the beginning of
-the line.
-In either case, the line is accepted as if a newline had been typed.
-The default value of
-.B comment\-begin
-makes the current line a shell comment.
-If a numeric argument causes the comment character to be removed, the line
-will be executed by the shell.
-.TP
-.B dump\-functions
-Print all of the functions and their key bindings to the
-readline output stream. If a numeric argument is supplied,
-the output is formatted in such a way that it can be made part
-of an \fIinputrc\fP file.
-.TP
-.B dump\-variables
-Print all of the settable variables and their values to the
-readline output stream. If a numeric argument is supplied,
-the output is formatted in such a way that it can be made part
-of an \fIinputrc\fP file.
-.TP
-.B dump\-macros
-Print all of the readline key sequences bound to macros and the
-strings they ouput. If a numeric argument is supplied,
-the output is formatted in such a way that it can be made part
-of an \fIinputrc\fP file.
-.TP
-.B emacs\-editing\-mode (C\-e)
-When in
-.B vi
-command mode, this causes a switch to
-.B emacs
-editing mode.
-.TP
-.B vi\-editing\-mode (M\-C\-j)
-When in
-.B emacs
-editing mode, this causes a switch to
-.B vi
-editing mode.
-.PD
-.SH DEFAULT KEY BINDINGS
-.LP
-The following is a list of the default emacs and vi bindings.
-Characters with the eighth bit set are written as M\-<character>, and
-are referred to as
-.I metafied
-characters.
-The printable ASCII characters not mentioned in the list of emacs
-standard bindings are bound to the
-.B self\-insert
-function, which just inserts the given character into the input line.
-In vi insertion mode, all characters not specifically mentioned are
-bound to
-.BR self\-insert .
-Characters assigned to signal generation by
-.IR stty (1)
-or the terminal driver, such as C-Z or C-C,
-retain that function.
-Upper and lower case metafied characters are bound to the same function in
-the emacs mode meta keymap.
-The remaining characters are unbound, which causes readline
-to ring the bell (subject to the setting of the
-.B bell\-style
-variable).
-.SS Emacs Mode
-.RS +.6i
-.nf
-.ta 2.5i
-.sp
-Emacs Standard bindings
-.sp
-"C-@" set-mark
-"C-A" beginning-of-line
-"C-B" backward-char
-"C-D" delete-char
-"C-E" end-of-line
-"C-F" forward-char
-"C-G" abort
-"C-H" backward-delete-char
-"C-I" complete
-"C-J" accept-line
-"C-K" kill-line
-"C-L" clear-screen
-"C-M" accept-line
-"C-N" next-history
-"C-P" previous-history
-"C-Q" quoted-insert
-"C-R" reverse-search-history
-"C-S" forward-search-history
-"C-T" transpose-chars
-"C-U" unix-line-discard
-"C-V" quoted-insert
-"C-W" unix-word-rubout
-"C-Y" yank
-"C-]" character-search
-"C-_" undo
-"\^ " to "/" self-insert
-"0" to "9" self-insert
-":" to "~" self-insert
-"C-?" backward-delete-char
-.PP
-Emacs Meta bindings
-.sp
-"M-C-G" abort
-"M-C-H" backward-kill-word
-"M-C-I" tab-insert
-"M-C-J" vi-editing-mode
-"M-C-M" vi-editing-mode
-"M-C-R" revert-line
-"M-C-Y" yank-nth-arg
-"M-C-[" complete
-"M-C-]" character-search-backward
-"M-space" set-mark
-"M-#" insert-comment
-"M-&" tilde-expand
-"M-*" insert-completions
-"M--" digit-argument
-"M-." yank-last-arg
-"M-0" digit-argument
-"M-1" digit-argument
-"M-2" digit-argument
-"M-3" digit-argument
-"M-4" digit-argument
-"M-5" digit-argument
-"M-6" digit-argument
-"M-7" digit-argument
-"M-8" digit-argument
-"M-9" digit-argument
-"M-<" beginning-of-history
-"M-=" possible-completions
-"M->" end-of-history
-"M-?" possible-completions
-"M-B" backward-word
-"M-C" capitalize-word
-"M-D" kill-word
-"M-F" forward-word
-"M-L" downcase-word
-"M-N" non-incremental-forward-search-history
-"M-P" non-incremental-reverse-search-history
-"M-R" revert-line
-"M-T" transpose-words
-"M-U" upcase-word
-"M-Y" yank-pop
-"M-\e" delete-horizontal-space
-"M-~" tilde-expand
-"M-C-?" backward-kill-word
-"M-_" yank-last-arg
-.PP
-Emacs Control-X bindings
-.sp
-"C-XC-G" abort
-"C-XC-R" re-read-init-file
-"C-XC-U" undo
-"C-XC-X" exchange-point-and-mark
-"C-X(" start-kbd-macro
-"C-X)" end-kbd-macro
-"C-XE" call-last-kbd-macro
-"C-XC-?" backward-kill-line
-.sp
-.RE
-.SS VI Mode bindings
-.RS +.6i
-.nf
-.ta 2.5i
-.sp
-.PP
-VI Insert Mode functions
-.sp
-"C-D" vi-eof-maybe
-"C-H" backward-delete-char
-"C-I" complete
-"C-J" accept-line
-"C-M" accept-line
-"C-R" reverse-search-history
-"C-S" forward-search-history
-"C-T" transpose-chars
-"C-U" unix-line-discard
-"C-V" quoted-insert
-"C-W" unix-word-rubout
-"C-Y" yank
-"C-[" vi-movement-mode
-"C-_" undo
-"\^ " to "~" self-insert
-"C-?" backward-delete-char
-.PP
-VI Command Mode functions
-.sp
-"C-D" vi-eof-maybe
-"C-E" emacs-editing-mode
-"C-G" abort
-"C-H" backward-char
-"C-J" accept-line
-"C-K" kill-line
-"C-L" clear-screen
-"C-M" accept-line
-"C-N" next-history
-"C-P" previous-history
-"C-Q" quoted-insert
-"C-R" reverse-search-history
-"C-S" forward-search-history
-"C-T" transpose-chars
-"C-U" unix-line-discard
-"C-V" quoted-insert
-"C-W" unix-word-rubout
-"C-Y" yank
-"C-_" vi-undo
-"\^ " forward-char
-"#" insert-comment
-"$" end-of-line
-"%" vi-match
-"&" vi-tilde-expand
-"*" vi-complete
-"+" next-history
-"," vi-char-search
-"-" previous-history
-"." vi-redo
-"/" vi-search
-"0" beginning-of-line
-"1" to "9" vi-arg-digit
-";" vi-char-search
-"=" vi-complete
-"?" vi-search
-"A" vi-append-eol
-"B" vi-prev-word
-"C" vi-change-to
-"D" vi-delete-to
-"E" vi-end-word
-"F" vi-char-search
-"G" vi-fetch-history
-"I" vi-insert-beg
-"N" vi-search-again
-"P" vi-put
-"R" vi-replace
-"S" vi-subst
-"T" vi-char-search
-"U" revert-line
-"W" vi-next-word
-"X" backward-delete-char
-"Y" vi-yank-to
-"\e" vi-complete
-"^" vi-first-print
-"_" vi-yank-arg
-"`" vi-goto-mark
-"a" vi-append-mode
-"b" vi-prev-word
-"c" vi-change-to
-"d" vi-delete-to
-"e" vi-end-word
-"f" vi-char-search
-"h" backward-char
-"i" vi-insertion-mode
-"j" next-history
-"k" prev-history
-"l" forward-char
-"m" vi-set-mark
-"n" vi-search-again
-"p" vi-put
-"r" vi-change-char
-"s" vi-subst
-"t" vi-char-search
-"u" vi-undo
-"w" vi-next-word
-"x" vi-delete
-"y" vi-yank-to
-"|" vi-column
-"~" vi-change-case
-.RE
-.SH "SEE ALSO"
-.PD 0
-.TP
-\fIThe Gnu Readline Library\fP, Brian Fox and Chet Ramey
-.TP
-\fIThe Gnu History Library\fP, Brian Fox and Chet Ramey
-.TP
-\fIbash\fP(1)
-.PD
-.SH FILES
-.PD 0
-.TP
-.FN ~/.inputrc
-Individual \fBreadline\fP initialization file
-.PD
-.SH AUTHORS
-Brian Fox, Free Software Foundation
-.br
-bfox@gnu.org
-.PP
-Chet Ramey, Case Western Reserve University
-.br
-chet@ins.CWRU.Edu
-.SH BUG REPORTS
-If you find a bug in
-.B readline,
-you should report it. But first, you should
-make sure that it really is a bug, and that it appears in the latest
-version of the
-.B readline
-library that you have.
-.PP
-Once you have determined that a bug actually exists, mail a
-bug report to \fIbug\-readline\fP@\fIgnu.org\fP.
-If you have a fix, you are welcome to mail that
-as well! Suggestions and `philosophical' bug reports may be mailed
-to \fPbug-readline\fP@\fIgnu.org\fP or posted to the Usenet
-newsgroup
-.BR gnu.bash.bug .
-.PP
-Comments and bug reports concerning
-this manual page should be directed to
-.IR chet@ins.CWRU.Edu .
-.SH BUGS
-.PP
-It's too big and too slow.
diff --git a/readline-4.3/doc/rlman.texinfo b/readline-4.3/doc/rlman.texinfo
deleted file mode 100644
index 1ffebad..0000000
--- a/readline-4.3/doc/rlman.texinfo
+++ /dev/null
@@ -1,108 +0,0 @@
-\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
-@setchapternewpage odd
-
-@include manvers.texinfo
-
-@ifinfo
-@dircategory Libraries
-@direntry
-* Readline: (readline). The GNU readline library API
-@end direntry
-
-This document describes the GNU Readline Library, a utility which aids
-in the consistency of user interface across discrete programs that need
-to provide a command line interface.
-
-Copyright (C) 1988-2002 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-pare preserved on all copies.
-
-@ignore
-Permission is granted to process this file through TeX and print the
-results, provided the printed document carries copying permission
-notice identical to this one except for the removal of this paragraph
-(this paragraph not being relevant to the printed manual).
-@end ignore
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the entire
-resulting derived work is distributed under the terms of a permission
-notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that this permission notice may be stated in a translation approved
-by the Free Software Foundation.
-@end ifinfo
-
-@titlepage
-@title GNU Readline Library
-@subtitle Edition @value{EDITION}, for @code{Readline Library} Version @value{VERSION}.
-@subtitle @value{UPDATE-MONTH}
-@author Brian Fox, Free Software Foundation
-@author Chet Ramey, Case Western Reserve University
-
-@page
-This document describes the GNU Readline Library, a utility which aids
-in the consistency of user interface across discrete programs that need
-to provide a command line interface.
-
-Published by the Free Software Foundation @*
-59 Temple Place, Suite 330, @*
-Boston, MA 02111 USA
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the entire
-resulting derived work is distributed under the terms of a permission
-notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that this permission notice may be stated in a translation approved
-by the Free Software Foundation.
-
-@vskip 0pt plus 1filll
-Copyright @copyright{} 1988-2002 Free Software Foundation, Inc.
-@end titlepage
-
-@ifinfo
-@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 that need
-to provide a command line interface.
-
-@menu
-* Command Line Editing:: GNU Readline User's Manual.
-* Programming with GNU Readline:: GNU Readline Programmer's Manual.
-* Concept Index:: Index of concepts described in this manual.
-* Function and Variable Index:: Index of externally visible functions
- and variables.
-@end menu
-@end ifinfo
-
-@include rluser.texinfo
-@include rltech.texinfo
-
-@node Concept Index
-@unnumbered Concept Index
-@printindex cp
-
-@node Function and Variable Index
-@unnumbered Function and Variable Index
-@printindex fn
-
-@contents
-@bye
diff --git a/readline-4.3/doc/rltech.texinfo b/readline-4.3/doc/rltech.texinfo
deleted file mode 100644
index 037e824..0000000
--- a/readline-4.3/doc/rltech.texinfo
+++ /dev/null
@@ -1,2165 +0,0 @@
-@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 consitency of user interface across discrete programs that need
-to provide a command line interface.
-
-Copyright (C) 1988-2002 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-pare preserved on all copies.
-
-@ignore
-Permission is granted to process this file through TeX and print the
-results, provided the printed document carries copying permission
-notice identical to this one except for the removal of this paragraph
-(this paragraph not being relevant to the printed manual).
-@end ignore
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the entire
-resulting derived work is distributed under the terms of a permission
-notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that this permission notice may be stated in a translation approved
-by the Foundation.
-@end ifinfo
-
-@node Programming with GNU Readline
-@chapter Programming with GNU Readline
-
-This chapter describes the interface between the @sc{gnu} Readline Library and
-other programs. If you are a programmer, and you wish to include the
-features found in @sc{gnu} Readline
-such as completion, line editing, and interactive history manipulation
-in your own programs, this section is for you.
-
-@menu
-* Basic Behavior:: Using the default behavior of Readline.
-* Custom Functions:: Adding your own functions to Readline.
-* Readline Variables:: Variables accessible to custom
- functions.
-* Readline Convenience Functions:: Functions which Readline supplies to
- aid in writing your own custom
- functions.
-* Readline Signal Handling:: How Readline behaves when it receives signals.
-* Custom Completers:: Supplanting or supplementing Readline's
- completion functions.
-@end menu
-
-@node Basic Behavior
-@section Basic Behavior
-
-Many programs provide a command line interface, such as @code{mail},
-@code{ftp}, and @code{sh}. For such programs, the default behaviour of
-Readline is sufficient. This section describes how to use Readline in
-the simplest way possible, perhaps to replace calls in your code to
-@code{gets()} or @code{fgets()}.
-
-@findex readline
-@cindex readline, function
-
-The function @code{readline()} prints a prompt @var{prompt}
-and then reads and returns a single line of text from the user.
-If @var{prompt} is @code{NULL} or the empty string, no prompt is displayed.
-The line @code{readline} returns is allocated with @code{malloc()};
-the caller should @code{free()} the line when it has finished with it.
-The declaration for @code{readline} in ANSI C is
-
-@example
-@code{char *readline (const char *@var{prompt});}
-@end example
-
-@noindent
-So, one might say
-@example
-@code{char *line = readline ("Enter a line: ");}
-@end example
-@noindent
-in order to read a line of text from the user.
-The line returned has the final newline removed, so only the
-text remains.
-
-If @code{readline} encounters an @code{EOF} while reading the line, and the
-line is empty at that point, then @code{(char *)NULL} is returned.
-Otherwise, the line is ended just as if a newline had been typed.
-
-If you want the user to be able to get at the line later, (with
-@key{C-p} for example), you must call @code{add_history()} to save the
-line away in a @dfn{history} list of such lines.
-
-@example
-@code{add_history (line)};
-@end example
-
-@noindent
-For full details on the GNU History Library, see the associated manual.
-
-It is preferable to avoid saving empty lines on the history list, since
-users rarely have a burning need to reuse a blank line. Here is
-a function which usefully replaces the standard @code{gets()} library
-function, and has the advantage of no static buffer to overflow:
-
-@example
-/* A static variable for holding the line. */
-static char *line_read = (char *)NULL;
-
-/* Read a string, and return a pointer to it.
- Returns NULL on EOF. */
-char *
-rl_gets ()
-@{
- /* If the buffer has already been allocated,
- return the memory to the free pool. */
- if (line_read)
- @{
- free (line_read);
- line_read = (char *)NULL;
- @}
-
- /* Get a line from the user. */
- line_read = readline ("");
-
- /* If the line has any text in it,
- save it on the history. */
- if (line_read && *line_read)
- add_history (line_read);
-
- return (line_read);
-@}
-@end example
-
-This function gives the user the default behaviour of @key{TAB}
-completion: completion on file names. If you do not want Readline to
-complete on filenames, you can change the binding of the @key{TAB} key
-with @code{rl_bind_key()}.
-
-@example
-@code{int rl_bind_key (int @var{key}, rl_command_func_t *@var{function});}
-@end example
-
-@code{rl_bind_key()} takes two arguments: @var{key} is the character that
-you want to bind, and @var{function} is the address of the function to
-call when @var{key} is pressed. Binding @key{TAB} to @code{rl_insert()}
-makes @key{TAB} insert itself.
-@code{rl_bind_key()} returns non-zero if @var{key} is not a valid
-ASCII character code (between 0 and 255).
-
-Thus, to disable the default @key{TAB} behavior, the following suffices:
-@example
-@code{rl_bind_key ('\t', rl_insert);}
-@end example
-
-This code should be executed once at the start of your program; you
-might write a function called @code{initialize_readline()} which
-performs this and other desired initializations, such as installing
-custom completers (@pxref{Custom Completers}).
-
-@node Custom Functions
-@section Custom Functions
-
-Readline provides many functions for manipulating the text of
-the line, but it isn't possible to anticipate the needs of all
-programs. This section describes the various functions and variables
-defined within the Readline library which allow a user program to add
-customized functionality to Readline.
-
-Before declaring any functions that customize Readline's behavior, or
-using any functionality Readline provides in other code, an
-application writer should include the file @code{<readline/readline.h>}
-in any file that uses Readline's features. Since some of the definitions
-in @code{readline.h} use the @code{stdio} library, the file
-@code{<stdio.h>} should be included before @code{readline.h}.
-
-@code{readline.h} defines a C preprocessor variable that should
-be treated as an integer, @code{RL_READLINE_VERSION}, which may
-be used to conditionally compile application code depending on
-the installed Readline version. The value is a hexadecimal
-encoding of the major and minor version numbers of the library,
-of the form 0x@var{MMmm}. @var{MM} is the two-digit major
-version number; @var{mm} is the two-digit minor version number.
-For Readline 4.2, for example, the value of
-@code{RL_READLINE_VERSION} would be @code{0x0402}.
-
-@menu
-* Readline Typedefs:: C declarations to make code readable.
-* Function Writing:: Variables and calling conventions.
-@end menu
-
-@node Readline Typedefs
-@subsection Readline Typedefs
-
-For readabilty, we declare a number of new object types, all pointers
-to functions.
-
-The reason for declaring these new types is to make it easier to write
-code describing pointers to C functions with appropriately prototyped
-arguments and return values.
-
-For instance, say we want to declare a variable @var{func} as a pointer
-to a function which takes two @code{int} arguments and returns an
-@code{int} (this is the type of all of the Readline bindable functions).
-Instead of the classic C declaration
-
-@code{int (*func)();}
-
-@noindent
-or the ANSI-C style declaration
-
-@code{int (*func)(int, int);}
-
-@noindent
-we may write
-
-@code{rl_command_func_t *func;}
-
-The full list of function pointer types available is
-
-@table @code
-@item typedef int rl_command_func_t (int, int);
-
-@item typedef char *rl_compentry_func_t (const char *, int);
-
-@item typedef char **rl_completion_func_t (const char *, int, int);
-
-@item typedef char *rl_quote_func_t (char *, int, char *);
-
-@item typedef char *rl_dequote_func_t (char *, int);
-
-@item typedef int rl_compignore_func_t (char **);
-
-@item typedef void rl_compdisp_func_t (char **, int, int);
-
-@item typedef int rl_hook_func_t (void);
-
-@item typedef int rl_getc_func_t (FILE *);
-
-@item typedef int rl_linebuf_func_t (char *, int);
-
-@item typedef int rl_intfunc_t (int);
-@item #define rl_ivoidfunc_t rl_hook_func_t
-@item typedef int rl_icpfunc_t (char *);
-@item typedef int rl_icppfunc_t (char **);
-
-@item typedef void rl_voidfunc_t (void);
-@item typedef void rl_vintfunc_t (int);
-@item typedef void rl_vcpfunc_t (char *);
-@item typedef void rl_vcppfunc_t (char **);
-
-@end table
-
-@node Function Writing
-@subsection Writing a New Function
-
-In order to write new functions for Readline, you need to know the
-calling conventions for keyboard-invoked functions, and the names of the
-variables that describe the current state of the line read so far.
-
-The calling sequence for a command @code{foo} looks like
-
-@example
-@code{int foo (int count, int key)}
-@end example
-
-@noindent
-where @var{count} is the numeric argument (or 1 if defaulted) and
-@var{key} is the key that invoked this function.
-
-It is completely up to the function as to what should be done with the
-numeric argument. Some functions use it as a repeat count, some
-as a flag, and others to choose alternate behavior (refreshing the current
-line as opposed to refreshing the screen, for example). Some choose to
-ignore it. In general, if a
-function uses the numeric argument as a repeat count, it should be able
-to do something useful with both negative and positive arguments.
-At the very least, it should be aware that it can be passed a
-negative argument.
-
-A command function should return 0 if its action completes successfully,
-and a non-zero value if some error occurs.
-
-@node Readline Variables
-@section Readline Variables
-
-These variables are available to function writers.
-
-@deftypevar {char *} rl_line_buffer
-This is the line gathered so far. You are welcome to modify the
-contents of the line, but see @ref{Allowing Undoing}. The
-function @code{rl_extend_line_buffer} is available to increase
-the memory allocated to @code{rl_line_buffer}.
-@end deftypevar
-
-@deftypevar int rl_point
-The offset of the current cursor position in @code{rl_line_buffer}
-(the @emph{point}).
-@end deftypevar
-
-@deftypevar int rl_end
-The number of characters present in @code{rl_line_buffer}. When
-@code{rl_point} is at the end of the line, @code{rl_point} and
-@code{rl_end} are equal.
-@end deftypevar
-
-@deftypevar int rl_mark
-The @var{mark} (saved position) in the current line. If set, the mark
-and point define a @emph{region}.
-@end deftypevar
-
-@deftypevar int rl_done
-Setting this to a non-zero value causes Readline to return the current
-line immediately.
-@end deftypevar
-
-@deftypevar int rl_num_chars_to_read
-Setting this to a positive value before calling @code{readline()} causes
-Readline to return after accepting that many characters, rather
-than reading up to a character bound to @code{accept-line}.
-@end deftypevar
-
-@deftypevar int rl_pending_input
-Setting this to a value makes it the next keystroke read. This is a
-way to stuff a single character into the input stream.
-@end deftypevar
-
-@deftypevar int rl_dispatching
-Set to a non-zero value if a function is being called from a key binding;
-zero otherwise. Application functions can test this to discover whether
-they were called directly or by Readline's dispatching mechanism.
-@end deftypevar
-
-@deftypevar int rl_erase_empty_line
-Setting this to a non-zero value causes Readline to completely erase
-the current line, including any prompt, any time a newline is typed as
-the only character on an otherwise-empty line. The cursor is moved to
-the beginning of the newly-blank line.
-@end deftypevar
-
-@deftypevar {char *} rl_prompt
-The prompt Readline uses. This is set from the argument to
-@code{readline()}, and should not be assigned to directly.
-The @code{rl_set_prompt()} function (@pxref{Redisplay}) may
-be used to modify the prompt string after calling @code{readline()}.
-@end deftypevar
-
-@deftypevar int rl_already_prompted
-If an application wishes to display the prompt itself, rather than have
-Readline do it the first time @code{readline()} is called, it should set
-this variable to a non-zero value after displaying the prompt.
-The prompt must also be passed as the argument to @code{readline()} so
-the redisplay functions can update the display properly.
-The calling application is responsible for managing the value; Readline
-never sets it.
-@end deftypevar
-
-@deftypevar {const char *} rl_library_version
-The version number of this revision of the library.
-@end deftypevar
-
-@deftypevar int rl_readline_version
-An integer encoding the current version of the library. The encoding is
-of the form 0x@var{MMmm}, where @var{MM} is the two-digit major version
-number, and @var{mm} is the two-digit minor version number.
-For example, for Readline-4.2, @code{rl_readline_version} would have the
-value 0x0402.
-@end deftypevar
-
-@deftypevar {int} rl_gnu_readline_p
-Always set to 1, denoting that this is @sc{gnu} readline rather than some
-emulation.
-@end deftypevar
-
-@deftypevar {const char *} rl_terminal_name
-The terminal type, used for initialization. If not set by the application,
-Readline sets this to the value of the @env{TERM} environment variable
-the first time it is called.
-@end deftypevar
-
-@deftypevar {const char *} rl_readline_name
-This variable is set to a unique name by each application using Readline.
-The value allows conditional parsing of the inputrc file
-(@pxref{Conditional Init Constructs}).
-@end deftypevar
-
-@deftypevar {FILE *} rl_instream
-The stdio stream from which Readline reads input.
-If @code{NULL}, Readline defaults to @var{stdin}.
-@end deftypevar
-
-@deftypevar {FILE *} rl_outstream
-The stdio stream to which Readline performs output.
-If @code{NULL}, Readline defaults to @var{stdout}.
-@end deftypevar
-
-@deftypevar {rl_command_func_t *} rl_last_func
-The address of the last command function Readline executed. May be used to
-test whether or not a function is being executed twice in succession, for
-example.
-@end deftypevar
-
-@deftypevar {rl_hook_func_t *} rl_startup_hook
-If non-zero, this is the address of a function to call just
-before @code{readline} prints the first prompt.
-@end deftypevar
-
-@deftypevar {rl_hook_func_t *} rl_pre_input_hook
-If non-zero, this is the address of a function to call after
-the first prompt has been printed and just before @code{readline}
-starts reading input characters.
-@end deftypevar
-
-@deftypevar {rl_hook_func_t *} rl_event_hook
-If non-zero, this is the address of a function to call periodically
-when Readline is waiting for terminal input.
-By default, this will be called at most ten times a second if there
-is no keyboard input.
-@end deftypevar
-
-@deftypevar {rl_getc_func_t *} rl_getc_function
-If non-zero, Readline will call indirectly through this pointer
-to get a character from the input stream. By default, it is set to
-@code{rl_getc}, the default Readline character input function
-(@pxref{Character Input}).
-@end deftypevar
-
-@deftypevar {rl_voidfunc_t *} rl_redisplay_function
-If non-zero, Readline will call indirectly through this pointer
-to update the display with the current contents of the editing buffer.
-By default, it is set to @code{rl_redisplay}, the default Readline
-redisplay function (@pxref{Redisplay}).
-@end deftypevar
-
-@deftypevar {rl_vintfunc_t *} rl_prep_term_function
-If non-zero, Readline will call indirectly through this pointer
-to initialize the terminal. The function takes a single argument, an
-@code{int} flag that says whether or not to use eight-bit characters.
-By default, this is set to @code{rl_prep_terminal}
-(@pxref{Terminal Management}).
-@end deftypevar
-
-@deftypevar {rl_voidfunc_t *} rl_deprep_term_function
-If non-zero, Readline will call indirectly through this pointer
-to reset the terminal. This function should undo the effects of
-@code{rl_prep_term_function}.
-By default, this is set to @code{rl_deprep_terminal}
-(@pxref{Terminal Management}).
-@end deftypevar
-
-@deftypevar {Keymap} rl_executing_keymap
-This variable is set to the keymap (@pxref{Keymaps}) in which the
-currently executing readline function was found.
-@end deftypevar
-
-@deftypevar {Keymap} rl_binding_keymap
-This variable is set to the keymap (@pxref{Keymaps}) in which the
-last key binding occurred.
-@end deftypevar
-
-@deftypevar {char *} rl_executing_macro
-This variable is set to the text of any currently-executing macro.
-@end deftypevar
-
-@deftypevar {int} rl_readline_state
-A variable with bit values that encapsulate the current Readline state.
-A bit is set with the @code{RL_SETSTATE} macro, and unset with the
-@code{RL_UNSETSTATE} macro. Use the @code{RL_ISSTATE} macro to test
-whether a particular state bit is set. Current state bits include:
-
-@table @code
-@item RL_STATE_NONE
-Readline has not yet been called, nor has it begun to intialize.
-@item RL_STATE_INITIALIZING
-Readline is initializing its internal data structures.
-@item RL_STATE_INITIALIZED
-Readline has completed its initialization.
-@item RL_STATE_TERMPREPPED
-Readline has modified the terminal modes to do its own input and redisplay.
-@item RL_STATE_READCMD
-Readline is reading a command from the keyboard.
-@item RL_STATE_METANEXT
-Readline is reading more input after reading the meta-prefix character.
-@item RL_STATE_DISPATCHING
-Readline is dispatching to a command.
-@item RL_STATE_MOREINPUT
-Readline is reading more input while executing an editing command.
-@item RL_STATE_ISEARCH
-Readline is performing an incremental history search.
-@item RL_STATE_NSEARCH
-Readline is performing a non-incremental history search.
-@item RL_STATE_SEARCH
-Readline is searching backward or forward through the history for a string.
-@item RL_STATE_NUMERICARG
-Readline is reading a numeric argument.
-@item RL_STATE_MACROINPUT
-Readline is currently getting its input from a previously-defined keyboard
-macro.
-@item RL_STATE_MACRODEF
-Readline is currently reading characters defining a keyboard macro.
-@item RL_STATE_OVERWRITE
-Readline is in overwrite mode.
-@item RL_STATE_COMPLETING
-Readline is performing word completion.
-@item RL_STATE_SIGHANDLER
-Readline is currently executing the readline signal handler.
-@item RL_STATE_UNDOING
-Readline is performing an undo.
-@item RL_STATE_DONE
-Readline has read a key sequence bound to @code{accept-line}
-and is about to return the line to the caller.
-@end table
-
-@end deftypevar
-
-@deftypevar {int} rl_explicit_arg
-Set to a non-zero value if an explicit numeric argument was specified by
-the user. Only valid in a bindable command function.
-@end deftypevar
-
-@deftypevar {int} rl_numeric_arg
-Set to the value of any numeric argument explicitly specified by the user
-before executing the current Readline function. Only valid in a bindable
-command function.
-@end deftypevar
-
-@deftypevar {int} rl_editing_mode
-Set to a value denoting Readline's current editing mode. A value of
-@var{1} means Readline is currently in emacs mode; @var{0}
-means that vi mode is active.
-@end deftypevar
-
-
-@node Readline Convenience Functions
-@section Readline Convenience Functions
-
-@menu
-* Function Naming:: How to give a function you write a name.
-* Keymaps:: Making keymaps.
-* Binding Keys:: Changing Keymaps.
-* Associating Function Names and Bindings:: Translate function names to
- key sequences.
-* Allowing Undoing:: How to make your functions undoable.
-* Redisplay:: Functions to control line display.
-* Modifying Text:: Functions to modify @code{rl_line_buffer}.
-* Character Input:: Functions to read keyboard input.
-* Terminal Management:: Functions to manage terminal settings.
-* Utility Functions:: Generally useful functions and hooks.
-* Miscellaneous Functions:: Functions that don't fall into any category.
-* Alternate Interface:: Using Readline in a `callback' fashion.
-* A Readline Example:: An example Readline function.
-@end menu
-
-@node Function Naming
-@subsection Naming a Function
-
-The user can dynamically change the bindings of keys while using
-Readline. This is done by representing the function with a descriptive
-name. The user is able to type the descriptive name when referring to
-the function. Thus, in an init file, one might find
-
-@example
-Meta-Rubout: backward-kill-word
-@end example
-
-This binds the keystroke @key{Meta-Rubout} to the function
-@emph{descriptively} named @code{backward-kill-word}. You, as the
-programmer, should bind the functions you write to descriptive names as
-well. Readline provides a function for doing that:
-
-@deftypefun int rl_add_defun (const char *name, rl_command_func_t *function, int key)
-Add @var{name} to the list of named functions. Make @var{function} be
-the function that gets called. If @var{key} is not -1, then bind it to
-@var{function} using @code{rl_bind_key()}.
-@end deftypefun
-
-Using this function alone is sufficient for most applications. It is
-the recommended way to add a few functions to the default functions that
-Readline has built in. If you need to do something other
-than adding a function to Readline, you may need to use the
-underlying functions described below.
-
-@node Keymaps
-@subsection Selecting a Keymap
-
-Key bindings take place on a @dfn{keymap}. The keymap is the
-association between the keys that the user types and the functions that
-get run. You can make your own keymaps, copy existing keymaps, and tell
-Readline which keymap to use.
-
-@deftypefun Keymap rl_make_bare_keymap (void)
-Returns a new, empty keymap. The space for the keymap is allocated with
-@code{malloc()}; the caller should free it by calling
-@code{rl_discard_keymap()} when done.
-@end deftypefun
-
-@deftypefun Keymap rl_copy_keymap (Keymap map)
-Return a new keymap which is a copy of @var{map}.
-@end deftypefun
-
-@deftypefun Keymap rl_make_keymap (void)
-Return a new keymap with the printing characters bound to rl_insert,
-the lowercase Meta characters bound to run their equivalents, and
-the Meta digits bound to produce numeric arguments.
-@end deftypefun
-
-@deftypefun void rl_discard_keymap (Keymap keymap)
-Free the storage associated with @var{keymap}.
-@end deftypefun
-
-Readline has several internal keymaps. These functions allow you to
-change which keymap is active.
-
-@deftypefun Keymap rl_get_keymap (void)
-Returns the currently active keymap.
-@end deftypefun
-
-@deftypefun void rl_set_keymap (Keymap keymap)
-Makes @var{keymap} the currently active keymap.
-@end deftypefun
-
-@deftypefun Keymap rl_get_keymap_by_name (const char *name)
-Return the keymap matching @var{name}. @var{name} is one which would
-be supplied in a @code{set keymap} inputrc line (@pxref{Readline Init File}).
-@end deftypefun
-
-@deftypefun {char *} rl_get_keymap_name (Keymap keymap)
-Return the name matching @var{keymap}. @var{name} is one which would
-be supplied in a @code{set keymap} inputrc line (@pxref{Readline Init File}).
-@end deftypefun
-
-@node Binding Keys
-@subsection Binding Keys
-
-Key sequences are associate with functions through the keymap.
-Readline has several internal keymaps: @code{emacs_standard_keymap},
-@code{emacs_meta_keymap}, @code{emacs_ctlx_keymap},
-@code{vi_movement_keymap}, and @code{vi_insertion_keymap}.
-@code{emacs_standard_keymap} is the default, and the examples in
-this manual assume that.
-
-Since @code{readline()} installs a set of default key bindings the first
-time it is called, there is always the danger that a custom binding
-installed before the first call to @code{readline()} will be overridden.
-An alternate mechanism is to install custom key bindings in an
-initialization function assigned to the @code{rl_startup_hook} variable
-(@pxref{Readline Variables}).
-
-These functions manage key bindings.
-
-@deftypefun int rl_bind_key (int key, rl_command_func_t *function)
-Binds @var{key} to @var{function} in the currently active keymap.
-Returns non-zero in the case of an invalid @var{key}.
-@end deftypefun
-
-@deftypefun int rl_bind_key_in_map (int key, rl_command_func_t *function, Keymap map)
-Bind @var{key} to @var{function} in @var{map}. Returns non-zero in the case
-of an invalid @var{key}.
-@end deftypefun
-
-@deftypefun int rl_unbind_key (int key)
-Bind @var{key} to the null function in the currently active keymap.
-Returns non-zero in case of error.
-@end deftypefun
-
-@deftypefun int rl_unbind_key_in_map (int key, Keymap map)
-Bind @var{key} to the null function in @var{map}.
-Returns non-zero in case of error.
-@end deftypefun
-
-@deftypefun int rl_unbind_function_in_map (rl_command_func_t *function, Keymap map)
-Unbind all keys that execute @var{function} in @var{map}.
-@end deftypefun
-
-@deftypefun int rl_unbind_command_in_map (const char *command, Keymap map)
-Unbind all keys that are bound to @var{command} in @var{map}.
-@end deftypefun
-
-@deftypefun int rl_set_key (const char *keyseq, rl_command_func_t *function, Keymap map)
-Bind the key sequence represented by the string @var{keyseq} to the function
-@var{function}. This makes new keymaps as
-necessary. The initial keymap in which to do bindings is @var{map}.
-@end deftypefun
-
-@deftypefun int rl_generic_bind (int type, const char *keyseq, char *data, Keymap map)
-Bind the key sequence represented by the string @var{keyseq} to the arbitrary
-pointer @var{data}. @var{type} says what kind of data is pointed to by
-@var{data}; this can be a function (@code{ISFUNC}), a macro
-(@code{ISMACR}), or a keymap (@code{ISKMAP}). This makes new keymaps as
-necessary. The initial keymap in which to do bindings is @var{map}.
-@end deftypefun
-
-@deftypefun int rl_parse_and_bind (char *line)
-Parse @var{line} as if it had been read from the @code{inputrc} file and
-perform any key bindings and variable assignments found
-(@pxref{Readline Init File}).
-@end deftypefun
-
-@deftypefun int rl_read_init_file (const char *filename)
-Read keybindings and variable assignments from @var{filename}
-(@pxref{Readline Init File}).
-@end deftypefun
-
-@node Associating Function Names and Bindings
-@subsection Associating Function Names and Bindings
-
-These functions allow you to find out what keys invoke named functions
-and the functions invoked by a particular key sequence. You may also
-associate a new function name with an arbitrary function.
-
-@deftypefun {rl_command_func_t *} rl_named_function (const char *name)
-Return the function with name @var{name}.
-@end deftypefun
-
-@deftypefun {rl_command_func_t *} rl_function_of_keyseq (const char *keyseq, Keymap map, int *type)
-Return the function invoked by @var{keyseq} in keymap @var{map}.
-If @var{map} is @code{NULL}, the current keymap is used. If @var{type} is
-not @code{NULL}, the type of the object is returned in the @code{int} variable
-it points to (one of @code{ISFUNC}, @code{ISKMAP}, or @code{ISMACR}).
-@end deftypefun
-
-@deftypefun {char **} rl_invoking_keyseqs (rl_command_func_t *function)
-Return an array of strings representing the key sequences used to
-invoke @var{function} in the current keymap.
-@end deftypefun
-
-@deftypefun {char **} rl_invoking_keyseqs_in_map (rl_command_func_t *function, Keymap map)
-Return an array of strings representing the key sequences used to
-invoke @var{function} in the keymap @var{map}.
-@end deftypefun
-
-@deftypefun void rl_function_dumper (int readable)
-Print the readline function names and the key sequences currently
-bound to them to @code{rl_outstream}. If @var{readable} is non-zero,
-the list is formatted in such a way that it can be made part of an
-@code{inputrc} file and re-read.
-@end deftypefun
-
-@deftypefun void rl_list_funmap_names (void)
-Print the names of all bindable Readline functions to @code{rl_outstream}.
-@end deftypefun
-
-@deftypefun {const char **} rl_funmap_names (void)
-Return a NULL terminated array of known function names. The array is
-sorted. The array itself is allocated, but not the strings inside. You
-should @code{free()} the array when you are done, but not the pointers.
-@end deftypefun
-
-@deftypefun int rl_add_funmap_entry (const char *name, rl_command_func_t *function)
-Add @var{name} to the list of bindable Readline command names, and make
-@var{function} the function to be called when @var{name} is invoked.
-@end deftypefun
-
-@node Allowing Undoing
-@subsection Allowing Undoing
-
-Supporting the undo command is a painless thing, and makes your
-functions much more useful. It is certainly easy to try
-something if you know you can undo it.
-
-If your function simply inserts text once, or deletes text once, and
-uses @code{rl_insert_text()} or @code{rl_delete_text()} to do it, then
-undoing is already done for you automatically.
-
-If you do multiple insertions or multiple deletions, or any combination
-of these operations, you should group them together into one operation.
-This is done with @code{rl_begin_undo_group()} and
-@code{rl_end_undo_group()}.
-
-The types of events that can be undone are:
-
-@smallexample
-enum undo_code @{ UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END @};
-@end smallexample
-
-Notice that @code{UNDO_DELETE} means to insert some text, and
-@code{UNDO_INSERT} means to delete some text. That is, the undo code
-tells what to undo, not how to undo it. @code{UNDO_BEGIN} and
-@code{UNDO_END} are tags added by @code{rl_begin_undo_group()} and
-@code{rl_end_undo_group()}.
-
-@deftypefun int rl_begin_undo_group (void)
-Begins saving undo information in a group construct. The undo
-information usually comes from calls to @code{rl_insert_text()} and
-@code{rl_delete_text()}, but could be the result of calls to
-@code{rl_add_undo()}.
-@end deftypefun
-
-@deftypefun int rl_end_undo_group (void)
-Closes the current undo group started with @code{rl_begin_undo_group
-()}. There should be one call to @code{rl_end_undo_group()}
-for each call to @code{rl_begin_undo_group()}.
-@end deftypefun
-
-@deftypefun void rl_add_undo (enum undo_code what, int start, int end, char *text)
-Remember how to undo an event (according to @var{what}). The affected
-text runs from @var{start} to @var{end}, and encompasses @var{text}.
-@end deftypefun
-
-@deftypefun void rl_free_undo_list (void)
-Free the existing undo list.
-@end deftypefun
-
-@deftypefun int rl_do_undo (void)
-Undo the first thing on the undo list. Returns @code{0} if there was
-nothing to undo, non-zero if something was undone.
-@end deftypefun
-
-Finally, if you neither insert nor delete text, but directly modify the
-existing text (e.g., change its case), call @code{rl_modifying()}
-once, just before you modify the text. You must supply the indices of
-the text range that you are going to modify.
-
-@deftypefun int rl_modifying (int start, int end)
-Tell Readline to save the text between @var{start} and @var{end} as a
-single undo unit. It is assumed that you will subsequently modify
-that text.
-@end deftypefun
-
-@node Redisplay
-@subsection Redisplay
-
-@deftypefun void rl_redisplay (void)
-Change what's displayed on the screen to reflect the current contents
-of @code{rl_line_buffer}.
-@end deftypefun
-
-@deftypefun int rl_forced_update_display (void)
-Force the line to be updated and redisplayed, whether or not
-Readline thinks the screen display is correct.
-@end deftypefun
-
-@deftypefun int rl_on_new_line (void)
-Tell the update functions that we have moved onto a new (empty) line,
-usually after ouputting a newline.
-@end deftypefun
-
-@deftypefun int rl_on_new_line_with_prompt (void)
-Tell the update functions that we have moved onto a new line, with
-@var{rl_prompt} already displayed.
-This could be used by applications that want to output the prompt string
-themselves, but still need Readline to know the prompt string length for
-redisplay.
-It should be used after setting @var{rl_already_prompted}.
-@end deftypefun
-
-@deftypefun int rl_reset_line_state (void)
-Reset the display state to a clean state and redisplay the current line
-starting on a new line.
-@end deftypefun
-
-@deftypefun int rl_crlf (void)
-Move the cursor to the start of the next screen line.
-@end deftypefun
-
-@deftypefun int rl_show_char (int c)
-Display character @var{c} on @code{rl_outstream}.
-If Readline has not been set to display meta characters directly, this
-will convert meta characters to a meta-prefixed key sequence.
-This is intended for use by applications which wish to do their own
-redisplay.
-@end deftypefun
-
-@deftypefun int rl_message (const char *, @dots{})
-The arguments are a format string as would be supplied to @code{printf},
-possibly containing conversion specifications such as @samp{%d}, and
-any additional arguments necessary to satisfy the conversion specifications.
-The resulting string is displayed in the @dfn{echo area}. The echo area
-is also used to display numeric arguments and search strings.
-@end deftypefun
-
-@deftypefun int rl_clear_message (void)
-Clear the message in the echo area.
-@end deftypefun
-
-@deftypefun void rl_save_prompt (void)
-Save the local Readline prompt display state in preparation for
-displaying a new message in the message area with @code{rl_message()}.
-@end deftypefun
-
-@deftypefun void rl_restore_prompt (void)
-Restore the local Readline prompt display state saved by the most
-recent call to @code{rl_save_prompt}.
-@end deftypefun
-
-@deftypefun int rl_expand_prompt (char *prompt)
-Expand any special character sequences in @var{prompt} and set up the
-local Readline prompt redisplay variables.
-This function is called by @code{readline()}. It may also be called to
-expand the primary prompt if the @code{rl_on_new_line_with_prompt()}
-function or @code{rl_already_prompted} variable is used.
-It returns the number of visible characters on the last line of the
-(possibly multi-line) prompt.
-@end deftypefun
-
-@deftypefun int rl_set_prompt (const char *prompt)
-Make Readline use @var{prompt} for subsequent redisplay. This calls
-@code{rl_expand_prompt()} to expand the prompt and sets @code{rl_prompt}
-to the result.
-@end deftypefun
-
-@node Modifying Text
-@subsection Modifying Text
-
-@deftypefun int rl_insert_text (const char *text)
-Insert @var{text} into the line at the current cursor position.
-Returns the number of characters inserted.
-@end deftypefun
-
-@deftypefun int rl_delete_text (int start, int end)
-Delete the text between @var{start} and @var{end} in the current line.
-Returns the number of characters deleted.
-@end deftypefun
-
-@deftypefun {char *} rl_copy_text (int start, int end)
-Return a copy of the text between @var{start} and @var{end} in
-the current line.
-@end deftypefun
-
-@deftypefun int rl_kill_text (int start, int end)
-Copy the text between @var{start} and @var{end} in the current line
-to the kill ring, appending or prepending to the last kill if the
-last command was a kill command. The text is deleted.
-If @var{start} is less than @var{end},
-the text is appended, otherwise prepended. If the last command was
-not a kill, a new kill ring slot is used.
-@end deftypefun
-
-@deftypefun int rl_push_macro_input (char *macro)
-Cause @var{macro} to be inserted into the line, as if it had been invoked
-by a key bound to a macro. Not especially useful; use
-@code{rl_insert_text()} instead.
-@end deftypefun
-
-@node Character Input
-@subsection Character Input
-
-@deftypefun int rl_read_key (void)
-Return the next character available from Readline's current input stream.
-This handles input inserted into
-the input stream via @var{rl_pending_input} (@pxref{Readline Variables})
-and @code{rl_stuff_char()}, macros, and characters read from the keyboard.
-While waiting for input, this function will call any function assigned to
-the @code{rl_event_hook} variable.
-@end deftypefun
-
-@deftypefun int rl_getc (FILE *stream)
-Return the next character available from @var{stream}, which is assumed to
-be the keyboard.
-@end deftypefun
-
-@deftypefun int rl_stuff_char (int c)
-Insert @var{c} into the Readline input stream. It will be "read"
-before Readline attempts to read characters from the terminal with
-@code{rl_read_key()}. Up to 512 characters may be pushed back.
-@code{rl_stuff_char} returns 1 if the character was successfully inserted;
-0 otherwise.
-@end deftypefun
-
-@deftypefun int rl_execute_next (int c)
-Make @var{c} be the next command to be executed when @code{rl_read_key()}
-is called. This sets @var{rl_pending_input}.
-@end deftypefun
-
-@deftypefun int rl_clear_pending_input (void)
-Unset @var{rl_pending_input}, effectively negating the effect of any
-previous call to @code{rl_execute_next()}. This works only if the
-pending input has not already been read with @code{rl_read_key()}.
-@end deftypefun
-
-@deftypefun int rl_set_keyboard_input_timeout (int u)
-While waiting for keyboard input in @code{rl_read_key()}, Readline will
-wait for @var{u} microseconds for input before calling any function
-assigned to @code{rl_event_hook}. The default waiting period is
-one-tenth of a second. Returns the old timeout value.
-@end deftypefun
-
-@node Terminal Management
-@subsection Terminal Management
-
-@deftypefun void rl_prep_terminal (int meta_flag)
-Modify the terminal settings for Readline's use, so @code{readline()}
-can read a single character at a time from the keyboard.
-The @var{meta_flag} argument should be non-zero if Readline should
-read eight-bit input.
-@end deftypefun
-
-@deftypefun void rl_deprep_terminal (void)
-Undo the effects of @code{rl_prep_terminal()}, leaving the terminal in
-the state in which it was before the most recent call to
-@code{rl_prep_terminal()}.
-@end deftypefun
-
-@deftypefun void rl_tty_set_default_bindings (Keymap kmap)
-Read the operating system's terminal editing characters (as would be displayed
-by @code{stty}) to their Readline equivalents. The bindings are performed
-in @var{kmap}.
-@end deftypefun
-
-@deftypefun int rl_reset_terminal (const char *terminal_name)
-Reinitialize Readline's idea of the terminal settings using
-@var{terminal_name} as the terminal type (e.g., @code{vt100}).
-If @var{terminal_name} is @code{NULL}, the value of the @code{TERM}
-environment variable is used.
-@end deftypefun
-
-@node Utility Functions
-@subsection Utility Functions
-
-@deftypefun void rl_replace_line (const char *text, int clear_undo)
-Replace the contents of @code{rl_line_buffer} with @var{text}.
-The point and mark are preserved, if possible.
-If @var{clear_undo} is non-zero, the undo list associated with the
-current line is cleared.
-@end deftypefun
-
-@deftypefun int rl_extend_line_buffer (int len)
-Ensure that @code{rl_line_buffer} has enough space to hold @var{len}
-characters, possibly reallocating it if necessary.
-@end deftypefun
-
-@deftypefun int rl_initialize (void)
-Initialize or re-initialize Readline's internal state.
-It's not strictly necessary to call this; @code{readline()} calls it before
-reading any input.
-@end deftypefun
-
-@deftypefun int rl_ding (void)
-Ring the terminal bell, obeying the setting of @code{bell-style}.
-@end deftypefun
-
-@deftypefun int rl_alphabetic (int c)
-Return 1 if @var{c} is an alphabetic character.
-@end deftypefun
-
-@deftypefun void rl_display_match_list (char **matches, int len, int max)
-A convenience function for displaying a list of strings in
-columnar format on Readline's output stream. @code{matches} is the list
-of strings, in argv format, such as a list of completion matches.
-@code{len} is the number of strings in @code{matches}, and @code{max}
-is the length of the longest string in @code{matches}. This function uses
-the setting of @code{print-completions-horizontally} to select how the
-matches are displayed (@pxref{Readline Init File Syntax}).
-@end deftypefun
-
-The following are implemented as macros, defined in @code{chardefs.h}.
-Applications should refrain from using them.
-
-@deftypefun int _rl_uppercase_p (int c)
-Return 1 if @var{c} is an uppercase alphabetic character.
-@end deftypefun
-
-@deftypefun int _rl_lowercase_p (int c)
-Return 1 if @var{c} is a lowercase alphabetic character.
-@end deftypefun
-
-@deftypefun int _rl_digit_p (int c)
-Return 1 if @var{c} is a numeric character.
-@end deftypefun
-
-@deftypefun int _rl_to_upper (int c)
-If @var{c} is a lowercase alphabetic character, return the corresponding
-uppercase character.
-@end deftypefun
-
-@deftypefun int _rl_to_lower (int c)
-If @var{c} is an uppercase alphabetic character, return the corresponding
-lowercase character.
-@end deftypefun
-
-@deftypefun int _rl_digit_value (int c)
-If @var{c} is a number, return the value it represents.
-@end deftypefun
-
-@node Miscellaneous Functions
-@subsection Miscellaneous Functions
-
-@deftypefun int rl_macro_bind (const char *keyseq, const char *macro, Keymap map)
-Bind the key sequence @var{keyseq} to invoke the macro @var{macro}.
-The binding is performed in @var{map}. When @var{keyseq} is invoked, the
-@var{macro} will be inserted into the line. This function is deprecated;
-use @code{rl_generic_bind()} instead.
-@end deftypefun
-
-@deftypefun void rl_macro_dumper (int readable)
-Print the key sequences bound to macros and their values, using
-the current keymap, to @code{rl_outstream}.
-If @var{readable} is non-zero, the list is formatted in such a way
-that it can be made part of an @code{inputrc} file and re-read.
-@end deftypefun
-
-@deftypefun int rl_variable_bind (const char *variable, const char *value)
-Make the Readline variable @var{variable} have @var{value}.
-This behaves as if the readline command
-@samp{set @var{variable} @var{value}} had been executed in an @code{inputrc}
-file (@pxref{Readline Init File Syntax}).
-@end deftypefun
-
-@deftypefun void rl_variable_dumper (int readable)
-Print the readline variable names and their current values
-to @code{rl_outstream}.
-If @var{readable} is non-zero, the list is formatted in such a way
-that it can be made part of an @code{inputrc} file and re-read.
-@end deftypefun
-
-@deftypefun int rl_set_paren_blink_timeout (int u)
-Set the time interval (in microseconds) that Readline waits when showing
-a balancing character when @code{blink-matching-paren} has been enabled.
-@end deftypefun
-
-@deftypefun {char *} rl_get_termcap (const char *cap)
-Retrieve the string value of the termcap capability @var{cap}.
-Readline fetches the termcap entry for the current terminal name and
-uses those capabilities to move around the screen line and perform other
-terminal-specific operations, like erasing a line. Readline does not
-use all of a terminal's capabilities, and this function will return
-values for only those capabilities Readline uses.
-@end deftypefun
-
-@node Alternate Interface
-@subsection Alternate Interface
-
-An alternate interface is available to plain @code{readline()}. Some
-applications need to interleave keyboard I/O with file, device, or
-window system I/O, typically by using a main loop to @code{select()}
-on various file descriptors. To accomodate this need, readline can
-also be invoked as a `callback' function from an event loop. There
-are functions available to make this easy.
-
-@deftypefun void rl_callback_handler_install (const char *prompt, rl_vcpfunc_t *lhandler)
-Set up the terminal for readline I/O and display the initial
-expanded value of @var{prompt}. Save the value of @var{lhandler} to
-use as a function to call when a complete line of input has been entered.
-The function takes the text of the line as an argument.
-@end deftypefun
-
-@deftypefun void rl_callback_read_char (void)
-Whenever an application determines that keyboard input is available, it
-should call @code{rl_callback_read_char()}, which will read the next
-character from the current input source.
-If that character completes the line, @code{rl_callback_read_char} will
-invoke the @var{lhandler} function saved by @code{rl_callback_handler_install}
-to process the line.
-Before calling the @var{lhandler} function, the terminal settings are
-reset to the values they had before calling
-@code{rl_callback_handler_install}.
-If the @var{lhandler} function returns,
-the terminal settings are modified for Readline's use again.
-@code{EOF} is indicated by calling @var{lhandler} with a
-@code{NULL} line.
-@end deftypefun
-
-@deftypefun void rl_callback_handler_remove (void)
-Restore the terminal to its initial state and remove the line handler.
-This may be called from within a callback as well as independently.
-If the @var{lhandler} installed by @code{rl_callback_handler_install}
-does not exit the program, either this function or the function referred
-to by the value of @code{rl_deprep_term_function} should be called before
-the program exits to reset the terminal settings.
-@end deftypefun
-
-@node A Readline Example
-@subsection A Readline Example
-
-Here is a function which changes lowercase characters to their uppercase
-equivalents, and uppercase characters to lowercase. If
-this function was bound to @samp{M-c}, then typing @samp{M-c} would
-change the case of the character under point. Typing @samp{M-1 0 M-c}
-would change the case of the following 10 characters, leaving the cursor on
-the last character changed.
-
-@example
-/* Invert the case of the COUNT following characters. */
-int
-invert_case_line (count, key)
- int count, key;
-@{
- register int start, end, i;
-
- start = rl_point;
-
- if (rl_point >= rl_end)
- return (0);
-
- if (count < 0)
- @{
- direction = -1;
- count = -count;
- @}
- else
- direction = 1;
-
- /* Find the end of the range to modify. */
- end = start + (count * direction);
-
- /* Force it to be within range. */
- if (end > rl_end)
- end = rl_end;
- else if (end < 0)
- end = 0;
-
- if (start == end)
- return (0);
-
- if (start > end)
- @{
- int temp = start;
- start = end;
- end = temp;
- @}
-
- /* Tell readline that we are modifying the line,
- so it will save the undo information. */
- rl_modifying (start, end);
-
- for (i = start; i != end; i++)
- @{
- if (_rl_uppercase_p (rl_line_buffer[i]))
- rl_line_buffer[i] = _rl_to_lower (rl_line_buffer[i]);
- else if (_rl_lowercase_p (rl_line_buffer[i]))
- rl_line_buffer[i] = _rl_to_upper (rl_line_buffer[i]);
- @}
- /* Move point to on top of the last character changed. */
- rl_point = (direction == 1) ? end - 1 : start;
- return (0);
-@}
-@end example
-
-@node Readline Signal Handling
-@section Readline Signal Handling
-
-Signals are asynchronous events sent to a process by the Unix kernel,
-sometimes on behalf of another process. They are intended to indicate
-exceptional events, like a user pressing the interrupt key on his terminal,
-or a network connection being broken. There is a class of signals that can
-be sent to the process currently reading input from the keyboard. Since
-Readline changes the terminal attributes when it is called, it needs to
-perform special processing when such a signal is received in order to
-restore the terminal to a sane state, or provide application writers with
-functions to do so manually.
-
-Readline contains an internal signal handler that is installed for a
-number of signals (@code{SIGINT}, @code{SIGQUIT}, @code{SIGTERM},
-@code{SIGALRM}, @code{SIGTSTP}, @code{SIGTTIN}, and @code{SIGTTOU}).
-When one of these signals is received, the signal handler
-will reset the terminal attributes to those that were in effect before
-@code{readline()} was called, reset the signal handling to what it was
-before @code{readline()} was called, and resend the signal to the calling
-application.
-If and when the calling application's signal handler returns, Readline
-will reinitialize the terminal and continue to accept input.
-When a @code{SIGINT} is received, the Readline signal handler performs
-some additional work, which will cause any partially-entered line to be
-aborted (see the description of @code{rl_free_line_state()} below).
-
-There is an additional Readline signal handler, for @code{SIGWINCH}, which
-the kernel sends to a process whenever the terminal's size changes (for
-example, if a user resizes an @code{xterm}). The Readline @code{SIGWINCH}
-handler updates Readline's internal screen size information, and then calls
-any @code{SIGWINCH} signal handler the calling application has installed.
-Readline calls the application's @code{SIGWINCH} signal handler without
-resetting the terminal to its original state. If the application's signal
-handler does more than update its idea of the terminal size and return (for
-example, a @code{longjmp} back to a main processing loop), it @emph{must}
-call @code{rl_cleanup_after_signal()} (described below), to restore the
-terminal state.
-
-Readline provides two variables that allow application writers to
-control whether or not it will catch certain signals and act on them
-when they are received. It is important that applications change the
-values of these variables only when calling @code{readline()}, not in
-a signal handler, so Readline's internal signal state is not corrupted.
-
-@deftypevar int rl_catch_signals
-If this variable is non-zero, Readline will install signal handlers for
-@code{SIGINT}, @code{SIGQUIT}, @code{SIGTERM}, @code{SIGALRM},
-@code{SIGTSTP}, @code{SIGTTIN}, and @code{SIGTTOU}.
-
-The default value of @code{rl_catch_signals} is 1.
-@end deftypevar
-
-@deftypevar int rl_catch_sigwinch
-If this variable is non-zero, Readline will install a signal handler for
-@code{SIGWINCH}.
-
-The default value of @code{rl_catch_sigwinch} is 1.
-@end deftypevar
-
-If an application does not wish to have Readline catch any signals, or
-to handle signals other than those Readline catches (@code{SIGHUP},
-for example),
-Readline provides convenience functions to do the necessary terminal
-and internal state cleanup upon receipt of a signal.
-
-@deftypefun void rl_cleanup_after_signal (void)
-This function will reset the state of the terminal to what it was before
-@code{readline()} was called, and remove the Readline signal handlers for
-all signals, depending on the values of @code{rl_catch_signals} and
-@code{rl_catch_sigwinch}.
-@end deftypefun
-
-@deftypefun void rl_free_line_state (void)
-This will free any partial state associated with the current input line
-(undo information, any partial history entry, any partially-entered
-keyboard macro, and any partially-entered numeric argument). This
-should be called before @code{rl_cleanup_after_signal()}. The
-Readline signal handler for @code{SIGINT} calls this to abort the
-current input line.
-@end deftypefun
-
-@deftypefun void rl_reset_after_signal (void)
-This will reinitialize the terminal and reinstall any Readline signal
-handlers, depending on the values of @code{rl_catch_signals} and
-@code{rl_catch_sigwinch}.
-@end deftypefun
-
-If an application does not wish Readline to catch @code{SIGWINCH}, it may
-call @code{rl_resize_terminal()} or @code{rl_set_screen_size()} to force
-Readline to update its idea of the terminal size when a @code{SIGWINCH}
-is received.
-
-@deftypefun void rl_resize_terminal (void)
-Update Readline's internal screen size by reading values from the kernel.
-@end deftypefun
-
-@deftypefun void rl_set_screen_size (int rows, int cols)
-Set Readline's idea of the terminal size to @var{rows} rows and
-@var{cols} columns.
-@end deftypefun
-
-If an application does not want to install a @code{SIGWINCH} handler, but
-is still interested in the screen dimensions, Readline's idea of the screen
-size may be queried.
-
-@deftypefun void rl_get_screen_size (int *rows, int *cols)
-Return Readline's idea of the terminal's size in the
-variables pointed to by the arguments.
-@end deftypefun
-
-The following functions install and remove Readline's signal handlers.
-
-@deftypefun int rl_set_signals (void)
-Install Readline's signal handler for @code{SIGINT}, @code{SIGQUIT},
-@code{SIGTERM}, @code{SIGALRM}, @code{SIGTSTP}, @code{SIGTTIN},
-@code{SIGTTOU}, and @code{SIGWINCH}, depending on the values of
-@code{rl_catch_signals} and @code{rl_catch_sigwinch}.
-@end deftypefun
-
-@deftypefun int rl_clear_signals (void)
-Remove all of the Readline signal handlers installed by
-@code{rl_set_signals()}.
-@end deftypefun
-
-@node Custom Completers
-@section Custom Completers
-
-Typically, a program that reads commands from the user has a way of
-disambiguating commands and data. If your program is one of these, then
-it can provide completion for commands, data, or both.
-The following sections describe how your program and Readline
-cooperate to provide this service.
-
-@menu
-* How Completing Works:: The logic used to do completion.
-* Completion Functions:: Functions provided by Readline.
-* Completion Variables:: Variables which control completion.
-* A Short Completion Example:: An example of writing completer subroutines.
-@end menu
-
-@node How Completing Works
-@subsection How Completing Works
-
-In order to complete some text, the full list of possible completions
-must be available. That is, it is not possible to accurately
-expand a partial word without knowing all of the possible words
-which make sense in that context. The Readline library provides
-the user interface to completion, and two of the most common
-completion functions: filename and username. For completing other types
-of text, you must write your own completion function. This section
-describes exactly what such functions must do, and provides an example.
-
-There are three major functions used to perform completion:
-
-@enumerate
-@item
-The user-interface function @code{rl_complete()}. This function is
-called with the same arguments as other bindable Readline functions:
-@var{count} and @var{invoking_key}.
-It isolates the word to be completed and calls
-@code{rl_completion_matches()} to generate a list of possible completions.
-It then either lists the possible completions, inserts the possible
-completions, or actually performs the
-completion, depending on which behavior is desired.
-
-@item
-The internal function @code{rl_completion_matches()} uses an
-application-supplied @dfn{generator} function to generate the list of
-possible matches, and then returns the array of these matches.
-The caller should place the address of its generator function in
-@code{rl_completion_entry_function}.
-
-@item
-The generator function is called repeatedly from
-@code{rl_completion_matches()}, returning a string each time. The
-arguments to the generator function are @var{text} and @var{state}.
-@var{text} is the partial word to be completed. @var{state} is zero the
-first time the function is called, allowing the generator to perform
-any necessary initialization, and a positive non-zero integer for
-each subsequent call. The generator function returns
-@code{(char *)NULL} to inform @code{rl_completion_matches()} that there are
-no more possibilities left. Usually the generator function computes the
-list of possible completions when @var{state} is zero, and returns them
-one at a time on subsequent calls. Each string the generator function
-returns as a match must be allocated with @code{malloc()}; Readline
-frees the strings when it has finished with them.
-
-@end enumerate
-
-@deftypefun int rl_complete (int ignore, int invoking_key)
-Complete the word at or before point. You have supplied the function
-that does the initial simple matching selection algorithm (see
-@code{rl_completion_matches()}). The default is to do filename completion.
-@end deftypefun
-
-@deftypevar {rl_compentry_func_t *} rl_completion_entry_function
-This is a pointer to the generator function for
-@code{rl_completion_matches()}.
-If the value of @code{rl_completion_entry_function} is
-@code{NULL} then the default filename generator
-function, @code{rl_filename_completion_function()}, is used.
-@end deftypevar
-
-@node Completion Functions
-@subsection Completion Functions
-
-Here is the complete list of callable completion functions present in
-Readline.
-
-@deftypefun int rl_complete_internal (int what_to_do)
-Complete the word at or before point. @var{what_to_do} says what to do
-with the completion. A value of @samp{?} means list the possible
-completions. @samp{TAB} means do standard completion. @samp{*} means
-insert all of the possible completions. @samp{!} means to display
-all of the possible completions, if there is more than one, as well as
-performing partial completion.
-@end deftypefun
-
-@deftypefun int rl_complete (int ignore, int invoking_key)
-Complete the word at or before point. You have supplied the function
-that does the initial simple matching selection algorithm (see
-@code{rl_completion_matches()} and @code{rl_completion_entry_function}).
-The default is to do filename
-completion. This calls @code{rl_complete_internal()} with an
-argument depending on @var{invoking_key}.
-@end deftypefun
-
-@deftypefun int rl_possible_completions (int count, int invoking_key)
-List the possible completions. See description of @code{rl_complete
-()}. This calls @code{rl_complete_internal()} with an argument of
-@samp{?}.
-@end deftypefun
-
-@deftypefun int rl_insert_completions (int count, int invoking_key)
-Insert the list of possible completions into the line, deleting the
-partially-completed word. See description of @code{rl_complete()}.
-This calls @code{rl_complete_internal()} with an argument of @samp{*}.
-@end deftypefun
-
-@deftypefun int rl_completion_mode (rl_command_func_t *cfunc)
-Returns the apppriate value to pass to @code{rl_complete_internal()}
-depending on whether @var{cfunc} was called twice in succession and
-the value of the @code{show-all-if-ambiguous} variable.
-Application-specific completion functions may use this function to present
-the same interface as @code{rl_complete()}.
-@end deftypefun
-
-@deftypefun {char **} rl_completion_matches (const char *text, rl_compentry_func_t *entry_func)
-Returns an array of strings which is a list of completions for
-@var{text}. If there are no completions, returns @code{NULL}.
-The first entry in the returned array is the substitution for @var{text}.
-The remaining entries are the possible completions. The array is
-terminated with a @code{NULL} pointer.
-
-@var{entry_func} is a function of two args, and returns a
-@code{char *}. The first argument is @var{text}. The second is a
-state argument; it is zero on the first call, and non-zero on subsequent
-calls. @var{entry_func} returns a @code{NULL} pointer to the caller
-when there are no more matches.
-@end deftypefun
-
-@deftypefun {char *} rl_filename_completion_function (const char *text, int state)
-A generator function for filename completion in the general case.
-@var{text} is a partial filename.
-The Bash source is a useful reference for writing custom
-completion functions (the Bash completion functions call this and other
-Readline functions).
-@end deftypefun
-
-@deftypefun {char *} rl_username_completion_function (const char *text, int state)
-A completion generator for usernames. @var{text} contains a partial
-username preceded by a random character (usually @samp{~}). As with all
-completion generators, @var{state} is zero on the first call and non-zero
-for subsequent calls.
-@end deftypefun
-
-@node Completion Variables
-@subsection Completion Variables
-
-@deftypevar {rl_compentry_func_t *} rl_completion_entry_function
-A pointer to the generator function for @code{rl_completion_matches()}.
-@code{NULL} means to use @code{rl_filename_completion_function()}, the default
-filename completer.
-@end deftypevar
-
-@deftypevar {rl_completion_func_t *} rl_attempted_completion_function
-A pointer to an alternative function to create matches.
-The function is called with @var{text}, @var{start}, and @var{end}.
-@var{start} and @var{end} are indices in @code{rl_line_buffer} defining
-the boundaries of @var{text}, which is a character string.
-If this function exists and returns @code{NULL}, or if this variable is
-set to @code{NULL}, then @code{rl_complete()} will call the value of
-@code{rl_completion_entry_function} to generate matches, otherwise the
-array of strings returned will be used.
-If this function sets the @code{rl_attempted_completion_over}
-variable to a non-zero value, Readline will not perform its default
-completion even if this function returns no matches.
-@end deftypevar
-
-@deftypevar {rl_quote_func_t *} rl_filename_quoting_function
-A pointer to a function that will quote a filename in an
-application-specific fashion. This is called if filename completion is being
-attempted and one of the characters in @code{rl_filename_quote_characters}
-appears in a completed filename. The function is called with
-@var{text}, @var{match_type}, and @var{quote_pointer}. The @var{text}
-is the filename to be quoted. The @var{match_type} is either
-@code{SINGLE_MATCH}, if there is only one completion match, or
-@code{MULT_MATCH}. Some functions use this to decide whether or not to
-insert a closing quote character. The @var{quote_pointer} is a pointer
-to any opening quote character the user typed. Some functions choose
-to reset this character.
-@end deftypevar
-
-@deftypevar {rl_dequote_func_t *} rl_filename_dequoting_function
-A pointer to a function that will remove application-specific quoting
-characters from a filename before completion is attempted, so those
-characters do not interfere with matching the text against names in
-the filesystem. It is called with @var{text}, the text of the word
-to be dequoted, and @var{quote_char}, which is the quoting character
-that delimits the filename (usually @samp{'} or @samp{"}). If
-@var{quote_char} is zero, the filename was not in an embedded string.
-@end deftypevar
-
-@deftypevar {rl_linebuf_func_t *} rl_char_is_quoted_p
-A pointer to a function to call that determines whether or not a specific
-character in the line buffer is quoted, according to whatever quoting
-mechanism the program calling Readline uses. The function is called with
-two arguments: @var{text}, the text of the line, and @var{index}, the
-index of the character in the line. It is used to decide whether a
-character found in @code{rl_completer_word_break_characters} should be
-used to break words for the completer.
-@end deftypevar
-
-@deftypevar {rl_compignore_func_t *} rl_ignore_some_completions_function
-This function, if defined, is called by the completer when real filename
-completion is done, after all the matching names have been generated.
-It is passed a @code{NULL} terminated array of matches.
-The first element (@code{matches[0]}) is the
-maximal substring common to all matches. This function can
-re-arrange the list of matches as required, but each element deleted
-from the array must be freed.
-@end deftypevar
-
-@deftypevar {rl_icppfunc_t *} rl_directory_completion_hook
-This function, if defined, is allowed to modify the directory portion
-of filenames Readline completes. It is called with the address of a
-string (the current directory name) as an argument, and may modify that string.
-If the string is replaced with a new string, the old value should be freed.
-Any modified directory name should have a trailing slash.
-The modified value will be displayed as part of the completion, replacing
-the directory portion of the pathname the user typed.
-It returns an integer that should be non-zero if the function modifies
-its directory argument.
-It could be used to expand symbolic links or shell variables in pathnames.
-@end deftypevar
-
-@deftypevar {rl_compdisp_func_t *} rl_completion_display_matches_hook
-If non-zero, then this is the address of a function to call when
-completing a word would normally display the list of possible matches.
-This function is called in lieu of Readline displaying the list.
-It takes three arguments:
-(@code{char **}@var{matches}, @code{int} @var{num_matches}, @code{int} @var{max_length})
-where @var{matches} is the array of matching strings,
-@var{num_matches} is the number of strings in that array, and
-@var{max_length} is the length of the longest string in that array.
-Readline provides a convenience function, @code{rl_display_match_list},
-that takes care of doing the display to Readline's output stream. That
-function may be called from this hook.
-@end deftypevar
-
-@deftypevar {const char *} rl_basic_word_break_characters
-The basic list of characters that signal a break between words for the
-completer routine. The default value of this variable is the characters
-which break words for completion in Bash:
-@code{" \t\n\"\\'`@@$><=;|&@{("}.
-@end deftypevar
-
-@deftypevar {const char *} rl_basic_quote_characters
-A list of quote characters which can cause a word break.
-@end deftypevar
-
-@deftypevar {const char *} rl_completer_word_break_characters
-The list of characters that signal a break between words for
-@code{rl_complete_internal()}. The default list is the value of
-@code{rl_basic_word_break_characters}.
-@end deftypevar
-
-@deftypevar {const char *} rl_completer_quote_characters
-A list of characters which can be used to quote a substring of the line.
-Completion occurs on the entire substring, and within the substring
-@code{rl_completer_word_break_characters} are treated as any other character,
-unless they also appear within this list.
-@end deftypevar
-
-@deftypevar {const char *} rl_filename_quote_characters
-A list of characters that cause a filename to be quoted by the completer
-when they appear in a completed filename. The default is the null string.
-@end deftypevar
-
-@deftypevar {const char *} rl_special_prefixes
-The list of characters that are word break characters, but should be
-left in @var{text} when it is passed to the completion function.
-Programs can use this to help determine what kind of completing to do.
-For instance, Bash sets this variable to "$@@" so that it can complete
-shell variables and hostnames.
-@end deftypevar
-
-@deftypevar int rl_completion_query_items
-Up to this many items will be displayed in response to a
-possible-completions call. After that, we ask the user if she is sure
-she wants to see them all. The default value is 100.
-@end deftypevar
-
-@deftypevar {int} rl_completion_append_character
-When a single completion alternative matches at the end of the command
-line, this character is appended to the inserted completion text. The
-default is a space character (@samp{ }). Setting this to the null
-character (@samp{\0}) prevents anything being appended automatically.
-This can be changed in custom completion functions to
-provide the ``most sensible word separator character'' according to
-an application-specific command line syntax specification.
-@end deftypevar
-
-@deftypevar int rl_completion_suppress_append
-If non-zero, @var{rl_completion_append_character} is not appended to
-matches at the end of the command line, as described above. It is
-set to 0 before any application-specific completion function is called.
-@end deftypevar
-
-@deftypevar int rl_completion_mark_symlink_dirs
-If non-zero, a slash will be appended to completed filenames that are
-symbolic links to directory names, subject to the value of the
-user-settable @var{mark-directories} variable.
-This variable exists so that application completion functions can
-override the user's global preference (set via the
-@var{mark-symlinked-directories} Readline variable) if appropriate.
-This variable is set to the user's preference before any
-application completion function is called, so unless that function
-modifies the value, the user's preferences are honored.
-@end deftypevar
-
-@deftypevar int rl_ignore_completion_duplicates
-If non-zero, then duplicates in the matches are removed.
-The default is 1.
-@end deftypevar
-
-@deftypevar int rl_filename_completion_desired
-Non-zero means that the results of the matches are to be treated as
-filenames. This is @emph{always} zero on entry, and can only be changed
-within a completion entry generator function. If it is set to a non-zero
-value, directory names have a slash appended and Readline attempts to
-quote completed filenames if they contain any characters in
-@code{rl_filename_quote_characters} and @code{rl_filename_quoting_desired}
-is set to a non-zero value.
-@end deftypevar
-
-@deftypevar int rl_filename_quoting_desired
-Non-zero means that the results of the matches are to be quoted using
-double quotes (or an application-specific quoting mechanism) if the
-completed filename contains any characters in
-@code{rl_filename_quote_chars}. This is @emph{always} non-zero
-on entry, and can only be changed within a completion entry generator
-function. The quoting is effected via a call to the function pointed to
-by @code{rl_filename_quoting_function}.
-@end deftypevar
-
-@deftypevar int rl_attempted_completion_over
-If an application-specific completion function assigned to
-@code{rl_attempted_completion_function} sets this variable to a non-zero
-value, Readline will not perform its default filename completion even
-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_completion_type
-Set to a character describing the type of completion Readline is currently
-attempting; see the description of @code{rl_complete_internal()}
-(@pxref{Completion Functions}) for the list of characters.
-@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}.
-@end deftypevar
-
-@node A Short Completion Example
-@subsection A Short Completion Example
-
-Here is a small application demonstrating the use of the GNU Readline
-library. It is called @code{fileman}, and the source code resides in
-@file{examples/fileman.c}. This sample application provides
-completion of command names, line editing features, and access to the
-history list.
-
-@page
-@smallexample
-/* fileman.c -- A tiny application which demonstrates how to use the
- GNU Readline library. This application interactively allows users
- to manipulate files and their modes. */
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/file.h>
-#include <sys/stat.h>
-#include <sys/errno.h>
-
-#include <readline/readline.h>
-#include <readline/history.h>
-
-extern char *xmalloc ();
-
-/* The names of functions that actually do the manipulation. */
-int com_list __P((char *));
-int com_view __P((char *));
-int com_rename __P((char *));
-int com_stat __P((char *));
-int com_pwd __P((char *));
-int com_delete __P((char *));
-int com_help __P((char *));
-int com_cd __P((char *));
-int com_quit __P((char *));
-
-/* A structure which contains information on the commands this program
- can understand. */
-
-typedef struct @{
- char *name; /* User printable name of the function. */
- rl_icpfunc_t *func; /* Function to call to do the job. */
- char *doc; /* Documentation for this function. */
-@} COMMAND;
-
-COMMAND commands[] = @{
- @{ "cd", com_cd, "Change to directory DIR" @},
- @{ "delete", com_delete, "Delete FILE" @},
- @{ "help", com_help, "Display this text" @},
- @{ "?", com_help, "Synonym for `help'" @},
- @{ "list", com_list, "List files in DIR" @},
- @{ "ls", com_list, "Synonym for `list'" @},
- @{ "pwd", com_pwd, "Print the current working directory" @},
- @{ "quit", com_quit, "Quit using Fileman" @},
- @{ "rename", com_rename, "Rename FILE to NEWNAME" @},
- @{ "stat", com_stat, "Print out statistics on FILE" @},
- @{ "view", com_view, "View the contents of FILE" @},
- @{ (char *)NULL, (rl_icpfunc_t *)NULL, (char *)NULL @}
-@};
-
-/* Forward declarations. */
-char *stripwhite ();
-COMMAND *find_command ();
-
-/* The name of this program, as taken from argv[0]. */
-char *progname;
-
-/* When non-zero, this means the user is done using this program. */
-int done;
-
-char *
-dupstr (s)
- int s;
-@{
- char *r;
-
- r = xmalloc (strlen (s) + 1);
- strcpy (r, s);
- return (r);
-@}
-
-main (argc, argv)
- int argc;
- char **argv;
-@{
- char *line, *s;
-
- progname = argv[0];
-
- initialize_readline (); /* Bind our completer. */
-
- /* Loop reading and executing lines until the user quits. */
- for ( ; done == 0; )
- @{
- line = readline ("FileMan: ");
-
- if (!line)
- break;
-
- /* Remove leading and trailing whitespace from the line.
- Then, if there is anything left, add it to the history list
- and execute it. */
- s = stripwhite (line);
-
- if (*s)
- @{
- add_history (s);
- execute_line (s);
- @}
-
- free (line);
- @}
- exit (0);
-@}
-
-/* Execute a command line. */
-int
-execute_line (line)
- char *line;
-@{
- register int i;
- COMMAND *command;
- char *word;
-
- /* Isolate the command word. */
- i = 0;
- while (line[i] && whitespace (line[i]))
- i++;
- word = line + i;
-
- while (line[i] && !whitespace (line[i]))
- i++;
-
- if (line[i])
- line[i++] = '\0';
-
- command = find_command (word);
-
- if (!command)
- @{
- fprintf (stderr, "%s: No such command for FileMan.\n", word);
- return (-1);
- @}
-
- /* Get argument to command, if any. */
- while (whitespace (line[i]))
- i++;
-
- word = line + i;
-
- /* Call the function. */
- return ((*(command->func)) (word));
-@}
-
-/* Look up NAME as the name of a command, and return a pointer to that
- command. Return a NULL pointer if NAME isn't a command name. */
-COMMAND *
-find_command (name)
- char *name;
-@{
- register int i;
-
- for (i = 0; commands[i].name; i++)
- if (strcmp (name, commands[i].name) == 0)
- return (&commands[i]);
-
- return ((COMMAND *)NULL);
-@}
-
-/* Strip whitespace from the start and end of STRING. Return a pointer
- into STRING. */
-char *
-stripwhite (string)
- char *string;
-@{
- register char *s, *t;
-
- for (s = string; whitespace (*s); s++)
- ;
-
- if (*s == 0)
- return (s);
-
- t = s + strlen (s) - 1;
- while (t > s && whitespace (*t))
- t--;
- *++t = '\0';
-
- return s;
-@}
-
-/* **************************************************************** */
-/* */
-/* Interface to Readline Completion */
-/* */
-/* **************************************************************** */
-
-char *command_generator __P((const char *, int));
-char **fileman_completion __P((const char *, int, int));
-
-/* Tell the GNU Readline library how to complete. We want to try to
- complete on command names if this is the first word in the line, or
- on filenames if not. */
-initialize_readline ()
-@{
- /* Allow conditional parsing of the ~/.inputrc file. */
- rl_readline_name = "FileMan";
-
- /* Tell the completer that we want a crack first. */
- rl_attempted_completion_function = fileman_completion;
-@}
-
-/* Attempt to complete on the contents of TEXT. START and END
- bound the region of rl_line_buffer that contains the word to
- complete. TEXT is the word to complete. We can use the entire
- contents of rl_line_buffer in case we want to do some simple
- parsing. Returnthe array of matches, or NULL if there aren't any. */
-char **
-fileman_completion (text, start, end)
- const char *text;
- int start, end;
-@{
- char **matches;
-
- matches = (char **)NULL;
-
- /* If this word is at the start of the line, then it is a command
- to complete. Otherwise it is the name of a file in the current
- directory. */
- if (start == 0)
- matches = rl_completion_matches (text, command_generator);
-
- return (matches);
-@}
-
-/* Generator function for command completion. STATE lets us
- know whether to start from scratch; without any state
- (i.e. STATE == 0), then we start at the top of the list. */
-char *
-command_generator (text, state)
- const char *text;
- int state;
-@{
- static int list_index, len;
- char *name;
-
- /* If this is a new word to complete, initialize now. This
- includes saving the length of TEXT for efficiency, and
- initializing the index variable to 0. */
- if (!state)
- @{
- list_index = 0;
- len = strlen (text);
- @}
-
- /* Return the next name which partially matches from the
- command list. */
- while (name = commands[list_index].name)
- @{
- list_index++;
-
- if (strncmp (name, text, len) == 0)
- return (dupstr(name));
- @}
-
- /* If no names matched, then return NULL. */
- return ((char *)NULL);
-@}
-
-/* **************************************************************** */
-/* */
-/* FileMan Commands */
-/* */
-/* **************************************************************** */
-
-/* String to pass to system (). This is for the LIST, VIEW and RENAME
- commands. */
-static char syscom[1024];
-
-/* List the file(s) named in arg. */
-com_list (arg)
- char *arg;
-@{
- if (!arg)
- arg = "";
-
- sprintf (syscom, "ls -FClg %s", arg);
- return (system (syscom));
-@}
-
-com_view (arg)
- char *arg;
-@{
- if (!valid_argument ("view", arg))
- return 1;
-
- sprintf (syscom, "more %s", arg);
- return (system (syscom));
-@}
-
-com_rename (arg)
- char *arg;
-@{
- too_dangerous ("rename");
- return (1);
-@}
-
-com_stat (arg)
- char *arg;
-@{
- struct stat finfo;
-
- if (!valid_argument ("stat", arg))
- return (1);
-
- if (stat (arg, &finfo) == -1)
- @{
- perror (arg);
- return (1);
- @}
-
- printf ("Statistics for `%s':\n", arg);
-
- printf ("%s has %d link%s, and is %d byte%s in length.\n", arg,
- finfo.st_nlink,
- (finfo.st_nlink == 1) ? "" : "s",
- finfo.st_size,
- (finfo.st_size == 1) ? "" : "s");
- printf ("Inode Last Change at: %s", ctime (&finfo.st_ctime));
- printf (" Last access at: %s", ctime (&finfo.st_atime));
- printf (" Last modified at: %s", ctime (&finfo.st_mtime));
- return (0);
-@}
-
-com_delete (arg)
- char *arg;
-@{
- too_dangerous ("delete");
- return (1);
-@}
-
-/* Print out help for ARG, or for all of the commands if ARG is
- not present. */
-com_help (arg)
- char *arg;
-@{
- register int i;
- int printed = 0;
-
- for (i = 0; commands[i].name; i++)
- @{
- if (!*arg || (strcmp (arg, commands[i].name) == 0))
- @{
- printf ("%s\t\t%s.\n", commands[i].name, commands[i].doc);
- printed++;
- @}
- @}
-
- if (!printed)
- @{
- printf ("No commands match `%s'. Possibilties are:\n", arg);
-
- for (i = 0; commands[i].name; i++)
- @{
- /* Print in six columns. */
- if (printed == 6)
- @{
- printed = 0;
- printf ("\n");
- @}
-
- printf ("%s\t", commands[i].name);
- printed++;
- @}
-
- if (printed)
- printf ("\n");
- @}
- return (0);
-@}
-
-/* Change to the directory ARG. */
-com_cd (arg)
- char *arg;
-@{
- if (chdir (arg) == -1)
- @{
- perror (arg);
- return 1;
- @}
-
- com_pwd ("");
- return (0);
-@}
-
-/* Print out the current working directory. */
-com_pwd (ignore)
- char *ignore;
-@{
- char dir[1024], *s;
-
- s = getcwd (dir, sizeof(dir) - 1);
- if (s == 0)
- @{
- printf ("Error getting pwd: %s\n", dir);
- return 1;
- @}
-
- printf ("Current directory is %s\n", dir);
- return 0;
-@}
-
-/* The user wishes to quit using this program. Just set DONE
- non-zero. */
-com_quit (arg)
- char *arg;
-@{
- done = 1;
- return (0);
-@}
-
-/* Function which tells you that you can't do this. */
-too_dangerous (caller)
- char *caller;
-@{
- fprintf (stderr,
- "%s: Too dangerous for me to distribute.\n"
- caller);
- fprintf (stderr, "Write it yourself.\n");
-@}
-
-/* Return non-zero if ARG is a valid argument for CALLER,
- else print an error message and return zero. */
-int
-valid_argument (caller, arg)
- char *caller, *arg;
-@{
- if (!arg || !*arg)
- @{
- fprintf (stderr, "%s: Argument required.\n", caller);
- return (0);
- @}
-
- return (1);
-@}
-@end smallexample
diff --git a/readline-4.3/doc/rluser.texinfo b/readline-4.3/doc/rluser.texinfo
deleted file mode 100644
index 94f851e..0000000
--- a/readline-4.3/doc/rluser.texinfo
+++ /dev/null
@@ -1,1796 +0,0 @@
-@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
-editing features. It is to be an appendix to manuals for programs which
-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-2002 Free Software Foundation, Inc.
-
-Authored by Brian Fox and Chet Ramey.
-
-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 make and distribute verbatim copies of this manual
-provided the copyright notice and this permission notice are preserved on
-all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided also that the
-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
-
-@comment If you are including this manual as an appendix, then set the
-@comment variable readline-appendix.
-
-@ifclear BashFeatures
-@defcodeindex bt
-@end ifclear
-
-@node Command Line Editing
-@chapter Command Line Editing
-
-This chapter describes the basic features of the @sc{gnu}
-command line editing interface.
-@ifset BashFeatures
-Command line editing is provided by the Readline library, which is
-used by several different programs, including Bash.
-@end ifset
-
-@menu
-* Introduction and Notation:: Notation used in this text.
-* Readline Interaction:: The minimum set of commands for editing a line.
-* Readline Init File:: Customizing Readline from a user's view.
-* Bindable Readline Commands:: A description of most of the Readline commands
- available for binding
-* Readline vi Mode:: A short description of how to make Readline
- behave like the vi editor.
-@ifset BashFeatures
-* Programmable Completion:: How to specify the possible completions for
- a specific command.
-* Programmable Completion Builtins:: Builtin commands to specify how to
- complete arguments for a particular command.
-@end ifset
-@end menu
-
-@node Introduction and Notation
-@section Introduction to Line Editing
-
-The following paragraphs describe the notation used to represent
-keystrokes.
-
-The text @kbd{C-k} is read as `Control-K' and describes the character
-produced when the @key{k} key is pressed while the Control key
-is depressed.
-
-The text @kbd{M-k} is read as `Meta-K' and describes the character
-produced when the Meta key (if you have one) is depressed, and the @key{k}
-key is pressed.
-The Meta key is labeled @key{ALT} on many keyboards.
-On keyboards with two keys labeled @key{ALT} (usually to either side of
-the space bar), the @key{ALT} on the left side is generally set to
-work as a Meta key.
-The @key{ALT} key on the right may also be configured to work as a
-Meta key or may be configured as some other modifier, such as a
-Compose key for typing accented characters.
-
-If you do not have a Meta or @key{ALT} key, or another key working as
-a Meta key, the identical keystroke can be generated by typing @key{ESC}
-@emph{first}, and then typing @key{k}.
-Either process is known as @dfn{metafying} the @key{k} key.
-
-The text @kbd{M-C-k} is read as `Meta-Control-k' and describes the
-character produced by @dfn{metafying} @kbd{C-k}.
-
-In addition, several keys have their own names. Specifically,
-@key{DEL}, @key{ESC}, @key{LFD}, @key{SPC}, @key{RET}, and @key{TAB} all
-stand for themselves when seen in this text, or in an init file
-(@pxref{Readline Init File}).
-If your keyboard lacks a @key{LFD} key, typing @key{C-j} will
-produce the desired character.
-The @key{RET} key may be labeled @key{Return} or @key{Enter} on
-some keyboards.
-
-@node Readline Interaction
-@section Readline Interaction
-@cindex interaction, readline
-
-Often during an interactive session you type in a long line of text,
-only to notice that the first word on the line is misspelled. The
-Readline library gives you a set of commands for manipulating the text
-as you type it in, allowing you to just fix your typo, and not forcing
-you to retype the majority of the line. Using these editing commands,
-you move the cursor to the place that needs correction, and delete or
-insert the text of the corrections. Then, when you are satisfied with
-the line, you simply press @key{RET}. You do not have to be at the
-end of the line to press @key{RET}; the entire line is accepted
-regardless of the location of the cursor within the line.
-
-@menu
-* Readline Bare Essentials:: The least you need to know about Readline.
-* Readline Movement Commands:: Moving about the input line.
-* Readline Killing Commands:: How to delete text, and how to get it back!
-* Readline Arguments:: Giving numeric arguments to commands.
-* Searching:: Searching through previous lines.
-@end menu
-
-@node Readline Bare Essentials
-@subsection Readline Bare Essentials
-@cindex notation, readline
-@cindex command editing
-@cindex editing command lines
-
-In order to enter characters into the line, simply type them. The typed
-character appears where the cursor was, and then the cursor moves one
-space to the right. If you mistype a character, you can use your
-erase character to back up and delete the mistyped character.
-
-Sometimes you may mistype a character, and
-not notice the error until you have typed several other characters. In
-that case, you can type @kbd{C-b} to move the cursor to the left, and then
-correct your mistake. Afterwards, you can move the cursor to the right
-with @kbd{C-f}.
-
-When you add text in the middle of a line, you will notice that characters
-to the right of the cursor are `pushed over' to make room for the text
-that you have inserted. Likewise, when you delete text behind the cursor,
-characters to the right of the cursor are `pulled back' to fill in the
-blank space created by the removal of the text. A list of the bare
-essentials for editing the text of an input line follows.
-
-@table @asis
-@item @kbd{C-b}
-Move back one character.
-@item @kbd{C-f}
-Move forward one character.
-@item @key{DEL} or @key{Backspace}
-Delete the character to the left of the cursor.
-@item @kbd{C-d}
-Delete the character underneath the cursor.
-@item @w{Printing characters}
-Insert the character into the line at the cursor.
-@item @kbd{C-_} or @kbd{C-x C-u}
-Undo the last editing command. You can undo all the way back to an
-empty line.
-@end table
-
-@noindent
-(Depending on your configuration, the @key{Backspace} key be set to
-delete the character to the left of the cursor and the @key{DEL} key set
-to delete the character underneath the cursor, like @kbd{C-d}, rather
-than the character to the left of the cursor.)
-
-@node Readline Movement Commands
-@subsection Readline Movement Commands
-
-
-The above table describes the most basic keystrokes that you need
-in order to do editing of the input line. For your convenience, many
-other commands have been added in addition to @kbd{C-b}, @kbd{C-f},
-@kbd{C-d}, and @key{DEL}. Here are some commands for moving more rapidly
-about the line.
-
-@table @kbd
-@item C-a
-Move to the start of the line.
-@item C-e
-Move to the end of the line.
-@item M-f
-Move forward a word, where a word is composed of letters and digits.
-@item M-b
-Move backward a word.
-@item C-l
-Clear the screen, reprinting the current line at the top.
-@end table
-
-Notice how @kbd{C-f} moves forward a character, while @kbd{M-f} moves
-forward a word. It is a loose convention that control keystrokes
-operate on characters while meta keystrokes operate on words.
-
-@node Readline Killing Commands
-@subsection Readline Killing Commands
-
-@cindex killing text
-@cindex yanking text
-
-@dfn{Killing} text means to delete the text from the line, but to save
-it away for later use, usually by @dfn{yanking} (re-inserting)
-it back into the line.
-(`Cut' and `paste' are more recent jargon for `kill' and `yank'.)
-
-If the description for a command says that it `kills' text, then you can
-be sure that you can get the text back in a different (or the same)
-place later.
-
-When you use a kill command, the text is saved in a @dfn{kill-ring}.
-Any number of consecutive kills save all of the killed text together, so
-that when you yank it back, you get it all. The kill
-ring is not line specific; the text that you killed on a previously
-typed line is available to be yanked back later, when you are typing
-another line.
-@cindex kill ring
-
-Here is the list of commands for killing text.
-
-@table @kbd
-@item C-k
-Kill the text from the current cursor position to the end of the line.
-
-@item M-d
-Kill from the cursor to the end of the current word, or, if between
-words, to the end of the next word.
-Word boundaries are the same as those used by @kbd{M-f}.
-
-@item M-@key{DEL}
-Kill from the cursor the start of the current word, or, if between
-words, to the start of the previous word.
-Word boundaries are the same as those used by @kbd{M-b}.
-
-@item C-w
-Kill from the cursor to the previous whitespace. This is different than
-@kbd{M-@key{DEL}} because the word boundaries differ.
-
-@end table
-
-Here is how to @dfn{yank} the text back into the line. Yanking
-means to copy the most-recently-killed text from the kill buffer.
-
-@table @kbd
-@item C-y
-Yank the most recently killed text back into the buffer at the cursor.
-
-@item M-y
-Rotate the kill-ring, and yank the new top. You can only do this if
-the prior command is @kbd{C-y} or @kbd{M-y}.
-@end table
-
-@node Readline Arguments
-@subsection Readline Arguments
-
-You can pass numeric arguments to Readline commands. Sometimes the
-argument acts as a repeat count, other times it is the @i{sign} of the
-argument that is significant. If you pass a negative argument to a
-command which normally acts in a forward direction, that command will
-act in a backward direction. For example, to kill text back to the
-start of the line, you might type @samp{M-- C-k}.
-
-The general way to pass numeric arguments to a command is to type meta
-digits before the command. If the first `digit' typed is a minus
-sign (@samp{-}), then the sign of the argument will be negative. Once
-you have typed one meta digit to get the argument started, you can type
-the remainder of the digits, and then the command. For example, to give
-the @kbd{C-d} command an argument of 10, you could type @samp{M-1 0 C-d},
-which will delete the next ten characters on the input line.
-
-@node Searching
-@subsection Searching for Commands in the History
-
-Readline provides commands for searching through the command history
-@ifset BashFeatures
-(@pxref{Bash History Facilities})
-@end ifset
-for lines containing a specified string.
-There are two search modes: @dfn{incremental} and @dfn{non-incremental}.
-
-Incremental searches begin before the user has finished typing the
-search string.
-As each character of the search string is typed, Readline displays
-the next entry from the history matching the string typed so far.
-An incremental search requires only as many characters as needed to
-find the desired history entry.
-To search backward in the history for a particular string, type
-@kbd{C-r}. Typing @kbd{C-s} searches forward through the history.
-The characters present in the value of the @code{isearch-terminators} variable
-are used to terminate an incremental search.
-If that variable has not been assigned a value, the @key{ESC} and
-@kbd{C-J} characters will terminate an incremental search.
-@kbd{C-g} will abort an incremental search and restore the original line.
-When the search is terminated, the history entry containing the
-search string becomes the current line.
-
-To find other matching entries in the history list, type @kbd{C-r} or
-@kbd{C-s} as appropriate.
-This will search backward or forward in the history for the next
-entry matching the search string typed so far.
-Any other key sequence bound to a Readline command will terminate
-the search and execute that command.
-For instance, a @key{RET} will terminate the search and accept
-the line, thereby executing the command from the history list.
-A movement command will terminate the search, make the last line found
-the current line, and begin editing.
-
-Readline remembers the last incremental search string. If two
-@kbd{C-r}s are typed without any intervening characters defining a new
-search string, any remembered search string is used.
-
-Non-incremental searches read the entire search string before starting
-to search for matching history lines. The search string may be
-typed by the user or be part of the contents of the current line.
-
-@node Readline Init File
-@section Readline Init File
-@cindex initialization file, readline
-
-Although the Readline library comes with a set of Emacs-like
-keybindings installed by default, it is possible to use a different set
-of keybindings.
-Any user can customize programs that use Readline by putting
-commands in an @dfn{inputrc} file, conventionally in his home directory.
-The name of this
-@ifset BashFeatures
-file is taken from the value of the shell variable @env{INPUTRC}. If
-@end ifset
-@ifclear BashFeatures
-file is taken from the value of the environment variable @env{INPUTRC}. If
-@end ifclear
-that variable is unset, the default is @file{~/.inputrc}.
-
-When a program which uses the Readline library starts up, the
-init file is read, and the key bindings are set.
-
-In addition, the @code{C-x C-r} command re-reads this init file, thus
-incorporating any changes that you might have made to it.
-
-@menu
-* Readline Init File Syntax:: Syntax for the commands in the inputrc file.
-
-* Conditional Init Constructs:: Conditional key bindings in the inputrc file.
-
-* Sample Init File:: An example inputrc file.
-@end menu
-
-@node Readline Init File Syntax
-@subsection Readline Init File Syntax
-
-There are only a few basic constructs allowed in the
-Readline init file. Blank lines are ignored.
-Lines beginning with a @samp{#} are comments.
-Lines beginning with a @samp{$} indicate conditional
-constructs (@pxref{Conditional Init Constructs}). Other lines
-denote variable settings and key bindings.
-
-@table @asis
-@item Variable Settings
-You can modify the run-time behavior of Readline by
-altering the values of variables in Readline
-using the @code{set} command within the init file.
-The syntax is simple:
-
-@example
-set @var{variable} @var{value}
-@end example
-
-@noindent
-Here, for example, is how to
-change from the default Emacs-like key binding to use
-@code{vi} line editing commands:
-
-@example
-set editing-mode vi
-@end example
-
-Variable names and values, where appropriate, are recognized without regard
-to case.
-
-@ifset BashFeatures
-The @w{@code{bind -V}} command lists the current Readline variable names
-and values. @xref{Bash Builtins}.
-@end ifset
-
-A great deal of run-time behavior is changeable with the following
-variables.
-
-@cindex variables, readline
-@table @code
-
-@item bell-style
-@vindex bell-style
-Controls what happens when Readline wants to ring the terminal bell.
-If set to @samp{none}, Readline never rings the bell. If set to
-@samp{visible}, Readline uses a visible bell if one is available.
-If set to @samp{audible} (the default), Readline attempts to ring
-the terminal's bell.
-
-@item comment-begin
-@vindex comment-begin
-The string to insert at the beginning of the line when the
-@code{insert-comment} command is executed. The default value
-is @code{"#"}.
-
-@item completion-ignore-case
-If set to @samp{on}, Readline performs filename matching and completion
-in a case-insensitive fashion.
-The default value is @samp{off}.
-
-@item completion-query-items
-@vindex completion-query-items
-The number of possible completions that determines when the user is
-asked whether he wants to see the list of possibilities. If the
-number of possible completions is greater than this value,
-Readline will ask the user whether or not he wishes to view
-them; otherwise, they are simply listed.
-This variable must be set to an integer value greater than or equal to 0.
-The default limit is @code{100}.
-
-@item convert-meta
-@vindex convert-meta
-If set to @samp{on}, Readline will convert characters with the
-eighth bit set to an @sc{ascii} key sequence by stripping the eighth
-bit and prefixing an @key{ESC} character, converting them to a
-meta-prefixed key sequence. The default value is @samp{on}.
-
-@item disable-completion
-@vindex disable-completion
-If set to @samp{On}, Readline will inhibit word completion.
-Completion characters will be inserted into the line as if they had
-been mapped to @code{self-insert}. The default is @samp{off}.
-
-@item editing-mode
-@vindex editing-mode
-The @code{editing-mode} variable controls which default set of
-key bindings is used. By default, Readline starts up in Emacs editing
-mode, where the keystrokes are most similar to Emacs. This variable can be
-set to either @samp{emacs} or @samp{vi}.
-
-@item enable-keypad
-@vindex enable-keypad
-When set to @samp{on}, Readline will try to enable the application
-keypad when it is called. Some systems need this to enable the
-arrow keys. The default is @samp{off}.
-
-@item expand-tilde
-@vindex expand-tilde
-If set to @samp{on}, tilde expansion is performed when Readline
-attempts word completion. The default is @samp{off}.
-
-@vindex history-preserve-point
-If set to @samp{on}, the history code attempts to place point at the
-same location on each history line retrived with @code{previous-history}
-or @code{next-history}.
-
-@item horizontal-scroll-mode
-@vindex horizontal-scroll-mode
-This variable can be set to either @samp{on} or @samp{off}. Setting it
-to @samp{on} means that the text of the lines being edited will scroll
-horizontally on a single screen line when they are longer than the width
-of the screen, instead of wrapping onto a new screen line. By default,
-this variable is set to @samp{off}.
-
-@item input-meta
-@vindex input-meta
-@vindex meta-flag
-If set to @samp{on}, Readline will enable eight-bit input (it
-will not clear the eighth bit in the characters it reads),
-regardless of what the terminal claims it can support. The
-default value is @samp{off}. The name @code{meta-flag} is a
-synonym for this variable.
-
-@item isearch-terminators
-@vindex isearch-terminators
-The string of characters that should terminate an incremental search without
-subsequently executing the character as a command (@pxref{Searching}).
-If this variable has not been given a value, the characters @key{ESC} and
-@kbd{C-J} will terminate an incremental search.
-
-@item keymap
-@vindex keymap
-Sets Readline's idea of the current keymap for key binding commands.
-Acceptable @code{keymap} names are
-@code{emacs},
-@code{emacs-standard},
-@code{emacs-meta},
-@code{emacs-ctlx},
-@code{vi},
-@code{vi-move},
-@code{vi-command}, and
-@code{vi-insert}.
-@code{vi} is equivalent to @code{vi-command}; @code{emacs} is
-equivalent to @code{emacs-standard}. The default value is @code{emacs}.
-The value of the @code{editing-mode} variable also affects the
-default keymap.
-
-@item mark-directories
-If set to @samp{on}, completed directory names have a slash
-appended. The default is @samp{on}.
-
-@item mark-modified-lines
-@vindex mark-modified-lines
-This variable, when set to @samp{on}, causes Readline to display an
-asterisk (@samp{*}) at the start of history lines which have been modified.
-This variable is @samp{off} by default.
-
-@item mark-symlinked-directories
-@vindex mark-symlinked-directories
-If set to @samp{on}, completed names which are symbolic links
-to directories have a slash appended (subject to the value of
-@code{mark-directories}).
-The default is @samp{off}.
-
-@item match-hidden-files
-@vindex match-hidden-files
-This variable, when set to @samp{on}, causes Readline to match files whose
-names begin with a @samp{.} (hidden files) when performing filename
-completion, unless the leading @samp{.} is
-supplied by the user in the filename to be completed.
-This variable is @samp{on} by default.
-
-@item output-meta
-@vindex output-meta
-If set to @samp{on}, Readline will display characters with the
-eighth bit set directly rather than as a meta-prefixed escape
-sequence. The default is @samp{off}.
-
-@item page-completions
-@vindex page-completions
-If set to @samp{on}, Readline uses an internal @code{more}-like pager
-to display a screenful of possible completions at a time.
-This variable is @samp{on} by default.
-
-@item print-completions-horizontally
-If set to @samp{on}, Readline will display completions with matches
-sorted horizontally in alphabetical order, rather than down the screen.
-The default is @samp{off}.
-
-@item show-all-if-ambiguous
-@vindex show-all-if-ambiguous
-This alters the default behavior of the completion functions. If
-set to @samp{on},
-words which have more than one possible completion cause the
-matches to be listed immediately instead of ringing the bell.
-The default value is @samp{off}.
-
-@item visible-stats
-@vindex visible-stats
-If set to @samp{on}, a character denoting a file's type
-is appended to the filename when listing possible
-completions. The default is @samp{off}.
-
-@end table
-
-@item Key Bindings
-The syntax for controlling key bindings in the init file is
-simple. First you need to find the name of the command that you
-want to change. The following sections contain tables of the command
-name, the default keybinding, if any, and a short description of what
-the command does.
-
-Once you know the name of the command, simply place on a line
-in the init file the name of the key
-you wish to bind the command to, a colon, and then the name of the
-command. The name of the key
-can be expressed in different ways, depending on what you find most
-comfortable.
-
-In addition to command names, readline allows keys to be bound
-to a string that is inserted when the key is pressed (a @var{macro}).
-
-@ifset BashFeatures
-The @w{@code{bind -p}} command displays Readline function names and
-bindings in a format that can put directly into an initialization file.
-@xref{Bash Builtins}.
-@end ifset
-
-@table @asis
-@item @w{@var{keyname}: @var{function-name} or @var{macro}}
-@var{keyname} is the name of a key spelled out in English. For example:
-@example
-Control-u: universal-argument
-Meta-Rubout: backward-kill-word
-Control-o: "> output"
-@end example
-
-In the above example, @kbd{C-u} is bound to the function
-@code{universal-argument},
-@kbd{M-DEL} is bound to the function @code{backward-kill-word}, and
-@kbd{C-o} is bound to run the macro
-expressed on the right hand side (that is, to insert the text
-@samp{> output} into the line).
-
-A number of symbolic character names are recognized while
-processing this key binding syntax:
-@var{DEL},
-@var{ESC},
-@var{ESCAPE},
-@var{LFD},
-@var{NEWLINE},
-@var{RET},
-@var{RETURN},
-@var{RUBOUT},
-@var{SPACE},
-@var{SPC},
-and
-@var{TAB}.
-
-@item @w{"@var{keyseq}": @var{function-name} or @var{macro}}
-@var{keyseq} differs from @var{keyname} above in that strings
-denoting an entire key sequence can be specified, by placing
-the key sequence in double quotes. Some @sc{gnu} Emacs style key
-escapes can be used, as in the following example, but the
-special character names are not recognized.
-
-@example
-"\C-u": universal-argument
-"\C-x\C-r": re-read-init-file
-"\e[11~": "Function Key 1"
-@end example
-
-In the above example, @kbd{C-u} is again bound to the function
-@code{universal-argument} (just as it was in the first example),
-@samp{@kbd{C-x} @kbd{C-r}} is bound to the function @code{re-read-init-file},
-and @samp{@key{ESC} @key{[} @key{1} @key{1} @key{~}} is bound to insert
-the text @samp{Function Key 1}.
-
-@end table
-
-The following @sc{gnu} Emacs style escape sequences are available when
-specifying key sequences:
-
-@table @code
-@item @kbd{\C-}
-control prefix
-@item @kbd{\M-}
-meta prefix
-@item @kbd{\e}
-an escape character
-@item @kbd{\\}
-backslash
-@item @kbd{\"}
-@key{"}, a double quotation mark
-@item @kbd{\'}
-@key{'}, a single quote or apostrophe
-@end table
-
-In addition to the @sc{gnu} Emacs style escape sequences, a second
-set of backslash escapes is available:
-
-@table @code
-@item \a
-alert (bell)
-@item \b
-backspace
-@item \d
-delete
-@item \f
-form feed
-@item \n
-newline
-@item \r
-carriage return
-@item \t
-horizontal tab
-@item \v
-vertical tab
-@item \@var{nnn}
-the eight-bit character whose value is the octal value @var{nnn}
-(one to three digits)
-@item \x@var{HH}
-the eight-bit character whose value is the hexadecimal value @var{HH}
-(one or two hex digits)
-@end table
-
-When entering the text of a macro, single or double quotes must
-be used to indicate a macro definition.
-Unquoted text is assumed to be a function name.
-In the macro body, the backslash escapes described above are expanded.
-Backslash will quote any other character in the macro text,
-including @samp{"} and @samp{'}.
-For example, the following binding will make @samp{@kbd{C-x} \}
-insert a single @samp{\} into the line:
-@example
-"\C-x\\": "\\"
-@end example
-
-@end table
-
-@node Conditional Init Constructs
-@subsection Conditional Init Constructs
-
-Readline implements a facility similar in spirit to the conditional
-compilation features of the C preprocessor which allows key
-bindings and variable settings to be performed as the result
-of tests. There are four parser directives used.
-
-@table @code
-@item $if
-The @code{$if} construct allows bindings to be made based on the
-editing mode, the terminal being used, or the application using
-Readline. The text of the test extends to the end of the line;
-no characters are required to isolate it.
-
-@table @code
-@item mode
-The @code{mode=} form of the @code{$if} directive is used to test
-whether Readline is in @code{emacs} or @code{vi} mode.
-This may be used in conjunction
-with the @samp{set keymap} command, for instance, to set bindings in
-the @code{emacs-standard} and @code{emacs-ctlx} keymaps only if
-Readline is starting out in @code{emacs} mode.
-
-@item term
-The @code{term=} form may be used to include terminal-specific
-key bindings, perhaps to bind the key sequences output by the
-terminal's function keys. The word on the right side of the
-@samp{=} is tested against both the full name of the terminal and
-the portion of the terminal name before the first @samp{-}. This
-allows @code{sun} to match both @code{sun} and @code{sun-cmd},
-for instance.
-
-@item application
-The @var{application} construct is used to include
-application-specific settings. Each program using the Readline
-library sets the @var{application name}, and you can test for
-a particular value.
-This could be used to bind key sequences to functions useful for
-a specific program. For instance, the following command adds a
-key sequence that quotes the current or previous word in Bash:
-@example
-$if Bash
-# Quote the current or previous word
-"\C-xq": "\eb\"\ef\""
-$endif
-@end example
-@end table
-
-@item $endif
-This command, as seen in the previous example, terminates an
-@code{$if} command.
-
-@item $else
-Commands in this branch of the @code{$if} directive are executed if
-the test fails.
-
-@item $include
-This directive takes a single filename as an argument and reads commands
-and bindings from that file.
-For example, the following directive reads from @file{/etc/inputrc}:
-@example
-$include /etc/inputrc
-@end example
-@end table
-
-@node Sample Init File
-@subsection Sample Init File
-
-Here is an example of an @var{inputrc} file. This illustrates key
-binding, variable assignment, and conditional syntax.
-
-@example
-@page
-# This file controls the behaviour of line input editing for
-# programs that use the GNU Readline library. Existing
-# programs include FTP, Bash, and GDB.
-#
-# You can re-read the inputrc file with C-x C-r.
-# Lines beginning with '#' are comments.
-#
-# First, include any systemwide bindings and variable
-# assignments from /etc/Inputrc
-$include /etc/Inputrc
-
-#
-# Set various bindings for emacs mode.
-
-set editing-mode emacs
-
-$if mode=emacs
-
-Meta-Control-h: backward-kill-word Text after the function name is ignored
-
-#
-# Arrow keys in keypad mode
-#
-#"\M-OD": backward-char
-#"\M-OC": forward-char
-#"\M-OA": previous-history
-#"\M-OB": next-history
-#
-# Arrow keys in ANSI mode
-#
-"\M-[D": backward-char
-"\M-[C": forward-char
-"\M-[A": previous-history
-"\M-[B": next-history
-#
-# Arrow keys in 8 bit keypad mode
-#
-#"\M-\C-OD": backward-char
-#"\M-\C-OC": forward-char
-#"\M-\C-OA": previous-history
-#"\M-\C-OB": next-history
-#
-# Arrow keys in 8 bit ANSI mode
-#
-#"\M-\C-[D": backward-char
-#"\M-\C-[C": forward-char
-#"\M-\C-[A": previous-history
-#"\M-\C-[B": next-history
-
-C-q: quoted-insert
-
-$endif
-
-# An old-style binding. This happens to be the default.
-TAB: complete
-
-# Macros that are convenient for shell interaction
-$if Bash
-# edit the path
-"\C-xp": "PATH=$@{PATH@}\e\C-e\C-a\ef\C-f"
-# prepare to type a quoted word --
-# insert open and close double quotes
-# and move to just after the open quote
-"\C-x\"": "\"\"\C-b"
-# insert a backslash (testing backslash escapes
-# in sequences and macros)
-"\C-x\\": "\\"
-# Quote the current or previous word
-"\C-xq": "\eb\"\ef\""
-# Add a binding to refresh the line, which is unbound
-"\C-xr": redraw-current-line
-# Edit variable on current line.
-"\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y="
-$endif
-
-# use a visible bell if one is available
-set bell-style visible
-
-# don't strip characters to 7 bits when reading
-set input-meta on
-
-# allow iso-latin1 characters to be inserted rather
-# than converted to prefix-meta sequences
-set convert-meta off
-
-# display characters with the eighth bit set directly
-# rather than as meta-prefixed characters
-set output-meta on
-
-# if there are more than 150 possible completions for
-# a word, ask the user if he wants to see all of them
-set completion-query-items 150
-
-# For FTP
-$if Ftp
-"\C-xg": "get \M-?"
-"\C-xt": "put \M-?"
-"\M-.": yank-last-arg
-$endif
-@end example
-
-@node Bindable Readline Commands
-@section Bindable Readline Commands
-
-@menu
-* Commands For Moving:: Moving about the line.
-* Commands For History:: Getting at previous lines.
-* Commands For Text:: Commands for changing text.
-* Commands For Killing:: Commands for killing and yanking.
-* Numeric Arguments:: Specifying numeric arguments, repeat counts.
-* Commands For Completion:: Getting Readline to do the typing for you.
-* Keyboard Macros:: Saving and re-executing typed characters
-* Miscellaneous Commands:: Other miscellaneous commands.
-@end menu
-
-This section describes Readline commands that may be bound to key
-sequences.
-@ifset BashFeatures
-You can list your key bindings by executing
-@w{@code{bind -P}} or, for a more terse format, suitable for an
-@var{inputrc} file, @w{@code{bind -p}}. (@xref{Bash Builtins}.)
-@end ifset
-Command names without an accompanying key sequence are unbound by default.
-
-In the following descriptions, @dfn{point} refers to the current cursor
-position, and @dfn{mark} refers to a cursor position saved by the
-@code{set-mark} command.
-The text between the point and mark is referred to as the @dfn{region}.
-
-@node Commands For Moving
-@subsection Commands For Moving
-@ftable @code
-@item beginning-of-line (C-a)
-Move to the start of the current line.
-
-@item end-of-line (C-e)
-Move to the end of the line.
-
-@item forward-char (C-f)
-Move forward a character.
-
-@item backward-char (C-b)
-Move back a character.
-
-@item forward-word (M-f)
-Move forward to the end of the next word. Words are composed of
-letters and digits.
-
-@item backward-word (M-b)
-Move back to the start of the current or previous word. Words are
-composed of letters and digits.
-
-@item clear-screen (C-l)
-Clear the screen and redraw the current line,
-leaving the current line at the top of the screen.
-
-@item redraw-current-line ()
-Refresh the current line. By default, this is unbound.
-
-@end ftable
-
-@node Commands For History
-@subsection Commands For Manipulating The History
-
-@ftable @code
-@item accept-line (Newline or Return)
-@ifset BashFeatures
-Accept the line regardless of where the cursor is.
-If this line is
-non-empty, add it to the history list according to the setting of
-the @env{HISTCONTROL} and @env{HISTIGNORE} variables.
-If this line is a modified history line, then restore the history line
-to its original state.
-@end ifset
-@ifclear BashFeatures
-Accept the line regardless of where the cursor is.
-If this line is
-non-empty, it may be added to the history list for future recall with
-@code{add_history()}.
-If this line is a modified history line, the history line is restored
-to its original state.
-@end ifclear
-
-@item previous-history (C-p)
-Move `back' through the history list, fetching the previous command.
-
-@item next-history (C-n)
-Move `forward' through the history list, fetching the next command.
-
-@item beginning-of-history (M-<)
-Move to the first line in the history.
-
-@item end-of-history (M->)
-Move to the end of the input history, i.e., the line currently
-being entered.
-
-@item reverse-search-history (C-r)
-Search backward starting at the current line and moving `up' through
-the history as necessary. This is an incremental search.
-
-@item forward-search-history (C-s)
-Search forward starting at the current line and moving `down' through
-the the history as necessary. This is an incremental search.
-
-@item non-incremental-reverse-search-history (M-p)
-Search backward starting at the current line and moving `up'
-through the history as necessary using a non-incremental search
-for a string supplied by the user.
-
-@item non-incremental-forward-search-history (M-n)
-Search forward starting at the current line and moving `down'
-through the the history as necessary using a non-incremental search
-for a string supplied by the user.
-
-@item history-search-forward ()
-Search forward through the history for the string of characters
-between the start of the current line and the point.
-This is a non-incremental search.
-By default, this command is unbound.
-
-@item history-search-backward ()
-Search backward through the history for the string of characters
-between the start of the current line and the point. This
-is a non-incremental search. By default, this command is unbound.
-
-@item yank-nth-arg (M-C-y)
-Insert the first argument to the previous command (usually
-the second word on the previous line) at point.
-With an argument @var{n},
-insert the @var{n}th word from the previous command (the words
-in the previous command begin with word 0). A negative argument
-inserts the @var{n}th word from the end of the previous command.
-
-@item yank-last-arg (M-. or M-_)
-Insert last argument to the previous command (the last word of the
-previous history entry). With an
-argument, behave exactly like @code{yank-nth-arg}.
-Successive calls to @code{yank-last-arg} move back through the history
-list, inserting the last argument of each line in turn.
-
-@end ftable
-
-@node Commands For Text
-@subsection Commands For Changing Text
-
-@ftable @code
-@item delete-char (C-d)
-Delete the character at point. If point is at the
-beginning of the line, there are no characters in the line, and
-the last character typed was not bound to @code{delete-char}, then
-return @sc{eof}.
-
-@item backward-delete-char (Rubout)
-Delete the character behind the cursor. A numeric argument means
-to kill the characters instead of deleting them.
-
-@item forward-backward-delete-char ()
-Delete the character under the cursor, unless the cursor is at the
-end of the line, in which case the character behind the cursor is
-deleted. By default, this is not bound to a key.
-
-@item quoted-insert (C-q or C-v)
-Add the next character typed to the line verbatim. This is
-how to insert key sequences like @kbd{C-q}, for example.
-
-@ifclear BashFeatures
-@item tab-insert (M-@key{TAB})
-Insert a tab character.
-@end ifclear
-
-@item self-insert (a, b, A, 1, !, @dots{})
-Insert yourself.
-
-@item transpose-chars (C-t)
-Drag the character before the cursor forward over
-the character at the cursor, moving the
-cursor forward as well. If the insertion point
-is at the end of the line, then this
-transposes the last two characters of the line.
-Negative arguments have no effect.
-
-@item transpose-words (M-t)
-Drag the word before point past the word after point,
-moving point past that word as well.
-If the insertion point is at the end of the line, this transposes
-the last two words on the line.
-
-@item upcase-word (M-u)
-Uppercase the current (or following) word. With a negative argument,
-uppercase the previous word, but do not move the cursor.
-
-@item downcase-word (M-l)
-Lowercase the current (or following) word. With a negative argument,
-lowercase the previous word, but do not move the cursor.
-
-@item capitalize-word (M-c)
-Capitalize the current (or following) word. With a negative argument,
-capitalize the previous word, but do not move the cursor.
-
-@item overwrite-mode ()
-Toggle overwrite mode. With an explicit positive numeric argument,
-switches to overwrite mode. With an explicit non-positive numeric
-argument, switches to insert mode. This command affects only
-@code{emacs} mode; @code{vi} mode does overwrite differently.
-Each call to @code{readline()} starts in insert mode.
-
-In overwrite mode, characters bound to @code{self-insert} replace
-the text at point rather than pushing the text to the right.
-Characters bound to @code{backward-delete-char} replace the character
-before point with a space.
-
-By default, this command is unbound.
-
-@end ftable
-
-@node Commands For Killing
-@subsection Killing And Yanking
-
-@ftable @code
-
-@item kill-line (C-k)
-Kill the text from point to the end of the line.
-
-@item backward-kill-line (C-x Rubout)
-Kill backward to the beginning of the line.
-
-@item unix-line-discard (C-u)
-Kill backward from the cursor to the beginning of the current line.
-
-@item kill-whole-line ()
-Kill all characters on the current line, no matter where point is.
-By default, this is unbound.
-
-@item kill-word (M-d)
-Kill from point to the end of the current word, or if between
-words, to the end of the next word.
-Word boundaries are the same as @code{forward-word}.
-
-@item backward-kill-word (M-@key{DEL})
-Kill the word behind point.
-Word boundaries are the same as @code{backward-word}.
-
-@item unix-word-rubout (C-w)
-Kill the word behind point, using white space as a word boundary.
-The killed text is saved on the kill-ring.
-
-@item delete-horizontal-space ()
-Delete all spaces and tabs around point. By default, this is unbound.
-
-@item kill-region ()
-Kill the text in the current region.
-By default, this command is unbound.
-
-@item copy-region-as-kill ()
-Copy the text in the region to the kill buffer, so it can be yanked
-right away. By default, this command is unbound.
-
-@item copy-backward-word ()
-Copy the word before point to the kill buffer.
-The word boundaries are the same as @code{backward-word}.
-By default, this command is unbound.
-
-@item copy-forward-word ()
-Copy the word following point to the kill buffer.
-The word boundaries are the same as @code{forward-word}.
-By default, this command is unbound.
-
-@item yank (C-y)
-Yank the top of the kill ring into the buffer at point.
-
-@item yank-pop (M-y)
-Rotate the kill-ring, and yank the new top. You can only do this if
-the prior command is @code{yank} or @code{yank-pop}.
-@end ftable
-
-@node Numeric Arguments
-@subsection Specifying Numeric Arguments
-@ftable @code
-
-@item digit-argument (@kbd{M-0}, @kbd{M-1}, @dots{} @kbd{M--})
-Add this digit to the argument already accumulating, or start a new
-argument. @kbd{M--} starts a negative argument.
-
-@item universal-argument ()
-This is another way to specify an argument.
-If this command is followed by one or more digits, optionally with a
-leading minus sign, those digits define the argument.
-If the command is followed by digits, executing @code{universal-argument}
-again ends the numeric argument, but is otherwise ignored.
-As a special case, if this command is immediately followed by a
-character that is neither a digit or minus sign, the argument count
-for the next command is multiplied by four.
-The argument count is initially one, so executing this function the
-first time makes the argument count four, a second time makes the
-argument count sixteen, and so on.
-By default, this is not bound to a key.
-@end ftable
-
-@node Commands For Completion
-@subsection Letting Readline Type For You
-
-@ftable @code
-@item complete (@key{TAB})
-Attempt to perform completion on the text before point.
-The actual completion performed is application-specific.
-@ifset BashFeatures
-Bash attempts completion treating the text as a variable (if the
-text begins with @samp{$}), username (if the text begins with
-@samp{~}), hostname (if the text begins with @samp{@@}), or
-command (including aliases and functions) in turn. If none
-of these produces a match, filename completion is attempted.
-@end ifset
-@ifclear BashFeatures
-The default is filename completion.
-@end ifclear
-
-@item possible-completions (M-?)
-List the possible completions of the text before point.
-
-@item insert-completions (M-*)
-Insert all completions of the text before point that would have
-been generated by @code{possible-completions}.
-
-@item menu-complete ()
-Similar to @code{complete}, but replaces the word to be completed
-with a single match from the list of possible completions.
-Repeated execution of @code{menu-complete} steps through the list
-of possible completions, inserting each match in turn.
-At the end of the list of completions, the bell is rung
-(subject to the setting of @code{bell-style})
-and the original text is restored.
-An argument of @var{n} moves @var{n} positions forward in the list
-of matches; a negative argument may be used to move backward
-through the list.
-This command is intended to be bound to @key{TAB}, but is unbound
-by default.
-
-@item delete-char-or-list ()
-Deletes the character under the cursor if not at the beginning or
-end of the line (like @code{delete-char}).
-If at the end of the line, behaves identically to
-@code{possible-completions}.
-This command is unbound by default.
-
-@ifset BashFeatures
-@item complete-filename (M-/)
-Attempt filename completion on the text before point.
-
-@item possible-filename-completions (C-x /)
-List the possible completions of the text before point,
-treating it as a filename.
-
-@item complete-username (M-~)
-Attempt completion on the text before point, treating
-it as a username.
-
-@item possible-username-completions (C-x ~)
-List the possible completions of the text before point,
-treating it as a username.
-
-@item complete-variable (M-$)
-Attempt completion on the text before point, treating
-it as a shell variable.
-
-@item possible-variable-completions (C-x $)
-List the possible completions of the text before point,
-treating it as a shell variable.
-
-@item complete-hostname (M-@@)
-Attempt completion on the text before point, treating
-it as a hostname.
-
-@item possible-hostname-completions (C-x @@)
-List the possible completions of the text before point,
-treating it as a hostname.
-
-@item complete-command (M-!)
-Attempt completion on the text before point, treating
-it as a command name. Command completion attempts to
-match the text against aliases, reserved words, shell
-functions, shell builtins, and finally executable filenames,
-in that order.
-
-@item possible-command-completions (C-x !)
-List the possible completions of the text before point,
-treating it as a command name.
-
-@item dynamic-complete-history (M-@key{TAB})
-Attempt completion on the text before point, comparing
-the text against lines from the history list for possible
-completion matches.
-
-@item complete-into-braces (M-@{)
-Perform filename completion and insert the list of possible completions
-enclosed within braces so the list is available to the shell
-(@pxref{Brace Expansion}).
-
-@end ifset
-@end ftable
-
-@node Keyboard Macros
-@subsection Keyboard Macros
-@ftable @code
-
-@item start-kbd-macro (C-x ()
-Begin saving the characters typed into the current keyboard macro.
-
-@item end-kbd-macro (C-x ))
-Stop saving the characters typed into the current keyboard macro
-and save the definition.
-
-@item call-last-kbd-macro (C-x e)
-Re-execute the last keyboard macro defined, by making the characters
-in the macro appear as if typed at the keyboard.
-
-@end ftable
-
-@node Miscellaneous Commands
-@subsection Some Miscellaneous Commands
-@ftable @code
-
-@item re-read-init-file (C-x C-r)
-Read in the contents of the @var{inputrc} file, and incorporate
-any bindings or variable assignments found there.
-
-@item abort (C-g)
-Abort the current editing command and
-ring the terminal's bell (subject to the setting of
-@code{bell-style}).
-
-@item do-uppercase-version (M-a, M-b, M-@var{x}, @dots{})
-If the metafied character @var{x} is lowercase, run the command
-that is bound to the corresponding uppercase character.
-
-@item prefix-meta (@key{ESC})
-Metafy the next character typed. This is for keyboards
-without a meta key. Typing @samp{@key{ESC} f} is equivalent to typing
-@kbd{M-f}.
-
-@item undo (C-_ or C-x C-u)
-Incremental undo, separately remembered for each line.
-
-@item revert-line (M-r)
-Undo all changes made to this line. This is like executing the @code{undo}
-command enough times to get back to the beginning.
-
-@ifset BashFeatures
-@item tilde-expand (M-&)
-@end ifset
-@ifclear BashFeatures
-@item tilde-expand (M-~)
-@end ifclear
-Perform tilde expansion on the current word.
-
-@item set-mark (C-@@)
-Set the mark to the point. If a
-numeric argument is supplied, the mark is set to that position.
-
-@item exchange-point-and-mark (C-x C-x)
-Swap the point with the mark. The current cursor position is set to
-the saved position, and the old cursor position is saved as the mark.
-
-@item character-search (C-])
-A character is read and point is moved to the next occurrence of that
-character. A negative count searches for previous occurrences.
-
-@item character-search-backward (M-C-])
-A character is read and point is moved to the previous occurrence
-of that character. A negative count searches for subsequent
-occurrences.
-
-@item insert-comment (M-#)
-Without a numeric argument, the value of the @code{comment-begin}
-variable is inserted at the beginning of the current line.
-If a numeric argument is supplied, this command acts as a toggle: if
-the characters at the beginning of the line do not match the value
-of @code{comment-begin}, the value is inserted, otherwise
-the characters in @code{comment-begin} are deleted from the beginning of
-the line.
-In either case, the line is accepted as if a newline had been typed.
-@ifset BashFeatures
-The default value of @code{comment-begin} causes this command
-to make the current line a shell comment.
-If a numeric argument causes the comment character to be removed, the line
-will be executed by the shell.
-@end ifset
-
-@item dump-functions ()
-Print all of the functions and their key bindings to the
-Readline output stream. If a numeric argument is supplied,
-the output is formatted in such a way that it can be made part
-of an @var{inputrc} file. This command is unbound by default.
-
-@item dump-variables ()
-Print all of the settable variables and their values to the
-Readline output stream. If a numeric argument is supplied,
-the output is formatted in such a way that it can be made part
-of an @var{inputrc} file. This command is unbound by default.
-
-@item dump-macros ()
-Print all of the Readline key sequences bound to macros and the
-strings they output. If a numeric argument is supplied,
-the output is formatted in such a way that it can be made part
-of an @var{inputrc} file. This command is unbound by default.
-
-@ifset BashFeatures
-@item glob-complete-word (M-g)
-The word before point is treated as a pattern for pathname expansion,
-with an asterisk implicitly appended. This pattern is used to
-generate a list of matching file names for possible completions.
-
-@item glob-expand-word (C-x *)
-The word before point is treated as a pattern for pathname expansion,
-and the list of matching file names is inserted, replacing the word.
-If a numeric argument is supplied, a @samp{*} is appended before
-pathname expansion.
-
-@item glob-list-expansions (C-x g)
-The list of expansions that would have been generated by
-@code{glob-expand-word} is displayed, and the line is redrawn.
-If a numeric argument is supplied, a @samp{*} is appended before
-pathname expansion.
-
-@item display-shell-version (C-x C-v)
-Display version information about the current instance of Bash.
-
-@item shell-expand-line (M-C-e)
-Expand the line as the shell does.
-This performs alias and history expansion as well as all of the shell
-word expansions (@pxref{Shell Expansions}).
-
-@item history-expand-line (M-^)
-Perform history expansion on the current line.
-
-@item magic-space ()
-Perform history expansion on the current line and insert a space
-(@pxref{History Interaction}).
-
-@item alias-expand-line ()
-Perform alias expansion on the current line (@pxref{Aliases}).
-
-@item history-and-alias-expand-line ()
-Perform history and alias expansion on the current line.
-
-@item insert-last-argument (M-. or M-_)
-A synonym for @code{yank-last-arg}.
-
-@item operate-and-get-next (C-o)
-Accept the current line for execution and fetch the next line
-relative to the current line from the history for editing. Any
-argument is ignored.
-
-@item edit-and-execute-command (C-xC-e)
-Invoke an editor on the current command line, and execute the result as shell
-commands.
-Bash attempts to invoke
-@code{$FCEDIT}, @code{$EDITOR}, and @code{emacs}
-as the editor, in that order.
-
-@end ifset
-
-@ifclear BashFeatures
-@item emacs-editing-mode (C-e)
-When in @code{vi} command mode, this causes a switch to @code{emacs}
-editing mode.
-
-@item vi-editing-mode (M-C-j)
-When in @code{emacs} editing mode, this causes a switch to @code{vi}
-editing mode.
-
-@end ifclear
-
-@end ftable
-
-@node Readline vi Mode
-@section Readline vi Mode
-
-While the Readline library does not have a full set of @code{vi}
-editing functions, it does contain enough to allow simple editing
-of the line. The Readline @code{vi} mode behaves as specified in
-the @sc{posix} 1003.2 standard.
-
-@ifset BashFeatures
-In order to switch interactively between @code{emacs} and @code{vi}
-editing modes, use the @samp{set -o emacs} and @samp{set -o vi}
-commands (@pxref{The Set Builtin}).
-@end ifset
-@ifclear BashFeatures
-In order to switch interactively between @code{emacs} and @code{vi}
-editing modes, use the command @kbd{M-C-j} (bound to emacs-editing-mode
-when in @code{vi} mode and to vi-editing-mode in @code{emacs} mode).
-@end ifclear
-The Readline default is @code{emacs} mode.
-
-When you enter a line in @code{vi} mode, you are already placed in
-`insertion' mode, as if you had typed an @samp{i}. Pressing @key{ESC}
-switches you into `command' mode, where you can edit the text of the
-line with the standard @code{vi} movement keys, move to previous
-history lines with @samp{k} and subsequent lines with @samp{j}, and
-so forth.
-
-@ifset BashFeatures
-@node Programmable Completion
-@section Programmable Completion
-@cindex programmable completion
-
-When word completion is attempted for an argument to a command for
-which a completion specification (a @var{compspec}) has been defined
-using the @code{complete} builtin (@pxref{Programmable Completion Builtins}),
-the programmable completion facilities are invoked.
-
-First, the command name is identified.
-If a compspec has been defined for that command, the
-compspec is used to generate the list of possible completions for the word.
-If the command word is a full pathname, a compspec for the full
-pathname is searched for first.
-If no compspec is found for the full pathname, an attempt is made to
-find a compspec for the portion following the final slash.
-
-Once a compspec has been found, it is used to generate the list of
-matching words.
-If a compspec is not found, the default Bash completion
-described above (@pxref{Commands For Completion}) is performed.
-
-First, the actions specified by the compspec are used.
-Only matches which are prefixed by the word being completed are
-returned.
-When the @option{-f} or @option{-d} option is used for filename or
-directory name completion, the shell variable @env{FIGNORE} is
-used to filter the matches.
-@xref{Bash Variables}, for a description of @env{FIGNORE}.
-
-Any completions specified by a filename expansion pattern to the
-@option{-G} option are generated next.
-The words generated by the pattern need not match the word being completed.
-The @env{GLOBIGNORE} shell variable is not used to filter the matches,
-but the @env{FIGNORE} shell variable is used.
-
-Next, the string specified as the argument to the @option{-W} option
-is considered.
-The string is first split using the characters in the @env{IFS}
-special variable as delimiters.
-Shell quoting is honored.
-Each word is then expanded using
-brace expansion, tilde expansion, parameter and variable expansion,
-command substitution, arithmetic expansion, and pathname expansion,
-as described above (@pxref{Shell Expansions}).
-The results are split using the rules described above
-(@pxref{Word Splitting}).
-The results of the expansion are prefix-matched against the word being
-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} and
-@env{COMP_POINT} 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
-name of the command whose arguments are being completed, the
-second argument is the word being completed, and the third argument
-is the word preceding the word being completed on the current command line.
-No filtering of the generated completions against the word being completed
-is performed; the function or command has complete freedom in generating
-the matches.
-
-Any function specified with @option{-F} is invoked first.
-The function may use any of the shell facilities, including the
-@code{compgen} builtin described below
-(@pxref{Programmable Completion Builtins}), to generate the matches.
-It must put the possible completions in the @env{COMPREPLY} array
-variable.
-
-Next, any command specified with the @option{-C} option is invoked
-in an environment equivalent to command substitution.
-It should print a list of completions, one per line, to
-the standard output.
-Backslash may be used to escape a newline, if necessary.
-
-After all of the possible completions are generated, any filter
-specified with the @option{-X} option is applied to the list.
-The filter is a pattern as used for pathname expansion; a @samp{&}
-in the pattern is replaced with the text of the word being completed.
-A literal @samp{&} may be escaped with a backslash; the backslash
-is removed before attempting a match.
-Any completion that matches the pattern will be removed from the list.
-A leading @samp{!} negates the pattern; in this case any completion
-not matching the pattern will be removed.
-
-Finally, any prefix and suffix specified with the @option{-P} and @option{-S}
-options are added to each member of the completion list, and the result is
-returned to the Readline completion code as the list of possible
-completions.
-
-If the previously-applied actions do not generate any matches, and the
-@option{-o dirnames} option was supplied to @code{complete} when the
-compspec was defined, directory name completion is attempted.
-
-By default, if a compspec is found, whatever it generates is returned to
-the completion code as the full set of possible completions.
-The default Bash completions are not attempted, and the Readline default
-of filename completion is disabled.
-If the @option{-o default} option was supplied to @code{complete} when the
-compspec was defined, Readline's default completion will be performed
-if the compspec generates no matches.
-
-When a compspec indicates that directory name completion is desired,
-the programmable completion functions force Readline to append a slash
-to completed names which are symbolic links to directories, subject to
-the value of the @var{mark-directories} Readline variable, regardless
-of the setting of the @var{mark-symlinked-directories} Readline variable.
-
-@node Programmable Completion Builtins
-@section Programmable Completion Builtins
-@cindex completion builtins
-
-Two builtin commands are available to manipulate the programmable completion
-facilities.
-
-@table @code
-@item compgen
-@btindex compgen
-@example
-@code{compgen [@var{option}] [@var{word}]}
-@end example
-
-Generate possible completion matches for @var{word} according to
-the @var{option}s, which may be any option accepted by the
-@code{complete}
-builtin with the exception of @option{-p} and @option{-r}, and write
-the matches to the standard output.
-When using the @option{-F} or @option{-C} options, the various shell variables
-set by the programmable completion facilities, while available, will not
-have useful values.
-
-The matches will be generated in the same way as if the programmable
-completion code had generated them directly from a completion specification
-with the same flags.
-If @var{word} is specified, only those completions matching @var{word}
-will be displayed.
-
-The return value is true unless an invalid option is supplied, or no
-matches were generated.
-
-@item complete
-@btindex complete
-@example
-@code{complete [-abcdefgjksuv] [-o @var{comp-option}] [-A @var{action}] [-G @var{globpat}] [-W @var{wordlist}]
-[-P @var{prefix}] [-S @var{suffix}] [-X @var{filterpat}] [-F @var{function}]
-[-C @var{command}] @var{name} [@var{name} @dots{}]}
-@code{complete -pr [@var{name} @dots{}]}
-@end example
-
-Specify how arguments to each @var{name} should be completed.
-If the @option{-p} option is supplied, or if no options are supplied, existing
-completion specifications are printed in a way that allows them to be
-reused as input.
-The @option{-r} option removes a completion specification for
-each @var{name}, or, if no @var{name}s are supplied, all
-completion specifications.
-
-The process of applying these completion specifications when word completion
-is attempted is described above (@pxref{Programmable Completion}).
-
-Other options, if specified, have the following meanings.
-The arguments to the @option{-G}, @option{-W}, and @option{-X} options
-(and, if necessary, the @option{-P} and @option{-S} options)
-should be quoted to protect them from expansion before the
-@code{complete} builtin is invoked.
-
-
-@table @code
-@item -o @var{comp-option}
-The @var{comp-option} controls several aspects of the compspec's behavior
-beyond the simple generation of completions.
-@var{comp-option} may be one of:
-
-@table @code
-
-@item default
-Use Readline's default filename completion if the compspec generates
-no matches.
-
-@item dirnames
-Perform directory name completion if the compspec generates no matches.
-
-@item filenames
-Tell Readline that the compspec generates filenames, so it can perform any
-filename\-specific processing (like adding a slash to directory names or
-suppressing trailing spaces). This option is intended to be used with
-shell functions specified with @option{-F}.
-
-@item nospace
-Tell Readline not to append a space (the default) to words completed at
-the end of the line.
-@end table
-
-@item -A @var{action}
-The @var{action} may be one of the following to generate a list of possible
-completions:
-
-@table @code
-@item alias
-Alias names. May also be specified as @option{-a}.
-
-@item arrayvar
-Array variable names.
-
-@item binding
-Readline key binding names (@pxref{Bindable Readline Commands}).
-
-@item builtin
-Names of shell builtin commands. May also be specified as @option{-b}.
-
-@item command
-Command names. May also be specified as @option{-c}.
-
-@item directory
-Directory names. May also be specified as @option{-d}.
-
-@item disabled
-Names of disabled shell builtins.
-
-@item enabled
-Names of enabled shell builtins.
-
-@item export
-Names of exported shell variables. May also be specified as @option{-e}.
-
-@item file
-File names. May also be specified as @option{-f}.
-
-@item function
-Names of shell functions.
-
-@item group
-Group names. May also be specified as @option{-g}.
-
-@item helptopic
-Help topics as accepted by the @code{help} builtin (@pxref{Bash Builtins}).
-
-@item hostname
-Hostnames, as taken from the file specified by the
-@env{HOSTFILE} shell variable (@pxref{Bash Variables}).
-
-@item job
-Job names, if job control is active. May also be specified as @option{-j}.
-
-@item keyword
-Shell reserved words. May also be specified as @option{-k}.
-
-@item running
-Names of running jobs, if job control is active.
-
-@item service
-Service names. May also be specified as @option{-s}.
-
-@item setopt
-Valid arguments for the @option{-o} option to the @code{set} builtin
-(@pxref{The Set Builtin}).
-
-@item shopt
-Shell option names as accepted by the @code{shopt} builtin
-(@pxref{Bash Builtins}).
-
-@item signal
-Signal names.
-
-@item stopped
-Names of stopped jobs, if job control is active.
-
-@item user
-User names. May also be specified as @option{-u}.
-
-@item variable
-Names of all shell variables. May also be specified as @option{-v}.
-@end table
-
-@item -G @var{globpat}
-The filename expansion pattern @var{globpat} is expanded to generate
-the possible completions.
-
-@item -W @var{wordlist}
-The @var{wordlist} is split using the characters in the
-@env{IFS} special variable as delimiters, and each resultant word
-is expanded.
-The possible completions are the members of the resultant list which
-match the word being completed.
-
-@item -C @var{command}
-@var{command} is executed in a subshell environment, and its output is
-used as the possible completions.
-
-@item -F @var{function}
-The shell function @var{function} is executed in the current shell
-environment.
-When it finishes, the possible completions are retrieved from the value
-of the @env{COMPREPLY} array variable.
-
-@item -X @var{filterpat}
-@var{filterpat} is a pattern as used for filename expansion.
-It is applied to the list of possible completions generated by the
-preceding options and arguments, and each completion matching
-@var{filterpat} is removed from the list.
-A leading @samp{!} in @var{filterpat} negates the pattern; in this
-case, any completion not matching @var{filterpat} is removed.
-
-@item -P @var{prefix}
-@var{prefix} is added at the beginning of each possible completion
-after all other options have been applied.
-
-@item -S @var{suffix}
-@var{suffix} is appended to each possible completion
-after all other options have been applied.
-@end table
-
-The return value is true unless an invalid option is supplied, an option
-other than @option{-p} or @option{-r} is supplied without a @var{name}
-argument, an attempt is made to remove a completion specification for
-a @var{name} for which no specification exists, or
-an error occurs adding a completion specification.
-
-@end table
-@end ifset
diff --git a/readline-4.3/doc/rluserman.texinfo b/readline-4.3/doc/rluserman.texinfo
deleted file mode 100644
index 89abe31..0000000
--- a/readline-4.3/doc/rluserman.texinfo
+++ /dev/null
@@ -1,94 +0,0 @@
-\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 manvers.texinfo
-
-@ifinfo
-@dircategory Libraries
-@direntry
-* RLuserman: (rluserman). The GNU readline library User's Manual.
-@end direntry
-
-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 that need to provide a command line interface.
-
-Copyright (C) 1988-2002 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-pare preserved on all copies.
-
-@ignore
-Permission is granted to process this file through TeX and print the
-results, provided the printed document carries copying permission
-notice identical to this one except for the removal of this paragraph
-(this paragraph not being relevant to the printed manual).
-@end ignore
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the entire
-resulting derived work is distributed under the terms of a permission
-notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that this permission notice may be stated in a translation approved
-by the Free Software Foundation.
-@end ifinfo
-
-@titlepage
-@title GNU Readline Library User Interface
-@subtitle Edition @value{EDITION}, for @code{Readline Library} Version @value{VERSION}.
-@subtitle @value{UPDATE-MONTH}
-@author Brian Fox, Free Software Foundation
-@author Chet Ramey, Case Western Reserve University
-
-@page
-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 that need to provide a command line interface.
-
-Published by the Free Software Foundation @*
-59 Temple Place, Suite 330, @*
-Boston, MA 02111 USA
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the entire
-resulting derived work is distributed under the terms of a permission
-notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that this permission notice may be stated in a translation approved
-by the Free Software Foundation.
-
-@vskip 0pt plus 1filll
-Copyright @copyright{} 1988-2002 Free Software Foundation, Inc.
-@end titlepage
-
-@ifinfo
-@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 that need to provide a command line interface.
-
-@menu
-* Command Line Editing:: GNU Readline User's Manual.
-@end menu
-@end ifinfo
-
-@include rluser.texinfo
-
-@contents
-@bye
diff --git a/readline-4.3/doc/texi2dvi b/readline-4.3/doc/texi2dvi
deleted file mode 100755
index c186848..0000000
--- a/readline-4.3/doc/texi2dvi
+++ /dev/null
@@ -1,568 +0,0 @@
-#! /bin/sh
-# texi2dvi --- produce DVI (or PDF) files from Texinfo (or LaTeX) sources.
-# $Id$
-#
-# Copyright (C) 1992, 93, 94, 95, 96, 97, 98, 99 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, you can either send email to this
-# program's maintainer or write to: The Free Software Foundation,
-# Inc.; 59 Temple Place, Suite 330; Boston, MA 02111-1307, USA.
-#
-# Original author: Noah Friedman <friedman@gnu.org>.
-#
-# Please send bug reports, etc. to bug-texinfo@gnu.org.
-# If possible, please send a copy of the output of the script called with
-# the `--debug' option when making a bug report.
-
-# This string is expanded by rcs automatically when this file is checked out.
-rcs_revision='$Revision$'
-rcs_version=`set - $rcs_revision; echo $2`
-program=`echo $0 | sed -e 's!.*/!!'`
-version="texi2dvi (GNU Texinfo 4.0) $rcs_version
-
-Copyright (C) 1999 Free Software Foundation, Inc.
-There is NO warranty. You may redistribute this software
-under the terms of the GNU General Public License.
-For more information about these matters, see the files named COPYING."
-
-usage="Usage: $program [OPTION]... FILE...
-
-Run each Texinfo or LaTeX FILE through TeX in turn until all
-cross-references are resolved, building all indices. The directory
-containing each FILE is searched for included files. The suffix of FILE
-is used to determine its language (LaTeX or Texinfo).
-
-Makeinfo is used to perform Texinfo macro expansion before running TeX
-when needed.
-
-Options:
- -@ Use @input instead of \input; for preloaded Texinfo.
- -b, --batch No interaction.
- -c, --clean Remove all auxiliary files.
- -D, --debug Turn on shell debugging (set -x).
- -e, --expand Force macro expansion using makeinfo.
- -I DIR Search DIR for Texinfo files.
- -h, --help Display this help and exit successfully.
- -l, --language=LANG Specify the LANG of FILE: LaTeX or Texinfo.
- -p, --pdf Use pdftex or pdflatex for processing.
- -q, --quiet No output unless errors (implies --batch).
- -s, --silent Same as --quiet.
- -t, --texinfo=CMD Insert CMD after @setfilename in copy of input file.
- Multiple values accumulate.
- -v, --version Display version information and exit successfully.
- -V, --verbose Report on what is done.
-
-The values of the BIBTEX, LATEX (or PDFLATEX), MAKEINDEX, MAKEINFO,
-TEX (or PDFTEX), and TEXINDEX environment variables are used to run
-those commands, if they are set.
-
-Email bug reports to <bug-texinfo@gnu.org>,
-general questions and discussion to <help-texinfo@gnu.org>."
-
-# Initialize variables for option overriding and otherwise.
-# Don't use `unset' since old bourne shells don't have this command.
-# Instead, assign them an empty value.
-escape='\'
-batch=false # eval for batch mode
-clean=
-debug=
-expand= # t for expansion via makeinfo
-oformat=dvi
-set_language=
-miincludes= # makeinfo include path
-textra=
-tmpdir=${TMPDIR:-/tmp}/t2d$$ # avoid collisions on 8.3 filesystems.
-txincludes= # TEXINPUTS extensions
-txiprereq=19990129 # minimum texinfo.tex version to have macro expansion
-quiet= # by default let the tools' message be displayed
-verbose=false # echo for verbose mode
-
-orig_pwd=`pwd`
-
-# Systems which define $COMSPEC or $ComSpec use semicolons to separate
-# directories in TEXINPUTS.
-if test -n "$COMSPEC$ComSpec"; then
- path_sep=";"
-else
- path_sep=":"
-fi
-
-# Save this so we can construct a new TEXINPUTS path for each file.
-TEXINPUTS_orig="$TEXINPUTS"
-# Unfortunately makeindex does not read TEXINPUTS.
-INDEXSTYLE_orig="$INDEXSTYLE"
-export TEXINPUTS INDEXSTYLE
-
-# Push a token among the arguments that will be used to notice when we
-# ended options/arguments parsing.
-# Use "set dummy ...; shift" rather than 'set - ..." because on
-# Solaris set - turns off set -x (but keeps set -e).
-# Use ${1+"$@"} rather than "$@" because Digital Unix and Ultrix 4.3
-# still expand "$@" to a single argument (the empty string) rather
-# than nothing at all.
-arg_sep="$$--$$"
-set dummy ${1+"$@"} "$arg_sep"; shift
-
-#
-# Parse command line arguments.
-while test x"$1" != x"$arg_sep"; do
-
- # Handle --option=value by splitting apart and putting back on argv.
- case "$1" in
- --*=*)
- opt=`echo "$1" | sed -e 's/=.*//'`
- val=`echo "$1" | sed -e 's/[^=]*=//'`
- shift
- set dummy "$opt" "$val" ${1+"$@"}; shift
- ;;
- esac
-
- # This recognizes --quark as --quiet. So what.
- case "$1" in
- -@ ) escape=@;;
- # Silently and without documentation accept -b and --b[atch] as synonyms.
- -b | --b*) batch=eval;;
- -q | -s | --q* | --s*) quiet=t; batch=eval;;
- -c | --c*) clean=t;;
- -D | --d*) debug=t;;
- -e | --e*) expand=t;;
- -h | --h*) echo "$usage"; exit 0;;
- -I | --I*)
- shift
- miincludes="$miincludes -I $1"
- txincludes="$txincludes$path_sep$1"
- ;;
- -l | --l*) shift; set_language=$1;;
- -p | --p*) oformat=pdf;;
- -t | --t*) shift; textra="$textra\\
-$1";;
- -v | --vers*) echo "$version"; exit 0;;
- -V | --verb*) verbose=echo;;
- --) # What remains are not options.
- shift
- while test x"$1" != x"$arg_sep"; do
- set dummy ${1+"$@"} "$1"; shift
- shift
- done
- break;;
- -*)
- echo "$0: Unknown or ambiguous option \`$1'." >&2
- echo "$0: Try \`--help' for more information." >&2
- exit 1;;
- *) set dummy ${1+"$@"} "$1"; shift;;
- esac
- shift
-done
-# Pop the token
-shift
-
-# Interpret remaining command line args as filenames.
-if test $# = 0; then
- echo "$0: Missing file arguments." >&2
- echo "$0: Try \`--help' for more information." >&2
- exit 2
-fi
-
-# Prepare the temporary directory. Remove it at exit, unless debugging.
-if test -z "$debug"; then
- trap "cd / && rm -rf $tmpdir" 0 1 2 15
-fi
-
-# Create the temporary directory with strict rights
-(umask 077 && mkdir $tmpdir) || exit 1
-
-# Prepare the tools we might need. This may be extra work in some
-# cases, but improves the readibility of the script.
-utildir=$tmpdir/utils
-mkdir $utildir || exit 1
-
-# A sed script that preprocesses Texinfo sources in order to keep the
-# iftex sections only. We want to remove non TeX sections, and
-# comment (with `@c texi2dvi') TeX sections so that makeinfo does not
-# try to parse them. Nevertheless, while commenting TeX sections,
-# don't comment @macro/@end macro so that makeinfo does propagate
-# them. Unfortunately makeinfo --iftex --no-ifhtml --no-ifinfo
-# doesn't work well enough (yet) to use that, so work around with sed.
-comment_iftex_sed=$utildir/comment.sed
-cat <<EOF >$comment_iftex_sed
-/^@tex/,/^@end tex/{
- s/^/@c texi2dvi/
-}
-/^@iftex/,/^@end iftex/{
- s/^/@c texi2dvi/
- /^@c texi2dvi@macro/,/^@c texi2dvi@end macro/{
- s/^@c texi2dvi//
- }
-}
-/^@html/,/^@end html/d
-/^@ifhtml/,/^@end ifhtml/d
-/^@ifnottex/,/^@end ifnottex/d
-/^@ifinfo/,/^@end ifinfo/{
- /^@node/p
- /^@menu/,/^@end menu/p
- d
-}
-EOF
-# Uncommenting is simple: Remove any leading `@c texi2dvi'.
-uncomment_iftex_sed=$utildir/uncomment.sed
-cat <<EOF >$uncomment_iftex_sed
-s/^@c texi2dvi//
-EOF
-
-# A shell script that computes the list of xref files.
-# Takes the filename (without extension) of which we look for xref
-# files as argument. The index files must be reported last.
-get_xref_files=$utildir/get_xref.sh
-cat <<\EOF >$get_xref_files
-#! /bin/sh
-
-# Get list of xref files (indexes, tables and lists).
-# Find all files having root filename with a two-letter extension,
-# saves the ones that are really Texinfo-related files. .?o? catches
-# LaTeX tables and lists.
-for this_file in "$1".?o? "$1".aux "$1".?? "$1".idx; do
- # If file is empty, skip it.
- test -s "$this_file" || continue
- # If the file is not suitable to be an index or xref file, don't
- # process it. The file can't be if its first character is not a
- # backslash or single quote.
- first_character=`sed -n '1s/^\(.\).*$/\1/p;q' $this_file`
- if test "x$first_character" = "x\\" \
- || test "x$first_character" = "x'"; then
- xref_files="$xref_files ./$this_file"
- fi
-done
-echo "$xref_files"
-EOF
-chmod 500 $get_xref_files
-
-# File descriptor usage:
-# 0 standard input
-# 1 standard output (--verbose messages)
-# 2 standard error
-# 3 some systems may open it to /dev/tty
-# 4 used on the Kubota Titan
-# 5 tools output (turned off by --quiet)
-
-# Tools' output. If quiet, discard, else redirect to the message flow.
-if test "$quiet" = t; then
- exec 5>/dev/null
-else
- exec 5>&1
-fi
-
-# Enable tracing
-test "$debug" = t && set -x
-
-#
-# TeXify files.
-
-for command_line_filename in ${1+"$@"}; do
- $verbose "Processing $command_line_filename ..."
-
- # If the COMMAND_LINE_FILENAME is not absolute (e.g., --debug.tex),
- # prepend `./' in order to avoid that the tools take it as an option.
- echo "$command_line_filename" | egrep '^(/|[A-z]:/)' >/dev/null \
- || command_line_filename="./$command_line_filename"
-
- # See if the file exists. If it doesn't we're in trouble since, even
- # though the user may be able to reenter a valid filename at the tex
- # prompt (assuming they're attending the terminal), this script won't
- # be able to find the right xref files and so forth.
- if test ! -r "$command_line_filename"; then
- echo "$0: Could not read $command_line_filename, skipping." >&2
- continue
- fi
-
- # Get the name of the current directory. We want the full path
- # because in clean mode we are in tmp, in which case a relative
- # path has no meaning.
- filename_dir=`echo $command_line_filename | sed 's!/[^/]*$!!;s!^$!.!'`
- filename_dir=`cd "$filename_dir" >/dev/null && pwd`
-
- # Strip directory part but leave extension.
- filename_ext=`basename "$command_line_filename"`
- # Strip extension.
- filename_noext=`echo "$filename_ext" | sed 's/\.[^.]*$//'`
- ext=`echo "$filename_ext" | sed 's/^.*\.//'`
-
- # _src. Use same basename since we want to generate aux files with
- # the same basename as the manual. If --expand, then output the
- # macro-expanded file to here, else copy the original file.
- tmpdir_src=$tmpdir/src
- filename_src=$tmpdir_src/$filename_noext.$ext
-
- # _xtr. The file with the user's extra commands.
- tmpdir_xtr=$tmpdir/xtr
- filename_xtr=$tmpdir_xtr/$filename_noext.$ext
-
- # _bak. Copies of the previous xref files (another round is run if
- # they differ from the new one).
- tmpdir_bak=$tmpdir/bak
-
- # Make all those directories and give up if we can't succeed.
- mkdir $tmpdir_src $tmpdir_xtr $tmpdir_bak || exit 1
-
- # Source file might include additional sources. Put `.' and
- # directory where source file(s) reside in TEXINPUTS before anything
- # else. `.' goes first to ensure that any old .aux, .cps,
- # etc. files in ${directory} don't get used in preference to fresher
- # files in `.'. Include orig_pwd in case we are in clean mode, where
- # we've cd'd to a temp directory.
- common=".$path_sep$orig_pwd$path_sep$filename_dir$path_sep$txincludes$path_sep"
- TEXINPUTS="$common$TEXINPUTS_orig"
- INDEXSTYLE="$common$INDEXSTYLE_orig"
-
- # If the user explicitly specified the language, use that.
- # Otherwise, if the first line is \input texinfo, assume it's texinfo.
- # Otherwise, guess from the file extension.
- if test -n "$set_language"; then
- language=$set_language
- elif sed 1q "$command_line_filename" | fgrep 'input texinfo' >/dev/null; then
- language=texinfo
- else
- language=
- fi
-
- # Get the type of the file (latex or texinfo) from the given language
- # we just guessed, or from the file extension if not set yet.
- case ${language:-$filename_ext} in
- [lL]a[tT]e[xX] | *.ltx | *.tex)
- # Assume a LaTeX file. LaTeX needs bibtex and uses latex for
- # compilation. No makeinfo.
- bibtex=${BIBTEX:-bibtex}
- makeinfo= # no point in running makeinfo on latex source.
- texindex=${MAKEINDEX:-makeindex}
- if test $oformat = dvi; then
- tex=${LATEX:-latex}
- else
- tex=${PDFLATEX:-pdflatex}
- fi
- ;;
-
- *)
- # Assume a Texinfo file. Texinfo files need makeinfo, texindex and tex.
- bibtex=
- texindex=${TEXINDEX:-texindex}
- if test $oformat = dvi; then
- tex=${TEX:-tex}
- else
- tex=${PDFTEX:-pdftex}
- fi
- # Unless required by the user, makeinfo expansion is wanted only
- # if texinfo.tex is too old.
- if test "$expand" = t; then
- makeinfo=${MAKEINFO:-makeinfo}
- else
- # Check if texinfo.tex performs macro expansion by looking for
- # its version. The version is a date of the form YEAR-MO-DA.
- # We don't need to use [0-9] to match the digits since anyway
- # the comparison with $txiprereq, a number, will fail with non
- # digits.
- txiversion_tex=txiversion.tex
- echo '\input texinfo.tex @bye' >$tmpdir/$txiversion_tex
- # Run in the tmpdir to avoid leaving files.
- eval `cd $tmpdir >/dev/null \
- && $tex $txiversion_tex 2>/dev/null \
-| sed -n 's/^.*\[\(.*\)version \(....\)-\(..\)-\(..\).*$/txiformat=\1 txiversion="\2\3\4"/p'`
- $verbose "texinfo.tex preloaded as \`$txiformat', version is \`$txiversion' ..."
- if test "$txiprereq" -le "$txiversion" >/dev/null 2>&1; then
- makeinfo=
- else
- makeinfo=${MAKEINFO:-makeinfo}
- fi
- # As long as we had to run TeX, offer the user this convenience
- if test "$txiformat" = Texinfo; then
- escape=@
- fi
- fi
- ;;
- esac
-
- # Expand macro commands in the original source file using Makeinfo.
- # Always use `end' footnote style, since the `separate' style
- # generates different output (arguably this is a bug in -E).
- # Discard main info output, the user asked to run TeX, not makeinfo.
- if test -n "$makeinfo"; then
- $verbose "Macro-expanding $command_line_filename to $filename_src ..."
- sed -f $comment_iftex_sed "$command_line_filename" \
- | $makeinfo --footnote-style=end -I "$filename_dir" $miincludes \
- -o /dev/null --macro-expand=- \
- | sed -f $uncomment_iftex_sed >"$filename_src"
- filename_input=$filename_src
- fi
-
- # If makeinfo failed (or was not even run), use the original file as input.
- if test $? -ne 0 \
- || test ! -r "$filename_src"; then
- $verbose "Reverting to $command_line_filename ..."
- filename_input=$filename_dir/$filename_ext
- fi
-
- # Used most commonly for @finalout, @smallbook, etc.
- if test -n "$textra"; then
- $verbose "Inserting extra commands: $textra"
- sed '/^@setfilename/a\
-'"$textra" "$filename_input" >$filename_xtr
- filename_input=$filename_xtr
- fi
-
- # If clean mode was specified, then move to the temporary directory.
- if test "$clean" = t; then
- $verbose "cd $tmpdir_src"
- cd "$tmpdir_src" || exit 1
- fi
-
- while :; do # will break out of loop below
- orig_xref_files=`$get_xref_files "$filename_noext"`
-
- # Save copies of originals for later comparison.
- if test -n "$orig_xref_files"; then
- $verbose "Backing up xref files: `echo $orig_xref_files | sed 's|\./||g'`"
- cp $orig_xref_files $tmpdir_bak
- fi
-
- # Run bibtex on current file.
- # - If its input (AUX) exists.
- # - If AUX contains both `\bibdata' and `\bibstyle'.
- # - If some citations are missing (LOG contains `Citation').
- # or the LOG complains of a missing .bbl
- #
- # We run bibtex first, because I can see reasons for the indexes
- # to change after bibtex is run, but I see no reason for the
- # converse.
- #
- # Don't try to be too smart. Running bibtex only if the bbl file
- # exists and is older than the LaTeX file is wrong, since the
- # document might include files that have changed. Because there
- # can be several AUX (if there are \include's), but a single LOG,
- # looking for missing citations in LOG is easier, though we take
- # the risk to match false messages.
- if test -n "$bibtex" \
- && test -r "$filename_noext.aux" \
- && test -r "$filename_noext.log" \
- && (grep '^\\bibdata[{]' "$filename_noext.aux" \
- && grep '^\\bibstyle[{]' "$filename_noext.aux" \
- && (grep 'Warning:.*Citation.*undefined' "$filename_noext.log" \
- || grep 'No file .*\.bbl\.' "$filename_noext.log")) \
- >/dev/null 2>&1; \
- then
- $verbose "Running $bibtex $filename_noext ..."
- if $bibtex "$filename_noext" >&5; then :; else
- echo "$0: $bibtex exited with bad status, quitting." >&2
- exit 1
- fi
- fi
-
- # What we'll run texindex on -- exclude non-index files.
- # Since we know index files are last, it is correct to remove everything
- # before .aux and .?o?.
- index_files=`echo "$orig_xref_files" \
- | sed "s!.*\.aux!!g;
- s!./$filename_noext\..o.!!g;
- s/^[ ]*//;s/[ ]*$//"`
- # Run texindex (or makeindex) on current index files. If they
- # already exist, and after running TeX a first time the index
- # files don't change, then there's no reason to run TeX again.
- # But we won't know that if the index files are out of date or
- # nonexistent.
- if test -n "$texindex" && test -n "$index_files"; then
- $verbose "Running $texindex $index_files ..."
- if $texindex $index_files 2>&5 1>&2; then :; else
- echo "$0: $texindex exited with bad status, quitting." >&2
- exit 1
- fi
- fi
-
- # Finally, run TeX.
- # Prevent $ESCAPE from being interpreted by the shell if it happens
- # to be `/'.
- $batch tex_args="\\${escape}nonstopmode\ \\${escape}input"
- $verbose "Running $cmd ..."
- cmd="$tex $tex_args $filename_input"
- if $cmd >&5; then :; else
- echo "$0: $tex exited with bad status, quitting." >&2
- echo "$0: see $filename_noext.log for errors." >&2
- test "$clean" = t \
- && cp "$filename_noext.log" "$orig_pwd"
- exit 1
- fi
-
-
- # Decide if looping again is needed.
- finished=t
-
- # LaTeX (and the package changebar) report in the LOG file if it
- # should be rerun. This is needed for files included from
- # subdirs, since texi2dvi does not try to compare xref files in
- # subdirs. Performing xref files test is still good since LaTeX
- # does not report changes in xref files.
- if fgrep "Rerun to get" "$filename_noext.log" >/dev/null 2>&1; then
- finished=
- fi
-
- # Check if xref files changed.
- new_xref_files=`$get_xref_files "$filename_noext"`
- $verbose "Original xref files = `echo $orig_xref_files | sed 's|\./||g'`"
- $verbose "New xref files = `echo $new_xref_files | sed 's|\./||g'`"
-
- # If old and new lists don't at least have the same file list,
- # then one file or another has definitely changed.
- test "x$orig_xref_files" != "x$new_xref_files" && finished=
-
- # File list is the same. We must compare each file until we find
- # a difference.
- if test -n "$finished"; then
- for this_file in $new_xref_files; do
- $verbose "Comparing xref file `echo $this_file | sed 's|\./||g'` ..."
- # cmp -s returns nonzero exit status if files differ.
- if cmp -s "$this_file" "$tmpdir_bak/$this_file"; then :; else
- # We only need to keep comparing until we find one that
- # differs, because we'll have to run texindex & tex again no
- # matter how many more there might be.
- finished=
- $verbose "xref file `echo $this_file | sed 's|\./||g'` differed ..."
- test "$debug" = t && diff -c "$tmpdir_bak/$this_file" "$this_file"
- break
- fi
- done
- fi
-
- # If finished, exit the loop, else rerun the loop.
- test -n "$finished" && break
- done
-
- # If we were in clean mode, compilation was in a tmp directory.
- # Copy the DVI (or PDF) file into the directory where the compilation
- # has been done. (The temp dir is about to get removed anyway.)
- # We also return to the original directory so that
- # - the next file is processed in correct conditions
- # - the temporary file can be removed
- if test -n "$clean"; then
- $verbose "Copying $oformat file from `pwd` to $orig_pwd"
- cp -p "./$filename_noext.$oformat" "$orig_pwd"
- cd / # in case $orig_pwd is on a different drive (for DOS)
- cd $orig_pwd || exit 1
- fi
-
- # Remove temporary files.
- if test "x$debug" = "x"; then
- $verbose "Removing $tmpdir_src $tmpdir_xtr $tmpdir_bak ..."
- cd /
- rm -rf $tmpdir_src $tmpdir_xtr $tmpdir_bak
- fi
-done
-
-$verbose "$0 done."
-exit 0 # exit successfully, not however we ended the loop.
diff --git a/readline-4.3/doc/texi2html b/readline-4.3/doc/texi2html
deleted file mode 100755
index 7bb8493..0000000
--- a/readline-4.3/doc/texi2html
+++ /dev/null
@@ -1,5429 +0,0 @@
-#! /usr/bin/perl
-'di ';
-'ig 00 ';
-#+##############################################################################
-#
-# texi2html: Program to transform Texinfo documents to HTML
-#
-# Copyright (C) 1999, 2000 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-#
-#-##############################################################################
-
-# This requires perl version 5 or higher
-require 5.0;
-
-#++##############################################################################
-#
-# NOTE FOR DEBUGGING THIS SCRIPT:
-# You can run 'perl texi2html.pl' directly, provided you have
-# the environment variable T2H_HOME set to the directory containing
-# the texi2html.init file
-#
-#--##############################################################################
-
-# CVS version:
-# $Id$
-
-# Homepage:
-$T2H_HOMEPAGE = <<EOT;
-http://www.mathematik.uni-kl.de/~obachman/Texi2html
-EOT
-
-# Authors:
-$T2H_AUTHORS = <<EOT;
-Written by: Lionel Cons <Lionel.Cons\@cern.ch> (original author)
- Karl Berry <karl\@freefriends.org>
- Olaf Bachmann <obachman\@mathematik.uni-kl.de>
- and many others.
-Maintained by: Olaf Bachmann <obachman\@mathematik.uni-kl.de>
-Send bugs and suggestions to <texi2html\@mathematik.uni-kl.de>
-EOT
-
-# Version: set in configure.in
-$THISVERSION = '1.64';
-$THISPROG = "texi2html $THISVERSION"; # program name and version
-
-# The man page for this program is included at the end of this file and can be
-# viewed using the command 'nroff -man texi2html'.
-
-# Identity:
-
-$T2H_TODAY = &pretty_date; # like "20 September 1993"
-# the eval prevents this from breaking on system which do not have
-# a proper getpwuid implemented
-eval { ($T2H_USER = (getpwuid ($<))[6]) =~ s/,.*//;}; # Who am i
-
-#+++############################################################################
-# #
-# Initialization #
-# Pasted content of File $(srcdir)/texi2html.init: Default initializations #
-# #
-#---############################################################################
-
-# leave this within comments, and keep the require statement
-# This way, you can directly run texi2html.pl, if $ENV{T2H_HOME}/texi2html.init
-# exists.
-
-#
-# -*-perl-*-
-######################################################################
-# File: texi2html.init
-#
-# Sets default values for command-line arguments and for various customizable
-# procedures
-#
-# A copy of this file is pasted into the beginning of texi2html by
-# 'make texi2html'
-#
-# Copy this file and make changes to it, if you like.
-# Afterwards, either, load it with command-line option -init_file <your_init_file>
-#
-# $Id$
-
-######################################################################
-# stuff which can also be set by command-line options
-#
-#
-# Note: values set here, overwrite values set by the command-line
-# options before -init_file and might still be overwritten by
-# command-line arguments following the -init_file option
-#
-
-# T2H_OPTIONS is a hash whose keys are the (long) names of valid
-# command-line options and whose values are a hash with the following keys:
-# type ==> one of !|=i|:i|=s|:s (see GetOpt::Long for more info)
-# linkage ==> ref to scalar, array, or subroutine (see GetOpt::Long for more info)
-# verbose ==> short description of option (displayed by -h)
-# noHelp ==> if 1 -> for "not so important options": only print description on -h 1
-# 2 -> for obsolete options: only print description on -h 2
-
-$T2H_DEBUG = 0;
-$T2H_OPTIONS -> {debug} =
-{
- type => '=i',
- linkage => \$main::T2H_DEBUG,
- verbose => 'output HTML with debuging information',
-};
-
-$T2H_DOCTYPE = '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">';
-$T2H_OPTIONS -> {doctype} =
-{
- type => '=s',
- linkage => \$main::T2H_DOCTYPE,
- verbose => 'document type which is output in header of HTML files',
- noHelp => 1
-};
-
-$T2H_CHECK = 0;
-$T2H_OPTIONS -> {check} =
-{
- type => '!',
- linkage => \$main::T2H_CHECK,
- verbose => 'if set, only check files and output all things that may be Texinfo commands',
- noHelp => 1
-};
-
-# -expand
-# if set to "tex" (or, "info") expand @iftex and @tex (or, @ifinfo) sections
-# else, neither expand @iftex, @tex, nor @ifinfo sections
-$T2H_EXPAND = "info";
-$T2H_OPTIONS -> {expand} =
-{
- type => '=s',
- linkage => \$T2H_EXPAND,
- verbose => 'Expand info|tex|none section of texinfo source',
-};
-
-# - glossary
-#if set, uses section named `Footnotes' for glossary
-$T2H_USE_GLOSSARY = 0;
-T2H_OPTIONS -> {glossary} =
-{
- type => '!',
- linkage => \$T2H_USE_GLOSSARY,
- verbose => "if set, uses section named `Footnotes' for glossary",
- noHelp => 1,
-};
-
-
-# -invisible
-# $T2H_INVISIBLE_MARK is the text used to create invisible destination
-# anchors for index links (you can for instance use the invisible.xbm
-# file shipped with this program). This is a workaround for a known
-# bug of many WWW browsers, including netscape.
-# For me, it works fine without it -- on the contrary: if there, it
-# inserts space between headers and start of text (obachman 3/99)
-$T2H_INVISIBLE_MARK = '';
-# $T2H_INVISIBLE_MARK = '&#160;';
-$T2H_OPTIONS -> {invisible} =
-{
- type => '=s',
- linkage => \$T2H_INVISIBLE_MARK,
- verbose => 'use text in invisble anchot',
- noHelp => 1,
-};
-
-# -iso
-# if set, ISO8879 characters are used for special symbols (like copyright, etc)
-$T2H_USE_ISO = 0;
-$T2H_OPTIONS -> {iso} =
-{
- type => 'iso',
- linkage => \$T2H_USE_ISO,
- verbose => 'if set, ISO8879 characters are used for special symbols (like copyright, etc)',
- noHelp => 1,
-};
-
-# -I
-# list directories where @include files are searched for (besides the
-# directory of the doc file) additional '-I' args add to this list
-@T2H_INCLUDE_DIRS = (".");
-$T2H_OPTIONS -> {I} =
-{
- type => '=s',
- linkage => \@T2H_INCLUDE_DIRS,
- verbose => 'append $s to the @include search path',
-};
-
-# -top_file
-# uses file of this name for top-level file
-# extension is manipulated appropriately, if necessary.
-# If empty, <basename of document>.html is used
-# Typically, you would set this to "index.html".
-$T2H_TOP_FILE = '';
-$T2H_OPTIONS -> {top_file} =
-{
- type => '=s',
- linkage => \$T2H_TOP_FILE,
- verbose => 'use $s as top file, instead of <docname>.html',
-};
-
-
-# -toc_file
-# uses file of this name for table of contents file
-# extension is manipulated appropriately, if necessary.
-# If empty, <basename of document>_toc.html is used
-$T2H_TOC_FILE = '';
-$T2H_OPTIONS -> {toc_file} =
-{
- type => '=s',
- linkage => \$T2H_TOC_FILE,
- verbose => 'use $s as ToC file, instead of <docname>_toc.html',
-};
-
-# -frames
-# if set, output two additional files which use HTML 4.0 "frames".
-$T2H_FRAMES = 0;
-$T2H_OPTIONS -> {frames} =
-{
- type => '!',
- linkage => \$T2H_FRAMES,
- verbose => 'output files which use HTML 4.0 frames (experimental)',
- noHelp => 1,
-};
-
-
-# -menu | -nomenu
-# if set, show the Texinfo menus
-$T2H_SHOW_MENU = 1;
-$T2H_OPTIONS -> {menu} =
-{
- type => '!',
- linkage => \$T2H_SHOW_MENU,
- verbose => 'ouput Texinfo menus',
-};
-
-# -number | -nonumber
-# if set, number sections and show section names and numbers in references
-# and menus
-$T2H_NUMBER_SECTIONS = 1;
-$T2H_OPTIONS -> {number} =
-{
- type => '!',
- linkage => \$T2H_NUMBER_SECTIONS,
- verbose => 'use numbered sections'
-};
-
-# if set, and T2H_NUMBER_SECTIONS is set, then use node names in menu
-# entries, instead of section names
-$T2H_NODE_NAME_IN_MENU = 0;
-
-# if set and menu entry equals menu descr, then do not print menu descr.
-# Likewise, if node name equals entry name, do not print entry name.
-$T2H_AVOID_MENU_REDUNDANCY = 1;
-
-# -split section|chapter|none
-# if set to 'section' (resp. 'chapter') create one html file per (sub)section
-# (resp. chapter) and separate pages for Top, ToC, Overview, Index,
-# Glossary, About.
-# otherwise, create monolithic html file which contains whole document
-#$T2H_SPLIT = 'section';
-$T2H_SPLIT = '';
-$T2H_OPTIONS -> {split} =
-{
- type => '=s',
- linkage => \$T2H_SPLIT,
- verbose => 'split document on section|chapter else no splitting',
-};
-
-# -section_navigation|-no-section_navigation
-# if set, then navigation panels are printed at the beginning of each section
-# and, possibly at the end (depending on whether or not there were more than
-# $T2H_WORDS_IN_PAGE words on page
-# This is most useful if you do not want to have section navigation
-# on -split chapter
-$T2H_SECTION_NAVIGATION = 1;
-$T2H_OPTIONS -> {sec_nav} =
-{
- type => '!',
- linkage => \$T2H_SECTION_NAVIGATION,
- verbose => 'output navigation panels for each section',
-};
-
-# -subdir
-# if set put result files in this directory
-# if not set result files are put into current directory
-#$T2H_SUBDIR = 'html';
-$T2H_SUBDIR = '';
-$T2H_OPTIONS -> {subdir} =
-{
- type => '=s',
- linkage => \$T2H_SUBDIR,
- verbose => 'put HTML files in directory $s, instead of $cwd',
-};
-
-# -short_extn
-# If this is set all HTML file will have extension ".htm" instead of
-# ".html". This is helpful when shipping the document to PC systems.
-$T2H_SHORTEXTN = 0;
-$T2H_OPTIONS -> {short_ext} =
-{
- type => '!',
- linkage => \$T2H_SHORTEXTN,
- verbose => 'use "htm" extension for output HTML files',
-};
-
-
-# -prefix
-# Set the output file prefix, prepended to all .html, .gif and .pl files.
-# By default, this is the basename of the document
-$T2H_PREFIX = '';
-$T2H_OPTIONS -> {prefix} =
-{
- type => '=s',
- linkage => \$T2H_PREFIX,
- verbose => 'use as prefix for output files, instead of <docname>',
-};
-
-# -o filename
-# If set, generate monolithic document output html into $filename
-$T2H_OUT = '';
-$T2H_OPTIONS -> {out_file} =
-{
- type => '=s',
- linkage => sub {$main::T2H_OUT = @_[1]; $T2H_SPLIT = '';},
- verbose => 'if set, all HTML output goes into file $s',
-};
-
-# -short_ref
-#if set cross-references are given without section numbers
-$T2H_SHORT_REF = '';
-$T2H_OPTIONS -> {short_ref} =
-{
- type => '!',
- linkage => \$T2H_SHORT_REF,
- verbose => 'if set, references are without section numbers',
-};
-
-# -idx_sum
-# if value is set, then for each @prinindex $what
-# $docu_name_$what.idx is created which contains lines of the form
-# $key\t$ref sorted alphabetically (case matters)
-$T2H_IDX_SUMMARY = 0;
-$T2H_OPTIONS -> {idx_sum} =
-{
- type => '!',
- linkage => \$T2H_IDX_SUMMARY,
- verbose => 'if set, also output index summary',
- noHelp => 1,
-};
-
-# -verbose
-# if set, chatter about what we are doing
-$T2H_VERBOSE = '';
-$T2H_OPTIONS -> {Verbose} =
-{
- type => '!',
- linkage => \$T2H_VERBOSE,
- verbose => 'print progress info to stdout',
-};
-
-# -lang
-# For page titles use $T2H_WORDS->{$T2H_LANG}->{...} as title.
-# To add a new language, supply list of titles (see $T2H_WORDS below).
-# and use ISO 639 language codes (see e.g. perl module Locale-Codes-1.02
-# for definitions)
-# Default's to 'en' if not set or no @documentlanguage is specified
-$T2H_LANG = '';
-$T2H_OPTIONS -> {lang} =
-{
- type => '=s',
- linkage => sub {SetDocumentLanguage($_[1])},
- verbose => 'use $s as document language (ISO 639 encoding)',
-};
-
-# -l2h
-# if set, uses latex2html for generation of math content
-$T2H_L2H = '';
-$T2H_OPTIONS -> {l2h} =
-{
- type => '!',
- linkage => \$T2H_L2H,
- verbose => 'if set, uses latex2html for @math and @tex',
-};
-
-######################
-# The following options are only relevant if $T2H_L2H is set
-#
-# -l2h_l2h
-# name/location of latex2html progam
-$T2H_L2H_L2H = "latex2html";
-$T2H_OPTIONS -> {l2h_l2h} =
-{
- type => '=s',
- linkage => \$T2H_L2H_L2H,
- verbose => 'program to use for latex2html translation',
- noHelp => 1,
-};
-
-# -l2h_skip
-# if set, skips actual call to latex2html tries to reuse previously generated
-# content, instead
-$T2H_L2H_SKIP = '';
-$T2H_OPTIONS -> {l2h_skip} =
-{
- type => '!',
- linkage => \$T2H_L2H_SKIP,
- verbose => 'if set, tries to reuse previously latex2html output',
- noHelp => 1,
-};
-
-# -l2h_tmp
-# if set, l2h uses this directory for temporarary files. The path
-# leading to this directory may not contain a dot (i.e., a "."),
-# otherwise, l2h will fail
-$T2H_L2H_TMP = '';
-$T2H_OPTIONS -> {l2h_tmp} =
-{
- type => '=s',
- linkage => \$T2H_L2H_TMP,
- verbose => 'if set, uses $s as temporary latex2html directory',
- noHelp => 1,
-};
-
-# if set, cleans intermediate files (they all have the prefix $doc_l2h_)
-# of l2h
-$T2H_L2H_CLEAN = 1;
-$T2H_OPTIONS -> {l2h_clean} =
-{
- type => '!',
- linkage => \$T2H_L2H_CLEAN,
- verbose => 'if set, do not keep intermediate latex2html files for later reuse',
- noHelp => 1,
-};
-
-$T2H_OPTIONS -> {D} =
-{
- type => '=s',
- linkage => sub {$main::value{@_[1]} = 1;},
- verbose => 'equivalent to Texinfo "@set $s 1"',
- noHelp => 1,
-};
-
-$T2H_OPTIONS -> {init_file} =
-{
- type => '=s',
- linkage => \&LoadInitFile,
- verbose => 'load init file $s'
-};
-
-
-##############################################################################
-#
-# The following can only be set in the init file
-#
-##############################################################################
-
-# if set, center @image by default
-# otherwise, do not center by default
-$T2H_CENTER_IMAGE = 1;
-
-# used as identation for block enclosing command @example, etc
-# If not empty, must be enclosed in <td></td>
-$T2H_EXAMPLE_INDENT_CELL = '<td>&nbsp;</td>';
-# same as above, only for @small
-$T2H_SMALL_EXAMPLE_INDENT_CELL = '<td>&nbsp;</td>';
-# font size for @small
-$T2H_SMALL_FONT_SIZE = '-1';
-
-# if non-empty, and no @..heading appeared in Top node, then
-# use this as header for top node/section, otherwise use value of
-# @settitle or @shorttitle (in that order)
-$T2H_TOP_HEADING = '';
-
-# if set, use this chapter for 'Index' button, else
-# use first chapter whose name matches 'index' (case insensitive)
-$T2H_INDEX_CHAPTER = '';
-
-# if set and $T2H_SPLIT is set, then split index pages at the next letter
-# after they have more than that many entries
-$T2H_SPLIT_INDEX = 100;
-
-# if set (e.g., to index.html) replace hrefs to this file
-# (i.e., to index.html) by ./
-$T2H_HREF_DIR_INSTEAD_FILE = '';
-
-########################################################################
-# Language dependencies:
-# To add a new language extend T2H_WORDS hash and create $T2H_<...>_WORDS hash
-# To redefine one word, simply do:
-# $T2H_WORDS->{<language>}->{<word>} = 'whatever' in your personal init file.
-#
-$T2H_WORDS_EN =
-{
- # titles of pages
- 'ToC_Title' => 'Table of Contents',
- 'Overview_Title' => 'Short Table of Contents',
- 'Index_Title' => 'Index',
- 'About_Title' => 'About this document',
- 'Footnotes_Title' => 'Footnotes',
- 'See' => 'See',
- 'see' => 'see',
- 'section' => 'section',
-# If necessary, we could extend this as follows:
-# # text for buttons
-# 'Top_Button' => 'Top',
-# 'ToC_Button' => 'Contents',
-# 'Overview_Button' => 'Overview',
-# 'Index_button' => 'Index',
-# 'Back_Button' => 'Back',
-# 'FastBack_Button' => 'FastBack',
-# 'Prev_Button' => 'Prev',
-# 'Up_Button' => 'Up',
-# 'Next_Button' => 'Next',
-# 'Forward_Button' =>'Forward',
-# 'FastWorward_Button' => 'FastForward',
-# 'First_Button' => 'First',
-# 'Last_Button' => 'Last',
-# 'About_Button' => 'About'
-};
-
-$T2H_WORD_DE =
-{
- 'ToC_Title' => 'Inhaltsverzeichniss',
- 'Overview_Title' => 'Kurzes Inhaltsverzeichniss',
- 'Index_Title' => 'Index',
- 'About_Title' => '&Uuml;ber dieses Dokument',
- 'Footnotes_Title' => 'Fu&szlig;noten',
- 'See' => 'Siehe',
- 'see' => 'siehe',
- 'section' => 'Abschnitt',
-};
-
-$T2H_WORD_NL =
-{
- 'ToC_Title' => 'Inhoudsopgave',
- 'Overview_Title' => 'Korte inhoudsopgave',
- 'Index_Title' => 'Index', #Not sure ;-)
- 'About_Title' => 'No translation available!', #No translation available!
- 'Footnotes_Title' => 'No translation available!', #No translation available!
- 'See' => 'Zie',
- 'see' => 'zie',
- 'section' => 'sectie',
-};
-
-$T2H_WORD_ES =
-{
- 'ToC_Title' => '&iacute;ndice General',
- 'Overview_Title' => 'Resumen del Contenido',
- 'Index_Title' => 'Index', #Not sure ;-)
- 'About_Title' => 'No translation available!', #No translation available!
- 'Footnotes_Title' => 'Fu&szlig;noten',
- 'See' => 'V&eacute;ase',
- 'see' => 'v&eacute;ase',
- 'section' => 'secci&oacute;n',
-};
-
-$T2H_WORD_NO =
-{
- 'ToC_Title' => 'Innholdsfortegnelse',
- 'Overview_Title' => 'Kort innholdsfortegnelse',
- 'Index_Title' => 'Indeks', #Not sure ;-)
- 'About_Title' => 'No translation available!', #No translation available!
- 'Footnotes_Title' => 'No translation available!',
- 'See' => 'Se',
- 'see' => 'se',
- 'section' => 'avsnitt',
-};
-
-$T2H_WORD_PT =
-{
- 'ToC_Title' => 'Sum&aacute;rio',
- 'Overview_Title' => 'Breve Sum&aacute;rio',
- 'Index_Title' => '&Iacute;ndice', #Not sure ;-)
- 'About_Title' => 'No translation available!', #No translation available!
- 'Footnotes_Title' => 'No translation available!',
- 'See' => 'Veja',
- 'see' => 'veja',
- 'section' => 'Se&ccedil;&atilde;o',
-};
-
-$T2H_WORDS =
-{
- 'en' => $T2H_WORDS_EN,
- 'de' => $T2H_WORDS_DE,
- 'nl' => $T2H_WORDS_NL,
- 'es' => $T2H_WORDS_ES,
- 'no' => $T2H_WORDS_NO,
- 'pt' => $T2H_WORDS_PT
-};
-
-@MONTH_NAMES_EN =
-(
- 'January', 'February', 'March', 'April', 'May',
- 'June', 'July', 'August', 'September', 'October',
- 'November', 'December'
-);
-
-@MONTH_NAMES_DE =
-(
- 'Januar', 'Februar', 'M&auml;rz', 'April', 'Mai',
- 'Juni', 'Juli', 'August', 'September', 'Oktober',
- 'November', 'Dezember'
-);
-
-@MONTH_NAMES_NL =
-(
- 'Januari', 'Februari', 'Maart', 'April', 'Mei',
- 'Juni', 'Juli', 'Augustus', 'September', 'Oktober',
- 'November', 'December'
-);
-
-@MONTH_NAMES_ES =
-(
- 'enero', 'febrero', 'marzo', 'abril', 'mayo',
- 'junio', 'julio', 'agosto', 'septiembre', 'octubre',
- 'noviembre', 'diciembre'
-);
-
-@MONTH_NAMES_NO =
-(
-
- 'januar', 'februar', 'mars', 'april', 'mai',
- 'juni', 'juli', 'august', 'september', 'oktober',
- 'november', 'desember'
-);
-
-@MONTH_NAMES_PT =
-(
- 'Janeiro', 'Fevereiro', 'Mar&ccedil;o', 'Abril', 'Maio',
- 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro',
- 'Novembro', 'Dezembro'
-);
-
-
-$MONTH_NAMES =
-{
- 'en' => \@MONTH_NAMES_EN,
- 'de' => \@MONTH_NAMES_DE,
- 'es' => \@MONTH_NAMES_ES,
- 'nl' => \@MONTH_NAMES_NL,
- 'no' => \@MONTH_NAMES_NO,
- 'pt' => \@MONTH_NAMES_PT
-};
-########################################################################
-# Control of Page layout:
-# You can make changes of the Page layout at two levels:
-# 1.) For small changes, it is often enough to change the value of
-# some global string/hash/array variables
-# 2.) For larger changes, reimplement one of the T2H_DEFAULT_<fnc>* routines,
-# give them another name, and assign them to the respective
-# $T2H_<fnc> variable.
-
-# As a general interface, the hashes T2H_HREF, T2H_NAME, T2H_NODE hold
-# href, html-name, node-name of
-# This -- current section (resp. html page)
-# Top -- top page ($T2H_TOP_FILE)
-# Contents -- Table of contents
-# Overview -- Short table of contents
-# Index -- Index page
-# About -- page which explain "navigation buttons"
-# First -- first node
-# Last -- last node
-#
-# Whether or not the following hash values are set, depends on the context
-# (all values are w.r.t. 'This' section)
-# Next -- next node of texinfo
-# Prev -- previous node of texinfo
-# Up -- up node of texinfo
-# Forward -- next node in reading order
-# Back -- previous node in reading order
-# FastForward -- if leave node, up and next, else next node
-# FastBackward-- if leave node, up and prev, else prev node
-#
-# Furthermore, the following global variabels are set:
-# $T2H_THISDOC{title} -- title as set by @setttile
-# $T2H_THISDOC{fulltitle} -- full title as set by @title...
-# $T2H_THISDOC{subtitle} -- subtitle as set by @subtitle
-# $T2H_THISDOC{author} -- author as set by @author
-#
-# and pointer to arrays of lines which need to be printed by t2h_print_lines
-# $T2H_OVERVIEW -- lines of short table of contents
-# $T2H_TOC -- lines of table of contents
-# $T2H_TOP -- lines of Top texinfo node
-# $T2H_THIS_SECTION -- lines of 'This' section
-
-#
-# There are the following subs which control the layout:
-#
-$T2H_print_section = \&T2H_DEFAULT_print_section;
-$T2H_print_Top_header = \&T2H_DEFAULT_print_Top_header;
-$T2H_print_Top_footer = \&T2H_DEFAULT_print_Top_footer;
-$T2H_print_Top = \&T2H_DEFAULT_print_Top;
-$T2H_print_Toc = \&T2H_DEFAULT_print_Toc;
-$T2H_print_Overview = \&T2H_DEFAULT_print_Overview;
-$T2H_print_Footnotes = \&T2H_DEFAULT_print_Footnotes;
-$T2H_print_About = \&T2H_DEFAULT_print_About;
-$T2H_print_misc_header = \&T2H_DEFAULT_print_misc_header;
-$T2H_print_misc_footer = \&T2H_DEFAULT_print_misc_footer;
-$T2H_print_misc = \&T2H_DEFAULT_print_misc;
-$T2H_print_chapter_header = \&T2H_DEFAULT_print_chapter_header;
-$T2H_print_chapter_footer = \&T2H_DEFAULT_print_chapter_footer;
-$T2H_print_page_head = \&T2H_DEFAULT_print_page_head;
-$T2H_print_page_foot = \&T2H_DEFAULT_print_page_foot;
-$T2H_print_head_navigation = \&T2H_DEFAULT_print_head_navigation;
-$T2H_print_foot_navigation = \&T2H_DEFAULT_print_foot_navigation;
-$T2H_button_icon_img = \&T2H_DEFAULT_button_icon_img;
-$T2H_print_navigation = \&T2H_DEFAULT_print_navigation;
-$T2H_about_body = \&T2H_DEFAULT_about_body;
-$T2H_print_frame = \&T2H_DEFAULT_print_frame;
-$T2H_print_toc_frame = \&T2H_DEFAULT_print_toc_frame;
-
-########################################################################
-# Layout for html for every sections
-#
-sub T2H_DEFAULT_print_section
-{
- my $fh = shift;
- local $T2H_BUTTONS = \@T2H_SECTION_BUTTONS;
- &$T2H_print_head_navigation($fh) if $T2H_SECTION_NAVIGATION;
- my $nw = t2h_print_lines($fh);
- if ($T2H_SPLIT eq 'section' && $T2H_SECTION_NAVIGATION)
- {
- &$T2H_print_foot_navigation($fh, $nw);
- }
- else
- {
- print $fh '<HR SIZE="6">' . "\n";
- }
-}
-
-###################################################################
-# Layout of top-page I recommend that you use @ifnothtml, @ifhtml,
-# @html within the Top texinfo node to specify content of top-level
-# page.
-#
-# If you enclose everything in @ifnothtml, then title, subtitle,
-# author and overview is printed
-# T2H_HREF of Next, Prev, Up, Forward, Back are not defined
-# if $T2H_SPLIT then Top page is in its own html file
-sub T2H_DEFAULT_print_Top_header
-{
- &$T2H_print_page_head(@_) if $T2H_SPLIT;
- t2h_print_label(@_); # this needs to be called, otherwise no label set
- &$T2H_print_head_navigation(@_);
-}
-sub T2H_DEFAULT_print_Top_footer
-{
- &$T2H_print_foot_navigation(@_);
- &$T2H_print_page_foot(@_) if $T2H_SPLIT;
-}
-sub T2H_DEFAULT_print_Top
-{
- my $fh = shift;
-
- # for redefining navigation buttons use:
- # local $T2H_BUTTONS = [...];
- # as it is, 'Top', 'Contents', 'Index', 'About' are printed
- local $T2H_BUTTONS = \@T2H_MISC_BUTTONS;
- &$T2H_print_Top_header($fh);
- if ($T2H_THIS_SECTION)
- {
- # if top-level node has content, then print it with extra header
- print $fh "<H1>$T2H_NAME{Top}</H1>"
- unless ($T2H_HAS_TOP_HEADING);
- t2h_print_lines($fh, $T2H_THIS_SECTION)
- }
- else
- {
- # top-level node is fully enclosed in @ifnothtml
- # print fulltitle, subtitle, author, Overview
- print $fh
- "<CENTER>\n<H1>" .
- join("</H1>\n<H1>", split(/\n/, $T2H_THISDOC{fulltitle})) .
- "</H1>\n";
- print $fh "<H2>$T2H_THISDOC{subtitle}</H2>\n" if $T2H_THISDOC{subtitle};
- print $fh "$T2H_THISDOC{author}\n" if $T2H_THISDOC{author};
- print $fh <<EOT;
-</CENTER>
-<HR>
-<P></P>
-<H2> Overview: </H2>
-<BLOCKQUOTE>
-EOT
- t2h_print_lines($fh, $T2H_OVERVIEW);
- print $fh "</BLOCKQUOTE>\n";
- }
- &$T2H_print_Top_footer($fh);
-}
-
-###################################################################
-# Layout of Toc, Overview, and Footnotes pages
-# By default, we use "normal" layout
-# T2H_HREF of Next, Prev, Up, Forward, Back, etc are not defined
-# use: local $T2H_BUTTONS = [...] to redefine navigation buttons
-sub T2H_DEFAULT_print_Toc
-{
- return &$T2H_print_misc(@_);
-}
-sub T2H_DEFAULT_print_Overview
-{
- return &$T2H_print_misc(@_);
-}
-sub T2H_DEFAULT_print_Footnotes
-{
- return &$T2H_print_misc(@_);
-}
-sub T2H_DEFAULT_print_About
-{
- return &$T2H_print_misc(@_);
-}
-
-sub T2H_DEFAULT_print_misc_header
-{
- &$T2H_print_page_head(@_) if $T2H_SPLIT;
- # this needs to be called, otherwise, no labels are set
- t2h_print_label(@_);
- &$T2H_print_head_navigation(@_);
-}
-sub T2H_DEFAULT_print_misc_footer
-{
- &$T2H_print_foot_navigation(@_);
- &$T2H_print_page_foot(@_) if $T2H_SPLIT;
-}
-sub T2H_DEFAULT_print_misc
-{
- my $fh = shift;
- local $T2H_BUTTONS = \@T2H_MISC_BUTTONS;
- &$T2H_print_misc_header($fh);
- print $fh "<H1>$T2H_NAME{This}</H1>\n";
- t2h_print_lines($fh);
- &$T2H_print_misc_footer($fh);
-}
-
-###################################################################
-# chapter_header and chapter_footer are only called if
-# T2H_SPLIT eq 'chapter'
-# chapter_header: after print_page_header, before print_section
-# chapter_footer: after print_section of last section, before print_page_footer
-#
-# If you want to get rid of navigation stuff after each section,
-# redefine print_section such that it does not call print_navigation,
-# and put print_navigation into print_chapter_header
-@T2H_CHAPTER_BUTTONS =
- (
- 'FastBack', 'FastForward', ' ',
- ' ', ' ', ' ', ' ',
- 'Top', 'Contents', 'Index', 'About',
- );
-
-sub T2H_DEFAULT_print_chapter_header
-{
- # nothing to do there, by default
- if (! $T2H_SECTION_NAVIGATION)
- {
- my $fh = shift;
- local $T2H_BUTTONS = \@T2H_CHAPTER_BUTTONS;
- &$T2H_print_navigation($fh);
- print $fh "\n<HR SIZE=2>\n";
- }
-}
-
-sub T2H_DEFAULT_print_chapter_footer
-{
- local $T2H_BUTTONS = \@T2H_CHAPTER_BUTTONS;
- &$T2H_print_navigation(@_);
-}
-###################################################################
-$T2H_TODAY = &pretty_date; # like "20 September 1993"
-
-sub pretty_date {
- local($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst);
-
- ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time);
- $year += ($year < 70) ? 2000 : 1900;
- # obachman: Let's do it as the Americans do
- return($MONTH_NAMES->{$T2H_LANG}[$mon] . ", " . $mday . " " . $year);
-}
-
-
-###################################################################
-# Layout of standard header and footer
-#
-
-# Set the default body text, inserted between <BODY ... >
-###$T2H_BODYTEXT = 'LANG="EN" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000"';
-$T2H_BODYTEXT = 'LANG="' . $T2H_LANG . '" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000"';
-# text inserted after <BODY ...>
-$T2H_AFTER_BODY_OPEN = '';
-#text inserted before </BODY>
-$T2H_PRE_BODY_CLOSE = '';
-# this is used in footer
-$T2H_ADDRESS = "by <I>$T2H_USER</I> " if $T2H_USER;
-$T2H_ADDRESS .= "on <I>$T2H_TODAY</I>";
-# this is added inside <HEAD></HEAD> after <TITLE> and some META NAME stuff
-# can be used for <style> <script>, <meta> tags
-$T2H_EXTRA_HEAD = '';
-
-sub T2H_DEFAULT_print_page_head
-{
- my $fh = shift;
- my $longtitle = "$T2H_THISDOC{title}: $T2H_NAME{This}";
- print $fh <<EOT;
-<HTML>
-$T2H_DOCTYPE
-<!-- Created on $T2H_TODAY by $THISPROG -->
-<!--
-$T2H_AUTHORS
--->
-<HEAD>
-<TITLE>$longtitle</TITLE>
-
-<META NAME="description" CONTENT="$longtitle">
-<META NAME="keywords" CONTENT="$longtitle">
-<META NAME="resource-type" CONTENT="document">
-<META NAME="distribution" CONTENT="global">
-<META NAME="Generator" CONTENT="$THISPROG">
-$T2H_EXTRA_HEAD
-</HEAD>
-
-<BODY $T2H_BODYTEXT>
-$T2H_AFTER_BODY_OPEN
-EOT
-}
-
-sub T2H_DEFAULT_print_page_foot
-{
- my $fh = shift;
- print $fh <<EOT;
-<BR>
-<FONT SIZE="-1">
-This document was generated
-$T2H_ADDRESS
-using <A HREF="$T2H_HOMEPAGE"><I>texi2html</I></A>
-$T2H_PRE_BODY_CLOSE
-</BODY>
-</HTML>
-EOT
-}
-
-###################################################################
-# Layout of navigation panel
-
-# if this is set, then a vertical navigation panel is used
-$T2H_VERTICAL_HEAD_NAVIGATION = 0;
-sub T2H_DEFAULT_print_head_navigation
-{
- my $fh = shift;
- if ($T2H_VERTICAL_HEAD_NAVIGATION)
- {
- print $fh <<EOT;
-<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0">
-<TR VALIGN="TOP">
-<TD ALIGN="LEFT">
-EOT
- }
- &$T2H_print_navigation($fh, $T2H_VERTICAL_HEAD_NAVIGATION);
- if ($T2H_VERTICAL_HEAD_NAVIGATION)
- {
- print $fh <<EOT;
-</TD>
-<TD ALIGN="LEFT">
-EOT
- }
- elsif ($T2H_SPLIT eq 'section')
- {
- print $fh "<HR SIZE=1>\n";
- }
-}
-
-# Specifies the minimum page length required before a navigation panel
-# is placed at the bottom of a page (the default is that of latex2html)
-# T2H_THIS_WORDS_IN_PAGE holds number of words of current page
-$T2H_WORDS_IN_PAGE = 300;
-sub T2H_DEFAULT_print_foot_navigation
-{
- my $fh = shift;
- my $nwords = shift;
- if ($T2H_VERTICAL_HEAD_NAVIGATION)
- {
- print $fh <<EOT;
-</TD>
-</TR>
-</TABLE>
-EOT
- }
- print $fh "<HR SIZE=1>\n";
- &$T2H_print_navigation($fh) if ($nwords >= $T2H_WORDS_IN_PAGE)
-}
-
-######################################################################
-# navigation panel
-#
-# specify in this array which "buttons" should appear in which order
-# in the navigation panel for sections; use ' ' for empty buttons (space)
-@T2H_SECTION_BUTTONS =
- (
- 'Back', 'Forward', ' ', 'FastBack', 'Up', 'FastForward',
- ' ', ' ', ' ', ' ',
- 'Top', 'Contents', 'Index', 'About',
- );
-
-# buttons for misc stuff
-@T2H_MISC_BUTTONS = ('Top', 'Contents', 'Index', 'About');
-
-# insert here name of icon images for buttons
-# Icons are used, if $T2H_ICONS and resp. value are set
-%T2H_ACTIVE_ICONS =
- (
- 'Top', '',
- 'Contents', '',
- 'Overview', '',
- 'Index', '',
- 'Back', '',
- 'FastBack', '',
- 'Prev', '',
- 'Up', '',
- 'Next', '',
- 'Forward', '',
- 'FastForward', '',
- 'About' , '',
- 'First', '',
- 'Last', '',
- ' ', ''
- );
-
-# insert here name of icon images for these, if button is inactive
-%T2H_PASSIVE_ICONS =
- (
- 'Top', '',
- 'Contents', '',
- 'Overview', '',
- 'Index', '',
- 'Back', '',
- 'FastBack', '',
- 'Prev', '',
- 'Up', '',
- 'Next', '',
- 'Forward', '',
- 'FastForward', '',
- 'About', '',
- 'First', '',
- 'Last', '',
- );
-
-# how to create IMG tag
-sub T2H_DEFAULT_button_icon_img
-{
- my $button = shift;
- my $icon = shift;
- my $name = shift;
- return qq{<IMG SRC="$icon" BORDER="0" ALT="$button: $name" ALIGN="MIDDLE">};
-}
-
-# Names of text as alternative for icons
-%T2H_NAVIGATION_TEXT =
- (
- 'Top', 'Top',
- 'Contents', 'Contents',
- 'Overview', 'Overview',
- 'Index', 'Index',
- ' ', ' &nbsp; ',
- 'Back', ' &lt; ',
- 'FastBack', ' &lt;&lt; ',
- 'Prev', 'Prev',
- 'Up', ' Up ',
- 'Next', 'Next',
- 'Forward', ' &gt; ',
- 'FastForward', ' &gt;&gt; ',
- 'About', ' ? ',
- 'First', ' |&lt; ',
- 'Last', ' &gt;| '
- );
-
-sub T2H_DEFAULT_print_navigation
-{
- my $fh = shift;
- my $vertical = shift;
- my $spacing = 1;
- print $fh "<TABLE CELLPADDING=$spacing CELLSPACING=$spacing BORDER=0>\n";
-
- print $fh "<TR>" unless $vertical;
- for $button (@$T2H_BUTTONS)
- {
- print $fh qq{<TR VALIGN="TOP" ALIGN="LEFT">\n} if $vertical;
- print $fh qq{<TD VALIGN="MIDDLE" ALIGN="LEFT">};
-
- if (ref($button) eq 'CODE')
- {
- &$button($fh, $vertical);
- }
- elsif ($button eq ' ')
- { # handle space button
- print $fh
- $T2H_ICONS && $T2H_ACTIVE_ICONS{' '} ?
- &$T2H_button_icon_img($button, $T2H_ACTIVE_ICONS{' '}) :
- $T2H_NAVIGATION_TEXT{' '};
- next;
- }
- elsif ($T2H_HREF{$button})
- { # button is active
- print $fh
- $T2H_ICONS && $T2H_ACTIVE_ICONS{$button} ? # use icon ?
- t2h_anchor('', $T2H_HREF{$button}, # yes
- &$T2H_button_icon_img($button,
- $T2H_ACTIVE_ICONS{$button},
- $T2H_NAME{$button}))
- : # use text
- "[" .
- t2h_anchor('', $T2H_HREF{$button}, $T2H_NAVIGATION_TEXT{$button}) .
- "]";
- }
- else
- { # button is passive
- print $fh
- $T2H_ICONS && $T2H_PASSIVE_ICONS{$button} ?
- &$T2H_button_icon_img($button,
- $T2H_PASSIVE_ICONS{$button},
- $T2H_NAME{$button}) :
-
- "[" . $T2H_NAVIGATION_TEXT{$button} . "]";
- }
- print $fh "</TD>\n";
- print $fh "</TR>\n" if $vertical;
- }
- print $fh "</TR>" unless $vertical;
- print $fh "</TABLE>\n";
-}
-
-######################################################################
-# Frames: this is from "Richard Y. Kim" <ryk@coho.net>
-# Should be improved to be more conforming to other _print* functions
-
-sub T2H_DEFAULT_print_frame
-{
- my $fh = shift;
- print $fh <<EOT;
-<HTML>
-<HEAD><TITLE>$T2H_THISDOC{title}</TITLE></HEAD>
-<FRAMESET cols="140,*">
- <FRAME name=toc src="$docu_toc_frame_file">
- <FRAME name=main src="$docu_doc">
-</FRAMESET>
-</HTML>
-EOT
-}
-
-sub T2H_DEFAULT_print_toc_frame
-{
- my $fh = shift;
- &$T2H_print_page_head($fh);
- print $fh <<EOT;
-<H2>Content</H2>
-EOT
- print $fh map {s/HREF=/target=\"main\" HREF=/; $_;} @stoc_lines;
- print $fh "</BODY></HTML>\n";
-}
-
-######################################################################
-# About page
-#
-
-# T2H_PRE_ABOUT might be a function
-$T2H_PRE_ABOUT = <<EOT;
-This document was generated $T2H_ADDRESS
-using <A HREF="$T2H_HOMEPAGE"><I>texi2html</I></A>
-<P></P>
-EOT
-$T2H_AFTER_ABOUT = '';
-
-sub T2H_DEFAULT_about_body
-{
- my $about;
- if (ref($T2H_PRE_ABOUT) eq 'CODE')
- {
- $about = &$T2H_PRE_ABOUT();
- }
- else
- {
- $about = $T2H_PRE_ABOUT;
- }
- $about .= <<EOT;
-The buttons in the navigation panels have the following meaning:
-<P></P>
-<table border = "1">
-<TR>
-<TH> Button </TH>
-<TH> Name </TH>
-<TH> Go to </TH>
-<TH> From 1.2.3 go to</TH>
-</TR>
-EOT
-
- for $button (@T2H_SECTION_BUTTONS)
- {
- next if $button eq ' ' || ref($button) eq 'CODE';
- $about .= <<EOT;
-<TR>
-<TD ALIGN="CENTER">
-EOT
- $about .=
- ($T2H_ICONS && $T2H_ACTIVE_ICONS{$button} ?
- &$T2H_button_icon_img($button, $T2H_ACTIVE_ICONS{$button}) :
- " [" . $T2H_NAVIGATION_TEXT{$button} . "] ");
- $about .= <<EOT;
-</TD>
-<TD ALIGN="CENTER">
-$button
-</TD>
-<TD>
-$T2H_BUTTONS_GOTO{$button}
-</TD>
-<TD>
-$T2H_BUTTONS_EXAMPLE{$button}
-</TD>
-</TR>
-EOT
- }
-
- $about .= <<EOT;
-</TABLE>
-<P></P>
-where the <STRONG> Example </STRONG> assumes that the current position
-is at <STRONG> Subsubsection One-Two-Three </STRONG> of a document of
-the following structure:
-<UL>
-<LI> 1. Section One </LI>
-<UL>
-<LI>1.1 Subsection One-One</LI>
-<UL>
-<LI> ... </LI>
-</UL>
-<LI>1.2 Subsection One-Two</LI>
-<UL>
-<LI>1.2.1 Subsubsection One-Two-One
-</LI><LI>1.2.2 Subsubsection One-Two-Two
-</LI><LI>1.2.3 Subsubsection One-Two-Three &nbsp; &nbsp; <STRONG>
-&lt;== Current Position </STRONG>
-</LI><LI>1.2.4 Subsubsection One-Two-Four
-</LI></UL>
-<LI>1.3 Subsection One-Three</LI>
-<UL>
-<LI> ... </LI>
-</UL>
-<LI>1.4 Subsection One-Four</LI>
-</UL>
-</UL>
-$T2H_AFTER_ABOUT
-EOT
- return $about;
-}
-
-
-%T2H_BUTTONS_GOTO =
- (
- 'Top', 'cover (top) of document',
- 'Contents', 'table of contents',
- 'Overview', 'short table of contents',
- 'Index', 'concept index',
- 'Back', 'previous section in reading order',
- 'FastBack', 'previous or up-and-previous section ',
- 'Prev', 'previous section same level',
- 'Up', 'up section',
- 'Next', 'next section same level',
- 'Forward', 'next section in reading order',
- 'FastForward', 'next or up-and-next section',
- 'About' , 'this page',
- 'First', 'first section in reading order',
- 'Last', 'last section in reading order',
- );
-
-%T2H_BUTTONS_EXAMPLE =
-(
- 'Top', ' &nbsp; ',
- 'Contents', ' &nbsp; ',
- 'Overview', ' &nbsp; ',
- 'Index', ' &nbsp; ',
- 'Back', '1.2.2',
- 'FastBack', '1.1',
- 'Prev', '1.2.2',
- 'Up', '1.2',
- 'Next', '1.2.4',
- 'Forward', '1.2.4',
- 'FastForward', '1.3',
- 'About', ' &nbsp; ',
- 'First', '1.',
- 'Last', '1.2.4',
-);
-
-
-######################################################################
-# from here on, its l2h init stuff
-#
-
-## initialization for latex2html as for Singular manual generation
-## obachman 3/99
-
-#
-# Options controlling Titles, File-Names, Tracing and Sectioning
-#
-$TITLE = '';
-
-$SHORTEXTN = 0;
-
-$LONG_TITLES = 0;
-
-$DESTDIR = ''; # should be overwritten by cmd-line argument
-
-$NO_SUBDIR = 0;# should be overwritten by cmd-line argument
-
-$PREFIX = ''; # should be overwritten by cmd-line argument
-
-$AUTO_PREFIX = 0; # this is needed, so that prefix settings are used
-
-$AUTO_LINK = 0;
-
-$SPLIT = 0;
-
-$MAX_LINK_DEPTH = 0;
-
-$TMP = ''; # should be overwritten by cmd-line argument
-
-$DEBUG = 0;
-
-$VERBOSE = 1;
-
-#
-# Options controlling Extensions and Special Features
-#
-$HTML_VERSION = "3.2";
-
-$TEXDEFS = 1; # we absolutely need that
-
-$EXTERNAL_FILE = '';
-
-$SCALABLE_FONTS = 1;
-
-$NO_SIMPLE_MATH = 1;
-
-$LOCAL_ICONS = 1;
-
-$SHORT_INDEX = 0;
-
-$NO_FOOTNODE = 1;
-
-$ADDRESS = '';
-
-$INFO = '';
-
-#
-# Switches controlling Image Generation
-#
-$ASCII_MODE = 0;
-
-$NOLATEX = 0;
-
-$EXTERNAL_IMAGES = 0;
-
-$PS_IMAGES = 0;
-
-$NO_IMAGES = 0;
-
-$IMAGES_ONLY = 0;
-
-$REUSE = 2;
-
-$ANTI_ALIAS = 1;
-
-$ANTI_ALIAS_TEXT = 1;
-
-#
-#Switches controlling Navigation Panels
-#
-$NO_NAVIGATION = 1;
-$ADDRESS = '';
-$INFO = 0; # 0 = do not make a "About this document..." section
-
-#
-#Switches for Linking to other documents
-#
-# actuall -- we don't care
-
-$MAX_SPLIT_DEPTH = 0; # Stop making separate files at this depth
-
-$MAX_LINK_DEPTH = 0; # Stop showing child nodes at this depth
-
-$NOLATEX = 0; # 1 = do not pass unknown environments to Latex
-
-$EXTERNAL_IMAGES = 0; # 1 = leave the images outside the document
-
-$ASCII_MODE = 0; # 1 = do not use any icons or internal images
-
-# 1 = use links to external postscript images rather than inlined bitmap
-# images.
-$PS_IMAGES = 0;
-$SHOW_SECTION_NUMBERS = 0;
-
-### Other global variables ###############################################
-$CHILDLINE = "";
-
-# This is the line width measured in pixels and it is used to right justify
-# equations and equation arrays;
-$LINE_WIDTH = 500;
-
-# Used in conjunction with AUTO_NAVIGATION
-$WORDS_IN_PAGE = 300;
-
-# Affects ONLY the way accents are processed
-$default_language = 'english';
-
-# The value of this variable determines how many words to use in each
-# title that is added to the navigation panel (see below)
-#
-$WORDS_IN_NAVIGATION_PANEL_TITLES = 0;
-
-# This number will determine the size of the equations, special characters,
-# and anything which will be converted into an inlined image
-# *except* "image generating environments" such as "figure", "table"
-# or "minipage".
-# Effective values are those greater than 0.
-# Sensible values are between 0.1 - 4.
-$MATH_SCALE_FACTOR = 1.5;
-
-# This number will determine the size of
-# image generating environments such as "figure", "table" or "minipage".
-# Effective values are those greater than 0.
-# Sensible values are between 0.1 - 4.
-$FIGURE_SCALE_FACTOR = 1.6;
-
-
-# If both of the following two variables are set then the "Up" button
-# of the navigation panel in the first node/page of a converted document
-# will point to $EXTERNAL_UP_LINK. $EXTERNAL_UP_TITLE should be set
-# to some text which describes this external link.
-$EXTERNAL_UP_LINK = "";
-$EXTERNAL_UP_TITLE = "";
-
-# If this is set then the resulting HTML will look marginally better if viewed
-# with Netscape.
-$NETSCAPE_HTML = 1;
-
-# Valid paper sizes are "letter", "legal", "a4","a3","a2" and "a0"
-# Paper sizes has no effect other than in the time it takes to create inlined
-# images and in whether large images can be created at all ie
-# - larger paper sizes *MAY* help with large image problems
-# - smaller paper sizes are quicker to handle
-$PAPERSIZE = "a4";
-
-# Replace "english" with another language in order to tell LaTeX2HTML that you
-# want some generated section titles (eg "Table of Contents" or "References")
-# to appear in a different language. Currently only "english" and "french"
-# is supported but it is very easy to add your own. See the example in the
-# file "latex2html.config"
-$TITLES_LANGUAGE = "english";
-
-1; # This must be the last non-comment line
-
-# End File texi2html.init
-######################################################################
-
-
-require "$ENV{T2H_HOME}/texi2html.init"
- if ($0 =~ /\.pl$/ &&
- -e "$ENV{T2H_HOME}/texi2html.init" && -r "$ENV{T2H_HOME}/texi2html.init");
-
-#+++############################################################################
-# #
-# Initialization #
-# Pasted content of File $(srcdir)/MySimple.pm: Command-line processing #
-# #
-#---############################################################################
-
-# leave this within comments, and keep the require statement
-# This way, you can directly run texi2html.pl, if $ENV{T2H_HOME}/texi2html.init
-# exists.
-
-#
-package Getopt::MySimple;
-
-# Name:
-# Getopt::MySimple.
-#
-# Documentation:
-# POD-style (incomplete) documentation is in file MySimple.pod
-#
-# Tabs:
-# 4 spaces || die.
-#
-# Author:
-# Ron Savage rpsavage@ozemail.com.au.
-# 1.00 19-Aug-97 Initial version.
-# 1.10 13-Oct-97 Add arrays of switches (eg '=s@').
-# 1.20 3-Dec-97 Add 'Help' on a per-switch basis.
-# 1.30 11-Dec-97 Change 'Help' to 'verbose'. Make all hash keys lowercase.
-# 1.40 10-Nov-98 Change width of help report. Restructure tests.
-# 1-Jul-00 Modifications for Texi2html
-
-# --------------------------------------------------------------------------
-# Locally modified by obachman (Display type instead of env, order by cmp)
-# $Id$
-
-# use strict;
-# no strict 'refs';
-
-use vars qw(@EXPORT @EXPORT_OK @ISA);
-use vars qw($fieldWidth $opt $VERSION);
-
-use Exporter();
-use Getopt::Long;
-
-@ISA = qw(Exporter);
-@EXPORT = qw();
-@EXPORT_OK = qw($opt); # An alias for $self -> {'opt'}.
-
-# --------------------------------------------------------------------------
-
-$fieldWidth = 20;
-$VERSION = '1.41';
-
-# --------------------------------------------------------------------------
-
-sub byOrder
-{
- my($self) = @_;
-
- return uc($a) cmp (uc($b));
-}
-
-# --------------------------------------------------------------------------
-
-sub dumpOptions
-{
- my($self) = @_;
-
- print 'Option', ' ' x ($fieldWidth - length('Option') ), "Value\n";
-
- for (sort byOrder keys(%{$self -> {'opt'} }) )
- {
- print "-$_", ' ' x ($fieldWidth - (1 + length) ), "${$self->{'opt'} }{$_}\n";
- }
-
- print "\n";
-
-} # End of dumpOptions.
-
-# --------------------------------------------------------------------------
-# Return:
-# 0 -> Error.
-# 1 -> Ok.
-
-sub getOptions
-{
- push(@_, 0) if ($#_ == 2); # Default for $ignoreCase is 0.
- push(@_, 1) if ($#_ == 3); # Default for $helpThenExit is 1.
-
- my($self, $default, $helpText, $versionText,
- $helpThenExit, $versionThenExit, $ignoreCase) = @_;
-
- $helpThenExit = 1 unless (defined($helpThenExit));
- $versionThenExit = 1 unless (defined($versionThenExit));
- $ignoreCase = 0 unless (defined($ignoreCase));
-
- $self -> {'default'} = $default;
- $self -> {'helpText'} = $helpText;
- $self -> {'versionText'} = $versionText;
- $Getopt::Long::ignorecase = $ignoreCase;
-
- unless (defined($self -> {'default'}{'help'}))
- {
- $self -> {'default'}{'help'} =
- {
- type => ':i',
- default => '',
- linkage => sub {$self->helpOptions($_[1]); exit (0) if $helpThenExit;},
- verbose => "print help and exit"
- };
- }
-
- unless (defined($self -> {'default'}{'version'}))
- {
- $self -> {'default'}{'version'} =
- {
- type => '',
- default => '',
- linkage => sub {print $self->{'versionText'}; exit (0) if versionTheExit;},
- verbose => "print version and exit"
- };
- }
-
- for (keys(%{$self -> {'default'} }) )
- {
- my $type = ${$self -> {'default'} }{$_}{'type'};
- push(@{$self -> {'type'} }, "$_$type");
- $self->{'opt'}->{$_} = ${$self -> {'default'} }{$_}{'linkage'}
- if ${$self -> {'default'} }{$_}{'linkage'};
- }
-
- my($result) = &GetOptions($self -> {'opt'}, @{$self -> {'type'} });
-
- return $result unless $result;
-
- for (keys(%{$self -> {'default'} }) )
- {
- if (! defined(${$self -> {'opt'} }{$_})) #{
- {
- ${$self -> {'opt'} }{$_} = ${$self -> {'default'} }{$_}{'default'};
- }
- }
-
- $result;
-} # End of getOptions.
-
-# --------------------------------------------------------------------------
-
-sub helpOptions
-{
- my($self) = shift;
- my($noHelp) = shift;
- $noHelp = 0 unless $noHelp;
- my($optwidth, $typewidth, $defaultwidth, $maxlinewidth, $valind, $valwidth)
- = (10, 5, 9, 78, 4, 11);
-
- print "$self->{'helpText'}" if ($self -> {'helpText'});
-
- print ' Option', ' ' x ($optwidth - length('Option') -1 ),
- 'Type', ' ' x ($typewidth - length('Type') + 1),
- 'Default', ' ' x ($defaultwidth - length('Default') ),
- "Description\n";
-
- for (sort byOrder keys(%{$self -> {'default'} }) )
- {
- my($line, $help, $option, $val);
- $option = $_;
- next if ${$self->{'default'} }{$_}{'noHelp'} && ${$self->{'default'} }{$_}{'noHelp'} > $noHelp;
- $line = " -$_ " . ' ' x ($optwidth - (2 + length) ) .
- "${$self->{'default'} }{$_}{'type'} ".
- ' ' x ($typewidth - (1+length(${$self -> {'default'} }{$_}{'type'}) ));
-
- $val = ${$self->{'default'} }{$_}{'linkage'};
- if ($val)
- {
- if (ref($val) eq 'SCALAR')
- {
- $val = $$val;
- }
- else
- {
- $val = '';
- }
- }
- else
- {
- $val = ${$self->{'default'} }{$_}{'default'};
- }
- $line .= "$val ";
- $line .= ' ' x ($optwidth + $typewidth + $defaultwidth + 1 - length($line));
-
- if (defined(${$self -> {'default'} }{$_}{'verbose'}) &&
- ${$self -> {'default'} }{$_}{'verbose'} ne '')
- {
- $help = "${$self->{'default'} }{$_}{'verbose'}";
- }
- else
- {
- $help = ' ';
- }
- if ((length("$line") + length($help)) < $maxlinewidth)
- {
- print $line , $help, "\n";
- }
- else
- {
- print $line, "\n", ' ' x $valind, $help, "\n";
- }
- for $val (sort byOrder keys(%{${$self->{'default'}}{$option}{'values'}}))
- {
- print ' ' x ($valind + 2);
- print $val, ' ', ' ' x ($valwidth - length($val) - 2);
- print ${$self->{'default'}}{$option}{'values'}{$val}, "\n";
- }
- }
-
- print <<EOT;
-Note: 'Options' may be abbreviated. 'Type' specifications mean:
- <none>| ! no argument: variable is set to 1 on -foo (or, to 0 on -nofoo)
- =s | :s mandatory (or, optional) string argument
- =i | :i mandatory (or, optional) integer argument
-EOT
-} # End of helpOptions.
-
-#-------------------------------------------------------------------
-
-sub new
-{
- my($class) = @_;
- my($self) = {};
- $self -> {'default'} = {};
- $self -> {'helpText'} = '';
- $self -> {'opt'} = {};
- $opt = $self -> {'opt'}; # An alias for $self -> {'opt'}.
- $self -> {'type'} = ();
-
- return bless $self, $class;
-
-} # End of new.
-
-# --------------------------------------------------------------------------
-
-1;
-
-# End MySimple.pm
-
-require "$ENV{T2H_HOME}/MySimple.pm"
- if ($0 =~ /\.pl$/ &&
- -e "$ENV{T2H_HOME}/texi2html.init" && -r "$ENV{T2H_HOME}/texi2html.init");
-
-package main;
-
-#+++############################################################################
-# #
-# Constants #
-# #
-#---############################################################################
-
-$DEBUG_TOC = 1;
-$DEBUG_INDEX = 2;
-$DEBUG_BIB = 4;
-$DEBUG_GLOSS = 8;
-$DEBUG_DEF = 16;
-$DEBUG_HTML = 32;
-$DEBUG_USER = 64;
-$DEBUG_L2H = 128;
-
-
-$BIBRE = '\[[\w\/-]+\]'; # RE for a bibliography reference
-$FILERE = '[\/\w.+-]+'; # RE for a file name
-$VARRE = '[^\s\{\}]+'; # RE for a variable name
-$NODERE = '[^,:]+'; # RE for a node name
-$NODESRE = '[^:]+'; # RE for a list of node names
-
-$ERROR = "***"; # prefix for errors
-$WARN = "**"; # prefix for warnings
-
- # program home page
-$PROTECTTAG = "_ThisIsProtected_"; # tag to recognize protected sections
-
-$CHAPTEREND = "<!-- End chapter -->\n"; # to know where a chpater ends
-$SECTIONEND = "<!-- End section -->\n"; # to know where section ends
-$TOPEND = "<!-- End top -->\n"; # to know where top ends
-
-
-
-#
-# pre-defined indices
-#
-$index_properties =
-{
- 'c' => { name => 'cp'},
- 'f' => { name => 'fn', code => 1},
- 'v' => { name => 'vr', code => 1},
- 'k' => { name => 'ky', code => 1},
- 'p' => { name => 'pg', code => 1},
- 't' => { name => 'tp', code => 1}
-};
-
-
-%predefined_index = (
- 'cp', 'c',
- 'fn', 'f',
- 'vr', 'v',
- 'ky', 'k',
- 'pg', 'p',
- 'tp', 't',
- );
-
-#
-# valid indices
-#
-%valid_index = (
- 'c', 1,
- 'f', 1,
- 'v', 1,
- 'k', 1,
- 'p', 1,
- 't', 1,
- );
-
-#
-# texinfo section names to level
-#
-%sec2level = (
- 'top', 0,
- 'chapter', 1,
- 'unnumbered', 1,
- 'majorheading', 1,
- 'chapheading', 1,
- 'appendix', 1,
- 'section', 2,
- 'unnumberedsec', 2,
- 'heading', 2,
- 'appendixsec', 2,
- 'appendixsection', 2,
- 'subsection', 3,
- 'unnumberedsubsec', 3,
- 'subheading', 3,
- 'appendixsubsec', 3,
- 'subsubsection', 4,
- 'unnumberedsubsubsec', 4,
- 'subsubheading', 4,
- 'appendixsubsubsec', 4,
- );
-
-#
-# accent map, TeX command to ISO name
-#
-%accent_map = (
- '"', 'uml',
- '~', 'tilde',
- '^', 'circ',
- '`', 'grave',
- '\'', 'acute',
- );
-
-#
-# texinfo "simple things" (@foo) to HTML ones
-#
-%simple_map = (
- # cf. makeinfo.c
- "*", "<BR>", # HTML+
- " ", " ",
- "\t", " ",
- "-", "&#173;", # soft hyphen
- "\n", "\n",
- "|", "",
- 'tab', '<\/TD><TD>',
- # spacing commands
- ":", "",
- "!", "!",
- "?", "?",
- ".", ".",
- "-", "",
- );
-
-#
-# texinfo "things" (@foo{}) to HTML ones
-#
-%things_map = (
- 'TeX', 'TeX',
- 'br', '<P>', # paragraph break
- 'bullet', '*',
- 'copyright', '(C)',
- 'dots', '<small>...<\/small>',
- 'enddots', '<small>....<\/small>',
- 'equiv', '==',
- 'error', 'error-->',
- 'expansion', '==>',
- 'minus', '-',
- 'point', '-!-',
- 'print', '-|',
- 'result', '=>',
- 'today', $T2H_TODAY,
- 'aa', '&aring;',
- 'AA', '&Aring;',
- 'ae', '&aelig;',
- 'oe', '&#156;',
- 'AE', '&AElig;',
- 'OE', '&#140;',
- 'o', '&oslash;',
- 'O', '&Oslash;',
- 'ss', '&szlig;',
- 'l', '\/l',
- 'L', '\/L',
- 'exclamdown', '&iexcl;',
- 'questiondown', '&iquest;',
- 'pounds', '&pound;'
- );
-
-#
-# texinfo styles (@foo{bar}) to HTML ones
-#
-%style_map = (
- 'acronym', '&do_acronym',
- 'asis', '',
- 'b', 'B',
- 'cite', 'CITE',
- 'code', 'CODE',
- 'command', 'CODE',
- 'ctrl', '&do_ctrl', # special case
- 'dfn', 'EM', # DFN tag is illegal in the standard
- 'dmn', '', # useless
- 'email', '&do_email', # insert a clickable email address
- 'emph', 'EM',
- 'env', 'CODE',
- 'file', '"TT', # will put quotes, cf. &apply_style
- 'i', 'I',
- 'kbd', 'KBD',
- 'key', 'KBD',
- 'math', '&do_math',
- 'option', '"SAMP', # will put quotes, cf. &apply_style
- 'r', '', # unsupported
- 'samp', '"SAMP', # will put quotes, cf. &apply_style
- 'sc', '&do_sc', # special case
- 'strong', 'STRONG',
- 't', 'TT',
- 'titlefont', '', # useless
- 'uref', '&do_uref', # insert a clickable URL
- 'url', '&do_url', # insert a clickable URL
- 'var', 'VAR',
- 'w', '', # unsupported
- 'H', '&do_accent',
- 'dotaccent', '&do_accent',
- 'ringaccent','&do_accent',
- 'tieaccent', '&do_accent',
- 'u','&do_accent',
- 'ubaraccent','&do_accent',
- 'udotaccent','&do_accent',
- 'v', '&do_accent',
- ',', '&do_accent',
- 'dotless', '&do_accent'
- );
-
-#
-# texinfo format (@foo/@end foo) to HTML ones
-#
-%format_map = (
- 'quotation', 'BLOCKQUOTE',
- # lists
- 'itemize', 'UL',
- 'enumerate', 'OL',
- # poorly supported
- 'flushleft', 'PRE',
- 'flushright', 'PRE',
- );
-
-#
-# an eval of these $complex_format_map->{what}->[0] yields beginning
-# an eval of these $complex_format_map->{what}->[1] yieleds end
-$complex_format_map =
-{
- example =>
- [
- q{"<TABLE><tr>$T2H_EXAMPLE_INDENT_CELL<td class=example><pre>"},
- q{'</pre></td></tr></table>'}
- ],
- smallexample =>
- [
- q{"<TABLE><tr>$T2H_SMALL_EXAMPLE_INDENT_CELL<td class=smallexample><FONT SIZE=$T2H_SMALL_FONT_SIZE><pre>"},
- q{'</FONT></pre></td></tr></table>'}
- ],
- display =>
- [
- q{"<TABLE><tr>$T2H_EXAMPLE_INDENT_CELL<td class=display><pre " . 'style="font-family: serif">'},
- q{'</pre></td></tr></table>'}
- ],
- smalldisplay =>
- [
- q{"<TABLE><tr>$T2H_SMALL_EXAMPLE_INDENT_CELL<td class=smalldisplay><FONT SIZE=$T2H_SMALL_FONT_SIZE><pre " . 'style="font-family: serif">'},
- q{'</pre></FONT></td></tr></table>'}
- ]
-};
-
-$complex_format_map->{lisp} = $complex_format_map->{example};
-$complex_format_map->{smalllisp} = $complex_format_map->{smallexample};
-$complex_format_map->{format} = $complex_format_map->{display};
-$complex_format_map->{smallformat} = $complex_format_map->{smalldisplay};
-
-#
-# texinfo definition shortcuts to real ones
-#
-%def_map = (
- # basic commands
- 'deffn', 0,
- 'defvr', 0,
- 'deftypefn', 0,
- 'deftypevr', 0,
- 'defcv', 0,
- 'defop', 0,
- 'deftp', 0,
- # basic x commands
- 'deffnx', 0,
- 'defvrx', 0,
- 'deftypefnx', 0,
- 'deftypevrx', 0,
- 'defcvx', 0,
- 'defopx', 0,
- 'deftpx', 0,
- # shortcuts
- 'defun', 'deffn Function',
- 'defmac', 'deffn Macro',
- 'defspec', 'deffn {Special Form}',
- 'defvar', 'defvr Variable',
- 'defopt', 'defvr {User Option}',
- 'deftypefun', 'deftypefn Function',
- 'deftypevar', 'deftypevr Variable',
- 'defivar', 'defcv {Instance Variable}',
- 'deftypeivar', 'defcv {Instance Variable}', # NEW: FIXME
- 'defmethod', 'defop Method',
- 'deftypemethod', 'defop Method', # NEW:FIXME
- # x shortcuts
- 'defunx', 'deffnx Function',
- 'defmacx', 'deffnx Macro',
- 'defspecx', 'deffnx {Special Form}',
- 'defvarx', 'defvrx Variable',
- 'defoptx', 'defvrx {User Option}',
- 'deftypefunx', 'deftypefnx Function',
- 'deftypevarx', 'deftypevrx Variable',
- 'defivarx', 'defcvx {Instance Variable}',
- 'defmethodx', 'defopx Method',
- );
-
-#
-# things to skip
-#
-%to_skip = (
- # comments
- 'c', 1,
- 'comment', 1,
- 'ifnotinfo', 1,
- 'ifnottex', 1,
- 'ifhtml', 1,
- 'end ifhtml', 1,
- 'end ifnotinfo', 1,
- 'end ifnottex', 1,
- # useless
- 'detailmenu', 1,
- 'direntry', 1,
- 'contents', 1,
- 'shortcontents', 1,
- 'summarycontents', 1,
- 'footnotestyle', 1,
- 'end ifclear', 1,
- 'end ifset', 1,
- 'titlepage', 1,
- 'end titlepage', 1,
- # unsupported commands (formatting)
- 'afourpaper', 1,
- 'cropmarks', 1,
- 'finalout', 1,
- 'headings', 1,
- 'sp', 1,
- 'need', 1,
- 'page', 1,
- 'setchapternewpage', 1,
- 'everyheading', 1,
- 'everyfooting', 1,
- 'evenheading', 1,
- 'evenfooting', 1,
- 'oddheading', 1,
- 'oddfooting', 1,
- 'smallbook', 1,
- 'vskip', 1,
- 'filbreak', 1,
- 'paragraphindent', 1,
- # unsupported formats
- 'cartouche', 1,
- 'end cartouche', 1,
- 'group', 1,
- 'end group', 1,
- );
-
-#+++############################################################################
-# #
-# Argument parsing, initialisation #
-# #
-#---############################################################################
-
-#
-# flush stdout and stderr after every write
-#
-select(STDERR);
-$| = 1;
-select(STDOUT);
-$| = 1;
-
-
-%value = (); # hold texinfo variables, see also -D
-$use_bibliography = 1;
-$use_acc = 1;
-
-#
-# called on -init-file
-sub LoadInitFile
-{
- my $init_file = shift;
- # second argument is value of options
- $init_file = shift;
- if (-f $init_file)
- {
- print "# reading initialization file from $init_file\n"
- if ($T2H_VERBOSE);
- require($init_file);
- }
- else
- {
- print "$ERROR Error: can't read init file $int_file\n";
- $init_file = '';
- }
-}
-
-#
-# called on -lang
-sub SetDocumentLanguage
-{
- my $lang = shift;
- if (! exists($T2H_WORDS->{$lang}))
- {
- warn "$ERROR: Language specs for '$lang' do not exists. Reverting to '" .
- ($T2H_LANG ? T2H_LANG : "en") . "'\n";
- }
- else
- {
- print "# using '$lang' as document language\n" if ($T2H_VERBOSE);
- $T2H_LANG = $lang;
- }
-}
-
-##
-## obsolete cmd line options
-##
-$T2H_OBSOLETE_OPTIONS -> {'no-section_navigation'} =
-{
- type => '!',
- linkage => sub {$main::T2H_SECTION_NAVIGATION = 0;},
- verbose => 'obsolete, use -nosec_nav',
- noHelp => 2,
-};
-$T2H_OBSOLETE_OPTIONS -> {use_acc} =
-{
- type => '!',
- linkage => \$use_acc,
- verbose => 'obsolete',
- noHelp => 2
-};
-$T2H_OBSOLETE_OPTIONS -> {expandinfo} =
-{
- type => '!',
- linkage => sub {$main::T2H_EXPAND = 'info';},
- verbose => 'obsolete, use "-expand info" instead',
- noHelp => 2,
-};
-$T2H_OBSOLETE_OPTIONS -> {expandtex} =
-{
- type => '!',
- linkage => sub {$main::T2H_EXPAND = 'tex';},
- verbose => 'obsolete, use "-expand tex" instead',
- noHelp => 2,
-};
-$T2H_OBSOLETE_OPTIONS -> {monolithic} =
-{
- type => '!',
- linkage => sub {$main::T2H_SPLIT = '';},
- verbose => 'obsolete, use "-split no" instead',
- noHelp => 2
-};
-$T2H_OBSOLETE_OPTIONS -> {split_node} =
-{
- type => '!',
- linkage => sub{$main::T2H_SPLIT = 'section';},
- verbose => 'obsolete, use "-split section" instead',
- noHelp => 2,
-};
-$T2H_OBSOLETE_OPTIONS -> {split_chapter} =
-{
- type => '!',
- linkage => sub{$main::T2H_SPLIT = 'chapter';},
- verbose => 'obsolete, use "-split chapter" instead',
- noHelp => 2,
-};
-$T2H_OBSOLETE_OPTIONS -> {no_verbose} =
-{
- type => '!',
- linkage => sub {$main::T2H_VERBOSE = 0;},
- verbose => 'obsolete, use -noverbose instead',
- noHelp => 2,
-};
-$T2H_OBSOLETE_OPTIONS -> {output_file} =
-{
- type => '=s',
- linkage => sub {$main::T2H_OUT = @_[1]; $T2H_SPLIT = '';},
- verbose => 'obsolete, use -out_file instead',
- noHelp => 2
-};
-
-$T2H_OBSOLETE_OPTIONS -> {section_navigation} =
-{
- type => '!',
- linkage => \$T2H_SECTION_NAVIGATION,
- verbose => 'obsolete, use -sec_nav instead',
- noHelp => 2,
-};
-
-$T2H_OBSOLETE_OPTIONS -> {verbose} =
-{
- type => '!',
- linkage => \$T2H_VERBOSE,
- verbose => 'obsolete, use -Verbose instead',
- noHelp => 2
-};
-
-# read initialzation from $sysconfdir/texi2htmlrc or $HOME/.texi2htmlrc
-my $home = $ENV{HOME};
-defined($home) or $home = '';
-foreach $i ('/usr/local/etc/texi2htmlrc', "$home/.texi2htmlrc") {
- if (-f $i) {
- print "# reading initialization file from $i\n"
- if ($T2H_VERBOSE);
- require($i);
- }
-}
-
-
-#+++############################################################################
-# #
-# parse command-line options
-# #
-#---############################################################################
-$T2H_USAGE_TEXT = <<EOT;
-Usage: texi2html [OPTIONS] TEXINFO-FILE
-Translates Texinfo source documentation to HTML.
-EOT
-$T2H_FAILURE_TEXT = <<EOT;
-Try 'texi2html -help' for usage instructions.
-EOT
-$options = new Getopt::MySimple;
-
-# some older version of GetOpt::Long don't have
-# Getopt::Long::Configure("pass_through")
-eval {Getopt::Long::Configure("pass_through");};
-$Configure_failed = $@ && <<EOT;
-**WARNING: Parsing of obsolete command-line options could have failed.
- Consider to use only documented command-line options (run
- 'texi2html -help 2' for a complete list) or upgrade to perl
- version 5.005 or higher.
-EOT
-
-if (! $options->getOptions($T2H_OPTIONS, $T2H_USAGE_TEXT, "$THISVERSION\n"))
-{
- print $Configure_failed if $Configure_failed;
- die $T2H_FAILURE_TEXT;
-}
-
-if (@ARGV > 1)
-{
- eval {Getopt::Long::Configure("no_pass_through");};
- if (! $options->getOptions($T2H_OBSOLETE_OPTIONS, $T2H_USAGE_TEXT, "$THISVERSION\n"))
- {
- print $Configure_failed if $Configure_failed;
- die $T2H_FAILURE_TEXT;
- }
-}
-
-if ($T2H_CHECK) {
- die "Need file to check\n$T2H_FAILURE_TEXT" unless @ARGV > 0;
- &check;
- exit;
-}
-
-#+++############################################################################
-# #
-# evaluation of cmd line options
-# #
-#---############################################################################
-
-if ($T2H_EXPAND eq 'info')
-{
- $to_skip{'ifinfo'} = 1;
- $to_skip{'end ifinfo'} = 1;
-}
-elsif ($T2H_EXPAND eq 'tex')
-{
- $to_skip{'iftex'} = 1;
- $to_skip{'end iftex'} = 1;
-
-}
-
-$T2H_INVISIBLE_MARK = '<IMG SRC="invisible.xbm">' if $T2H_INVISIBLE_MARK eq 'xbm';
-
-#
-# file name buisness
-#
-die "Need exactly one file to translate\n$T2H_FAILURE_TEXT" unless @ARGV == 1;
-$docu = shift(@ARGV);
-if ($docu =~ /.*\//) {
- chop($docu_dir = $&);
- $docu_name = $';
-} else {
- $docu_dir = '.';
- $docu_name = $docu;
-}
-unshift(@T2H_INCLUDE_DIRS, $docu_dir);
-$docu_name =~ s/\.te?x(i|info)?$//; # basename of the document
-$docu_name = $T2H_PREFIX if ($T2H_PREFIX);
-
-# subdir
-if ($T2H_SUBDIR && ! $T2H_OUT)
-{
- $T2H_SUBDIR =~ s|/*$||;
- unless (-d "$T2H_SUBDIR" && -w "$T2H_SUBDIR")
- {
- if ( mkdir($T2H_SUBDIR, oct(755)))
- {
- print "# created directory $T2H_SUBDIR\n" if ($T2H_VERBOSE);
- }
- else
- {
- warn "$ERROR can't create directory $T2H_SUBDIR. Put results into current directory\n";
- $T2H_SUBDIR = '';
- }
- }
-}
-
-if ($T2H_SUBDIR && ! $T2H_OUT)
-{
- $docu_rdir = "$T2H_SUBDIR/";
- print "# putting result files into directory $docu_rdir\n" if ($T2H_VERBOSE);
-}
-else
-{
- if ($T2H_OUT && $T2H_OUT =~ m|(.*)/|)
- {
- $docu_rdir = "$1/";
- print "# putting result files into directory $docu_rdir\n" if ($T2H_VERBOSE);
- }
- else
- {
- print "# putting result files into current directory \n" if ($T2H_VERBOSE);
- $docu_rdir = '';
- }
-}
-
-# extension
-if ($T2H_SHORTEXTN)
-{
- $docu_ext = "htm";
-}
-else
-{
- $docu_ext = "html";
-}
-if ($T2H_TOP_FILE =~ /\..*$/)
-{
- $T2H_TOP_FILE = $`.".$docu_ext";
-}
-
-# result files
-if (! $T2H_OUT && ($T2H_SPLIT =~ /section/i || $T2H_SPLIT =~ /node/i))
-{
- $T2H_SPLIT = 'section';
-}
-elsif (! $T2H_OUT && $T2H_SPLIT =~ /chapter/i)
-{
- $T2H_SPLIT = 'chapter'
-}
-else
-{
- undef $T2H_SPLIT;
-}
-
-$docu_doc = "$docu_name.$docu_ext"; # document's contents
-$docu_doc_file = "$docu_rdir$docu_doc";
-if ($T2H_SPLIT)
-{
- $docu_toc = $T2H_TOC_FILE || "${docu_name}_toc.$docu_ext"; # document's table of contents
- $docu_stoc = "${docu_name}_ovr.$docu_ext"; # document's short toc
- $docu_foot = "${docu_name}_fot.$docu_ext"; # document's footnotes
- $docu_about = "${docu_name}_abt.$docu_ext"; # about this document
- $docu_top = $T2H_TOP_FILE || $docu_doc;
-}
-else
-{
- if ($T2H_OUT)
- {
- $docu_doc = $T2H_OUT;
- $docu_doc =~ s|.*/||;
- }
- $docu_toc = $docu_foot = $docu_stoc = $docu_about = $docu_top = $docu_doc;
-}
-
-$docu_toc_file = "$docu_rdir$docu_toc";
-$docu_stoc_file = "$docu_rdir$docu_stoc";
-$docu_foot_file = "$docu_rdir$docu_foot";
-$docu_about_file = "$docu_rdir$docu_about";
-$docu_top_file = "$docu_rdir$docu_top";
-
-$docu_frame_file = "$docu_rdir${docu_name}_frame.$docu_ext";
-$docu_toc_frame_file = "$docu_rdir${docu_name}_toc_frame.$docu_ext";
-
-#
-# variables
-#
-$value{'html'} = 1; # predefine html (the output format)
-$value{'texi2html'} = $THISVERSION; # predefine texi2html (the translator)
-# _foo: internal to track @foo
-foreach ('_author', '_title', '_subtitle',
- '_settitle', '_setfilename', '_shorttitle') {
- $value{$_} = ''; # prevent -w warnings
-}
-%node2sec = (); # node to section name
-%sec2node = (); # section to node name
-%sec2number = (); # section to number
-%number2sec = (); # number to section
-%idx2node = (); # index keys to node
-%node2href = (); # node to HREF
-%node2next = (); # node to next
-%node2prev = (); # node to prev
-%node2up = (); # node to up
-%bib2href = (); # bibliography reference to HREF
-%gloss2href = (); # glossary term to HREF
-@sections = (); # list of sections
-%tag2pro = (); # protected sections
-
-#
-# initial indexes
-#
-$bib_num = 0;
-$foot_num = 0;
-$gloss_num = 0;
-$idx_num = 0;
-$sec_num = 0;
-$doc_num = 0;
-$html_num = 0;
-
-#
-# can I use ISO8879 characters? (HTML+)
-#
-if ($T2H_USE_ISO) {
- $things_map{'bullet'} = "&bull;";
- $things_map{'copyright'} = "&copy;";
- $things_map{'dots'} = "&hellip;";
- $things_map{'equiv'} = "&equiv;";
- $things_map{'expansion'} = "&rarr;";
- $things_map{'point'} = "&lowast;";
- $things_map{'result'} = "&rArr;";
-}
-
-#
-# read texi2html extensions (if any)
-#
-$extensions = 'texi2html.ext'; # extensions in working directory
-if (-f $extensions) {
- print "# reading extensions from $extensions\n" if $T2H_VERBOSE;
- require($extensions);
-}
-($progdir = $0) =~ s/[^\/]+$//;
-if ($progdir && ($progdir ne './')) {
- $extensions = "${progdir}texi2html.ext"; # extensions in texi2html directory
- if (-f $extensions) {
- print "# reading extensions from $extensions\n" if $T2H_VERBOSE;
- require($extensions);
- }
-}
-
-
-print "# reading from $docu\n" if $T2H_VERBOSE;
-
-#########################################################################
-#
-# latex2html stuff
-#
-# latex2html conversions consist of three stages:
-# 1) ToLatex: Put "latex" code into a latex file
-# 2) ToHtml: Use latex2html to generate corresponding html code and images
-# 3) FromHtml: Extract generated code and images from latex2html run
-#
-
-##########################
-# default settings
-#
-
-# defaults for files and names
-
-sub l2h_Init
-{
- local($root) = @_;
-
- return 0 unless ($root);
-
- $l2h_name = "${root}_l2h";
-
- $l2h_latex_file = "$docu_rdir${l2h_name}.tex";
- $l2h_cache_file = "${docu_rdir}l2h_cache.pm";
- $T2H_L2H_L2H = "latex2html" unless ($T2H_L2H_L2H);
-
- # destination dir -- generated images are put there, should be the same
- # as dir of enclosing html document --
- $l2h_html_file = "$docu_rdir${l2h_name}.html";
- $l2h_prefix = "${l2h_name}_";
- return 1;
-}
-
-
-##########################
-#
-# First stage: Generation of Latex file
-# Initialize with: l2h_InitToLatex
-# Add content with: l2h_ToLatex($text) --> HTML placeholder comment
-# Finish with: l2h_FinishToLatex
-#
-
-$l2h_latex_preample = <<EOT;
-% This document was automatically generated by the l2h extenstion of texi2html
-% DO NOT EDIT !!!
-\\documentclass{article}
-\\usepackage{html}
-\\begin{document}
-EOT
-
-$l2h_latex_closing = <<EOT;
-\\end{document}
-EOT
-
-# return used latex 1, if l2h could be initalized properly, 0 otherwise
-sub l2h_InitToLatex
-{
- %l2h_to_latex = ();
- unless ($T2H_L2H_SKIP)
- {
- unless (open(L2H_LATEX, ">$l2h_latex_file"))
- {
- warn "$ERROR Error l2h: Can't open latex file '$latex_file' for writing\n";
- return 0;
- }
- print "# l2h: use ${l2h_latex_file} as latex file\n" if ($T2H_VERBOSE);
- print L2H_LATEX $l2h_latex_preample;
- }
- # open database for caching
- l2h_InitCache();
- $l2h_latex_count = 0;
- $l2h_to_latex_count = 0;
- $l2h_cached_count = 0;
- return 1;
-}
-
-# print text (1st arg) into latex file (if not already there), return
-# HTML commentary which can be later on replaced by the latex2html
-# generated text
-sub l2h_ToLatex
-{
- my($text) = @_;
- my($count);
-
- $l2h_to_latex_count++;
- $text =~ s/(\s*)$//;
-
- # try whether we can cache it
- my $cached_text = l2h_FromCache($text);
- if ($cached_text)
- {
- $l2h_cached_count++;
- return $cached_text;
- }
-
- # try whether we have text already on things to do
- unless ($count = $l2h_to_latex{$text})
- {
- $count = $l2h_latex_count;
- $l2h_latex_count++;
- $l2h_to_latex{$text} = $count;
- $l2h_to_latex[$count] = $text;
- unless ($T2H_L2H_SKIP)
- {
- print L2H_LATEX "\\begin{rawhtml}\n";
- print L2H_LATEX "<!-- l2h_begin ${l2h_name} ${count} -->\n";
- print L2H_LATEX "\\end{rawhtml}\n";
-
- print L2H_LATEX "$text\n";
-
- print L2H_LATEX "\\begin{rawhtml}\n";
- print L2H_LATEX "<!-- l2h_end ${l2h_name} ${count} -->\n";
- print L2H_LATEX "\\end{rawhtml}\n";
- }
- }
- return "<!-- l2h_replace ${l2h_name} ${count} -->";
-}
-
-# print closing into latex file and close it
-sub l2h_FinishToLatex
-{
- local ($reused);
-
- $reused = $l2h_to_latex_count - $l2h_latex_count - $l2h_cached_count;
- unless ($T2H_L2H_SKIP)
- {
- print L2H_LATEX $l2h_latex_closing;
- close(L2H_LATEX);
- }
- print "# l2h: finished to latex ($l2h_cached_count cached, $reused reused, $l2h_latex_count contents)\n" if ($T2H_VERBOSE);
- unless ($l2h_latex_count)
- {
- l2h_Finish();
- return 0;
- }
- return 1;
-}
-
-###################################
-# Second stage: Use latex2html to generate corresponding html code and images
-#
-# l2h_ToHtml([$l2h_latex_file, [$l2h_html_dir]]):
-# Call latex2html on $l2h_latex_file
-# Put images (prefixed with $l2h_name."_") and html file(s) in $l2h_html_dir
-# Return 1, on success
-# 0, otherwise
-#
-sub l2h_ToHtml
-{
- local($call, $ext, $root, $dotbug);
-
- if ($T2H_L2H_SKIP)
- {
- print "# l2h: skipping latex2html run\n" if ($T2H_VERBOSE);
- return 1;
- }
-
- # Check for dot in directory where dvips will work
- if ($T2H_L2H_TMP)
- {
- if ($T2H_L2H_TMP =~ /\./)
- {
- warn "$ERROR Warning l2h: l2h_tmp dir contains a dot. Use /tmp, instead\n";
- $dotbug = 1;
- }
- }
- else
- {
- if (&getcwd =~ /\./)
- {
- warn "$ERROR Warning l2h: current dir contains a dot. Use /tmp as l2h_tmp dir \n";
- $dotbug = 1;
- }
- }
- # fix it, if necessary and hope that it works
- $T2H_L2H_TMP = "/tmp" if ($dotbug);
-
- $call = $T2H_L2H_L2H;
- # use init file, if specified
- $call = $call . " -init_file " . $init_file if ($init_file && -f $init_file);
- # set output dir
- $call .= ($docu_rdir ? " -dir $docu_rdir" : " -no_subdir");
- # use l2h_tmp, if specified
- $call = $call . " -tmp $T2H_L2H_TMP" if ($T2H_L2H_TMP);
- # options we want to be sure of
- $call = $call ." -address 0 -info 0 -split 0 -no_navigation -no_auto_link";
- $call = $call ." -prefix ${l2h_prefix} $l2h_latex_file";
-
- print "# l2h: executing '$call'\n" if ($T2H_VERBOSE);
- if (system($call))
- {
- warn "l2h ***Error: '${call}' did not succeed\n";
- return 0;
- }
- else
- {
- print "# l2h: latex2html finished successfully\n" if ($T2H_VERBOSE);
- return 1;
- }
-}
-
-# this is directly pasted over from latex2html
-sub getcwd {
- local($_) = `pwd`;
-
- die "'pwd' failed (out of memory?)\n"
- unless length;
- chop;
- $_;
-}
-
-
-##########################
-# Third stage: Extract generated contents from latex2html run
-# Initialize with: l2h_InitFromHtml
-# open $l2h_html_file for reading
-# reads in contents into array indexed by numbers
-# return 1, on success -- 0, otherwise
-# Extract Html code with: l2h_FromHtml($text)
-# replaces in $text all previosuly inserted comments by generated html code
-# returns (possibly changed) $text
-# Finish with: l2h_FinishFromHtml
-# closes $l2h_html_dir/$l2h_name.".$docu_ext"
-
-sub l2h_InitFromHtml
-{
- local($h_line, $h_content, $count, %l2h_img);
-
- if (! open(L2H_HTML, "<${l2h_html_file}"))
- {
- print "$ERROR Error l2h: Can't open ${l2h_html_file} for reading\n";
- return 0;
- }
- print "# l2h: use ${l2h_html_file} as html file\n" if ($T2H_VERBOSE);
-
- $l2h_html_count = 0;
-
- while ($h_line = <L2H_HTML>)
- {
- if ($h_line =~ /^<!-- l2h_begin $l2h_name ([0-9]+) -->/)
- {
- $count = $1;
- $h_content = "";
- while ($h_line = <L2H_HTML>)
- {
- if ($h_line =~ /^<!-- l2h_end $l2h_name $count -->/)
- {
- chomp $h_content;
- chomp $h_content;
- $l2h_html_count++;
- $h_content = l2h_ToCache($count, $h_content);
- $l2h_from_html[$count] = $h_content;
- $h_content = '';
- last;
- }
- $h_content = $h_content.$h_line;
- }
- if ($hcontent)
- {
- print "$ERROR Warning l2h: l2h_end $l2h_name $count not found\n"
- if ($T2H_VERBOSE);
- close(L2H_HTML);
- return 0;
- }
- }
- }
- print "# l2h: Got $l2h_html_count of $l2h_latex_count html contents\n"
- if ($T2H_VERBOSE);
-
- close(L2H_HTML);
- return 1;
-}
-
-sub l2h_FromHtml
-{
- local($text) = @_;
- local($done, $to_do, $count);
-
- $to_do = $text;
-
- while ($to_do =~ /([^\000]*)<!-- l2h_replace $l2h_name ([0-9]+) -->([^\000]*)/)
- {
- $to_do = $1;
- $count = $2;
- $done = $3.$done;
-
- $done = "<!-- l2h_end $l2h_name $count -->".$done
- if ($T2H_DEBUG & $DEBUG_L2H);
-
- $done = &l2h_ExtractFromHtml($count) . $done;
-
- $done = "<!-- l2h_begin $l2h_name $count -->".$done
- if ($T2H_DEBUG & $DEBUG_L2H);
- }
- return $to_do.$done;
-}
-
-
-sub l2h_ExtractFromHtml
-{
- local($count) = @_;
-
- return $l2h_from_html[$count] if ($l2h_from_html[$count]);
-
- if ($count >= 0 && $count < $l2h_latex_count)
- {
- # now we are in trouble
- local($l_l2h, $_);
-
- $l2h_extract_error++;
- print "$ERROR l2h: can't extract content $count from html\n"
- if ($T2H_VERBOSE);
- # try simple (ordinary) substition (without l2h)
- $l_l2h = $T2H_L2H;
- $T2H_L2H = 0;
- $_ = $l2h_to_latex{$count};
- $_ = &substitute_style($_);
- &unprotect_texi;
- $_ = "<!-- l2h: ". __LINE__ . " use texi2html -->" . $_
- if ($T2H_DEBUG & $DEBUG_L2H);
- $T2H_L2H = $l_l2h;
- return $_;
- }
- else
- {
- # now we have been incorrectly called
- $l2h_range_error++;
- print "$ERROR l2h: Request of $count content which is out of valide range [0,$l2h_latex_count)\n";
- return "<!-- l2h: ". __LINE__ . " out of range count $count -->"
- if ($T2H_DEBUG & $DEBUG_L2H);
- return "<!-- l2h: out of range count $count -->";
- }
-}
-
-sub l2h_FinishFromHtml
-{
- if ($T2H_VERBOSE)
- {
- if ($l2h_extract_error + $l2h_range_error)
- {
- print "# l2h: finished from html ($l2h_extract_error extract and $l2h_range_error errors)\n";
- }
- else
- {
- print "# l2h: finished from html (no errors)\n";
- }
- }
-}
-
-sub l2h_Finish
-{
- l2h_StoreCache();
- if ($T2H_L2H_CLEAN)
- {
- print "# l2h: removing temporary files generated by l2h extension\n"
- if $T2H_VERBOSE;
- while (<"$docu_rdir$l2h_name"*>)
- {
- unlink $_;
- }
- }
- print "# l2h: Finished\n" if $T2H_VERBOSE;
- return 1;
-}
-
-##############################
-# stuff for l2h caching
-#
-
-# I tried doing this with a dbm data base, but it did not store all
-# keys/values. Hence, I did as latex2html does it
-sub l2h_InitCache
-{
- if (-r "$l2h_cache_file")
- {
- my $rdo = do "$l2h_cache_file";
- warn("$ERROR l2h Error: could not load $docu_rdir$l2h_cache_file: $@\n")
- unless ($rdo);
- }
-}
-
-sub l2h_StoreCache
-{
- return unless $l2h_latex_count;
-
- my ($key, $value);
- open(FH, ">$l2h_cache_file") || return warn"$ERROR l2h Error: could not open $docu_rdir$l2h_cache_file for writing: $!\n";
-
-
- while (($key, $value) = each %l2h_cache)
- {
- # escape stuff
- $key =~ s|/|\\/|g;
- $key =~ s|\\\\/|\\/|g;
- # weird, a \ at the end of the key results in an error
- # maybe this also broke the dbm database stuff
- $key =~ s|\\$|\\\\|;
- $value =~ s/\|/\\\|/g;
- $value =~ s/\\\\\|/\\\|/g;
- $value =~ s|\\\\|\\\\\\\\|g;
- print FH "\n\$l2h_cache_key = q/$key/;\n";
- print FH "\$l2h_cache{\$l2h_cache_key} = q|$value|;\n";
- }
- print FH "1;";
- close(FH);
-}
-
-# return cached html, if it exists for text, and if all pictures
-# are there, as well
-sub l2h_FromCache
-{
- my $text = shift;
- my $cached = $l2h_cache{$text};
- if ($cached)
- {
- while ($cached =~ m/SRC="(.*?)"/g)
- {
- unless (-e "$docu_rdir$1")
- {
- return undef;
- }
- }
- return $cached;
- }
- return undef;
-}
-
-# insert generated html into cache, move away images,
-# return transformed html
-$maximage = 1;
-sub l2h_ToCache
-{
- my $count = shift;
- my $content = shift;
- my @images = ($content =~ /SRC="(.*?)"/g);
- my ($src, $dest);
-
- for $src (@images)
- {
- $dest = $l2h_img{$src};
- unless ($dest)
- {
- my $ext;
- if ($src =~ /.*\.(.*)$/ && $1 ne $docu_ext)
- {
- $ext = $1;
- }
- else
- {
- warn "$ERROR: L2h image $src has invalid extension\n";
- next;
- }
- while (-e "$docu_rdir${docu_name}_$maximage.$ext") { $maximage++;}
- $dest = "${docu_name}_$maximage.$ext";
- system("cp -f $docu_rdir$src $docu_rdir$dest");
- $l2h_img{$src} = $dest;
- unlink "$docu_rdir$src" unless ($DEBUG & DEBUG_L2H);
- }
- $content =~ s/$src/$dest/g;
- }
- $l2h_cache{$l2h_to_latex[$count]} = $content;
- return $content;
-}
-
-
-#+++############################################################################
-# #
-# Pass 1: read source, handle command, variable, simple substitution #
-# #
-#---############################################################################
-
-@lines = (); # whole document
-@toc_lines = (); # table of contents
-@stoc_lines = (); # table of contents
-$curlevel = 0; # current level in TOC
-$node = ''; # current node name
-$node_next = ''; # current node next name
-$node_prev = ''; # current node prev name
-$node_up = ''; # current node up name
-$in_table = 0; # am I inside a table
-$table_type = ''; # type of table ('', 'f', 'v', 'multi')
-@tables = (); # nested table support
-$in_bibliography = 0; # am I inside a bibliography
-$in_glossary = 0; # am I inside a glossary
-$in_top = 0; # am I inside the top node
-$has_top = 0; # did I see a top node?
-$has_top_command = 0; # did I see @top for automatic pointers?
-$in_pre = 0; # am I inside a preformatted section
-$in_list = 0; # am I inside a list
-$in_html = 0; # am I inside an HTML section
-$first_line = 1; # is it the first line
-$dont_html = 0; # don't protect HTML on this line
-$deferred_ref = ''; # deferred reference for indexes
-@html_stack = (); # HTML elements stack
-$html_element = ''; # current HTML element
-&html_reset;
-%macros = (); # macros
-
-# init l2h
-$T2H_L2H = &l2h_Init($docu_name) if ($T2H_L2H);
-$T2H_L2H = &l2h_InitToLatex if ($T2H_L2H);
-
-# build code for simple substitutions
-# the maps used (%simple_map and %things_map) MUST be aware of this
-# watch out for regexps, / and escaped characters!
-$subst_code = '';
-foreach (keys(%simple_map)) {
- ($re = $_) =~ s/(\W)/\\$1/g; # protect regexp chars
- $subst_code .= "s/\\\@$re/$simple_map{$_}/g;\n";
-}
-foreach (keys(%things_map)) {
- $subst_code .= "s/\\\@$_\\{\\}/$things_map{$_}/g;\n";
-}
-if ($use_acc) {
- # accentuated characters
- foreach (keys(%accent_map)) {
- if ($_ eq "`") {
- $subst_code .= "s/$;3";
- } elsif ($_ eq "'") {
- $subst_code .= "s/$;4";
- } else {
- $subst_code .= "s/\\\@\\$_";
- }
- $subst_code .= "([a-z])/&\${1}$accent_map{$_};/gi;\n";
- }
-}
-eval("sub simple_substitutions { $subst_code }");
-
-&init_input;
-INPUT_LINE: while ($_ = &next_line) {
- #
- # remove \input on the first lines only
- #
- if ($first_line) {
- next if /^\\input/;
- $first_line = 0;
- }
- # non-@ substitutions cf. texinfmt.el
- #
- # parse texinfo tags
- #
- $tag = '';
- $end_tag = '';
- if (/^\s*\@end\s+(\w+)\b/) {
- $end_tag = $1;
- } elsif (/^\s*\@(\w+)\b/) {
- $tag = $1;
- }
- #
- # handle @html / @end html
- #
- if ($in_html) {
- if ($end_tag eq 'html') {
- $in_html = 0;
- } else {
- $tag2pro{$in_html} .= $_;
- }
- next;
- } elsif ($tag eq 'html') {
- $in_html = $PROTECTTAG . ++$html_num;
- push(@lines, $in_html);
- next;
- }
-
- #
- # try to remove inlined comments
- # syntax from tex-mode.el comment-start-skip
- #
- s/((^|[^\@])(\@\@)*)\@c(omment | |\{|$).*/$1/;
-
-# Sometimes I use @c right at the end of a line ( to suppress the line feed )
-# s/((^|[^\@])(\@\@)*)\@c(omment)?$/$1/;
-# s/((^|[^\@])(\@\@)*)\@c(omment)? .*/$1/;
-# s/(.*)\@c{.*?}(.*)/$1$2/;
-# s/(.*)\@comment{.*?}(.*)/$1$2/;
-# s/^(.*)\@c /$1/;
-# s/^(.*)\@comment /$1/;
-
- #############################################################
- # value substitution before macro expansion, so that
- # it works in macro arguments
- s/\@value{($VARRE)}/$value{$1}/eg;
-
- #############################################################
- # macro substitution
- while (/\@(\w+)/g)
- {
- if (exists($macros->{$1}))
- {
- my $before = $`;
- my $name = $1;
- my $after = $';
- my @args;
- my $args;
- if ($after =~ /^\s*{(.*?[^\\])}(.*)/)
- {
- $args = $1;
- $after = $2;
- }
- elsif (@{$macros->{$name}->{Args}} == 1)
- {
- $args = $after;
- $args =~ s/^\s*//;
- $args =~ s/\s*$//;
- $after = '';
- }
- $args =~ s|\\\\|\\|g;
- $args =~ s|\\{|{|g;
- $args =~ s|\\}|}|g;
- if (@{$macros->{$name}->{Args}} > 1)
- {
- $args =~ s/(^|[^\\]),/$1$;/g ;
- $args =~ s|\\,|,|g;
- @args = split(/$;\s*/, $args) if (@{$macros->{$name}->{Args}} > 1);
- }
- else
- {
- $args =~ s|\\,|,|g;
- @args = ($args);
- }
- my $macrobody = $macros->{$name}->{Body};
- for ($i=0; $i<=$#args; $i++)
- {
- $macrobody =~ s|\\$macros->{$name}->{Args}->[$i]\\|$args[$i]|g;
- }
- $macrobody =~ s|\\\\|\\|g;
- $_ = $before . $macrobody . $after;
- unshift @input_spool, map {$_ = $_."\n"} split(/\n/, $_);
- next INPUT_LINE;
- }
- } #
-
-
- #
- # try to skip the line
- #
- if ($end_tag) {
- $in_titlepage = 0 if $end_tag eq 'titlepage';
- next if $to_skip{"end $end_tag"};
- } elsif ($tag) {
- $in_titlepage = 1 if $tag eq 'titlepage';
- next if $to_skip{$tag};
- last if $tag eq 'bye';
- }
- if ($in_top) {
- # parsing the top node
- if ($tag eq 'node' ||
- ($sec2level{$tag} && $tag !~ /unnumbered/ && $tag !~ /heading/))
- {
- # no more in top
- $in_top = 0;
- push(@lines, $TOPEND);
- }
- }
- unless ($in_pre) {
- s/``/\"/g;
- s/''/\"/g;
- s/([\w ])---([\w ])/$1--$2/g;
- }
- #
- # analyze the tag
- #
- if ($tag) {
- # skip lines
- &skip_until($tag), next if $tag eq 'ignore';
- &skip_until($tag), next if $tag eq 'ifnothtml';
- if ($tag eq 'ifinfo')
- {
- &skip_until($tag), next unless $T2H_EXPAND eq 'info';
- }
- if ($tag eq 'iftex')
- {
- &skip_until($tag), next unless $T2H_EXPAND eq 'tex';
- }
- if ($tag eq 'tex')
- {
- # add to latex2html file
- if ($T2H_EXPAND eq 'tex' && $T2H_L2H && ! $in_pre)
- {
- # add space to the end -- tex(i2dvi) does this, as well
- push(@lines, &l2h_ToLatex(&string_until($tag) . " "));
- }
- else
- {
- &skip_until($tag);
- }
- next;
- }
- if ($tag eq 'titlepage')
- {
- next;
- }
- # handle special tables
- if ($tag =~ /^(|f|v|multi)table$/) {
- $table_type = $1;
- $tag = 'table';
- }
- # special cases
- if ($tag eq 'top' || ($tag eq 'node' && /^\@node\s+top\s*,/i)) {
- $in_top = 1;
- $has_top = 1;
- $has_top_command = 1 if $tag eq 'top';
- @lines = (); # ignore all lines before top (title page garbage)
- next;
- } elsif ($tag eq 'node') {
- if ($in_top)
- {
- $in_top = 0;
- push(@lines, $TOPEND);
- }
- warn "$ERROR Bad node line: $_" unless $_ =~ /^\@node\s$NODESRE$/o;
- # request of "Richard Y. Kim" <ryk@ap.com>
- s/^\@node\s+//;
- $_ = &protect_html($_); # if node contains '&' for instance
- ($node, $node_next, $node_prev, $node_up) = split(/,/);
- &normalise_node($node);
- &normalise_node($node_next);
- &normalise_node($node_prev);
- &normalise_node($node_up);
- $node =~ /\"/ ?
- push @lines, &html_debug("<A NAME='$node'></A>\n", __LINE__) :
- push @lines, &html_debug("<A NAME=\"$node\"></A>\n", __LINE__);
- next;
- } elsif ($tag eq 'include') {
- if (/^\@include\s+($FILERE)\s*$/o) {
- $file = LocateIncludeFile($1);
- if ($file && -e $file) {
- &open($file);
- print "# including $file\n" if $T2H_VERBOSE;
- } else {
- warn "$ERROR Can't find $1, skipping";
- }
- } else {
- warn "$ERROR Bad include line: $_";
- }
- next;
- } elsif ($tag eq 'ifclear') {
- if (/^\@ifclear\s+($VARRE)\s*$/o) {
- next unless defined($value{$1});
- &skip_until($tag);
- } else {
- warn "$ERROR Bad ifclear line: $_";
- }
- next;
- } elsif ($tag eq 'ifset') {
- if (/^\@ifset\s+($VARRE)\s*$/o) {
- next if defined($value{$1});
- &skip_until($tag);
- } else {
- warn "$ERROR Bad ifset line: $_";
- }
- next;
- } elsif ($tag eq 'menu') {
- unless ($T2H_SHOW_MENU) {
- &skip_until($tag);
- next;
- }
- &html_push_if($tag);
- push(@lines, &html_debug('', __LINE__));
- } elsif ($format_map{$tag}) {
- $in_pre = 1 if $format_map{$tag} eq 'PRE';
- &html_push_if($format_map{$tag});
- push(@lines, &html_debug('', __LINE__));
- $in_list++ if $format_map{$tag} eq 'UL' || $format_map{$tag} eq 'OL' ;
-# push(@lines, &debug("<BLOCKQUOTE>\n", __LINE__))
-# if $tag =~ /example/i;
- # sunshine@sunshineco.com: <PRE>bla</PRE> looks better than
- # <PRE>\nbla</PRE> (at least on NeXTstep browser
- push(@lines, &debug("<$format_map{$tag}>" .
- ($in_pre ? '' : "\n"), __LINE__));
- next;
- }
- elsif (exists $complex_format_map->{$tag})
- {
- my $start = eval $complex_format_map->{$tag}->[0];
- if ($@)
- {
- print "$ERROR: eval of complex_format_map->{$tag}->[0] $complex_format_map->{$tag}->[0]: $@";
- $start = '<pre>'
- }
- $in_pre = 1 if $start =~ /<pre/;
- push(@lines, html_debug($start. ($in_pre ? '' : "\n"), __LINE__));
- next;
- } elsif ($tag eq 'table') {
- # anorland@hem2.passagen.se
- # if (/^\s*\@(|f|v|multi)table\s+\@(\w+)/) {
- if (/^\s*\@(|f|v|multi)table\s+\@(\w+)|(\{[^\}]*\})/) {
- $in_table = $2;
- unshift(@tables, join($;, $table_type, $in_table));
- if ($table_type eq "multi") {
- # don't use borders -- gets confused by empty cells
- push(@lines, &debug("<TABLE>\n", __LINE__));
- &html_push_if('TABLE');
- } else {
- push(@lines, &debug("<DL COMPACT>\n", __LINE__));
- &html_push_if('DL');
- }
- push(@lines, &html_debug('', __LINE__));
- } else {
- warn "$ERROR Bad table line: $_";
- }
- next;
- }
- elsif ($tag eq 'synindex' || $tag eq 'syncodeindex')
- {
- if (/^\@$tag\s+(\w+)\s+(\w+)\s*$/)
- {
- my $from = $1;
- my $to = $2;
- my $prefix_from = IndexName2Prefix($from);
- my $prefix_to = IndexName2Prefix($to);
-
- warn("$ERROR unknown from index name $from ind syn*index line: $_"), next
- unless $prefix_from;
- warn("$ERROR unknown to index name $to ind syn*index line: $_"), next
- unless $prefix_to;
-
- if ($tag eq 'syncodeindex')
- {
- $index_properties->{$prefix_to}->{'from_code'}->{$prefix_from} = 1;
- }
- else
- {
- $index_properties->{$prefix_to}->{'from'}->{$prefix_from} = 1;
- }
- }
- else
- {
- warn "$ERROR Bad syn*index line: $_";
- }
- next;
- }
- elsif ($tag eq 'defindex' || $tag eq 'defcodeindex')
- {
- if (/^\@$tag\s+(\w+)\s*$/)
- {
- my $name = $1;
- $index_properties->{$name}->{name} = $name;
- $index_properties->{$name}->{code} = 1 if $tag eq 'defcodeindex';
- }
- else
- {
- warn "$ERROR Bad defindex line: $_";
- }
- next;
- }
- elsif (/^\@printindex/)
- {
- push (@lines, "<!--::${section}::-->$_");
- next;
- }
- elsif ($tag eq 'sp') {
- push(@lines, &debug("<P>\n", __LINE__));
- next;
- } elsif ($tag eq 'center') {
- push(@lines, &debug("<center>\n", __LINE__));
- s/\@center//;
- } elsif ($tag eq 'setref') {
- &protect_html; # if setref contains '&' for instance
- if (/^\@$tag\s*{($NODERE)}\s*$/) {
- $setref = $1;
- $setref =~ s/\s+/ /g; # normalize
- $setref =~ s/ $//;
- $node2sec{$setref} = $name;
- $sec2node{$name} = $setref;
- $node2href{$setref} = "$docu_doc#$docid";
- } else {
- warn "$ERROR Bad setref line: $_";
- }
- next;
- } elsif ($tag eq 'lowersections') {
- local ($sec, $level);
- while (($sec, $level) = each %sec2level) {
- $sec2level{$sec} = $level + 1;
- }
- next;
- } elsif ($tag eq 'raisesections') {
- local ($sec, $level);
- while (($sec, $level) = each %sec2level) {
- $sec2level{$sec} = $level - 1;
- }
- next;
- }
- elsif ($tag eq 'macro' || $tag eq 'rmacro')
- {
- if (/^\@$tag\s*(\w+)\s*(.*)/)
- {
- my $name = $1;
- my @args;
- @args = split(/\s*,\s*/ , $1)
- if ($2 =~ /^\s*{(.*)}\s*/);
-
- $macros->{$name}->{Args} = \@args;
- $macros->{$name}->{Body} = '';
- while (($_ = &next_line) && $_ !~ /\@end $tag/)
- {
- $macros->{$name}->{Body} .= $_;
- }
- die "ERROR: No closing '\@end $tag' found for macro definition of '$name'\n"
- unless (/\@end $tag/);
- chomp $macros->{$name}->{Body};
- }
- else
- {
- warn "$ERROR: Bad macro defintion $_"
- }
- next;
- }
- elsif ($tag eq 'unmacro')
- {
- delete $macros->{$1} if (/^\@unmacro\s*(\w+)/);
- next;
- }
- elsif ($tag eq 'documentlanguage')
- {
- SetDocumentLanguage($1) if (!$T2H_LANG && /documentlanguage\s*(\w+)/);
- }
- elsif (defined($def_map{$tag})) {
- if ($def_map{$tag}) {
- s/^\@$tag\s+//;
- $tag = $def_map{$tag};
- $_ = "\@$tag $_";
- $tag =~ s/\s.*//;
- }
- } elsif (defined($user_sub{$tag})) {
- s/^\@$tag\s+//;
- $sub = $user_sub{$tag};
- print "# user $tag = $sub, arg: $_" if $T2H_DEBUG & $DEBUG_USER;
- if (defined(&$sub)) {
- chop($_);
- &$sub($_);
- } else {
- warn "$ERROR Bad user sub for $tag: $sub\n";
- }
- next;
- }
- if (defined($def_map{$tag})) {
- s/^\@$tag\s+//;
- if ($tag =~ /x$/) {
- # extra definition line
- $tag = $`;
- $is_extra = 1;
- } else {
- $is_extra = 0;
- }
- while (/\{([^\{\}]*)\}/) {
- # this is a {} construct
- ($before, $contents, $after) = ($`, $1, $');
- # protect spaces
- $contents =~ s/\s+/$;9/g;
- # restore $_ protecting {}
- $_ = "$before$;7$contents$;8$after";
- }
- @args = split(/\s+/, &protect_html($_));
- foreach (@args) {
- s/$;9/ /g; # unprotect spaces
- s/$;7/\{/g; # ... {
- s/$;8/\}/g; # ... }
- }
- $type = shift(@args);
- $type =~ s/^\{(.*)\}$/$1/;
- print "# def ($tag): {$type} ", join(', ', @args), "\n"
- if $T2H_DEBUG & $DEBUG_DEF;
- $type .= ':'; # it's nicer like this
- my $name = shift(@args);
- $name =~ s/^\{(.*)\}$/$1/;
- if ($is_extra) {
- $_ = &debug("<DT>", __LINE__);
- } else {
- $_ = &debug("<DL>\n<DT>", __LINE__);
- }
- if ($tag eq 'deffn' || $tag eq 'defvr' || $tag eq 'deftp') {
- $_ .= "<U>$type</U> <B>$name</B>";
- $_ .= " <I>@args</I>" if @args;
- } elsif ($tag eq 'deftypefn' || $tag eq 'deftypevr'
- || $tag eq 'defcv' || $tag eq 'defop') {
- $ftype = $name;
- $name = shift(@args);
- $name =~ s/^\{(.*)\}$/$1/;
- $_ .= "<U>$type</U> $ftype <B>$name</B>";
- $_ .= " <I>@args</I>" if @args;
- } else {
- warn "$ERROR Unknown definition type: $tag\n";
- $_ .= "<U>$type</U> <B>$name</B>";
- $_ .= " <I>@args</I>" if @args;
- }
- $_ .= &debug("\n<DD>", __LINE__);
- $name = &unprotect_html($name);
- if ($tag eq 'deffn' || $tag eq 'deftypefn') {
- EnterIndexEntry('f', $name, $docu_doc, $section, \@lines);
-# unshift(@input_spool, "\@findex $name\n");
- } elsif ($tag eq 'defop') {
- EnterIndexEntry('f', "$name on $ftype", $docu_doc, $section, \@lines);
-# unshift(@input_spool, "\@findex $name on $ftype\n");
- } elsif ($tag eq 'defvr' || $tag eq 'deftypevr' || $tag eq 'defcv') {
- EnterIndexEntry('v', $name, $docu_doc, $section, \@lines);
-# unshift(@input_spool, "\@vindex $name\n");
- } else {
- EnterIndexEntry('t', $name, $docu_doc, $section, \@lines);
-# unshift(@input_spool, "\@tindex $name\n");
- }
- $dont_html = 1;
- }
- } elsif ($end_tag) {
- if ($format_map{$end_tag}) {
- $in_pre = 0 if $format_map{$end_tag} eq 'PRE';
- $in_list-- if $format_map{$end_tag} eq 'UL' || $format_map{$end_tag} eq 'OL' ;
- &html_pop_if('P');
- &html_pop_if('LI');
- &html_pop_if();
- push(@lines, &debug("</$format_map{$end_tag}>\n", __LINE__));
- push(@lines, &html_debug('', __LINE__));
- }
- elsif (exists $complex_format_map->{$end_tag})
- {
- my $end = eval $complex_format_map->{$end_tag}->[1];
- if ($@)
- {
- print "$ERROR: eval of complex_format_map->{$end_tag}->[1] $complex_format_map->{$end_tag}->[0]: $@";
- $end = '</pre>'
- }
- $in_pre = 0 if $end =~ m|</pre>|;
- push(@lines, html_debug($end, __LINE__));
- } elsif ($end_tag =~ /^(|f|v|multi)table$/) {
- unless (@tables) {
- warn "$ERROR \@end $end_tag without \@*table\n";
- next;
- }
- &html_pop_if('P');
- ($table_type, $in_table) = split($;, shift(@tables));
- unless ($1 eq $table_type) {
- warn "$ERROR \@end $end_tag without matching \@$end_tag\n";
- next;
- }
- if ($table_type eq "multi") {
- push(@lines, "</TR></TABLE>\n");
- &html_pop_if('TR');
- } else {
- push(@lines, "</DL>\n");
- &html_pop_if('DD');
- }
- &html_pop_if();
- if (@tables) {
- ($table_type, $in_table) = split($;, $tables[0]);
- } else {
- $in_table = 0;
- }
- } elsif (defined($def_map{$end_tag})) {
- push(@lines, &debug("</DL>\n", __LINE__));
- } elsif ($end_tag eq 'menu') {
- &html_pop_if();
- push(@lines, $_); # must keep it for pass 2
- }
- next;
- }
- #############################################################
- # anchor insertion
- while (/\@anchor\s*\{(.*?)\}/)
- {
- $_ = $`.$';
- my $anchor = $1;
- $anchor = &normalise_node($anchor);
- push @lines, &html_debug("<A NAME=\"$anchor\"></A>\n");
- $node2href{$anchor} = "$docu_doc#$anchor";
- next INPUT_LINE if $_ =~ /^\s*$/;
- }
-
- #############################################################
- # index entry generation, after value substitutions
- if (/^\@(\w+?)index\s+/)
- {
- EnterIndexEntry($1, $', $docu_doc, $section, \@lines);
- next;
- }
- #
- # protect texi and HTML things
- &protect_texi;
- $_ = &protect_html($_) unless $dont_html;
- $dont_html = 0;
- # substitution (unsupported things)
- s/^\@exdent\s+//g;
- s/\@noindent\s+//g;
- s/\@refill\s+//g;
- # other substitutions
- &simple_substitutions;
- s/\@footnote\{/\@footnote$docu_doc\{/g; # mark footnotes, cf. pass 4
- #
- # analyze the tag again
- #
- if ($tag) {
- if (defined($sec2level{$tag}) && $sec2level{$tag} > 0) {
- if (/^\@$tag\s+(.+)$/) {
- $name = $1;
- $name = &normalise_node($name);
- $level = $sec2level{$tag};
- # check for index
- $first_index_chapter = $name
- if ($level == 1 && !$first_index_chapter &&
- $name =~ /index/i);
- if ($in_top && /heading/){
- $T2H_HAS_TOP_HEADING = 1;
- $_ = &debug("<H$level>$name</H$level>\n", __LINE__);
- &html_push_if('body');
- print "# top heading, section $name, level $level\n"
- if $T2H_DEBUG & $DEBUG_TOC;
- }
- else
- {
- unless (/^\@\w*heading/)
- {
- unless (/^\@unnumbered/)
- {
- my $number = &update_sec_num($tag, $level);
- $name = $number. ' ' . $name if $T2H_NUMBER_SECTIONS;
- $sec2number{$name} = $number;
- $number2sec{$number} = $name;
- }
- if (defined($toplevel))
- {
- push @lines, ($level==$toplevel ? $CHAPTEREND : $SECTIONEND);
- }
- else
- {
- # first time we see a "section"
- unless ($level == 1)
- {
- warn "$WARN The first section found is not of level 1: $_";
- }
- $toplevel = $level;
- }
- push(@sections, $name);
- next_doc() if ($T2H_SPLIT eq 'section' ||
- $T2H_SPLIT && $level == $toplevel);
- }
- $sec_num++;
- $docid = "SEC$sec_num";
- $tocid = (/^\@\w*heading/ ? undef : "TOC$sec_num");
- # check biblio and glossary
- $in_bibliography = ($name =~ /^([A-Z]|\d+)?(\.\d+)*\s*bibliography$/i);
- $in_glossary = ($name =~ /^([A-Z]|\d+)?(\.\d+)*\s*glossary$/i);
- # check node
- if ($node)
- {
- warn "$ERROR Duplicate node found: $node\n"
- if ($node2sec{$node});
- }
- else
- {
- $name .= ' ' while ($node2sec{$name});
- $node = $name;
- }
- $name .= ' ' while ($sec2node{$name});
- $section = $name;
- $node2sec{$node} = $name;
- $sec2node{$name} = $node;
- $node2href{$node} = "$docu_doc#$docid";
- $node2next{$node} = $node_next;
- $node2prev{$node} = $node_prev;
- $node2up{$node} = $node_up;
- print "# node $node, section $name, level $level\n"
- if $T2H_DEBUG & $DEBUG_TOC;
-
- $node = '';
- $node_next = '';
- $node_prev = '';
- $node_next = '';
- if ($tocid)
- {
- # update TOC
- while ($level > $curlevel) {
- $curlevel++;
- push(@toc_lines, "<UL>\n");
- }
- while ($level < $curlevel) {
- $curlevel--;
- push(@toc_lines, "</UL>\n");
- }
- $_ = &t2h_anchor($tocid, "$docu_doc#$docid", $name, 1);
- $_ = &substitute_style($_);
- push(@stoc_lines, "$_<BR>\n") if ($level == 1);
- if ($T2H_NUMBER_SECTIONS)
- {
- push(@toc_lines, $_ . "<BR>\n")
- }
- else
- {
- push(@toc_lines, "<LI>" . $_ ."</LI>");
- }
- }
- else
- {
- push(@lines, &html_debug("<A NAME=\"$docid\"></A>\n",
- __LINE__));
- }
- # update DOC
- push(@lines, &html_debug('', __LINE__));
- &html_reset;
- $_ = "<H$level> $name </H$level>\n<!--docid::${docid}::-->\n";
- $_ = &debug($_, __LINE__);
- push(@lines, &html_debug('', __LINE__));
- }
- # update DOC
- foreach $line (split(/\n+/, $_)) {
- push(@lines, "$line\n");
- }
- next;
- } else {
- warn "$ERROR Bad section line: $_";
- }
- } else {
- # track variables
- $value{$1} = Unprotect_texi($2), next if /^\@set\s+($VARRE)\s+(.*)$/o;
- delete $value{$1}, next if /^\@clear\s+($VARRE)\s*$/o;
- # store things
- $value{'_shorttitle'} = Unprotect_texi($1), next if /^\@shorttitle\s+(.*)$/;
- $value{'_setfilename'} = Unprotect_texi($1), next if /^\@setfilename\s+(.*)$/;
- $value{'_settitle'} = Unprotect_texi($1), next if /^\@settitle\s+(.*)$/;
- $value{'_author'} .= Unprotect_texi($1)."\n", next if /^\@author\s+(.*)$/;
- $value{'_subtitle'} .= Unprotect_texi($1)."\n", next if /^\@subtitle\s+(.*)$/;
- $value{'_title'} .= Unprotect_texi($1)."\n", next if /^\@title\s+(.*)$/;
-
- # list item
- if (/^\s*\@itemx?\s+/) {
- $what = $';
- $what =~ s/\s+$//;
- if ($in_bibliography && $use_bibliography) {
- if ($what =~ /^$BIBRE$/o) {
- $id = 'BIB' . ++$bib_num;
- $bib2href{$what} = "$docu_doc#$id";
- print "# found bibliography for '$what' id $id\n"
- if $T2H_DEBUG & $DEBUG_BIB;
- $what = &t2h_anchor($id, '', $what);
- }
- } elsif ($in_glossary && $T2H_USE_GLOSSARY) {
- $id = 'GLOSS' . ++$gloss_num;
- $entry = $what;
- $entry =~ tr/A-Z/a-z/ unless $entry =~ /^[A-Z\s]+$/;
- $gloss2href{$entry} = "$docu_doc#$id";
- print "# found glossary for '$entry' id $id\n"
- if $T2H_DEBUG & $DEBUG_GLOSS;
- $what = &t2h_anchor($id, '', $what);
- }
- elsif ($in_table && ($table_type eq 'f' || $table_type eq 'v'))
- {
- EnterIndexEntry($table_type, $what, $docu_doc, $section, \@lines);
- }
- &html_pop_if('P');
- if ($html_element eq 'DL' || $html_element eq 'DD') {
- if ($things_map{$in_table} && !$what) {
- # special case to allow @table @bullet for instance
- push(@lines, &debug("<DT>$things_map{$in_table}\n", __LINE__));
- } else {
- push(@lines, &debug("<DT>\@$in_table\{$what\}\n", __LINE__));
- }
- push(@lines, "<DD>");
- &html_push('DD') unless $html_element eq 'DD';
- if ($table_type) { # add also an index
- unshift(@input_spool, "\@${table_type}index $what\n");
- }
- } elsif ($html_element eq 'TABLE') {
- push(@lines, &debug("<TR><TD>$what</TD>\n", __LINE__));
- &html_push('TR');
- } elsif ($html_element eq 'TR') {
- push(@lines, &debug("</TR>\n", __LINE__));
- push(@lines, &debug("<TR><TD>$what</TD>\n", __LINE__));
- } else {
- push(@lines, &debug("<LI>$what\n", __LINE__));
- &html_push('LI') unless $html_element eq 'LI';
- }
- push(@lines, &html_debug('', __LINE__));
- if ($deferred_ref) {
- push(@lines, &debug("$deferred_ref\n", __LINE__));
- $deferred_ref = '';
- }
- next;
- } elsif (/^\@tab\s+(.*)$/) {
- push(@lines, "<TD>$1</TD>\n");
- next;
- }
- }
- }
- # paragraph separator
- if ($_ eq "\n" && ! $in_pre) {
- next if $#lines >= 0 && $lines[$#lines] eq "\n";
- if ($html_element eq 'P') {
- push (@lines, &debug("</P><P>\n", __LINE__));
- }
-# else
-# {
-# push(@lines, "<P></P>\n");
-# $_ = &debug("<P></P>\n", __LINE__);
-# }
- elsif ($html_element eq 'body' || $html_element eq 'BLOCKQUOTE' || $html_element eq 'DD' || $html_element eq 'LI')
- {
- &html_push('P');
- push(@lines, &debug("<P>\n", __LINE__));
- }
- }
- # otherwise
- push(@lines, $_) unless $in_titlepage;
- push(@lines, &debug("</center>\n", __LINE__)) if ($tag eq 'center');
-}
-
-# finish TOC
-$level = 0;
-while ($level < $curlevel) {
- $curlevel--;
- push(@toc_lines, "</UL>\n");
-}
-
-print "# end of pass 1\n" if $T2H_VERBOSE;
-
-SetDocumentLanguage('en') unless ($T2H_LANG);
-#+++############################################################################
-# #
-# Stuff related to Index generation #
-# #
-#---############################################################################
-
-sub EnterIndexEntry
-{
- my $prefix = shift;
- my $key = shift;
- my $docu_doc = shift;
- my $section = shift;
- my $lines = shift;
- local $_;
-
- warn "$ERROR Undefined index command: $_", next
- unless (exists ($index_properties->{$prefix}));
- $key =~ s/\s+$//;
- $_ = $key;
- &protect_texi;
- $key = $_;
- $_ = &protect_html($_);
- my $html_key = substitute_style($_);
- my $id;
- $key = remove_style($key);
- $key = remove_things($key);
- $_ = $key;
- &unprotect_texi;
- $key = $_;
- while (exists $index->{$prefix}->{$key}) {$key .= ' '};
- if ($lines->[$#lines] =~ /^<!--docid::(.+)::-->$/)
- {
- $id = $1;
- }
- else
- {
- $id = 'IDX' . ++$idx_num;
- push(@$lines, &t2h_anchor($id, '', $T2H_INVISIBLE_MARK, !$in_pre));
- }
- $index->{$prefix}->{$key}->{html_key} = $html_key;
- $index->{$prefix}->{$key}->{section} = $section;
- $index->{$prefix}->{$key}->{href} = "$docu_doc#$id";
- print "# found ${prefix}index for '$key' with id $id\n"
- if $T2H_DEBUG & $DEBUG_INDEX;
-}
-
-sub IndexName2Prefix
-{
- my $name = shift;
- my $prefix;
-
- for $prefix (keys %$index_properties)
- {
- return $prefix if ($index_properties->{$prefix}->{name} eq $name);
- }
- return undef;
-}
-
-sub GetIndexEntries
-{
- my $normal = shift;
- my $code = shift;
- my ($entries, $prefix, $key) = ({});
-
- for $prefix (keys %$normal)
- {
- for $key (keys %{$index->{$prefix}})
- {
- $entries->{$key} = {%{$index->{$prefix}->{$key}}};
- }
- }
-
- if (defined($code))
- {
- for $prefix (keys %$code)
- {
- unless (exists $normal->{$keys})
- {
- for $key (keys %{$index->{$prefix}})
- {
- $entries->{$key} = {%{$index->{$prefix}->{$key}}};
- $entries->{$key}->{html_key} = "<CODE>$entries->{$key}->{html_key}</CODE>";
- }
- }
- }
- }
- return $entries;
-}
-
-sub byAlpha
-{
- if ($a =~ /^[A-Za-z]/)
- {
- if ($b =~ /^[A-Za-z]/)
- {
- return lc($a) cmp lc($b);
- }
- else
- {
- return 1;
- }
- }
- elsif ($b =~ /^[A-Za-z]/)
- {
- return -1;
- }
- else
- {
- return lc($a) cmp lc($b);
- }
-}
-
-sub GetIndexPages
-{
- my $entries = shift;
- my (@Letters, $key);
- my ($EntriesByLetter, $Pages, $page) = ({}, [], {});
- my @keys = sort byAlpha keys %$entries;
-
- for $key (@keys)
- {
- push @{$EntriesByLetter->{uc(substr($key,0, 1))}} , $entries->{$key};
- }
- @Letters = sort byAlpha keys %$EntriesByLetter;
-
- $T2H_SPLIT_INDEX = 0 unless ($T2H_SPLIT);
-
- unless ($T2H_SPLIT_INDEX)
- {
- $page->{First} = $Letters[0];
- $page->{Last} = $Letters[$#Letters];
- $page->{Letters} = \@Letters;
- $page->{EntriesByLetter} = $EntriesByLetter;
- push @$Pages, $page;
- return $Pages;
- }
-
- if ($T2H_SPLIT_INDEX =~ /^\d+$/)
- {
- my $i = 0;
- my ($prev_letter, $letter);
- $page->{First} = $Letters[0];
- for $letter (@Letters)
- {
- if ($i > $T2H_SPLIT_INDEX)
- {
- $page->{Last} = $prev_letter;
- push @$Pages, {%$page};
- $page->{Letters} = [];
- $page->{EntriesByLetter} = {};
- $page->{First} = $letter;
- $i=0;
- }
- push @{$page->{Letters}}, $letter;
- $page->{EntriesByLetter}->{$letter} = [@{$EntriesByLetter->{$letter}}];
- $i += scalar(@{$EntriesByLetter->{$letter}});
- $prev_letter = $letter;
- }
- $page->{Last} = $Letters[$#Letters];
- push @$Pages, {%$page};
- }
- return $Pages;
-}
-
-sub GetIndexSummary
-{
- my $first_page = shift;
- my $Pages = shift;
- my $name = shift;
- my ($page, $letter, $summary, $i, $l1, $l2, $l);
-
- $i = 0;
- $summary = '<table><tr><th valign=top>Jump to: &nbsp; </th><td>';
-
- for $page ($first_page, @$Pages)
- {
- for $letter (@{$page->{Letters}})
- {
- $l = t2h_anchor('', "$page->{href}#${name}_$letter", "<b>$letter</b>",
- 0, 'style="text-decoration:none"') . "\n &nbsp; \n";
-
- if ($letter =~ /^[A-Za-z]/)
- {
- $l2 .= $l;
- }
- else
- {
- $l1 .= $l;
- }
- }
- }
- $summary .= $l1 . "<BR>\n" if ($l1);
- $summary .= $l2 . '</td></tr></table><br>';
- return $summary;
-}
-
-sub PrintIndexPage
-{
- my $lines = shift;
- my $summary = shift;
- my $page = shift;
- my $name = shift;
-
- push @$lines, $summary;
-
- push @$lines , <<EOT;
-<P></P>
-<TABLE border=0>
-<TR><TD></TD><TH ALIGN=LEFT>Index Entry</TH><TH ALIGN=LEFT> Section</TH></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-EOT
-
- for $letter (@{$page->{Letters}})
- {
- push @$lines, "<TR><TH><A NAME=\"${name}_$letter\"></A>$letter</TH><TD></TD><TD></TD></TR>\n";
- for $entry (@{$page->{EntriesByLetter}->{$letter}})
- {
- push @$lines,
- "<TR><TD></TD><TD valign=top>" .
- t2h_anchor('', $entry->{href}, $entry->{html_key}) .
- "</TD><TD valign=top>" .
- t2h_anchor('', sec_href($entry->{section}), clean_name($entry->{section})) .
- "</TD></TR>\n";
- }
- push @$lines, "<TR><TD COLSPAN=3> <HR></TD></TR>\n";
- }
- push @$lines, "</TABLE><P></P>";
- push @$lines, $summary;
-}
-
-sub PrintIndex
-{
- my $lines = shift;
- my $name = shift;
- my $section = shift;
- $section = 'Top' unless $section;
- my $prefix = IndexName2Prefix($name);
-
- warn ("$ERROR printindex: bad index name: $name"), return
- unless $prefix;
-
- if ($index_properties->{$prefix}->{code})
- {
- $index_properties->{$prefix}->{from_code}->{$prefix} = 1;
- }
- else
- {
- $index_properties->{$prefix}->{from}->{$prefix}= 1;
- }
-
- my $Entries = GetIndexEntries($index_properties->{$prefix}->{from},
- $index_properties->{$prefix}->{from_code});
- return unless %$Entries;
-
- if ($T2H_IDX_SUMMARY)
- {
- my $key;
- open(FHIDX, ">$docu_rdir$docu_name" . "_$name.idx")
- || die "Can't open > $docu_rdir$docu_name" . "_$name.idx for writing: $!\n";
- print "# writing $name index summary in $docu_rdir$docu_name" . "_$name.idx...\n" if $T2H_VERBOSE;
-
- for $key (sort keys %$Entries)
- {
- print FHIDX "$key\t$Entries->{$key}->{href}\n";
- }
- }
-
- my $Pages = GetIndexPages($Entries);
- my $page;
- my $first_page = shift @$Pages;
- my $sec_name = $section;
- # remove section number
- $sec_name =~ s/.*? // if $sec_name =~ /^([A-Z]|\d+)\./;
-
- ($first_page->{href} = sec_href($section)) =~ s/\#.*$//;
- # Update tree structure of document
- if (@$Pages)
- {
- my $sec;
- my @after;
-
- while (@sections && $sections[$#sections] ne $section)
- {
- unshift @after, pop @sections;
- }
-
- for $page (@$Pages)
- {
- my $node = ($page->{First} ne $page->{Last} ?
- "$sec_name: $page->{First} -- $page->{Last}" :
- "$sec_name: $page->{First}");
- push @sections, $node;
- $node2sec{$node} = $node;
- $sec2node{$node} = $node;
- $node2up{$node} = $section;
- $page->{href} = next_doc();
- $page->{name} = $node;
- $node2href{$node} = $page->{href};
- if ($prev_node)
- {
- $node2next{$prev_node} = $node;
- $node2prev{$node} = $prev_node;
- }
- $prev_node = $node;
- }
- push @sections, @after;
- }
-
- my $summary = GetIndexSummary($first_page, $Pages, $name);
- PrintIndexPage($lines, $summary, $first_page, $name);
- for $page (@$Pages)
- {
- push @$lines, ($T2H_SPLIT eq 'chapter' ? $CHAPTEREND : $SECTIONEND);
- push @$lines, "<H2 ALIGN=\"Left\">$page->{name}</H2>\n";
- PrintIndexPage($lines, $summary, $page, $name);
- }
-}
-
-
-#+++############################################################################
-# #
-# Pass 2/3: handle style, menu, index, cross-reference #
-# #
-#---############################################################################
-
-@lines2 = (); # whole document (2nd pass)
-@lines3 = (); # whole document (3rd pass)
-$in_menu = 0; # am I inside a menu
-
-while (@lines) {
- $_ = shift(@lines);
- #
- # special case (protected sections)
- #
- if (/^$PROTECTTAG/o) {
- push(@lines2, $_);
- next;
- }
- #
- # menu
- #
- if (/^\@menu\b/)
- {
- $in_menu = 1;
- $in_menu_listing = 1;
- push(@lines2, &debug("<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> \n", __LINE__));
- next;
- }
- if (/^\@end\s+menu\b/)
- {
- if ($in_menu_listing)
- {
- push(@lines2, &debug("</TABLE></BLOCKQUOTE>\n", __LINE__));
- }
- else
- {
- push(@lines2, &debug("</BLOCKQUOTE>\n", __LINE__));
- }
- $in_menu = 0;
- $in_menu_listing = 0;
- next;
- }
- if ($in_menu)
- {
- my ($node, $name, $descr);
- if (/^\*\s+($NODERE)::/o)
- {
- $node = $1;
- $descr = $';
- }
- elsif (/^\*\s+(.+):\s+([^\t,\.\n]+)[\t,\.\n]/)
- {
- $name = $1;
- $node = $2;
- $descr = $';
- }
- elsif (/^\*/)
- {
- warn "$ERROR Bad menu line: $_";
- }
- else
- {
- if ($in_menu_listing)
- {
- $in_menu_listing = 0;
- push(@lines2, &debug("</TABLE>\n", __LINE__));
- }
- # should be like verbatim -- preseve spaces, etc
- s/ /\&nbsp;/g;
- $_ .= "<br>\n";
- push(@lines2, $_);
- }
- if ($node)
- {
- if (! $in_menu_listing)
- {
- $in_menu_listing = 1;
- push(@lines2, &debug("<TABLE BORDER=0 CELLSPACING=0>\n", __LINE__));
- }
- # look for continuation
- while ($lines[0] =~ /^\s+\w+/)
- {
- $descr .= shift(@lines);
- }
- &menu_entry($node, $name, $descr);
- }
- next;
- }
- #
- # printindex
- #
- PrintIndex(\@lines2, $2, $1), next
- if (/^<!--::(.*)::-->\@printindex\s+(\w+)/);
- #
- # simple style substitutions
- #
- $_ = &substitute_style($_);
- #
- # xref
- #
- while (/\@(x|px|info|)ref{([^{}]+)(}?)/) {
- # note: Texinfo may accept other characters
- ($type, $nodes, $full) = ($1, $2, $3);
- ($before, $after) = ($`, $');
- if (! $full && $after) {
- warn "$ERROR Bad xref (no ending } on line): $_";
- $_ = "$before$;0${type}ref\{$nodes$after";
- next; # while xref
- }
- if ($type eq 'x') {
- $type = "$T2H_WORDS->{$T2H_LANG}->{'See'} ";
- } elsif ($type eq 'px') {
- $type = "$T2H_WORDS->{$T2H_LANG}->{'see'} ";
- } elsif ($type eq 'info') {
- $type = "$T2H_WORDS->{$T2H_LANG}->{'See'} Info";
- } else {
- $type = '';
- }
- unless ($full) {
- $next = shift(@lines);
- $next = &substitute_style($next);
- chop($nodes); # remove final newline
- if ($next =~ /\}/) { # split on 2 lines
- $nodes .= " $`";
- $after = $';
- } else {
- $nodes .= " $next";
- $next = shift(@lines);
- $next = &substitute_style($next);
- chop($nodes);
- if ($next =~ /\}/) { # split on 3 lines
- $nodes .= " $`";
- $after = $';
- } else {
- warn "$ERROR Bad xref (no ending }): $_";
- $_ = "$before$;0xref\{$nodes$after";
- unshift(@lines, $next);
- next; # while xref
- }
- }
- }
- $nodes =~ s/\s+/ /g; # remove useless spaces
- @args = split(/\s*,\s*/, $nodes);
- $node = $args[0]; # the node is always the first arg
- $node = &normalise_node($node);
- $sec = $args[2] || $args[1] || $node2sec{$node};
- $href = $node2href{$node};
- if (@args == 5) { # reference to another manual
- $sec = $args[2] || $node;
- $man = $args[4] || $args[3];
- $_ = "${before}${type}$T2H_WORDS->{$T2H_LANG}->{'section'} `$sec' in \@cite{$man}$after";
- } elsif ($type =~ /Info/) { # inforef
- warn "$ERROR Wrong number of arguments: $_" unless @args == 3;
- ($nn, $_, $in) = @args;
- $_ = "${before}${type} file `$in', node `$nn'$after";
- } elsif ($sec && $href && ! $T2H_SHORT_REF) {
- $_ = "${before}${type}";
- $_ .= "$T2H_WORDS->{$T2H_LANG}->{'section'} " if ${type};
- $_ .= &t2h_anchor('', $href, $sec) . $after;
- }
- elsif ($href)
- {
- $_ = "${before}${type} " .
- &t2h_anchor('', $href, $args[2] || $args[1] || $node) .
- $after;
- }
- else {
- warn "$ERROR Undefined node ($node): $_";
- $_ = "$before$;0xref{$nodes}$after";
- }
- }
-
- # replace images
- s[\@image\s*{(.+?)}]
- {
- my @args = split (/\s*,\s*/, $1);
- my $base = $args[0];
- my $image =
- LocateIncludeFile("$base.png") ||
- LocateIncludeFile("$base.jpg") ||
- LocateIncludeFile("$base.gif");
- warn "$ERROR no image file for $base: $_" unless ($image && -e $image);
- "<IMG SRC=\"$image\" ALT=\"$base\">";
- ($T2H_CENTER_IMAGE ?
- "<CENTER><IMG SRC=\"$image\" ALT=\"$base\"></CENTER>" :
- "<IMG SRC=\"$image\" ALT=\"$base\">");
- }eg;
-
- #
- # try to guess bibliography references or glossary terms
- #
- unless (/^<H\d><A NAME=\"SEC\d/) {
- if ($use_bibliography) {
- $done = '';
- while (/$BIBRE/o) {
- ($pre, $what, $post) = ($`, $&, $');
- $href = $bib2href{$what};
- if (defined($href) && $post !~ /^[^<]*<\/A>/) {
- $done .= $pre . &t2h_anchor('', $href, $what);
- } else {
- $done .= "$pre$what";
- }
- $_ = $post;
- }
- $_ = $done . $_;
- }
- if ($T2H_USE_GLOSSARY) {
- $done = '';
- while (/\b\w+\b/) {
- ($pre, $what, $post) = ($`, $&, $');
- $entry = $what;
- $entry =~ tr/A-Z/a-z/ unless $entry =~ /^[A-Z\s]+$/;
- $href = $gloss2href{$entry};
- if (defined($href) && $post !~ /^[^<]*<\/A>/) {
- $done .= $pre . &t2h_anchor('', $href, $what);
- } else {
- $done .= "$pre$what";
- }
- $_ = $post;
- }
- $_ = $done . $_;
- }
- }
- # otherwise
- push(@lines2, $_);
-}
-print "# end of pass 2\n" if $T2H_VERBOSE;
-
-#
-# split style substitutions
-#
-while (@lines2) {
- $_ = shift(@lines2);
- #
- # special case (protected sections)
- #
- if (/^$PROTECTTAG/o) {
- push(@lines3, $_);
- next;
- }
- #
- # split style substitutions
- #
- $old = '';
- while ($old ne $_) {
- $old = $_;
- if (/\@(\w+)\{/) {
- ($before, $style, $after) = ($`, $1, $');
- if (defined($style_map{$style})) {
- $_ = $after;
- $text = '';
- $after = '';
- $failed = 1;
- while (@lines2) {
- if (/\}/) {
- $text .= $`;
- $after = $';
- $failed = 0;
- last;
- } else {
- $text .= $_;
- $_ = shift(@lines2);
- }
- }
- if ($failed) {
- die "* Bad syntax (\@$style) after: $before\n";
- } else {
- $text = &apply_style($style, $text);
- $_ = "$before$text$after";
- }
- }
- }
- }
- # otherwise
- push(@lines3, $_);
-}
-print "# end of pass 3\n" if $T2H_VERBOSE;
-
-#+++############################################################################
-# #
-# Pass 4: foot notes, final cleanup #
-# #
-#---############################################################################
-
-@foot_lines = (); # footnotes
-@doc_lines = (); # final document
-$end_of_para = 0; # true if last line is <P>
-
-while (@lines3) {
- $_ = shift(@lines3);
- #
- # special case (protected sections)
- #
- if (/^$PROTECTTAG/o) {
- push(@doc_lines, $_);
- $end_of_para = 0;
- next;
- }
- #
- # footnotes
- #
- while (/\@footnote([^\{\s]+)\{/) {
- ($before, $d, $after) = ($`, $1, $');
- $_ = $after;
- $text = '';
- $after = '';
- $failed = 1;
- while (@lines3) {
- if (/\}/) {
- $text .= $`;
- $after = $';
- $failed = 0;
- last;
- } else {
- $text .= $_;
- $_ = shift(@lines3);
- }
- }
- if ($failed) {
- die "* Bad syntax (\@footnote) after: $before\n";
- } else {
- $foot_num++;
- $docid = "DOCF$foot_num";
- $footid = "FOOT$foot_num";
- $foot = "($foot_num)";
- push(@foot_lines, "<H3>" . &t2h_anchor($footid, "$d#$docid", $foot) . "</H3>\n");
- $text = "<P>$text" unless $text =~ /^\s*<P>/;
- push(@foot_lines, "$text\n");
- $_ = $before . &t2h_anchor($docid, "$docu_foot#$footid", $foot) . $after;
- }
- }
- #
- # remove unnecessary <P>
- #
- if (/^\s*<P>\s*$/) {
- next if $end_of_para++;
- } else {
- $end_of_para = 0;
- }
- # otherwise
- push(@doc_lines, $_);
-}
-
-print "# end of pass 4\n" if $T2H_VERBOSE;
-
-#+++############################################################################
-# #
-# Pass 5: print things #
-# #
-#---############################################################################
-
-$T2H_L2H = &l2h_FinishToLatex if ($T2H_L2H);
-$T2H_L2H = &l2h_ToHtml if ($T2H_L2H);
-$T2H_L2H = &l2h_InitFromHtml if ($T2H_L2H);
-
-# fix node2up, node2prev, node2next, if desired
-if ($has_top_command)
-{
- for $section (keys %sec2number)
- {
- $node = $sec2node{$section};
- $node2up{$node} = Sec2UpNode($section) unless $node2up{$node};
- $node2prev{$node} = Sec2PrevNode($section) unless $node2prev{$node};
- $node2next{$node} = Sec2NextNode($section) unless $node2next{$node};
- }
-}
-
-# prepare %T2H_THISDOC
-$T2H_THISDOC{fulltitle} = $value{'_title'} || $value{'_settitle'} || "Untitled Document";
-$T2H_THISDOC{title} = $value{'_settitle'} || $T2H_THISDOC{fulltitle};
-$T2H_THISDOC{author} = $value{'_author'};
-$T2H_THISDOC{subtitle} = $value{'_subtitle'};
-$T2H_THISDOC{shorttitle} = $value{'_shorttitle'};
-for $key (keys %T2H_THISDOC)
-{
- $_ = &substitute_style($T2H_THISDOC{$key});
- &unprotect_texi;
- s/\s*$//;
- $T2H_THISDOC{$key} = $_;
-}
-
-# if no sections, then simply print document as is
-unless (@sections)
-{
- print "# Writing content into $docu_top_file \n" if $T2H_VERBOSE;
- open(FILE, "> $docu_top_file")
- || die "$ERROR: Can't open $docu_top_file for writing: $!\n";
-
- &$T2H_print_page_head(\*FILE);
- $T2H_THIS_SECTION = \@doc_lines;
- t2h_print_lines(\*FILE);
- &$T2H_print_foot_navigation(\*FILE);
- &$T2H_print_page_foot(\*FILE);
- close(FILE);
- goto Finish;
-}
-
-# initialize $T2H_HREF, $T2H_NAME
-%T2H_HREF =
- (
- 'First' , sec_href($sections[0]),
- 'Last', sec_href($sections[$#sections]),
- 'About', $docu_about. '#SEC_About',
- );
-
-# prepare TOC, OVERVIEW, TOP
-$T2H_TOC = \@toc_lines;
-$T2H_OVERVIEW = \@stoc_lines;
-if ($has_top)
-{
- while (1)
- {
- $_ = shift @doc_lines;
- last if /$TOPEND/;
- push @$T2H_TOP, $_;
- }
- $T2H_HREF{'Top'} = $docu_top . '#SEC_Top';
-}
-else
-{
- $T2H_HREF{'Top'} = $T2H_HREF{First};
-}
-
-$node2href{Top} = $T2H_HREF{Top};
-$T2H_HREF{Contents} = $docu_toc.'#SEC_Contents' if @toc_lines;
-$T2H_HREF{Overview} = $docu_stoc.'#SEC_OVERVIEW' if @stoc_lines;
-
-# settle on index
-if ($T2H_INDEX_CHAPTER)
-{
- $T2H_HREF{Index} = $node2href{normalise_node($T2H_INDEX_CHAPTER)};
- warn "$ERROR T2H_INDEX_CHAPTER '$T2H_INDEX_CHAPTER' not found\n"
- unless $T2H_HREF{Index};
-}
-if (! $T2H_HREF{Index} && $first_index_chapter)
-{
- $T2H_INDEX_CHAPTER = $first_index_chapter;
- $T2H_HREF{Index} = $node2href{$T2H_INDEX_CHAPTER};
-}
-
-print "# Using '" . clean_name($T2H_INDEX_CHAPTER) . "' as index page\n"
- if ($T2H_VERBOSE && $T2H_HREF{Index});
-
-%T2H_NAME =
- (
- 'First', clean_name($sec2node{$sections[0]}),
- 'Last', clean_name($sec2node{$sections[$#sections]}),
- 'About', $T2H_WORDS->{$T2H_LANG}->{'About_Title'},
- 'Contents', $T2H_WORDS->{$T2H_LANG}->{'ToC_Title'},
- 'Overview', $T2H_WORDS->{$T2H_LANG}->{'Overview_Title'},
- 'Index' , clean_name($T2H_INDEX_CHAPTER),
- 'Top', clean_name($T2H_TOP_HEADING || $T2H_THISDOC{'title'} || $T2H_THISDOC{'shorttitle'}),
- );
-
-#############################################################################
-# print frame and frame toc file
-#
-if ( $T2H_FRAMES )
-{
- open(FILE, "> $docu_frame_file")
- || die "$ERROR: Can't open $docu_frame_file for writing: $!\n";
- print "# Creating frame in $docu_frame_file ...\n" if $T2H_VERBOSE;
- &$T2H_print_frame(\*FILE);
- close(FILE);
-
- open(FILE, "> $docu_toc_frame_file")
- || die "$ERROR: Can't open $docu_toc_frame_file for writing: $!\n";
- print "# Creating toc frame in $docu_frame_file ...\n" if $T2H_VERBOSE;
- &$T2H_print_toc_frame(\*FILE);
- close(FILE);
-}
-
-
-#############################################################################
-# print Top
-#
-open(FILE, "> $docu_top_file")
- || die "$ERROR: Can't open $docu_top_file for writing: $!\n";
-&$T2H_print_page_head(\*FILE) unless ($T2H_SPLIT);
-
-if ($has_top)
-{
- print "# Creating Top in $docu_top_file ...\n" if $T2H_VERBOSE;
- $T2H_THIS_SECTION = $T2H_TOP;
- $T2H_HREF{This} = $T2H_HREF{Top};
- $T2H_NAME{This} = $T2H_NAME{Top};
- &$T2H_print_Top(\*FILE);
-}
-
-close(FILE) if $T2H_SPLIT;
-
-#############################################################################
-# Print sections
-#
-$T2H_NODE{Forward} = $sec2node{$sections[0]};
-$T2H_NAME{Forward} = &clean_name($sec2node{$sections[0]});
-$T2H_HREF{Forward} = sec_href($sections[0]);
-$T2H_NODE{This} = 'Top';
-$T2H_NAME{This} = $T2H_NAME{Top};
-$T2H_HREF{This} = $T2H_HREF{Top};
-if ($T2H_SPLIT)
-{
- print "# writing " . scalar(@sections) .
- " sections in $docu_rdir$docu_name"."_[1..$doc_num]"
- if $T2H_VERBOSE;
- $previous = ($T2H_SPLIT eq 'chapter' ? $CHAPTEREND : $SECTIONEND);
- undef $FH;
- $doc_num = 0;
-}
-else
-{
- print "# writing " . scalar(@sections) . " sections in $docu_top_file ..."
- if $T2H_VERBOSE;
- $FH = \*FILE;
- $previous = '';
-}
-
-$counter = 0;
-# loop through sections
-while ($section = shift(@sections))
-{
- if ($T2H_SPLIT && ($T2H_SPLIT eq 'section' || $previous eq $CHAPTEREND))
- {
- if ($FH)
- {
- #close previous page
- &$T2H_print_chapter_footer($FH) if $T2H_SPLIT eq 'chapter';
- &$T2H_print_page_foot($FH);
- close($FH);
- undef $FH;
- }
- }
- $T2H_NAME{Back} = $T2H_NAME{This};
- $T2H_HREF{Back} = $T2H_HREF{This};
- $T2H_NODE{Back} = $T2H_NODE{This};
- $T2H_NAME{This} = $T2H_NAME{Forward};
- $T2H_HREF{This} = $T2H_HREF{Forward};
- $T2H_NODE{This} = $T2H_NODE{Forward};
- if ($sections[0])
- {
- $T2H_NODE{Forward} = $sec2node{$sections[0]};
- $T2H_NAME{Forward} = &clean_name($T2H_NODE{Forward});
- $T2H_HREF{Forward} = sec_href($sections[0]);
- }
- else
- {
- undef $T2H_HREF{Forward}, $T2H_NODE{Forward}, $T2H_NAME{Forward};
- }
-
- $node = $node2up{$T2H_NODE{This}};
- $T2H_HREF{Up} = $node2href{$node};
- if ($T2H_HREF{Up} eq $T2H_HREF{This} || ! $T2H_HREF{Up})
- {
- $T2H_NAME{Up} = $T2H_NAME{Top};
- $T2H_HREF{Up} = $T2H_HREF{Top};
- $T2H_NODE{Up} = 'Up';
- }
- else
- {
- $T2H_NAME{Up} = &clean_name($node);
- $T2H_NODE{Up} = $node;
- }
-
- $node = $T2H_NODE{This};
- $node = $node2prev{$node};
- $T2H_NAME{Prev} = &clean_name($node);
- $T2H_HREF{Prev} = $node2href{$node};
- $T2H_NODE{Prev} = $node;
-
- $node = $T2H_NODE{This};
- if ($node2up{$node} && $node2up{$node} ne 'Top'&&
- ($node2prev{$node} eq $T2H_NODE{Back} || ! $node2prev{$node}))
- {
- $node = $node2up{$node};
- while ($node && $node ne $node2up{$node} && ! $node2prev{$node})
- {
- $node = $node2up{$node};
- }
- $node = $node2prev{$node}
- unless $node2up{$node} eq 'Top' || ! $node2up{$node};
- }
- else
- {
- $node = $node2prev{$node};
- }
- $T2H_NAME{FastBack} = &clean_name($node);
- $T2H_HREF{FastBack} = $node2href{$node};
- $T2H_NODE{FastBack} = $node;
-
- $node = $T2H_NODE{This};
- $node = $node2next{$node};
- $T2H_NAME{Next} = &clean_name($node);
- $T2H_HREF{Next} = $node2href{$node};
- $T2H_NODE{Next} = $node;
-
- $node = $T2H_NODE{This};
- if ($node2up{$node} && $node2up{$node} ne 'Top'&&
- ($node2next{$node} eq $T2H_NODE{Forward} || ! $node2next{$node}))
- {
- $node = $node2up{$node};
- while ($node && $node ne $node2up{$node} && ! $node2next{$node})
- {
- $node = $node2up{$node};
- }
- }
- $node = $node2next{$node};
- $T2H_NAME{FastForward} = &clean_name($node);
- $T2H_HREF{FastForward} = $node2href{$node};
- $T2H_NODE{FastForward} = $node;
-
- if (! defined($FH))
- {
- my $file = $T2H_HREF{This};
- $file =~ s/\#.*$//;
- open(FILE, "> $docu_rdir$file") ||
- die "$ERROR: Can't open $docu_rdir$file for writing: $!\n";
- $FH = \*FILE;
- &$T2H_print_page_head($FH);
- t2h_print_label($FH);
- &$T2H_print_chapter_header($FH) if $T2H_SPLIT eq 'chapter';
- }
- else
- {
- t2h_print_label($FH);
- }
-
- $T2H_THIS_SECTION = [];
- while (@doc_lines) {
- $_ = shift(@doc_lines);
- last if ($_ eq $SECTIONEND || $_ eq $CHAPTEREND);
- push(@$T2H_THIS_SECTION, $_);
- }
- $previous = $_;
- &$T2H_print_section($FH);
-
- if ($T2H_VERBOSE)
- {
- $counter++;
- print "." if $counter =~ /00$/;
- }
-}
-if ($T2H_SPLIT)
-{
- &$T2H_print_chapter_footer($FH) if $T2H_SPLIT eq 'chapter';
- &$T2H_print_page_foot($FH);
- close($FH);
-}
-print "\n" if $T2H_VERBOSE;
-
-#############################################################################
-# Print ToC, Overview, Footnotes
-#
-undef $T2H_HREF{Prev};
-undef $T2H_HREF{Next};
-undef $T2H_HREF{Back};
-undef $T2H_HREF{Forward};
-undef $T2H_HREF{Up};
-
-if (@foot_lines)
-{
- print "# writing Footnotes in $docu_foot_file...\n" if $T2H_VERBOSE;
- open (FILE, "> $docu_foot_file") || die "$ERROR: Can't open $docu_foot_file for writing: $!\n"
- if $T2H_SPLIT;
- $T2H_HREF{This} = $docu_foot;
- $T2H_NAME{This} = $T2H_WORDS->{$T2H_LANG}->{'Footnotes_Title'};
- $T2H_THIS_SECTION = \@foot_lines;
- &$T2H_print_Footnotes(\*FILE);
- close(FILE) if $T2H_SPLIT;
-}
-
-if (@toc_lines)
-{
- print "# writing Toc in $docu_toc_file...\n" if $T2H_VERBOSE;
- open (FILE, "> $docu_toc_file") || die "$ERROR: Can't open $docu_toc_file for writing: $!\n"
- if $T2H_SPLIT;
- $T2H_HREF{This} = $T2H_HREF{Contents};
- $T2H_NAME{This} = $T2H_NAME{Contents};
- $T2H_THIS_SECTION = \@toc_lines;
- &$T2H_print_Toc(\*FILE);
- close(FILE) if $T2H_SPLIT;
-}
-
-if (@stoc_lines)
-{
- print "# writing Overview in $docu_stoc_file...\n" if $T2H_VERBOSE;
- open (FILE, "> $docu_stoc_file") || die "$ERROR: Can't open $docu_stoc_file for writing: $!\n"
- if $T2H_SPLIT;
-
- $T2H_HREF{This} = $T2H_HREF{Overview};
- $T2H_NAME{This} = $T2H_NAME{Overview};
- $T2H_THIS_SECTION = \@stoc_lines;
- unshift @$T2H_THIS_SECTION, "<BLOCKQUOTE>\n";
- push @$T2H_THIS_SECTION, "\n</BLOCKQUOTE>\n";
- &$T2H_print_Overview(\*FILE);
- close(FILE) if $T2H_SPLIT;
-}
-
-if ($about_body = &$T2H_about_body())
-{
- print "# writing About in $docu_about_file...\n" if $T2H_VERBOSE;
- open (FILE, "> $docu_about_file") || die "$ERROR: Can't open $docu_about_file for writing: $!\n"
- if $T2H_SPLIT;
-
- $T2H_HREF{This} = $T2H_HREF{About};
- $T2H_NAME{This} = $T2H_NAME{About};
- $T2H_THIS_SECTION = [$about_body];
- &$T2H_print_About(\*FILE);
- close(FILE) if $T2H_SPLIT;
-}
-
-unless ($T2H_SPLIT)
-{
- &$T2H_print_page_foot(\*FILE);
- close (FILE);
-}
-
-Finish:
-&l2h_FinishFromHtml if ($T2H_L2H);
-&l2h_Finish if($T2H_L2H);
-print "# that's all folks\n" if $T2H_VERBOSE;
-
-exit(0);
-
-#+++############################################################################
-# #
-# Low level functions #
-# #
-#---############################################################################
-
-sub LocateIncludeFile
-{
- my $file = shift;
- my $dir;
-
- return $file if (-e $file && -r $file);
- foreach $dir (@T2H_INCLUDE_DIRS)
- {
- return "$dir/$file" if (-e "$dir/$file" && -r "$dir/$file");
- }
- return undef;
-}
-
-sub clean_name
-{
- local ($_);
- $_ = &remove_style($_[0]);
- &unprotect_texi;
- return $_;
-}
-
-sub update_sec_num {
- local($name, $level) = @_;
- my $ret;
-
- $level--; # here we start at 0
- if ($name =~ /^appendix/ || defined(@appendix_sec_num)) {
- # appendix style
- if (defined(@appendix_sec_num)) {
- &incr_sec_num($level, @appendix_sec_num);
- } else {
- @appendix_sec_num = ('A', 0, 0, 0);
- }
- $ret = join('.', @appendix_sec_num[0..$level]);
- } else {
- # normal style
- if (defined(@normal_sec_num))
- {
- &incr_sec_num($level, @normal_sec_num);
- }
- else
- {
- @normal_sec_num = (1, 0, 0, 0);
- }
- $ret = join('.', @normal_sec_num[0..$level]);
- }
-
- $ret .= "." if $level == 0;
- return $ret;
-}
-
-sub incr_sec_num {
- local($level, $l);
- $level = shift(@_);
- $_[$level]++;
- foreach $l ($level+1 .. 3) {
- $_[$l] = 0;
- }
-}
-
-sub Sec2UpNode
-{
- my $sec = shift;
- my $num = $sec2number{$sec};
-
- return '' unless $num;
- return 'Top' unless $num =~ /\.\d+/;
- $num =~ s/\.[^\.]*$//;
- $num = $num . '.' unless $num =~ /\./;
- return $sec2node{$number2sec{$num}};
-}
-
-sub Sec2PrevNode
-{
- my $sec = shift;
- my $num = $sec2number{$sec};
- my ($i, $post);
-
- if ($num =~ /(\w+)(\.$|$)/)
- {
- $num = $`;
- $i = $1;
- $post = $2;
- if ($i eq 'A')
- {
- $i = $normal_sec_num[0];
- }
- elsif ($i ne '1')
- {
- # unfortunately, -- operator is not magical
- $i = chr(ord($i) + 1);
- }
- else
- {
- return '';
- }
- return $sec2node{$number2sec{$num . $i . $post}}
- }
- return '';
-}
-
-sub Sec2NextNode
-{
- my $sec = shift;
- my $num = $sec2number{$sec};
- my $i;
-
- if ($num =~ /(\w+)(\.$|$)/)
- {
- $num = $`;
- $i = $1;
- $post = $2;
- if ($post eq '.' && $i eq $normal_sec_num[0])
- {
- $i = 'A';
- }
- else
- {
- $i++;
- }
- return $sec2node{$number2sec{$num . $i . $post}}
- }
- return '';
-}
-
-sub check {
- local($_, %seen, %context, $before, $match, $after);
-
- while (<>) {
- if (/\@(\*|\.|\:|\@|\{|\})/) {
- $seen{$&}++;
- $context{$&} .= "> $_" if $T2H_VERBOSE;
- $_ = "$`XX$'";
- redo;
- }
- if (/\@(\w+)/) {
- ($before, $match, $after) = ($`, $&, $');
- if ($before =~ /\b[\w-]+$/ && $after =~ /^[\w-.]*\b/) { # e-mail address
- $seen{'e-mail address'}++;
- $context{'e-mail address'} .= "> $_" if $T2H_VERBOSE;
- } else {
- $seen{$match}++;
- $context{$match} .= "> $_" if $T2H_VERBOSE;
- }
- $match =~ s/^\@/X/;
- $_ = "$before$match$after";
- redo;
- }
- }
-
- foreach (sort(keys(%seen))) {
- if ($T2H_VERBOSE) {
- print "$_\n";
- print $context{$_};
- } else {
- print "$_ ($seen{$_})\n";
- }
- }
-}
-
-sub open {
- local($name) = @_;
-
- ++$fh_name;
- if (open($fh_name, $name)) {
- unshift(@fhs, $fh_name);
- } else {
- warn "$ERROR Can't read file $name: $!\n";
- }
-}
-
-sub init_input {
- @fhs = (); # hold the file handles to read
- @input_spool = (); # spooled lines to read
- $fh_name = 'FH000';
- &open($docu);
-}
-
-sub next_line {
- local($fh, $line);
-
- if (@input_spool) {
- $line = shift(@input_spool);
- return($line);
- }
- while (@fhs) {
- $fh = $fhs[0];
- $line = <$fh>;
- return($line) if $line;
- close($fh);
- shift(@fhs);
- }
- return(undef);
-}
-
-# used in pass 1, use &next_line
-sub skip_until {
- local($tag) = @_;
- local($_);
-
- while ($_ = &next_line) {
- return if /^\@end\s+$tag\s*$/;
- }
- die "* Failed to find '$tag' after: " . $lines[$#lines];
-}
-
-# used in pass 1 for l2h use &next_line
-sub string_until {
- local($tag) = @_;
- local($_, $string);
-
- while ($_ = &next_line) {
- return $string if /^\@end\s+$tag\s*$/;
-# $_ =~ s/hbox/mbox/g;
- $string = $string.$_;
- }
- die "* Failed to find '$tag' after: " . $lines[$#lines];
-}
-
-#
-# HTML stacking to have a better HTML output
-#
-
-sub html_reset {
- @html_stack = ('html');
- $html_element = 'body';
-}
-
-sub html_push {
- local($what) = @_;
- push(@html_stack, $html_element);
- $html_element = $what;
-}
-
-sub html_push_if {
- local($what) = @_;
- push(@html_stack, $html_element)
- if ($html_element && $html_element ne 'P');
- $html_element = $what;
-}
-
-sub html_pop {
- $html_element = pop(@html_stack);
-}
-
-sub html_pop_if {
- local($elt);
-
- if (@_) {
- foreach $elt (@_) {
- if ($elt eq $html_element) {
- $html_element = pop(@html_stack) if @html_stack;
- last;
- }
- }
- } else {
- $html_element = pop(@html_stack) if @html_stack;
- }
-}
-
-sub html_debug {
- local($what, $line) = @_;
- if ($T2H_DEBUG & $DEBUG_HTML)
- {
- $what = "\n" unless $what;
- return("<!-- $line @html_stack, $html_element -->$what")
- }
- return($what);
-}
-
-# to debug the output...
-sub debug {
- local($what, $line) = @_;
- return("<!-- $line -->$what")
- if $T2H_DEBUG & $DEBUG_HTML;
- return($what);
-}
-
-sub SimpleTexi2Html
-{
- local $_ = $_[0];
- &protect_texi;
- &protect_html;
- $_ = substitute_style($_);
- $_[0] = $_;
-}
-
-sub normalise_node {
- local $_ = $_[0];
- s/\s+/ /g;
- s/ $//;
- s/^ //;
- &protect_texi;
- &protect_html;
- $_ = substitute_style($_);
- $_[0] = $_;
-}
-
-sub menu_entry
-{
- my ($node, $name, $descr) = @_;
- my ($href, $entry);
-
- &normalise_node($node);
- $href = $node2href{$node};
- if ($href)
- {
- $descr =~ s/^\s+//;
- $descr =~ s/\s*$//;
- $descr = SimpleTexi2Html($descr);
- if ($T2H_NUMBER_SECTIONS && !$T2H_NODE_NAME_IN_MENU && $node2sec{$node})
- {
- $entry = $node2sec{$node};
- $name = '';
- }
- else
- {
- &normalise_node($name);
- $entry = ($name && ($name ne $node || ! $T2H_AVOID_MENU_REDUNDANCY)
- ? "$name : $node" : $node);
- }
-
- if ($T2H_AVOID_MENU_REDUNDANCY && $descr)
- {
- my $clean_entry = $entry;
- $clean_entry =~ s/^.*? // if ($clean_entry =~ /^([A-Z]|\d+)\.[\d\.]* /);
- $clean_entry =~ s/[^\w]//g;
- my $clean_descr = $descr;
- $clean_descr =~ s/[^\w]//g;
- $descr = '' if ($clean_entry eq $clean_descr)
- }
- push(@lines2,&debug('<TR><TD ALIGN="left" VALIGN="TOP">' .
- &t2h_anchor('', $href, $entry) .
- '</TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">' .
- $descr .
- "</TD></TR>\n", __LINE__));
- }
- elsif ($node =~ /^\(.*\)\w+/)
- {
- push(@lines2,&debug('<TR><TD ALIGN="left" VALIGN="TOP">' .
- $entry .
- '</TD><TD ALIGN="left" VALIGN="TOP">' . $descr .
- "</TD></TR>\n", __LINE__))
- }
- else
- {
- warn "$ERROR Undefined node of menu_entry ($node): $_";
- }
-}
-
-sub do_ctrl { "^$_[0]" }
-
-sub do_email {
- local($addr, $text) = split(/,\s*/, $_[0]);
-
- $text = $addr unless $text;
- &t2h_anchor('', "mailto:$addr", $text);
-}
-
-sub do_sc
-{
- # l2h does this much better
- return &l2h_ToLatex("{\\sc ".&unprotect_html($_[0])."}") if ($T2H_L2H);
- return "\U$_[0]\E";
-}
-
-sub do_math
-{
- return &l2h_ToLatex("\$".&unprotect_html($_[0])."\$") if ($T2H_L2H);
- return "<EM>".$text."</EM>";
-}
-
-sub do_uref {
- local($url, $text, $only_text) = split(/,\s*/, $_[0]);
-
- $text = $only_text if $only_text;
- $text = $url unless $text;
- &t2h_anchor('', $url, $text);
-}
-
-sub do_url { &t2h_anchor('', $_[0], $_[0]) }
-
-sub do_acronym
-{
- return '<FONT SIZE="-1">' . $_[0] . '</FONT>';
-}
-
-sub do_accent
-{
- return "&$_[0]acute;" if $_[1] eq 'H';
- return "$_[0]." if $_[1] eq 'dotaccent';
- return "$_[0]*" if $_[1] eq 'ringaccent';
- return "$_[0]".'[' if $_[1] eq 'tieaccent';
- return "$_[0]".'(' if $_[1] eq 'u';
- return "$_[0]_" if $_[1] eq 'ubaraccent';
- return ".$_[0]" if $_[1] eq 'udotaccent';
- return "$_[0]&lt;" if $_[1] eq 'v';
- return "&$_[0]cedil;" if $_[1] eq ',';
- return "$_[0]" if $_[1] eq 'dotless';
- return undef;
-}
-
-sub apply_style {
- local($texi_style, $text) = @_;
- local($style);
-
- $style = $style_map{$texi_style};
- if (defined($style)) { # known style
- if ($style =~ /^\"/) { # add quotes
- $style = $';
- $text = "\`$text\'";
- }
- if ($style =~ /^\&/) { # custom
- $style = $';
- $text = &$style($text, $texi_style);
- } elsif ($style) { # good style
- $text = "<$style>$text</$style>";
- } else { # no style
- }
- } else { # unknown style
- $text = undef;
- }
- return($text);
-}
-
-# remove Texinfo styles
-sub remove_style {
- local($_) = @_;
- 1 while(s/\@\w+{([^\{\}]+)}/$1/g);
- return($_);
-}
-
-sub remove_things
-{
- local ($_) = @_;
- s|\@(\w+)\{\}|$1|g;
- return $_;
-}
-
-sub substitute_style {
- local($_) = @_;
- local($changed, $done, $style, $text);
-
- &simple_substitutions;
- $changed = 1;
- while ($changed) {
- $changed = 0;
- $done = '';
- while (/\@(\w+){([^\{\}]+)}/ || /\@(,){([^\{\}]+)}/) {
- $text = &apply_style($1, $2);
- if ($text) {
- $_ = "$`$text$'";
- $changed = 1;
- } else {
- $done .= "$`\@$1";
- $_ = "{$2}$'";
- }
- }
- $_ = $done . $_;
- }
- return($_);
-}
-
-sub t2h_anchor {
- local($name, $href, $text, $newline, $extra_attribs) = @_;
- local($result);
-
- $result = "<A";
- $result .= " NAME=\"$name\"" if $name;
- if ($href)
- {
- $href =~ s|^$T2H_HREF_DIR_INSTEAD_FILE|./|
- if ($T2H_HREF_DIR_INSTEAD_FILE);
- $result .= ($href =~ /\"/ ? " HREF='$href'" : " HREF=\"$href\"");
- }
- $result .= " $extra_attribs" if $extra_attribs;
- $result .= ">$text</A>";
- $result .= "\n" if $newline;
- return($result);
-}
-
-sub pretty_date {
- local(@MoY, $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst);
-
- @MoY = ('January', 'February', 'March', 'April', 'May', 'June',
- 'July', 'August', 'September', 'October', 'November', 'December');
- ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time);
- $year += ($year < 70) ? 2000 : 1900;
- # obachman: Let's do it as the Americans do
- return("$MoY[$mon], $mday $year");
-}
-
-sub doc_href {
- local($num) = @_;
-
- return("${docu_name}_$num.$docu_ext");
-}
-
-sub sec_href
-{
- return $node2href{$sec2node{$_[0]}};
-}
-
-sub next_doc {
- $docu_doc = &doc_href(++$doc_num);
-}
-
-sub t2h_print_lines {
- my ($fh, $lines) = @_;
- local($_);
- $lines = $T2H_THIS_SECTION unless $lines;
- my $cnt = 0;
- for (@$lines)
- {
- $_ = l2h_FromHtml($_) if ($T2H_L2H);
- if (/^$PROTECTTAG/o) {
- $_ = $tag2pro{$_};
- } else {
- &unprotect_texi;
- }
- print $fh $_;
- $cnt += split(/\W*\s+\W*/);
- }
- return $cnt;
-}
-
-sub protect_texi {
- # protect @ { } ` '
- s/\@\@/$;0/go;
- s/\@\{/$;1/go;
- s/\@\}/$;2/go;
- s/\@\`/$;3/go;
- s/\@\'/$;4/go;
-}
-
-sub protect_html {
- local($what) = @_;
- # protect & < >
- $what =~ s/\&/\&\#38;/g;
- $what =~ s/\</\&\#60;/g;
- $what =~ s/\>/\&\#62;/g;
- # restore anything in quotes
- # this fixes my problem where I had:
- # < IMG SRC="leftarrow.gif" ALT="<--" > but what if I wanted &#60; in my ALT text ??
- # maybe byte stuffing or some other technique should be used.
- $what =~ s/\"([^\&]+)\&\#60;(.*)\"/"$1<$2"/g;
- $what =~ s/\"([^\&]+)\&\#62;(.*)\"/"$1>$2"/g;
- $what =~ s/\"([^\&]+)\&\#38;(.*)\"/"$1&$2"/g;
- # but recognize some HTML things
- $what =~ s/\&\#60;\/A\&\#62;/<\/A>/g; # </A>
- $what =~ s/\&\#60;A ([^\&]+)\&\#62;/<A $1>/g; # <A [^&]+>
- $what =~ s/\&\#60;IMG ([^\&]+)\&\#62;/<IMG $1>/g; # <IMG [^&]+>
- return($what);
-}
-
-sub unprotect_texi {
- s/$;0/\@/go;
- s/$;1/\{/go;
- s/$;2/\}/go;
- s/$;3/\`/go;
- s/$;4/\'/go;
-}
-
-sub Unprotect_texi
-{
- local $_ = shift;
- &unprotect_texi;
- return($_);
-}
-
-sub unprotect_html {
- local($what) = @_;
- $what =~ s/\&\#38;/\&/g;
- $what =~ s/\&\#60;/\</g;
- $what =~ s/\&\#62;/\>/g;
- return($what);
-}
-
-sub t2h_print_label
-{
- my $fh = shift;
- my $href = shift || $T2H_HREF{This};
- $href =~ s/.*#(.*)$/$1/;
- print $fh qq{<A NAME="$href"></A>\n};
-}
-
-##############################################################################
-
- # These next few lines are legal in both Perl and nroff.
-
-.00 ; # finish .ig
-
-'di \" finish diversion--previous line must be blank
-.nr nl 0-1 \" fake up transition to first page again
-.nr % 0 \" start at page 1
-'; __END__ ############# From here on it's a standard manual page ############
-.so /usr/local/man/man1/texi2html.1
diff --git a/readline-4.3/doc/texinfo.tex b/readline-4.3/doc/texinfo.tex
deleted file mode 100644
index c49af9f..0000000
--- a/readline-4.3/doc/texinfo.tex
+++ /dev/null
@@ -1,5992 +0,0 @@
-% texinfo.tex -- TeX macros to handle Texinfo files.
-%
-% Load plain if necessary, i.e., if running under initex.
-\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
-%
-\def\texinfoversion{1999-09-25.10}
-%
-% Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99
-% Free Software Foundation, Inc.
-%
-% This texinfo.tex file is free software; you can redistribute it and/or
-% modify it under the terms of the GNU General Public License as
-% published by the Free Software Foundation; either version 2, or (at
-% your option) any later version.
-%
-% This texinfo.tex file is distributed in the hope that it will be
-% useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-% of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-% General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with this texinfo.tex file; see the file COPYING. If not, write
-% to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-% Boston, MA 02111-1307, USA.
-%
-% In other words, you are welcome to use, share and improve this program.
-% You are forbidden to forbid anyone else to use, share and improve
-% what you give them. Help stamp out software-hoarding!
-%
-% Please try the latest version of texinfo.tex before submitting bug
-% reports; you can get the latest version from:
-% ftp://ftp.gnu.org/gnu/texinfo.tex
-% (and all GNU mirrors, see http://www.gnu.org/order/ftp.html)
-% ftp://texinfo.org/tex/texinfo.tex
-% ftp://us.ctan.org/macros/texinfo/texinfo.tex
-% (and all CTAN mirrors, finger ctan@us.ctan.org for a list).
-% /home/gd/gnu/doc/texinfo.tex on the GNU machines.
-% The texinfo.tex in any given Texinfo distribution could well be out
-% of date, so if that's what you're using, please check.
-% Texinfo has a small home page at http://texinfo.org/.
-%
-% Send bug reports to bug-texinfo@gnu.org. Please include including a
-% complete document in each bug report with which we can reproduce the
-% problem. Patches are, of course, greatly appreciated.
-%
-% To process a Texinfo manual with TeX, it's most reliable to use the
-% texi2dvi shell script that comes with the distribution. For a simple
-% manual foo.texi, however, you can get away with this:
-% tex foo.texi
-% texindex foo.??
-% tex foo.texi
-% tex foo.texi
-% dvips foo.dvi -o # or whatever, to process the dvi file; this makes foo.ps.
-% The extra runs of TeX get the cross-reference information correct.
-% Sometimes one run after texindex suffices, and sometimes you need more
-% than two; texi2dvi does it as many times as necessary.
-%
-% It is possible to adapt texinfo.tex for other languages. You can get
-% the existing language-specific files from ftp://ftp.gnu.org/gnu/texinfo/.
-
-\message{Loading texinfo [version \texinfoversion]:}
-
-% If in a .fmt file, print the version number
-% and turn on active characters that we couldn't do earlier because
-% they might have appeared in the input file name.
-\everyjob{\message{[Texinfo version \texinfoversion]}%
- \catcode`+=\active \catcode`\_=\active}
-
-% Save some parts of plain tex whose names we will redefine.
-\let\ptexb=\b
-\let\ptexbullet=\bullet
-\let\ptexc=\c
-\let\ptexcomma=\,
-\let\ptexdot=\.
-\let\ptexdots=\dots
-\let\ptexend=\end
-\let\ptexequiv=\equiv
-\let\ptexexclam=\!
-\let\ptexi=\i
-\let\ptexlbrace=\{
-\let\ptexrbrace=\}
-\let\ptexstar=\*
-\let\ptext=\t
-
-% We never want plain's outer \+ definition in Texinfo.
-% For @tex, we can use \tabalign.
-\let\+ = \relax
-
-\message{Basics,}
-\chardef\other=12
-
-% If this character appears in an error message or help string, it
-% starts a new line in the output.
-\newlinechar = `^^J
-
-% Set up fixed words for English if not already set.
-\ifx\putwordAppendix\undefined \gdef\putwordAppendix{Appendix}\fi
-\ifx\putwordChapter\undefined \gdef\putwordChapter{Chapter}\fi
-\ifx\putwordfile\undefined \gdef\putwordfile{file}\fi
-\ifx\putwordin\undefined \gdef\putwordin{in}\fi
-\ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi
-\ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi
-\ifx\putwordInfo\undefined \gdef\putwordInfo{Info}\fi
-\ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi
-\ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi
-\ifx\putwordNoTitle\undefined \gdef\putwordNoTitle{No Title}\fi
-\ifx\putwordof\undefined \gdef\putwordof{of}\fi
-\ifx\putwordon\undefined \gdef\putwordon{on}\fi
-\ifx\putwordpage\undefined \gdef\putwordpage{page}\fi
-\ifx\putwordsection\undefined \gdef\putwordsection{section}\fi
-\ifx\putwordSection\undefined \gdef\putwordSection{Section}\fi
-\ifx\putwordsee\undefined \gdef\putwordsee{see}\fi
-\ifx\putwordSee\undefined \gdef\putwordSee{See}\fi
-\ifx\putwordShortTOC\undefined \gdef\putwordShortTOC{Short Contents}\fi
-\ifx\putwordTOC\undefined \gdef\putwordTOC{Table of Contents}\fi
-%
-\ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi
-\ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi
-\ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi
-\ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi
-\ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi
-\ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi
-\ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi
-\ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi
-\ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi
-\ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi
-\ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi
-\ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi
-%
-\ifx\putwordDefmac\undefined \gdef\putwordDefmac{Macro}\fi
-\ifx\putwordDefspec\undefined \gdef\putwordDefspec{Special Form}\fi
-\ifx\putwordDefvar\undefined \gdef\putwordDefvar{Variable}\fi
-\ifx\putwordDefopt\undefined \gdef\putwordDefopt{User Option}\fi
-\ifx\putwordDeftypevar\undefined\gdef\putwordDeftypevar{Variable}\fi
-\ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi
-\ifx\putwordDeftypefun\undefined\gdef\putwordDeftypefun{Function}\fi
-
-% Ignore a token.
-%
-\def\gobble#1{}
-
-\hyphenation{ap-pen-dix}
-\hyphenation{mini-buf-fer mini-buf-fers}
-\hyphenation{eshell}
-\hyphenation{white-space}
-
-% Margin to add to right of even pages, to left of odd pages.
-\newdimen \bindingoffset
-\newdimen \normaloffset
-\newdimen\pagewidth \newdimen\pageheight
-
-% Sometimes it is convenient to have everything in the transcript file
-% and nothing on the terminal. We don't just call \tracingall here,
-% since that produces some useless output on the terminal.
-%
-\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}%
-\ifx\eTeXversion\undefined
-\def\loggingall{\tracingcommands2 \tracingstats2
- \tracingpages1 \tracingoutput1 \tracinglostchars1
- \tracingmacros2 \tracingparagraphs1 \tracingrestores1
- \showboxbreadth\maxdimen\showboxdepth\maxdimen
-}%
-\else
-\def\loggingall{\tracingcommands3 \tracingstats2
- \tracingpages1 \tracingoutput1 \tracinglostchars1
- \tracingmacros2 \tracingparagraphs1 \tracingrestores1
- \tracingscantokens1 \tracingassigns1 \tracingifs1
- \tracinggroups1 \tracingnesting2
- \showboxbreadth\maxdimen\showboxdepth\maxdimen
-}%
-\fi
-
-% For @cropmarks command.
-% Do @cropmarks to get crop marks.
-%
-\newif\ifcropmarks
-\let\cropmarks = \cropmarkstrue
-%
-% Dimensions to add cropmarks at corners.
-% Added by P. A. MacKay, 12 Nov. 1986
-%
-\newdimen\outerhsize \newdimen\outervsize % set by the paper size routines
-\newdimen\cornerlong \cornerlong=1pc
-\newdimen\cornerthick \cornerthick=.3pt
-\newdimen\topandbottommargin \topandbottommargin=.75in
-
-% Main output routine.
-\chardef\PAGE = 255
-\output = {\onepageout{\pagecontents\PAGE}}
-
-\newbox\headlinebox
-\newbox\footlinebox
-
-% \onepageout takes a vbox as an argument. Note that \pagecontents
-% does insertions, but you have to call it yourself.
-\def\onepageout#1{%
- \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi
- %
- \ifodd\pageno \advance\hoffset by \bindingoffset
- \else \advance\hoffset by -\bindingoffset\fi
- %
- % Do this outside of the \shipout so @code etc. will be expanded in
- % the headline as they should be, not taken literally (outputting ''code).
- \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}%
- \setbox\footlinebox = \vbox{\let\hsize=\pagewidth \makefootline}%
- %
- {%
- % Have to do this stuff outside the \shipout because we want it to
- % take effect in \write's, yet the group defined by the \vbox ends
- % before the \shipout runs.
- %
- \escapechar = `\\ % use backslash in output files.
- \indexdummies % don't expand commands in the output.
- \normalturnoffactive % \ in index entries must not stay \, e.g., if
- % the page break happens to be in the middle of an example.
- \shipout\vbox{%
- \ifcropmarks \vbox to \outervsize\bgroup
- \hsize = \outerhsize
- \vskip-\topandbottommargin
- \vtop to0pt{%
- \line{\ewtop\hfil\ewtop}%
- \nointerlineskip
- \line{%
- \vbox{\moveleft\cornerthick\nstop}%
- \hfill
- \vbox{\moveright\cornerthick\nstop}%
- }%
- \vss}%
- \vskip\topandbottommargin
- \line\bgroup
- \hfil % center the page within the outer (page) hsize.
- \ifodd\pageno\hskip\bindingoffset\fi
- \vbox\bgroup
- \fi
- %
- \unvbox\headlinebox
- \pagebody{#1}%
- \ifdim\ht\footlinebox > 0pt
- % Only leave this space if the footline is nonempty.
- % (We lessened \vsize for it in \oddfootingxxx.)
- % The \baselineskip=24pt in plain's \makefootline has no effect.
- \vskip 2\baselineskip
- \unvbox\footlinebox
- \fi
- %
- \ifpdfmakepagedest \pdfmkdest{\the\pageno} \fi
- %
- \ifcropmarks
- \egroup % end of \vbox\bgroup
- \hfil\egroup % end of (centering) \line\bgroup
- \vskip\topandbottommargin plus1fill minus1fill
- \boxmaxdepth = \cornerthick
- \vbox to0pt{\vss
- \line{%
- \vbox{\moveleft\cornerthick\nsbot}%
- \hfill
- \vbox{\moveright\cornerthick\nsbot}%
- }%
- \nointerlineskip
- \line{\ewbot\hfil\ewbot}%
- }%
- \egroup % \vbox from first cropmarks clause
- \fi
- }% end of \shipout\vbox
- }% end of group with \turnoffactive
- \advancepageno
- \ifnum\outputpenalty>-20000 \else\dosupereject\fi
-}
-
-\newinsert\margin \dimen\margin=\maxdimen
-
-\def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}}
-{\catcode`\@ =11
-\gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi
-% marginal hacks, juha@viisa.uucp (Juha Takala)
-\ifvoid\margin\else % marginal info is present
- \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi
-\dimen@=\dp#1 \unvbox#1
-\ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi
-\ifr@ggedbottom \kern-\dimen@ \vfil \fi}
-}
-
-% Here are the rules for the cropmarks. Note that they are
-% offset so that the space between them is truly \outerhsize or \outervsize
-% (P. A. MacKay, 12 November, 1986)
-%
-\def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong}
-\def\nstop{\vbox
- {\hrule height\cornerthick depth\cornerlong width\cornerthick}}
-\def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong}
-\def\nsbot{\vbox
- {\hrule height\cornerlong depth\cornerthick width\cornerthick}}
-
-% Parse an argument, then pass it to #1. The argument is the rest of
-% the input line (except we remove a trailing comment). #1 should be a
-% macro which expects an ordinary undelimited TeX argument.
-%
-\def\parsearg#1{%
- \let\next = #1%
- \begingroup
- \obeylines
- \futurelet\temp\parseargx
-}
-
-% If the next token is an obeyed space (from an @example environment or
-% the like), remove it and recurse. Otherwise, we're done.
-\def\parseargx{%
- % \obeyedspace is defined far below, after the definition of \sepspaces.
- \ifx\obeyedspace\temp
- \expandafter\parseargdiscardspace
- \else
- \expandafter\parseargline
- \fi
-}
-
-% Remove a single space (as the delimiter token to the macro call).
-{\obeyspaces %
- \gdef\parseargdiscardspace {\futurelet\temp\parseargx}}
-
-{\obeylines %
- \gdef\parseargline#1^^M{%
- \endgroup % End of the group started in \parsearg.
- %
- % First remove any @c comment, then any @comment.
- % Result of each macro is put in \toks0.
- \argremovec #1\c\relax %
- \expandafter\argremovecomment \the\toks0 \comment\relax %
- %
- % Call the caller's macro, saved as \next in \parsearg.
- \expandafter\next\expandafter{\the\toks0}%
- }%
-}
-
-% Since all \c{,omment} does is throw away the argument, we can let TeX
-% do that for us. The \relax here is matched by the \relax in the call
-% in \parseargline; it could be more or less anything, its purpose is
-% just to delimit the argument to the \c.
-\def\argremovec#1\c#2\relax{\toks0 = {#1}}
-\def\argremovecomment#1\comment#2\relax{\toks0 = {#1}}
-
-% \argremovec{,omment} might leave us with trailing spaces, though; e.g.,
-% @end itemize @c foo
-% will have two active spaces as part of the argument with the
-% `itemize'. Here we remove all active spaces from #1, and assign the
-% result to \toks0.
-%
-% This loses if there are any *other* active characters besides spaces
-% in the argument -- _ ^ +, for example -- since they get expanded.
-% Fortunately, Texinfo does not define any such commands. (If it ever
-% does, the catcode of the characters in questionwill have to be changed
-% here.) But this means we cannot call \removeactivespaces as part of
-% \argremovec{,omment}, since @c uses \parsearg, and thus the argument
-% that \parsearg gets might well have any character at all in it.
-%
-\def\removeactivespaces#1{%
- \begingroup
- \ignoreactivespaces
- \edef\temp{#1}%
- \global\toks0 = \expandafter{\temp}%
- \endgroup
-}
-
-% Change the active space to expand to nothing.
-%
-\begingroup
- \obeyspaces
- \gdef\ignoreactivespaces{\obeyspaces\let =\empty}
-\endgroup
-
-
-\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next}
-
-%% These are used to keep @begin/@end levels from running away
-%% Call \inENV within environments (after a \begingroup)
-\newif\ifENV \ENVfalse \def\inENV{\ifENV\relax\else\ENVtrue\fi}
-\def\ENVcheck{%
-\ifENV\errmessage{Still within an environment; press RETURN to continue}
-\endgroup\fi} % This is not perfect, but it should reduce lossage
-
-% @begin foo is the same as @foo, for now.
-\newhelp\EMsimple{Press RETURN to continue.}
-
-\outer\def\begin{\parsearg\beginxxx}
-
-\def\beginxxx #1{%
-\expandafter\ifx\csname #1\endcsname\relax
-{\errhelp=\EMsimple \errmessage{Undefined command @begin #1}}\else
-\csname #1\endcsname\fi}
-
-% @end foo executes the definition of \Efoo.
-%
-\def\end{\parsearg\endxxx}
-\def\endxxx #1{%
- \removeactivespaces{#1}%
- \edef\endthing{\the\toks0}%
- %
- \expandafter\ifx\csname E\endthing\endcsname\relax
- \expandafter\ifx\csname \endthing\endcsname\relax
- % There's no \foo, i.e., no ``environment'' foo.
- \errhelp = \EMsimple
- \errmessage{Undefined command `@end \endthing'}%
- \else
- \unmatchedenderror\endthing
- \fi
- \else
- % Everything's ok; the right environment has been started.
- \csname E\endthing\endcsname
- \fi
-}
-
-% There is an environment #1, but it hasn't been started. Give an error.
-%
-\def\unmatchedenderror#1{%
- \errhelp = \EMsimple
- \errmessage{This `@end #1' doesn't have a matching `@#1'}%
-}
-
-% Define the control sequence \E#1 to give an unmatched @end error.
-%
-\def\defineunmatchedend#1{%
- \expandafter\def\csname E#1\endcsname{\unmatchedenderror{#1}}%
-}
-
-
-% Single-spacing is done by various environments (specifically, in
-% \nonfillstart and \quotations).
-\newskip\singlespaceskip \singlespaceskip = 12.5pt
-\def\singlespace{%
- % Why was this kern here? It messes up equalizing space above and below
- % environments. --karl, 6may93
- %{\advance \baselineskip by -\singlespaceskip
- %\kern \baselineskip}%
- \setleading \singlespaceskip
-}
-
-%% Simple single-character @ commands
-
-% @@ prints an @
-% Kludge this until the fonts are right (grr).
-\def\@{{\tt\char64}}
-
-% This is turned off because it was never documented
-% and you can use @w{...} around a quote to suppress ligatures.
-%% Define @` and @' to be the same as ` and '
-%% but suppressing ligatures.
-%\def\`{{`}}
-%\def\'{{'}}
-
-% Used to generate quoted braces.
-\def\mylbrace {{\tt\char123}}
-\def\myrbrace {{\tt\char125}}
-\let\{=\mylbrace
-\let\}=\myrbrace
-\begingroup
- % Definitions to produce actual \{ & \} command in an index.
- \catcode`\{ = 12 \catcode`\} = 12
- \catcode`\[ = 1 \catcode`\] = 2
- \catcode`\@ = 0 \catcode`\\ = 12
- @gdef@lbracecmd[\{]%
- @gdef@rbracecmd[\}]%
-@endgroup
-
-% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent
-% Others are defined by plain TeX: @` @' @" @^ @~ @= @v @H.
-\let\, = \c
-\let\dotaccent = \.
-\def\ringaccent#1{{\accent23 #1}}
-\let\tieaccent = \t
-\let\ubaraccent = \b
-\let\udotaccent = \d
-
-% Other special characters: @questiondown @exclamdown
-% Plain TeX defines: @AA @AE @O @OE @L (and lowercase versions) @ss.
-\def\questiondown{?`}
-\def\exclamdown{!`}
-
-% Dotless i and dotless j, used for accents.
-\def\imacro{i}
-\def\jmacro{j}
-\def\dotless#1{%
- \def\temp{#1}%
- \ifx\temp\imacro \ptexi
- \else\ifx\temp\jmacro \j
- \else \errmessage{@dotless can be used only with i or j}%
- \fi\fi
-}
-
-% Be sure we're in horizontal mode when doing a tie, since we make space
-% equivalent to this in @example-like environments. Otherwise, a space
-% at the beginning of a line will start with \penalty -- and
-% since \penalty is valid in vertical mode, we'd end up putting the
-% penalty on the vertical list instead of in the new paragraph.
-{\catcode`@ = 11
- % Avoid using \@M directly, because that causes trouble
- % if the definition is written into an index file.
- \global\let\tiepenalty = \@M
- \gdef\tie{\leavevmode\penalty\tiepenalty\ }
-}
-
-% @: forces normal size whitespace following.
-\def\:{\spacefactor=1000 }
-
-% @* forces a line break.
-\def\*{\hfil\break\hbox{}\ignorespaces}
-
-% @. is an end-of-sentence period.
-\def\.{.\spacefactor=3000 }
-
-% @! is an end-of-sentence bang.
-\def\!{!\spacefactor=3000 }
-
-% @? is an end-of-sentence query.
-\def\?{?\spacefactor=3000 }
-
-% @w prevents a word break. Without the \leavevmode, @w at the
-% beginning of a paragraph, when TeX is still in vertical mode, would
-% produce a whole line of output instead of starting the paragraph.
-\def\w#1{\leavevmode\hbox{#1}}
-
-% @group ... @end group forces ... to be all on one page, by enclosing
-% it in a TeX vbox. We use \vtop instead of \vbox to construct the box
-% to keep its height that of a normal line. According to the rules for
-% \topskip (p.114 of the TeXbook), the glue inserted is
-% max (\topskip - \ht (first item), 0). If that height is large,
-% therefore, no glue is inserted, and the space between the headline and
-% the text is small, which looks bad.
-%
-\def\group{\begingroup
- \ifnum\catcode13=\active \else
- \errhelp = \groupinvalidhelp
- \errmessage{@group invalid in context where filling is enabled}%
- \fi
- %
- % The \vtop we start below produces a box with normal height and large
- % depth; thus, TeX puts \baselineskip glue before it, and (when the
- % next line of text is done) \lineskip glue after it. (See p.82 of
- % the TeXbook.) Thus, space below is not quite equal to space
- % above. But it's pretty close.
- \def\Egroup{%
- \egroup % End the \vtop.
- \endgroup % End the \group.
- }%
- %
- \vtop\bgroup
- % We have to put a strut on the last line in case the @group is in
- % the midst of an example, rather than completely enclosing it.
- % Otherwise, the interline space between the last line of the group
- % and the first line afterwards is too small. But we can't put the
- % strut in \Egroup, since there it would be on a line by itself.
- % Hence this just inserts a strut at the beginning of each line.
- \everypar = {\strut}%
- %
- % Since we have a strut on every line, we don't need any of TeX's
- % normal interline spacing.
- \offinterlineskip
- %
- % OK, but now we have to do something about blank
- % lines in the input in @example-like environments, which normally
- % just turn into \lisppar, which will insert no space now that we've
- % turned off the interline space. Simplest is to make them be an
- % empty paragraph.
- \ifx\par\lisppar
- \edef\par{\leavevmode \par}%
- %
- % Reset ^^M's definition to new definition of \par.
- \obeylines
- \fi
- %
- % Do @comment since we are called inside an environment such as
- % @example, where each end-of-line in the input causes an
- % end-of-line in the output. We don't want the end-of-line after
- % the `@group' to put extra space in the output. Since @group
- % should appear on a line by itself (according to the Texinfo
- % manual), we don't worry about eating any user text.
- \comment
-}
-%
-% TeX puts in an \escapechar (i.e., `@') at the beginning of the help
-% message, so this ends up printing `@group can only ...'.
-%
-\newhelp\groupinvalidhelp{%
-group can only be used in environments such as @example,^^J%
-where each line of input produces a line of output.}
-
-% @need space-in-mils
-% forces a page break if there is not space-in-mils remaining.
-
-\newdimen\mil \mil=0.001in
-
-\def\need{\parsearg\needx}
-
-% Old definition--didn't work.
-%\def\needx #1{\par %
-%% This method tries to make TeX break the page naturally
-%% if the depth of the box does not fit.
-%{\baselineskip=0pt%
-%\vtop to #1\mil{\vfil}\kern -#1\mil\nobreak
-%\prevdepth=-1000pt
-%}}
-
-\def\needx#1{%
- % Ensure vertical mode, so we don't make a big box in the middle of a
- % paragraph.
- \par
- %
- % If the @need value is less than one line space, it's useless.
- \dimen0 = #1\mil
- \dimen2 = \ht\strutbox
- \advance\dimen2 by \dp\strutbox
- \ifdim\dimen0 > \dimen2
- %
- % Do a \strut just to make the height of this box be normal, so the
- % normal leading is inserted relative to the preceding line.
- % And a page break here is fine.
- \vtop to #1\mil{\strut\vfil}%
- %
- % TeX does not even consider page breaks if a penalty added to the
- % main vertical list is 10000 or more. But in order to see if the
- % empty box we just added fits on the page, we must make it consider
- % page breaks. On the other hand, we don't want to actually break the
- % page after the empty box. So we use a penalty of 9999.
- %
- % There is an extremely small chance that TeX will actually break the
- % page at this \penalty, if there are no other feasible breakpoints in
- % sight. (If the user is using lots of big @group commands, which
- % almost-but-not-quite fill up a page, TeX will have a hard time doing
- % good page breaking, for example.) However, I could not construct an
- % example where a page broke at this \penalty; if it happens in a real
- % document, then we can reconsider our strategy.
- \penalty9999
- %
- % Back up by the size of the box, whether we did a page break or not.
- \kern -#1\mil
- %
- % Do not allow a page break right after this kern.
- \nobreak
- \fi
-}
-
-% @br forces paragraph break
-
-\let\br = \par
-
-% @dots{} output an ellipsis using the current font.
-% We do .5em per period so that it has the same spacing in a typewriter
-% font as three actual period characters.
-%
-\def\dots{%
- \leavevmode
- \hbox to 1.5em{%
- \hskip 0pt plus 0.25fil minus 0.25fil
- .\hss.\hss.%
- \hskip 0pt plus 0.5fil minus 0.5fil
- }%
-}
-
-% @enddots{} is an end-of-sentence ellipsis.
-%
-\def\enddots{%
- \leavevmode
- \hbox to 2em{%
- \hskip 0pt plus 0.25fil minus 0.25fil
- .\hss.\hss.\hss.%
- \hskip 0pt plus 0.5fil minus 0.5fil
- }%
- \spacefactor=3000
-}
-
-
-% @page forces the start of a new page
-%
-\def\page{\par\vfill\supereject}
-
-% @exdent text....
-% outputs text on separate line in roman font, starting at standard page margin
-
-% This records the amount of indent in the innermost environment.
-% That's how much \exdent should take out.
-\newskip\exdentamount
-
-% This defn is used inside fill environments such as @defun.
-\def\exdent{\parsearg\exdentyyy}
-\def\exdentyyy #1{{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break}}
-
-% This defn is used inside nofill environments such as @example.
-\def\nofillexdent{\parsearg\nofillexdentyyy}
-\def\nofillexdentyyy #1{{\advance \leftskip by -\exdentamount
-\leftline{\hskip\leftskip{\rm#1}}}}
-
-% @inmargin{TEXT} puts TEXT in the margin next to the current paragraph.
-
-\def\inmargin#1{%
-\strut\vadjust{\nobreak\kern-\strutdepth
- \vtop to \strutdepth{\baselineskip\strutdepth\vss
- \llap{\rightskip=\inmarginspacing \vbox{\noindent #1}}\null}}}
-\newskip\inmarginspacing \inmarginspacing=1cm
-\def\strutdepth{\dp\strutbox}
-
-%\hbox{{\rm#1}}\hfil\break}}
-
-% @include file insert text of that file as input.
-% Allow normal characters that we make active in the argument (a file name).
-\def\include{\begingroup
- \catcode`\\=12
- \catcode`~=12
- \catcode`^=12
- \catcode`_=12
- \catcode`|=12
- \catcode`<=12
- \catcode`>=12
- \catcode`+=12
- \parsearg\includezzz}
-% Restore active chars for included file.
-\def\includezzz#1{\endgroup\begingroup
- % Read the included file in a group so nested @include's work.
- \def\thisfile{#1}%
- \input\thisfile
-\endgroup}
-
-\def\thisfile{}
-
-% @center line outputs that line, centered
-
-\def\center{\parsearg\centerzzz}
-\def\centerzzz #1{{\advance\hsize by -\leftskip
-\advance\hsize by -\rightskip
-\centerline{#1}}}
-
-% @sp n outputs n lines of vertical space
-
-\def\sp{\parsearg\spxxx}
-\def\spxxx #1{\vskip #1\baselineskip}
-
-% @comment ...line which is ignored...
-% @c is the same as @comment
-% @ignore ... @end ignore is another way to write a comment
-
-\def\comment{\begingroup \catcode`\^^M=\other%
-\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other%
-\commentxxx}
-{\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}}
-
-\let\c=\comment
-
-% @paragraphindent NCHARS
-% We'll use ems for NCHARS, close enough.
-% We cannot implement @paragraphindent asis, though.
-%
-\def\asisword{asis} % no translation, these are keywords
-\def\noneword{none}
-%
-\def\paragraphindent{\parsearg\doparagraphindent}
-\def\doparagraphindent#1{%
- \def\temp{#1}%
- \ifx\temp\asisword
- \else
- \ifx\temp\noneword
- \defaultparindent = 0pt
- \else
- \defaultparindent = #1em
- \fi
- \fi
- \parindent = \defaultparindent
-}
-
-% @exampleindent NCHARS
-% We'll use ems for NCHARS like @paragraphindent.
-% It seems @exampleindent asis isn't necessary, but
-% I preserve it to make it similar to @paragraphindent.
-\def\exampleindent{\parsearg\doexampleindent}
-\def\doexampleindent#1{%
- \def\temp{#1}%
- \ifx\temp\asisword
- \else
- \ifx\temp\noneword
- \lispnarrowing = 0pt
- \else
- \lispnarrowing = #1em
- \fi
- \fi
-}
-
-% @asis just yields its argument. Used with @table, for example.
-%
-\def\asis#1{#1}
-
-% @math means output in math mode.
-% We don't use $'s directly in the definition of \math because control
-% sequences like \math are expanded when the toc file is written. Then,
-% we read the toc file back, the $'s will be normal characters (as they
-% should be, according to the definition of Texinfo). So we must use a
-% control sequence to switch into and out of math mode.
-%
-% This isn't quite enough for @math to work properly in indices, but it
-% seems unlikely it will ever be needed there.
-%
-\let\implicitmath = $
-\def\math#1{\implicitmath #1\implicitmath}
-
-% @bullet and @minus need the same treatment as @math, just above.
-\def\bullet{\implicitmath\ptexbullet\implicitmath}
-\def\minus{\implicitmath-\implicitmath}
-
-% @refill is a no-op.
-\let\refill=\relax
-
-% If working on a large document in chapters, it is convenient to
-% be able to disable indexing, cross-referencing, and contents, for test runs.
-% This is done with @novalidate (before @setfilename).
-%
-\newif\iflinks \linkstrue % by default we want the aux files.
-\let\novalidate = \linksfalse
-
-% @setfilename is done at the beginning of every texinfo file.
-% So open here the files we need to have open while reading the input.
-% This makes it possible to make a .fmt file for texinfo.
-\def\setfilename{%
- \iflinks
- \readauxfile
- \fi % \openindices needs to do some work in any case.
- \openindices
- \fixbackslash % Turn off hack to swallow `\input texinfo'.
- \global\let\setfilename=\comment % Ignore extra @setfilename cmds.
- %
- % If texinfo.cnf is present on the system, read it.
- % Useful for site-wide @afourpaper, etc.
- % Just to be on the safe side, close the input stream before the \input.
- \openin 1 texinfo.cnf
- \ifeof1 \let\temp=\relax \else \def\temp{\input texinfo.cnf }\fi
- \closein1
- \temp
- %
- \comment % Ignore the actual filename.
-}
-
-% Called from \setfilename.
-%
-\def\openindices{%
- \newindex{cp}%
- \newcodeindex{fn}%
- \newcodeindex{vr}%
- \newcodeindex{tp}%
- \newcodeindex{ky}%
- \newcodeindex{pg}%
-}
-
-% @bye.
-\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend}
-
-
-\message{pdf,}
-% adobe `portable' document format
-\newcount\tempnum
-\newcount\lnkcount
-\newtoks\filename
-\newcount\filenamelength
-\newcount\pgn
-\newtoks\toksA
-\newtoks\toksB
-\newtoks\toksC
-\newtoks\toksD
-\newbox\boxA
-\newcount\countA
-\newif\ifpdf
-\newif\ifpdfmakepagedest
-
-\ifx\pdfoutput\undefined
- \pdffalse
- \let\pdfmkdest = \gobble
- \let\pdfurl = \gobble
- \let\endlink = \relax
- \let\linkcolor = \relax
- \let\pdfmakeoutlines = \relax
-\else
- \pdftrue
- \pdfoutput = 1
- \input pdfcolor
- \def\dopdfimage#1#2#3{%
- \def\imagewidth{#2}%
- \def\imageheight{#3}%
- \ifnum\pdftexversion < 14
- \pdfimage
- \else
- \pdfximage
- \fi
- \ifx\empty\imagewidth\else width \imagewidth \fi
- \ifx\empty\imageheight\else height \imageheight \fi
- {#1.pdf}%
- \ifnum\pdftexversion < 14 \else
- \pdfrefximage \pdflastximage
- \fi}
- \def\pdfmkdest#1{\pdfdest name{#1@} xyz}
- \def\pdfmkpgn#1{#1@}
- \let\linkcolor = \Cyan
- \def\endlink{\Black\pdfendlink}
- % Adding outlines to PDF; macros for calculating structure of outlines
- % come from Petr Olsak
- \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0%
- \else \csname#1\endcsname \fi}
- \def\advancenumber#1{\tempnum=\expnumber{#1}\relax
- \advance\tempnum by1
- \expandafter\xdef\csname#1\endcsname{\the\tempnum}}
- \def\pdfmakeoutlines{{%
- \openin 1 \jobname.toc
- \ifeof 1\else\bgroup
- \closein 1
- \indexnofonts
- \def\tt{}
- % thanh's hack / proper braces in bookmarks
- \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace
- \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace
- %
- \def\chapentry ##1##2##3{}
- \def\unnumbchapentry ##1##2{}
- \def\secentry ##1##2##3##4{\advancenumber{chap##2}}
- \def\unnumbsecentry ##1##2{}
- \def\subsecentry ##1##2##3##4##5{\advancenumber{sec##2.##3}}
- \def\unnumbsubsecentry ##1##2{}
- \def\subsubsecentry ##1##2##3##4##5##6{\advancenumber{subsec##2.##3.##4}}
- \def\unnumbsubsubsecentry ##1##2{}
- \input \jobname.toc
- \def\chapentry ##1##2##3{%
- \pdfoutline goto name{\pdfmkpgn{##3}}count-\expnumber{chap##2}{##1}}
- \def\unnumbchapentry ##1##2{%
- \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}
- \def\secentry ##1##2##3##4{%
- \pdfoutline goto name{\pdfmkpgn{##4}}count-\expnumber{sec##2.##3}{##1}}
- \def\unnumbsecentry ##1##2{%
- \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}
- \def\subsecentry ##1##2##3##4##5{%
- \pdfoutline goto name{\pdfmkpgn{##5}}count-\expnumber{subsec##2.##3.##4}{##1}}
- \def\unnumbsubsecentry ##1##2{%
- \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}
- \def\subsubsecentry ##1##2##3##4##5##6{%
- \pdfoutline goto name{\pdfmkpgn{##6}}{##1}}
- \def\unnumbsubsubsecentry ##1##2{%
- \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}
- \input \jobname.toc
- \egroup\fi
- }}
- \def\makelinks #1,{%
- \def\params{#1}\def\E{END}%
- \ifx\params\E
- \let\nextmakelinks=\relax
- \else
- \let\nextmakelinks=\makelinks
- \ifnum\lnkcount>0,\fi
- \picknum{#1}%
- \startlink attr{/Border [0 0 0]}
- goto name{\pdfmkpgn{\the\pgn}}%
- \linkcolor #1%
- \advance\lnkcount by 1%
- \endlink
- \fi
- \nextmakelinks
- }
- \def\picknum#1{\expandafter\pn#1}
- \def\pn#1{%
- \def\p{#1}%
- \ifx\p\lbrace
- \let\nextpn=\ppn
- \else
- \let\nextpn=\ppnn
- \def\first{#1}
- \fi
- \nextpn
- }
- \def\ppn#1{\pgn=#1\gobble}
- \def\ppnn{\pgn=\first}
- \def\pdfmklnk#1{\lnkcount=0\makelinks #1,END,}
- \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks}
- \def\skipspaces#1{\def\PP{#1}\def\D{|}%
- \ifx\PP\D\let\nextsp\relax
- \else\let\nextsp\skipspaces
- \ifx\p\space\else\addtokens{\filename}{\PP}%
- \advance\filenamelength by 1
- \fi
- \fi
- \nextsp}
- \def\getfilename#1{\filenamelength=0\expandafter\skipspaces#1|\relax}
- \ifnum\pdftexversion < 14
- \let \startlink \pdfannotlink
- \else
- \let \startlink \pdfstartlink
- \fi
- \def\pdfurl#1{%
- \begingroup
- \normalturnoffactive\def\@{@}%
- \leavevmode\Red
- \startlink attr{/Border [0 0 0]}%
- user{/Subtype /Link /A << /S /URI /URI (#1) >>}%
- % #1
- \endgroup}
- \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}}
- \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks}
- \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks}
- \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}}
- \def\maketoks{%
- \expandafter\poptoks\the\toksA|ENDTOKS|
- \ifx\first0\adn0
- \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3
- \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6
- \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9
- \else
- \ifnum0=\countA\else\makelink\fi
- \ifx\first.\let\next=\done\else
- \let\next=\maketoks
- \addtokens{\toksB}{\the\toksD}
- \ifx\first,\addtokens{\toksB}{\space}\fi
- \fi
- \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
- \next}
- \def\makelink{\addtokens{\toksB}%
- {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0}
- \def\pdflink#1{%
- \startlink attr{/Border [0 0 0]} goto name{\mkpgn{#1}}
- \linkcolor #1\endlink}
- \def\mkpgn#1{#1@}
- \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
-\fi % \ifx\pdfoutput
-
-
-\message{fonts,}
-% Font-change commands.
-
-% Texinfo sort of supports the sans serif font style, which plain TeX does not.
-% So we set up a \sf analogous to plain's \rm, etc.
-\newfam\sffam
-\def\sf{\fam=\sffam \tensf}
-\let\li = \sf % Sometimes we call it \li, not \sf.
-
-% We don't need math for this one.
-\def\ttsl{\tenttsl}
-
-% Use Computer Modern fonts at \magstephalf (11pt).
-\newcount\mainmagstep
-\mainmagstep=\magstephalf
-
-% Set the font macro #1 to the font named #2, adding on the
-% specified font prefix (normally `cm').
-% #3 is the font's design size, #4 is a scale factor
-\def\setfont#1#2#3#4{\font#1=\fontprefix#2#3 scaled #4}
-
-% Use cm as the default font prefix.
-% To specify the font prefix, you must define \fontprefix
-% before you read in texinfo.tex.
-\ifx\fontprefix\undefined
-\def\fontprefix{cm}
-\fi
-% Support font families that don't use the same naming scheme as CM.
-\def\rmshape{r}
-\def\rmbshape{bx} %where the normal face is bold
-\def\bfshape{b}
-\def\bxshape{bx}
-\def\ttshape{tt}
-\def\ttbshape{tt}
-\def\ttslshape{sltt}
-\def\itshape{ti}
-\def\itbshape{bxti}
-\def\slshape{sl}
-\def\slbshape{bxsl}
-\def\sfshape{ss}
-\def\sfbshape{ss}
-\def\scshape{csc}
-\def\scbshape{csc}
-
-\ifx\bigger\relax
-\let\mainmagstep=\magstep1
-\setfont\textrm\rmshape{12}{1000}
-\setfont\texttt\ttshape{12}{1000}
-\else
-\setfont\textrm\rmshape{10}{\mainmagstep}
-\setfont\texttt\ttshape{10}{\mainmagstep}
-\fi
-% Instead of cmb10, you many want to use cmbx10.
-% cmbx10 is a prettier font on its own, but cmb10
-% looks better when embedded in a line with cmr10.
-\setfont\textbf\bfshape{10}{\mainmagstep}
-\setfont\textit\itshape{10}{\mainmagstep}
-\setfont\textsl\slshape{10}{\mainmagstep}
-\setfont\textsf\sfshape{10}{\mainmagstep}
-\setfont\textsc\scshape{10}{\mainmagstep}
-\setfont\textttsl\ttslshape{10}{\mainmagstep}
-\font\texti=cmmi10 scaled \mainmagstep
-\font\textsy=cmsy10 scaled \mainmagstep
-
-% A few fonts for @defun, etc.
-\setfont\defbf\bxshape{10}{\magstep1} %was 1314
-\setfont\deftt\ttshape{10}{\magstep1}
-\def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf}
-
-% Fonts for indices, footnotes, small examples (9pt).
-\setfont\smallrm\rmshape{9}{1000}
-\setfont\smalltt\ttshape{9}{1000}
-\setfont\smallbf\bfshape{10}{900}
-\setfont\smallit\itshape{9}{1000}
-\setfont\smallsl\slshape{9}{1000}
-\setfont\smallsf\sfshape{9}{1000}
-\setfont\smallsc\scshape{10}{900}
-\setfont\smallttsl\ttslshape{10}{900}
-\font\smalli=cmmi9
-\font\smallsy=cmsy9
-
-% Fonts for title page:
-\setfont\titlerm\rmbshape{12}{\magstep3}
-\setfont\titleit\itbshape{10}{\magstep4}
-\setfont\titlesl\slbshape{10}{\magstep4}
-\setfont\titlett\ttbshape{12}{\magstep3}
-\setfont\titlettsl\ttslshape{10}{\magstep4}
-\setfont\titlesf\sfbshape{17}{\magstep1}
-\let\titlebf=\titlerm
-\setfont\titlesc\scbshape{10}{\magstep4}
-\font\titlei=cmmi12 scaled \magstep3
-\font\titlesy=cmsy10 scaled \magstep4
-\def\authorrm{\secrm}
-
-% Chapter (and unnumbered) fonts (17.28pt).
-\setfont\chaprm\rmbshape{12}{\magstep2}
-\setfont\chapit\itbshape{10}{\magstep3}
-\setfont\chapsl\slbshape{10}{\magstep3}
-\setfont\chaptt\ttbshape{12}{\magstep2}
-\setfont\chapttsl\ttslshape{10}{\magstep3}
-\setfont\chapsf\sfbshape{17}{1000}
-\let\chapbf=\chaprm
-\setfont\chapsc\scbshape{10}{\magstep3}
-\font\chapi=cmmi12 scaled \magstep2
-\font\chapsy=cmsy10 scaled \magstep3
-
-% Section fonts (14.4pt).
-\setfont\secrm\rmbshape{12}{\magstep1}
-\setfont\secit\itbshape{10}{\magstep2}
-\setfont\secsl\slbshape{10}{\magstep2}
-\setfont\sectt\ttbshape{12}{\magstep1}
-\setfont\secttsl\ttslshape{10}{\magstep2}
-\setfont\secsf\sfbshape{12}{\magstep1}
-\let\secbf\secrm
-\setfont\secsc\scbshape{10}{\magstep2}
-\font\seci=cmmi12 scaled \magstep1
-\font\secsy=cmsy10 scaled \magstep2
-
-% \setfont\ssecrm\bxshape{10}{\magstep1} % This size an font looked bad.
-% \setfont\ssecit\itshape{10}{\magstep1} % The letters were too crowded.
-% \setfont\ssecsl\slshape{10}{\magstep1}
-% \setfont\ssectt\ttshape{10}{\magstep1}
-% \setfont\ssecsf\sfshape{10}{\magstep1}
-
-%\setfont\ssecrm\bfshape{10}{1315} % Note the use of cmb rather than cmbx.
-%\setfont\ssecit\itshape{10}{1315} % Also, the size is a little larger than
-%\setfont\ssecsl\slshape{10}{1315} % being scaled magstep1.
-%\setfont\ssectt\ttshape{10}{1315}
-%\setfont\ssecsf\sfshape{10}{1315}
-
-%\let\ssecbf=\ssecrm
-
-% Subsection fonts (13.15pt).
-\setfont\ssecrm\rmbshape{12}{\magstephalf}
-\setfont\ssecit\itbshape{10}{1315}
-\setfont\ssecsl\slbshape{10}{1315}
-\setfont\ssectt\ttbshape{12}{\magstephalf}
-\setfont\ssecttsl\ttslshape{10}{1315}
-\setfont\ssecsf\sfbshape{12}{\magstephalf}
-\let\ssecbf\ssecrm
-\setfont\ssecsc\scbshape{10}{\magstep1}
-\font\sseci=cmmi12 scaled \magstephalf
-\font\ssecsy=cmsy10 scaled 1315
-% The smallcaps and symbol fonts should actually be scaled \magstep1.5,
-% but that is not a standard magnification.
-
-% In order for the font changes to affect most math symbols and letters,
-% we have to define the \textfont of the standard families. Since
-% texinfo doesn't allow for producing subscripts and superscripts, we
-% don't bother to reset \scriptfont and \scriptscriptfont (which would
-% also require loading a lot more fonts).
-%
-\def\resetmathfonts{%
- \textfont0 = \tenrm \textfont1 = \teni \textfont2 = \tensy
- \textfont\itfam = \tenit \textfont\slfam = \tensl \textfont\bffam = \tenbf
- \textfont\ttfam = \tentt \textfont\sffam = \tensf
-}
-
-
-% The font-changing commands redefine the meanings of \tenSTYLE, instead
-% of just \STYLE. We do this so that font changes will continue to work
-% in math mode, where it is the current \fam that is relevant in most
-% cases, not the current font. Plain TeX does \def\bf{\fam=\bffam
-% \tenbf}, for example. By redefining \tenbf, we obviate the need to
-% redefine \bf itself.
-\def\textfonts{%
- \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl
- \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc
- \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy \let\tenttsl=\textttsl
- \resetmathfonts}
-\def\titlefonts{%
- \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl
- \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc
- \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy
- \let\tenttsl=\titlettsl
- \resetmathfonts \setleading{25pt}}
-\def\titlefont#1{{\titlefonts\rm #1}}
-\def\chapfonts{%
- \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl
- \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc
- \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy \let\tenttsl=\chapttsl
- \resetmathfonts \setleading{19pt}}
-\def\secfonts{%
- \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl
- \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc
- \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy \let\tenttsl=\secttsl
- \resetmathfonts \setleading{16pt}}
-\def\subsecfonts{%
- \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl
- \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc
- \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy \let\tenttsl=\ssecttsl
- \resetmathfonts \setleading{15pt}}
-\let\subsubsecfonts = \subsecfonts % Maybe make sssec fonts scaled magstephalf?
-\def\smallfonts{%
- \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl
- \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc
- \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy
- \let\tenttsl=\smallttsl
- \resetmathfonts \setleading{11pt}}
-
-% Set up the default fonts, so we can use them for creating boxes.
-%
-\textfonts
-
-% Define these so they can be easily changed for other fonts.
-\def\angleleft{$\langle$}
-\def\angleright{$\rangle$}
-
-% Count depth in font-changes, for error checks
-\newcount\fontdepth \fontdepth=0
-
-% Fonts for short table of contents.
-\setfont\shortcontrm\rmshape{12}{1000}
-\setfont\shortcontbf\bxshape{12}{1000}
-\setfont\shortcontsl\slshape{12}{1000}
-
-%% Add scribe-like font environments, plus @l for inline lisp (usually sans
-%% serif) and @ii for TeX italic
-
-% \smartitalic{ARG} outputs arg in italics, followed by an italic correction
-% unless the following character is such as not to need one.
-\def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else\/\fi\fi\fi}
-\def\smartslanted#1{{\sl #1}\futurelet\next\smartitalicx}
-\def\smartitalic#1{{\it #1}\futurelet\next\smartitalicx}
-
-\let\i=\smartitalic
-\let\var=\smartslanted
-\let\dfn=\smartslanted
-\let\emph=\smartitalic
-\let\cite=\smartslanted
-
-\def\b#1{{\bf #1}}
-\let\strong=\b
-
-% We can't just use \exhyphenpenalty, because that only has effect at
-% the end of a paragraph. Restore normal hyphenation at the end of the
-% group within which \nohyphenation is presumably called.
-%
-\def\nohyphenation{\hyphenchar\font = -1 \aftergroup\restorehyphenation}
-\def\restorehyphenation{\hyphenchar\font = `- }
-
-\def\t#1{%
- {\tt \rawbackslash \frenchspacing #1}%
- \null
-}
-\let\ttfont=\t
-\def\samp#1{`\tclose{#1}'\null}
-\setfont\keyrm\rmshape{8}{1000}
-\font\keysy=cmsy9
-\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{%
- \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{%
- \vbox{\hrule\kern-0.4pt
- \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}%
- \kern-0.4pt\hrule}%
- \kern-.06em\raise0.4pt\hbox{\angleright}}}}
-% The old definition, with no lozenge:
-%\def\key #1{{\ttsl \nohyphenation \uppercase{#1}}\null}
-\def\ctrl #1{{\tt \rawbackslash \hat}#1}
-
-% @file, @option are the same as @samp.
-\let\file=\samp
-\let\option=\samp
-
-% @code is a modification of @t,
-% which makes spaces the same size as normal in the surrounding text.
-\def\tclose#1{%
- {%
- % Change normal interword space to be same as for the current font.
- \spaceskip = \fontdimen2\font
- %
- % Switch to typewriter.
- \tt
- %
- % But `\ ' produces the large typewriter interword space.
- \def\ {{\spaceskip = 0pt{} }}%
- %
- % Turn off hyphenation.
- \nohyphenation
- %
- \rawbackslash
- \frenchspacing
- #1%
- }%
- \null
-}
-
-% We *must* turn on hyphenation at `-' and `_' in \code.
-% Otherwise, it is too hard to avoid overfull hboxes
-% in the Emacs manual, the Library manual, etc.
-
-% Unfortunately, TeX uses one parameter (\hyphenchar) to control
-% both hyphenation at - and hyphenation within words.
-% We must therefore turn them both off (\tclose does that)
-% and arrange explicitly to hyphenate at a dash.
-% -- rms.
-{
- \catcode`\-=\active
- \catcode`\_=\active
- %
- \global\def\code{\begingroup
- \catcode`\-=\active \let-\codedash
- \catcode`\_=\active \let_\codeunder
- \codex
- }
- %
- % If we end up with any active - characters when handling the index,
- % just treat them as a normal -.
- \global\def\indexbreaks{\catcode`\-=\active \let-\realdash}
-}
-
-\def\realdash{-}
-\def\codedash{-\discretionary{}{}{}}
-\def\codeunder{\ifusingtt{\normalunderscore\discretionary{}{}{}}{\_}}
-\def\codex #1{\tclose{#1}\endgroup}
-
-%\let\exp=\tclose %Was temporary
-
-% @kbd is like @code, except that if the argument is just one @key command,
-% then @kbd has no effect.
-
-% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always),
-% `example' (@kbd uses ttsl only inside of @example and friends),
-% or `code' (@kbd uses normal tty font always).
-\def\kbdinputstyle{\parsearg\kbdinputstylexxx}
-\def\kbdinputstylexxx#1{%
- \def\arg{#1}%
- \ifx\arg\worddistinct
- \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}%
- \else\ifx\arg\wordexample
- \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}%
- \else\ifx\arg\wordcode
- \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}%
- \fi\fi\fi
-}
-\def\worddistinct{distinct}
-\def\wordexample{example}
-\def\wordcode{code}
-
-% Default is kbdinputdistinct. (Too much of a hassle to call the macro,
-% the catcodes are wrong for parsearg to work.)
-\gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}
-
-\def\xkey{\key}
-\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}%
-\ifx\one\xkey\ifx\threex\three \key{#2}%
-\else{\tclose{\kbdfont\look}}\fi
-\else{\tclose{\kbdfont\look}}\fi}
-
-% For @url, @env, @command quotes seem unnecessary, so use \code.
-\let\url=\code
-\let\env=\code
-\let\command=\code
-
-% @uref (abbreviation for `urlref') takes an optional (comma-separated)
-% second argument specifying the text to display and an optional third
-% arg as text to display instead of (rather than in addition to) the url
-% itself. First (mandatory) arg is the url. Perhaps eventually put in
-% a hypertex \special here.
-%
-\def\uref#1{\douref #1,,,\finish}
-\def\douref#1,#2,#3,#4\finish{\begingroup
- \unsepspaces
- \pdfurl{#1}%
- \setbox0 = \hbox{\ignorespaces #3}%
- \ifdim\wd0 > 0pt
- \unhbox0 % third arg given, show only that
- \else
- \setbox0 = \hbox{\ignorespaces #2}%
- \ifdim\wd0 > 0pt
- \ifpdf
- \unhbox0 % PDF: 2nd arg given, show only it
- \else
- \unhbox0\ (\code{#1})% DVI: 2nd arg given, show both it and url
- \fi
- \else
- \code{#1}% only url given, so show it
- \fi
- \fi
- \endlink
-\endgroup}
-
-% rms does not like angle brackets --karl, 17may97.
-% So now @email is just like @uref, unless we are pdf.
-%
-%\def\email#1{\angleleft{\tt #1}\angleright}
-\ifpdf
- \def\email#1{\doemail#1,,\finish}
- \def\doemail#1,#2,#3\finish{\begingroup
- \unsepspaces
- \pdfurl{mailto:#1}%
- \setbox0 = \hbox{\ignorespaces #2}%
- \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi
- \endlink
- \endgroup}
-\else
- \let\email=\uref
-\fi
-
-% Check if we are currently using a typewriter font. Since all the
-% Computer Modern typewriter fonts have zero interword stretch (and
-% shrink), and it is reasonable to expect all typewriter fonts to have
-% this property, we can check that font parameter.
-%
-\def\ifmonospace{\ifdim\fontdimen3\font=0pt }
-
-% Typeset a dimension, e.g., `in' or `pt'. The only reason for the
-% argument is to make the input look right: @dmn{pt} instead of @dmn{}pt.
-%
-\def\dmn#1{\thinspace #1}
-
-\def\kbd#1{\def\look{#1}\expandafter\kbdfoo\look??\par}
-
-% @l was never documented to mean ``switch to the Lisp font'',
-% and it is not used as such in any manual I can find. We need it for
-% Polish suppressed-l. --karl, 22sep96.
-%\def\l#1{{\li #1}\null}
-
-% Explicit font changes: @r, @sc, undocumented @ii.
-\def\r#1{{\rm #1}} % roman font
-\def\sc#1{{\smallcaps#1}} % smallcaps font
-\def\ii#1{{\it #1}} % italic font
-
-% @acronym downcases the argument and prints in smallcaps.
-\def\acronym#1{{\smallcaps \lowercase{#1}}}
-
-% @pounds{} is a sterling sign.
-\def\pounds{{\it\$}}
-
-
-\message{page headings,}
-
-\newskip\titlepagetopglue \titlepagetopglue = 1.5in
-\newskip\titlepagebottomglue \titlepagebottomglue = 2pc
-
-% First the title page. Must do @settitle before @titlepage.
-\newif\ifseenauthor
-\newif\iffinishedtitlepage
-
-% Do an implicit @contents or @shortcontents after @end titlepage if the
-% user says @setcontentsaftertitlepage or @setshortcontentsaftertitlepage.
-%
-\newif\ifsetcontentsaftertitlepage
- \let\setcontentsaftertitlepage = \setcontentsaftertitlepagetrue
-\newif\ifsetshortcontentsaftertitlepage
- \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue
-
-\def\shorttitlepage{\parsearg\shorttitlepagezzz}
-\def\shorttitlepagezzz #1{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}%
- \endgroup\page\hbox{}\page}
-
-\def\titlepage{\begingroup \parindent=0pt \textfonts
- \let\subtitlerm=\tenrm
- \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}%
- %
- \def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines}%
- %
- % Leave some space at the very top of the page.
- \vglue\titlepagetopglue
- %
- % Now you can print the title using @title.
- \def\title{\parsearg\titlezzz}%
- \def\titlezzz##1{\leftline{\titlefonts\rm ##1}
- % print a rule at the page bottom also.
- \finishedtitlepagefalse
- \vskip4pt \hrule height 4pt width \hsize \vskip4pt}%
- % No rule at page bottom unless we print one at the top with @title.
- \finishedtitlepagetrue
- %
- % Now you can put text using @subtitle.
- \def\subtitle{\parsearg\subtitlezzz}%
- \def\subtitlezzz##1{{\subtitlefont \rightline{##1}}}%
- %
- % @author should come last, but may come many times.
- \def\author{\parsearg\authorzzz}%
- \def\authorzzz##1{\ifseenauthor\else\vskip 0pt plus 1filll\seenauthortrue\fi
- {\authorfont \leftline{##1}}}%
- %
- % Most title ``pages'' are actually two pages long, with space
- % at the top of the second. We don't want the ragged left on the second.
- \let\oldpage = \page
- \def\page{%
- \iffinishedtitlepage\else
- \finishtitlepage
- \fi
- \oldpage
- \let\page = \oldpage
- \hbox{}}%
-% \def\page{\oldpage \hbox{}}
-}
-
-\def\Etitlepage{%
- \iffinishedtitlepage\else
- \finishtitlepage
- \fi
- % It is important to do the page break before ending the group,
- % because the headline and footline are only empty inside the group.
- % If we use the new definition of \page, we always get a blank page
- % after the title page, which we certainly don't want.
- \oldpage
- \endgroup
- %
- % If they want short, they certainly want long too.
- \ifsetshortcontentsaftertitlepage
- \shortcontents
- \contents
- \global\let\shortcontents = \relax
- \global\let\contents = \relax
- \fi
- %
- \ifsetcontentsaftertitlepage
- \contents
- \global\let\contents = \relax
- \global\let\shortcontents = \relax
- \fi
- %
- \ifpdf \pdfmakepagedesttrue \fi
- %
- \HEADINGSon
-}
-
-\def\finishtitlepage{%
- \vskip4pt \hrule height 2pt width \hsize
- \vskip\titlepagebottomglue
- \finishedtitlepagetrue
-}
-
-%%% Set up page headings and footings.
-
-\let\thispage=\folio
-
-\newtoks\evenheadline % headline on even pages
-\newtoks\oddheadline % headline on odd pages
-\newtoks\evenfootline % footline on even pages
-\newtoks\oddfootline % footline on odd pages
-
-% Now make Tex use those variables
-\headline={{\textfonts\rm \ifodd\pageno \the\oddheadline
- \else \the\evenheadline \fi}}
-\footline={{\textfonts\rm \ifodd\pageno \the\oddfootline
- \else \the\evenfootline \fi}\HEADINGShook}
-\let\HEADINGShook=\relax
-
-% Commands to set those variables.
-% For example, this is what @headings on does
-% @evenheading @thistitle|@thispage|@thischapter
-% @oddheading @thischapter|@thispage|@thistitle
-% @evenfooting @thisfile||
-% @oddfooting ||@thisfile
-
-\def\evenheading{\parsearg\evenheadingxxx}
-\def\oddheading{\parsearg\oddheadingxxx}
-\def\everyheading{\parsearg\everyheadingxxx}
-
-\def\evenfooting{\parsearg\evenfootingxxx}
-\def\oddfooting{\parsearg\oddfootingxxx}
-\def\everyfooting{\parsearg\everyfootingxxx}
-
-{\catcode`\@=0 %
-
-\gdef\evenheadingxxx #1{\evenheadingyyy #1@|@|@|@|\finish}
-\gdef\evenheadingyyy #1@|#2@|#3@|#4\finish{%
-\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
-
-\gdef\oddheadingxxx #1{\oddheadingyyy #1@|@|@|@|\finish}
-\gdef\oddheadingyyy #1@|#2@|#3@|#4\finish{%
-\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
-
-\gdef\everyheadingxxx#1{\oddheadingxxx{#1}\evenheadingxxx{#1}}%
-
-\gdef\evenfootingxxx #1{\evenfootingyyy #1@|@|@|@|\finish}
-\gdef\evenfootingyyy #1@|#2@|#3@|#4\finish{%
-\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
-
-\gdef\oddfootingxxx #1{\oddfootingyyy #1@|@|@|@|\finish}
-\gdef\oddfootingyyy #1@|#2@|#3@|#4\finish{%
- \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}%
- %
- % Leave some space for the footline. Hopefully ok to assume
- % @evenfooting will not be used by itself.
- \global\advance\pageheight by -\baselineskip
- \global\advance\vsize by -\baselineskip
-}
-
-\gdef\everyfootingxxx#1{\oddfootingxxx{#1}\evenfootingxxx{#1}}
-%
-}% unbind the catcode of @.
-
-% @headings double turns headings on for double-sided printing.
-% @headings single turns headings on for single-sided printing.
-% @headings off turns them off.
-% @headings on same as @headings double, retained for compatibility.
-% @headings after turns on double-sided headings after this page.
-% @headings doubleafter turns on double-sided headings after this page.
-% @headings singleafter turns on single-sided headings after this page.
-% By default, they are off at the start of a document,
-% and turned `on' after @end titlepage.
-
-\def\headings #1 {\csname HEADINGS#1\endcsname}
-
-\def\HEADINGSoff{
-\global\evenheadline={\hfil} \global\evenfootline={\hfil}
-\global\oddheadline={\hfil} \global\oddfootline={\hfil}}
-\HEADINGSoff
-% When we turn headings on, set the page number to 1.
-% For double-sided printing, put current file name in lower left corner,
-% chapter name on inside top of right hand pages, document
-% title on inside top of left hand pages, and page numbers on outside top
-% edge of all pages.
-\def\HEADINGSdouble{
-\global\pageno=1
-\global\evenfootline={\hfil}
-\global\oddfootline={\hfil}
-\global\evenheadline={\line{\folio\hfil\thistitle}}
-\global\oddheadline={\line{\thischapter\hfil\folio}}
-\global\let\contentsalignmacro = \chapoddpage
-}
-\let\contentsalignmacro = \chappager
-
-% For single-sided printing, chapter title goes across top left of page,
-% page number on top right.
-\def\HEADINGSsingle{
-\global\pageno=1
-\global\evenfootline={\hfil}
-\global\oddfootline={\hfil}
-\global\evenheadline={\line{\thischapter\hfil\folio}}
-\global\oddheadline={\line{\thischapter\hfil\folio}}
-\global\let\contentsalignmacro = \chappager
-}
-\def\HEADINGSon{\HEADINGSdouble}
-
-\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex}
-\let\HEADINGSdoubleafter=\HEADINGSafter
-\def\HEADINGSdoublex{%
-\global\evenfootline={\hfil}
-\global\oddfootline={\hfil}
-\global\evenheadline={\line{\folio\hfil\thistitle}}
-\global\oddheadline={\line{\thischapter\hfil\folio}}
-\global\let\contentsalignmacro = \chapoddpage
-}
-
-\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex}
-\def\HEADINGSsinglex{%
-\global\evenfootline={\hfil}
-\global\oddfootline={\hfil}
-\global\evenheadline={\line{\thischapter\hfil\folio}}
-\global\oddheadline={\line{\thischapter\hfil\folio}}
-\global\let\contentsalignmacro = \chappager
-}
-
-% Subroutines used in generating headings
-% Produces Day Month Year style of output.
-\def\today{%
- \number\day\space
- \ifcase\month
- \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr
- \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug
- \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec
- \fi
- \space\number\year}
-
-% @settitle line... specifies the title of the document, for headings.
-% It generates no output of its own.
-\def\thistitle{\putwordNoTitle}
-\def\settitle{\parsearg\settitlezzz}
-\def\settitlezzz #1{\gdef\thistitle{#1}}
-
-
-\message{tables,}
-% Tables -- @table, @ftable, @vtable, @item(x), @kitem(x), @xitem(x).
-
-% default indentation of table text
-\newdimen\tableindent \tableindent=.8in
-% default indentation of @itemize and @enumerate text
-\newdimen\itemindent \itemindent=.3in
-% margin between end of table item and start of table text.
-\newdimen\itemmargin \itemmargin=.1in
-
-% used internally for \itemindent minus \itemmargin
-\newdimen\itemmax
-
-% Note @table, @vtable, and @vtable define @item, @itemx, etc., with
-% these defs.
-% They also define \itemindex
-% to index the item name in whatever manner is desired (perhaps none).
-
-\newif\ifitemxneedsnegativevskip
-
-\def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi}
-
-\def\internalBitem{\smallbreak \parsearg\itemzzz}
-\def\internalBitemx{\itemxpar \parsearg\itemzzz}
-
-\def\internalBxitem "#1"{\def\xitemsubtopix{#1} \smallbreak \parsearg\xitemzzz}
-\def\internalBxitemx "#1"{\def\xitemsubtopix{#1} \itemxpar \parsearg\xitemzzz}
-
-\def\internalBkitem{\smallbreak \parsearg\kitemzzz}
-\def\internalBkitemx{\itemxpar \parsearg\kitemzzz}
-
-\def\kitemzzz #1{\dosubind {kw}{\code{#1}}{for {\bf \lastfunction}}%
- \itemzzz {#1}}
-
-\def\xitemzzz #1{\dosubind {kw}{\code{#1}}{for {\bf \xitemsubtopic}}%
- \itemzzz {#1}}
-
-\def\itemzzz #1{\begingroup %
- \advance\hsize by -\rightskip
- \advance\hsize by -\tableindent
- \setbox0=\hbox{\itemfont{#1}}%
- \itemindex{#1}%
- \nobreak % This prevents a break before @itemx.
- %
- % If the item text does not fit in the space we have, put it on a line
- % by itself, and do not allow a page break either before or after that
- % line. We do not start a paragraph here because then if the next
- % command is, e.g., @kindex, the whatsit would get put into the
- % horizontal list on a line by itself, resulting in extra blank space.
- \ifdim \wd0>\itemmax
- %
- % Make this a paragraph so we get the \parskip glue and wrapping,
- % but leave it ragged-right.
- \begingroup
- \advance\leftskip by-\tableindent
- \advance\hsize by\tableindent
- \advance\rightskip by0pt plus1fil
- \leavevmode\unhbox0\par
- \endgroup
- %
- % We're going to be starting a paragraph, but we don't want the
- % \parskip glue -- logically it's part of the @item we just started.
- \nobreak \vskip-\parskip
- %
- % Stop a page break at the \parskip glue coming up. Unfortunately
- % we can't prevent a possible page break at the following
- % \baselineskip glue.
- \nobreak
- \endgroup
- \itemxneedsnegativevskipfalse
- \else
- % The item text fits into the space. Start a paragraph, so that the
- % following text (if any) will end up on the same line.
- \noindent
- % Do this with kerns and \unhbox so that if there is a footnote in
- % the item text, it can migrate to the main vertical list and
- % eventually be printed.
- \nobreak\kern-\tableindent
- \dimen0 = \itemmax \advance\dimen0 by \itemmargin \advance\dimen0 by -\wd0
- \unhbox0
- \nobreak\kern\dimen0
- \endgroup
- \itemxneedsnegativevskiptrue
- \fi
-}
-
-\def\item{\errmessage{@item while not in a table}}
-\def\itemx{\errmessage{@itemx while not in a table}}
-\def\kitem{\errmessage{@kitem while not in a table}}
-\def\kitemx{\errmessage{@kitemx while not in a table}}
-\def\xitem{\errmessage{@xitem while not in a table}}
-\def\xitemx{\errmessage{@xitemx while not in a table}}
-
-% Contains a kludge to get @end[description] to work.
-\def\description{\tablez{\dontindex}{1}{}{}{}{}}
-
-% @table, @ftable, @vtable.
-\def\table{\begingroup\inENV\obeylines\obeyspaces\tablex}
-{\obeylines\obeyspaces%
-\gdef\tablex #1^^M{%
-\tabley\dontindex#1 \endtabley}}
-
-\def\ftable{\begingroup\inENV\obeylines\obeyspaces\ftablex}
-{\obeylines\obeyspaces%
-\gdef\ftablex #1^^M{%
-\tabley\fnitemindex#1 \endtabley
-\def\Eftable{\endgraf\afterenvbreak\endgroup}%
-\let\Etable=\relax}}
-
-\def\vtable{\begingroup\inENV\obeylines\obeyspaces\vtablex}
-{\obeylines\obeyspaces%
-\gdef\vtablex #1^^M{%
-\tabley\vritemindex#1 \endtabley
-\def\Evtable{\endgraf\afterenvbreak\endgroup}%
-\let\Etable=\relax}}
-
-\def\dontindex #1{}
-\def\fnitemindex #1{\doind {fn}{\code{#1}}}%
-\def\vritemindex #1{\doind {vr}{\code{#1}}}%
-
-{\obeyspaces %
-\gdef\tabley#1#2 #3 #4 #5 #6 #7\endtabley{\endgroup%
-\tablez{#1}{#2}{#3}{#4}{#5}{#6}}}
-
-\def\tablez #1#2#3#4#5#6{%
-\aboveenvbreak %
-\begingroup %
-\def\Edescription{\Etable}% Necessary kludge.
-\let\itemindex=#1%
-\ifnum 0#3>0 \advance \leftskip by #3\mil \fi %
-\ifnum 0#4>0 \tableindent=#4\mil \fi %
-\ifnum 0#5>0 \advance \rightskip by #5\mil \fi %
-\def\itemfont{#2}%
-\itemmax=\tableindent %
-\advance \itemmax by -\itemmargin %
-\advance \leftskip by \tableindent %
-\exdentamount=\tableindent
-\parindent = 0pt
-\parskip = \smallskipamount
-\ifdim \parskip=0pt \parskip=2pt \fi%
-\def\Etable{\endgraf\afterenvbreak\endgroup}%
-\let\item = \internalBitem %
-\let\itemx = \internalBitemx %
-\let\kitem = \internalBkitem %
-\let\kitemx = \internalBkitemx %
-\let\xitem = \internalBxitem %
-\let\xitemx = \internalBxitemx %
-}
-
-% This is the counter used by @enumerate, which is really @itemize
-
-\newcount \itemno
-
-\def\itemize{\parsearg\itemizezzz}
-
-\def\itemizezzz #1{%
- \begingroup % ended by the @end itemize
- \itemizey {#1}{\Eitemize}
-}
-
-\def\itemizey #1#2{%
-\aboveenvbreak %
-\itemmax=\itemindent %
-\advance \itemmax by -\itemmargin %
-\advance \leftskip by \itemindent %
-\exdentamount=\itemindent
-\parindent = 0pt %
-\parskip = \smallskipamount %
-\ifdim \parskip=0pt \parskip=2pt \fi%
-\def#2{\endgraf\afterenvbreak\endgroup}%
-\def\itemcontents{#1}%
-\let\item=\itemizeitem}
-
-% Set sfcode to normal for the chars that usually have another value.
-% These are `.?!:;,'
-\def\frenchspacing{\sfcode46=1000 \sfcode63=1000 \sfcode33=1000
- \sfcode58=1000 \sfcode59=1000 \sfcode44=1000 }
-
-% \splitoff TOKENS\endmark defines \first to be the first token in
-% TOKENS, and \rest to be the remainder.
-%
-\def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}%
-
-% Allow an optional argument of an uppercase letter, lowercase letter,
-% or number, to specify the first label in the enumerated list. No
-% argument is the same as `1'.
-%
-\def\enumerate{\parsearg\enumeratezzz}
-\def\enumeratezzz #1{\enumeratey #1 \endenumeratey}
-\def\enumeratey #1 #2\endenumeratey{%
- \begingroup % ended by the @end enumerate
- %
- % If we were given no argument, pretend we were given `1'.
- \def\thearg{#1}%
- \ifx\thearg\empty \def\thearg{1}\fi
- %
- % Detect if the argument is a single token. If so, it might be a
- % letter. Otherwise, the only valid thing it can be is a number.
- % (We will always have one token, because of the test we just made.
- % This is a good thing, since \splitoff doesn't work given nothing at
- % all -- the first parameter is undelimited.)
- \expandafter\splitoff\thearg\endmark
- \ifx\rest\empty
- % Only one token in the argument. It could still be anything.
- % A ``lowercase letter'' is one whose \lccode is nonzero.
- % An ``uppercase letter'' is one whose \lccode is both nonzero, and
- % not equal to itself.
- % Otherwise, we assume it's a number.
- %
- % We need the \relax at the end of the \ifnum lines to stop TeX from
- % continuing to look for a <number>.
- %
- \ifnum\lccode\expandafter`\thearg=0\relax
- \numericenumerate % a number (we hope)
- \else
- % It's a letter.
- \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax
- \lowercaseenumerate % lowercase letter
- \else
- \uppercaseenumerate % uppercase letter
- \fi
- \fi
- \else
- % Multiple tokens in the argument. We hope it's a number.
- \numericenumerate
- \fi
-}
-
-% An @enumerate whose labels are integers. The starting integer is
-% given in \thearg.
-%
-\def\numericenumerate{%
- \itemno = \thearg
- \startenumeration{\the\itemno}%
-}
-
-% The starting (lowercase) letter is in \thearg.
-\def\lowercaseenumerate{%
- \itemno = \expandafter`\thearg
- \startenumeration{%
- % Be sure we're not beyond the end of the alphabet.
- \ifnum\itemno=0
- \errmessage{No more lowercase letters in @enumerate; get a bigger
- alphabet}%
- \fi
- \char\lccode\itemno
- }%
-}
-
-% The starting (uppercase) letter is in \thearg.
-\def\uppercaseenumerate{%
- \itemno = \expandafter`\thearg
- \startenumeration{%
- % Be sure we're not beyond the end of the alphabet.
- \ifnum\itemno=0
- \errmessage{No more uppercase letters in @enumerate; get a bigger
- alphabet}
- \fi
- \char\uccode\itemno
- }%
-}
-
-% Call itemizey, adding a period to the first argument and supplying the
-% common last two arguments. Also subtract one from the initial value in
-% \itemno, since @item increments \itemno.
-%
-\def\startenumeration#1{%
- \advance\itemno by -1
- \itemizey{#1.}\Eenumerate\flushcr
-}
-
-% @alphaenumerate and @capsenumerate are abbreviations for giving an arg
-% to @enumerate.
-%
-\def\alphaenumerate{\enumerate{a}}
-\def\capsenumerate{\enumerate{A}}
-\def\Ealphaenumerate{\Eenumerate}
-\def\Ecapsenumerate{\Eenumerate}
-
-% Definition of @item while inside @itemize.
-
-\def\itemizeitem{%
-\advance\itemno by 1
-{\let\par=\endgraf \smallbreak}%
-\ifhmode \errmessage{In hmode at itemizeitem}\fi
-{\parskip=0in \hskip 0pt
-\hbox to 0pt{\hss \itemcontents\hskip \itemmargin}%
-\vadjust{\penalty 1200}}%
-\flushcr}
-
-% @multitable macros
-% Amy Hendrickson, 8/18/94, 3/6/96
-%
-% @multitable ... @end multitable will make as many columns as desired.
-% Contents of each column will wrap at width given in preamble. Width
-% can be specified either with sample text given in a template line,
-% or in percent of \hsize, the current width of text on page.
-
-% Table can continue over pages but will only break between lines.
-
-% To make preamble:
-%
-% Either define widths of columns in terms of percent of \hsize:
-% @multitable @columnfractions .25 .3 .45
-% @item ...
-%
-% Numbers following @columnfractions are the percent of the total
-% current hsize to be used for each column. You may use as many
-% columns as desired.
-
-
-% Or use a template:
-% @multitable {Column 1 template} {Column 2 template} {Column 3 template}
-% @item ...
-% using the widest term desired in each column.
-%
-% For those who want to use more than one line's worth of words in
-% the preamble, break the line within one argument and it
-% will parse correctly, i.e.,
-%
-% @multitable {Column 1 template} {Column 2 template} {Column 3
-% template}
-% Not:
-% @multitable {Column 1 template} {Column 2 template}
-% {Column 3 template}
-
-% Each new table line starts with @item, each subsequent new column
-% starts with @tab. Empty columns may be produced by supplying @tab's
-% with nothing between them for as many times as empty columns are needed,
-% ie, @tab@tab@tab will produce two empty columns.
-
-% @item, @tab, @multitable or @end multitable do not need to be on their
-% own lines, but it will not hurt if they are.
-
-% Sample multitable:
-
-% @multitable {Column 1 template} {Column 2 template} {Column 3 template}
-% @item first col stuff @tab second col stuff @tab third col
-% @item
-% first col stuff
-% @tab
-% second col stuff
-% @tab
-% third col
-% @item first col stuff @tab second col stuff
-% @tab Many paragraphs of text may be used in any column.
-%
-% They will wrap at the width determined by the template.
-% @item@tab@tab This will be in third column.
-% @end multitable
-
-% Default dimensions may be reset by user.
-% @multitableparskip is vertical space between paragraphs in table.
-% @multitableparindent is paragraph indent in table.
-% @multitablecolmargin is horizontal space to be left between columns.
-% @multitablelinespace is space to leave between table items, baseline
-% to baseline.
-% 0pt means it depends on current normal line spacing.
-%
-\newskip\multitableparskip
-\newskip\multitableparindent
-\newdimen\multitablecolspace
-\newskip\multitablelinespace
-\multitableparskip=0pt
-\multitableparindent=6pt
-\multitablecolspace=12pt
-\multitablelinespace=0pt
-
-% Macros used to set up halign preamble:
-%
-\let\endsetuptable\relax
-\def\xendsetuptable{\endsetuptable}
-\let\columnfractions\relax
-\def\xcolumnfractions{\columnfractions}
-\newif\ifsetpercent
-
-% #1 is the part of the @columnfraction before the decimal point, which
-% is presumably either 0 or the empty string (but we don't check, we
-% just throw it away). #2 is the decimal part, which we use as the
-% percent of \hsize for this column.
-\def\pickupwholefraction#1.#2 {%
- \global\advance\colcount by 1
- \expandafter\xdef\csname col\the\colcount\endcsname{.#2\hsize}%
- \setuptable
-}
-
-\newcount\colcount
-\def\setuptable#1{%
- \def\firstarg{#1}%
- \ifx\firstarg\xendsetuptable
- \let\go = \relax
- \else
- \ifx\firstarg\xcolumnfractions
- \global\setpercenttrue
- \else
- \ifsetpercent
- \let\go\pickupwholefraction
- \else
- \global\advance\colcount by 1
- \setbox0=\hbox{#1\unskip }% Add a normal word space as a separator;
- % typically that is always in the input, anyway.
- \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}%
- \fi
- \fi
- \ifx\go\pickupwholefraction
- % Put the argument back for the \pickupwholefraction call, so
- % we'll always have a period there to be parsed.
- \def\go{\pickupwholefraction#1}%
- \else
- \let\go = \setuptable
- \fi%
- \fi
- \go
-}
-
-% This used to have \hskip1sp. But then the space in a template line is
-% not enough. That is bad. So let's go back to just & until we
-% encounter the problem it was intended to solve again.
-% --karl, nathan@acm.org, 20apr99.
-\def\tab{&}
-
-% @multitable ... @end multitable definitions:
-%
-\def\multitable{\parsearg\dotable}
-\def\dotable#1{\bgroup
- \vskip\parskip
- \let\item\crcr
- \tolerance=9500
- \hbadness=9500
- \setmultitablespacing
- \parskip=\multitableparskip
- \parindent=\multitableparindent
- \overfullrule=0pt
- \global\colcount=0
- \def\Emultitable{\global\setpercentfalse\cr\egroup\egroup}%
- %
- % To parse everything between @multitable and @item:
- \setuptable#1 \endsetuptable
- %
- % \everycr will reset column counter, \colcount, at the end of
- % each line. Every column entry will cause \colcount to advance by one.
- % The table preamble
- % looks at the current \colcount to find the correct column width.
- \everycr{\noalign{%
- %
- % \filbreak%% keeps underfull box messages off when table breaks over pages.
- % Maybe so, but it also creates really weird page breaks when the table
- % breaks over pages. Wouldn't \vfil be better? Wait until the problem
- % manifests itself, so it can be fixed for real --karl.
- \global\colcount=0\relax}}%
- %
- % This preamble sets up a generic column definition, which will
- % be used as many times as user calls for columns.
- % \vtop will set a single line and will also let text wrap and
- % continue for many paragraphs if desired.
- \halign\bgroup&\global\advance\colcount by 1\relax
- \multistrut\vtop{\hsize=\expandafter\csname col\the\colcount\endcsname
- %
- % In order to keep entries from bumping into each other
- % we will add a \leftskip of \multitablecolspace to all columns after
- % the first one.
- %
- % If a template has been used, we will add \multitablecolspace
- % to the width of each template entry.
- %
- % If the user has set preamble in terms of percent of \hsize we will
- % use that dimension as the width of the column, and the \leftskip
- % will keep entries from bumping into each other. Table will start at
- % left margin and final column will justify at right margin.
- %
- % Make sure we don't inherit \rightskip from the outer environment.
- \rightskip=0pt
- \ifnum\colcount=1
- % The first column will be indented with the surrounding text.
- \advance\hsize by\leftskip
- \else
- \ifsetpercent \else
- % If user has not set preamble in terms of percent of \hsize
- % we will advance \hsize by \multitablecolspace.
- \advance\hsize by \multitablecolspace
- \fi
- % In either case we will make \leftskip=\multitablecolspace:
- \leftskip=\multitablecolspace
- \fi
- % Ignoring space at the beginning and end avoids an occasional spurious
- % blank line, when TeX decides to break the line at the space before the
- % box from the multistrut, so the strut ends up on a line by itself.
- % For example:
- % @multitable @columnfractions .11 .89
- % @item @code{#}
- % @tab Legal holiday which is valid in major parts of the whole country.
- % Is automatically provided with highlighting sequences respectively marking
- % characters.
- \noindent\ignorespaces##\unskip\multistrut}\cr
-}
-
-\def\setmultitablespacing{% test to see if user has set \multitablelinespace.
-% If so, do nothing. If not, give it an appropriate dimension based on
-% current baselineskip.
-\ifdim\multitablelinespace=0pt
-\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip
-\global\advance\multitablelinespace by-\ht0
-%% strut to put in table in case some entry doesn't have descenders,
-%% to keep lines equally spaced
-\let\multistrut = \strut
-\else
-%% FIXME: what is \box0 supposed to be?
-\gdef\multistrut{\vrule height\multitablelinespace depth\dp0
-width0pt\relax} \fi
-%% Test to see if parskip is larger than space between lines of
-%% table. If not, do nothing.
-%% If so, set to same dimension as multitablelinespace.
-\ifdim\multitableparskip>\multitablelinespace
-\global\multitableparskip=\multitablelinespace
-\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller
- %% than skip between lines in the table.
-\fi%
-\ifdim\multitableparskip=0pt
-\global\multitableparskip=\multitablelinespace
-\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller
- %% than skip between lines in the table.
-\fi}
-
-
-\message{conditionals,}
-% Prevent errors for section commands.
-% Used in @ignore and in failing conditionals.
-\def\ignoresections{%
- \let\chapter=\relax
- \let\unnumbered=\relax
- \let\top=\relax
- \let\unnumberedsec=\relax
- \let\unnumberedsection=\relax
- \let\unnumberedsubsec=\relax
- \let\unnumberedsubsection=\relax
- \let\unnumberedsubsubsec=\relax
- \let\unnumberedsubsubsection=\relax
- \let\section=\relax
- \let\subsec=\relax
- \let\subsubsec=\relax
- \let\subsection=\relax
- \let\subsubsection=\relax
- \let\appendix=\relax
- \let\appendixsec=\relax
- \let\appendixsection=\relax
- \let\appendixsubsec=\relax
- \let\appendixsubsection=\relax
- \let\appendixsubsubsec=\relax
- \let\appendixsubsubsection=\relax
- \let\contents=\relax
- \let\smallbook=\relax
- \let\titlepage=\relax
-}
-
-% Used in nested conditionals, where we have to parse the Texinfo source
-% and so want to turn off most commands, in case they are used
-% incorrectly.
-%
-\def\ignoremorecommands{%
- \let\defcodeindex = \relax
- \let\defcv = \relax
- \let\deffn = \relax
- \let\deffnx = \relax
- \let\defindex = \relax
- \let\defivar = \relax
- \let\defmac = \relax
- \let\defmethod = \relax
- \let\defop = \relax
- \let\defopt = \relax
- \let\defspec = \relax
- \let\deftp = \relax
- \let\deftypefn = \relax
- \let\deftypefun = \relax
- \let\deftypeivar = \relax
- \let\deftypeop = \relax
- \let\deftypevar = \relax
- \let\deftypevr = \relax
- \let\defun = \relax
- \let\defvar = \relax
- \let\defvr = \relax
- \let\ref = \relax
- \let\xref = \relax
- \let\printindex = \relax
- \let\pxref = \relax
- \let\settitle = \relax
- \let\setchapternewpage = \relax
- \let\setchapterstyle = \relax
- \let\everyheading = \relax
- \let\evenheading = \relax
- \let\oddheading = \relax
- \let\everyfooting = \relax
- \let\evenfooting = \relax
- \let\oddfooting = \relax
- \let\headings = \relax
- \let\include = \relax
- \let\lowersections = \relax
- \let\down = \relax
- \let\raisesections = \relax
- \let\up = \relax
- \let\set = \relax
- \let\clear = \relax
- \let\item = \relax
-}
-
-% Ignore @ignore ... @end ignore.
-%
-\def\ignore{\doignore{ignore}}
-
-% Ignore @ifinfo, @ifhtml, @ifnottex, @html, @menu, and @direntry text.
-%
-\def\ifinfo{\doignore{ifinfo}}
-\def\ifhtml{\doignore{ifhtml}}
-\def\ifnottex{\doignore{ifnottex}}
-\def\html{\doignore{html}}
-\def\menu{\doignore{menu}}
-\def\direntry{\doignore{direntry}}
-
-% @dircategory CATEGORY -- specify a category of the dir file
-% which this file should belong to. Ignore this in TeX.
-\let\dircategory = \comment
-
-% Ignore text until a line `@end #1'.
-%
-\def\doignore#1{\begingroup
- % Don't complain about control sequences we have declared \outer.
- \ignoresections
- %
- % Define a command to swallow text until we reach `@end #1'.
- % This @ is a catcode 12 token (that is the normal catcode of @ in
- % this texinfo.tex file). We change the catcode of @ below to match.
- \long\def\doignoretext##1@end #1{\enddoignore}%
- %
- % Make sure that spaces turn into tokens that match what \doignoretext wants.
- \catcode32 = 10
- %
- % Ignore braces, too, so mismatched braces don't cause trouble.
- \catcode`\{ = 9
- \catcode`\} = 9
- %
- % We must not have @c interpreted as a control sequence.
- \catcode`\@ = 12
- %
- % Make the letter c a comment character so that the rest of the line
- % will be ignored. This way, the document can have (for example)
- % @c @end ifinfo
- % and the @end ifinfo will be properly ignored.
- % (We've just changed @ to catcode 12.)
- \catcode`\c = 14
- %
- % And now expand that command.
- \doignoretext
-}
-
-% What we do to finish off ignored text.
-%
-\def\enddoignore{\endgroup\ignorespaces}%
-
-\newif\ifwarnedobs\warnedobsfalse
-\def\obstexwarn{%
- \ifwarnedobs\relax\else
- % We need to warn folks that they may have trouble with TeX 3.0.
- % This uses \immediate\write16 rather than \message to get newlines.
- \immediate\write16{}
- \immediate\write16{WARNING: for users of Unix TeX 3.0!}
- \immediate\write16{This manual trips a bug in TeX version 3.0 (tex hangs).}
- \immediate\write16{If you are running another version of TeX, relax.}
- \immediate\write16{If you are running Unix TeX 3.0, kill this TeX process.}
- \immediate\write16{ Then upgrade your TeX installation if you can.}
- \immediate\write16{ (See ftp://ftp.gnu.org/pub/gnu/TeX.README.)}
- \immediate\write16{If you are stuck with version 3.0, run the}
- \immediate\write16{ script ``tex3patch'' from the Texinfo distribution}
- \immediate\write16{ to use a workaround.}
- \immediate\write16{}
- \global\warnedobstrue
- \fi
-}
-
-% **In TeX 3.0, setting text in \nullfont hangs tex. For a
-% workaround (which requires the file ``dummy.tfm'' to be installed),
-% uncomment the following line:
-%%%%%\font\nullfont=dummy\let\obstexwarn=\relax
-
-% Ignore text, except that we keep track of conditional commands for
-% purposes of nesting, up to an `@end #1' command.
-%
-\def\nestedignore#1{%
- \obstexwarn
- % We must actually expand the ignored text to look for the @end
- % command, so that nested ignore constructs work. Thus, we put the
- % text into a \vbox and then do nothing with the result. To minimize
- % the change of memory overflow, we follow the approach outlined on
- % page 401 of the TeXbook: make the current font be a dummy font.
- %
- \setbox0 = \vbox\bgroup
- % Don't complain about control sequences we have declared \outer.
- \ignoresections
- %
- % Define `@end #1' to end the box, which will in turn undefine the
- % @end command again.
- \expandafter\def\csname E#1\endcsname{\egroup\ignorespaces}%
- %
- % We are going to be parsing Texinfo commands. Most cause no
- % trouble when they are used incorrectly, but some commands do
- % complicated argument parsing or otherwise get confused, so we
- % undefine them.
- %
- % We can't do anything about stray @-signs, unfortunately;
- % they'll produce `undefined control sequence' errors.
- \ignoremorecommands
- %
- % Set the current font to be \nullfont, a TeX primitive, and define
- % all the font commands to also use \nullfont. We don't use
- % dummy.tfm, as suggested in the TeXbook, because not all sites
- % might have that installed. Therefore, math mode will still
- % produce output, but that should be an extremely small amount of
- % stuff compared to the main input.
- %
- \nullfont
- \let\tenrm=\nullfont \let\tenit=\nullfont \let\tensl=\nullfont
- \let\tenbf=\nullfont \let\tentt=\nullfont \let\smallcaps=\nullfont
- \let\tensf=\nullfont
- % Similarly for index fonts (mostly for their use in smallexample).
- \let\smallrm=\nullfont \let\smallit=\nullfont \let\smallsl=\nullfont
- \let\smallbf=\nullfont \let\smalltt=\nullfont \let\smallsc=\nullfont
- \let\smallsf=\nullfont
- %
- % Don't complain when characters are missing from the fonts.
- \tracinglostchars = 0
- %
- % Don't bother to do space factor calculations.
- \frenchspacing
- %
- % Don't report underfull hboxes.
- \hbadness = 10000
- %
- % Do minimal line-breaking.
- \pretolerance = 10000
- %
- % Do not execute instructions in @tex
- \def\tex{\doignore{tex}}%
- % Do not execute macro definitions.
- % `c' is a comment character, so the word `macro' will get cut off.
- \def\macro{\doignore{ma}}%
-}
-
-% @set VAR sets the variable VAR to an empty value.
-% @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE.
-%
-% Since we want to separate VAR from REST-OF-LINE (which might be
-% empty), we can't just use \parsearg; we have to insert a space of our
-% own to delimit the rest of the line, and then take it out again if we
-% didn't need it. Make sure the catcode of space is correct to avoid
-% losing inside @example, for instance.
-%
-\def\set{\begingroup\catcode` =10
- \catcode`\-=12 \catcode`\_=12 % Allow - and _ in VAR.
- \parsearg\setxxx}
-\def\setxxx#1{\setyyy#1 \endsetyyy}
-\def\setyyy#1 #2\endsetyyy{%
- \def\temp{#2}%
- \ifx\temp\empty \global\expandafter\let\csname SET#1\endcsname = \empty
- \else \setzzz{#1}#2\endsetzzz % Remove the trailing space \setxxx inserted.
- \fi
- \endgroup
-}
-% Can't use \xdef to pre-expand #2 and save some time, since \temp or
-% \next or other control sequences that we've defined might get us into
-% an infinite loop. Consider `@set foo @cite{bar}'.
-\def\setzzz#1#2 \endsetzzz{\expandafter\gdef\csname SET#1\endcsname{#2}}
-
-% @clear VAR clears (i.e., unsets) the variable VAR.
-%
-\def\clear{\parsearg\clearxxx}
-\def\clearxxx#1{\global\expandafter\let\csname SET#1\endcsname=\relax}
-
-% @value{foo} gets the text saved in variable foo.
-{
- \catcode`\_ = \active
- %
- % We might end up with active _ or - characters in the argument if
- % we're called from @code, as @code{@value{foo-bar_}}. So \let any
- % such active characters to their normal equivalents.
- \gdef\value{\begingroup
- \catcode`\-=12 \catcode`\_=12
- \indexbreaks \let_\normalunderscore
- \valuexxx}
-}
-\def\valuexxx#1{\expandablevalue{#1}\endgroup}
-
-% We have this subroutine so that we can handle at least some @value's
-% properly in indexes (we \let\value to this in \indexdummies). Ones
-% whose names contain - or _ still won't work, but we can't do anything
-% about that. The command has to be fully expandable, since the result
-% winds up in the index file. This means that if the variable's value
-% contains other Texinfo commands, it's almost certain it will fail
-% (although perhaps we could fix that with sufficient work to do a
-% one-level expansion on the result, instead of complete).
-%
-\def\expandablevalue#1{%
- \expandafter\ifx\csname SET#1\endcsname\relax
- {[No value for ``#1'']}%
- \else
- \csname SET#1\endcsname
- \fi
-}
-
-% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined
-% with @set.
-%
-\def\ifset{\parsearg\ifsetxxx}
-\def\ifsetxxx #1{%
- \expandafter\ifx\csname SET#1\endcsname\relax
- \expandafter\ifsetfail
- \else
- \expandafter\ifsetsucceed
- \fi
-}
-\def\ifsetsucceed{\conditionalsucceed{ifset}}
-\def\ifsetfail{\nestedignore{ifset}}
-\defineunmatchedend{ifset}
-
-% @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been
-% defined with @set, or has been undefined with @clear.
-%
-\def\ifclear{\parsearg\ifclearxxx}
-\def\ifclearxxx #1{%
- \expandafter\ifx\csname SET#1\endcsname\relax
- \expandafter\ifclearsucceed
- \else
- \expandafter\ifclearfail
- \fi
-}
-\def\ifclearsucceed{\conditionalsucceed{ifclear}}
-\def\ifclearfail{\nestedignore{ifclear}}
-\defineunmatchedend{ifclear}
-
-% @iftex, @ifnothtml, @ifnotinfo always succeed; we read the text
-% following, through the first @end iftex (etc.). Make `@end iftex'
-% (etc.) valid only after an @iftex.
-%
-\def\iftex{\conditionalsucceed{iftex}}
-\def\ifnothtml{\conditionalsucceed{ifnothtml}}
-\def\ifnotinfo{\conditionalsucceed{ifnotinfo}}
-\defineunmatchedend{iftex}
-\defineunmatchedend{ifnothtml}
-\defineunmatchedend{ifnotinfo}
-
-% We can't just want to start a group at @iftex (for example) and end it
-% at @end iftex, since then @set commands inside the conditional have no
-% effect (they'd get reverted at the end of the group). So we must
-% define \Eiftex to redefine itself to be its previous value. (We can't
-% just define it to fail again with an ``unmatched end'' error, since
-% the @ifset might be nested.)
-%
-\def\conditionalsucceed#1{%
- \edef\temp{%
- % Remember the current value of \E#1.
- \let\nece{prevE#1} = \nece{E#1}%
- %
- % At the `@end #1', redefine \E#1 to be its previous value.
- \def\nece{E#1}{\let\nece{E#1} = \nece{prevE#1}}%
- }%
- \temp
-}
-
-% We need to expand lots of \csname's, but we don't want to expand the
-% control sequences after we've constructed them.
-%
-\def\nece#1{\expandafter\noexpand\csname#1\endcsname}
-
-% @defininfoenclose.
-\let\definfoenclose=\comment
-
-
-\message{indexing,}
-% Index generation facilities
-
-% Define \newwrite to be identical to plain tex's \newwrite
-% except not \outer, so it can be used within \newindex.
-{\catcode`\@=11
-\gdef\newwrite{\alloc@7\write\chardef\sixt@@n}}
-
-% \newindex {foo} defines an index named foo.
-% It automatically defines \fooindex such that
-% \fooindex ...rest of line... puts an entry in the index foo.
-% It also defines \fooindfile to be the number of the output channel for
-% the file that accumulates this index. The file's extension is foo.
-% The name of an index should be no more than 2 characters long
-% for the sake of vms.
-%
-\def\newindex#1{%
- \iflinks
- \expandafter\newwrite \csname#1indfile\endcsname
- \openout \csname#1indfile\endcsname \jobname.#1 % Open the file
- \fi
- \expandafter\xdef\csname#1index\endcsname{% % Define @#1index
- \noexpand\doindex{#1}}
-}
-
-% @defindex foo == \newindex{foo}
-
-\def\defindex{\parsearg\newindex}
-
-% Define @defcodeindex, like @defindex except put all entries in @code.
-
-\def\newcodeindex#1{%
- \iflinks
- \expandafter\newwrite \csname#1indfile\endcsname
- \openout \csname#1indfile\endcsname \jobname.#1
- \fi
- \expandafter\xdef\csname#1index\endcsname{%
- \noexpand\docodeindex{#1}}
-}
-
-\def\defcodeindex{\parsearg\newcodeindex}
-
-% @synindex foo bar makes index foo feed into index bar.
-% Do this instead of @defindex foo if you don't want it as a separate index.
-% The \closeout helps reduce unnecessary open files; the limit on the
-% Acorn RISC OS is a mere 16 files.
-\def\synindex#1 #2 {%
- \expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname
- \expandafter\closeout\csname#1indfile\endcsname
- \expandafter\let\csname#1indfile\endcsname=\synindexfoo
- \expandafter\xdef\csname#1index\endcsname{% define \xxxindex
- \noexpand\doindex{#2}}%
-}
-
-% @syncodeindex foo bar similar, but put all entries made for index foo
-% inside @code.
-\def\syncodeindex#1 #2 {%
- \expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname
- \expandafter\closeout\csname#1indfile\endcsname
- \expandafter\let\csname#1indfile\endcsname=\synindexfoo
- \expandafter\xdef\csname#1index\endcsname{% define \xxxindex
- \noexpand\docodeindex{#2}}%
-}
-
-% Define \doindex, the driver for all \fooindex macros.
-% Argument #1 is generated by the calling \fooindex macro,
-% and it is "foo", the name of the index.
-
-% \doindex just uses \parsearg; it calls \doind for the actual work.
-% This is because \doind is more useful to call from other macros.
-
-% There is also \dosubind {index}{topic}{subtopic}
-% which makes an entry in a two-level index such as the operation index.
-
-\def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer}
-\def\singleindexer #1{\doind{\indexname}{#1}}
-
-% like the previous two, but they put @code around the argument.
-\def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer}
-\def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}}
-
-\def\indexdummies{%
-\def\ { }%
-% Take care of the plain tex accent commands.
-\def\"{\realbackslash "}%
-\def\`{\realbackslash `}%
-\def\'{\realbackslash '}%
-\def\^{\realbackslash ^}%
-\def\~{\realbackslash ~}%
-\def\={\realbackslash =}%
-\def\b{\realbackslash b}%
-\def\c{\realbackslash c}%
-\def\d{\realbackslash d}%
-\def\u{\realbackslash u}%
-\def\v{\realbackslash v}%
-\def\H{\realbackslash H}%
-% Take care of the plain tex special European modified letters.
-\def\oe{\realbackslash oe}%
-\def\ae{\realbackslash ae}%
-\def\aa{\realbackslash aa}%
-\def\OE{\realbackslash OE}%
-\def\AE{\realbackslash AE}%
-\def\AA{\realbackslash AA}%
-\def\o{\realbackslash o}%
-\def\O{\realbackslash O}%
-\def\l{\realbackslash l}%
-\def\L{\realbackslash L}%
-\def\ss{\realbackslash ss}%
-% Take care of texinfo commands likely to appear in an index entry.
-% (Must be a way to avoid doing expansion at all, and thus not have to
-% laboriously list every single command here.)
-\def\@{@}% will be @@ when we switch to @ as escape char.
-% Need these in case \tex is in effect and \{ is a \delimiter again.
-% But can't use \lbracecmd and \rbracecmd because texindex assumes
-% braces and backslashes are used only as delimiters.
-\let\{ = \mylbrace
-\let\} = \myrbrace
-\def\_{{\realbackslash _}}%
-\def\w{\realbackslash w }%
-\def\bf{\realbackslash bf }%
-%\def\rm{\realbackslash rm }%
-\def\sl{\realbackslash sl }%
-\def\sf{\realbackslash sf}%
-\def\tt{\realbackslash tt}%
-\def\gtr{\realbackslash gtr}%
-\def\less{\realbackslash less}%
-\def\hat{\realbackslash hat}%
-\def\TeX{\realbackslash TeX}%
-\def\dots{\realbackslash dots }%
-\def\result{\realbackslash result}%
-\def\equiv{\realbackslash equiv}%
-\def\expansion{\realbackslash expansion}%
-\def\print{\realbackslash print}%
-\def\error{\realbackslash error}%
-\def\point{\realbackslash point}%
-\def\copyright{\realbackslash copyright}%
-\def\tclose##1{\realbackslash tclose {##1}}%
-\def\code##1{\realbackslash code {##1}}%
-\def\uref##1{\realbackslash uref {##1}}%
-\def\url##1{\realbackslash url {##1}}%
-\def\env##1{\realbackslash env {##1}}%
-\def\command##1{\realbackslash command {##1}}%
-\def\option##1{\realbackslash option {##1}}%
-\def\dotless##1{\realbackslash dotless {##1}}%
-\def\samp##1{\realbackslash samp {##1}}%
-\def\,##1{\realbackslash ,{##1}}%
-\def\t##1{\realbackslash t {##1}}%
-\def\r##1{\realbackslash r {##1}}%
-\def\i##1{\realbackslash i {##1}}%
-\def\b##1{\realbackslash b {##1}}%
-\def\sc##1{\realbackslash sc {##1}}%
-\def\cite##1{\realbackslash cite {##1}}%
-\def\key##1{\realbackslash key {##1}}%
-\def\file##1{\realbackslash file {##1}}%
-\def\var##1{\realbackslash var {##1}}%
-\def\kbd##1{\realbackslash kbd {##1}}%
-\def\dfn##1{\realbackslash dfn {##1}}%
-\def\emph##1{\realbackslash emph {##1}}%
-\def\acronym##1{\realbackslash acronym {##1}}%
-%
-% Handle some cases of @value -- where the variable name does not
-% contain - or _, and the value does not contain any
-% (non-fully-expandable) commands.
-\let\value = \expandablevalue
-%
-\unsepspaces
-% Turn off macro expansion
-\turnoffmacros
-}
-
-% If an index command is used in an @example environment, any spaces
-% therein should become regular spaces in the raw index file, not the
-% expansion of \tie (\\leavevmode \penalty \@M \ ).
-{\obeyspaces
- \gdef\unsepspaces{\obeyspaces\let =\space}}
-
-% \indexnofonts no-ops all font-change commands.
-% This is used when outputting the strings to sort the index by.
-\def\indexdummyfont#1{#1}
-\def\indexdummytex{TeX}
-\def\indexdummydots{...}
-
-\def\indexnofonts{%
-% Just ignore accents.
-\let\,=\indexdummyfont
-\let\"=\indexdummyfont
-\let\`=\indexdummyfont
-\let\'=\indexdummyfont
-\let\^=\indexdummyfont
-\let\~=\indexdummyfont
-\let\==\indexdummyfont
-\let\b=\indexdummyfont
-\let\c=\indexdummyfont
-\let\d=\indexdummyfont
-\let\u=\indexdummyfont
-\let\v=\indexdummyfont
-\let\H=\indexdummyfont
-\let\dotless=\indexdummyfont
-% Take care of the plain tex special European modified letters.
-\def\oe{oe}%
-\def\ae{ae}%
-\def\aa{aa}%
-\def\OE{OE}%
-\def\AE{AE}%
-\def\AA{AA}%
-\def\o{o}%
-\def\O{O}%
-\def\l{l}%
-\def\L{L}%
-\def\ss{ss}%
-\let\w=\indexdummyfont
-\let\t=\indexdummyfont
-\let\r=\indexdummyfont
-\let\i=\indexdummyfont
-\let\b=\indexdummyfont
-\let\emph=\indexdummyfont
-\let\strong=\indexdummyfont
-\let\cite=\indexdummyfont
-\let\sc=\indexdummyfont
-%Don't no-op \tt, since it isn't a user-level command
-% and is used in the definitions of the active chars like <, >, |...
-%\let\tt=\indexdummyfont
-\let\tclose=\indexdummyfont
-\let\code=\indexdummyfont
-\let\url=\indexdummyfont
-\let\uref=\indexdummyfont
-\let\env=\indexdummyfont
-\let\acronym=\indexdummyfont
-\let\command=\indexdummyfont
-\let\option=\indexdummyfont
-\let\file=\indexdummyfont
-\let\samp=\indexdummyfont
-\let\kbd=\indexdummyfont
-\let\key=\indexdummyfont
-\let\var=\indexdummyfont
-\let\TeX=\indexdummytex
-\let\dots=\indexdummydots
-\def\@{@}%
-}
-
-% To define \realbackslash, we must make \ not be an escape.
-% We must first make another character (@) an escape
-% so we do not become unable to do a definition.
-
-{\catcode`\@=0 \catcode`\\=\other
- @gdef@realbackslash{\}}
-
-\let\indexbackslash=0 %overridden during \printindex.
-\let\SETmarginindex=\relax % put index entries in margin (undocumented)?
-
-% For \ifx comparisons.
-\def\emptymacro{\empty}
-
-% Most index entries go through here, but \dosubind is the general case.
-%
-\def\doind#1#2{\dosubind{#1}{#2}\empty}
-
-% Workhorse for all \fooindexes.
-% #1 is name of index, #2 is stuff to put there, #3 is subentry --
-% \empty if called from \doind, as we usually are. The main exception
-% is with defuns, which call us directly.
-%
-\def\dosubind#1#2#3{%
- % Put the index entry in the margin if desired.
- \ifx\SETmarginindex\relax\else
- \insert\margin{\hbox{\vrule height8pt depth3pt width0pt #2}}%
- \fi
- {%
- \count255=\lastpenalty
- {%
- \indexdummies % Must do this here, since \bf, etc expand at this stage
- \escapechar=`\\
- {%
- \let\folio = 0% We will expand all macros now EXCEPT \folio.
- \def\rawbackslashxx{\indexbackslash}% \indexbackslash isn't defined now
- % so it will be output as is; and it will print as backslash.
- %
- \def\thirdarg{#3}%
- %
- % If third arg is present, precede it with space in sort key.
- \ifx\thirdarg\emptymacro
- \let\subentry = \empty
- \else
- \def\subentry{ #3}%
- \fi
- %
- % First process the index entry with all font commands turned
- % off to get the string to sort by.
- {\indexnofonts \xdef\indexsorttmp{#2\subentry}}%
- %
- % Now the real index entry with the fonts.
- \toks0 = {#2}%
- %
- % If third (subentry) arg is present, add it to the index
- % string. And include a space.
- \ifx\thirdarg\emptymacro \else
- \toks0 = \expandafter{\the\toks0 \space #3}%
- \fi
- %
- % Set up the complete index entry, with both the sort key
- % and the original text, including any font commands. We write
- % three arguments to \entry to the .?? file, texindex reduces to
- % two when writing the .??s sorted result.
- \edef\temp{%
- \write\csname#1indfile\endcsname{%
- \realbackslash entry{\indexsorttmp}{\folio}{\the\toks0}}%
- }%
- %
- % If a skip is the last thing on the list now, preserve it
- % by backing up by \lastskip, doing the \write, then inserting
- % the skip again. Otherwise, the whatsit generated by the
- % \write will make \lastskip zero. The result is that sequences
- % like this:
- % @end defun
- % @tindex whatever
- % @defun ...
- % will have extra space inserted, because the \medbreak in the
- % start of the @defun won't see the skip inserted by the @end of
- % the previous defun.
- %
- % But don't do any of this if we're not in vertical mode. We
- % don't want to do a \vskip and prematurely end a paragraph.
- %
- % Avoid page breaks due to these extra skips, too.
- %
- \iflinks
- \ifvmode
- \skip0 = \lastskip
- \ifdim\lastskip = 0pt \else \nobreak\vskip-\lastskip \fi
- \fi
- %
- \temp % do the write
- %
- %
- \ifvmode \ifdim\skip0 = 0pt \else \nobreak\vskip\skip0 \fi \fi
- \fi
- }%
- }%
- \penalty\count255
- }%
-}
-
-% The index entry written in the file actually looks like
-% \entry {sortstring}{page}{topic}
-% or
-% \entry {sortstring}{page}{topic}{subtopic}
-% The texindex program reads in these files and writes files
-% containing these kinds of lines:
-% \initial {c}
-% before the first topic whose initial is c
-% \entry {topic}{pagelist}
-% for a topic that is used without subtopics
-% \primary {topic}
-% for the beginning of a topic that is used with subtopics
-% \secondary {subtopic}{pagelist}
-% for each subtopic.
-
-% Define the user-accessible indexing commands
-% @findex, @vindex, @kindex, @cindex.
-
-\def\findex {\fnindex}
-\def\kindex {\kyindex}
-\def\cindex {\cpindex}
-\def\vindex {\vrindex}
-\def\tindex {\tpindex}
-\def\pindex {\pgindex}
-
-\def\cindexsub {\begingroup\obeylines\cindexsub}
-{\obeylines %
-\gdef\cindexsub "#1" #2^^M{\endgroup %
-\dosubind{cp}{#2}{#1}}}
-
-% Define the macros used in formatting output of the sorted index material.
-
-% @printindex causes a particular index (the ??s file) to get printed.
-% It does not print any chapter heading (usually an @unnumbered).
-%
-\def\printindex{\parsearg\doprintindex}
-\def\doprintindex#1{\begingroup
- \dobreak \chapheadingskip{10000}%
- %
- \smallfonts \rm
- \tolerance = 9500
- \indexbreaks
- %
- % See if the index file exists and is nonempty.
- % Change catcode of @ here so that if the index file contains
- % \initial {@}
- % as its first line, TeX doesn't complain about mismatched braces
- % (because it thinks @} is a control sequence).
- \catcode`\@ = 11
- \openin 1 \jobname.#1s
- \ifeof 1
- % \enddoublecolumns gets confused if there is no text in the index,
- % and it loses the chapter title and the aux file entries for the
- % index. The easiest way to prevent this problem is to make sure
- % there is some text.
- \putwordIndexNonexistent
- \else
- %
- % If the index file exists but is empty, then \openin leaves \ifeof
- % false. We have to make TeX try to read something from the file, so
- % it can discover if there is anything in it.
- \read 1 to \temp
- \ifeof 1
- \putwordIndexIsEmpty
- \else
- % Index files are almost Texinfo source, but we use \ as the escape
- % character. It would be better to use @, but that's too big a change
- % to make right now.
- \def\indexbackslash{\rawbackslashxx}%
- \catcode`\\ = 0
- \escapechar = `\\
- \begindoublecolumns
- \input \jobname.#1s
- \enddoublecolumns
- \fi
- \fi
- \closein 1
-\endgroup}
-
-% These macros are used by the sorted index file itself.
-% Change them to control the appearance of the index.
-
-\def\initial#1{{%
- % Some minor font changes for the special characters.
- \let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt
- %
- % Remove any glue we may have, we'll be inserting our own.
- \removelastskip
- %
- % We like breaks before the index initials, so insert a bonus.
- \penalty -300
- %
- % Typeset the initial. Making this add up to a whole number of
- % baselineskips increases the chance of the dots lining up from column
- % to column. It still won't often be perfect, because of the stretch
- % we need before each entry, but it's better.
- %
- % No shrink because it confuses \balancecolumns.
- \vskip 1.67\baselineskip plus .5\baselineskip
- \leftline{\secbf #1}%
- \vskip .33\baselineskip plus .1\baselineskip
- %
- % Do our best not to break after the initial.
- \nobreak
-}}
-
-% This typesets a paragraph consisting of #1, dot leaders, and then #2
-% flush to the right margin. It is used for index and table of contents
-% entries. The paragraph is indented by \leftskip.
-%
-\def\entry#1#2{\begingroup
- %
- % Start a new paragraph if necessary, so our assignments below can't
- % affect previous text.
- \par
- %
- % Do not fill out the last line with white space.
- \parfillskip = 0in
- %
- % No extra space above this paragraph.
- \parskip = 0in
- %
- % Do not prefer a separate line ending with a hyphen to fewer lines.
- \finalhyphendemerits = 0
- %
- % \hangindent is only relevant when the entry text and page number
- % don't both fit on one line. In that case, bob suggests starting the
- % dots pretty far over on the line. Unfortunately, a large
- % indentation looks wrong when the entry text itself is broken across
- % lines. So we use a small indentation and put up with long leaders.
- %
- % \hangafter is reset to 1 (which is the value we want) at the start
- % of each paragraph, so we need not do anything with that.
- \hangindent = 2em
- %
- % When the entry text needs to be broken, just fill out the first line
- % with blank space.
- \rightskip = 0pt plus1fil
- %
- % A bit of stretch before each entry for the benefit of balancing columns.
- \vskip 0pt plus1pt
- %
- % Start a ``paragraph'' for the index entry so the line breaking
- % parameters we've set above will have an effect.
- \noindent
- %
- % Insert the text of the index entry. TeX will do line-breaking on it.
- #1%
- % The following is kludged to not output a line of dots in the index if
- % there are no page numbers. The next person who breaks this will be
- % cursed by a Unix daemon.
- \def\tempa{{\rm }}%
- \def\tempb{#2}%
- \edef\tempc{\tempa}%
- \edef\tempd{\tempb}%
- \ifx\tempc\tempd\ \else%
- %
- % If we must, put the page number on a line of its own, and fill out
- % this line with blank space. (The \hfil is overwhelmed with the
- % fill leaders glue in \indexdotfill if the page number does fit.)
- \hfil\penalty50
- \null\nobreak\indexdotfill % Have leaders before the page number.
- %
- % The `\ ' here is removed by the implicit \unskip that TeX does as
- % part of (the primitive) \par. Without it, a spurious underfull
- % \hbox ensues.
- \ifpdf
- \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph.
- \else
- \ #2% The page number ends the paragraph.
- \fi
- \fi%
- \par
-\endgroup}
-
-% Like \dotfill except takes at least 1 em.
-\def\indexdotfill{\cleaders
- \hbox{$\mathsurround=0pt \mkern1.5mu ${\it .}$ \mkern1.5mu$}\hskip 1em plus 1fill}
-
-\def\primary #1{\line{#1\hfil}}
-
-\newskip\secondaryindent \secondaryindent=0.5cm
-
-\def\secondary #1#2{
-{\parfillskip=0in \parskip=0in
-\hangindent =1in \hangafter=1
-\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\par
-}}
-
-% Define two-column mode, which we use to typeset indexes.
-% Adapted from the TeXbook, page 416, which is to say,
-% the manmac.tex format used to print the TeXbook itself.
-\catcode`\@=11
-
-\newbox\partialpage
-\newdimen\doublecolumnhsize
-
-\def\begindoublecolumns{\begingroup % ended by \enddoublecolumns
- % Grab any single-column material above us.
- \output = {%
- %
- % Here is a possibility not foreseen in manmac: if we accumulate a
- % whole lot of material, we might end up calling this \output
- % routine twice in a row (see the doublecol-lose test, which is
- % essentially a couple of indexes with @setchapternewpage off). In
- % that case we just ship out what is in \partialpage with the normal
- % output routine. Generally, \partialpage will be empty when this
- % runs and this will be a no-op. See the indexspread.tex test case.
- \ifvoid\partialpage \else
- \onepageout{\pagecontents\partialpage}%
- \fi
- %
- \global\setbox\partialpage = \vbox{%
- % Unvbox the main output page.
- \unvbox\PAGE
- \kern-\topskip \kern\baselineskip
- }%
- }%
- \eject % run that output routine to set \partialpage
- %
- % Use the double-column output routine for subsequent pages.
- \output = {\doublecolumnout}%
- %
- % Change the page size parameters. We could do this once outside this
- % routine, in each of @smallbook, @afourpaper, and the default 8.5x11
- % format, but then we repeat the same computation. Repeating a couple
- % of assignments once per index is clearly meaningless for the
- % execution time, so we may as well do it in one place.
- %
- % First we halve the line length, less a little for the gutter between
- % the columns. We compute the gutter based on the line length, so it
- % changes automatically with the paper format. The magic constant
- % below is chosen so that the gutter has the same value (well, +-<1pt)
- % as it did when we hard-coded it.
- %
- % We put the result in a separate register, \doublecolumhsize, so we
- % can restore it in \pagesofar, after \hsize itself has (potentially)
- % been clobbered.
- %
- \doublecolumnhsize = \hsize
- \advance\doublecolumnhsize by -.04154\hsize
- \divide\doublecolumnhsize by 2
- \hsize = \doublecolumnhsize
- %
- % Double the \vsize as well. (We don't need a separate register here,
- % since nobody clobbers \vsize.)
- \advance\vsize by -\ht\partialpage
- \vsize = 2\vsize
-}
-
-% The double-column output routine for all double-column pages except
-% the last.
-%
-\def\doublecolumnout{%
- \splittopskip=\topskip \splitmaxdepth=\maxdepth
- % Get the available space for the double columns -- the normal
- % (undoubled) page height minus any material left over from the
- % previous page.
- \dimen@ = \vsize
- \divide\dimen@ by 2
- %
- % box0 will be the left-hand column, box2 the right.
- \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@
- \onepageout\pagesofar
- \unvbox255
- \penalty\outputpenalty
-}
-\def\pagesofar{%
- % Re-output the contents of the output page -- any previous material,
- % followed by the two boxes we just split, in box0 and box2.
- \unvbox\partialpage
- %
- \hsize = \doublecolumnhsize
- \wd0=\hsize \wd2=\hsize
- \hbox to\pagewidth{\box0\hfil\box2}%
-}
-\def\enddoublecolumns{%
- \output = {%
- % Split the last of the double-column material. Leave it on the
- % current page, no automatic page break.
- \balancecolumns
- %
- % If we end up splitting too much material for the current page,
- % though, there will be another page break right after this \output
- % invocation ends. Having called \balancecolumns once, we do not
- % want to call it again. Therefore, reset \output to its normal
- % definition right away. (We hope \balancecolumns will never be
- % called on to balance too much material, but if it is, this makes
- % the output somewhat more palatable.)
- \global\output = {\onepageout{\pagecontents\PAGE}}%
- }%
- \eject
- \endgroup % started in \begindoublecolumns
- %
- % \pagegoal was set to the doubled \vsize above, since we restarted
- % the current page. We're now back to normal single-column
- % typesetting, so reset \pagegoal to the normal \vsize (after the
- % \endgroup where \vsize got restored).
- \pagegoal = \vsize
-}
-\def\balancecolumns{%
- % Called at the end of the double column material.
- \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120.
- \dimen@ = \ht0
- \advance\dimen@ by \topskip
- \advance\dimen@ by-\baselineskip
- \divide\dimen@ by 2 % target to split to
- %debug\message{final 2-column material height=\the\ht0, target=\the\dimen@.}%
- \splittopskip = \topskip
- % Loop until we get a decent breakpoint.
- {%
- \vbadness = 10000
- \loop
- \global\setbox3 = \copy0
- \global\setbox1 = \vsplit3 to \dimen@
- \ifdim\ht3>\dimen@
- \global\advance\dimen@ by 1pt
- \repeat
- }%
- %debug\message{split to \the\dimen@, column heights: \the\ht1, \the\ht3.}%
- \setbox0=\vbox to\dimen@{\unvbox1}%
- \setbox2=\vbox to\dimen@{\unvbox3}%
- %
- \pagesofar
-}
-\catcode`\@ = \other
-
-
-\message{sectioning,}
-% Chapters, sections, etc.
-
-\newcount\chapno
-\newcount\secno \secno=0
-\newcount\subsecno \subsecno=0
-\newcount\subsubsecno \subsubsecno=0
-
-% This counter is funny since it counts through charcodes of letters A, B, ...
-\newcount\appendixno \appendixno = `\@
-% \def\appendixletter{\char\the\appendixno}
-% We do the following for the sake of pdftex, which needs the actual
-% letter in the expansion, not just typeset.
-\def\appendixletter{%
- \ifnum\appendixno=`A A%
- \else\ifnum\appendixno=`B B%
- \else\ifnum\appendixno=`C C%
- \else\ifnum\appendixno=`D D%
- \else\ifnum\appendixno=`E E%
- \else\ifnum\appendixno=`F F%
- \else\ifnum\appendixno=`G G%
- \else\ifnum\appendixno=`H H%
- \else\ifnum\appendixno=`I I%
- \else\ifnum\appendixno=`J J%
- \else\ifnum\appendixno=`K K%
- \else\ifnum\appendixno=`L L%
- \else\ifnum\appendixno=`M M%
- \else\ifnum\appendixno=`N N%
- \else\ifnum\appendixno=`O O%
- \else\ifnum\appendixno=`P P%
- \else\ifnum\appendixno=`Q Q%
- \else\ifnum\appendixno=`R R%
- \else\ifnum\appendixno=`S S%
- \else\ifnum\appendixno=`T T%
- \else\ifnum\appendixno=`U U%
- \else\ifnum\appendixno=`V V%
- \else\ifnum\appendixno=`W W%
- \else\ifnum\appendixno=`X X%
- \else\ifnum\appendixno=`Y Y%
- \else\ifnum\appendixno=`Z Z%
- % The \the is necessary, despite appearances, because \appendixletter is
- % expanded while writing the .toc file. \char\appendixno is not
- % expandable, thus it is written literally, thus all appendixes come out
- % with the same letter (or @) in the toc without it.
- \else\char\the\appendixno
- \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
- \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
-
-% Each @chapter defines this as the name of the chapter.
-% page headings and footings can use it. @section does likewise.
-\def\thischapter{}
-\def\thissection{}
-
-\newcount\absseclevel % used to calculate proper heading level
-\newcount\secbase\secbase=0 % @raise/lowersections modify this count
-
-% @raisesections: treat @section as chapter, @subsection as section, etc.
-\def\raisesections{\global\advance\secbase by -1}
-\let\up=\raisesections % original BFox name
-
-% @lowersections: treat @chapter as section, @section as subsection, etc.
-\def\lowersections{\global\advance\secbase by 1}
-\let\down=\lowersections % original BFox name
-
-% Choose a numbered-heading macro
-% #1 is heading level if unmodified by @raisesections or @lowersections
-% #2 is text for heading
-\def\numhead#1#2{\absseclevel=\secbase\advance\absseclevel by #1
-\ifcase\absseclevel
- \chapterzzz{#2}
-\or
- \seczzz{#2}
-\or
- \numberedsubseczzz{#2}
-\or
- \numberedsubsubseczzz{#2}
-\else
- \ifnum \absseclevel<0
- \chapterzzz{#2}
- \else
- \numberedsubsubseczzz{#2}
- \fi
-\fi
-}
-
-% like \numhead, but chooses appendix heading levels
-\def\apphead#1#2{\absseclevel=\secbase\advance\absseclevel by #1
-\ifcase\absseclevel
- \appendixzzz{#2}
-\or
- \appendixsectionzzz{#2}
-\or
- \appendixsubseczzz{#2}
-\or
- \appendixsubsubseczzz{#2}
-\else
- \ifnum \absseclevel<0
- \appendixzzz{#2}
- \else
- \appendixsubsubseczzz{#2}
- \fi
-\fi
-}
-
-% like \numhead, but chooses numberless heading levels
-\def\unnmhead#1#2{\absseclevel=\secbase\advance\absseclevel by #1
-\ifcase\absseclevel
- \unnumberedzzz{#2}
-\or
- \unnumberedseczzz{#2}
-\or
- \unnumberedsubseczzz{#2}
-\or
- \unnumberedsubsubseczzz{#2}
-\else
- \ifnum \absseclevel<0
- \unnumberedzzz{#2}
- \else
- \unnumberedsubsubseczzz{#2}
- \fi
-\fi
-}
-
-% @chapter, @appendix, @unnumbered.
-\def\thischaptername{No Chapter Title}
-\outer\def\chapter{\parsearg\chapteryyy}
-\def\chapteryyy #1{\numhead0{#1}} % normally numhead0 calls chapterzzz
-\def\chapterzzz #1{%
-\secno=0 \subsecno=0 \subsubsecno=0
-\global\advance \chapno by 1 \message{\putwordChapter\space \the\chapno}%
-\chapmacro {#1}{\the\chapno}%
-\gdef\thissection{#1}%
-\gdef\thischaptername{#1}%
-% We don't substitute the actual chapter name into \thischapter
-% because we don't want its macros evaluated now.
-\xdef\thischapter{\putwordChapter{} \the\chapno: \noexpand\thischaptername}%
-\toks0 = {#1}%
-\edef\temp{\noexpand\writetocentry{\realbackslash chapentry{\the\toks0}%
- {\the\chapno}}}%
-\temp
-\donoderef
-\global\let\section = \numberedsec
-\global\let\subsection = \numberedsubsec
-\global\let\subsubsection = \numberedsubsubsec
-}
-
-\outer\def\appendix{\parsearg\appendixyyy}
-\def\appendixyyy #1{\apphead0{#1}} % normally apphead0 calls appendixzzz
-\def\appendixzzz #1{%
-\secno=0 \subsecno=0 \subsubsecno=0
-\global\advance \appendixno by 1
-\message{\putwordAppendix\space \appendixletter}%
-\chapmacro {#1}{\putwordAppendix{} \appendixletter}%
-\gdef\thissection{#1}%
-\gdef\thischaptername{#1}%
-\xdef\thischapter{\putwordAppendix{} \appendixletter: \noexpand\thischaptername}%
-\toks0 = {#1}%
-\edef\temp{\noexpand\writetocentry{\realbackslash chapentry{\the\toks0}%
- {\putwordAppendix{} \appendixletter}}}%
-\temp
-\appendixnoderef
-\global\let\section = \appendixsec
-\global\let\subsection = \appendixsubsec
-\global\let\subsubsection = \appendixsubsubsec
-}
-
-% @centerchap is like @unnumbered, but the heading is centered.
-\outer\def\centerchap{\parsearg\centerchapyyy}
-\def\centerchapyyy #1{{\let\unnumbchapmacro=\centerchapmacro \unnumberedyyy{#1}}}
-
-% @top is like @unnumbered.
-\outer\def\top{\parsearg\unnumberedyyy}
-
-\outer\def\unnumbered{\parsearg\unnumberedyyy}
-\def\unnumberedyyy #1{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz
-\def\unnumberedzzz #1{%
-\secno=0 \subsecno=0 \subsubsecno=0
-%
-% This used to be simply \message{#1}, but TeX fully expands the
-% argument to \message. Therefore, if #1 contained @-commands, TeX
-% expanded them. For example, in `@unnumbered The @cite{Book}', TeX
-% expanded @cite (which turns out to cause errors because \cite is meant
-% to be executed, not expanded).
-%
-% Anyway, we don't want the fully-expanded definition of @cite to appear
-% as a result of the \message, we just want `@cite' itself. We use
-% \the<toks register> to achieve this: TeX expands \the<toks> only once,
-% simply yielding the contents of <toks register>. (We also do this for
-% the toc entries.)
-\toks0 = {#1}\message{(\the\toks0)}%
-%
-\unnumbchapmacro {#1}%
-\gdef\thischapter{#1}\gdef\thissection{#1}%
-\toks0 = {#1}%
-\edef\temp{\noexpand\writetocentry{\realbackslash unnumbchapentry{\the\toks0}}}%
-\temp
-\unnumbnoderef
-\global\let\section = \unnumberedsec
-\global\let\subsection = \unnumberedsubsec
-\global\let\subsubsection = \unnumberedsubsubsec
-}
-
-% Sections.
-\outer\def\numberedsec{\parsearg\secyyy}
-\def\secyyy #1{\numhead1{#1}} % normally calls seczzz
-\def\seczzz #1{%
-\subsecno=0 \subsubsecno=0 \global\advance \secno by 1 %
-\gdef\thissection{#1}\secheading {#1}{\the\chapno}{\the\secno}%
-\toks0 = {#1}%
-\edef\temp{\noexpand\writetocentry{\realbackslash secentry{\the\toks0}%
- {\the\chapno}{\the\secno}}}%
-\temp
-\donoderef
-\nobreak
-}
-
-\outer\def\appendixsection{\parsearg\appendixsecyyy}
-\outer\def\appendixsec{\parsearg\appendixsecyyy}
-\def\appendixsecyyy #1{\apphead1{#1}} % normally calls appendixsectionzzz
-\def\appendixsectionzzz #1{%
-\subsecno=0 \subsubsecno=0 \global\advance \secno by 1 %
-\gdef\thissection{#1}\secheading {#1}{\appendixletter}{\the\secno}%
-\toks0 = {#1}%
-\edef\temp{\noexpand\writetocentry{\realbackslash secentry{\the\toks0}%
- {\appendixletter}{\the\secno}}}%
-\temp
-\appendixnoderef
-\nobreak
-}
-
-\outer\def\unnumberedsec{\parsearg\unnumberedsecyyy}
-\def\unnumberedsecyyy #1{\unnmhead1{#1}} % normally calls unnumberedseczzz
-\def\unnumberedseczzz #1{%
-\plainsecheading {#1}\gdef\thissection{#1}%
-\toks0 = {#1}%
-\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsecentry{\the\toks0}}}%
-\temp
-\unnumbnoderef
-\nobreak
-}
-
-% Subsections.
-\outer\def\numberedsubsec{\parsearg\numberedsubsecyyy}
-\def\numberedsubsecyyy #1{\numhead2{#1}} % normally calls numberedsubseczzz
-\def\numberedsubseczzz #1{%
-\gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 %
-\subsecheading {#1}{\the\chapno}{\the\secno}{\the\subsecno}%
-\toks0 = {#1}%
-\edef\temp{\noexpand\writetocentry{\realbackslash subsecentry{\the\toks0}%
- {\the\chapno}{\the\secno}{\the\subsecno}}}%
-\temp
-\donoderef
-\nobreak
-}
-
-\outer\def\appendixsubsec{\parsearg\appendixsubsecyyy}
-\def\appendixsubsecyyy #1{\apphead2{#1}} % normally calls appendixsubseczzz
-\def\appendixsubseczzz #1{%
-\gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 %
-\subsecheading {#1}{\appendixletter}{\the\secno}{\the\subsecno}%
-\toks0 = {#1}%
-\edef\temp{\noexpand\writetocentry{\realbackslash subsecentry{\the\toks0}%
- {\appendixletter}{\the\secno}{\the\subsecno}}}%
-\temp
-\appendixnoderef
-\nobreak
-}
-
-\outer\def\unnumberedsubsec{\parsearg\unnumberedsubsecyyy}
-\def\unnumberedsubsecyyy #1{\unnmhead2{#1}} %normally calls unnumberedsubseczzz
-\def\unnumberedsubseczzz #1{%
-\plainsubsecheading {#1}\gdef\thissection{#1}%
-\toks0 = {#1}%
-\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsecentry%
- {\the\toks0}}}%
-\temp
-\unnumbnoderef
-\nobreak
-}
-
-% Subsubsections.
-\outer\def\numberedsubsubsec{\parsearg\numberedsubsubsecyyy}
-\def\numberedsubsubsecyyy #1{\numhead3{#1}} % normally numberedsubsubseczzz
-\def\numberedsubsubseczzz #1{%
-\gdef\thissection{#1}\global\advance \subsubsecno by 1 %
-\subsubsecheading {#1}
- {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}%
-\toks0 = {#1}%
-\edef\temp{\noexpand\writetocentry{\realbackslash subsubsecentry{\the\toks0}%
- {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}}}%
-\temp
-\donoderef
-\nobreak
-}
-
-\outer\def\appendixsubsubsec{\parsearg\appendixsubsubsecyyy}
-\def\appendixsubsubsecyyy #1{\apphead3{#1}} % normally appendixsubsubseczzz
-\def\appendixsubsubseczzz #1{%
-\gdef\thissection{#1}\global\advance \subsubsecno by 1 %
-\subsubsecheading {#1}
- {\appendixletter}{\the\secno}{\the\subsecno}{\the\subsubsecno}%
-\toks0 = {#1}%
-\edef\temp{\noexpand\writetocentry{\realbackslash subsubsecentry{\the\toks0}%
- {\appendixletter}{\the\secno}{\the\subsecno}{\the\subsubsecno}}}%
-\temp
-\appendixnoderef
-\nobreak
-}
-
-\outer\def\unnumberedsubsubsec{\parsearg\unnumberedsubsubsecyyy}
-\def\unnumberedsubsubsecyyy #1{\unnmhead3{#1}} %normally unnumberedsubsubseczzz
-\def\unnumberedsubsubseczzz #1{%
-\plainsubsubsecheading {#1}\gdef\thissection{#1}%
-\toks0 = {#1}%
-\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsubsecentry%
- {\the\toks0}}}%
-\temp
-\unnumbnoderef
-\nobreak
-}
-
-% These are variants which are not "outer", so they can appear in @ifinfo.
-% Actually, they should now be obsolete; ordinary section commands should work.
-\def\infotop{\parsearg\unnumberedzzz}
-\def\infounnumbered{\parsearg\unnumberedzzz}
-\def\infounnumberedsec{\parsearg\unnumberedseczzz}
-\def\infounnumberedsubsec{\parsearg\unnumberedsubseczzz}
-\def\infounnumberedsubsubsec{\parsearg\unnumberedsubsubseczzz}
-
-\def\infoappendix{\parsearg\appendixzzz}
-\def\infoappendixsec{\parsearg\appendixseczzz}
-\def\infoappendixsubsec{\parsearg\appendixsubseczzz}
-\def\infoappendixsubsubsec{\parsearg\appendixsubsubseczzz}
-
-\def\infochapter{\parsearg\chapterzzz}
-\def\infosection{\parsearg\sectionzzz}
-\def\infosubsection{\parsearg\subsectionzzz}
-\def\infosubsubsection{\parsearg\subsubsectionzzz}
-
-% These macros control what the section commands do, according
-% to what kind of chapter we are in (ordinary, appendix, or unnumbered).
-% Define them by default for a numbered chapter.
-\global\let\section = \numberedsec
-\global\let\subsection = \numberedsubsec
-\global\let\subsubsection = \numberedsubsubsec
-
-% Define @majorheading, @heading and @subheading
-
-% NOTE on use of \vbox for chapter headings, section headings, and such:
-% 1) We use \vbox rather than the earlier \line to permit
-% overlong headings to fold.
-% 2) \hyphenpenalty is set to 10000 because hyphenation in a
-% heading is obnoxious; this forbids it.
-% 3) Likewise, headings look best if no \parindent is used, and
-% if justification is not attempted. Hence \raggedright.
-
-
-\def\majorheading{\parsearg\majorheadingzzz}
-\def\majorheadingzzz #1{%
-{\advance\chapheadingskip by 10pt \chapbreak }%
-{\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
- \parindent=0pt\raggedright
- \rm #1\hfill}}\bigskip \par\penalty 200}
-
-\def\chapheading{\parsearg\chapheadingzzz}
-\def\chapheadingzzz #1{\chapbreak %
-{\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
- \parindent=0pt\raggedright
- \rm #1\hfill}}\bigskip \par\penalty 200}
-
-% @heading, @subheading, @subsubheading.
-\def\heading{\parsearg\plainsecheading}
-\def\subheading{\parsearg\plainsubsecheading}
-\def\subsubheading{\parsearg\plainsubsubsecheading}
-
-% These macros generate a chapter, section, etc. heading only
-% (including whitespace, linebreaking, etc. around it),
-% given all the information in convenient, parsed form.
-
-%%% Args are the skip and penalty (usually negative)
-\def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi}
-
-\def\setchapterstyle #1 {\csname CHAPF#1\endcsname}
-
-%%% Define plain chapter starts, and page on/off switching for it
-% Parameter controlling skip before chapter headings (if needed)
-
-\newskip\chapheadingskip
-
-\def\chapbreak{\dobreak \chapheadingskip {-4000}}
-\def\chappager{\par\vfill\supereject}
-\def\chapoddpage{\chappager \ifodd\pageno \else \hbox to 0pt{} \chappager\fi}
-
-\def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname}
-
-\def\CHAPPAGoff{%
-\global\let\contentsalignmacro = \chappager
-\global\let\pchapsepmacro=\chapbreak
-\global\let\pagealignmacro=\chappager}
-
-\def\CHAPPAGon{%
-\global\let\contentsalignmacro = \chappager
-\global\let\pchapsepmacro=\chappager
-\global\let\pagealignmacro=\chappager
-\global\def\HEADINGSon{\HEADINGSsingle}}
-
-\def\CHAPPAGodd{
-\global\let\contentsalignmacro = \chapoddpage
-\global\let\pchapsepmacro=\chapoddpage
-\global\let\pagealignmacro=\chapoddpage
-\global\def\HEADINGSon{\HEADINGSdouble}}
-
-\CHAPPAGon
-
-\def\CHAPFplain{
-\global\let\chapmacro=\chfplain
-\global\let\unnumbchapmacro=\unnchfplain
-\global\let\centerchapmacro=\centerchfplain}
-
-% Plain chapter opening.
-% #1 is the text, #2 the chapter number or empty if unnumbered.
-\def\chfplain#1#2{%
- \pchapsepmacro
- {%
- \chapfonts \rm
- \def\chapnum{#2}%
- \setbox0 = \hbox{#2\ifx\chapnum\empty\else\enspace\fi}%
- \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright
- \hangindent = \wd0 \centerparametersmaybe
- \unhbox0 #1\par}%
- }%
- \nobreak\bigskip % no page break after a chapter title
- \nobreak
-}
-
-% Plain opening for unnumbered.
-\def\unnchfplain#1{\chfplain{#1}{}}
-
-% @centerchap -- centered and unnumbered.
-\let\centerparametersmaybe = \relax
-\def\centerchfplain#1{{%
- \def\centerparametersmaybe{%
- \advance\rightskip by 3\rightskip
- \leftskip = \rightskip
- \parfillskip = 0pt
- }%
- \chfplain{#1}{}%
-}}
-
-\CHAPFplain % The default
-
-\def\unnchfopen #1{%
-\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
- \parindent=0pt\raggedright
- \rm #1\hfill}}\bigskip \par\nobreak
-}
-
-\def\chfopen #1#2{\chapoddpage {\chapfonts
-\vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}%
-\par\penalty 5000 %
-}
-
-\def\centerchfopen #1{%
-\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
- \parindent=0pt
- \hfill {\rm #1}\hfill}}\bigskip \par\nobreak
-}
-
-\def\CHAPFopen{
-\global\let\chapmacro=\chfopen
-\global\let\unnumbchapmacro=\unnchfopen
-\global\let\centerchapmacro=\centerchfopen}
-
-
-% Section titles.
-\newskip\secheadingskip
-\def\secheadingbreak{\dobreak \secheadingskip {-1000}}
-\def\secheading#1#2#3{\sectionheading{sec}{#2.#3}{#1}}
-\def\plainsecheading#1{\sectionheading{sec}{}{#1}}
-
-% Subsection titles.
-\newskip \subsecheadingskip
-\def\subsecheadingbreak{\dobreak \subsecheadingskip {-500}}
-\def\subsecheading#1#2#3#4{\sectionheading{subsec}{#2.#3.#4}{#1}}
-\def\plainsubsecheading#1{\sectionheading{subsec}{}{#1}}
-
-% Subsubsection titles.
-\let\subsubsecheadingskip = \subsecheadingskip
-\let\subsubsecheadingbreak = \subsecheadingbreak
-\def\subsubsecheading#1#2#3#4#5{\sectionheading{subsubsec}{#2.#3.#4.#5}{#1}}
-\def\plainsubsubsecheading#1{\sectionheading{subsubsec}{}{#1}}
-
-
-% Print any size section title.
-%
-% #1 is the section type (sec/subsec/subsubsec), #2 is the section
-% number (maybe empty), #3 the text.
-\def\sectionheading#1#2#3{%
- {%
- \expandafter\advance\csname #1headingskip\endcsname by \parskip
- \csname #1headingbreak\endcsname
- }%
- {%
- % Switch to the right set of fonts.
- \csname #1fonts\endcsname \rm
- %
- % Only insert the separating space if we have a section number.
- \def\secnum{#2}%
- \setbox0 = \hbox{#2\ifx\secnum\empty\else\enspace\fi}%
- %
- \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright
- \hangindent = \wd0 % zero if no section number
- \unhbox0 #3}%
- }%
- \ifdim\parskip<10pt \nobreak\kern10pt\nobreak\kern-\parskip\fi \nobreak
-}
-
-
-\message{toc,}
-% Table of contents.
-\newwrite\tocfile
-
-% Write an entry to the toc file, opening it if necessary.
-% Called from @chapter, etc. We supply {\folio} at the end of the
-% argument, which will end up as the last argument to the \...entry macro.
-%
-% We open the .toc file here instead of at @setfilename or any other
-% given time so that @contents can be put in the document anywhere.
-%
-\newif\iftocfileopened
-\def\writetocentry#1{%
- \iftocfileopened\else
- \immediate\openout\tocfile = \jobname.toc
- \global\tocfileopenedtrue
- \fi
- \iflinks \write\tocfile{#1{\folio}}\fi
-}
-
-\newskip\contentsrightmargin \contentsrightmargin=1in
-\newcount\savepageno
-\newcount\lastnegativepageno \lastnegativepageno = -1
-
-% Finish up the main text and prepare to read what we've written
-% to \tocfile.
-%
-\def\startcontents#1{%
- % If @setchapternewpage on, and @headings double, the contents should
- % start on an odd page, unlike chapters. Thus, we maintain
- % \contentsalignmacro in parallel with \pagealignmacro.
- % From: Torbjorn Granlund <tege@matematik.su.se>
- \contentsalignmacro
- \immediate\closeout\tocfile
- %
- % Don't need to put `Contents' or `Short Contents' in the headline.
- % It is abundantly clear what they are.
- \unnumbchapmacro{#1}\def\thischapter{}%
- \savepageno = \pageno
- \begingroup % Set up to handle contents files properly.
- \catcode`\\=0 \catcode`\{=1 \catcode`\}=2 \catcode`\@=11
- % We can't do this, because then an actual ^ in a section
- % title fails, e.g., @chapter ^ -- exponentiation. --karl, 9jul97.
- %\catcode`\^=7 % to see ^^e4 as \"a etc. juha@piuha.ydi.vtt.fi
- \raggedbottom % Worry more about breakpoints than the bottom.
- \advance\hsize by -\contentsrightmargin % Don't use the full line length.
- %
- % Roman numerals for page numbers.
- \ifnum \pageno>0 \pageno = \lastnegativepageno \fi
-}
-
-
-% Normal (long) toc.
-\def\contents{%
- \startcontents{\putwordTOC}%
- \openin 1 \jobname.toc
- \ifeof 1 \else
- \closein 1
- \input \jobname.toc
- \fi
- \vfill \eject
- \contentsalignmacro % in case @setchapternewpage odd is in effect
- \pdfmakeoutlines
- \endgroup
- \lastnegativepageno = \pageno
- \pageno = \savepageno
-}
-
-% And just the chapters.
-\def\summarycontents{%
- \startcontents{\putwordShortTOC}%
- %
- \let\chapentry = \shortchapentry
- \let\unnumbchapentry = \shortunnumberedentry
- % We want a true roman here for the page numbers.
- \secfonts
- \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl
- \rm
- \hyphenpenalty = 10000
- \advance\baselineskip by 1pt % Open it up a little.
- \def\secentry ##1##2##3##4{}
- \def\unnumbsecentry ##1##2{}
- \def\subsecentry ##1##2##3##4##5{}
- \def\unnumbsubsecentry ##1##2{}
- \def\subsubsecentry ##1##2##3##4##5##6{}
- \def\unnumbsubsubsecentry ##1##2{}
- \openin 1 \jobname.toc
- \ifeof 1 \else
- \closein 1
- \input \jobname.toc
- \fi
- \vfill \eject
- \contentsalignmacro % in case @setchapternewpage odd is in effect
- \endgroup
- \lastnegativepageno = \pageno
- \pageno = \savepageno
-}
-\let\shortcontents = \summarycontents
-
-\ifpdf
- \pdfcatalog{/PageMode /UseOutlines}%
-\fi
-
-% These macros generate individual entries in the table of contents.
-% The first argument is the chapter or section name.
-% The last argument is the page number.
-% The arguments in between are the chapter number, section number, ...
-
-% Chapter-level things, for both the long and short contents.
-\def\chapentry#1#2#3{\dochapentry{#2\labelspace#1}{#3}}
-
-% See comments in \dochapentry re vbox and related settings
-\def\shortchapentry#1#2#3{%
- \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#3\egroup}%
-}
-
-% Typeset the label for a chapter or appendix for the short contents.
-% The arg is, e.g. `Appendix A' for an appendix, or `3' for a chapter.
-% We could simplify the code here by writing out an \appendixentry
-% command in the toc file for appendices, instead of using \chapentry
-% for both, but it doesn't seem worth it.
-%
-\newdimen\shortappendixwidth
-%
-\def\shortchaplabel#1{%
- % Compute width of word "Appendix", may change with language.
- \setbox0 = \hbox{\shortcontrm \putwordAppendix}%
- \shortappendixwidth = \wd0
- %
- % We typeset #1 in a box of constant width, regardless of the text of
- % #1, so the chapter titles will come out aligned.
- \setbox0 = \hbox{#1}%
- \dimen0 = \ifdim\wd0 > \shortappendixwidth \shortappendixwidth \else 0pt \fi
- %
- % This space should be plenty, since a single number is .5em, and the
- % widest letter (M) is 1em, at least in the Computer Modern fonts.
- % (This space doesn't include the extra space that gets added after
- % the label; that gets put in by \shortchapentry above.)
- \advance\dimen0 by 1.1em
- \hbox to \dimen0{#1\hfil}%
-}
-
-\def\unnumbchapentry#1#2{\dochapentry{#1}{#2}}
-\def\shortunnumberedentry#1#2{\tocentry{#1}{\doshortpageno\bgroup#2\egroup}}
-
-% Sections.
-\def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}{#4}}
-\def\unnumbsecentry#1#2{\dosecentry{#1}{#2}}
-
-% Subsections.
-\def\subsecentry#1#2#3#4#5{\dosubsecentry{#2.#3.#4\labelspace#1}{#5}}
-\def\unnumbsubsecentry#1#2{\dosubsecentry{#1}{#2}}
-
-% And subsubsections.
-\def\subsubsecentry#1#2#3#4#5#6{%
- \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}{#6}}
-\def\unnumbsubsubsecentry#1#2{\dosubsubsecentry{#1}{#2}}
-
-% This parameter controls the indentation of the various levels.
-\newdimen\tocindent \tocindent = 3pc
-
-% Now for the actual typesetting. In all these, #1 is the text and #2 is the
-% page number.
-%
-% If the toc has to be broken over pages, we want it to be at chapters
-% if at all possible; hence the \penalty.
-\def\dochapentry#1#2{%
- \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip
- \begingroup
- \chapentryfonts
- \tocentry{#1}{\dopageno\bgroup#2\egroup}%
- \endgroup
- \nobreak\vskip .25\baselineskip plus.1\baselineskip
-}
-
-\def\dosecentry#1#2{\begingroup
- \secentryfonts \leftskip=\tocindent
- \tocentry{#1}{\dopageno\bgroup#2\egroup}%
-\endgroup}
-
-\def\dosubsecentry#1#2{\begingroup
- \subsecentryfonts \leftskip=2\tocindent
- \tocentry{#1}{\dopageno\bgroup#2\egroup}%
-\endgroup}
-
-\def\dosubsubsecentry#1#2{\begingroup
- \subsubsecentryfonts \leftskip=3\tocindent
- \tocentry{#1}{\dopageno\bgroup#2\egroup}%
-\endgroup}
-
-% Final typesetting of a toc entry; we use the same \entry macro as for
-% the index entries, but we want to suppress hyphenation here. (We
-% can't do that in the \entry macro, since index entries might consist
-% of hyphenated-identifiers-that-do-not-fit-on-a-line-and-nothing-else.)
-\def\tocentry#1#2{\begingroup
- \vskip 0pt plus1pt % allow a little stretch for the sake of nice page breaks
- % Do not use \turnoffactive in these arguments. Since the toc is
- % typeset in cmr, so characters such as _ would come out wrong; we
- % have to do the usual translation tricks.
- \entry{#1}{#2}%
-\endgroup}
-
-% Space between chapter (or whatever) number and the title.
-\def\labelspace{\hskip1em \relax}
-
-\def\dopageno#1{{\rm #1}}
-\def\doshortpageno#1{{\rm #1}}
-
-\def\chapentryfonts{\secfonts \rm}
-\def\secentryfonts{\textfonts}
-\let\subsecentryfonts = \textfonts
-\let\subsubsecentryfonts = \textfonts
-
-
-\message{environments,}
-% @foo ... @end foo.
-
-% Since these characters are used in examples, it should be an even number of
-% \tt widths. Each \tt character is 1en, so two makes it 1em.
-% Furthermore, these definitions must come after we define our fonts.
-\newbox\dblarrowbox \newbox\longdblarrowbox
-\newbox\pushcharbox \newbox\bullbox
-\newbox\equivbox \newbox\errorbox
-
-%{\tentt
-%\global\setbox\dblarrowbox = \hbox to 1em{\hfil$\Rightarrow$\hfil}
-%\global\setbox\longdblarrowbox = \hbox to 1em{\hfil$\mapsto$\hfil}
-%\global\setbox\pushcharbox = \hbox to 1em{\hfil$\dashv$\hfil}
-%\global\setbox\equivbox = \hbox to 1em{\hfil$\ptexequiv$\hfil}
-% Adapted from the manmac format (p.420 of TeXbook)
-%\global\setbox\bullbox = \hbox to 1em{\kern.15em\vrule height .75ex width .85ex
-% depth .1ex\hfil}
-%}
-
-% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
-\def\point{$\star$}
-\def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
-\def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}}
-\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
-\def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}}
-
-% Adapted from the TeXbook's \boxit.
-{\tentt \global\dimen0 = 3em}% Width of the box.
-\dimen2 = .55pt % Thickness of rules
-% The text. (`r' is open on the right, `e' somewhat less so on the left.)
-\setbox0 = \hbox{\kern-.75pt \tensf error\kern-1.5pt}
-
-\global\setbox\errorbox=\hbox to \dimen0{\hfil
- \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
- \advance\hsize by -2\dimen2 % Rules.
- \vbox{
- \hrule height\dimen2
- \hbox{\vrule width\dimen2 \kern3pt % Space to left of text.
- \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below.
- \kern3pt\vrule width\dimen2}% Space to right.
- \hrule height\dimen2}
- \hfil}
-
-% The @error{} command.
-\def\error{\leavevmode\lower.7ex\copy\errorbox}
-
-% @tex ... @end tex escapes into raw Tex temporarily.
-% One exception: @ is still an escape character, so that @end tex works.
-% But \@ or @@ will get a plain tex @ character.
-
-\def\tex{\begingroup
- \catcode `\\=0 \catcode `\{=1 \catcode `\}=2
- \catcode `\$=3 \catcode `\&=4 \catcode `\#=6
- \catcode `\^=7 \catcode `\_=8 \catcode `\~=13 \let~=\tie
- \catcode `\%=14
- \catcode 43=12 % plus
- \catcode`\"=12
- \catcode`\==12
- \catcode`\|=12
- \catcode`\<=12
- \catcode`\>=12
- \escapechar=`\\
- %
- \let\b=\ptexb
- \let\bullet=\ptexbullet
- \let\c=\ptexc
- \let\,=\ptexcomma
- \let\.=\ptexdot
- \let\dots=\ptexdots
- \let\equiv=\ptexequiv
- \let\!=\ptexexclam
- \let\i=\ptexi
- \let\{=\ptexlbrace
- \let\+=\tabalign
- \let\}=\ptexrbrace
- \let\*=\ptexstar
- \let\t=\ptext
- %
- \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}%
- \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}%
- \def\@{@}%
-\let\Etex=\endgroup}
-
-% Define @lisp ... @endlisp.
-% @lisp does a \begingroup so it can rebind things,
-% including the definition of @endlisp (which normally is erroneous).
-
-% Amount to narrow the margins by for @lisp.
-\newskip\lispnarrowing \lispnarrowing=0.4in
-
-% This is the definition that ^^M gets inside @lisp, @example, and other
-% such environments. \null is better than a space, since it doesn't
-% have any width.
-\def\lisppar{\null\endgraf}
-
-% Make each space character in the input produce a normal interword
-% space in the output. Don't allow a line break at this space, as this
-% is used only in environments like @example, where each line of input
-% should produce a line of output anyway.
-%
-{\obeyspaces %
-\gdef\sepspaces{\obeyspaces\let =\tie}}
-
-% Define \obeyedspace to be our active space, whatever it is. This is
-% for use in \parsearg.
-{\sepspaces%
-\global\let\obeyedspace= }
-
-% This space is always present above and below environments.
-\newskip\envskipamount \envskipamount = 0pt
-
-% Make spacing and below environment symmetrical. We use \parskip here
-% to help in doing that, since in @example-like environments \parskip
-% is reset to zero; thus the \afterenvbreak inserts no space -- but the
-% start of the next paragraph will insert \parskip
-%
-\def\aboveenvbreak{{\advance\envskipamount by \parskip
-\endgraf \ifdim\lastskip<\envskipamount
-\removelastskip \penalty-50 \vskip\envskipamount \fi}}
-
-\let\afterenvbreak = \aboveenvbreak
-
-% \nonarrowing is a flag. If "set", @lisp etc don't narrow margins.
-\let\nonarrowing=\relax
-
-% @cartouche ... @end cartouche: draw rectangle w/rounded corners around
-% environment contents.
-\font\circle=lcircle10
-\newdimen\circthick
-\newdimen\cartouter\newdimen\cartinner
-\newskip\normbskip\newskip\normpskip\newskip\normlskip
-\circthick=\fontdimen8\circle
-%
-\def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth
-\def\ctr{{\hskip 6pt\circle\char'010}}
-\def\cbl{{\circle\char'012\hskip -6pt}}
-\def\cbr{{\hskip 6pt\circle\char'011}}
-\def\carttop{\hbox to \cartouter{\hskip\lskip
- \ctl\leaders\hrule height\circthick\hfil\ctr
- \hskip\rskip}}
-\def\cartbot{\hbox to \cartouter{\hskip\lskip
- \cbl\leaders\hrule height\circthick\hfil\cbr
- \hskip\rskip}}
-%
-\newskip\lskip\newskip\rskip
-
-\long\def\cartouche{%
-\begingroup
- \lskip=\leftskip \rskip=\rightskip
- \leftskip=0pt\rightskip=0pt %we want these *outside*.
- \cartinner=\hsize \advance\cartinner by-\lskip
- \advance\cartinner by-\rskip
- \cartouter=\hsize
- \advance\cartouter by 18.4pt % allow for 3pt kerns on either
-% side, and for 6pt waste from
-% each corner char, and rule thickness
- \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip
- % Flag to tell @lisp, etc., not to narrow margin.
- \let\nonarrowing=\comment
- \vbox\bgroup
- \baselineskip=0pt\parskip=0pt\lineskip=0pt
- \carttop
- \hbox\bgroup
- \hskip\lskip
- \vrule\kern3pt
- \vbox\bgroup
- \hsize=\cartinner
- \kern3pt
- \begingroup
- \baselineskip=\normbskip
- \lineskip=\normlskip
- \parskip=\normpskip
- \vskip -\parskip
-\def\Ecartouche{%
- \endgroup
- \kern3pt
- \egroup
- \kern3pt\vrule
- \hskip\rskip
- \egroup
- \cartbot
- \egroup
-\endgroup
-}}
-
-
-% This macro is called at the beginning of all the @example variants,
-% inside a group.
-\def\nonfillstart{%
- \aboveenvbreak
- \inENV % This group ends at the end of the body
- \hfuzz = 12pt % Don't be fussy
- \sepspaces % Make spaces be word-separators rather than space tokens.
- \singlespace
- \let\par = \lisppar % don't ignore blank lines
- \obeylines % each line of input is a line of output
- \parskip = 0pt
- \parindent = 0pt
- \emergencystretch = 0pt % don't try to avoid overfull boxes
- % @cartouche defines \nonarrowing to inhibit narrowing
- % at next level down.
- \ifx\nonarrowing\relax
- \advance \leftskip by \lispnarrowing
- \exdentamount=\lispnarrowing
- \let\exdent=\nofillexdent
- \let\nonarrowing=\relax
- \fi
-}
-
-% Define the \E... control sequence only if we are inside the particular
-% environment, so the error checking in \end will work.
-%
-% To end an @example-like environment, we first end the paragraph (via
-% \afterenvbreak's vertical glue), and then the group. That way we keep
-% the zero \parskip that the environments set -- \parskip glue will be
-% inserted at the beginning of the next paragraph in the document, after
-% the environment.
-%
-\def\nonfillfinish{\afterenvbreak\endgroup}
-
-% @lisp: indented, narrowed, typewriter font.
-\def\lisp{\begingroup
- \nonfillstart
- \let\Elisp = \nonfillfinish
- \tt
- \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special.
- \gobble % eat return
-}
-
-% @example: Same as @lisp.
-\def\example{\begingroup \def\Eexample{\nonfillfinish\endgroup}\lisp}
-
-% @small... is usually equivalent to the non-small (@smallbook
-% redefines). We must call \example (or whatever) last in the
-% definition, since it reads the return following the @example (or
-% whatever) command.
-%
-% This actually allows (for example) @end display inside an
-% @smalldisplay. Too bad, but makeinfo will catch the error anyway.
-%
-\def\smalldisplay{\begingroup\def\Esmalldisplay{\nonfillfinish\endgroup}\display}
-\def\smallexample{\begingroup\def\Esmallexample{\nonfillfinish\endgroup}\lisp}
-\def\smallformat{\begingroup\def\Esmallformat{\nonfillfinish\endgroup}\format}
-\def\smalllisp{\begingroup\def\Esmalllisp{\nonfillfinish\endgroup}\lisp}
-
-% Real @smallexample and @smalllisp (when @smallbook): use smaller fonts.
-% Originally contributed by Pavel@xerox.
-\def\smalllispx{\begingroup
- \def\Esmalllisp{\nonfillfinish\endgroup}%
- \def\Esmallexample{\nonfillfinish\endgroup}%
- \smallfonts
- \lisp
-}
-
-% @display: same as @lisp except keep current font.
-%
-\def\display{\begingroup
- \nonfillstart
- \let\Edisplay = \nonfillfinish
- \gobble
-}
-
-% @smalldisplay (when @smallbook): @display plus smaller fonts.
-%
-\def\smalldisplayx{\begingroup
- \def\Esmalldisplay{\nonfillfinish\endgroup}%
- \smallfonts \rm
- \display
-}
-
-% @format: same as @display except don't narrow margins.
-%
-\def\format{\begingroup
- \let\nonarrowing = t
- \nonfillstart
- \let\Eformat = \nonfillfinish
- \gobble
-}
-
-% @smallformat (when @smallbook): @format plus smaller fonts.
-%
-\def\smallformatx{\begingroup
- \def\Esmallformat{\nonfillfinish\endgroup}%
- \smallfonts \rm
- \format
-}
-
-% @flushleft (same as @format).
-%
-\def\flushleft{\begingroup \def\Eflushleft{\nonfillfinish\endgroup}\format}
-
-% @flushright.
-%
-\def\flushright{\begingroup
- \let\nonarrowing = t
- \nonfillstart
- \let\Eflushright = \nonfillfinish
- \advance\leftskip by 0pt plus 1fill
- \gobble
-}
-
-% @quotation does normal linebreaking (hence we can't use \nonfillstart)
-% and narrows the margins.
-%
-\def\quotation{%
- \begingroup\inENV %This group ends at the end of the @quotation body
- {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
- \singlespace
- \parindent=0pt
- % We have retained a nonzero parskip for the environment, since we're
- % doing normal filling. So to avoid extra space below the environment...
- \def\Equotation{\parskip = 0pt \nonfillfinish}%
- %
- % @cartouche defines \nonarrowing to inhibit narrowing at next level down.
- \ifx\nonarrowing\relax
- \advance\leftskip by \lispnarrowing
- \advance\rightskip by \lispnarrowing
- \exdentamount = \lispnarrowing
- \let\nonarrowing = \relax
- \fi
-}
-
-
-\message{defuns,}
-% @defun etc.
-
-% Allow user to change definition object font (\df) internally
-\def\setdeffont #1 {\csname DEF#1\endcsname}
-
-\newskip\defbodyindent \defbodyindent=.4in
-\newskip\defargsindent \defargsindent=50pt
-\newskip\deftypemargin \deftypemargin=12pt
-\newskip\deflastargmargin \deflastargmargin=18pt
-
-\newcount\parencount
-% define \functionparens, which makes ( and ) and & do special things.
-% \functionparens affects the group it is contained in.
-\def\activeparens{%
-\catcode`\(=\active \catcode`\)=\active \catcode`\&=\active
-\catcode`\[=\active \catcode`\]=\active}
-
-% Make control sequences which act like normal parenthesis chars.
-\let\lparen = ( \let\rparen = )
-
-{\activeparens % Now, smart parens don't turn on until &foo (see \amprm)
-
-% Be sure that we always have a definition for `(', etc. For example,
-% if the fn name has parens in it, \boldbrax will not be in effect yet,
-% so TeX would otherwise complain about undefined control sequence.
-\global\let(=\lparen \global\let)=\rparen
-\global\let[=\lbrack \global\let]=\rbrack
-
-\gdef\functionparens{\boldbrax\let&=\amprm\parencount=0 }
-\gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}
-% This is used to turn on special parens
-% but make & act ordinary (given that it's active).
-\gdef\boldbraxnoamp{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb\let&=\ampnr}
-
-% Definitions of (, ) and & used in args for functions.
-% This is the definition of ( outside of all parentheses.
-\gdef\oprm#1 {{\rm\char`\(}#1 \bf \let(=\opnested
- \global\advance\parencount by 1
-}
-%
-% This is the definition of ( when already inside a level of parens.
-\gdef\opnested{\char`\(\global\advance\parencount by 1 }
-%
-\gdef\clrm{% Print a paren in roman if it is taking us back to depth of 0.
- % also in that case restore the outer-level definition of (.
- \ifnum \parencount=1 {\rm \char `\)}\sl \let(=\oprm \else \char `\) \fi
- \global\advance \parencount by -1 }
-% If we encounter &foo, then turn on ()-hacking afterwards
-\gdef\amprm#1 {{\rm\&#1}\let(=\oprm \let)=\clrm\ }
-%
-\gdef\normalparens{\boldbrax\let&=\ampnr}
-} % End of definition inside \activeparens
-%% These parens (in \boldbrax) actually are a little bolder than the
-%% contained text. This is especially needed for [ and ]
-\def\opnr{{\sf\char`\(}\global\advance\parencount by 1 }
-\def\clnr{{\sf\char`\)}\global\advance\parencount by -1 }
-\let\ampnr = \&
-\def\lbrb{{\bf\char`\[}}
-\def\rbrb{{\bf\char`\]}}
-
-% Active &'s sneak into the index arguments, so make sure it's defined.
-{
- \catcode`& = 13
- \global\let& = \ampnr
-}
-
-% First, defname, which formats the header line itself.
-% #1 should be the function name.
-% #2 should be the type of definition, such as "Function".
-
-\def\defname #1#2{%
-% Get the values of \leftskip and \rightskip as they were
-% outside the @def...
-\dimen2=\leftskip
-\advance\dimen2 by -\defbodyindent
-\noindent
-\setbox0=\hbox{\hskip \deflastargmargin{\rm #2}\hskip \deftypemargin}%
-\dimen0=\hsize \advance \dimen0 by -\wd0 % compute size for first line
-\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuations
-\parshape 2 0in \dimen0 \defargsindent \dimen1
-% Now output arg 2 ("Function" or some such)
-% ending at \deftypemargin from the right margin,
-% but stuck inside a box of width 0 so it does not interfere with linebreaking
-{% Adjust \hsize to exclude the ambient margins,
-% so that \rightline will obey them.
-\advance \hsize by -\dimen2
-\rlap{\rightline{{\rm #2}\hskip -1.25pc }}}%
-% Make all lines underfull and no complaints:
-\tolerance=10000 \hbadness=10000
-\advance\leftskip by -\defbodyindent
-\exdentamount=\defbodyindent
-{\df #1}\enskip % Generate function name
-}
-
-% Actually process the body of a definition
-% #1 should be the terminating control sequence, such as \Edefun.
-% #2 should be the "another name" control sequence, such as \defunx.
-% #3 should be the control sequence that actually processes the header,
-% such as \defunheader.
-
-\def\defparsebody #1#2#3{\begingroup\inENV% Environment for definitionbody
-\medbreak %
-% Define the end token that this defining construct specifies
-% so that it will exit this group.
-\def#1{\endgraf\endgroup\medbreak}%
-\def#2{\begingroup\obeylines\activeparens\spacesplit#3}%
-\parindent=0in
-\advance\leftskip by \defbodyindent
-\exdentamount=\defbodyindent
-\begingroup %
-\catcode 61=\active % 61 is `='
-\obeylines\activeparens\spacesplit#3}
-
-% #1 is the \E... control sequence to end the definition (which we define).
-% #2 is the \...x control sequence for consecutive fns (which we define).
-% #3 is the control sequence to call to resume processing.
-% #4, delimited by the space, is the class name.
-%
-\def\defmethparsebody#1#2#3#4 {\begingroup\inENV %
-\medbreak %
-% Define the end token that this defining construct specifies
-% so that it will exit this group.
-\def#1{\endgraf\endgroup\medbreak}%
-\def#2##1 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}}}%
-\parindent=0in
-\advance\leftskip by \defbodyindent
-\exdentamount=\defbodyindent
-\begingroup\obeylines\activeparens\spacesplit{#3{#4}}}
-
-% Used for @deftypemethod and @deftypeivar.
-% #1 is the \E... control sequence to end the definition (which we define).
-% #2 is the \...x control sequence for consecutive fns (which we define).
-% #3 is the control sequence to call to resume processing.
-% #4, delimited by a space, is the class name.
-% #5 is the method's return type.
-%
-\def\deftypemethparsebody#1#2#3#4 #5 {\begingroup\inENV
- \medbreak
- \def#1{\endgraf\endgroup\medbreak}%
- \def#2##1 ##2 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}{##2}}}%
- \parindent=0in
- \advance\leftskip by \defbodyindent
- \exdentamount=\defbodyindent
- \begingroup\obeylines\activeparens\spacesplit{#3{#4}{#5}}}
-
-% Used for @deftypeop. The change from \deftypemethparsebody is an
-% extra argument at the beginning which is the `category', instead of it
-% being the hardwired string `Method' or `Instance Variable'. We have
-% to account for this both in the \...x definition and in parsing the
-% input at hand. Thus also need a control sequence (passed as #5) for
-% the \E... definition to assign the category name to.
-%
-\def\deftypeopparsebody#1#2#3#4#5 #6 {\begingroup\inENV
- \medbreak
- \def#1{\endgraf\endgroup\medbreak}%
- \def#2##1 ##2 ##3 {%
- \def#4{##1}%
- \begingroup\obeylines\activeparens\spacesplit{#3{##2}{##3}}}%
- \parindent=0in
- \advance\leftskip by \defbodyindent
- \exdentamount=\defbodyindent
- \begingroup\obeylines\activeparens\spacesplit{#3{#5}{#6}}}
-
-\def\defopparsebody #1#2#3#4#5 {\begingroup\inENV %
-\medbreak %
-% Define the end token that this defining construct specifies
-% so that it will exit this group.
-\def#1{\endgraf\endgroup\medbreak}%
-\def#2##1 ##2 {\def#4{##1}%
-\begingroup\obeylines\activeparens\spacesplit{#3{##2}}}%
-\parindent=0in
-\advance\leftskip by \defbodyindent
-\exdentamount=\defbodyindent
-\begingroup\obeylines\activeparens\spacesplit{#3{#5}}}
-
-% These parsing functions are similar to the preceding ones
-% except that they do not make parens into active characters.
-% These are used for "variables" since they have no arguments.
-
-\def\defvarparsebody #1#2#3{\begingroup\inENV% Environment for definitionbody
-\medbreak %
-% Define the end token that this defining construct specifies
-% so that it will exit this group.
-\def#1{\endgraf\endgroup\medbreak}%
-\def#2{\begingroup\obeylines\spacesplit#3}%
-\parindent=0in
-\advance\leftskip by \defbodyindent
-\exdentamount=\defbodyindent
-\begingroup %
-\catcode 61=\active %
-\obeylines\spacesplit#3}
-
-% This is used for \def{tp,vr}parsebody. It could probably be used for
-% some of the others, too, with some judicious conditionals.
-%
-\def\parsebodycommon#1#2#3{%
- \begingroup\inENV %
- \medbreak %
- % Define the end token that this defining construct specifies
- % so that it will exit this group.
- \def#1{\endgraf\endgroup\medbreak}%
- \def#2##1 {\begingroup\obeylines\spacesplit{#3{##1}}}%
- \parindent=0in
- \advance\leftskip by \defbodyindent
- \exdentamount=\defbodyindent
- \begingroup\obeylines
-}
-
-\def\defvrparsebody#1#2#3#4 {%
- \parsebodycommon{#1}{#2}{#3}%
- \spacesplit{#3{#4}}%
-}
-
-% This loses on `@deftp {Data Type} {struct termios}' -- it thinks the
-% type is just `struct', because we lose the braces in `{struct
-% termios}' when \spacesplit reads its undelimited argument. Sigh.
-% \let\deftpparsebody=\defvrparsebody
-%
-% So, to get around this, we put \empty in with the type name. That
-% way, TeX won't find exactly `{...}' as an undelimited argument, and
-% won't strip off the braces.
-%
-\def\deftpparsebody #1#2#3#4 {%
- \parsebodycommon{#1}{#2}{#3}%
- \spacesplit{\parsetpheaderline{#3{#4}}}\empty
-}
-
-% Fine, but then we have to eventually remove the \empty *and* the
-% braces (if any). That's what this does.
-%
-\def\removeemptybraces\empty#1\relax{#1}
-
-% After \spacesplit has done its work, this is called -- #1 is the final
-% thing to call, #2 the type name (which starts with \empty), and #3
-% (which might be empty) the arguments.
-%
-\def\parsetpheaderline#1#2#3{%
- #1{\removeemptybraces#2\relax}{#3}%
-}%
-
-\def\defopvarparsebody #1#2#3#4#5 {\begingroup\inENV %
-\medbreak %
-% Define the end token that this defining construct specifies
-% so that it will exit this group.
-\def#1{\endgraf\endgroup\medbreak}%
-\def#2##1 ##2 {\def#4{##1}%
-\begingroup\obeylines\spacesplit{#3{##2}}}%
-\parindent=0in
-\advance\leftskip by \defbodyindent
-\exdentamount=\defbodyindent
-\begingroup\obeylines\spacesplit{#3{#5}}}
-
-% Split up #2 at the first space token.
-% call #1 with two arguments:
-% the first is all of #2 before the space token,
-% the second is all of #2 after that space token.
-% If #2 contains no space token, all of it is passed as the first arg
-% and the second is passed as empty.
-
-{\obeylines
-\gdef\spacesplit#1#2^^M{\endgroup\spacesplitfoo{#1}#2 \relax\spacesplitfoo}%
-\long\gdef\spacesplitfoo#1#2 #3#4\spacesplitfoo{%
-\ifx\relax #3%
-#1{#2}{}\else #1{#2}{#3#4}\fi}}
-
-% So much for the things common to all kinds of definitions.
-
-% Define @defun.
-
-% First, define the processing that is wanted for arguments of \defun
-% Use this to expand the args and terminate the paragraph they make up
-
-\def\defunargs#1{\functionparens \sl
-% Expand, preventing hyphenation at `-' chars.
-% Note that groups don't affect changes in \hyphenchar.
-% Set the font temporarily and use \font in case \setfont made \tensl a macro.
-{\tensl\hyphenchar\font=0}%
-#1%
-{\tensl\hyphenchar\font=45}%
-\ifnum\parencount=0 \else \errmessage{Unbalanced parentheses in @def}\fi%
-\interlinepenalty=10000
-\advance\rightskip by 0pt plus 1fil
-\endgraf\nobreak\vskip -\parskip\nobreak
-}
-
-\def\deftypefunargs #1{%
-% Expand, preventing hyphenation at `-' chars.
-% Note that groups don't affect changes in \hyphenchar.
-% Use \boldbraxnoamp, not \functionparens, so that & is not special.
-\boldbraxnoamp
-\tclose{#1}% avoid \code because of side effects on active chars
-\interlinepenalty=10000
-\advance\rightskip by 0pt plus 1fil
-\endgraf\nobreak\vskip -\parskip\nobreak
-}
-
-% Do complete processing of one @defun or @defunx line already parsed.
-
-% @deffn Command forward-char nchars
-
-\def\deffn{\defmethparsebody\Edeffn\deffnx\deffnheader}
-
-\def\deffnheader #1#2#3{\doind {fn}{\code{#2}}%
-\begingroup\defname {#2}{#1}\defunargs{#3}\endgroup %
-\catcode 61=\other % Turn off change made in \defparsebody
-}
-
-% @defun == @deffn Function
-
-\def\defun{\defparsebody\Edefun\defunx\defunheader}
-
-\def\defunheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index
-\begingroup\defname {#1}{\putwordDeffunc}%
-\defunargs {#2}\endgroup %
-\catcode 61=\other % Turn off change made in \defparsebody
-}
-
-% @deftypefun int foobar (int @var{foo}, float @var{bar})
-
-\def\deftypefun{\defparsebody\Edeftypefun\deftypefunx\deftypefunheader}
-
-% #1 is the data type. #2 is the name and args.
-\def\deftypefunheader #1#2{\deftypefunheaderx{#1}#2 \relax}
-% #1 is the data type, #2 the name, #3 the args.
-\def\deftypefunheaderx #1#2 #3\relax{%
-\doind {fn}{\code{#2}}% Make entry in function index
-\begingroup\defname {\defheaderxcond#1\relax$$$#2}{\putwordDeftypefun}%
-\deftypefunargs {#3}\endgroup %
-\catcode 61=\other % Turn off change made in \defparsebody
-}
-
-% @deftypefn {Library Function} int foobar (int @var{foo}, float @var{bar})
-
-\def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader}
-
-% \defheaderxcond#1\relax$$$
-% puts #1 in @code, followed by a space, but does nothing if #1 is null.
-\def\defheaderxcond#1#2$$${\ifx#1\relax\else\code{#1#2} \fi}
-
-% #1 is the classification. #2 is the data type. #3 is the name and args.
-\def\deftypefnheader #1#2#3{\deftypefnheaderx{#1}{#2}#3 \relax}
-% #1 is the classification, #2 the data type, #3 the name, #4 the args.
-\def\deftypefnheaderx #1#2#3 #4\relax{%
-\doind {fn}{\code{#3}}% Make entry in function index
-\begingroup
-\normalparens % notably, turn off `&' magic, which prevents
-% at least some C++ text from working
-\defname {\defheaderxcond#2\relax$$$#3}{#1}%
-\deftypefunargs {#4}\endgroup %
-\catcode 61=\other % Turn off change made in \defparsebody
-}
-
-% @defmac == @deffn Macro
-
-\def\defmac{\defparsebody\Edefmac\defmacx\defmacheader}
-
-\def\defmacheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index
-\begingroup\defname {#1}{\putwordDefmac}%
-\defunargs {#2}\endgroup %
-\catcode 61=\other % Turn off change made in \defparsebody
-}
-
-% @defspec == @deffn Special Form
-
-\def\defspec{\defparsebody\Edefspec\defspecx\defspecheader}
-
-\def\defspecheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index
-\begingroup\defname {#1}{\putwordDefspec}%
-\defunargs {#2}\endgroup %
-\catcode 61=\other % Turn off change made in \defparsebody
-}
-
-% @defop CATEGORY CLASS OPERATION ARG...
-%
-\def\defop #1 {\def\defoptype{#1}%
-\defopparsebody\Edefop\defopx\defopheader\defoptype}
-%
-\def\defopheader#1#2#3{%
-\dosubind {fn}{\code{#2}}{\putwordon\ #1}% Make entry in function index
-\begingroup\defname {#2}{\defoptype\ \putwordon\ #1}%
-\defunargs {#3}\endgroup %
-}
-
-% @deftypeop CATEGORY CLASS TYPE OPERATION ARG...
-%
-\def\deftypeop #1 {\def\deftypeopcategory{#1}%
- \deftypeopparsebody\Edeftypeop\deftypeopx\deftypeopheader
- \deftypeopcategory}
-%
-% #1 is the class name, #2 the data type, #3 the operation name, #4 the args.
-\def\deftypeopheader#1#2#3#4{%
- \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index
- \begingroup
- \defname{\defheaderxcond#2\relax$$$#3}
- {\deftypeopcategory\ \putwordon\ \code{#1}}%
- \deftypefunargs{#4}%
- \endgroup
-}
-
-% @deftypemethod CLASS TYPE METHOD ARG...
-%
-\def\deftypemethod{%
- \deftypemethparsebody\Edeftypemethod\deftypemethodx\deftypemethodheader}
-%
-% #1 is the class name, #2 the data type, #3 the method name, #4 the args.
-\def\deftypemethodheader#1#2#3#4{%
- \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index
- \begingroup
- \defname{\defheaderxcond#2\relax$$$#3}{\putwordMethodon\ \code{#1}}%
- \deftypefunargs{#4}%
- \endgroup
-}
-
-% @deftypeivar CLASS TYPE VARNAME
-%
-\def\deftypeivar{%
- \deftypemethparsebody\Edeftypeivar\deftypeivarx\deftypeivarheader}
-%
-% #1 is the class name, #2 the data type, #3 the variable name.
-\def\deftypeivarheader#1#2#3{%
- \dosubind{vr}{\code{#3}}{\putwordof\ \code{#1}}% entry in variable index
- \begingroup
- \defname{#3}{\putwordInstanceVariableof\ \code{#1}}%
- \defvarargs{#3}%
- \endgroup
-}
-
-% @defmethod == @defop Method
-%
-\def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader}
-%
-% #1 is the class name, #2 the method name, #3 the args.
-\def\defmethodheader#1#2#3{%
- \dosubind{fn}{\code{#2}}{\putwordon\ \code{#1}}% entry in function index
- \begingroup
- \defname{#2}{\putwordMethodon\ \code{#1}}%
- \defunargs{#3}%
- \endgroup
-}
-
-% @defcv {Class Option} foo-class foo-flag
-
-\def\defcv #1 {\def\defcvtype{#1}%
-\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}
-
-\def\defcvarheader #1#2#3{%
-\dosubind {vr}{\code{#2}}{\putwordof\ #1}% Make entry in var index
-\begingroup\defname {#2}{\defcvtype\ \putwordof\ #1}%
-\defvarargs {#3}\endgroup %
-}
-
-% @defivar CLASS VARNAME == @defcv {Instance Variable} CLASS VARNAME
-%
-\def\defivar{\defvrparsebody\Edefivar\defivarx\defivarheader}
-%
-\def\defivarheader#1#2#3{%
- \dosubind {vr}{\code{#2}}{\putwordof\ #1}% entry in var index
- \begingroup
- \defname{#2}{\putwordInstanceVariableof\ #1}%
- \defvarargs{#3}%
- \endgroup
-}
-
-% @defvar
-% First, define the processing that is wanted for arguments of @defvar.
-% This is actually simple: just print them in roman.
-% This must expand the args and terminate the paragraph they make up
-\def\defvarargs #1{\normalparens #1%
-\interlinepenalty=10000
-\endgraf\nobreak\vskip -\parskip\nobreak}
-
-% @defvr Counter foo-count
-
-\def\defvr{\defvrparsebody\Edefvr\defvrx\defvrheader}
-
-\def\defvrheader #1#2#3{\doind {vr}{\code{#2}}%
-\begingroup\defname {#2}{#1}\defvarargs{#3}\endgroup}
-
-% @defvar == @defvr Variable
-
-\def\defvar{\defvarparsebody\Edefvar\defvarx\defvarheader}
-
-\def\defvarheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index
-\begingroup\defname {#1}{\putwordDefvar}%
-\defvarargs {#2}\endgroup %
-}
-
-% @defopt == @defvr {User Option}
-
-\def\defopt{\defvarparsebody\Edefopt\defoptx\defoptheader}
-
-\def\defoptheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index
-\begingroup\defname {#1}{\putwordDefopt}%
-\defvarargs {#2}\endgroup %
-}
-
-% @deftypevar int foobar
-
-\def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader}
-
-% #1 is the data type. #2 is the name, perhaps followed by text that
-% is actually part of the data type, which should not be put into the index.
-\def\deftypevarheader #1#2{%
-\dovarind#2 \relax% Make entry in variables index
-\begingroup\defname {\defheaderxcond#1\relax$$$#2}{\putwordDeftypevar}%
-\interlinepenalty=10000
-\endgraf\nobreak\vskip -\parskip\nobreak
-\endgroup}
-\def\dovarind#1 #2\relax{\doind{vr}{\code{#1}}}
-
-% @deftypevr {Global Flag} int enable
-
-\def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader}
-
-\def\deftypevrheader #1#2#3{\dovarind#3 \relax%
-\begingroup\defname {\defheaderxcond#2\relax$$$#3}{#1}
-\interlinepenalty=10000
-\endgraf\nobreak\vskip -\parskip\nobreak
-\endgroup}
-
-% Now define @deftp
-% Args are printed in bold, a slight difference from @defvar.
-
-\def\deftpargs #1{\bf \defvarargs{#1}}
-
-% @deftp Class window height width ...
-
-\def\deftp{\deftpparsebody\Edeftp\deftpx\deftpheader}
-
-\def\deftpheader #1#2#3{\doind {tp}{\code{#2}}%
-\begingroup\defname {#2}{#1}\deftpargs{#3}\endgroup}
-
-% These definitions are used if you use @defunx (etc.)
-% anywhere other than immediately after a @defun or @defunx.
-%
-\def\defcvx#1 {\errmessage{@defcvx in invalid context}}
-\def\deffnx#1 {\errmessage{@deffnx in invalid context}}
-\def\defivarx#1 {\errmessage{@defivarx in invalid context}}
-\def\defmacx#1 {\errmessage{@defmacx in invalid context}}
-\def\defmethodx#1 {\errmessage{@defmethodx in invalid context}}
-\def\defoptx #1 {\errmessage{@defoptx in invalid context}}
-\def\defopx#1 {\errmessage{@defopx in invalid context}}
-\def\defspecx#1 {\errmessage{@defspecx in invalid context}}
-\def\deftpx#1 {\errmessage{@deftpx in invalid context}}
-\def\deftypefnx#1 {\errmessage{@deftypefnx in invalid context}}
-\def\deftypefunx#1 {\errmessage{@deftypefunx in invalid context}}
-\def\deftypeivarx#1 {\errmessage{@deftypeivarx in invalid context}}
-\def\deftypemethodx#1 {\errmessage{@deftypemethodx in invalid context}}
-\def\deftypeopx#1 {\errmessage{@deftypeopx in invalid context}}
-\def\deftypevarx#1 {\errmessage{@deftypevarx in invalid context}}
-\def\deftypevrx#1 {\errmessage{@deftypevrx in invalid context}}
-\def\defunx#1 {\errmessage{@defunx in invalid context}}
-\def\defvarx#1 {\errmessage{@defvarx in invalid context}}
-\def\defvrx#1 {\errmessage{@defvrx in invalid context}}
-
-
-\message{macros,}
-% @macro.
-
-% To do this right we need a feature of e-TeX, \scantokens,
-% which we arrange to emulate with a temporary file in ordinary TeX.
-\ifx\eTeXversion\undefined
- \newwrite\macscribble
- \def\scanmacro#1{%
- \begingroup \newlinechar`\^^M
- % Undo catcode changes of \startcontents and \doprintindex
- \catcode`\@=0 \catcode`\\=12 \escapechar=`\@
- % Append \endinput to make sure that TeX does not see the ending newline.
- \toks0={#1\endinput}%
- \immediate\openout\macscribble=\jobname.tmp
- \immediate\write\macscribble{\the\toks0}%
- \immediate\closeout\macscribble
- \let\xeatspaces\eatspaces
- \input \jobname.tmp
- \endgroup
-}
-\else
-\def\scanmacro#1{%
-\begingroup \newlinechar`\^^M
-% Undo catcode changes of \startcontents and \doprintindex
-\catcode`\@=0 \catcode`\\=12 \escapechar=`\@
-\let\xeatspaces\eatspaces\scantokens{#1\endinput}\endgroup}
-\fi
-
-\newcount\paramno % Count of parameters
-\newtoks\macname % Macro name
-\newif\ifrecursive % Is it recursive?
-\def\macrolist{} % List of all defined macros in the form
- % \do\macro1\do\macro2...
-
-% Utility routines.
-% Thisdoes \let #1 = #2, except with \csnames.
-\def\cslet#1#2{%
-\expandafter\expandafter
-\expandafter\let
-\expandafter\expandafter
-\csname#1\endcsname
-\csname#2\endcsname}
-
-% Trim leading and trailing spaces off a string.
-% Concepts from aro-bend problem 15 (see CTAN).
-{\catcode`\@=11
-\gdef\eatspaces #1{\expandafter\trim@\expandafter{#1 }}
-\gdef\trim@ #1{\trim@@ @#1 @ #1 @ @@}
-\gdef\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @}
-\def\unbrace#1{#1}
-\unbrace{\gdef\trim@@@ #1 } #2@{#1}
-}
-
-% Trim a single trailing ^^M off a string.
-{\catcode`\^^M=12\catcode`\Q=3%
-\gdef\eatcr #1{\eatcra #1Q^^MQ}%
-\gdef\eatcra#1^^MQ{\eatcrb#1Q}%
-\gdef\eatcrb#1Q#2Q{#1}%
-}
-
-% Macro bodies are absorbed as an argument in a context where
-% all characters are catcode 10, 11 or 12, except \ which is active
-% (as in normal texinfo). It is necessary to change the definition of \.
-
-% It's necessary to have hard CRs when the macro is executed. This is
-% done by making ^^M (\endlinechar) catcode 12 when reading the macro
-% body, and then making it the \newlinechar in \scanmacro.
-
-\def\macrobodyctxt{%
- \catcode`\~=12
- \catcode`\^=12
- \catcode`\_=12
- \catcode`\|=12
- \catcode`\<=12
- \catcode`\>=12
- \catcode`\+=12
- \catcode`\{=12
- \catcode`\}=12
- \catcode`\@=12
- \catcode`\^^M=12
- \usembodybackslash}
-
-\def\macroargctxt{%
- \catcode`\~=12
- \catcode`\^=12
- \catcode`\_=12
- \catcode`\|=12
- \catcode`\<=12
- \catcode`\>=12
- \catcode`\+=12
- \catcode`\@=12
- \catcode`\\=12}
-
-% \mbodybackslash is the definition of \ in @macro bodies.
-% It maps \foo\ => \csname macarg.foo\endcsname => #N
-% where N is the macro parameter number.
-% We define \csname macarg.\endcsname to be \realbackslash, so
-% \\ in macro replacement text gets you a backslash.
-
-{\catcode`@=0 @catcode`@\=@active
- @gdef@usembodybackslash{@let\=@mbodybackslash}
- @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname}
-}
-\expandafter\def\csname macarg.\endcsname{\realbackslash}
-
-\def\macro{\recursivefalse\parsearg\macroxxx}
-\def\rmacro{\recursivetrue\parsearg\macroxxx}
-
-\def\macroxxx#1{%
- \getargs{#1}% now \macname is the macname and \argl the arglist
- \ifx\argl\empty % no arguments
- \paramno=0%
- \else
- \expandafter\parsemargdef \argl;%
- \fi
- \if1\csname ismacro.\the\macname\endcsname
- \message{Warning: redefining \the\macname}%
- \else
- \expandafter\ifx\csname \the\macname\endcsname \relax
- \else \errmessage{The name \the\macname\space is reserved}\fi
- \global\cslet{macsave.\the\macname}{\the\macname}%
- \global\expandafter\let\csname ismacro.\the\macname\endcsname=1%
- % Add the macroname to \macrolist
- \toks0 = \expandafter{\macrolist\do}%
- \xdef\macrolist{\the\toks0
- \expandafter\noexpand\csname\the\macname\endcsname}%
- \fi
- \begingroup \macrobodyctxt
- \ifrecursive \expandafter\parsermacbody
- \else \expandafter\parsemacbody
- \fi}
-
-\def\unmacro{\parsearg\unmacroxxx}
-\def\unmacroxxx#1{%
- \if1\csname ismacro.#1\endcsname
- \global\cslet{#1}{macsave.#1}%
- \global\expandafter\let \csname ismacro.#1\endcsname=0%
- % Remove the macro name from \macrolist
- \begingroup
- \edef\tempa{\expandafter\noexpand\csname#1\endcsname}%
- \def\do##1{%
- \def\tempb{##1}%
- \ifx\tempa\tempb
- % remove this
- \else
- \toks0 = \expandafter{\newmacrolist\do}%
- \edef\newmacrolist{\the\toks0\expandafter\noexpand\tempa}%
- \fi}%
- \def\newmacrolist{}%
- % Execute macro list to define \newmacrolist
- \macrolist
- \global\let\macrolist\newmacrolist
- \endgroup
- \else
- \errmessage{Macro #1 not defined}%
- \fi
-}
-
-% This makes use of the obscure feature that if the last token of a
-% <parameter list> is #, then the preceding argument is delimited by
-% an opening brace, and that opening brace is not consumed.
-\def\getargs#1{\getargsxxx#1{}}
-\def\getargsxxx#1#{\getmacname #1 \relax\getmacargs}
-\def\getmacname #1 #2\relax{\macname={#1}}
-\def\getmacargs#1{\def\argl{#1}}
-
-% Parse the optional {params} list. Set up \paramno and \paramlist
-% so \defmacro knows what to do. Define \macarg.blah for each blah
-% in the params list, to be ##N where N is the position in that list.
-% That gets used by \mbodybackslash (above).
-
-% We need to get `macro parameter char #' into several definitions.
-% The technique used is stolen from LaTeX: let \hash be something
-% unexpandable, insert that wherever you need a #, and then redefine
-% it to # just before using the token list produced.
-%
-% The same technique is used to protect \eatspaces till just before
-% the macro is used.
-
-\def\parsemargdef#1;{\paramno=0\def\paramlist{}%
- \let\hash\relax\let\xeatspaces\relax\parsemargdefxxx#1,;,}
-\def\parsemargdefxxx#1,{%
- \if#1;\let\next=\relax
- \else \let\next=\parsemargdefxxx
- \advance\paramno by 1%
- \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname
- {\xeatspaces{\hash\the\paramno}}%
- \edef\paramlist{\paramlist\hash\the\paramno,}%
- \fi\next}
-
-% These two commands read recursive and nonrecursive macro bodies.
-% (They're different since rec and nonrec macros end differently.)
-
-\long\def\parsemacbody#1@end macro%
-{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
-\long\def\parsermacbody#1@end rmacro%
-{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
-
-% This defines the macro itself. There are six cases: recursive and
-% nonrecursive macros of zero, one, and many arguments.
-% Much magic with \expandafter here.
-% \xdef is used so that macro definitions will survive the file
-% they're defined in; @include reads the file inside a group.
-\def\defmacro{%
- \let\hash=##% convert placeholders to macro parameter chars
- \ifrecursive
- \ifcase\paramno
- % 0
- \expandafter\xdef\csname\the\macname\endcsname{%
- \noexpand\scanmacro{\temp}}%
- \or % 1
- \expandafter\xdef\csname\the\macname\endcsname{%
- \bgroup\noexpand\macroargctxt
- \noexpand\braceorline
- \expandafter\noexpand\csname\the\macname xxx\endcsname}%
- \expandafter\xdef\csname\the\macname xxx\endcsname##1{%
- \egroup\noexpand\scanmacro{\temp}}%
- \else % many
- \expandafter\xdef\csname\the\macname\endcsname{%
- \bgroup\noexpand\macroargctxt
- \noexpand\csname\the\macname xx\endcsname}%
- \expandafter\xdef\csname\the\macname xx\endcsname##1{%
- \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
- \expandafter\expandafter
- \expandafter\xdef
- \expandafter\expandafter
- \csname\the\macname xxx\endcsname
- \paramlist{\egroup\noexpand\scanmacro{\temp}}%
- \fi
- \else
- \ifcase\paramno
- % 0
- \expandafter\xdef\csname\the\macname\endcsname{%
- \noexpand\norecurse{\the\macname}%
- \noexpand\scanmacro{\temp}\egroup}%
- \or % 1
- \expandafter\xdef\csname\the\macname\endcsname{%
- \bgroup\noexpand\macroargctxt
- \noexpand\braceorline
- \expandafter\noexpand\csname\the\macname xxx\endcsname}%
- \expandafter\xdef\csname\the\macname xxx\endcsname##1{%
- \egroup
- \noexpand\norecurse{\the\macname}%
- \noexpand\scanmacro{\temp}\egroup}%
- \else % many
- \expandafter\xdef\csname\the\macname\endcsname{%
- \bgroup\noexpand\macroargctxt
- \expandafter\noexpand\csname\the\macname xx\endcsname}%
- \expandafter\xdef\csname\the\macname xx\endcsname##1{%
- \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
- \expandafter\expandafter
- \expandafter\xdef
- \expandafter\expandafter
- \csname\the\macname xxx\endcsname
- \paramlist{%
- \egroup
- \noexpand\norecurse{\the\macname}%
- \noexpand\scanmacro{\temp}\egroup}%
- \fi
- \fi}
-
-\def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}}
-
-% \braceorline decides whether the next nonwhitespace character is a
-% {. If so it reads up to the closing }, if not, it reads the whole
-% line. Whatever was read is then fed to the next control sequence
-% as an argument (by \parsebrace or \parsearg)
-\def\braceorline#1{\let\next=#1\futurelet\nchar\braceorlinexxx}
-\def\braceorlinexxx{%
- \ifx\nchar\bgroup\else
- \expandafter\parsearg
- \fi \next}
-
-% We mant to disable all macros during \shipout so that they are not
-% expanded by \write.
-\def\turnoffmacros{\begingroup \def\do##1{\let\noexpand##1=\relax}%
- \edef\next{\macrolist}\expandafter\endgroup\next}
-
-
-% @alias.
-% We need some trickery to remove the optional spaces around the equal
-% sign. Just make them active and then expand them all to nothing.
-\def\alias{\begingroup\obeyspaces\parsearg\aliasxxx}
-\def\aliasxxx #1{\aliasyyy#1\relax}
-\def\aliasyyy #1=#2\relax{\ignoreactivespaces
-\edef\next{\global\let\expandafter\noexpand\csname#1\endcsname=%
- \expandafter\noexpand\csname#2\endcsname}%
-\expandafter\endgroup\next}
-
-
-\message{cross references,}
-% @xref etc.
-
-\newwrite\auxfile
-
-\newif\ifhavexrefs % True if xref values are known.
-\newif\ifwarnedxrefs % True if we warned once that they aren't known.
-
-% @inforef is relatively simple.
-\def\inforef #1{\inforefzzz #1,,,,**}
-\def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}},
- node \samp{\ignorespaces#1{}}}
-
-% @node's job is to define \lastnode.
-\def\node{\ENVcheck\parsearg\nodezzz}
-\def\nodezzz#1{\nodexxx [#1,]}
-\def\nodexxx[#1,#2]{\gdef\lastnode{#1}}
-\let\nwnode=\node
-\let\lastnode=\relax
-
-% The sectioning commands (@chapter, etc.) call these.
-\def\donoderef{%
- \ifx\lastnode\relax\else
- \expandafter\expandafter\expandafter\setref{\lastnode}%
- {Ysectionnumberandtype}%
- \global\let\lastnode=\relax
- \fi
-}
-\def\unnumbnoderef{%
- \ifx\lastnode\relax\else
- \expandafter\expandafter\expandafter\setref{\lastnode}{Ynothing}%
- \global\let\lastnode=\relax
- \fi
-}
-\def\appendixnoderef{%
- \ifx\lastnode\relax\else
- \expandafter\expandafter\expandafter\setref{\lastnode}%
- {Yappendixletterandtype}%
- \global\let\lastnode=\relax
- \fi
-}
-
-
-% @anchor{NAME} -- define xref target at arbitrary point.
-%
-\newcount\savesfregister
-\gdef\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi}
-\gdef\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi}
-\gdef\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces}
-
-% \setref{NAME}{SNT} defines a cross-reference point NAME, namely
-% NAME-title, NAME-pg, and NAME-SNT. Called from \foonoderef. We have
-% to set \indexdummies so commands such as @code in a section title
-% aren't expanded. It would be nicer not to expand the titles in the
-% first place, but there's so many layers that that is hard to do.
-%
-\def\setref#1#2{{%
- \indexdummies
- \pdfmkdest{#1}%
- \dosetq{#1-title}{Ytitle}%
- \dosetq{#1-pg}{Ypagenumber}%
- \dosetq{#1-snt}{#2}%
-}}
-
-% @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is
-% the node name, #2 the name of the Info cross-reference, #3 the printed
-% node name, #4 the name of the Info file, #5 the name of the printed
-% manual. All but the node name can be omitted.
-%
-\def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]}
-\def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]}
-\def\ref#1{\xrefX[#1,,,,,,,]}
-\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup
- \unsepspaces
- \def\printedmanual{\ignorespaces #5}%
- \def\printednodename{\ignorespaces #3}%
- \setbox1=\hbox{\printedmanual}%
- \setbox0=\hbox{\printednodename}%
- \ifdim \wd0 = 0pt
- % No printed node name was explicitly given.
- \expandafter\ifx\csname SETxref-automatic-section-title\endcsname\relax
- % Use the node name inside the square brackets.
- \def\printednodename{\ignorespaces #1}%
- \else
- % Use the actual chapter/section title appear inside
- % the square brackets. Use the real section title if we have it.
- \ifdim \wd1 > 0pt
- % It is in another manual, so we don't have it.
- \def\printednodename{\ignorespaces #1}%
- \else
- \ifhavexrefs
- % We know the real title if we have the xref values.
- \def\printednodename{\refx{#1-title}{}}%
- \else
- % Otherwise just copy the Info node name.
- \def\printednodename{\ignorespaces #1}%
- \fi%
- \fi
- \fi
- \fi
- %
- % If we use \unhbox0 and \unhbox1 to print the node names, TeX does not
- % insert empty discretionaries after hyphens, which means that it will
- % not find a line break at a hyphen in a node names. Since some manuals
- % are best written with fairly long node names, containing hyphens, this
- % is a loss. Therefore, we give the text of the node name again, so it
- % is as if TeX is seeing it for the first time.
- \ifpdf
- \leavevmode
- \getfilename{#4}%
- \ifnum\filenamelength>0
- \startlink attr{/Border [0 0 0]}%
- goto file{\the\filename.pdf} name{#1@}%
- \else
- \startlink attr{/Border [0 0 0]}%
- goto name{#1@}%
- \fi
- \linkcolor
- \fi
- %
- \ifdim \wd1 > 0pt
- \putwordsection{} ``\printednodename'' \putwordin{} \cite{\printedmanual}%
- \else
- % _ (for example) has to be the character _ for the purposes of the
- % control sequence corresponding to the node, but it has to expand
- % into the usual \leavevmode...\vrule stuff for purposes of
- % printing. So we \turnoffactive for the \refx-snt, back on for the
- % printing, back off for the \refx-pg.
- {\normalturnoffactive
- % Only output a following space if the -snt ref is nonempty; for
- % @unnumbered and @anchor, it won't be.
- \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}%
- \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi
- }%
- % [mynode],
- [\printednodename],\space
- % page 3
- \turnoffactive \putwordpage\tie\refx{#1-pg}{}%
- \fi
- \endlink
-\endgroup}
-
-% \dosetq is the interface for calls from other macros
-
-% Use \normalturnoffactive so that punctuation chars such as underscore
-% and backslash work in node names. (\turnoffactive doesn't do \.)
-\def\dosetq#1#2{%
- {\let\folio=0%
- \normalturnoffactive
- \edef\next{\write\auxfile{\internalsetq{#1}{#2}}}%
- \iflinks
- \next
- \fi
- }%
-}
-
-% \internalsetq {foo}{page} expands into
-% CHARACTERS 'xrdef {foo}{...expansion of \Ypage...}
-% When the aux file is read, ' is the escape character
-
-\def\internalsetq #1#2{'xrdef {#1}{\csname #2\endcsname}}
-
-% Things to be expanded by \internalsetq
-
-\def\Ypagenumber{\folio}
-
-\def\Ytitle{\thissection}
-
-\def\Ynothing{}
-
-\def\Ysectionnumberandtype{%
-\ifnum\secno=0 \putwordChapter\xreftie\the\chapno %
-\else \ifnum \subsecno=0 \putwordSection\xreftie\the\chapno.\the\secno %
-\else \ifnum \subsubsecno=0 %
-\putwordSection\xreftie\the\chapno.\the\secno.\the\subsecno %
-\else %
-\putwordSection\xreftie\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno %
-\fi \fi \fi }
-
-\def\Yappendixletterandtype{%
-\ifnum\secno=0 \putwordAppendix\xreftie'char\the\appendixno{}%
-\else \ifnum \subsecno=0 \putwordSection\xreftie'char\the\appendixno.\the\secno %
-\else \ifnum \subsubsecno=0 %
-\putwordSection\xreftie'char\the\appendixno.\the\secno.\the\subsecno %
-\else %
-\putwordSection\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %
-\fi \fi \fi }
-
-\gdef\xreftie{'tie}
-
-% Use TeX 3.0's \inputlineno to get the line number, for better error
-% messages, but if we're using an old version of TeX, don't do anything.
-%
-\ifx\inputlineno\thisisundefined
- \let\linenumber = \empty % Non-3.0.
-\else
- \def\linenumber{\the\inputlineno:\space}
-\fi
-
-% Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME.
-% If its value is nonempty, SUFFIX is output afterward.
-
-\def\refx#1#2{%
- \expandafter\ifx\csname X#1\endcsname\relax
- % If not defined, say something at least.
- \angleleft un\-de\-fined\angleright
- \iflinks
- \ifhavexrefs
- \message{\linenumber Undefined cross reference `#1'.}%
- \else
- \ifwarnedxrefs\else
- \global\warnedxrefstrue
- \message{Cross reference values unknown; you must run TeX again.}%
- \fi
- \fi
- \fi
- \else
- % It's defined, so just use it.
- \csname X#1\endcsname
- \fi
- #2% Output the suffix in any case.
-}
-
-% This is the macro invoked by entries in the aux file.
-%
-\def\xrdef#1{\begingroup
- % Reenable \ as an escape while reading the second argument.
- \catcode`\\ = 0
- \afterassignment\endgroup
- \expandafter\gdef\csname X#1\endcsname
-}
-
-% Read the last existing aux file, if any. No error if none exists.
-\def\readauxfile{\begingroup
- \catcode`\^^@=\other
- \catcode`\^^A=\other
- \catcode`\^^B=\other
- \catcode`\^^C=\other
- \catcode`\^^D=\other
- \catcode`\^^E=\other
- \catcode`\^^F=\other
- \catcode`\^^G=\other
- \catcode`\^^H=\other
- \catcode`\^^K=\other
- \catcode`\^^L=\other
- \catcode`\^^N=\other
- \catcode`\^^P=\other
- \catcode`\^^Q=\other
- \catcode`\^^R=\other
- \catcode`\^^S=\other
- \catcode`\^^T=\other
- \catcode`\^^U=\other
- \catcode`\^^V=\other
- \catcode`\^^W=\other
- \catcode`\^^X=\other
- \catcode`\^^Z=\other
- \catcode`\^^[=\other
- \catcode`\^^\=\other
- \catcode`\^^]=\other
- \catcode`\^^^=\other
- \catcode`\^^_=\other
- \catcode`\@=\other
- \catcode`\^=\other
- % It was suggested to define this as 7, which would allow ^^e4 etc.
- % in xref tags, i.e., node names. But since ^^e4 notation isn't
- % supported in the main text, it doesn't seem desirable. Furthermore,
- % that is not enough: for node names that actually contain a ^
- % character, we would end up writing a line like this: 'xrdef {'hat
- % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first
- % argument, and \hat is not an expandable control sequence. It could
- % all be worked out, but why? Either we support ^^ or we don't.
- %
- % The other change necessary for this was to define \auxhat:
- % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter
- % and then to call \auxhat in \setq.
- %
- \catcode`\~=\other
- \catcode`\[=\other
- \catcode`\]=\other
- \catcode`\"=\other
- \catcode`\_=\other
- \catcode`\|=\other
- \catcode`\<=\other
- \catcode`\>=\other
- \catcode`\$=\other
- \catcode`\#=\other
- \catcode`\&=\other
- \catcode`+=\other % avoid \+ for paranoia even though we've turned it off
- % Make the characters 128-255 be printing characters
- {%
- \count 1=128
- \def\loop{%
- \catcode\count 1=\other
- \advance\count 1 by 1
- \ifnum \count 1<256 \loop \fi
- }%
- }%
- % The aux file uses ' as the escape (for now).
- % Turn off \ as an escape so we do not lose on
- % entries which were dumped with control sequences in their names.
- % For example, 'xrdef {$\leq $-fun}{page ...} made by @defun ^^
- % Reference to such entries still does not work the way one would wish,
- % but at least they do not bomb out when the aux file is read in.
- \catcode`\{=1
- \catcode`\}=2
- \catcode`\%=\other
- \catcode`\'=0
- \catcode`\\=\other
- %
- \openin 1 \jobname.aux
- \ifeof 1 \else
- \closein 1
- \input \jobname.aux
- \global\havexrefstrue
- \global\warnedobstrue
- \fi
- % Open the new aux file. TeX will close it automatically at exit.
- \openout\auxfile=\jobname.aux
-\endgroup}
-
-
-% Footnotes.
-
-\newcount \footnoteno
-
-% The trailing space in the following definition for supereject is
-% vital for proper filling; pages come out unaligned when you do a
-% pagealignmacro call if that space before the closing brace is
-% removed. (Generally, numeric constants should always be followed by a
-% space to prevent strange expansion errors.)
-\def\supereject{\par\penalty -20000\footnoteno =0 }
-
-% @footnotestyle is meaningful for info output only.
-\let\footnotestyle=\comment
-
-\let\ptexfootnote=\footnote
-
-{\catcode `\@=11
-%
-% Auto-number footnotes. Otherwise like plain.
-\gdef\footnote{%
- \global\advance\footnoteno by \@ne
- \edef\thisfootno{$^{\the\footnoteno}$}%
- %
- % In case the footnote comes at the end of a sentence, preserve the
- % extra spacing after we do the footnote number.
- \let\@sf\empty
- \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi
- %
- % Remove inadvertent blank space before typesetting the footnote number.
- \unskip
- \thisfootno\@sf
- \footnotezzz
-}%
-
-% Don't bother with the trickery in plain.tex to not require the
-% footnote text as a parameter. Our footnotes don't need to be so general.
-%
-% Oh yes, they do; otherwise, @ifset and anything else that uses
-% \parseargline fail inside footnotes because the tokens are fixed when
-% the footnote is read. --karl, 16nov96.
-%
-\long\gdef\footnotezzz{\insert\footins\bgroup
- % We want to typeset this text as a normal paragraph, even if the
- % footnote reference occurs in (for example) a display environment.
- % So reset some parameters.
- \interlinepenalty\interfootnotelinepenalty
- \splittopskip\ht\strutbox % top baseline for broken footnotes
- \splitmaxdepth\dp\strutbox
- \floatingpenalty\@MM
- \leftskip\z@skip
- \rightskip\z@skip
- \spaceskip\z@skip
- \xspaceskip\z@skip
- \parindent\defaultparindent
- %
- \smallfonts \rm
- %
- % Hang the footnote text off the number.
- \hang
- \textindent{\thisfootno}%
- %
- % Don't crash into the line above the footnote text. Since this
- % expands into a box, it must come within the paragraph, lest it
- % provide a place where TeX can split the footnote.
- \footstrut
- \futurelet\next\fo@t
-}
-\def\fo@t{\ifcat\bgroup\noexpand\next \let\next\f@@t
- \else\let\next\f@t\fi \next}
-\def\f@@t{\bgroup\aftergroup\@foot\let\next}
-\def\f@t#1{#1\@foot}
-\def\@foot{\strut\par\egroup}
-
-}%end \catcode `\@=11
-
-% Set the baselineskip to #1, and the lineskip and strut size
-% correspondingly. There is no deep meaning behind these magic numbers
-% used as factors; they just match (closely enough) what Knuth defined.
-%
-\def\lineskipfactor{.08333}
-\def\strutheightpercent{.70833}
-\def\strutdepthpercent {.29167}
-%
-\def\setleading#1{%
- \normalbaselineskip = #1\relax
- \normallineskip = \lineskipfactor\normalbaselineskip
- \normalbaselines
- \setbox\strutbox =\hbox{%
- \vrule width0pt height\strutheightpercent\baselineskip
- depth \strutdepthpercent \baselineskip
- }%
-}
-
-% @| inserts a changebar to the left of the current line. It should
-% surround any changed text. This approach does *not* work if the
-% change spans more than two lines of output. To handle that, we would
-% have adopt a much more difficult approach (putting marks into the main
-% vertical list for the beginning and end of each change).
-%
-\def\|{%
- % \vadjust can only be used in horizontal mode.
- \leavevmode
- %
- % Append this vertical mode material after the current line in the output.
- \vadjust{%
- % We want to insert a rule with the height and depth of the current
- % leading; that is exactly what \strutbox is supposed to record.
- \vskip-\baselineskip
- %
- % \vadjust-items are inserted at the left edge of the type. So
- % the \llap here moves out into the left-hand margin.
- \llap{%
- %
- % For a thicker or thinner bar, change the `1pt'.
- \vrule height\baselineskip width1pt
- %
- % This is the space between the bar and the text.
- \hskip 12pt
- }%
- }%
-}
-
-% For a final copy, take out the rectangles
-% that mark overfull boxes (in case you have decided
-% that the text looks ok even though it passes the margin).
-%
-\def\finalout{\overfullrule=0pt}
-
-% @image. We use the macros from epsf.tex to support this.
-% If epsf.tex is not installed and @image is used, we complain.
-%
-% Check for and read epsf.tex up front. If we read it only at @image
-% time, we might be inside a group, and then its definitions would get
-% undone and the next image would fail.
-\openin 1 = epsf.tex
-\ifeof 1 \else
- \closein 1
- % Do not bother showing banner with post-v2.7 epsf.tex (available in
- % doc/epsf.tex until it shows up on ctan).
- \def\epsfannounce{\toks0 = }%
- \input epsf.tex
-\fi
-%
-% We will only complain once about lack of epsf.tex.
-\newif\ifwarnednoepsf
-\newhelp\noepsfhelp{epsf.tex must be installed for images to
- work. It is also included in the Texinfo distribution, or you can get
- it from ftp://tug.org/tex/epsf.tex.}
-%
-\def\image#1{%
- \ifx\epsfbox\undefined
- \ifwarnednoepsf \else
- \errhelp = \noepsfhelp
- \errmessage{epsf.tex not found, images will be ignored}%
- \global\warnednoepsftrue
- \fi
- \else
- \imagexxx #1,,,\finish
- \fi
-}
-%
-% Arguments to @image:
-% #1 is (mandatory) image filename; we tack on .eps extension.
-% #2 is (optional) width, #3 is (optional) height.
-% #4 is just the usual extra ignored arg for parsing this stuff.
-\def\imagexxx#1,#2,#3,#4\finish{%
- \ifpdf
- \centerline{\dopdfimage{#1}{#2}{#3}}%
- \else
- % \epsfbox itself resets \epsf?size at each figure.
- \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi
- \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi
- \begingroup
- \catcode`\^^M = 5 % in case we're inside an example
- % If the image is by itself, center it.
- \ifvmode
- \nobreak\bigskip
- % Usually we'll have text after the image which will insert
- % \parskip glue, so insert it here too to equalize the space
- % above and below.
- \nobreak\vskip\parskip
- \nobreak
- \centerline{\epsfbox{#1.eps}}%
- \bigbreak
- \else
- % In the middle of a paragraph, no extra space.
- \epsfbox{#1.eps}%
- \fi
- \endgroup
- \fi
-}
-
-
-\message{localization,}
-% and i18n.
-
-% @documentlanguage is usually given very early, just after
-% @setfilename. If done too late, it may not override everything
-% properly. Single argument is the language abbreviation.
-% It would be nice if we could set up a hyphenation file here.
-%
-\def\documentlanguage{\parsearg\dodocumentlanguage}
-\def\dodocumentlanguage#1{%
- \tex % read txi-??.tex file in plain TeX.
- % Read the file if it exists.
- \openin 1 txi-#1.tex
- \ifeof1
- \errhelp = \nolanghelp
- \errmessage{Cannot read language file txi-#1.tex}%
- \let\temp = \relax
- \else
- \def\temp{\input txi-#1.tex }%
- \fi
- \temp
- \endgroup
-}
-\newhelp\nolanghelp{The given language definition file cannot be found or
-is empty. Maybe you need to install it? In the current directory
-should work if nowhere else does.}
-
-
-% @documentencoding should change something in TeX eventually, most
-% likely, but for now just recognize it.
-\let\documentencoding = \comment
-
-
-% Page size parameters.
-%
-\newdimen\defaultparindent \defaultparindent = 15pt
-
-\chapheadingskip = 15pt plus 4pt minus 2pt
-\secheadingskip = 12pt plus 3pt minus 2pt
-\subsecheadingskip = 9pt plus 2pt minus 2pt
-
-% Prevent underfull vbox error messages.
-\vbadness = 10000
-
-% Don't be so finicky about underfull hboxes, either.
-\hbadness = 2000
-
-% Following George Bush, just get rid of widows and orphans.
-\widowpenalty=10000
-\clubpenalty=10000
-
-% Use TeX 3.0's \emergencystretch to help line breaking, but if we're
-% using an old version of TeX, don't do anything. We want the amount of
-% stretch added to depend on the line length, hence the dependence on
-% \hsize. We call this whenever the paper size is set.
-%
-\def\setemergencystretch{%
- \ifx\emergencystretch\thisisundefined
- % Allow us to assign to \emergencystretch anyway.
- \def\emergencystretch{\dimen0}%
- \else
- \emergencystretch = .15\hsize
- \fi
-}
-
-% Parameters in order: 1) textheight; 2) textwidth; 3) voffset;
-% 4) hoffset; 5) binding offset; 6) topskip. Then whoever calls us can
-% set \parskip and call \setleading for \baselineskip.
-%
-\def\internalpagesizes#1#2#3#4#5#6{%
- \voffset = #3\relax
- \topskip = #6\relax
- \splittopskip = \topskip
- %
- \vsize = #1\relax
- \advance\vsize by \topskip
- \outervsize = \vsize
- \advance\outervsize by 2\topandbottommargin
- \pageheight = \vsize
- %
- \hsize = #2\relax
- \outerhsize = \hsize
- \advance\outerhsize by 0.5in
- \pagewidth = \hsize
- %
- \normaloffset = #4\relax
- \bindingoffset = #5\relax
- %
- \parindent = \defaultparindent
- \setemergencystretch
-}
-
-% @letterpaper (the default).
-\def\letterpaper{{\globaldefs = 1
- \parskip = 3pt plus 2pt minus 1pt
- \setleading{13.2pt}%
- %
- % If page is nothing but text, make it come out even.
- \internalpagesizes{46\baselineskip}{6in}{\voffset}{.25in}{\bindingoffset}{36pt}%
-}}
-
-% Use @smallbook to reset parameters for 7x9.5 (or so) format.
-\def\smallbook{{\globaldefs = 1
- \parskip = 2pt plus 1pt
- \setleading{12pt}%
- %
- \internalpagesizes{7.5in}{5.in}{\voffset}{.25in}{\bindingoffset}{16pt}%
- %
- \lispnarrowing = 0.3in
- \tolerance = 700
- \hfuzz = 1pt
- \contentsrightmargin = 0pt
- \deftypemargin = 0pt
- \defbodyindent = .5cm
- %
- \let\smalldisplay = \smalldisplayx
- \let\smallexample = \smalllispx
- \let\smallformat = \smallformatx
- \let\smalllisp = \smalllispx
-}}
-
-% Use @afourpaper to print on European A4 paper.
-\def\afourpaper{{\globaldefs = 1
- \setleading{12pt}%
- \parskip = 3pt plus 2pt minus 1pt
- %
- \internalpagesizes{53\baselineskip}{160mm}{\voffset}{4mm}{\bindingoffset}{44pt}%
- %
- \tolerance = 700
- \hfuzz = 1pt
-}}
-
-% A specific text layout, 24x15cm overall, intended for A4 paper. Top margin
-% 29mm, hence bottom margin 28mm, nominal side margin 3cm.
-\def\afourlatex{{\globaldefs = 1
- \setleading{13.6pt}%
- %
- \afourpaper
- \internalpagesizes{237mm}{150mm}{3.6mm}{3.6mm}{3mm}{7mm}%
- %
- \globaldefs = 0
-}}
-
-% Use @afourwide to print on European A4 paper in wide format.
-\def\afourwide{%
- \afourpaper
- \internalpagesizes{9.5in}{6.5in}{\hoffset}{\normaloffset}{\bindingoffset}{7mm}%
- %
- \globaldefs = 0
-}
-
-% @pagesizes TEXTHEIGHT[,TEXTWIDTH]
-% Perhaps we should allow setting the margins, \topskip, \parskip,
-% and/or leading, also. Or perhaps we should compute them somehow.
-%
-\def\pagesizes{\parsearg\pagesizesxxx}
-\def\pagesizesxxx#1{\pagesizesyyy #1,,\finish}
-\def\pagesizesyyy#1,#2,#3\finish{{%
- \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \hsize=#2\relax \fi
- \globaldefs = 1
- %
- \parskip = 3pt plus 2pt minus 1pt
- \setleading{13.2pt}%
- %
- \internalpagesizes{#1}{\hsize}{\voffset}{\normaloffset}{\bindingoffset}{44pt}%
-}}
-
-% Set default to letter.
-%
-\letterpaper
-
-
-\message{and turning on texinfo input format.}
-
-% Define macros to output various characters with catcode for normal text.
-\catcode`\"=\other
-\catcode`\~=\other
-\catcode`\^=\other
-\catcode`\_=\other
-\catcode`\|=\other
-\catcode`\<=\other
-\catcode`\>=\other
-\catcode`\+=\other
-\catcode`\$=\other
-\def\normaldoublequote{"}
-\def\normaltilde{~}
-\def\normalcaret{^}
-\def\normalunderscore{_}
-\def\normalverticalbar{|}
-\def\normalless{<}
-\def\normalgreater{>}
-\def\normalplus{+}
-\def\normaldollar{$}
-
-% This macro is used to make a character print one way in ttfont
-% where it can probably just be output, and another way in other fonts,
-% where something hairier probably needs to be done.
-%
-% #1 is what to print if we are indeed using \tt; #2 is what to print
-% otherwise. Since all the Computer Modern typewriter fonts have zero
-% interword stretch (and shrink), and it is reasonable to expect all
-% typewriter fonts to have this, we can check that font parameter.
-%
-\def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi}
-
-% Same as above, but check for italic font. Actually this also catches
-% non-italic slanted fonts since it is impossible to distinguish them from
-% italic fonts. But since this is only used by $ and it uses \sl anyway
-% this is not a problem.
-\def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi}
-
-% Turn off all special characters except @
-% (and those which the user can use as if they were ordinary).
-% Most of these we simply print from the \tt font, but for some, we can
-% use math or other variants that look better in normal text.
-
-\catcode`\"=\active
-\def\activedoublequote{{\tt\char34}}
-\let"=\activedoublequote
-\catcode`\~=\active
-\def~{{\tt\char126}}
-\chardef\hat=`\^
-\catcode`\^=\active
-\def^{{\tt \hat}}
-
-\catcode`\_=\active
-\def_{\ifusingtt\normalunderscore\_}
-% Subroutine for the previous macro.
-\def\_{\leavevmode \kern.06em \vbox{\hrule width.3em height.1ex}}
-
-\catcode`\|=\active
-\def|{{\tt\char124}}
-\chardef \less=`\<
-\catcode`\<=\active
-\def<{{\tt \less}}
-\chardef \gtr=`\>
-\catcode`\>=\active
-\def>{{\tt \gtr}}
-\catcode`\+=\active
-\def+{{\tt \char 43}}
-\catcode`\$=\active
-\def${\ifusingit{{\sl\$}}\normaldollar}
-%\catcode 27=\active
-%\def^^[{$\diamondsuit$}
-
-% Set up an active definition for =, but don't enable it most of the time.
-{\catcode`\==\active
-\global\def={{\tt \char 61}}}
-
-\catcode`+=\active
-\catcode`\_=\active
-
-% If a .fmt file is being used, characters that might appear in a file
-% name cannot be active until we have parsed the command line.
-% So turn them off again, and have \everyjob (or @setfilename) turn them on.
-% \otherifyactive is called near the end of this file.
-\def\otherifyactive{\catcode`+=\other \catcode`\_=\other}
-
-\catcode`\@=0
-
-% \rawbackslashxx output one backslash character in current font
-\global\chardef\rawbackslashxx=`\\
-%{\catcode`\\=\other
-%@gdef@rawbackslashxx{\}}
-
-% \rawbackslash redefines \ as input to do \rawbackslashxx.
-{\catcode`\\=\active
-@gdef@rawbackslash{@let\=@rawbackslashxx }}
-
-% \normalbackslash outputs one backslash in fixed width font.
-\def\normalbackslash{{\tt\rawbackslashxx}}
-
-% \catcode 17=0 % Define control-q
-\catcode`\\=\active
-
-% Used sometimes to turn off (effectively) the active characters
-% even after parsing them.
-@def@turnoffactive{@let"=@normaldoublequote
-@let\=@realbackslash
-@let~=@normaltilde
-@let^=@normalcaret
-@let_=@normalunderscore
-@let|=@normalverticalbar
-@let<=@normalless
-@let>=@normalgreater
-@let+=@normalplus
-@let$=@normaldollar}
-
-@def@normalturnoffactive{@let"=@normaldoublequote
-@let\=@normalbackslash
-@let~=@normaltilde
-@let^=@normalcaret
-@let_=@normalunderscore
-@let|=@normalverticalbar
-@let<=@normalless
-@let>=@normalgreater
-@let+=@normalplus
-@let$=@normaldollar}
-
-% Make _ and + \other characters, temporarily.
-% This is canceled by @fixbackslash.
-@otherifyactive
-
-% If a .fmt file is being used, we don't want the `\input texinfo' to show up.
-% That is what \eatinput is for; after that, the `\' should revert to printing
-% a backslash.
-%
-@gdef@eatinput input texinfo{@fixbackslash}
-@global@let\ = @eatinput
-
-% On the other hand, perhaps the file did not have a `\input texinfo'. Then
-% the first `\{ in the file would cause an error. This macro tries to fix
-% that, assuming it is called before the first `\' could plausibly occur.
-% Also back turn on active characters that might appear in the input
-% file name, in case not using a pre-dumped format.
-%
-@gdef@fixbackslash{%
- @ifx\@eatinput @let\ = @normalbackslash @fi
- @catcode`+=@active
- @catcode`@_=@active
-}
-
-% Say @foo, not \foo, in error messages.
-@escapechar = `@@
-
-% These look ok in all fonts, so just make them not special.
-@catcode`@& = @other
-@catcode`@# = @other
-@catcode`@% = @other
-
-@c Set initial fonts.
-@textfonts
-@rm
-
-
-@c Local variables:
-@c eval: (add-hook 'write-file-hooks 'time-stamp)
-@c page-delimiter: "^\\\\message"
-@c time-stamp-start: "def\\\\texinfoversion{"
-@c time-stamp-format: "%:y-%02m-%02d.%02H"
-@c time-stamp-end: "}"
-@c End:
diff --git a/readline-4.3/emacs_keymap.c b/readline-4.3/emacs_keymap.c
deleted file mode 100644
index ca9d134..0000000
--- a/readline-4.3/emacs_keymap.c
+++ /dev/null
@@ -1,873 +0,0 @@
-/* emacs_keymap.c -- the keymap for emacs_mode in readline (). */
-
-/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if !defined (BUFSIZ)
-#include <stdio.h>
-#endif /* !BUFSIZ */
-
-#include "readline.h"
-
-/* An array of function pointers, one for each possible key.
- If the type byte is ISKMAP, then the pointer is the address of
- a keymap. */
-
-KEYMAP_ENTRY_ARRAY emacs_standard_keymap = {
-
- /* Control keys. */
- { ISFUNC, rl_set_mark }, /* Control-@ */
- { ISFUNC, rl_beg_of_line }, /* Control-a */
- { ISFUNC, rl_backward_char }, /* Control-b */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-c */
- { ISFUNC, rl_delete }, /* Control-d */
- { ISFUNC, rl_end_of_line }, /* Control-e */
- { ISFUNC, rl_forward_char }, /* Control-f */
- { ISFUNC, rl_abort }, /* Control-g */
- { ISFUNC, rl_rubout }, /* Control-h */
- { ISFUNC, rl_complete }, /* Control-i */
- { ISFUNC, rl_newline }, /* Control-j */
- { ISFUNC, rl_kill_line }, /* Control-k */
- { ISFUNC, rl_clear_screen }, /* Control-l */
- { ISFUNC, rl_newline }, /* Control-m */
- { ISFUNC, rl_get_next_history }, /* Control-n */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-o */
- { ISFUNC, rl_get_previous_history }, /* Control-p */
- { ISFUNC, rl_quoted_insert }, /* Control-q */
- { ISFUNC, rl_reverse_search_history }, /* Control-r */
- { ISFUNC, rl_forward_search_history }, /* Control-s */
- { ISFUNC, rl_transpose_chars }, /* Control-t */
- { ISFUNC, rl_unix_line_discard }, /* Control-u */
- { ISFUNC, rl_quoted_insert }, /* Control-v */
- { ISFUNC, rl_unix_word_rubout }, /* Control-w */
- { ISKMAP, (rl_command_func_t *)emacs_ctlx_keymap }, /* Control-x */
- { ISFUNC, rl_yank }, /* Control-y */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-z */
- { ISKMAP, (rl_command_func_t *)emacs_meta_keymap }, /* Control-[ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-\ */
- { ISFUNC, rl_char_search }, /* Control-] */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-^ */
- { ISFUNC, rl_undo_command }, /* Control-_ */
-
- /* The start of printing characters. */
- { ISFUNC, rl_insert }, /* SPACE */
- { ISFUNC, rl_insert }, /* ! */
- { ISFUNC, rl_insert }, /* " */
- { ISFUNC, rl_insert }, /* # */
- { ISFUNC, rl_insert }, /* $ */
- { ISFUNC, rl_insert }, /* % */
- { ISFUNC, rl_insert }, /* & */
- { ISFUNC, rl_insert }, /* ' */
- { ISFUNC, rl_insert }, /* ( */
- { ISFUNC, rl_insert }, /* ) */
- { ISFUNC, rl_insert }, /* * */
- { ISFUNC, rl_insert }, /* + */
- { ISFUNC, rl_insert }, /* , */
- { ISFUNC, rl_insert }, /* - */
- { ISFUNC, rl_insert }, /* . */
- { ISFUNC, rl_insert }, /* / */
-
- /* Regular digits. */
- { ISFUNC, rl_insert }, /* 0 */
- { ISFUNC, rl_insert }, /* 1 */
- { ISFUNC, rl_insert }, /* 2 */
- { ISFUNC, rl_insert }, /* 3 */
- { ISFUNC, rl_insert }, /* 4 */
- { ISFUNC, rl_insert }, /* 5 */
- { ISFUNC, rl_insert }, /* 6 */
- { ISFUNC, rl_insert }, /* 7 */
- { ISFUNC, rl_insert }, /* 8 */
- { ISFUNC, rl_insert }, /* 9 */
-
- /* A little more punctuation. */
- { ISFUNC, rl_insert }, /* : */
- { ISFUNC, rl_insert }, /* ; */
- { ISFUNC, rl_insert }, /* < */
- { ISFUNC, rl_insert }, /* = */
- { ISFUNC, rl_insert }, /* > */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* @ */
-
- /* Uppercase alphabet. */
- { ISFUNC, rl_insert }, /* A */
- { ISFUNC, rl_insert }, /* B */
- { ISFUNC, rl_insert }, /* C */
- { ISFUNC, rl_insert }, /* D */
- { ISFUNC, rl_insert }, /* E */
- { ISFUNC, rl_insert }, /* F */
- { ISFUNC, rl_insert }, /* G */
- { ISFUNC, rl_insert }, /* H */
- { ISFUNC, rl_insert }, /* I */
- { ISFUNC, rl_insert }, /* J */
- { ISFUNC, rl_insert }, /* K */
- { ISFUNC, rl_insert }, /* L */
- { ISFUNC, rl_insert }, /* M */
- { ISFUNC, rl_insert }, /* N */
- { ISFUNC, rl_insert }, /* O */
- { ISFUNC, rl_insert }, /* P */
- { ISFUNC, rl_insert }, /* Q */
- { ISFUNC, rl_insert }, /* R */
- { ISFUNC, rl_insert }, /* S */
- { ISFUNC, rl_insert }, /* T */
- { ISFUNC, rl_insert }, /* U */
- { ISFUNC, rl_insert }, /* V */
- { ISFUNC, rl_insert }, /* W */
- { ISFUNC, rl_insert }, /* X */
- { ISFUNC, rl_insert }, /* Y */
- { ISFUNC, rl_insert }, /* Z */
-
- /* Some more punctuation. */
- { ISFUNC, rl_insert }, /* [ */
- { ISFUNC, rl_insert }, /* \ */
- { ISFUNC, rl_insert }, /* ] */
- { ISFUNC, rl_insert }, /* ^ */
- { ISFUNC, rl_insert }, /* _ */
- { ISFUNC, rl_insert }, /* ` */
-
- /* Lowercase alphabet. */
- { ISFUNC, rl_insert }, /* a */
- { ISFUNC, rl_insert }, /* b */
- { ISFUNC, rl_insert }, /* c */
- { ISFUNC, rl_insert }, /* d */
- { ISFUNC, rl_insert }, /* e */
- { ISFUNC, rl_insert }, /* f */
- { ISFUNC, rl_insert }, /* g */
- { ISFUNC, rl_insert }, /* h */
- { ISFUNC, rl_insert }, /* i */
- { ISFUNC, rl_insert }, /* j */
- { ISFUNC, rl_insert }, /* k */
- { ISFUNC, rl_insert }, /* l */
- { ISFUNC, rl_insert }, /* m */
- { ISFUNC, rl_insert }, /* n */
- { ISFUNC, rl_insert }, /* o */
- { ISFUNC, rl_insert }, /* p */
- { ISFUNC, rl_insert }, /* q */
- { ISFUNC, rl_insert }, /* r */
- { ISFUNC, rl_insert }, /* s */
- { ISFUNC, rl_insert }, /* t */
- { ISFUNC, rl_insert }, /* u */
- { ISFUNC, rl_insert }, /* v */
- { ISFUNC, rl_insert }, /* w */
- { ISFUNC, rl_insert }, /* x */
- { ISFUNC, rl_insert }, /* y */
- { ISFUNC, rl_insert }, /* z */
-
- /* Final punctuation. */
- { ISFUNC, rl_insert }, /* { */
- { ISFUNC, rl_insert }, /* | */
- { ISFUNC, rl_insert }, /* } */
- { ISFUNC, rl_insert }, /* ~ */
- { ISFUNC, rl_rubout }, /* RUBOUT */
-
-#if KEYMAP_SIZE > 128
- /* Pure 8-bit characters (128 - 159).
- These might be used in some
- character sets. */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
-
- /* ISO Latin-1 characters (160 - 255) */
- { ISFUNC, rl_insert }, /* No-break space */
- { ISFUNC, rl_insert }, /* Inverted exclamation mark */
- { ISFUNC, rl_insert }, /* Cent sign */
- { ISFUNC, rl_insert }, /* Pound sign */
- { ISFUNC, rl_insert }, /* Currency sign */
- { ISFUNC, rl_insert }, /* Yen sign */
- { ISFUNC, rl_insert }, /* Broken bar */
- { ISFUNC, rl_insert }, /* Section sign */
- { ISFUNC, rl_insert }, /* Diaeresis */
- { ISFUNC, rl_insert }, /* Copyright sign */
- { ISFUNC, rl_insert }, /* Feminine ordinal indicator */
- { ISFUNC, rl_insert }, /* Left pointing double angle quotation mark */
- { ISFUNC, rl_insert }, /* Not sign */
- { ISFUNC, rl_insert }, /* Soft hyphen */
- { ISFUNC, rl_insert }, /* Registered sign */
- { ISFUNC, rl_insert }, /* Macron */
- { ISFUNC, rl_insert }, /* Degree sign */
- { ISFUNC, rl_insert }, /* Plus-minus sign */
- { ISFUNC, rl_insert }, /* Superscript two */
- { ISFUNC, rl_insert }, /* Superscript three */
- { ISFUNC, rl_insert }, /* Acute accent */
- { ISFUNC, rl_insert }, /* Micro sign */
- { ISFUNC, rl_insert }, /* Pilcrow sign */
- { ISFUNC, rl_insert }, /* Middle dot */
- { ISFUNC, rl_insert }, /* Cedilla */
- { ISFUNC, rl_insert }, /* Superscript one */
- { ISFUNC, rl_insert }, /* Masculine ordinal indicator */
- { ISFUNC, rl_insert }, /* Right pointing double angle quotation mark */
- { ISFUNC, rl_insert }, /* Vulgar fraction one quarter */
- { ISFUNC, rl_insert }, /* Vulgar fraction one half */
- { ISFUNC, rl_insert }, /* Vulgar fraction three quarters */
- { ISFUNC, rl_insert }, /* Inverted questionk mark */
- { ISFUNC, rl_insert }, /* Latin capital letter a with grave */
- { ISFUNC, rl_insert }, /* Latin capital letter a with acute */
- { ISFUNC, rl_insert }, /* Latin capital letter a with circumflex */
- { ISFUNC, rl_insert }, /* Latin capital letter a with tilde */
- { ISFUNC, rl_insert }, /* Latin capital letter a with diaeresis */
- { ISFUNC, rl_insert }, /* Latin capital letter a with ring above */
- { ISFUNC, rl_insert }, /* Latin capital letter ae */
- { ISFUNC, rl_insert }, /* Latin capital letter c with cedilla */
- { ISFUNC, rl_insert }, /* Latin capital letter e with grave */
- { ISFUNC, rl_insert }, /* Latin capital letter e with acute */
- { ISFUNC, rl_insert }, /* Latin capital letter e with circumflex */
- { ISFUNC, rl_insert }, /* Latin capital letter e with diaeresis */
- { ISFUNC, rl_insert }, /* Latin capital letter i with grave */
- { ISFUNC, rl_insert }, /* Latin capital letter i with acute */
- { ISFUNC, rl_insert }, /* Latin capital letter i with circumflex */
- { ISFUNC, rl_insert }, /* Latin capital letter i with diaeresis */
- { ISFUNC, rl_insert }, /* Latin capital letter eth (Icelandic) */
- { ISFUNC, rl_insert }, /* Latin capital letter n with tilde */
- { ISFUNC, rl_insert }, /* Latin capital letter o with grave */
- { ISFUNC, rl_insert }, /* Latin capital letter o with acute */
- { ISFUNC, rl_insert }, /* Latin capital letter o with circumflex */
- { ISFUNC, rl_insert }, /* Latin capital letter o with tilde */
- { ISFUNC, rl_insert }, /* Latin capital letter o with diaeresis */
- { ISFUNC, rl_insert }, /* Multiplication sign */
- { ISFUNC, rl_insert }, /* Latin capital letter o with stroke */
- { ISFUNC, rl_insert }, /* Latin capital letter u with grave */
- { ISFUNC, rl_insert }, /* Latin capital letter u with acute */
- { ISFUNC, rl_insert }, /* Latin capital letter u with circumflex */
- { ISFUNC, rl_insert }, /* Latin capital letter u with diaeresis */
- { ISFUNC, rl_insert }, /* Latin capital letter Y with acute */
- { ISFUNC, rl_insert }, /* Latin capital letter thorn (Icelandic) */
- { ISFUNC, rl_insert }, /* Latin small letter sharp s (German) */
- { ISFUNC, rl_insert }, /* Latin small letter a with grave */
- { ISFUNC, rl_insert }, /* Latin small letter a with acute */
- { ISFUNC, rl_insert }, /* Latin small letter a with circumflex */
- { ISFUNC, rl_insert }, /* Latin small letter a with tilde */
- { ISFUNC, rl_insert }, /* Latin small letter a with diaeresis */
- { ISFUNC, rl_insert }, /* Latin small letter a with ring above */
- { ISFUNC, rl_insert }, /* Latin small letter ae */
- { ISFUNC, rl_insert }, /* Latin small letter c with cedilla */
- { ISFUNC, rl_insert }, /* Latin small letter e with grave */
- { ISFUNC, rl_insert }, /* Latin small letter e with acute */
- { ISFUNC, rl_insert }, /* Latin small letter e with circumflex */
- { ISFUNC, rl_insert }, /* Latin small letter e with diaeresis */
- { ISFUNC, rl_insert }, /* Latin small letter i with grave */
- { ISFUNC, rl_insert }, /* Latin small letter i with acute */
- { ISFUNC, rl_insert }, /* Latin small letter i with circumflex */
- { ISFUNC, rl_insert }, /* Latin small letter i with diaeresis */
- { ISFUNC, rl_insert }, /* Latin small letter eth (Icelandic) */
- { ISFUNC, rl_insert }, /* Latin small letter n with tilde */
- { ISFUNC, rl_insert }, /* Latin small letter o with grave */
- { ISFUNC, rl_insert }, /* Latin small letter o with acute */
- { ISFUNC, rl_insert }, /* Latin small letter o with circumflex */
- { ISFUNC, rl_insert }, /* Latin small letter o with tilde */
- { ISFUNC, rl_insert }, /* Latin small letter o with diaeresis */
- { ISFUNC, rl_insert }, /* Division sign */
- { ISFUNC, rl_insert }, /* Latin small letter o with stroke */
- { ISFUNC, rl_insert }, /* Latin small letter u with grave */
- { ISFUNC, rl_insert }, /* Latin small letter u with acute */
- { ISFUNC, rl_insert }, /* Latin small letter u with circumflex */
- { ISFUNC, rl_insert }, /* Latin small letter u with diaeresis */
- { ISFUNC, rl_insert }, /* Latin small letter y with acute */
- { ISFUNC, rl_insert }, /* Latin small letter thorn (Icelandic) */
- { ISFUNC, rl_insert } /* Latin small letter y with diaeresis */
-#endif /* KEYMAP_SIZE > 128 */
-};
-
-KEYMAP_ENTRY_ARRAY emacs_meta_keymap = {
-
- /* Meta keys. Just like above, but the high bit is set. */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-@ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-a */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-b */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-c */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-d */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-e */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-f */
- { ISFUNC, rl_abort }, /* Meta-Control-g */
- { ISFUNC, rl_backward_kill_word }, /* Meta-Control-h */
- { ISFUNC, rl_tab_insert }, /* Meta-Control-i */
- { ISFUNC, rl_vi_editing_mode }, /* Meta-Control-j */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-k */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-l */
- { ISFUNC, rl_vi_editing_mode }, /* Meta-Control-m */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-n */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-o */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-p */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-q */
- { ISFUNC, rl_revert_line }, /* Meta-Control-r */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-s */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-t */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-u */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-v */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-w */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-x */
- { ISFUNC, rl_yank_nth_arg }, /* Meta-Control-y */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-z */
-
- { ISFUNC, rl_complete }, /* Meta-Control-[ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-\ */
- { ISFUNC, rl_backward_char_search }, /* Meta-Control-] */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-^ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-_ */
-
- /* The start of printing characters. */
- { ISFUNC, rl_set_mark }, /* Meta-SPACE */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-! */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-" */
- { ISFUNC, rl_insert_comment }, /* Meta-# */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-$ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-% */
- { ISFUNC, rl_tilde_expand }, /* Meta-& */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-' */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-( */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-) */
- { ISFUNC, rl_insert_completions }, /* Meta-* */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-+ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-, */
- { ISFUNC, rl_digit_argument }, /* Meta-- */
- { ISFUNC, rl_yank_last_arg}, /* Meta-. */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-/ */
-
- /* Regular digits. */
- { ISFUNC, rl_digit_argument }, /* Meta-0 */
- { ISFUNC, rl_digit_argument }, /* Meta-1 */
- { ISFUNC, rl_digit_argument }, /* Meta-2 */
- { ISFUNC, rl_digit_argument }, /* Meta-3 */
- { ISFUNC, rl_digit_argument }, /* Meta-4 */
- { ISFUNC, rl_digit_argument }, /* Meta-5 */
- { ISFUNC, rl_digit_argument }, /* Meta-6 */
- { ISFUNC, rl_digit_argument }, /* Meta-7 */
- { ISFUNC, rl_digit_argument }, /* Meta-8 */
- { ISFUNC, rl_digit_argument }, /* Meta-9 */
-
- /* A little more punctuation. */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-: */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-; */
- { ISFUNC, rl_beginning_of_history }, /* Meta-< */
- { ISFUNC, rl_possible_completions }, /* Meta-= */
- { ISFUNC, rl_end_of_history }, /* Meta-> */
- { ISFUNC, rl_possible_completions }, /* Meta-? */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-@ */
-
- /* Uppercase alphabet. */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-A */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-B */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-C */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-D */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-E */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-F */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-G */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-H */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-I */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-J */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-K */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-L */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-M */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-N */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-O */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-P */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-Q */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-R */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-S */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-T */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-U */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-V */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-W */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-X */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-Y */
- { ISFUNC, rl_do_lowercase_version }, /* Meta-Z */
-
- /* Some more punctuation. */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-[ */ /* was rl_arrow_keys */
- { ISFUNC, rl_delete_horizontal_space }, /* Meta-\ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-] */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-^ */
- { ISFUNC, rl_yank_last_arg }, /* Meta-_ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-` */
-
- /* Lowercase alphabet. */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-a */
- { ISFUNC, rl_backward_word }, /* Meta-b */
- { ISFUNC, rl_capitalize_word }, /* Meta-c */
- { ISFUNC, rl_kill_word }, /* Meta-d */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-e */
- { ISFUNC, rl_forward_word }, /* Meta-f */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-g */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-h */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-i */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-j */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-k */
- { ISFUNC, rl_downcase_word }, /* Meta-l */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-m */
- { ISFUNC, rl_noninc_forward_search }, /* Meta-n */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-o */ /* was rl_arrow_keys */
- { ISFUNC, rl_noninc_reverse_search }, /* Meta-p */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-q */
- { ISFUNC, rl_revert_line }, /* Meta-r */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-s */
- { ISFUNC, rl_transpose_words }, /* Meta-t */
- { ISFUNC, rl_upcase_word }, /* Meta-u */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-v */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-w */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-x */
- { ISFUNC, rl_yank_pop }, /* Meta-y */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-z */
-
- /* Final punctuation. */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-{ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-| */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-} */
- { ISFUNC, rl_tilde_expand }, /* Meta-~ */
- { ISFUNC, rl_backward_kill_word }, /* Meta-rubout */
-
-#if KEYMAP_SIZE > 128
- /* Undefined keys. */
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 }
-#endif /* KEYMAP_SIZE > 128 */
-};
-
-KEYMAP_ENTRY_ARRAY emacs_ctlx_keymap = {
-
- /* Control keys. */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-@ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-a */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-b */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-c */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-d */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-e */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-f */
- { ISFUNC, rl_abort }, /* Control-g */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-h */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-i */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-j */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-k */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-l */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-m */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-n */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-o */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-p */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-q */
- { ISFUNC, rl_re_read_init_file }, /* Control-r */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-s */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-t */
- { ISFUNC, rl_undo_command }, /* Control-u */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-v */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-w */
- { ISFUNC, rl_exchange_point_and_mark }, /* Control-x */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-y */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-z */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-[ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-\ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-] */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-^ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-_ */
-
- /* The start of printing characters. */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* SPACE */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* ! */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* " */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* # */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* $ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* % */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* & */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* ' */
- { ISFUNC, rl_start_kbd_macro }, /* ( */
- { ISFUNC, rl_end_kbd_macro }, /* ) */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* * */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* + */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* , */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* - */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* . */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* / */
-
- /* Regular digits. */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* 0 */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* 1 */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* 2 */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* 3 */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* 4 */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* 5 */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* 6 */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* 7 */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* 8 */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* 9 */
-
- /* A little more punctuation. */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* : */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* ; */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* < */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* = */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* > */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* ? */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* @ */
-
- /* Uppercase alphabet. */
- { ISFUNC, rl_do_lowercase_version }, /* A */
- { ISFUNC, rl_do_lowercase_version }, /* B */
- { ISFUNC, rl_do_lowercase_version }, /* C */
- { ISFUNC, rl_do_lowercase_version }, /* D */
- { ISFUNC, rl_do_lowercase_version }, /* E */
- { ISFUNC, rl_do_lowercase_version }, /* F */
- { ISFUNC, rl_do_lowercase_version }, /* G */
- { ISFUNC, rl_do_lowercase_version }, /* H */
- { ISFUNC, rl_do_lowercase_version }, /* I */
- { ISFUNC, rl_do_lowercase_version }, /* J */
- { ISFUNC, rl_do_lowercase_version }, /* K */
- { ISFUNC, rl_do_lowercase_version }, /* L */
- { ISFUNC, rl_do_lowercase_version }, /* M */
- { ISFUNC, rl_do_lowercase_version }, /* N */
- { ISFUNC, rl_do_lowercase_version }, /* O */
- { ISFUNC, rl_do_lowercase_version }, /* P */
- { ISFUNC, rl_do_lowercase_version }, /* Q */
- { ISFUNC, rl_do_lowercase_version }, /* R */
- { ISFUNC, rl_do_lowercase_version }, /* S */
- { ISFUNC, rl_do_lowercase_version }, /* T */
- { ISFUNC, rl_do_lowercase_version }, /* U */
- { ISFUNC, rl_do_lowercase_version }, /* V */
- { ISFUNC, rl_do_lowercase_version }, /* W */
- { ISFUNC, rl_do_lowercase_version }, /* X */
- { ISFUNC, rl_do_lowercase_version }, /* Y */
- { ISFUNC, rl_do_lowercase_version }, /* Z */
-
- /* Some more punctuation. */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* [ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* \ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* ] */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* ^ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* _ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* ` */
-
- /* Lowercase alphabet. */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* a */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* b */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* c */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* d */
- { ISFUNC, rl_call_last_kbd_macro }, /* e */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* f */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* g */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* h */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* i */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* j */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* k */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* l */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* m */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* n */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* o */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* p */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* q */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* r */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* s */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* t */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* u */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* v */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* w */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* x */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* y */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* z */
-
- /* Final punctuation. */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* { */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* | */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* } */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* ~ */
- { ISFUNC, rl_backward_kill_line }, /* RUBOUT */
-
-#if KEYMAP_SIZE > 128
- /* Undefined keys. */
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 }
-#endif /* KEYMAP_SIZE > 128 */
-};
diff --git a/readline-4.3/examples/Inputrc b/readline-4.3/examples/Inputrc
deleted file mode 100644
index d7fdb42..0000000
--- a/readline-4.3/examples/Inputrc
+++ /dev/null
@@ -1,81 +0,0 @@
-# My ~/.inputrc file is in -*- text -*- for easy editing with Emacs.
-#
-# Notice the various bindings which are conditionalized depending
-# on which program is running, or what terminal is active.
-#
-
-# Copyright (C) 1989-2002 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA.
-
-# In all programs, all terminals, make sure this is bound.
-"\C-x\C-r": re-read-init-file
-
-# Hp terminals (and some others) have ugly default behaviour for C-h.
-"\C-h": backward-delete-char
-"\e\C-h": backward-kill-word
-"\C-xd": dump-functions
-
-# In xterm windows, make the arrow keys do the right thing.
-$if TERM=xterm
-"\e[A": previous-history
-"\e[B": next-history
-"\e[C": forward-char
-"\e[D": backward-char
-
-# alternate arrow key prefix
-"\eOA": previous-history
-"\eOB": next-history
-"\eOC": forward-char
-"\eOD": backward-char
-
-# Under Xterm in Bash, we bind local Function keys to do something useful.
-$if Bash
-"\e[11~": "Function Key 1"
-"\e[12~": "Function Key 2"
-"\e[13~": "Function Key 3"
-"\e[14~": "Function Key 4"
-"\e[15~": "Function Key 5"
-
-# I know the following escape sequence numbers are 1 greater than
-# the function key. Don't ask me why, I didn't design the xterm terminal.
-"\e[17~": "Function Key 6"
-"\e[18~": "Function Key 7"
-"\e[19~": "Function Key 8"
-"\e[20~": "Function Key 9"
-"\e[21~": "Function Key 10"
-$endif
-$endif
-
-# For Bash, all terminals, add some Bash specific hacks.
-$if Bash
-"\C-xv": show-bash-version
-"\C-x\C-e": shell-expand-line
-
-# Here is one for editing my path.
-"\C-xp": "$PATH\C-x\C-e\C-e\"\C-aPATH=\":\C-b"
-
-# Make C-x r read my mail in emacs.
-# "\C-xr": "emacs -f rmail\C-j"
-$endif
-
-# For FTP, different hacks:
-$if Ftp
-"\C-xg": "get \M-?"
-"\C-xt": "put \M-?"
-"\M-.": yank-last-arg
-$endif
-
-" ": self-insert
diff --git a/readline-4.3/examples/Makefile.in b/readline-4.3/examples/Makefile.in
deleted file mode 100644
index 72c9904..0000000
--- a/readline-4.3/examples/Makefile.in
+++ /dev/null
@@ -1,104 +0,0 @@
-#
-# This is the Makefile for the readline examples subdirectory.
-#
-# Copyright (C) 1994 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA.
-RL_LIBRARY_VERSION = @LIBVERSION@
-
-SHELL = @MAKE_SHELL@
-RM = rm -f
-
-srcdir = @srcdir@
-VPATH = .:@srcdir@
-top_srcdir = @top_srcdir@
-BUILD_DIR = .
-
-# Support an alternate destination root directory for package building
-DESTDIR =
-
-DEFS = @DEFS@
-CC = @CC@
-CFLAGS = @CFLAGS@
-LOCAL_CFLAGS = @LOCAL_CFLAGS@ -DREADLINE_LIBRARY -DRL_LIBRARY_VERSION='"$(RL_LIBRARY_VERSION)"'
-CPPFLAGS = @CPPFLAGS@
-
-INCLUDES = -I$(srcdir) -I$(top_srcdir) -I..
-
-CCFLAGS = $(DEFS) $(LOCAL_CFLAGS) $(CPPFLAGS) $(INCLUDES) $(CFLAGS)
-LDFLAGS = -g -L.. @LDFLAGS@
-
-READLINE_LIB = ../libreadline.a
-HISTORY_LIB = ../libhistory.a
-
-TERMCAP_LIB = @TERMCAP_LIB@
-
-.c.o:
- ${RM} $@
- $(CC) $(CCFLAGS) -c $<
-
-EXECUTABLES = fileman rltest rl rlcat rlversion histexamp
-OBJECTS = fileman.o rltest.o rl.o rlversion.o histexamp.o
-
-all: $(EXECUTABLES)
-everything: all rlfe
-
-rl: rl.o $(READLINE_LIB)
- $(CC) $(LDFLAGS) -o $@ rl.o -lreadline $(TERMCAP_LIB)
-
-rlcat: rlcat.o $(READLINE_LIB)
- $(CC) $(LDFLAGS) -o $@ rlcat.o -lreadline $(TERMCAP_LIB)
-
-fileman: fileman.o $(READLINE_LIB)
- $(CC) $(LDFLAGS) -o $@ fileman.o -lreadline $(TERMCAP_LIB)
-
-rltest: rltest.o $(READLINE_LIB)
- $(CC) $(LDFLAGS) -o $@ rltest.o -lreadline $(TERMCAP_LIB)
-
-rlversion: rlversion.o $(READLINE_LIB)
- $(CC) $(LDFLAGS) -o $@ rlversion.o -lreadline $(TERMCAP_LIB)
-
-histexamp: histexamp.o $(HISTORY_LIB)
- $(CC) $(LDFLAGS) -o $@ histexamp.o -lhistory $(TERMCAP_LIB)
-
-clean mostlyclean:
- $(RM) $(OBJECTS)
- $(RM) $(EXECUTABLES) *.exe
- $(RM) rlfe.o rlfe
-
-distclean maintainer-clean: clean
- $(RM) Makefile
-
-fileman.o: fileman.c
-rltest.o: rltest.c
-rl.o: rl.c
-rlversion.o: rlversion.c
-histexamp.o: histexamp.c
-
-fileman.o: $(top_srcdir)/readline.h
-rltest.o: $(top_srcdir)/readline.h
-rl.o: $(top_srcdir)/readline.h
-rlversion.o: $(top_srcdir)/readline.h
-histexamp.o: $(top_srcdir)/history.h
-
-# Stuff for Per Bothner's `rlfe' program
-
-rlfe: rlfe.o $(READLINE_LIB) $(HISTORY_LIB)
- $(CC) $(LDFLAGS) -o $@ rlfe.o -lreadline -lhistory ${TERMCAP_LIB}
-
-rlfe.o: rlfe.c
-
-rlfe.o: $(top_srcdir)/readline.h
-rlfe.o: $(top_srcdir)/history.h
diff --git a/readline-4.3/examples/excallback.c b/readline-4.3/examples/excallback.c
deleted file mode 100644
index 3d4bb18..0000000
--- a/readline-4.3/examples/excallback.c
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
-From: Jeff Solomon <jsolomon@stanford.edu>
-Date: Fri, 9 Apr 1999 10:13:27 -0700 (PDT)
-To: chet@po.cwru.edu
-Subject: new readline example
-Message-ID: <14094.12094.527305.199695@mrclean.Stanford.EDU>
-
-Chet,
-
-I've been using readline 4.0. Specifically, I've been using the perl
-version Term::ReadLine::Gnu. It works great.
-
-Anyway, I've been playing around the alternate interface and I wanted
-to contribute a little C program, callback.c, to you that you could
-use as an example of the alternate interface in the /examples
-directory of the readline distribution.
-
-My example shows how, using the alternate interface, you can
-interactively change the prompt (which is very nice imo). Also, I
-point out that you must roll your own terminal setting when using the
-alternate interface because readline depreps (using your parlance) the
-terminal while in the user callback. I try to demostrate what I mean
-with an example. I've included the program below.
-
-To compile, I just put the program in the examples directory and made
-the appropriate changes to the EXECUTABLES and OBJECTS line and added
-an additional target 'callback'.
-
-I compiled on my Sun Solaris2.6 box using Sun's cc.
-
-Let me know what you think.
-
-Jeff
-*/
-
-#if defined (HAVE_CONFIG_H)
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <sys/types.h>
-
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-
-#include <termios.h> /* xxx - should make this more general */
-
-#ifdef READLINE_LIBRARY
-# include "readline.h"
-#else
-# include <readline/readline.h>
-#endif
-
-/* This little examples demonstrates the alternate interface to using readline.
- * In the alternate interface, the user maintains control over program flow and
- * only calls readline when STDIN is readable. Using the alternate interface,
- * you can do anything else while still using readline (like talking to a
- * network or another program) without blocking.
- *
- * Specifically, this program highlights two importants features of the
- * alternate interface. The first is the ability to interactively change the
- * prompt, which can't be done using the regular interface since rl_prompt is
- * read-only.
- *
- * The second feature really highlights a subtle point when using the alternate
- * interface. That is, readline will not alter the terminal when inside your
- * callback handler. So let's so, your callback executes a user command that
- * takes a non-trivial amount of time to complete (seconds). While your
- * executing the command, the user continues to type keystrokes and expects them
- * to be re-echoed on the new prompt when it returns. Unfortunately, the default
- * terminal configuration doesn't do this. After the prompt returns, the user
- * must hit one additional keystroke and then will see all of his previous
- * keystrokes. To illustrate this, compile and run this program. Type "sleep" at
- * the prompt and then type "bar" before the prompt returns (you have 3
- * seconds). Notice how "bar" is re-echoed on the prompt after the prompt
- * returns? This is what you expect to happen. Now comment out the 4 lines below
- * the line that says COMMENT LINE BELOW. Recompile and rerun the program and do
- * the same thing. When the prompt returns, you should not see "bar". Now type
- * "f", see how "barf" magically appears? This behavior is un-expected and not
- * desired.
- */
-
-void process_line(char *line);
-int change_prompt(void);
-char *get_prompt(void);
-
-int prompt = 1;
-char prompt_buf[40], line_buf[256];
-tcflag_t old_lflag;
-cc_t old_vtime;
-struct termios term;
-
-int
-main()
-{
- fd_set fds;
-
- /* Adjust the terminal slightly before the handler is installed. Disable
- * canonical mode processing and set the input character time flag to be
- * non-blocking.
- */
- if( tcgetattr(STDIN_FILENO, &term) < 0 ) {
- perror("tcgetattr");
- exit(1);
- }
- old_lflag = term.c_lflag;
- old_vtime = term.c_cc[VTIME];
- term.c_lflag &= ~ICANON;
- term.c_cc[VTIME] = 1;
- /* COMMENT LINE BELOW - see above */
- if( tcsetattr(STDIN_FILENO, TCSANOW, &term) < 0 ) {
- perror("tcsetattr");
- exit(1);
- }
-
- rl_add_defun("change-prompt", change_prompt, CTRL('t'));
- rl_callback_handler_install(get_prompt(), process_line);
-
- while(1) {
- FD_ZERO(&fds);
- FD_SET(fileno(stdin), &fds);
-
- if( select(FD_SETSIZE, &fds, NULL, NULL, NULL) < 0) {
- perror("select");
- exit(1);
- }
-
- if( FD_ISSET(fileno(stdin), &fds) ) {
- rl_callback_read_char();
- }
- }
-}
-
-void
-process_line(char *line)
-{
- if( line == NULL ) {
- fprintf(stderr, "\n", line);
-
- /* reset the old terminal setting before exiting */
- term.c_lflag = old_lflag;
- term.c_cc[VTIME] = old_vtime;
- if( tcsetattr(STDIN_FILENO, TCSANOW, &term) < 0 ) {
- perror("tcsetattr");
- exit(1);
- }
- exit(0);
- }
-
- if( strcmp(line, "sleep") == 0 ) {
- sleep(3);
- } else {
- fprintf(stderr, "|%s|\n", line);
- }
-
- free (line);
-}
-
-int
-change_prompt(void)
-{
- /* toggle the prompt variable */
- prompt = !prompt;
-
- /* save away the current contents of the line */
- strcpy(line_buf, rl_line_buffer);
-
- /* install a new handler which will change the prompt and erase the current line */
- rl_callback_handler_install(get_prompt(), process_line);
-
- /* insert the old text on the new line */
- rl_insert_text(line_buf);
-
- /* redraw the current line - this is an undocumented function. It invokes the
- * redraw-current-line command.
- */
- rl_refresh_line(0, 0);
-}
-
-char *
-get_prompt(void)
-{
- /* The prompts can even be different lengths! */
- sprintf(prompt_buf, "%s",
- prompt ? "Hit ctrl-t to toggle prompt> " : "Pretty cool huh?> ");
- return prompt_buf;
-}
diff --git a/readline-4.3/examples/fileman.c b/readline-4.3/examples/fileman.c
deleted file mode 100644
index 340eee7..0000000
--- a/readline-4.3/examples/fileman.c
+++ /dev/null
@@ -1,485 +0,0 @@
-/* Copyright (C) 1987-2002 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-/* fileman.c -- A tiny application which demonstrates how to use the
- GNU Readline library. This application interactively allows users
- to manipulate files and their modes. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <sys/types.h>
-#ifdef HAVE_SYS_FILE_H
-# include <sys/file.h>
-#endif
-#include <sys/stat.h>
-
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-
-#include <fcntl.h>
-#include <stdio.h>
-#include <errno.h>
-
-#if defined (HAVE_STRING_H)
-# include <string.h>
-#else /* !HAVE_STRING_H */
-# include <strings.h>
-#endif /* !HAVE_STRING_H */
-
-#ifdef HAVE_STDLIB_H
-# include <stdlib.h>
-#endif
-
-#ifdef READLINE_LIBRARY
-# include "readline.h"
-# include "history.h"
-#else
-# include <readline/readline.h>
-# include <readline/history.h>
-#endif
-
-extern char *xmalloc ();
-
-/* The names of functions that actually do the manipulation. */
-int com_list PARAMS((char *));
-int com_view PARAMS((char *));
-int com_rename PARAMS((char *));
-int com_stat PARAMS((char *));
-int com_pwd PARAMS((char *));
-int com_delete PARAMS((char *));
-int com_help PARAMS((char *));
-int com_cd PARAMS((char *));
-int com_quit PARAMS((char *));
-
-/* A structure which contains information on the commands this program
- can understand. */
-
-typedef struct {
- char *name; /* User printable name of the function. */
- rl_icpfunc_t *func; /* Function to call to do the job. */
- char *doc; /* Documentation for this function. */
-} COMMAND;
-
-COMMAND commands[] = {
- { "cd", com_cd, "Change to directory DIR" },
- { "delete", com_delete, "Delete FILE" },
- { "help", com_help, "Display this text" },
- { "?", com_help, "Synonym for `help'" },
- { "list", com_list, "List files in DIR" },
- { "ls", com_list, "Synonym for `list'" },
- { "pwd", com_pwd, "Print the current working directory" },
- { "quit", com_quit, "Quit using Fileman" },
- { "rename", com_rename, "Rename FILE to NEWNAME" },
- { "stat", com_stat, "Print out statistics on FILE" },
- { "view", com_view, "View the contents of FILE" },
- { (char *)NULL, (rl_icpfunc_t *)NULL, (char *)NULL }
-};
-
-/* Forward declarations. */
-char *stripwhite ();
-COMMAND *find_command ();
-
-/* The name of this program, as taken from argv[0]. */
-char *progname;
-
-/* When non-zero, this global means the user is done using this program. */
-int done;
-
-char *
-dupstr (s)
- char *s;
-{
- char *r;
-
- r = xmalloc (strlen (s) + 1);
- strcpy (r, s);
- return (r);
-}
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- char *line, *s;
-
- progname = argv[0];
-
- initialize_readline (); /* Bind our completer. */
-
- /* Loop reading and executing lines until the user quits. */
- for ( ; done == 0; )
- {
- line = readline ("FileMan: ");
-
- if (!line)
- break;
-
- /* Remove leading and trailing whitespace from the line.
- Then, if there is anything left, add it to the history list
- and execute it. */
- s = stripwhite (line);
-
- if (*s)
- {
- add_history (s);
- execute_line (s);
- }
-
- free (line);
- }
- exit (0);
-}
-
-/* Execute a command line. */
-int
-execute_line (line)
- char *line;
-{
- register int i;
- COMMAND *command;
- char *word;
-
- /* Isolate the command word. */
- i = 0;
- while (line[i] && whitespace (line[i]))
- i++;
- word = line + i;
-
- while (line[i] && !whitespace (line[i]))
- i++;
-
- if (line[i])
- line[i++] = '\0';
-
- command = find_command (word);
-
- if (!command)
- {
- fprintf (stderr, "%s: No such command for FileMan.\n", word);
- return (-1);
- }
-
- /* Get argument to command, if any. */
- while (whitespace (line[i]))
- i++;
-
- word = line + i;
-
- /* Call the function. */
- return ((*(command->func)) (word));
-}
-
-/* Look up NAME as the name of a command, and return a pointer to that
- command. Return a NULL pointer if NAME isn't a command name. */
-COMMAND *
-find_command (name)
- char *name;
-{
- register int i;
-
- for (i = 0; commands[i].name; i++)
- if (strcmp (name, commands[i].name) == 0)
- return (&commands[i]);
-
- return ((COMMAND *)NULL);
-}
-
-/* Strip whitespace from the start and end of STRING. Return a pointer
- into STRING. */
-char *
-stripwhite (string)
- char *string;
-{
- register char *s, *t;
-
- for (s = string; whitespace (*s); s++)
- ;
-
- if (*s == 0)
- return (s);
-
- t = s + strlen (s) - 1;
- while (t > s && whitespace (*t))
- t--;
- *++t = '\0';
-
- return s;
-}
-
-/* **************************************************************** */
-/* */
-/* Interface to Readline Completion */
-/* */
-/* **************************************************************** */
-
-char *command_generator PARAMS((const char *, int));
-char **fileman_completion PARAMS((const char *, int, int));
-
-/* Tell the GNU Readline library how to complete. We want to try to complete
- on command names if this is the first word in the line, or on filenames
- if not. */
-initialize_readline ()
-{
- /* Allow conditional parsing of the ~/.inputrc file. */
- rl_readline_name = "FileMan";
-
- /* Tell the completer that we want a crack first. */
- rl_attempted_completion_function = fileman_completion;
-}
-
-/* Attempt to complete on the contents of TEXT. START and END bound the
- region of rl_line_buffer that contains the word to complete. TEXT is
- the word to complete. We can use the entire contents of rl_line_buffer
- in case we want to do some simple parsing. Return the array of matches,
- or NULL if there aren't any. */
-char **
-fileman_completion (text, start, end)
- const char *text;
- int start, end;
-{
- char **matches;
-
- matches = (char **)NULL;
-
- /* If this word is at the start of the line, then it is a command
- to complete. Otherwise it is the name of a file in the current
- directory. */
- if (start == 0)
- matches = rl_completion_matches (text, command_generator);
-
- return (matches);
-}
-
-/* Generator function for command completion. STATE lets us know whether
- to start from scratch; without any state (i.e. STATE == 0), then we
- start at the top of the list. */
-char *
-command_generator (text, state)
- const char *text;
- int state;
-{
- static int list_index, len;
- char *name;
-
- /* If this is a new word to complete, initialize now. This includes
- saving the length of TEXT for efficiency, and initializing the index
- variable to 0. */
- if (!state)
- {
- list_index = 0;
- len = strlen (text);
- }
-
- /* Return the next name which partially matches from the command list. */
- while (name = commands[list_index].name)
- {
- list_index++;
-
- if (strncmp (name, text, len) == 0)
- return (dupstr(name));
- }
-
- /* If no names matched, then return NULL. */
- return ((char *)NULL);
-}
-
-/* **************************************************************** */
-/* */
-/* FileMan Commands */
-/* */
-/* **************************************************************** */
-
-/* String to pass to system (). This is for the LIST, VIEW and RENAME
- commands. */
-static char syscom[1024];
-
-/* List the file(s) named in arg. */
-com_list (arg)
- char *arg;
-{
- if (!arg)
- arg = "";
-
- sprintf (syscom, "ls -FClg %s", arg);
- return (system (syscom));
-}
-
-com_view (arg)
- char *arg;
-{
- if (!valid_argument ("view", arg))
- return 1;
-
-#if defined (__MSDOS__)
- /* more.com doesn't grok slashes in pathnames */
- sprintf (syscom, "less %s", arg);
-#else
- sprintf (syscom, "more %s", arg);
-#endif
- return (system (syscom));
-}
-
-com_rename (arg)
- char *arg;
-{
- too_dangerous ("rename");
- return (1);
-}
-
-com_stat (arg)
- char *arg;
-{
- struct stat finfo;
-
- if (!valid_argument ("stat", arg))
- return (1);
-
- if (stat (arg, &finfo) == -1)
- {
- perror (arg);
- return (1);
- }
-
- printf ("Statistics for `%s':\n", arg);
-
- printf ("%s has %d link%s, and is %d byte%s in length.\n",
- arg,
- finfo.st_nlink,
- (finfo.st_nlink == 1) ? "" : "s",
- finfo.st_size,
- (finfo.st_size == 1) ? "" : "s");
- printf ("Inode Last Change at: %s", ctime (&finfo.st_ctime));
- printf (" Last access at: %s", ctime (&finfo.st_atime));
- printf (" Last modified at: %s", ctime (&finfo.st_mtime));
- return (0);
-}
-
-com_delete (arg)
- char *arg;
-{
- too_dangerous ("delete");
- return (1);
-}
-
-/* Print out help for ARG, or for all of the commands if ARG is
- not present. */
-com_help (arg)
- char *arg;
-{
- register int i;
- int printed = 0;
-
- for (i = 0; commands[i].name; i++)
- {
- if (!*arg || (strcmp (arg, commands[i].name) == 0))
- {
- printf ("%s\t\t%s.\n", commands[i].name, commands[i].doc);
- printed++;
- }
- }
-
- if (!printed)
- {
- printf ("No commands match `%s'. Possibilties are:\n", arg);
-
- for (i = 0; commands[i].name; i++)
- {
- /* Print in six columns. */
- if (printed == 6)
- {
- printed = 0;
- printf ("\n");
- }
-
- printf ("%s\t", commands[i].name);
- printed++;
- }
-
- if (printed)
- printf ("\n");
- }
- return (0);
-}
-
-/* Change to the directory ARG. */
-com_cd (arg)
- char *arg;
-{
- if (chdir (arg) == -1)
- {
- perror (arg);
- return 1;
- }
-
- com_pwd ("");
- return (0);
-}
-
-/* Print out the current working directory. */
-com_pwd (ignore)
- char *ignore;
-{
- char dir[1024], *s;
-
- s = getcwd (dir, sizeof(dir) - 1);
- if (s == 0)
- {
- printf ("Error getting pwd: %s\n", dir);
- return 1;
- }
-
- printf ("Current directory is %s\n", dir);
- return 0;
-}
-
-/* The user wishes to quit using this program. Just set DONE non-zero. */
-com_quit (arg)
- char *arg;
-{
- done = 1;
- return (0);
-}
-
-/* Function which tells you that you can't do this. */
-too_dangerous (caller)
- char *caller;
-{
- fprintf (stderr,
- "%s: Too dangerous for me to distribute. Write it yourself.\n",
- caller);
-}
-
-/* Return non-zero if ARG is a valid argument for CALLER, else print
- an error message and return zero. */
-int
-valid_argument (caller, arg)
- char *caller, *arg;
-{
- if (!arg || !*arg)
- {
- fprintf (stderr, "%s: Argument required.\n", caller);
- return (0);
- }
-
- return (1);
-}
diff --git a/readline-4.3/examples/histexamp.c b/readline-4.3/examples/histexamp.c
deleted file mode 100644
index 45651df..0000000
--- a/readline-4.3/examples/histexamp.c
+++ /dev/null
@@ -1,112 +0,0 @@
-/* Copyright (C) 1987-2002 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#include <stdio.h>
-
-#ifdef READLINE_LIBRARY
-# include "history.h"
-#else
-# include <readline/history.h>
-#endif
-
-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;
-
- using_history ();
-
- 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");
- }
- }
- }
-}
diff --git a/readline-4.3/examples/manexamp.c b/readline-4.3/examples/manexamp.c
deleted file mode 100644
index 9c6cf2c..0000000
--- a/readline-4.3/examples/manexamp.c
+++ /dev/null
@@ -1,112 +0,0 @@
-/* manexamp.c -- The examples which appear in the documentation are here. */
-
-/* Copyright (C) 1987-2002 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#include <stdio.h>
-#include <readline/readline.h>
-
-/* **************************************************************** */
-/* */
-/* How to Emulate gets () */
-/* */
-/* **************************************************************** */
-
-/* A static variable for holding the line. */
-static char *line_read = (char *)NULL;
-
-/* Read a string, and return a pointer to it. Returns NULL on EOF. */
-char *
-rl_gets ()
-{
- /* If the buffer has already been allocated, return the memory
- to the free pool. */
- if (line_read)
- {
- free (line_read);
- line_read = (char *)NULL;
- }
-
- /* Get a line from the user. */
- line_read = readline ("");
-
- /* If the line has any text in it, save it on the history. */
- if (line_read && *line_read)
- add_history (line_read);
-
- return (line_read);
-}
-
-/* **************************************************************** */
-/* */
-/* Writing a Function to be Called by Readline. */
-/* */
-/* **************************************************************** */
-
-/* Invert the case of the COUNT following characters. */
-invert_case_line (count, key)
- int count, key;
-{
- register int start, end;
-
- start = rl_point;
-
- if (count < 0)
- {
- direction = -1;
- count = -count;
- }
- else
- direction = 1;
-
- /* Find the end of the range to modify. */
- end = start + (count * direction);
-
- /* Force it to be within range. */
- if (end > rl_end)
- end = rl_end;
- else if (end < 0)
- end = -1;
-
- if (start > end)
- {
- int temp = start;
- start = end;
- end = temp;
- }
-
- if (start == end)
- return;
-
- /* Tell readline that we are modifying the line, so save the undo
- information. */
- rl_modifying (start, end);
-
- for (; start != end; start += direction)
- {
- if (_rl_uppercase_p (rl_line_buffer[start]))
- rl_line_buffer[start] = _rl_to_lower (rl_line_buffer[start]);
- else if (_rl_lowercase_p (rl_line_buffer[start]))
- rl_line_buffer[start] = _rl_to_upper (rl_line_buffer[start]);
- }
-
- /* Move point to on top of the last character changed. */
- rl_point = end - direction;
-}
diff --git a/readline-4.3/examples/readlinebuf.h b/readline-4.3/examples/readlinebuf.h
deleted file mode 100644
index 91ef4d6..0000000
--- a/readline-4.3/examples/readlinebuf.h
+++ /dev/null
@@ -1,139 +0,0 @@
-/*******************************************************************************
- * $Revision$
- * $Date$
- * $Author$
- *
- * Contents: A streambuf which uses the GNU readline library for line I/O
- * (c) 2001 by Dimitris Vyzovitis [vyzo@media.mit.edu]
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the Free
- * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- *
- ******************************************************************************/
-
-#ifndef _READLINEBUF_H_
-#define _READLINEBUF_H_
-
-#include <iostream>
-#include <cstring>
-#include <cassert>
-#include <cstdlib>
-#include <cstdio>
-
-#include <readline/readline.h>
-#include <readline/history.h>
-
-#if (defined __GNUC__) && (__GNUC__ < 3)
-#include <streambuf.h>
-#else
-#include <streambuf>
-using std::streamsize;
-using std::streambuf;
-#endif
-
-class readlinebuf : public streambuf {
-public:
-#if (defined __GNUC__) && (__GNUC__ < 3)
- typedef char char_type;
- typedef int int_type;
- typedef streampos pos_type;
- typedef streamoff off_type;
-#endif
- static const int_type eof = EOF; // this is -1
- static const int_type not_eof = 0;
-
-private:
- const char* prompt_;
- bool history_;
- char* line_;
- int low_;
- int high_;
-
-protected:
-
- virtual int_type showmanyc() const { return high_ - low_; }
-
- virtual streamsize xsgetn( char_type* buf, streamsize n ) {
- int rd = n > (high_ - low_)? (high_ - low_) : n;
- memcpy( buf, line_, rd );
- low_ += rd;
-
- if ( rd < n ) {
- low_ = high_ = 0;
- free( line_ ); // free( NULL ) is a noop
- line_ = readline( prompt_ );
- if ( line_ ) {
- high_ = strlen( line_ );
- if ( history_ && high_ ) add_history( line_ );
- rd += xsgetn( buf + rd, n - rd );
- }
- }
-
- return rd;
- }
-
- virtual int_type underflow() {
- if ( high_ == low_ ) {
- low_ = high_ = 0;
- free( line_ ); // free( NULL ) is a noop
- line_ = readline( prompt_ );
- if ( line_ ) {
- high_ = strlen( line_ );
- if ( history_ && high_ ) add_history( line_ );
- }
- }
-
- if ( low_ < high_ ) return line_[low_];
- else return eof;
- }
-
- virtual int_type uflow() {
- int_type c = underflow();
- if ( c != eof ) ++low_;
- return c;
- }
-
- virtual int_type pbackfail( int_type c = eof ) {
- if ( low_ > 0 ) --low_;
- else if ( c != eof ) {
- if ( high_ > 0 ) {
- char* nl = (char*)realloc( line_, high_ + 1 );
- if ( nl ) {
- line_ = (char*)memcpy( nl + 1, line_, high_ );
- high_ += 1;
- line_[0] = char( c );
- } else return eof;
- } else {
- assert( !line_ );
- line_ = (char*)malloc( sizeof( char ) );
- *line_ = char( c );
- high_ = 1;
- }
- } else return eof;
-
- return not_eof;
- }
-
-public:
- readlinebuf( const char* prompt = NULL, bool history = true )
- : prompt_( prompt ), history_( history ),
- line_( NULL ), low_( 0 ), high_( 0 ) {
- setbuf( 0, 0 );
- }
-
-
-};
-
-#endif
diff --git a/readline-4.3/examples/rl.c b/readline-4.3/examples/rl.c
deleted file mode 100644
index d260489..0000000
--- a/readline-4.3/examples/rl.c
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * rl - command-line interface to read a line from the standard input
- * (or another fd) using readline.
- *
- * usage: rl [-p prompt] [-u unit] [-d default] [-n nchars]
- */
-
-/* Copyright (C) 1987-2002 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <stdio.h>
-#include <sys/types.h>
-#include "posixstat.h"
-
-#if defined (READLINE_LIBRARY)
-# include "readline.h"
-# include "history.h"
-#else
-# include <readline/readline.h>
-# include <readline/history.h>
-#endif
-
-extern int optind;
-extern char *optarg;
-
-#if !defined (strchr) && !defined (__STDC__)
-extern char *strrchr();
-#endif
-
-static char *progname;
-static char *deftext;
-
-static int
-set_deftext ()
-{
- if (deftext)
- {
- rl_insert_text (deftext);
- deftext = (char *)NULL;
- rl_startup_hook = (rl_hook_func_t *)NULL;
- }
- return 0;
-}
-
-static void
-usage()
-{
- fprintf (stderr, "%s: usage: %s [-p prompt] [-u unit] [-d default] [-n nchars]\n",
- progname, progname);
-}
-
-int
-main (argc, argv)
- int argc;
- char **argv;
-{
- char *temp, *prompt;
- struct stat sb;
- int opt, fd, nch;
- FILE *ifp;
-
- progname = strrchr(argv[0], '/');
- if (progname == 0)
- progname = argv[0];
- else
- progname++;
-
- /* defaults */
- prompt = "readline$ ";
- fd = nch = 0;
- deftext = (char *)0;
-
- while ((opt = getopt(argc, argv, "p:u:d:n:")) != EOF)
- {
- switch (opt)
- {
- case 'p':
- prompt = optarg;
- break;
- case 'u':
- fd = atoi(optarg);
- if (fd < 0)
- {
- fprintf (stderr, "%s: bad file descriptor `%s'\n", progname, optarg);
- exit (2);
- }
- break;
- case 'd':
- deftext = optarg;
- break;
- case 'n':
- nch = atoi(optarg);
- if (nch < 0)
- {
- fprintf (stderr, "%s: bad value for -n: `%s'\n", progname, optarg);
- exit (2);
- }
- break;
- default:
- usage ();
- exit (2);
- }
- }
-
- if (fd != 0)
- {
- if (fstat (fd, &sb) < 0)
- {
- fprintf (stderr, "%s: %d: bad file descriptor\n", progname, fd);
- exit (1);
- }
- ifp = fdopen (fd, "r");
- rl_instream = ifp;
- }
-
- if (deftext && *deftext)
- rl_startup_hook = set_deftext;
-
- if (nch > 0)
- rl_num_chars_to_read = nch;
-
- temp = readline (prompt);
-
- /* Test for EOF. */
- if (temp == 0)
- exit (1);
-
- printf ("%s\n", temp);
- exit (0);
-}
diff --git a/readline-4.3/examples/rlcat.c b/readline-4.3/examples/rlcat.c
deleted file mode 100644
index 176b9f4..0000000
--- a/readline-4.3/examples/rlcat.c
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * rlcat - cat(1) using readline
- *
- * usage: rlcat
- */
-
-/* Copyright (C) 1987-2002 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-
-#include <sys/types.h>
-#include "posixstat.h"
-
-#include <stdio.h>
-#include <ctype.h>
-#include <string.h>
-#include <errno.h>
-
-#ifndef errno
-extern int errno;
-#endif
-
-#if defined (READLINE_LIBRARY)
-# include "readline.h"
-# include "history.h"
-#else
-# include <readline/readline.h>
-# include <readline/history.h>
-#endif
-
-extern int optind;
-extern char *optarg;
-
-static int stdcat();
-
-static char *progname;
-static int vflag;
-
-static void
-usage()
-{
- fprintf (stderr, "%s: usage: %s [-vEVN] [filename]\n", progname, progname);
-}
-
-int
-main (argc, argv)
- int argc;
- char **argv;
-{
- char *temp;
- int opt, Vflag, Nflag;
-
- progname = strrchr(argv[0], '/');
- if (progname == 0)
- progname = argv[0];
- else
- progname++;
-
- vflag = Vflag = Nflag = 0;
- while ((opt = getopt(argc, argv, "vEVN")) != EOF)
- {
- switch (opt)
- {
- case 'v':
- vflag = 1;
- break;
- case 'V':
- Vflag = 1;
- break;
- case 'E':
- Vflag = 0;
- break;
- case 'N':
- Nflag = 1;
- break;
- default:
- usage ();
- exit (2);
- }
- }
-
- argc -= optind;
- argv += optind;
-
- if (isatty(0) == 0 || argc || Nflag)
- return stdcat(argc, argv);
-
- rl_variable_bind ("editing-mode", Vflag ? "vi" : "emacs");
- while (temp = readline (""))
- {
- if (*temp)
- add_history (temp);
- printf ("%s\n", temp);
- }
-
- return (ferror (stdout));
-}
-
-static int
-fcopy(fp)
- FILE *fp;
-{
- int c;
- char *x;
-
- while ((c = getc(fp)) != EOF)
- {
- if (vflag && isascii ((unsigned char)c) && isprint((unsigned char)c) == 0)
- {
- x = rl_untranslate_keyseq (c);
- if (fputs (x, stdout) != 0)
- return 1;
- }
- else if (putchar (c) == EOF)
- return 1;
- }
- return (ferror (stdout));
-}
-
-int
-stdcat (argc, argv)
- int argc;
- char **argv;
-{
- int i, fd, r;
- char *s;
- FILE *fp;
-
- if (argc == 0)
- return (fcopy(stdin));
-
- for (i = 0, r = 1; i < argc; i++)
- {
- if (*argv[i] == '-' && argv[i][1] == 0)
- fp = stdin;
- else
- {
- fp = fopen (argv[i], "r");
- if (fp == 0)
- {
- fprintf (stderr, "%s: %s: cannot open: %s\n", progname, argv[i], strerror(errno));
- continue;
- }
- }
- r = fcopy (fp);
- if (fp != stdin)
- fclose(fp);
- }
- return r;
-}
diff --git a/readline-4.3/examples/rlfe.c b/readline-4.3/examples/rlfe.c
deleted file mode 100644
index d634d7c..0000000
--- a/readline-4.3/examples/rlfe.c
+++ /dev/null
@@ -1,1042 +0,0 @@
-/* A front-end using readline to "cook" input lines for Kawa.
- *
- * Copyright (C) 1999 Per Bothner
- *
- * This front-end program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as published
- * by the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * Some code from Johnson & Troan: "Linux Application Development"
- * (Addison-Wesley, 1998) was used directly or for inspiration.
- */
-
-/* PROBLEMS/TODO:
- *
- * Only tested under Linux; needs to be ported.
- *
- * When running mc -c under the Linux console, mc does not recognize
- * mouse clicks, which mc does when not running under fep.
- *
- * Pasting selected text containing tabs is like hitting the tab character,
- * which invokes readline completion. We don't want this. I don't know
- * if this is fixable without integrating fep into a terminal emulator.
- *
- * Echo suppression is a kludge, but can only be avoided with better kernel
- * support: We need a tty mode to disable "real" echoing, while still
- * letting the inferior think its tty driver to doing echoing.
- * Stevens's book claims SCR$ and BSD4.3+ have TIOCREMOTE.
- *
- * The latest readline may have some hooks we can use to avoid having
- * to back up the prompt.
- *
- * Desirable readline feature: When in cooked no-echo mode (e.g. password),
- * echo characters are they are types with '*', but remove them when done.
- *
- * A synchronous output while we're editing an input line should be
- * inserted in the output view *before* the input line, so that the
- * lines being edited (with the prompt) float at the end of the input.
- *
- * A "page mode" option to emulate more/less behavior: At each page of
- * output, pause for a user command. This required parsing the output
- * to keep track of line lengths. It also requires remembering the
- * output, if we want an option to scroll back, which suggests that
- * this should be integrated with a terminal emulator like xterm.
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <stdio.h>
-#include <fcntl.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <signal.h>
-#include <netdb.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <grp.h>
-#include <string.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <sys/ioctl.h>
-#include <termios.h>
-#include <limits.h>
-#include <dirent.h>
-
-#ifdef READLINE_LIBRARY
-# include "readline.h"
-# include "history.h"
-#else
-# include <readline/readline.h>
-# include <readline/history.h>
-#endif
-
-#ifndef COMMAND
-#define COMMAND "/bin/sh"
-#endif
-#ifndef COMMAND_ARGS
-#define COMMAND_ARGS COMMAND
-#endif
-
-#ifndef HAVE_MEMMOVE
-#ifndef memmove
-# if __GNUC__ > 1
-# define memmove(d, s, n) __builtin_memcpy(d, s, n)
-# else
-# define memmove(d, s, n) memcpy(d, s, n)
-# endif
-#else
-# define memmove(d, s, n) memcpy(d, s, n)
-#endif
-#endif
-
-#define APPLICATION_NAME "Rlfe"
-
-#ifndef errno
-extern int errno;
-#endif
-
-extern int optind;
-extern char *optarg;
-
-static char *progname;
-static char *progversion;
-
-static int in_from_inferior_fd;
-static int out_to_inferior_fd;
-
-/* Unfortunately, we cannot safely display echo from the inferior process.
- The reason is that the echo bit in the pty is "owned" by the inferior,
- and if we try to turn it off, we could confuse the inferior.
- Thus, when echoing, we get echo twice: First readline echoes while
- we're actually editing. Then we send the line to the inferior, and the
- terminal driver send back an extra echo.
- The work-around is to remember the input lines, and when we see that
- line come back, we supress the output.
- A better solution (supposedly available on SVR4) would be a smarter
- terminal driver, with more flags ... */
-#define ECHO_SUPPRESS_MAX 1024
-char echo_suppress_buffer[ECHO_SUPPRESS_MAX];
-int echo_suppress_start = 0;
-int echo_suppress_limit = 0;
-
-/* #define DEBUG */
-
-static FILE *logfile = NULL;
-
-#ifdef DEBUG
-FILE *debugfile = NULL;
-#define DPRINT0(FMT) (fprintf(debugfile, FMT), fflush(debugfile))
-#define DPRINT1(FMT, V1) (fprintf(debugfile, FMT, V1), fflush(debugfile))
-#define DPRINT2(FMT, V1, V2) (fprintf(debugfile, FMT, V1, V2), fflush(debugfile))
-#else
-#define DPRINT0(FMT) /* Do nothing */
-#define DPRINT1(FMT, V1) /* Do nothing */
-#define DPRINT2(FMT, V1, V2) /* Do nothing */
-#endif
-
-struct termios orig_term;
-
-static int rlfe_directory_completion_hook __P((char **));
-static int rlfe_directory_rewrite_hook __P((char **));
-static char *rlfe_filename_completion_function __P((const char *, int));
-
-/* Pid of child process. */
-static pid_t child = -1;
-
-static void
-sig_child (int signo)
-{
- int status;
- wait (&status);
- DPRINT0 ("(Child process died.)\n");
- tcsetattr(STDIN_FILENO, TCSANOW, &orig_term);
- exit (0);
-}
-
-volatile int propagate_sigwinch = 0;
-
-/* sigwinch_handler
- * propagate window size changes from input file descriptor to
- * master side of pty.
- */
-void sigwinch_handler(int signal) {
- propagate_sigwinch = 1;
-}
-
-/* get_master_pty() takes a double-indirect character pointer in which
- * to put a slave name, and returns an integer file descriptor.
- * If it returns < 0, an error has occurred.
- * Otherwise, it has returned the master pty file descriptor, and fills
- * in *name with the name of the corresponding slave pty.
- * Once the slave pty has been opened, you are responsible to free *name.
- */
-
-int get_master_pty(char **name) {
- int i, j;
- /* default to returning error */
- int master = -1;
-
- /* create a dummy name to fill in */
- *name = strdup("/dev/ptyXX");
-
- /* search for an unused pty */
- for (i=0; i<16 && master <= 0; i++) {
- for (j=0; j<16 && master <= 0; j++) {
- (*name)[5] = 'p';
- (*name)[8] = "pqrstuvwxyzPQRST"[i];
- (*name)[9] = "0123456789abcdef"[j];
- /* open the master pty */
- if ((master = open(*name, O_RDWR)) < 0) {
- if (errno == ENOENT) {
- /* we are out of pty devices */
- free (*name);
- return (master);
- }
- }
- else {
- /* By substituting a letter, we change the master pty
- * name into the slave pty name.
- */
- (*name)[5] = 't';
- if (access(*name, R_OK|W_OK) != 0)
- {
- close(master);
- master = -1;
- }
- }
- }
- }
- if ((master < 0) && (i == 16) && (j == 16)) {
- /* must have tried every pty unsuccessfully */
- free (*name);
- return (master);
- }
-
- (*name)[5] = 't';
-
- return (master);
-}
-
-/* get_slave_pty() returns an integer file descriptor.
- * If it returns < 0, an error has occurred.
- * Otherwise, it has returned the slave file descriptor.
- */
-
-int get_slave_pty(char *name) {
- struct group *gptr;
- gid_t gid;
- int slave = -1;
-
- /* chown/chmod the corresponding pty, if possible.
- * This will only work if the process has root permissions.
- * Alternatively, write and exec a small setuid program that
- * does just this.
- */
- if ((gptr = getgrnam("tty")) != 0) {
- gid = gptr->gr_gid;
- } else {
- /* if the tty group does not exist, don't change the
- * group on the slave pty, only the owner
- */
- gid = -1;
- }
-
- /* Note that we do not check for errors here. If this is code
- * where these actions are critical, check for errors!
- */
- chown(name, getuid(), gid);
- /* This code only makes the slave read/writeable for the user.
- * If this is for an interactive shell that will want to
- * receive "write" and "wall" messages, OR S_IWGRP into the
- * second argument below.
- */
- chmod(name, S_IRUSR|S_IWUSR);
-
- /* open the corresponding slave pty */
- slave = open(name, O_RDWR);
- return (slave);
-}
-
-/* Certain special characters, such as ctrl/C, we want to pass directly
- to the inferior, rather than letting readline handle them. */
-
-static char special_chars[20];
-static int special_chars_count;
-
-static void
-add_special_char(int ch)
-{
- if (ch != 0)
- special_chars[special_chars_count++] = ch;
-}
-
-static int eof_char;
-
-static int
-is_special_char(int ch)
-{
- int i;
-#if 0
- if (ch == eof_char && rl_point == rl_end)
- return 1;
-#endif
- for (i = special_chars_count; --i >= 0; )
- if (special_chars[i] == ch)
- return 1;
- return 0;
-}
-
-static char buf[1024];
-/* buf[0 .. buf_count-1] is the what has been emitted on the current line.
- It is used as the readline prompt. */
-static int buf_count = 0;
-
-int num_keys = 0;
-
-static void
-null_prep_terminal (int meta)
-{
-}
-
-static void
-null_deprep_terminal ()
-{
-}
-
-char pending_special_char;
-
-static void
-line_handler (char *line)
-{
- if (line == NULL)
- {
- char buf[1];
- DPRINT0("saw eof!\n");
- buf[0] = '\004'; /* ctrl/d */
- write (out_to_inferior_fd, buf, 1);
- }
- else
- {
- static char enter[] = "\r";
- /* Send line to inferior: */
- int length = strlen (line);
- if (length > ECHO_SUPPRESS_MAX-2)
- {
- echo_suppress_start = 0;
- echo_suppress_limit = 0;
- }
- else
- {
- if (echo_suppress_limit + length > ECHO_SUPPRESS_MAX - 2)
- {
- if (echo_suppress_limit - echo_suppress_start + length
- <= ECHO_SUPPRESS_MAX - 2)
- {
- memmove (echo_suppress_buffer,
- echo_suppress_buffer + echo_suppress_start,
- echo_suppress_limit - echo_suppress_start);
- echo_suppress_limit -= echo_suppress_start;
- echo_suppress_start = 0;
- }
- else
- {
- echo_suppress_limit = 0;
- }
- echo_suppress_start = 0;
- }
- memcpy (echo_suppress_buffer + echo_suppress_limit,
- line, length);
- echo_suppress_limit += length;
- echo_suppress_buffer[echo_suppress_limit++] = '\r';
- echo_suppress_buffer[echo_suppress_limit++] = '\n';
- }
- write (out_to_inferior_fd, line, length);
- if (pending_special_char == 0)
- {
- write (out_to_inferior_fd, enter, sizeof(enter)-1);
- if (*line)
- add_history (line);
- }
- free (line);
- }
- rl_callback_handler_remove ();
- buf_count = 0;
- num_keys = 0;
- if (pending_special_char != 0)
- {
- write (out_to_inferior_fd, &pending_special_char, 1);
- pending_special_char = 0;
- }
-}
-
-/* Value of rl_getc_function.
- Use this because readline should read from stdin, not rl_instream,
- points to the pty (so readline has monitor its terminal modes). */
-
-int
-my_rl_getc (FILE *dummy)
-{
- int ch = rl_getc (stdin);
- if (is_special_char (ch))
- {
- pending_special_char = ch;
- return '\r';
- }
- return ch;
-}
-
-static void
-usage()
-{
- fprintf (stderr, "%s: usage: %s [-l filename] [-a] [-n appname] [-hv] [command [arguments...]]\n",
- progname, progname);
-}
-
-int
-main(int argc, char** argv)
-{
- char *path;
- int i, append;
- int master;
- char *name, *logfname, *appname;
- int in_from_tty_fd;
- struct sigaction act;
- struct winsize ws;
- struct termios t;
- int maxfd;
- fd_set in_set;
- static char empty_string[1] = "";
- char *prompt = empty_string;
- int ioctl_err = 0;
-
- if ((progname = strrchr (argv[0], '/')) == 0)
- progname = argv[0];
- else
- progname++;
- progversion = RL_LIBRARY_VERSION;
-
- append = 0;
- appname = APPLICATION_NAME;
- logfname = (char *)NULL;
-
- while ((i = getopt (argc, argv, "ahl:n:v")) != EOF)
- {
- switch (i)
- {
- case 'l':
- logfname = optarg;
- break;
- case 'n':
- appname = optarg;
- break;
- case 'a':
- append = 1;
- break;
- case 'h':
- usage ();
- exit (0);
- case 'v':
- fprintf (stderr, "%s version %s\n", progname, progversion);
- exit (0);
- default:
- usage ();
- exit (2);
- }
- }
-
- argc -= optind;
- argv += optind;
-
- if (logfname)
- {
- logfile = fopen (logfname, append ? "a" : "w");
- if (logfile == 0)
- fprintf (stderr, "%s: warning: could not open log file %s: %s\n",
- progname, logfname, strerror (errno));
- }
-
- rl_readline_name = appname;
-
-#ifdef DEBUG
- debugfile = fopen("LOG", "w");
-#endif
-
- if ((master = get_master_pty(&name)) < 0)
- {
- perror("ptypair: could not open master pty");
- exit(1);
- }
-
- DPRINT1("pty name: '%s'\n", name);
-
- /* set up SIGWINCH handler */
- act.sa_handler = sigwinch_handler;
- sigemptyset(&(act.sa_mask));
- act.sa_flags = 0;
- if (sigaction(SIGWINCH, &act, NULL) < 0)
- {
- perror("ptypair: could not handle SIGWINCH ");
- exit(1);
- }
-
- if (ioctl(STDIN_FILENO, TIOCGWINSZ, &ws) < 0)
- {
- perror("ptypair: could not get window size");
- exit(1);
- }
-
- if ((child = fork()) < 0)
- {
- perror("cannot fork");
- exit(1);
- }
-
- if (child == 0)
- {
- int slave; /* file descriptor for slave pty */
-
- /* We are in the child process */
- close(master);
-
-#ifdef TIOCSCTTY
- if ((slave = get_slave_pty(name)) < 0)
- {
- perror("ptypair: could not open slave pty");
- exit(1);
- }
- free(name);
-#endif
-
- /* We need to make this process a session group leader, because
- * it is on a new PTY, and things like job control simply will
- * not work correctly unless there is a session group leader
- * and process group leader (which a session group leader
- * automatically is). This also disassociates us from our old
- * controlling tty.
- */
- if (setsid() < 0)
- {
- perror("could not set session leader");
- }
-
- /* Tie us to our new controlling tty. */
-#ifdef TIOCSCTTY
- if (ioctl(slave, TIOCSCTTY, NULL))
- {
- perror("could not set new controlling tty");
- }
-#else
- if ((slave = get_slave_pty(name)) < 0)
- {
- perror("ptypair: could not open slave pty");
- exit(1);
- }
- free(name);
-#endif
-
- /* make slave pty be standard in, out, and error */
- dup2(slave, STDIN_FILENO);
- dup2(slave, STDOUT_FILENO);
- dup2(slave, STDERR_FILENO);
-
- /* at this point the slave pty should be standard input */
- if (slave > 2)
- {
- close(slave);
- }
-
- /* Try to restore window size; failure isn't critical */
- if (ioctl(STDOUT_FILENO, TIOCSWINSZ, &ws) < 0)
- {
- perror("could not restore window size");
- }
-
- /* now start the shell */
- {
- static char* command_args[] = { COMMAND_ARGS, NULL };
- if (argc < 1)
- execvp(COMMAND, command_args);
- else
- execvp(argv[0], &argv[0]);
- }
-
- /* should never be reached */
- exit(1);
- }
-
- /* parent */
- signal (SIGCHLD, sig_child);
- free(name);
-
- /* Note that we only set termios settings for standard input;
- * the master side of a pty is NOT a tty.
- */
- tcgetattr(STDIN_FILENO, &orig_term);
-
- t = orig_term;
- eof_char = t.c_cc[VEOF];
- /* add_special_char(t.c_cc[VEOF]);*/
- add_special_char(t.c_cc[VINTR]);
- add_special_char(t.c_cc[VQUIT]);
- add_special_char(t.c_cc[VSUSP]);
-#if defined (VDISCARD)
- add_special_char(t.c_cc[VDISCARD]);
-#endif
-
-#if 0
- t.c_lflag |= (ICANON | ISIG | ECHO | ECHOCTL | ECHOE | \
- ECHOK | ECHOKE | ECHONL | ECHOPRT );
-#else
- t.c_lflag &= ~(ICANON | ISIG | ECHO | ECHOCTL | ECHOE | \
- ECHOK | ECHOKE | ECHONL | ECHOPRT );
-#endif
- t.c_iflag |= IGNBRK;
- t.c_cc[VMIN] = 1;
- t.c_cc[VTIME] = 0;
- tcsetattr(STDIN_FILENO, TCSANOW, &t);
- in_from_inferior_fd = master;
- out_to_inferior_fd = master;
- rl_instream = fdopen (master, "r");
- rl_getc_function = my_rl_getc;
-
- rl_prep_term_function = null_prep_terminal;
- rl_deprep_term_function = null_deprep_terminal;
- rl_callback_handler_install (prompt, line_handler);
-
-#if 1
- rl_directory_completion_hook = rlfe_directory_completion_hook;
- rl_completion_entry_function = rlfe_filename_completion_function;
-#else
- rl_directory_rewrite_hook = rlfe_directory_rewrite_hook;
-#endif
-
- in_from_tty_fd = STDIN_FILENO;
- FD_ZERO (&in_set);
- maxfd = in_from_inferior_fd > in_from_tty_fd ? in_from_inferior_fd
- : in_from_tty_fd;
- for (;;)
- {
- int num;
- FD_SET (in_from_inferior_fd, &in_set);
- FD_SET (in_from_tty_fd, &in_set);
-
- num = select(maxfd+1, &in_set, NULL, NULL, NULL);
-
- if (propagate_sigwinch)
- {
- struct winsize ws;
- if (ioctl (STDIN_FILENO, TIOCGWINSZ, &ws) >= 0)
- {
- ioctl (master, TIOCSWINSZ, &ws);
- }
- propagate_sigwinch = 0;
- continue;
- }
-
- if (num <= 0)
- {
- perror ("select");
- exit (-1);
- }
- if (FD_ISSET (in_from_tty_fd, &in_set))
- {
- extern int readline_echoing_p;
- struct termios term_master;
- int do_canon = 1;
- int ioctl_ret;
-
- DPRINT1("[tty avail num_keys:%d]\n", num_keys);
-
- /* If we can't get tty modes for the master side of the pty, we
- can't handle non-canonical-mode programs. Always assume the
- master is in canonical echo mode if we can't tell. */
- ioctl_ret = tcgetattr(master, &term_master);
-
- if (ioctl_ret >= 0)
- {
- DPRINT2 ("echo:%d, canon:%d\n",
- (term_master.c_lflag & ECHO) != 0,
- (term_master.c_lflag & ICANON) != 0);
- do_canon = (term_master.c_lflag & ICANON) != 0;
- readline_echoing_p = (term_master.c_lflag & ECHO) != 0;
- }
- else
- {
- if (ioctl_err == 0)
- DPRINT1("tcgetattr on master fd failed: errno = %d\n", errno);
- ioctl_err = 1;
- }
-
- if (do_canon == 0 && num_keys == 0)
- {
- char ch[10];
- int count = read (STDIN_FILENO, ch, sizeof(ch));
- write (out_to_inferior_fd, ch, count);
- }
- else
- {
- if (num_keys == 0)
- {
- int i;
- /* Re-install callback handler for new prompt. */
- if (prompt != empty_string)
- free (prompt);
- prompt = malloc (buf_count + 1);
- if (prompt == NULL)
- prompt = empty_string;
- else
- {
- memcpy (prompt, buf, buf_count);
- prompt[buf_count] = '\0';
- DPRINT1("New prompt '%s'\n", prompt);
-#if 0 /* ifdef HAVE_RL_ALREADY_PROMPTED -- doesn't work */
- rl_already_prompted = buf_count > 0;
-#else
- if (buf_count > 0)
- write (1, "\r", 1);
-#endif
- }
- rl_callback_handler_install (prompt, line_handler);
- }
- num_keys++;
- rl_callback_read_char ();
- }
- }
- else /* input from inferior. */
- {
- int i;
- int count;
- int old_count;
- if (buf_count > (sizeof(buf) >> 2))
- buf_count = 0;
- count = read (in_from_inferior_fd, buf+buf_count,
- sizeof(buf) - buf_count);
- if (count <= 0)
- {
- DPRINT0 ("(Connection closed by foreign host.)\n");
- tcsetattr(STDIN_FILENO, TCSANOW, &orig_term);
- exit (0);
- }
- old_count = buf_count;
-
- /* Do some minimal carriage return translation and backspace
- processing before logging the input line. */
- if (logfile)
- {
-#ifndef __GNUC__
- char *b;
-#else
- char b[count + 1];
-#endif
- int i, j;
-
-#ifndef __GNUC__
- b = malloc (count + 1);
- if (b) {
-#endif
- for (i = 0; i < count; i++)
- b[i] = buf[buf_count + i];
- b[i] = '\0';
- for (i = j = 0; i <= count; i++)
- {
- if (b[i] == '\r')
- {
- if (b[i+1] != '\n')
- b[j++] = '\n';
- }
- else if (b[i] == '\b')
- {
- if (i)
- j--;
- }
- else
- b[j++] = b[i];
- }
- fprintf (logfile, "%s", b);
-
-#ifndef __GNUC__
- free (b);
- }
-#endif
- }
-
- /* Look for any pending echo that we need to suppress. */
- while (echo_suppress_start < echo_suppress_limit
- && count > 0
- && buf[buf_count] == echo_suppress_buffer[echo_suppress_start])
- {
- count--;
- buf_count++;
- echo_suppress_start++;
- }
-
- /* Write to the terminal anything that was not suppressed. */
- if (count > 0)
- write (1, buf + buf_count, count);
-
- /* Finally, look for a prompt candidate.
- * When we get around to going input (from the keyboard),
- * we will consider the prompt to be anything since the last
- * line terminator. So we need to save that text in the
- * initial part of buf. However, anything before the
- * most recent end-of-line is not interesting. */
- buf_count += count;
-#if 1
- for (i = buf_count; --i >= old_count; )
-#else
- for (i = buf_count - 1; i-- >= buf_count - count; )
-#endif
- {
- if (buf[i] == '\n' || buf[i] == '\r')
- {
- i++;
- memmove (buf, buf+i, buf_count - i);
- buf_count -= i;
- break;
- }
- }
- DPRINT2("-> i: %d, buf_count: %d\n", i, buf_count);
- }
- }
-}
-
-/*
- *
- * FILENAME COMPLETION FOR RLFE
- *
- */
-
-#ifndef PATH_MAX
-# define PATH_MAX 1024
-#endif
-
-#define DIRSEP '/'
-#define ISDIRSEP(x) ((x) == '/')
-#define PATHSEP(x) (ISDIRSEP(x) || (x) == 0)
-
-#define DOT_OR_DOTDOT(x) \
- ((x)[0] == '.' && (PATHSEP((x)[1]) || \
- ((x)[1] == '.' && PATHSEP((x)[2]))))
-
-#define FREE(x) if (x) free(x)
-
-#define STRDUP(s, x) do { \
- s = strdup (x);\
- if (s == 0) \
- return ((char *)NULL); \
- } while (0)
-
-static int
-get_inferior_cwd (path, psize)
- char *path;
- size_t psize;
-{
- int n;
- static char procfsbuf[PATH_MAX] = { '\0' };
-
- if (procfsbuf[0] == '\0')
- sprintf (procfsbuf, "/proc/%d/cwd", (int)child);
- n = readlink (procfsbuf, path, psize);
- if (n < 0)
- return n;
- if (n > psize)
- return -1;
- path[n] = '\0';
- return n;
-}
-
-static int
-rlfe_directory_rewrite_hook (dirnamep)
- char **dirnamep;
-{
- char *ldirname, cwd[PATH_MAX], *retdir, *ld;
- int n, ldlen;
-
- ldirname = *dirnamep;
-
- if (*ldirname == '/')
- return 0;
-
- n = get_inferior_cwd (cwd, sizeof(cwd) - 1);
- if (n < 0)
- return 0;
- if (n == 0) /* current directory */
- {
- cwd[0] = '.';
- cwd[1] = '\0';
- n = 1;
- }
-
- /* Minimally canonicalize ldirname by removing leading `./' */
- for (ld = ldirname; *ld; )
- {
- if (ISDIRSEP (ld[0]))
- ld++;
- else if (ld[0] == '.' && PATHSEP(ld[1]))
- ld++;
- else
- break;
- }
- ldlen = (ld && *ld) ? strlen (ld) : 0;
-
- retdir = (char *)malloc (n + ldlen + 3);
- if (retdir == 0)
- return 0;
- if (ldlen)
- sprintf (retdir, "%s/%s", cwd, ld);
- else
- strcpy (retdir, cwd);
- free (ldirname);
-
- *dirnamep = retdir;
-
- DPRINT1("rl_directory_rewrite_hook returns %s\n", retdir);
- return 1;
-}
-
-/* Translate *DIRNAMEP to be relative to the inferior's CWD. Leave a trailing
- slash on the result. */
-static int
-rlfe_directory_completion_hook (dirnamep)
- char **dirnamep;
-{
- char *ldirname, *retdir;
- int n, ldlen;
-
- ldirname = *dirnamep;
-
- if (*ldirname == '/')
- return 0;
-
- n = rlfe_directory_rewrite_hook (dirnamep);
- if (n == 0)
- return 0;
-
- ldirname = *dirnamep;
- ldlen = (ldirname && *ldirname) ? strlen (ldirname) : 0;
-
- if (ldlen == 0 || ldirname[ldlen - 1] != '/')
- {
- retdir = (char *)malloc (ldlen + 3);
- if (retdir == 0)
- return 0;
- if (ldlen)
- strcpy (retdir, ldirname);
- else
- retdir[ldlen++] = '.';
- retdir[ldlen] = '/';
- retdir[ldlen+1] = '\0';
- free (ldirname);
-
- *dirnamep = retdir;
- }
-
- DPRINT1("rl_directory_completion_hook returns %s\n", retdir);
- return 1;
-}
-
-static char *
-rlfe_filename_completion_function (text, state)
- const char *text;
- int state;
-{
- static DIR *directory;
- static char *filename = (char *)NULL;
- static char *dirname = (char *)NULL, *ud = (char *)NULL;
- static int flen, udlen;
- char *temp;
- struct dirent *dentry;
-
- if (state == 0)
- {
- if (directory)
- {
- closedir (directory);
- directory = 0;
- }
- FREE (dirname);
- FREE (filename);
- FREE (ud);
-
- if (text && *text)
- STRDUP (filename, text);
- else
- {
- filename = malloc(1);
- if (filename == 0)
- return ((char *)NULL);
- filename[0] = '\0';
- }
- dirname = (text && *text) ? strdup (text) : strdup (".");
- if (dirname == 0)
- return ((char *)NULL);
-
- temp = strrchr (dirname, '/');
- if (temp)
- {
- strcpy (filename, ++temp);
- *temp = '\0';
- }
- else
- {
- dirname[0] = '.';
- dirname[1] = '\0';
- }
-
- STRDUP (ud, dirname);
- udlen = strlen (ud);
-
- rlfe_directory_completion_hook (&dirname);
-
- directory = opendir (dirname);
- flen = strlen (filename);
-
- rl_filename_completion_desired = 1;
- }
-
- dentry = 0;
- while (directory && (dentry = readdir (directory)))
- {
- if (flen == 0)
- {
- if (DOT_OR_DOTDOT(dentry->d_name) == 0)
- break;
- }
- else
- {
- if ((dentry->d_name[0] == filename[0]) &&
- (strlen (dentry->d_name) >= flen) &&
- (strncmp (filename, dentry->d_name, flen) == 0))
- break;
- }
- }
-
- if (dentry == 0)
- {
- if (directory)
- {
- closedir (directory);
- directory = 0;
- }
- FREE (dirname);
- FREE (filename);
- FREE (ud);
- dirname = filename = ud = 0;
- return ((char *)NULL);
- }
-
- if (ud == 0 || (ud[0] == '.' && ud[1] == '\0'))
- temp = strdup (dentry->d_name);
- else
- {
- temp = malloc (1 + udlen + strlen (dentry->d_name));
- strcpy (temp, ud);
- strcpy (temp + udlen, dentry->d_name);
- }
- return (temp);
-}
diff --git a/readline-4.3/examples/rltest.c b/readline-4.3/examples/rltest.c
deleted file mode 100644
index 99f083b..0000000
--- a/readline-4.3/examples/rltest.c
+++ /dev/null
@@ -1,87 +0,0 @@
-/* **************************************************************** */
-/* */
-/* Testing Readline */
-/* */
-/* **************************************************************** */
-
-/* Copyright (C) 1987-2002 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if defined (HAVE_CONFIG_H)
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <sys/types.h>
-
-#ifdef READLINE_LIBRARY
-# include "readline.h"
-# include "history.h"
-#else
-# include <readline/readline.h>
-# include <readline/history.h>
-#endif
-
-extern HIST_ENTRY **history_list ();
-
-main ()
-{
- char *temp, *prompt;
- int done;
-
- temp = (char *)NULL;
- prompt = "readline$ ";
- done = 0;
-
- while (!done)
- {
- temp = readline (prompt);
-
- /* Test for EOF. */
- if (!temp)
- exit (1);
-
- /* If there is anything on the line, print it and remember it. */
- if (*temp)
- {
- fprintf (stderr, "%s\r\n", temp);
- add_history (temp);
- }
-
- /* Check for `command' that we handle. */
- if (strcmp (temp, "quit") == 0)
- done = 1;
-
- if (strcmp (temp, "list") == 0)
- {
- HIST_ENTRY **list;
- register int i;
-
- list = history_list ();
- if (list)
- {
- for (i = 0; list[i]; i++)
- fprintf (stderr, "%d: %s\r\n", i, list[i]->line);
- }
- }
- free (temp);
- }
- exit (0);
-}
diff --git a/readline-4.3/examples/rlversion.c b/readline-4.3/examples/rlversion.c
deleted file mode 100644
index 53949d1..0000000
--- a/readline-4.3/examples/rlversion.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * rlversion -- print out readline's version number
- */
-
-/* Copyright (C) 1987-2002 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <stdio.h>
-#include <sys/types.h>
-#include "posixstat.h"
-
-#ifdef READLINE_LIBRARY
-# include "readline.h"
-#else
-# include <readline/readline.h>
-#endif
-
-main()
-{
- printf ("%s\n", rl_library_version ? rl_library_version : "unknown");
- exit (0);
-}
diff --git a/readline-4.3/funmap.c b/readline-4.3/funmap.c
deleted file mode 100644
index fe9a1da..0000000
--- a/readline-4.3/funmap.c
+++ /dev/null
@@ -1,253 +0,0 @@
-/* funmap.c -- attach names to functions. */
-
-/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#if !defined (BUFSIZ)
-#include <stdio.h>
-#endif /* BUFSIZ */
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#include "rlconf.h"
-#include "readline.h"
-
-#include "xmalloc.h"
-
-#ifdef __STDC__
-typedef int QSFUNC (const void *, const void *);
-#else
-typedef int QSFUNC ();
-#endif
-
-extern int _rl_qsort_string_compare PARAMS((char **, char **));
-
-FUNMAP **funmap;
-static int funmap_size;
-static int funmap_entry;
-
-/* After initializing the function map, this is the index of the first
- program specific function. */
-int funmap_program_specific_entry_start;
-
-static FUNMAP default_funmap[] = {
- { "abort", rl_abort },
- { "accept-line", rl_newline },
- { "arrow-key-prefix", rl_arrow_keys },
- { "backward-byte", rl_backward_byte },
- { "backward-char", rl_backward_char },
- { "backward-delete-char", rl_rubout },
- { "backward-kill-line", rl_backward_kill_line },
- { "backward-kill-word", rl_backward_kill_word },
- { "backward-word", rl_backward_word },
- { "beginning-of-history", rl_beginning_of_history },
- { "beginning-of-line", rl_beg_of_line },
- { "call-last-kbd-macro", rl_call_last_kbd_macro },
- { "capitalize-word", rl_capitalize_word },
- { "character-search", rl_char_search },
- { "character-search-backward", rl_backward_char_search },
- { "clear-screen", rl_clear_screen },
- { "complete", rl_complete },
- { "copy-backward-word", rl_copy_backward_word },
- { "copy-forward-word", rl_copy_forward_word },
- { "copy-region-as-kill", rl_copy_region_to_kill },
- { "delete-char", rl_delete },
- { "delete-char-or-list", rl_delete_or_show_completions },
- { "delete-horizontal-space", rl_delete_horizontal_space },
- { "digit-argument", rl_digit_argument },
- { "do-lowercase-version", rl_do_lowercase_version },
- { "downcase-word", rl_downcase_word },
- { "dump-functions", rl_dump_functions },
- { "dump-macros", rl_dump_macros },
- { "dump-variables", rl_dump_variables },
- { "emacs-editing-mode", rl_emacs_editing_mode },
- { "end-kbd-macro", rl_end_kbd_macro },
- { "end-of-history", rl_end_of_history },
- { "end-of-line", rl_end_of_line },
- { "exchange-point-and-mark", rl_exchange_point_and_mark },
- { "forward-backward-delete-char", rl_rubout_or_delete },
- { "forward-byte", rl_forward_byte },
- { "forward-char", rl_forward_char },
- { "forward-search-history", rl_forward_search_history },
- { "forward-word", rl_forward_word },
- { "history-search-backward", rl_history_search_backward },
- { "history-search-forward", rl_history_search_forward },
- { "insert-comment", rl_insert_comment },
- { "insert-completions", rl_insert_completions },
- { "kill-whole-line", rl_kill_full_line },
- { "kill-line", rl_kill_line },
- { "kill-region", rl_kill_region },
- { "kill-word", rl_kill_word },
- { "menu-complete", rl_menu_complete },
- { "next-history", rl_get_next_history },
- { "non-incremental-forward-search-history", rl_noninc_forward_search },
- { "non-incremental-reverse-search-history", rl_noninc_reverse_search },
- { "non-incremental-forward-search-history-again", rl_noninc_forward_search_again },
- { "non-incremental-reverse-search-history-again", rl_noninc_reverse_search_again },
- { "overwrite-mode", rl_overwrite_mode },
-#ifdef __CYGWIN__
- { "paste-from-clipboard", rl_paste_from_clipboard },
-#endif
- { "possible-completions", rl_possible_completions },
- { "previous-history", rl_get_previous_history },
- { "quoted-insert", rl_quoted_insert },
- { "re-read-init-file", rl_re_read_init_file },
- { "redraw-current-line", rl_refresh_line},
- { "reverse-search-history", rl_reverse_search_history },
- { "revert-line", rl_revert_line },
- { "self-insert", rl_insert },
- { "set-mark", rl_set_mark },
- { "start-kbd-macro", rl_start_kbd_macro },
- { "tab-insert", rl_tab_insert },
- { "tilde-expand", rl_tilde_expand },
- { "transpose-chars", rl_transpose_chars },
- { "transpose-words", rl_transpose_words },
- { "tty-status", rl_tty_status },
- { "undo", rl_undo_command },
- { "universal-argument", rl_universal_argument },
- { "unix-line-discard", rl_unix_line_discard },
- { "unix-word-rubout", rl_unix_word_rubout },
- { "upcase-word", rl_upcase_word },
- { "yank", rl_yank },
- { "yank-last-arg", rl_yank_last_arg },
- { "yank-nth-arg", rl_yank_nth_arg },
- { "yank-pop", rl_yank_pop },
-
-#if defined (VI_MODE)
- { "vi-append-eol", rl_vi_append_eol },
- { "vi-append-mode", rl_vi_append_mode },
- { "vi-arg-digit", rl_vi_arg_digit },
- { "vi-back-to-indent", rl_vi_back_to_indent },
- { "vi-bWord", rl_vi_bWord },
- { "vi-bword", rl_vi_bword },
- { "vi-change-case", rl_vi_change_case },
- { "vi-change-char", rl_vi_change_char },
- { "vi-change-to", rl_vi_change_to },
- { "vi-char-search", rl_vi_char_search },
- { "vi-column", rl_vi_column },
- { "vi-complete", rl_vi_complete },
- { "vi-delete", rl_vi_delete },
- { "vi-delete-to", rl_vi_delete_to },
- { "vi-eWord", rl_vi_eWord },
- { "vi-editing-mode", rl_vi_editing_mode },
- { "vi-end-word", rl_vi_end_word },
- { "vi-eof-maybe", rl_vi_eof_maybe },
- { "vi-eword", rl_vi_eword },
- { "vi-fWord", rl_vi_fWord },
- { "vi-fetch-history", rl_vi_fetch_history },
- { "vi-first-print", rl_vi_first_print },
- { "vi-fword", rl_vi_fword },
- { "vi-goto-mark", rl_vi_goto_mark },
- { "vi-insert-beg", rl_vi_insert_beg },
- { "vi-insertion-mode", rl_vi_insertion_mode },
- { "vi-match", rl_vi_match },
- { "vi-movement-mode", rl_vi_movement_mode },
- { "vi-next-word", rl_vi_next_word },
- { "vi-overstrike", rl_vi_overstrike },
- { "vi-overstrike-delete", rl_vi_overstrike_delete },
- { "vi-prev-word", rl_vi_prev_word },
- { "vi-put", rl_vi_put },
- { "vi-redo", rl_vi_redo },
- { "vi-replace", rl_vi_replace },
- { "vi-search", rl_vi_search },
- { "vi-search-again", rl_vi_search_again },
- { "vi-set-mark", rl_vi_set_mark },
- { "vi-subst", rl_vi_subst },
- { "vi-tilde-expand", rl_vi_tilde_expand },
- { "vi-yank-arg", rl_vi_yank_arg },
- { "vi-yank-to", rl_vi_yank_to },
-#endif /* VI_MODE */
-
- {(char *)NULL, (rl_command_func_t *)NULL }
-};
-
-int
-rl_add_funmap_entry (name, function)
- const char *name;
- rl_command_func_t *function;
-{
- if (funmap_entry + 2 >= funmap_size)
- {
- funmap_size += 64;
- funmap = (FUNMAP **)xrealloc (funmap, funmap_size * sizeof (FUNMAP *));
- }
-
- funmap[funmap_entry] = (FUNMAP *)xmalloc (sizeof (FUNMAP));
- funmap[funmap_entry]->name = name;
- funmap[funmap_entry]->function = function;
-
- funmap[++funmap_entry] = (FUNMAP *)NULL;
- return funmap_entry;
-}
-
-static int funmap_initialized;
-
-/* Make the funmap contain all of the default entries. */
-void
-rl_initialize_funmap ()
-{
- register int i;
-
- if (funmap_initialized)
- return;
-
- for (i = 0; default_funmap[i].name; i++)
- rl_add_funmap_entry (default_funmap[i].name, default_funmap[i].function);
-
- funmap_initialized = 1;
- funmap_program_specific_entry_start = i;
-}
-
-/* Produce a NULL terminated array of known function names. The array
- is sorted. The array itself is allocated, but not the strings inside.
- You should free () the array when you done, but not the pointrs. */
-const char **
-rl_funmap_names ()
-{
- const char **result;
- int result_size, result_index;
-
- /* Make sure that the function map has been initialized. */
- rl_initialize_funmap ();
-
- for (result_index = result_size = 0, result = (const char **)NULL; funmap[result_index]; result_index++)
- {
- if (result_index + 2 > result_size)
- {
- result_size += 20;
- result = (const char **)xrealloc (result, result_size * sizeof (char *));
- }
-
- result[result_index] = funmap[result_index]->name;
- result[result_index + 1] = (char *)NULL;
- }
-
- qsort (result, result_index, sizeof (char *), (QSFUNC *)_rl_qsort_string_compare);
- return (result);
-}
diff --git a/readline-4.3/histexpand.c b/readline-4.3/histexpand.c
deleted file mode 100644
index 5ed8bae..0000000
--- a/readline-4.3/histexpand.c
+++ /dev/null
@@ -1,1491 +0,0 @@
-/* histexpand.c -- history expansion. */
-
-/* Copyright (C) 1989, 1992 Free Software Foundation, Inc.
-
- This file contains the GNU History Library (the Library), a set of
- routines for managing the text of previously typed lines.
-
- The Library is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- The Library is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <stdio.h>
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#if defined (HAVE_UNISTD_H)
-# ifndef _MINIX
-# include <sys/types.h>
-# endif
-# include <unistd.h>
-#endif
-
-#include "rlmbutil.h"
-
-#include "history.h"
-#include "histlib.h"
-
-#include "rlshell.h"
-#include "xmalloc.h"
-
-#define HISTORY_WORD_DELIMITERS " \t\n;&()|<>"
-#define HISTORY_QUOTE_CHARACTERS "\"'`"
-
-typedef int _hist_search_func_t PARAMS((const char *, int));
-
-extern int rl_byte_oriented; /* declared in mbutil.c */
-
-static char error_pointer;
-
-static char *subst_lhs;
-static char *subst_rhs;
-static int subst_lhs_len;
-static int subst_rhs_len;
-
-static char *get_history_word_specifier PARAMS((char *, char *, int *));
-static char *history_find_word PARAMS((char *, int));
-
-static char *quote_breaks PARAMS((char *));
-
-/* Variables exported by this file. */
-/* The character that represents the start of a history expansion
- request. This is usually `!'. */
-char history_expansion_char = '!';
-
-/* The character that invokes word substitution if found at the start of
- a line. This is usually `^'. */
-char history_subst_char = '^';
-
-/* During tokenization, if this character is seen as the first character
- of a word, then it, and all subsequent characters upto a newline are
- ignored. For a Bourne shell, this should be '#'. Bash special cases
- the interactive comment character to not be a comment delimiter. */
-char history_comment_char = '\0';
-
-/* The list of characters which inhibit the expansion of text if found
- immediately following history_expansion_char. */
-char *history_no_expand_chars = " \t\n\r=";
-
-/* If set to a non-zero value, single quotes inhibit history expansion.
- The default is 0. */
-int history_quotes_inhibit_expansion = 0;
-
-/* Used to split words by history_tokenize_internal. */
-char *history_word_delimiters = HISTORY_WORD_DELIMITERS;
-
-/* If set, this points to a function that is called to verify that a
- particular history expansion should be performed. */
-rl_linebuf_func_t *history_inhibit_expansion_function;
-
-/* **************************************************************** */
-/* */
-/* History Expansion */
-/* */
-/* **************************************************************** */
-
-/* Hairy history expansion on text, not tokens. This is of general
- use, and thus belongs in this library. */
-
-/* The last string searched for by a !?string? search. */
-static char *search_string;
-
-/* The last string matched by a !?string? search. */
-static char *search_match;
-
-/* Return the event specified at TEXT + OFFSET modifying OFFSET to
- point to after the event specifier. Just a pointer to the history
- line is returned; NULL is returned in the event of a bad specifier.
- You pass STRING with *INDEX equal to the history_expansion_char that
- begins this specification.
- DELIMITING_QUOTE is a character that is allowed to end the string
- specification for what to search for in addition to the normal
- characters `:', ` ', `\t', `\n', and sometimes `?'.
- So you might call this function like:
- line = get_history_event ("!echo:p", &index, 0); */
-char *
-get_history_event (string, caller_index, delimiting_quote)
- const char *string;
- int *caller_index;
- int delimiting_quote;
-{
- register int i;
- register char c;
- HIST_ENTRY *entry;
- int which, sign, local_index, substring_okay;
- _hist_search_func_t *search_func;
- char *temp;
-
- /* The event can be specified in a number of ways.
-
- !! the previous command
- !n command line N
- !-n current command-line minus N
- !str the most recent command starting with STR
- !?str[?]
- the most recent command containing STR
-
- All values N are determined via HISTORY_BASE. */
-
- i = *caller_index;
-
- if (string[i] != history_expansion_char)
- return ((char *)NULL);
-
- /* Move on to the specification. */
- i++;
-
- sign = 1;
- substring_okay = 0;
-
-#define RETURN_ENTRY(e, w) \
- return ((e = history_get (w)) ? e->line : (char *)NULL)
-
- /* Handle !! case. */
- if (string[i] == history_expansion_char)
- {
- i++;
- which = history_base + (history_length - 1);
- *caller_index = i;
- RETURN_ENTRY (entry, which);
- }
-
- /* Hack case of numeric line specification. */
- if (string[i] == '-')
- {
- sign = -1;
- i++;
- }
-
- if (_rl_digit_p (string[i]))
- {
- /* Get the extent of the digits and compute the value. */
- for (which = 0; _rl_digit_p (string[i]); i++)
- which = (which * 10) + _rl_digit_value (string[i]);
-
- *caller_index = i;
-
- if (sign < 0)
- which = (history_length + history_base) - which;
-
- RETURN_ENTRY (entry, which);
- }
-
- /* This must be something to search for. If the spec begins with
- a '?', then the string may be anywhere on the line. Otherwise,
- the string must be found at the start of a line. */
- if (string[i] == '?')
- {
- substring_okay++;
- i++;
- }
-
- /* Only a closing `?' or a newline delimit a substring search string. */
- for (local_index = i; c = string[i]; i++)
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- int v;
- mbstate_t ps;
-
- memset (&ps, 0, sizeof (mbstate_t));
- /* These produce warnings because we're passing a const string to a
- function that takes a non-const string. */
- _rl_adjust_point ((char *)string, i, &ps);
- if ((v = _rl_get_char_len ((char *)string + i, &ps)) > 1)
- {
- i += v - 1;
- continue;
- }
- }
- else
-#endif /* HANDLE_MULTIBYTE */
- if ((!substring_okay && (whitespace (c) || c == ':' ||
- (history_search_delimiter_chars && member (c, history_search_delimiter_chars)) ||
- string[i] == delimiting_quote)) ||
- string[i] == '\n' ||
- (substring_okay && string[i] == '?'))
- break;
-
- which = i - local_index;
- temp = (char *)xmalloc (1 + which);
- if (which)
- strncpy (temp, string + local_index, which);
- temp[which] = '\0';
-
- if (substring_okay && string[i] == '?')
- i++;
-
- *caller_index = i;
-
-#define FAIL_SEARCH() \
- do { \
- history_offset = history_length; free (temp) ; return (char *)NULL; \
- } while (0)
-
- /* If there is no search string, try to use the previous search string,
- if one exists. If not, fail immediately. */
- if (*temp == '\0' && substring_okay)
- {
- if (search_string)
- {
- free (temp);
- temp = savestring (search_string);
- }
- else
- FAIL_SEARCH ();
- }
-
- search_func = substring_okay ? history_search : history_search_prefix;
- while (1)
- {
- local_index = (*search_func) (temp, -1);
-
- if (local_index < 0)
- FAIL_SEARCH ();
-
- if (local_index == 0 || substring_okay)
- {
- entry = current_history ();
- history_offset = history_length;
-
- /* If this was a substring search, then remember the
- string that we matched for word substitution. */
- if (substring_okay)
- {
- FREE (search_string);
- search_string = temp;
-
- FREE (search_match);
- search_match = history_find_word (entry->line, local_index);
- }
- else
- free (temp);
-
- return (entry->line);
- }
-
- if (history_offset)
- history_offset--;
- else
- FAIL_SEARCH ();
- }
-#undef FAIL_SEARCH
-#undef RETURN_ENTRY
-}
-
-/* Function for extracting single-quoted strings. Used for inhibiting
- history expansion within single quotes. */
-
-/* Extract the contents of STRING as if it is enclosed in single quotes.
- SINDEX, when passed in, is the offset of the character immediately
- following the opening single quote; on exit, SINDEX is left pointing
- to the closing single quote. */
-static void
-hist_string_extract_single_quoted (string, sindex)
- char *string;
- int *sindex;
-{
- register int i;
-
- for (i = *sindex; string[i] && string[i] != '\''; i++)
- ;
-
- *sindex = i;
-}
-
-static char *
-quote_breaks (s)
- char *s;
-{
- register char *p, *r;
- char *ret;
- int len = 3;
-
- for (p = s; p && *p; p++, len++)
- {
- if (*p == '\'')
- len += 3;
- else if (whitespace (*p) || *p == '\n')
- len += 2;
- }
-
- r = ret = (char *)xmalloc (len);
- *r++ = '\'';
- for (p = s; p && *p; )
- {
- if (*p == '\'')
- {
- *r++ = '\'';
- *r++ = '\\';
- *r++ = '\'';
- *r++ = '\'';
- p++;
- }
- else if (whitespace (*p) || *p == '\n')
- {
- *r++ = '\'';
- *r++ = *p++;
- *r++ = '\'';
- }
- else
- *r++ = *p++;
- }
- *r++ = '\'';
- *r = '\0';
- return ret;
-}
-
-static char *
-hist_error(s, start, current, errtype)
- char *s;
- int start, current, errtype;
-{
- char *temp;
- const char *emsg;
- int ll, elen;
-
- ll = current - start;
-
- switch (errtype)
- {
- case EVENT_NOT_FOUND:
- emsg = "event not found";
- elen = 15;
- break;
- case BAD_WORD_SPEC:
- emsg = "bad word specifier";
- elen = 18;
- break;
- case SUBST_FAILED:
- emsg = "substitution failed";
- elen = 19;
- break;
- case BAD_MODIFIER:
- emsg = "unrecognized history modifier";
- elen = 29;
- break;
- case NO_PREV_SUBST:
- emsg = "no previous substitution";
- elen = 24;
- break;
- default:
- emsg = "unknown expansion error";
- elen = 23;
- break;
- }
-
- temp = (char *)xmalloc (ll + elen + 3);
- strncpy (temp, s + start, ll);
- temp[ll] = ':';
- temp[ll + 1] = ' ';
- strcpy (temp + ll + 2, emsg);
- return (temp);
-}
-
-/* Get a history substitution string from STR starting at *IPTR
- and return it. The length is returned in LENPTR.
-
- A backslash can quote the delimiter. If the string is the
- empty string, the previous pattern is used. If there is
- no previous pattern for the lhs, the last history search
- string is used.
-
- If IS_RHS is 1, we ignore empty strings and set the pattern
- to "" anyway. subst_lhs is not changed if the lhs is empty;
- subst_rhs is allowed to be set to the empty string. */
-
-static char *
-get_subst_pattern (str, iptr, delimiter, is_rhs, lenptr)
- char *str;
- int *iptr, delimiter, is_rhs, *lenptr;
-{
- register int si, i, j, k;
- char *s;
-#if defined (HANDLE_MULTIBYTE)
- mbstate_t ps;
-#endif
-
- s = (char *)NULL;
- i = *iptr;
-
-#if defined (HANDLE_MULTIBYTE)
- memset (&ps, 0, sizeof (mbstate_t));
- _rl_adjust_point (str, i, &ps);
-#endif
-
- for (si = i; str[si] && str[si] != delimiter; si++)
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- int v;
- if ((v = _rl_get_char_len (str + si, &ps)) > 1)
- si += v - 1;
- else if (str[si] == '\\' && str[si + 1] == delimiter)
- si++;
- }
- else
-#endif /* HANDLE_MULTIBYTE */
- if (str[si] == '\\' && str[si + 1] == delimiter)
- si++;
-
- if (si > i || is_rhs)
- {
- s = (char *)xmalloc (si - i + 1);
- for (j = 0, k = i; k < si; j++, k++)
- {
- /* Remove a backslash quoting the search string delimiter. */
- if (str[k] == '\\' && str[k + 1] == delimiter)
- k++;
- s[j] = str[k];
- }
- s[j] = '\0';
- if (lenptr)
- *lenptr = j;
- }
-
- i = si;
- if (str[i])
- i++;
- *iptr = i;
-
- return s;
-}
-
-static void
-postproc_subst_rhs ()
-{
- char *new;
- int i, j, new_size;
-
- new = (char *)xmalloc (new_size = subst_rhs_len + subst_lhs_len);
- for (i = j = 0; i < subst_rhs_len; i++)
- {
- if (subst_rhs[i] == '&')
- {
- if (j + subst_lhs_len >= new_size)
- new = (char *)xrealloc (new, (new_size = new_size * 2 + subst_lhs_len));
- strcpy (new + j, subst_lhs);
- j += subst_lhs_len;
- }
- else
- {
- /* a single backslash protects the `&' from lhs interpolation */
- if (subst_rhs[i] == '\\' && subst_rhs[i + 1] == '&')
- i++;
- if (j >= new_size)
- new = (char *)xrealloc (new, new_size *= 2);
- new[j++] = subst_rhs[i];
- }
- }
- new[j] = '\0';
- free (subst_rhs);
- subst_rhs = new;
- subst_rhs_len = j;
-}
-
-/* Expand the bulk of a history specifier starting at STRING[START].
- Returns 0 if everything is OK, -1 if an error occurred, and 1
- if the `p' modifier was supplied and the caller should just print
- the returned string. Returns the new index into string in
- *END_INDEX_PTR, and the expanded specifier in *RET_STRING. */
-static int
-history_expand_internal (string, start, end_index_ptr, ret_string, current_line)
- char *string;
- int start, *end_index_ptr;
- char **ret_string;
- char *current_line; /* for !# */
-{
- int i, n, starting_index;
- int substitute_globally, want_quotes, print_only;
- char *event, *temp, *result, *tstr, *t, c, *word_spec;
- int result_len;
-#if defined (HANDLE_MULTIBYTE)
- mbstate_t ps;
-
- memset (&ps, 0, sizeof (mbstate_t));
-#endif
-
- result = (char *)xmalloc (result_len = 128);
-
- i = start;
-
- /* If it is followed by something that starts a word specifier,
- then !! is implied as the event specifier. */
-
- if (member (string[i + 1], ":$*%^"))
- {
- char fake_s[3];
- int fake_i = 0;
- i++;
- fake_s[0] = fake_s[1] = history_expansion_char;
- fake_s[2] = '\0';
- event = get_history_event (fake_s, &fake_i, 0);
- }
- else if (string[i + 1] == '#')
- {
- i += 2;
- event = current_line;
- }
- else
- {
- int quoted_search_delimiter = 0;
-
- /* If the character before this `!' is a double or single
- quote, then this expansion takes place inside of the
- quoted string. If we have to search for some text ("!foo"),
- allow the delimiter to end the search string. */
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- int c, l;
- l = _rl_find_prev_mbchar (string, i, MB_FIND_ANY);
- c = string[l];
- /* XXX - original patch had i - 1 ??? If i == 0 it would fail. */
- if (i && (c == '\'' || c == '"'))
- quoted_search_delimiter = c;
- }
- else
-#endif /* HANDLE_MULTIBYTE */
- if (i && (string[i - 1] == '\'' || string[i - 1] == '"'))
- quoted_search_delimiter = string[i - 1];
-
- event = get_history_event (string, &i, quoted_search_delimiter);
- }
-
- if (event == 0)
- {
- *ret_string = hist_error (string, start, i, EVENT_NOT_FOUND);
- free (result);
- return (-1);
- }
-
- /* If a word specifier is found, then do what that requires. */
- starting_index = i;
- word_spec = get_history_word_specifier (string, event, &i);
-
- /* There is no such thing as a `malformed word specifier'. However,
- it is possible for a specifier that has no match. In that case,
- we complain. */
- if (word_spec == (char *)&error_pointer)
- {
- *ret_string = hist_error (string, starting_index, i, BAD_WORD_SPEC);
- free (result);
- return (-1);
- }
-
- /* If no word specifier, than the thing of interest was the event. */
- temp = word_spec ? savestring (word_spec) : savestring (event);
- FREE (word_spec);
-
- /* Perhaps there are other modifiers involved. Do what they say. */
- want_quotes = substitute_globally = print_only = 0;
- starting_index = i;
-
- while (string[i] == ':')
- {
- c = string[i + 1];
-
- if (c == 'g')
- {
- substitute_globally = 1;
- i++;
- c = string[i + 1];
- }
-
- switch (c)
- {
- default:
- *ret_string = hist_error (string, i+1, i+2, BAD_MODIFIER);
- free (result);
- free (temp);
- return -1;
-
- case 'q':
- want_quotes = 'q';
- break;
-
- case 'x':
- want_quotes = 'x';
- break;
-
- /* :p means make this the last executed line. So we
- return an error state after adding this line to the
- history. */
- case 'p':
- print_only++;
- break;
-
- /* :t discards all but the last part of the pathname. */
- case 't':
- tstr = strrchr (temp, '/');
- if (tstr)
- {
- tstr++;
- t = savestring (tstr);
- free (temp);
- temp = t;
- }
- break;
-
- /* :h discards the last part of a pathname. */
- case 'h':
- tstr = strrchr (temp, '/');
- if (tstr)
- *tstr = '\0';
- break;
-
- /* :r discards the suffix. */
- case 'r':
- tstr = strrchr (temp, '.');
- if (tstr)
- *tstr = '\0';
- break;
-
- /* :e discards everything but the suffix. */
- case 'e':
- tstr = strrchr (temp, '.');
- if (tstr)
- {
- t = savestring (tstr);
- free (temp);
- temp = t;
- }
- break;
-
- /* :s/this/that substitutes `that' for the first
- occurrence of `this'. :gs/this/that substitutes `that'
- for each occurrence of `this'. :& repeats the last
- substitution. :g& repeats the last substitution
- globally. */
-
- case '&':
- case 's':
- {
- char *new_event;
- int delimiter, failed, si, l_temp;
-
- if (c == 's')
- {
- if (i + 2 < (int)strlen (string))
- {
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- _rl_adjust_point (string, i + 2, &ps);
- if (_rl_get_char_len (string + i + 2, &ps) > 1)
- delimiter = 0;
- else
- delimiter = string[i + 2];
- }
- else
-#endif /* HANDLE_MULTIBYTE */
- delimiter = string[i + 2];
- }
- else
- break; /* no search delimiter */
-
- i += 3;
-
- t = get_subst_pattern (string, &i, delimiter, 0, &subst_lhs_len);
- /* An empty substitution lhs with no previous substitution
- uses the last search string as the lhs. */
- if (t)
- {
- FREE (subst_lhs);
- subst_lhs = t;
- }
- else if (!subst_lhs)
- {
- if (search_string && *search_string)
- {
- subst_lhs = savestring (search_string);
- subst_lhs_len = strlen (subst_lhs);
- }
- else
- {
- subst_lhs = (char *) NULL;
- subst_lhs_len = 0;
- }
- }
-
- FREE (subst_rhs);
- subst_rhs = get_subst_pattern (string, &i, delimiter, 1, &subst_rhs_len);
-
- /* If `&' appears in the rhs, it's supposed to be replaced
- with the lhs. */
- if (member ('&', subst_rhs))
- postproc_subst_rhs ();
- }
- else
- i += 2;
-
- /* If there is no lhs, the substitution can't succeed. */
- if (subst_lhs_len == 0)
- {
- *ret_string = hist_error (string, starting_index, i, NO_PREV_SUBST);
- free (result);
- free (temp);
- return -1;
- }
-
- l_temp = strlen (temp);
- /* Ignore impossible cases. */
- if (subst_lhs_len > l_temp)
- {
- *ret_string = hist_error (string, starting_index, i, SUBST_FAILED);
- free (result);
- free (temp);
- return (-1);
- }
-
- /* Find the first occurrence of THIS in TEMP. */
- si = 0;
- for (failed = 1; (si + subst_lhs_len) <= l_temp; si++)
- if (STREQN (temp+si, subst_lhs, subst_lhs_len))
- {
- int len = subst_rhs_len - subst_lhs_len + l_temp;
- new_event = (char *)xmalloc (1 + len);
- strncpy (new_event, temp, si);
- strncpy (new_event + si, subst_rhs, subst_rhs_len);
- strncpy (new_event + si + subst_rhs_len,
- temp + si + subst_lhs_len,
- l_temp - (si + subst_lhs_len));
- new_event[len] = '\0';
- free (temp);
- temp = new_event;
-
- failed = 0;
-
- if (substitute_globally)
- {
- si += subst_rhs_len;
- l_temp = strlen (temp);
- substitute_globally++;
- continue;
- }
- else
- break;
- }
-
- if (substitute_globally > 1)
- {
- substitute_globally = 0;
- continue; /* don't want to increment i */
- }
-
- if (failed == 0)
- continue; /* don't want to increment i */
-
- *ret_string = hist_error (string, starting_index, i, SUBST_FAILED);
- free (result);
- free (temp);
- return (-1);
- }
- }
- i += 2;
- }
- /* Done with modfiers. */
- /* Believe it or not, we have to back the pointer up by one. */
- --i;
-
- if (want_quotes)
- {
- char *x;
-
- if (want_quotes == 'q')
- x = sh_single_quote (temp);
- else if (want_quotes == 'x')
- x = quote_breaks (temp);
- else
- x = savestring (temp);
-
- free (temp);
- temp = x;
- }
-
- n = strlen (temp);
- if (n >= result_len)
- result = (char *)xrealloc (result, n + 2);
- strcpy (result, temp);
- free (temp);
-
- *end_index_ptr = i;
- *ret_string = result;
- return (print_only);
-}
-
-/* Expand the string STRING, placing the result into OUTPUT, a pointer
- to a string. Returns:
-
- -1) If there was an error in expansion.
- 0) If no expansions took place (or, if the only change in
- the text was the de-slashifying of the history expansion
- character)
- 1) If expansions did take place
- 2) If the `p' modifier was given and the caller should print the result
-
- If an error ocurred in expansion, then OUTPUT contains a descriptive
- error message. */
-
-#define ADD_STRING(s) \
- do \
- { \
- int sl = strlen (s); \
- j += sl; \
- if (j >= result_len) \
- { \
- while (j >= result_len) \
- result_len += 128; \
- result = (char *)xrealloc (result, result_len); \
- } \
- strcpy (result + j - sl, s); \
- } \
- while (0)
-
-#define ADD_CHAR(c) \
- do \
- { \
- if (j >= result_len - 1) \
- result = (char *)xrealloc (result, result_len += 64); \
- result[j++] = c; \
- result[j] = '\0'; \
- } \
- while (0)
-
-int
-history_expand (hstring, output)
- char *hstring;
- char **output;
-{
- register int j;
- int i, r, l, passc, cc, modified, eindex, only_printing;
- char *string;
-
- /* The output string, and its length. */
- int result_len;
- char *result;
-
-#if defined (HANDLE_MULTIBYTE)
- char mb[MB_LEN_MAX];
- mbstate_t ps;
-#endif
-
- /* Used when adding the string. */
- char *temp;
-
- if (output == 0)
- return 0;
-
- /* Setting the history expansion character to 0 inhibits all
- history expansion. */
- if (history_expansion_char == 0)
- {
- *output = savestring (hstring);
- return (0);
- }
-
- /* Prepare the buffer for printing error messages. */
- result = (char *)xmalloc (result_len = 256);
- result[0] = '\0';
-
- only_printing = modified = 0;
- l = strlen (hstring);
-
- /* Grovel the string. Only backslash and single quotes can quote the
- history escape character. We also handle arg specifiers. */
-
- /* Before we grovel forever, see if the history_expansion_char appears
- anywhere within the text. */
-
- /* The quick substitution character is a history expansion all right. That
- is to say, "^this^that^" is equivalent to "!!:s^this^that^", and in fact,
- that is the substitution that we do. */
- if (hstring[0] == history_subst_char)
- {
- string = (char *)xmalloc (l + 5);
-
- string[0] = string[1] = history_expansion_char;
- string[2] = ':';
- string[3] = 's';
- strcpy (string + 4, hstring);
- l += 4;
- }
- else
- {
-#if defined (HANDLE_MULTIBYTE)
- memset (&ps, 0, sizeof (mbstate_t));
-#endif
-
- string = hstring;
- /* If not quick substitution, still maybe have to do expansion. */
-
- /* `!' followed by one of the characters in history_no_expand_chars
- is NOT an expansion. */
- for (i = 0; string[i]; i++)
- {
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- int v;
- v = _rl_get_char_len (string + i, &ps);
- if (v > 1)
- {
- i += v - 1;
- continue;
- }
- }
-#endif /* HANDLE_MULTIBYTE */
-
- cc = string[i + 1];
- /* The history_comment_char, if set, appearing at the beginning
- of a word signifies that the rest of the line should not have
- history expansion performed on it.
- Skip the rest of the line and break out of the loop. */
- if (history_comment_char && string[i] == history_comment_char &&
- (i == 0 || member (string[i - 1], history_word_delimiters)))
- {
- while (string[i])
- i++;
- break;
- }
- else if (string[i] == history_expansion_char)
- {
- if (!cc || member (cc, history_no_expand_chars))
- continue;
- /* If the calling application has set
- history_inhibit_expansion_function to a function that checks
- for special cases that should not be history expanded,
- call the function and skip the expansion if it returns a
- non-zero value. */
- else if (history_inhibit_expansion_function &&
- (*history_inhibit_expansion_function) (string, i))
- continue;
- else
- break;
- }
- /* XXX - at some point, might want to extend this to handle
- double quotes as well. */
- else if (history_quotes_inhibit_expansion && string[i] == '\'')
- {
- /* If this is bash, single quotes inhibit history expansion. */
- i++;
- hist_string_extract_single_quoted (string, &i);
- }
- else if (history_quotes_inhibit_expansion && string[i] == '\\')
- {
- /* If this is bash, allow backslashes to quote single
- quotes and the history expansion character. */
- if (cc == '\'' || cc == history_expansion_char)
- i++;
- }
- }
-
- if (string[i] != history_expansion_char)
- {
- free (result);
- *output = savestring (string);
- return (0);
- }
- }
-
- /* Extract and perform the substitution. */
- for (passc = i = j = 0; i < l; i++)
- {
- int tchar = string[i];
-
- if (passc)
- {
- passc = 0;
- ADD_CHAR (tchar);
- continue;
- }
-
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- int k, c;
-
- c = tchar;
- memset (mb, 0, sizeof (mb));
- for (k = 0; k < MB_LEN_MAX; k++)
- {
- mb[k] = (char)c;
- memset (&ps, 0, sizeof (mbstate_t));
- if (_rl_get_char_len (mb, &ps) == -2)
- c = string[++i];
- else
- break;
- }
- if (strlen (mb) > 1)
- {
- ADD_STRING (mb);
- break;
- }
- }
-#endif /* HANDLE_MULTIBYTE */
-
- if (tchar == history_expansion_char)
- tchar = -3;
- else if (tchar == history_comment_char)
- tchar = -2;
-
- switch (tchar)
- {
- default:
- ADD_CHAR (string[i]);
- break;
-
- case '\\':
- passc++;
- ADD_CHAR (tchar);
- break;
-
- case '\'':
- {
- /* If history_quotes_inhibit_expansion is set, single quotes
- inhibit history expansion. */
- if (history_quotes_inhibit_expansion)
- {
- int quote, slen;
-
- quote = i++;
- hist_string_extract_single_quoted (string, &i);
-
- slen = i - quote + 2;
- temp = (char *)xmalloc (slen);
- strncpy (temp, string + quote, slen);
- temp[slen - 1] = '\0';
- ADD_STRING (temp);
- free (temp);
- }
- else
- ADD_CHAR (string[i]);
- break;
- }
-
- case -2: /* history_comment_char */
- if (i == 0 || member (string[i - 1], history_word_delimiters))
- {
- temp = (char *)xmalloc (l - i + 1);
- strcpy (temp, string + i);
- ADD_STRING (temp);
- free (temp);
- i = l;
- }
- else
- ADD_CHAR (string[i]);
- break;
-
- case -3: /* history_expansion_char */
- cc = string[i + 1];
-
- /* If the history_expansion_char is followed by one of the
- characters in history_no_expand_chars, then it is not a
- candidate for expansion of any kind. */
- if (member (cc, history_no_expand_chars))
- {
- ADD_CHAR (string[i]);
- break;
- }
-
-#if defined (NO_BANG_HASH_MODIFIERS)
- /* There is something that is listed as a `word specifier' in csh
- documentation which means `the expanded text to this point'.
- That is not a word specifier, it is an event specifier. If we
- don't want to allow modifiers with `!#', just stick the current
- output line in again. */
- if (cc == '#')
- {
- if (result)
- {
- temp = (char *)xmalloc (1 + strlen (result));
- strcpy (temp, result);
- ADD_STRING (temp);
- free (temp);
- }
- i++;
- break;
- }
-#endif
-
- r = history_expand_internal (string, i, &eindex, &temp, result);
- if (r < 0)
- {
- *output = temp;
- free (result);
- if (string != hstring)
- free (string);
- return -1;
- }
- else
- {
- if (temp)
- {
- modified++;
- if (*temp)
- ADD_STRING (temp);
- free (temp);
- }
- only_printing = r == 1;
- i = eindex;
- }
- break;
- }
- }
-
- *output = result;
- if (string != hstring)
- free (string);
-
- if (only_printing)
- {
- add_history (result);
- return (2);
- }
-
- return (modified != 0);
-}
-
-/* Return a consed string which is the word specified in SPEC, and found
- in FROM. NULL is returned if there is no spec. The address of
- ERROR_POINTER is returned if the word specified cannot be found.
- CALLER_INDEX is the offset in SPEC to start looking; it is updated
- to point to just after the last character parsed. */
-static char *
-get_history_word_specifier (spec, from, caller_index)
- char *spec, *from;
- int *caller_index;
-{
- register int i = *caller_index;
- int first, last;
- int expecting_word_spec = 0;
- char *result;
-
- /* The range of words to return doesn't exist yet. */
- first = last = 0;
- result = (char *)NULL;
-
- /* If we found a colon, then this *must* be a word specification. If
- it isn't, then it is an error. */
- if (spec[i] == ':')
- {
- i++;
- expecting_word_spec++;
- }
-
- /* Handle special cases first. */
-
- /* `%' is the word last searched for. */
- if (spec[i] == '%')
- {
- *caller_index = i + 1;
- return (search_match ? savestring (search_match) : savestring (""));
- }
-
- /* `*' matches all of the arguments, but not the command. */
- if (spec[i] == '*')
- {
- *caller_index = i + 1;
- result = history_arg_extract (1, '$', from);
- return (result ? result : savestring (""));
- }
-
- /* `$' is last arg. */
- if (spec[i] == '$')
- {
- *caller_index = i + 1;
- return (history_arg_extract ('$', '$', from));
- }
-
- /* Try to get FIRST and LAST figured out. */
-
- if (spec[i] == '-')
- first = 0;
- else if (spec[i] == '^')
- first = 1;
- else if (_rl_digit_p (spec[i]) && expecting_word_spec)
- {
- for (first = 0; _rl_digit_p (spec[i]); i++)
- first = (first * 10) + _rl_digit_value (spec[i]);
- }
- else
- return ((char *)NULL); /* no valid `first' for word specifier */
-
- if (spec[i] == '^' || spec[i] == '*')
- {
- last = (spec[i] == '^') ? 1 : '$'; /* x* abbreviates x-$ */
- i++;
- }
- else if (spec[i] != '-')
- last = first;
- else
- {
- i++;
-
- if (_rl_digit_p (spec[i]))
- {
- for (last = 0; _rl_digit_p (spec[i]); i++)
- last = (last * 10) + _rl_digit_value (spec[i]);
- }
- else if (spec[i] == '$')
- {
- i++;
- last = '$';
- }
-#if 0
- else if (!spec[i] || spec[i] == ':')
- /* check against `:' because there could be a modifier separator */
-#else
- else
- /* csh seems to allow anything to terminate the word spec here,
- leaving it as an abbreviation. */
-#endif
- last = -1; /* x- abbreviates x-$ omitting word `$' */
- }
-
- *caller_index = i;
-
- if (last >= first || last == '$' || last < 0)
- result = history_arg_extract (first, last, from);
-
- return (result ? result : (char *)&error_pointer);
-}
-
-/* Extract the args specified, starting at FIRST, and ending at LAST.
- The args are taken from STRING. If either FIRST or LAST is < 0,
- then make that arg count from the right (subtract from the number of
- tokens, so that FIRST = -1 means the next to last token on the line).
- If LAST is `$' the last arg from STRING is used. */
-char *
-history_arg_extract (first, last, string)
- int first, last;
- const char *string;
-{
- register int i, len;
- char *result;
- int size, offset;
- char **list;
-
- /* XXX - think about making history_tokenize return a struct array,
- each struct in array being a string and a length to avoid the
- calls to strlen below. */
- if ((list = history_tokenize (string)) == NULL)
- return ((char *)NULL);
-
- for (len = 0; list[len]; len++)
- ;
-
- if (last < 0)
- last = len + last - 1;
-
- if (first < 0)
- first = len + first - 1;
-
- if (last == '$')
- last = len - 1;
-
- if (first == '$')
- first = len - 1;
-
- last++;
-
- if (first >= len || last > len || first < 0 || last < 0 || first > last)
- result = ((char *)NULL);
- else
- {
- for (size = 0, i = first; i < last; i++)
- size += strlen (list[i]) + 1;
- result = (char *)xmalloc (size + 1);
- result[0] = '\0';
-
- for (i = first, offset = 0; i < last; i++)
- {
- strcpy (result + offset, list[i]);
- offset += strlen (list[i]);
- if (i + 1 < last)
- {
- result[offset++] = ' ';
- result[offset] = 0;
- }
- }
- }
-
- for (i = 0; i < len; i++)
- free (list[i]);
- free (list);
-
- return (result);
-}
-
-#define slashify_in_quotes "\\`\"$"
-
-/* Parse STRING into tokens and return an array of strings. If WIND is
- not -1 and INDP is not null, we also want the word surrounding index
- WIND. The position in the returned array of strings is returned in
- *INDP. */
-static char **
-history_tokenize_internal (string, wind, indp)
- const char *string;
- int wind, *indp;
-{
- char **result;
- register int i, start, result_index, size;
- int len, delimiter;
-
- /* If we're searching for a string that's not part of a word (e.g., " "),
- make sure we set *INDP to a reasonable value. */
- if (indp && wind != -1)
- *indp = -1;
-
- /* Get a token, and stuff it into RESULT. The tokens are split
- exactly where the shell would split them. */
- for (i = result_index = size = 0, result = (char **)NULL; string[i]; )
- {
- delimiter = 0;
-
- /* Skip leading whitespace. */
- for (; string[i] && whitespace (string[i]); i++)
- ;
- if (string[i] == 0 || string[i] == history_comment_char)
- return (result);
-
- start = i;
-
- if (member (string[i], "()\n"))
- {
- i++;
- goto got_token;
- }
-
- if (member (string[i], "<>;&|$"))
- {
- int peek = string[i + 1];
-
- if (peek == string[i] && peek != '$')
- {
- if (peek == '<' && string[i + 2] == '-')
- i++;
- i += 2;
- goto got_token;
- }
- else
- {
- if ((peek == '&' && (string[i] == '>' || string[i] == '<')) ||
- ((peek == '>') && (string[i] == '&')) ||
- ((peek == '(') && (string[i] == '$')))
- {
- i += 2;
- goto got_token;
- }
- }
- if (string[i] != '$')
- {
- i++;
- goto got_token;
- }
- }
-
- /* Get word from string + i; */
-
- if (member (string[i], HISTORY_QUOTE_CHARACTERS))
- delimiter = string[i++];
-
- for (; string[i]; i++)
- {
- if (string[i] == '\\' && string[i + 1] == '\n')
- {
- i++;
- continue;
- }
-
- if (string[i] == '\\' && delimiter != '\'' &&
- (delimiter != '"' || member (string[i], slashify_in_quotes)))
- {
- i++;
- continue;
- }
-
- if (delimiter && string[i] == delimiter)
- {
- delimiter = 0;
- continue;
- }
-
- if (!delimiter && (member (string[i], history_word_delimiters)))
- break;
-
- if (!delimiter && member (string[i], HISTORY_QUOTE_CHARACTERS))
- delimiter = string[i];
- }
-
- got_token:
-
- /* If we are looking for the word in which the character at a
- particular index falls, remember it. */
- if (indp && wind != -1 && wind >= start && wind < i)
- *indp = result_index;
-
- len = i - start;
- if (result_index + 2 >= size)
- result = (char **)xrealloc (result, ((size += 10) * sizeof (char *)));
- result[result_index] = (char *)xmalloc (1 + len);
- strncpy (result[result_index], string + start, len);
- result[result_index][len] = '\0';
- result[++result_index] = (char *)NULL;
- }
-
- return (result);
-}
-
-/* Return an array of tokens, much as the shell might. The tokens are
- parsed out of STRING. */
-char **
-history_tokenize (string)
- const char *string;
-{
- return (history_tokenize_internal (string, -1, (int *)NULL));
-}
-
-/* Find and return the word which contains the character at index IND
- in the history line LINE. Used to save the word matched by the
- last history !?string? search. */
-static char *
-history_find_word (line, ind)
- char *line;
- int ind;
-{
- char **words, *s;
- int i, wind;
-
- words = history_tokenize_internal (line, ind, &wind);
- if (wind == -1 || words == 0)
- return ((char *)NULL);
- s = words[wind];
- for (i = 0; i < wind; i++)
- free (words[i]);
- for (i = wind + 1; words[i]; i++)
- free (words[i]);
- free (words);
- return s;
-}
diff --git a/readline-4.3/histfile.c b/readline-4.3/histfile.c
deleted file mode 100644
index 60a9125..0000000
--- a/readline-4.3/histfile.c
+++ /dev/null
@@ -1,479 +0,0 @@
-/* histfile.c - functions to manipulate the history file. */
-
-/* Copyright (C) 1989, 1992 Free Software Foundation, Inc.
-
- This file contains the GNU History Library (the Library), a set of
- routines for managing the text of previously typed lines.
-
- The Library is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- The Library is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-/* The goal is to make the implementation transparent, so that you
- don't have to know what data types are used, just what functions
- you can call. I think I have done that. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <stdio.h>
-
-#include <sys/types.h>
-#ifndef _MINIX
-# include <sys/file.h>
-#endif
-#include "posixstat.h"
-#include <fcntl.h>
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#if defined (HAVE_UNISTD_H)
-# include <unistd.h>
-#endif
-
-#if defined (__EMX__) || defined (__CYGWIN__)
-# undef HAVE_MMAP
-#endif
-
-#ifdef HAVE_MMAP
-# include <sys/mman.h>
-
-# ifdef MAP_FILE
-# define MAP_RFLAGS (MAP_FILE|MAP_PRIVATE)
-# define MAP_WFLAGS (MAP_FILE|MAP_SHARED)
-# else
-# define MAP_RFLAGS MAP_PRIVATE
-# define MAP_WFLAGS MAP_SHARED
-# endif
-
-# ifndef MAP_FAILED
-# define MAP_FAILED ((void *)-1)
-# endif
-
-#endif /* HAVE_MMAP */
-
-/* If we're compiling for __EMX__ (OS/2) or __CYGWIN__ (cygwin32 environment
- on win 95/98/nt), we want to open files with O_BINARY mode so that there
- is no \n -> \r\n conversion performed. On other systems, we don't want to
- mess around with O_BINARY at all, so we ensure that it's defined to 0. */
-#if defined (__EMX__) || defined (__CYGWIN__)
-# ifndef O_BINARY
-# define O_BINARY 0
-# endif
-#else /* !__EMX__ && !__CYGWIN__ */
-# undef O_BINARY
-# define O_BINARY 0
-#endif /* !__EMX__ && !__CYGWIN__ */
-
-#include <errno.h>
-#if !defined (errno)
-extern int errno;
-#endif /* !errno */
-
-#include "history.h"
-#include "histlib.h"
-
-#include "rlshell.h"
-#include "xmalloc.h"
-
-/* Return the string that should be used in the place of this
- filename. This only matters when you don't specify the
- filename to read_history (), or write_history (). */
-static char *
-history_filename (filename)
- const char *filename;
-{
- char *return_val;
- const char *home;
- int home_len;
-
- return_val = filename ? savestring (filename) : (char *)NULL;
-
- if (return_val)
- return (return_val);
-
- home = sh_get_env_value ("HOME");
-
- if (home == 0)
- {
- home = ".";
- home_len = 1;
- }
- else
- home_len = strlen (home);
-
- return_val = (char *)xmalloc (2 + home_len + 8); /* strlen(".history") == 8 */
- strcpy (return_val, home);
- return_val[home_len] = '/';
-#if defined (__MSDOS__)
- strcpy (return_val + home_len + 1, "_history");
-#else
- strcpy (return_val + home_len + 1, ".history");
-#endif
-
- return (return_val);
-}
-
-/* Add the contents of FILENAME to the history list, a line at a time.
- If FILENAME is NULL, then read from ~/.history. Returns 0 if
- successful, or errno if not. */
-int
-read_history (filename)
- const char *filename;
-{
- return (read_history_range (filename, 0, -1));
-}
-
-/* Read a range of lines from FILENAME, adding them to the history list.
- Start reading at the FROM'th line and end at the TO'th. If FROM
- is zero, start at the beginning. If TO is less than FROM, read
- until the end of the file. If FILENAME is NULL, then read from
- ~/.history. Returns 0 if successful, or errno if not. */
-int
-read_history_range (filename, from, to)
- const char *filename;
- int from, to;
-{
- register char *line_start, *line_end;
- char *input, *buffer, *bufend;
- int file, current_line, chars_read;
- struct stat finfo;
- size_t file_size;
-
- buffer = (char *)NULL;
- input = history_filename (filename);
- file = open (input, O_RDONLY|O_BINARY, 0666);
-
- if ((file < 0) || (fstat (file, &finfo) == -1))
- goto error_and_exit;
-
- file_size = (size_t)finfo.st_size;
-
- /* check for overflow on very large files */
- if (file_size != finfo.st_size || file_size + 1 < file_size)
- {
-#if defined (EFBIG)
- errno = EFBIG;
-#elif defined (EOVERFLOW)
- errno = EOVERFLOW;
-#endif
- goto error_and_exit;
- }
-
-#ifdef HAVE_MMAP
- /* We map read/write and private so we can change newlines to NULs without
- affecting the underlying object. */
- buffer = (char *)mmap (0, file_size, PROT_READ|PROT_WRITE, MAP_RFLAGS, file, 0);
- if ((void *)buffer == MAP_FAILED)
- goto error_and_exit;
- chars_read = file_size;
-#else
- buffer = (char *)malloc (file_size + 1);
- if (buffer == 0)
- goto error_and_exit;
-
- chars_read = read (file, buffer, file_size);
-#endif
- if (chars_read < 0)
- {
- error_and_exit:
- chars_read = errno;
- if (file >= 0)
- close (file);
-
- FREE (input);
-#ifndef HAVE_MMAP
- FREE (buffer);
-#endif
-
- return (chars_read);
- }
-
- close (file);
-
- /* Set TO to larger than end of file if negative. */
- if (to < 0)
- to = chars_read;
-
- /* Start at beginning of file, work to end. */
- bufend = buffer + chars_read;
- current_line = 0;
-
- /* Skip lines until we are at FROM. */
- for (line_start = line_end = buffer; line_end < bufend && current_line < from; line_end++)
- if (*line_end == '\n')
- {
- current_line++;
- line_start = line_end + 1;
- }
-
- /* If there are lines left to gobble, then gobble them now. */
- for (line_end = line_start; line_end < bufend; line_end++)
- if (*line_end == '\n')
- {
- *line_end = '\0';
-
- if (*line_start)
- add_history (line_start);
-
- current_line++;
-
- if (current_line >= to)
- break;
-
- line_start = line_end + 1;
- }
-
- FREE (input);
-#ifndef HAVE_MMAP
- FREE (buffer);
-#else
- munmap (buffer, file_size);
-#endif
-
- return (0);
-}
-
-/* Truncate the history file FNAME, leaving only LINES trailing lines.
- If FNAME is NULL, then use ~/.history. Returns 0 on success, errno
- on failure. */
-int
-history_truncate_file (fname, lines)
- const char *fname;
- int lines;
-{
- char *buffer, *filename, *bp;
- int file, chars_read, rv;
- struct stat finfo;
- size_t file_size;
-
- buffer = (char *)NULL;
- filename = history_filename (fname);
- file = open (filename, O_RDONLY|O_BINARY, 0666);
- rv = 0;
-
- /* Don't try to truncate non-regular files. */
- if (file == -1 || fstat (file, &finfo) == -1)
- {
- rv = errno;
- if (file != -1)
- close (file);
- goto truncate_exit;
- }
-
- if (S_ISREG (finfo.st_mode) == 0)
- {
- close (file);
-#ifdef EFTYPE
- rv = EFTYPE;
-#else
- rv = EINVAL;
-#endif
- goto truncate_exit;
- }
-
- file_size = (size_t)finfo.st_size;
-
- /* check for overflow on very large files */
- if (file_size != finfo.st_size || file_size + 1 < file_size)
- {
- close (file);
-#if defined (EFBIG)
- rv = errno = EFBIG;
-#elif defined (EOVERFLOW)
- rv = errno = EOVERFLOW;
-#else
- rv = errno = EINVAL;
-#endif
- goto truncate_exit;
- }
-
- buffer = (char *)malloc (file_size + 1);
- if (buffer == 0)
- {
- close (file);
- goto truncate_exit;
- }
-
- chars_read = read (file, buffer, file_size);
- close (file);
-
- if (chars_read <= 0)
- {
- rv = (chars_read < 0) ? errno : 0;
- goto truncate_exit;
- }
-
- /* Count backwards from the end of buffer until we have passed
- LINES lines. */
- for (bp = buffer + chars_read - 1; lines && bp > buffer; bp--)
- {
- if (*bp == '\n')
- lines--;
- }
-
- /* If this is the first line, then the file contains exactly the
- number of lines we want to truncate to, so we don't need to do
- anything. It's the first line if we don't find a newline between
- the current value of i and 0. Otherwise, write from the start of
- this line until the end of the buffer. */
- for ( ; bp > buffer; bp--)
- if (*bp == '\n')
- {
- bp++;
- break;
- }
-
- /* Write only if there are more lines in the file than we want to
- truncate to. */
- if (bp > buffer && ((file = open (filename, O_WRONLY|O_TRUNC|O_BINARY, 0600)) != -1))
- {
- write (file, bp, chars_read - (bp - buffer));
-
-#if defined (__BEOS__)
- /* BeOS ignores O_TRUNC. */
- ftruncate (file, chars_read - (bp - buffer));
-#endif
-
- close (file);
- }
-
- truncate_exit:
-
- FREE (buffer);
-
- free (filename);
- return rv;
-}
-
-/* Workhorse function for writing history. Writes NELEMENT entries
- from the history list to FILENAME. OVERWRITE is non-zero if you
- wish to replace FILENAME with the entries. */
-static int
-history_do_write (filename, nelements, overwrite)
- const char *filename;
- int nelements, overwrite;
-{
- register int i;
- char *output;
- int file, mode, rv;
- size_t cursize;
-
-#ifdef HAVE_MMAP
- mode = overwrite ? O_RDWR|O_CREAT|O_TRUNC|O_BINARY : O_RDWR|O_APPEND|O_BINARY;
-#else
- mode = overwrite ? O_WRONLY|O_CREAT|O_TRUNC|O_BINARY : O_WRONLY|O_APPEND|O_BINARY;
-#endif
- output = history_filename (filename);
- rv = 0;
-
- if ((file = open (output, mode, 0600)) == -1)
- {
- FREE (output);
- return (errno);
- }
-
-#ifdef HAVE_MMAP
- cursize = overwrite ? 0 : lseek (file, 0, SEEK_END);
-#endif
-
- if (nelements > history_length)
- nelements = history_length;
-
- /* Build a buffer of all the lines to write, and write them in one syscall.
- Suggested by Peter Ho (peter@robosts.oxford.ac.uk). */
- {
- HIST_ENTRY **the_history; /* local */
- register int j;
- int buffer_size;
- char *buffer;
-
- the_history = history_list ();
- /* Calculate the total number of bytes to write. */
- for (buffer_size = 0, i = history_length - nelements; i < history_length; i++)
- buffer_size += 1 + strlen (the_history[i]->line);
-
- /* Allocate the buffer, and fill it. */
-#ifdef HAVE_MMAP
- if (ftruncate (file, buffer_size+cursize) == -1)
- goto mmap_error;
- buffer = (char *)mmap (0, buffer_size, PROT_READ|PROT_WRITE, MAP_WFLAGS, file, cursize);
- if ((void *)buffer == MAP_FAILED)
- {
-mmap_error:
- rv = errno;
- FREE (output);
- close (file);
- return rv;
- }
-#else
- buffer = (char *)malloc (buffer_size);
- if (buffer == 0)
- {
- rv = errno;
- FREE (output);
- close (file);
- return rv;
- }
-#endif
-
- for (j = 0, i = history_length - nelements; i < history_length; i++)
- {
- strcpy (buffer + j, the_history[i]->line);
- j += strlen (the_history[i]->line);
- buffer[j++] = '\n';
- }
-
-#ifdef HAVE_MMAP
- if (msync (buffer, buffer_size, 0) != 0 || munmap (buffer, buffer_size) != 0)
- rv = errno;
-#else
- if (write (file, buffer, buffer_size) < 0)
- rv = errno;
- free (buffer);
-#endif
- }
-
- close (file);
-
- FREE (output);
-
- return (rv);
-}
-
-/* Append NELEMENT entries to FILENAME. The entries appended are from
- the end of the list minus NELEMENTs up to the end of the list. */
-int
-append_history (nelements, filename)
- int nelements;
- const char *filename;
-{
- return (history_do_write (filename, nelements, HISTORY_APPEND));
-}
-
-/* Overwrite FILENAME with the current history. If FILENAME is NULL,
- then write the history list to ~/.history. Values returned
- are as in read_history ().*/
-int
-write_history (filename)
- const char *filename;
-{
- return (history_do_write (filename, history_length, HISTORY_OVERWRITE));
-}
diff --git a/readline-4.3/histlib.h b/readline-4.3/histlib.h
deleted file mode 100644
index c39af71..0000000
--- a/readline-4.3/histlib.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/* histlib.h -- internal definitions for the history library. */
-/* Copyright (C) 1989, 1992 Free Software Foundation, Inc.
-
- This file contains the GNU History Library (the Library), a set of
- routines for managing the text of previously typed lines.
-
- The Library is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- The Library is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if !defined (_HISTLIB_H_)
-#define _HISTLIB_H_
-
-#if defined (HAVE_STRING_H)
-# include <string.h>
-#else
-# include <strings.h>
-#endif /* !HAVE_STRING_H */
-
-#if !defined (STREQ)
-#define STREQ(a, b) (((a)[0] == (b)[0]) && (strcmp ((a), (b)) == 0))
-#define STREQN(a, b, n) (((n) == 0) ? (1) \
- : ((a)[0] == (b)[0]) && (strncmp ((a), (b), (n)) == 0))
-#endif
-
-#ifndef savestring
-#define savestring(x) strcpy (xmalloc (1 + strlen (x)), (x))
-#endif
-
-#ifndef whitespace
-#define whitespace(c) (((c) == ' ') || ((c) == '\t'))
-#endif
-
-#ifndef _rl_digit_p
-#define _rl_digit_p(c) ((c) >= '0' && (c) <= '9')
-#endif
-
-#ifndef _rl_digit_value
-#define _rl_digit_value(c) ((c) - '0')
-#endif
-
-#ifndef member
-# ifndef strchr
-extern char *strchr ();
-# endif
-#define member(c, s) ((c) ? ((char *)strchr ((s), (c)) != (char *)NULL) : 0)
-#endif
-
-#ifndef FREE
-# define FREE(x) if (x) free (x)
-#endif
-
-/* Possible history errors passed to hist_error. */
-#define EVENT_NOT_FOUND 0
-#define BAD_WORD_SPEC 1
-#define SUBST_FAILED 2
-#define BAD_MODIFIER 3
-#define NO_PREV_SUBST 4
-
-/* Possible definitions for history starting point specification. */
-#define ANCHORED_SEARCH 1
-#define NON_ANCHORED_SEARCH 0
-
-/* Possible definitions for what style of writing the history file we want. */
-#define HISTORY_APPEND 0
-#define HISTORY_OVERWRITE 1
-
-/* Some variable definitions shared across history source files. */
-extern int history_offset;
-
-#endif /* !_HISTLIB_H_ */
diff --git a/readline-4.3/history.c b/readline-4.3/history.c
deleted file mode 100644
index 4242f33..0000000
--- a/readline-4.3/history.c
+++ /dev/null
@@ -1,381 +0,0 @@
-/* History.c -- standalone history library */
-
-/* Copyright (C) 1989, 1992 Free Software Foundation, Inc.
-
- This file contains the GNU History Library (the Library), a set of
- routines for managing the text of previously typed lines.
-
- The Library is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- The Library is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-/* The goal is to make the implementation transparent, so that you
- don't have to know what data types are used, just what functions
- you can call. I think I have done that. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <stdio.h>
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#if defined (HAVE_UNISTD_H)
-# ifdef _MINIX
-# include <sys/types.h>
-# endif
-# include <unistd.h>
-#endif
-
-#include "history.h"
-#include "histlib.h"
-
-#include "xmalloc.h"
-
-/* The number of slots to increase the_history by. */
-#define DEFAULT_HISTORY_GROW_SIZE 50
-
-/* **************************************************************** */
-/* */
-/* History Functions */
-/* */
-/* **************************************************************** */
-
-/* An array of HIST_ENTRY. This is where we store the history. */
-static HIST_ENTRY **the_history = (HIST_ENTRY **)NULL;
-
-/* Non-zero means that we have enforced a limit on the amount of
- history that we save. */
-static int history_stifled;
-
-/* The current number of slots allocated to the input_history. */
-static int history_size;
-
-/* If HISTORY_STIFLED is non-zero, then this is the maximum number of
- entries to remember. */
-int history_max_entries;
-int max_input_history; /* backwards compatibility */
-
-/* The current location of the interactive history pointer. Just makes
- life easier for outside callers. */
-int history_offset;
-
-/* The number of strings currently stored in the history list. */
-int history_length;
-
-/* The logical `base' of the history array. It defaults to 1. */
-int history_base = 1;
-
-/* Return the current HISTORY_STATE of the history. */
-HISTORY_STATE *
-history_get_history_state ()
-{
- HISTORY_STATE *state;
-
- state = (HISTORY_STATE *)xmalloc (sizeof (HISTORY_STATE));
- state->entries = the_history;
- state->offset = history_offset;
- state->length = history_length;
- state->size = history_size;
- state->flags = 0;
- if (history_stifled)
- state->flags |= HS_STIFLED;
-
- return (state);
-}
-
-/* Set the state of the current history array to STATE. */
-void
-history_set_history_state (state)
- HISTORY_STATE *state;
-{
- the_history = state->entries;
- history_offset = state->offset;
- history_length = state->length;
- history_size = state->size;
- if (state->flags & HS_STIFLED)
- history_stifled = 1;
-}
-
-/* Begin a session in which the history functions might be used. This
- initializes interactive variables. */
-void
-using_history ()
-{
- history_offset = history_length;
-}
-
-/* Return the number of bytes that the primary history entries are using.
- This just adds up the lengths of the_history->lines. */
-int
-history_total_bytes ()
-{
- register int i, result;
-
- for (i = result = 0; the_history && the_history[i]; i++)
- result += strlen (the_history[i]->line);
-
- return (result);
-}
-
-/* Returns the magic number which says what history element we are
- looking at now. In this implementation, it returns history_offset. */
-int
-where_history ()
-{
- return (history_offset);
-}
-
-/* Make the current history item be the one at POS, an absolute index.
- Returns zero if POS is out of range, else non-zero. */
-int
-history_set_pos (pos)
- int pos;
-{
- if (pos > history_length || pos < 0 || !the_history)
- return (0);
- history_offset = pos;
- return (1);
-}
-
-/* Return the current history array. The caller has to be carefull, since this
- is the actual array of data, and could be bashed or made corrupt easily.
- The array is terminated with a NULL pointer. */
-HIST_ENTRY **
-history_list ()
-{
- return (the_history);
-}
-
-/* Return the history entry at the current position, as determined by
- history_offset. If there is no entry there, return a NULL pointer. */
-HIST_ENTRY *
-current_history ()
-{
- return ((history_offset == history_length) || the_history == 0)
- ? (HIST_ENTRY *)NULL
- : the_history[history_offset];
-}
-
-/* Back up history_offset to the previous history entry, and return
- a pointer to that entry. If there is no previous entry then return
- a NULL pointer. */
-HIST_ENTRY *
-previous_history ()
-{
- return history_offset ? the_history[--history_offset] : (HIST_ENTRY *)NULL;
-}
-
-/* Move history_offset forward to the next history entry, and return
- a pointer to that entry. If there is no next entry then return a
- NULL pointer. */
-HIST_ENTRY *
-next_history ()
-{
- return (history_offset == history_length) ? (HIST_ENTRY *)NULL : the_history[++history_offset];
-}
-
-/* Return the history entry which is logically at OFFSET in the history array.
- OFFSET is relative to history_base. */
-HIST_ENTRY *
-history_get (offset)
- int offset;
-{
- int local_index;
-
- local_index = offset - history_base;
- return (local_index >= history_length || local_index < 0 || !the_history)
- ? (HIST_ENTRY *)NULL
- : the_history[local_index];
-}
-
-/* Place STRING at the end of the history list. The data field
- is set to NULL. */
-void
-add_history (string)
- const char *string;
-{
- HIST_ENTRY *temp;
-
- if (history_stifled && (history_length == history_max_entries))
- {
- register int i;
-
- /* If the history is stifled, and history_length is zero,
- and it equals history_max_entries, we don't save items. */
- if (history_length == 0)
- return;
-
- /* If there is something in the slot, then remove it. */
- if (the_history[0])
- {
- free (the_history[0]->line);
- free (the_history[0]);
- }
-
- /* Copy the rest of the entries, moving down one slot. */
- for (i = 0; i < history_length; i++)
- the_history[i] = the_history[i + 1];
-
- history_base++;
- }
- else
- {
- if (history_size == 0)
- {
- history_size = DEFAULT_HISTORY_GROW_SIZE;
- the_history = (HIST_ENTRY **)xmalloc (history_size * sizeof (HIST_ENTRY *));
- history_length = 1;
- }
- else
- {
- if (history_length == (history_size - 1))
- {
- history_size += DEFAULT_HISTORY_GROW_SIZE;
- the_history = (HIST_ENTRY **)
- xrealloc (the_history, history_size * sizeof (HIST_ENTRY *));
- }
- history_length++;
- }
- }
-
- temp = (HIST_ENTRY *)xmalloc (sizeof (HIST_ENTRY));
- temp->line = savestring (string);
- temp->data = (char *)NULL;
-
- the_history[history_length] = (HIST_ENTRY *)NULL;
- the_history[history_length - 1] = temp;
-}
-
-/* Make the history entry at WHICH have LINE and DATA. This returns
- the old entry so you can dispose of the data. In the case of an
- invalid WHICH, a NULL pointer is returned. */
-HIST_ENTRY *
-replace_history_entry (which, line, data)
- int which;
- const char *line;
- histdata_t data;
-{
- HIST_ENTRY *temp, *old_value;
-
- if (which >= history_length)
- return ((HIST_ENTRY *)NULL);
-
- temp = (HIST_ENTRY *)xmalloc (sizeof (HIST_ENTRY));
- old_value = the_history[which];
-
- temp->line = savestring (line);
- temp->data = data;
- the_history[which] = temp;
-
- return (old_value);
-}
-
-/* Remove history element WHICH from the history. The removed
- element is returned to you so you can free the line, data,
- and containing structure. */
-HIST_ENTRY *
-remove_history (which)
- int which;
-{
- HIST_ENTRY *return_value;
- register int i;
-
- if (which >= history_length || !history_length)
- return_value = (HIST_ENTRY *)NULL;
- else
- {
- return_value = the_history[which];
-
- for (i = which; i < history_length; i++)
- the_history[i] = the_history[i + 1];
-
- history_length--;
- }
-
- return (return_value);
-}
-
-/* Stifle the history list, remembering only MAX number of lines. */
-void
-stifle_history (max)
- int max;
-{
- register int i, j;
-
- if (max < 0)
- max = 0;
-
- if (history_length > max)
- {
- /* This loses because we cannot free the data. */
- for (i = 0, j = history_length - max; i < j; i++)
- {
- free (the_history[i]->line);
- free (the_history[i]);
- }
-
- history_base = i;
- for (j = 0, i = history_length - max; j < max; i++, j++)
- the_history[j] = the_history[i];
- the_history[j] = (HIST_ENTRY *)NULL;
- history_length = j;
- }
-
- history_stifled = 1;
- max_input_history = history_max_entries = max;
-}
-
-/* Stop stifling the history. This returns the previous maximum
- number of history entries. The value is positive if the history
- was stifled, negative if it wasn't. */
-int
-unstifle_history ()
-{
- if (history_stifled)
- {
- history_stifled = 0;
- return (history_max_entries);
- }
- else
- return (-history_max_entries);
-}
-
-int
-history_is_stifled ()
-{
- return (history_stifled);
-}
-
-void
-clear_history ()
-{
- register int i;
-
- /* This loses because we cannot free the data. */
- for (i = 0; i < history_length; i++)
- {
- free (the_history[i]->line);
- free (the_history[i]);
- the_history[i] = (HIST_ENTRY *)NULL;
- }
-
- history_offset = history_length = 0;
-}
diff --git a/readline-4.3/history.h b/readline-4.3/history.h
deleted file mode 100644
index 58b5de4..0000000
--- a/readline-4.3/history.h
+++ /dev/null
@@ -1,246 +0,0 @@
-/* History.h -- the names of functions that you can call in history. */
-/* Copyright (C) 1989, 1992 Free Software Foundation, Inc.
-
- This file contains the GNU History Library (the Library), a set of
- routines for managing the text of previously typed lines.
-
- The Library is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- The Library is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#ifndef _HISTORY_H_
-#define _HISTORY_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#if defined READLINE_LIBRARY
-# include "rlstdc.h"
-# include "rltypedefs.h"
-#else
-# include <readline/rlstdc.h>
-# include <readline/rltypedefs.h>
-#endif
-
-#ifdef __STDC__
-typedef void *histdata_t;
-#else
-typedef char *histdata_t;
-#endif
-
-/* The structure used to store a history entry. */
-typedef struct _hist_entry {
- char *line;
- histdata_t data;
-} HIST_ENTRY;
-
-/* A structure used to pass the current state of the history stuff around. */
-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;
-
-/* Flag values for the `flags' member of HISTORY_STATE. */
-#define HS_STIFLED 0x01
-
-/* Initialization and state management. */
-
-/* Begin a session in which the history functions might be used. This
- just initializes the interactive variables. */
-extern void using_history PARAMS((void));
-
-/* Return the current HISTORY_STATE of the history. */
-extern HISTORY_STATE *history_get_history_state PARAMS((void));
-
-/* Set the state of the current history array to STATE. */
-extern void history_set_history_state PARAMS((HISTORY_STATE *));
-
-/* Manage the history list. */
-
-/* Place STRING at the end of the history list.
- The associated data field (if any) is set to NULL. */
-extern void add_history PARAMS((const char *));
-
-/* A reasonably useless function, only here for completeness. WHICH
- is the magic number that tells us which element to delete. The
- elements are numbered from 0. */
-extern HIST_ENTRY *remove_history PARAMS((int));
-
-/* Make the history entry at WHICH have LINE and DATA. This returns
- the old entry so you can dispose of the data. In the case of an
- invalid WHICH, a NULL pointer is returned. */
-extern HIST_ENTRY *replace_history_entry PARAMS((int, const char *, histdata_t));
-
-/* Clear the history list and start over. */
-extern void clear_history PARAMS((void));
-
-/* Stifle the history list, remembering only MAX number of entries. */
-extern void stifle_history PARAMS((int));
-
-/* Stop stifling the history. This returns the previous amount the
- history was stifled by. The value is positive if the history was
- stifled, negative if it wasn't. */
-extern int unstifle_history PARAMS((void));
-
-/* Return 1 if the history is stifled, 0 if it is not. */
-extern int history_is_stifled PARAMS((void));
-
-/* Information about the history list. */
-
-/* Return a NULL terminated array of HIST_ENTRY which is the current input
- history. Element 0 of this list is the beginning of time. If there
- is no history, return NULL. */
-extern HIST_ENTRY **history_list PARAMS((void));
-
-/* Returns the number which says what history element we are now
- looking at. */
-extern int where_history PARAMS((void));
-
-/* Return the history entry at the current position, as determined by
- history_offset. If there is no entry there, return a NULL pointer. */
-extern HIST_ENTRY *current_history PARAMS((void));
-
-/* Return the history entry which is logically at OFFSET in the history
- array. OFFSET is relative to history_base. */
-extern HIST_ENTRY *history_get PARAMS((int));
-
-/* Return the number of bytes that the primary history entries are using.
- This just adds up the lengths of the_history->lines. */
-extern int history_total_bytes PARAMS((void));
-
-/* Moving around the history list. */
-
-/* Set the position in the history list to POS. */
-extern int history_set_pos PARAMS((int));
-
-/* Back up history_offset to the previous history entry, and return
- a pointer to that entry. If there is no previous entry, return
- a NULL pointer. */
-extern HIST_ENTRY *previous_history PARAMS((void));
-
-/* Move history_offset forward to the next item in the input_history,
- and return the a pointer to that entry. If there is no next entry,
- return a NULL pointer. */
-extern HIST_ENTRY *next_history PARAMS((void));
-
-/* Searching the history list. */
-
-/* Search the history for STRING, starting at history_offset.
- If DIRECTION < 0, then the search is through previous entries,
- else through subsequent. If the string is found, then
- current_history () is the history entry, and the value of this function
- is the offset in the line of that history entry that the string was
- found in. Otherwise, nothing is changed, and a -1 is returned. */
-extern int history_search PARAMS((const char *, int));
-
-/* Search the history for STRING, starting at history_offset.
- The search is anchored: matching lines must begin with string.
- DIRECTION is as in history_search(). */
-extern int history_search_prefix PARAMS((const char *, int));
-
-/* Search for STRING in the history list, starting at POS, an
- absolute index into the list. DIR, if negative, says to search
- backwards from POS, else forwards.
- Returns the absolute index of the history element where STRING
- was found, or -1 otherwise. */
-extern int history_search_pos PARAMS((const char *, int, int));
-
-/* Managing the history file. */
-
-/* Add the contents of FILENAME to the history list, a line at a time.
- If FILENAME is NULL, then read from ~/.history. Returns 0 if
- successful, or errno if not. */
-extern int read_history PARAMS((const char *));
-
-/* Read a range of lines from FILENAME, adding them to the history list.
- Start reading at the FROM'th line and end at the TO'th. If FROM
- is zero, start at the beginning. If TO is less than FROM, read
- until the end of the file. If FILENAME is NULL, then read from
- ~/.history. Returns 0 if successful, or errno if not. */
-extern int read_history_range PARAMS((const char *, int, int));
-
-/* Write the current history to FILENAME. If FILENAME is NULL,
- then write the history list to ~/.history. Values returned
- are as in read_history (). */
-extern int write_history PARAMS((const char *));
-
-/* Append NELEMENT entries to FILENAME. The entries appended are from
- the end of the list minus NELEMENTs up to the end of the list. */
-extern int append_history PARAMS((int, const char *));
-
-/* Truncate the history file, leaving only the last NLINES lines. */
-extern int history_truncate_file PARAMS((const char *, int));
-
-/* History expansion. */
-
-/* Expand the string STRING, placing the result into OUTPUT, a pointer
- to a string. Returns:
-
- 0) If no expansions took place (or, if the only change in
- the text was the de-slashifying of the history expansion
- character)
- 1) If expansions did take place
- -1) If there was an error in expansion.
- 2) If the returned line should just be printed.
-
- If an error ocurred in expansion, then OUTPUT contains a descriptive
- error message. */
-extern int history_expand PARAMS((char *, char **));
-
-/* Extract a string segment consisting of the FIRST through LAST
- arguments present in STRING. Arguments are broken up as in
- the shell. */
-extern char *history_arg_extract PARAMS((int, int, const char *));
-
-/* Return the text of the history event beginning at the current
- offset into STRING. Pass STRING with *INDEX equal to the
- history_expansion_char that begins this specification.
- DELIMITING_QUOTE is a character that is allowed to end the string
- specification for what to search for in addition to the normal
- characters `:', ` ', `\t', `\n', and sometimes `?'. */
-extern char *get_history_event PARAMS((const char *, int *, int));
-
-/* Return an array of tokens, much as the shell might. The tokens are
- parsed out of STRING. */
-extern char **history_tokenize PARAMS((const char *));
-
-/* Exported history variables. */
-extern int history_base;
-extern int history_length;
-extern int history_max_entries;
-extern char history_expansion_char;
-extern char history_subst_char;
-extern char *history_word_delimiters;
-extern char history_comment_char;
-extern char *history_no_expand_chars;
-extern char *history_search_delimiter_chars;
-extern int history_quotes_inhibit_expansion;
-
-/* Backwards compatibility */
-extern int max_input_history;
-
-/* If set, this function is called to decide whether or not a particular
- history expansion should be treated as a special case for the calling
- application and not expanded. */
-extern rl_linebuf_func_t *history_inhibit_expansion_function;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* !_HISTORY_H_ */
diff --git a/readline-4.3/histsearch.c b/readline-4.3/histsearch.c
deleted file mode 100644
index d94fd6c..0000000
--- a/readline-4.3/histsearch.c
+++ /dev/null
@@ -1,195 +0,0 @@
-/* histsearch.c -- searching the history list. */
-
-/* Copyright (C) 1989, 1992 Free Software Foundation, Inc.
-
- This file contains the GNU History Library (the Library), a set of
- routines for managing the text of previously typed lines.
-
- The Library is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- The Library is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <stdio.h>
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#if defined (HAVE_UNISTD_H)
-# ifdef _MINIX
-# include <sys/types.h>
-# endif
-# include <unistd.h>
-#endif
-
-#include "history.h"
-#include "histlib.h"
-
-/* The list of alternate characters that can delimit a history search
- string. */
-char *history_search_delimiter_chars = (char *)NULL;
-
-static int history_search_internal PARAMS((const char *, int, int));
-
-/* Search the history for STRING, starting at history_offset.
- If DIRECTION < 0, then the search is through previous entries, else
- through subsequent. If ANCHORED is non-zero, the string must
- appear at the beginning of a history line, otherwise, the string
- may appear anywhere in the line. If the string is found, then
- current_history () is the history entry, and the value of this
- function is the offset in the line of that history entry that the
- string was found in. Otherwise, nothing is changed, and a -1 is
- returned. */
-
-static int
-history_search_internal (string, direction, anchored)
- const char *string;
- int direction, anchored;
-{
- register int i, reverse;
- register char *line;
- register int line_index;
- int string_len;
- HIST_ENTRY **the_history; /* local */
-
- i = history_offset;
- reverse = (direction < 0);
-
- /* Take care of trivial cases first. */
- if (string == 0 || *string == '\0')
- return (-1);
-
- if (!history_length || ((i == history_length) && !reverse))
- return (-1);
-
- if (reverse && (i == history_length))
- i--;
-
-#define NEXT_LINE() do { if (reverse) i--; else i++; } while (0)
-
- the_history = history_list ();
- string_len = strlen (string);
- while (1)
- {
- /* Search each line in the history list for STRING. */
-
- /* At limit for direction? */
- if ((reverse && i < 0) || (!reverse && i == history_length))
- return (-1);
-
- line = the_history[i]->line;
- line_index = strlen (line);
-
- /* If STRING is longer than line, no match. */
- if (string_len > line_index)
- {
- NEXT_LINE ();
- continue;
- }
-
- /* Handle anchored searches first. */
- if (anchored == ANCHORED_SEARCH)
- {
- if (STREQN (string, line, string_len))
- {
- history_offset = i;
- return (0);
- }
-
- NEXT_LINE ();
- continue;
- }
-
- /* Do substring search. */
- if (reverse)
- {
- line_index -= string_len;
-
- while (line_index >= 0)
- {
- if (STREQN (string, line + line_index, string_len))
- {
- history_offset = i;
- return (line_index);
- }
- line_index--;
- }
- }
- else
- {
- register int limit;
-
- limit = line_index - string_len + 1;
- line_index = 0;
-
- while (line_index < limit)
- {
- if (STREQN (string, line + line_index, string_len))
- {
- history_offset = i;
- return (line_index);
- }
- line_index++;
- }
- }
- NEXT_LINE ();
- }
-}
-
-/* Do a non-anchored search for STRING through the history in DIRECTION. */
-int
-history_search (string, direction)
- const char *string;
- int direction;
-{
- return (history_search_internal (string, direction, NON_ANCHORED_SEARCH));
-}
-
-/* Do an anchored search for string through the history in DIRECTION. */
-int
-history_search_prefix (string, direction)
- const char *string;
- int direction;
-{
- return (history_search_internal (string, direction, ANCHORED_SEARCH));
-}
-
-/* Search for STRING in the history list. DIR is < 0 for searching
- backwards. POS is an absolute index into the history list at
- which point to begin searching. */
-int
-history_search_pos (string, dir, pos)
- const char *string;
- int dir, pos;
-{
- int ret, old;
-
- old = where_history ();
- history_set_pos (pos);
- if (history_search (string, dir) == -1)
- {
- history_set_pos (old);
- return (-1);
- }
- ret = where_history ();
- history_set_pos (old);
- return ret;
-}
diff --git a/readline-4.3/input.c b/readline-4.3/input.c
deleted file mode 100644
index 841f05d..0000000
--- a/readline-4.3/input.c
+++ /dev/null
@@ -1,540 +0,0 @@
-/* input.c -- character input functions for readline. */
-
-/* Copyright (C) 1994 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <sys/types.h>
-#include <fcntl.h>
-#if defined (HAVE_SYS_FILE_H)
-# include <sys/file.h>
-#endif /* HAVE_SYS_FILE_H */
-
-#if defined (HAVE_UNISTD_H)
-# include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#if defined (HAVE_SELECT)
-# if !defined (HAVE_SYS_SELECT_H) || !defined (M_UNIX)
-# include <sys/time.h>
-# endif
-#endif /* HAVE_SELECT */
-#if defined (HAVE_SYS_SELECT_H)
-# include <sys/select.h>
-#endif
-
-#if defined (FIONREAD_IN_SYS_IOCTL)
-# include <sys/ioctl.h>
-#endif
-
-#include <stdio.h>
-#include <errno.h>
-
-#if !defined (errno)
-extern int errno;
-#endif /* !errno */
-
-/* System-specific feature definitions and include files. */
-#include "rldefs.h"
-#include "rlmbutil.h"
-
-/* Some standard library routines. */
-#include "readline.h"
-
-#include "rlprivate.h"
-#include "rlshell.h"
-#include "xmalloc.h"
-
-/* What kind of non-blocking I/O do we have? */
-#if !defined (O_NDELAY) && defined (O_NONBLOCK)
-# define O_NDELAY O_NONBLOCK /* Posix style */
-#endif
-
-/* Non-null means it is a pointer to a function to run while waiting for
- character input. */
-rl_hook_func_t *rl_event_hook = (rl_hook_func_t *)NULL;
-
-rl_getc_func_t *rl_getc_function = rl_getc;
-
-static int _keyboard_input_timeout = 100000; /* 0.1 seconds; it's in usec */
-
-static int ibuffer_space PARAMS((void));
-static int rl_get_char PARAMS((int *));
-static int rl_gather_tyi PARAMS((void));
-
-/* **************************************************************** */
-/* */
-/* Character Input Buffering */
-/* */
-/* **************************************************************** */
-
-static int pop_index, push_index;
-static unsigned char ibuffer[512];
-static int ibuffer_len = sizeof (ibuffer) - 1;
-
-#define any_typein (push_index != pop_index)
-
-int
-_rl_any_typein ()
-{
- return any_typein;
-}
-
-/* Return the amount of space available in the buffer for stuffing
- characters. */
-static int
-ibuffer_space ()
-{
- if (pop_index > push_index)
- return (pop_index - push_index - 1);
- else
- return (ibuffer_len - (push_index - pop_index));
-}
-
-/* Get a key from the buffer of characters to be read.
- Return the key in KEY.
- Result is KEY if there was a key, or 0 if there wasn't. */
-static int
-rl_get_char (key)
- int *key;
-{
- if (push_index == pop_index)
- return (0);
-
- *key = ibuffer[pop_index++];
-
- if (pop_index >= ibuffer_len)
- pop_index = 0;
-
- return (1);
-}
-
-/* Stuff KEY into the *front* of the input buffer.
- Returns non-zero if successful, zero if there is
- no space left in the buffer. */
-int
-_rl_unget_char (key)
- int key;
-{
- if (ibuffer_space ())
- {
- pop_index--;
- if (pop_index < 0)
- pop_index = ibuffer_len - 1;
- ibuffer[pop_index] = key;
- return (1);
- }
- return (0);
-}
-
-/* If a character is available to be read, then read it and stuff it into
- IBUFFER. Otherwise, just return. Returns number of characters read
- (0 if none available) and -1 on error (EIO). */
-static int
-rl_gather_tyi ()
-{
- int tty;
- register int tem, result;
- int chars_avail;
- char input;
-#if defined(HAVE_SELECT)
- fd_set readfds, exceptfds;
- struct timeval timeout;
-#endif
-
- tty = fileno (rl_instream);
-
-#if defined (HAVE_SELECT)
- FD_ZERO (&readfds);
- FD_ZERO (&exceptfds);
- FD_SET (tty, &readfds);
- FD_SET (tty, &exceptfds);
- timeout.tv_sec = 0;
- timeout.tv_usec = _keyboard_input_timeout;
- result = select (tty + 1, &readfds, (fd_set *)NULL, &exceptfds, &timeout);
- if (result <= 0)
- return 0; /* Nothing to read. */
-#endif
-
- result = -1;
-#if defined (FIONREAD)
- errno = 0;
- result = ioctl (tty, FIONREAD, &chars_avail);
- if (result == -1 && errno == EIO)
- return -1;
-#endif
-
-#if defined (O_NDELAY)
- if (result == -1)
- {
- tem = fcntl (tty, F_GETFL, 0);
-
- fcntl (tty, F_SETFL, (tem | O_NDELAY));
- chars_avail = read (tty, &input, 1);
-
- fcntl (tty, F_SETFL, tem);
- if (chars_avail == -1 && errno == EAGAIN)
- return 0;
- }
-#endif /* O_NDELAY */
-
- /* If there's nothing available, don't waste time trying to read
- something. */
- if (chars_avail <= 0)
- return 0;
-
- tem = ibuffer_space ();
-
- if (chars_avail > tem)
- chars_avail = tem;
-
- /* One cannot read all of the available input. I can only read a single
- character at a time, or else programs which require input can be
- thwarted. If the buffer is larger than one character, I lose.
- Damn! */
- if (tem < ibuffer_len)
- chars_avail = 0;
-
- if (result != -1)
- {
- while (chars_avail--)
- rl_stuff_char ((*rl_getc_function) (rl_instream));
- }
- else
- {
- if (chars_avail)
- rl_stuff_char (input);
- }
-
- return 1;
-}
-
-int
-rl_set_keyboard_input_timeout (u)
- int u;
-{
- int o;
-
- o = _keyboard_input_timeout;
- if (u > 0)
- _keyboard_input_timeout = u;
- return (o);
-}
-
-/* Is there input available to be read on the readline input file
- descriptor? Only works if the system has select(2) or FIONREAD.
- Uses the value of _keyboard_input_timeout as the timeout; if another
- readline function wants to specify a timeout and not leave it up to
- the user, it should use _rl_input_queued(timeout_value_in_microseconds)
- instead. */
-int
-_rl_input_available ()
-{
-#if defined(HAVE_SELECT)
- fd_set readfds, exceptfds;
- struct timeval timeout;
-#endif
-#if !defined (HAVE_SELECT) && defined(FIONREAD)
- int chars_avail;
-#endif
- int tty;
-
- tty = fileno (rl_instream);
-
-#if defined (HAVE_SELECT)
- FD_ZERO (&readfds);
- FD_ZERO (&exceptfds);
- FD_SET (tty, &readfds);
- FD_SET (tty, &exceptfds);
- timeout.tv_sec = 0;
- timeout.tv_usec = _keyboard_input_timeout;
- return (select (tty + 1, &readfds, (fd_set *)NULL, &exceptfds, &timeout) > 0);
-#else
-
-#if defined (FIONREAD)
- if (ioctl (tty, FIONREAD, &chars_avail) == 0)
- return (chars_avail);
-#endif
-
-#endif
-
- return 0;
-}
-
-int
-_rl_input_queued (t)
- int t;
-{
- int old_timeout, r;
-
- old_timeout = rl_set_keyboard_input_timeout (t);
- r = _rl_input_available ();
- rl_set_keyboard_input_timeout (old_timeout);
- return r;
-}
-
-void
-_rl_insert_typein (c)
- int c;
-{
- int key, t, i;
- char *string;
-
- i = key = 0;
- string = (char *)xmalloc (ibuffer_len + 1);
- string[i++] = (char) c;
-
- while ((t = rl_get_char (&key)) &&
- _rl_keymap[key].type == ISFUNC &&
- _rl_keymap[key].function == rl_insert)
- string[i++] = key;
-
- if (t)
- _rl_unget_char (key);
-
- string[i] = '\0';
- rl_insert_text (string);
- free (string);
-}
-
-/* Add KEY to the buffer of characters to be read. Returns 1 if the
- character was stuffed correctly; 0 otherwise. */
-int
-rl_stuff_char (key)
- int key;
-{
- if (ibuffer_space () == 0)
- return 0;
-
- if (key == EOF)
- {
- key = NEWLINE;
- rl_pending_input = EOF;
- RL_SETSTATE (RL_STATE_INPUTPENDING);
- }
- ibuffer[push_index++] = key;
- if (push_index >= ibuffer_len)
- push_index = 0;
-
- return 1;
-}
-
-/* Make C be the next command to be executed. */
-int
-rl_execute_next (c)
- int c;
-{
- rl_pending_input = c;
- RL_SETSTATE (RL_STATE_INPUTPENDING);
- return 0;
-}
-
-/* Clear any pending input pushed with rl_execute_next() */
-int
-rl_clear_pending_input ()
-{
- rl_pending_input = 0;
- RL_UNSETSTATE (RL_STATE_INPUTPENDING);
- return 0;
-}
-
-/* **************************************************************** */
-/* */
-/* Character Input */
-/* */
-/* **************************************************************** */
-
-/* Read a key, including pending input. */
-int
-rl_read_key ()
-{
- int c;
-
- rl_key_sequence_length++;
-
- if (rl_pending_input)
- {
- c = rl_pending_input;
- rl_clear_pending_input ();
- }
- else
- {
- /* If input is coming from a macro, then use that. */
- if (c = _rl_next_macro_key ())
- return (c);
-
- /* If the user has an event function, then call it periodically. */
- if (rl_event_hook)
- {
- while (rl_event_hook && rl_get_char (&c) == 0)
- {
- (*rl_event_hook) ();
- if (rl_done) /* XXX - experimental */
- return ('\n');
- if (rl_gather_tyi () < 0) /* XXX - EIO */
- {
- rl_done = 1;
- return ('\n');
- }
- }
- }
- else
- {
- if (rl_get_char (&c) == 0)
- c = (*rl_getc_function) (rl_instream);
- }
- }
-
- return (c);
-}
-
-int
-rl_getc (stream)
- FILE *stream;
-{
- int result;
- unsigned char c;
-
- while (1)
- {
- result = read (fileno (stream), &c, sizeof (unsigned char));
-
- if (result == sizeof (unsigned char))
- return (c);
-
- /* If zero characters are returned, then the file that we are
- reading from is empty! Return EOF in that case. */
- if (result == 0)
- return (EOF);
-
-#if defined (__BEOS__)
- if (errno == EINTR)
- continue;
-#endif
-
-#if defined (EWOULDBLOCK)
-# define X_EWOULDBLOCK EWOULDBLOCK
-#else
-# define X_EWOULDBLOCK -99
-#endif
-
-#if defined (EAGAIN)
-# define X_EAGAIN EAGAIN
-#else
-# define X_EAGAIN -99
-#endif
-
- if (errno == X_EWOULDBLOCK || errno == X_EAGAIN)
- {
- if (sh_unset_nodelay_mode (fileno (stream)) < 0)
- return (EOF);
- continue;
- }
-
-#undef X_EWOULDBLOCK
-#undef X_EAGAIN
-
- /* If the error that we received was SIGINT, then try again,
- this is simply an interrupted system call to read ().
- Otherwise, some error ocurred, also signifying EOF. */
- if (errno != EINTR)
- return (EOF);
- }
-}
-
-#if defined (HANDLE_MULTIBYTE)
-/* read multibyte char */
-int
-_rl_read_mbchar (mbchar, size)
- char *mbchar;
- int size;
-{
- int mb_len = 0;
- size_t mbchar_bytes_length;
- wchar_t wc;
- mbstate_t ps, ps_back;
-
- memset(&ps, 0, sizeof (mbstate_t));
- memset(&ps_back, 0, sizeof (mbstate_t));
-
- while (mb_len < size)
- {
- RL_SETSTATE(RL_STATE_MOREINPUT);
- mbchar[mb_len++] = rl_read_key ();
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
-
- mbchar_bytes_length = mbrtowc (&wc, mbchar, mb_len, &ps);
- if (mbchar_bytes_length == (size_t)(-1))
- break; /* invalid byte sequence for the current locale */
- else if (mbchar_bytes_length == (size_t)(-2))
- {
- /* shorted bytes */
- ps = ps_back;
- continue;
- }
- else if (mbchar_bytes_length > (size_t)(0))
- break;
- }
-
- return mb_len;
-}
-
-/* Read a multibyte-character string whose first character is FIRST into
- the buffer MB of length MBLEN. Returns the last character read, which
- may be FIRST. Used by the search functions, among others. Very similar
- to _rl_read_mbchar. */
-int
-_rl_read_mbstring (first, mb, mblen)
- int first;
- char *mb;
- int mblen;
-{
- int i, c;
- mbstate_t ps;
-
- c = first;
- memset (mb, 0, mblen);
- for (i = 0; i < mblen; i++)
- {
- mb[i] = (char)c;
- memset (&ps, 0, sizeof (mbstate_t));
- if (_rl_get_char_len (mb, &ps) == -2)
- {
- /* Read more for multibyte character */
- RL_SETSTATE (RL_STATE_MOREINPUT);
- c = rl_read_key ();
- RL_UNSETSTATE (RL_STATE_MOREINPUT);
- }
- else
- break;
- }
- return c;
-}
-#endif /* HANDLE_MULTIBYTE */
diff --git a/readline-4.3/isearch.c b/readline-4.3/isearch.c
deleted file mode 100644
index c1ea5b3..0000000
--- a/readline-4.3/isearch.c
+++ /dev/null
@@ -1,560 +0,0 @@
-/* **************************************************************** */
-/* */
-/* I-Search and Searching */
-/* */
-/* **************************************************************** */
-
-/* Copyright (C) 1987-2002 Free Software Foundation, Inc.
-
- This file contains the Readline Library (the Library), a set of
- routines for providing Emacs style line input to programs that ask
- for it.
-
- The Library is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- The Library is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <sys/types.h>
-
-#include <stdio.h>
-
-#if defined (HAVE_UNISTD_H)
-# include <unistd.h>
-#endif
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif
-
-#include "rldefs.h"
-#include "rlmbutil.h"
-
-#include "readline.h"
-#include "history.h"
-
-#include "rlprivate.h"
-#include "xmalloc.h"
-
-/* Variables exported to other files in the readline library. */
-char *_rl_isearch_terminators = (char *)NULL;
-
-/* Variables imported from other files in the readline library. */
-extern HIST_ENTRY *_rl_saved_line_for_history;
-
-/* Forward declarations */
-static int rl_search_history PARAMS((int, int));
-
-/* Last line found by the current incremental search, so we don't `find'
- identical lines many times in a row. */
-static char *prev_line_found;
-
-/* Last search string and its length. */
-static char *last_isearch_string;
-static int last_isearch_string_len;
-
-static char *default_isearch_terminators = "\033\012";
-
-/* Search backwards through the history looking for a string which is typed
- interactively. Start with the current line. */
-int
-rl_reverse_search_history (sign, key)
- int sign, key;
-{
- return (rl_search_history (-sign, key));
-}
-
-/* Search forwards through the history looking for a string which is typed
- interactively. Start with the current line. */
-int
-rl_forward_search_history (sign, key)
- int sign, key;
-{
- return (rl_search_history (sign, key));
-}
-
-/* Display the current state of the search in the echo-area.
- SEARCH_STRING contains the string that is being searched for,
- DIRECTION is zero for forward, or 1 for reverse,
- WHERE is the history list number of the current line. If it is
- -1, then this line is the starting one. */
-static void
-rl_display_search (search_string, reverse_p, where)
- char *search_string;
- int reverse_p, where;
-{
- char *message;
- int msglen, searchlen;
-
- searchlen = (search_string && *search_string) ? strlen (search_string) : 0;
-
- message = (char *)xmalloc (searchlen + 33);
- msglen = 0;
-
-#if defined (NOTDEF)
- if (where != -1)
- {
- sprintf (message, "[%d]", where + history_base);
- msglen = strlen (message);
- }
-#endif /* NOTDEF */
-
- message[msglen++] = '(';
-
- if (reverse_p)
- {
- strcpy (message + msglen, "reverse-");
- msglen += 8;
- }
-
- strcpy (message + msglen, "i-search)`");
- msglen += 10;
-
- if (search_string)
- {
- strcpy (message + msglen, search_string);
- msglen += searchlen;
- }
-
- strcpy (message + msglen, "': ");
-
- rl_message ("%s", message);
- free (message);
- (*rl_redisplay_function) ();
-}
-
-/* Search through the history looking for an interactively typed string.
- This is analogous to i-search. We start the search in the current line.
- DIRECTION is which direction to search; >= 0 means forward, < 0 means
- backwards. */
-static int
-rl_search_history (direction, invoking_key)
- int direction, invoking_key;
-{
- /* The string that the user types in to search for. */
- char *search_string;
-
- /* The current length of SEARCH_STRING. */
- int search_string_index;
-
- /* The amount of space that SEARCH_STRING has allocated to it. */
- int search_string_size;
-
- /* The list of lines to search through. */
- char **lines, *allocated_line;
-
- /* The length of LINES. */
- int hlen;
-
- /* Where we get LINES from. */
- HIST_ENTRY **hlist;
-
- register int i;
- int orig_point, orig_mark, orig_line, last_found_line;
- int c, found, failed, sline_len;
- int n, wstart, wlen;
-#if defined (HANDLE_MULTIBYTE)
- char mb[MB_LEN_MAX];
-#endif
-
- /* The line currently being searched. */
- char *sline;
-
- /* Offset in that line. */
- int line_index;
-
- /* Non-zero if we are doing a reverse search. */
- int reverse;
-
- /* The list of characters which terminate the search, but are not
- subsequently executed. If the variable isearch-terminators has
- been set, we use that value, otherwise we use ESC and C-J. */
- char *isearch_terminators;
-
- RL_SETSTATE(RL_STATE_ISEARCH);
- orig_point = rl_point;
- orig_mark = rl_mark;
- last_found_line = orig_line = where_history ();
- reverse = direction < 0;
- hlist = history_list ();
- allocated_line = (char *)NULL;
-
- isearch_terminators = _rl_isearch_terminators ? _rl_isearch_terminators
- : default_isearch_terminators;
-
- /* Create an arrary of pointers to the lines that we want to search. */
- rl_maybe_replace_line ();
- i = 0;
- if (hlist)
- for (i = 0; hlist[i]; i++);
-
- /* Allocate space for this many lines, +1 for the current input line,
- and remember those lines. */
- lines = (char **)xmalloc ((1 + (hlen = i)) * sizeof (char *));
- for (i = 0; i < hlen; i++)
- lines[i] = hlist[i]->line;
-
- if (_rl_saved_line_for_history)
- lines[i] = _rl_saved_line_for_history->line;
- else
- {
- /* Keep track of this so we can free it. */
- allocated_line = (char *)xmalloc (1 + strlen (rl_line_buffer));
- strcpy (allocated_line, &rl_line_buffer[0]);
- lines[i] = allocated_line;
- }
-
- hlen++;
-
- /* The line where we start the search. */
- i = orig_line;
-
- rl_save_prompt ();
-
- /* Initialize search parameters. */
- search_string = (char *)xmalloc (search_string_size = 128);
- *search_string = '\0';
- search_string_index = 0;
- prev_line_found = (char *)0; /* XXX */
-
- /* Normalize DIRECTION into 1 or -1. */
- direction = (direction >= 0) ? 1 : -1;
-
- rl_display_search (search_string, reverse, -1);
-
- sline = rl_line_buffer;
- sline_len = strlen (sline);
- line_index = rl_point;
-
- found = failed = 0;
- for (;;)
- {
- rl_command_func_t *f = (rl_command_func_t *)NULL;
-
- /* Read a key and decide how to proceed. */
- RL_SETSTATE(RL_STATE_MOREINPUT);
- c = rl_read_key ();
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
-
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- c = _rl_read_mbstring (c, mb, MB_LEN_MAX);
-#endif
-
- /* Translate the keys we do something with to opcodes. */
- if (c >= 0 && _rl_keymap[c].type == ISFUNC)
- {
- f = _rl_keymap[c].function;
-
- if (f == rl_reverse_search_history)
- c = reverse ? -1 : -2;
- else if (f == rl_forward_search_history)
- c = !reverse ? -1 : -2;
- else if (f == rl_rubout)
- c = -3;
- else if (c == CTRL ('G'))
- c = -4;
- else if (c == CTRL ('W')) /* XXX */
- c = -5;
- else if (c == CTRL ('Y')) /* XXX */
- c = -6;
- }
-
- /* The characters in isearch_terminators (set from the user-settable
- variable isearch-terminators) are used to terminate the search but
- not subsequently execute the character as a command. The default
- value is "\033\012" (ESC and C-J). */
- if (strchr (isearch_terminators, c))
- {
- /* ESC still terminates the search, but if there is pending
- input or if input arrives within 0.1 seconds (on systems
- with select(2)) it is used as a prefix character
- with rl_execute_next. WATCH OUT FOR THIS! This is intended
- to allow the arrow keys to be used like ^F and ^B are used
- to terminate the search and execute the movement command.
- XXX - since _rl_input_available depends on the application-
- settable keyboard timeout value, this could alternatively
- use _rl_input_queued(100000) */
- if (c == ESC && _rl_input_available ())
- rl_execute_next (ESC);
- break;
- }
-
-#define ENDSRCH_CHAR(c) \
- ((CTRL_CHAR (c) || META_CHAR (c) || (c) == RUBOUT) && ((c) != CTRL ('G')))
-
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- if (c >= 0 && strlen (mb) == 1 && ENDSRCH_CHAR (c))
- {
- /* This sets rl_pending_input to c; it will be picked up the next
- time rl_read_key is called. */
- rl_execute_next (c);
- break;
- }
- }
- else
-#endif
- if (c >= 0 && ENDSRCH_CHAR (c))
- {
- /* This sets rl_pending_input to c; it will be picked up the next
- time rl_read_key is called. */
- rl_execute_next (c);
- break;
- }
-
- switch (c)
- {
- case -1:
- if (search_string_index == 0)
- {
- if (last_isearch_string)
- {
- search_string_size = 64 + last_isearch_string_len;
- search_string = (char *)xrealloc (search_string, search_string_size);
- strcpy (search_string, last_isearch_string);
- search_string_index = last_isearch_string_len;
- rl_display_search (search_string, reverse, -1);
- break;
- }
- continue;
- }
- else if (reverse)
- --line_index;
- else if (line_index != sline_len)
- ++line_index;
- else
- rl_ding ();
- break;
-
- /* switch directions */
- case -2:
- direction = -direction;
- reverse = direction < 0;
- break;
-
- /* delete character from search string. */
- case -3: /* C-H, DEL */
- /* This is tricky. To do this right, we need to keep a
- stack of search positions for the current search, with
- sentinels marking the beginning and end. But this will
- do until we have a real isearch-undo. */
- if (search_string_index == 0)
- rl_ding ();
- else
- search_string[--search_string_index] = '\0';
-
- break;
-
- case -4: /* C-G */
- rl_replace_line (lines[orig_line], 0);
- rl_point = orig_point;
- rl_mark = orig_mark;
- rl_restore_prompt();
- rl_clear_message ();
- if (allocated_line)
- free (allocated_line);
- free (lines);
- RL_UNSETSTATE(RL_STATE_ISEARCH);
- return 0;
-
- case -5: /* C-W */
- /* skip over portion of line we already matched */
- wstart = rl_point + search_string_index;
- if (wstart >= rl_end)
- {
- rl_ding ();
- break;
- }
-
- /* if not in a word, move to one. */
- if (rl_alphabetic(rl_line_buffer[wstart]) == 0)
- {
- rl_ding ();
- break;
- }
- n = wstart;
- while (n < rl_end && rl_alphabetic(rl_line_buffer[n]))
- n++;
- wlen = n - wstart + 1;
- if (search_string_index + wlen + 1 >= search_string_size)
- {
- search_string_size += wlen + 1;
- search_string = (char *)xrealloc (search_string, search_string_size);
- }
- for (; wstart < n; wstart++)
- search_string[search_string_index++] = rl_line_buffer[wstart];
- search_string[search_string_index] = '\0';
- break;
-
- case -6: /* C-Y */
- /* skip over portion of line we already matched */
- wstart = rl_point + search_string_index;
- if (wstart >= rl_end)
- {
- rl_ding ();
- break;
- }
- n = rl_end - wstart + 1;
- if (search_string_index + n + 1 >= search_string_size)
- {
- search_string_size += n + 1;
- search_string = (char *)xrealloc (search_string, search_string_size);
- }
- for (n = wstart; n < rl_end; n++)
- search_string[search_string_index++] = rl_line_buffer[n];
- search_string[search_string_index] = '\0';
- break;
-
- default:
- /* Add character to search string and continue search. */
- if (search_string_index + 2 >= search_string_size)
- {
- search_string_size += 128;
- search_string = (char *)xrealloc (search_string, search_string_size);
- }
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- int j, l;
- for (j = 0, l = strlen (mb); j < l; )
- search_string[search_string_index++] = mb[j++];
- }
- else
-#endif
- search_string[search_string_index++] = c;
- search_string[search_string_index] = '\0';
- break;
- }
-
- for (found = failed = 0;;)
- {
- int limit = sline_len - search_string_index + 1;
-
- /* Search the current line. */
- while (reverse ? (line_index >= 0) : (line_index < limit))
- {
- if (STREQN (search_string, sline + line_index, search_string_index))
- {
- found++;
- break;
- }
- else
- line_index += direction;
- }
- if (found)
- break;
-
- /* Move to the next line, but skip new copies of the line
- we just found and lines shorter than the string we're
- searching for. */
- do
- {
- /* Move to the next line. */
- i += direction;
-
- /* At limit for direction? */
- if (reverse ? (i < 0) : (i == hlen))
- {
- failed++;
- break;
- }
-
- /* We will need these later. */
- sline = lines[i];
- sline_len = strlen (sline);
- }
- while ((prev_line_found && STREQ (prev_line_found, lines[i])) ||
- (search_string_index > sline_len));
-
- if (failed)
- break;
-
- /* Now set up the line for searching... */
- line_index = reverse ? sline_len - search_string_index : 0;
- }
-
- if (failed)
- {
- /* We cannot find the search string. Ding the bell. */
- rl_ding ();
- i = last_found_line;
- continue; /* XXX - was break */
- }
-
- /* We have found the search string. Just display it. But don't
- actually move there in the history list until the user accepts
- the location. */
- if (found)
- {
- prev_line_found = lines[i];
- rl_replace_line (lines[i], 0);
- rl_point = line_index;
- last_found_line = i;
- rl_display_search (search_string, reverse, (i == orig_line) ? -1 : i);
- }
- }
-
- /* The searching is over. The user may have found the string that she
- was looking for, or else she may have exited a failing search. If
- LINE_INDEX is -1, then that shows that the string searched for was
- not found. We use this to determine where to place rl_point. */
-
- /* First put back the original state. */
- strcpy (rl_line_buffer, lines[orig_line]);
-
- rl_restore_prompt ();
-
- /* Save the search string for possible later use. */
- FREE (last_isearch_string);
- last_isearch_string = search_string;
- last_isearch_string_len = search_string_index;
-
- if (last_found_line < orig_line)
- rl_get_previous_history (orig_line - last_found_line, 0);
- else
- rl_get_next_history (last_found_line - orig_line, 0);
-
- /* If the string was not found, put point at the end of the last matching
- line. If last_found_line == orig_line, we didn't find any matching
- history lines at all, so put point back in its original position. */
- if (line_index < 0)
- {
- if (last_found_line == orig_line)
- line_index = orig_point;
- else
- line_index = strlen (rl_line_buffer);
- rl_mark = orig_mark;
- }
-
- rl_point = line_index;
- /* Don't worry about where to put the mark here; rl_get_previous_history
- and rl_get_next_history take care of it. */
-
- rl_clear_message ();
-
- FREE (allocated_line);
- free (lines);
-
- RL_UNSETSTATE(RL_STATE_ISEARCH);
-
- return 0;
-}
diff --git a/readline-4.3/keymaps.c b/readline-4.3/keymaps.c
deleted file mode 100644
index 12506d3..0000000
--- a/readline-4.3/keymaps.c
+++ /dev/null
@@ -1,150 +0,0 @@
-/* keymaps.c -- Functions and keymaps for the GNU Readline library. */
-
-/* Copyright (C) 1988,1989 Free Software Foundation, Inc.
-
- This file is part of GNU Readline, a library for reading lines
- of text with interactive input and history editing.
-
- Readline is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the
- Free Software Foundation; either version 2, or (at your option) any
- later version.
-
- Readline is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Readline; see the file COPYING. If not, write to the Free
- Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#include <stdio.h> /* for FILE * definition for readline.h */
-
-#include "readline.h"
-#include "rlconf.h"
-
-#include "emacs_keymap.c"
-
-#if defined (VI_MODE)
-#include "vi_keymap.c"
-#endif
-
-#include "xmalloc.h"
-
-/* **************************************************************** */
-/* */
-/* Functions for manipulating Keymaps. */
-/* */
-/* **************************************************************** */
-
-
-/* Return a new, empty keymap.
- Free it with free() when you are done. */
-Keymap
-rl_make_bare_keymap ()
-{
- register int i;
- Keymap keymap = (Keymap)xmalloc (KEYMAP_SIZE * sizeof (KEYMAP_ENTRY));
-
- for (i = 0; i < KEYMAP_SIZE; i++)
- {
- keymap[i].type = ISFUNC;
- keymap[i].function = (rl_command_func_t *)NULL;
- }
-
- for (i = 'A'; i < ('Z' + 1); i++)
- {
- keymap[i].type = ISFUNC;
- keymap[i].function = rl_do_lowercase_version;
- }
-
- return (keymap);
-}
-
-/* Return a new keymap which is a copy of MAP. */
-Keymap
-rl_copy_keymap (map)
- Keymap map;
-{
- register int i;
- Keymap temp = rl_make_bare_keymap ();
-
- for (i = 0; i < KEYMAP_SIZE; i++)
- {
- temp[i].type = map[i].type;
- temp[i].function = map[i].function;
- }
- return (temp);
-}
-
-/* Return a new keymap with the printing characters bound to rl_insert,
- the uppercase Meta characters bound to run their lowercase equivalents,
- and the Meta digits bound to produce numeric arguments. */
-Keymap
-rl_make_keymap ()
-{
- register int i;
- Keymap newmap;
-
- newmap = rl_make_bare_keymap ();
-
- /* All ASCII printing characters are self-inserting. */
- for (i = ' '; i < 127; i++)
- newmap[i].function = rl_insert;
-
- newmap[TAB].function = rl_insert;
- newmap[RUBOUT].function = rl_rubout; /* RUBOUT == 127 */
- newmap[CTRL('H')].function = rl_rubout;
-
-#if KEYMAP_SIZE > 128
- /* Printing characters in some 8-bit character sets. */
- for (i = 128; i < 160; i++)
- newmap[i].function = rl_insert;
-
- /* ISO Latin-1 printing characters should self-insert. */
- for (i = 160; i < 256; i++)
- newmap[i].function = rl_insert;
-#endif /* KEYMAP_SIZE > 128 */
-
- return (newmap);
-}
-
-/* Free the storage associated with MAP. */
-void
-rl_discard_keymap (map)
- Keymap map;
-{
- int i;
-
- if (!map)
- return;
-
- for (i = 0; i < KEYMAP_SIZE; i++)
- {
- switch (map[i].type)
- {
- case ISFUNC:
- break;
-
- case ISKMAP:
- rl_discard_keymap ((Keymap)map[i].function);
- break;
-
- case ISMACR:
- free ((char *)map[i].function);
- break;
- }
- }
-}
diff --git a/readline-4.3/keymaps.h b/readline-4.3/keymaps.h
deleted file mode 100644
index 66fa2a5..0000000
--- a/readline-4.3/keymaps.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/* keymaps.h -- Manipulation of readline keymaps. */
-
-/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#ifndef _KEYMAPS_H_
-#define _KEYMAPS_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#if defined (READLINE_LIBRARY)
-# include "rlstdc.h"
-# include "chardefs.h"
-# include "rltypedefs.h"
-#else
-# include <readline/rlstdc.h>
-# include <readline/chardefs.h>
-# include <readline/rltypedefs.h>
-#endif
-
-/* A keymap contains one entry for each key in the ASCII set.
- Each entry consists of a type and a pointer.
- FUNCTION is the address of a function to run, or the
- address of a keymap to indirect through.
- TYPE says which kind of thing FUNCTION is. */
-typedef struct _keymap_entry {
- char type;
- rl_command_func_t *function;
-} KEYMAP_ENTRY;
-
-/* This must be large enough to hold bindings for all of the characters
- in a desired character set (e.g, 128 for ASCII, 256 for ISO Latin-x,
- and so on) plus one for subsequence matching. */
-#define KEYMAP_SIZE 257
-#define ANYOTHERKEY KEYMAP_SIZE-1
-
-/* I wanted to make the above structure contain a union of:
- union { rl_command_func_t *function; struct _keymap_entry *keymap; } value;
- but this made it impossible for me to create a static array.
- Maybe I need C lessons. */
-
-typedef KEYMAP_ENTRY KEYMAP_ENTRY_ARRAY[KEYMAP_SIZE];
-typedef KEYMAP_ENTRY *Keymap;
-
-/* The values that TYPE can have in a keymap entry. */
-#define ISFUNC 0
-#define ISKMAP 1
-#define ISMACR 2
-
-extern KEYMAP_ENTRY_ARRAY emacs_standard_keymap, emacs_meta_keymap, emacs_ctlx_keymap;
-extern KEYMAP_ENTRY_ARRAY vi_insertion_keymap, vi_movement_keymap;
-
-/* Return a new, empty keymap.
- Free it with free() when you are done. */
-extern Keymap rl_make_bare_keymap PARAMS((void));
-
-/* Return a new keymap which is a copy of MAP. */
-extern Keymap rl_copy_keymap PARAMS((Keymap));
-
-/* Return a new keymap with the printing characters bound to rl_insert,
- the lowercase Meta characters bound to run their equivalents, and
- the Meta digits bound to produce numeric arguments. */
-extern Keymap rl_make_keymap PARAMS((void));
-
-/* Free the storage associated with a keymap. */
-extern void rl_discard_keymap PARAMS((Keymap));
-
-/* These functions actually appear in bind.c */
-
-/* Return the keymap corresponding to a given name. Names look like
- `emacs' or `emacs-meta' or `vi-insert'. */
-extern Keymap rl_get_keymap_by_name PARAMS((const char *));
-
-/* Return the current keymap. */
-extern Keymap rl_get_keymap PARAMS((void));
-
-/* Set the current keymap to MAP. */
-extern void rl_set_keymap PARAMS((Keymap));
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _KEYMAPS_H_ */
diff --git a/readline-4.3/kill.c b/readline-4.3/kill.c
deleted file mode 100644
index a616b92..0000000
--- a/readline-4.3/kill.c
+++ /dev/null
@@ -1,652 +0,0 @@
-/* kill.c -- kill ring management. */
-
-/* Copyright (C) 1994 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <sys/types.h>
-
-#if defined (HAVE_UNISTD_H)
-# include <unistd.h> /* for _POSIX_VERSION */
-#endif /* HAVE_UNISTD_H */
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#include <stdio.h>
-
-/* System-specific feature definitions and include files. */
-#include "rldefs.h"
-
-/* Some standard library routines. */
-#include "readline.h"
-#include "history.h"
-
-#include "rlprivate.h"
-#include "xmalloc.h"
-
-/* **************************************************************** */
-/* */
-/* Killing Mechanism */
-/* */
-/* **************************************************************** */
-
-/* What we assume for a max number of kills. */
-#define DEFAULT_MAX_KILLS 10
-
-/* The real variable to look at to find out when to flush kills. */
-static int rl_max_kills = DEFAULT_MAX_KILLS;
-
-/* Where to store killed text. */
-static char **rl_kill_ring = (char **)NULL;
-
-/* Where we are in the kill ring. */
-static int rl_kill_index;
-
-/* How many slots we have in the kill ring. */
-static int rl_kill_ring_length;
-
-static int _rl_copy_to_kill_ring PARAMS((char *, int));
-static int region_kill_internal PARAMS((int));
-static int _rl_copy_word_as_kill PARAMS((int, int));
-static int rl_yank_nth_arg_internal PARAMS((int, int, int));
-
-/* How to say that you only want to save a certain amount
- of kill material. */
-int
-rl_set_retained_kills (num)
- int num;
-{
- return 0;
-}
-
-/* Add TEXT to the kill ring, allocating a new kill ring slot as necessary.
- This uses TEXT directly, so the caller must not free it. If APPEND is
- non-zero, and the last command was a kill, the text is appended to the
- current kill ring slot, otherwise prepended. */
-static int
-_rl_copy_to_kill_ring (text, append)
- char *text;
- int append;
-{
- char *old, *new;
- int slot;
-
- /* First, find the slot to work with. */
- if (_rl_last_command_was_kill == 0)
- {
- /* Get a new slot. */
- if (rl_kill_ring == 0)
- {
- /* If we don't have any defined, then make one. */
- rl_kill_ring = (char **)
- xmalloc (((rl_kill_ring_length = 1) + 1) * sizeof (char *));
- rl_kill_ring[slot = 0] = (char *)NULL;
- }
- else
- {
- /* We have to add a new slot on the end, unless we have
- exceeded the max limit for remembering kills. */
- slot = rl_kill_ring_length;
- if (slot == rl_max_kills)
- {
- register int i;
- free (rl_kill_ring[0]);
- for (i = 0; i < slot; i++)
- rl_kill_ring[i] = rl_kill_ring[i + 1];
- }
- else
- {
- slot = rl_kill_ring_length += 1;
- rl_kill_ring = (char **)xrealloc (rl_kill_ring, slot * sizeof (char *));
- }
- rl_kill_ring[--slot] = (char *)NULL;
- }
- }
- else
- slot = rl_kill_ring_length - 1;
-
- /* If the last command was a kill, prepend or append. */
- if (_rl_last_command_was_kill && rl_editing_mode != vi_mode)
- {
- old = rl_kill_ring[slot];
- new = (char *)xmalloc (1 + strlen (old) + strlen (text));
-
- if (append)
- {
- strcpy (new, old);
- strcat (new, text);
- }
- else
- {
- strcpy (new, text);
- strcat (new, old);
- }
- free (old);
- free (text);
- rl_kill_ring[slot] = new;
- }
- else
- rl_kill_ring[slot] = text;
-
- rl_kill_index = slot;
- return 0;
-}
-
-/* The way to kill something. This appends or prepends to the last
- kill, if the last command was a kill command. if FROM is less
- than TO, then the text is appended, otherwise prepended. If the
- last command was not a kill command, then a new slot is made for
- this kill. */
-int
-rl_kill_text (from, to)
- int from, to;
-{
- char *text;
-
- /* Is there anything to kill? */
- if (from == to)
- {
- _rl_last_command_was_kill++;
- return 0;
- }
-
- text = rl_copy_text (from, to);
-
- /* Delete the copied text from the line. */
- rl_delete_text (from, to);
-
- _rl_copy_to_kill_ring (text, from < to);
-
- _rl_last_command_was_kill++;
- return 0;
-}
-
-/* Now REMEMBER! In order to do prepending or appending correctly, kill
- commands always make rl_point's original position be the FROM argument,
- and rl_point's extent be the TO argument. */
-
-/* **************************************************************** */
-/* */
-/* Killing Commands */
-/* */
-/* **************************************************************** */
-
-/* Delete the word at point, saving the text in the kill ring. */
-int
-rl_kill_word (count, key)
- int count, key;
-{
- int orig_point;
-
- if (count < 0)
- return (rl_backward_kill_word (-count, key));
- else
- {
- orig_point = rl_point;
- rl_forward_word (count, key);
-
- if (rl_point != orig_point)
- rl_kill_text (orig_point, rl_point);
-
- rl_point = orig_point;
- if (rl_editing_mode == emacs_mode)
- rl_mark = rl_point;
- }
- return 0;
-}
-
-/* Rubout the word before point, placing it on the kill ring. */
-int
-rl_backward_kill_word (count, ignore)
- int count, ignore;
-{
- int orig_point;
-
- if (count < 0)
- return (rl_kill_word (-count, ignore));
- else
- {
- orig_point = rl_point;
- rl_backward_word (count, ignore);
-
- if (rl_point != orig_point)
- rl_kill_text (orig_point, rl_point);
-
- if (rl_editing_mode == emacs_mode)
- rl_mark = rl_point;
- }
- return 0;
-}
-
-/* Kill from here to the end of the line. If DIRECTION is negative, kill
- back to the line start instead. */
-int
-rl_kill_line (direction, ignore)
- int direction, ignore;
-{
- int orig_point;
-
- if (direction < 0)
- return (rl_backward_kill_line (1, ignore));
- else
- {
- orig_point = rl_point;
- rl_end_of_line (1, ignore);
- if (orig_point != rl_point)
- rl_kill_text (orig_point, rl_point);
- rl_point = orig_point;
- if (rl_editing_mode == emacs_mode)
- rl_mark = rl_point;
- }
- return 0;
-}
-
-/* Kill backwards to the start of the line. If DIRECTION is negative, kill
- forwards to the line end instead. */
-int
-rl_backward_kill_line (direction, ignore)
- int direction, ignore;
-{
- int orig_point;
-
- if (direction < 0)
- return (rl_kill_line (1, ignore));
- else
- {
- if (!rl_point)
- rl_ding ();
- else
- {
- orig_point = rl_point;
- rl_beg_of_line (1, ignore);
- if (rl_point != orig_point)
- rl_kill_text (orig_point, rl_point);
- if (rl_editing_mode == emacs_mode)
- rl_mark = rl_point;
- }
- }
- return 0;
-}
-
-/* Kill the whole line, no matter where point is. */
-int
-rl_kill_full_line (count, ignore)
- int count, ignore;
-{
- rl_begin_undo_group ();
- rl_point = 0;
- rl_kill_text (rl_point, rl_end);
- rl_mark = 0;
- rl_end_undo_group ();
- return 0;
-}
-
-/* The next two functions mimic unix line editing behaviour, except they
- save the deleted text on the kill ring. This is safer than not saving
- it, and since we have a ring, nobody should get screwed. */
-
-/* This does what C-w does in Unix. We can't prevent people from
- using behaviour that they expect. */
-int
-rl_unix_word_rubout (count, key)
- int count, key;
-{
- int orig_point;
-
- if (rl_point == 0)
- rl_ding ();
- else
- {
- orig_point = rl_point;
- if (count <= 0)
- count = 1;
-
- while (count--)
- {
- while (rl_point && whitespace (rl_line_buffer[rl_point - 1]))
- rl_point--;
-
- while (rl_point && (whitespace (rl_line_buffer[rl_point - 1]) == 0))
- rl_point--;
- }
-
- rl_kill_text (orig_point, rl_point);
- if (rl_editing_mode == emacs_mode)
- rl_mark = rl_point;
- }
- return 0;
-}
-
-/* Here is C-u doing what Unix does. You don't *have* to use these
- key-bindings. We have a choice of killing the entire line, or
- killing from where we are to the start of the line. We choose the
- latter, because if you are a Unix weenie, then you haven't backspaced
- into the line at all, and if you aren't, then you know what you are
- doing. */
-int
-rl_unix_line_discard (count, key)
- int count, key;
-{
- if (rl_point == 0)
- rl_ding ();
- else
- {
- rl_kill_text (rl_point, 0);
- rl_point = 0;
- if (rl_editing_mode == emacs_mode)
- rl_mark = rl_point;
- }
- return 0;
-}
-
-/* Copy the text in the `region' to the kill ring. If DELETE is non-zero,
- delete the text from the line as well. */
-static int
-region_kill_internal (delete)
- int delete;
-{
- char *text;
-
- if (rl_mark != rl_point)
- {
- text = rl_copy_text (rl_point, rl_mark);
- if (delete)
- rl_delete_text (rl_point, rl_mark);
- _rl_copy_to_kill_ring (text, rl_point < rl_mark);
- }
-
- _rl_last_command_was_kill++;
- return 0;
-}
-
-/* Copy the text in the region to the kill ring. */
-int
-rl_copy_region_to_kill (count, ignore)
- int count, ignore;
-{
- return (region_kill_internal (0));
-}
-
-/* Kill the text between the point and mark. */
-int
-rl_kill_region (count, ignore)
- int count, ignore;
-{
- int r, npoint;
-
- npoint = (rl_point < rl_mark) ? rl_point : rl_mark;
- r = region_kill_internal (1);
- _rl_fix_point (1);
- rl_point = npoint;
- return r;
-}
-
-/* Copy COUNT words to the kill ring. DIR says which direction we look
- to find the words. */
-static int
-_rl_copy_word_as_kill (count, dir)
- int count, dir;
-{
- int om, op, r;
-
- om = rl_mark;
- op = rl_point;
-
- if (dir > 0)
- rl_forward_word (count, 0);
- else
- rl_backward_word (count, 0);
-
- rl_mark = rl_point;
-
- if (dir > 0)
- rl_backward_word (count, 0);
- else
- rl_forward_word (count, 0);
-
- r = region_kill_internal (0);
-
- rl_mark = om;
- rl_point = op;
-
- return r;
-}
-
-int
-rl_copy_forward_word (count, key)
- int count, key;
-{
- if (count < 0)
- return (rl_copy_backward_word (-count, key));
-
- return (_rl_copy_word_as_kill (count, 1));
-}
-
-int
-rl_copy_backward_word (count, key)
- int count, key;
-{
- if (count < 0)
- return (rl_copy_forward_word (-count, key));
-
- return (_rl_copy_word_as_kill (count, -1));
-}
-
-/* Yank back the last killed text. This ignores arguments. */
-int
-rl_yank (count, ignore)
- int count, ignore;
-{
- if (rl_kill_ring == 0)
- {
- _rl_abort_internal ();
- return -1;
- }
-
- _rl_set_mark_at_pos (rl_point);
- rl_insert_text (rl_kill_ring[rl_kill_index]);
- return 0;
-}
-
-/* If the last command was yank, or yank_pop, and the text just
- before point is identical to the current kill item, then
- delete that text from the line, rotate the index down, and
- yank back some other text. */
-int
-rl_yank_pop (count, key)
- int count, key;
-{
- int l, n;
-
- if (((rl_last_func != rl_yank_pop) && (rl_last_func != rl_yank)) ||
- !rl_kill_ring)
- {
- _rl_abort_internal ();
- return -1;
- }
-
- l = strlen (rl_kill_ring[rl_kill_index]);
- n = rl_point - l;
- if (n >= 0 && STREQN (rl_line_buffer + n, rl_kill_ring[rl_kill_index], l))
- {
- rl_delete_text (n, rl_point);
- rl_point = n;
- rl_kill_index--;
- if (rl_kill_index < 0)
- rl_kill_index = rl_kill_ring_length - 1;
- rl_yank (1, 0);
- return 0;
- }
- else
- {
- _rl_abort_internal ();
- return -1;
- }
-}
-
-/* Yank the COUNTh argument from the previous history line, skipping
- HISTORY_SKIP lines before looking for the `previous line'. */
-static int
-rl_yank_nth_arg_internal (count, ignore, history_skip)
- int count, ignore, history_skip;
-{
- register HIST_ENTRY *entry;
- char *arg;
- int i, pos;
-
- pos = where_history ();
-
- if (history_skip)
- {
- for (i = 0; i < history_skip; i++)
- entry = previous_history ();
- }
-
- entry = previous_history ();
-
- history_set_pos (pos);
-
- if (entry == 0)
- {
- rl_ding ();
- return -1;
- }
-
- arg = history_arg_extract (count, count, entry->line);
- if (!arg || !*arg)
- {
- rl_ding ();
- return -1;
- }
-
- rl_begin_undo_group ();
-
- _rl_set_mark_at_pos (rl_point);
-
-#if defined (VI_MODE)
- /* Vi mode always inserts a space before yanking the argument, and it
- inserts it right *after* rl_point. */
- if (rl_editing_mode == vi_mode)
- {
- rl_vi_append_mode (1, ignore);
- rl_insert_text (" ");
- }
-#endif /* VI_MODE */
-
- rl_insert_text (arg);
- free (arg);
-
- rl_end_undo_group ();
- return 0;
-}
-
-/* Yank the COUNTth argument from the previous history line. */
-int
-rl_yank_nth_arg (count, ignore)
- int count, ignore;
-{
- return (rl_yank_nth_arg_internal (count, ignore, 0));
-}
-
-/* Yank the last argument from the previous history line. This `knows'
- how rl_yank_nth_arg treats a count of `$'. With an argument, this
- behaves the same as rl_yank_nth_arg. */
-int
-rl_yank_last_arg (count, key)
- int count, key;
-{
- static int history_skip = 0;
- static int explicit_arg_p = 0;
- static int count_passed = 1;
- static int direction = 1;
- static int undo_needed = 0;
- int retval;
-
- if (rl_last_func != rl_yank_last_arg)
- {
- history_skip = 0;
- explicit_arg_p = rl_explicit_arg;
- count_passed = count;
- direction = 1;
- }
- else
- {
- if (undo_needed)
- rl_do_undo ();
- if (count < 1)
- direction = -direction;
- history_skip += direction;
- if (history_skip < 0)
- history_skip = 0;
- }
-
- if (explicit_arg_p)
- retval = rl_yank_nth_arg_internal (count_passed, key, history_skip);
- else
- retval = rl_yank_nth_arg_internal ('$', key, history_skip);
-
- undo_needed = retval == 0;
- return retval;
-}
-
-/* A special paste command for users of Cygnus's cygwin32. */
-#if defined (__CYGWIN__)
-#include <windows.h>
-
-int
-rl_paste_from_clipboard (count, key)
- int count, key;
-{
- char *data, *ptr;
- int len;
-
- if (OpenClipboard (NULL) == 0)
- return (0);
-
- data = (char *)GetClipboardData (CF_TEXT);
- if (data)
- {
- ptr = strchr (data, '\r');
- if (ptr)
- {
- len = ptr - data;
- ptr = (char *)xmalloc (len + 1);
- ptr[len] = '\0';
- strncpy (ptr, data, len);
- }
- else
- ptr = data;
- _rl_set_mark_at_pos (rl_point);
- rl_insert_text (ptr);
- if (ptr != data)
- free (ptr);
- CloseClipboard ();
- }
- return (0);
-}
-#endif /* __CYGWIN__ */
diff --git a/readline-4.3/macro.c b/readline-4.3/macro.c
deleted file mode 100644
index b73c3af..0000000
--- a/readline-4.3/macro.c
+++ /dev/null
@@ -1,262 +0,0 @@
-/* macro.c -- keyboard macros for readline. */
-
-/* Copyright (C) 1994 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <sys/types.h>
-
-#if defined (HAVE_UNISTD_H)
-# include <unistd.h> /* for _POSIX_VERSION */
-#endif /* HAVE_UNISTD_H */
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#include <stdio.h>
-
-/* System-specific feature definitions and include files. */
-#include "rldefs.h"
-
-/* Some standard library routines. */
-#include "readline.h"
-#include "history.h"
-
-#include "rlprivate.h"
-#include "xmalloc.h"
-
-/* **************************************************************** */
-/* */
-/* Hacking Keyboard Macros */
-/* */
-/* **************************************************************** */
-
-/* The currently executing macro string. If this is non-zero,
- then it is a malloc ()'ed string where input is coming from. */
-char *rl_executing_macro = (char *)NULL;
-
-/* The offset in the above string to the next character to be read. */
-static int executing_macro_index;
-
-/* The current macro string being built. Characters get stuffed
- in here by add_macro_char (). */
-static char *current_macro = (char *)NULL;
-
-/* The size of the buffer allocated to current_macro. */
-static int current_macro_size;
-
-/* The index at which characters are being added to current_macro. */
-static int current_macro_index;
-
-/* A structure used to save nested macro strings.
- It is a linked list of string/index for each saved macro. */
-struct saved_macro {
- struct saved_macro *next;
- char *string;
- int sindex;
-};
-
-/* The list of saved macros. */
-static struct saved_macro *macro_list = (struct saved_macro *)NULL;
-
-/* Set up to read subsequent input from STRING.
- STRING is free ()'ed when we are done with it. */
-void
-_rl_with_macro_input (string)
- char *string;
-{
- _rl_push_executing_macro ();
- rl_executing_macro = string;
- executing_macro_index = 0;
- RL_SETSTATE(RL_STATE_MACROINPUT);
-}
-
-/* Return the next character available from a macro, or 0 if
- there are no macro characters. */
-int
-_rl_next_macro_key ()
-{
- if (rl_executing_macro == 0)
- return (0);
-
- if (rl_executing_macro[executing_macro_index] == 0)
- {
- _rl_pop_executing_macro ();
- return (_rl_next_macro_key ());
- }
-
- return (rl_executing_macro[executing_macro_index++]);
-}
-
-/* Save the currently executing macro on a stack of saved macros. */
-void
-_rl_push_executing_macro ()
-{
- struct saved_macro *saver;
-
- saver = (struct saved_macro *)xmalloc (sizeof (struct saved_macro));
- saver->next = macro_list;
- saver->sindex = executing_macro_index;
- saver->string = rl_executing_macro;
-
- macro_list = saver;
-}
-
-/* Discard the current macro, replacing it with the one
- on the top of the stack of saved macros. */
-void
-_rl_pop_executing_macro ()
-{
- struct saved_macro *macro;
-
- FREE (rl_executing_macro);
- rl_executing_macro = (char *)NULL;
- executing_macro_index = 0;
-
- if (macro_list)
- {
- macro = macro_list;
- rl_executing_macro = macro_list->string;
- executing_macro_index = macro_list->sindex;
- macro_list = macro_list->next;
- free (macro);
- }
-
- if (rl_executing_macro == 0)
- RL_UNSETSTATE(RL_STATE_MACROINPUT);
-}
-
-/* Add a character to the macro being built. */
-void
-_rl_add_macro_char (c)
- int c;
-{
- if (current_macro_index + 1 >= current_macro_size)
- {
- if (current_macro == 0)
- current_macro = (char *)xmalloc (current_macro_size = 25);
- else
- current_macro = (char *)xrealloc (current_macro, current_macro_size += 25);
- }
-
- current_macro[current_macro_index++] = c;
- current_macro[current_macro_index] = '\0';
-}
-
-void
-_rl_kill_kbd_macro ()
-{
- if (current_macro)
- {
- free (current_macro);
- current_macro = (char *) NULL;
- }
- current_macro_size = current_macro_index = 0;
-
- FREE (rl_executing_macro);
- rl_executing_macro = (char *) NULL;
- executing_macro_index = 0;
-
- RL_UNSETSTATE(RL_STATE_MACRODEF);
-}
-
-/* Begin defining a keyboard macro.
- Keystrokes are recorded as they are executed.
- End the definition with rl_end_kbd_macro ().
- If a numeric argument was explicitly typed, then append this
- definition to the end of the existing macro, and start by
- re-executing the existing macro. */
-int
-rl_start_kbd_macro (ignore1, ignore2)
- int ignore1, ignore2;
-{
- if (RL_ISSTATE (RL_STATE_MACRODEF))
- {
- _rl_abort_internal ();
- return -1;
- }
-
- if (rl_explicit_arg)
- {
- if (current_macro)
- _rl_with_macro_input (savestring (current_macro));
- }
- else
- current_macro_index = 0;
-
- RL_SETSTATE(RL_STATE_MACRODEF);
- return 0;
-}
-
-/* Stop defining a keyboard macro.
- A numeric argument says to execute the macro right now,
- that many times, counting the definition as the first time. */
-int
-rl_end_kbd_macro (count, ignore)
- int count, ignore;
-{
- if (RL_ISSTATE (RL_STATE_MACRODEF) == 0)
- {
- _rl_abort_internal ();
- return -1;
- }
-
- current_macro_index -= rl_key_sequence_length - 1;
- current_macro[current_macro_index] = '\0';
-
- RL_UNSETSTATE(RL_STATE_MACRODEF);
-
- return (rl_call_last_kbd_macro (--count, 0));
-}
-
-/* Execute the most recently defined keyboard macro.
- COUNT says how many times to execute it. */
-int
-rl_call_last_kbd_macro (count, ignore)
- int count, ignore;
-{
- if (current_macro == 0)
- _rl_abort_internal ();
-
- if (RL_ISSTATE (RL_STATE_MACRODEF))
- {
- rl_ding (); /* no recursive macros */
- current_macro[--current_macro_index] = '\0'; /* erase this char */
- return 0;
- }
-
- while (count--)
- _rl_with_macro_input (savestring (current_macro));
- return 0;
-}
-
-void
-rl_push_macro_input (macro)
- char *macro;
-{
- _rl_with_macro_input (macro);
-}
diff --git a/readline-4.3/mbutil.c b/readline-4.3/mbutil.c
deleted file mode 100644
index 50302f0..0000000
--- a/readline-4.3/mbutil.c
+++ /dev/null
@@ -1,337 +0,0 @@
-/* mbutil.c -- readline multibyte character utility functions */
-
-/* Copyright (C) 2001 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <sys/types.h>
-#include <fcntl.h>
-#include "posixjmp.h"
-
-#if defined (HAVE_UNISTD_H)
-# include <unistd.h> /* for _POSIX_VERSION */
-#endif /* HAVE_UNISTD_H */
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#include <stdio.h>
-#include <ctype.h>
-
-/* System-specific feature definitions and include files. */
-#include "rldefs.h"
-#include "rlmbutil.h"
-
-#if defined (TIOCSTAT_IN_SYS_IOCTL)
-# include <sys/ioctl.h>
-#endif /* TIOCSTAT_IN_SYS_IOCTL */
-
-/* Some standard library routines. */
-#include "readline.h"
-
-#include "rlprivate.h"
-#include "xmalloc.h"
-
-/* Declared here so it can be shared between the readline and history
- libraries. */
-#if defined (HANDLE_MULTIBYTE)
-int rl_byte_oriented = 0;
-#else
-int rl_byte_oriented = 1;
-#endif
-
-/* **************************************************************** */
-/* */
-/* Multibyte Character Utility Functions */
-/* */
-/* **************************************************************** */
-
-#if defined(HANDLE_MULTIBYTE)
-
-static int
-_rl_find_next_mbchar_internal (string, seed, count, find_non_zero)
- char *string;
- int seed, count, find_non_zero;
-{
- size_t tmp = 0;
- mbstate_t ps;
- int point = 0;
- wchar_t wc;
-
- memset(&ps, 0, sizeof (mbstate_t));
- if (seed < 0)
- seed = 0;
- if (count <= 0)
- return seed;
-
- point = seed + _rl_adjust_point(string, seed, &ps);
- /* if this is true, means that seed was not pointed character
- started byte. So correct the point and consume count */
- if (seed < point)
- count --;
-
- while (count > 0)
- {
- tmp = mbrtowc (&wc, string+point, strlen(string + point), &ps);
- if ((size_t)(tmp) == (size_t)-1 || (size_t)(tmp) == (size_t)-2)
- {
- /* invalid bytes. asume a byte represents a character */
- point++;
- count--;
- /* reset states. */
- memset(&ps, 0, sizeof(mbstate_t));
- }
- else if (tmp == (size_t)0)
- /* found '\0' char */
- break;
- else
- {
- /* valid bytes */
- point += tmp;
- if (find_non_zero)
- {
- if (wcwidth (wc) == 0)
- continue;
- else
- count--;
- }
- else
- count--;
- }
- }
-
- if (find_non_zero)
- {
- tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps);
- while (wcwidth (wc) == 0)
- {
- point += tmp;
- tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps);
- if (tmp == (size_t)(0) || tmp == (size_t)(-1) || tmp == (size_t)(-2))
- break;
- }
- }
- return point;
-}
-
-static int
-_rl_find_prev_mbchar_internal (string, seed, find_non_zero)
- char *string;
- int seed, find_non_zero;
-{
- mbstate_t ps;
- int prev, non_zero_prev, point, length;
- size_t tmp;
- wchar_t wc;
-
- memset(&ps, 0, sizeof(mbstate_t));
- length = strlen(string);
-
- if (seed < 0)
- return 0;
- else if (length < seed)
- return length;
-
- prev = non_zero_prev = point = 0;
- while (point < seed)
- {
- tmp = mbrtowc (&wc, string + point, length - point, &ps);
- if ((size_t)(tmp) == (size_t)-1 || (size_t)(tmp) == (size_t)-2)
- {
- /* in this case, bytes are invalid or shorted to compose
- multibyte char, so assume that the first byte represents
- a single character anyway. */
- tmp = 1;
- /* clear the state of the byte sequence, because
- in this case effect of mbstate is undefined */
- memset(&ps, 0, sizeof (mbstate_t));
- }
- else if (tmp == 0)
- break; /* Found '\0' char. Can this happen? */
- else
- {
- if (find_non_zero)
- {
- if (wcwidth (wc) != 0)
- prev = point;
- }
- else
- prev = point;
- }
-
- point += tmp;
- }
-
- return prev;
-}
-
-/* return the number of bytes parsed from the multibyte sequence starting
- at src, if a non-L'\0' wide character was recognized. It returns 0,
- if a L'\0' wide character was recognized. It returns (size_t)(-1),
- if an invalid multibyte sequence was encountered. It returns (size_t)(-2)
- if it couldn't parse a complete multibyte character. */
-int
-_rl_get_char_len (src, ps)
- char *src;
- mbstate_t *ps;
-{
- size_t tmp;
-
- tmp = mbrlen((const char *)src, (size_t)strlen (src), ps);
- if (tmp == (size_t)(-2))
- {
- /* shorted to compose multibyte char */
- memset (ps, 0, sizeof(mbstate_t));
- return -2;
- }
- else if (tmp == (size_t)(-1))
- {
- /* invalid to compose multibyte char */
- /* initialize the conversion state */
- memset (ps, 0, sizeof(mbstate_t));
- return -1;
- }
- else if (tmp == (size_t)0)
- return 0;
- else
- return (int)tmp;
-}
-
-/* compare the specified two characters. If the characters matched,
- return 1. Otherwise return 0. */
-int
-_rl_compare_chars (buf1, pos1, ps1, buf2, pos2, ps2)
- char *buf1, *buf2;
- mbstate_t *ps1, *ps2;
- int pos1, pos2;
-{
- int i, w1, w2;
-
- if ((w1 = _rl_get_char_len (&buf1[pos1], ps1)) <= 0 ||
- (w2 = _rl_get_char_len (&buf2[pos2], ps2)) <= 0 ||
- (w1 != w2) ||
- (buf1[pos1] != buf2[pos2]))
- return 0;
-
- for (i = 1; i < w1; i++)
- if (buf1[pos1+i] != buf2[pos2+i])
- return 0;
-
- return 1;
-}
-
-/* adjust pointed byte and find mbstate of the point of string.
- adjusted point will be point <= adjusted_point, and returns
- differences of the byte(adjusted_point - point).
- if point is invalied (point < 0 || more than string length),
- it returns -1 */
-int
-_rl_adjust_point(string, point, ps)
- char *string;
- int point;
- mbstate_t *ps;
-{
- size_t tmp = 0;
- int length;
- int pos = 0;
-
- length = strlen(string);
- if (point < 0)
- return -1;
- if (length < point)
- return -1;
-
- while (pos < point)
- {
- tmp = mbrlen (string + pos, length - pos, ps);
- if((size_t)(tmp) == (size_t)-1 || (size_t)(tmp) == (size_t)-2)
- {
- /* in this case, bytes are invalid or shorted to compose
- multibyte char, so assume that the first byte represents
- a single character anyway. */
- pos++;
- /* clear the state of the byte sequence, because
- in this case effect of mbstate is undefined */
- memset (ps, 0, sizeof (mbstate_t));
- }
- else
- pos += tmp;
- }
-
- return (pos - point);
-}
-
-int
-_rl_is_mbchar_matched (string, seed, end, mbchar, length)
- char *string;
- int seed, end;
- char *mbchar;
- int length;
-{
- int i;
-
- if ((end - seed) < length)
- return 0;
-
- for (i = 0; i < length; i++)
- if (string[seed + i] != mbchar[i])
- return 0;
- return 1;
-}
-#endif /* HANDLE_MULTIBYTE */
-
-/* Find next `count' characters started byte point of the specified seed.
- If flags is MB_FIND_NONZERO, we look for non-zero-width multibyte
- characters. */
-#undef _rl_find_next_mbchar
-int
-_rl_find_next_mbchar (string, seed, count, flags)
- char *string;
- int seed, count, flags;
-{
-#if defined (HANDLE_MULTIBYTE)
- return _rl_find_next_mbchar_internal (string, seed, count, flags);
-#else
- return (seed + count);
-#endif
-}
-
-/* Find previous character started byte point of the specified seed.
- Returned point will be point <= seed. If flags is MB_FIND_NONZERO,
- we look for non-zero-width multibyte characters. */
-#undef _rl_find_prev_mbchar
-int
-_rl_find_prev_mbchar (string, seed, flags)
- char *string;
- int seed, flags;
-{
-#if defined (HANDLE_MULTIBYTE)
- return _rl_find_prev_mbchar_internal (string, seed, flags);
-#else
- return ((seed == 0) ? seed : seed - 1);
-#endif
-}
diff --git a/readline-4.3/misc.c b/readline-4.3/misc.c
deleted file mode 100644
index f3775d3..0000000
--- a/readline-4.3/misc.c
+++ /dev/null
@@ -1,496 +0,0 @@
-/* misc.c -- miscellaneous bindable readline functions. */
-
-/* Copyright (C) 1987-2002 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#if defined (HAVE_UNISTD_H)
-# include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#if defined (HAVE_LOCALE_H)
-# include <locale.h>
-#endif
-
-#include <stdio.h>
-
-/* System-specific feature definitions and include files. */
-#include "rldefs.h"
-#include "rlmbutil.h"
-
-/* Some standard library routines. */
-#include "readline.h"
-#include "history.h"
-
-#include "rlprivate.h"
-#include "rlshell.h"
-#include "xmalloc.h"
-
-static int rl_digit_loop PARAMS((void));
-static void _rl_history_set_point PARAMS((void));
-
-/* Forward declarations used in this file */
-void _rl_free_history_entry PARAMS((HIST_ENTRY *));
-
-/* If non-zero, rl_get_previous_history and rl_get_next_history attempt
- to preserve the value of rl_point from line to line. */
-int _rl_history_preserve_point = 0;
-
-/* Saved target point for when _rl_history_preserve_point is set. Special
- value of -1 means that point is at the end of the line. */
-int _rl_history_saved_point = -1;
-
-/* **************************************************************** */
-/* */
-/* Numeric Arguments */
-/* */
-/* **************************************************************** */
-
-/* Handle C-u style numeric args, as well as M--, and M-digits. */
-static int
-rl_digit_loop ()
-{
- int key, c, sawminus, sawdigits;
-
- rl_save_prompt ();
-
- RL_SETSTATE(RL_STATE_NUMERICARG);
- sawminus = sawdigits = 0;
- while (1)
- {
- if (rl_numeric_arg > 1000000)
- {
- sawdigits = rl_explicit_arg = rl_numeric_arg = 0;
- rl_ding ();
- rl_restore_prompt ();
- rl_clear_message ();
- RL_UNSETSTATE(RL_STATE_NUMERICARG);
- return 1;
- }
- rl_message ("(arg: %d) ", rl_arg_sign * rl_numeric_arg);
- RL_SETSTATE(RL_STATE_MOREINPUT);
- key = c = rl_read_key ();
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
-
- if (c < 0)
- {
- _rl_abort_internal ();
- return -1;
- }
-
- /* If we see a key bound to `universal-argument' after seeing digits,
- it ends the argument but is otherwise ignored. */
- if (_rl_keymap[c].type == ISFUNC &&
- _rl_keymap[c].function == rl_universal_argument)
- {
- if (sawdigits == 0)
- {
- rl_numeric_arg *= 4;
- continue;
- }
- else
- {
- RL_SETSTATE(RL_STATE_MOREINPUT);
- key = rl_read_key ();
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
- rl_restore_prompt ();
- rl_clear_message ();
- RL_UNSETSTATE(RL_STATE_NUMERICARG);
- return (_rl_dispatch (key, _rl_keymap));
- }
- }
-
- c = UNMETA (c);
-
- if (_rl_digit_p (c))
- {
- rl_numeric_arg = rl_explicit_arg ? (rl_numeric_arg * 10) + c - '0' : c - '0';
- sawdigits = rl_explicit_arg = 1;
- }
- else if (c == '-' && rl_explicit_arg == 0)
- {
- rl_numeric_arg = sawminus = 1;
- rl_arg_sign = -1;
- }
- else
- {
- /* Make M-- command equivalent to M--1 command. */
- if (sawminus && rl_numeric_arg == 1 && rl_explicit_arg == 0)
- rl_explicit_arg = 1;
- rl_restore_prompt ();
- rl_clear_message ();
- RL_UNSETSTATE(RL_STATE_NUMERICARG);
- return (_rl_dispatch (key, _rl_keymap));
- }
- }
-
- /*NOTREACHED*/
-}
-
-/* Add the current digit to the argument in progress. */
-int
-rl_digit_argument (ignore, key)
- int ignore, key;
-{
- rl_execute_next (key);
- return (rl_digit_loop ());
-}
-
-/* What to do when you abort reading an argument. */
-int
-rl_discard_argument ()
-{
- rl_ding ();
- rl_clear_message ();
- _rl_init_argument ();
- return 0;
-}
-
-/* Create a default argument. */
-int
-_rl_init_argument ()
-{
- rl_numeric_arg = rl_arg_sign = 1;
- rl_explicit_arg = 0;
- return 0;
-}
-
-/* C-u, universal argument. Multiply the current argument by 4.
- Read a key. If the key has nothing to do with arguments, then
- dispatch on it. If the key is the abort character then abort. */
-int
-rl_universal_argument (count, key)
- int count, key;
-{
- rl_numeric_arg *= 4;
- return (rl_digit_loop ());
-}
-
-/* **************************************************************** */
-/* */
-/* History Utilities */
-/* */
-/* **************************************************************** */
-
-/* We already have a history library, and that is what we use to control
- the history features of readline. This is our local interface to
- the history mechanism. */
-
-/* While we are editing the history, this is the saved
- version of the original line. */
-HIST_ENTRY *_rl_saved_line_for_history = (HIST_ENTRY *)NULL;
-
-/* Set the history pointer back to the last entry in the history. */
-void
-_rl_start_using_history ()
-{
- using_history ();
- if (_rl_saved_line_for_history)
- _rl_free_history_entry (_rl_saved_line_for_history);
-
- _rl_saved_line_for_history = (HIST_ENTRY *)NULL;
-}
-
-/* Free the contents (and containing structure) of a HIST_ENTRY. */
-void
-_rl_free_history_entry (entry)
- HIST_ENTRY *entry;
-{
- if (entry == 0)
- return;
- if (entry->line)
- free (entry->line);
- free (entry);
-}
-
-/* Perhaps put back the current line if it has changed. */
-int
-rl_maybe_replace_line ()
-{
- HIST_ENTRY *temp;
-
- temp = current_history ();
- /* If the current line has changed, save the changes. */
- if (temp && ((UNDO_LIST *)(temp->data) != rl_undo_list))
- {
- temp = replace_history_entry (where_history (), rl_line_buffer, (histdata_t)rl_undo_list);
- free (temp->line);
- free (temp);
- }
- return 0;
-}
-
-/* Restore the _rl_saved_line_for_history if there is one. */
-int
-rl_maybe_unsave_line ()
-{
- if (_rl_saved_line_for_history)
- {
- rl_replace_line (_rl_saved_line_for_history->line, 0);
- rl_undo_list = (UNDO_LIST *)_rl_saved_line_for_history->data;
- _rl_free_history_entry (_rl_saved_line_for_history);
- _rl_saved_line_for_history = (HIST_ENTRY *)NULL;
- rl_point = rl_end; /* rl_replace_line sets rl_end */
- }
- else
- rl_ding ();
- return 0;
-}
-
-/* Save the current line in _rl_saved_line_for_history. */
-int
-rl_maybe_save_line ()
-{
- if (_rl_saved_line_for_history == 0)
- {
- _rl_saved_line_for_history = (HIST_ENTRY *)xmalloc (sizeof (HIST_ENTRY));
- _rl_saved_line_for_history->line = savestring (rl_line_buffer);
- _rl_saved_line_for_history->data = (char *)rl_undo_list;
- }
- return 0;
-}
-
-int
-_rl_free_saved_history_line ()
-{
- if (_rl_saved_line_for_history)
- {
- _rl_free_history_entry (_rl_saved_line_for_history);
- _rl_saved_line_for_history = (HIST_ENTRY *)NULL;
- }
- return 0;
-}
-
-static void
-_rl_history_set_point ()
-{
- rl_point = (_rl_history_preserve_point && _rl_history_saved_point != -1)
- ? _rl_history_saved_point
- : rl_end;
- if (rl_point > rl_end)
- rl_point = rl_end;
-
-#if defined (VI_MODE)
- if (rl_editing_mode == vi_mode)
- rl_point = 0;
-#endif /* VI_MODE */
-
- if (rl_editing_mode == emacs_mode)
- rl_mark = (rl_point == rl_end ? 0 : rl_end);
-}
-
-void
-rl_replace_from_history (entry, flags)
- HIST_ENTRY *entry;
- int flags; /* currently unused */
-{
- rl_replace_line (entry->line, 0);
- rl_undo_list = (UNDO_LIST *)entry->data;
- rl_point = rl_end;
- rl_mark = 0;
-
-#if defined (VI_MODE)
- if (rl_editing_mode == vi_mode)
- {
- rl_point = 0;
- rl_mark = rl_end;
- }
-#endif
-}
-
-/* **************************************************************** */
-/* */
-/* History Commands */
-/* */
-/* **************************************************************** */
-
-/* Meta-< goes to the start of the history. */
-int
-rl_beginning_of_history (count, key)
- int count, key;
-{
- return (rl_get_previous_history (1 + where_history (), key));
-}
-
-/* Meta-> goes to the end of the history. (The current line). */
-int
-rl_end_of_history (count, key)
- int count, key;
-{
- rl_maybe_replace_line ();
- using_history ();
- rl_maybe_unsave_line ();
- return 0;
-}
-
-/* Move down to the next history line. */
-int
-rl_get_next_history (count, key)
- int count, key;
-{
- HIST_ENTRY *temp;
-
- if (count < 0)
- return (rl_get_previous_history (-count, key));
-
- if (count == 0)
- return 0;
-
- rl_maybe_replace_line ();
-
- /* either not saved by rl_newline or at end of line, so set appropriately. */
- if (_rl_history_saved_point == -1 && (rl_point || rl_end))
- _rl_history_saved_point = (rl_point == rl_end) ? -1 : rl_point;
-
- temp = (HIST_ENTRY *)NULL;
- while (count)
- {
- temp = next_history ();
- if (!temp)
- break;
- --count;
- }
-
- if (temp == 0)
- rl_maybe_unsave_line ();
- else
- {
- rl_replace_from_history (temp, 0);
- _rl_history_set_point ();
- }
- return 0;
-}
-
-/* Get the previous item out of our interactive history, making it the current
- line. If there is no previous history, just ding. */
-int
-rl_get_previous_history (count, key)
- int count, key;
-{
- HIST_ENTRY *old_temp, *temp;
-
- if (count < 0)
- return (rl_get_next_history (-count, key));
-
- if (count == 0)
- return 0;
-
- /* either not saved by rl_newline or at end of line, so set appropriately. */
- if (_rl_history_saved_point == -1 && (rl_point || rl_end))
- _rl_history_saved_point = (rl_point == rl_end) ? -1 : rl_point;
-
- /* If we don't have a line saved, then save this one. */
- rl_maybe_save_line ();
-
- /* If the current line has changed, save the changes. */
- rl_maybe_replace_line ();
-
- temp = old_temp = (HIST_ENTRY *)NULL;
- while (count)
- {
- temp = previous_history ();
- if (temp == 0)
- break;
-
- old_temp = temp;
- --count;
- }
-
- /* If there was a large argument, and we moved back to the start of the
- history, that is not an error. So use the last value found. */
- if (!temp && old_temp)
- temp = old_temp;
-
- if (temp == 0)
- rl_ding ();
- else
- {
- rl_replace_from_history (temp, 0);
- _rl_history_set_point ();
- }
- return 0;
-}
-
-/* **************************************************************** */
-/* */
-/* Editing Modes */
-/* */
-/* **************************************************************** */
-/* How to toggle back and forth between editing modes. */
-int
-rl_vi_editing_mode (count, key)
- int count, key;
-{
-#if defined (VI_MODE)
- _rl_set_insert_mode (RL_IM_INSERT, 1); /* vi mode ignores insert mode */
- rl_editing_mode = vi_mode;
- rl_vi_insertion_mode (1, key);
-#endif /* VI_MODE */
-
- return 0;
-}
-
-int
-rl_emacs_editing_mode (count, key)
- int count, key;
-{
- rl_editing_mode = emacs_mode;
- _rl_set_insert_mode (RL_IM_INSERT, 1); /* emacs mode default is insert mode */
- _rl_keymap = emacs_standard_keymap;
- return 0;
-}
-
-/* Function for the rest of the library to use to set insert/overwrite mode. */
-void
-_rl_set_insert_mode (im, force)
- int im, force;
-{
-#ifdef CURSOR_MODE
- _rl_set_cursor (im, force);
-#endif
-
- rl_insert_mode = im;
-}
-
-/* Toggle overwrite mode. A positive explicit argument selects overwrite
- mode. A negative or zero explicit argument selects insert mode. */
-int
-rl_overwrite_mode (count, key)
- int count, key;
-{
- if (rl_explicit_arg == 0)
- _rl_set_insert_mode (rl_insert_mode ^ 1, 0);
- else if (count > 0)
- _rl_set_insert_mode (RL_IM_OVERWRITE, 0);
- else
- _rl_set_insert_mode (RL_IM_INSERT, 0);
-
- return 0;
-}
diff --git a/readline-4.3/nls.c b/readline-4.3/nls.c
deleted file mode 100644
index 706c819..0000000
--- a/readline-4.3/nls.c
+++ /dev/null
@@ -1,225 +0,0 @@
-/* nls.c -- skeletal internationalization code. */
-
-/* Copyright (C) 1996 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <sys/types.h>
-
-#include <stdio.h>
-
-#if defined (HAVE_UNISTD_H)
-# include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#if defined (HAVE_LOCALE_H)
-# include <locale.h>
-#endif
-
-#include <ctype.h>
-
-#include "rldefs.h"
-#include "readline.h"
-#include "rlshell.h"
-#include "rlprivate.h"
-
-#if !defined (HAVE_SETLOCALE)
-/* A list of legal values for the LANG or LC_CTYPE environment variables.
- If a locale name in this list is the value for the LC_ALL, LC_CTYPE,
- or LANG environment variable (using the first of those with a value),
- readline eight-bit mode is enabled. */
-static char *legal_lang_values[] =
-{
- "iso88591",
- "iso88592",
- "iso88593",
- "iso88594",
- "iso88595",
- "iso88596",
- "iso88597",
- "iso88598",
- "iso88599",
- "iso885910",
- "koi8r",
- 0
-};
-
-static char *normalize_codeset PARAMS((char *));
-static char *find_codeset PARAMS((char *, size_t *));
-#endif /* !HAVE_SETLOCALE */
-
-/* Check for LC_ALL, LC_CTYPE, and LANG and use the first with a value
- to decide the defaults for 8-bit character input and output. Returns
- 1 if we set eight-bit mode. */
-int
-_rl_init_eightbit ()
-{
-/* If we have setlocale(3), just check the current LC_CTYPE category
- value, and go into eight-bit mode if it's not C or POSIX. */
-#if defined (HAVE_SETLOCALE)
- char *t;
-
- /* Set the LC_CTYPE locale category from environment variables. */
- t = setlocale (LC_CTYPE, "");
- if (t && *t && (t[0] != 'C' || t[1]) && (STREQ (t, "POSIX") == 0))
- {
- _rl_meta_flag = 1;
- _rl_convert_meta_chars_to_ascii = 0;
- _rl_output_meta_chars = 1;
- return (1);
- }
- else
- return (0);
-
-#else /* !HAVE_SETLOCALE */
- char *lspec, *t;
- int i;
-
- /* We don't have setlocale. Finesse it. Check the environment for the
- appropriate variables and set eight-bit mode if they have the right
- values. */
- lspec = sh_get_env_value ("LC_ALL");
- if (lspec == 0) lspec = sh_get_env_value ("LC_CTYPE");
- if (lspec == 0) lspec = sh_get_env_value ("LANG");
- if (lspec == 0 || (t = normalize_codeset (lspec)) == 0)
- return (0);
- for (i = 0; t && legal_lang_values[i]; i++)
- if (STREQ (t, legal_lang_values[i]))
- {
- _rl_meta_flag = 1;
- _rl_convert_meta_chars_to_ascii = 0;
- _rl_output_meta_chars = 1;
- break;
- }
- free (t);
- return (legal_lang_values[i] ? 1 : 0);
-
-#endif /* !HAVE_SETLOCALE */
-}
-
-#if !defined (HAVE_SETLOCALE)
-static char *
-normalize_codeset (codeset)
- char *codeset;
-{
- size_t namelen, i;
- int len, all_digits;
- char *wp, *retval;
-
- codeset = find_codeset (codeset, &namelen);
-
- if (codeset == 0)
- return (codeset);
-
- all_digits = 1;
- for (len = 0, i = 0; i < namelen; i++)
- {
- if (ISALNUM ((unsigned char)codeset[i]))
- {
- len++;
- all_digits &= _rl_digit_p (codeset[i]);
- }
- }
-
- retval = (char *)malloc ((all_digits ? 3 : 0) + len + 1);
- if (retval == 0)
- return ((char *)0);
-
- wp = retval;
- /* Add `iso' to beginning of an all-digit codeset */
- if (all_digits)
- {
- *wp++ = 'i';
- *wp++ = 's';
- *wp++ = 'o';
- }
-
- for (i = 0; i < namelen; i++)
- if (ISALPHA ((unsigned char)codeset[i]))
- *wp++ = _rl_to_lower (codeset[i]);
- else if (_rl_digit_p (codeset[i]))
- *wp++ = codeset[i];
- *wp = '\0';
-
- return retval;
-}
-
-/* Isolate codeset portion of locale specification. */
-static char *
-find_codeset (name, lenp)
- char *name;
- size_t *lenp;
-{
- char *cp, *language, *result;
-
- cp = language = name;
- result = (char *)0;
-
- while (*cp && *cp != '_' && *cp != '@' && *cp != '+' && *cp != ',')
- cp++;
-
- /* This does not make sense: language has to be specified. As
- an exception we allow the variable to contain only the codeset
- name. Perhaps there are funny codeset names. */
- if (language == cp)
- {
- *lenp = strlen (language);
- result = language;
- }
- else
- {
- /* Next is the territory. */
- if (*cp == '_')
- do
- ++cp;
- while (*cp && *cp != '.' && *cp != '@' && *cp != '+' && *cp != ',' && *cp != '_');
-
- /* Now, finally, is the codeset. */
- result = cp;
- if (*cp == '.')
- do
- ++cp;
- while (*cp && *cp != '@');
-
- if (cp - result > 2)
- {
- result++;
- *lenp = cp - result;
- }
- else
- {
- *lenp = strlen (language);
- result = language;
- }
- }
-
- return result;
-}
-#endif /* !HAVE_SETLOCALE */
diff --git a/readline-4.3/parens.c b/readline-4.3/parens.c
deleted file mode 100644
index 54ef1f3..0000000
--- a/readline-4.3/parens.c
+++ /dev/null
@@ -1,179 +0,0 @@
-/* parens.c -- Implementation of matching parentheses feature. */
-
-/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#include "rlconf.h"
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <stdio.h>
-#include <sys/types.h>
-
-#if defined (HAVE_UNISTD_H)
-# include <unistd.h>
-#endif
-
-#if defined (FD_SET) && !defined (HAVE_SELECT)
-# define HAVE_SELECT
-#endif
-
-#if defined (HAVE_SELECT)
-# include <sys/time.h>
-#endif /* HAVE_SELECT */
-#if defined (HAVE_SYS_SELECT_H)
-# include <sys/select.h>
-#endif
-
-#if defined (HAVE_STRING_H)
-# include <string.h>
-#else /* !HAVE_STRING_H */
-# include <strings.h>
-#endif /* !HAVE_STRING_H */
-
-#if !defined (strchr) && !defined (__STDC__)
-extern char *strchr (), *strrchr ();
-#endif /* !strchr && !__STDC__ */
-
-#include "readline.h"
-#include "rlprivate.h"
-
-static int find_matching_open PARAMS((char *, int, int));
-
-/* Non-zero means try to blink the matching open parenthesis when the
- close parenthesis is inserted. */
-#if defined (HAVE_SELECT)
-int rl_blink_matching_paren = 1;
-#else /* !HAVE_SELECT */
-int rl_blink_matching_paren = 0;
-#endif /* !HAVE_SELECT */
-
-static int _paren_blink_usec = 500000;
-
-/* Change emacs_standard_keymap to have bindings for paren matching when
- ON_OR_OFF is 1, change them back to self_insert when ON_OR_OFF == 0. */
-void
-_rl_enable_paren_matching (on_or_off)
- int on_or_off;
-{
- if (on_or_off)
- { /* ([{ */
- rl_bind_key_in_map (')', rl_insert_close, emacs_standard_keymap);
- rl_bind_key_in_map (']', rl_insert_close, emacs_standard_keymap);
- rl_bind_key_in_map ('}', rl_insert_close, emacs_standard_keymap);
- }
- else
- { /* ([{ */
- rl_bind_key_in_map (')', rl_insert, emacs_standard_keymap);
- rl_bind_key_in_map (']', rl_insert, emacs_standard_keymap);
- rl_bind_key_in_map ('}', rl_insert, emacs_standard_keymap);
- }
-}
-
-int
-rl_set_paren_blink_timeout (u)
- int u;
-{
- int o;
-
- o = _paren_blink_usec;
- if (u > 0)
- _paren_blink_usec = u;
- return (o);
-}
-
-int
-rl_insert_close (count, invoking_key)
- int count, invoking_key;
-{
- if (rl_explicit_arg || !rl_blink_matching_paren)
- _rl_insert_char (count, invoking_key);
- else
- {
-#if defined (HAVE_SELECT)
- int orig_point, match_point, ready;
- struct timeval timer;
- fd_set readfds;
-
- _rl_insert_char (1, invoking_key);
- (*rl_redisplay_function) ();
- match_point =
- find_matching_open (rl_line_buffer, rl_point - 2, invoking_key);
-
- /* Emacs might message or ring the bell here, but I don't. */
- if (match_point < 0)
- return -1;
-
- FD_ZERO (&readfds);
- FD_SET (fileno (rl_instream), &readfds);
- timer.tv_sec = 0;
- timer.tv_usec = _paren_blink_usec;
-
- orig_point = rl_point;
- rl_point = match_point;
- (*rl_redisplay_function) ();
- ready = select (1, &readfds, (fd_set *)NULL, (fd_set *)NULL, &timer);
- rl_point = orig_point;
-#else /* !HAVE_SELECT */
- _rl_insert_char (count, invoking_key);
-#endif /* !HAVE_SELECT */
- }
- return 0;
-}
-
-static int
-find_matching_open (string, from, closer)
- char *string;
- int from, closer;
-{
- register int i;
- int opener, level, delimiter;
-
- switch (closer)
- {
- case ']': opener = '['; break;
- case '}': opener = '{'; break;
- case ')': opener = '('; break;
- default:
- return (-1);
- }
-
- level = 1; /* The closer passed in counts as 1. */
- delimiter = 0; /* Delimited state unknown. */
-
- for (i = from; i > -1; i--)
- {
- if (delimiter && (string[i] == delimiter))
- delimiter = 0;
- else if (rl_basic_quote_characters && strchr (rl_basic_quote_characters, string[i]))
- delimiter = string[i];
- else if (!delimiter && (string[i] == closer))
- level++;
- else if (!delimiter && (string[i] == opener))
- level--;
-
- if (!level)
- break;
- }
- return (i);
-}
diff --git a/readline-4.3/posixdir.h b/readline-4.3/posixdir.h
deleted file mode 100644
index 505e279..0000000
--- a/readline-4.3/posixdir.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/* posixdir.h -- Posix directory reading includes and defines. */
-
-/* Copyright (C) 1987,1991 Free Software Foundation, Inc.
-
- This file is part of GNU Bash, the Bourne Again SHell.
-
- Bash is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- Bash is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Bash; see the file COPYING. If not, write to the Free
- Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-/* This file should be included instead of <dirent.h> or <sys/dir.h>. */
-
-#if !defined (_POSIXDIR_H_)
-#define _POSIXDIR_H_
-
-#if defined (HAVE_DIRENT_H)
-# include <dirent.h>
-# define D_NAMLEN(d) (strlen ((d)->d_name))
-#else
-# if defined (HAVE_SYS_NDIR_H)
-# include <sys/ndir.h>
-# endif
-# if defined (HAVE_SYS_DIR_H)
-# include <sys/dir.h>
-# endif
-# if defined (HAVE_NDIR_H)
-# include <ndir.h>
-# endif
-# if !defined (dirent)
-# define dirent direct
-# endif /* !dirent */
-# define D_NAMLEN(d) ((d)->d_namlen)
-#endif /* !HAVE_DIRENT_H */
-
-#if defined (STRUCT_DIRENT_HAS_D_INO) && !defined (STRUCT_DIRENT_HAS_D_FILENO)
-# define d_fileno d_ino
-#endif
-
-#if defined (_POSIX_SOURCE) && (!defined (STRUCT_DIRENT_HAS_D_INO) || defined (BROKEN_DIRENT_D_INO))
-/* Posix does not require that the d_ino field be present, and some
- systems do not provide it. */
-# define REAL_DIR_ENTRY(dp) 1
-#else
-# define REAL_DIR_ENTRY(dp) (dp->d_ino != 0)
-#endif /* _POSIX_SOURCE */
-
-#endif /* !_POSIXDIR_H_ */
diff --git a/readline-4.3/posixjmp.h b/readline-4.3/posixjmp.h
deleted file mode 100644
index b52aa00..0000000
--- a/readline-4.3/posixjmp.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* posixjmp.h -- wrapper for setjmp.h with changes for POSIX systems. */
-
-/* Copyright (C) 1987,1991 Free Software Foundation, Inc.
-
- This file is part of GNU Bash, the Bourne Again SHell.
-
- Bash is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- Bash is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Bash; see the file COPYING. If not, write to the Free
- Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#ifndef _POSIXJMP_H_
-#define _POSIXJMP_H_
-
-#include <setjmp.h>
-
-/* This *must* be included *after* config.h */
-
-#if defined (HAVE_POSIX_SIGSETJMP)
-# define procenv_t sigjmp_buf
-# if !defined (__OPENNT)
-# undef setjmp
-# define setjmp(x) sigsetjmp((x), 1)
-# undef longjmp
-# define longjmp(x, n) siglongjmp((x), (n))
-# endif /* !__OPENNT */
-#else
-# define procenv_t jmp_buf
-#endif
-
-#endif /* _POSIXJMP_H_ */
diff --git a/readline-4.3/posixstat.h b/readline-4.3/posixstat.h
deleted file mode 100644
index c93b528..0000000
--- a/readline-4.3/posixstat.h
+++ /dev/null
@@ -1,142 +0,0 @@
-/* posixstat.h -- Posix stat(2) definitions for systems that
- don't have them. */
-
-/* Copyright (C) 1987,1991 Free Software Foundation, Inc.
-
- This file is part of GNU Bash, the Bourne Again SHell.
-
- Bash is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- Bash is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Bash; see the file COPYING. If not, write to the Free
- Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-/* This file should be included instead of <sys/stat.h>.
- It relies on the local sys/stat.h to work though. */
-#if !defined (_POSIXSTAT_H_)
-#define _POSIXSTAT_H_
-
-#include <sys/stat.h>
-
-#if defined (STAT_MACROS_BROKEN)
-# undef S_ISBLK
-# undef S_ISCHR
-# undef S_ISDIR
-# undef S_ISFIFO
-# undef S_ISREG
-# undef S_ISLNK
-#endif /* STAT_MACROS_BROKEN */
-
-/* These are guaranteed to work only on isc386 */
-#if !defined (S_IFDIR) && !defined (S_ISDIR)
-# define S_IFDIR 0040000
-#endif /* !S_IFDIR && !S_ISDIR */
-#if !defined (S_IFMT)
-# define S_IFMT 0170000
-#endif /* !S_IFMT */
-
-/* Posix 1003.1 5.6.1.1 <sys/stat.h> file types */
-
-/* Some Posix-wannabe systems define _S_IF* macros instead of S_IF*, but
- do not provide the S_IS* macros that Posix requires. */
-
-#if defined (_S_IFMT) && !defined (S_IFMT)
-#define S_IFMT _S_IFMT
-#endif
-#if defined (_S_IFIFO) && !defined (S_IFIFO)
-#define S_IFIFO _S_IFIFO
-#endif
-#if defined (_S_IFCHR) && !defined (S_IFCHR)
-#define S_IFCHR _S_IFCHR
-#endif
-#if defined (_S_IFDIR) && !defined (S_IFDIR)
-#define S_IFDIR _S_IFDIR
-#endif
-#if defined (_S_IFBLK) && !defined (S_IFBLK)
-#define S_IFBLK _S_IFBLK
-#endif
-#if defined (_S_IFREG) && !defined (S_IFREG)
-#define S_IFREG _S_IFREG
-#endif
-#if defined (_S_IFLNK) && !defined (S_IFLNK)
-#define S_IFLNK _S_IFLNK
-#endif
-#if defined (_S_IFSOCK) && !defined (S_IFSOCK)
-#define S_IFSOCK _S_IFSOCK
-#endif
-
-/* Test for each symbol individually and define the ones necessary (some
- systems claiming Posix compatibility define some but not all). */
-
-#if defined (S_IFBLK) && !defined (S_ISBLK)
-#define S_ISBLK(m) (((m)&S_IFMT) == S_IFBLK) /* block device */
-#endif
-
-#if defined (S_IFCHR) && !defined (S_ISCHR)
-#define S_ISCHR(m) (((m)&S_IFMT) == S_IFCHR) /* character device */
-#endif
-
-#if defined (S_IFDIR) && !defined (S_ISDIR)
-#define S_ISDIR(m) (((m)&S_IFMT) == S_IFDIR) /* directory */
-#endif
-
-#if defined (S_IFREG) && !defined (S_ISREG)
-#define S_ISREG(m) (((m)&S_IFMT) == S_IFREG) /* file */
-#endif
-
-#if defined (S_IFIFO) && !defined (S_ISFIFO)
-#define S_ISFIFO(m) (((m)&S_IFMT) == S_IFIFO) /* fifo - named pipe */
-#endif
-
-#if defined (S_IFLNK) && !defined (S_ISLNK)
-#define S_ISLNK(m) (((m)&S_IFMT) == S_IFLNK) /* symbolic link */
-#endif
-
-#if defined (S_IFSOCK) && !defined (S_ISSOCK)
-#define S_ISSOCK(m) (((m)&S_IFMT) == S_IFSOCK) /* socket */
-#endif
-
-/*
- * POSIX 1003.1 5.6.1.2 <sys/stat.h> File Modes
- */
-
-#if !defined (S_IRWXU)
-# if !defined (S_IREAD)
-# define S_IREAD 00400
-# define S_IWRITE 00200
-# define S_IEXEC 00100
-# endif /* S_IREAD */
-
-# if !defined (S_IRUSR)
-# define S_IRUSR S_IREAD /* read, owner */
-# define S_IWUSR S_IWRITE /* write, owner */
-# define S_IXUSR S_IEXEC /* execute, owner */
-
-# define S_IRGRP (S_IREAD >> 3) /* read, group */
-# define S_IWGRP (S_IWRITE >> 3) /* write, group */
-# define S_IXGRP (S_IEXEC >> 3) /* execute, group */
-
-# define S_IROTH (S_IREAD >> 6) /* read, other */
-# define S_IWOTH (S_IWRITE >> 6) /* write, other */
-# define S_IXOTH (S_IEXEC >> 6) /* execute, other */
-# endif /* !S_IRUSR */
-
-# define S_IRWXU (S_IRUSR | S_IWUSR | S_IXUSR)
-# define S_IRWXG (S_IRGRP | S_IWGRP | S_IXGRP)
-# define S_IRWXO (S_IROTH | S_IWOTH | S_IXOTH)
-#endif /* !S_IRWXU */
-
-/* These are non-standard, but are used in builtins.c$symbolic_umask() */
-#define S_IRUGO (S_IRUSR | S_IRGRP | S_IROTH)
-#define S_IWUGO (S_IWUSR | S_IWGRP | S_IWOTH)
-#define S_IXUGO (S_IXUSR | S_IXGRP | S_IXOTH)
-
-#endif /* _POSIXSTAT_H_ */
diff --git a/readline-4.3/readline.c b/readline-4.3/readline.c
deleted file mode 100644
index 28801f1..0000000
--- a/readline-4.3/readline.c
+++ /dev/null
@@ -1,973 +0,0 @@
-/* readline.c -- a general facility for reading lines of input
- with emacs style editing and completion. */
-
-/* Copyright (C) 1987-2002 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <sys/types.h>
-#include "posixstat.h"
-#include <fcntl.h>
-#if defined (HAVE_SYS_FILE_H)
-# include <sys/file.h>
-#endif /* HAVE_SYS_FILE_H */
-
-#if defined (HAVE_UNISTD_H)
-# include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#if defined (HAVE_LOCALE_H)
-# include <locale.h>
-#endif
-
-#include <stdio.h>
-#include "posixjmp.h"
-
-/* System-specific feature definitions and include files. */
-#include "rldefs.h"
-#include "rlmbutil.h"
-
-#if defined (__EMX__)
-# define INCL_DOSPROCESS
-# include <os2.h>
-#endif /* __EMX__ */
-
-/* Some standard library routines. */
-#include "readline.h"
-#include "history.h"
-
-#include "rlprivate.h"
-#include "rlshell.h"
-#include "xmalloc.h"
-
-#ifndef RL_LIBRARY_VERSION
-# define RL_LIBRARY_VERSION "4.3"
-#endif
-
-#ifndef RL_READLINE_VERSION
-# define RL_READLINE_VERSION 0x0403
-#endif
-
-extern void _rl_free_history_entry PARAMS((HIST_ENTRY *));
-
-/* Forward declarations used in this file. */
-static char *readline_internal PARAMS((void));
-static void readline_initialize_everything PARAMS((void));
-
-static void bind_arrow_keys_internal PARAMS((Keymap));
-static void bind_arrow_keys PARAMS((void));
-
-static void readline_default_bindings PARAMS((void));
-
-/* **************************************************************** */
-/* */
-/* Line editing input utility */
-/* */
-/* **************************************************************** */
-
-const char *rl_library_version = RL_LIBRARY_VERSION;
-
-int rl_readline_version = RL_READLINE_VERSION;
-
-/* True if this is `real' readline as opposed to some stub substitute. */
-int rl_gnu_readline_p = 1;
-
-/* A pointer to the keymap that is currently in use.
- By default, it is the standard emacs keymap. */
-Keymap _rl_keymap = emacs_standard_keymap;
-
-/* The current style of editing. */
-int rl_editing_mode = emacs_mode;
-
-/* The current insert mode: input (the default) or overwrite */
-int rl_insert_mode = RL_IM_DEFAULT;
-
-/* Non-zero if we called this function from _rl_dispatch(). It's present
- so functions can find out whether they were called from a key binding
- or directly from an application. */
-int rl_dispatching;
-
-/* Non-zero if the previous command was a kill command. */
-int _rl_last_command_was_kill = 0;
-
-/* The current value of the numeric argument specified by the user. */
-int rl_numeric_arg = 1;
-
-/* Non-zero if an argument was typed. */
-int rl_explicit_arg = 0;
-
-/* Temporary value used while generating the argument. */
-int rl_arg_sign = 1;
-
-/* Non-zero means we have been called at least once before. */
-static int rl_initialized;
-
-#if 0
-/* If non-zero, this program is running in an EMACS buffer. */
-static int running_in_emacs;
-#endif
-
-/* Flags word encapsulating the current readline state. */
-int rl_readline_state = RL_STATE_NONE;
-
-/* The current offset in the current input line. */
-int rl_point;
-
-/* Mark in the current input line. */
-int rl_mark;
-
-/* Length of the current input line. */
-int rl_end;
-
-/* Make this non-zero to return the current input_line. */
-int rl_done;
-
-/* The last function executed by readline. */
-rl_command_func_t *rl_last_func = (rl_command_func_t *)NULL;
-
-/* Top level environment for readline_internal (). */
-procenv_t readline_top_level;
-
-/* The streams we interact with. */
-FILE *_rl_in_stream, *_rl_out_stream;
-
-/* The names of the streams that we do input and output to. */
-FILE *rl_instream = (FILE *)NULL;
-FILE *rl_outstream = (FILE *)NULL;
-
-/* Non-zero means echo characters as they are read. Defaults to no echo;
- set to 1 if there is a controlling terminal, we can get its attributes,
- and the attributes include `echo'. Look at rltty.c:prepare_terminal_settings
- for the code that sets it. */
-int readline_echoing_p = 0;
-
-/* Current prompt. */
-char *rl_prompt = (char *)NULL;
-int rl_visible_prompt_length = 0;
-
-/* Set to non-zero by calling application if it has already printed rl_prompt
- and does not want readline to do it the first time. */
-int rl_already_prompted = 0;
-
-/* The number of characters read in order to type this complete command. */
-int rl_key_sequence_length = 0;
-
-/* If non-zero, then this is the address of a function to call just
- before readline_internal_setup () prints the first prompt. */
-rl_hook_func_t *rl_startup_hook = (rl_hook_func_t *)NULL;
-
-/* If non-zero, this is the address of a function to call just before
- readline_internal_setup () returns and readline_internal starts
- reading input characters. */
-rl_hook_func_t *rl_pre_input_hook = (rl_hook_func_t *)NULL;
-
-/* What we use internally. You should always refer to RL_LINE_BUFFER. */
-static char *the_line;
-
-/* The character that can generate an EOF. Really read from
- the terminal driver... just defaulted here. */
-int _rl_eof_char = CTRL ('D');
-
-/* Non-zero makes this the next keystroke to read. */
-int rl_pending_input = 0;
-
-/* Pointer to a useful terminal name. */
-const char *rl_terminal_name = (const char *)NULL;
-
-/* Non-zero means to always use horizontal scrolling in line display. */
-int _rl_horizontal_scroll_mode = 0;
-
-/* Non-zero means to display an asterisk at the starts of history lines
- which have been modified. */
-int _rl_mark_modified_lines = 0;
-
-/* The style of `bell' notification preferred. This can be set to NO_BELL,
- AUDIBLE_BELL, or VISIBLE_BELL. */
-int _rl_bell_preference = AUDIBLE_BELL;
-
-/* String inserted into the line by rl_insert_comment (). */
-char *_rl_comment_begin;
-
-/* Keymap holding the function currently being executed. */
-Keymap rl_executing_keymap;
-
-/* Non-zero means to erase entire line, including prompt, on empty input lines. */
-int rl_erase_empty_line = 0;
-
-/* Non-zero means to read only this many characters rather than up to a
- character bound to accept-line. */
-int rl_num_chars_to_read;
-
-/* Line buffer and maintenence. */
-char *rl_line_buffer = (char *)NULL;
-int rl_line_buffer_len = 0;
-
-/* Forward declarations used by the display, termcap, and history code. */
-
-/* **************************************************************** */
-/* */
-/* `Forward' declarations */
-/* */
-/* **************************************************************** */
-
-/* Non-zero means do not parse any lines other than comments and
- parser directives. */
-unsigned char _rl_parsing_conditionalized_out = 0;
-
-/* Non-zero means to convert characters with the meta bit set to
- escape-prefixed characters so we can indirect through
- emacs_meta_keymap or vi_escape_keymap. */
-int _rl_convert_meta_chars_to_ascii = 1;
-
-/* Non-zero means to output characters with the meta bit set directly
- rather than as a meta-prefixed escape sequence. */
-int _rl_output_meta_chars = 0;
-
-/* **************************************************************** */
-/* */
-/* Top Level Functions */
-/* */
-/* **************************************************************** */
-
-/* Non-zero means treat 0200 bit in terminal input as Meta bit. */
-int _rl_meta_flag = 0; /* Forward declaration */
-
-/* Set up the prompt and expand it. Called from readline() and
- rl_callback_handler_install (). */
-int
-rl_set_prompt (prompt)
- const char *prompt;
-{
- FREE (rl_prompt);
- rl_prompt = prompt ? savestring (prompt) : (char *)NULL;
-
- rl_visible_prompt_length = rl_expand_prompt (rl_prompt);
- return 0;
-}
-
-/* Read a line of input. Prompt with PROMPT. An empty PROMPT means
- none. A return value of NULL means that EOF was encountered. */
-char *
-readline (prompt)
- const char *prompt;
-{
- char *value;
-
- /* If we are at EOF return a NULL string. */
- if (rl_pending_input == EOF)
- {
- rl_clear_pending_input ();
- return ((char *)NULL);
- }
-
- rl_set_prompt (prompt);
-
- rl_initialize ();
- (*rl_prep_term_function) (_rl_meta_flag);
-
-#if defined (HANDLE_SIGNALS)
- rl_set_signals ();
-#endif
-
- value = readline_internal ();
- (*rl_deprep_term_function) ();
-
-#if defined (HANDLE_SIGNALS)
- rl_clear_signals ();
-#endif
-
- return (value);
-}
-
-#if defined (READLINE_CALLBACKS)
-# define STATIC_CALLBACK
-#else
-# define STATIC_CALLBACK static
-#endif
-
-STATIC_CALLBACK void
-readline_internal_setup ()
-{
- char *nprompt;
-
- _rl_in_stream = rl_instream;
- _rl_out_stream = rl_outstream;
-
- if (rl_startup_hook)
- (*rl_startup_hook) ();
-
- /* If we're not echoing, we still want to at least print a prompt, because
- rl_redisplay will not do it for us. If the calling application has a
- custom redisplay function, though, let that function handle it. */
- if (readline_echoing_p == 0 && rl_redisplay_function == rl_redisplay)
- {
- if (rl_prompt && rl_already_prompted == 0)
- {
- nprompt = _rl_strip_prompt (rl_prompt);
- fprintf (_rl_out_stream, "%s", nprompt);
- fflush (_rl_out_stream);
- free (nprompt);
- }
- }
- else
- {
- if (rl_prompt && rl_already_prompted)
- rl_on_new_line_with_prompt ();
- else
- rl_on_new_line ();
- (*rl_redisplay_function) ();
- }
-
-#if defined (VI_MODE)
- if (rl_editing_mode == vi_mode)
- rl_vi_insertion_mode (1, 0);
-#endif /* VI_MODE */
-
- if (rl_pre_input_hook)
- (*rl_pre_input_hook) ();
-}
-
-STATIC_CALLBACK char *
-readline_internal_teardown (eof)
- int eof;
-{
- char *temp;
- HIST_ENTRY *entry;
-
- /* Restore the original of this history line, iff the line that we
- are editing was originally in the history, AND the line has changed. */
- entry = current_history ();
-
- if (entry && rl_undo_list)
- {
- temp = savestring (the_line);
- rl_revert_line (1, 0);
- entry = replace_history_entry (where_history (), the_line, (histdata_t)NULL);
- _rl_free_history_entry (entry);
-
- strcpy (the_line, temp);
- free (temp);
- }
-
- /* At any rate, it is highly likely that this line has an undo list. Get
- rid of it now. */
- if (rl_undo_list)
- rl_free_undo_list ();
-
- /* Restore normal cursor, if available. */
- _rl_set_insert_mode (RL_IM_INSERT, 0);
-
- return (eof ? (char *)NULL : savestring (the_line));
-}
-
-STATIC_CALLBACK int
-#if defined (READLINE_CALLBACKS)
-readline_internal_char ()
-#else
-readline_internal_charloop ()
-#endif
-{
- static int lastc, eof_found;
- int c, code, lk;
-
- lastc = -1;
- eof_found = 0;
-
-#if !defined (READLINE_CALLBACKS)
- while (rl_done == 0)
- {
-#endif
- lk = _rl_last_command_was_kill;
-
- code = setjmp (readline_top_level);
-
- if (code)
- (*rl_redisplay_function) ();
-
- if (rl_pending_input == 0)
- {
- /* Then initialize the argument and number of keys read. */
- _rl_init_argument ();
- rl_key_sequence_length = 0;
- }
-
- RL_SETSTATE(RL_STATE_READCMD);
- c = rl_read_key ();
- RL_UNSETSTATE(RL_STATE_READCMD);
-
- /* EOF typed to a non-blank line is a <NL>. */
- if (c == EOF && rl_end)
- c = NEWLINE;
-
- /* The character _rl_eof_char typed to blank line, and not as the
- previous character is interpreted as EOF. */
- if (((c == _rl_eof_char && lastc != c) || c == EOF) && !rl_end)
- {
-#if defined (READLINE_CALLBACKS)
- RL_SETSTATE(RL_STATE_DONE);
- return (rl_done = 1);
-#else
- eof_found = 1;
- break;
-#endif
- }
-
- lastc = c;
- _rl_dispatch ((unsigned char)c, _rl_keymap);
-
- /* If there was no change in _rl_last_command_was_kill, then no kill
- has taken place. Note that if input is pending we are reading
- a prefix command, so nothing has changed yet. */
- if (rl_pending_input == 0 && lk == _rl_last_command_was_kill)
- _rl_last_command_was_kill = 0;
-
-#if defined (VI_MODE)
- /* In vi mode, when you exit insert mode, the cursor moves back
- over the previous character. We explicitly check for that here. */
- if (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap)
- rl_vi_check ();
-#endif /* VI_MODE */
-
- if (rl_num_chars_to_read && rl_end >= rl_num_chars_to_read)
- {
- (*rl_redisplay_function) ();
- rl_newline (1, '\n');
- }
-
- if (rl_done == 0)
- (*rl_redisplay_function) ();
-
- /* If the application writer has told us to erase the entire line if
- the only character typed was something bound to rl_newline, do so. */
- if (rl_erase_empty_line && rl_done && rl_last_func == rl_newline &&
- rl_point == 0 && rl_end == 0)
- _rl_erase_entire_line ();
-
-#if defined (READLINE_CALLBACKS)
- return 0;
-#else
- }
-
- return (eof_found);
-#endif
-}
-
-#if defined (READLINE_CALLBACKS)
-static int
-readline_internal_charloop ()
-{
- int eof = 1;
-
- while (rl_done == 0)
- eof = readline_internal_char ();
- return (eof);
-}
-#endif /* READLINE_CALLBACKS */
-
-/* Read a line of input from the global rl_instream, doing output on
- the global rl_outstream.
- If rl_prompt is non-null, then that is our prompt. */
-static char *
-readline_internal ()
-{
- int eof;
-
- readline_internal_setup ();
- eof = readline_internal_charloop ();
- return (readline_internal_teardown (eof));
-}
-
-void
-_rl_init_line_state ()
-{
- rl_point = rl_end = rl_mark = 0;
- the_line = rl_line_buffer;
- the_line[0] = 0;
-}
-
-void
-_rl_set_the_line ()
-{
- the_line = rl_line_buffer;
-}
-
-/* Do the command associated with KEY in MAP.
- If the associated command is really a keymap, then read
- another key, and dispatch into that map. */
-int
-_rl_dispatch (key, map)
- register int key;
- Keymap map;
-{
- return _rl_dispatch_subseq (key, map, 0);
-}
-
-int
-_rl_dispatch_subseq (key, map, got_subseq)
- register int key;
- Keymap map;
- int got_subseq;
-{
- int r, newkey;
- char *macro;
- rl_command_func_t *func;
-
- if (META_CHAR (key) && _rl_convert_meta_chars_to_ascii)
- {
- if (map[ESC].type == ISKMAP)
- {
- if (RL_ISSTATE (RL_STATE_MACRODEF))
- _rl_add_macro_char (ESC);
- map = FUNCTION_TO_KEYMAP (map, ESC);
- key = UNMETA (key);
- rl_key_sequence_length += 2;
- return (_rl_dispatch (key, map));
- }
- else
- rl_ding ();
- return 0;
- }
-
- if (RL_ISSTATE (RL_STATE_MACRODEF))
- _rl_add_macro_char (key);
-
- r = 0;
- switch (map[key].type)
- {
- case ISFUNC:
- func = map[key].function;
- if (func)
- {
- /* Special case rl_do_lowercase_version (). */
- if (func == rl_do_lowercase_version)
- return (_rl_dispatch (_rl_to_lower (key), map));
-
- rl_executing_keymap = map;
-
-#if 0
- _rl_suppress_redisplay = (map[key].function == rl_insert) && _rl_input_available ();
-#endif
-
- rl_dispatching = 1;
- RL_SETSTATE(RL_STATE_DISPATCHING);
- r = (*map[key].function)(rl_numeric_arg * rl_arg_sign, key);
- RL_UNSETSTATE(RL_STATE_DISPATCHING);
- rl_dispatching = 0;
-
- /* If we have input pending, then the last command was a prefix
- command. Don't change the state of rl_last_func. Otherwise,
- remember the last command executed in this variable. */
- if (rl_pending_input == 0 && map[key].function != rl_digit_argument)
- rl_last_func = map[key].function;
- }
- else if (map[ANYOTHERKEY].function)
- {
- /* OK, there's no function bound in this map, but there is a
- shadow function that was overridden when the current keymap
- was created. Return -2 to note that. */
- _rl_unget_char (key);
- return -2;
- }
- else if (got_subseq)
- {
- /* Return -1 to note that we're in a subsequence, but we don't
- have a matching key, nor was one overridden. This means
- we need to back up the recursion chain and find the last
- subsequence that is bound to a function. */
- _rl_unget_char (key);
- return -1;
- }
- else
- {
- _rl_abort_internal ();
- return -1;
- }
- break;
-
- case ISKMAP:
- if (map[key].function != 0)
- {
-#if defined (VI_MODE)
- /* The only way this test will be true is if a subsequence has been
- bound starting with ESC, generally the arrow keys. What we do is
- check whether there's input in the queue, which there generally
- will be if an arrow key has been pressed, and, if there's not,
- just dispatch to (what we assume is) rl_vi_movement_mode right
- away. This is essentially an input test with a zero timeout. */
- if (rl_editing_mode == vi_mode && key == ESC && map == vi_insertion_keymap
- && _rl_input_queued (0) == 0)
- return (_rl_dispatch (ANYOTHERKEY, FUNCTION_TO_KEYMAP (map, key)));
-#endif
-
- rl_key_sequence_length++;
-
- if (key == ESC)
- RL_SETSTATE(RL_STATE_METANEXT);
- RL_SETSTATE(RL_STATE_MOREINPUT);
- newkey = rl_read_key ();
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
- if (key == ESC)
- RL_UNSETSTATE(RL_STATE_METANEXT);
-
- if (newkey < 0)
- {
- _rl_abort_internal ();
- return -1;
- }
-
- r = _rl_dispatch_subseq (newkey, FUNCTION_TO_KEYMAP (map, key), got_subseq || map[ANYOTHERKEY].function);
-
- if (r == -2)
- /* We didn't match anything, and the keymap we're indexed into
- shadowed a function previously bound to that prefix. Call
- the function. The recursive call to _rl_dispatch_subseq has
- already taken care of pushing any necessary input back onto
- the input queue with _rl_unget_char. */
- r = _rl_dispatch (ANYOTHERKEY, FUNCTION_TO_KEYMAP (map, key));
- else if (r && map[ANYOTHERKEY].function)
- {
- /* We didn't match (r is probably -1), so return something to
- tell the caller that it should try ANYOTHERKEY for an
- overridden function. */
- _rl_unget_char (key);
- return -2;
- }
- else if (r && got_subseq)
- {
- /* OK, back up the chain. */
- _rl_unget_char (key);
- return -1;
- }
- }
- else
- {
- _rl_abort_internal ();
- return -1;
- }
- break;
-
- case ISMACR:
- if (map[key].function != 0)
- {
- macro = savestring ((char *)map[key].function);
- _rl_with_macro_input (macro);
- return 0;
- }
- break;
- }
-#if defined (VI_MODE)
- if (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap &&
- _rl_vi_textmod_command (key))
- _rl_vi_set_last (key, rl_numeric_arg, rl_arg_sign);
-#endif
- return (r);
-}
-
-/* **************************************************************** */
-/* */
-/* Initializations */
-/* */
-/* **************************************************************** */
-
-/* Initialize readline (and terminal if not already). */
-int
-rl_initialize ()
-{
- /* If we have never been called before, initialize the
- terminal and data structures. */
- if (!rl_initialized)
- {
- RL_SETSTATE(RL_STATE_INITIALIZING);
- readline_initialize_everything ();
- RL_UNSETSTATE(RL_STATE_INITIALIZING);
- rl_initialized++;
- RL_SETSTATE(RL_STATE_INITIALIZED);
- }
-
- /* Initalize the current line information. */
- _rl_init_line_state ();
-
- /* We aren't done yet. We haven't even gotten started yet! */
- rl_done = 0;
- RL_UNSETSTATE(RL_STATE_DONE);
-
- /* Tell the history routines what is going on. */
- _rl_start_using_history ();
-
- /* Make the display buffer match the state of the line. */
- rl_reset_line_state ();
-
- /* No such function typed yet. */
- rl_last_func = (rl_command_func_t *)NULL;
-
- /* Parsing of key-bindings begins in an enabled state. */
- _rl_parsing_conditionalized_out = 0;
-
-#if defined (VI_MODE)
- if (rl_editing_mode == vi_mode)
- _rl_vi_initialize_line ();
-#endif
-
- /* Each line starts in insert mode (the default). */
- _rl_set_insert_mode (RL_IM_DEFAULT, 1);
-
- return 0;
-}
-
-#if 0
-#if defined (__EMX__)
-static void
-_emx_build_environ ()
-{
- TIB *tibp;
- PIB *pibp;
- char *t, **tp;
- int c;
-
- DosGetInfoBlocks (&tibp, &pibp);
- t = pibp->pib_pchenv;
- for (c = 1; *t; c++)
- t += strlen (t) + 1;
- tp = environ = (char **)xmalloc ((c + 1) * sizeof (char *));
- t = pibp->pib_pchenv;
- while (*t)
- {
- *tp++ = t;
- t += strlen (t) + 1;
- }
- *tp = 0;
-}
-#endif /* __EMX__ */
-#endif
-
-/* Initialize the entire state of the world. */
-static void
-readline_initialize_everything ()
-{
-#if 0
-#if defined (__EMX__)
- if (environ == 0)
- _emx_build_environ ();
-#endif
-#endif
-
-#if 0
- /* Find out if we are running in Emacs -- UNUSED. */
- running_in_emacs = sh_get_env_value ("EMACS") != (char *)0;
-#endif
-
- /* Set up input and output if they are not already set up. */
- if (!rl_instream)
- rl_instream = stdin;
-
- if (!rl_outstream)
- rl_outstream = stdout;
-
- /* Bind _rl_in_stream and _rl_out_stream immediately. These values
- may change, but they may also be used before readline_internal ()
- is called. */
- _rl_in_stream = rl_instream;
- _rl_out_stream = rl_outstream;
-
- /* Allocate data structures. */
- if (rl_line_buffer == 0)
- rl_line_buffer = (char *)xmalloc (rl_line_buffer_len = DEFAULT_BUFFER_SIZE);
-
- /* Initialize the terminal interface. */
- if (rl_terminal_name == 0)
- rl_terminal_name = sh_get_env_value ("TERM");
- _rl_init_terminal_io (rl_terminal_name);
-
- /* Bind tty characters to readline functions. */
- readline_default_bindings ();
-
- /* Initialize the function names. */
- rl_initialize_funmap ();
-
- /* Decide whether we should automatically go into eight-bit mode. */
- _rl_init_eightbit ();
-
- /* Read in the init file. */
- rl_read_init_file ((char *)NULL);
-
- /* XXX */
- if (_rl_horizontal_scroll_mode && _rl_term_autowrap)
- {
- _rl_screenwidth--;
- _rl_screenchars -= _rl_screenheight;
- }
-
- /* Override the effect of any `set keymap' assignments in the
- inputrc file. */
- rl_set_keymap_from_edit_mode ();
-
- /* Try to bind a common arrow key prefix, if not already bound. */
- bind_arrow_keys ();
-
- /* Enable the meta key, if this terminal has one. */
- if (_rl_enable_meta)
- _rl_enable_meta_key ();
-
- /* If the completion parser's default word break characters haven't
- been set yet, then do so now. */
- if (rl_completer_word_break_characters == (char *)NULL)
- rl_completer_word_break_characters = rl_basic_word_break_characters;
-}
-
-/* If this system allows us to look at the values of the regular
- input editing characters, then bind them to their readline
- equivalents, iff the characters are not bound to keymaps. */
-static void
-readline_default_bindings ()
-{
- rl_tty_set_default_bindings (_rl_keymap);
-}
-
-/* Bind some common arrow key sequences in MAP. */
-static void
-bind_arrow_keys_internal (map)
- Keymap map;
-{
- Keymap xkeymap;
-
- xkeymap = _rl_keymap;
- _rl_keymap = map;
-
-#if defined (__MSDOS__)
- _rl_bind_if_unbound ("\033[0A", rl_get_previous_history);
- _rl_bind_if_unbound ("\033[0B", rl_backward_char);
- _rl_bind_if_unbound ("\033[0C", rl_forward_char);
- _rl_bind_if_unbound ("\033[0D", rl_get_next_history);
-#endif
-
- _rl_bind_if_unbound ("\033[A", rl_get_previous_history);
- _rl_bind_if_unbound ("\033[B", rl_get_next_history);
- _rl_bind_if_unbound ("\033[C", rl_forward_char);
- _rl_bind_if_unbound ("\033[D", rl_backward_char);
- _rl_bind_if_unbound ("\033[H", rl_beg_of_line);
- _rl_bind_if_unbound ("\033[F", rl_end_of_line);
-
- _rl_bind_if_unbound ("\033OA", rl_get_previous_history);
- _rl_bind_if_unbound ("\033OB", rl_get_next_history);
- _rl_bind_if_unbound ("\033OC", rl_forward_char);
- _rl_bind_if_unbound ("\033OD", rl_backward_char);
- _rl_bind_if_unbound ("\033OH", rl_beg_of_line);
- _rl_bind_if_unbound ("\033OF", rl_end_of_line);
-
- _rl_keymap = xkeymap;
-}
-
-/* Try and bind the common arrow key prefixes after giving termcap and
- the inputrc file a chance to bind them and create `real' keymaps
- for the arrow key prefix. */
-static void
-bind_arrow_keys ()
-{
- bind_arrow_keys_internal (emacs_standard_keymap);
-
-#if defined (VI_MODE)
- bind_arrow_keys_internal (vi_movement_keymap);
- bind_arrow_keys_internal (vi_insertion_keymap);
-#endif
-}
-
-/* **************************************************************** */
-/* */
-/* Saving and Restoring Readline's state */
-/* */
-/* **************************************************************** */
-
-int
-rl_save_state (sp)
- struct readline_state *sp;
-{
- if (sp == 0)
- return -1;
-
- sp->point = rl_point;
- sp->end = rl_end;
- sp->mark = rl_mark;
- sp->buffer = rl_line_buffer;
- sp->buflen = rl_line_buffer_len;
- sp->ul = rl_undo_list;
- sp->prompt = rl_prompt;
-
- sp->rlstate = rl_readline_state;
- sp->done = rl_done;
- sp->kmap = _rl_keymap;
-
- sp->lastfunc = rl_last_func;
- sp->insmode = rl_insert_mode;
- sp->edmode = rl_editing_mode;
- sp->kseqlen = rl_key_sequence_length;
- sp->inf = rl_instream;
- sp->outf = rl_outstream;
- sp->pendingin = rl_pending_input;
- sp->macro = rl_executing_macro;
-
- sp->catchsigs = rl_catch_signals;
- sp->catchsigwinch = rl_catch_sigwinch;
-
- return (0);
-}
-
-int
-rl_restore_state (sp)
- struct readline_state *sp;
-{
- if (sp == 0)
- return -1;
-
- rl_point = sp->point;
- rl_end = sp->end;
- rl_mark = sp->mark;
- the_line = rl_line_buffer = sp->buffer;
- rl_line_buffer_len = sp->buflen;
- rl_undo_list = sp->ul;
- rl_prompt = sp->prompt;
-
- rl_readline_state = sp->rlstate;
- rl_done = sp->done;
- _rl_keymap = sp->kmap;
-
- rl_last_func = sp->lastfunc;
- rl_insert_mode = sp->insmode;
- rl_editing_mode = sp->edmode;
- rl_key_sequence_length = sp->kseqlen;
- rl_instream = sp->inf;
- rl_outstream = sp->outf;
- rl_pending_input = sp->pendingin;
- rl_executing_macro = sp->macro;
-
- rl_catch_signals = sp->catchsigs;
- rl_catch_sigwinch = sp->catchsigwinch;
-
- return (0);
-}
diff --git a/readline-4.3/readline.h b/readline-4.3/readline.h
deleted file mode 100644
index f11b3d0..0000000
--- a/readline-4.3/readline.h
+++ /dev/null
@@ -1,799 +0,0 @@
-/* Readline.h -- the names of functions callable from within readline. */
-
-/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if !defined (_READLINE_H_)
-#define _READLINE_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#if defined (READLINE_LIBRARY)
-# include "rlstdc.h"
-# include "rltypedefs.h"
-# include "keymaps.h"
-# include "tilde.h"
-#else
-# include <readline/rlstdc.h>
-# include <readline/rltypedefs.h>
-# include <readline/keymaps.h>
-# include <readline/tilde.h>
-#endif
-
-/* Hex-encoded Readline version number. */
-#define RL_READLINE_VERSION 0x0403 /* Readline 4.3 */
-#define RL_VERSION_MAJOR 4
-#define RL_VERSION_MINOR 3
-
-/* Readline data structures. */
-
-/* Maintaining the state of undo. We remember individual deletes and inserts
- on a chain of things to do. */
-
-/* The actions that undo knows how to undo. Notice that UNDO_DELETE means
- to insert some text, and UNDO_INSERT means to delete some text. I.e.,
- the code tells undo what to undo, not how to undo it. */
-enum undo_code { UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END };
-
-/* What an element of THE_UNDO_LIST looks like. */
-typedef struct undo_list {
- struct undo_list *next;
- int start, end; /* Where the change took place. */
- char *text; /* The text to insert, if undoing a delete. */
- enum undo_code what; /* Delete, Insert, Begin, End. */
-} UNDO_LIST;
-
-/* The current undo list for RL_LINE_BUFFER. */
-extern UNDO_LIST *rl_undo_list;
-
-/* The data structure for mapping textual names to code addresses. */
-typedef struct _funmap {
- const char *name;
- rl_command_func_t *function;
-} FUNMAP;
-
-extern FUNMAP **funmap;
-
-/* **************************************************************** */
-/* */
-/* Functions available to bind to key sequences */
-/* */
-/* **************************************************************** */
-
-/* Bindable commands for numeric arguments. */
-extern int rl_digit_argument PARAMS((int, int));
-extern int rl_universal_argument PARAMS((int, int));
-
-/* Bindable commands for moving the cursor. */
-extern int rl_forward_byte PARAMS((int, int));
-extern int rl_forward_char PARAMS((int, int));
-extern int rl_forward PARAMS((int, int));
-extern int rl_backward_byte PARAMS((int, int));
-extern int rl_backward_char PARAMS((int, int));
-extern int rl_backward PARAMS((int, int));
-extern int rl_beg_of_line PARAMS((int, int));
-extern int rl_end_of_line PARAMS((int, int));
-extern int rl_forward_word PARAMS((int, int));
-extern int rl_backward_word PARAMS((int, int));
-extern int rl_refresh_line PARAMS((int, int));
-extern int rl_clear_screen PARAMS((int, int));
-extern int rl_arrow_keys PARAMS((int, int));
-
-/* Bindable commands for inserting and deleting text. */
-extern int rl_insert PARAMS((int, int));
-extern int rl_quoted_insert PARAMS((int, int));
-extern int rl_tab_insert PARAMS((int, int));
-extern int rl_newline PARAMS((int, int));
-extern int rl_do_lowercase_version PARAMS((int, int));
-extern int rl_rubout PARAMS((int, int));
-extern int rl_delete PARAMS((int, int));
-extern int rl_rubout_or_delete PARAMS((int, int));
-extern int rl_delete_horizontal_space PARAMS((int, int));
-extern int rl_delete_or_show_completions PARAMS((int, int));
-extern int rl_insert_comment PARAMS((int, int));
-
-/* Bindable commands for changing case. */
-extern int rl_upcase_word PARAMS((int, int));
-extern int rl_downcase_word PARAMS((int, int));
-extern int rl_capitalize_word PARAMS((int, int));
-
-/* Bindable commands for transposing characters and words. */
-extern int rl_transpose_words PARAMS((int, int));
-extern int rl_transpose_chars PARAMS((int, int));
-
-/* Bindable commands for searching within a line. */
-extern int rl_char_search PARAMS((int, int));
-extern int rl_backward_char_search PARAMS((int, int));
-
-/* Bindable commands for readline's interface to the command history. */
-extern int rl_beginning_of_history PARAMS((int, int));
-extern int rl_end_of_history PARAMS((int, int));
-extern int rl_get_next_history PARAMS((int, int));
-extern int rl_get_previous_history PARAMS((int, int));
-
-/* Bindable commands for managing the mark and region. */
-extern int rl_set_mark PARAMS((int, int));
-extern int rl_exchange_point_and_mark PARAMS((int, int));
-
-/* Bindable commands to set the editing mode (emacs or vi). */
-extern int rl_vi_editing_mode PARAMS((int, int));
-extern int rl_emacs_editing_mode PARAMS((int, int));
-
-/* Bindable commands to change the insert mode (insert or overwrite) */
-extern int rl_overwrite_mode PARAMS((int, int));
-
-/* Bindable commands for managing key bindings. */
-extern int rl_re_read_init_file PARAMS((int, int));
-extern int rl_dump_functions PARAMS((int, int));
-extern int rl_dump_macros PARAMS((int, int));
-extern int rl_dump_variables PARAMS((int, int));
-
-/* Bindable commands for word completion. */
-extern int rl_complete PARAMS((int, int));
-extern int rl_possible_completions PARAMS((int, int));
-extern int rl_insert_completions PARAMS((int, int));
-extern int rl_menu_complete PARAMS((int, int));
-
-/* Bindable commands for killing and yanking text, and managing the kill ring. */
-extern int rl_kill_word PARAMS((int, int));
-extern int rl_backward_kill_word PARAMS((int, int));
-extern int rl_kill_line PARAMS((int, int));
-extern int rl_backward_kill_line PARAMS((int, int));
-extern int rl_kill_full_line PARAMS((int, int));
-extern int rl_unix_word_rubout PARAMS((int, int));
-extern int rl_unix_line_discard PARAMS((int, int));
-extern int rl_copy_region_to_kill PARAMS((int, int));
-extern int rl_kill_region PARAMS((int, int));
-extern int rl_copy_forward_word PARAMS((int, int));
-extern int rl_copy_backward_word PARAMS((int, int));
-extern int rl_yank PARAMS((int, int));
-extern int rl_yank_pop PARAMS((int, int));
-extern int rl_yank_nth_arg PARAMS((int, int));
-extern int rl_yank_last_arg PARAMS((int, int));
-/* Not available unless __CYGWIN__ is defined. */
-#ifdef __CYGWIN__
-extern int rl_paste_from_clipboard PARAMS((int, int));
-#endif
-
-/* Bindable commands for incremental searching. */
-extern int rl_reverse_search_history PARAMS((int, int));
-extern int rl_forward_search_history PARAMS((int, int));
-
-/* Bindable keyboard macro commands. */
-extern int rl_start_kbd_macro PARAMS((int, int));
-extern int rl_end_kbd_macro PARAMS((int, int));
-extern int rl_call_last_kbd_macro PARAMS((int, int));
-
-/* Bindable undo commands. */
-extern int rl_revert_line PARAMS((int, int));
-extern int rl_undo_command PARAMS((int, int));
-
-/* Bindable tilde expansion commands. */
-extern int rl_tilde_expand PARAMS((int, int));
-
-/* Bindable terminal control commands. */
-extern int rl_restart_output PARAMS((int, int));
-extern int rl_stop_output PARAMS((int, int));
-
-/* Miscellaneous bindable commands. */
-extern int rl_abort PARAMS((int, int));
-extern int rl_tty_status PARAMS((int, int));
-
-/* Bindable commands for incremental and non-incremental history searching. */
-extern int rl_history_search_forward PARAMS((int, int));
-extern int rl_history_search_backward PARAMS((int, int));
-extern int rl_noninc_forward_search PARAMS((int, int));
-extern int rl_noninc_reverse_search PARAMS((int, int));
-extern int rl_noninc_forward_search_again PARAMS((int, int));
-extern int rl_noninc_reverse_search_again PARAMS((int, int));
-
-/* Bindable command used when inserting a matching close character. */
-extern int rl_insert_close PARAMS((int, int));
-
-/* Not available unless READLINE_CALLBACKS is defined. */
-extern void rl_callback_handler_install PARAMS((const char *, rl_vcpfunc_t *));
-extern void rl_callback_read_char PARAMS((void));
-extern void rl_callback_handler_remove PARAMS((void));
-
-/* Things for vi mode. Not available unless readline is compiled -DVI_MODE. */
-/* VI-mode bindable commands. */
-extern int rl_vi_redo PARAMS((int, int));
-extern int rl_vi_undo PARAMS((int, int));
-extern int rl_vi_yank_arg PARAMS((int, int));
-extern int rl_vi_fetch_history PARAMS((int, int));
-extern int rl_vi_search_again PARAMS((int, int));
-extern int rl_vi_search PARAMS((int, int));
-extern int rl_vi_complete PARAMS((int, int));
-extern int rl_vi_tilde_expand PARAMS((int, int));
-extern int rl_vi_prev_word PARAMS((int, int));
-extern int rl_vi_next_word PARAMS((int, int));
-extern int rl_vi_end_word PARAMS((int, int));
-extern int rl_vi_insert_beg PARAMS((int, int));
-extern int rl_vi_append_mode PARAMS((int, int));
-extern int rl_vi_append_eol PARAMS((int, int));
-extern int rl_vi_eof_maybe PARAMS((int, int));
-extern int rl_vi_insertion_mode PARAMS((int, int));
-extern int rl_vi_movement_mode PARAMS((int, int));
-extern int rl_vi_arg_digit PARAMS((int, int));
-extern int rl_vi_change_case PARAMS((int, int));
-extern int rl_vi_put PARAMS((int, int));
-extern int rl_vi_column PARAMS((int, int));
-extern int rl_vi_delete_to PARAMS((int, int));
-extern int rl_vi_change_to PARAMS((int, int));
-extern int rl_vi_yank_to PARAMS((int, int));
-extern int rl_vi_delete PARAMS((int, int));
-extern int rl_vi_back_to_indent PARAMS((int, int));
-extern int rl_vi_first_print PARAMS((int, int));
-extern int rl_vi_char_search PARAMS((int, int));
-extern int rl_vi_match PARAMS((int, int));
-extern int rl_vi_change_char PARAMS((int, int));
-extern int rl_vi_subst PARAMS((int, int));
-extern int rl_vi_overstrike PARAMS((int, int));
-extern int rl_vi_overstrike_delete PARAMS((int, int));
-extern int rl_vi_replace PARAMS((int, int));
-extern int rl_vi_set_mark PARAMS((int, int));
-extern int rl_vi_goto_mark PARAMS((int, int));
-
-/* VI-mode utility functions. */
-extern int rl_vi_check PARAMS((void));
-extern int rl_vi_domove PARAMS((int, int *));
-extern int rl_vi_bracktype PARAMS((int));
-
-/* VI-mode pseudo-bindable commands, used as utility functions. */
-extern int rl_vi_fWord PARAMS((int, int));
-extern int rl_vi_bWord PARAMS((int, int));
-extern int rl_vi_eWord PARAMS((int, int));
-extern int rl_vi_fword PARAMS((int, int));
-extern int rl_vi_bword PARAMS((int, int));
-extern int rl_vi_eword PARAMS((int, int));
-
-/* **************************************************************** */
-/* */
-/* Well Published Functions */
-/* */
-/* **************************************************************** */
-
-/* Readline functions. */
-/* Read a line of input. Prompt with PROMPT. A NULL PROMPT means none. */
-extern char *readline PARAMS((const char *));
-
-extern int rl_set_prompt PARAMS((const char *));
-extern int rl_expand_prompt PARAMS((char *));
-
-extern int rl_initialize PARAMS((void));
-
-/* Undocumented; unused by readline */
-extern int rl_discard_argument PARAMS((void));
-
-/* Utility functions to bind keys to readline commands. */
-extern int rl_add_defun PARAMS((const char *, rl_command_func_t *, int));
-extern int rl_bind_key PARAMS((int, rl_command_func_t *));
-extern int rl_bind_key_in_map PARAMS((int, rl_command_func_t *, Keymap));
-extern int rl_unbind_key PARAMS((int));
-extern int rl_unbind_key_in_map PARAMS((int, Keymap));
-extern int rl_unbind_function_in_map PARAMS((rl_command_func_t *, Keymap));
-extern int rl_unbind_command_in_map PARAMS((const char *, Keymap));
-extern int rl_set_key PARAMS((const char *, rl_command_func_t *, Keymap));
-extern int rl_generic_bind PARAMS((int, const char *, char *, Keymap));
-extern int rl_variable_bind PARAMS((const char *, const char *));
-
-/* Backwards compatibility, use rl_generic_bind instead. */
-extern int rl_macro_bind PARAMS((const char *, const char *, Keymap));
-
-/* Undocumented in the texinfo manual; not really useful to programs. */
-extern int rl_translate_keyseq PARAMS((const char *, char *, int *));
-extern char *rl_untranslate_keyseq PARAMS((int));
-
-extern rl_command_func_t *rl_named_function PARAMS((const char *));
-extern rl_command_func_t *rl_function_of_keyseq PARAMS((const char *, Keymap, int *));
-
-extern void rl_list_funmap_names PARAMS((void));
-extern char **rl_invoking_keyseqs_in_map PARAMS((rl_command_func_t *, Keymap));
-extern char **rl_invoking_keyseqs PARAMS((rl_command_func_t *));
-
-extern void rl_function_dumper PARAMS((int));
-extern void rl_macro_dumper PARAMS((int));
-extern void rl_variable_dumper PARAMS((int));
-
-extern int rl_read_init_file PARAMS((const char *));
-extern int rl_parse_and_bind PARAMS((char *));
-
-/* Functions for manipulating keymaps. */
-extern Keymap rl_make_bare_keymap PARAMS((void));
-extern Keymap rl_copy_keymap PARAMS((Keymap));
-extern Keymap rl_make_keymap PARAMS((void));
-extern void rl_discard_keymap PARAMS((Keymap));
-
-extern Keymap rl_get_keymap_by_name PARAMS((const char *));
-extern char *rl_get_keymap_name PARAMS((Keymap));
-extern void rl_set_keymap PARAMS((Keymap));
-extern Keymap rl_get_keymap PARAMS((void));
-/* Undocumented; used internally only. */
-extern void rl_set_keymap_from_edit_mode PARAMS((void));
-extern char *rl_get_keymap_name_from_edit_mode PARAMS((void));
-
-/* Functions for manipulating the funmap, which maps command names to functions. */
-extern int rl_add_funmap_entry PARAMS((const char *, rl_command_func_t *));
-extern const char **rl_funmap_names PARAMS((void));
-/* Undocumented, only used internally -- there is only one funmap, and this
- function may be called only once. */
-extern void rl_initialize_funmap PARAMS((void));
-
-/* Utility functions for managing keyboard macros. */
-extern void rl_push_macro_input PARAMS((char *));
-
-/* Functions for undoing, from undo.c */
-extern void rl_add_undo PARAMS((enum undo_code, int, int, char *));
-extern void rl_free_undo_list PARAMS((void));
-extern int rl_do_undo PARAMS((void));
-extern int rl_begin_undo_group PARAMS((void));
-extern int rl_end_undo_group PARAMS((void));
-extern int rl_modifying PARAMS((int, int));
-
-/* Functions for redisplay. */
-extern void rl_redisplay PARAMS((void));
-extern int rl_on_new_line PARAMS((void));
-extern int rl_on_new_line_with_prompt PARAMS((void));
-extern int rl_forced_update_display PARAMS((void));
-extern int rl_clear_message PARAMS((void));
-extern int rl_reset_line_state PARAMS((void));
-extern int rl_crlf PARAMS((void));
-
-#if (defined (__STDC__) || defined (__cplusplus)) && defined (USE_VARARGS) && defined (PREFER_STDARG)
-extern int rl_message (const char *, ...) __attribute__((__format__ (printf, 1, 2)));
-#else
-extern int rl_message ();
-#endif
-
-extern int rl_show_char PARAMS((int));
-
-/* Undocumented in texinfo manual. */
-extern int rl_character_len PARAMS((int, int));
-
-/* Save and restore internal prompt redisplay information. */
-extern void rl_save_prompt PARAMS((void));
-extern void rl_restore_prompt PARAMS((void));
-
-/* Modifying text. */
-extern void rl_replace_line PARAMS((const char *, int));
-extern int rl_insert_text PARAMS((const char *));
-extern int rl_delete_text PARAMS((int, int));
-extern int rl_kill_text PARAMS((int, int));
-extern char *rl_copy_text PARAMS((int, int));
-
-/* Terminal and tty mode management. */
-extern void rl_prep_terminal PARAMS((int));
-extern void rl_deprep_terminal PARAMS((void));
-extern void rl_tty_set_default_bindings PARAMS((Keymap));
-
-extern int rl_reset_terminal PARAMS((const char *));
-extern void rl_resize_terminal PARAMS((void));
-extern void rl_set_screen_size PARAMS((int, int));
-extern void rl_get_screen_size PARAMS((int *, int *));
-
-extern char *rl_get_termcap PARAMS((const char *));
-
-/* Functions for character input. */
-extern int rl_stuff_char PARAMS((int));
-extern int rl_execute_next PARAMS((int));
-extern int rl_clear_pending_input PARAMS((void));
-extern int rl_read_key PARAMS((void));
-extern int rl_getc PARAMS((FILE *));
-extern int rl_set_keyboard_input_timeout PARAMS((int));
-
-/* `Public' utility functions . */
-extern void rl_extend_line_buffer PARAMS((int));
-extern int rl_ding PARAMS((void));
-extern int rl_alphabetic PARAMS((int));
-
-/* Readline signal handling, from signals.c */
-extern int rl_set_signals PARAMS((void));
-extern int rl_clear_signals PARAMS((void));
-extern void rl_cleanup_after_signal PARAMS((void));
-extern void rl_reset_after_signal PARAMS((void));
-extern void rl_free_line_state PARAMS((void));
-
-extern int rl_set_paren_blink_timeout PARAMS((int));
-
-/* Undocumented. */
-extern int rl_maybe_save_line PARAMS((void));
-extern int rl_maybe_unsave_line PARAMS((void));
-extern int rl_maybe_replace_line PARAMS((void));
-
-/* Completion functions. */
-extern int rl_complete_internal PARAMS((int));
-extern void rl_display_match_list PARAMS((char **, int, int));
-
-extern char **rl_completion_matches PARAMS((const char *, rl_compentry_func_t *));
-extern char *rl_username_completion_function PARAMS((const char *, int));
-extern char *rl_filename_completion_function PARAMS((const char *, int));
-
-extern int rl_completion_mode PARAMS((rl_command_func_t *));
-
-#if 0
-/* Backwards compatibility (compat.c). These will go away sometime. */
-extern void free_undo_list PARAMS((void));
-extern int maybe_save_line PARAMS((void));
-extern int maybe_unsave_line PARAMS((void));
-extern int maybe_replace_line PARAMS((void));
-
-extern int ding PARAMS((void));
-extern int alphabetic PARAMS((int));
-extern int crlf PARAMS((void));
-
-extern char **completion_matches PARAMS((char *, rl_compentry_func_t *));
-extern char *username_completion_function PARAMS((const char *, int));
-extern char *filename_completion_function PARAMS((const char *, int));
-#endif
-
-/* **************************************************************** */
-/* */
-/* Well Published Variables */
-/* */
-/* **************************************************************** */
-
-/* The version of this incarnation of the readline library. */
-extern const char *rl_library_version; /* e.g., "4.2" */
-extern int rl_readline_version; /* e.g., 0x0402 */
-
-/* True if this is real GNU readline. */
-extern int rl_gnu_readline_p;
-
-/* Flags word encapsulating the current readline state. */
-extern int rl_readline_state;
-
-/* Says which editing mode readline is currently using. 1 means emacs mode;
- 0 means vi mode. */
-extern int rl_editing_mode;
-
-/* Insert or overwrite mode for emacs mode. 1 means insert mode; 0 means
- overwrite mode. Reset to insert mode on each input line. */
-extern int rl_insert_mode;
-
-/* The name of the calling program. You should initialize this to
- whatever was in argv[0]. It is used when parsing conditionals. */
-extern const char *rl_readline_name;
-
-/* The prompt readline uses. This is set from the argument to
- readline (), and should not be assigned to directly. */
-extern char *rl_prompt;
-
-/* The line buffer that is in use. */
-extern char *rl_line_buffer;
-
-/* The location of point, and end. */
-extern int rl_point;
-extern int rl_end;
-
-/* The mark, or saved cursor position. */
-extern int rl_mark;
-
-/* Flag to indicate that readline has finished with the current input
- line and should return it. */
-extern int rl_done;
-
-/* If set to a character value, that will be the next keystroke read. */
-extern int rl_pending_input;
-
-/* Non-zero if we called this function from _rl_dispatch(). It's present
- so functions can find out whether they were called from a key binding
- or directly from an application. */
-extern int rl_dispatching;
-
-/* Non-zero if the user typed a numeric argument before executing the
- current function. */
-extern int rl_explicit_arg;
-
-/* The current value of the numeric argument specified by the user. */
-extern int rl_numeric_arg;
-
-/* The address of the last command function Readline executed. */
-extern rl_command_func_t *rl_last_func;
-
-/* The name of the terminal to use. */
-extern const char *rl_terminal_name;
-
-/* The input and output streams. */
-extern FILE *rl_instream;
-extern FILE *rl_outstream;
-
-/* If non-zero, then this is the address of a function to call just
- before readline_internal () prints the first prompt. */
-extern rl_hook_func_t *rl_startup_hook;
-
-/* If non-zero, this is the address of a function to call just before
- readline_internal_setup () returns and readline_internal starts
- reading input characters. */
-extern rl_hook_func_t *rl_pre_input_hook;
-
-/* The address of a function to call periodically while Readline is
- awaiting character input, or NULL, for no event handling. */
-extern rl_hook_func_t *rl_event_hook;
-
-/* The address of the function to call to fetch a character from the current
- Readline input stream */
-extern rl_getc_func_t *rl_getc_function;
-
-extern rl_voidfunc_t *rl_redisplay_function;
-
-extern rl_vintfunc_t *rl_prep_term_function;
-extern rl_voidfunc_t *rl_deprep_term_function;
-
-/* Dispatch variables. */
-extern Keymap rl_executing_keymap;
-extern Keymap rl_binding_keymap;
-
-/* Display variables. */
-/* If non-zero, readline will erase the entire line, including any prompt,
- if the only thing typed on an otherwise-blank line is something bound to
- rl_newline. */
-extern int rl_erase_empty_line;
-
-/* If non-zero, the application has already printed the prompt (rl_prompt)
- before calling readline, so readline should not output it the first time
- redisplay is done. */
-extern int rl_already_prompted;
-
-/* A non-zero value means to read only this many characters rather than
- up to a character bound to accept-line. */
-extern int rl_num_chars_to_read;
-
-/* The text of a currently-executing keyboard macro. */
-extern char *rl_executing_macro;
-
-/* Variables to control readline signal handling. */
-/* If non-zero, readline will install its own signal handlers for
- SIGINT, SIGTERM, SIGQUIT, SIGALRM, SIGTSTP, SIGTTIN, and SIGTTOU. */
-extern int rl_catch_signals;
-
-/* If non-zero, readline will install a signal handler for SIGWINCH
- that also attempts to call any calling application's SIGWINCH signal
- handler. Note that the terminal is not cleaned up before the
- application's signal handler is called; use rl_cleanup_after_signal()
- to do that. */
-extern int rl_catch_sigwinch;
-
-/* Completion variables. */
-/* Pointer to the generator function for completion_matches ().
- NULL means to use rl_filename_completion_function (), the default
- filename completer. */
-extern rl_compentry_func_t *rl_completion_entry_function;
-
-/* If rl_ignore_some_completions_function is non-NULL it is the address
- of a function to call after all of the possible matches have been
- generated, but before the actual completion is done to the input line.
- The function is called with one argument; a NULL terminated array
- of (char *). If your function removes any of the elements, they
- must be free()'ed. */
-extern rl_compignore_func_t *rl_ignore_some_completions_function;
-
-/* Pointer to alternative function to create matches.
- Function is called with TEXT, START, and END.
- START and END are indices in RL_LINE_BUFFER saying what the boundaries
- of TEXT are.
- If this function exists and returns NULL then call the value of
- rl_completion_entry_function to try to match, otherwise use the
- array of strings returned. */
-extern rl_completion_func_t *rl_attempted_completion_function;
-
-/* The basic list of characters that signal a break between words for the
- completer routine. The initial contents of this variable is what
- breaks words in the shell, i.e. "n\"\\'`@$>". */
-extern const char *rl_basic_word_break_characters;
-
-/* The list of characters that signal a break between words for
- rl_complete_internal. The default list is the contents of
- rl_basic_word_break_characters. */
-extern const char *rl_completer_word_break_characters;
-
-/* List of characters which can be used to quote a substring of the line.
- Completion occurs on the entire substring, and within the substring
- rl_completer_word_break_characters are treated as any other character,
- unless they also appear within this list. */
-extern const char *rl_completer_quote_characters;
-
-/* List of quote characters which cause a word break. */
-extern const char *rl_basic_quote_characters;
-
-/* List of characters that need to be quoted in filenames by the completer. */
-extern const char *rl_filename_quote_characters;
-
-/* List of characters that are word break characters, but should be left
- in TEXT when it is passed to the completion function. The shell uses
- this to help determine what kind of completing to do. */
-extern const char *rl_special_prefixes;
-
-/* If non-zero, then this is the address of a function to call when
- completing on a directory name. The function is called with
- the address of a string (the current directory name) as an arg. It
- changes what is displayed when the possible completions are printed
- or inserted. */
-extern rl_icppfunc_t *rl_directory_completion_hook;
-
-/* If non-zero, this is the address of a function to call when completing
- a directory name. This function takes the address of the directory name
- to be modified as an argument. Unlike rl_directory_completion_hook, it
- only modifies the directory name used in opendir(2), not what is displayed
- when the possible completions are printed or inserted. It is called
- before rl_directory_completion_hook. I'm not happy with how this works
- yet, so it's undocumented. */
-extern rl_icppfunc_t *rl_directory_rewrite_hook;
-
-/* Backwards compatibility with previous versions of readline. */
-#define rl_symbolic_link_hook rl_directory_completion_hook
-
-/* If non-zero, then this is the address of a function to call when
- completing a word would normally display the list of possible matches.
- This function is called instead of actually doing the display.
- It takes three arguments: (char **matches, int num_matches, int max_length)
- where MATCHES is the array of strings that matched, NUM_MATCHES is the
- number of strings in that array, and MAX_LENGTH is the length of the
- longest string in that array. */
-extern rl_compdisp_func_t *rl_completion_display_matches_hook;
-
-/* Non-zero means that the results of the matches are to be treated
- as filenames. This is ALWAYS zero on entry, and can only be changed
- within a completion entry finder function. */
-extern int rl_filename_completion_desired;
-
-/* Non-zero means that the results of the matches are to be quoted using
- double quotes (or an application-specific quoting mechanism) if the
- filename contains any characters in rl_word_break_chars. This is
- ALWAYS non-zero on entry, and can only be changed within a completion
- entry finder function. */
-extern int rl_filename_quoting_desired;
-
-/* Set to a function to quote a filename in an application-specific fashion.
- Called with the text to quote, the type of match found (single or multiple)
- and a pointer to the quoting character to be used, which the function can
- reset if desired. */
-extern rl_quote_func_t *rl_filename_quoting_function;
-
-/* Function to call to remove quoting characters from a filename. Called
- before completion is attempted, so the embedded quotes do not interfere
- with matching names in the file system. */
-extern rl_dequote_func_t *rl_filename_dequoting_function;
-
-/* Function to call to decide whether or not a word break character is
- quoted. If a character is quoted, it does not break words for the
- completer. */
-extern rl_linebuf_func_t *rl_char_is_quoted_p;
-
-/* Non-zero means to suppress normal filename completion after the
- user-specified completion function has been called. */
-extern int rl_attempted_completion_over;
-
-/* Set to a character describing the type of completion being attempted by
- rl_complete_internal; available for use by application completion
- functions. */
-extern int rl_completion_type;
-
-/* Character appended to completed words when at the end of the line. The
- default is a space. Nothing is added if this is '\0'. */
-extern int rl_completion_append_character;
-
-/* If set to non-zero by an application completion function,
- rl_completion_append_character will not be appended. */
-extern int rl_completion_suppress_append;
-
-/* Up to this many items will be displayed in response to a
- possible-completions call. After that, we ask the user if she
- is sure she wants to see them all. The default value is 100. */
-extern int rl_completion_query_items;
-
-/* If non-zero, a slash will be appended to completed filenames that are
- symbolic links to directory names, subject to the value of the
- mark-directories variable (which is user-settable). This exists so
- that application completion functions can override the user's preference
- (set via the mark-symlinked-directories variable) if appropriate.
- It's set to the value of _rl_complete_mark_symlink_dirs in
- rl_complete_internal before any application-specific completion
- function is called, so without that function doing anything, the user's
- preferences are honored. */
-extern int rl_completion_mark_symlink_dirs;
-
-/* If non-zero, then disallow duplicates in the matches. */
-extern int rl_ignore_completion_duplicates;
-
-/* If this is non-zero, completion is (temporarily) inhibited, and the
- completion character will be inserted as any other. */
-extern int rl_inhibit_completion;
-
-/* Definitions available for use by readline clients. */
-#define RL_PROMPT_START_IGNORE '\001'
-#define RL_PROMPT_END_IGNORE '\002'
-
-/* Possible values for do_replace argument to rl_filename_quoting_function,
- called by rl_complete_internal. */
-#define NO_MATCH 0
-#define SINGLE_MATCH 1
-#define MULT_MATCH 2
-
-/* Possible state values for rl_readline_state */
-#define RL_STATE_NONE 0x00000 /* no state; before first call */
-
-#define RL_STATE_INITIALIZING 0x00001 /* initializing */
-#define RL_STATE_INITIALIZED 0x00002 /* initialization done */
-#define RL_STATE_TERMPREPPED 0x00004 /* terminal is prepped */
-#define RL_STATE_READCMD 0x00008 /* reading a command key */
-#define RL_STATE_METANEXT 0x00010 /* reading input after ESC */
-#define RL_STATE_DISPATCHING 0x00020 /* dispatching to a command */
-#define RL_STATE_MOREINPUT 0x00040 /* reading more input in a command function */
-#define RL_STATE_ISEARCH 0x00080 /* doing incremental search */
-#define RL_STATE_NSEARCH 0x00100 /* doing non-inc search */
-#define RL_STATE_SEARCH 0x00200 /* doing a history search */
-#define RL_STATE_NUMERICARG 0x00400 /* reading numeric argument */
-#define RL_STATE_MACROINPUT 0x00800 /* getting input from a macro */
-#define RL_STATE_MACRODEF 0x01000 /* defining keyboard macro */
-#define RL_STATE_OVERWRITE 0x02000 /* overwrite mode */
-#define RL_STATE_COMPLETING 0x04000 /* doing completion */
-#define RL_STATE_SIGHANDLER 0x08000 /* in readline sighandler */
-#define RL_STATE_UNDOING 0x10000 /* doing an undo */
-#define RL_STATE_INPUTPENDING 0x20000 /* rl_execute_next called */
-
-#define RL_STATE_DONE 0x80000 /* done; accepted line */
-
-#define RL_SETSTATE(x) (rl_readline_state |= (x))
-#define RL_UNSETSTATE(x) (rl_readline_state &= ~(x))
-#define RL_ISSTATE(x) (rl_readline_state & (x))
-
-struct readline_state {
- /* line state */
- int point;
- int end;
- int mark;
- char *buffer;
- int buflen;
- UNDO_LIST *ul;
- char *prompt;
-
- /* global state */
- int rlstate;
- int done;
- Keymap kmap;
-
- /* input state */
- rl_command_func_t *lastfunc;
- int insmode;
- int edmode;
- int kseqlen;
- FILE *inf;
- FILE *outf;
- int pendingin;
- char *macro;
-
- /* signal state */
- int catchsigs;
- int catchsigwinch;
-
- /* reserved for future expansion, so the struct size doesn't change */
- char reserved[64];
-};
-
-extern int rl_save_state PARAMS((struct readline_state *));
-extern int rl_restore_state PARAMS((struct readline_state *));
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _READLINE_H_ */
diff --git a/readline-4.3/rlconf.h b/readline-4.3/rlconf.h
deleted file mode 100644
index c651fd8..0000000
--- a/readline-4.3/rlconf.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/* rlconf.h -- readline configuration definitions */
-
-/* Copyright (C) 1994 Free Software Foundation, Inc.
-
- This file contains the Readline Library (the Library), a set of
- routines for providing Emacs style line input to programs that ask
- for it.
-
- The Library is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- The Library is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if !defined (_RLCONF_H_)
-#define _RLCONF_H_
-
-/* Define this if you want the vi-mode editing available. */
-#define VI_MODE
-
-/* Define this to get an indication of file type when listing completions. */
-#define VISIBLE_STATS
-
-/* This definition is needed by readline.c, rltty.c, and signals.c. */
-/* If on, then readline handles signals in a way that doesn't screw. */
-#define HANDLE_SIGNALS
-
-/* Ugly but working hack for binding prefix meta. */
-#define PREFIX_META_HACK
-
-/* The final, last-ditch effort file name for an init file. */
-#define DEFAULT_INPUTRC "~/.inputrc"
-
-/* If defined, expand tabs to spaces. */
-#define DISPLAY_TABS
-
-/* If defined, use the terminal escape sequence to move the cursor forward
- over a character when updating the line rather than rewriting it. */
-/* #define HACK_TERMCAP_MOTION */
-
-/* The string inserted by the `insert comment' command. */
-#define RL_COMMENT_BEGIN_DEFAULT "#"
-
-/* Define this if you want code that allows readline to be used in an
- X `callback' style. */
-#define READLINE_CALLBACKS
-
-/* Define this if you want the cursor to indicate insert or overwrite mode. */
-/* #define CURSOR_MODE */
-
-#endif /* _RLCONF_H_ */
diff --git a/readline-4.3/rldefs.h b/readline-4.3/rldefs.h
deleted file mode 100644
index 4a28bd1..0000000
--- a/readline-4.3/rldefs.h
+++ /dev/null
@@ -1,156 +0,0 @@
-/* rldefs.h -- an attempt to isolate some of the system-specific defines
- for readline. This should be included after any files that define
- system-specific constants like _POSIX_VERSION or USG. */
-
-/* Copyright (C) 1987,1989 Free Software Foundation, Inc.
-
- This file contains the Readline Library (the Library), a set of
- routines for providing Emacs style line input to programs that ask
- for it.
-
- The Library is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- The Library is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if !defined (_RLDEFS_H_)
-#define _RLDEFS_H_
-
-#if defined (HAVE_CONFIG_H)
-# include "config.h"
-#endif
-
-#include "rlstdc.h"
-
-#if defined (_POSIX_VERSION) && !defined (TERMIOS_MISSING)
-# define TERMIOS_TTY_DRIVER
-#else
-# if defined (HAVE_TERMIO_H)
-# define TERMIO_TTY_DRIVER
-# else
-# define NEW_TTY_DRIVER
-# endif
-#endif
-
-/* Posix macro to check file in statbuf for directory-ness.
- This requires that <sys/stat.h> be included before this test. */
-#if defined (S_IFDIR) && !defined (S_ISDIR)
-# define S_ISDIR(m) (((m)&S_IFMT) == S_IFDIR)
-#endif
-
-/* Decide which flavor of the header file describing the C library
- string functions to include and include it. */
-
-#if defined (HAVE_STRING_H)
-# include <string.h>
-#else /* !HAVE_STRING_H */
-# include <strings.h>
-#endif /* !HAVE_STRING_H */
-
-#if !defined (strchr) && !defined (__STDC__)
-extern char *strchr (), *strrchr ();
-#endif /* !strchr && !__STDC__ */
-
-#if defined (PREFER_STDARG)
-# include <stdarg.h>
-#else
-# if defined (PREFER_VARARGS)
-# include <varargs.h>
-# endif
-#endif
-
-#if defined (HAVE_STRCASECMP)
-#define _rl_stricmp strcasecmp
-#define _rl_strnicmp strncasecmp
-#else
-extern int _rl_stricmp PARAMS((char *, char *));
-extern int _rl_strnicmp PARAMS((char *, char *, int));
-#endif
-
-#if defined (HAVE_STRPBRK)
-# define _rl_strpbrk(a,b) strpbrk((a),(b))
-#else
-extern char *_rl_strpbrk PARAMS((const char *, const char *));
-#endif
-
-#if !defined (emacs_mode)
-# define no_mode -1
-# define vi_mode 0
-# define emacs_mode 1
-#endif
-
-#if !defined (RL_IM_INSERT)
-# define RL_IM_INSERT 1
-# define RL_IM_OVERWRITE 0
-#
-# define RL_IM_DEFAULT RL_IM_INSERT
-#endif
-
-/* If you cast map[key].function to type (Keymap) on a Cray,
- the compiler takes the value of map[key].function and
- divides it by 4 to convert between pointer types (pointers
- to functions and pointers to structs are different sizes).
- This is not what is wanted. */
-#if defined (CRAY)
-# define FUNCTION_TO_KEYMAP(map, key) (Keymap)((int)map[key].function)
-# define KEYMAP_TO_FUNCTION(data) (rl_command_func_t *)((int)(data))
-#else
-# define FUNCTION_TO_KEYMAP(map, key) (Keymap)(map[key].function)
-# define KEYMAP_TO_FUNCTION(data) (rl_command_func_t *)(data)
-#endif
-
-#ifndef savestring
-#define savestring(x) strcpy ((char *)xmalloc (1 + strlen (x)), (x))
-#endif
-
-/* Possible values for _rl_bell_preference. */
-#define NO_BELL 0
-#define AUDIBLE_BELL 1
-#define VISIBLE_BELL 2
-
-/* Definitions used when searching the line for characters. */
-/* NOTE: it is necessary that opposite directions are inverses */
-#define FTO 1 /* forward to */
-#define BTO -1 /* backward to */
-#define FFIND 2 /* forward find */
-#define BFIND -2 /* backward find */
-
-/* Possible values for the found_quote flags word used by the completion
- functions. It says what kind of (shell-like) quoting we found anywhere
- in the line. */
-#define RL_QF_SINGLE_QUOTE 0x01
-#define RL_QF_DOUBLE_QUOTE 0x02
-#define RL_QF_BACKSLASH 0x04
-#define RL_QF_OTHER_QUOTE 0x08
-
-/* Default readline line buffer length. */
-#define DEFAULT_BUFFER_SIZE 256
-
-#if !defined (STREQ)
-#define STREQ(a, b) (((a)[0] == (b)[0]) && (strcmp ((a), (b)) == 0))
-#define STREQN(a, b, n) (((n) == 0) ? (1) \
- : ((a)[0] == (b)[0]) && (strncmp ((a), (b), (n)) == 0))
-#endif
-
-#if !defined (FREE)
-# define FREE(x) if (x) free (x)
-#endif
-
-#if !defined (SWAP)
-# define SWAP(s, e) do { int t; t = s; s = e; e = t; } while (0)
-#endif
-
-/* CONFIGURATION SECTION */
-#include "rlconf.h"
-
-#endif /* !_RLDEFS_H_ */
diff --git a/readline-4.3/rlmbutil.h b/readline-4.3/rlmbutil.h
deleted file mode 100644
index 27ca32b..0000000
--- a/readline-4.3/rlmbutil.h
+++ /dev/null
@@ -1,108 +0,0 @@
-/* rlmbutil.h -- utility functions for multibyte characters. */
-
-/* Copyright (C) 2001 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if !defined (_RL_MBUTIL_H_)
-#define _RL_MBUTIL_H_
-
-#include "rlstdc.h"
-
-/************************************************/
-/* check multibyte capability for I18N code */
-/************************************************/
-
-/* For platforms which support the ISO C amendement 1 functionality we
- support user defined character classes. */
- /* Solaris 2.5 has a bug: <wchar.h> must be included before <wctype.h>. */
-#if defined (HAVE_WCTYPE_H) && defined (HAVE_WCHAR_H)
-# include <wchar.h>
-# include <wctype.h>
-# if defined (HAVE_MBSRTOWCS) /* system is supposed to support XPG5 */
-# define HANDLE_MULTIBYTE 1
-# endif
-#endif
-
-/* Some systems, like BeOS, have multibyte encodings but lack mbstate_t. */
-#if HANDLE_MULTIBYTE && !defined (HAVE_MBSTATE_T)
-# define wcsrtombs(dest, src, len, ps) (wcsrtombs) (dest, src, len, 0)
-# define mbsrtowcs(dest, src, len, ps) (mbsrtowcs) (dest, src, len, 0)
-# define wcrtomb(s, wc, ps) (wcrtomb) (s, wc, 0)
-# define mbrtowc(pwc, s, n, ps) (mbrtowc) (pwc, s, n, 0)
-# define mbrlen(s, n, ps) (mbrlen) (s, n, 0)
-# define mbstate_t int
-#endif
-
-/* Make sure MB_LEN_MAX is at least 16 on systems that claim to be able to
- handle multibyte chars (some systems define MB_LEN_MAX as 1) */
-#ifdef HANDLE_MULTIBYTE
-# include <limits.h>
-# if defined(MB_LEN_MAX) && (MB_LEN_MAX < 16)
-# undef MB_LEN_MAX
-# endif
-# if !defined (MB_LEN_MAX)
-# define MB_LEN_MAX 16
-# endif
-#endif
-
-/************************************************/
-/* end of multibyte capability checks for I18N */
-/************************************************/
-
-/*
- * Flags for _rl_find_prev_mbchar and _rl_find_next_mbchar:
- *
- * MB_FIND_ANY find any multibyte character
- * MB_FIND_NONZERO find a non-zero-width multibyte character
- */
-
-#define MB_FIND_ANY 0x00
-#define MB_FIND_NONZERO 0x01
-
-extern int _rl_find_prev_mbchar PARAMS((char *, int, int));
-extern int _rl_find_next_mbchar PARAMS((char *, int, int, int));
-
-#ifdef HANDLE_MULTIBYTE
-
-extern int _rl_compare_chars PARAMS((char *, int, mbstate_t *, char *, int, mbstate_t *));
-extern int _rl_get_char_len PARAMS((char *, mbstate_t *));
-extern int _rl_adjust_point PARAMS((char *, int, mbstate_t *));
-
-extern int _rl_read_mbchar PARAMS((char *, int));
-extern int _rl_read_mbstring PARAMS((int, char *, int));
-
-extern int _rl_is_mbchar_matched PARAMS((char *, int, int, char *, int));
-
-#else /* !HANDLE_MULTIBYTE */
-
-#undef MB_LEN_MAX
-#undef MB_CUR_MAX
-
-#define MB_LEN_MAX 1
-#define MB_CUR_MAX 1
-
-#define _rl_find_prev_mbchar(b, i, f) (((i) == 0) ? (i) : ((i) - 1))
-#define _rl_find_next_mbchar(b, i1, i2, f) ((i1) + (i2))
-
-#endif /* !HANDLE_MULTIBYTE */
-
-extern int rl_byte_oriented;
-
-#endif /* _RL_MBUTIL_H_ */
diff --git a/readline-4.3/rlprivate.h b/readline-4.3/rlprivate.h
deleted file mode 100644
index ccb9144..0000000
--- a/readline-4.3/rlprivate.h
+++ /dev/null
@@ -1,284 +0,0 @@
-/* rlprivate.h -- functions and variables global to the readline library,
- but not intended for use by applications. */
-
-/* Copyright (C) 1999 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if !defined (_RL_PRIVATE_H_)
-#define _RL_PRIVATE_H_
-
-#include "rlconf.h" /* for VISIBLE_STATS */
-#include "rlstdc.h"
-#include "posixjmp.h" /* defines procenv_t */
-
-/*************************************************************************
- * *
- * Global functions undocumented in texinfo manual and not in readline.h *
- * *
- *************************************************************************/
-
-/*************************************************************************
- * *
- * Global variables undocumented in texinfo manual and not in readline.h *
- * *
- *************************************************************************/
-
-/* complete.c */
-extern int rl_complete_with_tilde_expansion;
-#if defined (VISIBLE_STATS)
-extern int rl_visible_stats;
-#endif /* VISIBLE_STATS */
-
-/* readline.c */
-extern int rl_line_buffer_len;
-extern int rl_arg_sign;
-extern int rl_visible_prompt_length;
-extern int readline_echoing_p;
-extern int rl_key_sequence_length;
-extern int rl_byte_oriented;
-
-/* display.c */
-extern int rl_display_fixed;
-
-/* parens.c */
-extern int rl_blink_matching_paren;
-
-/*************************************************************************
- * *
- * Global functions and variables unsed and undocumented *
- * *
- *************************************************************************/
-
-/* kill.c */
-extern int rl_set_retained_kills PARAMS((int));
-
-/* terminal.c */
-extern void _rl_set_screen_size PARAMS((int, int));
-
-/* undo.c */
-extern int _rl_fix_last_undo_of_type PARAMS((int, int, int));
-
-/* util.c */
-extern char *_rl_savestring PARAMS((const char *));
-
-/*************************************************************************
- * *
- * Functions and variables private to the readline library *
- * *
- *************************************************************************/
-
-/* NOTE: Functions and variables prefixed with `_rl_' are
- pseudo-global: they are global so they can be shared
- between files in the readline library, but are not intended
- to be visible to readline callers. */
-
-/*************************************************************************
- * Undocumented private functions *
- *************************************************************************/
-
-#if defined(READLINE_CALLBACKS)
-
-/* readline.c */
-extern void readline_internal_setup PARAMS((void));
-extern char *readline_internal_teardown PARAMS((int));
-extern int readline_internal_char PARAMS((void));
-
-#endif /* READLINE_CALLBACKS */
-
-/* bind.c */
-extern void _rl_bind_if_unbound PARAMS((const char *, rl_command_func_t *));
-
-/* complete.c */
-extern char _rl_find_completion_word PARAMS((int *, int *));
-extern void _rl_free_match_list PARAMS((char **));
-
-/* display.c */
-extern char *_rl_strip_prompt PARAMS((char *));
-extern void _rl_move_cursor_relative PARAMS((int, const char *));
-extern void _rl_move_vert PARAMS((int));
-extern void _rl_save_prompt PARAMS((void));
-extern void _rl_restore_prompt PARAMS((void));
-extern char *_rl_make_prompt_for_search PARAMS((int));
-extern void _rl_erase_at_end_of_line PARAMS((int));
-extern void _rl_clear_to_eol PARAMS((int));
-extern void _rl_clear_screen PARAMS((void));
-extern void _rl_update_final PARAMS((void));
-extern void _rl_redisplay_after_sigwinch PARAMS((void));
-extern void _rl_clean_up_for_exit PARAMS((void));
-extern void _rl_erase_entire_line PARAMS((void));
-extern int _rl_current_display_line PARAMS((void));
-
-/* input.c */
-extern int _rl_any_typein PARAMS((void));
-extern int _rl_input_available PARAMS((void));
-extern int _rl_input_queued PARAMS((int));
-extern void _rl_insert_typein PARAMS((int));
-extern int _rl_unget_char PARAMS((int));
-
-/* macro.c */
-extern void _rl_with_macro_input PARAMS((char *));
-extern int _rl_next_macro_key PARAMS((void));
-extern void _rl_push_executing_macro PARAMS((void));
-extern void _rl_pop_executing_macro PARAMS((void));
-extern void _rl_add_macro_char PARAMS((int));
-extern void _rl_kill_kbd_macro PARAMS((void));
-
-/* misc.c */
-extern int _rl_init_argument PARAMS((void));
-extern void _rl_start_using_history PARAMS((void));
-extern int _rl_free_saved_history_line PARAMS((void));
-extern void _rl_set_insert_mode PARAMS((int, int));
-
-/* nls.c */
-extern int _rl_init_eightbit PARAMS((void));
-
-/* parens.c */
-extern void _rl_enable_paren_matching PARAMS((int));
-
-/* readline.c */
-extern void _rl_init_line_state PARAMS((void));
-extern void _rl_set_the_line PARAMS((void));
-extern int _rl_dispatch PARAMS((int, Keymap));
-extern int _rl_dispatch_subseq PARAMS((int, Keymap, int));
-
-/* rltty.c */
-extern int _rl_disable_tty_signals PARAMS((void));
-extern int _rl_restore_tty_signals PARAMS((void));
-
-/* terminal.c */
-extern void _rl_get_screen_size PARAMS((int, int));
-extern int _rl_init_terminal_io PARAMS((const char *));
-#ifdef _MINIX
-extern void _rl_output_character_function PARAMS((int));
-#else
-extern int _rl_output_character_function PARAMS((int));
-#endif
-extern void _rl_output_some_chars PARAMS((const char *, int));
-extern int _rl_backspace PARAMS((int));
-extern void _rl_enable_meta_key PARAMS((void));
-extern void _rl_control_keypad PARAMS((int));
-extern void _rl_set_cursor PARAMS((int, int));
-
-/* text.c */
-extern void _rl_fix_point PARAMS((int));
-extern int _rl_replace_text PARAMS((const char *, int, int));
-extern int _rl_insert_char PARAMS((int, int));
-extern int _rl_overwrite_char PARAMS((int, int));
-extern int _rl_overwrite_rubout PARAMS((int, int));
-extern int _rl_rubout_char PARAMS((int, int));
-#if defined (HANDLE_MULTIBYTE)
-extern int _rl_char_search_internal PARAMS((int, int, char *, int));
-#else
-extern int _rl_char_search_internal PARAMS((int, int, int));
-#endif
-extern int _rl_set_mark_at_pos PARAMS((int));
-
-/* util.c */
-extern int _rl_abort_internal PARAMS((void));
-extern char *_rl_strindex PARAMS((const char *, const char *));
-extern int _rl_qsort_string_compare PARAMS((char **, char **));
-extern int (_rl_uppercase_p) PARAMS((int));
-extern int (_rl_lowercase_p) PARAMS((int));
-extern int (_rl_pure_alphabetic) PARAMS((int));
-extern int (_rl_digit_p) PARAMS((int));
-extern int (_rl_to_lower) PARAMS((int));
-extern int (_rl_to_upper) PARAMS((int));
-extern int (_rl_digit_value) PARAMS((int));
-
-/* vi_mode.c */
-extern void _rl_vi_initialize_line PARAMS((void));
-extern void _rl_vi_reset_last PARAMS((void));
-extern void _rl_vi_set_last PARAMS((int, int, int));
-extern int _rl_vi_textmod_command PARAMS((int));
-extern void _rl_vi_done_inserting PARAMS((void));
-
-/*************************************************************************
- * Undocumented private variables *
- *************************************************************************/
-
-/* bind.c */
-extern const char *_rl_possible_control_prefixes[];
-extern const char *_rl_possible_meta_prefixes[];
-
-/* complete.c */
-extern int _rl_complete_show_all;
-extern int _rl_complete_mark_directories;
-extern int _rl_complete_mark_symlink_dirs;
-extern int _rl_print_completions_horizontally;
-extern int _rl_completion_case_fold;
-extern int _rl_match_hidden_files;
-extern int _rl_page_completions;
-
-/* display.c */
-extern int _rl_vis_botlin;
-extern int _rl_last_c_pos;
-extern int _rl_suppress_redisplay;
-extern char *rl_display_prompt;
-
-/* isearch.c */
-extern char *_rl_isearch_terminators;
-
-/* macro.c */
-extern char *_rl_executing_macro;
-
-/* misc.c */
-extern int _rl_history_preserve_point;
-extern int _rl_history_saved_point;
-
-/* readline.c */
-extern int _rl_horizontal_scroll_mode;
-extern int _rl_mark_modified_lines;
-extern int _rl_bell_preference;
-extern int _rl_meta_flag;
-extern int _rl_convert_meta_chars_to_ascii;
-extern int _rl_output_meta_chars;
-extern char *_rl_comment_begin;
-extern unsigned char _rl_parsing_conditionalized_out;
-extern Keymap _rl_keymap;
-extern FILE *_rl_in_stream;
-extern FILE *_rl_out_stream;
-extern int _rl_last_command_was_kill;
-extern int _rl_eof_char;
-extern procenv_t readline_top_level;
-
-/* terminal.c */
-extern int _rl_enable_keypad;
-extern int _rl_enable_meta;
-extern char *_rl_term_clreol;
-extern char *_rl_term_clrpag;
-extern char *_rl_term_im;
-extern char *_rl_term_ic;
-extern char *_rl_term_ei;
-extern char *_rl_term_DC;
-extern char *_rl_term_up;
-extern char *_rl_term_dc;
-extern char *_rl_term_cr;
-extern char *_rl_term_IC;
-extern int _rl_screenheight;
-extern int _rl_screenwidth;
-extern int _rl_screenchars;
-extern int _rl_terminal_can_insert;
-extern int _rl_term_autowrap;
-
-/* undo.c */
-extern int _rl_doing_an_undo;
-extern int _rl_undo_group_level;
-
-#endif /* _RL_PRIVATE_H_ */
diff --git a/readline-4.3/rlshell.h b/readline-4.3/rlshell.h
deleted file mode 100644
index 3c03fba..0000000
--- a/readline-4.3/rlshell.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/* rlshell.h -- utility functions normally provided by bash. */
-
-/* Copyright (C) 1999 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if !defined (_RL_SHELL_H_)
-#define _RL_SHELL_H_
-
-#include "rlstdc.h"
-
-extern char *sh_single_quote PARAMS((char *));
-extern void sh_set_lines_and_columns PARAMS((int, int));
-extern char *sh_get_env_value PARAMS((const char *));
-extern char *sh_get_home_dir PARAMS((void));
-extern int sh_unset_nodelay_mode PARAMS((int));
-
-#endif /* _RL_SHELL_H_ */
diff --git a/readline-4.3/rlstdc.h b/readline-4.3/rlstdc.h
deleted file mode 100644
index d6a22b3..0000000
--- a/readline-4.3/rlstdc.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/* stdc.h -- macros to make source compile on both ANSI C and K&R C
- compilers. */
-
-/* Copyright (C) 1993 Free Software Foundation, Inc.
-
- This file is part of GNU Bash, the Bourne Again SHell.
-
- Bash is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- Bash is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Bash; see the file COPYING. If not, write to the Free
- Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if !defined (_RL_STDC_H_)
-#define _RL_STDC_H_
-
-/* Adapted from BSD /usr/include/sys/cdefs.h. */
-
-/* A function can be defined using prototypes and compile on both ANSI C
- and traditional C compilers with something like this:
- extern char *func PARAMS((char *, char *, int)); */
-
-#if !defined (PARAMS)
-# if defined (__STDC__) || defined (__GNUC__) || defined (__cplusplus)
-# define PARAMS(protos) protos
-# else
-# define PARAMS(protos) ()
-# endif
-#endif
-
-#ifndef __attribute__
-# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8) || __STRICT_ANSI__
-# define __attribute__(x)
-# endif
-#endif
-
-#endif /* !_RL_STDC_H_ */
diff --git a/readline-4.3/rltty.c b/readline-4.3/rltty.c
deleted file mode 100644
index 755efeb..0000000
--- a/readline-4.3/rltty.c
+++ /dev/null
@@ -1,911 +0,0 @@
-/* rltty.c -- functions to prepare and restore the terminal for readline's
- use. */
-
-/* Copyright (C) 1992 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <sys/types.h>
-#include <signal.h>
-#include <errno.h>
-#include <stdio.h>
-
-#if defined (HAVE_UNISTD_H)
-# include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-
-#include "rldefs.h"
-
-#if defined (GWINSZ_IN_SYS_IOCTL)
-# include <sys/ioctl.h>
-#endif /* GWINSZ_IN_SYS_IOCTL */
-
-#include "rltty.h"
-#include "readline.h"
-#include "rlprivate.h"
-
-#if !defined (errno)
-extern int errno;
-#endif /* !errno */
-
-rl_vintfunc_t *rl_prep_term_function = rl_prep_terminal;
-rl_voidfunc_t *rl_deprep_term_function = rl_deprep_terminal;
-
-static void block_sigint PARAMS((void));
-static void release_sigint PARAMS((void));
-
-static void set_winsize PARAMS((int));
-
-/* **************************************************************** */
-/* */
-/* Signal Management */
-/* */
-/* **************************************************************** */
-
-#if defined (HAVE_POSIX_SIGNALS)
-static sigset_t sigint_set, sigint_oset;
-#else /* !HAVE_POSIX_SIGNALS */
-# if defined (HAVE_BSD_SIGNALS)
-static int sigint_oldmask;
-# endif /* HAVE_BSD_SIGNALS */
-#endif /* !HAVE_POSIX_SIGNALS */
-
-static int sigint_blocked;
-
-/* Cause SIGINT to not be delivered until the corresponding call to
- release_sigint(). */
-static void
-block_sigint ()
-{
- if (sigint_blocked)
- return;
-
-#if defined (HAVE_POSIX_SIGNALS)
- sigemptyset (&sigint_set);
- sigemptyset (&sigint_oset);
- sigaddset (&sigint_set, SIGINT);
- sigprocmask (SIG_BLOCK, &sigint_set, &sigint_oset);
-#else /* !HAVE_POSIX_SIGNALS */
-# if defined (HAVE_BSD_SIGNALS)
- sigint_oldmask = sigblock (sigmask (SIGINT));
-# else /* !HAVE_BSD_SIGNALS */
-# if defined (HAVE_USG_SIGHOLD)
- sighold (SIGINT);
-# endif /* HAVE_USG_SIGHOLD */
-# endif /* !HAVE_BSD_SIGNALS */
-#endif /* !HAVE_POSIX_SIGNALS */
-
- sigint_blocked = 1;
-}
-
-/* Allow SIGINT to be delivered. */
-static void
-release_sigint ()
-{
- if (sigint_blocked == 0)
- return;
-
-#if defined (HAVE_POSIX_SIGNALS)
- sigprocmask (SIG_SETMASK, &sigint_oset, (sigset_t *)NULL);
-#else
-# if defined (HAVE_BSD_SIGNALS)
- sigsetmask (sigint_oldmask);
-# else /* !HAVE_BSD_SIGNALS */
-# if defined (HAVE_USG_SIGHOLD)
- sigrelse (SIGINT);
-# endif /* HAVE_USG_SIGHOLD */
-# endif /* !HAVE_BSD_SIGNALS */
-#endif /* !HAVE_POSIX_SIGNALS */
-
- sigint_blocked = 0;
-}
-
-/* **************************************************************** */
-/* */
-/* Saving and Restoring the TTY */
-/* */
-/* **************************************************************** */
-
-/* Non-zero means that the terminal is in a prepped state. */
-static int terminal_prepped;
-
-static _RL_TTY_CHARS _rl_tty_chars, _rl_last_tty_chars;
-
-/* If non-zero, means that this process has called tcflow(fd, TCOOFF)
- and output is suspended. */
-#if defined (__ksr1__)
-static int ksrflow;
-#endif
-
-/* Dummy call to force a backgrounded readline to stop before it tries
- to get the tty settings. */
-static void
-set_winsize (tty)
- int tty;
-{
-#if defined (TIOCGWINSZ)
- struct winsize w;
-
- if (ioctl (tty, TIOCGWINSZ, &w) == 0)
- (void) ioctl (tty, TIOCSWINSZ, &w);
-#endif /* TIOCGWINSZ */
-}
-
-#if defined (NEW_TTY_DRIVER)
-
-/* Values for the `flags' field of a struct bsdtty. This tells which
- elements of the struct bsdtty have been fetched from the system and
- are valid. */
-#define SGTTY_SET 0x01
-#define LFLAG_SET 0x02
-#define TCHARS_SET 0x04
-#define LTCHARS_SET 0x08
-
-struct bsdtty {
- struct sgttyb sgttyb; /* Basic BSD tty driver information. */
- int lflag; /* Local mode flags, like LPASS8. */
-#if defined (TIOCGETC)
- struct tchars tchars; /* Terminal special characters, including ^S and ^Q. */
-#endif
-#if defined (TIOCGLTC)
- struct ltchars ltchars; /* 4.2 BSD editing characters */
-#endif
- int flags; /* Bitmap saying which parts of the struct are valid. */
-};
-
-#define TIOTYPE struct bsdtty
-
-static TIOTYPE otio;
-
-static void save_tty_chars PARAMS((TIOTYPE *));
-static int _get_tty_settings PARAMS((int, TIOTYPE *));
-static int get_tty_settings PARAMS((int, TIOTYPE *));
-static int _set_tty_settings PARAMS((int, TIOTYPE *));
-static int set_tty_settings PARAMS((int, TIOTYPE *));
-
-static void prepare_terminal_settings PARAMS((int, TIOTYPE, TIOTYPE *));
-
-static void
-save_tty_chars (tiop)
- TIOTYPE *tiop;
-{
- _rl_last_tty_chars = _rl_tty_chars;
-
- if (tiop->flags & SGTTY_SET)
- {
- _rl_tty_chars.t_erase = tiop->sgttyb.sg_erase;
- _rl_tty_chars.t_kill = tiop->sgttyb.sg_kill;
- }
-
- if (tiop->flags & TCHARS_SET)
- {
- _rl_tty_chars.t_intr = tiop->tchars.t_intrc;
- _rl_tty_chars.t_quit = tiop->tchars.t_quitc;
- _rl_tty_chars.t_start = tiop->tchars.t_startc;
- _rl_tty_chars.t_stop = tiop->tchars.t_stopc;
- _rl_tty_chars.t_eof = tiop->tchars.t_eofc;
- _rl_tty_chars.t_eol = '\n';
- _rl_tty_chars.t_eol2 = tiop->tchars.t_brkc;
- }
-
- if (tiop->flags & LTCHARS_SET)
- {
- _rl_tty_chars.t_susp = tiop->ltchars.t_suspc;
- _rl_tty_chars.t_dsusp = tiop->ltchars.t_dsuspc;
- _rl_tty_chars.t_reprint = tiop->ltchars.t_rprntc;
- _rl_tty_chars.t_flush = tiop->ltchars.t_flushc;
- _rl_tty_chars.t_werase = tiop->ltchars.t_werasc;
- _rl_tty_chars.t_lnext = tiop->ltchars.t_lnextc;
- }
-
- _rl_tty_chars.t_status = -1;
-}
-
-static int
-get_tty_settings (tty, tiop)
- int tty;
- TIOTYPE *tiop;
-{
- set_winsize (tty);
-
- tiop->flags = tiop->lflag = 0;
-
- if (ioctl (tty, TIOCGETP, &(tiop->sgttyb)) < 0)
- return -1;
- tiop->flags |= SGTTY_SET;
-
-#if defined (TIOCLGET)
- if (ioctl (tty, TIOCLGET, &(tiop->lflag)) == 0)
- tiop->flags |= LFLAG_SET;
-#endif
-
-#if defined (TIOCGETC)
- if (ioctl (tty, TIOCGETC, &(tiop->tchars)) == 0)
- tiop->flags |= TCHARS_SET;
-#endif
-
-#if defined (TIOCGLTC)
- if (ioctl (tty, TIOCGLTC, &(tiop->ltchars)) == 0)
- tiop->flags |= LTCHARS_SET;
-#endif
-
- return 0;
-}
-
-static int
-set_tty_settings (tty, tiop)
- int tty;
- TIOTYPE *tiop;
-{
- if (tiop->flags & SGTTY_SET)
- {
- ioctl (tty, TIOCSETN, &(tiop->sgttyb));
- tiop->flags &= ~SGTTY_SET;
- }
- readline_echoing_p = 1;
-
-#if defined (TIOCLSET)
- if (tiop->flags & LFLAG_SET)
- {
- ioctl (tty, TIOCLSET, &(tiop->lflag));
- tiop->flags &= ~LFLAG_SET;
- }
-#endif
-
-#if defined (TIOCSETC)
- if (tiop->flags & TCHARS_SET)
- {
- ioctl (tty, TIOCSETC, &(tiop->tchars));
- tiop->flags &= ~TCHARS_SET;
- }
-#endif
-
-#if defined (TIOCSLTC)
- if (tiop->flags & LTCHARS_SET)
- {
- ioctl (tty, TIOCSLTC, &(tiop->ltchars));
- tiop->flags &= ~LTCHARS_SET;
- }
-#endif
-
- return 0;
-}
-
-static void
-prepare_terminal_settings (meta_flag, oldtio, tiop)
- int meta_flag;
- TIOTYPE oldtio, *tiop;
-{
- readline_echoing_p = (oldtio.sgttyb.sg_flags & ECHO);
-
- /* Copy the original settings to the structure we're going to use for
- our settings. */
- tiop->sgttyb = oldtio.sgttyb;
- tiop->lflag = oldtio.lflag;
-#if defined (TIOCGETC)
- tiop->tchars = oldtio.tchars;
-#endif
-#if defined (TIOCGLTC)
- tiop->ltchars = oldtio.ltchars;
-#endif
- tiop->flags = oldtio.flags;
-
- /* First, the basic settings to put us into character-at-a-time, no-echo
- input mode. */
- tiop->sgttyb.sg_flags &= ~(ECHO | CRMOD);
- tiop->sgttyb.sg_flags |= CBREAK;
-
- /* If this terminal doesn't care how the 8th bit is used, then we can
- use it for the meta-key. If only one of even or odd parity is
- specified, then the terminal is using parity, and we cannot. */
-#if !defined (ANYP)
-# define ANYP (EVENP | ODDP)
-#endif
- if (((oldtio.sgttyb.sg_flags & ANYP) == ANYP) ||
- ((oldtio.sgttyb.sg_flags & ANYP) == 0))
- {
- tiop->sgttyb.sg_flags |= ANYP;
-
- /* Hack on local mode flags if we can. */
-#if defined (TIOCLGET)
-# if defined (LPASS8)
- tiop->lflag |= LPASS8;
-# endif /* LPASS8 */
-#endif /* TIOCLGET */
- }
-
-#if defined (TIOCGETC)
-# if defined (USE_XON_XOFF)
- /* Get rid of terminal output start and stop characters. */
- tiop->tchars.t_stopc = -1; /* C-s */
- tiop->tchars.t_startc = -1; /* C-q */
-
- /* If there is an XON character, bind it to restart the output. */
- if (oldtio.tchars.t_startc != -1)
- rl_bind_key (oldtio.tchars.t_startc, rl_restart_output);
-# endif /* USE_XON_XOFF */
-
- /* If there is an EOF char, bind _rl_eof_char to it. */
- if (oldtio.tchars.t_eofc != -1)
- _rl_eof_char = oldtio.tchars.t_eofc;
-
-# if defined (NO_KILL_INTR)
- /* Get rid of terminal-generated SIGQUIT and SIGINT. */
- tiop->tchars.t_quitc = -1; /* C-\ */
- tiop->tchars.t_intrc = -1; /* C-c */
-# endif /* NO_KILL_INTR */
-#endif /* TIOCGETC */
-
-#if defined (TIOCGLTC)
- /* Make the interrupt keys go away. Just enough to make people happy. */
- tiop->ltchars.t_dsuspc = -1; /* C-y */
- tiop->ltchars.t_lnextc = -1; /* C-v */
-#endif /* TIOCGLTC */
-}
-
-#else /* !defined (NEW_TTY_DRIVER) */
-
-#if !defined (VMIN)
-# define VMIN VEOF
-#endif
-
-#if !defined (VTIME)
-# define VTIME VEOL
-#endif
-
-#if defined (TERMIOS_TTY_DRIVER)
-# define TIOTYPE struct termios
-# define DRAIN_OUTPUT(fd) tcdrain (fd)
-# define GETATTR(tty, tiop) (tcgetattr (tty, tiop))
-# ifdef M_UNIX
-# define SETATTR(tty, tiop) (tcsetattr (tty, TCSANOW, tiop))
-# else
-# define SETATTR(tty, tiop) (tcsetattr (tty, TCSADRAIN, tiop))
-# endif /* !M_UNIX */
-#else
-# define TIOTYPE struct termio
-# define DRAIN_OUTPUT(fd)
-# define GETATTR(tty, tiop) (ioctl (tty, TCGETA, tiop))
-# define SETATTR(tty, tiop) (ioctl (tty, TCSETAW, tiop))
-#endif /* !TERMIOS_TTY_DRIVER */
-
-static TIOTYPE otio;
-
-static void save_tty_chars PARAMS((TIOTYPE *));
-static int _get_tty_settings PARAMS((int, TIOTYPE *));
-static int get_tty_settings PARAMS((int, TIOTYPE *));
-static int _set_tty_settings PARAMS((int, TIOTYPE *));
-static int set_tty_settings PARAMS((int, TIOTYPE *));
-
-static void prepare_terminal_settings PARAMS((int, TIOTYPE, TIOTYPE *));
-
-#if defined (FLUSHO)
-# define OUTPUT_BEING_FLUSHED(tp) (tp->c_lflag & FLUSHO)
-#else
-# define OUTPUT_BEING_FLUSHED(tp) 0
-#endif
-
-static void
-save_tty_chars (tiop)
- TIOTYPE *tiop;
-{
- _rl_last_tty_chars = _rl_tty_chars;
-
- _rl_tty_chars.t_eof = tiop->c_cc[VEOF];
- _rl_tty_chars.t_eol = tiop->c_cc[VEOL];
-#ifdef VEOL2
- _rl_tty_chars.t_eol2 = tiop->c_cc[VEOL2];
-#endif
- _rl_tty_chars.t_erase = tiop->c_cc[VERASE];
-#ifdef VWERASE
- _rl_tty_chars.t_werase = tiop->c_cc[VWERASE];
-#endif
- _rl_tty_chars.t_kill = tiop->c_cc[VKILL];
-#ifdef VREPRINT
- _rl_tty_chars.t_reprint = tiop->c_cc[VREPRINT];
-#endif
- _rl_tty_chars.t_intr = tiop->c_cc[VINTR];
- _rl_tty_chars.t_quit = tiop->c_cc[VQUIT];
-#ifdef VSUSP
- _rl_tty_chars.t_susp = tiop->c_cc[VSUSP];
-#endif
-#ifdef VDSUSP
- _rl_tty_chars.t_dsusp = tiop->c_cc[VDSUSP];
-#endif
-#ifdef VSTART
- _rl_tty_chars.t_start = tiop->c_cc[VSTART];
-#endif
-#ifdef VSTOP
- _rl_tty_chars.t_stop = tiop->c_cc[VSTOP];
-#endif
-#ifdef VLNEXT
- _rl_tty_chars.t_lnext = tiop->c_cc[VLNEXT];
-#endif
-#ifdef VDISCARD
- _rl_tty_chars.t_flush = tiop->c_cc[VDISCARD];
-#endif
-#ifdef VSTATUS
- _rl_tty_chars.t_status = tiop->c_cc[VSTATUS];
-#endif
-}
-
-#if defined (_AIX) || defined (_AIX41)
-/* Currently this is only used on AIX */
-static void
-rltty_warning (msg)
- char *msg;
-{
- fprintf (stderr, "readline: warning: %s\n", msg);
-}
-#endif
-
-#if defined (_AIX)
-void
-setopost(tp)
-TIOTYPE *tp;
-{
- if ((tp->c_oflag & OPOST) == 0)
- {
- rltty_warning ("turning on OPOST for terminal\r");
- tp->c_oflag |= OPOST|ONLCR;
- }
-}
-#endif
-
-static int
-_get_tty_settings (tty, tiop)
- int tty;
- TIOTYPE *tiop;
-{
- int ioctl_ret;
-
- while (1)
- {
- ioctl_ret = GETATTR (tty, tiop);
- if (ioctl_ret < 0)
- {
- if (errno != EINTR)
- return -1;
- else
- continue;
- }
- if (OUTPUT_BEING_FLUSHED (tiop))
- {
-#if defined (FLUSHO) && defined (_AIX41)
- rltty_warning ("turning off output flushing");
- tiop->c_lflag &= ~FLUSHO;
- break;
-#else
- continue;
-#endif
- }
- break;
- }
-
- return 0;
-}
-
-static int
-get_tty_settings (tty, tiop)
- int tty;
- TIOTYPE *tiop;
-{
- set_winsize (tty);
-
- if (_get_tty_settings (tty, tiop) < 0)
- return -1;
-
-#if defined (_AIX)
- setopost(tiop);
-#endif
-
- return 0;
-}
-
-static int
-_set_tty_settings (tty, tiop)
- int tty;
- TIOTYPE *tiop;
-{
- while (SETATTR (tty, tiop) < 0)
- {
- if (errno != EINTR)
- return -1;
- errno = 0;
- }
- return 0;
-}
-
-static int
-set_tty_settings (tty, tiop)
- int tty;
- TIOTYPE *tiop;
-{
- if (_set_tty_settings (tty, tiop) < 0)
- return -1;
-
-#if 0
-
-#if defined (TERMIOS_TTY_DRIVER)
-# if defined (__ksr1__)
- if (ksrflow)
- {
- ksrflow = 0;
- tcflow (tty, TCOON);
- }
-# else /* !ksr1 */
- tcflow (tty, TCOON); /* Simulate a ^Q. */
-# endif /* !ksr1 */
-#else
- ioctl (tty, TCXONC, 1); /* Simulate a ^Q. */
-#endif /* !TERMIOS_TTY_DRIVER */
-
-#endif /* 0 */
-
- return 0;
-}
-
-static void
-prepare_terminal_settings (meta_flag, oldtio, tiop)
- int meta_flag;
- TIOTYPE oldtio, *tiop;
-{
- readline_echoing_p = (oldtio.c_lflag & ECHO);
-
- tiop->c_lflag &= ~(ICANON | ECHO);
-
- if ((unsigned char) oldtio.c_cc[VEOF] != (unsigned char) _POSIX_VDISABLE)
- _rl_eof_char = oldtio.c_cc[VEOF];
-
-#if defined (USE_XON_XOFF)
-#if defined (IXANY)
- tiop->c_iflag &= ~(IXON | IXOFF | IXANY);
-#else
- /* `strict' Posix systems do not define IXANY. */
- tiop->c_iflag &= ~(IXON | IXOFF);
-#endif /* IXANY */
-#endif /* USE_XON_XOFF */
-
- /* Only turn this off if we are using all 8 bits. */
- if (((tiop->c_cflag & CSIZE) == CS8) || meta_flag)
- tiop->c_iflag &= ~(ISTRIP | INPCK);
-
- /* Make sure we differentiate between CR and NL on input. */
- tiop->c_iflag &= ~(ICRNL | INLCR);
-
-#if !defined (HANDLE_SIGNALS)
- tiop->c_lflag &= ~ISIG;
-#else
- tiop->c_lflag |= ISIG;
-#endif
-
- tiop->c_cc[VMIN] = 1;
- tiop->c_cc[VTIME] = 0;
-
-#if defined (FLUSHO)
- if (OUTPUT_BEING_FLUSHED (tiop))
- {
- tiop->c_lflag &= ~FLUSHO;
- oldtio.c_lflag &= ~FLUSHO;
- }
-#endif
-
- /* Turn off characters that we need on Posix systems with job control,
- just to be sure. This includes ^Y and ^V. This should not really
- be necessary. */
-#if defined (TERMIOS_TTY_DRIVER) && defined (_POSIX_VDISABLE)
-
-#if defined (VLNEXT)
- tiop->c_cc[VLNEXT] = _POSIX_VDISABLE;
-#endif
-
-#if defined (VDSUSP)
- tiop->c_cc[VDSUSP] = _POSIX_VDISABLE;
-#endif
-
-#endif /* TERMIOS_TTY_DRIVER && _POSIX_VDISABLE */
-}
-#endif /* NEW_TTY_DRIVER */
-
-/* Put the terminal in CBREAK mode so that we can detect key presses. */
-void
-rl_prep_terminal (meta_flag)
- int meta_flag;
-{
- int tty;
- TIOTYPE tio;
-
- if (terminal_prepped)
- return;
-
- /* Try to keep this function from being INTerrupted. */
- block_sigint ();
-
- tty = fileno (rl_instream);
-
- if (get_tty_settings (tty, &tio) < 0)
- {
- release_sigint ();
- return;
- }
-
- otio = tio;
-
- save_tty_chars (&otio);
-
- prepare_terminal_settings (meta_flag, otio, &tio);
-
- if (set_tty_settings (tty, &tio) < 0)
- {
- release_sigint ();
- return;
- }
-
- if (_rl_enable_keypad)
- _rl_control_keypad (1);
-
- fflush (rl_outstream);
- terminal_prepped = 1;
- RL_SETSTATE(RL_STATE_TERMPREPPED);
-
- release_sigint ();
-}
-
-/* Restore the terminal's normal settings and modes. */
-void
-rl_deprep_terminal ()
-{
- int tty;
-
- if (!terminal_prepped)
- return;
-
- /* Try to keep this function from being interrupted. */
- block_sigint ();
-
- tty = fileno (rl_instream);
-
- if (_rl_enable_keypad)
- _rl_control_keypad (0);
-
- fflush (rl_outstream);
-
- if (set_tty_settings (tty, &otio) < 0)
- {
- release_sigint ();
- return;
- }
-
- terminal_prepped = 0;
- RL_UNSETSTATE(RL_STATE_TERMPREPPED);
-
- release_sigint ();
-}
-
-/* **************************************************************** */
-/* */
-/* Bogus Flow Control */
-/* */
-/* **************************************************************** */
-
-int
-rl_restart_output (count, key)
- int count, key;
-{
- int fildes = fileno (rl_outstream);
-#if defined (TIOCSTART)
-#if defined (apollo)
- ioctl (&fildes, TIOCSTART, 0);
-#else
- ioctl (fildes, TIOCSTART, 0);
-#endif /* apollo */
-
-#else /* !TIOCSTART */
-# if defined (TERMIOS_TTY_DRIVER)
-# if defined (__ksr1__)
- if (ksrflow)
- {
- ksrflow = 0;
- tcflow (fildes, TCOON);
- }
-# else /* !ksr1 */
- tcflow (fildes, TCOON); /* Simulate a ^Q. */
-# endif /* !ksr1 */
-# else /* !TERMIOS_TTY_DRIVER */
-# if defined (TCXONC)
- ioctl (fildes, TCXONC, TCOON);
-# endif /* TCXONC */
-# endif /* !TERMIOS_TTY_DRIVER */
-#endif /* !TIOCSTART */
-
- return 0;
-}
-
-int
-rl_stop_output (count, key)
- int count, key;
-{
- int fildes = fileno (rl_instream);
-
-#if defined (TIOCSTOP)
-# if defined (apollo)
- ioctl (&fildes, TIOCSTOP, 0);
-# else
- ioctl (fildes, TIOCSTOP, 0);
-# endif /* apollo */
-#else /* !TIOCSTOP */
-# if defined (TERMIOS_TTY_DRIVER)
-# if defined (__ksr1__)
- ksrflow = 1;
-# endif /* ksr1 */
- tcflow (fildes, TCOOFF);
-# else
-# if defined (TCXONC)
- ioctl (fildes, TCXONC, TCOON);
-# endif /* TCXONC */
-# endif /* !TERMIOS_TTY_DRIVER */
-#endif /* !TIOCSTOP */
-
- return 0;
-}
-
-/* **************************************************************** */
-/* */
-/* Default Key Bindings */
-/* */
-/* **************************************************************** */
-
-/* Set the system's default editing characters to their readline equivalents
- in KMAP. Should be static, now that we have rl_tty_set_default_bindings. */
-void
-rltty_set_default_bindings (kmap)
- Keymap kmap;
-{
- TIOTYPE ttybuff;
- int tty = fileno (rl_instream);
-
-#if defined (NEW_TTY_DRIVER)
-
-#define SET_SPECIAL(sc, func) \
- do \
- { \
- int ic; \
- ic = sc; \
- if (ic != -1 && kmap[(unsigned char)ic].type == ISFUNC) \
- kmap[(unsigned char)ic].function = func; \
- } \
- while (0)
-
- if (get_tty_settings (tty, &ttybuff) == 0)
- {
- if (ttybuff.flags & SGTTY_SET)
- {
- SET_SPECIAL (ttybuff.sgttyb.sg_erase, rl_rubout);
- SET_SPECIAL (ttybuff.sgttyb.sg_kill, rl_unix_line_discard);
- }
-
-# if defined (TIOCGLTC)
- if (ttybuff.flags & LTCHARS_SET)
- {
- SET_SPECIAL (ttybuff.ltchars.t_werasc, rl_unix_word_rubout);
- SET_SPECIAL (ttybuff.ltchars.t_lnextc, rl_quoted_insert);
- }
-# endif /* TIOCGLTC */
- }
-
-#else /* !NEW_TTY_DRIVER */
-
-#define SET_SPECIAL(sc, func) \
- do \
- { \
- unsigned char uc; \
- uc = ttybuff.c_cc[sc]; \
- if (uc != (unsigned char)_POSIX_VDISABLE && kmap[uc].type == ISFUNC) \
- kmap[uc].function = func; \
- } \
- while (0)
-
- if (get_tty_settings (tty, &ttybuff) == 0)
- {
- SET_SPECIAL (VERASE, rl_rubout);
- SET_SPECIAL (VKILL, rl_unix_line_discard);
-
-# if defined (VLNEXT) && defined (TERMIOS_TTY_DRIVER)
- SET_SPECIAL (VLNEXT, rl_quoted_insert);
-# endif /* VLNEXT && TERMIOS_TTY_DRIVER */
-
-# if defined (VWERASE) && defined (TERMIOS_TTY_DRIVER)
- SET_SPECIAL (VWERASE, rl_unix_word_rubout);
-# endif /* VWERASE && TERMIOS_TTY_DRIVER */
- }
-#endif /* !NEW_TTY_DRIVER */
-}
-
-/* New public way to set the system default editing chars to their readline
- equivalents. */
-void
-rl_tty_set_default_bindings (kmap)
- Keymap kmap;
-{
- rltty_set_default_bindings (kmap);
-}
-
-#if defined (HANDLE_SIGNALS)
-
-#if defined (NEW_TTY_DRIVER)
-int
-_rl_disable_tty_signals ()
-{
- return 0;
-}
-
-int
-_rl_restore_tty_signals ()
-{
- return 0;
-}
-#else
-
-static TIOTYPE sigstty, nosigstty;
-static int tty_sigs_disabled = 0;
-
-int
-_rl_disable_tty_signals ()
-{
- if (tty_sigs_disabled)
- return 0;
-
- if (_get_tty_settings (fileno (rl_instream), &sigstty) < 0)
- return -1;
-
- nosigstty = sigstty;
-
- nosigstty.c_lflag &= ~ISIG;
- nosigstty.c_iflag &= ~IXON;
-
- if (_set_tty_settings (fileno (rl_instream), &nosigstty) < 0)
- return (_set_tty_settings (fileno (rl_instream), &sigstty));
-
- tty_sigs_disabled = 1;
- return 0;
-}
-
-int
-_rl_restore_tty_signals ()
-{
- int r;
-
- if (tty_sigs_disabled == 0)
- return 0;
-
- r = _set_tty_settings (fileno (rl_instream), &sigstty);
-
- if (r == 0)
- tty_sigs_disabled = 0;
-
- return r;
-}
-#endif /* !NEW_TTY_DRIVER */
-
-#endif /* HANDLE_SIGNALS */
diff --git a/readline-4.3/rltty.h b/readline-4.3/rltty.h
deleted file mode 100644
index 029a3fb..0000000
--- a/readline-4.3/rltty.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/* rltty.h - tty driver-related definitions used by some library files. */
-
-/* Copyright (C) 1995 Free Software Foundation, Inc.
-
- This file contains the Readline Library (the Library), a set of
- routines for providing Emacs style line input to programs that ask
- for it.
-
- The Library is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- The Library is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if !defined (_RLTTY_H_)
-#define _RLTTY_H_
-
-/* Posix systems use termios and the Posix signal functions. */
-#if defined (TERMIOS_TTY_DRIVER)
-# include <termios.h>
-#endif /* TERMIOS_TTY_DRIVER */
-
-/* System V machines use termio. */
-#if defined (TERMIO_TTY_DRIVER)
-# include <termio.h>
-# if !defined (TCOON)
-# define TCOON 1
-# endif
-#endif /* TERMIO_TTY_DRIVER */
-
-/* Other (BSD) machines use sgtty. */
-#if defined (NEW_TTY_DRIVER)
-# include <sgtty.h>
-#endif
-
-#include "rlwinsize.h"
-
-/* Define _POSIX_VDISABLE if we are not using the `new' tty driver and
- it is not already defined. It is used both to determine if a
- special character is disabled and to disable certain special
- characters. Posix systems should set to 0, USG systems to -1. */
-#if !defined (NEW_TTY_DRIVER) && !defined (_POSIX_VDISABLE)
-# if defined (_SVR4_VDISABLE)
-# define _POSIX_VDISABLE _SVR4_VDISABLE
-# else
-# if defined (_POSIX_VERSION)
-# define _POSIX_VDISABLE 0
-# else /* !_POSIX_VERSION */
-# define _POSIX_VDISABLE -1
-# endif /* !_POSIX_VERSION */
-# endif /* !_SVR4_DISABLE */
-#endif /* !NEW_TTY_DRIVER && !_POSIX_VDISABLE */
-
-typedef struct _rl_tty_chars {
- char t_eof;
- char t_eol;
- char t_eol2;
- char t_erase;
- char t_werase;
- char t_kill;
- char t_reprint;
- char t_intr;
- char t_quit;
- char t_susp;
- char t_dsusp;
- char t_start;
- char t_stop;
- char t_lnext;
- char t_flush;
- char t_status;
-} _RL_TTY_CHARS;
-
-#endif /* _RLTTY_H_ */
diff --git a/readline-4.3/rltypedefs.h b/readline-4.3/rltypedefs.h
deleted file mode 100644
index f3280e9..0000000
--- a/readline-4.3/rltypedefs.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/* rltypedefs.h -- Type declarations for readline functions. */
-
-/* Copyright (C) 2000 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#ifndef _RL_TYPEDEFS_H_
-#define _RL_TYPEDEFS_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Old-style */
-
-#if !defined (_FUNCTION_DEF)
-# define _FUNCTION_DEF
-
-typedef int Function ();
-typedef void VFunction ();
-typedef char *CPFunction ();
-typedef char **CPPFunction ();
-
-#endif /* _FUNCTION_DEF */
-
-/* New style. */
-
-#if !defined (_RL_FUNCTION_TYPEDEF)
-# define _RL_FUNCTION_TYPEDEF
-
-/* Bindable functions */
-typedef int rl_command_func_t PARAMS((int, int));
-
-/* Typedefs for the completion system */
-typedef char *rl_compentry_func_t PARAMS((const char *, int));
-typedef char **rl_completion_func_t PARAMS((const char *, int, int));
-
-typedef char *rl_quote_func_t PARAMS((char *, int, char *));
-typedef char *rl_dequote_func_t PARAMS((char *, int));
-
-typedef int rl_compignore_func_t PARAMS((char **));
-
-typedef void rl_compdisp_func_t PARAMS((char **, int, int));
-
-/* Type for input and pre-read hook functions like rl_event_hook */
-typedef int rl_hook_func_t PARAMS((void));
-
-/* Input function type */
-typedef int rl_getc_func_t PARAMS((FILE *));
-
-/* Generic function that takes a character buffer (which could be the readline
- line buffer) and an index into it (which could be rl_point) and returns
- an int. */
-typedef int rl_linebuf_func_t PARAMS((char *, int));
-
-/* `Generic' function pointer typedefs */
-typedef int rl_intfunc_t PARAMS((int));
-#define rl_ivoidfunc_t rl_hook_func_t
-typedef int rl_icpfunc_t PARAMS((char *));
-typedef int rl_icppfunc_t PARAMS((char **));
-
-typedef void rl_voidfunc_t PARAMS((void));
-typedef void rl_vintfunc_t PARAMS((int));
-typedef void rl_vcpfunc_t PARAMS((char *));
-typedef void rl_vcppfunc_t PARAMS((char **));
-#endif /* _RL_FUNCTION_TYPEDEF */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _RL_TYPEDEFS_H_ */
diff --git a/readline-4.3/rlwinsize.h b/readline-4.3/rlwinsize.h
deleted file mode 100644
index 7838154..0000000
--- a/readline-4.3/rlwinsize.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/* rlwinsize.h -- an attempt to isolate some of the system-specific defines
- for `struct winsize' and TIOCGWINSZ. */
-
-/* Copyright (C) 1997 Free Software Foundation, Inc.
-
- This file contains the Readline Library (the Library), a set of
- routines for providing Emacs style line input to programs that ask
- for it.
-
- The Library is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- The Library is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if !defined (_RLWINSIZE_H_)
-#define _RLWINSIZE_H_
-
-#if defined (HAVE_CONFIG_H)
-# include "config.h"
-#endif
-
-/* Try to find the definitions of `struct winsize' and TIOGCWINSZ */
-
-#if defined (GWINSZ_IN_SYS_IOCTL) && !defined (TIOCGWINSZ)
-# include <sys/ioctl.h>
-#endif /* GWINSZ_IN_SYS_IOCTL && !TIOCGWINSZ */
-
-#if defined (STRUCT_WINSIZE_IN_TERMIOS) && !defined (STRUCT_WINSIZE_IN_SYS_IOCTL)
-# include <termios.h>
-#endif /* STRUCT_WINSIZE_IN_TERMIOS && !STRUCT_WINSIZE_IN_SYS_IOCTL */
-
-/* Not in either of the standard places, look around. */
-#if !defined (STRUCT_WINSIZE_IN_TERMIOS) && !defined (STRUCT_WINSIZE_IN_SYS_IOCTL)
-# if defined (HAVE_SYS_STREAM_H)
-# include <sys/stream.h>
-# endif /* HAVE_SYS_STREAM_H */
-# if defined (HAVE_SYS_PTEM_H) /* SVR4.2, at least, has it here */
-# include <sys/ptem.h>
-# define _IO_PTEM_H /* work around SVR4.2 1.1.4 bug */
-# endif /* HAVE_SYS_PTEM_H */
-# if defined (HAVE_SYS_PTE_H) /* ??? */
-# include <sys/pte.h>
-# endif /* HAVE_SYS_PTE_H */
-#endif /* !STRUCT_WINSIZE_IN_TERMIOS && !STRUCT_WINSIZE_IN_SYS_IOCTL */
-
-#endif /* _RL_WINSIZE_H */
-
diff --git a/readline-4.3/savestring.c b/readline-4.3/savestring.c
deleted file mode 100644
index c7ebeb1..0000000
--- a/readline-4.3/savestring.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* savestring.c */
-
-/* Copyright (C) 1998 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#include <config.h>
-#ifdef HAVE_STRING_H
-# include <string.h>
-#endif
-#include "xmalloc.h"
-
-/* Backwards compatibility, now that savestring has been removed from
- all `public' readline header files. */
-char *
-savestring (s)
- const char *s;
-{
- return ((char *)strcpy ((char *)xmalloc (1 + strlen (s)), (s)));
-}
diff --git a/readline-4.3/search.c b/readline-4.3/search.c
deleted file mode 100644
index 7e0d60b..0000000
--- a/readline-4.3/search.c
+++ /dev/null
@@ -1,465 +0,0 @@
-/* search.c - code for non-incremental searching in emacs and vi modes. */
-
-/* Copyright (C) 1992 Free Software Foundation, Inc.
-
- This file is part of the Readline Library (the Library), a set of
- routines for providing Emacs style line input to programs that ask
- for it.
-
- The Library is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- The Library is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <sys/types.h>
-#include <stdio.h>
-
-#if defined (HAVE_UNISTD_H)
-# include <unistd.h>
-#endif
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif
-
-#include "rldefs.h"
-#include "rlmbutil.h"
-
-#include "readline.h"
-#include "history.h"
-
-#include "rlprivate.h"
-#include "xmalloc.h"
-
-#ifdef abs
-# undef abs
-#endif
-#define abs(x) (((x) >= 0) ? (x) : -(x))
-
-extern HIST_ENTRY *_rl_saved_line_for_history;
-
-/* Functions imported from the rest of the library. */
-extern int _rl_free_history_entry PARAMS((HIST_ENTRY *));
-
-static char *noninc_search_string = (char *) NULL;
-static int noninc_history_pos;
-
-static char *prev_line_found = (char *) NULL;
-
-static int rl_history_search_len;
-static int rl_history_search_pos;
-static char *history_search_string;
-static int history_string_size;
-
-static void make_history_line_current PARAMS((HIST_ENTRY *));
-static int noninc_search_from_pos PARAMS((char *, int, int));
-static void noninc_dosearch PARAMS((char *, int));
-static void noninc_search PARAMS((int, int));
-static int rl_history_search_internal PARAMS((int, int));
-static void rl_history_search_reinit PARAMS((void));
-
-/* Make the data from the history entry ENTRY be the contents of the
- current line. This doesn't do anything with rl_point; the caller
- must set it. */
-static void
-make_history_line_current (entry)
- HIST_ENTRY *entry;
-{
- rl_replace_line (entry->line, 0);
- rl_undo_list = (UNDO_LIST *)entry->data;
-
- if (_rl_saved_line_for_history)
- _rl_free_history_entry (_rl_saved_line_for_history);
- _rl_saved_line_for_history = (HIST_ENTRY *)NULL;
-}
-
-/* Search the history list for STRING starting at absolute history position
- POS. If STRING begins with `^', the search must match STRING at the
- beginning of a history line, otherwise a full substring match is performed
- for STRING. DIR < 0 means to search backwards through the history list,
- DIR >= 0 means to search forward. */
-static int
-noninc_search_from_pos (string, pos, dir)
- char *string;
- int pos, dir;
-{
- int ret, old;
-
- if (pos < 0)
- return -1;
-
- old = where_history ();
- if (history_set_pos (pos) == 0)
- return -1;
-
- RL_SETSTATE(RL_STATE_SEARCH);
- if (*string == '^')
- ret = history_search_prefix (string + 1, dir);
- else
- ret = history_search (string, dir);
- RL_UNSETSTATE(RL_STATE_SEARCH);
-
- if (ret != -1)
- ret = where_history ();
-
- history_set_pos (old);
- return (ret);
-}
-
-/* Search for a line in the history containing STRING. If DIR is < 0, the
- search is backwards through previous entries, else through subsequent
- entries. */
-static void
-noninc_dosearch (string, dir)
- char *string;
- int dir;
-{
- int oldpos, pos;
- HIST_ENTRY *entry;
-
- if (string == 0 || *string == '\0' || noninc_history_pos < 0)
- {
- rl_ding ();
- return;
- }
-
- pos = noninc_search_from_pos (string, noninc_history_pos + dir, dir);
- if (pos == -1)
- {
- /* Search failed, current history position unchanged. */
- rl_maybe_unsave_line ();
- rl_clear_message ();
- rl_point = 0;
- rl_ding ();
- return;
- }
-
- noninc_history_pos = pos;
-
- oldpos = where_history ();
- history_set_pos (noninc_history_pos);
- entry = current_history ();
-#if defined (VI_MODE)
- if (rl_editing_mode != vi_mode)
-#endif
- history_set_pos (oldpos);
-
- make_history_line_current (entry);
-
- rl_point = 0;
- rl_mark = rl_end;
-
- rl_clear_message ();
-}
-
-/* Search non-interactively through the history list. DIR < 0 means to
- search backwards through the history of previous commands; otherwise
- the search is for commands subsequent to the current position in the
- history list. PCHAR is the character to use for prompting when reading
- the search string; if not specified (0), it defaults to `:'. */
-static void
-noninc_search (dir, pchar)
- int dir;
- int pchar;
-{
- int saved_point, saved_mark, c;
- char *p;
-#if defined (HANDLE_MULTIBYTE)
- char mb[MB_LEN_MAX];
-#endif
-
- rl_maybe_save_line ();
- saved_point = rl_point;
- saved_mark = rl_mark;
-
- /* Use the line buffer to read the search string. */
- rl_line_buffer[0] = 0;
- rl_end = rl_point = 0;
-
- p = _rl_make_prompt_for_search (pchar ? pchar : ':');
- rl_message (p, 0, 0);
- free (p);
-
-#define SEARCH_RETURN rl_restore_prompt (); RL_UNSETSTATE(RL_STATE_NSEARCH); return
-
- RL_SETSTATE(RL_STATE_NSEARCH);
- /* Read the search string. */
- while (1)
- {
- RL_SETSTATE(RL_STATE_MOREINPUT);
- c = rl_read_key ();
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
-
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- c = _rl_read_mbstring (c, mb, MB_LEN_MAX);
-#endif
-
- if (c == 0)
- break;
-
- switch (c)
- {
- case CTRL('H'):
- case RUBOUT:
- if (rl_point == 0)
- {
- rl_maybe_unsave_line ();
- rl_clear_message ();
- rl_point = saved_point;
- rl_mark = saved_mark;
- SEARCH_RETURN;
- }
- _rl_rubout_char (1, c);
- break;
-
- case CTRL('W'):
- rl_unix_word_rubout (1, c);
- break;
-
- case CTRL('U'):
- rl_unix_line_discard (1, c);
- break;
-
- case RETURN:
- case NEWLINE:
- goto dosearch;
- /* NOTREACHED */
- break;
-
- case CTRL('C'):
- case CTRL('G'):
- rl_maybe_unsave_line ();
- rl_clear_message ();
- rl_point = saved_point;
- rl_mark = saved_mark;
- rl_ding ();
- SEARCH_RETURN;
-
- default:
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- rl_insert_text (mb);
- else
-#endif
- _rl_insert_char (1, c);
- break;
- }
- (*rl_redisplay_function) ();
- }
-
- dosearch:
- rl_mark = saved_mark;
-
- /* If rl_point == 0, we want to re-use the previous search string and
- start from the saved history position. If there's no previous search
- string, punt. */
- if (rl_point == 0)
- {
- if (!noninc_search_string)
- {
- rl_ding ();
- SEARCH_RETURN;
- }
- }
- else
- {
- /* We want to start the search from the current history position. */
- noninc_history_pos = where_history ();
- FREE (noninc_search_string);
- noninc_search_string = savestring (rl_line_buffer);
- }
-
- rl_restore_prompt ();
- noninc_dosearch (noninc_search_string, dir);
- RL_UNSETSTATE(RL_STATE_NSEARCH);
-}
-
-/* Search forward through the history list for a string. If the vi-mode
- code calls this, KEY will be `?'. */
-int
-rl_noninc_forward_search (count, key)
- int count, key;
-{
- noninc_search (1, (key == '?') ? '?' : 0);
- return 0;
-}
-
-/* Reverse search the history list for a string. If the vi-mode code
- calls this, KEY will be `/'. */
-int
-rl_noninc_reverse_search (count, key)
- int count, key;
-{
- noninc_search (-1, (key == '/') ? '/' : 0);
- return 0;
-}
-
-/* Search forward through the history list for the last string searched
- for. If there is no saved search string, abort. */
-int
-rl_noninc_forward_search_again (count, key)
- int count, key;
-{
- if (!noninc_search_string)
- {
- rl_ding ();
- return (-1);
- }
- noninc_dosearch (noninc_search_string, 1);
- return 0;
-}
-
-/* Reverse search in the history list for the last string searched
- for. If there is no saved search string, abort. */
-int
-rl_noninc_reverse_search_again (count, key)
- int count, key;
-{
- if (!noninc_search_string)
- {
- rl_ding ();
- return (-1);
- }
- noninc_dosearch (noninc_search_string, -1);
- return 0;
-}
-
-static int
-rl_history_search_internal (count, dir)
- int count, dir;
-{
- HIST_ENTRY *temp;
- int ret, oldpos;
-
- rl_maybe_save_line ();
- temp = (HIST_ENTRY *)NULL;
-
- /* Search COUNT times through the history for a line whose prefix
- matches history_search_string. When this loop finishes, TEMP,
- if non-null, is the history line to copy into the line buffer. */
- while (count)
- {
- ret = noninc_search_from_pos (history_search_string, rl_history_search_pos + dir, dir);
- if (ret == -1)
- break;
-
- /* Get the history entry we found. */
- rl_history_search_pos = ret;
- oldpos = where_history ();
- history_set_pos (rl_history_search_pos);
- temp = current_history ();
- history_set_pos (oldpos);
-
- /* Don't find multiple instances of the same line. */
- if (prev_line_found && STREQ (prev_line_found, temp->line))
- continue;
- prev_line_found = temp->line;
- count--;
- }
-
- /* If we didn't find anything at all, return. */
- if (temp == 0)
- {
- rl_maybe_unsave_line ();
- rl_ding ();
- /* If you don't want the saved history line (last match) to show up
- in the line buffer after the search fails, change the #if 0 to
- #if 1 */
-#if 0
- if (rl_point > rl_history_search_len)
- {
- rl_point = rl_end = rl_history_search_len;
- rl_line_buffer[rl_end] = '\0';
- rl_mark = 0;
- }
-#else
- rl_point = rl_history_search_len; /* rl_maybe_unsave_line changes it */
- rl_mark = rl_end;
-#endif
- return 1;
- }
-
- /* Copy the line we found into the current line buffer. */
- make_history_line_current (temp);
-
- rl_point = rl_history_search_len;
- rl_mark = rl_end;
-
- return 0;
-}
-
-static void
-rl_history_search_reinit ()
-{
- rl_history_search_pos = where_history ();
- rl_history_search_len = rl_point;
- prev_line_found = (char *)NULL;
- if (rl_point)
- {
- if (rl_history_search_len >= history_string_size - 2)
- {
- history_string_size = rl_history_search_len + 2;
- history_search_string = (char *)xrealloc (history_search_string, history_string_size);
- }
- history_search_string[0] = '^';
- strncpy (history_search_string + 1, rl_line_buffer, rl_point);
- history_search_string[rl_point + 1] = '\0';
- }
- _rl_free_saved_history_line ();
-}
-
-/* Search forward in the history for the string of characters
- from the start of the line to rl_point. This is a non-incremental
- search. */
-int
-rl_history_search_forward (count, ignore)
- int count, ignore;
-{
- if (count == 0)
- return (0);
-
- if (rl_last_func != rl_history_search_forward &&
- rl_last_func != rl_history_search_backward)
- rl_history_search_reinit ();
-
- if (rl_history_search_len == 0)
- return (rl_get_next_history (count, ignore));
- return (rl_history_search_internal (abs (count), (count > 0) ? 1 : -1));
-}
-
-/* Search backward through the history for the string of characters
- from the start of the line to rl_point. This is a non-incremental
- search. */
-int
-rl_history_search_backward (count, ignore)
- int count, ignore;
-{
- if (count == 0)
- return (0);
-
- if (rl_last_func != rl_history_search_forward &&
- rl_last_func != rl_history_search_backward)
- rl_history_search_reinit ();
-
- if (rl_history_search_len == 0)
- return (rl_get_previous_history (count, ignore));
- return (rl_history_search_internal (abs (count), (count > 0) ? -1 : 1));
-}
diff --git a/readline-4.3/shell.c b/readline-4.3/shell.c
deleted file mode 100644
index ad27cc1..0000000
--- a/readline-4.3/shell.c
+++ /dev/null
@@ -1,196 +0,0 @@
-/* shell.c -- readline utility functions that are normally provided by
- bash when readline is linked as part of the shell. */
-
-/* Copyright (C) 1997 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <sys/types.h>
-
-#if defined (HAVE_UNISTD_H)
-# include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#if defined (HAVE_STRING_H)
-# include <string.h>
-#else
-# include <strings.h>
-#endif /* !HAVE_STRING_H */
-
-#if defined (HAVE_LIMITS_H)
-# include <limits.h>
-#endif
-
-#include <fcntl.h>
-#include <pwd.h>
-
-#include <stdio.h>
-
-#include "rlstdc.h"
-#include "rlshell.h"
-#include "xmalloc.h"
-
-#if !defined (HAVE_GETPW_DECLS)
-extern struct passwd *getpwuid PARAMS((uid_t));
-#endif /* !HAVE_GETPW_DECLS */
-
-#ifndef NULL
-# define NULL 0
-#endif
-
-#ifndef CHAR_BIT
-# define CHAR_BIT 8
-#endif
-
-/* Nonzero if the integer type T is signed. */
-#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1))
-
-/* Bound on length of the string representing an integer value of type T.
- Subtract one for the sign bit if T is signed;
- 302 / 1000 is log10 (2) rounded up;
- add one for integer division truncation;
- add one more for a minus sign if t is signed. */
-#define INT_STRLEN_BOUND(t) \
- ((sizeof (t) * CHAR_BIT - TYPE_SIGNED (t)) * 302 / 1000 \
- + 1 + TYPE_SIGNED (t))
-
-/* All of these functions are resolved from bash if we are linking readline
- as part of bash. */
-
-/* Does shell-like quoting using single quotes. */
-char *
-sh_single_quote (string)
- char *string;
-{
- register int c;
- char *result, *r, *s;
-
- result = (char *)xmalloc (3 + (4 * strlen (string)));
- r = result;
- *r++ = '\'';
-
- for (s = string; s && (c = *s); s++)
- {
- *r++ = c;
-
- if (c == '\'')
- {
- *r++ = '\\'; /* insert escaped single quote */
- *r++ = '\'';
- *r++ = '\''; /* start new quoted string */
- }
- }
-
- *r++ = '\'';
- *r = '\0';
-
- return (result);
-}
-
-/* Set the environment variables LINES and COLUMNS to lines and cols,
- respectively. */
-void
-sh_set_lines_and_columns (lines, cols)
- int lines, cols;
-{
- char *b;
-
-#if defined (HAVE_PUTENV)
- b = (char *)xmalloc (INT_STRLEN_BOUND (int) + sizeof ("LINES=") + 1);
- sprintf (b, "LINES=%d", lines);
- putenv (b);
- b = (char *)xmalloc (INT_STRLEN_BOUND (int) + sizeof ("COLUMNS=") + 1);
- sprintf (b, "COLUMNS=%d", cols);
- putenv (b);
-#else /* !HAVE_PUTENV */
-# if defined (HAVE_SETENV)
- b = (char *)xmalloc (INT_STRLEN_BOUND (int) + 1);
- sprintf (b, "%d", lines);
- setenv ("LINES", b, 1);
- b = (char *)xmalloc (INT_STRLEN_BOUND (int) + 1);
- sprintf (b, "%d", cols);
- setenv ("COLUMNS", b, 1);
-# endif /* HAVE_SETENV */
-#endif /* !HAVE_PUTENV */
-}
-
-char *
-sh_get_env_value (varname)
- const char *varname;
-{
- return ((char *)getenv (varname));
-}
-
-char *
-sh_get_home_dir ()
-{
- char *home_dir;
- struct passwd *entry;
-
- home_dir = (char *)NULL;
- entry = getpwuid (getuid ());
- if (entry)
- home_dir = entry->pw_dir;
- return (home_dir);
-}
-
-#if !defined (O_NDELAY)
-# if defined (FNDELAY)
-# define O_NDELAY FNDELAY
-# endif
-#endif
-
-int
-sh_unset_nodelay_mode (fd)
- int fd;
-{
- int flags, bflags;
-
- if ((flags = fcntl (fd, F_GETFL, 0)) < 0)
- return -1;
-
- bflags = 0;
-
-#ifdef O_NONBLOCK
- bflags |= O_NONBLOCK;
-#endif
-
-#ifdef O_NDELAY
- bflags |= O_NDELAY;
-#endif
-
- if (flags & bflags)
- {
- flags &= ~bflags;
- return (fcntl (fd, F_SETFL, flags));
- }
-
- return 0;
-}
diff --git a/readline-4.3/shlib/Makefile.in b/readline-4.3/shlib/Makefile.in
deleted file mode 100644
index 0cba57e..0000000
--- a/readline-4.3/shlib/Makefile.in
+++ /dev/null
@@ -1,437 +0,0 @@
-## -*- text -*- ##
-# Makefile for the GNU readline library shared library support.
-#
-# Copyright (C) 1998 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA.
-
-RL_LIBRARY_VERSION = @LIBVERSION@
-RL_LIBRARY_NAME = readline
-
-srcdir = @srcdir@
-VPATH = .:@top_srcdir@
-topdir = @top_srcdir@
-BUILD_DIR = @BUILD_DIR@
-
-INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_DATA = @INSTALL_DATA@
-
-CC = @CC@
-RANLIB = @RANLIB@
-AR = @AR@
-ARFLAGS = @ARFLAGS@
-RM = rm -f
-CP = cp
-MV = mv
-LN = ln
-
-SHELL = @MAKE_SHELL@
-
-host_os = @host_os@
-
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-includedir = @includedir@
-libdir = @libdir@
-
-# Support an alternate destination root directory for package building
-DESTDIR =
-
-CFLAGS = @CFLAGS@
-LOCAL_CFLAGS = @LOCAL_CFLAGS@ -DRL_LIBRARY_VERSION='"$(RL_LIBRARY_VERSION)"'
-CPPFLAGS = @CPPFLAGS@
-LDFLAGS = @LDFLAGS@ @LOCAL_LDFLAGS@ @CFLAGS@
-
-DEFS = @DEFS@
-LOCAL_DEFS = @LOCAL_DEFS@
-
-#
-# These values are generated for configure by ${topdir}/support/shobj-conf.
-# If your system is not supported by that script, but includes facilities for
-# dynamic loading of shared objects, please update the script and send the
-# changes to bash-maintainers@gnu.org.
-#
-SHOBJ_CC = @SHOBJ_CC@
-SHOBJ_CFLAGS = @SHOBJ_CFLAGS@
-SHOBJ_LD = @SHOBJ_LD@
-
-SHOBJ_LDFLAGS = @SHOBJ_LDFLAGS@
-SHOBJ_XLDFLAGS = @SHOBJ_XLDFLAGS@
-SHOBJ_LIBS = @SHOBJ_LIBS@
-
-SHLIB_XLDFLAGS = @SHLIB_XLDFLAGS@
-SHLIB_LIBS = @SHLIB_LIBS@
-SHLIB_LIBSUFF = @SHLIB_LIBSUFF@
-
-SHLIB_LIBVERSION = @SHLIB_LIBVERSION@
-
-SHLIB_STATUS = @SHLIB_STATUS@
-
-# shared library versioning
-SHLIB_MAJOR= @SHLIB_MAJOR@
-# shared library systems like SVR4's do not use minor versions
-SHLIB_MINOR= .@SHLIB_MINOR@
-
-# For libraries which include headers from other libraries.
-INCLUDES = -I. -I.. -I$(topdir)
-
-CCFLAGS = $(DEFS) $(LOCAL_DEFS) $(CPPFLAGS) $(INCLUDES) $(LOCAL_CFLAGS) $(CFLAGS)
-
-.SUFFIXES: .so
-
-.c.so:
- ${RM} $@
- $(SHOBJ_CC) -c $(CCFLAGS) $(SHOBJ_CFLAGS) -o $*.o $<
- $(MV) $*.o $@
-
-# The name of the main library target.
-
-SHARED_READLINE = libreadline.$(SHLIB_LIBVERSION)
-SHARED_HISTORY = libhistory.$(SHLIB_LIBVERSION)
-SHARED_LIBS = $(SHARED_READLINE) $(SHARED_HISTORY)
-
-# The C code source files for this library.
-CSOURCES = $(topdir)/readline.c $(topdir)/funmap.c $(topdir)/keymaps.c \
- $(topdir)/vi_mode.c $(topdir)/parens.c $(topdir)/rltty.c \
- $(topdir)/complete.c $(topdir)/bind.c $(topdir)/isearch.c \
- $(topdir)/display.c $(topdir)/signals.c $(topdir)/emacs_keymap.c \
- $(topdir)/vi_keymap.c $(topdir)/util.c $(topdir)/kill.c \
- $(topdir)/undo.c $(topdir)/macro.c $(topdir)/input.c \
- $(topdir)/callback.c $(topdir)/terminal.c $(topdir)/xmalloc.c \
- $(topdir)/history.c $(topdir)/histsearch.c $(topdir)/histexpand.c \
- $(topdir)/histfile.c $(topdir)/nls.c $(topdir)/search.c \
- $(topdir)/shell.c $(topdir)/savestring.c $(topdir)/tilde.c \
- $(topdir)/text.c $(topdir)/misc.c $(topdir)/compat.c \
- $(topdir)/mbutil.c
-
-# The header files for this library.
-HSOURCES = readline.h rldefs.h chardefs.h keymaps.h history.h histlib.h \
- posixstat.h posixdir.h posixjmp.h tilde.h rlconf.h rltty.h \
- ansi_stdlib.h tcap.h xmalloc.h rlprivate.h rlshell.h rlmbutil.h
-
-SHARED_HISTOBJ = history.so histexpand.so histfile.so histsearch.so shell.so \
- mbutil.so
-SHARED_TILDEOBJ = tilde.so
-SHARED_OBJ = readline.so vi_mode.so funmap.so keymaps.so parens.so search.so \
- rltty.so complete.so bind.so isearch.so display.so signals.so \
- util.so kill.so undo.so macro.so input.so callback.so terminal.so \
- text.so nls.so misc.so xmalloc.so $(SHARED_HISTOBJ) $(SHARED_TILDEOBJ) \
- compat.so
-
-##########################################################################
-
-all: $(SHLIB_STATUS)
-
-supported: $(SHARED_LIBS)
-
-unsupported:
- @echo "Your system and compiler (${host_os}-${CC}) are not supported by the"
- @echo "${topdir}/support/shobj-conf script."
- @echo "If your operating system provides facilities for creating"
- @echo "shared libraries, please update the script and re-run configure."
- @echo "Please send the changes you made to bash-maintainers@gnu.org"
- @echo "for inclusion in future bash and readline releases."
-
-$(SHARED_READLINE): $(SHARED_OBJ)
- $(RM) $@
- $(SHOBJ_LD) ${SHOBJ_LDFLAGS} ${SHLIB_XLDFLAGS} -o $@ $(SHARED_OBJ) $(SHLIB_LIBS)
-
-$(SHARED_HISTORY): $(SHARED_HISTOBJ) xmalloc.so
- $(RM) $@
- $(SHOBJ_LD) ${SHOBJ_LDFLAGS} ${SHLIB_XLDFLAGS} -o $@ $(SHARED_HISTOBJ) xmalloc.so $(SHLIB_LIBS)
-
-# Since tilde.c is shared between readline and bash, make sure we compile
-# it with the right flags when it's built as part of readline
-tilde.so: tilde.c
- ${RM} $@
- $(SHOBJ_CC) -c $(CCFLAGS) $(SHOBJ_CFLAGS) -DREADLINE_LIBRARY -c -o tilde.o $(topdir)/tilde.c
- $(MV) tilde.o $@
-
-installdirs: $(topdir)/support/mkdirs
- -$(SHELL) $(topdir)/support/mkdirs $(DESTDIR)$(libdir)
-
-install: installdirs $(SHLIB_STATUS)
- $(SHELL) $(topdir)/support/shlib-install -O $(host_os) -d $(DESTDIR)$(libdir) -i "$(INSTALL_DATA)" $(SHARED_HISTORY)
- $(SHELL) $(topdir)/support/shlib-install -O $(host_os) -d $(DESTDIR)$(libdir) -i "$(INSTALL_DATA)" $(SHARED_READLINE)
- @echo install: you may need to run ldconfig
-
-uninstall:
- $(SHELL) $(topdir)/support/shlib-install -O $(host_os) -d $(DESTDIR)$(libdir) -U $(SHARED_HISTORY)
- $(SHELL) $(topdir)/support/shlib-install -O $(host_os) -d $(DESTDIR)$(libdir) -U $(SHARED_READLINE)
- @echo uninstall: you may need to run ldconfig
-
-clean mostlyclean: force
- $(RM) $(SHARED_OBJ) $(SHARED_LIBS)
-
-distclean maintainer-clean: clean
- $(RM) Makefile
-
-force:
-
-# Tell versions [3.59,3.63) of GNU make not to export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
-
-# Dependencies
-bind.so: $(topdir)/ansi_stdlib.h $(topdir)/posixstat.h
-bind.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h
-bind.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h
-bind.so: $(topdir)/rltypedefs.h
-bind.so: $(topdir)/tilde.h $(topdir)/history.h
-compat.so: $(topdir)/rlstdc.h
-callback.so: $(topdir)/rlconf.h
-callback.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h
-callback.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h
-callback.so: $(topdir)/rltypedefs.h
-callback.so: $(topdir)/tilde.h
-complete.so: $(topdir)/ansi_stdlib.h posixdir.h $(topdir)/posixstat.h
-complete.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h
-complete.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h
-complete.so: $(topdir)/rltypedefs.h
-complete.so: $(topdir)/tilde.h
-display.so: $(topdir)/ansi_stdlib.h $(topdir)/posixstat.h
-display.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h
-display.so: $(topdir)/tcap.h
-display.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h
-display.so: $(topdir)/rltypedefs.h
-display.so: $(topdir)/tilde.h $(topdir)/history.h
-funmap.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h
-funmap.so: $(topdir)/rltypedefs.h
-funmap.so: $(topdir)/rlconf.h $(topdir)/ansi_stdlib.h
-funmap.so: ${BUILD_DIR}/config.h $(topdir)/tilde.h
-histexpand.so: $(topdir)/ansi_stdlib.h
-histexpand.so: $(topdir)/history.h $(topdir)/histlib.h $(topdir)/rltypedefs.h
-histexpand.so: ${BUILD_DIR}/config.h
-histfile.so: $(topdir)/ansi_stdlib.h
-histfile.so: $(topdir)/history.h $(topdir)/histlib.h $(topdir)/rltypedefs.h
-histfile.so: ${BUILD_DIR}/config.h
-history.so: $(topdir)/ansi_stdlib.h
-history.so: $(topdir)/history.h $(topdir)/histlib.h $(topdir)/rltypedefs.h
-history.so: ${BUILD_DIR}/config.h
-histsearch.so: $(topdir)/ansi_stdlib.h
-histsearch.so: $(topdir)/history.h $(topdir)/histlib.h $(topdir)/rltypedefs.h
-histsearch.so: ${BUILD_DIR}/config.h
-input.so: $(topdir)/ansi_stdlib.h
-input.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h
-input.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h
-input.so: $(topdir)/rltypedefs.h
-input.so: $(topdir)/tilde.h
-isearch.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h
-isearch.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h
-isearch.so: $(topdir)/rltypedefs.h
-isearch.so: $(topdir)/ansi_stdlib.h $(topdir)/history.h $(topdir)/tilde.h
-keymaps.so: emacs_keymap.c vi_keymap.c
-keymaps.so: $(topdir)/keymaps.h $(topdir)/chardefs.h $(topdir)/rlconf.h
-keymaps.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h
-keymaps.so: $(topdir)/rltypedefs.h
-keymaps.so: ${BUILD_DIR}/config.h $(topdir)/ansi_stdlib.h $(topdir)/tilde.h
-kill.so: $(topdir)/ansi_stdlib.h
-kill.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h
-kill.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h
-kill.so: $(topdir)/tilde.h $(topdir)/history.h $(topdir)/rltypedefs.h
-macro.so: $(topdir)/ansi_stdlib.h
-macro.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h
-macro.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h
-macro.so: $(topdir)/tilde.h $(topdir)/history.h $(topdir)/rltypedefs.h
-mbutil.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h
-mbutil.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/rltypedefs.h
-mbutil.so: $(topdir)/chardefs.h $(topdir)/rlstdc.h
-misc.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h
-misc.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h
-misc.so: $(topdir)/rltypedefs.h
-misc.so: $(topdir)/history.h $(topdir)/tilde.h $(topdir)/ansi_stdlib.h
-nls.so: $(topdir)/ansi_stdlib.h
-nls.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h
-nls.o: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h
-nls.o: $(topdir)/rltypedefs.h
-nls.o: $(topdir)/tilde.h $(topdir)/history.h $(topdir)/rlstdc.h
-parens.so: $(topdir)/rlconf.h ${BUILD_DIR}/config.h
-parens.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h
-parens.so: $(topdir)/rltypedefs.h
-parens.so: $(topdir)/tilde.h
-rltty.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h
-rltty.so: $(topdir)/rltty.h $(topdir)/tilde.h
-rltty.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h
-rltty.so: $(topdir)/rltypedefs.h
-search.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h
-search.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h
-search.so: $(topdir)/ansi_stdlib.h $(topdir)/history.h $(topdir)/tilde.h
-search.so: $(topdir)/rltypedefs.h
-signals.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h
-signals.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h
-signals.so: $(topdir)/history.h $(topdir)/tilde.h
-signals.so: $(topdir)/rltypedefs.h
-terminal.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h
-terminal.so: $(topdir)/tcap.h
-terminal.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h
-terminal.so: $(topdir)/tilde.h $(topdir)/history.h
-terminal.so: $(topdir)/rltypedefs.h
-text.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h
-text.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h
-text.so: $(topdir)/rltypedefs.h
-text.so: $(topdir)/history.h $(topdir)/tilde.h $(topdir)/ansi_stdlib.h
-tilde.so: $(topdir)/ansi_stdlib.h ${BUILD_DIR}/config.h $(topdir)/tilde.h
-undo.so: $(topdir)/ansi_stdlib.h
-undo.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h
-undo.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h
-undo.so: $(topdir)/rltypedefs.h
-undo.so: $(topdir)/tilde.h $(topdir)/history.h
-util.so: $(topdir)/posixjmp.h $(topdir)/ansi_stdlib.h
-util.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h
-util.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h
-util.so: $(topdir)/rltypedefs.h $(topdir)/tilde.h
-vi_mode.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h
-vi_mode.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h
-vi_mode.so: $(topdir)/history.h $(topdir)/ansi_stdlib.h $(topdir)/tilde.h
-vi_mode.so: $(topdir)/rltypedefs.h
-xmalloc.so: ${BUILD_DIR}/config.h
-xmalloc.so: $(topdir)/ansi_stdlib.h
-
-bind.so: $(topdir)/rlshell.h
-histfile.so: $(topdir)/rlshell.h
-nls.so: $(topdir)/rlshell.h
-readline.so: $(topdir)/rlshell.h
-shell.so: $(topdir)/rlshell.h
-terminal.so: $(topdir)/rlshell.h
-histexpand.so: $(topdir)/rlshell.h
-
-bind.so: $(topdir)/rlprivate.h
-callback.so: $(topdir)/rlprivate.h
-complete.so: $(topdir)/rlprivate.h
-display.so: $(topdir)/rlprivate.h
-input.so: $(topdir)/rlprivate.h
-isearch.so: $(topdir)/rlprivate.h
-kill.so: $(topdir)/rlprivate.h
-macro.so: $(topdir)/rlprivate.h
-mbutil.so: $(topdir)/rlprivate.h
-misc.so: $(topdir)/rlprivate.h
-nls.so: $(topdir)/rlprivate.h
-parens.so: $(topdir)/rlprivate.h
-readline.so: $(topdir)/rlprivate.h
-rltty.so: $(topdir)/rlprivate.h
-search.so: $(topdir)/rlprivate.h
-signals.so: $(topdir)/rlprivate.h
-terminal.so: $(topdir)/rlprivate.h
-text.so: $(topdir)/rlprivate.h
-undo.so: $(topdir)/rlprivate.h
-util.so: $(topdir)/rlprivate.h
-vi_mode.so: $(topdir)/rlprivate.h
-
-bind.so: $(topdir)/xmalloc.h
-complete.so: $(topdir)/xmalloc.h
-display.so: $(topdir)/xmalloc.h
-funmap.so: $(topdir)/xmalloc.h
-histexpand.so: $(topdir)/xmalloc.h
-histfile.so: $(topdir)/xmalloc.h
-history.so: $(topdir)/xmalloc.h
-input.so: $(topdir)/xmalloc.h
-isearch.so: $(topdir)/xmalloc.h
-keymaps.so: $(topdir)/xmalloc.h
-kill.so: $(topdir)/xmalloc.h
-macro.so: $(topdir)/xmalloc.h
-mbutil.so: $(topdir)/xmalloc.h
-misc.so: $(topdir)/xmalloc.h
-readline.so: $(topdir)/xmalloc.h
-savestring.so: $(topdir)/xmalloc.h
-search.so: $(topdir)/xmalloc.h
-shell.so: $(topdir)/xmalloc.h
-terminal.so: $(topdir)/xmalloc.h
-text.so: $(topdir)/xmalloc.h
-tilde.so: $(topdir)/xmalloc.h
-undo.so: $(topdir)/xmalloc.h
-util.so: $(topdir)/xmalloc.h
-vi_mode.so: $(topdir)/xmalloc.h
-xmalloc.so: $(topdir)/xmalloc.h
-
-complete.o: $(topdir)/rlmbutil.h
-display.o: $(topdir)/rlmbutil.h
-histexpand.o: $(topdir)/rlmbutil.h
-input.o: $(topdir)/rlmbutil.h
-isearch.o: $(topdir)/rlmbutil.h
-mbutil.o: $(topdir)/rlmbutil.h
-misc.o: $(topdir)/rlmbutil.h
-readline.o: $(topdir)/rlmbutil.h
-search.o: $(topdir)/rlmbutil.h
-text.o: $(topdir)/rlmbutil.h
-vi_mode.o: $(topdir)/rlmbutil.h
-
-bind.so: $(topdir)/bind.c
-callback.so: $(topdir)/callback.c
-compat.so: $(topdir)/compat.c
-complete.so: $(topdir)/complete.c
-display.so: $(topdir)/display.c
-funmap.so: $(topdir)/funmap.c
-input.so: $(topdir)/input.c
-isearch.so: $(topdir)/isearch.c
-keymaps.so: $(topdir)/keymaps.c $(topdir)/emacs_keymap.c $(topdir)/vi_keymap.c
-kill.so: $(topdir)/kill.c
-macro.so: $(topdir)/macro.c
-mbutil.so: $(topdir)/mbutil.c
-misc.so: $(topdir)/mbutil.c
-nls.so: $(topdir)/nls.c
-parens.so: $(topdir)/parens.c
-readline.so: $(topdir)/readline.c
-rltty.so: $(topdir)/rltty.c
-savestring.so: $(topdir)/savestring.c
-search.so: $(topdir)/search.c
-shell.so: $(topdir)/shell.c
-signals.so: $(topdir)/signals.c
-terminal.so: $(topdir)/terminal.c
-text.so: $(topdir)/terminal.c
-tilde.so: $(topdir)/tilde.c
-undo.so: $(topdir)/undo.c
-util.so: $(topdir)/util.c
-vi_mode.so: $(topdir)/vi_mode.c
-xmalloc.so: $(topdir)/xmalloc.c
-
-histexpand.so: $(topdir)/histexpand.c
-histfile.so: $(topdir)/histfile.c
-history.so: $(topdir)/history.c
-histsearch.so: $(topdir)/histsearch.c
-
-bind.so: bind.c
-callback.so: callback.c
-comapt.so: compat.c
-complete.so: complete.c
-display.so: display.c
-funmap.so: funmap.c
-input.so: input.c
-isearch.so: isearch.c
-keymaps.so: keymaps.c emacs_keymap.c vi_keymap.c
-kill.so: kill.c
-macro.so: macro.c
-mbutil.so: mbutil.c
-misc.so: misc.c
-nls.so: nls.c
-parens.so: parens.c
-readline.so: readline.c
-rltty.so: rltty.c
-savestring.so: savestring.c
-search.so: search.c
-signals.so: signals.c
-shell.so: shell.c
-terminal.so: terminal.c
-text.so: terminal.c
-tilde.so: tilde.c
-undo.so: undo.c
-util.so: util.c
-vi_mode.so: vi_mode.c
-xmalloc.so: xmalloc.c
-
-histexpand.so: histexpand.c
-histfile.so: histfile.c
-history.so: history.c
-histsearch.so: histsearch.c
diff --git a/readline-4.3/signals.c b/readline-4.3/signals.c
deleted file mode 100644
index a73c36d..0000000
--- a/readline-4.3/signals.c
+++ /dev/null
@@ -1,400 +0,0 @@
-/* signals.c -- signal handling support for readline. */
-
-/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <stdio.h> /* Just for NULL. Yuck. */
-#include <sys/types.h>
-#include <signal.h>
-
-#if defined (HAVE_UNISTD_H)
-# include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-
-/* System-specific feature definitions and include files. */
-#include "rldefs.h"
-
-#if defined (GWINSZ_IN_SYS_IOCTL)
-# include <sys/ioctl.h>
-#endif /* GWINSZ_IN_SYS_IOCTL */
-
-#if defined (HANDLE_SIGNALS)
-/* Some standard library routines. */
-#include "readline.h"
-#include "history.h"
-
-#include "rlprivate.h"
-
-#if !defined (RETSIGTYPE)
-# if defined (VOID_SIGHANDLER)
-# define RETSIGTYPE void
-# else
-# define RETSIGTYPE int
-# endif /* !VOID_SIGHANDLER */
-#endif /* !RETSIGTYPE */
-
-#if defined (VOID_SIGHANDLER)
-# define SIGHANDLER_RETURN return
-#else
-# define SIGHANDLER_RETURN return (0)
-#endif
-
-/* This typedef is equivalent to the one for Function; it allows us
- to say SigHandler *foo = signal (SIGKILL, SIG_IGN); */
-typedef RETSIGTYPE SigHandler ();
-
-#if defined (HAVE_POSIX_SIGNALS)
-typedef struct sigaction sighandler_cxt;
-# define rl_sigaction(s, nh, oh) sigaction(s, nh, oh)
-#else
-typedef struct { SigHandler *sa_handler; int sa_mask, sa_flags; } sighandler_cxt;
-# define sigemptyset(m)
-#endif /* !HAVE_POSIX_SIGNALS */
-
-static SigHandler *rl_set_sighandler PARAMS((int, SigHandler *, sighandler_cxt *));
-static void rl_maybe_set_sighandler PARAMS((int, SigHandler *, sighandler_cxt *));
-
-/* Exported variables for use by applications. */
-
-/* If non-zero, readline will install its own signal handlers for
- SIGINT, SIGTERM, SIGQUIT, SIGALRM, SIGTSTP, SIGTTIN, and SIGTTOU. */
-int rl_catch_signals = 1;
-
-/* If non-zero, readline will install a signal handler for SIGWINCH. */
-#ifdef SIGWINCH
-int rl_catch_sigwinch = 1;
-#else
-int rl_catch_sigwinch = 0;
-#endif
-
-static int signals_set_flag;
-static int sigwinch_set_flag;
-
-/* **************************************************************** */
-/* */
-/* Signal Handling */
-/* */
-/* **************************************************************** */
-
-static sighandler_cxt old_int, old_term, old_alrm, old_quit;
-#if defined (SIGTSTP)
-static sighandler_cxt old_tstp, old_ttou, old_ttin;
-#endif
-#if defined (SIGWINCH)
-static sighandler_cxt old_winch;
-#endif
-
-/* Readline signal handler functions. */
-
-static RETSIGTYPE
-rl_signal_handler (sig)
- int sig;
-{
-#if defined (HAVE_POSIX_SIGNALS)
- sigset_t set;
-#else /* !HAVE_POSIX_SIGNALS */
-# if defined (HAVE_BSD_SIGNALS)
- long omask;
-# else /* !HAVE_BSD_SIGNALS */
- sighandler_cxt dummy_cxt; /* needed for rl_set_sighandler call */
-# endif /* !HAVE_BSD_SIGNALS */
-#endif /* !HAVE_POSIX_SIGNALS */
-
- RL_SETSTATE(RL_STATE_SIGHANDLER);
-
-#if !defined (HAVE_BSD_SIGNALS) && !defined (HAVE_POSIX_SIGNALS)
- /* Since the signal will not be blocked while we are in the signal
- handler, ignore it until rl_clear_signals resets the catcher. */
- if (sig == SIGINT || sig == SIGALRM)
- rl_set_sighandler (sig, SIG_IGN, &dummy_cxt);
-#endif /* !HAVE_BSD_SIGNALS && !HAVE_POSIX_SIGNALS */
-
- switch (sig)
- {
- case SIGINT:
- rl_free_line_state ();
- /* FALLTHROUGH */
-
-#if defined (SIGTSTP)
- case SIGTSTP:
- case SIGTTOU:
- case SIGTTIN:
-#endif /* SIGTSTP */
- case SIGALRM:
- case SIGTERM:
- case SIGQUIT:
- rl_cleanup_after_signal ();
-
-#if defined (HAVE_POSIX_SIGNALS)
- sigprocmask (SIG_BLOCK, (sigset_t *)NULL, &set);
- sigdelset (&set, sig);
-#else /* !HAVE_POSIX_SIGNALS */
-# if defined (HAVE_BSD_SIGNALS)
- omask = sigblock (0);
-# endif /* HAVE_BSD_SIGNALS */
-#endif /* !HAVE_POSIX_SIGNALS */
-
-#if defined (__EMX__)
- signal (sig, SIG_ACK);
-#endif
-
- kill (getpid (), sig);
-
- /* Let the signal that we just sent through. */
-#if defined (HAVE_POSIX_SIGNALS)
- sigprocmask (SIG_SETMASK, &set, (sigset_t *)NULL);
-#else /* !HAVE_POSIX_SIGNALS */
-# if defined (HAVE_BSD_SIGNALS)
- sigsetmask (omask & ~(sigmask (sig)));
-# endif /* HAVE_BSD_SIGNALS */
-#endif /* !HAVE_POSIX_SIGNALS */
-
- rl_reset_after_signal ();
- }
-
- RL_UNSETSTATE(RL_STATE_SIGHANDLER);
- SIGHANDLER_RETURN;
-}
-
-#if defined (SIGWINCH)
-static RETSIGTYPE
-rl_sigwinch_handler (sig)
- int sig;
-{
- SigHandler *oh;
-
-#if defined (MUST_REINSTALL_SIGHANDLERS)
- sighandler_cxt dummy_winch;
-
- /* We don't want to change old_winch -- it holds the state of SIGWINCH
- disposition set by the calling application. We need this state
- because we call the application's SIGWINCH handler after updating
- our own idea of the screen size. */
- rl_set_sighandler (SIGWINCH, rl_sigwinch_handler, &dummy_winch);
-#endif
-
- RL_SETSTATE(RL_STATE_SIGHANDLER);
- rl_resize_terminal ();
-
- /* If another sigwinch handler has been installed, call it. */
- oh = (SigHandler *)old_winch.sa_handler;
- if (oh && oh != (SigHandler *)SIG_IGN && oh != (SigHandler *)SIG_DFL)
- (*oh) (sig);
-
- RL_UNSETSTATE(RL_STATE_SIGHANDLER);
- SIGHANDLER_RETURN;
-}
-#endif /* SIGWINCH */
-
-/* Functions to manage signal handling. */
-
-#if !defined (HAVE_POSIX_SIGNALS)
-static int
-rl_sigaction (sig, nh, oh)
- int sig;
- sighandler_cxt *nh, *oh;
-{
- oh->sa_handler = signal (sig, nh->sa_handler);
- return 0;
-}
-#endif /* !HAVE_POSIX_SIGNALS */
-
-/* Set up a readline-specific signal handler, saving the old signal
- information in OHANDLER. Return the old signal handler, like
- signal(). */
-static SigHandler *
-rl_set_sighandler (sig, handler, ohandler)
- int sig;
- SigHandler *handler;
- sighandler_cxt *ohandler;
-{
- sighandler_cxt old_handler;
-#if defined (HAVE_POSIX_SIGNALS)
- struct sigaction act;
-
- act.sa_handler = handler;
- act.sa_flags = 0; /* XXX - should we set SA_RESTART for SIGWINCH? */
- sigemptyset (&act.sa_mask);
- sigemptyset (&ohandler->sa_mask);
- sigaction (sig, &act, &old_handler);
-#else
- old_handler.sa_handler = (SigHandler *)signal (sig, handler);
-#endif /* !HAVE_POSIX_SIGNALS */
-
- /* XXX -- assume we have memcpy */
- /* If rl_set_signals is called twice in a row, don't set the old handler to
- rl_signal_handler, because that would cause infinite recursion. */
- if (handler != rl_signal_handler || old_handler.sa_handler != rl_signal_handler)
- memcpy (ohandler, &old_handler, sizeof (sighandler_cxt));
-
- return (ohandler->sa_handler);
-}
-
-static void
-rl_maybe_set_sighandler (sig, handler, ohandler)
- int sig;
- SigHandler *handler;
- sighandler_cxt *ohandler;
-{
- sighandler_cxt dummy;
- SigHandler *oh;
-
- sigemptyset (&dummy.sa_mask);
- oh = rl_set_sighandler (sig, handler, ohandler);
- if (oh == (SigHandler *)SIG_IGN)
- rl_sigaction (sig, ohandler, &dummy);
-}
-
-int
-rl_set_signals ()
-{
- sighandler_cxt dummy;
- SigHandler *oh;
-
- if (rl_catch_signals && signals_set_flag == 0)
- {
- rl_maybe_set_sighandler (SIGINT, rl_signal_handler, &old_int);
- rl_maybe_set_sighandler (SIGTERM, rl_signal_handler, &old_term);
- rl_maybe_set_sighandler (SIGQUIT, rl_signal_handler, &old_quit);
-
- oh = rl_set_sighandler (SIGALRM, rl_signal_handler, &old_alrm);
- if (oh == (SigHandler *)SIG_IGN)
- rl_sigaction (SIGALRM, &old_alrm, &dummy);
-#if defined (HAVE_POSIX_SIGNALS) && defined (SA_RESTART)
- /* If the application using readline has already installed a signal
- handler with SA_RESTART, SIGALRM will cause reads to be restarted
- automatically, so readline should just get out of the way. Since
- we tested for SIG_IGN above, we can just test for SIG_DFL here. */
- if (oh != (SigHandler *)SIG_DFL && (old_alrm.sa_flags & SA_RESTART))
- rl_sigaction (SIGALRM, &old_alrm, &dummy);
-#endif /* HAVE_POSIX_SIGNALS */
-
-#if defined (SIGTSTP)
- rl_maybe_set_sighandler (SIGTSTP, rl_signal_handler, &old_tstp);
-#endif /* SIGTSTP */
-
-#if defined (SIGTTOU)
- rl_maybe_set_sighandler (SIGTTOU, rl_signal_handler, &old_ttou);
-#endif /* SIGTTOU */
-
-#if defined (SIGTTIN)
- rl_maybe_set_sighandler (SIGTTIN, rl_signal_handler, &old_ttin);
-#endif /* SIGTTIN */
-
- signals_set_flag = 1;
- }
-
-#if defined (SIGWINCH)
- if (rl_catch_sigwinch && sigwinch_set_flag == 0)
- {
- rl_maybe_set_sighandler (SIGWINCH, rl_sigwinch_handler, &old_winch);
- sigwinch_set_flag = 1;
- }
-#endif /* SIGWINCH */
-
- return 0;
-}
-
-int
-rl_clear_signals ()
-{
- sighandler_cxt dummy;
-
- if (rl_catch_signals && signals_set_flag == 1)
- {
- sigemptyset (&dummy.sa_mask);
-
- rl_sigaction (SIGINT, &old_int, &dummy);
- rl_sigaction (SIGTERM, &old_term, &dummy);
- rl_sigaction (SIGQUIT, &old_quit, &dummy);
- rl_sigaction (SIGALRM, &old_alrm, &dummy);
-
-#if defined (SIGTSTP)
- rl_sigaction (SIGTSTP, &old_tstp, &dummy);
-#endif /* SIGTSTP */
-
-#if defined (SIGTTOU)
- rl_sigaction (SIGTTOU, &old_ttou, &dummy);
-#endif /* SIGTTOU */
-
-#if defined (SIGTTIN)
- rl_sigaction (SIGTTIN, &old_ttin, &dummy);
-#endif /* SIGTTIN */
-
- signals_set_flag = 0;
- }
-
-#if defined (SIGWINCH)
- if (rl_catch_sigwinch && sigwinch_set_flag == 1)
- {
- sigemptyset (&dummy.sa_mask);
- rl_sigaction (SIGWINCH, &old_winch, &dummy);
- sigwinch_set_flag = 0;
- }
-#endif
-
- return 0;
-}
-
-/* Clean up the terminal and readline state after catching a signal, before
- resending it to the calling application. */
-void
-rl_cleanup_after_signal ()
-{
- _rl_clean_up_for_exit ();
- (*rl_deprep_term_function) ();
- rl_clear_signals ();
- rl_clear_pending_input ();
-}
-
-/* Reset the terminal and readline state after a signal handler returns. */
-void
-rl_reset_after_signal ()
-{
- (*rl_prep_term_function) (_rl_meta_flag);
- rl_set_signals ();
-}
-
-/* Free up the readline variable line state for the current line (undo list,
- any partial history entry, any keyboard macros in progress, and any
- numeric arguments in process) after catching a signal, before calling
- rl_cleanup_after_signal(). */
-void
-rl_free_line_state ()
-{
- register HIST_ENTRY *entry;
-
- rl_free_undo_list ();
-
- entry = current_history ();
- if (entry)
- entry->data = (char *)NULL;
-
- _rl_kill_kbd_macro ();
- rl_clear_message ();
- _rl_init_argument ();
-}
-
-#endif /* HANDLE_SIGNALS */
diff --git a/readline-4.3/support/config.guess b/readline-4.3/support/config.guess
deleted file mode 100755
index 5668108..0000000
--- a/readline-4.3/support/config.guess
+++ /dev/null
@@ -1,1393 +0,0 @@
-#! /bin/sh
-# Attempt to guess a canonical system name.
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002 Free Software Foundation, Inc.
-
-timestamp='2002-03-20'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# Originally written by Per Bothner <per@bothner.com>.
-# Please send patches to <config-patches@gnu.org>. Submit a context
-# diff and a properly formatted ChangeLog entry.
-#
-# This script attempts to guess a canonical system name similar to
-# config.sub. If it succeeds, it prints the system name on stdout, and
-# exits with 0. Otherwise, it exits with 1.
-#
-# The plan is that this can be called by configure scripts if you
-# don't specify an explicit build system type.
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION]
-
-Output the configuration name of the system \`$me' is run on.
-
-Operation modes:
- -h, --help print this help, then exit
- -t, --time-stamp print date of last modification, then exit
- -v, --version print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.guess ($timestamp)
-
-Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
-Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions. There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
- case $1 in
- --time-stamp | --time* | -t )
- echo "$timestamp" ; exit 0 ;;
- --version | -v )
- echo "$version" ; exit 0 ;;
- --help | --h* | -h )
- echo "$usage"; exit 0 ;;
- -- ) # Stop option processing
- shift; break ;;
- - ) # Use stdin as input.
- break ;;
- -* )
- echo "$me: invalid option $1$help" >&2
- exit 1 ;;
- * )
- break ;;
- esac
-done
-
-if test $# != 0; then
- echo "$me: too many arguments$help" >&2
- exit 1
-fi
-
-
-dummy=dummy-$$
-trap 'rm -f $dummy.c $dummy.o $dummy.rel $dummy; exit 1' 1 2 15
-
-# CC_FOR_BUILD -- compiler used by this script.
-# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
-# use `HOST_CC' if defined, but it is deprecated.
-
-set_cc_for_build='case $CC_FOR_BUILD,$HOST_CC,$CC in
- ,,) echo "int dummy(){}" > $dummy.c ;
- for c in cc gcc c89 c99 ; do
- ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1 ;
- if test $? = 0 ; then
- CC_FOR_BUILD="$c"; break ;
- fi ;
- done ;
- rm -f $dummy.c $dummy.o $dummy.rel ;
- if test x"$CC_FOR_BUILD" = x ; then
- CC_FOR_BUILD=no_compiler_found ;
- fi
- ;;
- ,,*) CC_FOR_BUILD=$CC ;;
- ,*,*) CC_FOR_BUILD=$HOST_CC ;;
-esac'
-
-# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
-# (ghazi@noc.rutgers.edu 1994-08-24)
-if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
- PATH=$PATH:/.attbin ; export PATH
-elif (test -f /usr/5bin/uname) >/dev/null 2>&1 ; then # bash
- PATH=$PATH:/usr/5bin
-fi
-
-UNAME=`(uname) 2>/dev/null` || UNAME=unknown # bash
-UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
-UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
-UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-
-# Note: order is significant - the case branches are not exclusive.
-
-case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
- # NOTE -- begin cases added for bash (mostly legacy) -- NOTE
- mac68k:machten:*:*)
- echo mac68k-apple-machten${UNAME_RELEASE}
- exit 0 ;;
- concurrent*:*:*:*)
- if test "`(/bin/universe) 2>/dev/null`" = att ; then
- echo concurrent-concurrent-sysv3
- else
- echo concurrent-concurrent-bsd
- fi
- exit 0 ;;
- ppc*:SunOS:5.*:*)
- echo ppc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
- sparc:UNIX_SV:4.*:*)
- echo sparc-unknown-sysv${UNAME_RELEASE}
- exit 0 ;;
- mips:UNIX_SV:4.*:*)
- echo mips-mips-sysv${UNAME_RELEASE}
- exit 0 ;;
- mips:OSF*1:*:*)
- echo mips-mips-osf1
- exit 0 ;;
- mips:4.4BSD:*:*)
- echo mips-mips-bsd4.4
- exit 0 ;;
- MIS*:SMP_DC.OSx:*:dcosx) # not the same as below
- echo pyramid-pyramid-sysv4
- exit 0 ;;
- news*:NEWS*:*:*)
- echo mips-sony-newsos${UNAME_RELEASE}
- exit 0 ;;
- *370:AIX:*:*)
- echo ibm370-ibm-aix${UNAME_RELEASE}
- exit 0 ;;
- ksr1:OSF*1:*:*)
- echo ksr1-ksr-osf1
- exit 0 ;;
- esa:OSF*1:*:* | ESA:OSF*:*:*)
- echo esa-ibm-osf1
- exit 0 ;;
- DNP*:DNIX:*:*)
- echo m68k-dnix-sysv
- exit 0 ;;
- *3b2*:*:*:*)
- echo we32k-att-sysv3
- exit 0 ;;
- Alpha*:Windows_NT:*:SP*)
- echo alpha-pc-opennt
- exit 0 ;;
- *:Windows_NT:*:SP*)
- echo i386-pc-opennt
- exit 0 ;;
-
- # NOTE -- end legacy cases added for bash -- NOTE
- *:NetBSD:*:*)
- # NetBSD (nbsd) targets should (where applicable) match one or
- # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
- # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
- # switched to ELF, *-*-netbsd* would select the old
- # object file format. This provides both forward
- # compatibility and a consistent mechanism for selecting the
- # object file format.
- #
- # Note: NetBSD doesn't particularly care about the vendor
- # portion of the name. We always set it to "unknown".
- sysctl="sysctl -n hw.machine_arch"
- UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
- /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
- case "${UNAME_MACHINE_ARCH}" in
- arm*) machine=arm-unknown ;;
- sh3el) machine=shl-unknown ;;
- sh3eb) machine=sh-unknown ;;
- *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
- esac
- # The Operating System including object format, if it has switched
- # to ELF recently, or will in the future.
- case "${UNAME_MACHINE_ARCH}" in
- arm*|i386|m68k|ns32k|sh3*|sparc|vax)
- eval $set_cc_for_build
- if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
- | grep __ELF__ >/dev/null
- then
- # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
- # Return netbsd for either. FIX?
- os=netbsd
- else
- os=netbsdelf
- fi
- ;;
- *)
- os=netbsd
- ;;
- esac
- # The OS release
- release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
- # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
- # contains redundant information, the shorter form:
- # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
- echo "${machine}-${os}${release}"
- exit 0 ;;
- amiga:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- arc:OpenBSD:*:*)
- echo mipsel-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- hp300:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- mac68k:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- macppc:OpenBSD:*:*)
- echo powerpc-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- mvme68k:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- mvme88k:OpenBSD:*:*)
- echo m88k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- mvmeppc:OpenBSD:*:*)
- echo powerpc-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- pmax:OpenBSD:*:*)
- echo mipsel-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- sgi:OpenBSD:*:*)
- echo mipseb-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- sun3:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- vax:OpenBSD:*:*) # bash
- echo vax-dec-openbsd${UNAME_RELEASE}
- exit 0 ;;
- wgrisc:OpenBSD:*:*)
- echo mipsel-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- *:OpenBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- alpha:OSF1:*:*)
- if test $UNAME_RELEASE = "V4.0"; then
- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
- fi
- # A Vn.n version is a released version.
- # A Tn.n version is a released field test version.
- # A Xn.n version is an unreleased experimental baselevel.
- # 1.2 uses "1.2" for uname -r.
- cat <<EOF >$dummy.s
- .data
-\$Lformat:
- .byte 37,100,45,37,120,10,0 # "%d-%x\n"
-
- .text
- .globl main
- .align 4
- .ent main
-main:
- .frame \$30,16,\$26,0
- ldgp \$29,0(\$27)
- .prologue 1
- .long 0x47e03d80 # implver \$0
- lda \$2,-1
- .long 0x47e20c21 # amask \$2,\$1
- lda \$16,\$Lformat
- mov \$0,\$17
- not \$1,\$18
- jsr \$26,printf
- ldgp \$29,0(\$26)
- mov 0,\$16
- jsr \$26,exit
- .end main
-EOF
- eval $set_cc_for_build
- $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
- if test "$?" = 0 ; then
- case `./$dummy` in
- 0-0)
- UNAME_MACHINE="alpha"
- ;;
- 1-0)
- UNAME_MACHINE="alphaev5"
- ;;
- 1-1)
- UNAME_MACHINE="alphaev56"
- ;;
- 1-101)
- UNAME_MACHINE="alphapca56"
- ;;
- 2-303)
- UNAME_MACHINE="alphaev6"
- ;;
- 2-307)
- UNAME_MACHINE="alphaev67"
- ;;
- 2-1307)
- UNAME_MACHINE="alphaev68"
- ;;
- esac
- fi
- rm -f $dummy.s $dummy
- echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- exit 0 ;;
- Alpha\ *:Windows_NT*:*)
- # How do we know it's Interix rather than the generic POSIX subsystem?
- # Should we change UNAME_MACHINE based on the output of uname instead
- # of the specific Alpha model?
- echo alpha-pc-interix
- exit 0 ;;
- 21064:Windows_NT:50:3)
- echo alpha-dec-winnt3.5
- exit 0 ;;
- Amiga*:UNIX_System_V:4.0:*)
- echo m68k-unknown-sysv4
- exit 0;;
- *:[Aa]miga[Oo][Ss]:*:*)
- echo ${UNAME_MACHINE}-unknown-amigaos
- exit 0 ;;
- *:[Mm]orph[Oo][Ss]:*:*)
- echo ${UNAME_MACHINE}-unknown-morphos
- exit 0 ;;
- *:OS/390:*:*)
- echo i370-ibm-openedition
- exit 0 ;;
- arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
- echo arm-acorn-riscix${UNAME_RELEASE}
- exit 0;;
- SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
- echo hppa1.1-hitachi-hiuxmpp
- exit 0;;
- Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
- # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
- if test "`(/bin/universe) 2>/dev/null`" = att ; then
- echo pyramid-pyramid-sysv3
- else
- echo pyramid-pyramid-bsd
- fi
- exit 0 ;;
- NILE*:*:*:dcosx)
- echo pyramid-pyramid-svr4
- exit 0 ;;
- sun4H:SunOS:5.*:*)
- echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
- sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
- echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
- i86pc:SunOS:5.*:*)
- echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
- sun4*:SunOS:6*:*)
- # According to config.sub, this is the proper way to canonicalize
- # SunOS6. Hard to guess exactly what SunOS6 will be like, but
- # it's likely to be more like Solaris than SunOS4.
- echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
- sun4*:SunOS:*:*)
- case "`/usr/bin/arch -k`" in
- Series*|S4*)
- UNAME_RELEASE=`uname -v`
- ;;
- esac
- # Japanese Language versions have a version number like `4.1.3-JL'.
- echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
- exit 0 ;;
- sun3*:SunOS:*:*)
- echo m68k-sun-sunos${UNAME_RELEASE}
- exit 0 ;;
- sun*:*:4.2BSD:*)
- UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
- test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
- case "`/bin/arch`" in
- sun3)
- echo m68k-sun-sunos${UNAME_RELEASE}
- ;;
- sun4)
- echo sparc-sun-sunos${UNAME_RELEASE}
- ;;
- esac
- exit 0 ;;
- aushp:SunOS:*:*)
- echo sparc-auspex-sunos${UNAME_RELEASE}
- exit 0 ;;
- # The situation for MiNT is a little confusing. The machine name
- # can be virtually everything (everything which is not
- # "atarist" or "atariste" at least should have a processor
- # > m68000). The system name ranges from "MiNT" over "FreeMiNT"
- # to the lowercase version "mint" (or "freemint"). Finally
- # the system name "TOS" denotes a system which is actually not
- # MiNT. But MiNT is downward compatible to TOS, so this should
- # be no problem.
- atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
- exit 0 ;;
- atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
- exit 0 ;;
- *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
- exit 0 ;;
- milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
- echo m68k-milan-mint${UNAME_RELEASE}
- exit 0 ;;
- hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
- echo m68k-hades-mint${UNAME_RELEASE}
- exit 0 ;;
- *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
- echo m68k-unknown-mint${UNAME_RELEASE}
- exit 0 ;;
- powerpc:machten:*:*)
- echo powerpc-apple-machten${UNAME_RELEASE}
- exit 0 ;;
- RISC*:Mach:*:*)
- echo mips-dec-mach_bsd4.3
- exit 0 ;;
- RISC*:ULTRIX:*:*)
- echo mips-dec-ultrix${UNAME_RELEASE}
- exit 0 ;;
- VAX*:ULTRIX*:*:*)
- echo vax-dec-ultrix${UNAME_RELEASE}
- exit 0 ;;
- 2020:CLIX:*:* | 2430:CLIX:*:*)
- echo clipper-intergraph-clix${UNAME_RELEASE}
- exit 0 ;;
- mips:*:*:UMIPS | mips:*:*:RISCos)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
-#ifdef __cplusplus
-#include <stdio.h> /* for printf() prototype */
- int main (int argc, char *argv[]) {
-#else
- int main (argc, argv) int argc; char *argv[]; {
-#endif
- #if defined (host_mips) && defined (MIPSEB)
- #if defined (SYSTYPE_SYSV)
- printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
- #endif
- #if defined (SYSTYPE_SVR4)
- printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
- #endif
- #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
- printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
- #endif
- #endif
- exit (-1);
- }
-EOF
- $CC_FOR_BUILD $dummy.c -o $dummy \
- && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
- && rm -f $dummy.c $dummy && exit 0
- rm -f $dummy.c $dummy
- echo mips-mips-riscos${UNAME_RELEASE}
- exit 0 ;;
- Motorola:PowerMAX_OS:*:*)
- echo powerpc-motorola-powermax
- exit 0 ;;
- Night_Hawk:Power_UNIX:*:*)
- echo powerpc-harris-powerunix
- exit 0 ;;
- m88k:CX/UX:7*:*)
- echo m88k-harris-cxux7
- exit 0 ;;
- m88k:*:4*:R4*)
- echo m88k-motorola-sysv4
- exit 0 ;;
- m88k:*:3*:R3*)
- echo m88k-motorola-sysv3
- exit 0 ;;
- AViiON:dgux:*:*)
- # DG/UX returns AViiON for all architectures
- UNAME_PROCESSOR=`/usr/bin/uname -p`
- if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
- then
- if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
- [ ${TARGET_BINARY_INTERFACE}x = x ]
- then
- echo m88k-dg-dgux${UNAME_RELEASE}
- else
- echo m88k-dg-dguxbcs${UNAME_RELEASE}
- fi
- else
- echo i586-dg-dgux${UNAME_RELEASE}
- fi
- exit 0 ;;
- M88*:DolphinOS:*:*) # DolphinOS (SVR3)
- echo m88k-dolphin-sysv3
- exit 0 ;;
- M88*:*:R3*:*)
- # Delta 88k system running SVR3
- echo m88k-motorola-sysv3
- exit 0 ;;
- XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
- echo m88k-tektronix-sysv3
- exit 0 ;;
- Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
- echo m68k-tektronix-bsd
- exit 0 ;;
- *:IRIX*:*:*)
- echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
- exit 0 ;;
- ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
- echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
- exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX '
- i*86:AIX:*:*)
- echo i386-ibm-aix
- exit 0 ;;
- ia64:AIX:*:*)
- if [ -x /usr/bin/oslevel ] ; then
- IBM_REV=`/usr/bin/oslevel`
- else
- IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
- fi
- echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
- exit 0 ;;
- *:AIX:2:3)
- if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #include <sys/systemcfg.h>
-
- main()
- {
- if (!__power_pc())
- exit(1);
- puts("powerpc-ibm-aix3.2.5");
- exit(0);
- }
-EOF
- $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0
- rm -f $dummy.c $dummy
- echo rs6000-ibm-aix3.2.5
- elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
- echo rs6000-ibm-aix3.2.4
- else
- echo rs6000-ibm-aix3.2
- fi
- exit 0 ;;
- *:AIX:*:[45])
- IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
- if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
- IBM_ARCH=rs6000
- else
- IBM_ARCH=powerpc
- fi
- if [ -x /usr/bin/oslevel ] ; then
- IBM_REV=`/usr/bin/oslevel`
- else
- IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
- fi
- echo ${IBM_ARCH}-ibm-aix${IBM_REV}
- exit 0 ;;
- *:AIX:*:*)
- echo rs6000-ibm-aix
- exit 0 ;;
- ibmrt:4.4BSD:*|romp-ibm:BSD:*)
- echo romp-ibm-bsd4.4
- exit 0 ;;
- ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
- echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
- exit 0 ;; # report: romp-ibm BSD 4.3
- *:BOSX:*:*)
- echo rs6000-bull-bosx
- exit 0 ;;
- DPX/2?00:B.O.S.:*:*)
- echo m68k-bull-sysv3
- exit 0 ;;
- 9000/[34]??:4.3bsd:1.*:*)
- echo m68k-hp-bsd
- exit 0 ;;
- hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
- echo m68k-hp-bsd4.4
- exit 0 ;;
- 9000/[34678]??:HP-UX:*:*)
- HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
- case "${UNAME_MACHINE}" in
- 9000/31? ) HP_ARCH=m68000 ;;
- 9000/[34]?? ) HP_ARCH=m68k ;;
- 9000/[678][0-9][0-9])
- if [ -x /usr/bin/getconf ]; then
- sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
- sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
- case "${sc_cpu_version}" in
- 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
- 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
- 532) # CPU_PA_RISC2_0
- case "${sc_kernel_bits}" in
- 32) HP_ARCH="hppa2.0n" ;;
- 64) HP_ARCH="hppa2.0w" ;;
- '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
- esac ;;
- esac
- fi
- if [ "${HP_ARCH}" = "" ]; then
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
-
- #define _HPUX_SOURCE
- #include <stdlib.h>
- #include <unistd.h>
-
- int main ()
- {
- #if defined(_SC_KERNEL_BITS)
- long bits = sysconf(_SC_KERNEL_BITS);
- #endif
- long cpu = sysconf (_SC_CPU_VERSION);
-
- switch (cpu)
- {
- case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
- case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
- case CPU_PA_RISC2_0:
- #if defined(_SC_KERNEL_BITS)
- switch (bits)
- {
- case 64: puts ("hppa2.0w"); break;
- case 32: puts ("hppa2.0n"); break;
- default: puts ("hppa2.0"); break;
- } break;
- #else /* !defined(_SC_KERNEL_BITS) */
- puts ("hppa2.0"); break;
- #endif
- default: puts ("hppa1.0"); break;
- }
- exit (0);
- }
-EOF
- (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null) && HP_ARCH=`./$dummy`
- if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi
- rm -f $dummy.c $dummy
- fi ;;
- esac
- echo ${HP_ARCH}-hp-hpux${HPUX_REV}
- exit 0 ;;
- ia64:HP-UX:*:*)
- HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
- echo ia64-hp-hpux${HPUX_REV}
- exit 0 ;;
- 3050*:HI-UX:*:*)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #include <unistd.h>
- int
- main ()
- {
- long cpu = sysconf (_SC_CPU_VERSION);
- /* The order matters, because CPU_IS_HP_MC68K erroneously returns
- true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
- results, however. */
- if (CPU_IS_PA_RISC (cpu))
- {
- switch (cpu)
- {
- case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
- case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
- case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
- default: puts ("hppa-hitachi-hiuxwe2"); break;
- }
- }
- else if (CPU_IS_HP_MC68K (cpu))
- puts ("m68k-hitachi-hiuxwe2");
- else puts ("unknown-hitachi-hiuxwe2");
- exit (0);
- }
-EOF
- $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0
- rm -f $dummy.c $dummy
- echo unknown-hitachi-hiuxwe2
- exit 0 ;;
- 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
- echo hppa1.1-hp-bsd
- exit 0 ;;
- 9000/8??:4.3bsd:*:*)
- echo hppa1.0-hp-bsd
- exit 0 ;;
- *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
- echo hppa1.0-hp-mpeix
- exit 0 ;;
- hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
- echo hppa1.1-hp-osf
- exit 0 ;;
- hp8??:OSF1:*:*)
- echo hppa1.0-hp-osf
- exit 0 ;;
- i*86:OSF1:*:*)
- if [ -x /usr/sbin/sysversion ] ; then
- echo ${UNAME_MACHINE}-unknown-osf1mk
- else
- echo ${UNAME_MACHINE}-unknown-osf1
- fi
- exit 0 ;;
- parisc*:Lites*:*:*)
- echo hppa1.1-hp-lites
- exit 0 ;;
- C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
- echo c1-convex-bsd
- exit 0 ;;
- C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
- if getsysinfo -f scalar_acc
- then echo c32-convex-bsd
- else echo c2-convex-bsd
- fi
- exit 0 ;;
- C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
- echo c34-convex-bsd
- exit 0 ;;
- C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
- echo c38-convex-bsd
- exit 0 ;;
- C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
- echo c4-convex-bsd
- exit 0 ;;
- CRAY*Y-MP:*:*:*)
- echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
- CRAY*[A-Z]90:*:*:*)
- echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
- | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
- -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
- -e 's/\.[^.]*$/.X/'
- exit 0 ;;
- CRAY*TS:*:*:*)
- echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
- CRAY*T3D:*:*:*)
- echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
- CRAY*T3E:*:*:*)
- echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
- CRAY*SV1:*:*:*)
- echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
- F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
- FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
- echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit 0 ;;
- i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
- echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
- exit 0 ;;
- sparc*:BSD/OS:*:*)
- echo sparc-unknown-bsdi${UNAME_RELEASE}
- exit 0 ;;
- *:BSD/OS:*:*)
- echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
- exit 0 ;;
- *:FreeBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
- exit 0 ;;
- i*:CYGWIN*:*)
- echo ${UNAME_MACHINE}-pc-cygwin
- exit 0 ;;
- i*:MINGW*:*)
- echo ${UNAME_MACHINE}-pc-mingw32
- exit 0 ;;
- i*:PW*:*)
- echo ${UNAME_MACHINE}-pc-pw32
- exit 0 ;;
- x86:Interix*:3*)
- echo i386-pc-interix3
- exit 0 ;;
- i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
- # How do we know it's Interix rather than the generic POSIX subsystem?
- # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
- # UNAME_MACHINE based on the output of uname instead of i386?
- echo i386-pc-interix
- exit 0 ;;
- i*:UWIN*:*)
- echo ${UNAME_MACHINE}-pc-uwin
- exit 0 ;;
- p*:CYGWIN*:*)
- echo powerpcle-unknown-cygwin
- exit 0 ;;
- prep*:SunOS:5.*:*)
- echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
- *:GNU:*:*)
- echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
- exit 0 ;;
- i*86:Minix:*:*)
- echo ${UNAME_MACHINE}-pc-minix
- exit 0 ;;
- arm*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
- ia64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
- m68*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
- mips:Linux:*:*)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #undef CPU
- #undef mips
- #undef mipsel
- #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
- CPU=mipsel
- #else
- #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
- CPU=mips
- #else
- CPU=
- #endif
- #endif
-EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
- rm -f $dummy.c
- test x"${CPU}" != x && echo "${CPU}-pc-linux-gnu" && exit 0
- ;;
- ppc:Linux:*:*)
- echo powerpc-unknown-linux-gnu
- exit 0 ;;
- ppc64:Linux:*:*)
- echo powerpc64-unknown-linux-gnu
- exit 0 ;;
- alpha:Linux:*:*)
- case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
- EV5) UNAME_MACHINE=alphaev5 ;;
- EV56) UNAME_MACHINE=alphaev56 ;;
- PCA56) UNAME_MACHINE=alphapca56 ;;
- PCA57) UNAME_MACHINE=alphapca56 ;;
- EV6) UNAME_MACHINE=alphaev6 ;;
- EV67) UNAME_MACHINE=alphaev67 ;;
- EV68*) UNAME_MACHINE=alphaev68 ;;
- esac
- objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
- if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
- echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
- exit 0 ;;
- parisc:Linux:*:* | hppa:Linux:*:*)
- # Look for CPU level
- case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
- PA7*) echo hppa1.1-unknown-linux-gnu ;;
- PA8*) echo hppa2.0-unknown-linux-gnu ;;
- *) echo hppa-unknown-linux-gnu ;;
- esac
- exit 0 ;;
- parisc64:Linux:*:* | hppa64:Linux:*:*)
- echo hppa64-unknown-linux-gnu
- exit 0 ;;
- s390:Linux:*:* | s390x:Linux:*:*)
- echo ${UNAME_MACHINE}-ibm-linux
- exit 0 ;;
- sh*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
- sparc:Linux:*:* | sparc64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
- x86_64:Linux:*:*)
- echo x86_64-unknown-linux-gnu
- exit 0 ;;
- i*86:Linux:*:*)
- # The BFD linker knows what the default object file format is, so
- # first see if it will tell us. cd to the root directory to prevent
- # problems with other programs or directories called `ld' in the path.
- # Set LC_ALL=C to ensure ld outputs messages in English.
- ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
- | sed -ne '/supported targets:/!d
- s/[ ][ ]*/ /g
- s/.*supported targets: *//
- s/ .*//
- p'`
- case "$ld_supported_targets" in
- elf32-i386)
- TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
- ;;
- a.out-i386-linux)
- echo "${UNAME_MACHINE}-pc-linux-gnuaout"
- exit 0 ;;
- coff-i386)
- echo "${UNAME_MACHINE}-pc-linux-gnucoff"
- exit 0 ;;
- "")
- # Either a pre-BFD a.out linker (linux-gnuoldld) or
- # one that does not give us useful --help.
- echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
- exit 0 ;;
- esac
- # Determine whether the default compiler is a.out or elf
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #include <features.h>
- #ifdef __ELF__
- # ifdef __GLIBC__
- # if __GLIBC__ >= 2
- LIBC=gnu
- # else
- LIBC=gnulibc1
- # endif
- # else
- LIBC=gnulibc1
- # endif
- #else
- #ifdef __INTEL_COMPILER
- LIBC=gnu
- #else
- LIBC=gnuaout
- #endif
- #endif
-EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
- rm -f $dummy.c
- test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
- test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
- ;;
- i*86:DYNIX/ptx:4*:*)
- # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
- # earlier versions are messed up and put the nodename in both
- # sysname and nodename.
- echo i386-sequent-sysv4
- exit 0 ;;
- i*86:UNIX_SV:4.2MP:2.*)
- # Unixware is an offshoot of SVR4, but it has its own version
- # number series starting with 2...
- # I am not positive that other SVR4 systems won't match this,
- # I just have to hope. -- rms.
- # Use sysv4.2uw... so that sysv4* matches it.
- echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
- exit 0 ;;
- i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
- UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
- if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
- echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
- else
- echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
- fi
- exit 0 ;;
- i*86:*:5:[78]*)
- case `/bin/uname -X | grep "^Machine"` in
- *486*) UNAME_MACHINE=i486 ;;
- *Pentium) UNAME_MACHINE=i586 ;;
- *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
- esac
- echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
- exit 0 ;;
- i*86:*:3.2:*)
- if test -f /usr/options/cb.name; then
- UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
- echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
- elif /bin/uname -X 2>/dev/null >/dev/null ; then
- UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')`
- (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
- (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
- && UNAME_MACHINE=i586
- (/bin/uname -X|egrep '^Machine.*Pent ?II' >/dev/null) \
- && UNAME_MACHINE=i686
- (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \
- && UNAME_MACHINE=i686
- echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
- else
- echo ${UNAME_MACHINE}-pc-sysv32
- fi
- exit 0 ;;
- i*86:*DOS:*:*)
- echo ${UNAME_MACHINE}-pc-msdosdjgpp
- exit 0 ;;
- pc:*:*:*)
- # Left here for compatibility:
- # uname -m prints for DJGPP always 'pc', but it prints nothing about
- # the processor, so we play safe by assuming i386.
- echo i386-pc-msdosdjgpp
- exit 0 ;;
- Intel:Mach:3*:*)
- echo i386-pc-mach3
- exit 0 ;;
- paragon:*:*:*)
- echo i860-intel-osf1
- exit 0 ;;
- i860:*:4.*:*) # i860-SVR4
- if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
- echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
- else # Add other i860-SVR4 vendors below as they are discovered.
- echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
- fi
- exit 0 ;;
- mini*:CTIX:SYS*5:*)
- # "miniframe"
- echo m68010-convergent-sysv
- exit 0 ;;
- M68*:*:R3V[567]*:*)
- test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
- 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0)
- OS_REL=''
- test -r /etc/.relid \
- && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && echo i486-ncr-sysv4.3${OS_REL} && exit 0
- /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
- && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;;
- 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && echo i486-ncr-sysv4 && exit 0 ;;
- m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
- echo m68k-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
- mc68030:UNIX_System_V:4.*:*)
- echo m68k-atari-sysv4
- exit 0 ;;
- i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
- echo i386-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
- TSUNAMI:LynxOS:2.*:*)
- echo sparc-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
- rs6000:LynxOS:2.*:*)
- echo rs6000-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
- PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
- echo powerpc-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
- SM[BE]S:UNIX_SV:*:*)
- echo mips-dde-sysv${UNAME_RELEASE}
- exit 0 ;;
- RM*:ReliantUNIX-*:*:*)
- echo mips-sni-sysv4
- exit 0 ;;
- RM*:SINIX-*:*:*)
- echo mips-sni-sysv4
- exit 0 ;;
- *:SINIX-*:*:*)
- if uname -p 2>/dev/null >/dev/null ; then
- UNAME_MACHINE=`(uname -p) 2>/dev/null`
- echo ${UNAME_MACHINE}-sni-sysv4
- else
- echo ns32k-sni-sysv
- fi
- exit 0 ;;
- PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
- # says <Richard.M.Bartel@ccMail.Census.GOV>
- echo i586-unisys-sysv4
- exit 0 ;;
- *:UNIX_System_V:4*:FTX*)
- # From Gerald Hewes <hewes@openmarket.com>.
- # How about differentiating between stratus architectures? -djm
- echo hppa1.1-stratus-sysv4
- exit 0 ;;
- *:*:*:FTX*)
- # From seanf@swdc.stratus.com.
- echo i860-stratus-sysv4
- exit 0 ;;
- *:VOS:*:*)
- # From Paul.Green@stratus.com.
- echo hppa1.1-stratus-vos
- exit 0 ;;
- mc68*:A/UX:*:*)
- echo m68k-apple-aux${UNAME_RELEASE}
- exit 0 ;;
- news*:NEWS-OS:6*:*)
- echo mips-sony-newsos6
- exit 0 ;;
- R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
- if [ -d /usr/nec ]; then
- echo mips-nec-sysv${UNAME_RELEASE}
- else
- echo mips-unknown-sysv${UNAME_RELEASE}
- fi
- exit 0 ;;
- BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
- echo powerpc-be-beos
- exit 0 ;;
- BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
- echo powerpc-apple-beos
- exit 0 ;;
- BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
- echo i586-pc-beos
- exit 0 ;;
- SX-4:SUPER-UX:*:*)
- echo sx4-nec-superux${UNAME_RELEASE}
- exit 0 ;;
- SX-5:SUPER-UX:*:*)
- echo sx5-nec-superux${UNAME_RELEASE}
- exit 0 ;;
- Power*:Rhapsody:*:*)
- echo powerpc-apple-rhapsody${UNAME_RELEASE}
- exit 0 ;;
- *:Rhapsody:*:*)
- echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
- exit 0 ;;
- *:Darwin:*:*)
- echo `uname -p`-apple-darwin${UNAME_RELEASE}
- exit 0 ;;
- *:procnto*:*:* | *:QNX:[0123456789]*:*)
- UNAME_PROCESSOR=`uname -p`
- if test "$UNAME_PROCESSOR" = "x86"; then
- UNAME_PROCESSOR=i386
- UNAME_MACHINE=pc
- fi
- echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
- exit 0 ;;
- *:QNX:*:4*)
- echo i386-pc-qnx
- exit 0 ;;
- NSR-[GKLNPTVW]:NONSTOP_KERNEL:*:*)
- echo nsr-tandem-nsk${UNAME_RELEASE}
- exit 0 ;;
- *:NonStop-UX:*:*)
- echo mips-compaq-nonstopux
- exit 0 ;;
- BS2000:POSIX*:*:*)
- echo bs2000-siemens-sysv
- exit 0 ;;
- DS/*:UNIX_System_V:*:*)
- echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
- exit 0 ;;
- *:Plan9:*:*)
- # "uname -m" is not consistent, so use $cputype instead. 386
- # is converted to i386 for consistency with other x86
- # operating systems.
- if test "$cputype" = "386"; then
- UNAME_MACHINE=i386
- else
- UNAME_MACHINE="$cputype"
- fi
- echo ${UNAME_MACHINE}-unknown-plan9
- exit 0 ;;
- i*86:OS/2:*:*)
- # If we were able to find `uname', then EMX Unix compatibility
- # is probably installed.
- echo ${UNAME_MACHINE}-pc-os2-emx
- exit 0 ;;
- *:TOPS-10:*:*)
- echo pdp10-unknown-tops10
- exit 0 ;;
- *:TENEX:*:*)
- echo pdp10-unknown-tenex
- exit 0 ;;
- KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
- echo pdp10-dec-tops20
- exit 0 ;;
- XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
- echo pdp10-xkl-tops20
- exit 0 ;;
- *:TOPS-20:*:*)
- echo pdp10-unknown-tops20
- exit 0 ;;
- *:ITS:*:*)
- echo pdp10-unknown-its
- exit 0 ;;
- i*86:XTS-300:*:STOP)
- echo ${UNAME_MACHINE}-unknown-stop
- exit 0 ;;
- i*86:atheos:*:*)
- echo ${UNAME_MACHINE}-unknown-atheos
- exit 0 ;;
-esac
-
-#echo '(No uname command or uname output not recognized.)' 1>&2
-#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
-
-eval $set_cc_for_build
-cat >$dummy.c <<EOF
-#ifdef _SEQUENT_
-# include <sys/types.h>
-# include <sys/utsname.h>
-#endif
-main ()
-{
-#if defined (sony)
-#if defined (MIPSEB)
- /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
- I don't know.... */
- printf ("mips-sony-bsd\n"); exit (0);
-#else
-#include <sys/param.h>
- printf ("m68k-sony-newsos%s\n",
-#ifdef NEWSOS4
- "4"
-#else
- ""
-#endif
- ); exit (0);
-#endif
-#endif
-
-#if defined (__arm) && defined (__acorn) && defined (__unix)
- printf ("arm-acorn-riscix"); exit (0);
-#endif
-
-#if defined (hp300) && !defined (hpux)
- printf ("m68k-hp-bsd\n"); exit (0);
-#endif
-
-#if defined (NeXT)
-#if !defined (__ARCHITECTURE__)
-#define __ARCHITECTURE__ "m68k"
-#endif
- int version;
- version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
- if (version < 4)
- printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
- else
- printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
- exit (0);
-#endif
-
-#if defined (MULTIMAX) || defined (n16)
-#if defined (UMAXV)
- printf ("ns32k-encore-sysv\n"); exit (0);
-#else
-#if defined (CMU)
- printf ("ns32k-encore-mach\n"); exit (0);
-#else
- printf ("ns32k-encore-bsd\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (__386BSD__)
- printf ("i386-pc-bsd\n"); exit (0);
-#endif
-
-#if defined (sequent)
-#if defined (i386)
- printf ("i386-sequent-dynix\n"); exit (0);
-#endif
-#if defined (ns32000)
- printf ("ns32k-sequent-dynix\n"); exit (0);
-#endif
-#endif
-
-#if defined (_SEQUENT_)
- struct utsname un;
-
- uname(&un);
-
- if (strncmp(un.version, "V2", 2) == 0) {
- printf ("i386-sequent-ptx2\n"); exit (0);
- }
- if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
- printf ("i386-sequent-ptx1\n"); exit (0);
- }
- printf ("i386-sequent-ptx\n"); exit (0);
-
-#endif
-
-#if defined (vax)
-# if !defined (ultrix)
-# include <sys/param.h>
-# if defined (BSD)
-# if BSD == 43
- printf ("vax-dec-bsd4.3\n"); exit (0);
-# else
-# if BSD == 199006
- printf ("vax-dec-bsd4.3reno\n"); exit (0);
-# else
- printf ("vax-dec-bsd\n"); exit (0);
-# endif
-# endif
-# else
- printf ("vax-dec-bsd\n"); exit (0);
-# endif
-# else
- printf ("vax-dec-ultrix\n"); exit (0);
-# endif
-#endif
-
-#if defined (alliant) && defined (i860)
- printf ("i860-alliant-bsd\n"); exit (0);
-#endif
-
- exit (1);
-}
-EOF
-
-$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm -f $dummy.c $dummy && exit 0
-rm -f $dummy.c $dummy
-
-# Apollos put the system type in the environment.
-
-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; }
-
-# Convex versions that predate uname can use getsysinfo(1)
-
-if [ -x /usr/convex/getsysinfo ]
-then
- case `getsysinfo -f cpu_type` in
- c1*)
- echo c1-convex-bsd
- exit 0 ;;
- c2*)
- if getsysinfo -f scalar_acc
- then echo c32-convex-bsd
- else echo c2-convex-bsd
- fi
- exit 0 ;;
- c34*)
- echo c34-convex-bsd
- exit 0 ;;
- c38*)
- echo c38-convex-bsd
- exit 0 ;;
- c4*)
- echo c4-convex-bsd
- exit 0 ;;
- esac
-fi
-
-# NOTE -- Begin fallback cases added for bash -- NOTE
-case "$UNAME" in
-uts) echo uts-amdahl-sysv${UNAME_RELEASE}; exit 0 ;;
-esac
-
-if [ -f /bin/fxc.info ]; then
- echo fxc-alliant-concentrix
- exit 0
-fi
-# NOTE -- End fallback cases added for bash -- NOTE
-
-cat >&2 <<EOF
-$0: unable to guess system type
-
-This script, last modified $timestamp, has failed to recognize
-the operating system you are using. It is advised that you
-download the most up to date version of the config scripts from
-
- ftp://ftp.gnu.org/pub/gnu/config/
-
-If the version you run ($0) is already up to date, please
-send the following data and any information you think might be
-pertinent to <config-patches@gnu.org> in order to provide the needed
-information to handle your system.
-
-config.guess timestamp = $timestamp
-
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
-/bin/uname -X = `(/bin/uname -X) 2>/dev/null`
-
-hostinfo = `(hostinfo) 2>/dev/null`
-/bin/universe = `(/bin/universe) 2>/dev/null`
-/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null`
-/bin/arch = `(/bin/arch) 2>/dev/null`
-/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
-
-UNAME_MACHINE = ${UNAME_MACHINE}
-UNAME_RELEASE = ${UNAME_RELEASE}
-UNAME_SYSTEM = ${UNAME_SYSTEM}
-UNAME_VERSION = ${UNAME_VERSION}
-EOF
-
-exit 1
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/readline-4.3/support/config.sub b/readline-4.3/support/config.sub
deleted file mode 100644
index 710b22c..0000000
--- a/readline-4.3/support/config.sub
+++ /dev/null
@@ -1,1498 +0,0 @@
-#! /bin/sh
-# Configuration validation subroutine script.
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002 Free Software Foundation, Inc.
-
-timestamp='2002-03-07'
-
-# This file is (in principle) common to ALL GNU software.
-# The presence of a machine in this file suggests that SOME GNU software
-# can handle that machine. It does not imply ALL GNU software can.
-#
-# This file is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# Please send patches to <config-patches@gnu.org>. Submit a context
-# diff and a properly formatted ChangeLog entry.
-#
-# Configuration subroutine to validate and canonicalize a configuration type.
-# Supply the specified configuration type as an argument.
-# If it is invalid, we print an error message on stderr and exit with code 1.
-# Otherwise, we print the canonical config type on stdout and succeed.
-
-# This file is supposed to be the same for all GNU packages
-# and recognize all the CPU types, system types and aliases
-# that are meaningful with *any* GNU software.
-# Each package is responsible for reporting which valid configurations
-# it does not support. The user should be able to distinguish
-# a failure to support a valid configuration from a meaningless
-# configuration.
-
-# The goal of this file is to map all the various variations of a given
-# machine specification into a single specification in the form:
-# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or in some cases, the newer four-part form:
-# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-# It is wrong to echo any other type of specification.
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION] CPU-MFR-OPSYS
- $0 [OPTION] ALIAS
-
-Canonicalize a configuration name.
-
-Operation modes:
- -h, --help print this help, then exit
- -t, --time-stamp print date of last modification, then exit
- -v, --version print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.sub ($timestamp)
-
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
-Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions. There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
- case $1 in
- --time-stamp | --time* | -t )
- echo "$timestamp" ; exit 0 ;;
- --version | -v )
- echo "$version" ; exit 0 ;;
- --help | --h* | -h )
- echo "$usage"; exit 0 ;;
- -- ) # Stop option processing
- shift; break ;;
- - ) # Use stdin as input.
- break ;;
- -* )
- echo "$me: invalid option $1$help"
- exit 1 ;;
-
- *local*)
- # First pass through any local machine types.
- echo $1
- exit 0;;
-
- * )
- break ;;
- esac
-done
-
-case $# in
- 0) echo "$me: missing argument$help" >&2
- exit 1;;
- 1) ;;
- *) echo "$me: too many arguments$help" >&2
- exit 1;;
-esac
-
-# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
-# Here we must recognize all the valid KERNEL-OS combinations.
-maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
-case $maybe_os in
- nto-qnx* | linux-gnu* | storm-chaos* | os2-emx* | windows32-* | rtmk-nova*)
- os=-$maybe_os
- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
- ;;
- *)
- basic_machine=`echo $1 | sed 's/-[^-]*$//'`
- if [ $basic_machine != $1 ]
- then os=`echo $1 | sed 's/.*-/-/'`
- else os=; fi
- ;;
-esac
-
-### Let's recognize common machines as not being operating systems so
-### that things like config.sub decstation-3100 work. We also
-### recognize some manufacturers as not being operating systems, so we
-### can provide default operating systems below.
-case $os in
- -sun*os*)
- # Prevent following clause from handling this invalid input.
- ;;
- -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
- -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
- -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
- -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
- -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
- -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
- -apple | -axis)
- os=
- basic_machine=$1
- ;;
- -sim | -cisco | -oki | -wec | -winbond)
- os=
- basic_machine=$1
- ;;
- -scout)
- ;;
- -wrs)
- os=-vxworks
- basic_machine=$1
- ;;
- -chorusos*)
- os=-chorusos
- basic_machine=$1
- ;;
- -chorusrdb)
- os=-chorusrdb
- basic_machine=$1
- ;;
- -hiux*)
- os=-hiuxwe2
- ;;
- -sco5)
- os=-sco3.2v5
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco4)
- os=-sco3.2v4
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco3.2.[4-9]*)
- os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco3.2v[4-9]*)
- # Don't forget version if it is 3.2v4 or newer.
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco*)
- os=-sco3.2v2
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -udk*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -isc)
- os=-isc2.2
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -clix*)
- basic_machine=clipper-intergraph
- ;;
- -isc*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -lynx*)
- os=-lynxos
- ;;
- -ptx*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
- ;;
- -windowsnt*)
- os=`echo $os | sed -e 's/windowsnt/winnt/'`
- ;;
- -psos*)
- os=-psos
- ;;
- -mint | -mint[0-9]*)
- basic_machine=m68k-atari
- os=-mint
- ;;
-esac
-
-# Decode aliases for certain CPU-COMPANY combinations.
-case $basic_machine in
- # Recognize the basic CPU types without company name.
- # Some are omitted here because they have special meanings below.
- 1750a | 580 \
- | a29k \
- | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
- | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
- | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
- | bfin \
- | c4x | clipper \
- | d10v | d30v | dsp16xx \
- | fr30 \
- | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
- | i370 | i860 | i960 | ia64 \
- | m32r | m68000 | m68k | m88k | mcore \
- | mips | mips16 | mips64 | mips64el | mips64orion | mips64orionel \
- | mips64vr4100 | mips64vr4100el | mips64vr4300 \
- | mips64vr4300el | mips64vr5000 | mips64vr5000el \
- | mipsbe | mipseb | mipsel | mipsle | mipstx39 | mipstx39el \
- | mipsisa32 | mipsisa64 \
- | mn10200 | mn10300 \
- | ns16k | ns32k \
- | openrisc | or32 \
- | pdp10 | pdp11 | pj | pjl \
- | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
- | pyramid \
- | sh | sh[34] | sh[34]eb | shbe | shle | sh64 \
- | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \
- | strongarm \
- | tahoe | thumb | tic80 | tron \
- | v850 | v850e \
- | we32k \
- | x86 | xscale | xstormy16 | xtensa \
- | z8k)
- basic_machine=$basic_machine-unknown
- ;;
- m6811 | m68hc11 | m6812 | m68hc12)
- # Motorola 68HC11/12.
- basic_machine=$basic_machine-unknown
- os=-none
- ;;
- m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
- ;;
-
- # We use `pc' rather than `unknown'
- # because (1) that's what they normally are, and
- # (2) the word "unknown" tends to confuse beginning users.
- i*86 | x86_64)
- basic_machine=$basic_machine-pc
- ;;
- # Object if more than one company name word.
- *-*-*)
- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
- exit 1
- ;;
- # Recognize the basic CPU types with company name.
- 580-* \
- | a29k-* \
- | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
- | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
- | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
- | arm-* | armbe-* | armle-* | armv*-* \
- | avr-* \
- | bs2000-* \
- | c[123]* | c30-* | [cjt]90-* | c54x-* \
- | clipper-* | cydra-* \
- | d10v-* | d30v-* \
- | elxsi-* \
- | f30[01]-* | f700-* | fr30-* | fx80-* \
- | h8300-* | h8500-* \
- | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
- | i*86-* | i860-* | i960-* | ia64-* \
- | m32r-* \
- | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
- | m88110-* | m88k-* | mcore-* \
- | mips-* | mips16-* | mips64-* | mips64el-* | mips64orion-* \
- | mips64orionel-* | mips64vr4100-* | mips64vr4100el-* \
- | mips64vr4300-* | mips64vr4300el-* | mipsbe-* | mipseb-* \
- | mipsle-* | mipsel-* | mipstx39-* | mipstx39el-* \
- | none-* | np1-* | ns16k-* | ns32k-* \
- | orion-* \
- | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
- | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
- | pyramid-* \
- | romp-* | rs6000-* \
- | sh-* | sh[34]-* | sh[34]eb-* | shbe-* | shle-* | sh64-* \
- | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
- | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
- | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \
- | v850-* | v850e-* | vax-* \
- | we32k-* \
- | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \
- | xtensa-* \
- | ymp-* \
- | z8k-*)
- ;;
-
- # NOTE -- BEGIN cases added for Bash -- NOTE
- butterfly-bbn* | cadmus-* | ews*-nec | masscomp-masscomp \
- | tandem-* | symmetric-* | drs6000-icl | *-*ardent | concurrent-* \
- | ksr1-* | esa-ibm | fxc-alliant | *370-amdahl | sx[45]*-nec )
- ;;
- # NOTE -- END cases added for Bash -- NOTE
-
- # Recognize the various machine names and aliases which stand
- # for a CPU type and a company and sometimes even an OS.
- 386bsd)
- basic_machine=i386-unknown
- os=-bsd
- ;;
- 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
- basic_machine=m68000-att
- ;;
- 3b*)
- basic_machine=we32k-att
- ;;
- a29khif)
- basic_machine=a29k-amd
- os=-udi
- ;;
- adobe68k)
- basic_machine=m68010-adobe
- os=-scout
- ;;
- alliant | fx80)
- basic_machine=fx80-alliant
- ;;
- altos | altos3068)
- basic_machine=m68k-altos
- ;;
- am29k)
- basic_machine=a29k-none
- os=-bsd
- ;;
- amdahl)
- basic_machine=580-amdahl
- os=-sysv
- ;;
- amiga | amiga-*)
- basic_machine=m68k-unknown
- ;;
- amigaos | amigados)
- basic_machine=m68k-unknown
- os=-amigaos
- ;;
- amigaunix | amix)
- basic_machine=m68k-unknown
- os=-sysv4
- ;;
- apollo68)
- basic_machine=m68k-apollo
- os=-sysv
- ;;
- apollo68bsd)
- basic_machine=m68k-apollo
- os=-bsd
- ;;
- aux)
- basic_machine=m68k-apple
- os=-aux
- ;;
- balance)
- basic_machine=ns32k-sequent
- os=-dynix
- ;;
- c90)
- basic_machine=c90-cray
- os=-unicos
- ;;
- convex-c1)
- basic_machine=c1-convex
- os=-bsd
- ;;
- convex-c2)
- basic_machine=c2-convex
- os=-bsd
- ;;
- convex-c32)
- basic_machine=c32-convex
- os=-bsd
- ;;
- convex-c34)
- basic_machine=c34-convex
- os=-bsd
- ;;
- convex-c38)
- basic_machine=c38-convex
- os=-bsd
- ;;
- cray | j90)
- basic_machine=j90-cray
- os=-unicos
- ;;
- crds | unos)
- basic_machine=m68k-crds
- ;;
- cris | cris-* | etrax*)
- basic_machine=cris-axis
- ;;
- da30 | da30-*)
- basic_machine=m68k-da30
- ;;
- decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
- basic_machine=mips-dec
- ;;
- decsystem10* | dec10*)
- basic_machine=pdp10-dec
- os=-tops10
- ;;
- decsystem20* | dec20*)
- basic_machine=pdp10-dec
- os=-tops20
- ;;
- delta | 3300 | motorola-3300 | motorola-delta \
- | 3300-motorola | delta-motorola)
- basic_machine=m68k-motorola
- ;;
- delta88)
- basic_machine=m88k-motorola
- os=-sysv3
- ;;
- dpx20 | dpx20-*)
- basic_machine=rs6000-bull
- os=-bosx
- ;;
- dpx2* | dpx2*-bull)
- basic_machine=m68k-bull
- os=-sysv3
- ;;
- ebmon29k)
- basic_machine=a29k-amd
- os=-ebmon
- ;;
- elxsi)
- basic_machine=elxsi-elxsi
- os=-bsd
- ;;
- encore | umax | mmax | multimax) # bash
- basic_machine=ns32k-encore
- ;;
- es1800 | OSE68k | ose68k | ose | OSE)
- basic_machine=m68k-ericsson
- os=-ose
- ;;
- fx2800)
- basic_machine=i860-alliant
- ;;
- genix)
- basic_machine=ns32k-ns
- ;;
- gmicro)
- basic_machine=tron-gmicro
- os=-sysv
- ;;
- go32)
- basic_machine=i386-pc
- os=-go32
- ;;
- h3050r* | hiux*)
- basic_machine=hppa1.1-hitachi
- os=-hiuxwe2
- ;;
- h8300hms)
- basic_machine=h8300-hitachi
- os=-hms
- ;;
- h8300xray)
- basic_machine=h8300-hitachi
- os=-xray
- ;;
- h8500hms)
- basic_machine=h8500-hitachi
- os=-hms
- ;;
- harris)
- basic_machine=m88k-harris
- os=-sysv3
- ;;
- hbullx20-bull)
- basic_machine=m68k-bull # bash
- ;;
- hp300-*)
- basic_machine=m68k-hp
- ;;
- hp300bsd)
- basic_machine=m68k-hp
- os=-bsd
- ;;
- hp300hpux)
- basic_machine=m68k-hp
- os=-hpux
- ;;
- hp3k9[0-9][0-9] | hp9[0-9][0-9])
- basic_machine=hppa1.0-hp
- ;;
- hp9k2[0-9][0-9] | hp9k31[0-9])
- basic_machine=m68000-hp
- ;;
- hp9k3[2-9][0-9])
- basic_machine=m68k-hp
- ;;
- hp9k6[0-9][0-9] | hp6[0-9][0-9])
- basic_machine=hppa1.0-hp
- ;;
- hp9k7[0-79][0-9] | hp7[0-79][0-9])
- basic_machine=hppa1.1-hp
- ;;
- hp9k78[0-9] | hp78[0-9])
- # FIXME: really hppa2.0-hp
- basic_machine=hppa1.1-hp
- ;;
- hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
- # FIXME: really hppa2.0-hp
- basic_machine=hppa1.1-hp
- ;;
- hp9k8[0-9][13679] | hp8[0-9][13679])
- basic_machine=hppa1.1-hp
- ;;
- hp9k8[0-9][0-9] | hp8[0-9][0-9])
- basic_machine=hppa1.0-hp
- ;;
- hppa-next)
- os=-nextstep3
- ;;
- hppaosf)
- basic_machine=hppa1.1-hp
- os=-osf
- ;;
- hppro)
- basic_machine=hppa1.1-hp
- os=-proelf
- ;;
- ibm032-*)
- basic_machine=ibmrt-ibm # bash
- ;;
- i370-ibm* | ibm*)
- basic_machine=i370-ibm
- ;;
-# I'm not sure what "Sysv32" means. Should this be sysv3.2?
- i*86v32)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv32
- ;;
- i*86v4*)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv4
- ;;
- i*86v)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv
- ;;
- i*86sol2)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-solaris2
- ;;
- i386-go32)
- basic_machine=i386-pc # bash
- os=-go32
- ;;
- i386-mingw32)
- basic_machine=i386-pc # bash
- os=-mingw32
- ;;
- i386mach)
- basic_machine=i386-mach
- os=-mach
- ;;
- i386-vsta | vsta)
- basic_machine=i386-unknown
- os=-vsta
- ;;
- iris | iris4d)
- basic_machine=mips-sgi
- case $os in
- -irix*)
- ;;
- *)
- os=-irix4
- ;;
- esac
- ;;
- isi68 | isi)
- basic_machine=m68k-isi
- os=-sysv
- ;;
- luna88k-omron* | m88k-omron*) # bash
- basic_machine=m88k-omron
- ;;
- magicstation*)
- basic_machine=magicstation-unknown # bash
- ;;
- magnum | m3230)
- basic_machine=mips-mips
- os=-sysv
- ;;
- merlin)
- basic_machine=ns32k-utek
- os=-sysv
- ;;
- mingw32)
- basic_machine=i386-pc
- os=-mingw32
- ;;
- miniframe)
- basic_machine=m68000-convergent
- ;;
- *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
- basic_machine=m68k-atari
- os=-mint
- ;;
- mips3*-*)
- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
- ;;
- mips3*)
- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
- ;;
- mmix*)
- basic_machine=mmix-knuth
- os=-mmixware
- ;;
- monitor)
- basic_machine=m68k-rom68k
- os=-coff
- ;;
- morphos)
- basic_machine=powerpc-unknown
- os=-morphos
- ;;
- msdos)
- basic_machine=i386-pc
- os=-msdos
- ;;
- mvs)
- basic_machine=i370-ibm
- os=-mvs
- ;;
- ncr3000)
- basic_machine=i486-ncr
- os=-sysv4
- ;;
- netbsd386)
- basic_machine=i386-unknown
- os=-netbsd
- ;;
- netwinder)
- basic_machine=armv4l-rebel
- os=-linux
- ;;
- news | news700 | news800 | news900)
- basic_machine=m68k-sony
- os=-newsos
- ;;
- news1000)
- basic_machine=m68030-sony
- os=-newsos
- ;;
- news-3600 | risc-news)
- basic_machine=mips-sony
- os=-newsos
- ;;
- necv70)
- basic_machine=v70-nec
- os=-sysv
- ;;
- next | m*-next )
- basic_machine=m68k-next
- case $os in
- -nextstep* )
- ;;
- -ns2*)
- os=-nextstep2
- ;;
- *)
- os=-nextstep3
- ;;
- esac
- ;;
- nh3000)
- basic_machine=m68k-harris
- os=-cxux
- ;;
- nh[45]000)
- basic_machine=m88k-harris
- os=-cxux
- ;;
- nindy960)
- basic_machine=i960-intel
- os=-nindy
- ;;
- mon960)
- basic_machine=i960-intel
- os=-mon960
- ;;
- nonstopux)
- basic_machine=mips-compaq
- os=-nonstopux
- ;;
- np1)
- basic_machine=np1-gould
- ;;
- nsr-tandem)
- basic_machine=nsr-tandem
- ;;
- odt | odt3 | odt4) # SCO Open Desktop
- basic_machine=i386-pc # bash
- os=-sco3.2v4
- ;;
- op50n-* | op60c-*)
- basic_machine=hppa1.1-oki
- os=-proelf
- ;;
- or32 | or32-*)
- basic_machine=or32-unknown
- os=-coff
- ;;
- OSE68000 | ose68000)
- basic_machine=m68000-ericsson
- os=-ose
- ;;
- osr5 | sco5) # SCO Open Server
- basic_machine=i386-pc # bash
- os=-sco3.2v5
- ;;
- os68k)
- basic_machine=m68k-none
- os=-os68k
- ;;
- pa-hitachi)
- basic_machine=hppa1.1-hitachi
- os=-hiuxwe2
- ;;
- paragon)
- basic_machine=i860-intel
- os=-osf
- ;;
- pbd)
- basic_machine=sparc-tti
- ;;
- pbb)
- basic_machine=m68k-tti
- ;;
- pc532 | pc532-*)
- basic_machine=ns32k-pc532
- ;;
- pentium | p5 | k5 | k6 | nexgen | viac3)
- basic_machine=i586-pc
- ;;
- pentiumpro | p6 | 6x86 | athlon)
- basic_machine=i686-pc
- ;;
- pentiumii | pentium2)
- basic_machine=i686-pc
- ;;
- pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
- basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentiumpro-* | p6-* | 6x86-* | athlon-*)
- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentiumii-* | pentium2-*)
- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pn)
- basic_machine=pn-gould
- ;;
- power) basic_machine=power-ibm
- ;;
- ppc) basic_machine=powerpc-unknown
- ;;
- ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppcle | powerpclittle | ppc-le | powerpc-little)
- basic_machine=powerpcle-unknown
- ;;
- ppcle-* | powerpclittle-*)
- basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppc64) basic_machine=powerpc64-unknown
- ;;
- ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppc64le | powerpc64little | ppc64-le | powerpc64-little)
- basic_machine=powerpc64le-unknown
- ;;
- ppc64le-* | powerpc64little-*)
- basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ps2)
- basic_machine=i386-ibm
- ;;
- pw32)
- basic_machine=i586-unknown
- os=-pw32
- ;;
- rom68k)
- basic_machine=m68k-rom68k
- os=-coff
- ;;
- rm[46]00)
- basic_machine=mips-siemens
- ;;
- rtpc | rtpc-*)
- basic_machine=romp-ibm
- ;;
- s390 | s390-*)
- basic_machine=s390-ibm
- ;;
- s390x | s390x-*)
- basic_machine=s390x-ibm
- ;;
- sa29200)
- basic_machine=a29k-amd
- os=-udi
- ;;
- sequent)
- basic_machine=i386-sequent
- ;;
- sh)
- basic_machine=sh-hitachi
- os=-hms
- ;;
- sparclite-wrs | simso-wrs)
- basic_machine=sparclite-wrs
- os=-vxworks
- ;;
- sps7)
- basic_machine=m68k-bull
- os=-sysv2
- ;;
- spur)
- basic_machine=spur-unknown
- ;;
- st2000)
- basic_machine=m68k-tandem
- ;;
- stratus)
- basic_machine=i860-stratus
- os=-sysv4
- ;;
- sun2)
- basic_machine=m68000-sun
- ;;
- sun2os3)
- basic_machine=m68000-sun
- os=-sunos3
- ;;
- sun2os4)
- basic_machine=m68000-sun
- os=-sunos4
- ;;
- sun3os3)
- basic_machine=m68k-sun
- os=-sunos3
- ;;
- sun3os4)
- basic_machine=m68k-sun
- os=-sunos4
- ;;
- sun4os3)
- basic_machine=sparc-sun
- os=-sunos3
- ;;
- sun4os4)
- basic_machine=sparc-sun
- os=-sunos4
- ;;
- sun4sol2)
- basic_machine=sparc-sun
- os=-solaris2
- ;;
- sun3 | sun3-*)
- basic_machine=m68k-sun
- ;;
- sun4)
- basic_machine=sparc-sun
- ;;
- sun386 | sun386i | roadrunner)
- basic_machine=i386-sun
- ;;
- sv1)
- basic_machine=sv1-cray
- os=-unicos
- ;;
- symmetry)
- basic_machine=i386-sequent
- os=-dynix
- ;;
- t3d)
- basic_machine=alpha-cray
- os=-unicos
- ;;
- t3e)
- basic_machine=alphaev5-cray
- os=-unicos
- ;;
- t90)
- basic_machine=t90-cray
- os=-unicos
- ;;
- tic54x | c54x*)
- basic_machine=tic54x-unknown
- os=-coff
- ;;
- tx39)
- basic_machine=mipstx39-unknown
- ;;
- tx39el)
- basic_machine=mipstx39el-unknown
- ;;
- toad1)
- basic_machine=pdp10-xkl
- os=-tops20
- ;;
- tower | tower-32)
- basic_machine=m68k-ncr
- ;;
- udi29k)
- basic_machine=a29k-amd
- os=-udi
- ;;
- ultra3)
- basic_machine=a29k-nyu
- os=-sym1
- ;;
- uw2 | unixware | unixware2) # bash
- basic_machine=i386-pc
- os=-sysv4.2uw2.1
- ;;
- uw7 | unixware7) # bash
- basic_machine=i386-pc
- os=-sysv5uw7
- ;;
- v810 | necv810)
- basic_machine=v810-nec
- os=-none
- ;;
- vaxv)
- basic_machine=vax-dec
- os=-sysv
- ;;
- vms)
- basic_machine=vax-dec
- os=-vms
- ;;
- vpp*|vx|vx-*)
- basic_machine=f301-fujitsu
- ;;
- vxworks960)
- basic_machine=i960-wrs
- os=-vxworks
- ;;
- vxworks68)
- basic_machine=m68k-wrs
- os=-vxworks
- ;;
- vxworks29k)
- basic_machine=a29k-wrs
- os=-vxworks
- ;;
- w65*)
- basic_machine=w65-wdc
- os=-none
- ;;
- w89k-*)
- basic_machine=hppa1.1-winbond
- os=-proelf
- ;;
- windows32)
- basic_machine=i386-pc
- os=-windows32-msvcrt
- ;;
- xps | xps100)
- basic_machine=xps100-honeywell
- ;;
- ymp)
- basic_machine=ymp-cray
- os=-unicos
- ;;
- z8k-*-coff)
- basic_machine=z8k-unknown
- os=-sim
- ;;
- none)
- basic_machine=none-none
- os=-none
- ;;
-
-# Here we handle the default manufacturer of certain CPU types. It is in
-# some cases the only manufacturer, in others, it is the most popular.
- w89k)
- basic_machine=hppa1.1-winbond
- ;;
- op50n)
- basic_machine=hppa1.1-oki
- ;;
- op60c)
- basic_machine=hppa1.1-oki
- ;;
- romp)
- basic_machine=romp-ibm
- ;;
- rs6000)
- basic_machine=rs6000-ibm
- ;;
- vax)
- basic_machine=vax-dec
- ;;
- pdp10)
- # there are many clones, so DEC is not a safe bet
- basic_machine=pdp10-unknown
- ;;
- pdp11)
- basic_machine=pdp11-dec
- ;;
- we32k)
- basic_machine=we32k-att
- ;;
- sh3 | sh4 | sh3eb | sh4eb)
- basic_machine=sh-unknown
- ;;
- sh64)
- basic_machine=sh64-unknown
- ;;
- sparc | sparcv9 | sparcv9b)
- basic_machine=sparc-sun
- ;;
- cydra)
- basic_machine=cydra-cydrome
- ;;
- orion)
- basic_machine=orion-highlevel
- ;;
- orion105)
- basic_machine=clipper-highlevel
- ;;
- mac | mpw | mac-mpw)
- basic_machine=m68k-apple
- ;;
- pmac | pmac-mpw)
- basic_machine=powerpc-apple
- ;;
- c4x*)
- basic_machine=c4x-none
- os=-coff
- ;;
- *-unknown)
- # Make sure to match an already-canonicalized machine name.
- ;;
- *)
- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
- exit 1
- ;;
-esac
-
-# Here we canonicalize certain aliases for manufacturers.
-case $basic_machine in
- *-digital*)
- basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
- ;;
- *-commodore*)
- basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
- ;;
- *)
- ;;
-esac
-
-# Decode manufacturer-specific aliases for certain operating systems.
-
-if [ x"$os" != x"" ]
-then
-case $os in
- # First match some system type aliases
- # that might get confused with valid system types.
- # -solaris* is a basic system type, with this one exception.
- -solaris1 | -solaris1.*)
- os=`echo $os | sed -e 's|solaris1|sunos4|'`
- ;;
- -solaris)
- os=-solaris2
- ;;
- -svr4*)
- os=-sysv4
- ;;
- -unixware7*) # bash
- os=-sysv5uw7
- ;;
- -unixware*)
- os=-sysv4.2uw
- ;;
- -gnu/linux*)
- os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
- ;;
- # First accept the basic system types.
- # The portable systems comes first.
- # Each alternative MUST END IN A *, to match a version number.
- # -sysv* is not here because it comes later, after sysvr4.
- -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
- | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
- | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
- | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
- | -aos* \
- | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
- | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
- | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \
- | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
- | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
- | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
- | -chorusos* | -chorusrdb* \
- | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
- | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \
- | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
- | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
- | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
- | -morphos* | -superux* | -rtmk* | -rtmk-nova*)
- # Remember, each alternative MUST END IN *, to match a version number.
- ;;
- # NOTE -- BEGIN CASES ADDED FOR Bash -- NOTE
- -powerux* | -superux*)
- ;;
- # NOTE -- END CASES ADDED FOR Bash -- NOTE
- -qnx*)
- case $basic_machine in
- x86-* | i*86-*)
- ;;
- *)
- os=-nto$os
- ;;
- esac
- ;;
- -nto*)
- os=-nto-qnx
- ;;
- -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
- | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
- | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
- ;;
- -mac*)
- os=`echo $os | sed -e 's|mac|macos|'`
- ;;
- -linux*)
- os=`echo $os | sed -e 's|linux|linux-gnu|'`
- ;;
- -sunos5*)
- os=`echo $os | sed -e 's|sunos5|solaris2|'`
- ;;
- -sunos6*)
- os=`echo $os | sed -e 's|sunos6|solaris3|'`
- ;;
- -opened*)
- os=-openedition
- ;;
- -wince*)
- os=-wince
- ;;
- -osfrose*)
- os=-osfrose
- ;;
- -osf*)
- os=-osf
- ;;
- -utek*)
- os=-bsd
- ;;
- -dynix*)
- os=-bsd
- ;;
- -acis*)
- os=-aos
- ;;
- -atheos*)
- os=-atheos
- ;;
- -386bsd)
- os=-bsd
- ;;
- -ctix* | -uts*)
- os=-sysv
- ;;
- -nova*)
- os=-rtmk-nova
- ;;
- -ns2 )
- os=-nextstep2
- ;;
- -nsk*)
- os=-nsk
- ;;
- # Preserve the version number of sinix5.
- -sinix5.*)
- os=`echo $os | sed -e 's|sinix|sysv|'`
- ;;
- -sinix*)
- os=-sysv4
- ;;
- -triton*)
- os=-sysv3
- ;;
- -oss*)
- os=-sysv3
- ;;
- -svr4)
- os=-sysv4
- ;;
- -svr3)
- os=-sysv3
- ;;
- -sysvr4)
- os=-sysv4
- ;;
- -sysvr5) # bash
- os=-sysv5
- ;;
- # This must come after -sysvr4.
- -sysv*)
- ;;
- -ose*)
- os=-ose
- ;;
- -es1800*)
- os=-ose
- ;;
- -xenix)
- os=-xenix
- ;;
- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
- os=-mint
- ;;
- -none)
- ;;
- *)
- # Get rid of the `-' at the beginning of $os.
- os=`echo $os | sed 's/[^-]*-//'`
- echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
- exit 1
- ;;
-esac
-else
-
-# Here we handle the default operating systems that come with various machines.
-# The value should be what the vendor currently ships out the door with their
-# machine or put another way, the most popular os provided with the machine.
-
-# Note that if you're going to try to match "-MANUFACTURER" here (say,
-# "-sun"), then you have to tell the case statement up towards the top
-# that MANUFACTURER isn't an operating system. Otherwise, code above
-# will signal an error saying that MANUFACTURER isn't an operating
-# system, and we'll never get to this point.
-
-case $basic_machine in
- *-acorn)
- os=-riscix1.2
- ;;
- arm*-rebel)
- os=-linux
- ;;
- arm*-semi)
- os=-aout
- ;;
- # This must come before the *-dec entry.
- pdp10-*)
- os=-tops20
- ;;
- pdp11-*)
- os=-none
- ;;
- *-dec | vax-*)
- os=-ultrix4.2
- ;;
- m68*-apollo)
- os=-domain
- ;;
- i386-sun)
- os=-sunos4.0.2
- ;;
- m68000-sun)
- os=-sunos3
- # This also exists in the configure program, but was not the
- # default.
- # os=-sunos4
- ;;
- m68*-cisco)
- os=-aout
- ;;
- mips*-cisco)
- os=-elf
- ;;
- mips*-*)
- os=-elf
- ;;
- or32-*)
- os=-coff
- ;;
- *-tti) # must be before sparc entry or we get the wrong os.
- os=-sysv3
- ;;
- sparc-* | *-sun)
- os=-sunos4.1.1
- ;;
- *-be)
- os=-beos
- ;;
- *-ibm)
- os=-aix
- ;;
- *-wec)
- os=-proelf
- ;;
- *-winbond)
- os=-proelf
- ;;
- *-oki)
- os=-proelf
- ;;
- *-hp)
- os=-hpux
- ;;
- *-hitachi)
- os=-hiux
- ;;
- i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
- os=-sysv
- ;;
- *-cbm)
- os=-amigaos
- ;;
- *-dg)
- os=-dgux
- ;;
- *-dolphin)
- os=-sysv3
- ;;
- m68k-ccur)
- os=-rtu
- ;;
- m88k-omron*)
- os=-luna
- ;;
- *-next )
- os=-nextstep
- ;;
- *-sequent)
- os=-ptx
- ;;
- *-crds)
- os=-unos
- ;;
- *-ns)
- os=-genix
- ;;
- i370-*)
- os=-mvs
- ;;
- *-next)
- os=-nextstep3
- ;;
- *-gould)
- os=-sysv
- ;;
- *-highlevel)
- os=-bsd
- ;;
- *-encore)
- os=-bsd
- ;;
- *-sgi)
- os=-irix
- ;;
- *-siemens)
- os=-sysv4
- ;;
- *-masscomp)
- os=-rtu
- ;;
- f30[01]-fujitsu | f700-fujitsu)
- os=-uxpv
- ;;
- *-rom68k)
- os=-coff
- ;;
- *-*bug)
- os=-coff
- ;;
- *-apple)
- os=-macos
- ;;
- *-atari*)
- os=-mint
- ;;
- *)
- os=-none
- ;;
-esac
-fi
-
-# Here we handle the case where we know the os, and the CPU type, but not the
-# manufacturer. We pick the logical manufacturer.
-vendor=unknown
-case $basic_machine in
- *-unknown)
- case $os in
- -riscix*)
- vendor=acorn
- ;;
- -sunos*)
- vendor=sun
- ;;
- -lynxos*) # bash
- vendor=lynx
- ;;
- -aix*)
- vendor=ibm
- ;;
- -beos*)
- vendor=be
- ;;
- -hpux*)
- vendor=hp
- ;;
- -mpeix*)
- vendor=hp
- ;;
- -hiux*)
- vendor=hitachi
- ;;
- -unos*)
- vendor=crds
- ;;
- -dgux*)
- vendor=dg
- ;;
- -luna*)
- vendor=omron
- ;;
- -genix*)
- vendor=ns
- ;;
- -mvs* | -opened*)
- vendor=ibm
- ;;
- -ptx*)
- vendor=sequent
- ;;
- -vxsim* | -vxworks*)
- vendor=wrs
- ;;
- -aux*)
- vendor=apple
- ;;
- -hms*)
- vendor=hitachi
- ;;
- -mpw* | -macos*)
- vendor=apple
- ;;
- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
- vendor=atari
- ;;
- -vos*)
- vendor=stratus
- ;;
- esac
- basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
- ;;
-esac
-
-echo $basic_machine$os
-exit 0
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/readline-4.3/support/install.sh b/readline-4.3/support/install.sh
deleted file mode 100755
index 0cac004..0000000
--- a/readline-4.3/support/install.sh
+++ /dev/null
@@ -1,247 +0,0 @@
-#!/bin/sh
-#
-# install - install a program, script, or datafile
-# This comes from X11R5.
-#
-# $XConsortium: install.sh,v 1.2 89/12/18 14:47:22 jim Exp $
-#
-# Copyright 1991 by the Massachusetts Institute of Technology
-#
-# Permission to use, copy, modify, distribute, and sell this software and its
-# documentation for any purpose is hereby granted without fee, provided that
-# the above copyright notice appear in all copies and that both that
-# copyright notice and this permission notice appear in supporting
-# documentation, and that the name of M.I.T. not be used in advertising or
-# publicity pertaining to distribution of the software without specific,
-# written prior permission. M.I.T. makes no representations about the
-# suitability of this software for any purpose. It is provided "as is"
-# without express or implied warranty.
-#
-# This script is compatible with the BSD install script, but was written
-# from scratch.
-#
-
-# set DOITPROG to echo to test this script
-
-# Don't use :- since 4.3BSD and earlier shells don't like it.
-doit="${DOITPROG-}"
-
-
-# put in absolute paths if you don't have them in your path; or use env. vars.
-
-mvprog="${MVPROG-mv}"
-cpprog="${CPPROG-cp}"
-chmodprog="${CHMODPROG-chmod}"
-chownprog="${CHOWNPROG-chown}"
-chgrpprog="${CHGRPPROG-chgrp}"
-stripprog="${STRIPPROG-strip}"
-rmprog="${RMPROG-rm}"
-mkdirprog="${MKDIRPROG-mkdir}"
-
-tranformbasename=""
-transform_arg=""
-instcmd="$mvprog"
-chmodcmd="$chmodprog 0755"
-chowncmd=""
-chgrpcmd=""
-stripcmd=""
-rmcmd="$rmprog -f"
-mvcmd="$mvprog"
-src=""
-dst=""
-dir_arg=""
-
-while [ x"$1" != x ]; do
- case $1 in
- -c) instcmd="$cpprog"
- shift
- continue;;
-
- -d) dir_arg=true
- shift
- continue;;
-
- -m) chmodcmd="$chmodprog $2"
- shift
- shift
- continue;;
-
- -o) chowncmd="$chownprog $2"
- shift
- shift
- continue;;
-
- -g) chgrpcmd="$chgrpprog $2"
- shift
- shift
- continue;;
-
- -s) stripcmd="$stripprog"
- shift
- continue;;
-
- -t=*) transformarg=`echo $1 | sed 's/-t=//'`
- shift
- continue;;
-
- -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
- shift
- continue;;
-
- *) if [ x"$src" = x ]
- then
- src=$1
- else
- # this colon is to work around a 386BSD /bin/sh bug
- :
- dst=$1
- fi
- shift
- continue;;
- esac
-done
-
-if [ x"$src" = x ]
-then
- echo "install: no input file specified"
- exit 1
-else
- true
-fi
-
-if [ x"$dir_arg" != x ]; then
- dst=$src
- src=""
-
- if [ -d $dst ]; then
- instcmd=:
- else
- instcmd=mkdir
- fi
-else
-
-# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
-# might cause directories to be created, which would be especially bad
-# if $src (and thus $dsttmp) contains '*'.
-
- if [ -f $src -o -d $src ]
- then
- true
- else
- echo "install: $src does not exist"
- exit 1
- fi
-
- if [ x"$dst" = x ]
- then
- echo "install: no destination specified"
- exit 1
- else
- true
- fi
-
-# If destination is a directory, append the input filename; if your system
-# does not like double slashes in filenames, you may need to add some logic
-
- if [ -d $dst ]
- then
- dst="$dst"/`basename $src`
- else
- true
- fi
-fi
-
-## this sed command emulates the dirname command
-dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
-
-# Make sure that the destination directory exists.
-# this part is taken from Noah Friedman's mkinstalldirs script
-
-# Skip lots of stat calls in the usual case.
-if [ ! -d "$dstdir" ]; then
-defaultIFS='
-'
-IFS="${IFS-${defaultIFS}}"
-
-oIFS="${IFS}"
-# Some sh's can't handle IFS=/ for some reason.
-IFS='%'
-set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
-IFS="${oIFS}"
-
-pathcomp=''
-
-while [ $# -ne 0 ] ; do
- pathcomp="${pathcomp}${1}"
- shift
-
- if [ ! -d "${pathcomp}" ] ;
- then
- $mkdirprog "${pathcomp}"
- else
- true
- fi
-
- pathcomp="${pathcomp}/"
-done
-fi
-
-if [ x"$dir_arg" != x ]
-then
- $doit $instcmd $dst &&
-
- if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
- if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
-else
-
-# If we're going to rename the final executable, determine the name now.
-
- if [ x"$transformarg" = x ]
- then
- dstfile=`basename $dst`
- else
- dstfile=`basename $dst $transformbasename |
- sed $transformarg`$transformbasename
- fi
-
-# don't allow the sed command to completely eliminate the filename
-
- if [ x"$dstfile" = x ]
- then
- dstfile=`basename $dst`
- else
- true
- fi
-
-# Make a temp file name in the proper directory.
-
- dsttmp=$dstdir/#inst.$$#
-
-# Move or copy the file name to the temp name
-
- $doit $instcmd $src $dsttmp &&
-
- trap "rm -f ${dsttmp}" 0 &&
-
-# and set any options; do chmod last to preserve setuid bits
-
-# If any of these fail, we abort the whole thing. If we want to
-# ignore errors from any of these, just make sure not to ignore
-# errors from the above "$doit $instcmd $src $dsttmp" command.
-
- if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
- if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
-
-# Now rename the file to the real destination.
-
- $doit $rmcmd -f $dstdir/$dstfile &&
- $doit $mvcmd $dsttmp $dstdir/$dstfile
-
-fi &&
-
-
-exit 0
diff --git a/readline-4.3/support/mkdirs b/readline-4.3/support/mkdirs
deleted file mode 100755
index ce4fb23..0000000
--- a/readline-4.3/support/mkdirs
+++ /dev/null
@@ -1,48 +0,0 @@
-#! /bin/sh
-#
-# mkdirs - a work-alike for `mkdir -p'
-#
-# Chet Ramey
-# chet@po.cwru.edu
-
-# Copyright (C) 1996-2002 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA.
-
-for dir
-do
-
- test -d "$dir" && continue
-
- tomake=$dir
- while test -n "$dir" ; do
- # dir=${dir%/*}
- # dir=`expr "$dir" ':' '\(/.*\)/[^/]*'`
- if dir=`expr "$dir" ':' '\(.*\)/[^/]*'`; then
- tomake="$dir $tomake"
- else
- dir=
- fi
- done
-
- for d in $tomake
- do
- test -d "$d" && continue
- echo mkdir "$d"
- mkdir "$d"
- done
-done
-
-exit 0
diff --git a/readline-4.3/support/mkdist b/readline-4.3/support/mkdist
deleted file mode 100755
index 06e6155..0000000
--- a/readline-4.3/support/mkdist
+++ /dev/null
@@ -1,120 +0,0 @@
-#! /bin/bash -
-#
-# mkdist - make a distribution directory from a master manifest file
-#
-# usage: mkdist [-m manifest] [-s srcdir] [-r rootname] [-v] version
-#
-# SRCDIR defaults to src
-# MANIFEST defaults to $SRCDIR/MANIFEST
-#
-# Chet Ramey
-# chet@po.cwru.edu
-
-# Copyright (C) 1996-2002 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA.
-
-SRCDIR=src
-ROOTNAME=bash
-
-usage()
-{
- echo usage: mkdist [-m manifest] [-s srcdir] [-r rootname] [-v] version 1>&2
- exit 2
-}
-
-vmsg()
-{
- if [ -n "$verbose" ]; then
- echo mkdist: "$@"
- fi
-}
-
-while getopts m:s:r:v name
-do
- case $name in
- m) MANIFEST=$OPTARG ;;
- s) SRCDIR=$OPTARG ;;
- r) ROOTNAME=$OPTARG ;;
- v) verbose=yes ;;
- ?) usage ;;
- esac
-done
-
-: ${MANIFEST:=$SRCDIR/MANIFEST}
-
-vmsg using $MANIFEST
-
-shift $(( $OPTIND - 1 ))
-
-if [ $# -lt 1 ]; then
- usage
-fi
-
-version=$1
-newdir=${ROOTNAME}-$version
-
-vmsg creating distribution for $ROOTNAME version $version in $newdir
-
-if [ ! -d $newdir ]; then
- mkdir $newdir || { echo $0: cannot make directory $newdir 1>&2 ; exit 1; }
-fi
-
-dirmode=755
-filmode=644
-
-while read fname type mode
-do
- [ -z "$fname" ] && continue
-
- case "$fname" in
- \#*) continue ;;
- esac
-
- case "$type" in
- d) mkdir $newdir/$fname ;;
- f) cp -p $SRCDIR/$fname $newdir/$fname ;;
- s) ln -s $mode $newdir/$fname ; mode= ;; # symlink
- l) ln $mode $newdir/$fname ; mode= ;; # hard link
- *) echo "unknown file type $type" 1>&2 ;;
- esac
-
- if [ -n "$mode" ]; then
- chmod $mode $newdir/$fname
- fi
-
-done < $MANIFEST
-
-# cut off the `-alpha' in something like `2.0-alpha', leaving just the
-# numeric version
-#version=${version%%-*}
-
-#case "$version" in
-#*.*.*) vers=${version%.*} ;;
-#*.*) vers=${version} ;;
-#esac
-
-#echo $vers > $newdir/.distribution
-
-#case "$version" in
-#*.*.*) plevel=${version##*.} ;;
-#*) plevel=0 ;;
-#esac
-#[ -z "$plevel" ] && plevel=0
-#echo ${plevel} > $newdir/.patchlevel
-
-vmsg $newdir created
-
-exit 0
diff --git a/readline-4.3/support/shlib-install b/readline-4.3/support/shlib-install
deleted file mode 100755
index 654cfa9..0000000
--- a/readline-4.3/support/shlib-install
+++ /dev/null
@@ -1,156 +0,0 @@
-#! /bin/sh
-#
-# shlib-install - install a shared library and do any necessary host-specific
-# post-installation configuration (like ldconfig)
-#
-# usage: shlib-install [-D] -O host_os -d installation-dir -i install-prog [-U] library
-#
-# Chet Ramey
-# chet@po.cwru.edu
-
-#
-# defaults
-#
-INSTALLDIR=/usr/local/lib
-LDCONFIG=ldconfig
-
-PROGNAME=`basename $0`
-USAGE="$PROGNAME [-D] -O host_os -d installation-dir -i install-prog [-U] library"
-
-# process options
-
-while [ $# -gt 0 ]; do
- case "$1" in
- -O) shift; host_os="$1"; shift ;;
- -d) shift; INSTALLDIR="$1"; shift ;;
- -i) shift; INSTALLPROG="$1" ; shift ;;
- -D) echo=echo ; shift ;;
- -U) uninstall=true ; shift ;;
- -*) echo "$USAGE" >&2 ; exit 2;;
- *) break ;;
- esac
-done
-
-# set install target name
-LIBNAME="$1"
-
-if [ -z "$LIBNAME" ]; then
- echo "$USAGE" >&2
- exit 2
-fi
-
-OLDSUFF=old
-MV=mv
-RM="rm -f"
-LN="ln -s"
-
-# pre-install
-
-if [ -z "$uninstall" ]; then
- ${echo} $RM ${INSTALLDIR}/${LIBNAME}.${OLDSUFF}
- if [ -f "$INSTALLDIR/$LIBNAME" ]; then
- ${echo} $MV $INSTALLDIR/$LIBNAME ${INSTALLDIR}/${LIBNAME}.${OLDSUFF}
- fi
-fi
-
-# install/uninstall
-
-if [ -z "$uninstall" ] ; then
- ${echo} eval ${INSTALLPROG} $LIBNAME ${INSTALLDIR}/${LIBNAME}
-else
- ${echo} ${RM} ${INSTALLDIR}/${LIBNAME}
-fi
-
-# post-install/uninstall
-
-# HP-UX and Darwin/MacOS X require that a shared library have execute permission
-case "$host_os" in
-hpux*|darwin*|macosx*)
- if [ -z "$uninstall" ]; then
- chmod 555 ${INSTALLDIR}/${LIBNAME}
- fi ;;
-*) ;;
-esac
-
-case "$LIBNAME" in
-*.*.[0-9].[0-9]) # libname.so.M.N
- LINK2=`echo $LIBNAME | sed 's:\(.*\..*\.[0-9]\)\.[0-9]:\1:'` # libname.so.M
- LINK1=`echo $LIBNAME | sed 's:\(.*\..*\)\.[0-9]\.[0-9]:\1:'` # libname.so
- ;;
-*.*.[0-9]) # libname.so.M
- LINK1=`echo $LIBNAME | sed 's:\(.*\..*\)\.[0-9]:\1:'` # libname.so
- ;;
-*.[0-9]) # libname.M
- LINK1=`echo $LIBNAME | sed 's:\(.*\)\.[0-9]:\1:'` # libname
- ;;
-*.[0-9].[0-9].dylib) # libname.M.N.dylib
- LINK2=`echo $LIBNAME | sed 's:\(.*\.[0-9]\)\.[0-9]:\1:'` # libname.M.dylib
- LINK1=`echo $LIBNAME | sed 's:\(.*\)\.[0-9]\.[0-9]:\1:'` # libname.dylib
-esac
-
-INSTALL_LINK1='cd $INSTALLDIR ; ln -s $LIBNAME $LINK1'
-INSTALL_LINK2='cd $INSTALLDIR ; ln -s $LIBNAME $LINK2'
-
-#
-# Create symlinks to the installed library. This section is incomplete.
-#
-case "$host_os" in
-*linux*|bsdi4*|*gnu*|darwin*|macosx*)
- # libname.so.M -> libname.so.M.N
- ${echo} ${RM} ${INSTALLDIR}/$LINK2
- if [ -z "$uninstall" ]; then
- ${echo} ln -s $LIBNAME ${INSTALLDIR}/$LINK2
- fi
-
- # libname.so -> libname.so.M.N
- ${echo} ${RM} ${INSTALLDIR}/$LINK1
- if [ -z "$uninstall" ]; then
- ${echo} ln -s $LIBNAME ${INSTALLDIR}/$LINK1
- fi
- ;;
-
-solaris2*|aix4.[2-9]*|osf*|irix[56]*|sysv[45]*|dgux*)
- # libname.so -> libname.so.M
- ${echo} ${RM} ${INSTALLDIR}/$LINK1
- if [ -z "$uninstall" ]; then
- ${echo} ln -s $LIBNAME ${INSTALLDIR}/$LINK1
- fi
- ;;
-
-
-# FreeBSD 3.x and above can have either a.out or ELF shared libraries
-freebsd[3-9]*|freebsdelf[3-9]*|freebsdaout[3-9]*)
- if [ -x /usr/bin/objformat ] && [ "`/usr/bin/objformat`" = "elf" ]; then
- # libname.so -> libname.so.M
- ${echo} ${RM} ${INSTALLDIR}/$LINK1
- if [ -z "$uninstall" ]; then
- ${echo} ln -s $LIBNAME ${INSTALLDIR}/$LINK1
- fi
- else
- # libname.so.M -> libname.so.M.N
- ${echo} ${RM} ${INSTALLDIR}/$LINK2
- if [ -z "$uninstall" ]; then
- ${echo} ln -s $LIBNAME ${INSTALLDIR}/$LINK2
- fi
-
- # libname.so -> libname.so.M.N
- ${echo} ${RM} ${INSTALLDIR}/$LINK1
- if [ -z "$uninstall" ]; then
- ${echo} ln -s $LIBNAME ${INSTALLDIR}/$LINK1
- fi
- fi
- ;;
-
-hpux1*)
- # libname.sl -> libname.M
- ${echo} ${RM} ${INSTALLDIR}/$LINK1.sl
- if [ -z "$uninstall" ]; then
-# ${echo} ln -s $LIBNAME ${INSTALLDIR}/${LINK1}.sl
- ${echo} ln -s $LIBNAME ${INSTALLDIR}/${LINK1}
- fi
- ;;
-
-*) ;;
-esac
-
-exit 0
diff --git a/readline-4.3/support/shobj-conf b/readline-4.3/support/shobj-conf
deleted file mode 100755
index 6bd7fb1..0000000
--- a/readline-4.3/support/shobj-conf
+++ /dev/null
@@ -1,458 +0,0 @@
-#! /bin/sh
-#
-# shobj-conf -- output a series of variable assignments to be substituted
-# into a Makefile by configure which specify system-dependent
-# information for creating shared objects that may be loaded
-# into bash with `enable -f'
-#
-# usage: shobj-conf [-C compiler] -c host_cpu -o host_os -v host_vendor
-#
-# Chet Ramey
-# chet@po.cwru.edu
-
-# Copyright (C) 1996-2002 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA.
-
-#
-# defaults
-#
-SHOBJ_STATUS=supported
-SHLIB_STATUS=supported
-
-SHOBJ_CC=cc
-SHOBJ_CFLAGS=
-SHOBJ_LD=
-SHOBJ_LDFLAGS=
-SHOBJ_XLDFLAGS=
-SHOBJ_LIBS=
-
-SHLIB_XLDFLAGS=
-SHLIB_LIBS=
-SHLIB_LIBSUFF='so'
-
-SHLIB_LIBVERSION='$(SHLIB_LIBSUFF)'
-
-PROGNAME=`basename $0`
-USAGE="$PROGNAME [-C compiler] -c host_cpu -o host_os -v host_vendor"
-
-while [ $# -gt 0 ]; do
- case "$1" in
- -C) shift; SHOBJ_CC="$1"; shift ;;
- -c) shift; host_cpu="$1"; shift ;;
- -o) shift; host_os="$1"; shift ;;
- -v) shift; host_vendor="$1"; shift ;;
- *) echo "$USAGE" >&2 ; exit 2;;
- esac
-done
-
-case "${host_os}-${SHOBJ_CC}" in
-sunos4*-*gcc*)
- SHOBJ_CFLAGS=-fpic
- SHOBJ_LD=/usr/bin/ld
- SHOBJ_LDFLAGS='-assert pure-text'
-
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
- ;;
-
-sunos4*)
- SHOBJ_CFLAGS=-pic
- SHOBJ_LD=/usr/bin/ld
- SHOBJ_LDFLAGS='-assert pure-text'
-
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
- ;;
-
-sunos5*-*gcc*|solaris2*-*gcc*)
- SHOBJ_CFLAGS=-fpic
- SHOBJ_LD='${CC}'
- # This line works for the Solaris linker in /usr/ccs/bin/ld
- SHOBJ_LDFLAGS='-shared -Wl,-i -Wl,-h,$@'
- # This line works for the GNU ld
-# SHOBJ_LDFLAGS='-shared -Wl,-h,$@'
-
-# SHLIB_XLDFLAGS='-R $(libdir)'
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
- ;;
-
-sunos5*|solaris2*)
- SHOBJ_CFLAGS='-K pic'
- SHOBJ_LD=/usr/ccs/bin/ld
- SHOBJ_LDFLAGS='-G -dy -z text -i -h $@'
-
-# SHLIB_XLDFLAGS='-R $(libdir)'
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
- ;;
-
-# All versions of Linux or the semi-mythical GNU Hurd.
-linux*|gnu*)
- SHOBJ_CFLAGS=-fPIC
- SHOBJ_LD='${CC}'
- SHOBJ_LDFLAGS='-shared -Wl,-soname,$@'
-
- SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir) -Wl,-soname,`basename $@ $(SHLIB_MINOR)`'
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
- ;;
-
-freebsd2* | netbsd*)
- SHOBJ_CFLAGS=-fpic
- SHOBJ_LD=ld
- SHOBJ_LDFLAGS='-x -Bshareable'
-
- SHLIB_XLDFLAGS='-R$(libdir)'
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
- ;;
-
-# FreeBSD-3.x ELF
-freebsd[3-9]*|freebsdelf[3-9]*|freebsdaout[3-9]*)
- SHOBJ_CFLAGS=-fpic
- SHOBJ_LD='${CC}'
-
- if [ -x /usr/bin/objformat ] && [ "`/usr/bin/objformat`" = "elf" ]; then
- SHOBJ_LDFLAGS='-shared -Wl,-soname,$@'
-
- SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir)'
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
- else
- SHOBJ_LDFLAGS='-shared'
-
- SHLIB_XLDFLAGS='-R$(libdir)'
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
- fi
- ;;
-
-# Darwin/MacOS X
-darwin*|macosx*)
- SHOBJ_STATUS=unsupported
- SHLIB_STATUS=supported
-
- SHOBJ_CFLAGS='-dynamic -fno-common'
-
- SHOBJ_LD=/usr/bin/libtool
-
- SHLIB_LIBVERSION='$(SHLIB_MAJOR)$(SHLIB_MINOR).$(SHLIB_LIBSUFF)'
- SHLIB_LIBSUFF='dylib'
-
- SHOBJ_LDFLAGS='-dynamic'
- SHLIB_XLDFLAGS='-arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v'
-
- SHLIB_LIBS='-lSystem'
- ;;
-
-openbsd*)
- SHOBJ_CFLAGS=-fPIC
- SHOBJ_LD='${CC}'
- SHOBJ_LDFLAGS='-shared'
-
- SHLIB_XLDFLAGS='-R$(libdir)'
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
- ;;
-
-bsdi2*)
- SHOBJ_CC=shlicc2
- SHOBJ_CFLAGS=
- SHOBJ_LD=ld
- SHOBJ_LDFLAGS=-r
- SHOBJ_LIBS=-lc_s.2.1.0
-
- # BSD/OS 2.x and 3.x `shared libraries' are too much of a pain in
- # the ass -- they require changing {/usr/lib,etc}/shlib.map on
- # each system, and the library creation process is byzantine
- SHLIB_STATUS=unsupported
- ;;
-
-bsdi3*)
- SHOBJ_CC=shlicc2
- SHOBJ_CFLAGS=
- SHOBJ_LD=ld
- SHOBJ_LDFLAGS=-r
- SHOBJ_LIBS=-lc_s.3.0.0
-
- # BSD/OS 2.x and 3.x `shared libraries' are too much of a pain in
- # the ass -- they require changing {/usr/lib,etc}/shlib.map on
- # each system, and the library creation process is byzantine
- SHLIB_STATUS=unsupported
- ;;
-
-bsdi4*)
- # BSD/OS 4.x now supports ELF and SunOS-style dynamically-linked
- # shared libraries. gcc 2.x is the standard compiler, and the
- # `normal' gcc options should work as they do in Linux.
-
- SHOBJ_CFLAGS=-fPIC
- SHOBJ_LD='${CC}'
- SHOBJ_LDFLAGS='-shared -Wl,-soname,$@'
-
- SHLIB_XLDFLAGS='-Wl,-soname,`basename $@ $(SHLIB_MINOR)`'
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
- ;;
-
-osf*-*gcc*)
- # Fix to use gcc linker driver from bfischer@TechFak.Uni-Bielefeld.DE
- SHOBJ_LD='${CC}'
- SHOBJ_LDFLAGS='-shared -Wl,-soname,$@'
-
- SHLIB_XLDFLAGS='-rpath $(libdir)'
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
- ;;
-
-osf*)
- SHOBJ_LD=ld
- SHOBJ_LDFLAGS='-shared -soname $@ -expect_unresolved "*"'
-
- SHLIB_XLDFLAGS='-rpath $(libdir)'
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
- ;;
-
-aix4.[2-9]*-*gcc*) # lightly tested by jik@cisco.com
- SHOBJ_CFLAGS=-fpic
- SHOBJ_LD='ld'
- SHOBJ_LDFLAGS='-bdynamic -bnoentry -bexpall'
- SHOBJ_XLDFLAGS='-G'
-
- SHLIB_XLDFLAGS='-bM:SRE'
- SHLIB_LIBS='-lcurses -lc'
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
- ;;
-
-aix4.[2-9]*)
- SHOBJ_CFLAGS=-K
- SHOBJ_LD='ld'
- SHOBJ_LDFLAGS='-bdynamic -bnoentry -bexpall'
- SHOBJ_XLDFLAGS='-G'
-
- SHLIB_XLDFLAGS='-bM:SRE'
- SHLIB_LIBS='-lcurses -lc'
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
- ;;
-
-#
-# THE FOLLOWING ARE UNTESTED -- and some may not support the dlopen interface
-#
-irix[56]*-*gcc*)
- SHOBJ_CFLAGS='-fpic'
- SHOBJ_LD='${CC}'
- SHOBJ_LDFLAGS='-shared -Wl,-soname,$@'
-
- SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir)'
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
- ;;
-
-irix[56]*)
- SHOBJ_CFLAGS='-K PIC'
- SHOBJ_LD=ld
-# SHOBJ_LDFLAGS='-call_shared -hidden_symbol -no_unresolved -soname $@'
-# Change from David Kaelbling <drk@sgi.com>. If you have problems,
-# remove the `-no_unresolved'
- SHOBJ_LDFLAGS='-shared -no_unresolved -soname $@'
-
- SHLIB_XLDFLAGS='-rpath $(libdir)'
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
- ;;
-
-hpux9*-*gcc*)
- # must use gcc; the bundled cc cannot compile PIC code
- SHOBJ_CFLAGS='-fpic'
- SHOBJ_LD='${CC}'
- SHOBJ_LDFLAGS='-shared -Wl,-b -Wl,+s'
-
- SHLIB_XLDFLAGS='-Wl,+b,$(libdir)'
- SHLIB_LIBSUFF='sl'
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
- ;;
-
-hpux9*)
- SHOBJ_STATUS=unsupported
- SHLIB_STATUS=unsupported
-
- # If you are using the HP ANSI C compiler, you can uncomment and use
- # this code (I have not tested it)
-# SHOBJ_STATUS=supported
-# SHLIB_STATUS=supported
-#
-# SHOBJ_CFLAGS='+z'
-# SHOBJ_LD='ld'
-# SHOBJ_LDFLAGS='-b +s'
-#
-# SHLIB_XLDFLAGS='+b $(libdir)'
-# SHLIB_LIBSUFF='sl'
-# SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
-
- ;;
-
-hpux10*-*gcc*)
- # must use gcc; the bundled cc cannot compile PIC code
- SHOBJ_CFLAGS='-fpic'
- SHOBJ_LD='${CC}'
- SHOBJ_LDFLAGS='-shared -Wl,-b -Wl,+s'
-
- SHLIB_XLDFLAGS='-Wl,+h,$@ -Wl,+b,$(libdir)'
- SHLIB_LIBSUFF='sl'
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
- ;;
-
-hpux10*)
- SHOBJ_STATUS=unsupported
- SHLIB_STATUS=unsupported
-
- # If you are using the HP ANSI C compiler, you can uncomment and use
- # this code (I have not tested it)
-# SHOBJ_STATUS=supported
-# SHLIB_STATUS=supported
-#
-# SHOBJ_CFLAGS='+z'
-# SHOBJ_LD='ld'
-# SHOBJ_LDFLAGS='-b +s +h $@'
-#
-# SHLIB_XLDFLAGS='+b $(libdir)'
-# SHLIB_LIBSUFF='sl'
-# SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
-
- ;;
-
-hpux11*-*gcc*)
- # must use gcc; the bundled cc cannot compile PIC code
- SHOBJ_CFLAGS='-fpic'
- SHOBJ_LD='${CC}'
-# SHOBJ_LDFLAGS='-shared -Wl,-b -Wl,-B,symbolic -Wl,+s -Wl,+std -Wl,+h,$@'
- SHOBJ_LDFLAGS='-shared -fpic -Wl,-b -Wl,+s -Wl,+h,$@'
-
- SHLIB_XLDFLAGS='-Wl,+b,$(libdir)'
- SHLIB_LIBSUFF='sl'
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
- ;;
-
-hpux11*)
- SHOBJ_STATUS=unsupported
- SHLIB_STATUS=unsupported
-
- # If you are using the HP ANSI C compiler, you can uncomment and use
- # this code (I have not tested it)
-# SHOBJ_STATUS=supported
-# SHLIB_STATUS=supported
-#
-# SHOBJ_CFLAGS='+z'
-# SHOBJ_LD='ld'
-# SHOBJ_LDFLAGS='-b +s +h $@'
-#
-# SHLIB_XLDFLAGS='+b $(libdir)'
-# SHLIB_LIBSUFF='sl'
-# SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
-
- ;;
-
-sysv4*-*gcc*)
- SHOBJ_CFLAGS=-shared
- SHOBJ_LDFLAGS='-shared -h $@'
- SHOBJ_LD='${CC}'
-
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
- ;;
-
-sysv4*)
- SHOBJ_CFLAGS='-K PIC'
- SHOBJ_LD=ld
- SHOBJ_LDFLAGS='-dy -z text -G -h $@'
-
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
- ;;
-
-sco3.2v5*-*gcc*)
- SHOBJ_CFLAGS='-fpic' # DEFAULTS TO ELF
- SHOBJ_LD='${CC}'
- SHOBJ_LDFLAGS='-shared'
-
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
- ;;
-
-sco3.2v5*)
- SHOBJ_CFLAGS='-K pic -b elf'
- SHOBJ_LD=ld
- SHOBJ_LDFLAGS='-G -b elf -dy -z text -h $@'
-
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
- ;;
-
-sysv5uw7*-*gcc*)
- SHOBJ_CFLAGS='-fpic'
- SHOBJ_LD='${CC}'
- SHOBJ_LDFLAGS='-shared'
-
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
- ;;
-
-sysv5uw7*)
- SHOBJ_CFLAGS='-K PIC'
- SHOBJ_LD=ld
- SHOBJ_LDFLAGS='-G -dy -z text -h $@'
-
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
- ;;
-
-dgux*-*gcc*)
- SHOBJ_CFLAGS=-fpic
- SHOBJ_LD='${CC}'
- SHOBJ_LDFLAGS='-shared'
-
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
- ;;
-
-dgux*)
- SHOBJ_CFLAGS='-K pic'
- SHOBJ_LD=ld
- SHOBJ_LDFLAGS='-G -dy -h $@'
-
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
- ;;
-
-msdos*)
- SHOBJ_STATUS=unsupported
- SHLIB_STATUS=unsupported
- ;;
-
-#
-# Rely on correct gcc configuration for everything else
-#
-*-*gcc*)
- SHOBJ_CFLAGS=-fpic
- SHOBJ_LD='${CC}'
- SHOBJ_LDFLAGS='-shared'
-
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
- ;;
-
-*)
- SHOBJ_STATUS=unsupported
- SHLIB_STATUS=unsupported
- ;;
-
-esac
-
-echo SHOBJ_CC=\'"$SHOBJ_CC"\'
-echo SHOBJ_CFLAGS=\'"$SHOBJ_CFLAGS"\'
-echo SHOBJ_LD=\'"$SHOBJ_LD"\'
-echo SHOBJ_LDFLAGS=\'"$SHOBJ_LDFLAGS"\'
-echo SHOBJ_XLDFLAGS=\'"$SHOBJ_XLDFLAGS"\'
-echo SHOBJ_LIBS=\'"$SHOBJ_LIBS"\'
-
-echo SHLIB_XLDFLAGS=\'"$SHLIB_XLDFLAGS"\'
-echo SHLIB_LIBS=\'"$SHLIB_LIBS"\'
-echo SHLIB_LIBSUFF=\'"$SHLIB_LIBSUFF"\'
-echo SHLIB_LIBVERSION=\'"$SHLIB_LIBVERSION"\'
-
-echo SHOBJ_STATUS=\'"$SHOBJ_STATUS"\'
-echo SHLIB_STATUS=\'"$SHLIB_STATUS"\'
-
-exit 0
diff --git a/readline-4.3/support/wcwidth.c b/readline-4.3/support/wcwidth.c
deleted file mode 100644
index ace9a3a..0000000
--- a/readline-4.3/support/wcwidth.c
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
- * This is an implementation of wcwidth() and wcswidth() as defined in
- * "The Single UNIX Specification, Version 2, The Open Group, 1997"
- * <http://www.UNIX-systems.org/online.html>
- *
- * Markus Kuhn -- 2001-09-08 -- public domain
- */
-
-#include <wchar.h>
-
-struct interval {
- unsigned short first;
- unsigned short last;
-};
-
-/* auxiliary function for binary search in interval table */
-static int bisearch(wchar_t ucs, const struct interval *table, int max) {
- int min = 0;
- int mid;
-
- if (ucs < table[0].first || ucs > table[max].last)
- return 0;
- while (max >= min) {
- mid = (min + max) / 2;
- if (ucs > table[mid].last)
- min = mid + 1;
- else if (ucs < table[mid].first)
- max = mid - 1;
- else
- return 1;
- }
-
- return 0;
-}
-
-
-/* The following functions define the column width of an ISO 10646
- * character as follows:
- *
- * - The null character (U+0000) has a column width of 0.
- *
- * - Other C0/C1 control characters and DEL will lead to a return
- * value of -1.
- *
- * - Non-spacing and enclosing combining characters (general
- * category code Mn or Me in the Unicode database) have a
- * column width of 0.
- *
- * - Other format characters (general category code Cf in the Unicode
- * database) and ZERO WIDTH SPACE (U+200B) have a column width of 0.
- *
- * - Hangul Jamo medial vowels and final consonants (U+1160-U+11FF)
- * have a column width of 0.
- *
- * - Spacing characters in the East Asian Wide (W) or East Asian
- * FullWidth (F) category as defined in Unicode Technical
- * Report #11 have a column width of 2.
- *
- * - All remaining characters (including all printable
- * ISO 8859-1 and WGL4 characters, Unicode control characters,
- * etc.) have a column width of 1.
- *
- * This implementation assumes that wchar_t characters are encoded
- * in ISO 10646.
- */
-
-int wcwidth(wchar_t ucs)
-{
- /* sorted list of non-overlapping intervals of non-spacing characters */
- static const struct interval combining[] = {
- { 0x0300, 0x034E }, { 0x0360, 0x0362 }, { 0x0483, 0x0486 },
- { 0x0488, 0x0489 }, { 0x0591, 0x05A1 }, { 0x05A3, 0x05B9 },
- { 0x05BB, 0x05BD }, { 0x05BF, 0x05BF }, { 0x05C1, 0x05C2 },
- { 0x05C4, 0x05C4 }, { 0x064B, 0x0655 }, { 0x0670, 0x0670 },
- { 0x06D6, 0x06E4 }, { 0x06E7, 0x06E8 }, { 0x06EA, 0x06ED },
- { 0x070F, 0x070F }, { 0x0711, 0x0711 }, { 0x0730, 0x074A },
- { 0x07A6, 0x07B0 }, { 0x0901, 0x0902 }, { 0x093C, 0x093C },
- { 0x0941, 0x0948 }, { 0x094D, 0x094D }, { 0x0951, 0x0954 },
- { 0x0962, 0x0963 }, { 0x0981, 0x0981 }, { 0x09BC, 0x09BC },
- { 0x09C1, 0x09C4 }, { 0x09CD, 0x09CD }, { 0x09E2, 0x09E3 },
- { 0x0A02, 0x0A02 }, { 0x0A3C, 0x0A3C }, { 0x0A41, 0x0A42 },
- { 0x0A47, 0x0A48 }, { 0x0A4B, 0x0A4D }, { 0x0A70, 0x0A71 },
- { 0x0A81, 0x0A82 }, { 0x0ABC, 0x0ABC }, { 0x0AC1, 0x0AC5 },
- { 0x0AC7, 0x0AC8 }, { 0x0ACD, 0x0ACD }, { 0x0B01, 0x0B01 },
- { 0x0B3C, 0x0B3C }, { 0x0B3F, 0x0B3F }, { 0x0B41, 0x0B43 },
- { 0x0B4D, 0x0B4D }, { 0x0B56, 0x0B56 }, { 0x0B82, 0x0B82 },
- { 0x0BC0, 0x0BC0 }, { 0x0BCD, 0x0BCD }, { 0x0C3E, 0x0C40 },
- { 0x0C46, 0x0C48 }, { 0x0C4A, 0x0C4D }, { 0x0C55, 0x0C56 },
- { 0x0CBF, 0x0CBF }, { 0x0CC6, 0x0CC6 }, { 0x0CCC, 0x0CCD },
- { 0x0D41, 0x0D43 }, { 0x0D4D, 0x0D4D }, { 0x0DCA, 0x0DCA },
- { 0x0DD2, 0x0DD4 }, { 0x0DD6, 0x0DD6 }, { 0x0E31, 0x0E31 },
- { 0x0E34, 0x0E3A }, { 0x0E47, 0x0E4E }, { 0x0EB1, 0x0EB1 },
- { 0x0EB4, 0x0EB9 }, { 0x0EBB, 0x0EBC }, { 0x0EC8, 0x0ECD },
- { 0x0F18, 0x0F19 }, { 0x0F35, 0x0F35 }, { 0x0F37, 0x0F37 },
- { 0x0F39, 0x0F39 }, { 0x0F71, 0x0F7E }, { 0x0F80, 0x0F84 },
- { 0x0F86, 0x0F87 }, { 0x0F90, 0x0F97 }, { 0x0F99, 0x0FBC },
- { 0x0FC6, 0x0FC6 }, { 0x102D, 0x1030 }, { 0x1032, 0x1032 },
- { 0x1036, 0x1037 }, { 0x1039, 0x1039 }, { 0x1058, 0x1059 },
- { 0x1160, 0x11FF }, { 0x17B7, 0x17BD }, { 0x17C6, 0x17C6 },
- { 0x17C9, 0x17D3 }, { 0x180B, 0x180E }, { 0x18A9, 0x18A9 },
- { 0x200B, 0x200F }, { 0x202A, 0x202E }, { 0x206A, 0x206F },
- { 0x20D0, 0x20E3 }, { 0x302A, 0x302F }, { 0x3099, 0x309A },
- { 0xFB1E, 0xFB1E }, { 0xFE20, 0xFE23 }, { 0xFEFF, 0xFEFF },
- { 0xFFF9, 0xFFFB }
- };
-
- /* test for 8-bit control characters */
- if (ucs == 0)
- return 0;
- if (ucs < 32 || (ucs >= 0x7f && ucs < 0xa0))
- return -1;
-
- /* binary search in table of non-spacing characters */
- if (bisearch(ucs, combining,
- sizeof(combining) / sizeof(struct interval) - 1))
- return 0;
-
- /* if we arrive here, ucs is not a combining or C0/C1 control character */
-
- return 1 +
- (ucs >= 0x1100 &&
- (ucs <= 0x115f || /* Hangul Jamo init. consonants */
- (ucs >= 0x2e80 && ucs <= 0xa4cf && (ucs & ~0x0011) != 0x300a &&
- ucs != 0x303f) || /* CJK ... Yi */
- (ucs >= 0xac00 && ucs <= 0xd7a3) || /* Hangul Syllables */
- (ucs >= 0xf900 && ucs <= 0xfaff) || /* CJK Compatibility Ideographs */
- (ucs >= 0xfe30 && ucs <= 0xfe6f) || /* CJK Compatibility Forms */
- (ucs >= 0xff00 && ucs <= 0xff5f) || /* Fullwidth Forms */
- (ucs >= 0xffe0 && ucs <= 0xffe6) ||
- (ucs >= 0x20000 && ucs <= 0x2ffff)));
-}
-
-
-int wcswidth(const wchar_t *pwcs, size_t n)
-{
- int w, width = 0;
-
- for (;*pwcs && n-- > 0; pwcs++)
- if ((w = wcwidth(*pwcs)) < 0)
- return -1;
- else
- width += w;
-
- return width;
-}
-
-
-/*
- * The following function is the same as wcwidth(), except that
- * spacing characters in the East Asian Ambiguous (A) category as
- * defined in Unicode Technical Report #11 have a column width of 2.
- * This experimental variant might be useful for users of CJK legacy
- * encodings who want to migrate to UCS. It is not otherwise
- * recommended for general use.
- */
-static int wcwidth_cjk(wchar_t ucs)
-{
- /* sorted list of non-overlapping intervals of East Asian Ambiguous
- * characters */
- static const struct interval ambiguous[] = {
- { 0x00A1, 0x00A1 }, { 0x00A4, 0x00A4 }, { 0x00A7, 0x00A8 },
- { 0x00AA, 0x00AA }, { 0x00AD, 0x00AE }, { 0x00B0, 0x00B4 },
- { 0x00B6, 0x00BA }, { 0x00BC, 0x00BF }, { 0x00C6, 0x00C6 },
- { 0x00D0, 0x00D0 }, { 0x00D7, 0x00D8 }, { 0x00DE, 0x00E1 },
- { 0x00E6, 0x00E6 }, { 0x00E8, 0x00EA }, { 0x00EC, 0x00ED },
- { 0x00F0, 0x00F0 }, { 0x00F2, 0x00F3 }, { 0x00F7, 0x00FA },
- { 0x00FC, 0x00FC }, { 0x00FE, 0x00FE }, { 0x0101, 0x0101 },
- { 0x0111, 0x0111 }, { 0x0113, 0x0113 }, { 0x011B, 0x011B },
- { 0x0126, 0x0127 }, { 0x012B, 0x012B }, { 0x0131, 0x0133 },
- { 0x0138, 0x0138 }, { 0x013F, 0x0142 }, { 0x0144, 0x0144 },
- { 0x0148, 0x014B }, { 0x014D, 0x014D }, { 0x0152, 0x0153 },
- { 0x0166, 0x0167 }, { 0x016B, 0x016B }, { 0x01CE, 0x01CE },
- { 0x01D0, 0x01D0 }, { 0x01D2, 0x01D2 }, { 0x01D4, 0x01D4 },
- { 0x01D6, 0x01D6 }, { 0x01D8, 0x01D8 }, { 0x01DA, 0x01DA },
- { 0x01DC, 0x01DC }, { 0x0251, 0x0251 }, { 0x0261, 0x0261 },
- { 0x02C4, 0x02C4 }, { 0x02C7, 0x02C7 }, { 0x02C9, 0x02CB },
- { 0x02CD, 0x02CD }, { 0x02D0, 0x02D0 }, { 0x02D8, 0x02DB },
- { 0x02DD, 0x02DD }, { 0x02DF, 0x02DF }, { 0x0300, 0x034E },
- { 0x0360, 0x0362 }, { 0x0391, 0x03A1 }, { 0x03A3, 0x03A9 },
- { 0x03B1, 0x03C1 }, { 0x03C3, 0x03C9 }, { 0x0401, 0x0401 },
- { 0x0410, 0x044F }, { 0x0451, 0x0451 }, { 0x2010, 0x2010 },
- { 0x2013, 0x2016 }, { 0x2018, 0x2019 }, { 0x201C, 0x201D },
- { 0x2020, 0x2022 }, { 0x2024, 0x2027 }, { 0x2030, 0x2030 },
- { 0x2032, 0x2033 }, { 0x2035, 0x2035 }, { 0x203B, 0x203B },
- { 0x203E, 0x203E }, { 0x2074, 0x2074 }, { 0x207F, 0x207F },
- { 0x2081, 0x2084 }, { 0x20AC, 0x20AC }, { 0x2103, 0x2103 },
- { 0x2105, 0x2105 }, { 0x2109, 0x2109 }, { 0x2113, 0x2113 },
- { 0x2116, 0x2116 }, { 0x2121, 0x2122 }, { 0x2126, 0x2126 },
- { 0x212B, 0x212B }, { 0x2153, 0x2155 }, { 0x215B, 0x215E },
- { 0x2160, 0x216B }, { 0x2170, 0x2179 }, { 0x2190, 0x2199 },
- { 0x21B8, 0x21B9 }, { 0x21D2, 0x21D2 }, { 0x21D4, 0x21D4 },
- { 0x21E7, 0x21E7 }, { 0x2200, 0x2200 }, { 0x2202, 0x2203 },
- { 0x2207, 0x2208 }, { 0x220B, 0x220B }, { 0x220F, 0x220F },
- { 0x2211, 0x2211 }, { 0x2215, 0x2215 }, { 0x221A, 0x221A },
- { 0x221D, 0x2220 }, { 0x2223, 0x2223 }, { 0x2225, 0x2225 },
- { 0x2227, 0x222C }, { 0x222E, 0x222E }, { 0x2234, 0x2237 },
- { 0x223C, 0x223D }, { 0x2248, 0x2248 }, { 0x224C, 0x224C },
- { 0x2252, 0x2252 }, { 0x2260, 0x2261 }, { 0x2264, 0x2267 },
- { 0x226A, 0x226B }, { 0x226E, 0x226F }, { 0x2282, 0x2283 },
- { 0x2286, 0x2287 }, { 0x2295, 0x2295 }, { 0x2299, 0x2299 },
- { 0x22A5, 0x22A5 }, { 0x22BF, 0x22BF }, { 0x2312, 0x2312 },
- { 0x2329, 0x232A }, { 0x2460, 0x24BF }, { 0x24D0, 0x24E9 },
- { 0x2500, 0x254B }, { 0x2550, 0x2574 }, { 0x2580, 0x258F },
- { 0x2592, 0x2595 }, { 0x25A0, 0x25A1 }, { 0x25A3, 0x25A9 },
- { 0x25B2, 0x25B3 }, { 0x25B6, 0x25B7 }, { 0x25BC, 0x25BD },
- { 0x25C0, 0x25C1 }, { 0x25C6, 0x25C8 }, { 0x25CB, 0x25CB },
- { 0x25CE, 0x25D1 }, { 0x25E2, 0x25E5 }, { 0x25EF, 0x25EF },
- { 0x2605, 0x2606 }, { 0x2609, 0x2609 }, { 0x260E, 0x260F },
- { 0x261C, 0x261C }, { 0x261E, 0x261E }, { 0x2640, 0x2640 },
- { 0x2642, 0x2642 }, { 0x2660, 0x2661 }, { 0x2663, 0x2665 },
- { 0x2667, 0x266A }, { 0x266C, 0x266D }, { 0x266F, 0x266F },
- { 0x273D, 0x273D }, { 0x3008, 0x300B }, { 0x3014, 0x3015 },
- { 0x3018, 0x301B }, { 0xFFFD, 0xFFFD }
- };
-
- /* binary search in table of non-spacing characters */
- if (bisearch(ucs, ambiguous,
- sizeof(ambiguous) / sizeof(struct interval) - 1))
- return 2;
-
- return wcwidth(ucs);
-}
-
-
-int wcswidth_cjk(const wchar_t *pwcs, size_t n)
-{
- int w, width = 0;
-
- for (;*pwcs && n-- > 0; pwcs++)
- if ((w = wcwidth_cjk(*pwcs)) < 0)
- return -1;
- else
- width += w;
-
- return width;
-}
diff --git a/readline-4.3/tcap.h b/readline-4.3/tcap.h
deleted file mode 100644
index 58ab894..0000000
--- a/readline-4.3/tcap.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/* tcap.h -- termcap library functions and variables. */
-
-/* Copyright (C) 1996 Free Software Foundation, Inc.
-
- This file contains the Readline Library (the Library), a set of
- routines for providing Emacs style line input to programs that ask
- for it.
-
- The Library is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- The Library is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if !defined (_RLTCAP_H_)
-#define _RLTCAP_H_
-
-#if defined (HAVE_CONFIG_H)
-# include "config.h"
-#endif
-
-#if defined (HAVE_TERMCAP_H)
-# if defined (__linux__) && !defined (SPEED_T_IN_SYS_TYPES)
-# include "rltty.h"
-# endif
-# include <termcap.h>
-#else
-
-/* On Solaris2, sys/types.h #includes sys/reg.h, which #defines PC.
- Unfortunately, PC is a global variable used by the termcap library. */
-#ifdef PC
-# undef PC
-#endif
-
-extern char PC;
-extern char *UP, *BC;
-
-extern short ospeed;
-
-extern int tgetent ();
-extern int tgetflag ();
-extern int tgetnum ();
-extern char *tgetstr ();
-
-extern int tputs ();
-
-extern char *tgoto ();
-
-#endif /* HAVE_TERMCAP_H */
-
-#endif /* !_RLTCAP_H_ */
diff --git a/readline-4.3/terminal.c b/readline-4.3/terminal.c
deleted file mode 100644
index 4788247..0000000
--- a/readline-4.3/terminal.c
+++ /dev/null
@@ -1,662 +0,0 @@
-/* terminal.c -- controlling the terminal with termcap. */
-
-/* Copyright (C) 1996 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <sys/types.h>
-#include "posixstat.h"
-#include <fcntl.h>
-#if defined (HAVE_SYS_FILE_H)
-# include <sys/file.h>
-#endif /* HAVE_SYS_FILE_H */
-
-#if defined (HAVE_UNISTD_H)
-# include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#if defined (HAVE_LOCALE_H)
-# include <locale.h>
-#endif
-
-#include <stdio.h>
-
-/* System-specific feature definitions and include files. */
-#include "rldefs.h"
-
-#if defined (GWINSZ_IN_SYS_IOCTL) && !defined (TIOCGWINSZ)
-# include <sys/ioctl.h>
-#endif /* GWINSZ_IN_SYS_IOCTL && !TIOCGWINSZ */
-
-#include "rltty.h"
-#include "tcap.h"
-
-/* Some standard library routines. */
-#include "readline.h"
-#include "history.h"
-
-#include "rlprivate.h"
-#include "rlshell.h"
-#include "xmalloc.h"
-
-#define CUSTOM_REDISPLAY_FUNC() (rl_redisplay_function != rl_redisplay)
-#define CUSTOM_INPUT_FUNC() (rl_getc_function != rl_getc)
-
-/* **************************************************************** */
-/* */
-/* Terminal and Termcap */
-/* */
-/* **************************************************************** */
-
-static char *term_buffer = (char *)NULL;
-static char *term_string_buffer = (char *)NULL;
-
-static int tcap_initialized;
-
-#if !defined (__linux__)
-# if defined (__EMX__) || defined (NEED_EXTERN_PC)
-extern
-# endif /* __EMX__ || NEED_EXTERN_PC */
-char PC, *BC, *UP;
-#endif /* __linux__ */
-
-/* Some strings to control terminal actions. These are output by tputs (). */
-char *_rl_term_clreol;
-char *_rl_term_clrpag;
-char *_rl_term_cr;
-char *_rl_term_backspace;
-char *_rl_term_goto;
-char *_rl_term_pc;
-
-/* Non-zero if we determine that the terminal can do character insertion. */
-int _rl_terminal_can_insert = 0;
-
-/* How to insert characters. */
-char *_rl_term_im;
-char *_rl_term_ei;
-char *_rl_term_ic;
-char *_rl_term_ip;
-char *_rl_term_IC;
-
-/* How to delete characters. */
-char *_rl_term_dc;
-char *_rl_term_DC;
-
-#if defined (HACK_TERMCAP_MOTION)
-char *_rl_term_forward_char;
-#endif /* HACK_TERMCAP_MOTION */
-
-/* How to go up a line. */
-char *_rl_term_up;
-
-/* A visible bell; char if the terminal can be made to flash the screen. */
-static char *_rl_visible_bell;
-
-/* Non-zero means the terminal can auto-wrap lines. */
-int _rl_term_autowrap;
-
-/* Non-zero means that this terminal has a meta key. */
-static int term_has_meta;
-
-/* The sequences to write to turn on and off the meta key, if this
- terminal has one. */
-static char *_rl_term_mm;
-static char *_rl_term_mo;
-
-/* The key sequences output by the arrow keys, if this terminal has any. */
-static char *_rl_term_ku;
-static char *_rl_term_kd;
-static char *_rl_term_kr;
-static char *_rl_term_kl;
-
-/* How to initialize and reset the arrow keys, if this terminal has any. */
-static char *_rl_term_ks;
-static char *_rl_term_ke;
-
-/* The key sequences sent by the Home and End keys, if any. */
-static char *_rl_term_kh;
-static char *_rl_term_kH;
-static char *_rl_term_at7; /* @7 */
-
-/* Insert key */
-static char *_rl_term_kI;
-
-/* Cursor control */
-static char *_rl_term_vs; /* very visible */
-static char *_rl_term_ve; /* normal */
-
-static void bind_termcap_arrow_keys PARAMS((Keymap));
-
-/* Variables that hold the screen dimensions, used by the display code. */
-int _rl_screenwidth, _rl_screenheight, _rl_screenchars;
-
-/* Non-zero means the user wants to enable the keypad. */
-int _rl_enable_keypad;
-
-/* Non-zero means the user wants to enable a meta key. */
-int _rl_enable_meta = 1;
-
-#if defined (__EMX__)
-static void
-_emx_get_screensize (swp, shp)
- int *swp, *shp;
-{
- int sz[2];
-
- _scrsize (sz);
-
- if (swp)
- *swp = sz[0];
- if (shp)
- *shp = sz[1];
-}
-#endif
-
-/* Get readline's idea of the screen size. TTY is a file descriptor open
- to the terminal. If IGNORE_ENV is true, we do not pay attention to the
- values of $LINES and $COLUMNS. The tests for TERM_STRING_BUFFER being
- non-null serve to check whether or not we have initialized termcap. */
-void
-_rl_get_screen_size (tty, ignore_env)
- int tty, ignore_env;
-{
- char *ss;
-#if defined (TIOCGWINSZ)
- struct winsize window_size;
-#endif /* TIOCGWINSZ */
-
-#if defined (TIOCGWINSZ)
- if (ioctl (tty, TIOCGWINSZ, &window_size) == 0)
- {
- _rl_screenwidth = (int) window_size.ws_col;
- _rl_screenheight = (int) window_size.ws_row;
- }
-#endif /* TIOCGWINSZ */
-
-#if defined (__EMX__)
- _emx_get_screensize (&_rl_screenwidth, &_rl_screenheight);
-#endif
-
- /* Environment variable COLUMNS overrides setting of "co" if IGNORE_ENV
- is unset. */
- if (_rl_screenwidth <= 0)
- {
- if (ignore_env == 0 && (ss = sh_get_env_value ("COLUMNS")))
- _rl_screenwidth = atoi (ss);
-
-#if !defined (__DJGPP__)
- if (_rl_screenwidth <= 0 && term_string_buffer)
- _rl_screenwidth = tgetnum ("co");
-#endif
- }
-
- /* Environment variable LINES overrides setting of "li" if IGNORE_ENV
- is unset. */
- if (_rl_screenheight <= 0)
- {
- if (ignore_env == 0 && (ss = sh_get_env_value ("LINES")))
- _rl_screenheight = atoi (ss);
-
-#if !defined (__DJGPP__)
- if (_rl_screenheight <= 0 && term_string_buffer)
- _rl_screenheight = tgetnum ("li");
-#endif
- }
-
- /* If all else fails, default to 80x24 terminal. */
- if (_rl_screenwidth <= 1)
- _rl_screenwidth = 80;
-
- if (_rl_screenheight <= 0)
- _rl_screenheight = 24;
-
- /* If we're being compiled as part of bash, set the environment
- variables $LINES and $COLUMNS to new values. Otherwise, just
- do a pair of putenv () or setenv () calls. */
- sh_set_lines_and_columns (_rl_screenheight, _rl_screenwidth);
-
- if (_rl_term_autowrap == 0)
- _rl_screenwidth--;
-
- _rl_screenchars = _rl_screenwidth * _rl_screenheight;
-}
-
-void
-_rl_set_screen_size (rows, cols)
- int rows, cols;
-{
- if (rows == 0 || cols == 0)
- return;
-
- _rl_screenheight = rows;
- _rl_screenwidth = cols;
-
- if (_rl_term_autowrap == 0)
- _rl_screenwidth--;
-
- _rl_screenchars = _rl_screenwidth * _rl_screenheight;
-}
-
-void
-rl_set_screen_size (rows, cols)
- int rows, cols;
-{
- _rl_set_screen_size (rows, cols);
-}
-
-void
-rl_get_screen_size (rows, cols)
- int *rows, *cols;
-{
- if (rows)
- *rows = _rl_screenheight;
- if (cols)
- *cols = _rl_screenwidth;
-}
-
-void
-rl_resize_terminal ()
-{
- if (readline_echoing_p)
- {
- _rl_get_screen_size (fileno (rl_instream), 1);
- if (CUSTOM_REDISPLAY_FUNC ())
- rl_forced_update_display ();
- else
- _rl_redisplay_after_sigwinch ();
- }
-}
-
-struct _tc_string {
- const char *tc_var;
- char **tc_value;
-};
-
-/* This should be kept sorted, just in case we decide to change the
- search algorithm to something smarter. */
-static struct _tc_string tc_strings[] =
-{
- { "@7", &_rl_term_at7 },
- { "DC", &_rl_term_DC },
- { "IC", &_rl_term_IC },
- { "ce", &_rl_term_clreol },
- { "cl", &_rl_term_clrpag },
- { "cr", &_rl_term_cr },
- { "dc", &_rl_term_dc },
- { "ei", &_rl_term_ei },
- { "ic", &_rl_term_ic },
- { "im", &_rl_term_im },
- { "kH", &_rl_term_kH }, /* home down ?? */
- { "kI", &_rl_term_kI }, /* insert */
- { "kd", &_rl_term_kd },
- { "ke", &_rl_term_ke }, /* end keypad mode */
- { "kh", &_rl_term_kh }, /* home */
- { "kl", &_rl_term_kl },
- { "kr", &_rl_term_kr },
- { "ks", &_rl_term_ks }, /* start keypad mode */
- { "ku", &_rl_term_ku },
- { "le", &_rl_term_backspace },
- { "mm", &_rl_term_mm },
- { "mo", &_rl_term_mo },
-#if defined (HACK_TERMCAP_MOTION)
- { "nd", &_rl_term_forward_char },
-#endif
- { "pc", &_rl_term_pc },
- { "up", &_rl_term_up },
- { "vb", &_rl_visible_bell },
- { "vs", &_rl_term_vs },
- { "ve", &_rl_term_ve },
-};
-
-#define NUM_TC_STRINGS (sizeof (tc_strings) / sizeof (struct _tc_string))
-
-/* Read the desired terminal capability strings into BP. The capabilities
- are described in the TC_STRINGS table. */
-static void
-get_term_capabilities (bp)
- char **bp;
-{
-#if !defined (__DJGPP__) /* XXX - doesn't DJGPP have a termcap library? */
- register int i;
-
- for (i = 0; i < NUM_TC_STRINGS; i++)
-# ifdef __LCC__
- *(tc_strings[i].tc_value) = tgetstr ((char *)tc_strings[i].tc_var, bp);
-# else
- *(tc_strings[i].tc_value) = tgetstr ((char *)tc_strings[i].tc_var, bp);
-# endif
-#endif
- tcap_initialized = 1;
-}
-
-int
-_rl_init_terminal_io (terminal_name)
- const char *terminal_name;
-{
- const char *term;
- char *buffer;
- int tty, tgetent_ret;
-
- term = terminal_name ? terminal_name : sh_get_env_value ("TERM");
- _rl_term_clrpag = _rl_term_cr = _rl_term_clreol = (char *)NULL;
- tty = rl_instream ? fileno (rl_instream) : 0;
- _rl_screenwidth = _rl_screenheight = 0;
-
- if (term == 0)
- term = "dumb";
-
- /* I've separated this out for later work on not calling tgetent at all
- if the calling application has supplied a custom redisplay function,
- (and possibly if the application has supplied a custom input function). */
- if (CUSTOM_REDISPLAY_FUNC())
- {
- tgetent_ret = -1;
- }
- else
- {
- if (term_string_buffer == 0)
- term_string_buffer = (char *)xmalloc(2032);
-
- if (term_buffer == 0)
- term_buffer = (char *)xmalloc(4080);
-
- buffer = term_string_buffer;
-
- tgetent_ret = tgetent (term_buffer, term);
- }
-
- if (tgetent_ret <= 0)
- {
- FREE (term_string_buffer);
- FREE (term_buffer);
- buffer = term_buffer = term_string_buffer = (char *)NULL;
-
- _rl_term_autowrap = 0; /* used by _rl_get_screen_size */
-
-#if defined (__EMX__)
- _emx_get_screensize (&_rl_screenwidth, &_rl_screenheight);
- _rl_screenwidth--;
-#else /* !__EMX__ */
- _rl_get_screen_size (tty, 0);
-#endif /* !__EMX__ */
-
- /* Defaults. */
- if (_rl_screenwidth <= 0 || _rl_screenheight <= 0)
- {
- _rl_screenwidth = 79;
- _rl_screenheight = 24;
- }
-
- /* Everything below here is used by the redisplay code (tputs). */
- _rl_screenchars = _rl_screenwidth * _rl_screenheight;
- _rl_term_cr = "\r";
- _rl_term_im = _rl_term_ei = _rl_term_ic = _rl_term_IC = (char *)NULL;
- _rl_term_up = _rl_term_dc = _rl_term_DC = _rl_visible_bell = (char *)NULL;
- _rl_term_ku = _rl_term_kd = _rl_term_kl = _rl_term_kr = (char *)NULL;
- _rl_term_kh = _rl_term_kH = _rl_term_kI = (char *)NULL;
- _rl_term_ks = _rl_term_ke = _rl_term_at7 = (char *)NULL;
- _rl_term_mm = _rl_term_mo = (char *)NULL;
- _rl_term_ve = _rl_term_vs = (char *)NULL;
-#if defined (HACK_TERMCAP_MOTION)
- term_forward_char = (char *)NULL;
-#endif
- _rl_terminal_can_insert = term_has_meta = 0;
-
- /* Reasonable defaults for tgoto(). Readline currently only uses
- tgoto if _rl_term_IC or _rl_term_DC is defined, but just in case we
- change that later... */
- PC = '\0';
- BC = _rl_term_backspace = "\b";
- UP = _rl_term_up;
-
- return 0;
- }
-
- get_term_capabilities (&buffer);
-
- /* Set up the variables that the termcap library expects the application
- to provide. */
- PC = _rl_term_pc ? *_rl_term_pc : 0;
- BC = _rl_term_backspace;
- UP = _rl_term_up;
-
- if (!_rl_term_cr)
- _rl_term_cr = "\r";
-
- _rl_term_autowrap = tgetflag ("am") && tgetflag ("xn");
-
- _rl_get_screen_size (tty, 0);
-
- /* "An application program can assume that the terminal can do
- character insertion if *any one of* the capabilities `IC',
- `im', `ic' or `ip' is provided." But we can't do anything if
- only `ip' is provided, so... */
- _rl_terminal_can_insert = (_rl_term_IC || _rl_term_im || _rl_term_ic);
-
- /* Check to see if this terminal has a meta key and clear the capability
- variables if there is none. */
- term_has_meta = (tgetflag ("km") || tgetflag ("MT"));
- if (!term_has_meta)
- _rl_term_mm = _rl_term_mo = (char *)NULL;
-
- /* Attempt to find and bind the arrow keys. Do not override already
- bound keys in an overzealous attempt, however. */
-
- bind_termcap_arrow_keys (emacs_standard_keymap);
-
-#if defined (VI_MODE)
- bind_termcap_arrow_keys (vi_movement_keymap);
- bind_termcap_arrow_keys (vi_insertion_keymap);
-#endif /* VI_MODE */
-
- return 0;
-}
-
-/* Bind the arrow key sequences from the termcap description in MAP. */
-static void
-bind_termcap_arrow_keys (map)
- Keymap map;
-{
- Keymap xkeymap;
-
- xkeymap = _rl_keymap;
- _rl_keymap = map;
-
- _rl_bind_if_unbound (_rl_term_ku, rl_get_previous_history);
- _rl_bind_if_unbound (_rl_term_kd, rl_get_next_history);
- _rl_bind_if_unbound (_rl_term_kr, rl_forward);
- _rl_bind_if_unbound (_rl_term_kl, rl_backward);
-
- _rl_bind_if_unbound (_rl_term_kh, rl_beg_of_line); /* Home */
- _rl_bind_if_unbound (_rl_term_at7, rl_end_of_line); /* End */
-
- _rl_keymap = xkeymap;
-}
-
-char *
-rl_get_termcap (cap)
- const char *cap;
-{
- register int i;
-
- if (tcap_initialized == 0)
- return ((char *)NULL);
- for (i = 0; i < NUM_TC_STRINGS; i++)
- {
- if (tc_strings[i].tc_var[0] == cap[0] && strcmp (tc_strings[i].tc_var, cap) == 0)
- return *(tc_strings[i].tc_value);
- }
- return ((char *)NULL);
-}
-
-/* Re-initialize the terminal considering that the TERM/TERMCAP variable
- has changed. */
-int
-rl_reset_terminal (terminal_name)
- const char *terminal_name;
-{
- _rl_init_terminal_io (terminal_name);
- return 0;
-}
-
-/* A function for the use of tputs () */
-#ifdef _MINIX
-void
-_rl_output_character_function (c)
- int c;
-{
- putc (c, _rl_out_stream);
-}
-#else /* !_MINIX */
-int
-_rl_output_character_function (c)
- int c;
-{
- return putc (c, _rl_out_stream);
-}
-#endif /* !_MINIX */
-
-/* Write COUNT characters from STRING to the output stream. */
-void
-_rl_output_some_chars (string, count)
- const char *string;
- int count;
-{
- fwrite (string, 1, count, _rl_out_stream);
-}
-
-/* Move the cursor back. */
-int
-_rl_backspace (count)
- int count;
-{
- register int i;
-
- if (_rl_term_backspace)
- for (i = 0; i < count; i++)
- tputs (_rl_term_backspace, 1, _rl_output_character_function);
- else
- for (i = 0; i < count; i++)
- putc ('\b', _rl_out_stream);
- return 0;
-}
-
-/* Move to the start of the next line. */
-int
-rl_crlf ()
-{
-#if defined (NEW_TTY_DRIVER)
- if (_rl_term_cr)
- tputs (_rl_term_cr, 1, _rl_output_character_function);
-#endif /* NEW_TTY_DRIVER */
- putc ('\n', _rl_out_stream);
- return 0;
-}
-
-/* Ring the terminal bell. */
-int
-rl_ding ()
-{
- if (readline_echoing_p)
- {
- switch (_rl_bell_preference)
- {
- case NO_BELL:
- default:
- break;
- case VISIBLE_BELL:
- if (_rl_visible_bell)
- {
- tputs (_rl_visible_bell, 1, _rl_output_character_function);
- break;
- }
- /* FALLTHROUGH */
- case AUDIBLE_BELL:
- fprintf (stderr, "\007");
- fflush (stderr);
- break;
- }
- return (0);
- }
- return (-1);
-}
-
-/* **************************************************************** */
-/* */
-/* Controlling the Meta Key and Keypad */
-/* */
-/* **************************************************************** */
-
-void
-_rl_enable_meta_key ()
-{
-#if !defined (__DJGPP__)
- if (term_has_meta && _rl_term_mm)
- tputs (_rl_term_mm, 1, _rl_output_character_function);
-#endif
-}
-
-void
-_rl_control_keypad (on)
- int on;
-{
-#if !defined (__DJGPP__)
- if (on && _rl_term_ks)
- tputs (_rl_term_ks, 1, _rl_output_character_function);
- else if (!on && _rl_term_ke)
- tputs (_rl_term_ke, 1, _rl_output_character_function);
-#endif
-}
-
-/* **************************************************************** */
-/* */
-/* Controlling the Cursor */
-/* */
-/* **************************************************************** */
-
-/* Set the cursor appropriately depending on IM, which is one of the
- insert modes (insert or overwrite). Insert mode gets the normal
- cursor. Overwrite mode gets a very visible cursor. Only does
- anything if we have both capabilities. */
-void
-_rl_set_cursor (im, force)
- int im, force;
-{
- if (_rl_term_ve && _rl_term_vs)
- {
- if (force || im != rl_insert_mode)
- {
- if (im == RL_IM_OVERWRITE)
- tputs (_rl_term_vs, 1, _rl_output_character_function);
- else
- tputs (_rl_term_ve, 1, _rl_output_character_function);
- }
- }
-}
diff --git a/readline-4.3/text.c b/readline-4.3/text.c
deleted file mode 100644
index 2a7b724..0000000
--- a/readline-4.3/text.c
+++ /dev/null
@@ -1,1540 +0,0 @@
-/* text.c -- text handling commands for readline. */
-
-/* Copyright (C) 1987-2002 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#if defined (HAVE_UNISTD_H)
-# include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#if defined (HAVE_LOCALE_H)
-# include <locale.h>
-#endif
-
-#include <stdio.h>
-
-/* System-specific feature definitions and include files. */
-#include "rldefs.h"
-#include "rlmbutil.h"
-
-#if defined (__EMX__)
-# define INCL_DOSPROCESS
-# include <os2.h>
-#endif /* __EMX__ */
-
-/* Some standard library routines. */
-#include "readline.h"
-#include "history.h"
-
-#include "rlprivate.h"
-#include "rlshell.h"
-#include "xmalloc.h"
-
-/* Forward declarations. */
-static int rl_change_case PARAMS((int, int));
-static int _rl_char_search PARAMS((int, int, int));
-
-/* **************************************************************** */
-/* */
-/* Insert and Delete */
-/* */
-/* **************************************************************** */
-
-/* Insert a string of text into the line at point. This is the only
- way that you should do insertion. _rl_insert_char () calls this
- function. Returns the number of characters inserted. */
-int
-rl_insert_text (string)
- const char *string;
-{
- register int i, l;
-
- l = (string && *string) ? strlen (string) : 0;
- if (l == 0)
- return 0;
-
- if (rl_end + l >= rl_line_buffer_len)
- rl_extend_line_buffer (rl_end + l);
-
- for (i = rl_end; i >= rl_point; i--)
- rl_line_buffer[i + l] = rl_line_buffer[i];
- strncpy (rl_line_buffer + rl_point, string, l);
-
- /* Remember how to undo this if we aren't undoing something. */
- if (_rl_doing_an_undo == 0)
- {
- /* If possible and desirable, concatenate the undos. */
- if ((l == 1) &&
- rl_undo_list &&
- (rl_undo_list->what == UNDO_INSERT) &&
- (rl_undo_list->end == rl_point) &&
- (rl_undo_list->end - rl_undo_list->start < 20))
- rl_undo_list->end++;
- else
- rl_add_undo (UNDO_INSERT, rl_point, rl_point + l, (char *)NULL);
- }
- rl_point += l;
- rl_end += l;
- rl_line_buffer[rl_end] = '\0';
- return l;
-}
-
-/* Delete the string between FROM and TO. FROM is inclusive, TO is not.
- Returns the number of characters deleted. */
-int
-rl_delete_text (from, to)
- int from, to;
-{
- register char *text;
- register int diff, i;
-
- /* Fix it if the caller is confused. */
- if (from > to)
- SWAP (from, to);
-
- /* fix boundaries */
- if (to > rl_end)
- {
- to = rl_end;
- if (from > to)
- from = to;
- }
- if (from < 0)
- from = 0;
-
- text = rl_copy_text (from, to);
-
- /* Some versions of strncpy() can't handle overlapping arguments. */
- diff = to - from;
- for (i = from; i < rl_end - diff; i++)
- rl_line_buffer[i] = rl_line_buffer[i + diff];
-
- /* Remember how to undo this delete. */
- if (_rl_doing_an_undo == 0)
- rl_add_undo (UNDO_DELETE, from, to, text);
- else
- free (text);
-
- rl_end -= diff;
- rl_line_buffer[rl_end] = '\0';
- return (diff);
-}
-
-/* Fix up point so that it is within the line boundaries after killing
- text. If FIX_MARK_TOO is non-zero, the mark is forced within line
- boundaries also. */
-
-#define _RL_FIX_POINT(x) \
- do { \
- if (x > rl_end) \
- x = rl_end; \
- else if (x < 0) \
- x = 0; \
- } while (0)
-
-void
-_rl_fix_point (fix_mark_too)
- int fix_mark_too;
-{
- _RL_FIX_POINT (rl_point);
- if (fix_mark_too)
- _RL_FIX_POINT (rl_mark);
-}
-#undef _RL_FIX_POINT
-
-int
-_rl_replace_text (text, start, end)
- const char *text;
- int start, end;
-{
- int n;
-
- rl_begin_undo_group ();
- rl_delete_text (start, end + 1);
- rl_point = start;
- n = rl_insert_text (text);
- rl_end_undo_group ();
-
- return n;
-}
-
-/* Replace the current line buffer contents with TEXT. If CLEAR_UNDO is
- non-zero, we free the current undo list. */
-void
-rl_replace_line (text, clear_undo)
- const char *text;
- int clear_undo;
-{
- int len;
-
- len = strlen (text);
- if (len >= rl_line_buffer_len)
- rl_extend_line_buffer (len);
- strcpy (rl_line_buffer, text);
- rl_end = len;
-
- if (clear_undo)
- rl_free_undo_list ();
-
- _rl_fix_point (1);
-}
-
-/* **************************************************************** */
-/* */
-/* Readline character functions */
-/* */
-/* **************************************************************** */
-
-/* This is not a gap editor, just a stupid line input routine. No hair
- is involved in writing any of the functions, and none should be. */
-
-/* Note that:
-
- rl_end is the place in the string that we would place '\0';
- i.e., it is always safe to place '\0' there.
-
- rl_point is the place in the string where the cursor is. Sometimes
- this is the same as rl_end.
-
- Any command that is called interactively receives two arguments.
- The first is a count: the numeric arg pased to this command.
- The second is the key which invoked this command.
-*/
-
-/* **************************************************************** */
-/* */
-/* Movement Commands */
-/* */
-/* **************************************************************** */
-
-/* Note that if you `optimize' the display for these functions, you cannot
- use said functions in other functions which do not do optimizing display.
- I.e., you will have to update the data base for rl_redisplay, and you
- might as well let rl_redisplay do that job. */
-
-/* Move forward COUNT bytes. */
-int
-rl_forward_byte (count, key)
- int count, key;
-{
- if (count < 0)
- return (rl_backward_byte (-count, key));
-
- if (count > 0)
- {
- int end = rl_point + count;
-#if defined (VI_MODE)
- int lend = rl_end > 0 ? rl_end - (rl_editing_mode == vi_mode) : rl_end;
-#else
- int lend = rl_end;
-#endif
-
- if (end > lend)
- {
- rl_point = lend;
- rl_ding ();
- }
- else
- rl_point = end;
- }
-
- if (rl_end < 0)
- rl_end = 0;
-
- return 0;
-}
-
-#if defined (HANDLE_MULTIBYTE)
-/* Move forward COUNT characters. */
-int
-rl_forward_char (count, key)
- int count, key;
-{
- int point;
-
- if (MB_CUR_MAX == 1 || rl_byte_oriented)
- return (rl_forward_byte (count, key));
-
- if (count < 0)
- return (rl_backward_char (-count, key));
-
- if (count > 0)
- {
- point = _rl_find_next_mbchar (rl_line_buffer, rl_point, count, MB_FIND_NONZERO);
-
-#if defined (VI_MODE)
- if (rl_end <= point && rl_editing_mode == vi_mode)
- point = _rl_find_prev_mbchar (rl_line_buffer, rl_end, MB_FIND_NONZERO);
-#endif
-
- if (rl_point == point)
- rl_ding ();
-
- rl_point = point;
-
- if (rl_end < 0)
- rl_end = 0;
- }
-
- return 0;
-}
-#else /* !HANDLE_MULTIBYTE */
-int
-rl_forward_char (count, key)
- int count, key;
-{
- return (rl_forward_byte (count, key));
-}
-#endif /* !HANDLE_MULTIBYTE */
-
-/* Backwards compatibility. */
-int
-rl_forward (count, key)
- int count, key;
-{
- return (rl_forward_char (count, key));
-}
-
-/* Move backward COUNT bytes. */
-int
-rl_backward_byte (count, key)
- int count, key;
-{
- if (count < 0)
- return (rl_forward_byte (-count, key));
-
- if (count > 0)
- {
- if (rl_point < count)
- {
- rl_point = 0;
- rl_ding ();
- }
- else
- rl_point -= count;
- }
-
- if (rl_point < 0)
- rl_point = 0;
-
- return 0;
-}
-
-#if defined (HANDLE_MULTIBYTE)
-/* Move backward COUNT characters. */
-int
-rl_backward_char (count, key)
- int count, key;
-{
- int point;
-
- if (MB_CUR_MAX == 1 || rl_byte_oriented)
- return (rl_backward_byte (count, key));
-
- if (count < 0)
- return (rl_forward_char (-count, key));
-
- if (count > 0)
- {
- point = rl_point;
-
- while (count > 0 && point > 0)
- {
- point = _rl_find_prev_mbchar (rl_line_buffer, point, MB_FIND_NONZERO);
- count--;
- }
- if (count > 0)
- {
- rl_point = 0;
- rl_ding ();
- }
- else
- rl_point = point;
- }
-
- return 0;
-}
-#else
-int
-rl_backward_char (count, key)
- int count, key;
-{
- return (rl_backward_byte (count, key));
-}
-#endif
-
-/* Backwards compatibility. */
-int
-rl_backward (count, key)
- int count, key;
-{
- return (rl_backward_char (count, key));
-}
-
-/* Move to the beginning of the line. */
-int
-rl_beg_of_line (count, key)
- int count, key;
-{
- rl_point = 0;
- return 0;
-}
-
-/* Move to the end of the line. */
-int
-rl_end_of_line (count, key)
- int count, key;
-{
- rl_point = rl_end;
- return 0;
-}
-
-/* XXX - these might need changes for multibyte characters */
-/* Move forward a word. We do what Emacs does. */
-int
-rl_forward_word (count, key)
- int count, key;
-{
- int c;
-
- if (count < 0)
- return (rl_backward_word (-count, key));
-
- while (count)
- {
- if (rl_point == rl_end)
- return 0;
-
- /* If we are not in a word, move forward until we are in one.
- Then, move forward until we hit a non-alphabetic character. */
- c = rl_line_buffer[rl_point];
- if (rl_alphabetic (c) == 0)
- {
- while (++rl_point < rl_end)
- {
- c = rl_line_buffer[rl_point];
- if (rl_alphabetic (c))
- break;
- }
- }
-
- if (rl_point == rl_end)
- return 0;
-
- while (++rl_point < rl_end)
- {
- c = rl_line_buffer[rl_point];
- if (rl_alphabetic (c) == 0)
- break;
- }
- --count;
- }
-
- return 0;
-}
-
-/* Move backward a word. We do what Emacs does. */
-int
-rl_backward_word (count, key)
- int count, key;
-{
- int c;
-
- if (count < 0)
- return (rl_forward_word (-count, key));
-
- while (count)
- {
- if (!rl_point)
- return 0;
-
- /* Like rl_forward_word (), except that we look at the characters
- just before point. */
-
- c = rl_line_buffer[rl_point - 1];
- if (rl_alphabetic (c) == 0)
- {
- while (--rl_point)
- {
- c = rl_line_buffer[rl_point - 1];
- if (rl_alphabetic (c))
- break;
- }
- }
-
- while (rl_point)
- {
- c = rl_line_buffer[rl_point - 1];
- if (rl_alphabetic (c) == 0)
- break;
- else
- --rl_point;
- }
-
- --count;
- }
-
- return 0;
-}
-
-/* Clear the current line. Numeric argument to C-l does this. */
-int
-rl_refresh_line (ignore1, ignore2)
- int ignore1, ignore2;
-{
- int curr_line;
-
- curr_line = _rl_current_display_line ();
-
- _rl_move_vert (curr_line);
- _rl_move_cursor_relative (0, rl_line_buffer); /* XXX is this right */
-
- _rl_clear_to_eol (0); /* arg of 0 means to not use spaces */
-
- rl_forced_update_display ();
- rl_display_fixed = 1;
-
- return 0;
-}
-
-/* C-l typed to a line without quoting clears the screen, and then reprints
- the prompt and the current input line. Given a numeric arg, redraw only
- the current line. */
-int
-rl_clear_screen (count, key)
- int count, key;
-{
- if (rl_explicit_arg)
- {
- rl_refresh_line (count, key);
- return 0;
- }
-
- _rl_clear_screen (); /* calls termcap function to clear screen */
- rl_forced_update_display ();
- rl_display_fixed = 1;
-
- return 0;
-}
-
-int
-rl_arrow_keys (count, c)
- int count, c;
-{
- int ch;
-
- RL_SETSTATE(RL_STATE_MOREINPUT);
- ch = rl_read_key ();
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
-
- switch (_rl_to_upper (ch))
- {
- case 'A':
- rl_get_previous_history (count, ch);
- break;
-
- case 'B':
- rl_get_next_history (count, ch);
- break;
-
- case 'C':
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- rl_forward_char (count, ch);
- else
- rl_forward_byte (count, ch);
- break;
-
- case 'D':
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- rl_backward_char (count, ch);
- else
- rl_backward_byte (count, ch);
- break;
-
- default:
- rl_ding ();
- }
-
- return 0;
-}
-
-/* **************************************************************** */
-/* */
-/* Text commands */
-/* */
-/* **************************************************************** */
-
-#ifdef HANDLE_MULTIBYTE
-static char pending_bytes[MB_LEN_MAX];
-static int pending_bytes_length = 0;
-static mbstate_t ps = {0};
-#endif
-
-/* Insert the character C at the current location, moving point forward.
- If C introduces a multibyte sequence, we read the whole sequence and
- then insert the multibyte char into the line buffer. */
-int
-_rl_insert_char (count, c)
- int count, c;
-{
- register int i;
- char *string;
-#ifdef HANDLE_MULTIBYTE
- int string_size;
- char incoming[MB_LEN_MAX + 1];
- int incoming_length = 0;
- mbstate_t ps_back;
- static int stored_count = 0;
-#endif
-
- if (count <= 0)
- return 0;
-
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX == 1 || rl_byte_oriented)
- {
- incoming[0] = c;
- incoming[1] = '\0';
- incoming_length = 1;
- }
- else
- {
- wchar_t wc;
- size_t ret;
-
- if (stored_count <= 0)
- stored_count = count;
- else
- count = stored_count;
-
- ps_back = ps;
- pending_bytes[pending_bytes_length++] = c;
- ret = mbrtowc (&wc, pending_bytes, pending_bytes_length, &ps);
-
- if (ret == (size_t)-2)
- {
- /* Bytes too short to compose character, try to wait for next byte.
- Restore the state of the byte sequence, because in this case the
- effect of mbstate is undefined. */
- ps = ps_back;
- return 1;
- }
- else if (ret == (size_t)-1)
- {
- /* Invalid byte sequence for the current locale. Treat first byte
- as a single character. */
- incoming[0] = pending_bytes[0];
- incoming[1] = '\0';
- incoming_length = 1;
- pending_bytes_length--;
- memmove (pending_bytes, pending_bytes + 1, pending_bytes_length);
- /* Clear the state of the byte sequence, because in this case the
- effect of mbstate is undefined. */
- memset (&ps, 0, sizeof (mbstate_t));
- }
- else if (ret == (size_t)0)
- {
- incoming[0] = '\0';
- incoming_length = 0;
- pending_bytes_length--;
- /* Clear the state of the byte sequence, because in this case the
- effect of mbstate is undefined. */
- memset (&ps, 0, sizeof (mbstate_t));
- }
- else
- {
- /* We successfully read a single multibyte character. */
- memcpy (incoming, pending_bytes, pending_bytes_length);
- incoming[pending_bytes_length] = '\0';
- incoming_length = pending_bytes_length;
- pending_bytes_length = 0;
- }
- }
-#endif /* HANDLE_MULTIBYTE */
-
- /* If we can optimize, then do it. But don't let people crash
- readline because of extra large arguments. */
- if (count > 1 && count <= 1024)
- {
-#if defined (HANDLE_MULTIBYTE)
- string_size = count * incoming_length;
- string = (char *)xmalloc (1 + string_size);
-
- i = 0;
- while (i < string_size)
- {
- strncpy (string + i, incoming, incoming_length);
- i += incoming_length;
- }
- incoming_length = 0;
- stored_count = 0;
-#else /* !HANDLE_MULTIBYTE */
- string = (char *)xmalloc (1 + count);
-
- for (i = 0; i < count; i++)
- string[i] = c;
-#endif /* !HANDLE_MULTIBYTE */
-
- string[i] = '\0';
- rl_insert_text (string);
- free (string);
-
- return 0;
- }
-
- if (count > 1024)
- {
- int decreaser;
-#if defined (HANDLE_MULTIBYTE)
- string_size = incoming_length * 1024;
- string = (char *)xmalloc (1 + string_size);
-
- i = 0;
- while (i < string_size)
- {
- strncpy (string + i, incoming, incoming_length);
- i += incoming_length;
- }
-
- while (count)
- {
- decreaser = (count > 1024) ? 1024 : count;
- string[decreaser*incoming_length] = '\0';
- rl_insert_text (string);
- count -= decreaser;
- }
-
- free (string);
- incoming_length = 0;
- stored_count = 0;
-#else /* !HANDLE_MULTIBYTE */
- char str[1024+1];
-
- for (i = 0; i < 1024; i++)
- str[i] = c;
-
- while (count)
- {
- decreaser = (count > 1024 ? 1024 : count);
- str[decreaser] = '\0';
- rl_insert_text (str);
- count -= decreaser;
- }
-#endif /* !HANDLE_MULTIBYTE */
-
- return 0;
- }
-
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX == 1 || rl_byte_oriented)
- {
-#endif
- /* We are inserting a single character.
- If there is pending input, then make a string of all of the
- pending characters that are bound to rl_insert, and insert
- them all. */
- if (_rl_any_typein ())
- _rl_insert_typein (c);
- else
- {
- /* Inserting a single character. */
- char str[2];
-
- str[1] = '\0';
- str[0] = c;
- rl_insert_text (str);
- }
-#if defined (HANDLE_MULTIBYTE)
- }
- else
- {
- rl_insert_text (incoming);
- stored_count = 0;
- }
-#endif
-
- return 0;
-}
-
-/* Overwrite the character at point (or next COUNT characters) with C.
- If C introduces a multibyte character sequence, read the entire sequence
- before starting the overwrite loop. */
-int
-_rl_overwrite_char (count, c)
- int count, c;
-{
- int i;
-#if defined (HANDLE_MULTIBYTE)
- char mbkey[MB_LEN_MAX];
- int k;
-
- /* Read an entire multibyte character sequence to insert COUNT times. */
- if (count > 0 && MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- k = _rl_read_mbstring (c, mbkey, MB_LEN_MAX);
-#endif
-
- for (i = 0; i < count; i++)
- {
- rl_begin_undo_group ();
-
- if (rl_point < rl_end)
- rl_delete (1, c);
-
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- rl_insert_text (mbkey);
- else
-#endif
- _rl_insert_char (1, c);
-
- rl_end_undo_group ();
- }
-
- return 0;
-}
-
-int
-rl_insert (count, c)
- int count, c;
-{
- return (rl_insert_mode == RL_IM_INSERT ? _rl_insert_char (count, c)
- : _rl_overwrite_char (count, c));
-}
-
-/* Insert the next typed character verbatim. */
-int
-rl_quoted_insert (count, key)
- int count, key;
-{
- int c;
-
-#if defined (HANDLE_SIGNALS)
- _rl_disable_tty_signals ();
-#endif
-
- RL_SETSTATE(RL_STATE_MOREINPUT);
- c = rl_read_key ();
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
-
-#if defined (HANDLE_SIGNALS)
- _rl_restore_tty_signals ();
-#endif
-
- return (_rl_insert_char (count, c));
-}
-
-/* Insert a tab character. */
-int
-rl_tab_insert (count, key)
- int count, key;
-{
- return (_rl_insert_char (count, '\t'));
-}
-
-/* What to do when a NEWLINE is pressed. We accept the whole line.
- KEY is the key that invoked this command. I guess it could have
- meaning in the future. */
-int
-rl_newline (count, key)
- int count, key;
-{
- rl_done = 1;
-
- if (_rl_history_preserve_point)
- _rl_history_saved_point = (rl_point == rl_end) ? -1 : rl_point;
-
- RL_SETSTATE(RL_STATE_DONE);
-
-#if defined (VI_MODE)
- if (rl_editing_mode == vi_mode)
- {
- _rl_vi_done_inserting ();
- _rl_vi_reset_last ();
- }
-#endif /* VI_MODE */
-
- /* If we've been asked to erase empty lines, suppress the final update,
- since _rl_update_final calls rl_crlf(). */
- if (rl_erase_empty_line && rl_point == 0 && rl_end == 0)
- return 0;
-
- if (readline_echoing_p)
- _rl_update_final ();
- return 0;
-}
-
-/* What to do for some uppercase characters, like meta characters,
- and some characters appearing in emacs_ctlx_keymap. This function
- is just a stub, you bind keys to it and the code in _rl_dispatch ()
- is special cased. */
-int
-rl_do_lowercase_version (ignore1, ignore2)
- int ignore1, ignore2;
-{
- return 0;
-}
-
-/* This is different from what vi does, so the code's not shared. Emacs
- rubout in overwrite mode has one oddity: it replaces a control
- character that's displayed as two characters (^X) with two spaces. */
-int
-_rl_overwrite_rubout (count, key)
- int count, key;
-{
- int opoint;
- int i, l;
-
- if (rl_point == 0)
- {
- rl_ding ();
- return 1;
- }
-
- opoint = rl_point;
-
- /* L == number of spaces to insert */
- for (i = l = 0; i < count; i++)
- {
- rl_backward_char (1, key);
- l += rl_character_len (rl_line_buffer[rl_point], rl_point); /* not exactly right */
- }
-
- rl_begin_undo_group ();
-
- if (count > 1 || rl_explicit_arg)
- rl_kill_text (opoint, rl_point);
- else
- rl_delete_text (opoint, rl_point);
-
- /* Emacs puts point at the beginning of the sequence of spaces. */
- opoint = rl_point;
- _rl_insert_char (l, ' ');
- rl_point = opoint;
-
- rl_end_undo_group ();
-
- return 0;
-}
-
-/* Rubout the character behind point. */
-int
-rl_rubout (count, key)
- int count, key;
-{
- if (count < 0)
- return (rl_delete (-count, key));
-
- if (!rl_point)
- {
- rl_ding ();
- return -1;
- }
-
- if (rl_insert_mode == RL_IM_OVERWRITE)
- return (_rl_overwrite_rubout (count, key));
-
- return (_rl_rubout_char (count, key));
-}
-
-int
-_rl_rubout_char (count, key)
- int count, key;
-{
- int orig_point;
- unsigned char c;
-
- /* Duplicated code because this is called from other parts of the library. */
- if (count < 0)
- return (rl_delete (-count, key));
-
- if (rl_point == 0)
- {
- rl_ding ();
- return -1;
- }
-
- if (count > 1 || rl_explicit_arg)
- {
- orig_point = rl_point;
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- rl_backward_char (count, key);
- else
-#endif
- rl_backward_byte (count, key);
- rl_kill_text (orig_point, rl_point);
- }
- else
- {
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX == 1 || rl_byte_oriented)
- {
-#endif
- c = rl_line_buffer[--rl_point];
- rl_delete_text (rl_point, rl_point + 1);
-#if defined (HANDLE_MULTIBYTE)
- }
- else
- {
- int orig_point;
-
- orig_point = rl_point;
- rl_point = _rl_find_prev_mbchar (rl_line_buffer, rl_point, MB_FIND_NONZERO);
- c = rl_line_buffer[rl_point];
- rl_delete_text (rl_point, orig_point);
- }
-#endif /* HANDLE_MULTIBYTE */
-
- /* I don't think that the hack for end of line is needed for
- multibyte chars. */
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX == 1 || rl_byte_oriented)
-#endif
- if (rl_point == rl_end && ISPRINT (c) && _rl_last_c_pos)
- {
- int l;
- l = rl_character_len (c, rl_point);
- _rl_erase_at_end_of_line (l);
- }
- }
-
- return 0;
-}
-
-/* Delete the character under the cursor. Given a numeric argument,
- kill that many characters instead. */
-int
-rl_delete (count, key)
- int count, key;
-{
- int r;
-
- if (count < 0)
- return (_rl_rubout_char (-count, key));
-
- if (rl_point == rl_end)
- {
- rl_ding ();
- return -1;
- }
-
- if (count > 1 || rl_explicit_arg)
- {
- int orig_point = rl_point;
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- rl_forward_char (count, key);
- else
-#endif
- rl_forward_byte (count, key);
-
- r = rl_kill_text (orig_point, rl_point);
- rl_point = orig_point;
- return r;
- }
- else
- {
- int new_point;
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- new_point = _rl_find_next_mbchar (rl_line_buffer, rl_point, 1, MB_FIND_NONZERO);
- else
- new_point = rl_point + 1;
-
- return (rl_delete_text (rl_point, new_point));
- }
-}
-
-/* Delete the character under the cursor, unless the insertion
- point is at the end of the line, in which case the character
- behind the cursor is deleted. COUNT is obeyed and may be used
- to delete forward or backward that many characters. */
-int
-rl_rubout_or_delete (count, key)
- int count, key;
-{
- if (rl_end != 0 && rl_point == rl_end)
- return (_rl_rubout_char (count, key));
- else
- return (rl_delete (count, key));
-}
-
-/* Delete all spaces and tabs around point. */
-int
-rl_delete_horizontal_space (count, ignore)
- int count, ignore;
-{
- int start = rl_point;
-
- while (rl_point && whitespace (rl_line_buffer[rl_point - 1]))
- rl_point--;
-
- start = rl_point;
-
- while (rl_point < rl_end && whitespace (rl_line_buffer[rl_point]))
- rl_point++;
-
- if (start != rl_point)
- {
- rl_delete_text (start, rl_point);
- rl_point = start;
- }
- return 0;
-}
-
-/* Like the tcsh editing function delete-char-or-list. The eof character
- is caught before this is invoked, so this really does the same thing as
- delete-char-or-list-or-eof, as long as it's bound to the eof character. */
-int
-rl_delete_or_show_completions (count, key)
- int count, key;
-{
- if (rl_end != 0 && rl_point == rl_end)
- return (rl_possible_completions (count, key));
- else
- return (rl_delete (count, key));
-}
-
-#ifndef RL_COMMENT_BEGIN_DEFAULT
-#define RL_COMMENT_BEGIN_DEFAULT "#"
-#endif
-
-/* Turn the current line into a comment in shell history.
- A K*rn shell style function. */
-int
-rl_insert_comment (count, key)
- int count, key;
-{
- char *rl_comment_text;
- int rl_comment_len;
-
- rl_beg_of_line (1, key);
- rl_comment_text = _rl_comment_begin ? _rl_comment_begin : RL_COMMENT_BEGIN_DEFAULT;
-
- if (rl_explicit_arg == 0)
- rl_insert_text (rl_comment_text);
- else
- {
- rl_comment_len = strlen (rl_comment_text);
- if (STREQN (rl_comment_text, rl_line_buffer, rl_comment_len))
- rl_delete_text (rl_point, rl_point + rl_comment_len);
- else
- rl_insert_text (rl_comment_text);
- }
-
- (*rl_redisplay_function) ();
- rl_newline (1, '\n');
-
- return (0);
-}
-
-/* **************************************************************** */
-/* */
-/* Changing Case */
-/* */
-/* **************************************************************** */
-
-/* The three kinds of things that we know how to do. */
-#define UpCase 1
-#define DownCase 2
-#define CapCase 3
-
-/* Uppercase the word at point. */
-int
-rl_upcase_word (count, key)
- int count, key;
-{
- return (rl_change_case (count, UpCase));
-}
-
-/* Lowercase the word at point. */
-int
-rl_downcase_word (count, key)
- int count, key;
-{
- return (rl_change_case (count, DownCase));
-}
-
-/* Upcase the first letter, downcase the rest. */
-int
-rl_capitalize_word (count, key)
- int count, key;
-{
- return (rl_change_case (count, CapCase));
-}
-
-/* The meaty function.
- Change the case of COUNT words, performing OP on them.
- OP is one of UpCase, DownCase, or CapCase.
- If a negative argument is given, leave point where it started,
- otherwise, leave it where it moves to. */
-static int
-rl_change_case (count, op)
- int count, op;
-{
- register int start, end;
- int inword, c;
-
- start = rl_point;
- rl_forward_word (count, 0);
- end = rl_point;
-
- if (count < 0)
- SWAP (start, end);
-
- /* We are going to modify some text, so let's prepare to undo it. */
- rl_modifying (start, end);
-
- for (inword = 0; start < end; start++)
- {
- c = rl_line_buffer[start];
- switch (op)
- {
- case UpCase:
- rl_line_buffer[start] = _rl_to_upper (c);
- break;
-
- case DownCase:
- rl_line_buffer[start] = _rl_to_lower (c);
- break;
-
- case CapCase:
- rl_line_buffer[start] = (inword == 0) ? _rl_to_upper (c) : _rl_to_lower (c);
- inword = rl_alphabetic (rl_line_buffer[start]);
- break;
-
- default:
- rl_ding ();
- return -1;
- }
- }
- rl_point = end;
- return 0;
-}
-
-/* **************************************************************** */
-/* */
-/* Transposition */
-/* */
-/* **************************************************************** */
-
-/* Transpose the words at point. If point is at the end of the line,
- transpose the two words before point. */
-int
-rl_transpose_words (count, key)
- int count, key;
-{
- char *word1, *word2;
- int w1_beg, w1_end, w2_beg, w2_end;
- int orig_point = rl_point;
-
- if (!count)
- return 0;
-
- /* Find the two words. */
- rl_forward_word (count, key);
- w2_end = rl_point;
- rl_backward_word (1, key);
- w2_beg = rl_point;
- rl_backward_word (count, key);
- w1_beg = rl_point;
- rl_forward_word (1, key);
- w1_end = rl_point;
-
- /* Do some check to make sure that there really are two words. */
- if ((w1_beg == w2_beg) || (w2_beg < w1_end))
- {
- rl_ding ();
- rl_point = orig_point;
- return -1;
- }
-
- /* Get the text of the words. */
- word1 = rl_copy_text (w1_beg, w1_end);
- word2 = rl_copy_text (w2_beg, w2_end);
-
- /* We are about to do many insertions and deletions. Remember them
- as one operation. */
- rl_begin_undo_group ();
-
- /* Do the stuff at word2 first, so that we don't have to worry
- about word1 moving. */
- rl_point = w2_beg;
- rl_delete_text (w2_beg, w2_end);
- rl_insert_text (word1);
-
- rl_point = w1_beg;
- rl_delete_text (w1_beg, w1_end);
- rl_insert_text (word2);
-
- /* This is exactly correct since the text before this point has not
- changed in length. */
- rl_point = w2_end;
-
- /* I think that does it. */
- rl_end_undo_group ();
- free (word1);
- free (word2);
-
- return 0;
-}
-
-/* Transpose the characters at point. If point is at the end of the line,
- then transpose the characters before point. */
-int
-rl_transpose_chars (count, key)
- int count, key;
-{
-#if defined (HANDLE_MULTIBYTE)
- char *dummy;
- int i, prev_point;
-#else
- char dummy[2];
-#endif
- int char_length;
-
- if (count == 0)
- return 0;
-
- if (!rl_point || rl_end < 2)
- {
- rl_ding ();
- return -1;
- }
-
- rl_begin_undo_group ();
-
- if (rl_point == rl_end)
- {
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- rl_point = _rl_find_prev_mbchar (rl_line_buffer, rl_point, MB_FIND_NONZERO);
- else
- --rl_point;
- count = 1;
- }
-
-#if defined (HANDLE_MULTIBYTE)
- prev_point = rl_point;
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- rl_point = _rl_find_prev_mbchar (rl_line_buffer, rl_point, MB_FIND_NONZERO);
- else
-#endif
- rl_point--;
-
-#if defined (HANDLE_MULTIBYTE)
- char_length = prev_point - rl_point;
- dummy = (char *)xmalloc (char_length + 1);
- for (i = 0; i < char_length; i++)
- dummy[i] = rl_line_buffer[rl_point + i];
- dummy[i] = '\0';
-#else
- dummy[0] = rl_line_buffer[rl_point];
- dummy[char_length = 1] = '\0';
-#endif
-
- rl_delete_text (rl_point, rl_point + char_length);
-
- rl_point = _rl_find_next_mbchar (rl_line_buffer, rl_point, count, MB_FIND_NONZERO);
-
- _rl_fix_point (0);
- rl_insert_text (dummy);
- rl_end_undo_group ();
-
-#if defined (HANDLE_MULTIBYTE)
- free (dummy);
-#endif
-
- return 0;
-}
-
-/* **************************************************************** */
-/* */
-/* Character Searching */
-/* */
-/* **************************************************************** */
-
-int
-#if defined (HANDLE_MULTIBYTE)
-_rl_char_search_internal (count, dir, smbchar, len)
- int count, dir;
- char *smbchar;
- int len;
-#else
-_rl_char_search_internal (count, dir, schar)
- int count, dir, schar;
-#endif
-{
- int pos, inc;
-#if defined (HANDLE_MULTIBYTE)
- int prepos;
-#endif
-
- pos = rl_point;
- inc = (dir < 0) ? -1 : 1;
- while (count)
- {
- if ((dir < 0 && pos <= 0) || (dir > 0 && pos >= rl_end))
- {
- rl_ding ();
- return -1;
- }
-
-#if defined (HANDLE_MULTIBYTE)
- pos = (inc > 0) ? _rl_find_next_mbchar (rl_line_buffer, pos, 1, MB_FIND_ANY)
- : _rl_find_prev_mbchar (rl_line_buffer, pos, MB_FIND_ANY);
-#else
- pos += inc;
-#endif
- do
- {
-#if defined (HANDLE_MULTIBYTE)
- if (_rl_is_mbchar_matched (rl_line_buffer, pos, rl_end, smbchar, len))
-#else
- if (rl_line_buffer[pos] == schar)
-#endif
- {
- count--;
- if (dir < 0)
- rl_point = (dir == BTO) ? _rl_find_next_mbchar (rl_line_buffer, pos, 1, MB_FIND_ANY)
- : pos;
- else
- rl_point = (dir == FTO) ? _rl_find_prev_mbchar (rl_line_buffer, pos, MB_FIND_ANY)
- : pos;
- break;
- }
-#if defined (HANDLE_MULTIBYTE)
- prepos = pos;
-#endif
- }
-#if defined (HANDLE_MULTIBYTE)
- while ((dir < 0) ? (pos = _rl_find_prev_mbchar (rl_line_buffer, pos, MB_FIND_ANY)) != prepos
- : (pos = _rl_find_next_mbchar (rl_line_buffer, pos, 1, MB_FIND_ANY)) != prepos);
-#else
- while ((dir < 0) ? pos-- : ++pos < rl_end);
-#endif
- }
- return (0);
-}
-
-/* Search COUNT times for a character read from the current input stream.
- FDIR is the direction to search if COUNT is non-negative; otherwise
- the search goes in BDIR. So much is dependent on HANDLE_MULTIBYTE
- that there are two separate versions of this function. */
-#if defined (HANDLE_MULTIBYTE)
-static int
-_rl_char_search (count, fdir, bdir)
- int count, fdir, bdir;
-{
- char mbchar[MB_LEN_MAX];
- int mb_len;
-
- mb_len = _rl_read_mbchar (mbchar, MB_LEN_MAX);
-
- if (count < 0)
- return (_rl_char_search_internal (-count, bdir, mbchar, mb_len));
- else
- return (_rl_char_search_internal (count, fdir, mbchar, mb_len));
-}
-#else /* !HANDLE_MULTIBYTE */
-static int
-_rl_char_search (count, fdir, bdir)
- int count, fdir, bdir;
-{
- int c;
-
- RL_SETSTATE(RL_STATE_MOREINPUT);
- c = rl_read_key ();
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
-
- if (count < 0)
- return (_rl_char_search_internal (-count, bdir, c));
- else
- return (_rl_char_search_internal (count, fdir, c));
-}
-#endif /* !HANDLE_MULTIBYTE */
-
-int
-rl_char_search (count, key)
- int count, key;
-{
- return (_rl_char_search (count, FFIND, BFIND));
-}
-
-int
-rl_backward_char_search (count, key)
- int count, key;
-{
- return (_rl_char_search (count, BFIND, FFIND));
-}
-
-/* **************************************************************** */
-/* */
-/* The Mark and the Region. */
-/* */
-/* **************************************************************** */
-
-/* Set the mark at POSITION. */
-int
-_rl_set_mark_at_pos (position)
- int position;
-{
- if (position > rl_end)
- return -1;
-
- rl_mark = position;
- return 0;
-}
-
-/* A bindable command to set the mark. */
-int
-rl_set_mark (count, key)
- int count, key;
-{
- return (_rl_set_mark_at_pos (rl_explicit_arg ? count : rl_point));
-}
-
-/* Exchange the position of mark and point. */
-int
-rl_exchange_point_and_mark (count, key)
- int count, key;
-{
- if (rl_mark > rl_end)
- rl_mark = -1;
-
- if (rl_mark == -1)
- {
- rl_ding ();
- return -1;
- }
- else
- SWAP (rl_point, rl_mark);
-
- return 0;
-}
diff --git a/readline-4.3/tilde.c b/readline-4.3/tilde.c
deleted file mode 100644
index 154f7f8..0000000
--- a/readline-4.3/tilde.c
+++ /dev/null
@@ -1,458 +0,0 @@
-/* tilde.c -- Tilde expansion code (~/foo := $HOME/foo). */
-
-/* Copyright (C) 1988,1989 Free Software Foundation, Inc.
-
- This file is part of GNU Readline, a library for reading lines
- of text with interactive input and history editing.
-
- Readline is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the
- Free Software Foundation; either version 2, or (at your option) any
- later version.
-
- Readline is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Readline; see the file COPYING. If not, write to the Free
- Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#if defined (HAVE_UNISTD_H)
-# ifdef _MINIX
-# include <sys/types.h>
-# endif
-# include <unistd.h>
-#endif
-
-#if defined (HAVE_STRING_H)
-# include <string.h>
-#else /* !HAVE_STRING_H */
-# include <strings.h>
-#endif /* !HAVE_STRING_H */
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#include <sys/types.h>
-#include <pwd.h>
-
-#include "tilde.h"
-
-#if defined (TEST) || defined (STATIC_MALLOC)
-static void *xmalloc (), *xrealloc ();
-#else
-# include "xmalloc.h"
-#endif /* TEST || STATIC_MALLOC */
-
-#if !defined (HAVE_GETPW_DECLS)
-extern struct passwd *getpwuid PARAMS((uid_t));
-extern struct passwd *getpwnam PARAMS((const char *));
-#endif /* !HAVE_GETPW_DECLS */
-
-#if !defined (savestring)
-#define savestring(x) strcpy ((char *)xmalloc (1 + strlen (x)), (x))
-#endif /* !savestring */
-
-#if !defined (NULL)
-# if defined (__STDC__)
-# define NULL ((void *) 0)
-# else
-# define NULL 0x0
-# endif /* !__STDC__ */
-#endif /* !NULL */
-
-/* If being compiled as part of bash, these will be satisfied from
- variables.o. If being compiled as part of readline, they will
- be satisfied from shell.o. */
-extern char *sh_get_home_dir PARAMS((void));
-extern char *sh_get_env_value PARAMS((const char *));
-
-/* The default value of tilde_additional_prefixes. This is set to
- whitespace preceding a tilde so that simple programs which do not
- perform any word separation get desired behaviour. */
-static const char *default_prefixes[] =
- { " ~", "\t~", (const char *)NULL };
-
-/* The default value of tilde_additional_suffixes. This is set to
- whitespace or newline so that simple programs which do not
- perform any word separation get desired behaviour. */
-static const char *default_suffixes[] =
- { " ", "\n", (const char *)NULL };
-
-/* If non-null, this contains the address of a function that the application
- wants called before trying the standard tilde expansions. The function
- is called with the text sans tilde, and returns a malloc()'ed string
- which is the expansion, or a NULL pointer if the expansion fails. */
-tilde_hook_func_t *tilde_expansion_preexpansion_hook = (tilde_hook_func_t *)NULL;
-
-/* If non-null, this contains the address of a function to call if the
- standard meaning for expanding a tilde fails. The function is called
- with the text (sans tilde, as in "foo"), and returns a malloc()'ed string
- which is the expansion, or a NULL pointer if there is no expansion. */
-tilde_hook_func_t *tilde_expansion_failure_hook = (tilde_hook_func_t *)NULL;
-
-/* When non-null, this is a NULL terminated array of strings which
- are duplicates for a tilde prefix. Bash uses this to expand
- `=~' and `:~'. */
-char **tilde_additional_prefixes = (char **)default_prefixes;
-
-/* When non-null, this is a NULL terminated array of strings which match
- the end of a username, instead of just "/". Bash sets this to
- `:' and `=~'. */
-char **tilde_additional_suffixes = (char **)default_suffixes;
-
-static int tilde_find_prefix PARAMS((const char *, int *));
-static int tilde_find_suffix PARAMS((const char *));
-static char *isolate_tilde_prefix PARAMS((const char *, int *));
-static char *glue_prefix_and_suffix PARAMS((char *, const char *, int));
-
-/* Find the start of a tilde expansion in STRING, and return the index of
- the tilde which starts the expansion. Place the length of the text
- which identified this tilde starter in LEN, excluding the tilde itself. */
-static int
-tilde_find_prefix (string, len)
- const char *string;
- int *len;
-{
- register int i, j, string_len;
- register char **prefixes;
-
- prefixes = tilde_additional_prefixes;
-
- string_len = strlen (string);
- *len = 0;
-
- if (*string == '\0' || *string == '~')
- return (0);
-
- if (prefixes)
- {
- for (i = 0; i < string_len; i++)
- {
- for (j = 0; prefixes[j]; j++)
- {
- if (strncmp (string + i, prefixes[j], strlen (prefixes[j])) == 0)
- {
- *len = strlen (prefixes[j]) - 1;
- return (i + *len);
- }
- }
- }
- }
- return (string_len);
-}
-
-/* Find the end of a tilde expansion in STRING, and return the index of
- the character which ends the tilde definition. */
-static int
-tilde_find_suffix (string)
- const char *string;
-{
- register int i, j, string_len;
- register char **suffixes;
-
- suffixes = tilde_additional_suffixes;
- string_len = strlen (string);
-
- for (i = 0; i < string_len; i++)
- {
-#if defined (__MSDOS__)
- if (string[i] == '/' || string[i] == '\\' /* || !string[i] */)
-#else
- if (string[i] == '/' /* || !string[i] */)
-#endif
- break;
-
- for (j = 0; suffixes && suffixes[j]; j++)
- {
- if (strncmp (string + i, suffixes[j], strlen (suffixes[j])) == 0)
- return (i);
- }
- }
- return (i);
-}
-
-/* Return a new string which is the result of tilde expanding STRING. */
-char *
-tilde_expand (string)
- const char *string;
-{
- char *result;
- int result_size, result_index;
-
- result_index = result_size = 0;
- if (result = strchr (string, '~'))
- result = (char *)xmalloc (result_size = (strlen (string) + 16));
- else
- result = (char *)xmalloc (result_size = (strlen (string) + 1));
-
- /* Scan through STRING expanding tildes as we come to them. */
- while (1)
- {
- register int start, end;
- char *tilde_word, *expansion;
- int len;
-
- /* Make START point to the tilde which starts the expansion. */
- start = tilde_find_prefix (string, &len);
-
- /* Copy the skipped text into the result. */
- if ((result_index + start + 1) > result_size)
- result = (char *)xrealloc (result, 1 + (result_size += (start + 20)));
-
- strncpy (result + result_index, string, start);
- result_index += start;
-
- /* Advance STRING to the starting tilde. */
- string += start;
-
- /* Make END be the index of one after the last character of the
- username. */
- end = tilde_find_suffix (string);
-
- /* If both START and END are zero, we are all done. */
- if (!start && !end)
- break;
-
- /* Expand the entire tilde word, and copy it into RESULT. */
- tilde_word = (char *)xmalloc (1 + end);
- strncpy (tilde_word, string, end);
- tilde_word[end] = '\0';
- string += end;
-
- expansion = tilde_expand_word (tilde_word);
- free (tilde_word);
-
- len = strlen (expansion);
-#ifdef __CYGWIN__
- /* Fix for Cygwin to prevent ~user/xxx from expanding to //xxx when
- $HOME for `user' is /. On cygwin, // denotes a network drive. */
- if (len > 1 || *expansion != '/' || *string != '/')
-#endif
- {
- if ((result_index + len + 1) > result_size)
- result = (char *)xrealloc (result, 1 + (result_size += (len + 20)));
-
- strcpy (result + result_index, expansion);
- result_index += len;
- }
- free (expansion);
- }
-
- result[result_index] = '\0';
-
- return (result);
-}
-
-/* Take FNAME and return the tilde prefix we want expanded. If LENP is
- non-null, the index of the end of the prefix into FNAME is returned in
- the location it points to. */
-static char *
-isolate_tilde_prefix (fname, lenp)
- const char *fname;
- int *lenp;
-{
- char *ret;
- int i;
-
- ret = (char *)xmalloc (strlen (fname));
-#if defined (__MSDOS__)
- for (i = 1; fname[i] && fname[i] != '/' && fname[i] != '\\'; i++)
-#else
- for (i = 1; fname[i] && fname[i] != '/'; i++)
-#endif
- ret[i - 1] = fname[i];
- ret[i - 1] = '\0';
- if (lenp)
- *lenp = i;
- return ret;
-}
-
-/* Return a string that is PREFIX concatenated with SUFFIX starting at
- SUFFIND. */
-static char *
-glue_prefix_and_suffix (prefix, suffix, suffind)
- char *prefix;
- const char *suffix;
- int suffind;
-{
- char *ret;
- int plen, slen;
-
- plen = (prefix && *prefix) ? strlen (prefix) : 0;
- slen = strlen (suffix + suffind);
- ret = (char *)xmalloc (plen + slen + 1);
- if (plen)
- strcpy (ret, prefix);
- strcpy (ret + plen, suffix + suffind);
- return ret;
-}
-
-/* Do the work of tilde expansion on FILENAME. FILENAME starts with a
- tilde. If there is no expansion, call tilde_expansion_failure_hook.
- This always returns a newly-allocated string, never static storage. */
-char *
-tilde_expand_word (filename)
- const char *filename;
-{
- char *dirname, *expansion, *username;
- int user_len;
- struct passwd *user_entry;
-
- if (filename == 0)
- return ((char *)NULL);
-
- if (*filename != '~')
- return (savestring (filename));
-
- /* A leading `~/' or a bare `~' is *always* translated to the value of
- $HOME or the home directory of the current user, regardless of any
- preexpansion hook. */
- if (filename[1] == '\0' || filename[1] == '/')
- {
- /* Prefix $HOME to the rest of the string. */
- expansion = sh_get_env_value ("HOME");
-
- /* If there is no HOME variable, look up the directory in
- the password database. */
- if (expansion == 0)
- expansion = sh_get_home_dir ();
-
- return (glue_prefix_and_suffix (expansion, filename, 1));
- }
-
- username = isolate_tilde_prefix (filename, &user_len);
-
- if (tilde_expansion_preexpansion_hook)
- {
- expansion = (*tilde_expansion_preexpansion_hook) (username);
- if (expansion)
- {
- dirname = glue_prefix_and_suffix (expansion, filename, user_len);
- free (username);
- free (expansion);
- return (dirname);
- }
- }
-
- /* No preexpansion hook, or the preexpansion hook failed. Look in the
- password database. */
- dirname = (char *)NULL;
- user_entry = getpwnam (username);
- if (user_entry == 0)
- {
- /* If the calling program has a special syntax for expanding tildes,
- and we couldn't find a standard expansion, then let them try. */
- if (tilde_expansion_failure_hook)
- {
- expansion = (*tilde_expansion_failure_hook) (username);
- if (expansion)
- {
- dirname = glue_prefix_and_suffix (expansion, filename, user_len);
- free (expansion);
- }
- }
- free (username);
- /* If we don't have a failure hook, or if the failure hook did not
- expand the tilde, return a copy of what we were passed. */
- if (dirname == 0)
- dirname = savestring (filename);
- }
- else
- {
- free (username);
- dirname = glue_prefix_and_suffix (user_entry->pw_dir, filename, user_len);
- }
-
- endpwent ();
- return (dirname);
-}
-
-
-#if defined (TEST)
-#undef NULL
-#include <stdio.h>
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- char *result, line[512];
- int done = 0;
-
- while (!done)
- {
- printf ("~expand: ");
- fflush (stdout);
-
- if (!gets (line))
- strcpy (line, "done");
-
- if ((strcmp (line, "done") == 0) ||
- (strcmp (line, "quit") == 0) ||
- (strcmp (line, "exit") == 0))
- {
- done = 1;
- break;
- }
-
- result = tilde_expand (line);
- printf (" --> %s\n", result);
- free (result);
- }
- exit (0);
-}
-
-static void memory_error_and_abort ();
-
-static void *
-xmalloc (bytes)
- size_t bytes;
-{
- void *temp = (char *)malloc (bytes);
-
- if (!temp)
- memory_error_and_abort ();
- return (temp);
-}
-
-static void *
-xrealloc (pointer, bytes)
- void *pointer;
- int bytes;
-{
- void *temp;
-
- if (!pointer)
- temp = malloc (bytes);
- else
- temp = realloc (pointer, bytes);
-
- if (!temp)
- memory_error_and_abort ();
-
- return (temp);
-}
-
-static void
-memory_error_and_abort ()
-{
- fprintf (stderr, "readline: out of virtual memory\n");
- abort ();
-}
-
-/*
- * Local variables:
- * compile-command: "gcc -g -DTEST -o tilde tilde.c"
- * end:
- */
-#endif /* TEST */
diff --git a/readline-4.3/tilde.h b/readline-4.3/tilde.h
deleted file mode 100644
index f8182c9..0000000
--- a/readline-4.3/tilde.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/* tilde.h: Externally available variables and function in libtilde.a. */
-
-/* Copyright (C) 1992 Free Software Foundation, Inc.
-
- This file contains the Readline Library (the Library), a set of
- routines for providing Emacs style line input to programs that ask
- for it.
-
- The Library is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- The Library is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if !defined (_TILDE_H_)
-# define _TILDE_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* A function can be defined using prototypes and compile on both ANSI C
- and traditional C compilers with something like this:
- extern char *func PARAMS((char *, char *, int)); */
-
-#if !defined (PARAMS)
-# if defined (__STDC__) || defined (__GNUC__) || defined (__cplusplus)
-# define PARAMS(protos) protos
-# else
-# define PARAMS(protos) ()
-# endif
-#endif
-
-typedef char *tilde_hook_func_t PARAMS((char *));
-
-/* If non-null, this contains the address of a function that the application
- wants called before trying the standard tilde expansions. The function
- is called with the text sans tilde, and returns a malloc()'ed string
- which is the expansion, or a NULL pointer if the expansion fails. */
-extern tilde_hook_func_t *tilde_expansion_preexpansion_hook;
-
-/* If non-null, this contains the address of a function to call if the
- standard meaning for expanding a tilde fails. The function is called
- with the text (sans tilde, as in "foo"), and returns a malloc()'ed string
- which is the expansion, or a NULL pointer if there is no expansion. */
-extern tilde_hook_func_t *tilde_expansion_failure_hook;
-
-/* When non-null, this is a NULL terminated array of strings which
- are duplicates for a tilde prefix. Bash uses this to expand
- `=~' and `:~'. */
-extern char **tilde_additional_prefixes;
-
-/* When non-null, this is a NULL terminated array of strings which match
- the end of a username, instead of just "/". Bash sets this to
- `:' and `=~'. */
-extern char **tilde_additional_suffixes;
-
-/* Return a new string which is the result of tilde expanding STRING. */
-extern char *tilde_expand PARAMS((const char *));
-
-/* Do the work of tilde expansion on FILENAME. FILENAME starts with a
- tilde. If there is no expansion, call tilde_expansion_failure_hook. */
-extern char *tilde_expand_word PARAMS((const char *));
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _TILDE_H_ */
diff --git a/readline-4.3/undo.c b/readline-4.3/undo.c
deleted file mode 100644
index 25c287b..0000000
--- a/readline-4.3/undo.c
+++ /dev/null
@@ -1,263 +0,0 @@
-/* readline.c -- a general facility for reading lines of input
- with emacs style editing and completion. */
-
-/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <sys/types.h>
-
-#if defined (HAVE_UNISTD_H)
-# include <unistd.h> /* for _POSIX_VERSION */
-#endif /* HAVE_UNISTD_H */
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#include <stdio.h>
-
-/* System-specific feature definitions and include files. */
-#include "rldefs.h"
-
-/* Some standard library routines. */
-#include "readline.h"
-#include "history.h"
-
-#include "rlprivate.h"
-#include "xmalloc.h"
-
-/* Non-zero tells rl_delete_text and rl_insert_text to not add to
- the undo list. */
-int _rl_doing_an_undo = 0;
-
-/* How many unclosed undo groups we currently have. */
-int _rl_undo_group_level = 0;
-
-/* The current undo list for THE_LINE. */
-UNDO_LIST *rl_undo_list = (UNDO_LIST *)NULL;
-
-/* **************************************************************** */
-/* */
-/* Undo, and Undoing */
-/* */
-/* **************************************************************** */
-
-/* Remember how to undo something. Concatenate some undos if that
- seems right. */
-void
-rl_add_undo (what, start, end, text)
- enum undo_code what;
- int start, end;
- char *text;
-{
- UNDO_LIST *temp = (UNDO_LIST *)xmalloc (sizeof (UNDO_LIST));
- temp->what = what;
- temp->start = start;
- temp->end = end;
- temp->text = text;
- temp->next = rl_undo_list;
- rl_undo_list = temp;
-}
-
-/* Free the existing undo list. */
-void
-rl_free_undo_list ()
-{
- while (rl_undo_list)
- {
- UNDO_LIST *release = rl_undo_list;
- rl_undo_list = rl_undo_list->next;
-
- if (release->what == UNDO_DELETE)
- free (release->text);
-
- free (release);
- }
- rl_undo_list = (UNDO_LIST *)NULL;
-}
-
-/* Undo the next thing in the list. Return 0 if there
- is nothing to undo, or non-zero if there was. */
-int
-rl_do_undo ()
-{
- UNDO_LIST *release;
- int waiting_for_begin, start, end;
-
-#define TRANS(i) ((i) == -1 ? rl_point : ((i) == -2 ? rl_end : (i)))
-
- start = end = waiting_for_begin = 0;
- do
- {
- if (!rl_undo_list)
- return (0);
-
- _rl_doing_an_undo = 1;
- RL_SETSTATE(RL_STATE_UNDOING);
-
- /* To better support vi-mode, a start or end value of -1 means
- rl_point, and a value of -2 means rl_end. */
- if (rl_undo_list->what == UNDO_DELETE || rl_undo_list->what == UNDO_INSERT)
- {
- start = TRANS (rl_undo_list->start);
- end = TRANS (rl_undo_list->end);
- }
-
- switch (rl_undo_list->what)
- {
- /* Undoing deletes means inserting some text. */
- case UNDO_DELETE:
- rl_point = start;
- rl_insert_text (rl_undo_list->text);
- free (rl_undo_list->text);
- break;
-
- /* Undoing inserts means deleting some text. */
- case UNDO_INSERT:
- rl_delete_text (start, end);
- rl_point = start;
- break;
-
- /* Undoing an END means undoing everything 'til we get to a BEGIN. */
- case UNDO_END:
- waiting_for_begin++;
- break;
-
- /* Undoing a BEGIN means that we are done with this group. */
- case UNDO_BEGIN:
- if (waiting_for_begin)
- waiting_for_begin--;
- else
- rl_ding ();
- break;
- }
-
- _rl_doing_an_undo = 0;
- RL_UNSETSTATE(RL_STATE_UNDOING);
-
- release = rl_undo_list;
- rl_undo_list = rl_undo_list->next;
- free (release);
- }
- while (waiting_for_begin);
-
- return (1);
-}
-#undef TRANS
-
-int
-_rl_fix_last_undo_of_type (type, start, end)
- int type, start, end;
-{
- UNDO_LIST *rl;
-
- for (rl = rl_undo_list; rl; rl = rl->next)
- {
- if (rl->what == type)
- {
- rl->start = start;
- rl->end = end;
- return 0;
- }
- }
- return 1;
-}
-
-/* Begin a group. Subsequent undos are undone as an atomic operation. */
-int
-rl_begin_undo_group ()
-{
- rl_add_undo (UNDO_BEGIN, 0, 0, 0);
- _rl_undo_group_level++;
- return 0;
-}
-
-/* End an undo group started with rl_begin_undo_group (). */
-int
-rl_end_undo_group ()
-{
- rl_add_undo (UNDO_END, 0, 0, 0);
- _rl_undo_group_level--;
- return 0;
-}
-
-/* Save an undo entry for the text from START to END. */
-int
-rl_modifying (start, end)
- int start, end;
-{
- if (start > end)
- {
- SWAP (start, end);
- }
-
- if (start != end)
- {
- char *temp = rl_copy_text (start, end);
- rl_begin_undo_group ();
- rl_add_undo (UNDO_DELETE, start, end, temp);
- rl_add_undo (UNDO_INSERT, start, end, (char *)NULL);
- rl_end_undo_group ();
- }
- return 0;
-}
-
-/* Revert the current line to its previous state. */
-int
-rl_revert_line (count, key)
- int count, key;
-{
- if (!rl_undo_list)
- rl_ding ();
- else
- {
- while (rl_undo_list)
- rl_do_undo ();
- }
- return 0;
-}
-
-/* Do some undoing of things that were done. */
-int
-rl_undo_command (count, key)
- int count, key;
-{
- if (count < 0)
- return 0; /* Nothing to do. */
-
- while (count)
- {
- if (rl_do_undo ())
- count--;
- else
- {
- rl_ding ();
- break;
- }
- }
- return 0;
-}
diff --git a/readline-4.3/util.c b/readline-4.3/util.c
deleted file mode 100644
index c7bd360..0000000
--- a/readline-4.3/util.c
+++ /dev/null
@@ -1,338 +0,0 @@
-/* util.c -- readline utility functions */
-
-/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <sys/types.h>
-#include <fcntl.h>
-#include "posixjmp.h"
-
-#if defined (HAVE_UNISTD_H)
-# include <unistd.h> /* for _POSIX_VERSION */
-#endif /* HAVE_UNISTD_H */
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#include <stdio.h>
-#include <ctype.h>
-
-/* System-specific feature definitions and include files. */
-#include "rldefs.h"
-
-#if defined (TIOCSTAT_IN_SYS_IOCTL)
-# include <sys/ioctl.h>
-#endif /* TIOCSTAT_IN_SYS_IOCTL */
-
-/* Some standard library routines. */
-#include "readline.h"
-
-#include "rlprivate.h"
-#include "xmalloc.h"
-
-/* **************************************************************** */
-/* */
-/* Utility Functions */
-/* */
-/* **************************************************************** */
-
-/* Return 0 if C is not a member of the class of characters that belong
- in words, or 1 if it is. */
-
-int _rl_allow_pathname_alphabetic_chars = 0;
-static const char *pathname_alphabetic_chars = "/-_=~.#$";
-
-int
-rl_alphabetic (c)
- int c;
-{
- if (ALPHABETIC (c))
- return (1);
-
- return (_rl_allow_pathname_alphabetic_chars &&
- strchr (pathname_alphabetic_chars, c) != NULL);
-}
-
-/* How to abort things. */
-int
-_rl_abort_internal ()
-{
- rl_ding ();
- rl_clear_message ();
- _rl_init_argument ();
- rl_clear_pending_input ();
-
- RL_UNSETSTATE (RL_STATE_MACRODEF);
- while (rl_executing_macro)
- _rl_pop_executing_macro ();
-
- rl_last_func = (rl_command_func_t *)NULL;
- longjmp (readline_top_level, 1);
- return (0);
-}
-
-int
-rl_abort (count, key)
- int count, key;
-{
- return (_rl_abort_internal ());
-}
-
-int
-rl_tty_status (count, key)
- int count, key;
-{
-#if defined (TIOCSTAT)
- ioctl (1, TIOCSTAT, (char *)0);
- rl_refresh_line (count, key);
-#else
- rl_ding ();
-#endif
- return 0;
-}
-
-/* Return a copy of the string between FROM and TO.
- FROM is inclusive, TO is not. */
-char *
-rl_copy_text (from, to)
- int from, to;
-{
- register int length;
- char *copy;
-
- /* Fix it if the caller is confused. */
- if (from > to)
- SWAP (from, to);
-
- length = to - from;
- copy = (char *)xmalloc (1 + length);
- strncpy (copy, rl_line_buffer + from, length);
- copy[length] = '\0';
- return (copy);
-}
-
-/* Increase the size of RL_LINE_BUFFER until it has enough space to hold
- LEN characters. */
-void
-rl_extend_line_buffer (len)
- int len;
-{
- while (len >= rl_line_buffer_len)
- {
- rl_line_buffer_len += DEFAULT_BUFFER_SIZE;
- rl_line_buffer = (char *)xrealloc (rl_line_buffer, rl_line_buffer_len);
- }
-
- _rl_set_the_line ();
-}
-
-
-/* A function for simple tilde expansion. */
-int
-rl_tilde_expand (ignore, key)
- int ignore, key;
-{
- register int start, end;
- char *homedir, *temp;
- int len;
-
- end = rl_point;
- start = end - 1;
-
- if (rl_point == rl_end && rl_line_buffer[rl_point] == '~')
- {
- homedir = tilde_expand ("~");
- _rl_replace_text (homedir, start, end);
- return (0);
- }
- else if (rl_line_buffer[start] != '~')
- {
- for (; !whitespace (rl_line_buffer[start]) && start >= 0; start--)
- ;
- start++;
- }
-
- end = start;
- do
- end++;
- while (whitespace (rl_line_buffer[end]) == 0 && end < rl_end);
-
- if (whitespace (rl_line_buffer[end]) || end >= rl_end)
- end--;
-
- /* If the first character of the current word is a tilde, perform
- tilde expansion and insert the result. If not a tilde, do
- nothing. */
- if (rl_line_buffer[start] == '~')
- {
- len = end - start + 1;
- temp = (char *)xmalloc (len + 1);
- strncpy (temp, rl_line_buffer + start, len);
- temp[len] = '\0';
- homedir = tilde_expand (temp);
- free (temp);
-
- _rl_replace_text (homedir, start, end);
- }
-
- return (0);
-}
-
-/* **************************************************************** */
-/* */
-/* String Utility Functions */
-/* */
-/* **************************************************************** */
-
-/* Determine if s2 occurs in s1. If so, return a pointer to the
- match in s1. The compare is case insensitive. */
-char *
-_rl_strindex (s1, s2)
- register const char *s1, *s2;
-{
- register int i, l, len;
-
- for (i = 0, l = strlen (s2), len = strlen (s1); (len - i) >= l; i++)
- if (_rl_strnicmp (s1 + i, s2, l) == 0)
- return ((char *) (s1 + i));
- return ((char *)NULL);
-}
-
-#ifndef HAVE_STRPBRK
-/* Find the first occurrence in STRING1 of any character from STRING2.
- Return a pointer to the character in STRING1. */
-char *
-_rl_strpbrk (string1, string2)
- const char *string1, *string2;
-{
- register const char *scan;
-#if defined (HANDLE_MULTIBYTE)
- mbstate_t ps;
- register int i, v;
-
- memset (&ps, 0, sizeof (mbstate_t));
-#endif
-
- for (; *string1; string1++)
- {
- for (scan = string2; *scan; scan++)
- {
- if (*string1 == *scan)
- return ((char *)string1);
- }
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- v = _rl_get_char_len (string1, &ps);
- if (v > 1)
- string += v - 1; /* -1 to account for auto-increment in loop */
- }
-#endif
- }
- return ((char *)NULL);
-}
-#endif
-
-#if !defined (HAVE_STRCASECMP)
-/* Compare at most COUNT characters from string1 to string2. Case
- doesn't matter. */
-int
-_rl_strnicmp (string1, string2, count)
- char *string1, *string2;
- int count;
-{
- register char ch1, ch2;
-
- while (count)
- {
- ch1 = *string1++;
- ch2 = *string2++;
- if (_rl_to_upper(ch1) == _rl_to_upper(ch2))
- count--;
- else
- break;
- }
- return (count);
-}
-
-/* strcmp (), but caseless. */
-int
-_rl_stricmp (string1, string2)
- char *string1, *string2;
-{
- register char ch1, ch2;
-
- while (*string1 && *string2)
- {
- ch1 = *string1++;
- ch2 = *string2++;
- if (_rl_to_upper(ch1) != _rl_to_upper(ch2))
- return (1);
- }
- return (*string1 - *string2);
-}
-#endif /* !HAVE_STRCASECMP */
-
-/* Stupid comparison routine for qsort () ing strings. */
-int
-_rl_qsort_string_compare (s1, s2)
- char **s1, **s2;
-{
-#if defined (HAVE_STRCOLL)
- return (strcoll (*s1, *s2));
-#else
- int result;
-
- result = **s1 - **s2;
- if (result == 0)
- result = strcmp (*s1, *s2);
-
- return result;
-#endif
-}
-
-/* Function equivalents for the macros defined in chardefs.h. */
-#define FUNCTION_FOR_MACRO(f) int (f) (c) int c; { return f (c); }
-
-FUNCTION_FOR_MACRO (_rl_digit_p)
-FUNCTION_FOR_MACRO (_rl_digit_value)
-FUNCTION_FOR_MACRO (_rl_lowercase_p)
-FUNCTION_FOR_MACRO (_rl_pure_alphabetic)
-FUNCTION_FOR_MACRO (_rl_to_lower)
-FUNCTION_FOR_MACRO (_rl_to_upper)
-FUNCTION_FOR_MACRO (_rl_uppercase_p)
-
-/* Backwards compatibility, now that savestring has been removed from
- all `public' readline header files. */
-#undef _rl_savestring
-char *
-_rl_savestring (s)
- const char *s;
-{
- return (strcpy ((char *)xmalloc (1 + (int)strlen (s)), (s)));
-}
diff --git a/readline-4.3/vi_keymap.c b/readline-4.3/vi_keymap.c
deleted file mode 100644
index 53a67c6..0000000
--- a/readline-4.3/vi_keymap.c
+++ /dev/null
@@ -1,877 +0,0 @@
-/* vi_keymap.c -- the keymap for vi_mode in readline (). */
-
-/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if !defined (BUFSIZ)
-#include <stdio.h>
-#endif /* !BUFSIZ */
-
-#include "readline.h"
-
-#if 0
-extern KEYMAP_ENTRY_ARRAY vi_escape_keymap;
-#endif
-
-/* The keymap arrays for handling vi mode. */
-KEYMAP_ENTRY_ARRAY vi_movement_keymap = {
- /* The regular control keys come first. */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-@ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-a */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-b */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-c */
- { ISFUNC, rl_vi_eof_maybe }, /* Control-d */
- { ISFUNC, rl_emacs_editing_mode }, /* Control-e */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-f */
- { ISFUNC, rl_abort }, /* Control-g */
- { ISFUNC, rl_backward_char }, /* Control-h */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-i */
- { ISFUNC, rl_newline }, /* Control-j */
- { ISFUNC, rl_kill_line }, /* Control-k */
- { ISFUNC, rl_clear_screen }, /* Control-l */
- { ISFUNC, rl_newline }, /* Control-m */
- { ISFUNC, rl_get_next_history }, /* Control-n */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-o */
- { ISFUNC, rl_get_previous_history }, /* Control-p */
- { ISFUNC, rl_quoted_insert }, /* Control-q */
- { ISFUNC, rl_reverse_search_history }, /* Control-r */
- { ISFUNC, rl_forward_search_history }, /* Control-s */
- { ISFUNC, rl_transpose_chars }, /* Control-t */
- { ISFUNC, rl_unix_line_discard }, /* Control-u */
- { ISFUNC, rl_quoted_insert }, /* Control-v */
- { ISFUNC, rl_unix_word_rubout }, /* Control-w */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-x */
- { ISFUNC, rl_yank }, /* Control-y */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-z */
-
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-[ */ /* vi_escape_keymap */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-\ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-] */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-^ */
- { ISFUNC, rl_vi_undo }, /* Control-_ */
-
- /* The start of printing characters. */
- { ISFUNC, rl_forward_char }, /* SPACE */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* ! */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* " */
- { ISFUNC, rl_insert_comment }, /* # */
- { ISFUNC, rl_end_of_line }, /* $ */
- { ISFUNC, rl_vi_match }, /* % */
- { ISFUNC, rl_vi_tilde_expand }, /* & */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* ' */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* ( */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* ) */
- { ISFUNC, rl_vi_complete }, /* * */
- { ISFUNC, rl_get_next_history}, /* + */
- { ISFUNC, rl_vi_char_search }, /* , */
- { ISFUNC, rl_get_previous_history }, /* - */
- { ISFUNC, rl_vi_redo }, /* . */
- { ISFUNC, rl_vi_search }, /* / */
-
- /* Regular digits. */
- { ISFUNC, rl_beg_of_line }, /* 0 */
- { ISFUNC, rl_vi_arg_digit }, /* 1 */
- { ISFUNC, rl_vi_arg_digit }, /* 2 */
- { ISFUNC, rl_vi_arg_digit }, /* 3 */
- { ISFUNC, rl_vi_arg_digit }, /* 4 */
- { ISFUNC, rl_vi_arg_digit }, /* 5 */
- { ISFUNC, rl_vi_arg_digit }, /* 6 */
- { ISFUNC, rl_vi_arg_digit }, /* 7 */
- { ISFUNC, rl_vi_arg_digit }, /* 8 */
- { ISFUNC, rl_vi_arg_digit }, /* 9 */
-
- /* A little more punctuation. */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* : */
- { ISFUNC, rl_vi_char_search }, /* ; */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* < */
- { ISFUNC, rl_vi_complete }, /* = */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* > */
- { ISFUNC, rl_vi_search }, /* ? */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* @ */
-
- /* Uppercase alphabet. */
- { ISFUNC, rl_vi_append_eol }, /* A */
- { ISFUNC, rl_vi_prev_word}, /* B */
- { ISFUNC, rl_vi_change_to }, /* C */
- { ISFUNC, rl_vi_delete_to }, /* D */
- { ISFUNC, rl_vi_end_word }, /* E */
- { ISFUNC, rl_vi_char_search }, /* F */
- { ISFUNC, rl_vi_fetch_history }, /* G */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* H */
- { ISFUNC, rl_vi_insert_beg }, /* I */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* J */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* K */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* L */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* M */
- { ISFUNC, rl_vi_search_again }, /* N */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* O */
- { ISFUNC, rl_vi_put }, /* P */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Q */
- { ISFUNC, rl_vi_replace }, /* R */
- { ISFUNC, rl_vi_subst }, /* S */
- { ISFUNC, rl_vi_char_search }, /* T */
- { ISFUNC, rl_revert_line }, /* U */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* V */
- { ISFUNC, rl_vi_next_word }, /* W */
- { ISFUNC, rl_rubout }, /* X */
- { ISFUNC, rl_vi_yank_to }, /* Y */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Z */
-
- /* Some more punctuation. */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* [ */
- { ISFUNC, rl_vi_complete }, /* \ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* ] */
- { ISFUNC, rl_vi_first_print }, /* ^ */
- { ISFUNC, rl_vi_yank_arg }, /* _ */
- { ISFUNC, rl_vi_goto_mark }, /* ` */
-
- /* Lowercase alphabet. */
- { ISFUNC, rl_vi_append_mode }, /* a */
- { ISFUNC, rl_vi_prev_word }, /* b */
- { ISFUNC, rl_vi_change_to }, /* c */
- { ISFUNC, rl_vi_delete_to }, /* d */
- { ISFUNC, rl_vi_end_word }, /* e */
- { ISFUNC, rl_vi_char_search }, /* f */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* g */
- { ISFUNC, rl_backward_char }, /* h */
- { ISFUNC, rl_vi_insertion_mode }, /* i */
- { ISFUNC, rl_get_next_history }, /* j */
- { ISFUNC, rl_get_previous_history }, /* k */
- { ISFUNC, rl_forward_char }, /* l */
- { ISFUNC, rl_vi_set_mark }, /* m */
- { ISFUNC, rl_vi_search_again }, /* n */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* o */
- { ISFUNC, rl_vi_put }, /* p */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* q */
- { ISFUNC, rl_vi_change_char }, /* r */
- { ISFUNC, rl_vi_subst }, /* s */
- { ISFUNC, rl_vi_char_search }, /* t */
- { ISFUNC, rl_vi_undo }, /* u */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* v */
- { ISFUNC, rl_vi_next_word }, /* w */
- { ISFUNC, rl_vi_delete }, /* x */
- { ISFUNC, rl_vi_yank_to }, /* y */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* z */
-
- /* Final punctuation. */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* { */
- { ISFUNC, rl_vi_column }, /* | */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* } */
- { ISFUNC, rl_vi_change_case }, /* ~ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* RUBOUT */
-
-#if KEYMAP_SIZE > 128
- /* Undefined keys. */
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 }
-#endif /* KEYMAP_SIZE > 128 */
-};
-
-
-KEYMAP_ENTRY_ARRAY vi_insertion_keymap = {
- /* The regular control keys come first. */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-@ */
- { ISFUNC, rl_insert }, /* Control-a */
- { ISFUNC, rl_insert }, /* Control-b */
- { ISFUNC, rl_insert }, /* Control-c */
- { ISFUNC, rl_vi_eof_maybe }, /* Control-d */
- { ISFUNC, rl_insert }, /* Control-e */
- { ISFUNC, rl_insert }, /* Control-f */
- { ISFUNC, rl_insert }, /* Control-g */
- { ISFUNC, rl_rubout }, /* Control-h */
- { ISFUNC, rl_complete }, /* Control-i */
- { ISFUNC, rl_newline }, /* Control-j */
- { ISFUNC, rl_insert }, /* Control-k */
- { ISFUNC, rl_insert }, /* Control-l */
- { ISFUNC, rl_newline }, /* Control-m */
- { ISFUNC, rl_insert }, /* Control-n */
- { ISFUNC, rl_insert }, /* Control-o */
- { ISFUNC, rl_insert }, /* Control-p */
- { ISFUNC, rl_insert }, /* Control-q */
- { ISFUNC, rl_reverse_search_history }, /* Control-r */
- { ISFUNC, rl_forward_search_history }, /* Control-s */
- { ISFUNC, rl_transpose_chars }, /* Control-t */
- { ISFUNC, rl_unix_line_discard }, /* Control-u */
- { ISFUNC, rl_quoted_insert }, /* Control-v */
- { ISFUNC, rl_unix_word_rubout }, /* Control-w */
- { ISFUNC, rl_insert }, /* Control-x */
- { ISFUNC, rl_yank }, /* Control-y */
- { ISFUNC, rl_insert }, /* Control-z */
-
- { ISFUNC, rl_vi_movement_mode }, /* Control-[ */
- { ISFUNC, rl_insert }, /* Control-\ */
- { ISFUNC, rl_insert }, /* Control-] */
- { ISFUNC, rl_insert }, /* Control-^ */
- { ISFUNC, rl_vi_undo }, /* Control-_ */
-
- /* The start of printing characters. */
- { ISFUNC, rl_insert }, /* SPACE */
- { ISFUNC, rl_insert }, /* ! */
- { ISFUNC, rl_insert }, /* " */
- { ISFUNC, rl_insert }, /* # */
- { ISFUNC, rl_insert }, /* $ */
- { ISFUNC, rl_insert }, /* % */
- { ISFUNC, rl_insert }, /* & */
- { ISFUNC, rl_insert }, /* ' */
- { ISFUNC, rl_insert }, /* ( */
- { ISFUNC, rl_insert }, /* ) */
- { ISFUNC, rl_insert }, /* * */
- { ISFUNC, rl_insert }, /* + */
- { ISFUNC, rl_insert }, /* , */
- { ISFUNC, rl_insert }, /* - */
- { ISFUNC, rl_insert }, /* . */
- { ISFUNC, rl_insert }, /* / */
-
- /* Regular digits. */
- { ISFUNC, rl_insert }, /* 0 */
- { ISFUNC, rl_insert }, /* 1 */
- { ISFUNC, rl_insert }, /* 2 */
- { ISFUNC, rl_insert }, /* 3 */
- { ISFUNC, rl_insert }, /* 4 */
- { ISFUNC, rl_insert }, /* 5 */
- { ISFUNC, rl_insert }, /* 6 */
- { ISFUNC, rl_insert }, /* 7 */
- { ISFUNC, rl_insert }, /* 8 */
- { ISFUNC, rl_insert }, /* 9 */
-
- /* A little more punctuation. */
- { ISFUNC, rl_insert }, /* : */
- { ISFUNC, rl_insert }, /* ; */
- { ISFUNC, rl_insert }, /* < */
- { ISFUNC, rl_insert }, /* = */
- { ISFUNC, rl_insert }, /* > */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* @ */
-
- /* Uppercase alphabet. */
- { ISFUNC, rl_insert }, /* A */
- { ISFUNC, rl_insert }, /* B */
- { ISFUNC, rl_insert }, /* C */
- { ISFUNC, rl_insert }, /* D */
- { ISFUNC, rl_insert }, /* E */
- { ISFUNC, rl_insert }, /* F */
- { ISFUNC, rl_insert }, /* G */
- { ISFUNC, rl_insert }, /* H */
- { ISFUNC, rl_insert }, /* I */
- { ISFUNC, rl_insert }, /* J */
- { ISFUNC, rl_insert }, /* K */
- { ISFUNC, rl_insert }, /* L */
- { ISFUNC, rl_insert }, /* M */
- { ISFUNC, rl_insert }, /* N */
- { ISFUNC, rl_insert }, /* O */
- { ISFUNC, rl_insert }, /* P */
- { ISFUNC, rl_insert }, /* Q */
- { ISFUNC, rl_insert }, /* R */
- { ISFUNC, rl_insert }, /* S */
- { ISFUNC, rl_insert }, /* T */
- { ISFUNC, rl_insert }, /* U */
- { ISFUNC, rl_insert }, /* V */
- { ISFUNC, rl_insert }, /* W */
- { ISFUNC, rl_insert }, /* X */
- { ISFUNC, rl_insert }, /* Y */
- { ISFUNC, rl_insert }, /* Z */
-
- /* Some more punctuation. */
- { ISFUNC, rl_insert }, /* [ */
- { ISFUNC, rl_insert }, /* \ */
- { ISFUNC, rl_insert }, /* ] */
- { ISFUNC, rl_insert }, /* ^ */
- { ISFUNC, rl_insert }, /* _ */
- { ISFUNC, rl_insert }, /* ` */
-
- /* Lowercase alphabet. */
- { ISFUNC, rl_insert }, /* a */
- { ISFUNC, rl_insert }, /* b */
- { ISFUNC, rl_insert }, /* c */
- { ISFUNC, rl_insert }, /* d */
- { ISFUNC, rl_insert }, /* e */
- { ISFUNC, rl_insert }, /* f */
- { ISFUNC, rl_insert }, /* g */
- { ISFUNC, rl_insert }, /* h */
- { ISFUNC, rl_insert }, /* i */
- { ISFUNC, rl_insert }, /* j */
- { ISFUNC, rl_insert }, /* k */
- { ISFUNC, rl_insert }, /* l */
- { ISFUNC, rl_insert }, /* m */
- { ISFUNC, rl_insert }, /* n */
- { ISFUNC, rl_insert }, /* o */
- { ISFUNC, rl_insert }, /* p */
- { ISFUNC, rl_insert }, /* q */
- { ISFUNC, rl_insert }, /* r */
- { ISFUNC, rl_insert }, /* s */
- { ISFUNC, rl_insert }, /* t */
- { ISFUNC, rl_insert }, /* u */
- { ISFUNC, rl_insert }, /* v */
- { ISFUNC, rl_insert }, /* w */
- { ISFUNC, rl_insert }, /* x */
- { ISFUNC, rl_insert }, /* y */
- { ISFUNC, rl_insert }, /* z */
-
- /* Final punctuation. */
- { ISFUNC, rl_insert }, /* { */
- { ISFUNC, rl_insert }, /* | */
- { ISFUNC, rl_insert }, /* } */
- { ISFUNC, rl_insert }, /* ~ */
- { ISFUNC, rl_rubout }, /* RUBOUT */
-
-#if KEYMAP_SIZE > 128
- /* Pure 8-bit characters (128 - 159).
- These might be used in some
- character sets. */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
- { ISFUNC, rl_insert }, /* ? */
-
- /* ISO Latin-1 characters (160 - 255) */
- { ISFUNC, rl_insert }, /* No-break space */
- { ISFUNC, rl_insert }, /* Inverted exclamation mark */
- { ISFUNC, rl_insert }, /* Cent sign */
- { ISFUNC, rl_insert }, /* Pound sign */
- { ISFUNC, rl_insert }, /* Currency sign */
- { ISFUNC, rl_insert }, /* Yen sign */
- { ISFUNC, rl_insert }, /* Broken bar */
- { ISFUNC, rl_insert }, /* Section sign */
- { ISFUNC, rl_insert }, /* Diaeresis */
- { ISFUNC, rl_insert }, /* Copyright sign */
- { ISFUNC, rl_insert }, /* Feminine ordinal indicator */
- { ISFUNC, rl_insert }, /* Left pointing double angle quotation mark */
- { ISFUNC, rl_insert }, /* Not sign */
- { ISFUNC, rl_insert }, /* Soft hyphen */
- { ISFUNC, rl_insert }, /* Registered sign */
- { ISFUNC, rl_insert }, /* Macron */
- { ISFUNC, rl_insert }, /* Degree sign */
- { ISFUNC, rl_insert }, /* Plus-minus sign */
- { ISFUNC, rl_insert }, /* Superscript two */
- { ISFUNC, rl_insert }, /* Superscript three */
- { ISFUNC, rl_insert }, /* Acute accent */
- { ISFUNC, rl_insert }, /* Micro sign */
- { ISFUNC, rl_insert }, /* Pilcrow sign */
- { ISFUNC, rl_insert }, /* Middle dot */
- { ISFUNC, rl_insert }, /* Cedilla */
- { ISFUNC, rl_insert }, /* Superscript one */
- { ISFUNC, rl_insert }, /* Masculine ordinal indicator */
- { ISFUNC, rl_insert }, /* Right pointing double angle quotation mark */
- { ISFUNC, rl_insert }, /* Vulgar fraction one quarter */
- { ISFUNC, rl_insert }, /* Vulgar fraction one half */
- { ISFUNC, rl_insert }, /* Vulgar fraction three quarters */
- { ISFUNC, rl_insert }, /* Inverted questionk mark */
- { ISFUNC, rl_insert }, /* Latin capital letter a with grave */
- { ISFUNC, rl_insert }, /* Latin capital letter a with acute */
- { ISFUNC, rl_insert }, /* Latin capital letter a with circumflex */
- { ISFUNC, rl_insert }, /* Latin capital letter a with tilde */
- { ISFUNC, rl_insert }, /* Latin capital letter a with diaeresis */
- { ISFUNC, rl_insert }, /* Latin capital letter a with ring above */
- { ISFUNC, rl_insert }, /* Latin capital letter ae */
- { ISFUNC, rl_insert }, /* Latin capital letter c with cedilla */
- { ISFUNC, rl_insert }, /* Latin capital letter e with grave */
- { ISFUNC, rl_insert }, /* Latin capital letter e with acute */
- { ISFUNC, rl_insert }, /* Latin capital letter e with circumflex */
- { ISFUNC, rl_insert }, /* Latin capital letter e with diaeresis */
- { ISFUNC, rl_insert }, /* Latin capital letter i with grave */
- { ISFUNC, rl_insert }, /* Latin capital letter i with acute */
- { ISFUNC, rl_insert }, /* Latin capital letter i with circumflex */
- { ISFUNC, rl_insert }, /* Latin capital letter i with diaeresis */
- { ISFUNC, rl_insert }, /* Latin capital letter eth (Icelandic) */
- { ISFUNC, rl_insert }, /* Latin capital letter n with tilde */
- { ISFUNC, rl_insert }, /* Latin capital letter o with grave */
- { ISFUNC, rl_insert }, /* Latin capital letter o with acute */
- { ISFUNC, rl_insert }, /* Latin capital letter o with circumflex */
- { ISFUNC, rl_insert }, /* Latin capital letter o with tilde */
- { ISFUNC, rl_insert }, /* Latin capital letter o with diaeresis */
- { ISFUNC, rl_insert }, /* Multiplication sign */
- { ISFUNC, rl_insert }, /* Latin capital letter o with stroke */
- { ISFUNC, rl_insert }, /* Latin capital letter u with grave */
- { ISFUNC, rl_insert }, /* Latin capital letter u with acute */
- { ISFUNC, rl_insert }, /* Latin capital letter u with circumflex */
- { ISFUNC, rl_insert }, /* Latin capital letter u with diaeresis */
- { ISFUNC, rl_insert }, /* Latin capital letter Y with acute */
- { ISFUNC, rl_insert }, /* Latin capital letter thorn (Icelandic) */
- { ISFUNC, rl_insert }, /* Latin small letter sharp s (German) */
- { ISFUNC, rl_insert }, /* Latin small letter a with grave */
- { ISFUNC, rl_insert }, /* Latin small letter a with acute */
- { ISFUNC, rl_insert }, /* Latin small letter a with circumflex */
- { ISFUNC, rl_insert }, /* Latin small letter a with tilde */
- { ISFUNC, rl_insert }, /* Latin small letter a with diaeresis */
- { ISFUNC, rl_insert }, /* Latin small letter a with ring above */
- { ISFUNC, rl_insert }, /* Latin small letter ae */
- { ISFUNC, rl_insert }, /* Latin small letter c with cedilla */
- { ISFUNC, rl_insert }, /* Latin small letter e with grave */
- { ISFUNC, rl_insert }, /* Latin small letter e with acute */
- { ISFUNC, rl_insert }, /* Latin small letter e with circumflex */
- { ISFUNC, rl_insert }, /* Latin small letter e with diaeresis */
- { ISFUNC, rl_insert }, /* Latin small letter i with grave */
- { ISFUNC, rl_insert }, /* Latin small letter i with acute */
- { ISFUNC, rl_insert }, /* Latin small letter i with circumflex */
- { ISFUNC, rl_insert }, /* Latin small letter i with diaeresis */
- { ISFUNC, rl_insert }, /* Latin small letter eth (Icelandic) */
- { ISFUNC, rl_insert }, /* Latin small letter n with tilde */
- { ISFUNC, rl_insert }, /* Latin small letter o with grave */
- { ISFUNC, rl_insert }, /* Latin small letter o with acute */
- { ISFUNC, rl_insert }, /* Latin small letter o with circumflex */
- { ISFUNC, rl_insert }, /* Latin small letter o with tilde */
- { ISFUNC, rl_insert }, /* Latin small letter o with diaeresis */
- { ISFUNC, rl_insert }, /* Division sign */
- { ISFUNC, rl_insert }, /* Latin small letter o with stroke */
- { ISFUNC, rl_insert }, /* Latin small letter u with grave */
- { ISFUNC, rl_insert }, /* Latin small letter u with acute */
- { ISFUNC, rl_insert }, /* Latin small letter u with circumflex */
- { ISFUNC, rl_insert }, /* Latin small letter u with diaeresis */
- { ISFUNC, rl_insert }, /* Latin small letter y with acute */
- { ISFUNC, rl_insert }, /* Latin small letter thorn (Icelandic) */
- { ISFUNC, rl_insert } /* Latin small letter y with diaeresis */
-#endif /* KEYMAP_SIZE > 128 */
-};
-
-/* Unused for the time being. */
-#if 0
-KEYMAP_ENTRY_ARRAY vi_escape_keymap = {
- /* The regular control keys come first. */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-@ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-a */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-b */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-c */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-d */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-e */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-f */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-g */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-h */
- { ISFUNC, rl_tab_insert}, /* Control-i */
- { ISFUNC, rl_emacs_editing_mode}, /* Control-j */
- { ISFUNC, rl_kill_line }, /* Control-k */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-l */
- { ISFUNC, rl_emacs_editing_mode}, /* Control-m */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-n */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-o */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-p */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-q */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-r */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-s */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-t */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-u */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-v */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-w */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-x */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-y */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-z */
-
- { ISFUNC, rl_vi_movement_mode }, /* Control-[ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-\ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-] */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-^ */
- { ISFUNC, rl_vi_undo }, /* Control-_ */
-
- /* The start of printing characters. */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* SPACE */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* ! */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* " */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* # */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* $ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* % */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* & */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* ' */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* ( */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* ) */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* * */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* + */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* , */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* - */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* . */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* / */
-
- /* Regular digits. */
- { ISFUNC, rl_vi_arg_digit }, /* 0 */
- { ISFUNC, rl_vi_arg_digit }, /* 1 */
- { ISFUNC, rl_vi_arg_digit }, /* 2 */
- { ISFUNC, rl_vi_arg_digit }, /* 3 */
- { ISFUNC, rl_vi_arg_digit }, /* 4 */
- { ISFUNC, rl_vi_arg_digit }, /* 5 */
- { ISFUNC, rl_vi_arg_digit }, /* 6 */
- { ISFUNC, rl_vi_arg_digit }, /* 7 */
- { ISFUNC, rl_vi_arg_digit }, /* 8 */
- { ISFUNC, rl_vi_arg_digit }, /* 9 */
-
- /* A little more punctuation. */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* : */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* ; */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* < */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* = */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* > */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* ? */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* @ */
-
- /* Uppercase alphabet. */
- { ISFUNC, rl_do_lowercase_version }, /* A */
- { ISFUNC, rl_do_lowercase_version }, /* B */
- { ISFUNC, rl_do_lowercase_version }, /* C */
- { ISFUNC, rl_do_lowercase_version }, /* D */
- { ISFUNC, rl_do_lowercase_version }, /* E */
- { ISFUNC, rl_do_lowercase_version }, /* F */
- { ISFUNC, rl_do_lowercase_version }, /* G */
- { ISFUNC, rl_do_lowercase_version }, /* H */
- { ISFUNC, rl_do_lowercase_version }, /* I */
- { ISFUNC, rl_do_lowercase_version }, /* J */
- { ISFUNC, rl_do_lowercase_version }, /* K */
- { ISFUNC, rl_do_lowercase_version }, /* L */
- { ISFUNC, rl_do_lowercase_version }, /* M */
- { ISFUNC, rl_do_lowercase_version }, /* N */
- { ISFUNC, rl_do_lowercase_version }, /* O */
- { ISFUNC, rl_do_lowercase_version }, /* P */
- { ISFUNC, rl_do_lowercase_version }, /* Q */
- { ISFUNC, rl_do_lowercase_version }, /* R */
- { ISFUNC, rl_do_lowercase_version }, /* S */
- { ISFUNC, rl_do_lowercase_version }, /* T */
- { ISFUNC, rl_do_lowercase_version }, /* U */
- { ISFUNC, rl_do_lowercase_version }, /* V */
- { ISFUNC, rl_do_lowercase_version }, /* W */
- { ISFUNC, rl_do_lowercase_version }, /* X */
- { ISFUNC, rl_do_lowercase_version }, /* Y */
- { ISFUNC, rl_do_lowercase_version }, /* Z */
-
- /* Some more punctuation. */
- { ISFUNC, rl_arrow_keys }, /* [ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* \ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* ] */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* ^ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* _ */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* ` */
-
- /* Lowercase alphabet. */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* a */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* b */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* c */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* d */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* e */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* f */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* g */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* h */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* i */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* j */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* k */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* l */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* m */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* n */
- { ISFUNC, rl_arrow_keys }, /* o */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* p */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* q */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* r */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* s */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* t */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* u */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* v */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* w */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* x */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* y */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* z */
-
- /* Final punctuation. */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* { */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* | */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* } */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* ~ */
- { ISFUNC, rl_backward_kill_word }, /* RUBOUT */
-
-#if KEYMAP_SIZE > 128
- /* Undefined keys. */
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 },
- { ISFUNC, (rl_command_func_t *)0x0 }
-#endif /* KEYMAP_SIZE > 128 */
-};
-#endif
diff --git a/readline-4.3/vi_mode.c b/readline-4.3/vi_mode.c
deleted file mode 100644
index 5d146b3..0000000
--- a/readline-4.3/vi_mode.c
+++ /dev/null
@@ -1,1485 +0,0 @@
-/* vi_mode.c -- A vi emulation mode for Bash.
- Derived from code written by Jeff Sparkes (jsparkes@bnr.ca). */
-
-/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-/* **************************************************************** */
-/* */
-/* VI Emulation Mode */
-/* */
-/* **************************************************************** */
-#include "rlconf.h"
-
-#if defined (VI_MODE)
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#include <sys/types.h>
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#if defined (HAVE_UNISTD_H)
-# include <unistd.h>
-#endif
-
-#include <stdio.h>
-
-/* Some standard library routines. */
-#include "rldefs.h"
-#include "rlmbutil.h"
-
-#include "readline.h"
-#include "history.h"
-
-#include "rlprivate.h"
-#include "xmalloc.h"
-
-#ifndef member
-#define member(c, s) ((c) ? (char *)strchr ((s), (c)) != (char *)NULL : 0)
-#endif
-
-/* Non-zero means enter insertion mode. */
-static int _rl_vi_doing_insert;
-
-/* Command keys which do movement for xxx_to commands. */
-static const char *vi_motion = " hl^$0ftFT;,%wbeWBE|";
-
-/* Keymap used for vi replace characters. Created dynamically since
- rarely used. */
-static Keymap vi_replace_map;
-
-/* The number of characters inserted in the last replace operation. */
-static int vi_replace_count;
-
-/* If non-zero, we have text inserted after a c[motion] command that put
- us implicitly into insert mode. Some people want this text to be
- attached to the command so that it is `redoable' with `.'. */
-static int vi_continued_command;
-static char *vi_insert_buffer;
-static int vi_insert_buffer_size;
-
-static int _rl_vi_last_command = 'i'; /* default `.' puts you in insert mode */
-static int _rl_vi_last_repeat = 1;
-static int _rl_vi_last_arg_sign = 1;
-static int _rl_vi_last_motion;
-#if defined (HANDLE_MULTIBYTE)
-static char _rl_vi_last_search_mbchar[MB_LEN_MAX];
-#else
-static int _rl_vi_last_search_char;
-#endif
-static int _rl_vi_last_replacement;
-
-static int _rl_vi_last_key_before_insert;
-
-static int vi_redoing;
-
-/* Text modification commands. These are the `redoable' commands. */
-static const char *vi_textmod = "_*\\AaIiCcDdPpYyRrSsXx~";
-
-/* Arrays for the saved marks. */
-static int vi_mark_chars['z' - 'a' + 1];
-
-static void _rl_vi_stuff_insert PARAMS((int));
-static void _rl_vi_save_insert PARAMS((UNDO_LIST *));
-static int rl_digit_loop1 PARAMS((void));
-
-void
-_rl_vi_initialize_line ()
-{
- register int i;
-
- for (i = 0; i < sizeof (vi_mark_chars) / sizeof (int); i++)
- vi_mark_chars[i] = -1;
-}
-
-void
-_rl_vi_reset_last ()
-{
- _rl_vi_last_command = 'i';
- _rl_vi_last_repeat = 1;
- _rl_vi_last_arg_sign = 1;
- _rl_vi_last_motion = 0;
-}
-
-void
-_rl_vi_set_last (key, repeat, sign)
- int key, repeat, sign;
-{
- _rl_vi_last_command = key;
- _rl_vi_last_repeat = repeat;
- _rl_vi_last_arg_sign = sign;
-}
-
-/* Is the command C a VI mode text modification command? */
-int
-_rl_vi_textmod_command (c)
- int c;
-{
- return (member (c, vi_textmod));
-}
-
-static void
-_rl_vi_stuff_insert (count)
- int count;
-{
- rl_begin_undo_group ();
- while (count--)
- rl_insert_text (vi_insert_buffer);
- rl_end_undo_group ();
-}
-
-/* Bound to `.'. Called from command mode, so we know that we have to
- redo a text modification command. The default for _rl_vi_last_command
- puts you back into insert mode. */
-int
-rl_vi_redo (count, c)
- int count, c;
-{
- int r;
-
- if (!rl_explicit_arg)
- {
- rl_numeric_arg = _rl_vi_last_repeat;
- rl_arg_sign = _rl_vi_last_arg_sign;
- }
-
- r = 0;
- vi_redoing = 1;
- /* If we're redoing an insert with `i', stuff in the inserted text
- and do not go into insertion mode. */
- if (_rl_vi_last_command == 'i' && vi_insert_buffer && *vi_insert_buffer)
- {
- _rl_vi_stuff_insert (count);
- /* And back up point over the last character inserted. */
- if (rl_point > 0)
- rl_point--;
- }
- else
- r = _rl_dispatch (_rl_vi_last_command, _rl_keymap);
- vi_redoing = 0;
-
- return (r);
-}
-
-/* A placeholder for further expansion. */
-int
-rl_vi_undo (count, key)
- int count, key;
-{
- return (rl_undo_command (count, key));
-}
-
-/* Yank the nth arg from the previous line into this line at point. */
-int
-rl_vi_yank_arg (count, key)
- int count, key;
-{
- /* Readline thinks that the first word on a line is the 0th, while vi
- thinks the first word on a line is the 1st. Compensate. */
- if (rl_explicit_arg)
- rl_yank_nth_arg (count - 1, 0);
- else
- rl_yank_nth_arg ('$', 0);
-
- return (0);
-}
-
-/* With an argument, move back that many history lines, else move to the
- beginning of history. */
-int
-rl_vi_fetch_history (count, c)
- int count, c;
-{
- int wanted;
-
- /* Giving an argument of n means we want the nth command in the history
- file. The command number is interpreted the same way that the bash
- `history' command does it -- that is, giving an argument count of 450
- to this command would get the command listed as number 450 in the
- output of `history'. */
- if (rl_explicit_arg)
- {
- wanted = history_base + where_history () - count;
- if (wanted <= 0)
- rl_beginning_of_history (0, 0);
- else
- rl_get_previous_history (wanted, c);
- }
- else
- rl_beginning_of_history (count, 0);
- return (0);
-}
-
-/* Search again for the last thing searched for. */
-int
-rl_vi_search_again (count, key)
- int count, key;
-{
- switch (key)
- {
- case 'n':
- rl_noninc_reverse_search_again (count, key);
- break;
-
- case 'N':
- rl_noninc_forward_search_again (count, key);
- break;
- }
- return (0);
-}
-
-/* Do a vi style search. */
-int
-rl_vi_search (count, key)
- int count, key;
-{
- switch (key)
- {
- case '?':
- rl_noninc_forward_search (count, key);
- break;
-
- case '/':
- rl_noninc_reverse_search (count, key);
- break;
-
- default:
- rl_ding ();
- break;
- }
- return (0);
-}
-
-/* Completion, from vi's point of view. */
-int
-rl_vi_complete (ignore, key)
- int ignore, key;
-{
- if ((rl_point < rl_end) && (!whitespace (rl_line_buffer[rl_point])))
- {
- if (!whitespace (rl_line_buffer[rl_point + 1]))
- rl_vi_end_word (1, 'E');
- rl_point++;
- }
-
- if (key == '*')
- rl_complete_internal ('*'); /* Expansion and replacement. */
- else if (key == '=')
- rl_complete_internal ('?'); /* List possible completions. */
- else if (key == '\\')
- rl_complete_internal (TAB); /* Standard Readline completion. */
- else
- rl_complete (0, key);
-
- if (key == '*' || key == '\\')
- {
- _rl_vi_set_last (key, 1, rl_arg_sign);
- rl_vi_insertion_mode (1, key);
- }
- return (0);
-}
-
-/* Tilde expansion for vi mode. */
-int
-rl_vi_tilde_expand (ignore, key)
- int ignore, key;
-{
- rl_tilde_expand (0, key);
- _rl_vi_set_last (key, 1, rl_arg_sign); /* XXX */
- rl_vi_insertion_mode (1, key);
- return (0);
-}
-
-/* Previous word in vi mode. */
-int
-rl_vi_prev_word (count, key)
- int count, key;
-{
- if (count < 0)
- return (rl_vi_next_word (-count, key));
-
- if (rl_point == 0)
- {
- rl_ding ();
- return (0);
- }
-
- if (_rl_uppercase_p (key))
- rl_vi_bWord (count, key);
- else
- rl_vi_bword (count, key);
-
- return (0);
-}
-
-/* Next word in vi mode. */
-int
-rl_vi_next_word (count, key)
- int count, key;
-{
- if (count < 0)
- return (rl_vi_prev_word (-count, key));
-
- if (rl_point >= (rl_end - 1))
- {
- rl_ding ();
- return (0);
- }
-
- if (_rl_uppercase_p (key))
- rl_vi_fWord (count, key);
- else
- rl_vi_fword (count, key);
- return (0);
-}
-
-/* Move to the end of the ?next? word. */
-int
-rl_vi_end_word (count, key)
- int count, key;
-{
- if (count < 0)
- {
- rl_ding ();
- return -1;
- }
-
- if (_rl_uppercase_p (key))
- rl_vi_eWord (count, key);
- else
- rl_vi_eword (count, key);
- return (0);
-}
-
-/* Move forward a word the way that 'W' does. */
-int
-rl_vi_fWord (count, ignore)
- int count, ignore;
-{
- while (count-- && rl_point < (rl_end - 1))
- {
- /* Skip until whitespace. */
- while (!whitespace (rl_line_buffer[rl_point]) && rl_point < rl_end)
- rl_point++;
-
- /* Now skip whitespace. */
- while (whitespace (rl_line_buffer[rl_point]) && rl_point < rl_end)
- rl_point++;
- }
- return (0);
-}
-
-int
-rl_vi_bWord (count, ignore)
- int count, ignore;
-{
- while (count-- && rl_point > 0)
- {
- /* If we are at the start of a word, move back to whitespace so
- we will go back to the start of the previous word. */
- if (!whitespace (rl_line_buffer[rl_point]) &&
- whitespace (rl_line_buffer[rl_point - 1]))
- rl_point--;
-
- while (rl_point > 0 && whitespace (rl_line_buffer[rl_point]))
- rl_point--;
-
- if (rl_point > 0)
- {
- while (--rl_point >= 0 && !whitespace (rl_line_buffer[rl_point]));
- rl_point++;
- }
- }
- return (0);
-}
-
-int
-rl_vi_eWord (count, ignore)
- int count, ignore;
-{
- while (count-- && rl_point < (rl_end - 1))
- {
- if (!whitespace (rl_line_buffer[rl_point]))
- rl_point++;
-
- /* Move to the next non-whitespace character (to the start of the
- next word). */
- while (++rl_point < rl_end && whitespace (rl_line_buffer[rl_point]));
-
- if (rl_point && rl_point < rl_end)
- {
- /* Skip whitespace. */
- while (rl_point < rl_end && whitespace (rl_line_buffer[rl_point]))
- rl_point++;
-
- /* Skip until whitespace. */
- while (rl_point < rl_end && !whitespace (rl_line_buffer[rl_point]))
- rl_point++;
-
- /* Move back to the last character of the word. */
- rl_point--;
- }
- }
- return (0);
-}
-
-int
-rl_vi_fword (count, ignore)
- int count, ignore;
-{
- while (count-- && rl_point < (rl_end - 1))
- {
- /* Move to white space (really non-identifer). */
- if (_rl_isident (rl_line_buffer[rl_point]))
- {
- while (_rl_isident (rl_line_buffer[rl_point]) && rl_point < rl_end)
- rl_point++;
- }
- else /* if (!whitespace (rl_line_buffer[rl_point])) */
- {
- while (!_rl_isident (rl_line_buffer[rl_point]) &&
- !whitespace (rl_line_buffer[rl_point]) && rl_point < rl_end)
- rl_point++;
- }
-
- /* Move past whitespace. */
- while (whitespace (rl_line_buffer[rl_point]) && rl_point < rl_end)
- rl_point++;
- }
- return (0);
-}
-
-int
-rl_vi_bword (count, ignore)
- int count, ignore;
-{
- while (count-- && rl_point > 0)
- {
- int last_is_ident;
-
- /* If we are at the start of a word, move back to whitespace
- so we will go back to the start of the previous word. */
- if (!whitespace (rl_line_buffer[rl_point]) &&
- whitespace (rl_line_buffer[rl_point - 1]))
- rl_point--;
-
- /* If this character and the previous character are `opposite', move
- back so we don't get messed up by the rl_point++ down there in
- the while loop. Without this code, words like `l;' screw up the
- function. */
- last_is_ident = _rl_isident (rl_line_buffer[rl_point - 1]);
- if ((_rl_isident (rl_line_buffer[rl_point]) && !last_is_ident) ||
- (!_rl_isident (rl_line_buffer[rl_point]) && last_is_ident))
- rl_point--;
-
- while (rl_point > 0 && whitespace (rl_line_buffer[rl_point]))
- rl_point--;
-
- if (rl_point > 0)
- {
- if (_rl_isident (rl_line_buffer[rl_point]))
- while (--rl_point >= 0 && _rl_isident (rl_line_buffer[rl_point]));
- else
- while (--rl_point >= 0 && !_rl_isident (rl_line_buffer[rl_point]) &&
- !whitespace (rl_line_buffer[rl_point]));
- rl_point++;
- }
- }
- return (0);
-}
-
-int
-rl_vi_eword (count, ignore)
- int count, ignore;
-{
- while (count-- && rl_point < rl_end - 1)
- {
- if (!whitespace (rl_line_buffer[rl_point]))
- rl_point++;
-
- while (rl_point < rl_end && whitespace (rl_line_buffer[rl_point]))
- rl_point++;
-
- if (rl_point < rl_end)
- {
- if (_rl_isident (rl_line_buffer[rl_point]))
- while (++rl_point < rl_end && _rl_isident (rl_line_buffer[rl_point]));
- else
- while (++rl_point < rl_end && !_rl_isident (rl_line_buffer[rl_point])
- && !whitespace (rl_line_buffer[rl_point]));
- }
- rl_point--;
- }
- return (0);
-}
-
-int
-rl_vi_insert_beg (count, key)
- int count, key;
-{
- rl_beg_of_line (1, key);
- rl_vi_insertion_mode (1, key);
- return (0);
-}
-
-int
-rl_vi_append_mode (count, key)
- int count, key;
-{
- if (rl_point < rl_end)
- {
- if (MB_CUR_MAX == 1 || rl_byte_oriented)
- rl_point++;
- else
- {
- int point = rl_point;
- rl_forward_char (1, key);
- if (point == rl_point)
- rl_point = rl_end;
- }
- }
- rl_vi_insertion_mode (1, key);
- return (0);
-}
-
-int
-rl_vi_append_eol (count, key)
- int count, key;
-{
- rl_end_of_line (1, key);
- rl_vi_append_mode (1, key);
- return (0);
-}
-
-/* What to do in the case of C-d. */
-int
-rl_vi_eof_maybe (count, c)
- int count, c;
-{
- return (rl_newline (1, '\n'));
-}
-
-/* Insertion mode stuff. */
-
-/* Switching from one mode to the other really just involves
- switching keymaps. */
-int
-rl_vi_insertion_mode (count, key)
- int count, key;
-{
- _rl_keymap = vi_insertion_keymap;
- _rl_vi_last_key_before_insert = key;
- return (0);
-}
-
-static void
-_rl_vi_save_insert (up)
- UNDO_LIST *up;
-{
- int len, start, end;
-
- if (up == 0)
- {
- if (vi_insert_buffer_size >= 1)
- vi_insert_buffer[0] = '\0';
- return;
- }
-
- start = up->start;
- end = up->end;
- len = end - start + 1;
- if (len >= vi_insert_buffer_size)
- {
- vi_insert_buffer_size += (len + 32) - (len % 32);
- vi_insert_buffer = (char *)xrealloc (vi_insert_buffer, vi_insert_buffer_size);
- }
- strncpy (vi_insert_buffer, rl_line_buffer + start, len - 1);
- vi_insert_buffer[len-1] = '\0';
-}
-
-void
-_rl_vi_done_inserting ()
-{
- if (_rl_vi_doing_insert)
- {
- /* The `C', `s', and `S' commands set this. */
- rl_end_undo_group ();
- /* Now, the text between rl_undo_list->next->start and
- rl_undo_list->next->end is what was inserted while in insert
- mode. It gets copied to VI_INSERT_BUFFER because it depends
- on absolute indices into the line which may change (though they
- probably will not). */
- _rl_vi_doing_insert = 0;
- _rl_vi_save_insert (rl_undo_list->next);
- vi_continued_command = 1;
- }
- else
- {
- if (_rl_vi_last_key_before_insert == 'i' && rl_undo_list)
- _rl_vi_save_insert (rl_undo_list);
- /* XXX - Other keys probably need to be checked. */
- else if (_rl_vi_last_key_before_insert == 'C')
- rl_end_undo_group ();
- while (_rl_undo_group_level > 0)
- rl_end_undo_group ();
- vi_continued_command = 0;
- }
-}
-
-int
-rl_vi_movement_mode (count, key)
- int count, key;
-{
- if (rl_point > 0)
- rl_backward_char (1, key);
-
- _rl_keymap = vi_movement_keymap;
- _rl_vi_done_inserting ();
- return (0);
-}
-
-int
-rl_vi_arg_digit (count, c)
- int count, c;
-{
- if (c == '0' && rl_numeric_arg == 1 && !rl_explicit_arg)
- return (rl_beg_of_line (1, c));
- else
- return (rl_digit_argument (count, c));
-}
-
-/* Change the case of the next COUNT characters. */
-#if defined (HANDLE_MULTIBYTE)
-static int
-_rl_vi_change_mbchar_case (count)
- int count;
-{
- wchar_t wc;
- char mb[MB_LEN_MAX];
- mbstate_t ps;
-
- memset (&ps, 0, sizeof (mbstate_t));
- if (_rl_adjust_point (rl_line_buffer, rl_point, &ps) > 0)
- count--;
- while (count-- && rl_point < rl_end)
- {
- mbrtowc (&wc, rl_line_buffer + rl_point, rl_end - rl_point, &ps);
- if (iswupper (wc))
- wc = towlower (wc);
- else if (iswlower (wc))
- wc = towupper (wc);
- else
- {
- /* Just skip over chars neither upper nor lower case */
- rl_forward_char (1, 0);
- continue;
- }
-
- /* Vi is kind of strange here. */
- if (wc)
- {
- wctomb (mb, wc);
- rl_begin_undo_group ();
- rl_delete (1, 0);
- rl_insert_text (mb);
- rl_end_undo_group ();
- rl_vi_check ();
- }
- else
- rl_forward_char (1, 0);
- }
-
- return 0;
-}
-#endif
-
-int
-rl_vi_change_case (count, ignore)
- int count, ignore;
-{
- char c = 0;
-
- /* Don't try this on an empty line. */
- if (rl_point >= rl_end)
- return (0);
-
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- return (_rl_vi_change_mbchar_case (count));
-#endif
-
- while (count-- && rl_point < rl_end)
- {
- if (_rl_uppercase_p (rl_line_buffer[rl_point]))
- c = _rl_to_lower (rl_line_buffer[rl_point]);
- else if (_rl_lowercase_p (rl_line_buffer[rl_point]))
- c = _rl_to_upper (rl_line_buffer[rl_point]);
- else
- {
- /* Just skip over characters neither upper nor lower case. */
- rl_forward_char (1, c);
- continue;
- }
-
- /* Vi is kind of strange here. */
- if (c)
- {
- rl_begin_undo_group ();
- rl_delete (1, c);
- _rl_insert_char (1, c);
- rl_end_undo_group ();
- rl_vi_check ();
- }
- else
- rl_forward_char (1, c);
- }
- return (0);
-}
-
-int
-rl_vi_put (count, key)
- int count, key;
-{
- if (!_rl_uppercase_p (key) && (rl_point + 1 <= rl_end))
- rl_point = _rl_find_next_mbchar (rl_line_buffer, rl_point, 1, MB_FIND_NONZERO);
-
- rl_yank (1, key);
- rl_backward_char (1, key);
- return (0);
-}
-
-int
-rl_vi_check ()
-{
- if (rl_point && rl_point == rl_end)
- {
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- rl_point = _rl_find_prev_mbchar (rl_line_buffer, rl_point, MB_FIND_NONZERO);
- else
- rl_point--;
- }
- return (0);
-}
-
-int
-rl_vi_column (count, key)
- int count, key;
-{
- if (count > rl_end)
- rl_end_of_line (1, key);
- else
- rl_point = count - 1;
- return (0);
-}
-
-int
-rl_vi_domove (key, nextkey)
- int key, *nextkey;
-{
- int c, save;
- int old_end;
-
- rl_mark = rl_point;
- RL_SETSTATE(RL_STATE_MOREINPUT);
- c = rl_read_key ();
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
- *nextkey = c;
-
- if (!member (c, vi_motion))
- {
- if (_rl_digit_p (c))
- {
- save = rl_numeric_arg;
- rl_numeric_arg = _rl_digit_value (c);
- rl_digit_loop1 ();
- rl_numeric_arg *= save;
- RL_SETSTATE(RL_STATE_MOREINPUT);
- c = rl_read_key (); /* real command */
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
- *nextkey = c;
- }
- else if (key == c && (key == 'd' || key == 'y' || key == 'c'))
- {
- rl_mark = rl_end;
- rl_beg_of_line (1, c);
- _rl_vi_last_motion = c;
- return (0);
- }
- else
- return (-1);
- }
-
- _rl_vi_last_motion = c;
-
- /* Append a blank character temporarily so that the motion routines
- work right at the end of the line. */
- old_end = rl_end;
- rl_line_buffer[rl_end++] = ' ';
- rl_line_buffer[rl_end] = '\0';
-
- _rl_dispatch (c, _rl_keymap);
-
- /* Remove the blank that we added. */
- rl_end = old_end;
- rl_line_buffer[rl_end] = '\0';
- if (rl_point > rl_end)
- rl_point = rl_end;
-
- /* No change in position means the command failed. */
- if (rl_mark == rl_point)
- return (-1);
-
- /* rl_vi_f[wW]ord () leaves the cursor on the first character of the next
- word. If we are not at the end of the line, and we are on a
- non-whitespace character, move back one (presumably to whitespace). */
- if ((_rl_to_upper (c) == 'W') && rl_point < rl_end && rl_point > rl_mark &&
- !whitespace (rl_line_buffer[rl_point]))
- rl_point--;
-
- /* If cw or cW, back up to the end of a word, so the behaviour of ce
- or cE is the actual result. Brute-force, no subtlety. */
- if (key == 'c' && rl_point >= rl_mark && (_rl_to_upper (c) == 'W'))
- {
- /* Don't move farther back than where we started. */
- while (rl_point > rl_mark && whitespace (rl_line_buffer[rl_point]))
- rl_point--;
-
- /* Posix.2 says that if cw or cW moves the cursor towards the end of
- the line, the character under the cursor should be deleted. */
- if (rl_point == rl_mark)
- rl_point++;
- else
- {
- /* Move past the end of the word so that the kill doesn't
- remove the last letter of the previous word. Only do this
- if we are not at the end of the line. */
- if (rl_point >= 0 && rl_point < (rl_end - 1) && !whitespace (rl_line_buffer[rl_point]))
- rl_point++;
- }
- }
-
- if (rl_mark < rl_point)
- SWAP (rl_point, rl_mark);
-
- return (0);
-}
-
-/* A simplified loop for vi. Don't dispatch key at end.
- Don't recognize minus sign?
- Should this do rl_save_prompt/rl_restore_prompt? */
-static int
-rl_digit_loop1 ()
-{
- int key, c;
-
- RL_SETSTATE(RL_STATE_NUMERICARG);
- while (1)
- {
- if (rl_numeric_arg > 1000000)
- {
- rl_explicit_arg = rl_numeric_arg = 0;
- rl_ding ();
- rl_clear_message ();
- RL_UNSETSTATE(RL_STATE_NUMERICARG);
- return 1;
- }
- rl_message ("(arg: %d) ", rl_arg_sign * rl_numeric_arg);
- RL_SETSTATE(RL_STATE_MOREINPUT);
- key = c = rl_read_key ();
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
-
- if (c >= 0 && _rl_keymap[c].type == ISFUNC &&
- _rl_keymap[c].function == rl_universal_argument)
- {
- rl_numeric_arg *= 4;
- continue;
- }
-
- c = UNMETA (c);
- if (_rl_digit_p (c))
- {
- if (rl_explicit_arg)
- rl_numeric_arg = (rl_numeric_arg * 10) + _rl_digit_value (c);
- else
- rl_numeric_arg = _rl_digit_value (c);
- rl_explicit_arg = 1;
- }
- else
- {
- rl_clear_message ();
- rl_stuff_char (key);
- break;
- }
- }
-
- RL_UNSETSTATE(RL_STATE_NUMERICARG);
- return (0);
-}
-
-int
-rl_vi_delete_to (count, key)
- int count, key;
-{
- int c;
-
- if (_rl_uppercase_p (key))
- rl_stuff_char ('$');
- else if (vi_redoing)
- rl_stuff_char (_rl_vi_last_motion);
-
- if (rl_vi_domove (key, &c))
- {
- rl_ding ();
- return -1;
- }
-
- /* These are the motion commands that do not require adjusting the
- mark. */
- if ((strchr (" l|h^0bB", c) == 0) && (rl_mark < rl_end))
- rl_mark++;
-
- rl_kill_text (rl_point, rl_mark);
- return (0);
-}
-
-int
-rl_vi_change_to (count, key)
- int count, key;
-{
- int c, start_pos;
-
- if (_rl_uppercase_p (key))
- rl_stuff_char ('$');
- else if (vi_redoing)
- rl_stuff_char (_rl_vi_last_motion);
-
- start_pos = rl_point;
-
- if (rl_vi_domove (key, &c))
- {
- rl_ding ();
- return -1;
- }
-
- /* These are the motion commands that do not require adjusting the
- mark. c[wW] are handled by special-case code in rl_vi_domove(),
- and already leave the mark at the correct location. */
- if ((strchr (" l|hwW^0bB", c) == 0) && (rl_mark < rl_end))
- rl_mark++;
-
- /* The cursor never moves with c[wW]. */
- if ((_rl_to_upper (c) == 'W') && rl_point < start_pos)
- rl_point = start_pos;
-
- if (vi_redoing)
- {
- if (vi_insert_buffer && *vi_insert_buffer)
- rl_begin_undo_group ();
- rl_delete_text (rl_point, rl_mark);
- if (vi_insert_buffer && *vi_insert_buffer)
- {
- rl_insert_text (vi_insert_buffer);
- rl_end_undo_group ();
- }
- }
- else
- {
- rl_begin_undo_group (); /* to make the `u' command work */
- rl_kill_text (rl_point, rl_mark);
- /* `C' does not save the text inserted for undoing or redoing. */
- if (_rl_uppercase_p (key) == 0)
- _rl_vi_doing_insert = 1;
- _rl_vi_set_last (key, count, rl_arg_sign);
- rl_vi_insertion_mode (1, key);
- }
-
- return (0);
-}
-
-int
-rl_vi_yank_to (count, key)
- int count, key;
-{
- int c, save = rl_point;
-
- if (_rl_uppercase_p (key))
- rl_stuff_char ('$');
-
- if (rl_vi_domove (key, &c))
- {
- rl_ding ();
- return -1;
- }
-
- /* These are the motion commands that do not require adjusting the
- mark. */
- if ((strchr (" l|h^0%bB", c) == 0) && (rl_mark < rl_end))
- rl_mark++;
-
- rl_begin_undo_group ();
- rl_kill_text (rl_point, rl_mark);
- rl_end_undo_group ();
- rl_do_undo ();
- rl_point = save;
-
- return (0);
-}
-
-int
-rl_vi_delete (count, key)
- int count, key;
-{
- int end;
-
- if (rl_end == 0)
- {
- rl_ding ();
- return -1;
- }
-
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- end = _rl_find_next_mbchar (rl_line_buffer, rl_point, count, MB_FIND_NONZERO);
- else
- end = rl_point + count;
-
- if (end >= rl_end)
- end = rl_end;
-
- rl_kill_text (rl_point, end);
-
- if (rl_point > 0 && rl_point == rl_end)
- rl_backward_char (1, key);
- return (0);
-}
-
-int
-rl_vi_back_to_indent (count, key)
- int count, key;
-{
- rl_beg_of_line (1, key);
- while (rl_point < rl_end && whitespace (rl_line_buffer[rl_point]))
- rl_point++;
- return (0);
-}
-
-int
-rl_vi_first_print (count, key)
- int count, key;
-{
- return (rl_vi_back_to_indent (1, key));
-}
-
-int
-rl_vi_char_search (count, key)
- int count, key;
-{
-#if defined (HANDLE_MULTIBYTE)
- static char *target;
- static int mb_len;
-#else
- static char target;
-#endif
- static int orig_dir, dir;
-
- if (key == ';' || key == ',')
- dir = key == ';' ? orig_dir : -orig_dir;
- else
- {
- if (vi_redoing)
-#if defined (HANDLE_MULTIBYTE)
- target = _rl_vi_last_search_mbchar;
-#else
- target = _rl_vi_last_search_char;
-#endif
- else
- {
-#if defined (HANDLE_MULTIBYTE)
- mb_len = _rl_read_mbchar (_rl_vi_last_search_mbchar, MB_LEN_MAX);
- target = _rl_vi_last_search_mbchar;
-#else
- RL_SETSTATE(RL_STATE_MOREINPUT);
- _rl_vi_last_search_char = target = rl_read_key ();
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
-#endif
- }
-
- switch (key)
- {
- case 't':
- orig_dir = dir = FTO;
- break;
-
- case 'T':
- orig_dir = dir = BTO;
- break;
-
- case 'f':
- orig_dir = dir = FFIND;
- break;
-
- case 'F':
- orig_dir = dir = BFIND;
- break;
- }
- }
-
-#if defined (HANDLE_MULTIBYTE)
- return (_rl_char_search_internal (count, dir, target, mb_len));
-#else
- return (_rl_char_search_internal (count, dir, target));
-#endif
-}
-
-/* Match brackets */
-int
-rl_vi_match (ignore, key)
- int ignore, key;
-{
- int count = 1, brack, pos, tmp, pre;
-
- pos = rl_point;
- if ((brack = rl_vi_bracktype (rl_line_buffer[rl_point])) == 0)
- {
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- while ((brack = rl_vi_bracktype (rl_line_buffer[rl_point])) == 0)
- {
- pre = rl_point;
- rl_forward_char (1, key);
- if (pre == rl_point)
- break;
- }
- }
- else
- while ((brack = rl_vi_bracktype (rl_line_buffer[rl_point])) == 0 &&
- rl_point < rl_end - 1)
- rl_forward_char (1, key);
-
- if (brack <= 0)
- {
- rl_point = pos;
- rl_ding ();
- return -1;
- }
- }
-
- pos = rl_point;
-
- if (brack < 0)
- {
- while (count)
- {
- tmp = pos;
- if (MB_CUR_MAX == 1 || rl_byte_oriented)
- pos--;
- else
- {
- pos = _rl_find_prev_mbchar (rl_line_buffer, pos, MB_FIND_ANY);
- if (tmp == pos)
- pos--;
- }
- if (pos >= 0)
- {
- int b = rl_vi_bracktype (rl_line_buffer[pos]);
- if (b == -brack)
- count--;
- else if (b == brack)
- count++;
- }
- else
- {
- rl_ding ();
- return -1;
- }
- }
- }
- else
- { /* brack > 0 */
- while (count)
- {
- if (MB_CUR_MAX == 1 || rl_byte_oriented)
- pos++;
- else
- pos = _rl_find_next_mbchar (rl_line_buffer, pos, 1, MB_FIND_ANY);
-
- if (pos < rl_end)
- {
- int b = rl_vi_bracktype (rl_line_buffer[pos]);
- if (b == -brack)
- count--;
- else if (b == brack)
- count++;
- }
- else
- {
- rl_ding ();
- return -1;
- }
- }
- }
- rl_point = pos;
- return (0);
-}
-
-int
-rl_vi_bracktype (c)
- int c;
-{
- switch (c)
- {
- case '(': return 1;
- case ')': return -1;
- case '[': return 2;
- case ']': return -2;
- case '{': return 3;
- case '}': return -3;
- default: return 0;
- }
-}
-
-/* XXX - think about reading an entire mbchar with _rl_read_mbchar and
- inserting it in one bunch instead of the loop below (like in
- rl_vi_char_search or _rl_vi_change_mbchar_case. Set c to mbchar[0]
- for test against 033 or ^C. Make sure that _rl_read_mbchar does
- this right. */
-int
-rl_vi_change_char (count, key)
- int count, key;
-{
- int c;
-
- if (vi_redoing)
- c = _rl_vi_last_replacement;
- else
- {
- RL_SETSTATE(RL_STATE_MOREINPUT);
- _rl_vi_last_replacement = c = rl_read_key ();
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
- }
-
- if (c == '\033' || c == CTRL ('C'))
- return -1;
-
- while (count-- && rl_point < rl_end)
- {
- rl_begin_undo_group ();
-
- rl_delete (1, c);
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- while (_rl_insert_char (1, c))
- {
- RL_SETSTATE (RL_STATE_MOREINPUT);
- c = rl_read_key ();
- RL_UNSETSTATE (RL_STATE_MOREINPUT);
- }
- else
-#endif
- _rl_insert_char (1, c);
- if (count == 0)
- rl_backward_char (1, c);
-
- rl_end_undo_group ();
- }
- return (0);
-}
-
-int
-rl_vi_subst (count, key)
- int count, key;
-{
- /* If we are redoing, rl_vi_change_to will stuff the last motion char */
- if (vi_redoing == 0)
- rl_stuff_char ((key == 'S') ? 'c' : ' '); /* `S' == `cc', `s' == `c ' */
-
- return (rl_vi_change_to (count, 'c'));
-}
-
-int
-rl_vi_overstrike (count, key)
- int count, key;
-{
- if (_rl_vi_doing_insert == 0)
- {
- _rl_vi_doing_insert = 1;
- rl_begin_undo_group ();
- }
-
- if (count > 0)
- {
- _rl_overwrite_char (count, key);
- vi_replace_count += count;
- }
-
- return (0);
-}
-
-int
-rl_vi_overstrike_delete (count, key)
- int count, key;
-{
- int i, s;
-
- for (i = 0; i < count; i++)
- {
- if (vi_replace_count == 0)
- {
- rl_ding ();
- break;
- }
- s = rl_point;
-
- if (rl_do_undo ())
- vi_replace_count--;
-
- if (rl_point == s)
- rl_backward_char (1, key);
- }
-
- if (vi_replace_count == 0 && _rl_vi_doing_insert)
- {
- rl_end_undo_group ();
- rl_do_undo ();
- _rl_vi_doing_insert = 0;
- }
- return (0);
-}
-
-int
-rl_vi_replace (count, key)
- int count, key;
-{
- int i;
-
- vi_replace_count = 0;
-
- if (!vi_replace_map)
- {
- vi_replace_map = rl_make_bare_keymap ();
-
- for (i = ' '; i < KEYMAP_SIZE; i++)
- vi_replace_map[i].function = rl_vi_overstrike;
-
- vi_replace_map[RUBOUT].function = rl_vi_overstrike_delete;
- vi_replace_map[ESC].function = rl_vi_movement_mode;
- vi_replace_map[RETURN].function = rl_newline;
- vi_replace_map[NEWLINE].function = rl_newline;
-
- /* If the normal vi insertion keymap has ^H bound to erase, do the
- same here. Probably should remove the assignment to RUBOUT up
- there, but I don't think it will make a difference in real life. */
- if (vi_insertion_keymap[CTRL ('H')].type == ISFUNC &&
- vi_insertion_keymap[CTRL ('H')].function == rl_rubout)
- vi_replace_map[CTRL ('H')].function = rl_vi_overstrike_delete;
-
- }
- _rl_keymap = vi_replace_map;
- return (0);
-}
-
-#if 0
-/* Try to complete the word we are standing on or the word that ends with
- the previous character. A space matches everything. Word delimiters are
- space and ;. */
-int
-rl_vi_possible_completions()
-{
- int save_pos = rl_point;
-
- if (rl_line_buffer[rl_point] != ' ' && rl_line_buffer[rl_point] != ';')
- {
- while (rl_point < rl_end && rl_line_buffer[rl_point] != ' ' &&
- rl_line_buffer[rl_point] != ';')
- rl_point++;
- }
- else if (rl_line_buffer[rl_point - 1] == ';')
- {
- rl_ding ();
- return (0);
- }
-
- rl_possible_completions ();
- rl_point = save_pos;
-
- return (0);
-}
-#endif
-
-/* Functions to save and restore marks. */
-int
-rl_vi_set_mark (count, key)
- int count, key;
-{
- int ch;
-
- RL_SETSTATE(RL_STATE_MOREINPUT);
- ch = rl_read_key ();
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
-
- if (ch < 'a' || ch > 'z')
- {
- rl_ding ();
- return -1;
- }
- ch -= 'a';
- vi_mark_chars[ch] = rl_point;
- return 0;
-}
-
-int
-rl_vi_goto_mark (count, key)
- int count, key;
-{
- int ch;
-
- RL_SETSTATE(RL_STATE_MOREINPUT);
- ch = rl_read_key ();
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
-
- if (ch == '`')
- {
- rl_point = rl_mark;
- return 0;
- }
- else if (ch < 'a' || ch > 'z')
- {
- rl_ding ();
- return -1;
- }
-
- ch -= 'a';
- if (vi_mark_chars[ch] == -1)
- {
- rl_ding ();
- return -1;
- }
- rl_point = vi_mark_chars[ch];
- return 0;
-}
-
-#endif /* VI_MODE */
diff --git a/readline-4.3/xmalloc.c b/readline-4.3/xmalloc.c
deleted file mode 100644
index 8985d34..0000000
--- a/readline-4.3/xmalloc.c
+++ /dev/null
@@ -1,88 +0,0 @@
-/* xmalloc.c -- safe versions of malloc and realloc */
-
-/* Copyright (C) 1991 Free Software Foundation, Inc.
-
- This file is part of GNU Readline, a library for reading lines
- of text with interactive input and history editing.
-
- Readline is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the
- Free Software Foundation; either version 2, or (at your option) any
- later version.
-
- Readline is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Readline; see the file COPYING. If not, write to the Free
- Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-#define READLINE_LIBRARY
-
-#if defined (HAVE_CONFIG_H)
-#include <config.h>
-#endif
-
-#include <stdio.h>
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#include "xmalloc.h"
-
-/* **************************************************************** */
-/* */
-/* Memory Allocation and Deallocation. */
-/* */
-/* **************************************************************** */
-
-static void
-memory_error_and_abort (fname)
- char *fname;
-{
- fprintf (stderr, "%s: out of virtual memory\n", fname);
- exit (2);
-}
-
-/* Return a pointer to free()able block of memory large enough
- to hold BYTES number of bytes. If the memory cannot be allocated,
- print an error message and abort. */
-PTR_T
-xmalloc (bytes)
- size_t bytes;
-{
- PTR_T temp;
-
- temp = malloc (bytes);
- if (temp == 0)
- memory_error_and_abort ("xmalloc");
- return (temp);
-}
-
-PTR_T
-xrealloc (pointer, bytes)
- PTR_T pointer;
- size_t bytes;
-{
- PTR_T temp;
-
- temp = pointer ? realloc (pointer, bytes) : malloc (bytes);
-
- if (temp == 0)
- memory_error_and_abort ("xrealloc");
- return (temp);
-}
-
-/* Use this as the function to call when adding unwind protects so we
- don't need to know what free() returns. */
-void
-xfree (string)
- PTR_T string;
-{
- if (string)
- free (string);
-}
diff --git a/readline-4.3/xmalloc.h b/readline-4.3/xmalloc.h
deleted file mode 100644
index 9cb08ba..0000000
--- a/readline-4.3/xmalloc.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/* xmalloc.h -- memory allocation that aborts on errors. */
-
-/* Copyright (C) 1999 Free Software Foundation, Inc.
-
- This file is part of the GNU Readline Library, a library for
- reading lines of text with interactive input and history editing.
-
- The GNU Readline Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2, or
- (at your option) any later version.
-
- The GNU Readline Library is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if !defined (_XMALLOC_H_)
-#define _XMALLOC_H_
-
-#if defined (READLINE_LIBRARY)
-# include "rlstdc.h"
-#else
-# include <readline/rlstdc.h>
-#endif
-
-#ifndef PTR_T
-
-#ifdef __STDC__
-# define PTR_T void *
-#else
-# define PTR_T char *
-#endif
-
-#endif /* !PTR_T */
-
-extern PTR_T xmalloc PARAMS((size_t));
-extern PTR_T xrealloc PARAMS((void *, size_t));
-extern void xfree PARAMS((void *));
-
-#endif /* _XMALLOC_H_ */
diff --git a/readline-doc-4.3/MANIFEST.doc b/readline-doc-4.3/MANIFEST.doc
deleted file mode 100644
index 47041b3..0000000
--- a/readline-doc-4.3/MANIFEST.doc
+++ /dev/null
@@ -1,21 +0,0 @@
-#
-# Master Manifest file for documentation-only distribution
-#
-doc d
-MANIFEST.doc f
-doc/readline.ps f
-doc/history.ps f
-doc/rluserman.ps f
-doc/readline.dvi f
-doc/history.dvi f
-doc/rluserman.dvi f
-doc/readline.info f
-doc/history.info f
-doc/rluserman.info f
-doc/readline.html f
-doc/history.html f
-doc/rluserman.html f
-doc/readline.0 f
-doc/history.0 f
-doc/readline_3.ps f
-doc/history_3.ps f
diff --git a/readline-doc-4.3/doc/history.0 b/readline-doc-4.3/doc/history.0
deleted file mode 100644
index 324c363..0000000
--- a/readline-doc-4.3/doc/history.0
+++ /dev/null
@@ -1,660 +0,0 @@
-
-
-
-HISTORY(3) HISTORY(3)
-
-
-NNAAMMEE
- history - GNU History Library
-
-CCOOPPYYRRIIGGHHTT
- The GNU History Library is Copyright (C) 1989-2002 by the
- Free Software Foundation, Inc.
-
-DDEESSCCRRIIPPTTIIOONN
- Many programs read input from the user a line at a time.
- The GNU History library is able to keep track of those
- lines, associate arbitrary data with each line, and uti-
- lize information from previous lines in composing new
- ones.
-
-
-HHIISSTTOORRYY EEXXPPAANNSSIIOONN
- The history library supports a history expansion feature
- that is identical to the history expansion in bbaasshh.. This
- section describes what syntax features are available.
-
- History expansions introduce words from the history list
- into the input stream, making it easy to repeat commands,
- insert the arguments to a previous command into the cur-
- rent input line, or fix errors in previous commands
- quickly.
-
- History expansion is usually performed immediately after a
- complete line is read. It takes place in two parts. The
- first is to determine which line from the history list to
- use during substitution. The second is to select portions
- of that line for inclusion into the current one. The line
- selected from the history is the _e_v_e_n_t, and the portions
- of that line that are acted upon are _w_o_r_d_s. Various _m_o_d_i_-
- _f_i_e_r_s are available to manipulate the selected words. The
- line is broken into words in the same fashion as bbaasshh does
- when reading input, so that several words that would oth-
- erwise be separated are considered one word when sur-
- rounded by quotes (see the description of hhiissttoorryy__ttookk--
- eenniizzee(()) below). History expansions are introduced by the
- appearance of the history expansion character, which is !!
- by default. Only backslash (\\) and single quotes can
- quote the history expansion character.
-
- EEvveenntt DDeessiiggnnaattoorrss
- An event designator is a reference to a command line entry
- in the history list.
-
- !! Start a history substitution, except when followed
- by a bbllaannkk, newline, = or (.
- !!_n Refer to command line _n.
- !!--_n Refer to the current command line minus _n.
- !!!! Refer to the previous command. This is a synonym
- for `!-1'.
-
-
-
-
-GNU History 4.3 2002 January 31 1
-
-
-
-
-
-HISTORY(3) HISTORY(3)
-
-
- !!_s_t_r_i_n_g
- Refer to the most recent command starting with
- _s_t_r_i_n_g.
- !!??_s_t_r_i_n_g[[??]]
- Refer to the most recent command containing _s_t_r_i_n_g.
- The trailing ?? may be omitted if _s_t_r_i_n_g is followed
- immediately by a newline.
- ^^_s_t_r_i_n_g_1^^_s_t_r_i_n_g_2^^
- Quick substitution. Repeat the last command,
- replacing _s_t_r_i_n_g_1 with _s_t_r_i_n_g_2. Equivalent to
- ``!!:s/_s_t_r_i_n_g_1/_s_t_r_i_n_g_2/'' (see MMooddiiffiieerrss below).
- !!## The entire command line typed so far.
-
- WWoorrdd DDeessiiggnnaattoorrss
- Word designators are used to select desired words from the
- event. A :: separates the event specification from the
- word designator. It may be omitted if the word designator
- begins with a ^^, $$, **, --, or %%. Words are numbered from
- the beginning of the line, with the first word being
- denoted by 0 (zero). Words are inserted into the current
- line separated by single spaces.
-
- 00 ((zzeerroo))
- The zeroth word. For the shell, this is the com-
- mand word.
- _n The _nth word.
- ^^ The first argument. That is, word 1.
- $$ The last argument.
- %% The word matched by the most recent `?_s_t_r_i_n_g?'
- search.
- _x--_y A range of words; `-_y' abbreviates `0-_y'.
- ** All of the words but the zeroth. This is a synonym
- for `_1_-_$'. It is not an error to use ** if there is
- just one word in the event; the empty string is
- returned in that case.
- xx** Abbreviates _x_-_$.
- xx-- Abbreviates _x_-_$ like xx**, but omits the last word.
-
- If a word designator is supplied without an event specifi-
- cation, the previous command is used as the event.
-
- MMooddiiffiieerrss
- After the optional word designator, there may appear a
- sequence of one or more of the following modifiers, each
- preceded by a `:'.
-
- hh Remove a trailing file name component, leaving only
- the head.
- tt Remove all leading file name components, leaving
- the tail.
- rr Remove a trailing suffix of the form _._x_x_x, leaving
- the basename.
- ee Remove all but the trailing suffix.
- pp Print the new command but do not execute it.
-
-
-
-GNU History 4.3 2002 January 31 2
-
-
-
-
-
-HISTORY(3) HISTORY(3)
-
-
- qq Quote the substituted words, escaping further sub-
- stitutions.
- xx Quote the substituted words as with qq, but break
- into words at bbllaannkkss and newlines.
- ss//_o_l_d//_n_e_w//
- Substitute _n_e_w for the first occurrence of _o_l_d in
- the event line. Any delimiter can be used in place
- of /. The final delimiter is optional if it is the
- last character of the event line. The delimiter
- may be quoted in _o_l_d and _n_e_w with a single back-
- slash. If & appears in _n_e_w, it is replaced by _o_l_d.
- A single backslash will quote the &. If _o_l_d is
- null, it is set to the last _o_l_d substituted, or, if
- no previous history substitutions took place, the
- last _s_t_r_i_n_g in a !!??_s_t_r_i_n_g[[??]] search.
- && Repeat the previous substitution.
- gg Cause changes to be applied over the entire event
- line. This is used in conjunction with `::ss' (e.g.,
- `::ggss//_o_l_d//_n_e_w//') or `::&&'. If used with `::ss', any
- delimiter can be used in place of /, and the final
- delimiter is optional if it is the last character
- of the event line.
-
-PPRROOGGRRAAMMMMIINNGG WWIITTHH HHIISSTTOORRYY FFUUNNCCTTIIOONNSS
- This section describes how to use the History library in
- other programs.
-
- IInnttrroodduuccttiioonn ttoo HHiissttoorryy
- The programmer using the History library has available
- functions for remembering lines on a history list, associ-
- ating 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 _e_x_p_a_n_s_i_o_n function
- is available which provides for a consistent user inter-
- face 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 previ-
- ous lines and using that text in new commands. The basic
- history manipulation commands are identical to the history
- substitution provided by bbaasshh.
-
- 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 edit-
- ing.
-
- Before declaring any functions using any functionality the
- History library provides in other code, an application
- writer should include the file _<_r_e_a_d_l_i_n_e_/_h_i_s_t_o_r_y_._h_> in any
- file that uses the History library's features. It sup-
- plies extern declarations for all of the library's public
-
-
-
-GNU History 4.3 2002 January 31 3
-
-
-
-
-
-HISTORY(3) HISTORY(3)
-
-
- functions and variables, and declares all of the public
- data structures.
-
-
- HHiissttoorryy SSttoorraaggee
- The history list is an array of history entries. A his-
- tory entry is declared as follows:
-
- _t_y_p_e_d_e_f _v_o_i_d _* hhiissttddaattaa__tt;;
-
- typedef struct _hist_entry {
- char *line;
- histdata_t data;
- } HIST_ENTRY;
-
- The history list itself might therefore be declared as
-
- _H_I_S_T___E_N_T_R_Y _*_* tthhee__hhiissttoorryy__lliisstt;;
-
- The state of the History library is encapsulated into a
- single structure:
-
- /*
- * 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;
-
- If the flags member includes HHSS__SSTTIIFFLLEEDD, the history has
- been stifled.
-
-HHiissttoorryy FFuunnccttiioonnss
- This section describes the calling sequence for the vari-
- ous functions exported by the GNU History library.
-
- IInniittiiaalliizziinngg HHiissttoorryy aanndd SSttaattee MMaannaaggeemmeenntt
- 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.
-
- _v_o_i_d uussiinngg__hhiissttoorryy (_v_o_i_d)
- Begin a session in which the history functions might be
- used. This initializes the interactive variables.
-
- _H_I_S_T_O_R_Y___S_T_A_T_E _* hhiissttoorryy__ggeett__hhiissttoorryy__ssttaattee (_v_o_i_d)
- Return a structure describing the current state of the
- input history.
-
- _v_o_i_d hhiissttoorryy__sseett__hhiissttoorryy__ssttaattee (_H_I_S_T_O_R_Y___S_T_A_T_E _*_s_t_a_t_e)
-
-
-
-GNU History 4.3 2002 January 31 4
-
-
-
-
-
-HISTORY(3) HISTORY(3)
-
-
- Set the state of the history list according to _s_t_a_t_e.
-
-
- HHiissttoorryy LLiisstt MMaannaaggeemmeenntt
- These functions manage individual entries on the history
- list, or set parameters managing the list itself.
-
- _v_o_i_d aadddd__hhiissttoorryy (_c_o_n_s_t _c_h_a_r _*_s_t_r_i_n_g)
- Place _s_t_r_i_n_g at the end of the history list. The associ-
- ated data field (if any) is set to NNUULLLL.
-
- _H_I_S_T___E_N_T_R_Y _* rreemmoovvee__hhiissttoorryy (_i_n_t _w_h_i_c_h)
- Remove history entry at offset _w_h_i_c_h from the history.
- The removed element is returned so you can free the line,
- data, and containing structure.
-
- _H_I_S_T___E_N_T_R_Y _* rreeppllaaccee__hhiissttoorryy__eennttrryy (_i_n_t _w_h_i_c_h_, _c_o_n_s_t _c_h_a_r
- _*_l_i_n_e_, _h_i_s_t_d_a_t_a___t _d_a_t_a)
- Make the history entry at offset _w_h_i_c_h have _l_i_n_e and _d_a_t_a.
- This returns the old entry so you can dispose of the data.
- In the case of an invalid _w_h_i_c_h, a NNUULLLL pointer is
- returned.
-
- _v_o_i_d cclleeaarr__hhiissttoorryy (_v_o_i_d)
- Clear the history list by deleting all the entries.
-
- _v_o_i_d ssttiiffllee__hhiissttoorryy (_i_n_t _m_a_x)
- Stifle the history list, remembering only the last _m_a_x
- entries.
-
- _i_n_t uunnssttiiffllee__hhiissttoorryy (_v_o_i_d)
- Stop stifling the history. This returns the previously-
- set maximum number of history entries (as set by ssttii--
- ffllee__hhiissttoorryy(())). history was stifled. The value is posi-
- tive if the history was stifled, negative if it wasn't.
-
- _i_n_t hhiissttoorryy__iiss__ssttiifflleedd (_v_o_i_d)
- Returns non-zero if the history is stifled, zero if it is
- not.
-
-
- IInnffoorrmmaattiioonn AAbboouutt tthhee HHiissttoorryy LLiisstt
- These functions return information about the entire his-
- tory list or individual list entries.
-
- _H_I_S_T___E_N_T_R_Y _*_* hhiissttoorryy__lliisstt (_v_o_i_d)
- Return a NNUULLLL terminated array of _H_I_S_T___E_N_T_R_Y _* which is
- the current input history. Element 0 of this list is the
- beginning of time. If there is no history, return NNUULLLL.
-
- _i_n_t wwhheerree__hhiissttoorryy (_v_o_i_d)
- Returns the offset of the current history element.
-
- _H_I_S_T___E_N_T_R_Y _* ccuurrrreenntt__hhiissttoorryy (_v_o_i_d)
-
-
-
-GNU History 4.3 2002 January 31 5
-
-
-
-
-
-HISTORY(3) HISTORY(3)
-
-
- Return the history entry at the current position, as
- determined by wwhheerree__hhiissttoorryy(()). If there is no entry
- there, return a NNUULLLL pointer.
-
- _H_I_S_T___E_N_T_R_Y _* hhiissttoorryy__ggeett (_i_n_t _o_f_f_s_e_t)
- Return the history entry at position _o_f_f_s_e_t, starting from
- hhiissttoorryy__bbaassee. If there is no entry there, or if _o_f_f_s_e_t is
- greater than the history length, return a NNUULLLL pointer.
-
- _i_n_t hhiissttoorryy__ttoottaall__bbyytteess (_v_o_i_d)
- 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.
-
-
- MMoovviinngg AArroouunndd tthhee HHiissttoorryy LLiisstt
- These functions allow the current index into the history
- list to be set or changed.
-
- _i_n_t hhiissttoorryy__sseett__ppooss (_i_n_t _p_o_s)
- Set the current history offset to _p_o_s, an absolute index
- into the list. Returns 1 on success, 0 if _p_o_s is less
- than zero or greater than the number of history entries.
-
- _H_I_S_T___E_N_T_R_Y _* pprreevviioouuss__hhiissttoorryy (_v_o_i_d)
- 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 NNUULLLL pointer.
-
- _H_I_S_T___E_N_T_R_Y _* nneexxtt__hhiissttoorryy (_v_o_i_d)
- Move the current history offset forward to the next his-
- tory entry, and return the a pointer to that entry. If
- there is no next entry, return a NNUULLLL pointer.
-
-
- SSeeaarrcchhiinngg tthhee HHiissttoorryy LLiisstt
- 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 his-
- tory position. The search may be _a_n_c_h_o_r_e_d, meaning that
- the string must match at the beginning of the history
- entry.
-
- _i_n_t hhiissttoorryy__sseeaarrcchh (_c_o_n_s_t _c_h_a_r _*_s_t_r_i_n_g_, _i_n_t _d_i_r_e_c_t_i_o_n)
- Search the history for _s_t_r_i_n_g, starting at the current
- history offset. If _d_i_r_e_c_t_i_o_n is less than 0, then the
- search is through previous entries, otherwise through sub-
- sequent entries. If _s_t_r_i_n_g 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
- _s_t_r_i_n_g was found. Otherwise, nothing is changed, and a -1
- is returned.
-
- _i_n_t hhiissttoorryy__sseeaarrcchh__pprreeffiixx (_c_o_n_s_t _c_h_a_r _*_s_t_r_i_n_g_, _i_n_t
-
-
-
-GNU History 4.3 2002 January 31 6
-
-
-
-
-
-HISTORY(3) HISTORY(3)
-
-
- _d_i_r_e_c_t_i_o_n)
- Search the history for _s_t_r_i_n_g, starting at the current
- history offset. The search is anchored: matching lines
- must begin with _s_t_r_i_n_g. If _d_i_r_e_c_t_i_o_n is less than 0, then
- the search is through previous entries, otherwise through
- subsequent entries. If _s_t_r_i_n_g 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.
-
- _i_n_t hhiissttoorryy__sseeaarrcchh__ppooss (_c_o_n_s_t _c_h_a_r _*_s_t_r_i_n_g_, _i_n_t _d_i_r_e_c_t_i_o_n_,
- _i_n_t _p_o_s)
- Search for _s_t_r_i_n_g in the history list, starting at _p_o_s, an
- absolute index into the list. If _d_i_r_e_c_t_i_o_n is negative,
- the search proceeds backward from _p_o_s, otherwise forward.
- Returns the absolute index of the history element where
- _s_t_r_i_n_g was found, or -1 otherwise.
-
-
- MMaannaaggiinngg tthhee HHiissttoorryy FFiillee
- The History library can read the history from and write it
- to a file. This section documents the functions for man-
- aging a history file.
-
- _i_n_t rreeaadd__hhiissttoorryy (_c_o_n_s_t _c_h_a_r _*_f_i_l_e_n_a_m_e)
- Add the contents of _f_i_l_e_n_a_m_e to the history list, a line
- at a time. If _f_i_l_e_n_a_m_e is NNUULLLL, then read from _~_/_._h_i_s_-
- _t_o_r_y. Returns 0 if successful, or eerrrrnnoo if not.
-
- _i_n_t rreeaadd__hhiissttoorryy__rraannggee (_c_o_n_s_t _c_h_a_r _*_f_i_l_e_n_a_m_e_, _i_n_t _f_r_o_m_,
- _i_n_t _t_o)
- Read a range of lines from _f_i_l_e_n_a_m_e, adding them to the
- history list. Start reading at line _f_r_o_m and end at _t_o.
- If _f_r_o_m is zero, start at the beginning. If _t_o is less
- than _f_r_o_m, then read until the end of the file. If _f_i_l_e_-
- _n_a_m_e is NNUULLLL, then read from _~_/_._h_i_s_t_o_r_y. Returns 0 if
- successful, or eerrrrnnoo if not.
-
- _i_n_t wwrriittee__hhiissttoorryy (_c_o_n_s_t _c_h_a_r _*_f_i_l_e_n_a_m_e)
- Write the current history to _f_i_l_e_n_a_m_e, overwriting _f_i_l_e_-
- _n_a_m_e if necessary. If _f_i_l_e_n_a_m_e is NNUULLLL, then write the
- history list to _~_/_._h_i_s_t_o_r_y. Returns 0 on success, or
- eerrrrnnoo on a read or write error.
-
-
- _i_n_t aappppeenndd__hhiissttoorryy (_i_n_t _n_e_l_e_m_e_n_t_s_, _c_o_n_s_t _c_h_a_r _*_f_i_l_e_n_a_m_e)
- Append the last _n_e_l_e_m_e_n_t_s of the history list to _f_i_l_e_n_a_m_e.
- If _f_i_l_e_n_a_m_e is NNUULLLL, then append to _~_/_._h_i_s_t_o_r_y. Returns 0
- on success, or eerrrrnnoo on a read or write error.
-
- _i_n_t hhiissttoorryy__ttrruunnccaattee__ffiillee (_c_o_n_s_t _c_h_a_r _*_f_i_l_e_n_a_m_e_, _i_n_t
- _n_l_i_n_e_s)
- Truncate the history file _f_i_l_e_n_a_m_e, leaving only the last
- _n_l_i_n_e_s lines. If _f_i_l_e_n_a_m_e is NNUULLLL, then _~_/_._h_i_s_t_o_r_y is
-
-
-
-GNU History 4.3 2002 January 31 7
-
-
-
-
-
-HISTORY(3) HISTORY(3)
-
-
- truncated. Returns 0 on success, or eerrrrnnoo on failure.
-
-
- HHiissttoorryy EExxppaannssiioonn
- These functions implement history expansion.
-
- _i_n_t hhiissttoorryy__eexxppaanndd (_c_h_a_r _*_s_t_r_i_n_g_, _c_h_a_r _*_*_o_u_t_p_u_t)
- Expand _s_t_r_i_n_g, placing the result into _o_u_t_p_u_t, a pointer
- to a string. Returns:
- 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);
- 1 if expansions did take place;
- -1 if there was an error in expansion;
- 2 if the returned line should be displayed,
- but not executed, as with the ::pp modifier.
- If an error ocurred in expansion, then _o_u_t_p_u_t contains a
- descriptive error message.
-
- _c_h_a_r _* ggeett__hhiissttoorryy__eevveenntt (_c_o_n_s_t _c_h_a_r _*_s_t_r_i_n_g_, _i_n_t _*_c_i_n_d_e_x_,
- _i_n_t _q_c_h_a_r)
- Returns the text of the history event beginning at _s_t_r_i_n_g
- + _*_c_i_n_d_e_x. _*_c_i_n_d_e_x is modified to point to after the
- event specifier. At function entry, _c_i_n_d_e_x points to the
- index into _s_t_r_i_n_g where the history event specification
- begins. _q_c_h_a_r is a character that is allowed to end the
- event specification in addition to the ``normal'' termi-
- nating characters.
-
- _c_h_a_r _*_* hhiissttoorryy__ttookkeenniizzee (_c_o_n_s_t _c_h_a_r _*_s_t_r_i_n_g)
- Return an array of tokens parsed out of _s_t_r_i_n_g, much as
- the shell might. The tokens are split on the characters
- in the hhiissttoorryy__wwoorrdd__ddeelliimmiitteerrss variable, and shell quoting
- conventions are obeyed.
-
- _c_h_a_r _* hhiissttoorryy__aarrgg__eexxttrraacctt (_i_n_t _f_i_r_s_t_, _i_n_t _l_a_s_t_, _c_o_n_s_t
- _c_h_a_r _*_s_t_r_i_n_g)
- Extract a string segment consisting of the _f_i_r_s_t through
- _l_a_s_t arguments present in _s_t_r_i_n_g. Arguments are split
- using hhiissttoorryy__ttookkeenniizzee(()).
-
-
- HHiissttoorryy VVaarriiaabblleess
- This section describes the externally-visible variables
- exported by the GNU History Library.
-
- _i_n_t hhiissttoorryy__bbaassee
- The logical offset of the first entry in the history list.
-
- _i_n_t hhiissttoorryy__lleennggtthh
- The number of entries currently stored in the history
- list.
-
-
-
-
-GNU History 4.3 2002 January 31 8
-
-
-
-
-
-HISTORY(3) HISTORY(3)
-
-
- _i_n_t hhiissttoorryy__mmaaxx__eennttrriieess
- The maximum number of history entries. This must be
- changed using ssttiiffllee__hhiissttoorryy(()).
-
- _c_h_a_r hhiissttoorryy__eexxppaannssiioonn__cchhaarr
- The character that introduces a history event. The
- default is !!. Setting this to 0 inhibits history expan-
- sion.
-
- _c_h_a_r hhiissttoorryy__ssuubbsstt__cchhaarr
- The character that invokes word substitution if found at
- the start of a line. The default is ^^.
-
- _c_h_a_r hhiissttoorryy__ccoommmmeenntt__cchhaarr
- 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 his-
- tory expansion for the remainder of the line. This is
- disabled by default.
-
- _c_h_a_r _* hhiissttoorryy__wwoorrdd__ddeelliimmiitteerrss
- The characters that separate tokens for hhiissttoorryy__ttookk--
- eenniizzee(()). The default value is "" \\tt\\nn(())<<>>;;&&||"".
-
- _c_h_a_r _* hhiissttoorryy__nnoo__eexxppaanndd__cchhaarrss
- The list of characters which inhibit history expansion if
- found immediately following hhiissttoorryy__eexxppaannssiioonn__cchhaarr. The
- default is space, tab, newline, \\rr, and ==.
-
- _c_h_a_r _* hhiissttoorryy__sseeaarrcchh__ddeelliimmiitteerr__cchhaarrss
- The list of additional characters which can delimit a his-
- tory search string, in addition to space, tab, _: and _? in
- the case of a substring search. The default is empty.
-
- _i_n_t hhiissttoorryy__qquuootteess__iinnhhiibbiitt__eexxppaannssiioonn
- If non-zero, single-quoted words are not scanned for the
- history expansion character. The default value is 0.
-
- _r_l___l_i_n_e_b_u_f___f_u_n_c___t _* hhiissttoorryy__iinnhhiibbiitt__eexxppaannssiioonn__ffuunnccttiioonn
- This should be set to the address of a function that takes
- two arguments: a cchhaarr ** (_s_t_r_i_n_g) and an iinntt index into
- that string (_i). It should return a non-zero value if the
- history expansion starting at _s_t_r_i_n_g_[_i_] should not be per-
- formed; zero if the expansion should be done. It is
- intended for use by applications like bbaasshh that use the
- history expansion character for additional purposes. By
- default, this variable is set to NNUULLLL.
-
-FFIILLEESS
- _~_/_._h_i_s_t_o_r_y
- Default filename for reading and writing saved his-
- tory
-
-
-
-
-
-GNU History 4.3 2002 January 31 9
-
-
-
-
-
-HISTORY(3) HISTORY(3)
-
-
-SSEEEE AALLSSOO
- _T_h_e _G_n_u _R_e_a_d_l_i_n_e _L_i_b_r_a_r_y, Brian Fox and Chet Ramey
- _T_h_e _G_n_u _H_i_s_t_o_r_y _L_i_b_r_a_r_y, Brian Fox and Chet Ramey
- _b_a_s_h(1)
- _r_e_a_d_l_i_n_e(3)
-
-AAUUTTHHOORRSS
- Brian Fox, Free Software Foundation
- bfox@gnu.org
-
- Chet Ramey, Case Western Reserve University
- chet@ins.CWRU.Edu
-
-BBUUGG RREEPPOORRTTSS
- If you find a bug in the hhiissttoorryy library, you should
- report it. But first, you should make sure that it really
- is a bug, and that it appears in the latest version of the
- hhiissttoorryy library that you have.
-
- Once you have determined that a bug actually exists, mail
- a bug report to _b_u_g_-_r_e_a_d_l_i_n_e@_g_n_u_._o_r_g. If you have a fix,
- you are welcome to mail that as well! Suggestions and
- `philosophical' bug reports may be mailed to _b_u_g_-_r_e_a_d_-
- _l_i_n_e@_g_n_u_._o_r_g or posted to the Usenet newsgroup
- ggnnuu..bbaasshh..bbuugg.
-
- Comments and bug reports concerning this manual page
- should be directed to _c_h_e_t_@_i_n_s_._C_W_R_U_._E_d_u.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-GNU History 4.3 2002 January 31 10
-
-
diff --git a/readline-doc-4.3/doc/history.dvi b/readline-doc-4.3/doc/history.dvi
deleted file mode 100644
index bf7444e..0000000
--- a/readline-doc-4.3/doc/history.dvi
+++ /dev/null
Binary files differ
diff --git a/readline-doc-4.3/doc/history.html b/readline-doc-4.3/doc/history.html
deleted file mode 100644
index 5afe15b..0000000
--- a/readline-doc-4.3/doc/history.html
+++ /dev/null
@@ -1,1639 +0,0 @@
-<HTML>
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<!-- Created on June, 27 2002 by texi2html 1.64 -->
-<!--
-Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
- Karl Berry <karl@freefriends.org>
- Olaf Bachmann <obachman@mathematik.uni-kl.de>
- and many others.
-Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>
-Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
-
--->
-<HEAD>
-<TITLE>GNU History Library: </TITLE>
-
-<META NAME="description" CONTENT="GNU History Library: ">
-<META NAME="keywords" CONTENT="GNU History Library: ">
-<META NAME="resource-type" CONTENT="document">
-<META NAME="distribution" CONTENT="global">
-<META NAME="Generator" CONTENT="texi2html 1.64">
-
-</HEAD>
-
-<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
-
-<A NAME="SEC_Top"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1>GNU History Library</H1></P><P>
-
-This document describes the GNU History library, a programming tool that
-provides a consistent user interface for recalling lines of previously
-typed input.
-</P><P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC1">1. Using History Interactively</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">GNU History User's Manual.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC6">2. Programming with GNU History</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">GNU History Programmer's Manual.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC19">A. Concept Index</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Index of concepts described in this manual.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC20">B. Function and Variable Index</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Index of externally visible functions
- and variables.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<HR SIZE=1>
-<A NAME="SEC1"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC2"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<A NAME="Using History Interactively"></A>
-<H1> 1. Using History Interactively </H1>
-<!--docid::SEC1::-->
-<P>
-
-This chapter describes how to use the GNU History Library interactively,
-from a user's standpoint. It should be considered a user's guide. For
-information on using the GNU History Library in your own programs,
-see section <A HREF="history.html#SEC6">2. Programming with GNU History</A>.
-</P><P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC2">1.1 History Expansion</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">What it feels like using History as a user.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<A NAME="History Interaction"></A>
-<HR SIZE="6">
-<A NAME="SEC2"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC1"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC3"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC1"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 1.1 History Expansion </H2>
-<!--docid::SEC2::-->
-<P>
-
-The History library provides a history expansion feature that is similar
-to the history expansion provided by <CODE>csh</CODE>. This section
-describes the syntax used to manipulate the history information.
-</P><P>
-
-History expansions introduce words from the history list into
-the input stream, making it easy to repeat commands, insert the
-arguments to a previous command into the current input line, or
-fix errors in previous commands quickly.
-</P><P>
-
-History expansion takes place in two parts. The first is to determine
-which line from the history list should be used during substitution.
-The second is to select portions of that line for inclusion into the
-current one. The line selected from the history is called the
-<EM>event</EM>, and the portions of that line that are acted upon are
-called <EM>words</EM>. Various <EM>modifiers</EM> are available to manipulate
-the selected words. The line is broken into words in the same fashion
-that Bash does, so that several words
-surrounded by quotes are considered one word.
-History expansions are introduced by the appearance of the
-history expansion character, which is <SAMP>`!'</SAMP> by default.
-</P><P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC3">1.1.1 Event Designators</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">How to specify which history line to use.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC4">1.1.2 Word Designators</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Specifying which words are of interest.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC5">1.1.3 Modifiers</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Modifying the results of substitution.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<A NAME="Event Designators"></A>
-<HR SIZE="6">
-<A NAME="SEC3"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC2"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC4"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC2"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.1.1 Event Designators </H3>
-<!--docid::SEC3::-->
-<P>
-
-An event designator is a reference to a command line entry in the
-history list.
-<A NAME="IDX1"></A>
-</P><P>
-
-<DL COMPACT>
-
-<DT><CODE>!</CODE>
-<DD>Start a history substitution, except when followed by a space, tab,
-the end of the line, <SAMP>`='</SAMP> or <SAMP>`('</SAMP>.
-<P>
-
-<DT><CODE>!<VAR>n</VAR></CODE>
-<DD>Refer to command line <VAR>n</VAR>.
-<P>
-
-<DT><CODE>!-<VAR>n</VAR></CODE>
-<DD>Refer to the command <VAR>n</VAR> lines back.
-<P>
-
-<DT><CODE>!!</CODE>
-<DD>Refer to the previous command. This is a synonym for <SAMP>`!-1'</SAMP>.
-<P>
-
-<DT><CODE>!<VAR>string</VAR></CODE>
-<DD>Refer to the most recent command starting with <VAR>string</VAR>.
-<P>
-
-<DT><CODE>!?<VAR>string</VAR>[?]</CODE>
-<DD>Refer to the most recent command containing <VAR>string</VAR>. The trailing
-<SAMP>`?'</SAMP> may be omitted if the <VAR>string</VAR> is followed immediately by
-a newline.
-<P>
-
-<DT><CODE>^<VAR>string1</VAR>^<VAR>string2</VAR>^</CODE>
-<DD>Quick Substitution. Repeat the last command, replacing <VAR>string1</VAR>
-with <VAR>string2</VAR>. Equivalent to
-<CODE>!!:s/<VAR>string1</VAR>/<VAR>string2</VAR>/</CODE>.
-<P>
-
-<DT><CODE>!#</CODE>
-<DD>The entire command line typed so far.
-<P>
-
-</DL>
-<P>
-
-<A NAME="Word Designators"></A>
-<HR SIZE="6">
-<A NAME="SEC4"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC3"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC5"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC5"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC2"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.1.2 Word Designators </H3>
-<!--docid::SEC4::-->
-<P>
-
-Word designators are used to select desired words from the event.
-A <SAMP>`:'</SAMP> separates the event specification from the word designator. It
-may be omitted if the word designator begins with a <SAMP>`^'</SAMP>, <SAMP>`$'</SAMP>,
-<SAMP>`*'</SAMP>, <SAMP>`-'</SAMP>, or <SAMP>`%'</SAMP>. Words are numbered from the beginning
-of the line, with the first word being denoted by 0 (zero). Words are
-inserted into the current line separated by single spaces.
-</P><P>
-
-For example,
-</P><P>
-
-<DL COMPACT>
-<DT><CODE>!!</CODE>
-<DD>designates the preceding command. When you type this, the preceding
-command is repeated in toto.
-<P>
-
-<DT><CODE>!!:$</CODE>
-<DD>designates the last argument of the preceding command. This may be
-shortened to <CODE>!$</CODE>.
-<P>
-
-<DT><CODE>!fi:2</CODE>
-<DD>designates the second argument of the most recent command starting with
-the letters <CODE>fi</CODE>.
-</DL>
-<P>
-
-Here are the word designators:
-
-<DL COMPACT>
-
-<DT><CODE>0 (zero)</CODE>
-<DD>The <CODE>0</CODE>th word. For many applications, this is the command word.
-<P>
-
-<DT><CODE><VAR>n</VAR></CODE>
-<DD>The <VAR>n</VAR>th word.
-<P>
-
-<DT><CODE>^</CODE>
-<DD>The first argument; that is, word 1.
-<P>
-
-<DT><CODE>$</CODE>
-<DD>The last argument.
-<P>
-
-<DT><CODE>%</CODE>
-<DD>The word matched by the most recent <SAMP>`?<VAR>string</VAR>?'</SAMP> search.
-<P>
-
-<DT><CODE><VAR>x</VAR>-<VAR>y</VAR></CODE>
-<DD>A range of words; <SAMP>`-<VAR>y</VAR>'</SAMP> abbreviates <SAMP>`0-<VAR>y</VAR>'</SAMP>.
-<P>
-
-<DT><CODE>*</CODE>
-<DD>All of the words, except the <CODE>0</CODE>th. This is a synonym for <SAMP>`1-$'</SAMP>.
-It is not an error to use <SAMP>`*'</SAMP> if there is just one word in the event;
-the empty string is returned in that case.
-<P>
-
-<DT><CODE><VAR>x</VAR>*</CODE>
-<DD>Abbreviates <SAMP>`<VAR>x</VAR>-$'</SAMP>
-<P>
-
-<DT><CODE><VAR>x</VAR>-</CODE>
-<DD>Abbreviates <SAMP>`<VAR>x</VAR>-$'</SAMP> like <SAMP>`<VAR>x</VAR>*'</SAMP>, but omits the last word.
-<P>
-
-</DL>
-<P>
-
-If a word designator is supplied without an event specification, the
-previous command is used as the event.
-</P><P>
-
-<A NAME="Modifiers"></A>
-<HR SIZE="6">
-<A NAME="SEC5"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC4"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC2"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.1.3 Modifiers </H3>
-<!--docid::SEC5::-->
-<P>
-
-After the optional word designator, you can add a sequence of one or more
-of the following modifiers, each preceded by a <SAMP>`:'</SAMP>.
-</P><P>
-
-<DL COMPACT>
-
-<DT><CODE>h</CODE>
-<DD>Remove a trailing pathname component, leaving only the head.
-<P>
-
-<DT><CODE>t</CODE>
-<DD>Remove all leading pathname components, leaving the tail.
-<P>
-
-<DT><CODE>r</CODE>
-<DD>Remove a trailing suffix of the form <SAMP>`.<VAR>suffix</VAR>'</SAMP>, leaving
-the basename.
-<P>
-
-<DT><CODE>e</CODE>
-<DD>Remove all but the trailing suffix.
-<P>
-
-<DT><CODE>p</CODE>
-<DD>Print the new command but do not execute it.
-<P>
-
-<DT><CODE>s/<VAR>old</VAR>/<VAR>new</VAR>/</CODE>
-<DD>Substitute <VAR>new</VAR> for the first occurrence of <VAR>old</VAR> in the
-event line. Any delimiter may be used in place of <SAMP>`/'</SAMP>.
-The delimiter may be quoted in <VAR>old</VAR> and <VAR>new</VAR>
-with a single backslash. If <SAMP>`&#38;'</SAMP> appears in <VAR>new</VAR>,
-it is replaced by <VAR>old</VAR>. A single backslash will quote
-the <SAMP>`&#38;'</SAMP>. The final delimiter is optional if it is the last
-character on the input line.
-<P>
-
-<DT><CODE>&#38;</CODE>
-<DD>Repeat the previous substitution.
-<P>
-
-<DT><CODE>g</CODE>
-<DD>Cause changes to be applied over the entire event line. Used in
-conjunction with <SAMP>`s'</SAMP>, as in <CODE>gs/<VAR>old</VAR>/<VAR>new</VAR>/</CODE>,
-or with <SAMP>`&#38;'</SAMP>.
-<P>
-
-</DL>
-<P>
-
-<A NAME="Programming with GNU History"></A>
-<HR SIZE="6">
-<A NAME="SEC6"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC5"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC7"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1> 2. Programming with GNU History </H1>
-<!--docid::SEC6::-->
-<P>
-
-This chapter describes how to interface programs that you write
-with the GNU History Library.
-It should be considered a technical guide.
-For information on the interactive use of GNU History, see section <A HREF="history.html#SEC1">1. Using History Interactively</A>.
-</P><P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC7">2.1 Introduction to History</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">What is the GNU History library for?</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC8">2.2 History Storage</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">How information is stored.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC9">2.3 History Functions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions that you can use.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC17">2.4 History Variables</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Variables that control behaviour.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC18">2.5 History Programming Example</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Example of using the GNU History Library.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<A NAME="Introduction to History"></A>
-<HR SIZE="6">
-<A NAME="SEC7"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC8"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 2.1 Introduction to History </H2>
-<!--docid::SEC7::-->
-<P>
-
-Many programs read input from the user a line at a time. The 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.
-</P><P>
-
-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 <EM>expansion</EM> function
-is available which provides for a consistent user interface across
-different programs.
-</P><P>
-
-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</CODE>.
-</P><P>
-
-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.
-</P><P>
-
-Before declaring any functions using any functionality the History
-library provides in other code, an application writer should include
-the file <CODE>&#60;readline/history.h&#62;</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.
-</P><P>
-
-<A NAME="History Storage"></A>
-<HR SIZE="6">
-<A NAME="SEC8"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC7"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 2.2 History Storage </H2>
-<!--docid::SEC8::-->
-<P>
-
-The history list is an array of history entries. A history entry is
-declared as follows:
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>typedef void *histdata_t;
-
-typedef struct _hist_entry {
- char *line;
- histdata_t data;
-} HIST_ENTRY;
-</pre></td></tr></table></P><P>
-
-The history list itself might therefore be declared as
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>HIST_ENTRY **the_history_list;
-</pre></td></tr></table></P><P>
-
-The state of the History library is encapsulated into a single structure:
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>/*
- * 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;
-</pre></td></tr></table></P><P>
-
-If the flags member includes <CODE>HS_STIFLED</CODE>, the history has been
-stifled.
-</P><P>
-
-<A NAME="History Functions"></A>
-<HR SIZE="6">
-<A NAME="SEC9"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC8"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC10"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 2.3 History Functions </H2>
-<!--docid::SEC9::-->
-<P>
-
-This section describes the calling sequence for the various functions
-exported by the GNU History library.
-</P><P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC10">2.3.1 Initializing History and State Management</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions to call when you
- want to use history in a
- program.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions used to manage the list
- of history entries.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC12">2.3.3 Information About the History List</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions returning information about
- the history list.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC13">2.3.4 Moving Around the History List</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions used to change the position
- in the history list.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC14">2.3.5 Searching the History List</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions to search the history list
- for entries containing a string.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC15">2.3.6 Managing the History File</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions that read and write a file
- containing the history list.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC16">2.3.7 History Expansion</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions to perform csh-like history
- expansion.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<A NAME="Initializing History and State Management"></A>
-<HR SIZE="6">
-<A NAME="SEC10"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC11"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.3.1 Initializing History and State Management </H3>
-<!--docid::SEC10::-->
-<P>
-
-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.
-</P><P>
-
-<A NAME="IDX2"></A>
-<DL>
-<DT><U>Function:</U> void <B>using_history</B> <I>(void)</I>
-<DD>Begin a session in which the history functions might be used. This
-initializes the interactive variables.
-</DL>
-</P><P>
-
-<A NAME="IDX3"></A>
-<DL>
-<DT><U>Function:</U> HISTORY_STATE * <B>history_get_history_state</B> <I>(void)</I>
-<DD>Return a structure describing the current state of the input history.
-</DL>
-</P><P>
-
-<A NAME="IDX4"></A>
-<DL>
-<DT><U>Function:</U> void <B>history_set_history_state</B> <I>(HISTORY_STATE *state)</I>
-<DD>Set the state of the history list according to <VAR>state</VAR>.
-</DL>
-</P><P>
-
-<A NAME="History List Management"></A>
-<HR SIZE="6">
-<A NAME="SEC11"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC10"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC12"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC12"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.3.2 History List Management </H3>
-<!--docid::SEC11::-->
-<P>
-
-These functions manage individual entries on the history list, or set
-parameters managing the list itself.
-</P><P>
-
-<A NAME="IDX5"></A>
-<DL>
-<DT><U>Function:</U> void <B>add_history</B> <I>(const char *string)</I>
-<DD>Place <VAR>string</VAR> at the end of the history list. The associated data
-field (if any) is set to <CODE>NULL</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX6"></A>
-<DL>
-<DT><U>Function:</U> HIST_ENTRY * <B>remove_history</B> <I>(int which)</I>
-<DD>Remove history entry at offset <VAR>which</VAR> from the history. The
-removed element is returned so you can free the line, data,
-and containing structure.
-</DL>
-</P><P>
-
-<A NAME="IDX7"></A>
-<DL>
-<DT><U>Function:</U> HIST_ENTRY * <B>replace_history_entry</B> <I>(int which, const char *line, histdata_t data)</I>
-<DD>Make the history entry at offset <VAR>which</VAR> have <VAR>line</VAR> and <VAR>data</VAR>.
-This returns the old entry so you can dispose of the data. In the case
-of an invalid <VAR>which</VAR>, a <CODE>NULL</CODE> pointer is returned.
-</DL>
-</P><P>
-
-<A NAME="IDX8"></A>
-<DL>
-<DT><U>Function:</U> void <B>clear_history</B> <I>(void)</I>
-<DD>Clear the history list by deleting all the entries.
-</DL>
-</P><P>
-
-<A NAME="IDX9"></A>
-<DL>
-<DT><U>Function:</U> void <B>stifle_history</B> <I>(int max)</I>
-<DD>Stifle the history list, remembering only the last <VAR>max</VAR> entries.
-</DL>
-</P><P>
-
-<A NAME="IDX10"></A>
-<DL>
-<DT><U>Function:</U> int <B>unstifle_history</B> <I>(void)</I>
-<DD>Stop stifling the history. This returns the previously-set
-maximum number of history entries (as set by <CODE>stifle_history()</CODE>).
-The value is positive if the history was
-stifled, negative if it wasn't.
-</DL>
-</P><P>
-
-<A NAME="IDX11"></A>
-<DL>
-<DT><U>Function:</U> int <B>history_is_stifled</B> <I>(void)</I>
-<DD>Returns non-zero if the history is stifled, zero if it is not.
-</DL>
-</P><P>
-
-<A NAME="Information About the History List"></A>
-<HR SIZE="6">
-<A NAME="SEC12"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC11"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC13"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC13"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.3.3 Information About the History List </H3>
-<!--docid::SEC12::-->
-<P>
-
-These functions return information about the entire history list or
-individual list entries.
-</P><P>
-
-<A NAME="IDX12"></A>
-<DL>
-<DT><U>Function:</U> HIST_ENTRY ** <B>history_list</B> <I>(void)</I>
-<DD>Return a <CODE>NULL</CODE> terminated array of <CODE>HIST_ENTRY *</CODE> which is the
-current input history. Element 0 of this list is the beginning of time.
-If there is no history, return <CODE>NULL</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX13"></A>
-<DL>
-<DT><U>Function:</U> int <B>where_history</B> <I>(void)</I>
-<DD>Returns the offset of the current history element.
-</DL>
-</P><P>
-
-<A NAME="IDX14"></A>
-<DL>
-<DT><U>Function:</U> HIST_ENTRY * <B>current_history</B> <I>(void)</I>
-<DD>Return the history entry at the current position, as determined by
-<CODE>where_history()</CODE>. If there is no entry there, return a <CODE>NULL</CODE>
-pointer.
-</DL>
-</P><P>
-
-<A NAME="IDX15"></A>
-<DL>
-<DT><U>Function:</U> HIST_ENTRY * <B>history_get</B> <I>(int offset)</I>
-<DD>Return the history entry at position <VAR>offset</VAR>, starting from
-<CODE>history_base</CODE> (see section <A HREF="history.html#SEC17">2.4 History Variables</A>).
-If there is no entry there, or if <VAR>offset</VAR>
-is greater than the history length, return a <CODE>NULL</CODE> pointer.
-</DL>
-</P><P>
-
-<A NAME="IDX16"></A>
-<DL>
-<DT><U>Function:</U> int <B>history_total_bytes</B> <I>(void)</I>
-<DD>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.
-</DL>
-</P><P>
-
-<A NAME="Moving Around the History List"></A>
-<HR SIZE="6">
-<A NAME="SEC13"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC12"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC14"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC14"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.3.4 Moving Around the History List </H3>
-<!--docid::SEC13::-->
-<P>
-
-These functions allow the current index into the history list to be
-set or changed.
-</P><P>
-
-<A NAME="IDX17"></A>
-<DL>
-<DT><U>Function:</U> int <B>history_set_pos</B> <I>(int pos)</I>
-<DD>Set the current history offset to <VAR>pos</VAR>, an absolute index
-into the list.
-Returns 1 on success, 0 if <VAR>pos</VAR> is less than zero or greater
-than the number of history entries.
-</DL>
-</P><P>
-
-<A NAME="IDX18"></A>
-<DL>
-<DT><U>Function:</U> HIST_ENTRY * <B>previous_history</B> <I>(void)</I>
-<DD>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</CODE> pointer.
-</DL>
-</P><P>
-
-<A NAME="IDX19"></A>
-<DL>
-<DT><U>Function:</U> HIST_ENTRY * <B>next_history</B> <I>(void)</I>
-<DD>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</CODE> pointer.
-</DL>
-</P><P>
-
-<A NAME="Searching the History List"></A>
-<HR SIZE="6">
-<A NAME="SEC14"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC13"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC15"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC15"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.3.5 Searching the History List </H3>
-<!--docid::SEC14::-->
-<P>
-
-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 <EM>anchored</EM>,
-meaning that the string must match at the beginning of the history entry.
-<A NAME="IDX20"></A>
-</P><P>
-
-<A NAME="IDX21"></A>
-<DL>
-<DT><U>Function:</U> int <B>history_search</B> <I>(const char *string, int direction)</I>
-<DD>Search the history for <VAR>string</VAR>, starting at the current history offset.
-If <VAR>direction</VAR> is less than 0, then the search is through
-previous entries, otherwise through subsequent entries.
-If <VAR>string</VAR> 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</VAR> was found. Otherwise, nothing is changed, and a -1 is
-returned.
-</DL>
-</P><P>
-
-<A NAME="IDX22"></A>
-<DL>
-<DT><U>Function:</U> int <B>history_search_prefix</B> <I>(const char *string, int direction)</I>
-<DD>Search the history for <VAR>string</VAR>, starting at the current history
-offset. The search is anchored: matching lines must begin with
-<VAR>string</VAR>. If <VAR>direction</VAR> is less than 0, then the search is
-through previous entries, otherwise through subsequent entries.
-If <VAR>string</VAR> 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.
-</DL>
-</P><P>
-
-<A NAME="IDX23"></A>
-<DL>
-<DT><U>Function:</U> int <B>history_search_pos</B> <I>(const char *string, int direction, int pos)</I>
-<DD>Search for <VAR>string</VAR> in the history list, starting at <VAR>pos</VAR>, an
-absolute index into the list. If <VAR>direction</VAR> is negative, the search
-proceeds backward from <VAR>pos</VAR>, otherwise forward. Returns the absolute
-index of the history element where <VAR>string</VAR> was found, or -1 otherwise.
-</DL>
-</P><P>
-
-<A NAME="Managing the History File"></A>
-<HR SIZE="6">
-<A NAME="SEC15"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC14"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC16"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC16"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.3.6 Managing the History File </H3>
-<!--docid::SEC15::-->
-<P>
-
-The History library can read the history from and write it to a file.
-This section documents the functions for managing a history file.
-</P><P>
-
-<A NAME="IDX24"></A>
-<DL>
-<DT><U>Function:</U> int <B>read_history</B> <I>(const char *filename)</I>
-<DD>Add the contents of <VAR>filename</VAR> to the history list, a line at a time.
-If <VAR>filename</VAR> is <CODE>NULL</CODE>, then read from <TT>`~/.history'</TT>.
-Returns 0 if successful, or <CODE>errno</CODE> if not.
-</DL>
-</P><P>
-
-<A NAME="IDX25"></A>
-<DL>
-<DT><U>Function:</U> int <B>read_history_range</B> <I>(const char *filename, int from, int to)</I>
-<DD>Read a range of lines from <VAR>filename</VAR>, adding them to the history list.
-Start reading at line <VAR>from</VAR> and end at <VAR>to</VAR>.
-If <VAR>from</VAR> is zero, start at the beginning. If <VAR>to</VAR> is less than
-<VAR>from</VAR>, then read until the end of the file. If <VAR>filename</VAR> is
-<CODE>NULL</CODE>, then read from <TT>`~/.history'</TT>. Returns 0 if successful,
-or <CODE>errno</CODE> if not.
-</DL>
-</P><P>
-
-<A NAME="IDX26"></A>
-<DL>
-<DT><U>Function:</U> int <B>write_history</B> <I>(const char *filename)</I>
-<DD>Write the current history to <VAR>filename</VAR>, overwriting <VAR>filename</VAR>
-if necessary.
-If <VAR>filename</VAR> is <CODE>NULL</CODE>, then write the history list to
-<TT>`~/.history'</TT>.
-Returns 0 on success, or <CODE>errno</CODE> on a read or write error.
-</DL>
-</P><P>
-
-<A NAME="IDX27"></A>
-<DL>
-<DT><U>Function:</U> int <B>append_history</B> <I>(int nelements, const char *filename)</I>
-<DD>Append the last <VAR>nelements</VAR> of the history list to <VAR>filename</VAR>.
-If <VAR>filename</VAR> is <CODE>NULL</CODE>, then append to <TT>`~/.history'</TT>.
-Returns 0 on success, or <CODE>errno</CODE> on a read or write error.
-</DL>
-</P><P>
-
-<A NAME="IDX28"></A>
-<DL>
-<DT><U>Function:</U> int <B>history_truncate_file</B> <I>(const char *filename, int nlines)</I>
-<DD>Truncate the history file <VAR>filename</VAR>, leaving only the last
-<VAR>nlines</VAR> lines.
-If <VAR>filename</VAR> is <CODE>NULL</CODE>, then <TT>`~/.history'</TT> is truncated.
-Returns 0 on success, or <CODE>errno</CODE> on failure.
-</DL>
-</P><P>
-
-<A NAME="History Expansion"></A>
-<HR SIZE="6">
-<A NAME="SEC16"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC15"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.3.7 History Expansion </H3>
-<!--docid::SEC16::-->
-<P>
-
-These functions implement history expansion.
-</P><P>
-
-<A NAME="IDX29"></A>
-<DL>
-<DT><U>Function:</U> int <B>history_expand</B> <I>(char *string, char **output)</I>
-<DD>Expand <VAR>string</VAR>, placing the result into <VAR>output</VAR>, a pointer
-to a string (see section <A HREF="history.html#SEC2">1.1 History Expansion</A>). Returns:
-<DL COMPACT>
-<DT><CODE>0</CODE>
-<DD>If no expansions took place (or, if the only change in
-the text was the removal of escape characters preceding the history expansion
-character);
-<DT><CODE>1</CODE>
-<DD>if expansions did take place;
-<DT><CODE>-1</CODE>
-<DD>if there was an error in expansion;
-<DT><CODE>2</CODE>
-<DD>if the returned line should be displayed, but not executed,
-as with the <CODE>:p</CODE> modifier (see section <A HREF="history.html#SEC5">1.1.3 Modifiers</A>).
-</DL>
-<P>
-
-If an error ocurred in expansion, then <VAR>output</VAR> contains a descriptive
-error message.
-</DL>
-</P><P>
-
-<A NAME="IDX30"></A>
-<DL>
-<DT><U>Function:</U> char * <B>get_history_event</B> <I>(const char *string, int *cindex, int qchar)</I>
-<DD>Returns the text of the history event beginning at <VAR>string</VAR> +
-<VAR>*cindex</VAR>. <VAR>*cindex</VAR> is modified to point to after the event
-specifier. At function entry, <VAR>cindex</VAR> points to the index into
-<VAR>string</VAR> where the history event specification begins. <VAR>qchar</VAR>
-is a character that is allowed to end the event specification in addition
-to the "normal" terminating characters.
-</DL>
-</P><P>
-
-<A NAME="IDX31"></A>
-<DL>
-<DT><U>Function:</U> char ** <B>history_tokenize</B> <I>(const char *string)</I>
-<DD>Return an array of tokens parsed out of <VAR>string</VAR>, much as the
-shell might. The tokens are split on the characters in the
-<VAR>history_word_delimiters</VAR> variable,
-and shell quoting conventions are obeyed.
-</DL>
-</P><P>
-
-<A NAME="IDX32"></A>
-<DL>
-<DT><U>Function:</U> char * <B>history_arg_extract</B> <I>(int first, int last, const char *string)</I>
-<DD>Extract a string segment consisting of the <VAR>first</VAR> through <VAR>last</VAR>
-arguments present in <VAR>string</VAR>. Arguments are split using
-<CODE>history_tokenize</CODE>.
-</DL>
-</P><P>
-
-<A NAME="History Variables"></A>
-<HR SIZE="6">
-<A NAME="SEC17"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC16"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC18"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC18"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 2.4 History Variables </H2>
-<!--docid::SEC17::-->
-<P>
-
-This section describes the externally-visible variables exported by
-the GNU History Library.
-</P><P>
-
-<A NAME="IDX33"></A>
-<DL>
-<DT><U>Variable:</U> int <B>history_base</B>
-<DD>The logical offset of the first entry in the history list.
-</DL>
-</P><P>
-
-<A NAME="IDX34"></A>
-<DL>
-<DT><U>Variable:</U> int <B>history_length</B>
-<DD>The number of entries currently stored in the history list.
-</DL>
-</P><P>
-
-<A NAME="IDX35"></A>
-<DL>
-<DT><U>Variable:</U> int <B>history_max_entries</B>
-<DD>The maximum number of history entries. This must be changed using
-<CODE>stifle_history()</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX36"></A>
-<DL>
-<DT><U>Variable:</U> char <B>history_expansion_char</B>
-<DD>The character that introduces a history event. The default is <SAMP>`!'</SAMP>.
-Setting this to 0 inhibits history expansion.
-</DL>
-</P><P>
-
-<A NAME="IDX37"></A>
-<DL>
-<DT><U>Variable:</U> char <B>history_subst_char</B>
-<DD>The character that invokes word substitution if found at the start of
-a line. The default is <SAMP>`^'</SAMP>.
-</DL>
-</P><P>
-
-<A NAME="IDX38"></A>
-<DL>
-<DT><U>Variable:</U> char <B>history_comment_char</B>
-<DD>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.
-</DL>
-</P><P>
-
-<A NAME="IDX39"></A>
-<DL>
-<DT><U>Variable:</U> char * <B>history_word_delimiters</B>
-<DD>The characters that separate tokens for <CODE>history_tokenize()</CODE>.
-The default value is <CODE>" \t\n()<>;&|"</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX40"></A>
-<DL>
-<DT><U>Variable:</U> char * <B>history_no_expand_chars</B>
-<DD>The list of characters which inhibit history expansion if found immediately
-following <VAR>history_expansion_char</VAR>. The default is space, tab, newline,
-carriage return, and <SAMP>`='</SAMP>.
-</DL>
-</P><P>
-
-<A NAME="IDX41"></A>
-<DL>
-<DT><U>Variable:</U> char * <B>history_search_delimiter_chars</B>
-<DD>The list of additional characters which can delimit a history search
-string, in addition to space, TAB, <SAMP>`:'</SAMP> and <SAMP>`?'</SAMP> in the case of
-a substring search. The default is empty.
-</DL>
-</P><P>
-
-<A NAME="IDX42"></A>
-<DL>
-<DT><U>Variable:</U> int <B>history_quotes_inhibit_expansion</B>
-<DD>If non-zero, single-quoted words are not scanned for the history expansion
-character. The default value is 0.
-</DL>
-</P><P>
-
-<A NAME="IDX43"></A>
-<DL>
-<DT><U>Variable:</U> rl_linebuf_func_t * <B>history_inhibit_expansion_function</B>
-<DD>This should be set to the address of a function that takes two arguments:
-a <CODE>char *</CODE> (<VAR>string</VAR>)
-and an <CODE>int</CODE> index into that string (<VAR>i</VAR>).
-It should return a non-zero value if the history expansion starting at
-<VAR>string[i]</VAR> 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</CODE>.
-</DL>
-</P><P>
-
-<A NAME="History Programming Example"></A>
-<HR SIZE="6">
-<A NAME="SEC18"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 2.5 History Programming Example </H2>
-<!--docid::SEC18::-->
-<P>
-
-The following program demonstrates simple use of the GNU History Library.
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>#include &#60;stdio.h&#62;
-#include &#60;readline/history.h&#62;
-
-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 &#38;&#38; *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, &#38;expansion);
- if (result)
- fprintf (stderr, "%s\n", expansion);
-
- if (result &#60; 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]-&#62;line);
- }
- else if (strncmp (line, "delete", 6) == 0)
- {
- int which;
- if ((sscanf (line + 6, "%d", &#38;which)) == 1)
- {
- HIST_ENTRY *entry = remove_history (which);
- if (!entry)
- fprintf (stderr, "No such entry %d\n", which);
- else
- {
- free (entry-&#62;line);
- free (entry);
- }
- }
- else
- {
- fprintf (stderr, "non-numeric arg given to `delete'\n");
- }
- }
- }
-}
-</FONT></pre></td></tr></table></P><P>
-
-<A NAME="Concept Index"></A>
-<HR SIZE="6">
-<A NAME="SEC19"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC18"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC20"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC20"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1> A. Concept Index </H1>
-<!--docid::SEC19::-->
-<table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="history.html#cp_A" style="text-decoration:none"><b>A</b></A>
- &nbsp;
-<A HREF="history.html#cp_E" style="text-decoration:none"><b>E</b></A>
- &nbsp;
-<A HREF="history.html#cp_H" style="text-decoration:none"><b>H</b></A>
- &nbsp;
-</td></tr></table><br><P></P>
-<TABLE border=0>
-<TR><TD></TD><TH ALIGN=LEFT>Index Entry</TH><TH ALIGN=LEFT> Section</TH></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="cp_A"></A>A</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX20">anchored search</A></TD><TD valign=top><A HREF="history.html#SEC14">2.3.5 Searching the History List</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="cp_E"></A>E</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#SEC3">event designators</A></TD><TD valign=top><A HREF="history.html#SEC3">1.1.1 Event Designators</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="cp_H"></A>H</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX1">history events</A></TD><TD valign=top><A HREF="history.html#SEC3">1.1.1 Event Designators</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#SEC2">history expansion</A></TD><TD valign=top><A HREF="history.html#SEC2">1.1 History Expansion</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#SEC14">History Searching</A></TD><TD valign=top><A HREF="history.html#SEC14">2.3.5 Searching the History List</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-</TABLE><P></P><table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="history.html#cp_A" style="text-decoration:none"><b>A</b></A>
- &nbsp;
-<A HREF="history.html#cp_E" style="text-decoration:none"><b>E</b></A>
- &nbsp;
-<A HREF="history.html#cp_H" style="text-decoration:none"><b>H</b></A>
- &nbsp;
-</td></tr></table><br><P>
-
-<A NAME="Function and Variable Index"></A>
-<HR SIZE="6">
-<A NAME="SEC20"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1> B. Function and Variable Index </H1>
-<!--docid::SEC20::-->
-<table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="history.html#vr_A" style="text-decoration:none"><b>A</b></A>
- &nbsp;
-<A HREF="history.html#vr_C" style="text-decoration:none"><b>C</b></A>
- &nbsp;
-<A HREF="history.html#vr_G" style="text-decoration:none"><b>G</b></A>
- &nbsp;
-<A HREF="history.html#vr_H" style="text-decoration:none"><b>H</b></A>
- &nbsp;
-<A HREF="history.html#vr_N" style="text-decoration:none"><b>N</b></A>
- &nbsp;
-<A HREF="history.html#vr_P" style="text-decoration:none"><b>P</b></A>
- &nbsp;
-<A HREF="history.html#vr_R" style="text-decoration:none"><b>R</b></A>
- &nbsp;
-<A HREF="history.html#vr_S" style="text-decoration:none"><b>S</b></A>
- &nbsp;
-<A HREF="history.html#vr_U" style="text-decoration:none"><b>U</b></A>
- &nbsp;
-<A HREF="history.html#vr_W" style="text-decoration:none"><b>W</b></A>
- &nbsp;
-</td></tr></table><br><P></P>
-<TABLE border=0>
-<TR><TD></TD><TH ALIGN=LEFT>Index Entry</TH><TH ALIGN=LEFT> Section</TH></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="vr_A"></A>A</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX5"><CODE>add_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX27"><CODE>append_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC15">2.3.6 Managing the History File</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="vr_C"></A>C</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX8"><CODE>clear_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX14"><CODE>current_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC12">2.3.3 Information About the History List</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="vr_G"></A>G</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX30"><CODE>get_history_event</CODE></A></TD><TD valign=top><A HREF="history.html#SEC16">2.3.7 History Expansion</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="vr_H"></A>H</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX32"><CODE>history_arg_extract</CODE></A></TD><TD valign=top><A HREF="history.html#SEC16">2.3.7 History Expansion</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX33"><CODE>history_base</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX38"><CODE>history_comment_char</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX29"><CODE>history_expand</CODE></A></TD><TD valign=top><A HREF="history.html#SEC16">2.3.7 History Expansion</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX36"><CODE>history_expansion_char</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX15"><CODE>history_get</CODE></A></TD><TD valign=top><A HREF="history.html#SEC12">2.3.3 Information About the History List</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX3"><CODE>history_get_history_state</CODE></A></TD><TD valign=top><A HREF="history.html#SEC10">2.3.1 Initializing History and State Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX43"><CODE>history_inhibit_expansion_function</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX11"><CODE>history_is_stifled</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX34"><CODE>history_length</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX12"><CODE>history_list</CODE></A></TD><TD valign=top><A HREF="history.html#SEC12">2.3.3 Information About the History List</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX35"><CODE>history_max_entries</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX40"><CODE>history_no_expand_chars</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX42"><CODE>history_quotes_inhibit_expansion</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX21"><CODE>history_search</CODE></A></TD><TD valign=top><A HREF="history.html#SEC14">2.3.5 Searching the History List</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX41"><CODE>history_search_delimiter_chars</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX23"><CODE>history_search_pos</CODE></A></TD><TD valign=top><A HREF="history.html#SEC14">2.3.5 Searching the History List</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX22"><CODE>history_search_prefix</CODE></A></TD><TD valign=top><A HREF="history.html#SEC14">2.3.5 Searching the History List</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX4"><CODE>history_set_history_state</CODE></A></TD><TD valign=top><A HREF="history.html#SEC10">2.3.1 Initializing History and State Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX17"><CODE>history_set_pos</CODE></A></TD><TD valign=top><A HREF="history.html#SEC13">2.3.4 Moving Around the History List</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX37"><CODE>history_subst_char</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX31"><CODE>history_tokenize</CODE></A></TD><TD valign=top><A HREF="history.html#SEC16">2.3.7 History Expansion</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX16"><CODE>history_total_bytes</CODE></A></TD><TD valign=top><A HREF="history.html#SEC12">2.3.3 Information About the History List</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX28"><CODE>history_truncate_file</CODE></A></TD><TD valign=top><A HREF="history.html#SEC15">2.3.6 Managing the History File</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX39"><CODE>history_word_delimiters</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="vr_N"></A>N</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX19"><CODE>next_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC13">2.3.4 Moving Around the History List</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="vr_P"></A>P</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX18"><CODE>previous_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC13">2.3.4 Moving Around the History List</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="vr_R"></A>R</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX24"><CODE>read_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC15">2.3.6 Managing the History File</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX25"><CODE>read_history_range</CODE></A></TD><TD valign=top><A HREF="history.html#SEC15">2.3.6 Managing the History File</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX6"><CODE>remove_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX7"><CODE>replace_history_entry</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="vr_S"></A>S</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX9"><CODE>stifle_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="vr_U"></A>U</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX10"><CODE>unstifle_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX2"><CODE>using_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC10">2.3.1 Initializing History and State Management</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="vr_W"></A>W</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX13"><CODE>where_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC12">2.3.3 Information About the History List</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX26"><CODE>write_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC15">2.3.6 Managing the History File</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-</TABLE><P></P><table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="history.html#vr_A" style="text-decoration:none"><b>A</b></A>
- &nbsp;
-<A HREF="history.html#vr_C" style="text-decoration:none"><b>C</b></A>
- &nbsp;
-<A HREF="history.html#vr_G" style="text-decoration:none"><b>G</b></A>
- &nbsp;
-<A HREF="history.html#vr_H" style="text-decoration:none"><b>H</b></A>
- &nbsp;
-<A HREF="history.html#vr_N" style="text-decoration:none"><b>N</b></A>
- &nbsp;
-<A HREF="history.html#vr_P" style="text-decoration:none"><b>P</b></A>
- &nbsp;
-<A HREF="history.html#vr_R" style="text-decoration:none"><b>R</b></A>
- &nbsp;
-<A HREF="history.html#vr_S" style="text-decoration:none"><b>S</b></A>
- &nbsp;
-<A HREF="history.html#vr_U" style="text-decoration:none"><b>U</b></A>
- &nbsp;
-<A HREF="history.html#vr_W" style="text-decoration:none"><b>W</b></A>
- &nbsp;
-</td></tr></table><br><P>
-
-<HR SIZE="6">
-<A NAME="SEC_Contents"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1>Table of Contents</H1>
-<UL>
-<A NAME="TOC1" HREF="history.html#SEC1">1. Using History Interactively</A>
-<BR>
-<UL>
-<A NAME="TOC2" HREF="history.html#SEC2">1.1 History Expansion</A>
-<BR>
-<UL>
-<A NAME="TOC3" HREF="history.html#SEC3">1.1.1 Event Designators</A>
-<BR>
-<A NAME="TOC4" HREF="history.html#SEC4">1.1.2 Word Designators</A>
-<BR>
-<A NAME="TOC5" HREF="history.html#SEC5">1.1.3 Modifiers</A>
-<BR>
-</UL>
-</UL>
-<A NAME="TOC6" HREF="history.html#SEC6">2. Programming with GNU History</A>
-<BR>
-<UL>
-<A NAME="TOC7" HREF="history.html#SEC7">2.1 Introduction to History</A>
-<BR>
-<A NAME="TOC8" HREF="history.html#SEC8">2.2 History Storage</A>
-<BR>
-<A NAME="TOC9" HREF="history.html#SEC9">2.3 History Functions</A>
-<BR>
-<UL>
-<A NAME="TOC10" HREF="history.html#SEC10">2.3.1 Initializing History and State Management</A>
-<BR>
-<A NAME="TOC11" HREF="history.html#SEC11">2.3.2 History List Management</A>
-<BR>
-<A NAME="TOC12" HREF="history.html#SEC12">2.3.3 Information About the History List</A>
-<BR>
-<A NAME="TOC13" HREF="history.html#SEC13">2.3.4 Moving Around the History List</A>
-<BR>
-<A NAME="TOC14" HREF="history.html#SEC14">2.3.5 Searching the History List</A>
-<BR>
-<A NAME="TOC15" HREF="history.html#SEC15">2.3.6 Managing the History File</A>
-<BR>
-<A NAME="TOC16" HREF="history.html#SEC16">2.3.7 History Expansion</A>
-<BR>
-</UL>
-<A NAME="TOC17" HREF="history.html#SEC17">2.4 History Variables</A>
-<BR>
-<A NAME="TOC18" HREF="history.html#SEC18">2.5 History Programming Example</A>
-<BR>
-</UL>
-<A NAME="TOC19" HREF="history.html#SEC19">A. Concept Index</A>
-<BR>
-<A NAME="TOC20" HREF="history.html#SEC20">B. Function and Variable Index</A>
-<BR>
-</UL>
-<HR SIZE=1>
-<A NAME="SEC_OVERVIEW"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1>Short Table of Contents</H1>
-<BLOCKQUOTE>
-<A NAME="TOC1" HREF="history.html#SEC1">1. Using History Interactively</A>
-<BR>
-<A NAME="TOC6" HREF="history.html#SEC6">2. Programming with GNU History</A>
-<BR>
-<A NAME="TOC19" HREF="history.html#SEC19">A. Concept Index</A>
-<BR>
-<A NAME="TOC20" HREF="history.html#SEC20">B. Function and Variable Index</A>
-<BR>
-
-</BLOCKQUOTE>
-<HR SIZE=1>
-<A NAME="SEC_About"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1>About this document</H1>
-This document was generated by <I>Chet Ramey</I> on <I>June, 27 2002</I>
-using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
-"><I>texi2html</I></A>
-<P></P>
-The buttons in the navigation panels have the following meaning:
-<P></P>
-<table border = "1">
-<TR>
-<TH> Button </TH>
-<TH> Name </TH>
-<TH> Go to </TH>
-<TH> From 1.2.3 go to</TH>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ &lt; ] </TD>
-<TD ALIGN="CENTER">
-Back
-</TD>
-<TD>
-previous section in reading order
-</TD>
-<TD>
-1.2.2
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ &gt; ] </TD>
-<TD ALIGN="CENTER">
-Forward
-</TD>
-<TD>
-next section in reading order
-</TD>
-<TD>
-1.2.4
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ &lt;&lt; ] </TD>
-<TD ALIGN="CENTER">
-FastBack
-</TD>
-<TD>
-previous or up-and-previous section
-</TD>
-<TD>
-1.1
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ Up ] </TD>
-<TD ALIGN="CENTER">
-Up
-</TD>
-<TD>
-up section
-</TD>
-<TD>
-1.2
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ &gt;&gt; ] </TD>
-<TD ALIGN="CENTER">
-FastForward
-</TD>
-<TD>
-next or up-and-next section
-</TD>
-<TD>
-1.3
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [Top] </TD>
-<TD ALIGN="CENTER">
-Top
-</TD>
-<TD>
-cover (top) of document
-</TD>
-<TD>
- &nbsp;
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [Contents] </TD>
-<TD ALIGN="CENTER">
-Contents
-</TD>
-<TD>
-table of contents
-</TD>
-<TD>
- &nbsp;
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [Index] </TD>
-<TD ALIGN="CENTER">
-Index
-</TD>
-<TD>
-concept index
-</TD>
-<TD>
- &nbsp;
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ ? ] </TD>
-<TD ALIGN="CENTER">
-About
-</TD>
-<TD>
-this page
-</TD>
-<TD>
- &nbsp;
-</TD>
-</TR>
-</TABLE>
-<P></P>
-where the <STRONG> Example </STRONG> assumes that the current position
-is at <STRONG> Subsubsection One-Two-Three </STRONG> of a document of
-the following structure:
-<UL>
-<LI> 1. Section One </LI>
-<UL>
-<LI>1.1 Subsection One-One</LI>
-<UL>
-<LI> ... </LI>
-</UL>
-<LI>1.2 Subsection One-Two</LI>
-<UL>
-<LI>1.2.1 Subsubsection One-Two-One
-</LI><LI>1.2.2 Subsubsection One-Two-Two
-</LI><LI>1.2.3 Subsubsection One-Two-Three &nbsp; &nbsp; <STRONG>
-&lt;== Current Position </STRONG>
-</LI><LI>1.2.4 Subsubsection One-Two-Four
-</LI></UL>
-<LI>1.3 Subsection One-Three</LI>
-<UL>
-<LI> ... </LI>
-</UL>
-<LI>1.4 Subsection One-Four</LI>
-</UL>
-</UL>
-
-<HR SIZE=1>
-<BR>
-<FONT SIZE="-1">
-This document was generated
-by <I>Chet Ramey</I> on <I>June, 27 2002</I>
-using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
-"><I>texi2html</I></A>
-
-</BODY>
-</HTML>
diff --git a/readline-doc-4.3/doc/history.info b/readline-doc-4.3/doc/history.info
deleted file mode 100644
index 98c0002..0000000
--- a/readline-doc-4.3/doc/history.info
+++ /dev/null
@@ -1,840 +0,0 @@
-This is history.info, produced by makeinfo version 4.1 from
-/usr/homes/chet/src/bash/readline-src/doc/hist.texinfo.
-
-INFO-DIR-SECTION Libraries
-START-INFO-DIR-ENTRY
-* History: (history). The GNU history library API
-END-INFO-DIR-ENTRY
-
- This document describes the GNU History library, a programming tool
-that provides a consistent user interface for recalling lines of
-previously typed input.
-
- Copyright (C) 1988-2002 Free Software Foundation, Inc.
-
- Permission is granted to make and distribute verbatim copies of this
-manual provided the copyright notice and this permission notice pare
-preserved on all copies.
-
- Permission is granted to copy and distribute modified versions of
-this manual under the conditions for verbatim copying, provided that
-the entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
- Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be stated in a
-translation approved by the Free Software Foundation.
-
-
-File: history.info, Node: Top, Next: Using History Interactively, Up: (dir)
-
-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.
-* Concept Index:: Index of concepts described in this manual.
-* Function and Variable Index:: Index of externally visible functions
- and variables.
-
-
-File: history.info, Node: Using History Interactively, Next: Programming with GNU History, Prev: Top, Up: Top
-
-Using History Interactively
-***************************
-
- This chapter describes how to use the GNU History Library
-interactively, from a user's standpoint. It should be considered a
-user's guide. For information on using the GNU History Library in your
-own programs, *note Programming with GNU History::.
-
-* Menu:
-
-* History Interaction:: What it feels like using History as a user.
-
-
-File: history.info, Node: History Interaction, Up: Using History Interactively
-
-History Expansion
-=================
-
- The History library provides a history expansion feature that is
-similar to the history expansion provided by `csh'. This section
-describes the syntax used to manipulate the history information.
-
- History expansions introduce words from the history list into the
-input stream, making it easy to repeat commands, insert the arguments
-to a previous command into the current input line, or fix errors in
-previous commands quickly.
-
- History expansion takes place in two parts. The first is to
-determine which line from the history list should be used during
-substitution. The second is to select portions of that line for
-inclusion into the current one. The line selected from the history is
-called the "event", and the portions of that line that are acted upon
-are called "words". Various "modifiers" are available to manipulate
-the selected words. The line is broken into words in the same fashion
-that Bash does, so that several words surrounded by quotes are
-considered one word. History expansions are introduced by the
-appearance of the history expansion character, which is `!' by default.
-
-* Menu:
-
-* Event Designators:: How to specify which history line to use.
-* Word Designators:: Specifying which words are of interest.
-* Modifiers:: Modifying the results of substitution.
-
-
-File: history.info, Node: Event Designators, Next: Word Designators, Up: History Interaction
-
-Event Designators
------------------
-
- An event designator is a reference to a command line entry in the
-history list.
-
-`!'
- Start a history substitution, except when followed by a space, tab,
- the end of the line, `=' or `('.
-
-`!N'
- Refer to command line N.
-
-`!-N'
- Refer to the command N lines back.
-
-`!!'
- Refer to the previous command. This is a synonym for `!-1'.
-
-`!STRING'
- Refer to the most recent command starting with STRING.
-
-`!?STRING[?]'
- Refer to the most recent command containing STRING. The trailing
- `?' may be omitted if the STRING is followed immediately by a
- newline.
-
-`^STRING1^STRING2^'
- Quick Substitution. Repeat the last command, replacing STRING1
- with STRING2. Equivalent to `!!:s/STRING1/STRING2/'.
-
-`!#'
- The entire command line typed so far.
-
-
-File: history.info, Node: Word Designators, Next: Modifiers, Prev: Event Designators, Up: History Interaction
-
-Word Designators
-----------------
-
- Word designators are used to select desired words from the event. A
-`:' separates the event specification from the word designator. It may
-be omitted if the word designator begins with a `^', `$', `*', `-', or
-`%'. Words are numbered from the beginning of the line, with the first
-word being denoted by 0 (zero). Words are inserted into the current
-line separated by single spaces.
-
- For example,
-
-`!!'
- designates the preceding command. When you type this, the
- preceding command is repeated in toto.
-
-`!!:$'
- designates the last argument of the preceding command. This may be
- shortened to `!$'.
-
-`!fi:2'
- designates the second argument of the most recent command starting
- with the letters `fi'.
-
- Here are the word designators:
-
-`0 (zero)'
- The `0'th word. For many applications, this is the command word.
-
-`N'
- The Nth word.
-
-`^'
- The first argument; that is, word 1.
-
-`$'
- The last argument.
-
-`%'
- The word matched by the most recent `?STRING?' search.
-
-`X-Y'
- A range of words; `-Y' abbreviates `0-Y'.
-
-`*'
- All of the words, except the `0'th. This is a synonym for `1-$'.
- It is not an error to use `*' if there is just one word in the
- event; the empty string is returned in that case.
-
-`X*'
- Abbreviates `X-$'
-
-`X-'
- Abbreviates `X-$' like `X*', but omits the last word.
-
- If a word designator is supplied without an event specification, the
-previous command is used as the event.
-
-
-File: history.info, Node: Modifiers, Prev: Word Designators, Up: History Interaction
-
-Modifiers
----------
-
- After the optional word designator, you can add a sequence of one or
-more of the following modifiers, each preceded by a `:'.
-
-`h'
- Remove a trailing pathname component, leaving only the head.
-
-`t'
- Remove all leading pathname components, leaving the tail.
-
-`r'
- Remove a trailing suffix of the form `.SUFFIX', leaving the
- basename.
-
-`e'
- Remove all but the trailing suffix.
-
-`p'
- Print the new command but do not execute it.
-
-`s/OLD/NEW/'
- Substitute NEW for the first occurrence of OLD in the event line.
- Any delimiter may be used in place of `/'. The delimiter may be
- quoted in OLD and NEW with a single backslash. If `&' appears in
- NEW, it is replaced by OLD. A single backslash will quote the
- `&'. The final delimiter is optional if it is the last character
- on the input line.
-
-`&'
- Repeat the previous substitution.
-
-`g'
- Cause changes to be applied over the entire event line. Used in
- conjunction with `s', as in `gs/OLD/NEW/', or with `&'.
-
-
-File: history.info, Node: Programming with GNU History, Next: Concept Index, Prev: Using History Interactively, Up: Top
-
-Programming with GNU History
-****************************
-
- This chapter describes how to interface programs that you write with
-the GNU History Library. It should be considered a technical guide.
-For information on the interactive use of GNU History, *note 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.
-
-
-File: history.info, Node: Introduction to History, Next: History Storage, Up: Programming with GNU History
-
-Introduction to History
-=======================
-
- Many programs read input from the user a line at a time. The 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 "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 `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 `<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.
-
-
-File: history.info, Node: History Storage, Next: History Functions, Prev: Introduction to History, Up: Programming with GNU History
-
-History Storage
-===============
-
- The history list is an array of history entries. A history entry is
-declared as follows:
-
- typedef void *histdata_t;
-
- typedef struct _hist_entry {
- char *line;
- histdata_t data;
- } HIST_ENTRY;
-
- The history list itself might therefore be declared as
-
- HIST_ENTRY **the_history_list;
-
- The state of the History library is encapsulated into a single
-structure:
-
- /*
- * 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;
-
- If the flags member includes `HS_STIFLED', the history has been
-stifled.
-
-
-File: history.info, Node: History Functions, Next: History Variables, Prev: History Storage, Up: Programming with GNU History
-
-History Functions
-=================
-
- This section describes the calling sequence for the various functions
-exported by the 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.
-
-
-File: history.info, Node: Initializing History and State Management, Next: History List Management, Up: History Functions
-
-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.
-
- - Function: void using_history (void)
- Begin a session in which the history functions might be used. This
- initializes the interactive variables.
-
- - Function: HISTORY_STATE * history_get_history_state (void)
- Return a structure describing the current state of the input
- history.
-
- - Function: void history_set_history_state (HISTORY_STATE *state)
- Set the state of the history list according to STATE.
-
-
-File: history.info, Node: History List Management, Next: Information About the History List, Prev: Initializing History and State Management, Up: History Functions
-
-History List Management
------------------------
-
- These functions manage individual entries on the history list, or set
-parameters managing the list itself.
-
- - Function: void add_history (const char *string)
- Place STRING at the end of the history list. The associated data
- field (if any) is set to `NULL'.
-
- - Function: HIST_ENTRY * remove_history (int which)
- Remove history entry at offset WHICH from the history. The
- removed element is returned so you can free the line, data, and
- containing structure.
-
- - Function: HIST_ENTRY * replace_history_entry (int which, const char
- *line, histdata_t data)
- Make the history entry at offset WHICH have LINE and DATA. This
- returns the old entry so you can dispose of the data. In the case
- of an invalid WHICH, a `NULL' pointer is returned.
-
- - Function: void clear_history (void)
- Clear the history list by deleting all the entries.
-
- - Function: void stifle_history (int max)
- Stifle the history list, remembering only the last MAX entries.
-
- - Function: int unstifle_history (void)
- Stop stifling the history. This returns the previously-set
- maximum number of history entries (as set by `stifle_history()').
- The value is positive if the history was stifled, negative if it
- wasn't.
-
- - Function: int history_is_stifled (void)
- Returns non-zero if the history is stifled, zero if it is not.
-
-
-File: history.info, Node: Information About the History List, Next: Moving Around the History List, Prev: History List Management, Up: History Functions
-
-Information About the History List
-----------------------------------
-
- These functions return information about the entire history list or
-individual list entries.
-
- - Function: HIST_ENTRY ** history_list (void)
- Return a `NULL' terminated array of `HIST_ENTRY *' which is the
- current input history. Element 0 of this list is the beginning of
- time. If there is no history, return `NULL'.
-
- - Function: int where_history (void)
- Returns the offset of the current history element.
-
- - Function: HIST_ENTRY * current_history (void)
- Return the history entry at the current position, as determined by
- `where_history()'. If there is no entry there, return a `NULL'
- pointer.
-
- - Function: HIST_ENTRY * history_get (int offset)
- Return the history entry at position OFFSET, starting from
- `history_base' (*note History Variables::). If there is no entry
- there, or if OFFSET is greater than the history length, return a
- `NULL' pointer.
-
- - Function: 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.
-
-
-File: history.info, Node: Moving Around the History List, Next: Searching the History List, Prev: Information About the History List, Up: History Functions
-
-Moving Around the History List
-------------------------------
-
- These functions allow the current index into the history list to be
-set or changed.
-
- - Function: int history_set_pos (int pos)
- Set the current history offset to POS, an absolute index into the
- list. Returns 1 on success, 0 if POS is less than zero or greater
- than the number of history entries.
-
- - Function: 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 `NULL' pointer.
-
- - Function: 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 `NULL' pointer.
-
-
-File: history.info, Node: Searching the History List, Next: Managing the History File, Prev: Moving Around the History List, Up: History Functions
-
-Searching the History List
---------------------------
-
- 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
-"anchored", meaning that the string must match at the beginning of the
-history entry.
-
- - Function: int history_search (const char *string, int direction)
- Search the history for STRING, starting at the current history
- offset. If DIRECTION is less than 0, then the search is through
- previous entries, otherwise through subsequent entries. If 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 STRING was found. Otherwise, nothing is changed, and
- a -1 is returned.
-
- - Function: int history_search_prefix (const char *string, int
- direction)
- Search the history for STRING, starting at the current history
- offset. The search is anchored: matching lines must begin with
- STRING. If DIRECTION is less than 0, then the search is through
- previous entries, otherwise through subsequent entries. If 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.
-
- - Function: int history_search_pos (const char *string, int direction,
- int pos)
- Search for STRING in the history list, starting at POS, an
- absolute index into the list. If DIRECTION is negative, the search
- proceeds backward from POS, otherwise forward. Returns the
- absolute index of the history element where STRING was found, or
- -1 otherwise.
-
-
-File: history.info, Node: Managing the History File, Next: History Expansion, Prev: Searching the History List, Up: History Functions
-
-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.
-
- - Function: int read_history (const char *filename)
- Add the contents of FILENAME to the history list, a line at a time.
- If FILENAME is `NULL', then read from `~/.history'. Returns 0 if
- successful, or `errno' if not.
-
- - Function: int read_history_range (const char *filename, int from,
- int to)
- Read a range of lines from FILENAME, adding them to the history
- list. Start reading at line FROM and end at TO. If FROM is zero,
- start at the beginning. If TO is less than FROM, then read until
- the end of the file. If FILENAME is `NULL', then read from
- `~/.history'. Returns 0 if successful, or `errno' if not.
-
- - Function: int write_history (const char *filename)
- Write the current history to FILENAME, overwriting FILENAME if
- necessary. If FILENAME is `NULL', then write the history list to
- `~/.history'. Returns 0 on success, or `errno' on a read or write
- error.
-
- - Function: int append_history (int nelements, const char *filename)
- Append the last NELEMENTS of the history list to FILENAME. If
- FILENAME is `NULL', then append to `~/.history'. Returns 0 on
- success, or `errno' on a read or write error.
-
- - Function: int history_truncate_file (const char *filename, int
- nlines)
- Truncate the history file FILENAME, leaving only the last NLINES
- lines. If FILENAME is `NULL', then `~/.history' is truncated.
- Returns 0 on success, or `errno' on failure.
-
-
-File: history.info, Node: History Expansion, Prev: Managing the History File, Up: History Functions
-
-History Expansion
------------------
-
- These functions implement history expansion.
-
- - Function: int history_expand (char *string, char **output)
- Expand STRING, placing the result into OUTPUT, a pointer to a
- string (*note History Interaction::). Returns:
- `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);
-
- `1'
- if expansions did take place;
-
- `-1'
- if there was an error in expansion;
-
- `2'
- if the returned line should be displayed, but not executed,
- as with the `:p' modifier (*note Modifiers::).
-
- If an error ocurred in expansion, then OUTPUT contains a
- descriptive error message.
-
- - Function: char * get_history_event (const char *string, int *cindex,
- int qchar)
- Returns the text of the history event beginning at STRING +
- *CINDEX. *CINDEX is modified to point to after the event
- specifier. At function entry, CINDEX points to the index into
- STRING where the history event specification begins. QCHAR is a
- character that is allowed to end the event specification in
- addition to the "normal" terminating characters.
-
- - Function: char ** history_tokenize (const char *string)
- Return an array of tokens parsed out of STRING, much as the shell
- might. The tokens are split on the characters in the
- HISTORY_WORD_DELIMITERS variable, and shell quoting conventions
- are obeyed.
-
- - Function: char * history_arg_extract (int first, int last, const
- char *string)
- Extract a string segment consisting of the FIRST through LAST
- arguments present in STRING. Arguments are split using
- `history_tokenize'.
-
-
-File: history.info, Node: History Variables, Next: History Programming Example, Prev: History Functions, Up: Programming with GNU History
-
-History Variables
-=================
-
- This section describes the externally-visible variables exported by
-the GNU History Library.
-
- - Variable: int history_base
- The logical offset of the first entry in the history list.
-
- - Variable: int history_length
- The number of entries currently stored in the history list.
-
- - Variable: int history_max_entries
- The maximum number of history entries. This must be changed using
- `stifle_history()'.
-
- - Variable: char history_expansion_char
- The character that introduces a history event. The default is `!'.
- Setting this to 0 inhibits history expansion.
-
- - Variable: char history_subst_char
- The character that invokes word substitution if found at the start
- of a line. The default is `^'.
-
- - Variable: 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.
-
- - Variable: char * history_word_delimiters
- The characters that separate tokens for `history_tokenize()'. The
- default value is `" \t\n()<>;&|"'.
-
- - Variable: char * history_no_expand_chars
- The list of characters which inhibit history expansion if found
- immediately following HISTORY_EXPANSION_CHAR. The default is
- space, tab, newline, carriage return, and `='.
-
- - Variable: char * history_search_delimiter_chars
- The list of additional characters which can delimit a history
- search string, in addition to space, TAB, `:' and `?' in the case
- of a substring search. The default is empty.
-
- - Variable: int history_quotes_inhibit_expansion
- If non-zero, single-quoted words are not scanned for the history
- expansion character. The default value is 0.
-
- - Variable: rl_linebuf_func_t * history_inhibit_expansion_function
- This should be set to the address of a function that takes two
- arguments: a `char *' (STRING) and an `int' index into that string
- (I). It should return a non-zero value if the history expansion
- starting at 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 `NULL'.
-
-
-File: history.info, Node: History Programming Example, Prev: History Variables, Up: Programming with GNU History
-
-History Programming Example
-===========================
-
- The following program demonstrates simple use of the GNU History
-Library.
-
- #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");
- }
- }
- }
- }
-
-
-File: history.info, Node: Concept Index, Next: Function and Variable Index, Prev: Programming with GNU History, Up: Top
-
-Concept Index
-*************
-
-* Menu:
-
-* anchored search: Searching the History List.
-* event designators: Event Designators.
-* history events: Event Designators.
-* history expansion: History Interaction.
-* History Searching: Searching the History List.
-
-
-File: history.info, Node: Function and Variable Index, Prev: Concept Index, Up: Top
-
-Function and Variable Index
-***************************
-
-* Menu:
-
-* add_history: History List Management.
-* append_history: Managing the History File.
-* clear_history: History List Management.
-* current_history: Information About the History List.
-* get_history_event: History Expansion.
-* history_arg_extract: History Expansion.
-* history_base: History Variables.
-* history_comment_char: History Variables.
-* history_expand: History Expansion.
-* history_expansion_char: History Variables.
-* history_get: Information About the History List.
-* history_get_history_state: Initializing History and State Management.
-* history_inhibit_expansion_function: History Variables.
-* history_is_stifled: History List Management.
-* history_length: History Variables.
-* history_list: Information About the History List.
-* history_max_entries: History Variables.
-* history_no_expand_chars: History Variables.
-* history_quotes_inhibit_expansion: History Variables.
-* history_search: Searching the History List.
-* history_search_delimiter_chars: History Variables.
-* history_search_pos: Searching the History List.
-* history_search_prefix: Searching the History List.
-* history_set_history_state: Initializing History and State Management.
-* history_set_pos: Moving Around the History List.
-* history_subst_char: History Variables.
-* history_tokenize: History Expansion.
-* history_total_bytes: Information About the History List.
-* history_truncate_file: Managing the History File.
-* history_word_delimiters: History Variables.
-* next_history: Moving Around the History List.
-* previous_history: Moving Around the History List.
-* read_history: Managing the History File.
-* read_history_range: Managing the History File.
-* remove_history: History List Management.
-* replace_history_entry: History List Management.
-* stifle_history: History List Management.
-* unstifle_history: History List Management.
-* using_history: Initializing History and State Management.
-* where_history: Information About the History List.
-* write_history: Managing the History File.
-
-
-
-Tag Table:
-Node: Top1136
-Node: Using History Interactively1716
-Node: History Interaction2223
-Node: Event Designators3642
-Node: Word Designators4569
-Node: Modifiers6198
-Node: Programming with GNU History7336
-Node: Introduction to History8061
-Node: History Storage9746
-Node: History Functions10857
-Node: Initializing History and State Management11841
-Node: History List Management12641
-Node: Information About the History List14235
-Node: Moving Around the History List15591
-Node: Searching the History List16580
-Node: Managing the History File18498
-Node: History Expansion20304
-Node: History Variables22199
-Node: History Programming Example24766
-Node: Concept Index27488
-Node: Function and Variable Index27974
-
-End Tag Table
diff --git a/readline-doc-4.3/doc/history.ps b/readline-doc-4.3/doc/history.ps
deleted file mode 100644
index a35bcf4..0000000
--- a/readline-doc-4.3/doc/history.ps
+++ /dev/null
@@ -1,1658 +0,0 @@
-%!PS-Adobe-2.0
-%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software
-%%Title: history.dvi
-%%Pages: 20
-%%PageOrder: Ascend
-%%BoundingBox: 0 0 612 792
-%%EndComments
-%DVIPSWebPage: (www.radicaleye.com)
-%DVIPSCommandLine: dvips -D 300 -t letter -o history.ps history.dvi
-%DVIPSParameters: dpi=300, compressed
-%DVIPSSource: TeX output 2002.06.27:1354
-%%BeginProcSet: texc.pro
-%!
-/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
-N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
-mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
-0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
-landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
-mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
-matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
-exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
-statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
-N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
-/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
-/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
-array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
-df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
-definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
-}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
-B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
-1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3
-1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
-0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
-sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
-rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
-gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
-/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
-/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
-A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
-get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
-ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
-fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
-{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
-chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
-1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
-forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
-/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
-}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
-bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
-mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
-SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
-userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
-1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
-index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
-/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
-/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
-(LaserWriter 16/600)]{A length product length le{A length product exch 0
-exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
-end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
-grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
-imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
-exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
-fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
-delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
-B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
-p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
-rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
-
-%%EndProcSet
-TeXDict begin 40258431 52099146 1000 300 300 (history.dvi)
-@start
-%DVIPSBitmapFont: Fa cmti10 10.95 1
-/Fa 1 47 df<127012F8A212F012E005057B840E>46 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fb cmbxti10 14.4 1
-/Fb 1 47 df<120E123FEA7F80A212FFA21300127E123C0909798815>46
-D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fc cmtt9 9 26
-/Fc 26 123 df<EAFFFEA30F037E7E14>95 D<EA1FC0EA7FF0EA7078EA2018EA001CA2EA
-07FC121FEA3C1C127012E0A3EA707C383FFF80EA0F8F11107E8F14>97
-D<12FCA2121CA513F8EA1DFEEA1F07EA1E03001C1380EB01C0A6EB0380001E1300EA1F0E
-EA1DFCEA0CF81217809614>I<EA03F8EA0FFEEA1C0EEA3804EA7000126012E0A4126012
-70EA380EEA1C1EEA0FFCEA03F00F107E8F14>I<137EA2130EA5EA07CEEA0FFEEA1C3EEA
-301EEA700E12E0A61270EA301EEA383E381FEFC0EA07CF12177F9614>I<EA07E0EA0FF0
-EA1C38EA301CEA700CEAE00EA2EAFFFEA2EAE00012601270EA380EEA1C1EEA0FFCEA03F0
-0F107E8F14>I<13FCEA01FEEA038EEA07041300A3EA7FFE12FFEA0700ACEAFFF8A20F17
-7F9614>I<EA07CF381FFF80EA383B38301800EA701CA3EA3018EA3838EA3FF0EA37C000
-70C7FCA2EA3FF86C7E487EEA700F38E00380A438700700EA3C1EEA1FFCEA07F011197F8F
-14>I<12FCA2121CA51378EA1DFEEA1F86EA1E07121CAA38FF8FE0A21317809614>I<1206
-120FA21206C7FCA4B4FCA21207ACEAFFF8A20D187C9714>I<12FCA2121CA5EBFF80A2EB
-1C005B5B5BEA1DC0EA1FE0A2EA1E70EA1C38133C131C7F38FF1F80A21117809614>107
-D<EAFF80A21203B3EAFFFEA20F177E9614>I<EAFB8EEAFFDF383CF380A2EA38E3AA38FE
-FBE013791310808F14>I<EAFC78EAFDFEEA1F86EA1E07121CAA38FF8FE0A21310808F14>
-I<EA07C0EA1FF0EA3C78EA701CA2EAE00EA6EA701CEA783CEA3C78EA1FF0EA07C00F107E
-8F14>I<EAFCF8EAFDFEEA1F07EA1E03001C1380EB01C0A6EB0380001E1300EA1F0EEA1D
-FCEA1CF890C7FCA6B47EA21218808F14>I<EA03E7EA0FF7EA1C1FEA300F1270487EA6EA
-700F1230EA1C3FEA0FF7EA07C7EA0007A6EB3FE0A213187F8F14>I<EAFE1FEB7F80EA0E
-E3380F810090C7FCA2120EA8EAFFF0A211107F8F14>I<EA0FD8EA3FF8EA603812C0A2EA
-F000EA7F80EA3FF0EA07F8EA001CEA600612E012F0EAF81CEAFFF8EACFE00F107E8F14>
-I<1206120EA4EA7FFC12FFEA0E00A8130EA3131CEA07F8EA01F00F157F9414>I<EAFC3F
-A2EA1C07AB131F380FFFE0EA03E71310808F14>I<38FE3F80A2383C1E00EA1C1CA36C5A
-A3EA0630EA0770A36C5AA311107F8F14>I<38FE3F80A238700700EA380EA3EA39CEA3EA
-1B6C121AA3EA1E7CA2EA0E3811107F8F14>I<EA7E3FA2EA1E3CEA0E78EA07705B12036C
-5A12037FEA0770EA0E781338487E38FE3F80A211107F8F14>I<38FE3F80A2381C0E005B
-A2120E5BA212071330A2EA0370A25B1201A25BA3485A12730077C7FC127E123C11187F8F
-14>I<EA3FFF5AEA700E131C1338EA007013E0EA01C0EA0380EA0700120EEA1C07123812
-70B5FCA210107F8F14>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fd cmti9 9 1
-/Fd 1 47 df<1230127812F0126005047C830C>46 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fe cmr9 9 24
-/Fe 24 122 df<EA07E0EA1C38EA381CEA300CEA700EEA6006A2EAE007AAEA6006A2EA70
-0EEA300CEA381CEA1C38EA07E010187F9713>48 D<12035AB4FC1207B3A2EA7FF80D187D
-9713>I<EA01F8EA0704EA0C06EA180E123013001270126012E0EAE3E0EAE418EAE80CEA
-F00EEAE0061307A31260A2EA7006EA300EEA180CEA0C38EA07E010187F9713>54
-D<1240EA7FFF13FEA2EA4004EA80081310A2EA00201340A21380120113005AA25A1206A2
-120EA5120410197E9813>I<EA07E0EA1818EA300CEA20061260A21270EA780CEA3E18EA
-1F30EA07C0EA03E0EA0CF8EA307CEA601E130FEAC0071303A3EA6002EA2004EA1818EA07
-E010187F9713>I<EA07E0EA1C30EA3018EA700CEA600EEAE006A21307A31260EA700FEA
-3017EA1827EA07C7EA00071306130E130C12701318EA6030EA3060EA0F8010187F9713>
-I<39FFE1FFC0390E001C00AB380FFFFC380E001CAC39FFE1FFC01A1A7F991D>72
-D<EA0FC2EA1836EA200EEA600612C01302A3EAE0001270127EEA3FE0EA1FF8EA03FCEA00
-7E130E130713031280A3EAC0021306EAE004EAD818EA87E0101A7E9915>83
-D<EA1FC0EA38707FEA101C1200A2EA03FCEA1E1C1238127012E01480A2133CEA705F381F
-8F0011107F8F13>97 D<EA07F8EA1C1C1238EA700813005AA612701304EA3808EA1C18EA
-07E00E107F8F11>99 D<133F1307A9EA03E7EA0C17EA180F487E127012E0A6126012706C
-5AEA1C373807C7E0131A7F9915>I<EA07C0EA1C30EA30181270EA600C12E0EAFFFCEAE0
-00A41260EA7004EA3808EA1C18EA07E00E107F8F11>I<EA0FCF3818718038303000EA70
-38A4EA30306C5AEA2FC00060C7FCA21270EA3FF013FC6C7EEA600FEAC003A4EA6006EA38
-1CEA07E011187F8F13>103 D<12FC121CA9137CEA1D87381E0380A2121CAB38FF9FF014
-1A809915>I<1218123CA212181200A612FC121CAE12FF081A80990A>I<EAFC7CEA1D8738
-1E0380A2121CAB38FF9FF01410808F15>110 D<EA07E0EA1C38EA300CEA700EEA6006EA
-E007A6EA6006EA700EEA381CEA1C38EA07E010107F8F13>I<EAFCFCEA1D07381E038038
-1C01C0A2EB00E0A6EB01C01480381E0300EA1D06EA1CF890C7FCA6B47E1317808F15>I<
-EAFC78EA1D9CEA1E1C1308EA1C00ABEAFF800E10808F0F>114 D<EA1F20EA60E0EA4020
-12C0A2EAF000127FEA3FC0EA1FE0EA00F0EA8070133012C01320EAF040EA8F800C107F8F
-0F>I<1208A41218A21238EAFFC0EA3800A81320A41218EA1C40EA07800B177F960F>I<38
-FF0F80383C0700EA1C061304A26C5AA26C5AA3EA03A0A2EA01C0A36C5A11107F8F14>
-118 D<38FE3F80383C1E00EA1C086C5AEA0F306C5A6C5A12017F1203EA0270487E1208EA
-181CEA381E38FC3FC012107F8F14>120 D<38FF0F80383C0700EA1C061304A26C5AA26C
-5AA3EA03A0A2EA01C0A36C5AA248C7FCA212E112E212E4127811177F8F14>I
-E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Ff cmss10 10.95 2
-/Ff 2 42 df<13E0EA01C0EA0380120713005A121EA2121C123CA212381278A3127012F0
-AE12701278A31238123CA2121C121EA27E7E13801203EA01C0EA00E00B2E7CA112>40
-D<12E012707E123C121C121E7EA27E1380A2120313C0A3120113E0AE13C01203A3138012
-07A213005AA2121E121C123C12385A5A0B2E7EA112>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fg cmbx10 12 27
-/Fg 27 123 df<EB07F8EB7FFC3801FC0E3803F01F48485AEA0FC0A3141E140C91C7FCA2
-ECFF80B6FCA2380FC01FB2397FF8FFF0A21C237FA220>12 D<90380FFF80137F3801FC1F
-3803F03FEA07E0EA0FC0141FA7B6FCA2380FC01FB2397FF8FFF0A21C237FA220>I<EA07
-FE381FFF80383F07E06D7E130180121E1200A2133FEA03FDEA1F81EA3E01127C12F8A4EA
-7C02EA7E0C391FF87F803807E03F19167E951C>97 D<B47EA2121FABEB87F0EBBFFCEBF0
-3EEBC01F9038800F8015C0140715E0A715C0A2140F15809038C01F00381E707E381C3FFC
-38180FE01B237EA220>I<EBFF80000713E0380F83F0EA1F03123E127E387C01E090C7FC
-12FCA6127C127EA2003E13186C1330380FC0603807FFC0C6130015167E9519>I<49B4FC
-A2EB003FAB13FE3807FFBF380FC1FF48C67E003E7F127E127CA212FCA7127C127E123E6C
-5B380F81FF3907FF3FE0EA01FC1B237EA220>I<13FE3807FF80380F83C0381E01E0383E
-00F0127E007C13F8147812FCB512F8A200FCC7FCA3127CA26C1318A26C1330380F80E038
-03FFC0C6130015167E951A>I<EB1F80EBFFE03801F1F0EA03E31207EA0FC3EBC1E0EBC0
-00A6EAFFFEA2EA0FC0B2EA7FFCA214237EA212>I<9038FE0F803903FF9FC0380F83E338
-1F01F3391E00F000003E7FA5001E5BEA1F01380F83E0380BFF80D808FEC7FC0018C8FCA2
-121C381FFFE014FC6C13FF7E001F1480397C001FC00078130F00F81307A3007CEB0F806C
-EB1F00381F807E6CB45A000113E01A217F951D>I<B47EA2121FABEB83F0EB8FFCEB987E
-EBA03EEBC03FA21380AE39FFF1FFE0A21B237DA220>I<121E123FEA7F80A4EA3F00121E
-C7FCA6EAFF80A2121FB2EAFFF0A20C247EA30F>I<B47EA2121FABECFF80A2EC3C001430
-14E0EB81C00183C7FC1386139E13BE13FFEBDF80EB8FC01307806D7E6D7E130080147E39
-FFE1FFC0A21A237EA21E>107 D<EAFF80A2121FB3ADEAFFF0A20C237EA20F>I<3AFF03F8
-03F890390FFE0FFE3A1F183F183F9039201F201F014001C01380A201801380AE3BFFF0FF
-F0FFF0A22C167D9531>I<38FF03F0EB0FFC381F187EEB203EEB403FA21380AE39FFF1FF
-E0A21B167D9520>I<13FF000713E0380F81F0381F00F8003E137C48133EA300FC133FA7
-007C133E007E137E003E137C6C13F8380F81F03807FFE0C6130018167E951D>I<38FF87
-F0EBBFFC381FF07EEBC01F9038800F8015C0A2EC07E0A715C0140FA2EC1F8001C01300EB
-F07EEBBFFCEB8FE00180C7FCA8EAFFF0A21B207E9520>I<EBFE033807FF07380FC1CF38
-1F00DF48137F007E7FA2127C12FCA7127EA2003E5B6C5BEA0FC13807FF3FEA00FC1300A8
-903801FFE0A21B207E951E>I<38FF0F80EB1FE0381F33F013631343A2EBC1E0EB8000AD
-EAFFF8A214167E9518>I<3807F980EA1FFFEA3807EA7003EAF001A26CC7FCB4FC13F8EA
-7FFE6C7E6C1380120738003FC0EAC007130312E0A200F0138038FC0F00EAEFFEEAC3F812
-167E9517>I<487EA41203A21207A2120F123FB5FCA2EA1F80ABEB8180A5380F830013C3
-EA07FEEA01F811207F9F16>I<38FF81FFA2381F803FAF5C5C380FC1BF3907FF3FE0EA01
-FC1B167D9520>I<39FFF01FE0A2391FC00700000F1306EBE00E0007130C13F000035BA2
-6C6C5AA26C6C5AA2EBFEE0EB7EC0137F6D5AA26DC7FCA2130EA21B167F951E>I<3AFFF3
-FF83FCA23A1F807C00E0D80FC014C08001E013010007017F1380A2D803F0EB0300ECCF83
-01F81387D801F913C61487D800FD13ECEBFF0315FC017F5BEB7E01013E5BEB3C00A20118
-136026167F9529>I<39FFF07FC0A2390FC01C006C6C5A6D5A00035B6C6C5A3800FD8013
-7F91C7FC7F6D7E497EEB37E0EB67F013C33801C1F8380380FC48487E000E137F39FF81FF
-E0A21B167F951E>I<39FFF01FE0A2391FC00700000F1306EBE00E0007130C13F000035B
-A26C6C5AA26C6C5AA2EBFEE0EB7EC0137F6D5AA26DC7FCA2130EA2130CA25B1278EAFC38
-13305BEA69C0EA7F80001FC8FC1B207F951E>I<387FFFF0A2387C07E038700FC0EA601F
-00E0138038C03F005B137EC65A1201485AEBF030EA07E0120FEBC070EA1F80003F1360EB
-00E0EA7E03B5FCA214167E9519>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fh cmtt10 12 27
-/Fh 27 119 df<13E0A538F0E1E0EAFCE7387EEFC0381FFF00EA07FCEA01F0EA07FCEA1F
-FF387EEFC038FCE7E0EAF0E13800E000A513157D991A>42 D<1338137CA2136C13EEA313
-C6A2EA01C7A438038380A4380701C0A213FFA24813E0EA0E00A4481370387F01FC38FF83
-FE387F01FC171E7F9D1A>65 D<B512F8A3381C0038A51400A2130EA3EA1FFEA3EA1C0EA3
-90C7FCA3141CA5B512FCA3161E7E9D1A>69 D<38FF83FEA3381C0070AA381FFFF0A3381C
-0070AB38FF83FEA3171E7F9D1A>72 D<B51280A33801C000B3A6B51280A3111E7C9D1A>
-I<38FE03FE12FFA2381D8070A213C0121CA213E0A213601370A213301338A21318131CA2
-130C130EA21306A213071303A238FF81F0A21380171E7F9D1A>78
-D<EA0FFE383FFF804813C0EA7C07EA700100F013E0EAE000B1EAF001A2007013C0EA7C07
-EA7FFF6C1380380FFE00131E7D9D1A>I<EAFFFC13FF1480381C07C0EB01E0EB00F01470
-A414F0EB01E0EB07C0381FFF8014001480381C07C01301EB00E0A514E214E7A338FF807E
-A21438181E7F9D1A>82 D<3803F1C0EA0FFDEA3FFFEA7C0FEA700312E01301A390C7FC12
-701278123FEA1FF0EA07FE3800FF80EB0FC0EB01E013001470A2126012E0A214E0EAF001
-38FC03C0B5128000EF1300EAE3FC141E7D9D1A>I<387FFFFEB5FCA238E0380EA5000013
-00B33803FF80A3171E7F9D1A>I<38FF01FEA3381C00706C13E0A2380701C0A213830003
-138013C700011300A2EA00EEA2137CA21338AA48B4FCA3171E7F9D1A>89
-D<387FFFC0B512E0A26C13C013047D7E1A>95 D<EA1FF0EA3FFC487EEA780FEA30073800
-0380A2137FEA07FF121FEA3F83EA7803127012E0A3EA7007EA780F383FFFFCEA1FFDEA07
-F016157D941A>97 D<12FEA3120EA6133EEBFF80000F13E0EBC1F0EB8070EB0038120E14
-1CA7000F13381478EB80F0EBC1E0EBFFC0000E138038063E00161E7F9D1A>I<EBFF8000
-0313C0000F13E0EA1F01383C00C04813001270A25AA51270A2007813707E381F01F0380F
-FFE0000313C03800FE0014157D941A>I<EB1FC0A31301A6EA01F1EA07FDEA0FFFEA1E0F
-EA3C07EA7803EA700112E0A7EA7003A2EA3807EA3E0F381FFFFCEA07FDEA01F1161E7E9D
-1A>I<EA01F8EA07FF481380381E07C0EA3C01387800E01270481370A2B512F0A300E0C7
-FC1270A2007813707E381F01F0380FFFE0000313803800FE0014157D941A>I<EB07E0EB
-1FF0EB3FF8EB7878EBF030EBE000A4387FFFF0B5FCA23800E000AF383FFF804813C06C13
-80151E7F9D1A>I<12FEA3120EA6133EEBFF80000F13C013C1EB80E01300120EAC38FFE3
-FE13E713E3171E7F9D1A>104 D<EA01C0487EA36C5AC8FCA5EA7FE0A31200AF387FFF80
-B512C06C1380121F7C9E1A>I<EAFFE0A31200B3A6B512E0A3131E7D9D1A>108
-D<EAFE3EEBFF80B512C0EA0FC1EB80E01300120EAC38FFE3FE13E713E317157F941A>
-110 D<EA01F0EA07FCEA1FFF383E0F80EA3C07387803C0EA700138E000E0A6EAF0010070
-13C0EA7803383C0780EA3E0F381FFF00EA07FCEA01F013157D941A>I<387F81F838FF8F
-FC387F9FFE3803FE1EEBF80CEBE000A25B5BAAEA7FFFB5FC7E17157F941A>114
-D<487E1203A6387FFFE0B5FCA238038000AA1470A43801C1E013FF6C1380EB3F00141C7F
-9B1A>116 D<38FE0FE0A3EA0E00AD1301EA0F033807FFFE7EEA00FC17157F941A>I<387F
-C7FC00FF13FE007F13FC380E00E0A3380701C0A338038380A33801C700A3EA00EEA3137C
-A2133817157F941A>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fi cmbx12 13.14 41
-/Fi 41 123 df<EB07FCEB3FFF9038FE0780D803F013C03807E00FA2EA0FC0A3EC030091
-C7FCA3EC7FE0B6FCA2380FC007B3A239FFFC7FFEA21F267FA522>12
-D<123C127E12FFA4127E123C08087C8711>46 D<131C133C13FC12FFA21200B3AA387FFF
-FCA216237CA21F>49 D<48B4FC000713C0381E07F0383803F8386001FC387C00FE12FE14
-FF147FA2127C003813FFC7FC14FEA2EB01FC14F8EB03F0EB07E01480EB0F00131E5B1370
-EBE003EA01C038038007380700061206380FFFFE5A5A4813FCB5FCA218237DA21F>I<48
-B4FC000713E0381E03F0383801F8003C13FC387E00FEA3123EEA1C01000013FCA2EB03F8
-EB07F0EB0FC03801FF00A2380007E0EB01F014F8EB00FC14FE14FFA21210127C12FEA214
-FEA2387C01FC007013F8383E07F0380FFFC00001130018237DA21F>I<14381478A214F8
-1301130313071306130C131C13381330136013E0EA01C01380EA03005A120E5A12185A12
-705AB612C0A2390001F800A790387FFFC0A21A237EA21F>I<0018130C001F137CEBFFF8
-14F014E014C01480EBFC000018C7FCA513FF001B13E0381F03F0381C00F8000813FCC712
-7EA3147FA2127812FCA3147E5A006013FC1270383801F8381E07E03807FFC03801FE0018
-237DA21F>I<EB1FC0EB7FF03801F0383803E00C3807803E000F137EEA1F005AA2007E13
-3C1400A338FE3FC0EB7FF0EB80F800FF13FCEB007C147E5A147FA4127EA4003E137E123F
-6C137C380F80F83807C1F03803FFC038007F0018237DA21F>I<1230123C003FB512C0A2
-15804814005C5C38600018A200E05B485B5CC6485AA249C7FC1306130EA25BA2133CA25B
-A213F8A41201A66C5A13601A257DA41F>I<141CA2143EA3147FA24A7EA39038019FC0A2
-9038031FE0140F01077FEB0607A2010C7F1403011C7FEB1801A2496C7EA2017FB5FCA290
-39E0007F8049133FA2484880151F00038190C7120FA2486E7ED8FFF090B51280A229257E
-A42E>65 D<B612E015FC3903F800FFED1FC0ED07E06F7E6F7E82150082A2167FA31780AA
-1700A316FEA24B5A5E4B5A4B5AED1FC0EDFF80B648C7FC15E029257EA42F>68
-D<B7FCA23903F8007FED0F8015071503A21501A3ED00C01406A21600A2140E141EEBFFFE
-A2EBF81E140E1406A21660A291C7FC16C0A415011503A2ED0F80153FB7FCA223257EA428
->I<B612FEA23803F800151F8181A281A3ED01801403A292C7FCA25C5C90B5FCA2EBF80F
-8080A491C8FCAAB512F0A221257EA427>I<B500E0B512E0A23B03F80003F800AF90B6FC
-A29038F80003B0B500E0B512E0A22B257EA430>72 D<B512E0A23803F800B3AFB512E0A2
-13257EA417>I<B512F0A2D803F8C7FCB3A31503A31506A3150EA2151E153E157CEC03FC
-B6FCA220257EA425>76 D<D8FFF8EDFFF86D5C0003EEFE00017EEC037EA36D1406A26D6C
-130CA26D6C1318A26D6C1330A36D6C1360A26D6C13C0A2903900FC0180A291387E0300A3
-EC3F06A2EC1F8CA2EC0FD8A2EC07F0A36E5AEA07803CFFFC01C01FFFF8A235257EA43A>
-I<01FF1380000713E3380F80F7381E001F48130F481307140312F81401A27E91C7FCB4FC
-EA7FE013FE383FFFE014F86C13FE00077F6C1480C67E010313C0EB003FEC0FE01407A200
-C01303A315C07E6C13076C14806CEB0F0038FFC03E38E3FFF838803FE01B257DA422>83
-D<B53B81FFFE01FFF0A23D07F0001FC0000F007013066C6C010F5CA26F7E6C6C5EA26D49
-6C1338000017304B7E017F01195CA291388030FE013F5E829139C0607F01011F5E03E013
-8190280FE0C03F83C7FCA29139F1801FC3010715C617E69139FB000FEE010315EC02FF14
-FC6D486D5AA24A130301005DA24A130102785CA202306D5A3C257FA43F>87
-D<EA07FF001F13E0383E03F0383F00F880147E121EC7FCA3EB1FFE3803FE7EEA0FC0EA1F
-00123E127E5AA314BEEA7E01383F073E391FFE1FE03807F00F1B187E971E>97
-D<EAFFC0A2120FACEBC1FCEBCFFF9038FC0FC09038F007E09038C003F0A2EC01F8A215FC
-A815F8A2EC03F013E09038F007E090381C1F80390E0FFF00380C03F81E267FA522>I<EB
-7FE03803FFF83807C07C381F80FC13005A007E1378140012FEA8127E127F6C130CEA1F80
-EBC0183807E0703803FFE038007F0016187E971B>I<ECFFC0A2140FAC137F3803FFCF38
-0FE0FF381F803F383F000FA2127EA212FEA8127EA27E141F381F803F380FC0EF3903FFCF
-FC3800FE0F1E267EA522>I<137F3803FFC03807C1F0380F80F8EA1F0048137C127E147E
-12FEA2B512FEA248C7FCA3127EA214067E6C130C380F80183807E0703803FFE038007F80
-17187E971C>I<EB1FC0EB7FF0EA01F83803E1F8120713C1380FC0F01400A7B5FCA2EA0F
-C0B3A2EAFFFEA215267EA513>I<3901FF07C00007EBDFE0380F83F1EA1F01393E00F800
-007E7FA6003E5B6C485A380F83E0EBFFC0001190C7FC0030C8FCA21238123C383FFFE06C
-13FC806C7F481480383C003F48EB0FC000F81307A4007CEB0F806CEB1F00381F807E3807
-FFF8C613C01B247E971F>I<EAFFC0A2120FAC14FE9038C3FF809038CE0FC013D89038D0
-07E013E0A213C0AF39FFFC7FFEA21F267EA522>I<120FEA1F80EA3FC0A4EA1F80EA0F00
-C7FCA7EA7FC0A2120FB3A2EAFFF8A20D277EA611>I<EAFFC0A2120FB3B0EAFFFCA20E26
-7EA511>108 D<26FF80FE137F903A83FF81FFC03B0F8E0FC707E0019813CC903A9007E8
-03F001A013F0A201C013E0AF3BFFFC7FFE3FFFA230187E9733>I<38FF80FE903883FF80
-390F8E0FC0139890389007E013A0A213C0AF39FFFC7FFEA21F187E9722>I<EB7F803803
-FFF03807C0F8381F807E48487EA2007EEB1F80A200FE14C0A8007E1480A26CEB3F00A238
-1F807E6C6C5A3803FFF038007F801A187E971F>I<38FFC1FCEBCFFF390FFC1FC09038F0
-07E001C013F0140315F8140115FCA8EC03F8A215F0EBE0079038F00FE09038DC1F809038
-CFFF00EBC3F801C0C7FCA9EAFFFCA21E237F9722>I<38FF83E0EB8FF8380F8C7CEB90FC
-13B013A01478EBE0005BAEEAFFFEA216187F9719>114 D<3807F8C0EA1FFFEA3C07EA70
-01EAF000A300FC1300B47EEA7FFC7F383FFF80000F13C0120338001FE01303EAC001A212
-E014C0EAF00338FC078038EFFF00EAC3FC13187E9718>I<13C0A41201A312031207120F
-121FB512C0A2380FC000AC1460A63807E0C013E13801FF8038007E0013237FA218>I<39
-FFC07FE0A2000F1307B0140FA200071317EBE0673903FFC7FE38007F071F187E9722>I<
-39FFF80FF8A2390FC001C015803907E00300A26D5A00031306EBF80E0001130C13FC0000
-5B13FEEB7E30A26D5AA214E06D5AA26D5AA26DC7FCA21D187F9720>I<39FFF83FF0A239
-0FC00F003807E00E6C6C5A6D5A6C6C5A00001360EB7EC06D5AA2131F6D7E497E80EB33F8
-1361EBE0FC3801C07E3803807F3907003F8048131F39FFC07FF8A21D187F9720>120
-D<39FFF80FF8A2390FC001C015803907E00300A26D5A00031306EBF80E0001130C13FC00
-005B13FEEB7E30A26D5AA214E06D5AA26D5AA26DC7FCA21306A25B1230EA781CEAFC185B
-1370EA68E0EA7FC0001FC8FC1D237F9720>I<387FFFF8A2387C03F0EA700738600FE000
-E013C0EB1F80EAC03F1400137EEA00FE5B485A0003130C13F0EA07E0120FEBC01C381F80
-18003F1338387F0078387E01F8B5FCA216187E971B>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fj cmsl10 10.95 30
-/Fj 30 122 df<903803F07C90381E0DC69038380F0FEB701E01E0130EEC0C003801C01C
-A548485A007FB512C03903803800A448485AA6000E5BA648485A001E7F38FF8FFC20207E
-9F1B>11 D<EB03E0EB1C181338EB703C13E014383801C000A5485A387FFFF038038070A4
-380700E0A6380E01C0A6381C0380001E13C038FF0FF016207E9F19>I<903803F03F9039
-1E09E0809039380F80C09039701F01E0EBE03E021E13C02601C01CC7FCA548485A007FB6
-12803903803803A43A0700700700A6000EEBE00EA64848485A001EEBE01E3AFF8FF8FFC0
-23207E9F26>14 D<13201360A4383061C0383C4380380E4E00EA0778EA01E0A2EA07B8EA
-1C9CEA708FEAE083EA0180A490C7FC12147AA117>42 D<13181338EA01F8EA0E701200A5
-13E0A6EA01C0A6EA0380A6EA07001380EAFFFC0E1E7B9D17>49 D<EB3F80EBC1E0380100
-70000213785AA2000F137C1380A2EB00781206C712F814F0EB01E014C0EB0380EB070013
-0E5B5B13605B485A380300201206000813405A383FFFC0481380B5FC161E7E9D17>I<13
-FFEA01FE1380A5EA0300A61206A65AA65AA65AA65AA6B4FCA2102D7EA10D>91
-D<13FFEA01FEEA0006A5130CA61318A61330A61360A613C0A6EA0180A6EAFF00A2102D82
-A10D>93 D<EA07F8EA0C0CEA1E061307121C1200A313FFEA07C7EA1E07EA3C0E127800F0
-1310A3131EEB2E2038784F40381F878014147D9317>97 D<13FEEA0383380E0780121C00
-38130090C7FC12785AA45AA37E5BEA70026C5AEA1C18EA07E011147D9314>99
-D<1438EB01F8EB00781438A21470A614E013FCEA0382EA0601121CEA3C00383801C01278
-12F0A438E00380A412F0EA700738380F00381C37803807C7E015207D9F19>I<13F8EA07
-0EEA0E07381C038012381278127012F0B5FC00F0C7FCA25AA46C5AEA7002EA3004EA1C18
-EA07E011147D9314>I<EB07C0EB1C60EB30F01360EBE0E0EBC0001201A5485AEA3FFCEA
-0380A448C7FCA6120EA65A121EEAFFC014207F9F0E>I<140EEB3E11EBE1A33801C1C238
-0381E0EA07801301120FA3380703C01480EB8700EA04FC48C7FCA21218121CEA0FFF14C0
-14E0381800F04813305A5AA3006013606C13C0381C0700EA07FC181F809417>I<13E012
-0712011200A2485AA6485AEB8F80EB90E013A0EBC0601380000713E01300A5380E01C0A6
-381C0380001E13C038FF8FF014207E9F19>I<EA01C0EA03E0A213C0EA0180C7FCA6EA03
-80121F12071203A2EA0700A6120EA65A121EEAFF800B1F7F9E0C>I<13E0120712011200
-A2EA01C0A6EA0380A6EA0700A6120EA65A121EEAFF800B207F9F0C>108
-D<390387C07C391F9861863907A072073903C03403EB80380007EB7807EB0070A5000EEB
-E00EA64848485A001EEBE01E3AFFCFFCFFC022147E9326>I<38038F80381F90E0EA07A0
-3803C0601380000713E01300A5380E01C0A6381C0380001E13C038FF8FF014147E9319>
-I<13FCEA0387380E0180381C00C04813E0A24813F012F0A438E001E0A214C0130300F013
-8038700700EA380E6C5AEA07E014147D9317>I<EBE3E03807EC383801F01C6C487E140F
-48487E1580A53903800F00A2140E141E141C5C38074070EB61C0011FC7FC90C8FCA3120E
-A4121EEAFFC0191D809319>I<EBFC2038038260EA0702381E01E0123C003813C0127812
-F0A438E00380A212F0A21307127038380F00EA1C37EA07C7EA0007A3130EA4131EEBFFC0
-131D7D9318>I<EA038E381FB380EA07C71203EB8300EA078090C7FCA5120EA65A121EEA
-FFC011147E9312>I<EA01F9EA0607EA080312181301EA3802EA3C00121F13F0EA07FCEA
-01FEEA001FEA40071303A212601306EAF004EAC818EA87E010147F9312>I<1380EA0100
-A35A5A5A121EEAFFF8EA0E00A45AA65A1310A41320A2EA1840EA0F800D1C7C9B12>I<38
-1C0380EAFC1FEA3C07EA1C03A238380700A6EA700EA4131EA25BEA305E381F9F8011147B
-9319>I<38FF83F8381E00E0001C13C01480121E380E01005B13025B12075BA25BEA0390
-13A013E05B5B120190C7FC15147C9318>I<39FF9FE1FC393C078070391C030060148015
-401580EA0E0790380D81001309EB19C21311380F21C4EA0720EB40C814E8EB80F0A26C48
-5A1460000213401E147C9321>I<381FF0FF3803C0780001137014403800E0C0EBE180EB
-73001376133CA2131C132E134E1387EA0107380203801204380C01C0383C03E038FE07FC
-18147F9318>I<390FF83F803901E00E00EBC00C140813E000005B143014205C13705CA2
-0171C7FC1339133A133E133C133813181310A25BA25BEA70C0EAF08000F1C8FC12E61278
-191D809318>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fk cmcsc10 10.95 3
-/Fk 3 118 df<EB7E083803819838070078000C1338001C13185A00781308127000F013
-00A5EB03FEEB00381270127812387E120C1207380380D838007F0817177E961D>103
-D<38FC01FC381E007014201217EA1380A2EA11C0EA10E0A213701338A2131C130E1307A2
-EB03A0EB01E0A213001460123800FE132016177E961C>110 D<38FF81FC381C00701420
-B0000C1340120E6C138038018300EA007C16177E961C>117 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fl cmbx12 17.28 36
-/Fl 36 122 df<EB01C01303130F137FEA1FFFB5FC13BFEAE03F1200B3B1007FB512F0A3
-1C2E7AAD28>49 D<EB3FE03801FFFE0007EBFF80D80F8013C0391E003FE00038EB1FF000
-7CEB0FF8007EEB07FCB4FC018013FEA21403A2EA7F00003E1307C7FC15FCA2EC0FF8A215
-F0EC1FE015C0EC3F80EC7F00147E14F8495A495A495A49C7FC011E130E5B133849131E49
-131C485A48C7123C48B512FC5A5A5A4814F8B6FCA31F2E7CAD28>I<1578A215FCA34A7E
-A24A7EA24A7FA34A7FEC0E7F021E7FEC1C3FA202387F151F02787FEC700FA202E07F1507
-010180ECC003A249486C7EA201078191C7FC498191B6FCA24981011CC7123F013C810138
-141FA24981160F01F081491407A2484881486C1403B549B512FCA336317DB03D>65
-D<B712C016FC16FFD801FEC77FEE7FE0707E161F707EA2831607A4160FA25FA24C5A4C5A
-4C5A4B485ADB1FFEC7FC90B65AEEFF8049C7EA3FE0EE0FF0EE07FCA2707E83821880A718
-005E5F16074C5A4C5AEEFFF0B812C094C7FC16F831317DB039>I<913A03FF800180023F
-EBF00349B5EAFC0701079038003F0FD91FF8EB079FD93FC0EB01FFD9FF807F4848C8127F
-4848153F0007161F49150F485A001F1607A2485A1703127FA24992C7FCA212FFA9127FA2
-7FEF0380123FA26C7E1707000F17006C7E6D150E0003161E6C6C151C6C6C6C1478D93FC0
-5CD91FF8EB03E0D907FFEB3F800101D9FFFEC7FCD9003F13F80203138031317CB03A>I<
-B812E0A3C6903880007FEE0FF016031601A21600A21770A31738A21507A21700A35D5D5D
-91B5FCA3EC803F818181A592C8FCACB612C0A32D317EB033>70 D<DA03FF1303027FEBF0
-0749B5EAFC0F01079038007E1FD91FF0EB0FBFD97FC0EB03FF49487F4848C87E485A0007
-824848815B001F82A2484881A2127FA24992C7FC12FFAA0307B512F8127F7FDB00011300
-123FA26C7EA2120F7F6C7E12036C7E6C6C7E6D6C5BD91FF8497ED907FFEB3E3F01019038
-FFFC1F6D6CEBF00F0203EB800335317CB03F>I<B6D8807FB512C0A3C60180C7387FC000
-B391B7FCA30280C7127FB3A3B6D8807FB512C0A33A317EB03F>I<B61280A3C6EB8000B3
-B3A7B61280A319317EB01E>I<B56C49B512C08080C66D90390003E0006E6E5AEBEFFC13
-E780EBE3FF01E17F01E07F6E7E143F816E7E6E7E6E7E14036E7E16806E13C0ED7FE0ED3F
-F0151F16F8ED0FFCED07FEED03FF6F13818117C1EE7FE1EE3FF1EE1FF9EE0FFD160717FF
-828282177F173FA2171F170F486C1507B500E014031701A23A317EB03F>78
-D<B712E016FEEEFF80C6D9800013E0EE3FF0EE0FF8EE07FCA2EE03FEA217FFA717FEA2EE
-07FC17F8160FEE3FE0EEFFC091B6120016F80280C8FCB3A2B67EA330317EB037>80
-D<007FB8FCA39039C00FF801D87E00EC003F007C82007882A200708200F01780A3481603
-A5C792C7FCB3AA017FB6FCA331307DAF38>84 D<B6D88003B51280A3C60180C73807C000
-715AB3AE137F4DC7FC80013F150EA26D6C5C6D6C5C6D6C5C6D6C495A903A00FF801FC002
-3FB55A020F49C8FC020013E039317EB03E>I<B500FC91B5FCA3000390C8EA03C06C1780
-6E14076C170080017F150EA26E141E013F151C6E143C011F153880010F5D8001075DA26E
-130101035D6E13036D5D15806D4AC7FCA26F5A027F130EEDE01E023F131CEDF03C021F13
-3815F8020F5BA2EDFCF002075B15FF6E5BA26E5BA26E90C8FCA3157EA2153CA238317EB0
-3D>I<EBFFF0000313FF390F803F809038C00FE0486C6C7EA26E7ED80FC07FEA0780C7FC
-A414FF131FEBFFE33803FC03EA0FF0EA1FC0123FEA7F80A2EAFF00A31407A2387F800D39
-3FC01DFE3A1FE078FFF03907FFE07FC6EB803F24207E9F27>97 D<EA01F812FFA3120F12
-07ADEC3FE0ECFFFC9038FBE07F9039FF001F8049EB0FC04914E049EB07F016F8A2ED03FC
-A316FEA816FCA3ED07F8A216F06DEB0FE06D14C001E7EB3F809039C3C0FE00903880FFF8
-9038003FC027327EB12D>I<EB0FFF017F13C03901FC01F03803F0033907E007F8120FEA
-1FC0003FEB03F0EC01E04848C7FCA312FFA8127FA36C6C131CA2001F14386C7E00071470
-3903F001E03901FC07C039007FFF00EB0FF81E207D9F24>I<ED0FC0EC07FFA3EC007F15
-3FADEB07F8EB3FFF9038FE07BF3903F801FF3907E0007F120F4848133F123FA2485AA312
-FFA8127FA36C7EA2121F6C6C137F000714FF2603F00313E03A01FC0F3FFE38007FFEEB0F
-F027327DB12D>I<EB0FFC90387FFF803901FC0FC03903F003E03907E001F0000F14F839
-1FC000FC003F14FEA24848137E157FA212FFA290B6FCA20180C7FCA4127FA36C6C130712
-1F150E6C7E6C6C131C6C6C13783900FE03E090383FFFC0903807FE0020207E9F25>I<EB
-01FE90380FFF8090381FC3C090387F07E09038FE0FF0120113FC1203EC07E0EC018091C7
-FCA8B512FCA3D803FCC7FCB3A8387FFFF0A31C327EB119>I<90391FF007C09039FFFE3F
-E03A01F83F79F03907E00FC3000F14E19039C007E0E0001FECF000A2003F80A5001F5CA2
-000F5CEBE00F00075C2603F83FC7FC3806FFFE380E1FF090C9FC121EA2121F7F90B57E6C
-14F015FC6C806C801680000F15C0003FC7127F007EEC1FE0007C140F00FC1407A4007EEC
-0FC0003E1580003F141FD80FC0EB7E003907F803FC0001B512F0D8001F90C7FC242F7E9F
-28>I<EA01F812FFA3120F1207ADEC07F8EC3FFEEC783F02C013809039F9801FC0EBFB00
-01FE14E05BA35BB3B500C3B5FCA328327DB12D>I<EA03C0487E487E487EA46C5A6C5A6C
-5AC8FCA9EA01F8127FA31207B3A7B51280A311337DB217>I<EA01F812FFA3120F1207B3
-B3A6B512C0A312327DB117>108 D<2703F007F8EB1FE000FFD93FFEEBFFF8913A783F01
-E0FC02C090388300FE280FF1801FC6137F2607F30013CC01F602F8148001FC5CA3495CB3
-B500C3B5380FFFFCA33E207D9F43>I<3903F007F800FFEB3FFEEC783F02C013803A0FF1
-801FC03807F30001F614E013FCA35BB3B500C3B5FCA328207D9F2D>I<EB07FC90387FFF
-C03901FC07F03903F001F848486C7E4848137E001F147F003F158049133F007F15C0A300
-FF15E0A8007F15C0A36C6CEB7F80A2001F15006C6C13FE00075C3903F803F83901FE0FF0
-39007FFFC0D907FCC7FC23207E9F28>I<3901F83FE000FFEBFFFC9038FBE07F9039FF00
-3F80D80FFEEB1FC06C48EB0FE04914F0ED07F8A216FC1503A216FEA816FC1507A216F8A2
-ED0FF06D14E06DEB1FC06DEB3F809039FBC0FE009038F8FFF8EC3FC091C8FCABB512C0A3
-272E7E9F2D>I<3803F03F00FFEB7FC09038F1C3E01487390FF30FF0EA07F6A29038FC07
-E0EC03C091C7FCA25BB2B512E0A31C207E9F21>114 D<3801FF86000713FEEA1F00003C
-133E48131E140E12F8A36C90C7FCB47E13FC387FFFC06C13F0806C7F00077F00017FEA00
-3F01001380143F0060131F00E0130FA27E15007E6C131E6C131C38FF807838F3FFF038C0
-7F8019207D9F20>I<131CA5133CA3137CA213FC120112031207381FFFFEB5FCA2D803FC
-C7FCB0EC0380A71201EC0700EA00FEEB7F0EEB3FFCEB07F0192E7FAD1F>I<D801F8EB07
-E000FFEB03FFA3000FEB003F0007141FB3153FA20003147FA26C6CEBDFF03A00FE039FFF
-90387FFF1FEB0FFC28207D9F2D>I<B5EB1FFCA3D80FF8EB03C0000715806D1307000315
-007F0001140E7F6C5CA2EC803C017F1338ECC078013F1370ECE0F0011F5B14F1010F5B14
-F9903807FB80A214FF6D90C7FCA26D5AA26D5AA21478A226207E9F2B>I<B53A1FFFE03F
-F8A33C0FF000FE0007806D150300076EEB0700816D5D00039138FF800EA26C6C486D5A15
-DF01FF153C6C9039038FE038A2D97F876D5A150702C714F0D93FCF6D5AECCE03D91FFEEB
-F9C09138FC01FD16FF010F5D4A7EA26D486DC7FCA20103147E4A133EA26D48131C35207E
-9F3A>I<3A7FFF807FFCA33A03FC000F006C6C131E6C6C5BEC803890387FC078013F5B90
-381FE1E090380FF3C0ECFF806D90C7FC6D5A13016D7E81815B903803DFE09038078FF081
-90380F07FC90381E03FEEB3C01496C7E4914804848EB7FC00003EC3FE026FFFC01B5FCA3
-28207F9F2B>I<B5EB1FFCA3D80FF8EB03C0000715806D1307000315007F0001140E7F6C
-5CA2EC803C017F1338ECC078013F1370ECE0F0011F5B14F1010F5B14F9903807FB80A214
-FF6D90C7FCA26D5AA26D5AA21478A21470A214F05C1301007C5BEAFE035C49C8FC5BEAFC
-1EEA787CEA3FF0EA0FC0262E7E9F2B>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fm cmsy10 10.95 1
-/Fm 1 14 df<14FE903807FFC090381F01F0903878003C01E0130ED80180130348C7EA01
-800006EC00C0481560A2481530481518A248150CA4481506A90060150CA46C1518A26C15
-306C1560A26C15C06CEC01806C6CEB0300D800E0130E0178133C90381F01F0903807FFC0
-D900FEC7FC272B7DA02E>13 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fn cmbx12 14.4 44
-/Fn 44 122 df<123C127FEAFF80A213C0A3127F123E1200A2EA0180A3EA0300A2120612
-0E5A5A12100A157B8813>44 D<121C127FA2EAFF80A3EA7F00A2121C09097B8813>46
-D<130E131E137EEA07FE12FFA212F81200B3ABB512FEA317277BA622>49
-D<EBFF80000713F04813FC381E03FE393800FF80007C133F00FE14C06C131F15E0140FA2
-127E003C131FC7FC15C0A2EC3F801500147E5C5C495A495AEB078049C7FC131E4913E013
-705B3901C001C0EA0380EA0600000FB5FC5A5A5AB61280A31B277DA622>I<EB7F803803
-FFF04813FC380F81FE381F007FEA3F80EC3F80A3121F1300C7EA7F00A2147E5C495AEB07
-F0EBFFC0A2EB01F8EB007E801580EC1FC0A215E0A2123C127EB4FCA215C0143F48148000
-7CEB7F00383F01FE6CB45A000713F0C613801B277DA622>I<140FA25C5C5C5C5BA2EB03
-BFEB073F130E131C133C1338137013E0EA01C0EA038012071300120E5A5A5A12F0B612F8
-A3C7EA7F00A890381FFFF8A31D277EA622>I<00181303381F801FEBFFFE5C5C5C14C091
-C7FC001CC8FCA7EB7FC0381DFFF8381F80FC381E003F1208C7EA1F8015C0A215E0A21218
-127C12FEA315C05A0078EB3F80A26CEB7F00381F01FE6CB45A000313F0C613801B277DA6
-22>I<EC0780A24A7EA34A7EA24A7EA3EC77F8A2ECF7FC14E3A2903801C1FEA201037F14
-80A249486C7EA24980010E133FA2496D7EA2013FB57EA39039700007F8A201F080491303
-000181491301A2000381D8FFFE013F13FCA32E297EA833>65 D<B612F815FF16C03A03F8
-001FE0ED0FF0ED07F8150316FCA21501A3150316F8A2ED07F0150FED1FC0EDFF8090B5EA
-FE00EDFFC09039F8000FF0ED03F8ED01FC16FE1500A216FFA616FE1501ED03FC1507ED1F
-F8B712E016C0EDFE0028297DA830>I<91387FE003903907FFFC07011FEBFF0F90397FF0
-0F9F9039FF0001FFD801FC7F4848147F4848143F4848141F485A160F485A1607127FA290
-C9FC5AA97E7F1607123FA26C7E160E6C7E6C6C141C6C6C143C6C6C14786CB4EB01F09039
-7FF007C0011FB512800107EBFE009038007FF028297CA831>I<B712E0A33903FC001FED
-07F01501A215001670A3913801C0781638A302031300A2140F90B5FCA3EBFC0F1403A202
-01130EA3161C91C7FCA3163C1638167816F815011503151FB712F0A327297EA82C>69
-D<B712C0A33903FC003FED0FE015031501A21500A316F0913801C070A316001403A2140F
-90B5FCA3EBFC0F1403A21401A491C8FCA9B512FCA324297EA82A>I<91387FE003903907
-FFFC07011FEBFF0F90397FF00F9F9039FF0001FFD801FC7F484880484880484880485A82
-485A82127FA290CAFC5AA892B512F87E7F03001300123FA26C7EA26C7E6C7E6C7E6C7E6C
-B45B90387FF007011FB5129F0107EBFE0F9039007FF0032D297CA835>I<B5D8F00FB5FC
-A3D803FCC7EA3FC0AF90B7FCA301FCC7123FB1B5D8F00FB5FCA330297EA835>I<B512F0
-A33803FC00B3B1B512F0A314297EA819>I<D8FFFCEC7FFF7F7F00036DEB01C080EBBFE0
-139F80EB8FF8EB87FCEB83FEEB81FF01801380147F15C0EC3FE0EC1FF0EC0FF8EC07FC14
-0315FEEC01FF6E1381ED7FC1ED3FE1ED1FF1150F16F9ED07FDED03FF8181167FA2163F16
-1F160F1607D8FFFE14031601A230297EA835>78 D<B612F815FF16C03A03FC003FE0ED07
-F0ED03F816FC150116FEA716FC150316F8ED07F0ED3FE090B61280EDFE0001FCC8FCB0B5
-12F0A327297EA82E>80 D<B612E015FE6F7E3A03FC003FE0ED0FF06F7E6F7E150182A65E
-4B5A1507ED0FE0ED3FC090B500FEC7FCA29039FC00FF80ED3FC06F7E6F7E6F7EA9170EA2
-1503923801FC1CB538F000FEEE7FF8EE0FE02F297EA832>82 D<9038FF80600003EBF0E0
-000F13F8381F80FD383F001F003E1307481303A200FC1301A214007EA26C140013C0EA7F
-FCEBFFE06C13F86C13FE80000714806C14C0C6FC010F13E0EB007FEC1FF0140F140700E0
-1303A46C14E0A26C13076C14C0B4EB0F80EBE03F39E3FFFE0000E15B38C01FF01C297CA8
-25>I<B500F0EBFFFEA3D803FCC7EA0380B3AA0001ED07007F0000150E137F6D143CD91F
-C05B90390FF003F06DB55A01001480DA1FFCC7FC2F297EA834>85
-D<B500F0EB7FFFA3D803FEC7EA01C00001ED0380A26D14076C16006E5B017F140E80013F
-5CA26E133C011F14386E1378010F14708001075CA26D6C485AA2ECFE0301015CECFF076D
-91C7FC1587EC7F8EA215DEEC3FDC15FC6E5AA26E5AA36E5AA26E5AA230297FA833>I<B5
-3CE07FFFE01FFFC0A32803FC0003FCC7EA7000A26D6D7E000160A26D6E13016C604B1380
-02801503017F5F4B13C0D93FC0013F49C7FCA2913AE00E1FE00F011F160E17F09126F01C
-0F131E010F161C033C13F8902707F838075BA2037813FC902703FC70035BA2913AFEE001
-FEF001015E02FF14FF4B7E6D5EA26E486D5AA36EC76CC8FCA2023E80021E141EA242297F
-A845>I<3803FF80000F13F0381F01FC383F80FE147F801580EA1F00C7FCA4EB3FFF3801
-FC3FEA0FE0EA1F80EA3F00127E5AA4145F007E13DF393F839FFC381FFE0F3803FC031E1B
-7E9A21>97 D<EAFFE0A3120FACEBE1FE9038EFFF809038FE07E09038F803F09038F001F8
-9038E000FCA2157EA2157FA8157EA315FCA29038F001F89038F803F090389C0FE090380F
-FF80390E01FC00202A7EA925>I<EB3FF03801FFFC3803F03E380FC07FEA1F80EA3F00A2
-48133E007E90C7FCA212FEA7127EA2127F6CEB03801380001FEB0700380FE00E3803F83C
-3801FFF838003FC0191B7E9A1E>I<EC7FF0A31407ACEB3F873801FFF73807F03F380FC0
-0F381F8007EA3F00A2127EA312FEA8127EA27EA2381F800F380FC01F3907E07FFF3801FF
-E738007F87202A7EA925>I<EB3FC03801FFF03803E07C380F803E001F7F130048EB0F80
-127E15C0A200FE1307A2B6FCA248C8FCA3127EA2127F6CEB01C07E390F8003803907C007
-003803F01E3800FFFCEB3FE01A1B7E9A1F>I<EB07F8EB3FFCEB7E3E3801FC7FEA03F813
-F01207143E1400A7B512C0A33807F000B3A3387FFF80A3182A7EA915>I<9038FF80F000
-03EBE3F8390FC1FE1C391F007C7C48137E003EEB3E10007EEB3F00A6003E133E003F137E
-6C137C380FC1F8380BFFE00018138090C8FC1238A2123C383FFFF814FF6C14C06C14E06C
-14F0121F383C0007007CEB01F8481300A4007CEB01F0A2003FEB07E0390FC01F806CB512
-0038007FF01E287E9A22>I<EAFFE0A3120FAC147E9038E1FF809038E30FC001E413E0EB
-E80701F813F013F0A213E0B039FFFE3FFFA3202A7DA925>I<1207EA0F80EA1FC0EA3FE0
-A3EA1FC0EA0F80EA0700C7FCA7EAFFE0A3120FB3A3EAFFFEA30F2B7EAA12>I<EAFFE0A3
-120FB3B2EAFFFEA30F2A7EA912>108 D<26FFC07FEB1FC0903AC1FFC07FF0903AC307E0
-C1F8D80FC49038F101FC9039C803F20001D801FE7F01D05BA201E05BB03CFFFE3FFF8FFF
-E0A3331B7D9A38>I<38FFC07E9038C1FF809038C30FC0D80FC413E0EBC80701D813F013
-D0A213E0B039FFFE3FFFA3201B7D9A25>I<EB3FE03801FFFC3803F07E390FC01F80391F
-800FC0393F0007E0A2007EEB03F0A300FE14F8A8007E14F0A26CEB07E0A2391F800FC039
-0FC01F803907F07F003801FFFC38003FE01D1B7E9A22>I<38FFE1FE9038EFFF809038FE
-0FE0390FF803F09038F001F801E013FC140015FEA2157FA8157E15FEA215FC140101F013
-F89038F807F09038FC0FE09038EFFF809038E1FC0001E0C7FCA9EAFFFEA320277E9A25>
-I<38FFC1F0EBC7FCEBC63E380FCC7F13D813D0A2EBF03EEBE000B0B5FCA3181B7F9A1B>
-114 D<3803FE30380FFFF0EA3E03EA7800127000F01370A27E00FE1300EAFFE06CB4FC14
-C06C13E06C13F0000713F8C6FCEB07FC130000E0137C143C7E14387E6C137038FF01E038
-E7FFC000C11300161B7E9A1B>I<13E0A41201A31203A21207120F381FFFE0B5FCA2380F
-E000AD1470A73807F0E0000313C03801FF8038007F0014267FA51A>I<39FFE07FF0A300
-0F1307B2140FA2000713173903F067FF3801FFC738007F87201B7D9A25>I<39FFFC03FF
-A3390FF000F0000714E07F0003EB01C0A2EBFC0300011480EBFE070000140013FFEB7F0E
-A2149EEB3F9C14FC6D5AA26D5AA36D5AA26D5AA2201B7F9A23>I<3BFFFC7FFC1FFCA33B
-0FE00FE001C02607F007EB0380A201F8EBF00700031600EC0FF801FC5C0001150EEC1FFC
-2600FE1C5B15FE9039FF387E3C017F1438EC787F6D486C5A16F0ECE01F011F5CA26D486C
-5AA2EC800701075CA22E1B7F9A31>I<39FFFC1FFEA33907F003803803F8079038FC0F00
-3801FE1E00005BEB7F3814F86D5A6D5A130F806D7E130F497EEB3CFEEB38FFEB787F9038
-F03F803901E01FC0D803C013E0EB800F39FFF03FFFA3201B7F9A23>I<39FFFC03FFA339
-0FF000F0000714E07F0003EB01C0A2EBFC0300011480EBFE070000140013FFEB7F0EA214
-9EEB3F9C14FC6D5AA26D5AA36D5AA26D5AA25CA21307003890C7FCEA7C0FEAFE0E131E13
-1C5BEA74F0EA3FE0EA0F8020277F9A23>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fo cmtt10 10.95 76
-/Fo 76 127 df<127012F8B012701200A5127012F8A31270051C779B18>33
-D<EA4010EAE038EAF078EAE038AAEA60300D0E7B9C18>I<EA0306EA078FA6387FFFC0B5
-12E0A26C13C0380F1E00A6387FFFC0B512E0A26C13C0381E3C00A6EA0C18131C7E9B18>
-I<13C01201A3EA03F0EA0FFCEA3FFEEA7DCFEA71C738E1C38013C7A338F1C0001279123F
-6C7EEA0FF8EA01FC13DE13CF13C73861C38012F1A212E1EBC7001271EA79DEEA3FFEEA1F
-F8EA07E0EA01C0A3120011247D9F18>I<EA3803387C0780A2EAEE0F1400A25B131EA213
-3EEA7C3CA2EA387CEA0078A213F85B12015BA212035BA21207EB8380EB87C0120FEB0EE0
-A2121F121EA2123E383C07C0A23818038013247E9F18>I<EA01C0EA07E0487EEA0E7048
-7EA4EB73F813F313E3380FC1C0EBC38013831303381F0700EA3F87EA7B8EEA71CEEAE1FC
-12E0137CEB7870A2EA70FE387FFFE0EA3FC7380F03C0151C7F9B18>I<1238127CA2127E
-123E120EA3121CA2123812F812F012C0070E789B18>I<137013F0EA01E0EA03C0EA0780
-EA0F00121E121C5AA25AA45AA81270A47EA27E121E7EEA0780EA03C0EA01F0120013700C
-24799F18>I<126012F012787E7E7EEA07801203EA01C0A2EA00E0A41370A813E0A4EA01
-C0A2EA03801207EA0F00121E5A5A5A12600C247C9F18>I<EA01C0A4EA41C138F1C780EA
-FDDF387FFF00EA1FFCEA07F0A2EA1FFCEA7FFF38FDDF80EAF1C73841C100EA01C0A41114
-7D9718>I<136013F0A7387FFFC0B512E0A26C13C03800F000A7136013147E9718>I<121C
-123E127E127F123F121F1207120E121E127C12F81260080C788518>I<387FFFC0B512E0
-A26C13C013047E8F18>I<1230127812FCA2127812300606778518>I<1303EB0780A2130F
-14005B131EA2133E133C137C1378A213F85B12015B12035BA212075B120F90C7FCA25A12
-1E123E123CA2127C127812F85AA2126011247D9F18>I<EA01F0EA07FC487EEA1F1FEA1C
-0738380380007813C0EA7001A238E000E0A9EAF001007013C0A2EA780300381380381C07
-00EA1F1FEA0FFE6C5AEA01F0131C7E9B18>I<EA01801203A21207120F123F12FF12FB12
-431203B0EA7FFCEAFFFEEA7FFC0F1C7B9B18>I<EA03F0EA0FFEEA3FFF387C0F80387003
-C0EAE00138F000E0A21260C7FCA2EB01C0A21303EB0780EB0F00131E5B5B5B485AEA07C0
-485A381E00E05AEA7FFFB5FC7E131C7E9B18>I<131F5B1377A213E7120113C7EA038712
-071307120E121E123C1238127812F0B512F8A338000700A6EB7FF0A3151C7F9B18>52
-D<137E48B4FC00071380380F83C0EA1E03121C3838018090C7FC5AA2EAE1F8EAE7FEB5FC
-38FE078038F803C0EAF001EB00E05AA21270A3383801C0EA3C03381E0780380FFF006C5A
-EA01F8131C7E9B18>54 D<1230127812FCA2127812301200A81230127812FCA212781230
-0614779318>58 D<1218123C127EA2123C12181200A81218123C127EA2123E121E120E12
-1C123C127812F01260071A789318>I<14C0EB03E01307EB1FC0EB3F80EBFE00485AEA07
-F0485AEA3F8048C7FC12FCA2127F6C7EEA0FE06C7EEA01FC6C7EEB3F80EB1FC0EB07E013
-03EB00C013187E9918>I<387FFFC0B512E0A26C13C0C8FCA4387FFFC0B512E0A26C13C0
-130C7E9318>I<126012F87E127F6C7EEA0FE06C7EEA01FC6C7EEB3F80EB1FC0EB07E0A2
-EB1FC0EB3F80EBFE00485AEA07F0485AEA3F8048C7FC12FC5A126013187E9918>I<EA0F
-F0EA3FFC48B4FCEA700F38F00380A2EA600738000F00133E5BEA01F05B485AA55BC8FCA5
-EA0380487EA36C5A111C7D9B18>I<137013F8A213D8A2EA01DCA3138CEA038EA4EA0707
-A5380FFF80A3EA0E03381C01C0A3387F07F000FF13F8007F13F0151C7F9B18>65
-D<EA7FF8EAFFFE6C7E381C0F80EB03C0A2EB01E01300A214F01470A814F014E0A2130114
-C01303EB0F80387FFF00485AEA7FF8141C7F9B18>68 D<B512F0A3381C0070A41400A213
-0EA3EA1FFEA3EA1C0EA390C7FCA21438A5B512F8A3151C7F9B18>I<B512F0A3381C0070
-A41400A2130EA3EA1FFEA3EA1C0EA390C7FCA7EAFFC0A3141C7E9B18>I<387F07F038FF
-8FF8387F07F0381C01C0A9EA1FFFA3EA1C01AA387F07F038FF8FF8387F07F0151C7F9B18
->72 D<EA7FFFB512806C1300EA01C0B3A4EA7FFFB512806C1300111C7D9B18>I<EAFFC0
-A3001CC7FCB114E0A5B5FCA3131C7E9B18>76 D<387E07F038FF0FF8387F07F0381D81C0
-A313C1121CA213E1A313611371A213311339A31319A2131D130DA3EA7F07EAFF87EA7F03
-151C7F9B18>78 D<EA0FFE383FFF804813C0EA7803EA700100F013E0EAE000B0EAF00100
-7013C0EA7C07EA7FFF6C1380380FFE00131C7E9B18>I<EAFFFEEBFF8014C0EA1C03EB01
-E013001470A514E01301EB03C0EA1FFF1480EBFE00001CC7FCA8B47EA3141C7F9B18>I<
-EA7FF8EAFFFE6C7E381C0F80130314C01301A313031480130F381FFF005BA2EA1C0F7FEB
-0380A5149CA3387F01F8EAFF81387F00F0161C7F9B18>82 D<3803F1C0EA1FFF5AEA7C0F
-EA7003EAE001A390C7FC12701278123FEA1FF0EA07FEC67EEB0F80EB03C01301EB00E0A2
-126012E0130100F013C038F80780B5FCEBFE00EAE7F8131C7E9B18>I<387FFFF8B5FCA2
-38E07038A400001300B2EA07FFA3151C7F9B18>I<38FF83FEA3381C0070B36C13E0EA0F
-01380783C03803FF806C1300EA007C171C809B18>I<38FE03F8EAFF07EAFE03381C01C0
-EA1E03000E1380EA0F0700071300A2EA038EA2EA01DCA3EA00F8A21370A9EA01FC487E6C
-5A151C7F9B18>89 D<EAFFF8A3EAE000B3ACEAFFF8A30D24779F18>91
-D<126012F0A27E1278127C123CA2123E121E121F7EA27F12077F1203A27F12017F12007F
-1378A2137C133C133E131EA2131F7F14801307A2EB030011247D9F18>I<EAFFF8A3EA00
-38B3ACEAFFF8A30D247F9F18>I<EA0180EA07C0EA1FF0EA7EFCEAF83EEAE00E0F067C9B
-18>I<387FFFC0B512E0A26C13C013047E7F18>I<1206121E123E12381270A212E0A312F8
-12FC127CA21238070E789E18>I<EA0FF0EA1FFC487EEA3C0FEA180738000380A213FF12
-07121FEA7F03127812E0A3EAF007EA780F383FFFF8EA1FFDEA07F015147E9318>I<127E
-12FE127E120EA5133EEBFF80000F13C0EBC1E01380EB0070120E1438A6000F1370A2EB80
-E013C1EBFFC0000E138038063E00151C809B18>I<EA01FEEA07FF001F1380EA3E073838
-030048C7FCA25AA61270EB01C01238EA3E03381FFF8000071300EA01FC12147D9318>I<
-EB1F80133F131F1303A5EA03E3EA0FFBEA1FFFEA3C1FEA380FEA7007130312E0A6EA7007
-A2EA380FEA3C1F381FFFF0380FFBF83803E3F0151C7E9B18>I<EA01F0EA07FCEA1FFEEA
-3E0F38380780EA7003A238E001C0A2B5FCA300E0C7FC1270EB01C01238EA3E07381FFF80
-00071300EA01F812147D9318>I<EB1F80EB7FC0EBFFE013E13801C0C01400A3387FFFC0
-B5FCA23801C000AEEA7FFFA3131C7F9B18>I<3801E1F03807FFF85A381E1E30381C0E00
-487EA5EA1C0EEA1E1EEA1FFC5BEA39E00038C7FC7EEA1FFEEBFFC04813E0387801F03870
-0070481338A4007813F0EA7E03381FFFC06C13803801FC00151F7F9318>I<127E12FE12
-7E120EA5133EEBFF80000F13C013C1EB80E01300120EAB387FC7FC38FFE7FE387FC7FC17
-1C809B18>I<EA0380EA07C0A3EA0380C7FCA4EA7FC012FF127F1201AEB5FCA3101D7C9C
-18>I<127E12FE127E120EA5EB3FF0A3EB0780EB0F00131E5B5B5BEA0FF87F139C130EEA
-0E0F7FEB038014C0387FC7F812FF127F151C7F9B18>107 D<EAFFC0A31201B3A4B51280
-A3111C7D9B18>I<38F9C1C038FFF7F013FF383E3E38EA3C3CA2EA3838AB38FE3E3EEB7E
-7EEB3E3E1714809318>I<EA7E3E38FEFF80007F13C0EA0FC1EB80E01300120EAB387FC7
-FC38FFE7FE387FC7FC1714809318>I<EA01F0EA0FFE487E383E0F80EA3803387001C0A2
-38E000E0A5EAF001007013C0EA7803383C0780EA3E0F381FFF006C5AEA01F013147E9318
->I<EA7E3E38FEFF80007F13C0380FC1E01380EB0070120E1438A6000F1370A2EB80E013
-C1EBFFC0000E1380EB3E0090C7FCA7EA7FC0487E6C5A151E809318>I<3801F380EA07FB
-EA1FFFEA3E1FEA380FEA7007A2EAE003A6EA7007A2EA380FEA3C1FEA1FFFEA0FFBEA03E3
-EA0003A7EB1FF0EB3FF8EB1FF0151E7E9318>I<38FF0FC0EB3FE0EB7FF0EA07F0EBE060
-EBC0005BA290C7FCA9EAFFFC7F5B14147E9318>I<EA07F7EA3FFF5AEA780FEAE007A300
-7CC7FCEA7FE0EA1FFCEA03FEEA001F38600780EAE003A212F038F80F00B5FC13FCEAE7F0
-11147D9318>I<487E1203A4387FFFC0B5FCA238038000A9144014E0A33801C1C013FF6C
-1380EB3E0013197F9818>I<387E07E0EAFE0FEA7E07EA0E00AC1301EA0F033807FFFC6C
-13FE3801FCFC1714809318>I<387F8FF000FF13F8007F13F0381C01C0380E0380A33807
-0700A3138FEA038EA3EA01DCA3EA00F8A2137015147F9318>I<38FF07F8138F13073838
-00E0A4381C01C0137113F9A213D9EA1DDD000D1380A3138DEA0F8FA23807070015147F93
-18>I<387F8FF0139F138F380F0700EA078EEA039EEA01DC13F81200137013F07FEA01DC
-EA039E138EEA0707000E1380387F8FF000FF13F8007F13F015147F9318>I<387F8FF000
-FF13F8007F13F0380E01C0EB0380A21207EB0700A2EA0387A2138EEA01CEA213CC120013
-DC1378A31370A313F05B1279EA7BC0EA7F806CC7FC121E151E7F9318>I<383FFFF05AA2
-387001E0EB03C0EB078038000F00131E5B13F8485AEA03C0485A380F0070121E5A5AB512
-F0A314147F9318>I<EB07E0131F137FEB780013E0AB1201EA7FC0485AA26C7EEA01E012
-00AB1378EB7FE0131F130713247E9F18>I<126012F0B3B012600424769F18>I<127CB4FC
-13C01203C67EAB7FEB7FC0EB3FE0A2EB7FC0EBF0005BABEA03C012FF90C7FC127C13247E
-9F18>I<EA060CEA1F1EEA3FBEEAFBF8EAF1F0EA60C00F067C9B18>I
-E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fp cmr10 10.95 74
-/Fp 74 123 df<90381F83E09038F06E303901C07878380380F8903800F03048EB7000A7
-B612803907007000B2383FE3FF1D20809F1B>11 D<133FEBE0C0EA01C0380381E0EA0701
-A290C7FCA6B512E0EA0700B2383FC3FC1620809F19>I<EB3FE013E0EA01C1EA0381EA07
-00A8B5FCEA0700B2383FE7FC1620809F19>I<90381F81F89038F04F043901C07C063903
-80F80FEB00F05A0270C7FCA6B7FC3907007007B23A3FE3FE3FE02320809F26>I<EA7038
-EAF87CEAFC7EA2EA743AEA0402A3EA0804A2EA1008A2EA2010EA40200F0E7F9F17>34
-D<127012F812FCA212741204A31208A21210A212201240060E7C9F0D>39
-D<13401380EA01005A12061204120C5AA212381230A212701260A412E0AC1260A4127012
-30A212381218A27E120412067E7EEA008013400A2E7BA112>I<7E12407E12307E120812
-0C7EA212077EA213801201A413C0AC1380A412031300A25A1206A25A120812185A12205A
-5A0A2E7EA112>I<127012F012F8A212781208A31210A31220A21240050E7C840D>44
-D<EAFFF0A20C02808A0F>I<127012F8A3127005057C840D>I<EA03F0EA0E1C487EEA1806
-EA380738700380A400F013C0AD00701380A3EA780700381300EA1806EA1C0E6C5AEA03F0
-121F7E9D17>48 D<13801203120F12F31203B3A6EA07C0EA7FFE0F1E7C9D17>I<EA03F0
-EA0C1CEA100E487E00401380128000F013C0EAF803A3EA200712001480A2EB0F00130E5B
-5B5B13605B485A48C7FC000613405A5A00101380EA3FFF5AB5FC121E7E9D17>I<EA03F0
-EA0C1CEA100EEA200F007813801307A2EA380F12001400A2131E131C1370EA07F0EA003C
-130E130FEB0780A214C0122012F8A300F013801240EB0F00EA200EEA183CEA07F0121F7E
-9D17>I<1306A2130EA2131E132EA2134E138EA2EA010E1202A212041208A212101220A2
-124012C0B512F038000E00A7EBFFE0141E7F9D17>I<EA1803EA1FFE5B5B13E00010C7FC
-A6EA11F0EA161CEA180EEA10071480EA0003A214C0A3127012F0A200E013801240EB0700
-EA20066C5AEA0838EA07E0121F7E9D17>I<137CEA0182EA0701380E0380EA0C07121838
-38030090C7FC12781270A2EAF1F0EAF21CEAF406EAF807EB0380A200F013C0A51270A214
-801238EB07001218EA0C0E6C5AEA01F0121F7E9D17>I<1240387FFFE014C0A238400080
-38800100A21302485AA25B5BA25BA21360A213E05B1201A41203A76C5A131F7E9D17>I<
-EA03F0EA0C0CEA1006EA3003382001801260A3127038780300123EEA3F06EA1FC8EA0FF0
-EA03F8487EEA0C7EEA103F38300F80EA6007EB01C012C01300A31480EA600100201300EA
-1002EA0C0CEA03F0121F7E9D17>I<EA03F0EA0E18487E487E13071270EB038012F0A214
-C0A5EA7007A21238EA180BEA0E13EA03E338000380A3EB07001230EA7806130EEA700CEA
-2018EA1070EA0FC0121F7E9D17>I<127012F8A312701200AA127012F8A3127005147C93
-0D>I<127012F8A312701200AA127012F012F8A212781208A31210A31220A21240051D7C
-930D>I<5B497EA3497EA3EB09E0A3EB10F0A3EB2078A3497EA2EBC03EEB801EA248B5FC
-EB000FA20002EB0780A348EB03C0A2120C001E14E039FF801FFE1F207F9F22>65
-D<B512E0380F0078141EA2801580A515005C141E147CEBFFF0EB007C141FEC0F80EC07C0
-140315E0A515C014071580EC0F00143EB512F01B1F7E9E20>I<90380FE0109038381C30
-9038E002703803C00139078000F048C71270121E15305A1510127C127800F81400A91278
-007C1410123CA26C1420A27E6C6C13406C6C13803900E00300EB380CEB0FF01C217E9F21
->I<B512F83807801EEC0780EC03C0EC01E0EC00F015701578A2153CA3153EA8153CA215
-7C1578A215F0EC01E0EC03C0EC0780EC1E00B512F81F1F7F9E23>I<B61280380F000F14
-031401140015C01540A314401500A214C0130113FF130113001440A3EC0020A31540A315
-C01401EC0380140FB6FC1B1F7E9E1F>I<B61280380780071401A2140015C01540A4EC20
-00A3146014E013FF138014601420A391C7FCA87FEAFFFE1A1F7F9E1E>I<90380FE02090
-387818609038E004E03803800238070001481300001E1460A25A1520127C127800F81400
-A7EC7FFCEC03E000781301127C123CA27EA27E7E380380023900E0046090387818209038
-0FE0001E217D9F24>I<39FFF07FF8390F000780AD90B5FCEB0007AF39FFF07FF81D1F7E
-9E22>I<EAFFF0EA0F00B3ABEAFFF00C1F7E9E10>I<EAFFF8EA0F8090C7FCB21402A41406
-1404A2140C141C147CB512FC171F7E9E1C>76 D<B46CEB07FE000715C0A2D805C0130BA2
-D804E01313A301701323A26D1343A36D1383A290380E0103A3EB0702A3EB0384A2EB01C8
-A3EB00F0A21460121FD8FFE0EB7FFE271F7F9E2A>I<B4EB0FF8390F8003E0EC0080EA0B
-C0EA09E0A2EA08F01378A27F7FA27FEB0780A2EB03C0EB01E0A2EB00F01478A2143C141E
-A2140F1407A214031401123E38FF80001D1F7E9E22>I<EB1FE0EB70383801C00E48487E
-39070003804814C0001EEB01E048EB00F0A2007C14F8A20078147800F8147CA900781478
-007C14F8A2003C14F0003E1301001E14E06CEB03C06C148039038007003801E01E380070
-38EB1FE01E217E9F23>I<B512E0380F007C141E80EC0780A215C0A41580A2EC0F00141E
-147CEBFFE090C8FCAEEAFFF01A1F7E9E1F>I<EB1FE0EB70383801C00E48487E39070003
-804814C0001EEB01E0003E14F0003C1300007C14F8A20078147800F8147CA90078147800
-7C14F8A2003C14F0383E0781391E0841E0390F1023C00007148039039017003801D01E39
-00783804EB1FF8EB001CEC0C0CEC0E1CEC0FF8A2140715F0EC01E01E297E9F23>I<B512
-E0380F80780007131E80EC0780A215C0A41580A2EC0F00141E1478EBFFE0EB8060143814
-3C141C141EA3141FA315011581140F390FC0078239FFFC03C4C812F820207F9E22>I<38
-03F040380C0CC0EA1803EA3001EA6000A212E01440A36C13007E127CEA7F80EA3FF86CB4
-FC00071380C613C0EB1FE013031301EB00F014707EA46C136014E06C13C038F8018038C6
-0300EA81FC14217E9F19>I<007FB512E038780F010060EB006000401420A200C0143000
-801410A400001400B3497E3803FFFC1C1F7E9E21>I<39FFF00FF8390F0003E0EC0080B3
-A46CEB01001380120314026C6C5A6C6C5AEB3830EB0FC01D207E9E22>I<39FFF003FE39
-1F8000F86CC7126015206C6C1340A36C6C1380A2EBE00100011400A23800F002A213F8EB
-7804A26D5AA36D5AA2131F6D5AA2EB07C0A36D5AA36DC7FC1F207F9E22>I<3BFFF07FF8
-1FF03B1F000FC007C06C903907800180170015C001805C00071502EC09E013C000035DEC
-19F01410D801E05CA2EC2078D800F05CA2EC403C01785CA2EC801E017C1460013C144090
-383D000F133F6D5CA2011E1307010E91C7FCA2010C7F010413022C207F9E2F>I<12FFA2
-12C0B3B3A512FFA2082D7CA10D>91 D<EA0804EA1008EA2010A2EA4020A2EA8040A3EAB8
-5CEAFC7EA2EA7C3EEA381C0F0E7A9F17>I<12FFA21203B3B3A512FFA2082D80A10D>I<12
-0812101220A21240A21280A312B812FCA2127C1238060E7D9F0D>96
-D<EA1FE0EA3030EA7818131CEA300E1200A313FEEA0F8EEA1E0E1238127800F01310A313
-1E127838386720380F83C014147E9317>I<121C12FC121CAA137CEA1D87381E0180EB00
-C0001C13E01470A21478A6147014F014E0001E13C0381A018038198700EA107C15207E9F
-19>I<EA01FCEA0706EA1C0F123813060078C7FC127012F0A61270127800381380A2381C
-0100EA0706EA01F811147F9314>I<EB01C0130F1301AAEA01F1EA070DEA0C03EA180112
-381278127012F0A61270A21238EA1803120CEA070D3801F1F815207F9F19>I<EA03F0EA
-0E1C487E487EA238700380A212F0B5FC00F0C7FCA41270A26C1380A2381C0100EA0706EA
-01F811147F9314>I<137CEA01C6EA030F1207EA0E061300A7EAFFF0EA0E00B2EA7FE010
-20809F0E>I<14E03803E330EA0E3CEA1C1C38380E00EA780FA5EA380E6C5AEA1E38EA33
-E00020C7FCA21230A2EA3FFE381FFF8014C0383001E038600070481330A4006013606C13
-C0381C03803803FC00141F7F9417>I<121C12FC121CAA137C1386EA1D03001E1380A212
-1CAE38FF8FF014207E9F19>I<1238127CA31238C7FCA6121C12FC121CB1EAFF80091F7F
-9E0C>I<13E0EA01F0A3EA00E01300A61370EA07F012001370B3A31260EAF06013C0EA61
-80EA3F000C28829E0E>I<121C12FC121CAAEB1FE0EB0780EB060013045B5B5B136013E0
-EA1DF0EA1E70EA1C38133C131C7F130F7F148014C038FF9FF014207E9F18>I<121C12FC
-121CB3ABEAFF8009207F9F0C>I<391C3E03E039FCC30C30391D019018001EEBE01CA200
-1C13C0AE3AFF8FF8FF8021147E9326>I<EA1C7CEAFC86EA1D03001E1380A2121CAE38FF
-8FF014147E9319>I<EA01F8EA070E381C0380383801C0A2387000E0A200F013F0A60070
-13E0A2383801C0A2381C038038070E00EA01F814147F9317>I<EA1C7CEAFD87381E0180
-14C0381C00E014F014701478A6147014F014E0381E01C0EB0380381D8700EA1C7C90C7FC
-A8B47E151D7E9319>I<3801F04038070CC0EA0E02EA1C03EA38011278127012F0A61270
-12781238EA1C03EA0C05EA0709EA01F1EA0001A8EB0FF8151D7F9318>I<EA1CF0EAFD18
-EA1E3CA21318EA1C00AEEAFFC00E147E9312>I<EA0FC8EA3038EA6018EAC008A3EAE000
-127CEA3FE0EA1FF0EA07F8EA003CEA800E130612C0A21304EAE00CEAD818EA87E00F147F
-9312>I<1202A31206A2120EA2123EEAFFF8EA0E00AB1304A5EA07081203EA01F00E1C7F
-9B12>I<381C0380EAFC1FEA1C03AE1307120CEA061B3803E3F014147E9319>I<38FF83F8
-383E00E0001C13C06C1380A338070100A21383EA0382A2EA01C4A213E4EA00E8A21370A3
-132015147F9318>I<39FF9FE1FC393C078070391C030060EC8020000E1440A214C0D807
-04138014E0A239038861001471A23801D032143A143E3800E01CA2EB6018EB40081E147F
-9321>I<38FF87F8381E03C0380E0180EB0300EA0702EA0384EA01C813D8EA00F0137013
-7813F8139CEA010E1202EA060738040380000C13C0003C13E038FE07FC16147F9318>I<
-38FF83F8383E00E0001C13C06C1380A338070100A21383EA0382A2EA01C4A213E4EA00E8
-A21370A31320A25BA3EAF080A200F1C7FC1262123C151D7F9318>I<EA7FFFEA700E1260
-EA401C133813781370EA00E0120113C0EA038012071301120E121EEA1C03EA3802EA7006
-130EEAFFFE10147F9314>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fq cmbx12 20.736 13
-/Fq 13 122 df<DB1FFC14C00203B5EAC001021FECF003027FECFC07903B01FFFC00FE0F
-010701C0EB1F9F4948C7EA07FFD93FF880494814004948157F485B4A153F4890C9121F48
-5A000F170F5B001F1707A2485A1803A2127FA24993C8FCA212FFAA041FB61280127FA27F
-DC0001EBC000123FA36C7EA26C7EA26C7E7E6C7F806C7F6D6C5CEB3FFCD90FFF5C6D01C0
-EB1FBF010101FCEBFF1F6D6CB5EAFE0F021FECF8030203ECE0009126001FFEC9FC413D7B
-BB4C>71 D<B6D8F803B612E0A426007FF0C70001EBC000B3A491B8FCA402F0C71201B3A7
-B6D8F803B612E0A4433B7CBA4C>I<B612FEA426007FF0C9FCB3ADEF03C0A517071880A3
-170FA3171FA2173F177F17FF5E04071300163FB9FCA4323B7DBA3A>76
-D<B500F00207B512E0808080D8007F92390007E0006E6F5A81017B7F81137901787F6E7E
-6E7E81141F6E7E6E7F6E7F82806E7F6F7E6F7E826F7E816F13806F13C017E06F13F081EE
-7FF8EE3FFC17FEEE1FFF827013837013C318E37013F382EF7FFBEF3FFFA283838383A283
-83187F183FA201FC161FB500FC150F18071803A2433B7CBA4C>78
-D<B600F80107B512E0A426007FF0C83807E000725AB3B3A3013F4C5AA280011F4CC7FCA2
-6D6C151E0107163E6E5D6D6C5D6D6D13019026007FE0EB0FE0DA3FFCEB7FC0020FB65A02
-034AC8FCDA007F13F003071380433C7DBA4A>85 D<EB3FFE48B512E0000714F8390FE007
-FC9038F001FE486C6C7E6F7E82153F6C48806C5A6C5AC8FCA491B5FC131F90387FF83F38
-03FF803807FC00EA0FF0485A123F485AA2485AA4157F6C7E15DF3A3FE0039FF03B1FF80F
-0FFFE03807FFFE0001497E39003FE0002B267DA52F>97 D<13FE12FFA412071203B04AB4
-FC021F13F0027F13FC9138FC03FE9039FFF000FF02C0EB3F8091C7EA1FC04915E0EE0FF0
-17F8A2EE07FCA317FEA917FCA3160F17F817F0161F6D15E06EEB3FC06EEB7F80D9F9E0EB
-FF009039F0FC07FE91387FFFF8D9E01F13E09026C003FEC7FC2F3C7DBB36>I<EA01E0EA
-07F8487EA2487EA46C5AA26C5AEA01E0C8FCAB13FE127FA412071203B3AAB512F0A4143D
-7DBC1A>105 D<903801FFC0010F13F8017F13FFD9FF807F3A03FE003FE0D807F8EB0FF0
-48486D7EA248486D7E003F81A248486D7EA400FF1680A9007F1600A36C6C495AA2001F5D
-6D1307000F5D6C6C495AD803FEEB3FE03A00FF80FF806DB5C7FC010F13F8010113C02926
-7DA530>111 D<3901FC03F000FFEB0FFC4AB4FC91383C3F80EC707F00079038E0FFC000
-035BEBFD80A201FFEB7F809138003F00151E92C7FC5BB3A3B512FCA422267DA528>114
-D<90383FF0383903FFFE7848EBFFF8381FC00F383F0003003E13005A157812FCA27E6C14
-0013C013FC387FFFF06C13FEECFF806C14C06C14E0000314F0C614F8011F13FCEB007FEC
-07FE0070130100F01300157E7EA27E157C6C14FC6C14F890388001F09038F00FE000F9B5
-12C0D8F07F130038C01FF81F267DA526>I<130FA55BA45BA25BA25B5A5A5A001FEBFFF0
-B6FCA3000190C7FCB3153CA86C14781480017F13F090383FC1E090381FFFC06D13809038
-01FE001E377EB626>I<B500F0EBFFFCA4D803FEC7EA1F806D15006C151E806C5DA26E13
-7C017F14786E13F8013F5CECF001011F5CECF803010F5CA2ECFC0701075CECFE0F010391
-C7FC6E5A6D131E15BE6D13BC15FC6E5AA36E5AA26E5AA26E5AA26E5AA2140F92C8FC5C14
-1E0008133E007F133C147C38FF807814F8EB81F0EB83E06C485A387C1F80D83FFFC9FCEA
-1FFCEA07F02E377EA533>121 D E
-%EndDVIPSBitmapFont
-end
-%%EndProlog
-%%BeginSetup
-%%Feature: *Resolution 300dpi
-TeXDict begin
-%%BeginPaperSize: Letter
-letter
-%%EndPaperSize
-
-%%EndSetup
-%%Page: 1 1
-1 0 bop 75 659 a Fq(GNU)33 b(History)f(Library)p 75 709
-1800 17 v 960 757 a Fp(Edition)16 b(4.3,)e(for)h Fo(History)f(Library)g
-Fp(V)l(ersion)i(4.3.)1643 811 y(Marc)o(h)e(2002)75 2467
-y Fn(Brian)23 b(F)-6 b(o)n(x,)23 b(F)-6 b(ree)23 b(Soft)n(w)n(are)f(F)
--6 b(oundation)75 2534 y(Chet)22 b(Ramey)-6 b(,)23 b(Case)e(W)-6
-b(estern)23 b(Reserv)n(e)f(Univ)n(ersit)n(y)p 75 2570
-1800 9 v eop
-%%Page: 2 2
-2 1 bop 75 217 a Fp(This)21 b(do)q(cumen)o(t)g(describ)q(es)h(the)f
-(GNU)f(History)g(library)l(,)j(a)d(programming)g(to)q(ol)g(that)g(pro)o
-(vides)h(a)75 271 y(consisten)o(t)15 b(user)h(in)o(terface)f(for)g
-(recalling)i(lines)f(of)f(previously)i(t)o(yp)q(ed)e(input.)75
-339 y(Published)i(b)o(y)f(the)f(F)l(ree)g(Soft)o(w)o(are)f(F)l
-(oundation)75 394 y(59)h(T)l(emple)h(Place,)f(Suite)i(330,)75
-448 y(Boston,)d(MA)h(02111)f(USA)75 516 y(P)o(ermission)j(is)f(gran)o
-(ted)g(to)f(mak)o(e)h(and)g(distribute)i(v)o(erbatim)d(copies)i(of)f
-(this)h(man)o(ual)f(pro)o(vided)h(the)75 570 y(cop)o(yrigh)o(t)e
-(notice)h(and)f(this)h(p)q(ermission)g(notice)g(are)f(preserv)o(ed)h
-(on)f(all)h(copies.)75 638 y(P)o(ermission)c(is)h(gran)o(ted)e(to)g
-(cop)o(y)h(and)g(distribute)h(mo)q(di\014ed)g(v)o(ersions)f(of)f(this)h
-(man)o(ual)g(under)h(the)f(con-)75 692 y(ditions)k(for)e(v)o(erbatim)h
-(cop)o(ying,)g(pro)o(vided)h(that)e(the)h(en)o(tire)h(resulting)g
-(deriv)o(ed)g(w)o(ork)e(is)h(distributed)75 747 y(under)h(the)f(terms)g
-(of)g(a)f(p)q(ermission)j(notice)f(iden)o(tical)h(to)e(this)g(one.)75
-814 y(P)o(ermission)i(is)g(gran)o(ted)f(to)g(cop)o(y)h(and)f
-(distribute)i(translations)f(of)f(this)h(man)o(ual)g(in)o(to)f(another)
-g(lan-)75 869 y(guage,)e(under)h(the)f(ab)q(o)o(v)o(e)g(conditions)i
-(for)d(mo)q(di\014ed)j(v)o(ersions,)e(except)h(that)f(this)h(p)q
-(ermission)g(notice)75 924 y(ma)o(y)f(b)q(e)i(stated)f(in)h(a)f
-(translation)g(appro)o(v)o(ed)g(b)o(y)g(the)g(F)l(ree)h(Soft)o(w)o(are)
-d(F)l(oundation.)75 2661 y(Cop)o(yrigh)o(t)301 2660 y(c)289
-2661 y Fm(\015)h Fp(1988-2002)f(F)l(ree)i(Soft)o(w)o(are)f(F)l
-(oundation,)h(Inc.)p eop
-%%Page: 1 3
-1 2 bop 75 -58 a Fp(Chapter)15 b(1:)k(Using)d(History)f(In)o(teractiv)o
-(ely)1007 b(1)75 149 y Fl(1)41 b(Using)26 b(History)h(In)n(teractiv)n
-(ely)137 289 y Fp(This)17 b(c)o(hapter)g(describ)q(es)h(ho)o(w)e(to)g
-(use)h(the)g Fk(gnu)f Fp(History)g(Library)h(in)o(teractiv)o(ely)l(,)h
-(from)e(a)g(user's)75 344 y(standp)q(oin)o(t.)38 b(It)21
-b(should)h(b)q(e)g(considered)g(a)f(user's)g(guide.)38
-b(F)l(or)21 b(information)g(on)g(using)h(the)f Fk(gnu)75
-398 y Fp(History)c(Library)h(in)h(y)o(our)e(o)o(wn)g(programs,)f(see)i
-(Chapter)f(2)h([Programming)e(with)i(GNU)f(History],)75
-453 y(page)e(5.)75 600 y Fn(1.1)33 b(History)22 b(Expansion)137
-704 y Fp(The)c(History)g(library)h(pro)o(vides)f(a)f(history)h
-(expansion)h(feature)e(that)h(is)g(similar)h(to)e(the)h(history)75
-759 y(expansion)12 b(pro)o(vided)g(b)o(y)f Fo(csh)p Fp(.)18
-b(This)11 b(section)h(describ)q(es)g(the)g(syn)o(tax)e(used)h(to)g
-(manipulate)h(the)f(history)75 814 y(information.)137
-888 y(History)k(expansions)h(in)o(tro)q(duce)h(w)o(ords)d(from)g(the)i
-(history)f(list)h(in)o(to)f(the)h(input)g(stream,)e(making)75
-943 y(it)h(easy)g(to)g(rep)q(eat)g(commands,)g(insert)h(the)f(argumen)o
-(ts)f(to)h(a)g(previous)h(command)f(in)o(to)g(the)g(curren)o(t)75
-998 y(input)h(line,)h(or)d(\014x)i(errors)e(in)i(previous)g(commands)f
-(quic)o(kly)l(.)137 1072 y(History)j(expansion)i(tak)o(es)d(place)i(in)
-h(t)o(w)o(o)d(parts.)28 b(The)19 b(\014rst)f(is)g(to)g(determine)i
-(whic)o(h)f(line)h(from)75 1127 y(the)h(history)f(list)i(should)g(b)q
-(e)f(used)g(during)h(substitution.)37 b(The)21 b(second)g(is)g(to)f
-(select)i(p)q(ortions)e(of)75 1182 y(that)15 b(line)i(for)d(inclusion)k
-(in)o(to)d(the)h(curren)o(t)f(one.)20 b(The)c(line)g(selected)h(from)e
-(the)g(history)g(is)h(called)h(the)75 1237 y Fj(ev)o(en)o(t)p
-Fp(,)c(and)h(the)g(p)q(ortions)g(of)f(that)g(line)i(that)e(are)g(acted)
-h(up)q(on)g(are)f(called)j Fj(w)o(ords)p Fp(.)i(V)l(arious)c
-Fj(mo)q(di\014ers)75 1292 y Fp(are)i(a)o(v)m(ailable)i(to)e(manipulate)
-i(the)e(selected)i(w)o(ords.)23 b(The)17 b(line)h(is)f(brok)o(en)f(in)o
-(to)h(w)o(ords)e(in)j(the)e(same)75 1346 y(fashion)c(that)e(Bash)i(do)q
-(es,)g(so)f(that)g(sev)o(eral)g(w)o(ords)g(surrounded)h(b)o(y)f(quotes)
-h(are)f(considered)h(one)g(w)o(ord.)75 1401 y(History)18
-b(expansions)h(are)g(in)o(tro)q(duced)g(b)o(y)f(the)h(app)q(earance)g
-(of)f(the)g(history)h(expansion)g(c)o(haracter,)75 1456
-y(whic)o(h)d(is)g(`)p Fo(!)p Fp(')e(b)o(y)h(default.)75
-1583 y Fi(1.1.1)30 b(Ev)n(en)n(t)21 b(Designators)137
-1687 y Fp(An)16 b(ev)o(en)o(t)f(designator)g(is)g(a)g(reference)h(to)f
-(a)g(command)g(line)i(en)o(try)d(in)i(the)g(history)f(list.)75
-1777 y Fo(!)216 b Fp(Start)16 b(a)g(history)h(substitution,)g(except)h
-(when)f(follo)o(w)o(ed)g(b)o(y)f(a)h(space,)g(tab,)f(the)h(end)g(of)315
-1832 y(the)e(line,)i(`)p Fo(=)p Fp(')d(or)h(`)p Fo(\()p
-Fp('.)75 1919 y Fo(!)p Fj(n)191 b Fp(Refer)15 b(to)f(command)h(line)i
-Fj(n)p Fp(.)75 2006 y Fo(!-)p Fj(n)167 b Fp(Refer)15
-b(to)f(the)i(command)f Fj(n)g Fp(lines)i(bac)o(k.)75
-2094 y Fo(!!)192 b Fp(Refer)15 b(to)f(the)i(previous)f(command.)20
-b(This)c(is)g(a)f(synon)o(ym)g(for)f(`)p Fo(!-1)p Fp('.)75
-2181 y Fo(!)p Fj(string)102 b Fp(Refer)15 b(to)f(the)i(most)e(recen)o
-(t)h(command)g(starting)g(with)g Fj(string)p Fp(.)75
-2268 y Fo(!?)p Fj(string)t Fo([?])315 2323 y Fp(Refer)h(to)g(the)h
-(most)f(recen)o(t)h(command)g(con)o(taining)g Fj(string)p
-Fp(.)25 b(The)17 b(trailing)g(`)p Fo(?)p Fp(')f(ma)o(y)g(b)q(e)315
-2377 y(omitted)f(if)h(the)f Fj(string)k Fp(is)d(follo)o(w)o(ed)f
-(immediately)i(b)o(y)e(a)g(newline.)75 2464 y Fo(^)p
-Fj(string1)t Fo(^)p Fj(string2)t Fo(^)315 2519 y Fp(Quic)o(k)i
-(Substitution.)23 b(Rep)q(eat)16 b(the)g(last)f(command,)h(replacing)h
-Fj(string1)i Fp(with)e Fj(string2)p Fp(.)315 2574 y(Equiv)m(alen)o(t)g
-(to)d Fo(!!:s/)p Fj(string1)t Fo(/)p Fj(string2)t Fo(/)p
-Fp(.)75 2661 y Fo(!#)192 b Fp(The)15 b(en)o(tire)h(command)f(line)i(t)o
-(yp)q(ed)f(so)e(far.)p eop
-%%Page: 2 4
-2 3 bop 75 -58 a Fp(2)1347 b(GNU)15 b(History)g(Library)75
-149 y Fi(1.1.2)30 b(W)-5 b(ord)20 b(Designators)137 247
-y Fp(W)l(ord)d(designators)g(are)g(used)h(to)f(select)h(desired)h(w)o
-(ords)d(from)h(the)g(ev)o(en)o(t.)26 b(A)18 b(`)p Fo(:)p
-Fp(')e(separates)h(the)75 302 y(ev)o(en)o(t)j(sp)q(eci\014cation)h
-(from)e(the)h(w)o(ord)f(designator.)34 b(It)20 b(ma)o(y)f(b)q(e)h
-(omitted)g(if)g(the)g(w)o(ord)f(designator)75 357 y(b)q(egins)f(with)g
-(a)e(`)p Fo(^)p Fp(',)h(`)p Fo($)p Fp(',)f(`)p Fo(*)p
-Fp(',)g(`)p Fo(-)p Fp(',)g(or)h(`)p Fo(\045)p Fp('.)24
-b(W)l(ords)17 b(are)g(n)o(um)o(b)q(ered)g(from)g(the)g(b)q(eginning)i
-(of)e(the)g(line,)75 411 y(with)j(the)g(\014rst)f(w)o(ord)h(b)q(eing)h
-(denoted)f(b)o(y)g(0)f(\(zero\).)33 b(W)l(ords)20 b(are)f(inserted)i
-(in)o(to)f(the)g(curren)o(t)f(line)75 466 y(separated)c(b)o(y)g(single)
-i(spaces.)137 535 y(F)l(or)e(example,)75 616 y Fo(!!)192
-b Fp(designates)18 b(the)g(preceding)i(command.)28 b(When)18
-b(y)o(ou)g(t)o(yp)q(e)g(this,)h(the)f(preceding)h(com-)315
-671 y(mand)c(is)h(rep)q(eated)g(in)g(toto.)75 752 y Fo(!!:$)144
-b Fp(designates)12 b(the)f(last)g(argumen)o(t)f(of)h(the)g(preceding)i
-(command.)19 b(This)11 b(ma)o(y)g(b)q(e)h(shortened)315
-807 y(to)j Fo(!$)p Fp(.)75 887 y Fo(!fi:2)120 b Fp(designates)15
-b(the)g(second)g(argumen)o(t)f(of)g(the)h(most)f(recen)o(t)g(command)h
-(starting)f(with)h(the)315 942 y(letters)g Fo(fi)p Fp(.)137
-1024 y(Here)h(are)f(the)g(w)o(ord)f(designators:)75 1105
-y Fo(0)h(\(zero\))57 b Fp(The)15 b Fo(0)p Fp(th)g(w)o(ord.)20
-b(F)l(or)14 b(man)o(y)h(applications,)h(this)g(is)g(the)f(command)g(w)o
-(ord.)75 1186 y Fj(n)215 b Fp(The)15 b Fj(n)p Fp(th)h(w)o(ord.)75
-1267 y Fo(^)216 b Fp(The)15 b(\014rst)g(argumen)o(t;)f(that)h(is,)g(w)o
-(ord)g(1.)75 1348 y Fo($)216 b Fp(The)15 b(last)h(argumen)o(t.)75
-1429 y Fo(\045)216 b Fp(The)15 b(w)o(ord)g(matc)o(hed)g(b)o(y)g(the)g
-(most)g(recen)o(t)g(`)p Fo(?)p Fj(string)t Fo(?)p Fp(')f(searc)o(h.)75
-1510 y Fj(x)p Fo(-)p Fj(y)168 b Fp(A)15 b(range)g(of)g(w)o(ords;)f(`)p
-Fo(-)p Fj(y)t Fp(')g(abbreviates)i(`)p Fo(0-)p Fj(y)t
-Fp('.)75 1591 y Fo(*)216 b Fp(All)15 b(of)f(the)f(w)o(ords,)g(except)i
-(the)f Fo(0)p Fp(th.)19 b(This)14 b(is)h(a)e(synon)o(ym)h(for)f(`)p
-Fo(1-$)p Fp('.)18 b(It)c(is)g(not)g(an)g(error)315 1645
-y(to)g(use)h(`)p Fo(*)p Fp(')f(if)i(there)e(is)i(just)e(one)h(w)o(ord)f
-(in)i(the)f(ev)o(en)o(t;)f(the)h(empt)o(y)g(string)g(is)g(returned)g
-(in)315 1700 y(that)f(case.)75 1781 y Fj(x)s Fo(*)189
-b Fp(Abbreviates)16 b(`)p Fj(x)p Fo(-$)p Fp(')75 1862
-y Fj(x)p Fo(-)192 b Fp(Abbreviates)16 b(`)p Fj(x)p Fo(-$)p
-Fp(')e(lik)o(e)i(`)p Fj(x)s Fo(*)p Fp(',)e(but)i(omits)f(the)g(last)g
-(w)o(ord.)137 1943 y(If)i(a)g(w)o(ord)f(designator)h(is)h(supplied)h
-(without)e(an)g(ev)o(en)o(t)f(sp)q(eci\014cation,)j(the)e(previous)h
-(command)75 1998 y(is)e(used)f(as)g(the)h(ev)o(en)o(t.)75
-2113 y Fi(1.1.3)30 b(Mo)r(di\014ers)137 2210 y Fp(After)10
-b(the)h(optional)g(w)o(ord)e(designator,)i(y)o(ou)f(can)h(add)f(a)g
-(sequence)i(of)e(one)g(or)g(more)g(of)g(the)g(follo)o(wing)75
-2265 y(mo)q(di\014ers,)16 b(eac)o(h)f(preceded)i(b)o(y)e(a)g(`)p
-Fo(:)p Fp('.)75 2346 y Fo(h)216 b Fp(Remo)o(v)o(e)14
-b(a)h(trailing)h(pathname)f(comp)q(onen)o(t,)g(lea)o(ving)h(only)g(the)
-f(head.)75 2427 y Fo(t)216 b Fp(Remo)o(v)o(e)14 b(all)i(leading)h
-(pathname)e(comp)q(onen)o(ts,)g(lea)o(ving)h(the)f(tail.)75
-2508 y Fo(r)216 b Fp(Remo)o(v)o(e)14 b(a)h(trailing)h(su\016x)f(of)g
-(the)g(form)g(`)p Fo(.)p Fj(su\016x)s Fp(',)f(lea)o(ving)i(the)f
-(basename.)75 2589 y Fo(e)216 b Fp(Remo)o(v)o(e)14 b(all)i(but)g(the)f
-(trailing)h(su\016x.)75 2670 y Fo(p)216 b Fp(Prin)o(t)15
-b(the)g(new)h(command)f(but)g(do)g(not)g(execute)h(it.)p
-eop
-%%Page: 3 5
-3 4 bop 75 -58 a Fp(Chapter)15 b(1:)k(Using)d(History)f(In)o(teractiv)o
-(ely)1007 b(3)75 149 y Fo(s/)p Fj(old)r Fo(/)p Fj(new)t
-Fo(/)315 204 y Fp(Substitute)17 b Fj(new)j Fp(for)c(the)h(\014rst)e(o)q
-(ccurrence)j(of)e Fj(old)i Fp(in)f(the)g(ev)o(en)o(t)f(line.)25
-b(An)o(y)16 b(delimiter)315 259 y(ma)o(y)c(b)q(e)h(used)g(in)g(place)g
-(of)f(`)p Fo(/)p Fp('.)18 b(The)13 b(delimiter)h(ma)o(y)e(b)q(e)h
-(quoted)f(in)i Fj(old)g Fp(and)f Fj(new)k Fp(with)12
-b(a)315 314 y(single)j(bac)o(kslash.)20 b(If)15 b(`)p
-Fo(&)p Fp(')e(app)q(ears)h(in)h Fj(new)p Fp(,)f(it)g(is)h(replaced)g(b)
-o(y)f Fj(old)p Fp(.)20 b(A)14 b(single)i(bac)o(kslash)315
-369 y(will)j(quote)e(the)h(`)p Fo(&)p Fp('.)25 b(The)17
-b(\014nal)i(delimiter)g(is)f(optional)g(if)f(it)h(is)g(the)f(last)g(c)o
-(haracter)g(on)315 423 y(the)e(input)h(line.)75 503 y
-Fo(&)216 b Fp(Rep)q(eat)15 b(the)g(previous)h(substitution.)75
-583 y Fo(g)216 b Fp(Cause)19 b(c)o(hanges)h(to)e(b)q(e)i(applied)h(o)o
-(v)o(er)e(the)g(en)o(tire)h(ev)o(en)o(t)f(line.)34 b(Used)20
-b(in)g(conjunction)315 638 y(with)c(`)p Fo(s)p Fp(',)d(as)i(in)h
-Fo(gs/)p Fj(old)r Fo(/)p Fj(new)t Fo(/)p Fp(,)f(or)g(with)g(`)p
-Fo(&)p Fp('.)p eop
-%%Page: 4 6
-4 5 bop 75 -58 a Fp(4)1347 b(GNU)15 b(History)g(Library)p
-eop
-%%Page: 5 7
-5 6 bop 75 -58 a Fp(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(History)889 b(5)75 149 y Fl(2)41 b(Programming)28 b(with)e(GNU)i
-(History)137 269 y Fp(This)17 b(c)o(hapter)f(describ)q(es)i(ho)o(w)e
-(to)f(in)o(terface)i(programs)e(that)g(y)o(ou)h(write)g(with)h(the)f
-Fk(gnu)g Fp(History)75 324 y(Library)l(.)24 b(It)17 b(should)g(b)q(e)g
-(considered)h(a)e(tec)o(hnical)i(guide.)25 b(F)l(or)15
-b(information)i(on)f(the)h(in)o(teractiv)o(e)g(use)75
-379 y(of)e Fk(gnu)g Fp(History)l(,)g(see)g(Chapter)g(1)g([Using)g
-(History)g(In)o(teractiv)o(ely],)h(page)f(1.)75 509 y
-Fn(2.1)33 b(In)n(tro)r(duction)24 b(to)e(History)137
-607 y Fp(Man)o(y)11 b(programs)f(read)h(input)i(from)d(the)i(user)f(a)g
-(line)i(at)e(a)g(time.)19 b(The)12 b Fk(gnu)f Fp(History)g(library)h
-(is)g(able)75 661 y(to)i(k)o(eep)g(trac)o(k)g(of)g(those)g(lines,)i
-(asso)q(ciate)e(arbitrary)g(data)g(with)g(eac)o(h)h(line,)h(and)e
-(utilize)j(information)75 716 y(from)d(previous)i(lines)h(in)f(comp)q
-(osing)g(new)f(ones.)137 784 y(The)f(programmer)f(using)h(the)g
-(History)g(library)g(has)g(a)o(v)m(ailable)h(functions)g(for)e(remem)o
-(b)q(ering)h(lines)75 839 y(on)c(a)g(history)h(list,)g(asso)q(ciating)g
-(arbitrary)f(data)f(with)i(a)f(line,)j(remo)o(ving)d(lines)i(from)d
-(the)i(list,)h(searc)o(hing)75 894 y(through)17 b(the)h(list)g(for)f(a)
-h(line)h(con)o(taining)f(an)g(arbitrary)f(text)g(string,)h(and)g
-(referencing)h(an)o(y)e(line)i(in)75 949 y(the)c(list)i(directly)l(.)22
-b(In)16 b(addition,)g(a)f(history)g Fj(expansion)h Fp(function)h(is)e
-(a)o(v)m(ailable)i(whic)o(h)g(pro)o(vides)f(for)e(a)75
-1003 y(consisten)o(t)h(user)h(in)o(terface)f(across)g(di\013eren)o(t)g
-(programs.)137 1072 y(The)f(user)h(using)f(programs)f(written)h(with)g
-(the)g(History)g(library)h(has)f(the)g(b)q(ene\014t)h(of)e(a)h
-(consisten)o(t)75 1126 y(user)20 b(in)o(terface)f(with)h(a)f(set)h(of)f
-(w)o(ell-kno)o(wn)h(commands)g(for)e(manipulating)k(the)d(text)g(of)g
-(previous)75 1181 y(lines)c(and)f(using)h(that)e(text)g(in)i(new)f
-(commands.)19 b(The)14 b(basic)h(history)e(manipulation)j(commands)d
-(are)75 1236 y(similar)j(to)f(the)g(history)g(substitution)h(pro)o
-(vided)g(b)o(y)g Fo(csh)p Fp(.)137 1304 y(If)f(the)g(programmer)f
-(desires,)h(he)g(can)g(use)g(the)g(Readline)h(library)l(,)g(whic)o(h)f
-(includes)j(some)c(history)75 1359 y(manipulation)j(b)o(y)e(default,)g
-(and)h(has)f(the)g(added)h(adv)m(an)o(tage)f(of)f(command)h(line)i
-(editing.)137 1427 y(Before)i(declaring)i(an)o(y)d(functions)i(using)g
-(an)o(y)f(functionalit)o(y)h(the)f(History)g(library)h(pro)o(vides)f
-(in)75 1482 y(other)14 b(co)q(de,)h(an)f(application)i(writer)e(should)
-i(include)g(the)f(\014le)g Fo(<readline/history.h>)d
-Fp(in)j(an)o(y)f(\014le)75 1537 y(that)d(uses)h(the)h(History)e
-(library's)i(features.)18 b(It)12 b(supplies)i(extern)e(declarations)h
-(for)e(all)i(of)f(the)g(library's)75 1591 y(public)17
-b(functions)f(and)g(v)m(ariables,)g(and)f(declares)h(all)g(of)f(the)h
-(public)h(data)d(structures.)75 1722 y Fn(2.2)33 b(History)22
-b(Storage)137 1819 y Fp(The)16 b(history)f(list)h(is)g(an)f(arra)o(y)f
-(of)g(history)i(en)o(tries.)k(A)15 b(history)g(en)o(try)g(is)h
-(declared)g(as)f(follo)o(ws:)195 1885 y Fo(typedef)23
-b(void)g(*histdata_t;)195 1988 y(typedef)g(struct)g(_hist_entry)f({)243
-2040 y(char)h(*line;)243 2092 y(histdata_t)f(data;)195
-2144 y(})i(HIST_ENTRY;)137 2212 y Fp(The)16 b(history)f(list)h(itself)g
-(migh)o(t)f(therefore)g(b)q(e)h(declared)g(as)195 2277
-y Fo(HIST_ENTRY)22 b(**the_history_list;)137 2345 y Fp(The)16
-b(state)e(of)h(the)g(History)g(library)h(is)g(encapsulated)g(in)o(to)f
-(a)g(single)i(structure:)195 2411 y Fo(/*)219 2462 y(*)24
-b(A)f(structure)g(used)g(to)h(pass)f(around)g(the)h(current)f(state)g
-(of)g(the)h(history.)219 2514 y(*/)195 2566 y(typedef)f(struct)g
-(_hist_state)f({)243 2618 y(HIST_ENTRY)g(**entries;)h(/*)g(Pointer)g
-(to)h(the)f(entries)g(themselves.)g(*/)243 2670 y(int)g(offset;)262
-b(/*)23 b(The)h(location)f(pointer)f(within)h(this)h(array.)f(*/)p
-eop
-%%Page: 6 8
-6 7 bop 75 -58 a Fp(6)1347 b(GNU)15 b(History)g(Library)243
-149 y Fo(int)23 b(length;)262 b(/*)23 b(Number)g(of)h(elements)f
-(within)g(this)g(array.)g(*/)243 201 y(int)g(size;)310
-b(/*)23 b(Number)g(of)h(slots)f(allocated)g(to)g(this)h(array.)f(*/)243
-253 y(int)g(flags;)195 305 y(})h(HISTORY_STATE;)137 372
-y Fp(If)16 b(the)f(\015ags)g(mem)o(b)q(er)g(includes)j
-Fo(HS_STIFLED)p Fp(,)13 b(the)i(history)h(has)f(b)q(een)h(sti\015ed.)75
-498 y Fn(2.3)33 b(History)22 b(F)-6 b(unctions)137 593
-y Fp(This)13 b(section)g(describ)q(es)h(the)e(calling)i(sequence)g(for)
-e(the)g(v)m(arious)h(functions)g(exp)q(orted)f(b)o(y)h(the)f
-Fk(gnu)75 648 y Fp(History)j(library)l(.)75 758 y Fi(2.3.1)30
-b(Initializing)20 b(History)h(and)f(State)g(Managemen)n(t)137
-853 y Fp(This)e(section)g(describ)q(es)h(functions)f(used)g(to)e
-(initialize)21 b(and)c(manage)g(the)g(state)g(of)g(the)g(History)75
-908 y(library)f(when)g(y)o(ou)f(w)o(an)o(t)f(to)g(use)i(the)f(history)g
-(functions)h(in)g(y)o(our)f(program.)1762 1021 y(F)l(unction)-1861
-b Fh(void)20 b Fg(using)p 333 1021 18 3 v 20 w(history)j
-Ff(\()p Fo(void)p Ff(\))195 1075 y Fp(Begin)e(a)f(session)g(in)h(whic)o
-(h)g(the)f(history)g(functions)g(migh)o(t)g(b)q(e)h(used.)34
-b(This)21 b(initializes)i(the)195 1130 y(in)o(teractiv)o(e)16
-b(v)m(ariables.)1762 1243 y(F)l(unction)-1861 b Fh(HISTORY_STATE)21
-b(*)e Fg(history)p 657 1243 V 21 w(get)p 755 1243 V 21
-w(history)p 951 1243 V 21 w(state)j Ff(\()p Fo(void)p
-Ff(\))195 1298 y Fp(Return)15 b(a)g(structure)g(describing)i(the)e
-(curren)o(t)g(state)f(of)h(the)g(input)i(history)l(.)1762
-1411 y(F)l(unction)-1861 b Fh(void)20 b Fg(history)p
-377 1411 V 20 w(set)p 468 1411 V 21 w(history)p 664 1411
-V 21 w(state)j Ff(\()p Fo(HISTORY_STATE)13 b(*state)p
-Ff(\))195 1466 y Fp(Set)i(the)h(state)e(of)h(the)g(history)g(list)h
-(according)g(to)e Fj(state)p Fp(.)75 1575 y Fi(2.3.2)30
-b(History)20 b(List)h(Managemen)n(t)137 1671 y Fp(These)11
-b(functions)h(manage)e(individual)k(en)o(tries)d(on)g(the)g(history)f
-(list,)i(or)f(set)f(parameters)g(managing)75 1725 y(the)15
-b(list)h(itself.)1762 1838 y(F)l(unction)-1861 b Fh(void)20
-b Fg(add)p 294 1838 V 20 w(history)j Ff(\()p Fo(const)14
-b(char)g(*string)p Ff(\))195 1893 y Fp(Place)i Fj(string)i
-Fp(at)d(the)g(end)h(of)e(the)h(history)g(list.)21 b(The)15
-b(asso)q(ciated)g(data)g(\014eld)h(\(if)f(an)o(y\))f(is)i(set)f(to)195
-1948 y Fo(NULL)p Fp(.)1762 2061 y(F)l(unction)-1861 b
-Fh(HIST_ENTRY)21 b(*)e Fg(remo)n(v)n(e)p 584 2061 V 20
-w(history)k Ff(\()p Fo(int)14 b(which)p Ff(\))195 2115
-y Fp(Remo)o(v)o(e)22 b(history)g(en)o(try)h(at)f(o\013set)g
-Fj(whic)o(h)h Fp(from)f(the)h(history)l(.)43 b(The)23
-b(remo)o(v)o(ed)f(elemen)o(t)h(is)195 2170 y(returned)16
-b(so)e(y)o(ou)h(can)h(free)f(the)g(line,)i(data,)d(and)h(con)o(taining)
-h(structure.)1762 2283 y(F)l(unction)-1861 b Fh(HIST_ENTRY)21
-b(*)e Fg(replace)p 580 2283 V 22 w(history)p 777 2283
-V 20 w(en)n(try)24 b Ff(\()p Fo(int)14 b(which,)g(const)h(char)283
-2338 y(*line,)f(histdata_t)g(data)p Ff(\))195 2393 y
-Fp(Mak)o(e)f(the)h(history)g(en)o(try)f(at)g(o\013set)g
-Fj(whic)o(h)i Fp(ha)o(v)o(e)e Fj(line)18 b Fp(and)c Fj(data)p
-Fp(.)19 b(This)14 b(returns)g(the)g(old)g(en)o(try)195
-2448 y(so)19 b(y)o(ou)f(can)i(disp)q(ose)g(of)e(the)i(data.)30
-b(In)20 b(the)f(case)g(of)g(an)g(in)o(v)m(alid)i Fj(whic)o(h)p
-Fp(,)g(a)d Fo(NULL)h Fp(p)q(oin)o(ter)g(is)195 2502 y(returned.)1762
-2615 y(F)l(unction)-1861 b Fh(void)20 b Fg(clear)p 320
-2615 V 21 w(history)j Ff(\()p Fo(void)p Ff(\))195 2670
-y Fp(Clear)15 b(the)h(history)f(list)h(b)o(y)f(deleting)i(all)f(the)f
-(en)o(tries.)p eop
-%%Page: 7 9
-7 8 bop 75 -58 a Fp(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(History)889 b(7)1762 149 y(F)l(unction)-1861 b Fh(void)20
-b Fg(sti\015e)p 320 149 18 3 v 21 w(history)j Ff(\()p
-Fo(int)14 b(max)p Ff(\))195 204 y Fp(Sti\015e)i(the)f(history)h(list,)f
-(remem)o(b)q(ering)h(only)g(the)f(last)g Fj(max)j Fp(en)o(tries.)1762
-302 y(F)l(unction)-1861 b Fh(int)20 b Fg(unsti\015e)p
-358 302 V 21 w(history)i Ff(\()p Fo(void)p Ff(\))195
-357 y Fp(Stop)14 b(sti\015ing)g(the)g(history)l(.)20
-b(This)14 b(returns)f(the)h(previously-set)h(maxim)o(um)f(n)o(um)o(b)q
-(er)g(of)f(history)195 411 y(en)o(tries)h(\(as)e(set)i(b)o(y)f
-Fo(stifle_history\(\))p Fp(\).)k(The)c(v)m(alue)i(is)f(p)q(ositiv)o(e)g
-(if)g(the)g(history)f(w)o(as)f(sti\015ed,)195 466 y(negativ)o(e)j(if)h
-(it)f(w)o(asn't.)1762 564 y(F)l(unction)-1861 b Fh(int)20
-b Fg(history)p 351 564 V 20 w(is)p 409 564 V 21 w(sti\015ed)k
-Ff(\()p Fo(void)p Ff(\))195 619 y Fp(Returns)15 b(non-zero)g(if)h(the)f
-(history)g(is)h(sti\015ed,)g(zero)f(if)g(it)h(is)g(not.)75
-719 y Fi(2.3.3)30 b(Information)19 b(Ab)r(out)i(the)f(History)h(List)
-137 811 y Fp(These)13 b(functions)h(return)f(information)g(ab)q(out)f
-(the)h(en)o(tire)h(history)e(list)i(or)e(individual)k(list)e(en)o
-(tries.)1762 909 y(F)l(unction)-1861 b Fh(HIST_ENTRY)21
-b(**)e Fg(history)p 605 909 V 21 w(list)24 b Ff(\()p
-Fo(void)p Ff(\))195 964 y Fp(Return)15 b(a)g Fo(NULL)f
-Fp(terminated)i(arra)o(y)e(of)h Fo(HIST_ENTRY)f(*)h Fp(whic)o(h)h(is)f
-(the)h(curren)o(t)f(input)h(history)l(.)195 1018 y(Elemen)o(t)g(0)f(of)
-f(this)i(list)g(is)g(the)f(b)q(eginning)i(of)e(time.)20
-b(If)c(there)f(is)h(no)f(history)l(,)g(return)g Fo(NULL)p
-Fp(.)1762 1116 y(F)l(unction)-1861 b Fh(int)20 b Fg(where)p
-325 1116 V 20 w(history)j Ff(\()p Fo(void)p Ff(\))195
-1171 y Fp(Returns)15 b(the)g(o\013set)f(of)h(the)g(curren)o(t)g
-(history)g(elemen)o(t.)1762 1268 y(F)l(unction)-1861
-b Fh(HIST_ENTRY)21 b(*)e Fg(curren)n(t)p 587 1268 V 21
-w(history)k Ff(\()p Fo(void)p Ff(\))195 1323 y Fp(Return)12
-b(the)h(history)f(en)o(try)g(at)g(the)g(curren)o(t)h(p)q(osition,)g(as)
-f(determined)i(b)o(y)e Fo(where_history\(\))p Fp(.)195
-1378 y(If)j(there)h(is)f(no)h(en)o(try)e(there,)h(return)g(a)g
-Fo(NULL)g Fp(p)q(oin)o(ter.)1762 1475 y(F)l(unction)-1861
-b Fh(HIST_ENTRY)21 b(*)e Fg(history)p 579 1475 V 21 w(get)j
-Ff(\()p Fo(int)15 b(offset)p Ff(\))195 1530 y Fp(Return)20
-b(the)h(history)g(en)o(try)f(at)h(p)q(osition)g Fj(o\013set)p
-Fp(,)g(starting)f(from)g Fo(history_base)f Fp(\(see)i(Sec-)195
-1585 y(tion)15 b(2.4)f([History)g(V)l(ariables],)h(page)g(10\).)j(If)d
-(there)g(is)g(no)g(en)o(try)f(there,)h(or)f(if)h Fj(o\013set)g
-Fp(is)g(greater)195 1640 y(than)g(the)g(history)g(length,)h(return)f(a)
-g Fo(NULL)g Fp(p)q(oin)o(ter.)1762 1737 y(F)l(unction)-1861
-b Fh(int)20 b Fg(history)p 351 1737 V 20 w(total)p 487
-1737 V 22 w(b)n(ytes)j Ff(\()p Fo(void)p Ff(\))195 1792
-y Fp(Return)13 b(the)h(n)o(um)o(b)q(er)g(of)g(b)o(ytes)f(that)g(the)h
-(primary)g(history)g(en)o(tries)g(are)g(using.)20 b(This)14
-b(function)195 1847 y(returns)h(the)g(sum)h(of)e(the)i(lengths)f(of)g
-(all)h(the)g(lines)g(in)g(the)g(history)l(.)75 1947 y
-Fi(2.3.4)30 b(Mo)n(ving)21 b(Around)f(the)h(History)g(List)137
-2040 y Fp(These)16 b(functions)g(allo)o(w)f(the)g(curren)o(t)h(index)g
-(in)o(to)f(the)h(history)f(list)h(to)e(b)q(e)i(set)f(or)g(c)o(hanged.)
-1762 2137 y(F)l(unction)-1861 b Fh(int)20 b Fg(history)p
-351 2137 V 20 w(set)p 442 2137 V 21 w(p)r(os)h Ff(\()p
-Fo(int)15 b(pos)p Ff(\))195 2192 y Fp(Set)j(the)h(curren)o(t)f(history)
-g(o\013set)g(to)f Fj(p)q(os)p Fp(,)i(an)f(absolute)h(index)h(in)o(to)e
-(the)g(list.)30 b(Returns)18 b(1)g(on)195 2247 y(success,)d(0)g(if)h
-Fj(p)q(os)h Fp(is)f(less)g(than)f(zero)g(or)g(greater)f(than)h(the)g(n)
-o(um)o(b)q(er)h(of)e(history)i(en)o(tries.)1762 2344
-y(F)l(unction)-1861 b Fh(HIST_ENTRY)21 b(*)e Fg(previous)p
-615 2344 V 20 w(history)k Ff(\()p Fo(void)p Ff(\))195
-2399 y Fp(Bac)o(k)14 b(up)h(the)g(curren)o(t)f(history)g(o\013set)g(to)
-f(the)i(previous)g(history)f(en)o(try)l(,)g(and)h(return)f(a)g(p)q(oin)
-o(ter)195 2454 y(to)h(that)f(en)o(try)l(.)20 b(If)15
-b(there)g(is)h(no)f(previous)h(en)o(try)l(,)f(return)g(a)g
-Fo(NULL)g Fp(p)q(oin)o(ter.)1762 2552 y(F)l(unction)-1861
-b Fh(HIST_ENTRY)21 b(*)e Fg(next)p 514 2552 V 21 w(history)k
-Ff(\()p Fo(void)p Ff(\))195 2606 y Fp(Mo)o(v)o(e)17 b(the)h(curren)o(t)
-f(history)h(o\013set)f(forw)o(ard)f(to)h(the)h(next)g(history)g(en)o
-(try)l(,)g(and)g(return)f(the)h(a)195 2661 y(p)q(oin)o(ter)e(to)e(that)
-h(en)o(try)l(.)k(If)d(there)f(is)h(no)f(next)g(en)o(try)l(,)g(return)g
-(a)g Fo(NULL)g Fp(p)q(oin)o(ter.)p eop
-%%Page: 8 10
-8 9 bop 75 -58 a Fp(8)1347 b(GNU)15 b(History)g(Library)75
-149 y Fi(2.3.5)30 b(Searc)n(hing)21 b(the)f(History)h(List)137
-245 y Fp(These)14 b(functions)g(allo)o(w)g(searc)o(hing)g(of)e(the)i
-(history)f(list)h(for)f(en)o(tries)h(con)o(taining)g(a)f(sp)q(eci\014c)
-i(string.)75 300 y(Searc)o(hing)f(ma)o(y)g(b)q(e)g(p)q(erformed)g(b)q
-(oth)g(forw)o(ard)e(and)i(bac)o(kw)o(ard)f(from)g(the)h(curren)o(t)g
-(history)f(p)q(osition.)75 355 y(The)j(searc)o(h)f(ma)o(y)g(b)q(e)i
-Fj(anc)o(hored)p Fp(,)e(meaning)h(that)f(the)h(string)g(m)o(ust)f(matc)
-o(h)g(at)g(the)h(b)q(eginning)i(of)d(the)75 410 y(history)g(en)o(try)l
-(.)1762 524 y(F)l(unction)-1861 b Fh(int)20 b Fg(history)p
-351 524 18 3 v 20 w(searc)n(h)j Ff(\()p Fo(const)14 b(char)h(*string,)f
-(int)h(direction)p Ff(\))195 578 y Fp(Searc)o(h)g(the)f(history)g(for)g
-Fj(string)p Fp(,)g(starting)g(at)g(the)h(curren)o(t)f(history)g
-(o\013set.)19 b(If)c Fj(direction)g Fp(is)g(less)195
-633 y(than)20 b(0,)g(then)h(the)f(searc)o(h)f(is)i(through)f(previous)g
-(en)o(tries,)i(otherwise)e(through)f(subsequen)o(t)195
-688 y(en)o(tries.)h(If)c Fj(string)j Fp(is)d(found,)f(then)g(the)h
-(curren)o(t)f(history)g(index)h(is)g(set)f(to)g(that)f(history)h(en)o
-(try)l(,)195 743 y(and)i(the)g(v)m(alue)h(returned)f(is)g(the)g
-(o\013set)e(in)j(the)f(line)h(of)e(the)h(en)o(try)g(where)g
-Fj(string)j Fp(w)o(as)c(found.)195 798 y(Otherwise,)g(nothing)f(is)h(c)
-o(hanged,)f(and)h(a)e(-1)h(is)h(returned.)1762 912 y(F)l(unction)-1861
-b Fh(int)20 b Fg(history)p 351 912 V 20 w(searc)n(h)p
-527 912 V 21 w(pre\014x)i Ff(\()p Fo(const)14 b(char)h(*string,)f(int)h
-(direction)p Ff(\))195 966 y Fp(Searc)o(h)20 b(the)h(history)f(for)g
-Fj(string)p Fp(,)h(starting)e(at)h(the)g(curren)o(t)h(history)f
-(o\013set.)34 b(The)20 b(searc)o(h)g(is)195 1021 y(anc)o(hored:)g(matc)
-o(hing)14 b(lines)j(m)o(ust)d(b)q(egin)i(with)f Fj(string)p
-Fp(.)20 b(If)15 b Fj(direction)h Fp(is)f(less)g(than)g(0,)f(then)h(the)
-195 1076 y(searc)o(h)g(is)i(through)e(previous)h(en)o(tries,)g
-(otherwise)g(through)f(subsequen)o(t)h(en)o(tries.)22
-b(If)16 b Fj(string)j Fp(is)195 1131 y(found,)e(then)g(the)f(curren)o
-(t)h(history)f(index)i(is)f(set)f(to)g(that)g(en)o(try)l(,)g(and)h(the)
-f(return)h(v)m(alue)h(is)f(0.)195 1186 y(Otherwise,)f(nothing)f(is)h(c)
-o(hanged,)f(and)h(a)e(-1)h(is)h(returned.)1762 1300 y(F)l(unction)-1861
-b Fh(int)20 b Fg(history)p 351 1300 V 20 w(searc)n(h)p
-527 1300 V 21 w(p)r(os)h Ff(\()p Fo(const)14 b(char)h(*string,)f(int)h
-(direction,)f(int)283 1355 y(pos)p Ff(\))195 1409 y Fp(Searc)o(h)j(for)
-g Fj(string)k Fp(in)d(the)f(history)g(list,)h(starting)e(at)h
-Fj(p)q(os)p Fp(,)g(an)g(absolute)h(index)g(in)o(to)f(the)h(list.)195
-1464 y(If)g Fj(direction)i Fp(is)e(negativ)o(e,)h(the)f(searc)o(h)g
-(pro)q(ceeds)g(bac)o(kw)o(ard)g(from)f Fj(p)q(os)p Fp(,)h(otherwise)h
-(forw)o(ard.)195 1519 y(Returns)j(the)g(absolute)g(index)h(of)f(the)g
-(history)g(elemen)o(t)h(where)f Fj(string)k Fp(w)o(as)21
-b(found,)j(or)d(-1)195 1574 y(otherwise.)75 1684 y Fi(2.3.6)30
-b(Managing)20 b(the)g(History)h(File)137 1780 y Fp(The)16
-b(History)g(library)h(can)e(read)h(the)g(history)g(from)f(and)h(write)g
-(it)g(to)f(a)h(\014le.)22 b(This)17 b(section)f(do)q(cu-)75
-1835 y(men)o(ts)f(the)g(functions)h(for)f(managing)g(a)g(history)g
-(\014le.)1762 1949 y(F)l(unction)-1861 b Fh(int)20 b
-Fg(read)p 286 1949 V 20 w(history)i Ff(\()p Fo(const)15
-b(char)f(*filename)p Ff(\))195 2003 y Fp(Add)h(the)g(con)o(ten)o(ts)f
-(of)h Fj(\014lename)j Fp(to)c(the)h(history)g(list,)g(a)g(line)h(at)f
-(a)f(time.)20 b(If)15 b Fj(\014lename)k Fp(is)c Fo(NULL)p
-Fp(,)195 2058 y(then)h(read)f(from)f(`)p Fo(~/.history)p
-Fp('.)k(Returns)d(0)f(if)i(successful,)g(or)f Fo(errno)f
-Fp(if)i(not.)1762 2172 y(F)l(unction)-1861 b Fh(int)20
-b Fg(read)p 286 2172 V 20 w(history)p 481 2172 V 20 w(range)i
-Ff(\()p Fo(const)14 b(char)h(*filename,)f(int)h(from,)f(int)h(to)p
-Ff(\))195 2227 y Fp(Read)f(a)f(range)h(of)f(lines)j(from)d
-Fj(\014lename)p Fp(,)i(adding)g(them)f(to)f(the)h(history)g(list.)20
-b(Start)13 b(reading)i(at)195 2282 y(line)g Fj(from)d
-Fp(and)h(end)h(at)f Fj(to)p Fp(.)18 b(If)c Fj(from)e
-Fp(is)i(zero,)f(start)f(at)g(the)h(b)q(eginning.)22 b(If)13
-b Fj(to)i Fp(is)e(less)h(than)f Fj(from)p Fp(,)195 2337
-y(then)i(read)g(un)o(til)i(the)e(end)g(of)g(the)g(\014le.)21
-b(If)15 b Fj(\014lename)k Fp(is)d Fo(NULL)p Fp(,)e(then)h(read)g(from)f
-(`)p Fo(~/.history)p Fp('.)195 2392 y(Returns)h(0)g(if)g(successful,)h
-(or)f Fo(errno)g Fp(if)g(not.)1762 2506 y(F)l(unction)-1861
-b Fh(int)20 b Fg(write)p 304 2506 V 22 w(history)i Ff(\()p
-Fo(const)15 b(char)f(*filename)p Ff(\))195 2560 y Fp(W)l(rite)k(the)f
-(curren)o(t)g(history)h(to)f Fj(\014lename)p Fp(,)h(o)o(v)o(erwriting)f
-Fj(\014lename)k Fp(if)d(necessary)l(.)27 b(If)18 b Fj(\014lename)195
-2615 y Fp(is)f Fo(NULL)p Fp(,)e(then)h(write)h(the)f(history)g(list)h
-(to)e(`)p Fo(~/.history)p Fp('.)21 b(Returns)16 b(0)f(on)h(success,)h
-(or)f Fo(errno)195 2670 y Fp(on)f(a)g(read)g(or)g(write)g(error.)p
-eop
-%%Page: 9 11
-9 10 bop 75 -58 a Fp(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(History)889 b(9)1762 149 y(F)l(unction)-1861 b Fh(int)20
-b Fg(app)r(end)p 360 149 18 3 v 19 w(history)j Ff(\()p
-Fo(int)14 b(nelements,)g(const)h(char)f(*filename)p Ff(\))195
-204 y Fp(App)q(end)19 b(the)e(last)g Fj(nelemen)o(ts)k
-Fp(of)16 b(the)i(history)f(list)h(to)f Fj(\014lename)p
-Fp(.)27 b(If)18 b Fj(\014lename)j Fp(is)d Fo(NULL)p Fp(,)f(then)195
-259 y(app)q(end)f(to)f(`)p Fo(~/.history)p Fp('.)j(Returns)c(0)h(on)g
-(success,)h(or)e Fo(errno)h Fp(on)g(a)g(read)g(or)g(write)g(error.)1762
-404 y(F)l(unction)-1861 b Fh(int)20 b Fg(history)p 351
-404 V 20 w(truncate)p 582 404 V 21 w(\014le)k Ff(\()p
-Fo(const)14 b(char)h(*filename,)e(int)i(nlines)p Ff(\))195
-459 y Fp(T)l(runcate)k(the)h(history)f(\014le)h Fj(\014lename)p
-Fp(,)h(lea)o(ving)f(only)g(the)f(last)g Fj(nlines)k Fp(lines.)34
-b(If)20 b Fj(\014lename)i Fp(is)195 513 y Fo(NULL)p Fp(,)14
-b(then)i(`)p Fo(~/.history)p Fp(')d(is)j(truncated.)j(Returns)c(0)g(on)
-g(success,)h(or)e Fo(errno)h Fp(on)g(failure.)75 644
-y Fi(2.3.7)30 b(History)20 b(Expansion)137 750 y Fp(These)c(functions)g
-(implemen)o(t)g(history)f(expansion.)1762 895 y(F)l(unction)-1861
-b Fh(int)20 b Fg(history)p 351 895 V 20 w(expand)j Ff(\()p
-Fo(char)14 b(*string,)g(char)h(**output)p Ff(\))195 949
-y Fp(Expand)j Fj(string)p Fp(,)f(placing)h(the)g(result)f(in)o(to)g
-Fj(output)p Fp(,)h(a)e(p)q(oin)o(ter)i(to)f(a)g(string)g(\(see)g
-(Section)h(1.1)195 1004 y([History)d(In)o(teraction],)f(page)h(1\).)20
-b(Returns:)195 1098 y Fo(0)216 b Fp(If)19 b(no)g(expansions)g(to)q(ok)f
-(place)i(\(or,)e(if)i(the)e(only)i(c)o(hange)e(in)i(the)f(text)f(w)o
-(as)g(the)435 1152 y(remo)o(v)m(al)d(of)g(escap)q(e)h(c)o(haracters)e
-(preceding)i(the)f(history)g(expansion)h(c)o(haracter\);)195
-1241 y Fo(1)216 b Fp(if)16 b(expansions)g(did)g(tak)o(e)e(place;)195
-1330 y Fo(-1)192 b Fp(if)16 b(there)f(w)o(as)f(an)h(error)g(in)h
-(expansion;)195 1419 y Fo(2)216 b Fp(if)14 b(the)g(returned)g(line)i
-(should)f(b)q(e)f(displa)o(y)o(ed,)h(but)f(not)f(executed,)i(as)e(with)
-h(the)g Fo(:p)435 1474 y Fp(mo)q(di\014er)i(\(see)f(Section)h(1.1.3)e
-([Mo)q(di\014ers],)h(page)g(2\).)195 1568 y(If)g(an)h(error)e(o)q
-(curred)i(in)g(expansion,)f(then)h Fj(output)g Fp(con)o(tains)f(a)g
-(descriptiv)o(e)i(error)d(message.)1762 1713 y(F)l(unction)-1861
-b Fh(char)20 b(*)f Fg(get)p 324 1713 V 21 w(history)p
-520 1713 V 20 w(ev)n(en)n(t)25 b Ff(\()p Fo(const)14
-b(char)h(*string,)f(int)g(*cindex,)g(int)283 1767 y(qchar)p
-Ff(\))195 1822 y Fp(Returns)22 b(the)h(text)f(of)h(the)f(history)h(ev)o
-(en)o(t)g(b)q(eginning)h(at)f Fj(string)j Fo(+)d Fj(*cindex)p
-Fp(.)43 b Fj(*cindex)27 b Fp(is)195 1877 y(mo)q(di\014ed)16
-b(to)e(p)q(oin)o(t)h(to)f(after)g(the)h(ev)o(en)o(t)f(sp)q(eci\014er.)
-22 b(A)o(t)14 b(function)h(en)o(try)l(,)g Fj(cindex)k
-Fp(p)q(oin)o(ts)c(to)f(the)195 1932 y(index)19 b(in)o(to)f
-Fj(string)k Fp(where)c(the)g(history)g(ev)o(en)o(t)g(sp)q
-(eci\014cation)h(b)q(egins.)30 b Fj(qc)o(har)21 b Fp(is)d(a)g(c)o
-(haracter)195 1987 y(that)13 b(is)h(allo)o(w)o(ed)g(to)e(end)i(the)g
-(ev)o(en)o(t)f(sp)q(eci\014cation)j(in)e(addition)g(to)f(the)h
-(\\normal")f(terminating)195 2041 y(c)o(haracters.)1762
-2186 y(F)l(unction)-1861 b Fh(char)20 b(**)f Fg(history)p
-448 2186 V 21 w(tok)n(enize)25 b Ff(\()p Fo(const)14
-b(char)h(*string)p Ff(\))195 2241 y Fp(Return)g(an)g(arra)o(y)g(of)g
-(tok)o(ens)g(parsed)g(out)g(of)g Fj(string)p Fp(,)g(m)o(uc)o(h)h(as)f
-(the)g(shell)i(migh)o(t.)k(The)15 b(tok)o(ens)195 2296
-y(are)h(split)h(on)e(the)h(c)o(haracters)g(in)g(the)g
-Fj(history)p 1007 2296 14 2 v 17 w(w)o(ord)p 1122 2296
-V 15 w(delimiters)k Fp(v)m(ariable,)d(and)f(shell)i(quoting)195
-2351 y(con)o(v)o(en)o(tions)d(are)g(ob)q(ey)o(ed.)1762
-2496 y(F)l(unction)-1861 b Fh(char)20 b(*)f Fg(history)p
-422 2496 18 3 v 21 w(arg)p 524 2496 V 19 w(extract)24
-b Ff(\()p Fo(int)14 b(first,)h(int)g(last,)f(const)g(char)283
-2550 y(*string)p Ff(\))195 2605 y Fp(Extract)19 b(a)h(string)g(segmen)o
-(t)g(consisting)h(of)f(the)g Fj(\014rst)h Fp(through)f
-Fj(last)h Fp(argumen)o(ts)e(presen)o(t)h(in)195 2660
-y Fj(string)p Fp(.)g(Argumen)o(ts)15 b(are)f(split)j(using)f
-Fo(history_tokenize)p Fp(.)p eop
-%%Page: 10 12
-10 11 bop 75 -58 a Fp(10)1324 b(GNU)15 b(History)g(Library)75
-149 y Fn(2.4)33 b(History)22 b(V)-6 b(ariables)137 251
-y Fp(This)18 b(section)f(describ)q(es)i(the)e(externally-visible)k(v)m
-(ariables)d(exp)q(orted)f(b)o(y)g(the)g Fk(gnu)g Fp(History)g(Li-)75
-306 y(brary)l(.)1773 438 y(V)l(ariable)-1861 b Fh(int)20
-b Fg(history)p 351 438 18 3 v 20 w(base)195 493 y Fp(The)15
-b(logical)i(o\013set)d(of)h(the)g(\014rst)g(en)o(try)g(in)h(the)f
-(history)g(list.)1773 625 y(V)l(ariable)-1861 b Fh(int)20
-b Fg(history)p 351 625 V 20 w(length)195 680 y Fp(The)15
-b(n)o(um)o(b)q(er)h(of)f(en)o(tries)g(curren)o(tly)h(stored)f(in)h(the)
-f(history)g(list.)1773 812 y(V)l(ariable)-1861 b Fh(int)20
-b Fg(history)p 351 812 V 20 w(max)p 478 812 V 20 w(en)n(tries)195
-867 y Fp(The)j(maxim)o(um)g(n)o(um)o(b)q(er)g(of)g(history)g(en)o
-(tries.)43 b(This)24 b(m)o(ust)e(b)q(e)i(c)o(hanged)f(using)h
-Fo(stifle_)195 922 y(history\(\))p Fp(.)1773 1054 y(V)l(ariable)-1861
-b Fh(char)20 b Fg(history)p 377 1054 V 20 w(expansion)p
-644 1054 V 21 w(c)n(har)195 1109 y Fp(The)e(c)o(haracter)f(that)g(in)o
-(tro)q(duces)h(a)f(history)h(ev)o(en)o(t.)27 b(The)18
-b(default)g(is)g(`)p Fo(!)p Fp('.)26 b(Setting)18 b(this)g(to)f(0)195
-1164 y(inhibits)g(history)f(expansion.)1773 1296 y(V)l(ariable)-1861
-b Fh(char)20 b Fg(history)p 377 1296 V 20 w(subst)p 529
-1296 V 20 w(c)n(har)195 1351 y Fp(The)h(c)o(haracter)e(that)h(in)o(v)o
-(ok)o(es)g(w)o(ord)g(substitution)h(if)g(found)f(at)g(the)h(start)e(of)
-h(a)g(line.)37 b(The)195 1406 y(default)16 b(is)f(`)p
-Fo(^)p Fp('.)1773 1538 y(V)l(ariable)-1861 b Fh(char)20
-b Fg(history)p 377 1538 V 20 w(commen)n(t)p 627 1538
-V 19 w(c)n(har)195 1593 y Fp(During)f(tok)o(enization,)h(if)f(this)h(c)
-o(haracter)e(is)h(seen)h(as)e(the)h(\014rst)g(c)o(haracter)f(of)g(a)h
-(w)o(ord,)g(then)195 1648 y(it)j(and)g(all)g(subsequen)o(t)h(c)o
-(haracters)d(up)j(to)e(a)g(newline)i(are)f(ignored,)h(suppressing)g
-(history)195 1702 y(expansion)16 b(for)f(the)g(remainder)h(of)f(the)g
-(line.)21 b(This)16 b(is)g(disabled)h(b)o(y)e(default.)1773
-1835 y(V)l(ariable)-1861 b Fh(char)20 b(*)f Fg(history)p
-422 1835 V 21 w(w)n(ord)p 567 1835 V 20 w(delimiters)195
-1889 y Fp(The)14 b(c)o(haracters)f(that)g(separate)g(tok)o(ens)h(for)f
-Fo(history_tokenize\(\))p Fp(.)k(The)d(default)g(v)m(alue)h(is)f
-Fo(")195 1944 y(\\t\\n\(\)<>;&|")p Fp(.)1773 2077 y(V)l(ariable)-1861
-b Fh(char)20 b(*)f Fg(history)p 422 2077 V 21 w(no)p
-504 2077 V 20 w(expand)p 704 2077 V 20 w(c)n(hars)195
-2131 y Fp(The)c(list)h(of)e(c)o(haracters)g(whic)o(h)i(inhibit)h
-(history)e(expansion)h(if)f(found)h(immediately)g(follo)o(wing)195
-2186 y Fj(history)p 336 2186 14 2 v 16 w(expansion)p
-547 2186 V 18 w(c)o(har)p Fp(.)j(The)d(default)f(is)h(space,)f(tab,)g
-(newline,)h(carriage)f(return,)g(and)h(`)p Fo(=)p Fp('.)1773
-2318 y(V)l(ariable)-1861 b Fh(char)20 b(*)f Fg(history)p
-422 2318 18 3 v 21 w(searc)n(h)p 599 2318 V 20 w(delimiter)p
-843 2318 V 23 w(c)n(hars)195 2373 y Fp(The)13 b(list)h(of)f(additional)
-h(c)o(haracters)e(whic)o(h)i(can)g(delimit)g(a)f(history)g(searc)o(h)g
-(string,)g(in)h(addition)195 2428 y(to)h(space,)g(T)l(AB,)g(`)p
-Fo(:)p Fp(')f(and)h(`)p Fo(?)p Fp(')g(in)h(the)f(case)g(of)g(a)g
-(substring)g(searc)o(h.)20 b(The)c(default)f(is)h(empt)o(y)l(.)1773
-2560 y(V)l(ariable)-1861 b Fh(int)20 b Fg(history)p 351
-2560 V 20 w(quotes)p 533 2560 V 21 w(inhibit)p 717 2560
-V 23 w(expansion)195 2615 y Fp(If)15 b(non-zero,)f(single-quoted)j(w)o
-(ords)c(are)i(not)f(scanned)h(for)f(the)h(history)g(expansion)g(c)o
-(haracter.)195 2670 y(The)g(default)h(v)m(alue)h(is)e(0.)p
-eop
-%%Page: 11 13
-11 12 bop 75 -58 a Fp(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(History)867 b(11)1773 149 y(V)l(ariable)-1861 b Fh(rl_linebuf_func_t)
-22 b(*)d Fg(history)p 762 149 18 3 v 21 w(inhibit)p 946
-149 V 23 w(expansion)p 1216 149 V 20 w(function)195 204
-y Fp(This)e(should)h(b)q(e)f(set)g(to)f(the)g(address)h(of)f(a)h
-(function)g(that)f(tak)o(es)g(t)o(w)o(o)f(argumen)o(ts:)22
-b(a)17 b Fo(char)d(*)195 259 y Fp(\()p Fj(string)t Fp(\))e(and)i(an)f
-Fo(int)g Fp(index)i(in)o(to)e(that)f(string)i(\()p Fj(i)r
-Fp(\).)19 b(It)14 b(should)g(return)f(a)g(non-zero)h(v)m(alue)g(if)g
-(the)195 314 y(history)h(expansion)g(starting)f(at)g
-Fj(string[i])i Fp(should)g(not)e(b)q(e)h(p)q(erformed;)g(zero)f(if)h
-(the)g(expansion)195 369 y(should)i(b)q(e)g(done.)22
-b(It)16 b(is)h(in)o(tended)g(for)e(use)i(b)o(y)f(applications)h(lik)o
-(e)g(Bash)f(that)g(use)g(the)g(history)195 423 y(expansion)g(c)o
-(haracter)f(for)f(additional)j(purp)q(oses.)j(By)c(default,)f(this)h(v)
-m(ariable)g(is)g(set)f(to)f Fo(NULL)p Fp(.)75 543 y Fn(2.5)33
-b(History)22 b(Programming)h(Example)137 637 y Fp(The)16
-b(follo)o(wing)g(program)e(demonstrates)g(simple)j(use)e(of)g(the)g
-Fk(gnu)g Fp(History)g(Library)l(.)195 698 y Fo(#include)23
-b(<stdio.h>)195 750 y(#include)g(<readline/history.h>)195
-854 y(main)g(\(argc,)g(argv\))314 906 y(int)h(argc;)314
-958 y(char)g(**argv;)195 1010 y({)243 1061 y(char)f(line[1024],)f(*t;)
-243 1113 y(int)h(len,)g(done)h(=)g(0;)243 1217 y(line[0])f(=)g(0;)243
-1321 y(using_history)f(\(\);)243 1373 y(while)h(\(!done\))290
-1425 y({)338 1477 y(printf)g(\("history$)g("\);)338 1528
-y(fflush)g(\(stdout\);)338 1580 y(t)h(=)g(fgets)f(\(line,)g(sizeof)g
-(\(line\))g(-)h(1,)f(stdin\);)338 1632 y(if)h(\(t)f(&&)h(*t\))386
-1684 y({)434 1736 y(len)f(=)h(strlen)f(\(t\);)434 1788
-y(if)g(\(t[len)g(-)h(1])g(==)f('\\n'\))481 1840 y(t[len)h(-)f(1])h(=)g
-('\\0';)386 1892 y(})338 1995 y(if)g(\(!t\))386 2047
-y(strcpy)f(\(line,)g("quit"\);)338 2151 y(if)h(\(line[0]\))386
-2203 y({)434 2255 y(char)f(*expansion;)434 2307 y(int)g(result;)434
-2411 y(result)g(=)g(history_expand)f(\(line,)h(&expansion\);)434
-2462 y(if)g(\(result\))481 2514 y(fprintf)g(\(stderr,)g("\045s\\n",)g
-(expansion\);)434 2618 y(if)g(\(result)g(<)h(0)g(||)f(result)g(==)h
-(2\))481 2670 y({)p eop
-%%Page: 12 14
-12 13 bop 75 -58 a Fp(12)1324 b(GNU)15 b(History)g(Library)529
-149 y Fo(free)23 b(\(expansion\);)529 201 y(continue;)481
-253 y(})434 357 y(add_history)f(\(expansion\);)434 409
-y(strncpy)h(\(line,)g(expansion,)f(sizeof)h(\(line\))g(-)h(1\);)434
-461 y(free)f(\(expansion\);)386 513 y(})338 616 y(if)h(\(strcmp)f
-(\(line,)g("quit"\))g(==)g(0\))386 668 y(done)g(=)h(1;)338
-720 y(else)f(if)h(\(strcmp)f(\(line,)g("save"\))g(==)h(0\))386
-772 y(write_history)e(\("history_file"\);)338 824 y(else)h(if)h
-(\(strcmp)f(\(line,)g("read"\))g(==)h(0\))386 876 y(read_history)e
-(\("history_file"\);)338 928 y(else)h(if)h(\(strcmp)f(\(line,)g
-("list"\))g(==)h(0\))386 980 y({)434 1032 y(register)e(HIST_ENTRY)h
-(**the_list;)434 1083 y(register)f(int)i(i;)434 1187
-y(the_list)e(=)i(history_list)e(\(\);)434 1239 y(if)h(\(the_list\))481
-1291 y(for)h(\(i)f(=)h(0;)g(the_list[i];)e(i++\))529
-1343 y(printf)h(\("\045d:)g(\045s\\n",)g(i)h(+)g(history_base,)e
-(the_list[i]->line\);)386 1395 y(})338 1447 y(else)h(if)h(\(strncmp)f
-(\(line,)g("delete",)g(6\))g(==)h(0\))386 1499 y({)434
-1550 y(int)f(which;)434 1602 y(if)g(\(\(sscanf)g(\(line)g(+)h(6,)f
-("\045d",)h(&which\)\))e(==)i(1\))481 1654 y({)529 1706
-y(HIST_ENTRY)f(*entry)g(=)g(remove_history)f(\(which\);)529
-1758 y(if)i(\(!entry\))577 1810 y(fprintf)f(\(stderr,)f("No)i(such)f
-(entry)g(\045d\\n",)g(which\);)529 1862 y(else)577 1914
-y({)625 1966 y(free)g(\(entry->line\);)625 2017 y(free)g(\(entry\);)577
-2069 y(})481 2121 y(})434 2173 y(else)481 2225 y({)529
-2277 y(fprintf)g(\(stderr,)g("non-numeric)f(arg)h(given)h(to)f
-(`delete'\\n"\);)481 2329 y(})386 2381 y(})290 2433 y(})195
-2484 y(})p eop
-%%Page: 13 15
-13 14 bop 75 -58 a Fp(App)q(endix)17 b(A:)e(Concept)g(Index)1196
-b(13)75 149 y Fl(App)r(endix)25 b(A)41 b(Concept)27 b(Index)75
-321 y Fn(A)75 383 y Fe(anc)o(hored)14 b(searc)o(h)s Fd(.)8
-b(.)e(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)16
-b Fe(8)75 507 y Fn(E)75 568 y Fe(ev)o(en)o(t)d(designators)g
-Fd(.)6 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)23 b
-Fe(1)1012 321 y Fn(H)1012 431 y Fe(history)15 b(ev)o(en)o(ts)d
-Fd(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)24
-b Fe(1)1012 500 y(history)15 b(expansion)8 b Fd(.)g(.)e(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)21 b Fe(1)1012 568 y(History)14 b(Searc)o(hing)6
-b Fd(.)j(.)d(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)19 b
-Fe(8)p eop
-%%Page: 14 16
-14 15 bop 75 -58 a Fp(14)1324 b(GNU)15 b(History)g(Library)p
-eop
-%%Page: 15 17
-15 16 bop 75 -58 a Fp(App)q(endix)17 b(B:)e(F)l(unction)h(and)g(V)l
-(ariable)g(Index)919 b(15)75 149 y Fl(App)r(endix)25
-b(B)41 b(F)-7 b(unction)26 b(and)h(V)-7 b(ariable)26
-b(Index)75 321 y Fn(A)75 382 y Fc(add_histor)o(y)8 b
-Fd(.)e(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)23
-b Fe(6)75 428 y Fc(append_his)o(to)o(ry)8 b Fd(.)s(.)f(.)f(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)21 b Fe(9)75 557 y Fn(C)75 618
-y Fc(clear_hist)o(or)o(y)6 b Fd(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)22 b Fe(6)75 664 y Fc(current_hi)o(st)o(ory)7
-b Fd(.)s(.)f(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)20 b
-Fe(7)75 793 y Fn(G)75 854 y Fc(get_histor)o(y_)o(eve)o(nt)5
-b Fd(.)t(.)h(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)19 b Fe(9)75
-984 y Fn(H)75 1044 y Fc(history_ar)o(g_)o(ext)o(ra)o(ct)5
-b Fd(.)s(.)h(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)18 b Fe(9)75 1090 y Fc(history_ba)o(se)
-6 b Fd(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)22
-b Fe(10)75 1136 y Fc(history_co)o(mm)o(ent)o(_c)o(har)s
-Fd(.)s(.)6 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)16 b Fe(10)75 1182 y Fc(history_ex)o(pa)o(nd)8
-b Fd(.)s(.)f(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)21
-b Fe(9)75 1227 y Fc(history_ex)o(pa)o(nsi)o(on)o(_ch)o(ar)8
-b Fd(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)24 b Fe(10)75 1273 y Fc(history_ge)o(t)8
-b Fd(.)e(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)23
-b Fe(7)75 1319 y Fc(history_ge)o(t_)o(his)o(to)o(ry_)o(sta)o(te)6
-b Fd(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)22 b Fe(6)75 1364 y Fc(history_in)o(hi)o(bit)o(_e)o(xpa)o(nsi)o(on)
-o(_fu)o(nc)o(tio)o(n)9 b Fd(.)d(.)g(.)g(.)g(.)g(.)h(.)24
-b Fe(11)75 1410 y Fc(history_is)o(_s)o(tif)o(le)o(d)6
-b Fd(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)18 b Fe(7)75 1456
-y Fc(history_le)o(ng)o(th)8 b Fd(.)s(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)21 b Fe(10)75 1501 y Fc(history_li)o(st)6 b Fd(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)23 b Fe(7)75
-1547 y Fc(history_ma)o(x_)o(ent)o(ri)o(es)t Fd(.)s(.)6
-b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)17 b Fe(10)75 1593 y Fc(history_no)o(_e)o(xpa)o(nd)o
-(_ch)o(ars)7 b Fd(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)g(.)h(.)23 b Fe(10)75 1638 y Fc(history_qu)o(ot)o(es_)o
-(in)o(hib)o(it_)o(ex)o(pan)o(si)o(on)t Fd(.)s(.)6 b(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)17 b Fe(10)75 1684 y Fc(history_se)o(ar)o(ch)8
-b Fd(.)s(.)f(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)21
-b Fe(8)75 1730 y Fc(history_se)o(ar)o(ch_)o(de)o(lim)o(ite)o(r_)o(cha)o
-(rs)5 b Fd(.)s(.)h(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)18
-b Fe(10)75 1776 y Fc(history_se)o(ar)o(ch_)o(po)o(s)6
-b Fd(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)18 b Fe(8)75 1821
-y Fc(history_se)o(ar)o(ch_)o(pr)o(efi)o(x)s Fd(.)t(.)6
-b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)16 b Fe(8)75 1867 y Fc(history_se)o(t_)o(his)o(to)o(ry_)
-o(sta)o(te)6 b Fd(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)22 b Fe(6)75 1913 y Fc(history_se)o(t_)o(pos)7
-b Fd(.)s(.)f(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)20 b
-Fe(7)1012 321 y Fc(history_sub)o(st)o(_ch)o(ar)t Fd(.)t(.)6
-b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)g(.)19 b Fe(10)1012 368 y Fc(history_tok)o(en)o(ize)
-6 b Fd(.)t(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)20 b Fe(9)1012
-414 y Fc(history_tot)o(al)o(_by)o(te)o(s)5 b Fd(.)s(.)h(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)18 b Fe(7)1012 460 y Fc(history_tru)o(nc)o(ate)o(_f)o(ile)s
-Fd(.)s(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)17 b Fe(9)1012 507 y Fc(history_wor)o(d_)o(del)
-o(im)o(ite)o(rs)7 b Fd(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)24 b Fe(10)1012 640 y Fn(N)1012
-702 y Fc(next_histor)o(y)7 b Fd(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)g(.)h(.)f(.)23 b Fe(7)1012 836 y Fn(P)1012 898 y
-Fc(previous_hi)o(st)o(ory)6 b Fd(.)t(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)20 b Fe(7)1012 1031 y Fn(R)1012 1094 y Fc(read_histor)o(y)7
-b Fd(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)23
-b Fe(8)1012 1140 y Fc(read_histor)o(y_)o(ran)o(ge)5 b
-Fd(.)s(.)h(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)19 b Fe(8)1012 1186
-y Fc(remove_hist)o(or)o(y)9 b Fd(.)s(.)d(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)22 b Fe(6)1012 1233 y Fc(replace_his)o(to)o(ry_)o(en)o(try)s
-Fd(.)s(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)17 b Fe(6)1012 1366 y Fn(S)1012
-1429 y Fc(stifle_hist)o(or)o(y)9 b Fd(.)s(.)d(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)22 b Fe(7)1012 1562 y Fn(U)1012 1624
-y Fc(unstifle_hi)o(st)o(ory)6 b Fd(.)t(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)20 b Fe(7)1012 1671 y Fc(using_histo)o(ry)6 b Fd(.)g(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)22 b Fe(6)1012 1804
-y Fn(W)1012 1866 y Fc(where_histo)o(ry)6 b Fd(.)g(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)h(.)22 b Fe(7)1012 1913 y Fc(write_histo)o(ry)6
-b Fd(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)22
-b Fe(8)p eop
-%%Page: 16 18
-16 17 bop 75 -58 a Fp(16)1324 b(GNU)15 b(History)g(Library)p
-eop
-%%Page: -1 19
--1 18 bop 1862 -58 a Fp(i)75 149 y Fl(T)-7 b(able)27
-b(of)f(Con)n(ten)n(ts)75 320 y Fn(1)67 b(Using)22 b(History)h(In)n
-(teractiv)n(ely)9 b Fb(.)k(.)d(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)h(.)31 b Fn(1)224 389 y Fp(1.1)45 b(History)15
-b(Expansion)5 b Fa(.)j(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)19 b Fp(1)374 444 y(1.1.1)44
-b(Ev)o(en)o(t)14 b(Designators)e Fa(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)26 b Fp(1)374 499 y(1.1.2)44 b(W)l(ord)15
-b(Designators)5 b Fa(.)h(.)i(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)19 b Fp(2)374 553 y(1.1.3)44 b(Mo)q(di\014ers)t Fa(.)8
-b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)19 b Fp(2)75 675 y Fn(2)67 b(Programming)23
-b(with)g(GNU)f(History)16 b Fb(.)10 b(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f
-(.)g(.)38 b Fn(5)224 743 y Fp(2.1)45 b(In)o(tro)q(duction)16
-b(to)f(History)10 b Fa(.)d(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)24 b Fp(5)224 798 y(2.2)45 b(History)15
-b(Storage)c Fa(.)d(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)26 b Fp(5)224 853
-y(2.3)45 b(History)15 b(F)l(unctions)d Fa(.)c(.)f(.)h(.)f(.)h(.)f(.)h
-(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)26
-b Fp(6)374 907 y(2.3.1)44 b(Initializing)18 b(History)d(and)h(State)e
-(Managemen)o(t)g Fa(.)7 b(.)h(.)g(.)f(.)h(.)f(.)29 b
-Fp(6)374 962 y(2.3.2)44 b(History)15 b(List)h(Managemen)o(t)d
-Fa(.)7 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)h(.)f(.)h(.)f(.)29 b Fp(6)374 1017 y(2.3.3)44
-b(Information)15 b(Ab)q(out)g(the)h(History)f(List)c
-Fa(.)d(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)26
-b Fp(7)374 1072 y(2.3.4)44 b(Mo)o(ving)15 b(Around)g(the)g(History)g
-(List)c Fa(.)d(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)25 b Fp(7)374 1127 y(2.3.5)44 b(Searc)o(hing)16
-b(the)f(History)g(List)7 b Fa(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)22
-b Fp(8)374 1181 y(2.3.6)44 b(Managing)15 b(the)g(History)g(File)6
-b Fa(.)i(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)20 b Fp(8)374 1236 y(2.3.7)44
-b(History)15 b(Expansion)9 b Fa(.)f(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)24 b Fp(9)224 1291 y(2.4)45 b(History)15 b(V)l(ariables)6
-b Fa(.)i(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)21 b Fp(10)224 1346 y(2.5)45 b(History)15
-b(Programming)f(Example)7 b Fa(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h
-(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)22
-b Fp(11)75 1467 y Fn(App)r(endix)i(A)67 b(Concept)22
-b(Index)17 b Fb(.)10 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)h(.)f(.)g(.)38 b Fn(13)75 1602 y(App)r(endix)24 b(B)67
-b(F)-6 b(unction)25 b(and)e(V)-6 b(ariable)24 b(Index)16
-b Fb(.)10 b(.)g(.)g(.)38 b Fn(15)p eop
-%%Page: -2 20
--2 19 bop 75 -58 a Fp(ii)1346 b(GNU)15 b(History)g(Library)p
-eop
-%%Trailer
-end
-userdict /end-hook known{end-hook}if
-%%EOF
diff --git a/readline-doc-4.3/doc/history_3.ps b/readline-doc-4.3/doc/history_3.ps
deleted file mode 100644
index f5231a5..0000000
--- a/readline-doc-4.3/doc/history_3.ps
+++ /dev/null
@@ -1,800 +0,0 @@
-%!PS-Adobe-3.0
-%%Creator: groff version 1.16.1
-%%CreationDate: Mon Mar 18 10:17:27 2002
-%%DocumentNeededResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%DocumentSuppliedResources: procset grops 1.16 1
-%%Pages: 7
-%%PageOrder: Ascend
-%%Orientation: Portrait
-%%EndComments
-%%BeginProlog
-%%BeginResource: procset grops 1.16 1
-/setpacking where{
-pop
-currentpacking
-true setpacking
-}if
-/grops 120 dict dup begin
-/SC 32 def
-/A/show load def
-/B{0 SC 3 -1 roll widthshow}bind def
-/C{0 exch ashow}bind def
-/D{0 exch 0 SC 5 2 roll awidthshow}bind def
-/E{0 rmoveto show}bind def
-/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
-/G{0 rmoveto 0 exch ashow}bind def
-/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/I{0 exch rmoveto show}bind def
-/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
-/K{0 exch rmoveto 0 exch ashow}bind def
-/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/M{rmoveto show}bind def
-/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
-/O{rmoveto 0 exch ashow}bind def
-/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/Q{moveto show}bind def
-/R{moveto 0 SC 3 -1 roll widthshow}bind def
-/S{moveto 0 exch ashow}bind def
-/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/SF{
-findfont exch
-[exch dup 0 exch 0 exch neg 0 0]makefont
-dup setfont
-[exch/setfont cvx]cvx bind def
-}bind def
-/MF{
-findfont
-[5 2 roll
-0 3 1 roll
-neg 0 0]makefont
-dup setfont
-[exch/setfont cvx]cvx bind def
-}bind def
-/level0 0 def
-/RES 0 def
-/PL 0 def
-/LS 0 def
-/MANUAL{
-statusdict begin/manualfeed true store end
-}bind def
-/PLG{
-gsave newpath clippath pathbbox grestore
-exch pop add exch pop
-}bind def
-/BP{
-/level0 save def
-1 setlinecap
-1 setlinejoin
-72 RES div dup scale
-LS{
-90 rotate
-}{
-0 PL translate
-}ifelse
-1 -1 scale
-}bind def
-/EP{
-level0 restore
-showpage
-}bind def
-/DA{
-newpath arcn stroke
-}bind def
-/SN{
-transform
-.25 sub exch .25 sub exch
-round .25 add exch round .25 add exch
-itransform
-}bind def
-/DL{
-SN
-moveto
-SN
-lineto stroke
-}bind def
-/DC{
-newpath 0 360 arc closepath
-}bind def
-/TM matrix def
-/DE{
-TM currentmatrix pop
-translate scale newpath 0 0 .5 0 360 arc closepath
-TM setmatrix
-}bind def
-/RC/rcurveto load def
-/RL/rlineto load def
-/ST/stroke load def
-/MT/moveto load def
-/CL/closepath load def
-/FL{
-currentgray exch setgray fill setgray
-}bind def
-/BL/fill load def
-/LW/setlinewidth load def
-/RE{
-findfont
-dup maxlength 1 index/FontName known not{1 add}if dict begin
-{
-1 index/FID ne{def}{pop pop}ifelse
-}forall
-/Encoding exch def
-dup/FontName exch def
-currentdict end definefont pop
-}bind def
-/DEFS 0 def
-/EBEGIN{
-moveto
-DEFS begin
-}bind def
-/EEND/end load def
-/CNT 0 def
-/level1 0 def
-/PBEGIN{
-/level1 save def
-translate
-div 3 1 roll div exch scale
-neg exch neg exch translate
-0 setgray
-0 setlinecap
-1 setlinewidth
-0 setlinejoin
-10 setmiterlimit
-[]0 setdash
-/setstrokeadjust where{
-pop
-false setstrokeadjust
-}if
-/setoverprint where{
-pop
-false setoverprint
-}if
-newpath
-/CNT countdictstack def
-userdict begin
-/showpage{}def
-}bind def
-/PEND{
-clear
-countdictstack CNT sub{end}repeat
-level1 restore
-}bind def
-end def
-/setpacking where{
-pop
-setpacking
-}if
-%%EndResource
-%%IncludeResource: font Times-Roman
-%%IncludeResource: font Times-Bold
-%%IncludeResource: font Times-Italic
-grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
-def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron
-/scaron/zcaron/Ydieresis/trademark/quotesingle/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
-/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
-/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
-/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
-/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
-/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
-/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
-/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
-/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
-/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
-/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
-/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
-/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
-/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
-/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
-/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
-/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
-/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
-/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
-/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
-/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
-/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
-/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
-/Times-Italic@0 ENC0/Times-Italic RE/Times-Bold@0 ENC0/Times-Bold RE
-/Times-Roman@0 ENC0/Times-Roman RE
-%%EndProlog
-%%Page: 1 1
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF(HIST)72 48 Q(OR)-.18 E 357.18(Y\(3\) HIST)-.65 F
-(OR)-.18 E(Y\(3\))-.65 E/F1 10.95/Times-Bold@0 SF -.219(NA)72 84 S(ME)
-.219 E F0(history \255 GNU History Library)108 96 Q F1(COPYRIGHT)72
-112.8 Q F0(The GNU History Library is Cop)108 124.8 Q
-(yright \251 1989-2002 by the Free Softw)-.1 E(are F)-.1 E
-(oundation, Inc.)-.15 E F1(DESCRIPTION)72 141.6 Q F0(Man)108 153.6 Q
-2.81(yp)-.15 G .31(rograms read input from the user a line at a time.)
--2.81 F .309(The GNU History library is able to k)5.309 F .309
-(eep track of)-.1 F .024(those lines, associate arbitrary data with eac\
-h line, and utilize information from pre)108 165.6 R .024
-(vious lines in composing)-.25 F(ne)108 177.6 Q 2.5(wo)-.25 G(nes.)-2.5
-E F1(HIST)72 199.2 Q(OR)-.197 E 2.738(YE)-.383 G(XP)-2.738 E(ANSION)-.81
-E F0 .823(The history library supports a history e)108 211.2 R .822
-(xpansion feature that is identical to the history e)-.15 F .822
-(xpansion in)-.15 F/F2 10/Times-Bold@0 SF(bash.)3.322 E F0
-(This section describes what syntax features are a)108 223.2 Q -.25(va)
--.2 G(ilable.).25 E 1.305(History e)108 240 R 1.305
-(xpansions introduce w)-.15 F 1.306(ords from the history list into the\
- input stream, making it easy to repeat)-.1 F .21
-(commands, insert the ar)108 252 R .21(guments to a pre)-.18 F .209
-(vious command into the current input line, or \214x errors in pre)-.25
-F(vious)-.25 E(commands quickly)108 264 Q(.)-.65 E 1.296(History e)108
-280.8 R 1.297(xpansion is usually performed immediately after a complet\
-e line is read.)-.15 F 1.297(It tak)6.297 F 1.297(es place in tw)-.1 F
-(o)-.1 E 2.855(parts. The)108 292.8 R .354(\214rst is to determine whic\
-h line from the history list to use during substitution.)2.855 F .354
-(The second is to)5.354 F .116
-(select portions of that line for inclusion into the current one.)108
-304.8 R .117(The line selected from the history is the)5.116 F/F3 10
-/Times-Italic@0 SF -.15(ev)2.617 G(ent).15 E F0(,)A .846
-(and the portions of that line that are acted upon are)108 316.8 R F3
-(wor)3.346 E(ds)-.37 E F0 5.846(.V)C(arious)-6.956 E F3(modi\214er)3.346
-E(s)-.1 E F0 .846(are a)3.346 F -.25(va)-.2 G .845(ilable to manipulate)
-.25 F .304(the selected w)108 328.8 R 2.804(ords. The)-.1 F .304
-(line is brok)2.804 F .304(en into w)-.1 F .304(ords in the same f)-.1 F
-.304(ashion as)-.1 F F2(bash)2.804 E F0 .305
-(does when reading input, so)2.804 F .539(that se)108 340.8 R -.15(ve)
--.25 G .539(ral w).15 F .539(ords that w)-.1 F .539
-(ould otherwise be separated are considered one w)-.1 F .538
-(ord when surrounded by quotes)-.1 F .307(\(see the description of)108
-352.8 R F2(history_tok)2.807 E(enize\(\))-.1 E F0(belo)2.807 E 2.807
-(w\). History)-.25 F -.15(ex)2.807 G .307
-(pansions are introduced by the appearance of).15 F .52(the history e)
-108 364.8 R .52(xpansion character)-.15 F 3.02(,w)-.4 G .52(hich is)
--3.02 F F2(!)3.853 E F0 .52(by def)3.853 F 3.02(ault. Only)-.1 F .52
-(backslash \()3.02 F F2(\\).833 E F0 3.02(\)a).833 G .52
-(nd single quotes can quote the)-3.02 F(history e)108 376.8 Q
-(xpansion character)-.15 E(.)-.55 E F2(Ev)87 393.6 Q(ent Designators)-.1
-E F0(An e)108 405.6 Q -.15(ve)-.25 G(nt designator is a reference to a \
-command line entry in the history list.).15 E F2(!)108 422.4 Q F0
-(Start a history substitution, e)32.67 E(xcept when follo)-.15 E
-(wed by a)-.25 E F2(blank)2.5 E F0 2.5(,n)C -.25(ew)-2.5 G
-(line, = or \(.).25 E F2(!)108 434.4 Q F3(n)A F0(Refer to command line)
-27.67 E F3(n)2.5 E F0(.).24 E F2<21ad>108 446.4 Q F3(n)A F0
-(Refer to the current command line minus)21.97 E F3(n)2.5 E F0(.).24 E
-F2(!!)108 458.4 Q F0(Refer to the pre)29.34 E(vious command.)-.25 E
-(This is a synon)5 E(ym for `!\2551'.)-.15 E F2(!)108 470.4 Q F3(string)
-A F0(Refer to the most recent command starting with)9.33 E F3(string)2.5
-E F0(.).22 E F2(!?)108 482.4 Q F3(string)A F2([?])A F0 1.057
-(Refer to the most recent command containing)144 494.4 R F3(string)3.557
-E F0 6.057(.T).22 G 1.057(he trailing)-6.057 F F2(?)3.557 E F0 1.057
-(may be omitted if)3.557 F F3(string)3.557 E F0(is)3.557 E(follo)144
-506.4 Q(wed immediately by a ne)-.25 E(wline.)-.25 E/F4 12/Times-Bold@0
-SF(^)108 523.4 Q F3(string1)-5 I F4(^)5 I F3(string2)-5 I F4(^)5 I F0
-2.66(Quick substitution.)144 530.4 R 2.66
-(Repeat the last command, replacing)7.66 F F3(string1)5.16 E F0(with)
-5.16 E F3(string2)5.16 E F0 7.66(.E).02 G(qui)-7.66 E -.25(va)-.25 G
-2.66(lent to).25 F -.74(``)144 542.4 S(!!:s/).74 E F3(string1)A F0(/)A
-F3(string2)A F0(/')A 2.5('\()-.74 G(see)-2.5 E F2(Modi\214ers)2.5 E F0
-(belo)2.5 E(w\).)-.25 E F2(!#)108 554.4 Q F0
-(The entire command line typed so f)27.67 E(ar)-.1 E(.)-.55 E F2 -.75
-(Wo)87 571.2 S(rd Designators).75 E F0 -.8(Wo)108 583.2 S 1.313
-(rd designators are used to select desired w).8 F 1.314(ords from the e)
--.1 F -.15(ve)-.25 G 3.814(nt. A).15 F F2(:)3.814 E F0 1.314
-(separates the e)3.814 F -.15(ve)-.25 G 1.314(nt speci\214cation).15 F
-.53(from the w)108 595.2 R .529(ord designator)-.1 F 5.529(.I)-.55 G
-3.029(tm)-5.529 G .529(ay be omitted if the w)-3.029 F .529
-(ord designator be)-.1 F .529(gins with a)-.15 F F2(^)3.029 E F0(,)A F2
-($)3.029 E F0(,)A F2(*)3.029 E F0(,)A F2<ad>3.029 E F0 3.029(,o)C(r)
--3.029 E F2(%)3.029 E F0 5.529(.W)C(ords)-6.329 E 1.3
-(are numbered from the be)108 607.2 R 1.3
-(ginning of the line, with the \214rst w)-.15 F 1.301
-(ord being denoted by 0 \(zero\).)-.1 F -.8(Wo)6.301 G 1.301(rds are).8
-F(inserted into the current line separated by single spaces.)108 619.2 Q
-F2 2.5(0\()108 636 S(zer)-2.5 E(o\))-.18 E F0(The zeroth w)144 648 Q 2.5
-(ord. F)-.1 F(or the shell, this is the command w)-.15 E(ord.)-.1 E F3
-(n)108 660 Q F0(The)31 E F3(n)2.5 E F0(th w)A(ord.)-.1 E F2(^)108 672 Q
-F0(The \214rst ar)32.67 E 2.5(gument. That)-.18 F(is, w)2.5 E(ord 1.)-.1
-E F2($)108 684 Q F0(The last ar)31 E(gument.)-.18 E F2(%)108 696 Q F0
-(The w)26 E(ord matched by the most recent `?)-.1 E F3(string)A F0
-(?' search.)A F3(x)108 708 Q F2<ad>A F3(y)A F0 2.5(Ar)21.42 G(ange of w)
--2.5 E(ords; `\255)-.1 E F3(y)A F0 2.5('a)C(bbre)-2.5 E(viates `0\255)
--.25 E F3(y)A F0('.)A(GNU History 4.3)72 768 Q(2002 January 31)131.79 E
-(1)195.95 E EP
-%%Page: 2 2
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF(HIST)72 48 Q(OR)-.18 E 357.18(Y\(3\) HIST)-.65 F
-(OR)-.18 E(Y\(3\))-.65 E/F1 10/Times-Bold@0 SF(*)108 84 Q F0 .316
-(All of the w)31 F .316(ords b)-.1 F .316(ut the zeroth.)-.2 F .315
-(This is a synon)5.315 F .315(ym for `)-.15 F/F2 10/Times-Italic@0 SF
-(1\255$)A F0 2.815('. It)B .315(is not an error to use)2.815 F F1(*)
-2.815 E F0 .315(if there is)2.815 F(just one w)144 96 Q(ord in the e)-.1
-E -.15(ve)-.25 G(nt; the empty string is returned in that case.).15 E F1
-(x*)108 108 Q F0(Abbre)26 E(viates)-.25 E F2(x\255$)2.5 E F0(.)A F1
-<78ad>108 120 Q F0(Abbre)25.3 E(viates)-.25 E F2(x\255$)2.5 E F0(lik)2.5
-E(e)-.1 E F1(x*)2.5 E F0 2.5(,b)C(ut omits the last w)-2.7 E(ord.)-.1 E
-(If a w)108 136.8 Q(ord designator is supplied without an e)-.1 E -.15
-(ve)-.25 G(nt speci\214cation, the pre).15 E
-(vious command is used as the e)-.25 E -.15(ve)-.25 G(nt.).15 E F1
-(Modi\214ers)87 153.6 Q F0 .183(After the optional w)108 165.6 R .183
-(ord designator)-.1 F 2.683(,t)-.4 G .184
-(here may appear a sequence of one or more of the follo)-2.683 F .184
-(wing modi\214ers,)-.25 F(each preceded by a `:'.)108 177.6 Q F1(h)108
-194.4 Q F0(Remo)30.44 E .3 -.15(ve a t)-.15 H
-(railing \214le name component, lea).15 E(ving only the head.)-.2 E F1
-(t)108 206.4 Q F0(Remo)32.67 E .3 -.15(ve a)-.15 H
-(ll leading \214le name components, lea).15 E(ving the tail.)-.2 E F1(r)
-108 218.4 Q F0(Remo)31.56 E .3 -.15(ve a t)-.15 H(railing suf).15 E
-(\214x of the form)-.25 E F2(.xxx)2.5 E F0 2.5(,l)C(ea)-2.5 E
-(ving the basename.)-.2 E F1(e)108 230.4 Q F0(Remo)31.56 E .3 -.15(ve a)
--.15 H(ll b).15 E(ut the trailing suf)-.2 E(\214x.)-.25 E F1(p)108 242.4
-Q F0(Print the ne)30.44 E 2.5(wc)-.25 G(ommand b)-2.5 E(ut do not e)-.2
-E -.15(xe)-.15 G(cute it.).15 E F1(q)108 254.4 Q F0
-(Quote the substituted w)30.44 E(ords, escaping further substitutions.)
--.1 E F1(x)108 266.4 Q F0(Quote the substituted w)31 E(ords as with)-.1
-E F1(q)2.5 E F0 2.5(,b)C(ut break into w)-2.7 E(ords at)-.1 E F1(blanks)
-2.5 E F0(and ne)2.5 E(wlines.)-.25 E F1(s/)108 278.4 Q F2(old)A F1(/)A
-F2(ne)A(w)-.15 E F1(/)A F0(Substitute)144 290.4 Q F2(ne)2.814 E(w)-.15 E
-F0 .314(for the \214rst occurrence of)2.814 F F2(old)2.814 E F0 .314
-(in the e)2.814 F -.15(ve)-.25 G .314(nt line.).15 F(An)5.314 E 2.814
-(yd)-.15 G .314(elimiter can be used in place)-2.814 F .616(of /.)144
-302.4 R .617
-(The \214nal delimiter is optional if it is the last character of the e)
-5.616 F -.15(ve)-.25 G .617(nt line.).15 F .617(The delimiter may)5.617
-F .75(be quoted in)144 314.4 R F2(old)3.25 E F0(and)3.25 E F2(ne)3.25 E
-(w)-.15 E F0 .75(with a single backslash.)3.25 F .749(If & appears in)
-5.75 F F2(ne)3.249 E(w)-.15 E F0 3.249(,i).31 G 3.249(ti)-3.249 G 3.249
-(sr)-3.249 G .749(eplaced by)-3.249 F F2(old)3.249 E F0 5.749(.A).77 G
-.369(single backslash will quote the &.)144 326.4 R(If)5.369 E F2(old)
-2.869 E F0 .37(is null, it is set to the last)2.869 F F2(old)2.87 E F0
-.37(substituted, or)2.87 F 2.87(,i)-.4 G 2.87(fn)-2.87 G 2.87(op)-2.87 G
-(re)-2.87 E(vi-)-.25 E(ous history substitutions took place, the last)
-144 338.4 Q F2(string)2.5 E F0(in a)2.5 E F1(!?)2.5 E F2(string)A F1
-([?])A F0(search.)5 E F1(&)108 350.4 Q F0(Repeat the pre)27.67 E
-(vious substitution.)-.25 E F1(g)108 362.4 Q F0 .398
-(Cause changes to be applied o)31 F -.15(ve)-.15 G 2.898(rt).15 G .398
-(he entire e)-2.898 F -.15(ve)-.25 G .398(nt line.).15 F .397
-(This is used in conjunction with `)5.398 F F1(:s)A F0 2.897('\()C
-(e.g.,)-2.897 E(`)144 374.4 Q F1(:gs/)A F2(old)A F1(/)A F2(ne)A(w)-.15 E
-F1(/)A F0 1.218('\) or `)B F1(:&)A F0 3.718('. If)B 1.218(used with `)
-3.718 F F1(:s)A F0 1.218(', an)B 3.718(yd)-.15 G 1.219
-(elimiter can be used in place of /, and the \214nal)-3.718 F
-(delimiter is optional if it is the last character of the e)144 386.4 Q
--.15(ve)-.25 G(nt line.).15 E/F3 10.95/Times-Bold@0 SF(PR)72 403.2 Q
-(OGRAMMING WITH HIST)-.329 E(OR)-.197 E 2.738(YF)-.383 G(UNCTIONS)-2.738
-E F0(This section describes ho)108 415.2 Q 2.5(wt)-.25 G 2.5(ou)-2.5 G
-(se the History library in other programs.)-2.5 E F1(Intr)87 432 Q
-(oduction to History)-.18 E F0 .797
-(The programmer using the History library has a)108 444 R -.25(va)-.2 G
-.796(ilable functions for remembering lines on a history list,).25 F
-.307(associating arbitrary data with a line, remo)108 456 R .308
-(ving lines from the list, searching through the list for a line con-)
--.15 F .303(taining an arbitrary te)108 468 R .303
-(xt string, and referencing an)-.15 F 2.803(yl)-.15 G .303
-(ine in the list directly)-2.803 F 5.303(.I)-.65 G 2.803(na)-5.303 G
-.303(ddition, a history)-2.803 F F2 -.2(ex)2.802 G(pansion).2 E F0
-(function is a)108 480 Q -.25(va)-.2 G(ilable which pro).25 E
-(vides for a consistent user interf)-.15 E(ace across dif)-.1 E
-(ferent programs.)-.25 E .059(The user using programs written with the \
-History library has the bene\214t of a consistent user interf)108 496.8
-R .059(ace with a)-.1 F .918(set of well-kno)108 508.8 R .917
-(wn commands for manipulating the te)-.25 F .917(xt of pre)-.15 F .917
-(vious lines and using that te)-.25 F .917(xt in ne)-.15 F 3.417(wc)-.25
-G(om-)-3.417 E 4.183(mands. The)108 520.8 R 1.684(basic history manipul\
-ation commands are identical to the history substitution pro)4.183 F
-1.684(vided by)-.15 F F1(bash)108 532.8 Q F0(.)A .904
-(If the programmer desires, he can use the Readline library)108 549.6 R
-3.403(,w)-.65 G .903(hich includes some history manipulation by)-3.403 F
-(def)108 561.6 Q(ault, and has the added adv)-.1 E
-(antage of command line editing.)-.25 E .39(Before declaring an)108
-578.4 R 2.89(yf)-.15 G .39(unctions using an)-2.89 F 2.89(yf)-.15 G .39
-(unctionality the History library pro)-2.89 F .39
-(vides in other code, an appli-)-.15 F .067
-(cation writer should include the \214le)108 590.4 R F2(<r)4.233 E
-(eadline/history)-.37 E(.h>)-.55 E F0 .067(in an)4.233 F 2.566<798c>-.15
-G .066(le that uses the History library')-2.566 F 2.566(sf)-.55 G
-(eatures.)-2.566 E .538(It supplies e)108 602.4 R .538
-(xtern declarations for all of the library')-.15 F 3.038(sp)-.55 G .538
-(ublic functions and v)-3.038 F .539(ariables, and declares all of the)
--.25 F(public data structures.)108 614.4 Q F1(History Storage)87 643.2 Q
-F0(The history list is an array of history entries.)108 655.2 Q 2.5(Ah)5
-G(istory entry is declared as follo)-2.5 E(ws:)-.25 E F2(typedef void *)
-108 672 Q F1(histdata_t;)2.5 E F0(typedef struct _hist_entry {)108 688.8
-Q(char *line;)113 700.8 Q(histdata_t data;)113 712.8 Q 2.5(}H)108 724.8
-S(IST_ENTR)-2.5 E -.92(Y;)-.65 G(GNU History 4.3)72 768 Q
-(2002 January 31)131.79 E(2)195.95 E EP
-%%Page: 3 3
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF(HIST)72 48 Q(OR)-.18 E 357.18(Y\(3\) HIST)-.65 F
-(OR)-.18 E(Y\(3\))-.65 E
-(The history list itself might therefore be declared as)108 84 Q/F1 10
-/Times-Italic@0 SF(HIST_ENTR)108 100.8 Q 2.5(Y*)-.18 G(*)-2.5 E/F2 10
-/Times-Bold@0 SF(the_history_list;)2.5 E F0(The state of the History li\
-brary is encapsulated into a single structure:)108 117.6 Q(/*)108 134.4
-Q 2.5(*As)110.5 146.4 S
-(tructure used to pass around the current state of the history)-2.5 E(.)
--.65 E(*/)110.5 158.4 Q(typedef struct _hist_state {)108 170.4 Q
-(HIST_ENTR)113 182.4 Q 2.5(Y*)-.65 G
-(*entries; /* Pointer to the entries themselv)-2.5 E(es. */)-.15 E
-(int of)113 194.4 Q 25(fset; /*)-.25 F
-(The location pointer within this array)2.5 E 2.5(.*)-.65 G(/)-2.5 E
-(int length;)113 206.4 Q(/* Number of elements within this array)27.5 E
-2.5(.*)-.65 G(/)-2.5 E(int size;)113 218.4 Q
-(/* Number of slots allocated to this array)32.5 E 2.5(.*)-.65 G(/)-2.5
-E(int \215ags;)113 230.4 Q 2.5(}H)108 242.4 S(IST)-2.5 E(OR)-.18 E(Y_ST)
--.65 E -1.11(AT)-.93 G(E;)1.11 E(If the \215ags member includes)108
-259.2 Q F2(HS_STIFLED)2.5 E F0 2.5(,t)C(he history has been sti\215ed.)
--2.5 E/F3 10.95/Times-Bold@0 SF(History Functions)72 276 Q F0
-(This section describes the calling sequence for the v)108 288 Q
-(arious functions e)-.25 E(xported by the GNU History library)-.15 E(.)
--.65 E F2(Initializing History and State Management)87 304.8 Q F0 1.274
-(This section describes functions used to initialize and manage the sta\
-te of the History library when you)108 316.8 R -.1(wa)108 328.8 S
-(nt to use the history functions in your program.).1 E F1(void)108 352.8
-Q F2(using_history)2.5 E F0(\()4.166 E F1(void)A F0(\))1.666 E(Be)108
-364.8 Q(gin a session in which the history functions might be used.)-.15
-E(This initializes the interacti)5 E .3 -.15(ve v)-.25 H(ariables.)-.1 E
-F1(HIST)108 388.8 Q(OR)-.18 E(Y_ST)-.18 E -.37(AT)-.5 G 2.5(E*).37 G F2
-(history_get_history_state)A F0(\()4.166 E F1(void)A F0(\))1.666 E
-(Return a structure describing the current state of the input history)
-108 400.8 Q(.)-.65 E F1(void)108 424.8 Q F2(history_set_history_state)
-2.5 E F0(\()4.166 E F1(HIST)A(OR)-.18 E(Y_ST)-.18 E -.37(AT)-.5 G 2.5
-(E*).37 G(state)-2.5 E F0(\))1.666 E
-(Set the state of the history list according to)108 436.8 Q F1(state)2.5
-E F0(.)A F2(History List Management)87 465.6 Q F0
-(These functions manage indi)108 477.6 Q(vidual entries on the history \
-list, or set parameters managing the list itself.)-.25 E F1(void)108
-501.6 Q F2(add_history)2.5 E F0(\()4.166 E F1(const c)A(har *string)-.15
-E F0(\))1.666 E(Place)108 513.6 Q F1(string)2.5 E F0
-(at the end of the history list.)2.5 E
-(The associated data \214eld \(if an)5 E(y\) is set to)-.15 E F2(NULL)
-2.5 E F0(.)A F1(HIST_ENTR)108 537.6 Q 2.5(Y*)-.18 G F2 -.18(re)C(mo).18
-E -.1(ve)-.1 G(_history).1 E F0(\()4.166 E F1(int whic)A(h)-.15 E F0(\))
-1.666 E(Remo)108 549.6 Q .352 -.15(ve h)-.15 H .052(istory entry at of)
-.15 F(fset)-.25 E F1(whic)2.553 E(h)-.15 E F0 .053(from the history)
-2.553 F 5.053(.T)-.65 G .053(he remo)-5.053 F -.15(ve)-.15 G 2.553(de)
-.15 G .053(lement is returned so you can free the)-2.553 F
-(line, data, and containing structure.)108 561.6 Q F1(HIST_ENTR)108
-585.6 Q 2.5(Y*)-.18 G F2 -.18(re)C(place_history_entry).18 E F0(\()4.166
-E F1(int whic)A -.834(h, const)-.15 F -.15(ch)2.5 G(ar *line).15 E 1.666
-(,h)-.1 G(istdata_t data)-1.666 E F0(\))3.332 E(Mak)108 597.6 Q 2.868
-(et)-.1 G .368(he history entry at of)-2.868 F(fset)-.25 E F1(whic)2.868
-E(h)-.15 E F0(ha)2.868 E -.15(ve)-.2 G F1(line)3.018 E F0(and)2.868 E F1
-(data)2.868 E F0 5.367(.T)C .367
-(his returns the old entry so you can dispose of)-5.367 F(the data.)108
-609.6 Q(In the case of an in)5 E -.25(va)-.4 G(lid).25 E F1(whic)2.5 E
-(h)-.15 E F0 2.5(,a)C F2(NULL)A F0(pointer is returned.)2.5 E F1(void)
-108 633.6 Q F2(clear_history)2.5 E F0(\()4.166 E F1(void)A F0(\))1.666 E
-(Clear the history list by deleting all the entries.)108 645.6 Q F1
-(void)108 669.6 Q F2(sti\215e_history)2.5 E F0(\()4.166 E F1(int max)A
-F0(\))1.666 E(Sti\215e the history list, remembering only the last)108
-681.6 Q F1(max)2.5 E F0(entries.)2.5 E F1(int)108 705.6 Q F2
-(unsti\215e_history)2.5 E F0(\()4.166 E F1(void)A F0(\))1.666 E .46
-(Stop sti\215ing the history)108 717.6 R 5.46(.T)-.65 G .46
-(his returns the pre)-5.46 F .46
-(viously-set maximum number of history entries \(as set by)-.25 F F2
-(sti-)2.96 E(\215e_history\(\))108 729.6 Q F0 2.5(\). history)B -.1(wa)
-2.5 G 2.5(ss).1 G 2.5(ti\215ed. The)-2.5 F -.25(va)2.5 G(lue is positi)
-.25 E .3 -.15(ve i)-.25 H 2.5(ft).15 G(he history w)-2.5 E
-(as sti\215ed, ne)-.1 E -.05(ga)-.15 G(ti).05 E .3 -.15(ve i)-.25 H 2.5
-(fi).15 G 2.5(tw)-2.5 G(asn')-2.6 E(t.)-.18 E(GNU History 4.3)72 768 Q
-(2002 January 31)131.79 E(3)195.95 E EP
-%%Page: 4 4
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF(HIST)72 48 Q(OR)-.18 E 357.18(Y\(3\) HIST)-.65 F
-(OR)-.18 E(Y\(3\))-.65 E/F1 10/Times-Italic@0 SF(int)108 84 Q/F2 10
-/Times-Bold@0 SF(history_is_sti\215ed)2.5 E F0(\()4.166 E F1(void)A F0
-(\))1.666 E
-(Returns non-zero if the history is sti\215ed, zero if it is not.)108 96
-Q F2(Inf)87 124.8 Q(ormation About the History List)-.25 E F0(These fun\
-ctions return information about the entire history list or indi)108
-136.8 Q(vidual list entries.)-.25 E F1(HIST_ENTR)108 160.8 Q 2.5(Y*)-.18
-G(*)-2.5 E F2(history_list)2.5 E F0(\()4.166 E F1(void)A F0(\))1.666 E
-.708(Return a)108 172.8 R F2(NULL)3.208 E F0 .708(terminated array of)
-3.208 F F1(HIST_ENTR)3.208 E 3.208(Y*)-.18 G F0 .708
-(which is the current input history)B 5.707(.E)-.65 G .707
-(lement 0 of this)-5.707 F(list is the be)108 184.8 Q(ginning of time.)
--.15 E(If there is no history)5 E 2.5(,r)-.65 G(eturn)-2.5 E F2(NULL)2.5
-E F0(.)A F1(int)108 208.8 Q F2(wher)2.5 E(e_history)-.18 E F0(\()4.166 E
-F1(void)A F0(\))1.666 E(Returns the of)108 220.8 Q
-(fset of the current history element.)-.25 E F1(HIST_ENTR)108 244.8 Q
-2.5(Y*)-.18 G F2(curr)A(ent_history)-.18 E F0(\()4.166 E F1(void)A F0
-(\))1.666 E 1.373
-(Return the history entry at the current position, as determined by)108
-256.8 R F2(wher)3.873 E(e_history\(\))-.18 E F0 6.373(.I)C 3.873(ft)
--6.373 G 1.374(here is no entry)-3.873 F(there, return a)108 268.8 Q F2
-(NULL)2.5 E F0(pointer)2.5 E(.)-.55 E F1(HIST_ENTR)108 292.8 Q 2.5(Y*)
--.18 G F2(history_get)A F0(\()4.166 E F1(int of)A(fset)-.18 E F0(\))
-1.666 E .288(Return the history entry at position)108 304.8 R F1(of)
-2.787 E(fset)-.18 E F0 2.787(,s)C .287(tarting from)-2.787 F F2
-(history_base)2.787 E F0 5.287(.I)C 2.787(ft)-5.287 G .287
-(here is no entry there, or if)-2.787 F F1(of)2.787 E(fset)-.18 E F0
-(is greater than the history length, return a)108 316.8 Q F2(NULL)2.5 E
-F0(pointer)2.5 E(.)-.55 E F1(int)108 340.8 Q F2(history_total_bytes)2.5
-E F0(\()4.166 E F1(void)A F0(\))1.666 E .391
-(Return the number of bytes that the primary history entries are using.)
-108 352.8 R .392(This function returns the sum of the)5.392 F
-(lengths of all the lines in the history)108 364.8 Q(.)-.65 E F2(Mo)87
-393.6 Q(ving Ar)-.1 E(ound the History List)-.18 E F0
-(These functions allo)108 405.6 Q 2.5(wt)-.25 G(he current inde)-2.5 E
-2.5(xi)-.15 G(nto the history list to be set or changed.)-2.5 E F1(int)
-108 429.6 Q F2(history_set_pos)2.5 E F0(\()4.166 E F1(int pos)A F0(\))
-1.666 E .79(Set the current history of)108 441.6 R .79(fset to)-.25 F F1
-(pos)3.29 E F0 3.29(,a)C 3.29(na)-3.29 G .79(bsolute inde)-3.29 F 3.29
-(xi)-.15 G .79(nto the list.)-3.29 F .79(Returns 1 on success, 0 if)5.79
-F F1(pos)3.29 E F0 .79(is less)3.29 F
-(than zero or greater than the number of history entries.)108 453.6 Q F1
-(HIST_ENTR)108 477.6 Q 2.5(Y*)-.18 G F2(pr)A -.15(ev)-.18 G
-(ious_history).15 E F0(\()4.166 E F1(void)A F0(\))1.666 E .207
-(Back up the current history of)108 489.6 R .207(fset to the pre)-.25 F
-.207(vious history entry)-.25 F 2.708(,a)-.65 G .208
-(nd return a pointer to that entry)-2.708 F 5.208(.I)-.65 G 2.708(ft)
--5.208 G .208(here is)-2.708 F(no pre)108 501.6 Q(vious entry)-.25 E 2.5
-(,r)-.65 G(eturn a)-2.5 E F2(NULL)2.5 E F0(pointer)2.5 E(.)-.55 E F1
-(HIST_ENTR)108 525.6 Q 2.5(Y*)-.18 G F2(next_history)A F0(\()4.166 E F1
-(void)A F0(\))1.666 E(Mo)108 537.6 Q 1.047 -.15(ve t)-.15 H .747
-(he current history of).15 F .747(fset forw)-.25 F .746(ard to the ne)
--.1 F .746(xt history entry)-.15 F 3.246(,a)-.65 G .746
-(nd return the a pointer to that entry)-3.246 F 5.746(.I)-.65 G(f)-5.746
-E(there is no ne)108 549.6 Q(xt entry)-.15 E 2.5(,r)-.65 G(eturn a)-2.5
-E F2(NULL)2.5 E F0(pointer)2.5 E(.)-.55 E F2(Sear)87 578.4 Q
-(ching the History List)-.18 E F0 .005(These functions allo)108 590.4 R
-2.505(ws)-.25 G .006(earching of the history list for entries containin\
-g a speci\214c string.)-2.505 F .006(Searching may be)5.006 F 1.452
-(performed both forw)108 602.4 R 1.452(ard and backw)-.1 F 1.451
-(ard from the current history position.)-.1 F 1.451(The search may be)
-6.451 F F1(anc)3.951 E(hor)-.15 E(ed)-.37 E F0(,)A
-(meaning that the string must match at the be)108 614.4 Q
-(ginning of the history entry)-.15 E(.)-.65 E F1(int)108 638.4 Q F2
-(history_sear)2.5 E(ch)-.18 E F0(\()4.166 E F1(const c)A(har *string)
--.15 E 1.666(,i)-.1 G(nt dir)-1.666 E(ection)-.37 E F0(\))1.666 E .155
-(Search the history for)108 650.4 R F1(string)2.655 E F0 2.656(,s)C .156
-(tarting at the current history of)-2.656 F 2.656(fset. If)-.25 F F1
-(dir)2.656 E(ection)-.37 E F0 .156(is less than 0, then the search)2.656
-F .802(is through pre)108 662.4 R .802
-(vious entries, otherwise through subsequent entries.)-.25 F(If)5.801 E
-F1(string)3.301 E F0 .801(is found, then the current his-)3.301 F .064
-(tory inde)108 674.4 R 2.564(xi)-.15 G 2.564(ss)-2.564 G .064
-(et to that history entry)-2.564 F 2.564(,a)-.65 G .064(nd the v)-2.564
-F .064(alue returned is the of)-.25 F .064
-(fset in the line of the entry where)-.25 F F1(string)2.565 E F0 -.1(wa)
-108 686.4 S 2.5(sf).1 G 2.5(ound. Otherwise,)-2.5 F
-(nothing is changed, and a -1 is returned.)2.5 E F1(int)108 710.4 Q F2
-(history_sear)2.5 E(ch_pr)-.18 E(e\214x)-.18 E F0(\()4.166 E F1(const c)
-A(har *string)-.15 E 1.666(,i)-.1 G(nt dir)-1.666 E(ection)-.37 E F0(\))
-1.666 E .684(Search the history for)108 722.4 R F1(string)3.183 E F0
-3.183(,s)C .683(tarting at the current history of)-3.183 F 3.183
-(fset. The)-.25 F .683(search is anchored: matching lines)3.183 F
-(GNU History 4.3)72 768 Q(2002 January 31)131.79 E(4)195.95 E EP
-%%Page: 5 5
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF(HIST)72 48 Q(OR)-.18 E 357.18(Y\(3\) HIST)-.65 F
-(OR)-.18 E(Y\(3\))-.65 E 1.063(must be)108 84 R 1.063(gin with)-.15 F/F1
-10/Times-Italic@0 SF(string)3.563 E F0 6.063(.I)C(f)-6.063 E F1(dir)
-3.563 E(ection)-.37 E F0 1.064
-(is less than 0, then the search is through pre)3.563 F 1.064
-(vious entries, otherwise)-.25 F 1.115(through subsequent entries.)108
-96 R(If)6.115 E F1(string)3.615 E F0 1.115
-(is found, then the current history inde)3.615 F 3.614(xi)-.15 G 3.614
-(ss)-3.614 G 1.114(et to that entry)-3.614 F 3.614(,a)-.65 G 1.114
-(nd the)-3.614 F(return v)108 108 Q(alue is 0.)-.25 E
-(Otherwise, nothing is changed, and a -1 is returned.)5 E F1(int)108 132
-Q/F2 10/Times-Bold@0 SF(history_sear)2.5 E(ch_pos)-.18 E F0(\()4.166 E
-F1(const c)A(har *string)-.15 E 1.666(,i)-.1 G(nt dir)-1.666 E -.834
-(ection, int)-.37 F(pos)2.5 E F0(\))3.332 E .603(Search for)108 144 R F1
-(string)3.103 E F0 .603(in the history list, starting at)3.103 F F1(pos)
-3.104 E F0 3.104(,a)C 3.104(na)-3.104 G .604(bsolute inde)-3.104 F 3.104
-(xi)-.15 G .604(nto the list.)-3.104 F(If)5.604 E F1(dir)3.104 E(ection)
--.37 E F0 .604(is ne)3.104 F -.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G(,)
-.15 E .608(the search proceeds backw)108 156 R .608(ard from)-.1 F F1
-(pos)3.108 E F0 3.108(,o)C .608(therwise forw)-3.108 F 3.108
-(ard. Returns)-.1 F .608(the absolute inde)3.108 F 3.108(xo)-.15 G 3.108
-(ft)-3.108 G .608(he history ele-)-3.108 F(ment where)108 168 Q F1
-(string)2.5 E F0 -.1(wa)2.5 G 2.5(sf).1 G(ound, or -1 otherwise.)-2.5 E
-F2(Managing the History File)87 196.8 Q F0 .035(The History library can\
- read the history from and write it to a \214le.)108 208.8 R .036
-(This section documents the functions for)5.035 F
-(managing a history \214le.)108 220.8 Q F1(int)108 244.8 Q F2 -.18(re)
-2.5 G(ad_history).18 E F0(\()4.166 E F1(const c)A(har *\214lename)-.15 E
-F0(\))1.666 E .151(Add the contents of)108 256.8 R F1(\214lename)2.651 E
-F0 .151(to the history list, a line at a time.)2.651 F(If)5.15 E F1
-(\214lename)2.65 E F0(is)2.65 E F2(NULL)2.65 E F0 2.65(,t)C .15
-(hen read from)-2.65 F F1(~/.his-)2.65 E(tory)108 268.8 Q F0 5(.R)C
-(eturns 0 if successful, or)-5 E F2(err)2.5 E(no)-.15 E F0(if not.)2.5 E
-F1(int)108 292.8 Q F2 -.18(re)2.5 G(ad_history_range).18 E F0(\()4.166 E
-F1(const c)A(har *\214lename)-.15 E 1.666(,i)-.1 G(nt fr)-1.666 E -.834
-(om, int)-.45 F(to)2.5 E F0(\))3.332 E .052(Read a range of lines from)
-108 304.8 R F1(\214lename)2.553 E F0 2.553(,a)C .053
-(dding them to the history list.)-2.553 F .053(Start reading at line)
-5.053 F F1(fr)2.553 E(om)-.45 E F0 .053(and end at)2.553 F F1(to)2.553 E
-F0(.)A(If)108 316.8 Q F1(fr)2.889 E(om)-.45 E F0 .389
-(is zero, start at the be)2.889 F 2.889(ginning. If)-.15 F F1(to)2.889 E
-F0 .389(is less than)2.889 F F1(fr)2.889 E(om)-.45 E F0 2.889(,t)C .388
-(hen read until the end of the \214le.)-2.889 F(If)5.388 E F1
-(\214lename)2.888 E F0(is)108 328.8 Q F2(NULL)2.5 E F0 2.5(,t)C
-(hen read from)-2.5 E F1(~/.history)2.5 E F0 5(.R)C
-(eturns 0 if successful, or)-5 E F2(err)2.5 E(no)-.15 E F0(if not.)2.5 E
-F1(int)108 352.8 Q F2(write_history)2.5 E F0(\()4.166 E F1(const c)A
-(har *\214lename)-.15 E F0(\))1.666 E .961(Write the current history to)
-108 364.8 R F1(\214lename)3.461 E F0 3.461(,o)C -.15(ve)-3.611 G
-(rwriting).15 E F1(\214lename)3.461 E F0 .961(if necessary)3.461 F 5.961
-(.I)-.65 G(f)-5.961 E F1(\214lename)3.462 E F0(is)3.462 E F2(NULL)3.462
-E F0 3.462(,t)C .962(hen write)-3.462 F(the history list to)108 376.8 Q
-F1(~/.history)2.5 E F0 5(.R)C(eturns 0 on success, or)-5 E F2(err)2.5 E
-(no)-.15 E F0(on a read or write error)2.5 E(.)-.55 E F1(int)108 412.8 Q
-F2(append_history)2.5 E F0(\()4.166 E F1(int nelements,)A(const c)1.666
-E(har *\214lename)-.15 E F0(\))1.666 E .839(Append the last)108 424.8 R
-F1(nelements)3.339 E F0 .839(of the history list to)3.339 F F1
-(\214lename)3.339 E F0 5.839(.I)C(f)-5.839 E F1(\214lename)3.339 E F0
-(is)3.339 E F2(NULL)3.339 E F0 3.339(,t)C .838(hen append to)-3.339 F F1
-(~/.history)3.338 E F0(.)A(Returns 0 on success, or)108 436.8 Q F2(err)
-2.5 E(no)-.15 E F0(on a read or write error)2.5 E(.)-.55 E F1(int)108
-460.8 Q F2(history_truncate_\214le)2.5 E F0(\()4.166 E F1(const c)A
-(har *\214lename)-.15 E 1.666(,i)-.1 G(nt nlines)-1.666 E F0(\))1.666 E
--.35(Tr)108 472.8 S .38(uncate the history \214le).35 F F1(\214lename)
-2.88 E F0 2.88(,l)C(ea)-2.88 E .38(ving only the last)-.2 F F1(nlines)
-2.881 E F0 2.881(lines. If)2.881 F F1(\214lename)2.881 E F0(is)2.881 E
-F2(NULL)2.881 E F0 2.881(,t)C(hen)-2.881 E F1(~/.history)2.881 E F0(is)
-2.881 E 2.5(truncated. Returns)108 484.8 R 2.5(0o)2.5 G 2.5(ns)-2.5 G
-(uccess, or)-2.5 E F2(err)2.5 E(no)-.15 E F0(on f)2.5 E(ailure.)-.1 E F2
-(History Expansion)87 513.6 Q F0(These functions implement history e)108
-525.6 Q(xpansion.)-.15 E F1(int)108 549.6 Q F2(history_expand)2.5 E F0
-(\()4.166 E F1 -.15(ch)C(ar *string).15 E 1.666(,c)-.1 G(har **output)
--1.816 E F0(\))1.666 E(Expand)108 561.6 Q F1(string)2.5 E F0 2.5(,p)C
-(lacing the result into)-2.5 E F1(output)2.5 E F0 2.5(,ap)C
-(ointer to a string.)-2.5 E(Returns:)5 E 31(0I)144 573.6 S 3.066(fn)-31
-G 3.066(oe)-3.066 G .566(xpansions took place \(or)-3.216 F 3.065(,i)-.4
-G 3.065(ft)-3.065 G .565(he only change in the te)-3.065 F .565(xt w)
--.15 F .565(as the remo)-.1 F -.25(va)-.15 G 3.065(lo).25 G 3.065(fe)
--3.065 G(scape)-3.065 E(characters preceding the history e)180 585.6 Q
-(xpansion character\);)-.15 E 31(1i)144 597.6 S 2.5(fe)-31 G
-(xpansions did tak)-2.65 E 2.5(ep)-.1 G(lace;)-2.5 E 25.17(-1 if)144
-609.6 R(there w)2.5 E(as an error in e)-.1 E(xpansion;)-.15 E 31(2i)144
-621.6 S 2.5(ft)-31 G(he returned line should be displayed, b)-2.5 E
-(ut not e)-.2 E -.15(xe)-.15 G(cuted, as with the).15 E F2(:p)2.5 E F0
-(modi\214er)2.5 E(.)-.55 E(If an error ocurred in e)108 633.6 Q
-(xpansion, then)-.15 E F1(output)2.5 E F0(contains a descripti)2.5 E .3
--.15(ve e)-.25 H(rror message.).15 E F1 -.15(ch)108 657.6 S(ar *).15 E
-F2(get_history_e)2.5 E -.1(ve)-.15 G(nt).1 E F0(\()4.166 E F1(const c)A
-(har *string)-.15 E 1.666(,i)-.1 G(nt *cinde)-1.666 E -.834(x, int)-.2 F
-(qc)2.5 E(har)-.15 E F0(\))3.332 E .262(Returns the te)108 669.6 R .262
-(xt of the history e)-.15 F -.15(ve)-.25 G .262(nt be).15 F .263
-(ginning at)-.15 F F1(string)2.763 E F0(+)2.763 E F1(*cinde)2.763 E(x)
--.2 E F0(.)A F1(*cinde)5.263 E(x)-.2 E F0 .263
-(is modi\214ed to point to after the)2.763 F -2.15 -.25(ev e)108 681.6 T
-.71(nt speci\214er).25 F 5.71(.A)-.55 G 3.21(tf)-5.71 G .71
-(unction entry)-3.21 F(,)-.65 E F1(cinde)3.21 E(x)-.2 E F0 .709
-(points to the inde)3.21 F 3.209(xi)-.15 G(nto)-3.209 E F1(string)3.209
-E F0 .709(where the history e)3.209 F -.15(ve)-.25 G .709
-(nt speci\214ca-).15 F .527(tion be)108 693.6 R(gins.)-.15 E F1(qc)5.527
-E(har)-.15 E F0 .527(is a character that is allo)3.027 F .527
-(wed to end the e)-.25 F -.15(ve)-.25 G .528
-(nt speci\214cation in addition to the `).15 F(`normal')-.74 E(')-.74 E
-(terminating characters.)108 705.6 Q F1 -.15(ch)108 729.6 S(ar **).15 E
-F2(history_tok)2.5 E(enize)-.1 E F0(\()4.166 E F1(const c)A(har *string)
--.15 E F0(\))1.666 E(GNU History 4.3)72 768 Q(2002 January 31)131.79 E
-(5)195.95 E EP
-%%Page: 6 6
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF(HIST)72 48 Q(OR)-.18 E 357.18(Y\(3\) HIST)-.65 F
-(OR)-.18 E(Y\(3\))-.65 E .239(Return an array of tok)108 84 R .239
-(ens parsed out of)-.1 F/F1 10/Times-Italic@0 SF(string)2.739 E F0 2.739
-(,m)C .238(uch as the shell might.)-2.739 F .238(The tok)5.238 F .238
-(ens are split on the charac-)-.1 F(ters in the)108 96 Q/F2 10
-/Times-Bold@0 SF(history_w)2.5 E(ord_delimiters)-.1 E F0 -.25(va)2.5 G
-(riable, and shell quoting con).25 E -.15(ve)-.4 G(ntions are obe).15 E
-(yed.)-.15 E F1 -.15(ch)108 120 S(ar *).15 E F2(history_ar)2.5 E
-(g_extract)-.1 E F0(\()4.166 E F1(int \214r)A -.834(st, int)-.1 F -.834
-(last, const)2.5 F -.15(ch)2.5 G(ar *string).15 E F0(\))3.332 E .025
-(Extract a string se)108 132 R .025(gment consisting of the)-.15 F F1
-<8c72>2.526 E(st)-.1 E F0(through)2.526 E F1(last)2.526 E F0(ar)2.526 E
-.026(guments present in)-.18 F F1(string)2.526 E F0 5.026(.A)C -.18(rg)
--5.026 G .026(uments are split).18 F(using)108 144 Q F2(history_tok)2.5
-E(enize\(\))-.1 E F0(.)A F2(History V)87 172.8 Q(ariables)-.92 E F0
-(This section describes the e)108 184.8 Q(xternally-visible v)-.15 E
-(ariables e)-.25 E(xported by the GNU History Library)-.15 E(.)-.65 E F1
-(int)108 208.8 Q F2(history_base)2.5 E F0(The logical of)108 220.8 Q
-(fset of the \214rst entry in the history list.)-.25 E F1(int)108 244.8
-Q F2(history_length)2.5 E F0
-(The number of entries currently stored in the history list.)108 256.8 Q
-F1(int)108 280.8 Q F2(history_max_entries)2.5 E F0
-(The maximum number of history entries.)108 292.8 Q
-(This must be changed using)5 E F2(sti\215e_history\(\))2.5 E F0(.)A F1
--.15(ch)108 316.8 S(ar).15 E F2(history_expansion_char)2.5 E F0
-(The character that introduces a history e)108 328.8 Q -.15(ve)-.25 G
-2.5(nt. The).15 F(def)2.5 E(ault is)-.1 E F2(!)2.5 E F0 5(.S)C
-(etting this to 0 inhibits history e)-5 E(xpansion.)-.15 E F1 -.15(ch)
-108 352.8 S(ar).15 E F2(history_subst_char)2.5 E F0
-(The character that in)108 364.8 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(sw).1 G
-(ord substitution if found at the start of a line.)-2.6 E(The def)5 E
-(ault is)-.1 E F2(^)2.5 E F0(.)A F1 -.15(ch)108 388.8 S(ar).15 E F2
-(history_comment_char)2.5 E F0 .117(During tok)108 400.8 R .117
-(enization, if this character is seen as the \214rst character of a w)
--.1 F .117(ord, then it and all subsequent char)-.1 F(-)-.2 E .276
-(acters up to a ne)108 412.8 R .276
-(wline are ignored, suppressing history e)-.25 F .276
-(xpansion for the remainder of the line.)-.15 F .277(This is dis-)5.276
-F(abled by def)108 424.8 Q(ault.)-.1 E F1 -.15(ch)108 448.8 S(ar *).15 E
-F2(history_w)2.5 E(ord_delimiters)-.1 E F0
-(The characters that separate tok)108 460.8 Q(ens for)-.1 E F2
-(history_tok)2.5 E(enize\(\))-.1 E F0 5(.T)C(he def)-5 E(ault v)-.1 E
-(alue is)-.25 E F2 2.5("\\)2.5 G(t\\n\(\)<>;&|")-2.5 E F0(.)A F1 -.15
-(ch)108 484.8 S(ar *).15 E F2(history_no_expand_chars)2.5 E F0 2.054
-(The list of characters which inhibit history e)108 496.8 R 2.054
-(xpansion if found immediately follo)-.15 F(wing)-.25 E F2
-(history_expan-)4.554 E(sion_char)108 508.8 Q F0 5(.T)C(he def)-5 E
-(ault is space, tab, ne)-.1 E(wline,)-.25 E F2(\\r)2.5 E F0 2.5(,a)C(nd)
--2.5 E F2(=)2.5 E F0(.)A F1 -.15(ch)108 532.8 S(ar *).15 E F2
-(history_sear)2.5 E(ch_delimiter_chars)-.18 E F0 .401(The list of addit\
-ional characters which can delimit a history search string, in addition\
- to space, tab,)108 544.8 R F1(:)2.901 E F0(and)2.901 E F1(?)2.902 E F0
-(in the case of a substring search.)108 556.8 Q(The def)5 E
-(ault is empty)-.1 E(.)-.65 E F1(int)108 580.8 Q F2
-(history_quotes_inhibit_expansion)2.5 E F0 .625
-(If non-zero, single-quoted w)108 592.8 R .625
-(ords are not scanned for the history e)-.1 F .624(xpansion character)
--.15 F 5.624(.T)-.55 G .624(he def)-5.624 F .624(ault v)-.1 F .624
-(alue is)-.25 F(0.)108 604.8 Q F1(rl_lineb)108 628.8 Q(uf_func_t *)-.2 E
-F2(history_inhibit_expansion_function)2.5 E F0 .347
-(This should be set to the address of a function that tak)108 640.8 R
-.348(es tw)-.1 F 2.848(oa)-.1 G -.18(rg)-2.848 G .348(uments: a).18 F F2
-.348(char *)2.848 F F0(\()2.848 E F1(string)A F0 2.848(\)a)C .348(nd an)
--2.848 F F2(int)2.848 E F0(inde)2.848 E(x)-.15 E .228
-(into that string \()108 652.8 R F1(i)A F0 2.728(\). It)B .227
-(should return a non-zero v)2.727 F .227(alue if the history e)-.25 F
-.227(xpansion starting at)-.15 F F1(string[i])2.727 E F0 .227
-(should not)2.727 F .019(be performed; zero if the e)108 664.8 R .019
-(xpansion should be done.)-.15 F .019
-(It is intended for use by applications lik)5.019 F(e)-.1 E F2(bash)
-2.519 E F0 .019(that use)2.519 F(the history e)108 676.8 Q
-(xpansion character for additional purposes.)-.15 E(By def)5 E
-(ault, this v)-.1 E(ariable is set to)-.25 E F2(NULL)2.5 E F0(.)A/F3
-10.95/Times-Bold@0 SF(FILES)72 693.6 Q F1(~/.history)109.666 705.6 Q F0
-(Def)144 717.6 Q(ault \214lename for reading and writing sa)-.1 E -.15
-(ve)-.2 G 2.5(dh).15 G(istory)-2.5 E(GNU History 4.3)72 768 Q
-(2002 January 31)131.79 E(6)195.95 E EP
-%%Page: 7 7
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF(HIST)72 48 Q(OR)-.18 E 357.18(Y\(3\) HIST)-.65 F
-(OR)-.18 E(Y\(3\))-.65 E/F1 10.95/Times-Bold@0 SF(SEE ALSO)72 84 Q/F2 10
-/Times-Italic@0 SF(The Gnu Readline Libr)108 96 Q(ary)-.15 E F0 2.5(,B)C
-(rian F)-2.5 E(ox and Chet Rame)-.15 E(y)-.15 E F2(The Gnu History Libr)
-108 108 Q(ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E(ox and Chet Rame)-.15 E
-(y)-.15 E F2(bash)108 120 Q F0(\(1\))A F2 -.37(re)108 132 S(adline).37 E
-F0(\(3\))A F1 -.548(AU)72 148.8 S(THORS).548 E F0(Brian F)108 160.8 Q
-(ox, Free Softw)-.15 E(are F)-.1 E(oundation)-.15 E(bfox@gnu.or)108
-172.8 Q(g)-.18 E(Chet Rame)108 189.6 Q 1.3 -.65(y, C)-.15 H(ase W).65 E
-(estern Reserv)-.8 E 2.5(eU)-.15 G(ni)-2.5 E -.15(ve)-.25 G(rsity).15 E
-(chet@ins.CWR)108 201.6 Q(U.Edu)-.4 E F1 -.11(BU)72 218.4 S 2.738(GR).11
-G(EPOR)-2.738 E(TS)-.438 E F0 .16(If you \214nd a b)108 230.4 R .16
-(ug in the)-.2 F/F3 10/Times-Bold@0 SF(history)2.66 E F0(library)2.66 E
-2.66(,y)-.65 G .16(ou should report it.)-2.66 F .16
-(But \214rst, you should mak)5.16 F 2.66(es)-.1 G .16
-(ure that it really is)-2.66 F 2.5(ab)108 242.4 S
-(ug, and that it appears in the latest v)-2.7 E(ersion of the)-.15 E F3
-(history)2.5 E F0(library that you ha)2.5 E -.15(ve)-.2 G(.).15 E .704
-(Once you ha)108 259.2 R 1.004 -.15(ve d)-.2 H .704(etermined that a b)
-.15 F .704(ug actually e)-.2 F .704(xists, mail a b)-.15 F .705
-(ug report to)-.2 F F2 -.2(bu)3.205 G(g\255r).2 E(eadline)-.37 E F0(@)A
-F2(gnu.or)A(g)-.37 E F0 5.705(.I)C 3.205(fy)-5.705 G(ou)-3.205 E(ha)108
-271.2 Q 1.81 -.15(ve a \214)-.2 H 1.51
-(x, you are welcome to mail that as well!).15 F 1.509
-(Suggestions and `philosophical' b)6.509 F 1.509(ug reports may be)-.2 F
-(mailed to)108 283.2 Q F2 -.2(bu)2.5 G(g-r).2 E(eadline)-.37 E F0(@)A F2
-(gnu.or)A(g)-.37 E F0(or posted to the Usenet ne)2.5 E(wsgroup)-.25 E F3
-(gnu.bash.b)2.5 E(ug)-.2 E F0(.)A(Comments and b)108 300 Q
-(ug reports concerning this manual page should be directed to)-.2 E F2
--.15(ch)2.5 G(et@ins.CWR).15 E -.25(U.)-.4 G(Edu).25 E F0(.).25 E
-(GNU History 4.3)72 768 Q(2002 January 31)131.79 E(7)195.95 E EP
-%%Trailer
-end
-%%EOF
diff --git a/readline-doc-4.3/doc/readline.0 b/readline-doc-4.3/doc/readline.0
deleted file mode 100644
index 87beeac..0000000
--- a/readline-doc-4.3/doc/readline.0
+++ /dev/null
@@ -1,997 +0,0 @@
-READLINE(3) READLINE(3)
-
-
-
-NNAAMMEE
- readline - get a line from a user with editing
-
-SSYYNNOOPPSSIISS
- ##iinncclluuddee <<ssttddiioo..hh>>
- ##iinncclluuddee <<rreeaaddlliinnee//rreeaaddlliinnee..hh>>
- ##iinncclluuddee <<rreeaaddlliinnee//hhiissttoorryy..hh>>
-
- _c_h_a_r _*
- rreeaaddlliinnee (_c_o_n_s_t _c_h_a_r _*_p_r_o_m_p_t);
-
-CCOOPPYYRRIIGGHHTT
- Readline is Copyright (C) 1989-2002 by the Free Software
- Foundation, Inc.
-
-DDEESSCCRRIIPPTTIIOONN
- rreeaaddlliinnee will read a line from the terminal and return it,
- using pprroommpptt as a prompt. If pprroommpptt is NNUULLLL or the empty
- string, no prompt is issued. The line returned is allo-
- cated with _m_a_l_l_o_c(3); the caller must free it when fin-
- ished. The line returned has the final newline removed,
- so only the text of the line remains.
-
- rreeaaddlliinnee offers editing capabilities while the user is
- entering the line. By default, the line editing commands
- are similar to those of emacs. A vi-style line editing
- interface is also available.
-
- This manual page describes only the most basic use of
- rreeaaddlliinnee. Much more functionality is available; see _T_h_e
- _G_N_U _R_e_a_d_l_i_n_e _L_i_b_r_a_r_y and _T_h_e _G_N_U _H_i_s_t_o_r_y _L_i_b_r_a_r_y for addi-
- tional information.
-
-RREETTUURRNN VVAALLUUEE
- rreeaaddlliinnee returns the text of the line read. A blank line
- returns the empty string. If EEOOFF is encountered while
- reading a line, and the line is empty, NNUULLLL is returned.
- If an EEOOFF is read with a non-empty line, it is treated as
- a newline.
-
-NNOOTTAATTIIOONN
- An emacs-style notation is used to denote keystrokes.
- Control keys are denoted by C-_k_e_y, e.g., C-n means Con-
- trol-N. Similarly, _m_e_t_a keys are denoted by M-_k_e_y, so M-x
- means Meta-X. (On keyboards without a _m_e_t_a key, M-_x means
- ESC _x, i.e., press the Escape key then the _x key. This
- makes ESC the _m_e_t_a _p_r_e_f_i_x. The combination M-C-_x means
- ESC-Control-_x, or press the Escape key then hold the Con-
- trol key while pressing the _x key.)
-
- Readline commands may be given numeric _a_r_g_u_m_e_n_t_s, which
- normally act as a repeat count. Sometimes, however, it is
- the sign of the argument that is significant. Passing a
- negative argument to a command that acts in the forward
- direction (e.g., kkiillll--lliinnee) causes that command to act in
- a backward direction. Commands whose behavior with argu-
- ments deviates from this are noted.
-
- When a command is described as _k_i_l_l_i_n_g text, the text
- deleted is saved for possible future retrieval (_y_a_n_k_i_n_g).
- The killed text is saved in a _k_i_l_l _r_i_n_g. Consecutive
- kills cause the text to be accumulated into one unit,
- which can be yanked all at once. Commands which do not
- kill text separate the chunks of text on the kill ring.
-
-IINNIITTIIAALLIIZZAATTIIOONN FFIILLEE
- Readline is customized by putting commands in an initial-
- ization file (the _i_n_p_u_t_r_c file). The name of this file is
- taken from the value of the IINNPPUUTTRRCC environment variable.
- If that variable is unset, the default is _~_/_._i_n_p_u_t_r_c.
- When a program which uses the readline library starts up,
- the init file is read, and the key bindings and variables
- are set. There are only a few basic constructs allowed in
- the readline init file. Blank lines are ignored. Lines
- beginning with a ## are comments. Lines beginning with a $$
- indicate conditional constructs. Other lines denote key
- bindings and variable settings. Each program using this
- library may add its own commands and bindings.
-
- For example, placing
-
- M-Control-u: universal-argument
- or
- C-Meta-u: universal-argument
-
- into the _i_n_p_u_t_r_c would make M-C-u execute the readline
- command _u_n_i_v_e_r_s_a_l_-_a_r_g_u_m_e_n_t.
-
- The following symbolic character names are recognized
- while processing key bindings: _D_E_L, _E_S_C, _E_S_C_A_P_E, _L_F_D, _N_E_W_-
- _L_I_N_E, _R_E_T, _R_E_T_U_R_N, _R_U_B_O_U_T, _S_P_A_C_E, _S_P_C, and _T_A_B.
-
- In addition to command names, readline allows keys to be
- bound to a string that is inserted when the key is pressed
- (a _m_a_c_r_o).
-
-
- KKeeyy BBiinnddiinnggss
- The syntax for controlling key bindings in the _i_n_p_u_t_r_c
- file is simple. All that is required is the name of the
- command or the text of a macro and a key sequence to which
- it should be bound. The name may be specified in one of
- two ways: as a symbolic key name, possibly with _M_e_t_a_- or
- _C_o_n_t_r_o_l_- prefixes, or as a key sequence.
-
- When using the form kkeeyynnaammee:_f_u_n_c_t_i_o_n_-_n_a_m_e or _m_a_c_r_o, _k_e_y_-
- _n_a_m_e is the name of a key spelled out in English. For
- example:
-
- Control-u: universal-argument
- Meta-Rubout: backward-kill-word
- Control-o: "> output"
-
- In the above example, _C_-_u is bound to the function uunniivveerr--
- ssaall--aarrgguummeenntt, _M_-_D_E_L is bound to the function bbaacckk--
- wwaarrdd--kkiillll--wwoorrdd, and _C_-_o is bound to run the macro
- expressed on the right hand side (that is, to insert the
- text ``> output'' into the line).
-
- In the second form, ""kkeeyysseeqq"":_f_u_n_c_t_i_o_n_-_n_a_m_e or _m_a_c_r_o, kkeeyy--
- sseeqq differs from kkeeyynnaammee above in that strings denoting an
- entire key sequence may be specified by placing the
- sequence within double quotes. Some GNU Emacs style key
- escapes can be used, as in the following example, but the
- symbolic character names are not recognized.
-
- "\C-u": universal-argument
- "\C-x\C-r": re-read-init-file
- "\e[11~": "Function Key 1"
-
- In this example, _C_-_u is again bound to the function uunnii--
- vveerrssaall--aarrgguummeenntt. _C_-_x _C_-_r is bound to the function
- rree--rreeaadd--iinniitt--ffiillee, and _E_S_C _[ _1 _1 _~ is bound to insert the
- text ``Function Key 1''.
-
- The full set of GNU Emacs style escape sequences available
- when specifying key sequences is
- \\CC-- control prefix
- \\MM-- meta prefix
- \\ee an escape character
- \\\\ backslash
- \\"" literal ", a double quote
- \\'' literal ', a single quote
-
- In addition to the GNU Emacs style escape sequences, a
- second set of backslash escapes is available:
- \\aa alert (bell)
- \\bb backspace
- \\dd delete
- \\ff form feed
- \\nn newline
- \\rr carriage return
- \\tt horizontal tab
- \\vv vertical tab
- \\_n_n_n the eight-bit character whose value is the
- octal value _n_n_n (one to three digits)
- \\xx_H_H the eight-bit character whose value is the
- hexadecimal value _H_H (one or two hex digits)
-
- When entering the text of a macro, single or double quotes
- should be used to indicate a macro definition. Unquoted
- text is assumed to be a function name. In the macro body,
- the backslash escapes described above are expanded. Back-
- slash will quote any other character in the macro text,
- including " and '.
-
- BBaasshh allows the current readline key bindings to be dis-
- played or modified with the bbiinndd builtin command. The
- editing mode may be switched during interactive use by
- using the --oo option to the sseett builtin command. Other
- programs using this library provide similar mechanisms.
- The _i_n_p_u_t_r_c file may be edited and re-read if a program
- does not provide any other means to incorporate new bind-
- ings.
-
- VVaarriiaabblleess
- Readline has variables that can be used to further cus-
- tomize its behavior. A variable may be set in the _i_n_p_u_t_r_c
- file with a statement of the form
-
- sseett _v_a_r_i_a_b_l_e_-_n_a_m_e _v_a_l_u_e
-
- Except where noted, readline variables can take the values
- OOnn or OOffff (without regard to case). The variables and
- their default values are:
-
- bbeellll--ssttyyllee ((aauuddiibbllee))
- Controls what happens when readline wants to ring
- the terminal bell. If set to nnoonnee, readline never
- rings the bell. If set to vviissiibbllee, readline uses a
- visible bell if one is available. If set to aauuddii--
- bbllee, readline attempts to ring the terminal's bell.
- ccoommmmeenntt--bbeeggiinn ((````##''''))
- The string that is inserted in vvii mode when the
- iinnsseerrtt--ccoommmmeenntt command is executed. This command
- is bound to MM--## in emacs mode and to ## in vi com-
- mand mode.
- ccoommpplleettiioonn--iiggnnoorree--ccaassee ((OOffff))
- If set to OOnn, readline performs filename matching
- and completion in a case-insensitive fashion.
- ccoommpplleettiioonn--qquueerryy--iitteemmss ((110000))
- This determines when the user is queried about
- viewing the number of possible completions gener-
- ated by the ppoossssiibbllee--ccoommpplleettiioonnss command. It may
- be set to any integer value greater than or equal
- to zero. If the number of possible completions is
- greater than or equal to the value of this vari-
- able, the user is asked whether or not he wishes to
- view them; otherwise they are simply listed on the
- terminal.
- ccoonnvveerrtt--mmeettaa ((OOnn))
- If set to OOnn, readline will convert characters with
- the eighth bit set to an ASCII key sequence by
- stripping the eighth bit and prefixing it with an
- escape character (in effect, using escape as the
- _m_e_t_a _p_r_e_f_i_x).
- ddiissaabbllee--ccoommpplleettiioonn ((OOffff))
- If set to OOnn, readline will inhibit word comple-
- tion. Completion characters will be inserted into
- the line as if they had been mapped to sseellff--iinnsseerrtt.
- eeddiittiinngg--mmooddee ((eemmaaccss))
- Controls whether readline begins with a set of key
- bindings similar to emacs or vi. eeddiittiinngg--mmooddee can
- be set to either eemmaaccss or vvii.
- eennaabbllee--kkeeyyppaadd ((OOffff))
- When set to OOnn, readline will try to enable the
- application keypad when it is called. Some systems
- need this to enable the arrow keys.
- eexxppaanndd--ttiillddee ((OOffff))
- If set to oonn, tilde expansion is performed when
- readline attempts word completion.
- hhiissttoorryy--pprreesseerrvvee--ppooiinntt
- If set to oonn, the history code attempts to place
- point at the same location on each history line
- retrived with pprreevviioouuss--hhiissttoorryy or nneexxtt--hhiissttoorryy.
- hhoorriizzoonnttaall--ssccrroollll--mmooddee ((OOffff))
- When set to OOnn, makes readline use a single line
- for display, scrolling the input horizontally on a
- single screen line when it becomes longer than the
- screen width rather than wrapping to a new line.
- iinnppuutt--mmeettaa ((OOffff))
- If set to OOnn, readline will enable eight-bit input
- (that is, it will not clear the eighth bit in the
- characters it reads), regardless of what the termi-
- nal claims it can support. The name mmeettaa--ffllaagg is a
- synonym for this variable.
- iisseeaarrcchh--tteerrmmiinnaattoorrss ((````CC--[[ CC--JJ''''))
- The string of characters that should terminate an
- incremental search without subsequently executing
- the character as a command. If this variable has
- not been given a value, the characters _E_S_C and _C_-_J
- will terminate an incremental search.
- kkeeyymmaapp ((eemmaaccss))
- Set the current readline keymap. The set of legal
- keymap names is _e_m_a_c_s_, _e_m_a_c_s_-_s_t_a_n_d_a_r_d_, _e_m_a_c_s_-_m_e_t_a_,
- _e_m_a_c_s_-_c_t_l_x_, _v_i_, _v_i_-_m_o_v_e_, _v_i_-_c_o_m_m_a_n_d, and _v_i_-_i_n_s_e_r_t.
- _v_i is equivalent to _v_i_-_c_o_m_m_a_n_d; _e_m_a_c_s is equivalent
- to _e_m_a_c_s_-_s_t_a_n_d_a_r_d. The default value is _e_m_a_c_s.
- The value of eeddiittiinngg--mmooddee also affects the default
- keymap.
- mmaarrkk--ddiirreeccttoorriieess ((OOnn))
- If set to OOnn, completed directory names have a
- slash appended.
- mmaarrkk--mmooddiiffiieedd--lliinneess ((OOffff))
- If set to OOnn, history lines that have been modified
- are displayed with a preceding asterisk (**).
- mmaarrkk--ssyymmlliinnkkeedd--ddiirreeccttoorriieess ((OOffff))
- If set to OOnn, completed names which are symbolic
- links to directories have a slash appended (subject
- to the value of mmaarrkk--ddiirreeccttoorriieess).
- mmaattcchh--hhiiddddeenn--ffiilleess ((OOnn))
- This variable, when set to OOnn, causes readline to
- match files whose names begin with a `.' (hidden
- files) when performing filename completion, unless
- the leading `.' is supplied by the user in the
- filename to be completed.
- oouuttppuutt--mmeettaa ((OOffff))
- If set to OOnn, readline will display characters with
- the eighth bit set directly rather than as a meta-
- prefixed escape sequence.
- ppaaggee--ccoommpplleettiioonnss ((OOnn))
- If set to OOnn, readline uses an internal _m_o_r_e-like
- pager to display a screenful of possible comple-
- tions at a time.
- pprriinntt--ccoommpplleettiioonnss--hhoorriizzoonnttaallllyy ((OOffff))
- If set to OOnn, readline will display completions
- with matches sorted horizontally in alphabetical
- order, rather than down the screen.
- sshhooww--aallll--iiff--aammbbiigguuoouuss ((OOffff))
- This alters the default behavior of the completion
- functions. If set to oonn, words which have more
- than one possible completion cause the matches to
- be listed immediately instead of ringing the bell.
- vviissiibbllee--ssttaattss ((OOffff))
- If set to OOnn, a character denoting a file's type as
- reported by _s_t_a_t(2) is appended to the filename
- when listing possible completions.
-
- CCoonnddiittiioonnaall CCoonnssttrruuccttss
- Readline implements a facility similar in spirit to the
- conditional compilation features of the C preprocessor
- which allows key bindings and variable settings to be per-
- formed as the result of tests. There are four parser
- directives used.
-
- $$iiff The $$iiff construct allows bindings to be made based
- on the editing mode, the terminal being used, or
- the application using readline. The text of the
- test extends to the end of the line; no characters
- are required to isolate it.
-
- mmooddee The mmooddee== form of the $$iiff directive is used
- to test whether readline is in emacs or vi
- mode. This may be used in conjunction with
- the sseett kkeeyymmaapp command, for instance, to set
- bindings in the _e_m_a_c_s_-_s_t_a_n_d_a_r_d and _e_m_a_c_s_-
- _c_t_l_x keymaps only if readline is starting
- out in emacs mode.
-
- tteerrmm The tteerrmm== form may be used to include termi-
- nal-specific key bindings, perhaps to bind
- the key sequences output by the terminal's
- function keys. The word on the right side
- of the == is tested against the full name of
- the terminal and the portion of the terminal
- name before the first --. This allows _s_u_n to
- match both _s_u_n and _s_u_n_-_c_m_d, for instance.
-
- aapppplliiccaattiioonn
- The aapppplliiccaattiioonn construct is used to include
- application-specific settings. Each program
- using the readline library sets the _a_p_p_l_i_c_a_-
- _t_i_o_n _n_a_m_e, and an initialization file can
- test for a particular value. This could be
- used to bind key sequences to functions use-
- ful for a specific program. For instance,
- the following command adds a key sequence
- that quotes the current or previous word in
- Bash:
-
- $$iiff Bash
- # Quote the current or previous word
- "\C-xq": "\eb\"\ef\""
- $$eennddiiff
-
- $$eennddiiff This command, as seen in the previous example, ter-
- minates an $$iiff command.
-
- $$eellssee Commands in this branch of the $$iiff directive are
- executed if the test fails.
-
- $$iinncclluuddee
- This directive takes a single filename as an argu-
- ment and reads commands and bindings from that
- file. For example, the following directive would
- read _/_e_t_c_/_i_n_p_u_t_r_c:
-
- $$iinncclluuddee _/_e_t_c_/_i_n_p_u_t_r_c
-
-SSEEAARRCCHHIINNGG
- Readline provides commands for searching through the com-
- mand history for lines containing a specified string.
- There are two search modes: _i_n_c_r_e_m_e_n_t_a_l and _n_o_n_-_i_n_c_r_e_m_e_n_-
- _t_a_l.
-
- Incremental searches begin before the user has finished
- typing the search string. As each character of the search
- string is typed, readline displays the next entry from the
- history matching the string typed so far. An incremental
- search requires only as many characters as needed to find
- the desired history entry. To search backward in the his-
- tory for a particular string, type CC--rr. Typing CC--ss
- searches forward through the history. The characters pre-
- sent in the value of the iisseeaarrcchh--tteerrmmiinnaattoorrss variable are
- used to terminate an incremental search. If that variable
- has not been assigned a value the _E_s_c_a_p_e and CC--JJ charac-
- ters will terminate an incremental search. CC--GG will abort
- an incremental search and restore the original line. When
- the search is terminated, the history entry containing the
- search string becomes the current line.
-
- To find other matching entries in the history list, type
- CC--ss or CC--rr as appropriate. This will search backward or
- forward in the history for the next line matching the
- search string typed so far. Any other key sequence bound
- to a readline command will terminate the search and exe-
- cute that command. For instance, a newline will terminate
- the search and accept the line, thereby executing the com-
- mand from the history list. A movement command will ter-
- minate the search, make the last line found the current
- line, and begin editing.
-
- Non-incremental searches read the entire search string
- before starting to search for matching history lines. The
- search string may be typed by the user or be part of the
- contents of the current line.
-
-EEDDIITTIINNGG CCOOMMMMAANNDDSS
- The following is a list of the names of the commands and
- the default key sequences to which they are bound. Com-
- mand names without an accompanying key sequence are
- unbound by default.
-
- In the following descriptions, _p_o_i_n_t refers to the current
- cursor position, and _m_a_r_k refers to a cursor position
- saved by the sseett--mmaarrkk command. The text between the point
- and mark is referred to as the _r_e_g_i_o_n.
-
- CCoommmmaannddss ffoorr MMoovviinngg
- bbeeggiinnnniinngg--ooff--lliinnee ((CC--aa))
- Move to the start of the current line.
- eenndd--ooff--lliinnee ((CC--ee))
- Move to the end of the line.
- ffoorrwwaarrdd--cchhaarr ((CC--ff))
- Move forward a character.
- bbaacckkwwaarrdd--cchhaarr ((CC--bb))
- Move back a character.
- ffoorrwwaarrdd--wwoorrdd ((MM--ff))
- Move forward to the end of the next word. Words
- are composed of alphanumeric characters (letters
- and digits).
- bbaacckkwwaarrdd--wwoorrdd ((MM--bb))
- Move back to the start of the current or previous
- word. Words are composed of alphanumeric charac-
- ters (letters and digits).
- cclleeaarr--ssccrreeeenn ((CC--ll))
- Clear the screen leaving the current line at the
- top of the screen. With an argument, refresh the
- current line without clearing the screen.
- rreeddrraaww--ccuurrrreenntt--lliinnee
- Refresh the current line.
-
- CCoommmmaannddss ffoorr MMaanniippuullaattiinngg tthhee HHiissttoorryy
- aacccceepptt--lliinnee ((NNeewwlliinnee,, RReettuurrnn))
- Accept the line regardless of where the cursor is.
- If this line is non-empty, it may be added to the
- history list for future recall with aadddd__hhiissttoorryy(()).
- If the line is a modified history line, the history
- line is restored to its original state.
- pprreevviioouuss--hhiissttoorryy ((CC--pp))
- Fetch the previous command from the history list,
- moving back in the list.
- nneexxtt--hhiissttoorryy ((CC--nn))
- Fetch the next command from the history list, mov-
- ing forward in the list.
- bbeeggiinnnniinngg--ooff--hhiissttoorryy ((MM--<<))
- Move to the first line in the history.
- eenndd--ooff--hhiissttoorryy ((MM-->>))
- Move to the end of the input history, i.e., the
- line currently being entered.
- rreevveerrssee--sseeaarrcchh--hhiissttoorryy ((CC--rr))
- Search backward starting at the current line and
- moving `up' through the history as necessary. This
- is an incremental search.
- ffoorrwwaarrdd--sseeaarrcchh--hhiissttoorryy ((CC--ss))
- Search forward starting at the current line and
- moving `down' through the history as necessary.
- This is an incremental search.
- nnoonn--iinnccrreemmeennttaall--rreevveerrssee--sseeaarrcchh--hhiissttoorryy ((MM--pp))
- Search backward through the history starting at the
- current line using a non-incremental search for a
- string supplied by the user.
- nnoonn--iinnccrreemmeennttaall--ffoorrwwaarrdd--sseeaarrcchh--hhiissttoorryy ((MM--nn))
- Search forward through the history using a non-
- incremental search for a string supplied by the
- user.
- hhiissttoorryy--sseeaarrcchh--ffoorrwwaarrdd
- Search forward through the history for the string
- of characters between the start of the current line
- and the current cursor position (the _p_o_i_n_t). This
- is a non-incremental search.
- hhiissttoorryy--sseeaarrcchh--bbaacckkwwaarrdd
- Search backward through the history for the string
- of characters between the start of the current line
- and the point. This is a non-incremental search.
- yyaannkk--nntthh--aarrgg ((MM--CC--yy))
- Insert the first argument to the previous command
- (usually the second word on the previous line) at
- point. With an argument _n, insert the _nth word
- from the previous command (the words in the previ-
- ous command begin with word 0). A negative argu-
- ment inserts the _nth word from the end of the pre-
- vious command.
- yyaannkk--llaasstt--aarrgg ((MM--..,, MM--__))
- Insert the last argument to the previous command
- (the last word of the previous history entry).
- With an argument, behave exactly like yyaannkk--nntthh--aarrgg.
- Successive calls to yyaannkk--llaasstt--aarrgg move back through
- the history list, inserting the last argument of
- each line in turn.
-
- CCoommmmaannddss ffoorr CChhaannggiinngg TTeexxtt
- ddeelleettee--cchhaarr ((CC--dd))
- Delete the character at point. If point is at the
- beginning of the line, there are no characters in
- the line, and the last character typed was not
- bound to ddeelleettee--cchhaarr, then return EEOOFF.
- bbaacckkwwaarrdd--ddeelleettee--cchhaarr ((RRuubboouutt))
- Delete the character behind the cursor. When given
- a numeric argument, save the deleted text on the
- kill ring.
- ffoorrwwaarrdd--bbaacckkwwaarrdd--ddeelleettee--cchhaarr
- Delete the character under the cursor, unless the
- cursor is at the end of the line, in which case the
- character behind the cursor is deleted.
- qquuootteedd--iinnsseerrtt ((CC--qq,, CC--vv))
- Add the next character that you type to the line
- verbatim. This is how to insert characters like
- CC--qq, for example.
- ttaabb--iinnsseerrtt ((MM--TTAABB))
- Insert a tab character.
- sseellff--iinnsseerrtt ((aa,, bb,, AA,, 11,, !!,, ......))
- Insert the character typed.
- ttrraannssppoossee--cchhaarrss ((CC--tt))
- Drag the character before point forward over the
- character at point, moving point forward as well.
- If point is at the end of the line, then this
- transposes the two characters before point. Nega-
- tive arguments have no effect.
- ttrraannssppoossee--wwoorrddss ((MM--tt))
- Drag the word before point past the word after
- point, moving point over that word as well. If
- point is at the end of the line, this transposes
- the last two words on the line.
- uuppccaassee--wwoorrdd ((MM--uu))
- Uppercase the current (or following) word. With a
- negative argument, uppercase the previous word, but
- do not move point.
- ddoowwnnccaassee--wwoorrdd ((MM--ll))
- Lowercase the current (or following) word. With a
- negative argument, lowercase the previous word, but
- do not move point.
- ccaappiittaalliizzee--wwoorrdd ((MM--cc))
- Capitalize the current (or following) word. With a
- negative argument, capitalize the previous word,
- but do not move point.
- oovveerrwwrriittee--mmooddee
- Toggle overwrite mode. With an explicit positive
- numeric argument, switches to overwrite mode. With
- an explicit non-positive numeric argument, switches
- to insert mode. This command affects only eemmaaccss
- mode; vvii mode does overwrite differently. Each
- call to _r_e_a_d_l_i_n_e_(_) starts in insert mode. In over-
- write mode, characters bound to sseellff--iinnsseerrtt replace
- the text at point rather than pushing the text to
- the right. Characters bound to bbaacckk--
- wwaarrdd--ddeelleettee--cchhaarr replace the character before point
- with a space. By default, this command is unbound.
-
- KKiilllliinngg aanndd YYaannkkiinngg
- kkiillll--lliinnee ((CC--kk))
- Kill the text from point to the end of the line.
- bbaacckkwwaarrdd--kkiillll--lliinnee ((CC--xx RRuubboouutt))
- Kill backward to the beginning of the line.
- uunniixx--lliinnee--ddiissccaarrdd ((CC--uu))
- Kill backward from point to the beginning of the
- line. The killed text is saved on the kill-ring.
- kkiillll--wwhhoollee--lliinnee
- Kill all characters on the current line, no matter
- where point is.
- kkiillll--wwoorrdd ((MM--dd))
- Kill from point the end of the current word, or if
- between words, to the end of the next word. Word
- boundaries are the same as those used by ffoorr--
- wwaarrdd--wwoorrdd.
- bbaacckkwwaarrdd--kkiillll--wwoorrdd ((MM--RRuubboouutt))
- Kill the word behind point. Word boundaries are
- the same as those used by bbaacckkwwaarrdd--wwoorrdd.
- uunniixx--wwoorrdd--rruubboouutt ((CC--ww))
- Kill the word behind point, using white space as a
- word boundary. The killed text is saved on the
- kill-ring.
- ddeelleettee--hhoorriizzoonnttaall--ssppaaccee ((MM--\\))
- Delete all spaces and tabs around point.
- kkiillll--rreeggiioonn
- Kill the text between the point and _m_a_r_k (saved
- cursor position). This text is referred to as the
- _r_e_g_i_o_n.
- ccooppyy--rreeggiioonn--aass--kkiillll
- Copy the text in the region to the kill buffer.
- ccooppyy--bbaacckkwwaarrdd--wwoorrdd
- Copy the word before point to the kill buffer. The
- word boundaries are the same as bbaacckkwwaarrdd--wwoorrdd.
- ccooppyy--ffoorrwwaarrdd--wwoorrdd
- Copy the word following point to the kill buffer.
- The word boundaries are the same as ffoorrwwaarrdd--wwoorrdd.
- yyaannkk ((CC--yy))
- Yank the top of the kill ring into the buffer at
- point.
- yyaannkk--ppoopp ((MM--yy))
- Rotate the kill ring, and yank the new top. Only
- works following yyaannkk or yyaannkk--ppoopp.
-
- NNuummeerriicc AArrgguummeennttss
- ddiiggiitt--aarrgguummeenntt ((MM--00,, MM--11,, ......,, MM----))
- Add this digit to the argument already accumulat-
- ing, or start a new argument. M-- starts a nega-
- tive argument.
- uunniivveerrssaall--aarrgguummeenntt
- This is another way to specify an argument. If
- this command is followed by one or more digits,
- optionally with a leading minus sign, those digits
- define the argument. If the command is followed by
- digits, executing uunniivveerrssaall--aarrgguummeenntt again ends the
- numeric argument, but is otherwise ignored. As a
- special case, if this command is immediately fol-
- lowed by a character that is neither a digit or
- minus sign, the argument count for the next command
- is multiplied by four. The argument count is ini-
- tially one, so executing this function the first
- time makes the argument count four, a second time
- makes the argument count sixteen, and so on.
-
- CCoommpplleettiinngg
- ccoommpplleettee ((TTAABB))
- Attempt to perform completion on the text before
- point. The actual completion performed is applica-
- tion-specific. BBaasshh, for instance, attempts com-
- pletion treating the text as a variable (if the
- text begins with $$), username (if the text begins
- with ~~), hostname (if the text begins with @@), or
- command (including aliases and functions) in turn.
- If none of these produces a match, filename comple-
- tion is attempted. GGddbb, on the other hand, allows
- completion of program functions and variables, and
- only attempts filename completion under certain
- circumstances.
- ppoossssiibbllee--ccoommpplleettiioonnss ((MM--??))
- List the possible completions of the text before
- point.
- iinnsseerrtt--ccoommpplleettiioonnss ((MM--**))
- Insert all completions of the text before point
- that would have been generated by ppoossssiibbllee--ccoommppllee--
- ttiioonnss.
- mmeennuu--ccoommpplleettee
- Similar to ccoommpplleettee, but replaces the word to be
- completed with a single match from the list of pos-
- sible completions. Repeated execution of mmeennuu--ccoomm--
- pplleettee steps through the list of possible comple-
- tions, inserting each match in turn. At the end of
- the list of completions, the bell is rung (subject
- to the setting of 00aanndd tthhee oorriiggiinnaall tteexxtt iiss
- rreessttoorreedd.. AAnn aarrgguummeenntt ooff _n mmoovveess _n ppoossiittiioonnss ffoorr--
- wwaarrdd iinn tthhee lliisstt ooff mmaattcchheess;; aa nneeggaattiivvee aarrgguummeenntt
- mmaayy bbee uusseedd ttoo mmoovvee bbaacckkwwaarrdd tthhrroouugghh tthhee lliisstt..
- TThhiiss ccoommmmaanndd iiss iinntteennddeedd ttoo bbee bboouunndd ttoo TTAABB,, bbuutt iiss
- uunnbboouunndd bbyy ddeeffaauulltt..
- ddeelleettee--cchhaarr--oorr--lliisstt
- Deletes the character under the cursor if not at
- the beginning or end of the line (like ddeelleettee--
- cchhaarr). If at the end of the line, behaves identi-
- cally to ppoossssiibbllee--ccoommpplleettiioonnss.
-
- KKeeyybbooaarrdd MMaaccrrooss
- ssttaarrtt--kkbbdd--mmaaccrroo ((CC--xx (())
- Begin saving the characters typed into the current
- keyboard macro.
- eenndd--kkbbdd--mmaaccrroo ((CC--xx ))))
- Stop saving the characters typed into the current
- keyboard macro and store the definition.
- ccaallll--llaasstt--kkbbdd--mmaaccrroo ((CC--xx ee))
- Re-execute the last keyboard macro defined, by mak-
- ing the characters in the macro appear as if typed
- at the keyboard.
-
- MMiisscceellllaanneeoouuss
- rree--rreeaadd--iinniitt--ffiillee ((CC--xx CC--rr))
- Read in the contents of the _i_n_p_u_t_r_c file, and
- incorporate any bindings or variable assignments
- found there.
- aabboorrtt ((CC--gg))
- Abort the current editing command and ring the ter-
- minal's bell (subject to the setting of
- bbeellll--ssttyyllee).
- ddoo--uuppppeerrccaassee--vveerrssiioonn ((MM--aa,, MM--bb,, MM--_x,, ......))
- If the metafied character _x is lowercase, run the
- command that is bound to the corresponding upper-
- case character.
- pprreeffiixx--mmeettaa ((EESSCC))
- Metafy the next character typed. EESSCC ff is equiva-
- lent to MMeettaa--ff.
- uunnddoo ((CC--__,, CC--xx CC--uu))
- Incremental undo, separately remembered for each
- line.
- rreevveerrtt--lliinnee ((MM--rr))
- Undo all changes made to this line. This is like
- executing the uunnddoo command enough times to return
- the line to its initial state.
- ttiillddee--eexxppaanndd ((MM--&&))
- Perform tilde expansion on the current word.
- sseett--mmaarrkk ((CC--@@,, MM--<<ssppaaccee>>))
- Set the mark to the point. If a numeric argument
- is supplied, the mark is set to that position.
- eexxcchhaannggee--ppooiinntt--aanndd--mmaarrkk ((CC--xx CC--xx))
- Swap the point with the mark. The current cursor
- position is set to the saved position, and the old
- cursor position is saved as the mark.
- cchhaarraacctteerr--sseeaarrcchh ((CC--]]))
- A character is read and point is moved to the next
- occurrence of that character. A negative count
- searches for previous occurrences.
- cchhaarraacctteerr--sseeaarrcchh--bbaacckkwwaarrdd ((MM--CC--]]))
- A character is read and point is moved to the pre-
- vious occurrence of that character. A negative
- count searches for subsequent occurrences.
- iinnsseerrtt--ccoommmmeenntt ((MM--##))
- Without a numeric argument, the value of the read-
- line ccoommmmeenntt--bbeeggiinn variable is inserted at the
- beginning of the current line. If a numeric argu-
- ment is supplied, this command acts as a toggle:
- if the characters at the beginning of the line do
- not match the value of ccoommmmeenntt--bbeeggiinn, the value is
- inserted, otherwise the characters in ccoommmmeenntt--bbeeggiinn
- are deleted from the beginning of the line. In
- either case, the line is accepted as if a newline
- had been typed. The default value of ccoommmmeenntt--bbeeggiinn
- makes the current line a shell comment. If a
- numeric argument causes the comment character to be
- removed, the line will be executed by the shell.
- dduummpp--ffuunnccttiioonnss
- Print all of the functions and their key bindings
- to the readline output stream. If a numeric
- argument is supplied, the output is formatted in
- such a way that it can be made part of an _i_n_p_u_t_r_c
- file.
- dduummpp--vvaarriiaabblleess
- Print all of the settable variables and their val-
- ues to the readline output stream. If a numeric
- argument is supplied, the output is formatted in
- such a way that it can be made part of an _i_n_p_u_t_r_c
- file.
- dduummpp--mmaaccrrooss
- Print all of the readline key sequences bound to
- macros and the strings they ouput. If a numeric
- argument is supplied, the output is formatted in
- such a way that it can be made part of an _i_n_p_u_t_r_c
- file.
- eemmaaccss--eeddiittiinngg--mmooddee ((CC--ee))
- When in vvii command mode, this causes a switch to
- eemmaaccss editing mode.
- vvii--eeddiittiinngg--mmooddee ((MM--CC--jj))
- When in eemmaaccss editing mode, this causes a switch to
- vvii editing mode.
-
-DDEEFFAAUULLTT KKEEYY BBIINNDDIINNGGSS
- The following is a list of the default emacs and vi bind-
- ings. Characters with the eighth bit set are written as
- M-<character>, and are referred to as _m_e_t_a_f_i_e_d characters.
- The printable ASCII characters not mentioned in the list
- of emacs standard bindings are bound to the sseellff--iinnsseerrtt
- function, which just inserts the given character into the
- input line. In vi insertion mode, all characters not
- specifically mentioned are bound to sseellff--iinnsseerrtt. Charac-
- ters assigned to signal generation by _s_t_t_y(1) or the ter-
- minal driver, such as C-Z or C-C, retain that function.
- Upper and lower case metafied characters are bound to the
- same function in the emacs mode meta keymap. The remain-
- ing characters are unbound, which causes readline to ring
- the bell (subject to the setting of the bbeellll--ssttyyllee vari-
- able).
-
- EEmmaaccss MMooddee
- Emacs Standard bindings
-
- "C-@" set-mark
- "C-A" beginning-of-line
- "C-B" backward-char
- "C-D" delete-char
- "C-E" end-of-line
- "C-F" forward-char
- "C-G" abort
- "C-H" backward-delete-char
- "C-I" complete
- "C-J" accept-line
- "C-K" kill-line
- "C-L" clear-screen
- "C-M" accept-line
- "C-N" next-history
- "C-P" previous-history
- "C-Q" quoted-insert
- "C-R" reverse-search-history
- "C-S" forward-search-history
- "C-T" transpose-chars
- "C-U" unix-line-discard
- "C-V" quoted-insert
- "C-W" unix-word-rubout
- "C-Y" yank
- "C-]" character-search
- "C-_" undo
- " " to "/" self-insert
- "0" to "9" self-insert
- ":" to "~" self-insert
- "C-?" backward-delete-char
-
- Emacs Meta bindings
-
- "M-C-G" abort
- "M-C-H" backward-kill-word
- "M-C-I" tab-insert
- "M-C-J" vi-editing-mode
- "M-C-M" vi-editing-mode
- "M-C-R" revert-line
- "M-C-Y" yank-nth-arg
- "M-C-[" complete
- "M-C-]" character-search-backward
- "M-space" set-mark
- "M-#" insert-comment
- "M-&" tilde-expand
- "M-*" insert-completions
- "M--" digit-argument
- "M-." yank-last-arg
- "M-0" digit-argument
- "M-1" digit-argument
- "M-2" digit-argument
- "M-3" digit-argument
- "M-4" digit-argument
- "M-5" digit-argument
- "M-6" digit-argument
- "M-7" digit-argument
- "M-8" digit-argument
- "M-9" digit-argument
- "M-<" beginning-of-history
- "M-=" possible-completions
- "M->" end-of-history
- "M-?" possible-completions
- "M-B" backward-word
- "M-C" capitalize-word
- "M-D" kill-word
- "M-F" forward-word
- "M-L" downcase-word
- "M-N" non-incremental-forward-search-history
- "M-P" non-incremental-reverse-search-history
- "M-R" revert-line
- "M-T" transpose-words
- "M-U" upcase-word
- "M-Y" yank-pop
- "M-\" delete-horizontal-space
- "M-~" tilde-expand
- "M-C-?" backward-kill-word
- "M-_" yank-last-arg
-
- Emacs Control-X bindings
-
- "C-XC-G" abort
- "C-XC-R" re-read-init-file
- "C-XC-U" undo
- "C-XC-X" exchange-point-and-mark
- "C-X(" start-kbd-macro
- "C-X)" end-kbd-macro
- "C-XE" call-last-kbd-macro
- "C-XC-?" backward-kill-line
-
-
- VVII MMooddee bbiinnddiinnggss
- VI Insert Mode functions
-
- "C-D" vi-eof-maybe
- "C-H" backward-delete-char
- "C-I" complete
- "C-J" accept-line
- "C-M" accept-line
- "C-R" reverse-search-history
- "C-S" forward-search-history
- "C-T" transpose-chars
- "C-U" unix-line-discard
- "C-V" quoted-insert
- "C-W" unix-word-rubout
- "C-Y" yank
- "C-[" vi-movement-mode
- "C-_" undo
- " " to "~" self-insert
- "C-?" backward-delete-char
-
- VI Command Mode functions
-
- "C-D" vi-eof-maybe
- "C-E" emacs-editing-mode
- "C-G" abort
- "C-H" backward-char
- "C-J" accept-line
- "C-K" kill-line
- "C-L" clear-screen
- "C-M" accept-line
- "C-N" next-history
- "C-P" previous-history
- "C-Q" quoted-insert
- "C-R" reverse-search-history
- "C-S" forward-search-history
- "C-T" transpose-chars
- "C-U" unix-line-discard
- "C-V" quoted-insert
- "C-W" unix-word-rubout
- "C-Y" yank
- "C-_" vi-undo
- " " forward-char
- "#" insert-comment
- "$" end-of-line
- "%" vi-match
- "&" vi-tilde-expand
- "*" vi-complete
- "+" next-history
- "," vi-char-search
- "-" previous-history
- "." vi-redo
- "/" vi-search
- "0" beginning-of-line
- "1" to "9" vi-arg-digit
- ";" vi-char-search
- "=" vi-complete
- "?" vi-search
- "A" vi-append-eol
- "B" vi-prev-word
- "C" vi-change-to
- "D" vi-delete-to
- "E" vi-end-word
- "F" vi-char-search
- "G" vi-fetch-history
- "I" vi-insert-beg
- "N" vi-search-again
- "P" vi-put
- "R" vi-replace
- "S" vi-subst
- "T" vi-char-search
- "U" revert-line
- "W" vi-next-word
- "X" backward-delete-char
- "Y" vi-yank-to
- "\" vi-complete
- "^" vi-first-print
- "_" vi-yank-arg
- "`" vi-goto-mark
- "a" vi-append-mode
- "b" vi-prev-word
- "c" vi-change-to
- "d" vi-delete-to
- "e" vi-end-word
- "f" vi-char-search
- "h" backward-char
- "i" vi-insertion-mode
- "j" next-history
- "k" prev-history
- "l" forward-char
- "m" vi-set-mark
- "n" vi-search-again
- "p" vi-put
- "r" vi-change-char
- "s" vi-subst
- "t" vi-char-search
- "u" vi-undo
- "w" vi-next-word
- "x" vi-delete
- "y" vi-yank-to
- "|" vi-column
- "~" vi-change-case
-
-SSEEEE AALLSSOO
- _T_h_e _G_n_u _R_e_a_d_l_i_n_e _L_i_b_r_a_r_y, Brian Fox and Chet Ramey
- _T_h_e _G_n_u _H_i_s_t_o_r_y _L_i_b_r_a_r_y, Brian Fox and Chet Ramey
- _b_a_s_h(1)
-
-FFIILLEESS
- _~_/_._i_n_p_u_t_r_c
- Individual rreeaaddlliinnee initialization file
-
-AAUUTTHHOORRSS
- Brian Fox, Free Software Foundation
- bfox@gnu.org
-
- Chet Ramey, Case Western Reserve University
- chet@ins.CWRU.Edu
-
-BBUUGG RREEPPOORRTTSS
- If you find a bug in rreeaaddlliinnee,, you should report it. But
- first, you should make sure that it really is a bug, and
- that it appears in the latest version of the rreeaaddlliinnee
- library that you have.
-
- Once you have determined that a bug actually exists, mail
- a bug report to _b_u_g_-_r_e_a_d_l_i_n_e@_g_n_u_._o_r_g. If you have a fix,
- you are welcome to mail that as well! Suggestions and
- `philosophical' bug reports may be mailed to _b_u_g_-_r_e_a_d_-
- _l_i_n_e@_g_n_u_._o_r_g or posted to the Usenet newsgroup
- ggnnuu..bbaasshh..bbuugg.
-
- Comments and bug reports concerning this manual page
- should be directed to _c_h_e_t_@_i_n_s_._C_W_R_U_._E_d_u.
-
-BBUUGGSS
- It's too big and too slow.
-
-
-
-GNU Readline 4.3 2002 January 22 READLINE(3)
diff --git a/readline-doc-4.3/doc/readline.dvi b/readline-doc-4.3/doc/readline.dvi
deleted file mode 100644
index 3c1c30f..0000000
--- a/readline-doc-4.3/doc/readline.dvi
+++ /dev/null
Binary files differ
diff --git a/readline-doc-4.3/doc/readline.html b/readline-doc-4.3/doc/readline.html
deleted file mode 100644
index 42485f5..0000000
--- a/readline-doc-4.3/doc/readline.html
+++ /dev/null
@@ -1,5908 +0,0 @@
-<HTML>
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<!-- Created on June, 27 2002 by texi2html 1.64 -->
-<!--
-Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
- Karl Berry <karl@freefriends.org>
- Olaf Bachmann <obachman@mathematik.uni-kl.de>
- and many others.
-Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>
-Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
-
--->
-<HEAD>
-<TITLE>GNU Readline Library: </TITLE>
-
-<META NAME="description" CONTENT="GNU Readline Library: ">
-<META NAME="keywords" CONTENT="GNU Readline Library: ">
-<META NAME="resource-type" CONTENT="document">
-<META NAME="distribution" CONTENT="global">
-<META NAME="Generator" CONTENT="texi2html 1.64">
-
-</HEAD>
-
-<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
-
-<A NAME="SEC_Top"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1>GNU Readline Library</H1></P><P>
-
-This document describes the GNU Readline Library, a utility which aids
-in the consistency of user interface across discrete programs that need
-to provide a command line interface.
-</P><P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC1">1. Command Line Editing</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">GNU Readline User's Manual.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC23">2. Programming with GNU Readline</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">GNU Readline Programmer's Manual.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC49">Concept Index</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Index of concepts described in this manual.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC50">Function and Variable Index</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Index of externally visible functions
- and variables.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<HR SIZE=1>
-<A NAME="SEC1"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC2"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<A NAME="Command Line Editing"></A>
-<H1> 1. Command Line Editing </H1>
-<!--docid::SEC1::-->
-<P>
-
-This chapter describes the basic features of the GNU
-command line editing interface.
-</P><P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC2">1.1 Introduction to Line Editing</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Notation used in this text.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC3">1.2 Readline Interaction</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">The minimum set of commands for editing a line.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC9">1.3 Readline Init File</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Customizing Readline from a user's view.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC13">1.4 Bindable Readline Commands</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">A description of most of the Readline commands
- available for binding</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC22">1.5 Readline vi Mode</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">A short description of how to make Readline
- behave like the vi editor.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<A NAME="Introduction and Notation"></A>
-<HR SIZE="6">
-<A NAME="SEC2"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC1"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC3"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC1"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 1.1 Introduction to Line Editing </H2>
-<!--docid::SEC2::-->
-<P>
-
-The following paragraphs describe the notation used to represent
-keystrokes.
-</P><P>
-
-The text <KBD>C-k</KBD> is read as `Control-K' and describes the character
-produced when the <KBD>k</KBD> key is pressed while the Control key
-is depressed.
-</P><P>
-
-The text <KBD>M-k</KBD> is read as `Meta-K' and describes the character
-produced when the Meta key (if you have one) is depressed, and the <KBD>k</KBD>
-key is pressed.
-The Meta key is labeled <KBD>ALT</KBD> on many keyboards.
-On keyboards with two keys labeled <KBD>ALT</KBD> (usually to either side of
-the space bar), the <KBD>ALT</KBD> on the left side is generally set to
-work as a Meta key.
-The <KBD>ALT</KBD> key on the right may also be configured to work as a
-Meta key or may be configured as some other modifier, such as a
-Compose key for typing accented characters.
-</P><P>
-
-If you do not have a Meta or <KBD>ALT</KBD> key, or another key working as
-a Meta key, the identical keystroke can be generated by typing <KBD>ESC</KBD>
-<EM>first</EM>, and then typing <KBD>k</KBD>.
-Either process is known as <EM>metafying</EM> the <KBD>k</KBD> key.
-</P><P>
-
-The text <KBD>M-C-k</KBD> is read as `Meta-Control-k' and describes the
-character produced by <EM>metafying</EM> <KBD>C-k</KBD>.
-</P><P>
-
-In addition, several keys have their own names. Specifically,
-<KBD>DEL</KBD>, <KBD>ESC</KBD>, <KBD>LFD</KBD>, <KBD>SPC</KBD>, <KBD>RET</KBD>, and <KBD>TAB</KBD> all
-stand for themselves when seen in this text, or in an init file
-(see section <A HREF="readline.html#SEC9">1.3 Readline Init File</A>).
-If your keyboard lacks a <KBD>LFD</KBD> key, typing <KBD>C-j</KBD> will
-produce the desired character.
-The <KBD>RET</KBD> key may be labeled <KBD>Return</KBD> or <KBD>Enter</KBD> on
-some keyboards.
-</P><P>
-
-<A NAME="Readline Interaction"></A>
-<HR SIZE="6">
-<A NAME="SEC3"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC2"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC4"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC1"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 1.2 Readline Interaction </H2>
-<!--docid::SEC3::-->
-<P>
-
-Often during an interactive session you type in a long line of text,
-only to notice that the first word on the line is misspelled. The
-Readline library gives you a set of commands for manipulating the text
-as you type it in, allowing you to just fix your typo, and not forcing
-you to retype the majority of the line. Using these editing commands,
-you move the cursor to the place that needs correction, and delete or
-insert the text of the corrections. Then, when you are satisfied with
-the line, you simply press <KBD>RET</KBD>. You do not have to be at the
-end of the line to press <KBD>RET</KBD>; the entire line is accepted
-regardless of the location of the cursor within the line.
-</P><P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC4">1.2.1 Readline Bare Essentials</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">The least you need to know about Readline.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC5">1.2.2 Readline Movement Commands</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Moving about the input line.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC6">1.2.3 Readline Killing Commands</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">How to delete text, and how to get it back!</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC7">1.2.4 Readline Arguments</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Giving numeric arguments to commands.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC8">1.2.5 Searching for Commands in the History</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Searching through previous lines.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<A NAME="Readline Bare Essentials"></A>
-<HR SIZE="6">
-<A NAME="SEC4"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC3"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC5"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC3"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.2.1 Readline Bare Essentials </H3>
-<!--docid::SEC4::-->
-<P>
-
-In order to enter characters into the line, simply type them. The typed
-character appears where the cursor was, and then the cursor moves one
-space to the right. If you mistype a character, you can use your
-erase character to back up and delete the mistyped character.
-</P><P>
-
-Sometimes you may mistype a character, and
-not notice the error until you have typed several other characters. In
-that case, you can type <KBD>C-b</KBD> to move the cursor to the left, and then
-correct your mistake. Afterwards, you can move the cursor to the right
-with <KBD>C-f</KBD>.
-</P><P>
-
-When you add text in the middle of a line, you will notice that characters
-to the right of the cursor are `pushed over' to make room for the text
-that you have inserted. Likewise, when you delete text behind the cursor,
-characters to the right of the cursor are `pulled back' to fill in the
-blank space created by the removal of the text. A list of the bare
-essentials for editing the text of an input line follows.
-</P><P>
-
-<DL COMPACT>
-<DT><KBD>C-b</KBD>
-<DD>Move back one character.
-<DT><KBD>C-f</KBD>
-<DD>Move forward one character.
-<DT><KBD>DEL</KBD> or <KBD>Backspace</KBD>
-<DD>Delete the character to the left of the cursor.
-<DT><KBD>C-d</KBD>
-<DD>Delete the character underneath the cursor.
-<DT>Printing characters
-<DD>Insert the character into the line at the cursor.
-<DT><KBD>C-_</KBD> or <KBD>C-x C-u</KBD>
-<DD>Undo the last editing command. You can undo all the way back to an
-empty line.
-</DL>
-<P>
-
-(Depending on your configuration, the <KBD>Backspace</KBD> key be set to
-delete the character to the left of the cursor and the <KBD>DEL</KBD> key set
-to delete the character underneath the cursor, like <KBD>C-d</KBD>, rather
-than the character to the left of the cursor.)
-</P><P>
-
-<A NAME="Readline Movement Commands"></A>
-<HR SIZE="6">
-<A NAME="SEC5"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC4"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC6"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC6"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC3"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.2.2 Readline Movement Commands </H3>
-<!--docid::SEC5::-->
-<P>
-
-The above table describes the most basic keystrokes that you need
-in order to do editing of the input line. For your convenience, many
-other commands have been added in addition to <KBD>C-b</KBD>, <KBD>C-f</KBD>,
-<KBD>C-d</KBD>, and <KBD>DEL</KBD>. Here are some commands for moving more rapidly
-about the line.
-</P><P>
-
-<DL COMPACT>
-<DT><KBD>C-a</KBD>
-<DD>Move to the start of the line.
-<DT><KBD>C-e</KBD>
-<DD>Move to the end of the line.
-<DT><KBD>M-f</KBD>
-<DD>Move forward a word, where a word is composed of letters and digits.
-<DT><KBD>M-b</KBD>
-<DD>Move backward a word.
-<DT><KBD>C-l</KBD>
-<DD>Clear the screen, reprinting the current line at the top.
-</DL>
-<P>
-
-Notice how <KBD>C-f</KBD> moves forward a character, while <KBD>M-f</KBD> moves
-forward a word. It is a loose convention that control keystrokes
-operate on characters while meta keystrokes operate on words.
-</P><P>
-
-<A NAME="Readline Killing Commands"></A>
-<HR SIZE="6">
-<A NAME="SEC6"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC5"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC7"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC7"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC3"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.2.3 Readline Killing Commands </H3>
-<!--docid::SEC6::-->
-<P>
-
-<A NAME="IDX1"></A>
-<A NAME="IDX2"></A>
-</P><P>
-
-<EM>Killing</EM> text means to delete the text from the line, but to save
-it away for later use, usually by <EM>yanking</EM> (re-inserting)
-it back into the line.
-(`Cut' and `paste' are more recent jargon for `kill' and `yank'.)
-</P><P>
-
-If the description for a command says that it `kills' text, then you can
-be sure that you can get the text back in a different (or the same)
-place later.
-</P><P>
-
-When you use a kill command, the text is saved in a <EM>kill-ring</EM>.
-Any number of consecutive kills save all of the killed text together, so
-that when you yank it back, you get it all. The kill
-ring is not line specific; the text that you killed on a previously
-typed line is available to be yanked back later, when you are typing
-another line.
-<A NAME="IDX3"></A>
-</P><P>
-
-Here is the list of commands for killing text.
-</P><P>
-
-<DL COMPACT>
-<DT><KBD>C-k</KBD>
-<DD>Kill the text from the current cursor position to the end of the line.
-<P>
-
-<DT><KBD>M-d</KBD>
-<DD>Kill from the cursor to the end of the current word, or, if between
-words, to the end of the next word.
-Word boundaries are the same as those used by <KBD>M-f</KBD>.
-<P>
-
-<DT><KBD>M-<KBD>DEL</KBD></KBD>
-<DD>Kill from the cursor the start of the current word, or, if between
-words, to the start of the previous word.
-Word boundaries are the same as those used by <KBD>M-b</KBD>.
-<P>
-
-<DT><KBD>C-w</KBD>
-<DD>Kill from the cursor to the previous whitespace. This is different than
-<KBD>M-<KBD>DEL</KBD></KBD> because the word boundaries differ.
-<P>
-
-</DL>
-<P>
-
-Here is how to <EM>yank</EM> the text back into the line. Yanking
-means to copy the most-recently-killed text from the kill buffer.
-</P><P>
-
-<DL COMPACT>
-<DT><KBD>C-y</KBD>
-<DD>Yank the most recently killed text back into the buffer at the cursor.
-<P>
-
-<DT><KBD>M-y</KBD>
-<DD>Rotate the kill-ring, and yank the new top. You can only do this if
-the prior command is <KBD>C-y</KBD> or <KBD>M-y</KBD>.
-</DL>
-<P>
-
-<A NAME="Readline Arguments"></A>
-<HR SIZE="6">
-<A NAME="SEC7"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC6"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC8"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC8"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC3"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.2.4 Readline Arguments </H3>
-<!--docid::SEC7::-->
-<P>
-
-You can pass numeric arguments to Readline commands. Sometimes the
-argument acts as a repeat count, other times it is the <I>sign</I> of the
-argument that is significant. If you pass a negative argument to a
-command which normally acts in a forward direction, that command will
-act in a backward direction. For example, to kill text back to the
-start of the line, you might type <SAMP>`M-- C-k'</SAMP>.
-</P><P>
-
-The general way to pass numeric arguments to a command is to type meta
-digits before the command. If the first `digit' typed is a minus
-sign (<SAMP>`-'</SAMP>), then the sign of the argument will be negative. Once
-you have typed one meta digit to get the argument started, you can type
-the remainder of the digits, and then the command. For example, to give
-the <KBD>C-d</KBD> command an argument of 10, you could type <SAMP>`M-1 0 C-d'</SAMP>,
-which will delete the next ten characters on the input line.
-</P><P>
-
-<A NAME="Searching"></A>
-<HR SIZE="6">
-<A NAME="SEC8"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC7"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC3"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.2.5 Searching for Commands in the History </H3>
-<!--docid::SEC8::-->
-<P>
-
-Readline provides commands for searching through the command history
-for lines containing a specified string.
-There are two search modes: <EM>incremental</EM> and <EM>non-incremental</EM>.
-</P><P>
-
-Incremental searches begin before the user has finished typing the
-search string.
-As each character of the search string is typed, Readline displays
-the next entry from the history matching the string typed so far.
-An incremental search requires only as many characters as needed to
-find the desired history entry.
-To search backward in the history for a particular string, type
-<KBD>C-r</KBD>. Typing <KBD>C-s</KBD> searches forward through the history.
-The characters present in the value of the <CODE>isearch-terminators</CODE> variable
-are used to terminate an incremental search.
-If that variable has not been assigned a value, the <KBD>ESC</KBD> and
-<KBD>C-J</KBD> characters will terminate an incremental search.
-<KBD>C-g</KBD> will abort an incremental search and restore the original line.
-When the search is terminated, the history entry containing the
-search string becomes the current line.
-</P><P>
-
-To find other matching entries in the history list, type <KBD>C-r</KBD> or
-<KBD>C-s</KBD> as appropriate.
-This will search backward or forward in the history for the next
-entry matching the search string typed so far.
-Any other key sequence bound to a Readline command will terminate
-the search and execute that command.
-For instance, a <KBD>RET</KBD> will terminate the search and accept
-the line, thereby executing the command from the history list.
-A movement command will terminate the search, make the last line found
-the current line, and begin editing.
-</P><P>
-
-Readline remembers the last incremental search string. If two
-<KBD>C-r</KBD>s are typed without any intervening characters defining a new
-search string, any remembered search string is used.
-</P><P>
-
-Non-incremental searches read the entire search string before starting
-to search for matching history lines. The search string may be
-typed by the user or be part of the contents of the current line.
-</P><P>
-
-<A NAME="Readline Init File"></A>
-<HR SIZE="6">
-<A NAME="SEC9"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC8"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC10"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC1"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 1.3 Readline Init File </H2>
-<!--docid::SEC9::-->
-<P>
-
-Although the Readline library comes with a set of Emacs-like
-keybindings installed by default, it is possible to use a different set
-of keybindings.
-Any user can customize programs that use Readline by putting
-commands in an <EM>inputrc</EM> file, conventionally in his home directory.
-The name of this
-file is taken from the value of the environment variable <CODE>INPUTRC</CODE>. If
-that variable is unset, the default is <TT>`~/.inputrc'</TT>.
-</P><P>
-
-When a program which uses the Readline library starts up, the
-init file is read, and the key bindings are set.
-</P><P>
-
-In addition, the <CODE>C-x C-r</CODE> command re-reads this init file, thus
-incorporating any changes that you might have made to it.
-</P><P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Syntax for the commands in the inputrc file.</TD></TR>
-</TABLE>
-
-<br>
-<TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC11">1.3.2 Conditional Init Constructs</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Conditional key bindings in the inputrc file.</TD></TR>
-</TABLE>
-
-<br>
-<TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC12">1.3.3 Sample Init File</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">An example inputrc file.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<A NAME="Readline Init File Syntax"></A>
-<HR SIZE="6">
-<A NAME="SEC10"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC11"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.3.1 Readline Init File Syntax </H3>
-<!--docid::SEC10::-->
-<P>
-
-There are only a few basic constructs allowed in the
-Readline init file. Blank lines are ignored.
-Lines beginning with a <SAMP>`#'</SAMP> are comments.
-Lines beginning with a <SAMP>`$'</SAMP> indicate conditional
-constructs (see section <A HREF="readline.html#SEC11">1.3.2 Conditional Init Constructs</A>). Other lines
-denote variable settings and key bindings.
-</P><P>
-
-<DL COMPACT>
-<DT>Variable Settings
-<DD>You can modify the run-time behavior of Readline by
-altering the values of variables in Readline
-using the <CODE>set</CODE> command within the init file.
-The syntax is simple:
-<P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>set <VAR>variable</VAR> <VAR>value</VAR>
-</pre></td></tr></table></P><P>
-
-Here, for example, is how to
-change from the default Emacs-like key binding to use
-<CODE>vi</CODE> line editing commands:
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>set editing-mode vi
-</pre></td></tr></table></P><P>
-
-Variable names and values, where appropriate, are recognized without regard
-to case.
-</P><P>
-
-A great deal of run-time behavior is changeable with the following
-variables.
-</P><P>
-
-<A NAME="IDX4"></A>
-<DL COMPACT>
-
-<DT><CODE>bell-style</CODE>
-<DD><A NAME="IDX5"></A>
-Controls what happens when Readline wants to ring the terminal bell.
-If set to <SAMP>`none'</SAMP>, Readline never rings the bell. If set to
-<SAMP>`visible'</SAMP>, Readline uses a visible bell if one is available.
-If set to <SAMP>`audible'</SAMP> (the default), Readline attempts to ring
-the terminal's bell.
-<P>
-
-<DT><CODE>comment-begin</CODE>
-<DD><A NAME="IDX6"></A>
-The string to insert at the beginning of the line when the
-<CODE>insert-comment</CODE> command is executed. The default value
-is <CODE>"#"</CODE>.
-<P>
-
-<DT><CODE>completion-ignore-case</CODE>
-<DD>If set to <SAMP>`on'</SAMP>, Readline performs filename matching and completion
-in a case-insensitive fashion.
-The default value is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>completion-query-items</CODE>
-<DD><A NAME="IDX7"></A>
-The number of possible completions that determines when the user is
-asked whether he wants to see the list of possibilities. If the
-number of possible completions is greater than this value,
-Readline will ask the user whether or not he wishes to view
-them; otherwise, they are simply listed.
-This variable must be set to an integer value greater than or equal to 0.
-The default limit is <CODE>100</CODE>.
-<P>
-
-<DT><CODE>convert-meta</CODE>
-<DD><A NAME="IDX8"></A>
-If set to <SAMP>`on'</SAMP>, Readline will convert characters with the
-eighth bit set to an ASCII key sequence by stripping the eighth
-bit and prefixing an <KBD>ESC</KBD> character, converting them to a
-meta-prefixed key sequence. The default value is <SAMP>`on'</SAMP>.
-<P>
-
-<DT><CODE>disable-completion</CODE>
-<DD><A NAME="IDX9"></A>
-If set to <SAMP>`On'</SAMP>, Readline will inhibit word completion.
-Completion characters will be inserted into the line as if they had
-been mapped to <CODE>self-insert</CODE>. The default is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>editing-mode</CODE>
-<DD><A NAME="IDX10"></A>
-The <CODE>editing-mode</CODE> variable controls which default set of
-key bindings is used. By default, Readline starts up in Emacs editing
-mode, where the keystrokes are most similar to Emacs. This variable can be
-set to either <SAMP>`emacs'</SAMP> or <SAMP>`vi'</SAMP>.
-<P>
-
-<DT><CODE>enable-keypad</CODE>
-<DD><A NAME="IDX11"></A>
-When set to <SAMP>`on'</SAMP>, Readline will try to enable the application
-keypad when it is called. Some systems need this to enable the
-arrow keys. The default is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>expand-tilde</CODE>
-<DD><A NAME="IDX12"></A>
-If set to <SAMP>`on'</SAMP>, tilde expansion is performed when Readline
-attempts word completion. The default is <SAMP>`off'</SAMP>.
-<P>
-
-<A NAME="IDX13"></A>
-If set to <SAMP>`on'</SAMP>, the history code attempts to place point at the
-same location on each history line retrived with <CODE>previous-history</CODE>
-or <CODE>next-history</CODE>.
-</P><P>
-
-<DT><CODE>horizontal-scroll-mode</CODE>
-<DD><A NAME="IDX14"></A>
-This variable can be set to either <SAMP>`on'</SAMP> or <SAMP>`off'</SAMP>. Setting it
-to <SAMP>`on'</SAMP> means that the text of the lines being edited will scroll
-horizontally on a single screen line when they are longer than the width
-of the screen, instead of wrapping onto a new screen line. By default,
-this variable is set to <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>input-meta</CODE>
-<DD><A NAME="IDX15"></A>
-<A NAME="IDX16"></A>
-If set to <SAMP>`on'</SAMP>, Readline will enable eight-bit input (it
-will not clear the eighth bit in the characters it reads),
-regardless of what the terminal claims it can support. The
-default value is <SAMP>`off'</SAMP>. The name <CODE>meta-flag</CODE> is a
-synonym for this variable.
-<P>
-
-<DT><CODE>isearch-terminators</CODE>
-<DD><A NAME="IDX17"></A>
-The string of characters that should terminate an incremental search without
-subsequently executing the character as a command (see section <A HREF="readline.html#SEC8">1.2.5 Searching for Commands in the History</A>).
-If this variable has not been given a value, the characters <KBD>ESC</KBD> and
-<KBD>C-J</KBD> will terminate an incremental search.
-<P>
-
-<DT><CODE>keymap</CODE>
-<DD><A NAME="IDX18"></A>
-Sets Readline's idea of the current keymap for key binding commands.
-Acceptable <CODE>keymap</CODE> names are
-<CODE>emacs</CODE>,
-<CODE>emacs-standard</CODE>,
-<CODE>emacs-meta</CODE>,
-<CODE>emacs-ctlx</CODE>,
-<CODE>vi</CODE>,
-<CODE>vi-move</CODE>,
-<CODE>vi-command</CODE>, and
-<CODE>vi-insert</CODE>.
-<CODE>vi</CODE> is equivalent to <CODE>vi-command</CODE>; <CODE>emacs</CODE> is
-equivalent to <CODE>emacs-standard</CODE>. The default value is <CODE>emacs</CODE>.
-The value of the <CODE>editing-mode</CODE> variable also affects the
-default keymap.
-<P>
-
-<DT><CODE>mark-directories</CODE>
-<DD>If set to <SAMP>`on'</SAMP>, completed directory names have a slash
-appended. The default is <SAMP>`on'</SAMP>.
-<P>
-
-<DT><CODE>mark-modified-lines</CODE>
-<DD><A NAME="IDX19"></A>
-This variable, when set to <SAMP>`on'</SAMP>, causes Readline to display an
-asterisk (<SAMP>`*'</SAMP>) at the start of history lines which have been modified.
-This variable is <SAMP>`off'</SAMP> by default.
-<P>
-
-<DT><CODE>mark-symlinked-directories</CODE>
-<DD><A NAME="IDX20"></A>
-If set to <SAMP>`on'</SAMP>, completed names which are symbolic links
-to directories have a slash appended (subject to the value of
-<CODE>mark-directories</CODE>).
-The default is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>match-hidden-files</CODE>
-<DD><A NAME="IDX21"></A>
-This variable, when set to <SAMP>`on'</SAMP>, causes Readline to match files whose
-names begin with a <SAMP>`.'</SAMP> (hidden files) when performing filename
-completion, unless the leading <SAMP>`.'</SAMP> is
-supplied by the user in the filename to be completed.
-This variable is <SAMP>`on'</SAMP> by default.
-<P>
-
-<DT><CODE>output-meta</CODE>
-<DD><A NAME="IDX22"></A>
-If set to <SAMP>`on'</SAMP>, Readline will display characters with the
-eighth bit set directly rather than as a meta-prefixed escape
-sequence. The default is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>page-completions</CODE>
-<DD><A NAME="IDX23"></A>
-If set to <SAMP>`on'</SAMP>, Readline uses an internal <CODE>more</CODE>-like pager
-to display a screenful of possible completions at a time.
-This variable is <SAMP>`on'</SAMP> by default.
-<P>
-
-<DT><CODE>print-completions-horizontally</CODE>
-<DD>If set to <SAMP>`on'</SAMP>, Readline will display completions with matches
-sorted horizontally in alphabetical order, rather than down the screen.
-The default is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>show-all-if-ambiguous</CODE>
-<DD><A NAME="IDX24"></A>
-This alters the default behavior of the completion functions. If
-set to <SAMP>`on'</SAMP>,
-words which have more than one possible completion cause the
-matches to be listed immediately instead of ringing the bell.
-The default value is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>visible-stats</CODE>
-<DD><A NAME="IDX25"></A>
-If set to <SAMP>`on'</SAMP>, a character denoting a file's type
-is appended to the filename when listing possible
-completions. The default is <SAMP>`off'</SAMP>.
-<P>
-
-</DL>
-<P>
-
-<DT>Key Bindings
-<DD>The syntax for controlling key bindings in the init file is
-simple. First you need to find the name of the command that you
-want to change. The following sections contain tables of the command
-name, the default keybinding, if any, and a short description of what
-the command does.
-<P>
-
-Once you know the name of the command, simply place on a line
-in the init file the name of the key
-you wish to bind the command to, a colon, and then the name of the
-command. The name of the key
-can be expressed in different ways, depending on what you find most
-comfortable.
-</P><P>
-
-In addition to command names, readline allows keys to be bound
-to a string that is inserted when the key is pressed (a <VAR>macro</VAR>).
-</P><P>
-
-<DL COMPACT>
-<DT><VAR>keyname</VAR>: <VAR>function-name</VAR> or <VAR>macro</VAR>
-<DD><VAR>keyname</VAR> is the name of a key spelled out in English. For example:
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>Control-u: universal-argument
-Meta-Rubout: backward-kill-word
-Control-o: "&#62; output"
-</pre></td></tr></table><P>
-
-In the above example, <KBD>C-u</KBD> is bound to the function
-<CODE>universal-argument</CODE>,
-<KBD>M-DEL</KBD> is bound to the function <CODE>backward-kill-word</CODE>, and
-<KBD>C-o</KBD> is bound to run the macro
-expressed on the right hand side (that is, to insert the text
-<SAMP>`&#62; output'</SAMP> into the line).
-</P><P>
-
-A number of symbolic character names are recognized while
-processing this key binding syntax:
-<VAR>DEL</VAR>,
-<VAR>ESC</VAR>,
-<VAR>ESCAPE</VAR>,
-<VAR>LFD</VAR>,
-<VAR>NEWLINE</VAR>,
-<VAR>RET</VAR>,
-<VAR>RETURN</VAR>,
-<VAR>RUBOUT</VAR>,
-<VAR>SPACE</VAR>,
-<VAR>SPC</VAR>,
-and
-<VAR>TAB</VAR>.
-</P><P>
-
-<DT>"<VAR>keyseq</VAR>": <VAR>function-name</VAR> or <VAR>macro</VAR>
-<DD><VAR>keyseq</VAR> differs from <VAR>keyname</VAR> above in that strings
-denoting an entire key sequence can be specified, by placing
-the key sequence in double quotes. Some GNU Emacs style key
-escapes can be used, as in the following example, but the
-special character names are not recognized.
-<P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>"\C-u": universal-argument
-"\C-x\C-r": re-read-init-file
-"\e[11~": "Function Key 1"
-</pre></td></tr></table></P><P>
-
-In the above example, <KBD>C-u</KBD> is again bound to the function
-<CODE>universal-argument</CODE> (just as it was in the first example),
-<SAMP>`<KBD>C-x</KBD> <KBD>C-r</KBD>'</SAMP> is bound to the function <CODE>re-read-init-file</CODE>,
-and <SAMP>`<KBD>ESC</KBD> <KBD>[</KBD> <KBD>1</KBD> <KBD>1</KBD> <KBD>~</KBD>'</SAMP> is bound to insert
-the text <SAMP>`Function Key 1'</SAMP>.
-</P><P>
-
-</DL>
-<P>
-
-The following GNU Emacs style escape sequences are available when
-specifying key sequences:
-</P><P>
-
-<DL COMPACT>
-<DT><CODE><KBD>\C-</KBD></CODE>
-<DD>control prefix
-<DT><CODE><KBD>\M-</KBD></CODE>
-<DD>meta prefix
-<DT><CODE><KBD>\e</KBD></CODE>
-<DD>an escape character
-<DT><CODE><KBD>\\</KBD></CODE>
-<DD>backslash
-<DT><CODE><KBD>\"</KBD></CODE>
-<DD><KBD>"</KBD>, a double quotation mark
-<DT><CODE><KBD>\'</KBD></CODE>
-<DD><KBD>'</KBD>, a single quote or apostrophe
-</DL>
-<P>
-
-In addition to the GNU Emacs style escape sequences, a second
-set of backslash escapes is available:
-</P><P>
-
-<DL COMPACT>
-<DT><CODE>\a</CODE>
-<DD>alert (bell)
-<DT><CODE>\b</CODE>
-<DD>backspace
-<DT><CODE>\d</CODE>
-<DD>delete
-<DT><CODE>\f</CODE>
-<DD>form feed
-<DT><CODE>\n</CODE>
-<DD>newline
-<DT><CODE>\r</CODE>
-<DD>carriage return
-<DT><CODE>\t</CODE>
-<DD>horizontal tab
-<DT><CODE>\v</CODE>
-<DD>vertical tab
-<DT><CODE>\<VAR>nnn</VAR></CODE>
-<DD>the eight-bit character whose value is the octal value <VAR>nnn</VAR>
-(one to three digits)
-<DT><CODE>\x<VAR>HH</VAR></CODE>
-<DD>the eight-bit character whose value is the hexadecimal value <VAR>HH</VAR>
-(one or two hex digits)
-</DL>
-<P>
-
-When entering the text of a macro, single or double quotes must
-be used to indicate a macro definition.
-Unquoted text is assumed to be a function name.
-In the macro body, the backslash escapes described above are expanded.
-Backslash will quote any other character in the macro text,
-including <SAMP>`"'</SAMP> and <SAMP>`''</SAMP>.
-For example, the following binding will make <SAMP>`<KBD>C-x</KBD> \'</SAMP>
-insert a single <SAMP>`\'</SAMP> into the line:
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>"\C-x\\": "\\"
-</pre></td></tr></table></P><P>
-
-</DL>
-<P>
-
-<A NAME="Conditional Init Constructs"></A>
-<HR SIZE="6">
-<A NAME="SEC11"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC10"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC12"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC12"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.3.2 Conditional Init Constructs </H3>
-<!--docid::SEC11::-->
-<P>
-
-Readline implements a facility similar in spirit to the conditional
-compilation features of the C preprocessor which allows key
-bindings and variable settings to be performed as the result
-of tests. There are four parser directives used.
-</P><P>
-
-<DL COMPACT>
-<DT><CODE>$if</CODE>
-<DD>The <CODE>$if</CODE> construct allows bindings to be made based on the
-editing mode, the terminal being used, or the application using
-Readline. The text of the test extends to the end of the line;
-no characters are required to isolate it.
-<P>
-
-<DL COMPACT>
-<DT><CODE>mode</CODE>
-<DD>The <CODE>mode=</CODE> form of the <CODE>$if</CODE> directive is used to test
-whether Readline is in <CODE>emacs</CODE> or <CODE>vi</CODE> mode.
-This may be used in conjunction
-with the <SAMP>`set keymap'</SAMP> command, for instance, to set bindings in
-the <CODE>emacs-standard</CODE> and <CODE>emacs-ctlx</CODE> keymaps only if
-Readline is starting out in <CODE>emacs</CODE> mode.
-<P>
-
-<DT><CODE>term</CODE>
-<DD>The <CODE>term=</CODE> form may be used to include terminal-specific
-key bindings, perhaps to bind the key sequences output by the
-terminal's function keys. The word on the right side of the
-<SAMP>`='</SAMP> is tested against both the full name of the terminal and
-the portion of the terminal name before the first <SAMP>`-'</SAMP>. This
-allows <CODE>sun</CODE> to match both <CODE>sun</CODE> and <CODE>sun-cmd</CODE>,
-for instance.
-<P>
-
-<DT><CODE>application</CODE>
-<DD>The <VAR>application</VAR> construct is used to include
-application-specific settings. Each program using the Readline
-library sets the <VAR>application name</VAR>, and you can test for
-a particular value.
-This could be used to bind key sequences to functions useful for
-a specific program. For instance, the following command adds a
-key sequence that quotes the current or previous word in Bash:
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>$if Bash
-# Quote the current or previous word
-"\C-xq": "\eb\"\ef\""
-$endif
-</pre></td></tr></table></DL>
-<P>
-
-<DT><CODE>$endif</CODE>
-<DD>This command, as seen in the previous example, terminates an
-<CODE>$if</CODE> command.
-<P>
-
-<DT><CODE>$else</CODE>
-<DD>Commands in this branch of the <CODE>$if</CODE> directive are executed if
-the test fails.
-<P>
-
-<DT><CODE>$include</CODE>
-<DD>This directive takes a single filename as an argument and reads commands
-and bindings from that file.
-For example, the following directive reads from <TT>`/etc/inputrc'</TT>:
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>$include /etc/inputrc
-</pre></td></tr></table></DL>
-<P>
-
-<A NAME="Sample Init File"></A>
-<HR SIZE="6">
-<A NAME="SEC12"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC11"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.3.3 Sample Init File </H3>
-<!--docid::SEC12::-->
-<P>
-
-Here is an example of an <VAR>inputrc</VAR> file. This illustrates key
-binding, variable assignment, and conditional syntax.
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre># This file controls the behaviour of line input editing for
-# programs that use the GNU Readline library. Existing
-# programs include FTP, Bash, and GDB.
-#
-# You can re-read the inputrc file with C-x C-r.
-# Lines beginning with '#' are comments.
-#
-# First, include any systemwide bindings and variable
-# assignments from /etc/Inputrc
-$include /etc/Inputrc
-
-#
-# Set various bindings for emacs mode.
-
-set editing-mode emacs
-
-$if mode=emacs
-
-Meta-Control-h: backward-kill-word Text after the function name is ignored
-
-#
-# Arrow keys in keypad mode
-#
-#"\M-OD": backward-char
-#"\M-OC": forward-char
-#"\M-OA": previous-history
-#"\M-OB": next-history
-#
-# Arrow keys in ANSI mode
-#
-"\M-[D": backward-char
-"\M-[C": forward-char
-"\M-[A": previous-history
-"\M-[B": next-history
-#
-# Arrow keys in 8 bit keypad mode
-#
-#"\M-\C-OD": backward-char
-#"\M-\C-OC": forward-char
-#"\M-\C-OA": previous-history
-#"\M-\C-OB": next-history
-#
-# Arrow keys in 8 bit ANSI mode
-#
-#"\M-\C-[D": backward-char
-#"\M-\C-[C": forward-char
-#"\M-\C-[A": previous-history
-#"\M-\C-[B": next-history
-
-C-q: quoted-insert
-
-$endif
-
-# An old-style binding. This happens to be the default.
-TAB: complete
-
-# Macros that are convenient for shell interaction
-$if Bash
-# edit the path
-"\C-xp": "PATH=${PATH}\e\C-e\C-a\ef\C-f"
-# prepare to type a quoted word --
-# insert open and close double quotes
-# and move to just after the open quote
-"\C-x\"": "\"\"\C-b"
-# insert a backslash (testing backslash escapes
-# in sequences and macros)
-"\C-x\\": "\\"
-# Quote the current or previous word
-"\C-xq": "\eb\"\ef\""
-# Add a binding to refresh the line, which is unbound
-"\C-xr": redraw-current-line
-# Edit variable on current line.
-"\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y="
-$endif
-
-# use a visible bell if one is available
-set bell-style visible
-
-# don't strip characters to 7 bits when reading
-set input-meta on
-
-# allow iso-latin1 characters to be inserted rather
-# than converted to prefix-meta sequences
-set convert-meta off
-
-# display characters with the eighth bit set directly
-# rather than as meta-prefixed characters
-set output-meta on
-
-# if there are more than 150 possible completions for
-# a word, ask the user if he wants to see all of them
-set completion-query-items 150
-
-# For FTP
-$if Ftp
-"\C-xg": "get \M-?"
-"\C-xt": "put \M-?"
-"\M-.": yank-last-arg
-$endif
-</pre></td></tr></table></P><P>
-
-<A NAME="Bindable Readline Commands"></A>
-<HR SIZE="6">
-<A NAME="SEC13"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC12"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC14"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC1"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 1.4 Bindable Readline Commands </H2>
-<!--docid::SEC13::-->
-<P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Moving about the line.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Getting at previous lines.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Commands for changing text.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Commands for killing and yanking.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Specifying numeric arguments, repeat counts.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Getting Readline to do the typing for you.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Saving and re-executing typed characters</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Other miscellaneous commands.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-This section describes Readline commands that may be bound to key
-sequences.
-Command names without an accompanying key sequence are unbound by default.
-</P><P>
-
-In the following descriptions, <EM>point</EM> refers to the current cursor
-position, and <EM>mark</EM> refers to a cursor position saved by the
-<CODE>set-mark</CODE> command.
-The text between the point and mark is referred to as the <EM>region</EM>.
-</P><P>
-
-<A NAME="Commands For Moving"></A>
-<HR SIZE="6">
-<A NAME="SEC14"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC15"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.4.1 Commands For Moving </H3>
-<!--docid::SEC14::-->
-<DL COMPACT>
-<A NAME="IDX26"></A>
-<DT><CODE>beginning-of-line (C-a)</CODE>
-<DD><A NAME="IDX27"></A>
-Move to the start of the current line.
-<P>
-
-<A NAME="IDX28"></A>
-<DT><CODE>end-of-line (C-e)</CODE>
-<DD><A NAME="IDX29"></A>
-Move to the end of the line.
-<P>
-
-<A NAME="IDX30"></A>
-<DT><CODE>forward-char (C-f)</CODE>
-<DD><A NAME="IDX31"></A>
-Move forward a character.
-<P>
-
-<A NAME="IDX32"></A>
-<DT><CODE>backward-char (C-b)</CODE>
-<DD><A NAME="IDX33"></A>
-Move back a character.
-<P>
-
-<A NAME="IDX34"></A>
-<DT><CODE>forward-word (M-f)</CODE>
-<DD><A NAME="IDX35"></A>
-Move forward to the end of the next word. Words are composed of
-letters and digits.
-<P>
-
-<A NAME="IDX36"></A>
-<DT><CODE>backward-word (M-b)</CODE>
-<DD><A NAME="IDX37"></A>
-Move back to the start of the current or previous word. Words are
-composed of letters and digits.
-<P>
-
-<A NAME="IDX38"></A>
-<DT><CODE>clear-screen (C-l)</CODE>
-<DD><A NAME="IDX39"></A>
-Clear the screen and redraw the current line,
-leaving the current line at the top of the screen.
-<P>
-
-<A NAME="IDX40"></A>
-<DT><CODE>redraw-current-line ()</CODE>
-<DD><A NAME="IDX41"></A>
-Refresh the current line. By default, this is unbound.
-<P>
-
-</DL>
-<P>
-
-<A NAME="Commands For History"></A>
-<HR SIZE="6">
-<A NAME="SEC15"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC14"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC16"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC16"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.4.2 Commands For Manipulating The History </H3>
-<!--docid::SEC15::-->
-<P>
-
-<DL COMPACT>
-<A NAME="IDX42"></A>
-<DT><CODE>accept-line (Newline or Return)</CODE>
-<DD><A NAME="IDX43"></A>
-Accept the line regardless of where the cursor is.
-If this line is
-non-empty, it may be added to the history list for future recall with
-<CODE>add_history()</CODE>.
-If this line is a modified history line, the history line is restored
-to its original state.
-<P>
-
-<A NAME="IDX44"></A>
-<DT><CODE>previous-history (C-p)</CODE>
-<DD><A NAME="IDX45"></A>
-Move `back' through the history list, fetching the previous command.
-<P>
-
-<A NAME="IDX46"></A>
-<DT><CODE>next-history (C-n)</CODE>
-<DD><A NAME="IDX47"></A>
-Move `forward' through the history list, fetching the next command.
-<P>
-
-<A NAME="IDX48"></A>
-<DT><CODE>beginning-of-history (M-&#60;)</CODE>
-<DD><A NAME="IDX49"></A>
-Move to the first line in the history.
-<P>
-
-<A NAME="IDX50"></A>
-<DT><CODE>end-of-history (M-&#62;)</CODE>
-<DD><A NAME="IDX51"></A>
-Move to the end of the input history, i.e., the line currently
-being entered.
-<P>
-
-<A NAME="IDX52"></A>
-<DT><CODE>reverse-search-history (C-r)</CODE>
-<DD><A NAME="IDX53"></A>
-Search backward starting at the current line and moving `up' through
-the history as necessary. This is an incremental search.
-<P>
-
-<A NAME="IDX54"></A>
-<DT><CODE>forward-search-history (C-s)</CODE>
-<DD><A NAME="IDX55"></A>
-Search forward starting at the current line and moving `down' through
-the the history as necessary. This is an incremental search.
-<P>
-
-<A NAME="IDX56"></A>
-<DT><CODE>non-incremental-reverse-search-history (M-p)</CODE>
-<DD><A NAME="IDX57"></A>
-Search backward starting at the current line and moving `up'
-through the history as necessary using a non-incremental search
-for a string supplied by the user.
-<P>
-
-<A NAME="IDX58"></A>
-<DT><CODE>non-incremental-forward-search-history (M-n)</CODE>
-<DD><A NAME="IDX59"></A>
-Search forward starting at the current line and moving `down'
-through the the history as necessary using a non-incremental search
-for a string supplied by the user.
-<P>
-
-<A NAME="IDX60"></A>
-<DT><CODE>history-search-forward ()</CODE>
-<DD><A NAME="IDX61"></A>
-Search forward through the history for the string of characters
-between the start of the current line and the point.
-This is a non-incremental search.
-By default, this command is unbound.
-<P>
-
-<A NAME="IDX62"></A>
-<DT><CODE>history-search-backward ()</CODE>
-<DD><A NAME="IDX63"></A>
-Search backward through the history for the string of characters
-between the start of the current line and the point. This
-is a non-incremental search. By default, this command is unbound.
-<P>
-
-<A NAME="IDX64"></A>
-<DT><CODE>yank-nth-arg (M-C-y)</CODE>
-<DD><A NAME="IDX65"></A>
-Insert the first argument to the previous command (usually
-the second word on the previous line) at point.
-With an argument <VAR>n</VAR>,
-insert the <VAR>n</VAR>th word from the previous command (the words
-in the previous command begin with word 0). A negative argument
-inserts the <VAR>n</VAR>th word from the end of the previous command.
-<P>
-
-<A NAME="IDX66"></A>
-<DT><CODE>yank-last-arg (M-. or M-_)</CODE>
-<DD><A NAME="IDX67"></A>
-Insert last argument to the previous command (the last word of the
-previous history entry). With an
-argument, behave exactly like <CODE>yank-nth-arg</CODE>.
-Successive calls to <CODE>yank-last-arg</CODE> move back through the history
-list, inserting the last argument of each line in turn.
-<P>
-
-</DL>
-<P>
-
-<A NAME="Commands For Text"></A>
-<HR SIZE="6">
-<A NAME="SEC16"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC15"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC17"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC17"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.4.3 Commands For Changing Text </H3>
-<!--docid::SEC16::-->
-<P>
-
-<DL COMPACT>
-<A NAME="IDX68"></A>
-<DT><CODE>delete-char (C-d)</CODE>
-<DD><A NAME="IDX69"></A>
-Delete the character at point. If point is at the
-beginning of the line, there are no characters in the line, and
-the last character typed was not bound to <CODE>delete-char</CODE>, then
-return EOF.
-<P>
-
-<A NAME="IDX70"></A>
-<DT><CODE>backward-delete-char (Rubout)</CODE>
-<DD><A NAME="IDX71"></A>
-Delete the character behind the cursor. A numeric argument means
-to kill the characters instead of deleting them.
-<P>
-
-<A NAME="IDX72"></A>
-<DT><CODE>forward-backward-delete-char ()</CODE>
-<DD><A NAME="IDX73"></A>
-Delete the character under the cursor, unless the cursor is at the
-end of the line, in which case the character behind the cursor is
-deleted. By default, this is not bound to a key.
-<P>
-
-<A NAME="IDX74"></A>
-<DT><CODE>quoted-insert (C-q or C-v)</CODE>
-<DD><A NAME="IDX75"></A>
-Add the next character typed to the line verbatim. This is
-how to insert key sequences like <KBD>C-q</KBD>, for example.
-<P>
-
-<A NAME="IDX76"></A>
-<DT><CODE>tab-insert (M-<KBD>TAB</KBD>)</CODE>
-<DD><A NAME="IDX77"></A>
-Insert a tab character.
-<P>
-
-<A NAME="IDX78"></A>
-<DT><CODE>self-insert (a, b, A, 1, !, <small>...</small>)</CODE>
-<DD><A NAME="IDX79"></A>
-Insert yourself.
-<P>
-
-<A NAME="IDX80"></A>
-<DT><CODE>transpose-chars (C-t)</CODE>
-<DD><A NAME="IDX81"></A>
-Drag the character before the cursor forward over
-the character at the cursor, moving the
-cursor forward as well. If the insertion point
-is at the end of the line, then this
-transposes the last two characters of the line.
-Negative arguments have no effect.
-<P>
-
-<A NAME="IDX82"></A>
-<DT><CODE>transpose-words (M-t)</CODE>
-<DD><A NAME="IDX83"></A>
-Drag the word before point past the word after point,
-moving point past that word as well.
-If the insertion point is at the end of the line, this transposes
-the last two words on the line.
-<P>
-
-<A NAME="IDX84"></A>
-<DT><CODE>upcase-word (M-u)</CODE>
-<DD><A NAME="IDX85"></A>
-Uppercase the current (or following) word. With a negative argument,
-uppercase the previous word, but do not move the cursor.
-<P>
-
-<A NAME="IDX86"></A>
-<DT><CODE>downcase-word (M-l)</CODE>
-<DD><A NAME="IDX87"></A>
-Lowercase the current (or following) word. With a negative argument,
-lowercase the previous word, but do not move the cursor.
-<P>
-
-<A NAME="IDX88"></A>
-<DT><CODE>capitalize-word (M-c)</CODE>
-<DD><A NAME="IDX89"></A>
-Capitalize the current (or following) word. With a negative argument,
-capitalize the previous word, but do not move the cursor.
-<P>
-
-<A NAME="IDX90"></A>
-<DT><CODE>overwrite-mode ()</CODE>
-<DD><A NAME="IDX91"></A>
-Toggle overwrite mode. With an explicit positive numeric argument,
-switches to overwrite mode. With an explicit non-positive numeric
-argument, switches to insert mode. This command affects only
-<CODE>emacs</CODE> mode; <CODE>vi</CODE> mode does overwrite differently.
-Each call to <CODE>readline()</CODE> starts in insert mode.
-<P>
-
-In overwrite mode, characters bound to <CODE>self-insert</CODE> replace
-the text at point rather than pushing the text to the right.
-Characters bound to <CODE>backward-delete-char</CODE> replace the character
-before point with a space.
-</P><P>
-
-By default, this command is unbound.
-</P><P>
-
-</DL>
-<P>
-
-<A NAME="Commands For Killing"></A>
-<HR SIZE="6">
-<A NAME="SEC17"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC16"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC18"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC18"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.4.4 Killing And Yanking </H3>
-<!--docid::SEC17::-->
-<P>
-
-<DL COMPACT>
-
-<A NAME="IDX92"></A>
-<DT><CODE>kill-line (C-k)</CODE>
-<DD><A NAME="IDX93"></A>
-Kill the text from point to the end of the line.
-<P>
-
-<A NAME="IDX94"></A>
-<DT><CODE>backward-kill-line (C-x Rubout)</CODE>
-<DD><A NAME="IDX95"></A>
-Kill backward to the beginning of the line.
-<P>
-
-<A NAME="IDX96"></A>
-<DT><CODE>unix-line-discard (C-u)</CODE>
-<DD><A NAME="IDX97"></A>
-Kill backward from the cursor to the beginning of the current line.
-<P>
-
-<A NAME="IDX98"></A>
-<DT><CODE>kill-whole-line ()</CODE>
-<DD><A NAME="IDX99"></A>
-Kill all characters on the current line, no matter where point is.
-By default, this is unbound.
-<P>
-
-<A NAME="IDX100"></A>
-<DT><CODE>kill-word (M-d)</CODE>
-<DD><A NAME="IDX101"></A>
-Kill from point to the end of the current word, or if between
-words, to the end of the next word.
-Word boundaries are the same as <CODE>forward-word</CODE>.
-<P>
-
-<A NAME="IDX102"></A>
-<DT><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE>
-<DD><A NAME="IDX103"></A>
-Kill the word behind point.
-Word boundaries are the same as <CODE>backward-word</CODE>.
-<P>
-
-<A NAME="IDX104"></A>
-<DT><CODE>unix-word-rubout (C-w)</CODE>
-<DD><A NAME="IDX105"></A>
-Kill the word behind point, using white space as a word boundary.
-The killed text is saved on the kill-ring.
-<P>
-
-<A NAME="IDX106"></A>
-<DT><CODE>delete-horizontal-space ()</CODE>
-<DD><A NAME="IDX107"></A>
-Delete all spaces and tabs around point. By default, this is unbound.
-<P>
-
-<A NAME="IDX108"></A>
-<DT><CODE>kill-region ()</CODE>
-<DD><A NAME="IDX109"></A>
-Kill the text in the current region.
-By default, this command is unbound.
-<P>
-
-<A NAME="IDX110"></A>
-<DT><CODE>copy-region-as-kill ()</CODE>
-<DD><A NAME="IDX111"></A>
-Copy the text in the region to the kill buffer, so it can be yanked
-right away. By default, this command is unbound.
-<P>
-
-<A NAME="IDX112"></A>
-<DT><CODE>copy-backward-word ()</CODE>
-<DD><A NAME="IDX113"></A>
-Copy the word before point to the kill buffer.
-The word boundaries are the same as <CODE>backward-word</CODE>.
-By default, this command is unbound.
-<P>
-
-<A NAME="IDX114"></A>
-<DT><CODE>copy-forward-word ()</CODE>
-<DD><A NAME="IDX115"></A>
-Copy the word following point to the kill buffer.
-The word boundaries are the same as <CODE>forward-word</CODE>.
-By default, this command is unbound.
-<P>
-
-<A NAME="IDX116"></A>
-<DT><CODE>yank (C-y)</CODE>
-<DD><A NAME="IDX117"></A>
-Yank the top of the kill ring into the buffer at point.
-<P>
-
-<A NAME="IDX118"></A>
-<DT><CODE>yank-pop (M-y)</CODE>
-<DD><A NAME="IDX119"></A>
-Rotate the kill-ring, and yank the new top. You can only do this if
-the prior command is <CODE>yank</CODE> or <CODE>yank-pop</CODE>.
-</DL>
-<P>
-
-<A NAME="Numeric Arguments"></A>
-<HR SIZE="6">
-<A NAME="SEC18"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC17"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC19"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC19"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.4.5 Specifying Numeric Arguments </H3>
-<!--docid::SEC18::-->
-<DL COMPACT>
-
-<A NAME="IDX120"></A>
-<DT><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, <small>...</small> <KBD>M--</KBD>)</CODE>
-<DD><A NAME="IDX121"></A>
-Add this digit to the argument already accumulating, or start a new
-argument. <KBD>M--</KBD> starts a negative argument.
-<P>
-
-<A NAME="IDX122"></A>
-<DT><CODE>universal-argument ()</CODE>
-<DD><A NAME="IDX123"></A>
-This is another way to specify an argument.
-If this command is followed by one or more digits, optionally with a
-leading minus sign, those digits define the argument.
-If the command is followed by digits, executing <CODE>universal-argument</CODE>
-again ends the numeric argument, but is otherwise ignored.
-As a special case, if this command is immediately followed by a
-character that is neither a digit or minus sign, the argument count
-for the next command is multiplied by four.
-The argument count is initially one, so executing this function the
-first time makes the argument count four, a second time makes the
-argument count sixteen, and so on.
-By default, this is not bound to a key.
-</DL>
-<P>
-
-<A NAME="Commands For Completion"></A>
-<HR SIZE="6">
-<A NAME="SEC19"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC18"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC20"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC20"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.4.6 Letting Readline Type For You </H3>
-<!--docid::SEC19::-->
-<P>
-
-<DL COMPACT>
-<A NAME="IDX124"></A>
-<DT><CODE>complete (<KBD>TAB</KBD>)</CODE>
-<DD><A NAME="IDX125"></A>
-Attempt to perform completion on the text before point.
-The actual completion performed is application-specific.
-The default is filename completion.
-<P>
-
-<A NAME="IDX126"></A>
-<DT><CODE>possible-completions (M-?)</CODE>
-<DD><A NAME="IDX127"></A>
-List the possible completions of the text before point.
-<P>
-
-<A NAME="IDX128"></A>
-<DT><CODE>insert-completions (M-*)</CODE>
-<DD><A NAME="IDX129"></A>
-Insert all completions of the text before point that would have
-been generated by <CODE>possible-completions</CODE>.
-<P>
-
-<A NAME="IDX130"></A>
-<DT><CODE>menu-complete ()</CODE>
-<DD><A NAME="IDX131"></A>
-Similar to <CODE>complete</CODE>, but replaces the word to be completed
-with a single match from the list of possible completions.
-Repeated execution of <CODE>menu-complete</CODE> steps through the list
-of possible completions, inserting each match in turn.
-At the end of the list of completions, the bell is rung
-(subject to the setting of <CODE>bell-style</CODE>)
-and the original text is restored.
-An argument of <VAR>n</VAR> moves <VAR>n</VAR> positions forward in the list
-of matches; a negative argument may be used to move backward
-through the list.
-This command is intended to be bound to <KBD>TAB</KBD>, but is unbound
-by default.
-<P>
-
-<A NAME="IDX132"></A>
-<DT><CODE>delete-char-or-list ()</CODE>
-<DD><A NAME="IDX133"></A>
-Deletes the character under the cursor if not at the beginning or
-end of the line (like <CODE>delete-char</CODE>).
-If at the end of the line, behaves identically to
-<CODE>possible-completions</CODE>.
-This command is unbound by default.
-<P>
-
-</DL>
-<P>
-
-<A NAME="Keyboard Macros"></A>
-<HR SIZE="6">
-<A NAME="SEC20"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC19"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC21"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC21"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.4.7 Keyboard Macros </H3>
-<!--docid::SEC20::-->
-<DL COMPACT>
-
-<A NAME="IDX134"></A>
-<DT><CODE>start-kbd-macro (C-x ()</CODE>
-<DD><A NAME="IDX135"></A>
-Begin saving the characters typed into the current keyboard macro.
-<P>
-
-<A NAME="IDX136"></A>
-<DT><CODE>end-kbd-macro (C-x ))</CODE>
-<DD><A NAME="IDX137"></A>
-Stop saving the characters typed into the current keyboard macro
-and save the definition.
-<P>
-
-<A NAME="IDX138"></A>
-<DT><CODE>call-last-kbd-macro (C-x e)</CODE>
-<DD><A NAME="IDX139"></A>
-Re-execute the last keyboard macro defined, by making the characters
-in the macro appear as if typed at the keyboard.
-<P>
-
-</DL>
-<P>
-
-<A NAME="Miscellaneous Commands"></A>
-<HR SIZE="6">
-<A NAME="SEC21"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC20"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.4.8 Some Miscellaneous Commands </H3>
-<!--docid::SEC21::-->
-<DL COMPACT>
-
-<A NAME="IDX140"></A>
-<DT><CODE>re-read-init-file (C-x C-r)</CODE>
-<DD><A NAME="IDX141"></A>
-Read in the contents of the <VAR>inputrc</VAR> file, and incorporate
-any bindings or variable assignments found there.
-<P>
-
-<A NAME="IDX142"></A>
-<DT><CODE>abort (C-g)</CODE>
-<DD><A NAME="IDX143"></A>
-Abort the current editing command and
-ring the terminal's bell (subject to the setting of
-<CODE>bell-style</CODE>).
-<P>
-
-<A NAME="IDX144"></A>
-<DT><CODE>do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, <small>...</small>)</CODE>
-<DD><A NAME="IDX145"></A>
-If the metafied character <VAR>x</VAR> is lowercase, run the command
-that is bound to the corresponding uppercase character.
-<P>
-
-<A NAME="IDX146"></A>
-<DT><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE>
-<DD><A NAME="IDX147"></A>
-Metafy the next character typed. This is for keyboards
-without a meta key. Typing <SAMP>`<KBD>ESC</KBD> f'</SAMP> is equivalent to typing
-<KBD>M-f</KBD>.
-<P>
-
-<A NAME="IDX148"></A>
-<DT><CODE>undo (C-_ or C-x C-u)</CODE>
-<DD><A NAME="IDX149"></A>
-Incremental undo, separately remembered for each line.
-<P>
-
-<A NAME="IDX150"></A>
-<DT><CODE>revert-line (M-r)</CODE>
-<DD><A NAME="IDX151"></A>
-Undo all changes made to this line. This is like executing the <CODE>undo</CODE>
-command enough times to get back to the beginning.
-<P>
-
-<A NAME="IDX152"></A>
-<DT><CODE>tilde-expand (M-~)</CODE>
-<DD><A NAME="IDX153"></A>
-Perform tilde expansion on the current word.
-<P>
-
-<A NAME="IDX154"></A>
-<DT><CODE>set-mark (C-@)</CODE>
-<DD><A NAME="IDX155"></A>
-Set the mark to the point. If a
-numeric argument is supplied, the mark is set to that position.
-<P>
-
-<A NAME="IDX156"></A>
-<DT><CODE>exchange-point-and-mark (C-x C-x)</CODE>
-<DD><A NAME="IDX157"></A>
-Swap the point with the mark. The current cursor position is set to
-the saved position, and the old cursor position is saved as the mark.
-<P>
-
-<A NAME="IDX158"></A>
-<DT><CODE>character-search (C-])</CODE>
-<DD><A NAME="IDX159"></A>
-A character is read and point is moved to the next occurrence of that
-character. A negative count searches for previous occurrences.
-<P>
-
-<A NAME="IDX160"></A>
-<DT><CODE>character-search-backward (M-C-])</CODE>
-<DD><A NAME="IDX161"></A>
-A character is read and point is moved to the previous occurrence
-of that character. A negative count searches for subsequent
-occurrences.
-<P>
-
-<A NAME="IDX162"></A>
-<DT><CODE>insert-comment (M-#)</CODE>
-<DD><A NAME="IDX163"></A>
-Without a numeric argument, the value of the <CODE>comment-begin</CODE>
-variable is inserted at the beginning of the current line.
-If a numeric argument is supplied, this command acts as a toggle: if
-the characters at the beginning of the line do not match the value
-of <CODE>comment-begin</CODE>, the value is inserted, otherwise
-the characters in <CODE>comment-begin</CODE> are deleted from the beginning of
-the line.
-In either case, the line is accepted as if a newline had been typed.
-<P>
-
-<A NAME="IDX164"></A>
-<DT><CODE>dump-functions ()</CODE>
-<DD><A NAME="IDX165"></A>
-Print all of the functions and their key bindings to the
-Readline output stream. If a numeric argument is supplied,
-the output is formatted in such a way that it can be made part
-of an <VAR>inputrc</VAR> file. This command is unbound by default.
-<P>
-
-<A NAME="IDX166"></A>
-<DT><CODE>dump-variables ()</CODE>
-<DD><A NAME="IDX167"></A>
-Print all of the settable variables and their values to the
-Readline output stream. If a numeric argument is supplied,
-the output is formatted in such a way that it can be made part
-of an <VAR>inputrc</VAR> file. This command is unbound by default.
-<P>
-
-<A NAME="IDX168"></A>
-<DT><CODE>dump-macros ()</CODE>
-<DD><A NAME="IDX169"></A>
-Print all of the Readline key sequences bound to macros and the
-strings they output. If a numeric argument is supplied,
-the output is formatted in such a way that it can be made part
-of an <VAR>inputrc</VAR> file. This command is unbound by default.
-<P>
-
-<A NAME="IDX170"></A>
-<DT><CODE>emacs-editing-mode (C-e)</CODE>
-<DD><A NAME="IDX171"></A>
-When in <CODE>vi</CODE> command mode, this causes a switch to <CODE>emacs</CODE>
-editing mode.
-<P>
-
-<A NAME="IDX172"></A>
-<DT><CODE>vi-editing-mode (M-C-j)</CODE>
-<DD><A NAME="IDX173"></A>
-When in <CODE>emacs</CODE> editing mode, this causes a switch to <CODE>vi</CODE>
-editing mode.
-<P>
-
-</DL>
-<P>
-
-<A NAME="Readline vi Mode"></A>
-<HR SIZE="6">
-<A NAME="SEC22"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC21"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC1"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 1.5 Readline vi Mode </H2>
-<!--docid::SEC22::-->
-<P>
-
-While the Readline library does not have a full set of <CODE>vi</CODE>
-editing functions, it does contain enough to allow simple editing
-of the line. The Readline <CODE>vi</CODE> mode behaves as specified in
-the POSIX 1003.2 standard.
-</P><P>
-
-In order to switch interactively between <CODE>emacs</CODE> and <CODE>vi</CODE>
-editing modes, use the command <KBD>M-C-j</KBD> (bound to emacs-editing-mode
-when in <CODE>vi</CODE> mode and to vi-editing-mode in <CODE>emacs</CODE> mode).
-The Readline default is <CODE>emacs</CODE> mode.
-</P><P>
-
-When you enter a line in <CODE>vi</CODE> mode, you are already placed in
-`insertion' mode, as if you had typed an <SAMP>`i'</SAMP>. Pressing <KBD>ESC</KBD>
-switches you into `command' mode, where you can edit the text of the
-line with the standard <CODE>vi</CODE> movement keys, move to previous
-history lines with <SAMP>`k'</SAMP> and subsequent lines with <SAMP>`j'</SAMP>, and
-so forth.
-</P><P>
-
-This document describes the GNU Readline Library, a utility for aiding
-in the consitency of user interface across discrete programs that need
-to provide a command line interface.
-</P><P>
-
-Copyright (C) 1988-2002 Free Software Foundation, Inc.
-</P><P>
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-pare preserved on all copies.
-</P><P>
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the entire
-resulting derived work is distributed under the terms of a permission
-notice identical to this one.
-</P><P>
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that this permission notice may be stated in a translation approved
-by the Foundation.
-</P><P>
-
-<A NAME="Programming with GNU Readline"></A>
-<HR SIZE="6">
-<A NAME="SEC23"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC24"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1> 2. Programming with GNU Readline </H1>
-<!--docid::SEC23::-->
-<P>
-
-This chapter describes the interface between the GNU Readline Library and
-other programs. If you are a programmer, and you wish to include the
-features found in GNU Readline
-such as completion, line editing, and interactive history manipulation
-in your own programs, this section is for you.
-</P><P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC24">2.1 Basic Behavior</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Using the default behavior of Readline.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC25">2.2 Custom Functions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Adding your own functions to Readline.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Variables accessible to custom
- functions.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC29">2.4 Readline Convenience Functions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions which Readline supplies to
- aid in writing your own custom
- functions.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC43">2.5 Readline Signal Handling</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">How Readline behaves when it receives signals.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC44">2.6 Custom Completers</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Supplanting or supplementing Readline's
- completion functions.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<A NAME="Basic Behavior"></A>
-<HR SIZE="6">
-<A NAME="SEC24"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC25"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 2.1 Basic Behavior </H2>
-<!--docid::SEC24::-->
-<P>
-
-Many programs provide a command line interface, such as <CODE>mail</CODE>,
-<CODE>ftp</CODE>, and <CODE>sh</CODE>. For such programs, the default behaviour of
-Readline is sufficient. This section describes how to use Readline in
-the simplest way possible, perhaps to replace calls in your code to
-<CODE>gets()</CODE> or <CODE>fgets()</CODE>.
-</P><P>
-
-<A NAME="IDX174"></A>
-<A NAME="IDX175"></A>
-</P><P>
-
-The function <CODE>readline()</CODE> prints a prompt <VAR>prompt</VAR>
-and then reads and returns a single line of text from the user.
-If <VAR>prompt</VAR> is <CODE>NULL</CODE> or the empty string, no prompt is displayed.
-The line <CODE>readline</CODE> returns is allocated with <CODE>malloc()</CODE>;
-the caller should <CODE>free()</CODE> the line when it has finished with it.
-The declaration for <CODE>readline</CODE> in ANSI C is
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre><CODE>char *readline (const char *<VAR>prompt</VAR>);</CODE>
-</pre></td></tr></table></P><P>
-
-So, one might say
-<TABLE><tr><td>&nbsp;</td><td class=example><pre><CODE>char *line = readline ("Enter a line: ");</CODE>
-</pre></td></tr></table>in order to read a line of text from the user.
-The line returned has the final newline removed, so only the
-text remains.
-</P><P>
-
-If <CODE>readline</CODE> encounters an <CODE>EOF</CODE> while reading the line, and the
-line is empty at that point, then <CODE>(char *)NULL</CODE> is returned.
-Otherwise, the line is ended just as if a newline had been typed.
-</P><P>
-
-If you want the user to be able to get at the line later, (with
-<KBD>C-p</KBD> for example), you must call <CODE>add_history()</CODE> to save the
-line away in a <EM>history</EM> list of such lines.
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre><CODE>add_history (line)</CODE>;
-</pre></td></tr></table></P><P>
-
-For full details on the GNU History Library, see the associated manual.
-</P><P>
-
-It is preferable to avoid saving empty lines on the history list, since
-users rarely have a burning need to reuse a blank line. Here is
-a function which usefully replaces the standard <CODE>gets()</CODE> library
-function, and has the advantage of no static buffer to overflow:
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>/* A static variable for holding the line. */
-static char *line_read = (char *)NULL;
-
-/* Read a string, and return a pointer to it.
- Returns NULL on EOF. */
-char *
-rl_gets ()
-{
- /* If the buffer has already been allocated,
- return the memory to the free pool. */
- if (line_read)
- {
- free (line_read);
- line_read = (char *)NULL;
- }
-
- /* Get a line from the user. */
- line_read = readline ("");
-
- /* If the line has any text in it,
- save it on the history. */
- if (line_read &#38;&#38; *line_read)
- add_history (line_read);
-
- return (line_read);
-}
-</pre></td></tr></table></P><P>
-
-This function gives the user the default behaviour of <KBD>TAB</KBD>
-completion: completion on file names. If you do not want Readline to
-complete on filenames, you can change the binding of the <KBD>TAB</KBD> key
-with <CODE>rl_bind_key()</CODE>.
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre><CODE>int rl_bind_key (int <VAR>key</VAR>, rl_command_func_t *<VAR>function</VAR>);</CODE>
-</pre></td></tr></table></P><P>
-
-<CODE>rl_bind_key()</CODE> takes two arguments: <VAR>key</VAR> is the character that
-you want to bind, and <VAR>function</VAR> is the address of the function to
-call when <VAR>key</VAR> is pressed. Binding <KBD>TAB</KBD> to <CODE>rl_insert()</CODE>
-makes <KBD>TAB</KBD> insert itself.
-<CODE>rl_bind_key()</CODE> returns non-zero if <VAR>key</VAR> is not a valid
-ASCII character code (between 0 and 255).
-</P><P>
-
-Thus, to disable the default <KBD>TAB</KBD> behavior, the following suffices:
-<TABLE><tr><td>&nbsp;</td><td class=example><pre><CODE>rl_bind_key ('\t', rl_insert);</CODE>
-</pre></td></tr></table></P><P>
-
-This code should be executed once at the start of your program; you
-might write a function called <CODE>initialize_readline()</CODE> which
-performs this and other desired initializations, such as installing
-custom completers (see section <A HREF="readline.html#SEC44">2.6 Custom Completers</A>).
-</P><P>
-
-<A NAME="Custom Functions"></A>
-<HR SIZE="6">
-<A NAME="SEC25"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC24"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC26"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC28"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC28"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 2.2 Custom Functions </H2>
-<!--docid::SEC25::-->
-<P>
-
-Readline provides many functions for manipulating the text of
-the line, but it isn't possible to anticipate the needs of all
-programs. This section describes the various functions and variables
-defined within the Readline library which allow a user program to add
-customized functionality to Readline.
-</P><P>
-
-Before declaring any functions that customize Readline's behavior, or
-using any functionality Readline provides in other code, an
-application writer should include the file <CODE>&#60;readline/readline.h&#62;</CODE>
-in any file that uses Readline's features. Since some of the definitions
-in <CODE>readline.h</CODE> use the <CODE>stdio</CODE> library, the file
-<CODE>&#60;stdio.h&#62;</CODE> should be included before <CODE>readline.h</CODE>.
-</P><P>
-
-<CODE>readline.h</CODE> defines a C preprocessor variable that should
-be treated as an integer, <CODE>RL_READLINE_VERSION</CODE>, which may
-be used to conditionally compile application code depending on
-the installed Readline version. The value is a hexadecimal
-encoding of the major and minor version numbers of the library,
-of the form 0x<VAR>MMmm</VAR>. <VAR>MM</VAR> is the two-digit major
-version number; <VAR>mm</VAR> is the two-digit minor version number.
-For Readline 4.2, for example, the value of
-<CODE>RL_READLINE_VERSION</CODE> would be <CODE>0x0402</CODE>.
-</P><P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC26">2.2.1 Readline Typedefs</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">C declarations to make code readable.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC27">2.2.2 Writing a New Function</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Variables and calling conventions.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<A NAME="Readline Typedefs"></A>
-<HR SIZE="6">
-<A NAME="SEC26"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC25"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC27"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC28"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC25"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC28"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.2.1 Readline Typedefs </H3>
-<!--docid::SEC26::-->
-<P>
-
-For readabilty, we declare a number of new object types, all pointers
-to functions.
-</P><P>
-
-The reason for declaring these new types is to make it easier to write
-code describing pointers to C functions with appropriately prototyped
-arguments and return values.
-</P><P>
-
-For instance, say we want to declare a variable <VAR>func</VAR> as a pointer
-to a function which takes two <CODE>int</CODE> arguments and returns an
-<CODE>int</CODE> (this is the type of all of the Readline bindable functions).
-Instead of the classic C declaration
-</P><P>
-
-<CODE>int (*func)();</CODE>
-</P><P>
-
-or the ANSI-C style declaration
-</P><P>
-
-<CODE>int (*func)(int, int);</CODE>
-</P><P>
-
-we may write
-</P><P>
-
-<CODE>rl_command_func_t *func;</CODE>
-</P><P>
-
-The full list of function pointer types available is
-</P><P>
-
-<DL COMPACT>
-<DT><CODE>typedef int rl_command_func_t (int, int);</CODE>
-<DD><P>
-
-<DT><CODE>typedef char *rl_compentry_func_t (const char *, int);</CODE>
-<DD><P>
-
-<DT><CODE>typedef char **rl_completion_func_t (const char *, int, int);</CODE>
-<DD><P>
-
-<DT><CODE>typedef char *rl_quote_func_t (char *, int, char *);</CODE>
-<DD><P>
-
-<DT><CODE>typedef char *rl_dequote_func_t (char *, int);</CODE>
-<DD><P>
-
-<DT><CODE>typedef int rl_compignore_func_t (char **);</CODE>
-<DD><P>
-
-<DT><CODE>typedef void rl_compdisp_func_t (char **, int, int);</CODE>
-<DD><P>
-
-<DT><CODE>typedef int rl_hook_func_t (void);</CODE>
-<DD><P>
-
-<DT><CODE>typedef int rl_getc_func_t (FILE *);</CODE>
-<DD><P>
-
-<DT><CODE>typedef int rl_linebuf_func_t (char *, int);</CODE>
-<DD><P>
-
-<DT><CODE>typedef int rl_intfunc_t (int);</CODE>
-<DD><DT><CODE>#define rl_ivoidfunc_t rl_hook_func_t</CODE>
-<DD><DT><CODE>typedef int rl_icpfunc_t (char *);</CODE>
-<DD><DT><CODE>typedef int rl_icppfunc_t (char **);</CODE>
-<DD><P>
-
-<DT><CODE>typedef void rl_voidfunc_t (void);</CODE>
-<DD><DT><CODE>typedef void rl_vintfunc_t (int);</CODE>
-<DD><DT><CODE>typedef void rl_vcpfunc_t (char *);</CODE>
-<DD><DT><CODE>typedef void rl_vcppfunc_t (char **);</CODE>
-<DD><P>
-
-</DL>
-<P>
-
-<A NAME="Function Writing"></A>
-<HR SIZE="6">
-<A NAME="SEC27"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC26"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC28"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC28"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC25"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC28"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.2.2 Writing a New Function </H3>
-<!--docid::SEC27::-->
-<P>
-
-In order to write new functions for Readline, you need to know the
-calling conventions for keyboard-invoked functions, and the names of the
-variables that describe the current state of the line read so far.
-</P><P>
-
-The calling sequence for a command <CODE>foo</CODE> looks like
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre><CODE>int foo (int count, int key)</CODE>
-</pre></td></tr></table></P><P>
-
-where <VAR>count</VAR> is the numeric argument (or 1 if defaulted) and
-<VAR>key</VAR> is the key that invoked this function.
-</P><P>
-
-It is completely up to the function as to what should be done with the
-numeric argument. Some functions use it as a repeat count, some
-as a flag, and others to choose alternate behavior (refreshing the current
-line as opposed to refreshing the screen, for example). Some choose to
-ignore it. In general, if a
-function uses the numeric argument as a repeat count, it should be able
-to do something useful with both negative and positive arguments.
-At the very least, it should be aware that it can be passed a
-negative argument.
-</P><P>
-
-A command function should return 0 if its action completes successfully,
-and a non-zero value if some error occurs.
-</P><P>
-
-<A NAME="Readline Variables"></A>
-<HR SIZE="6">
-<A NAME="SEC28"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC27"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 2.3 Readline Variables </H2>
-<!--docid::SEC28::-->
-<P>
-
-These variables are available to function writers.
-</P><P>
-
-<A NAME="IDX176"></A>
-<DL>
-<DT><U>Variable:</U> char * <B>rl_line_buffer</B>
-<DD>This is the line gathered so far. You are welcome to modify the
-contents of the line, but see <A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A>. The
-function <CODE>rl_extend_line_buffer</CODE> is available to increase
-the memory allocated to <CODE>rl_line_buffer</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX177"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_point</B>
-<DD>The offset of the current cursor position in <CODE>rl_line_buffer</CODE>
-(the <EM>point</EM>).
-</DL>
-</P><P>
-
-<A NAME="IDX178"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_end</B>
-<DD>The number of characters present in <CODE>rl_line_buffer</CODE>. When
-<CODE>rl_point</CODE> is at the end of the line, <CODE>rl_point</CODE> and
-<CODE>rl_end</CODE> are equal.
-</DL>
-</P><P>
-
-<A NAME="IDX179"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_mark</B>
-<DD>The <VAR>mark</VAR> (saved position) in the current line. If set, the mark
-and point define a <EM>region</EM>.
-</DL>
-</P><P>
-
-<A NAME="IDX180"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_done</B>
-<DD>Setting this to a non-zero value causes Readline to return the current
-line immediately.
-</DL>
-</P><P>
-
-<A NAME="IDX181"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_num_chars_to_read</B>
-<DD>Setting this to a positive value before calling <CODE>readline()</CODE> causes
-Readline to return after accepting that many characters, rather
-than reading up to a character bound to <CODE>accept-line</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX182"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_pending_input</B>
-<DD>Setting this to a value makes it the next keystroke read. This is a
-way to stuff a single character into the input stream.
-</DL>
-</P><P>
-
-<A NAME="IDX183"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_dispatching</B>
-<DD>Set to a non-zero value if a function is being called from a key binding;
-zero otherwise. Application functions can test this to discover whether
-they were called directly or by Readline's dispatching mechanism.
-</DL>
-</P><P>
-
-<A NAME="IDX184"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_erase_empty_line</B>
-<DD>Setting this to a non-zero value causes Readline to completely erase
-the current line, including any prompt, any time a newline is typed as
-the only character on an otherwise-empty line. The cursor is moved to
-the beginning of the newly-blank line.
-</DL>
-</P><P>
-
-<A NAME="IDX185"></A>
-<DL>
-<DT><U>Variable:</U> char * <B>rl_prompt</B>
-<DD>The prompt Readline uses. This is set from the argument to
-<CODE>readline()</CODE>, and should not be assigned to directly.
-The <CODE>rl_set_prompt()</CODE> function (see section <A HREF="readline.html#SEC35">2.4.6 Redisplay</A>) may
-be used to modify the prompt string after calling <CODE>readline()</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX186"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_already_prompted</B>
-<DD>If an application wishes to display the prompt itself, rather than have
-Readline do it the first time <CODE>readline()</CODE> is called, it should set
-this variable to a non-zero value after displaying the prompt.
-The prompt must also be passed as the argument to <CODE>readline()</CODE> so
-the redisplay functions can update the display properly.
-The calling application is responsible for managing the value; Readline
-never sets it.
-</DL>
-</P><P>
-
-<A NAME="IDX187"></A>
-<DL>
-<DT><U>Variable:</U> const char * <B>rl_library_version</B>
-<DD>The version number of this revision of the library.
-</DL>
-</P><P>
-
-<A NAME="IDX188"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_readline_version</B>
-<DD>An integer encoding the current version of the library. The encoding is
-of the form 0x<VAR>MMmm</VAR>, where <VAR>MM</VAR> is the two-digit major version
-number, and <VAR>mm</VAR> is the two-digit minor version number.
-For example, for Readline-4.2, <CODE>rl_readline_version</CODE> would have the
-value 0x0402.
-</DL>
-</P><P>
-
-<A NAME="IDX189"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_gnu_readline_p</B>
-<DD>Always set to 1, denoting that this is GNU readline rather than some
-emulation.
-</DL>
-</P><P>
-
-<A NAME="IDX190"></A>
-<DL>
-<DT><U>Variable:</U> const char * <B>rl_terminal_name</B>
-<DD>The terminal type, used for initialization. If not set by the application,
-Readline sets this to the value of the <CODE>TERM</CODE> environment variable
-the first time it is called.
-</DL>
-</P><P>
-
-<A NAME="IDX191"></A>
-<DL>
-<DT><U>Variable:</U> const char * <B>rl_readline_name</B>
-<DD>This variable is set to a unique name by each application using Readline.
-The value allows conditional parsing of the inputrc file
-(see section <A HREF="readline.html#SEC11">1.3.2 Conditional Init Constructs</A>).
-</DL>
-</P><P>
-
-<A NAME="IDX192"></A>
-<DL>
-<DT><U>Variable:</U> FILE * <B>rl_instream</B>
-<DD>The stdio stream from which Readline reads input.
-If <CODE>NULL</CODE>, Readline defaults to <VAR>stdin</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX193"></A>
-<DL>
-<DT><U>Variable:</U> FILE * <B>rl_outstream</B>
-<DD>The stdio stream to which Readline performs output.
-If <CODE>NULL</CODE>, Readline defaults to <VAR>stdout</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX194"></A>
-<DL>
-<DT><U>Variable:</U> rl_command_func_t * <B>rl_last_func</B>
-<DD>The address of the last command function Readline executed. May be used to
-test whether or not a function is being executed twice in succession, for
-example.
-</DL>
-</P><P>
-
-<A NAME="IDX195"></A>
-<DL>
-<DT><U>Variable:</U> rl_hook_func_t * <B>rl_startup_hook</B>
-<DD>If non-zero, this is the address of a function to call just
-before <CODE>readline</CODE> prints the first prompt.
-</DL>
-</P><P>
-
-<A NAME="IDX196"></A>
-<DL>
-<DT><U>Variable:</U> rl_hook_func_t * <B>rl_pre_input_hook</B>
-<DD>If non-zero, this is the address of a function to call after
-the first prompt has been printed and just before <CODE>readline</CODE>
-starts reading input characters.
-</DL>
-</P><P>
-
-<A NAME="IDX197"></A>
-<DL>
-<DT><U>Variable:</U> rl_hook_func_t * <B>rl_event_hook</B>
-<DD>If non-zero, this is the address of a function to call periodically
-when Readline is waiting for terminal input.
-By default, this will be called at most ten times a second if there
-is no keyboard input.
-</DL>
-</P><P>
-
-<A NAME="IDX198"></A>
-<DL>
-<DT><U>Variable:</U> rl_getc_func_t * <B>rl_getc_function</B>
-<DD>If non-zero, Readline will call indirectly through this pointer
-to get a character from the input stream. By default, it is set to
-<CODE>rl_getc</CODE>, the default Readline character input function
-(see section <A HREF="readline.html#SEC37">2.4.8 Character Input</A>).
-</DL>
-</P><P>
-
-<A NAME="IDX199"></A>
-<DL>
-<DT><U>Variable:</U> rl_voidfunc_t * <B>rl_redisplay_function</B>
-<DD>If non-zero, Readline will call indirectly through this pointer
-to update the display with the current contents of the editing buffer.
-By default, it is set to <CODE>rl_redisplay</CODE>, the default Readline
-redisplay function (see section <A HREF="readline.html#SEC35">2.4.6 Redisplay</A>).
-</DL>
-</P><P>
-
-<A NAME="IDX200"></A>
-<DL>
-<DT><U>Variable:</U> rl_vintfunc_t * <B>rl_prep_term_function</B>
-<DD>If non-zero, Readline will call indirectly through this pointer
-to initialize the terminal. The function takes a single argument, an
-<CODE>int</CODE> flag that says whether or not to use eight-bit characters.
-By default, this is set to <CODE>rl_prep_terminal</CODE>
-(see section <A HREF="readline.html#SEC38">2.4.9 Terminal Management</A>).
-</DL>
-</P><P>
-
-<A NAME="IDX201"></A>
-<DL>
-<DT><U>Variable:</U> rl_voidfunc_t * <B>rl_deprep_term_function</B>
-<DD>If non-zero, Readline will call indirectly through this pointer
-to reset the terminal. This function should undo the effects of
-<CODE>rl_prep_term_function</CODE>.
-By default, this is set to <CODE>rl_deprep_terminal</CODE>
-(see section <A HREF="readline.html#SEC38">2.4.9 Terminal Management</A>).
-</DL>
-</P><P>
-
-<A NAME="IDX202"></A>
-<DL>
-<DT><U>Variable:</U> Keymap <B>rl_executing_keymap</B>
-<DD>This variable is set to the keymap (see section <A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A>) in which the
-currently executing readline function was found.
-</DL>
-</P><P>
-
-<A NAME="IDX203"></A>
-<DL>
-<DT><U>Variable:</U> Keymap <B>rl_binding_keymap</B>
-<DD>This variable is set to the keymap (see section <A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A>) in which the
-last key binding occurred.
-</DL>
-</P><P>
-
-<A NAME="IDX204"></A>
-<DL>
-<DT><U>Variable:</U> char * <B>rl_executing_macro</B>
-<DD>This variable is set to the text of any currently-executing macro.
-</DL>
-</P><P>
-
-<A NAME="IDX205"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_readline_state</B>
-<DD>A variable with bit values that encapsulate the current Readline state.
-A bit is set with the <CODE>RL_SETSTATE</CODE> macro, and unset with the
-<CODE>RL_UNSETSTATE</CODE> macro. Use the <CODE>RL_ISSTATE</CODE> macro to test
-whether a particular state bit is set. Current state bits include:
-</P><P>
-
-<DL COMPACT>
-<DT><CODE>RL_STATE_NONE</CODE>
-<DD>Readline has not yet been called, nor has it begun to intialize.
-<DT><CODE>RL_STATE_INITIALIZING</CODE>
-<DD>Readline is initializing its internal data structures.
-<DT><CODE>RL_STATE_INITIALIZED</CODE>
-<DD>Readline has completed its initialization.
-<DT><CODE>RL_STATE_TERMPREPPED</CODE>
-<DD>Readline has modified the terminal modes to do its own input and redisplay.
-<DT><CODE>RL_STATE_READCMD</CODE>
-<DD>Readline is reading a command from the keyboard.
-<DT><CODE>RL_STATE_METANEXT</CODE>
-<DD>Readline is reading more input after reading the meta-prefix character.
-<DT><CODE>RL_STATE_DISPATCHING</CODE>
-<DD>Readline is dispatching to a command.
-<DT><CODE>RL_STATE_MOREINPUT</CODE>
-<DD>Readline is reading more input while executing an editing command.
-<DT><CODE>RL_STATE_ISEARCH</CODE>
-<DD>Readline is performing an incremental history search.
-<DT><CODE>RL_STATE_NSEARCH</CODE>
-<DD>Readline is performing a non-incremental history search.
-<DT><CODE>RL_STATE_SEARCH</CODE>
-<DD>Readline is searching backward or forward through the history for a string.
-<DT><CODE>RL_STATE_NUMERICARG</CODE>
-<DD>Readline is reading a numeric argument.
-<DT><CODE>RL_STATE_MACROINPUT</CODE>
-<DD>Readline is currently getting its input from a previously-defined keyboard
-macro.
-<DT><CODE>RL_STATE_MACRODEF</CODE>
-<DD>Readline is currently reading characters defining a keyboard macro.
-<DT><CODE>RL_STATE_OVERWRITE</CODE>
-<DD>Readline is in overwrite mode.
-<DT><CODE>RL_STATE_COMPLETING</CODE>
-<DD>Readline is performing word completion.
-<DT><CODE>RL_STATE_SIGHANDLER</CODE>
-<DD>Readline is currently executing the readline signal handler.
-<DT><CODE>RL_STATE_UNDOING</CODE>
-<DD>Readline is performing an undo.
-<DT><CODE>RL_STATE_DONE</CODE>
-<DD>Readline has read a key sequence bound to <CODE>accept-line</CODE>
-and is about to return the line to the caller.
-</DL>
-<P>
-
-</DL>
-</P><P>
-
-<A NAME="IDX206"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_explicit_arg</B>
-<DD>Set to a non-zero value if an explicit numeric argument was specified by
-the user. Only valid in a bindable command function.
-</DL>
-</P><P>
-
-<A NAME="IDX207"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_numeric_arg</B>
-<DD>Set to the value of any numeric argument explicitly specified by the user
-before executing the current Readline function. Only valid in a bindable
-command function.
-</DL>
-</P><P>
-
-<A NAME="IDX208"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_editing_mode</B>
-<DD>Set to a value denoting Readline's current editing mode. A value of
-<VAR>1</VAR> means Readline is currently in emacs mode; <VAR>0</VAR>
-means that vi mode is active.
-</DL>
-</P><P>
-
-<A NAME="Readline Convenience Functions"></A>
-<HR SIZE="6">
-<A NAME="SEC29"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC28"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC30"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 2.4 Readline Convenience Functions </H2>
-<!--docid::SEC29::-->
-<P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC30">2.4.1 Naming a Function</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">How to give a function you write a name.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Making keymaps.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Changing Keymaps.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Translate function names to
- key sequences.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">How to make your functions undoable.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions to control line display.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC36">2.4.7 Modifying Text</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions to modify <CODE>rl_line_buffer</CODE>.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions to read keyboard input.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC38">2.4.9 Terminal Management</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions to manage terminal settings.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Generally useful functions and hooks.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions that don't fall into any category.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC41">2.4.12 Alternate Interface</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Using Readline in a `callback' fashion.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC42">2.4.13 A Readline Example</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">An example Readline function.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<A NAME="Function Naming"></A>
-<HR SIZE="6">
-<A NAME="SEC30"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC31"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.4.1 Naming a Function </H3>
-<!--docid::SEC30::-->
-<P>
-
-The user can dynamically change the bindings of keys while using
-Readline. This is done by representing the function with a descriptive
-name. The user is able to type the descriptive name when referring to
-the function. Thus, in an init file, one might find
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>Meta-Rubout: backward-kill-word
-</pre></td></tr></table></P><P>
-
-This binds the keystroke <KBD>Meta-Rubout</KBD> to the function
-<EM>descriptively</EM> named <CODE>backward-kill-word</CODE>. You, as the
-programmer, should bind the functions you write to descriptive names as
-well. Readline provides a function for doing that:
-</P><P>
-
-<A NAME="IDX209"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_add_defun</B> <I>(const char *name, rl_command_func_t *function, int key)</I>
-<DD>Add <VAR>name</VAR> to the list of named functions. Make <VAR>function</VAR> be
-the function that gets called. If <VAR>key</VAR> is not -1, then bind it to
-<VAR>function</VAR> using <CODE>rl_bind_key()</CODE>.
-</DL>
-</P><P>
-
-Using this function alone is sufficient for most applications. It is
-the recommended way to add a few functions to the default functions that
-Readline has built in. If you need to do something other
-than adding a function to Readline, you may need to use the
-underlying functions described below.
-</P><P>
-
-<A NAME="Keymaps"></A>
-<HR SIZE="6">
-<A NAME="SEC31"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC30"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC32"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC32"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.4.2 Selecting a Keymap </H3>
-<!--docid::SEC31::-->
-<P>
-
-Key bindings take place on a <EM>keymap</EM>. The keymap is the
-association between the keys that the user types and the functions that
-get run. You can make your own keymaps, copy existing keymaps, and tell
-Readline which keymap to use.
-</P><P>
-
-<A NAME="IDX210"></A>
-<DL>
-<DT><U>Function:</U> Keymap <B>rl_make_bare_keymap</B> <I>(void)</I>
-<DD>Returns a new, empty keymap. The space for the keymap is allocated with
-<CODE>malloc()</CODE>; the caller should free it by calling
-<CODE>rl_discard_keymap()</CODE> when done.
-</DL>
-</P><P>
-
-<A NAME="IDX211"></A>
-<DL>
-<DT><U>Function:</U> Keymap <B>rl_copy_keymap</B> <I>(Keymap map)</I>
-<DD>Return a new keymap which is a copy of <VAR>map</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX212"></A>
-<DL>
-<DT><U>Function:</U> Keymap <B>rl_make_keymap</B> <I>(void)</I>
-<DD>Return a new keymap with the printing characters bound to rl_insert,
-the lowercase Meta characters bound to run their equivalents, and
-the Meta digits bound to produce numeric arguments.
-</DL>
-</P><P>
-
-<A NAME="IDX213"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_discard_keymap</B> <I>(Keymap keymap)</I>
-<DD>Free the storage associated with <VAR>keymap</VAR>.
-</DL>
-</P><P>
-
-Readline has several internal keymaps. These functions allow you to
-change which keymap is active.
-</P><P>
-
-<A NAME="IDX214"></A>
-<DL>
-<DT><U>Function:</U> Keymap <B>rl_get_keymap</B> <I>(void)</I>
-<DD>Returns the currently active keymap.
-</DL>
-</P><P>
-
-<A NAME="IDX215"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_set_keymap</B> <I>(Keymap keymap)</I>
-<DD>Makes <VAR>keymap</VAR> the currently active keymap.
-</DL>
-</P><P>
-
-<A NAME="IDX216"></A>
-<DL>
-<DT><U>Function:</U> Keymap <B>rl_get_keymap_by_name</B> <I>(const char *name)</I>
-<DD>Return the keymap matching <VAR>name</VAR>. <VAR>name</VAR> is one which would
-be supplied in a <CODE>set keymap</CODE> inputrc line (see section <A HREF="readline.html#SEC9">1.3 Readline Init File</A>).
-</DL>
-</P><P>
-
-<A NAME="IDX217"></A>
-<DL>
-<DT><U>Function:</U> char * <B>rl_get_keymap_name</B> <I>(Keymap keymap)</I>
-<DD>Return the name matching <VAR>keymap</VAR>. <VAR>name</VAR> is one which would
-be supplied in a <CODE>set keymap</CODE> inputrc line (see section <A HREF="readline.html#SEC9">1.3 Readline Init File</A>).
-</DL>
-</P><P>
-
-<A NAME="Binding Keys"></A>
-<HR SIZE="6">
-<A NAME="SEC32"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC31"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC33"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC33"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.4.3 Binding Keys </H3>
-<!--docid::SEC32::-->
-<P>
-
-Key sequences are associate with functions through the keymap.
-Readline has several internal keymaps: <CODE>emacs_standard_keymap</CODE>,
-<CODE>emacs_meta_keymap</CODE>, <CODE>emacs_ctlx_keymap</CODE>,
-<CODE>vi_movement_keymap</CODE>, and <CODE>vi_insertion_keymap</CODE>.
-<CODE>emacs_standard_keymap</CODE> is the default, and the examples in
-this manual assume that.
-</P><P>
-
-Since <CODE>readline()</CODE> installs a set of default key bindings the first
-time it is called, there is always the danger that a custom binding
-installed before the first call to <CODE>readline()</CODE> will be overridden.
-An alternate mechanism is to install custom key bindings in an
-initialization function assigned to the <CODE>rl_startup_hook</CODE> variable
-(see section <A HREF="readline.html#SEC28">2.3 Readline Variables</A>).
-</P><P>
-
-These functions manage key bindings.
-</P><P>
-
-<A NAME="IDX218"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_bind_key</B> <I>(int key, rl_command_func_t *function)</I>
-<DD>Binds <VAR>key</VAR> to <VAR>function</VAR> in the currently active keymap.
-Returns non-zero in the case of an invalid <VAR>key</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX219"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_bind_key_in_map</B> <I>(int key, rl_command_func_t *function, Keymap map)</I>
-<DD>Bind <VAR>key</VAR> to <VAR>function</VAR> in <VAR>map</VAR>. Returns non-zero in the case
-of an invalid <VAR>key</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX220"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_unbind_key</B> <I>(int key)</I>
-<DD>Bind <VAR>key</VAR> to the null function in the currently active keymap.
-Returns non-zero in case of error.
-</DL>
-</P><P>
-
-<A NAME="IDX221"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_unbind_key_in_map</B> <I>(int key, Keymap map)</I>
-<DD>Bind <VAR>key</VAR> to the null function in <VAR>map</VAR>.
-Returns non-zero in case of error.
-</DL>
-</P><P>
-
-<A NAME="IDX222"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_unbind_function_in_map</B> <I>(rl_command_func_t *function, Keymap map)</I>
-<DD>Unbind all keys that execute <VAR>function</VAR> in <VAR>map</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX223"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_unbind_command_in_map</B> <I>(const char *command, Keymap map)</I>
-<DD>Unbind all keys that are bound to <VAR>command</VAR> in <VAR>map</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX224"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_set_key</B> <I>(const char *keyseq, rl_command_func_t *function, Keymap map)</I>
-<DD>Bind the key sequence represented by the string <VAR>keyseq</VAR> to the function
-<VAR>function</VAR>. This makes new keymaps as
-necessary. The initial keymap in which to do bindings is <VAR>map</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX225"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_generic_bind</B> <I>(int type, const char *keyseq, char *data, Keymap map)</I>
-<DD>Bind the key sequence represented by the string <VAR>keyseq</VAR> to the arbitrary
-pointer <VAR>data</VAR>. <VAR>type</VAR> says what kind of data is pointed to by
-<VAR>data</VAR>; this can be a function (<CODE>ISFUNC</CODE>), a macro
-(<CODE>ISMACR</CODE>), or a keymap (<CODE>ISKMAP</CODE>). This makes new keymaps as
-necessary. The initial keymap in which to do bindings is <VAR>map</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX226"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_parse_and_bind</B> <I>(char *line)</I>
-<DD>Parse <VAR>line</VAR> as if it had been read from the <CODE>inputrc</CODE> file and
-perform any key bindings and variable assignments found
-(see section <A HREF="readline.html#SEC9">1.3 Readline Init File</A>).
-</DL>
-</P><P>
-
-<A NAME="IDX227"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_read_init_file</B> <I>(const char *filename)</I>
-<DD>Read keybindings and variable assignments from <VAR>filename</VAR>
-(see section <A HREF="readline.html#SEC9">1.3 Readline Init File</A>).
-</DL>
-</P><P>
-
-<A NAME="Associating Function Names and Bindings"></A>
-<HR SIZE="6">
-<A NAME="SEC33"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC32"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC34"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC34"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.4.4 Associating Function Names and Bindings </H3>
-<!--docid::SEC33::-->
-<P>
-
-These functions allow you to find out what keys invoke named functions
-and the functions invoked by a particular key sequence. You may also
-associate a new function name with an arbitrary function.
-</P><P>
-
-<A NAME="IDX228"></A>
-<DL>
-<DT><U>Function:</U> rl_command_func_t * <B>rl_named_function</B> <I>(const char *name)</I>
-<DD>Return the function with name <VAR>name</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX229"></A>
-<DL>
-<DT><U>Function:</U> rl_command_func_t * <B>rl_function_of_keyseq</B> <I>(const char *keyseq, Keymap map, int *type)</I>
-<DD>Return the function invoked by <VAR>keyseq</VAR> in keymap <VAR>map</VAR>.
-If <VAR>map</VAR> is <CODE>NULL</CODE>, the current keymap is used. If <VAR>type</VAR> is
-not <CODE>NULL</CODE>, the type of the object is returned in the <CODE>int</CODE> variable
-it points to (one of <CODE>ISFUNC</CODE>, <CODE>ISKMAP</CODE>, or <CODE>ISMACR</CODE>).
-</DL>
-</P><P>
-
-<A NAME="IDX230"></A>
-<DL>
-<DT><U>Function:</U> char ** <B>rl_invoking_keyseqs</B> <I>(rl_command_func_t *function)</I>
-<DD>Return an array of strings representing the key sequences used to
-invoke <VAR>function</VAR> in the current keymap.
-</DL>
-</P><P>
-
-<A NAME="IDX231"></A>
-<DL>
-<DT><U>Function:</U> char ** <B>rl_invoking_keyseqs_in_map</B> <I>(rl_command_func_t *function, Keymap map)</I>
-<DD>Return an array of strings representing the key sequences used to
-invoke <VAR>function</VAR> in the keymap <VAR>map</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX232"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_function_dumper</B> <I>(int readable)</I>
-<DD>Print the readline function names and the key sequences currently
-bound to them to <CODE>rl_outstream</CODE>. If <VAR>readable</VAR> is non-zero,
-the list is formatted in such a way that it can be made part of an
-<CODE>inputrc</CODE> file and re-read.
-</DL>
-</P><P>
-
-<A NAME="IDX233"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_list_funmap_names</B> <I>(void)</I>
-<DD>Print the names of all bindable Readline functions to <CODE>rl_outstream</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX234"></A>
-<DL>
-<DT><U>Function:</U> const char ** <B>rl_funmap_names</B> <I>(void)</I>
-<DD>Return a NULL terminated array of known function names. The array is
-sorted. The array itself is allocated, but not the strings inside. You
-should <CODE>free()</CODE> the array when you are done, but not the pointers.
-</DL>
-</P><P>
-
-<A NAME="IDX235"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_add_funmap_entry</B> <I>(const char *name, rl_command_func_t *function)</I>
-<DD>Add <VAR>name</VAR> to the list of bindable Readline command names, and make
-<VAR>function</VAR> the function to be called when <VAR>name</VAR> is invoked.
-</DL>
-</P><P>
-
-<A NAME="Allowing Undoing"></A>
-<HR SIZE="6">
-<A NAME="SEC34"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC33"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC35"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC35"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.4.5 Allowing Undoing </H3>
-<!--docid::SEC34::-->
-<P>
-
-Supporting the undo command is a painless thing, and makes your
-functions much more useful. It is certainly easy to try
-something if you know you can undo it.
-</P><P>
-
-If your function simply inserts text once, or deletes text once, and
-uses <CODE>rl_insert_text()</CODE> or <CODE>rl_delete_text()</CODE> to do it, then
-undoing is already done for you automatically.
-</P><P>
-
-If you do multiple insertions or multiple deletions, or any combination
-of these operations, you should group them together into one operation.
-This is done with <CODE>rl_begin_undo_group()</CODE> and
-<CODE>rl_end_undo_group()</CODE>.
-</P><P>
-
-The types of events that can be undone are:
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>enum undo_code { UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END };
-</FONT></pre></td></tr></table></P><P>
-
-Notice that <CODE>UNDO_DELETE</CODE> means to insert some text, and
-<CODE>UNDO_INSERT</CODE> means to delete some text. That is, the undo code
-tells what to undo, not how to undo it. <CODE>UNDO_BEGIN</CODE> and
-<CODE>UNDO_END</CODE> are tags added by <CODE>rl_begin_undo_group()</CODE> and
-<CODE>rl_end_undo_group()</CODE>.
-</P><P>
-
-<A NAME="IDX236"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_begin_undo_group</B> <I>(void)</I>
-<DD>Begins saving undo information in a group construct. The undo
-information usually comes from calls to <CODE>rl_insert_text()</CODE> and
-<CODE>rl_delete_text()</CODE>, but could be the result of calls to
-<CODE>rl_add_undo()</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX237"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_end_undo_group</B> <I>(void)</I>
-<DD>Closes the current undo group started with <CODE>rl_begin_undo_group
-()</CODE>. There should be one call to <CODE>rl_end_undo_group()</CODE>
-for each call to <CODE>rl_begin_undo_group()</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX238"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_add_undo</B> <I>(enum undo_code what, int start, int end, char *text)</I>
-<DD>Remember how to undo an event (according to <VAR>what</VAR>). The affected
-text runs from <VAR>start</VAR> to <VAR>end</VAR>, and encompasses <VAR>text</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX239"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_free_undo_list</B> <I>(void)</I>
-<DD>Free the existing undo list.
-</DL>
-</P><P>
-
-<A NAME="IDX240"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_do_undo</B> <I>(void)</I>
-<DD>Undo the first thing on the undo list. Returns <CODE>0</CODE> if there was
-nothing to undo, non-zero if something was undone.
-</DL>
-</P><P>
-
-Finally, if you neither insert nor delete text, but directly modify the
-existing text (e.g., change its case), call <CODE>rl_modifying()</CODE>
-once, just before you modify the text. You must supply the indices of
-the text range that you are going to modify.
-</P><P>
-
-<A NAME="IDX241"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_modifying</B> <I>(int start, int end)</I>
-<DD>Tell Readline to save the text between <VAR>start</VAR> and <VAR>end</VAR> as a
-single undo unit. It is assumed that you will subsequently modify
-that text.
-</DL>
-</P><P>
-
-<A NAME="Redisplay"></A>
-<HR SIZE="6">
-<A NAME="SEC35"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC34"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC36"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC36"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.4.6 Redisplay </H3>
-<!--docid::SEC35::-->
-<P>
-
-<A NAME="IDX242"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_redisplay</B> <I>(void)</I>
-<DD>Change what's displayed on the screen to reflect the current contents
-of <CODE>rl_line_buffer</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX243"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_forced_update_display</B> <I>(void)</I>
-<DD>Force the line to be updated and redisplayed, whether or not
-Readline thinks the screen display is correct.
-</DL>
-</P><P>
-
-<A NAME="IDX244"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_on_new_line</B> <I>(void)</I>
-<DD>Tell the update functions that we have moved onto a new (empty) line,
-usually after ouputting a newline.
-</DL>
-</P><P>
-
-<A NAME="IDX245"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_on_new_line_with_prompt</B> <I>(void)</I>
-<DD>Tell the update functions that we have moved onto a new line, with
-<VAR>rl_prompt</VAR> already displayed.
-This could be used by applications that want to output the prompt string
-themselves, but still need Readline to know the prompt string length for
-redisplay.
-It should be used after setting <VAR>rl_already_prompted</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX246"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_reset_line_state</B> <I>(void)</I>
-<DD>Reset the display state to a clean state and redisplay the current line
-starting on a new line.
-</DL>
-</P><P>
-
-<A NAME="IDX247"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_crlf</B> <I>(void)</I>
-<DD>Move the cursor to the start of the next screen line.
-</DL>
-</P><P>
-
-<A NAME="IDX248"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_show_char</B> <I>(int c)</I>
-<DD>Display character <VAR>c</VAR> on <CODE>rl_outstream</CODE>.
-If Readline has not been set to display meta characters directly, this
-will convert meta characters to a meta-prefixed key sequence.
-This is intended for use by applications which wish to do their own
-redisplay.
-</DL>
-</P><P>
-
-<A NAME="IDX249"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_message</B> <I>(const char *, <small>...</small>)</I>
-<DD>The arguments are a format string as would be supplied to <CODE>printf</CODE>,
-possibly containing conversion specifications such as <SAMP>`%d'</SAMP>, and
-any additional arguments necessary to satisfy the conversion specifications.
-The resulting string is displayed in the <EM>echo area</EM>. The echo area
-is also used to display numeric arguments and search strings.
-</DL>
-</P><P>
-
-<A NAME="IDX250"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_clear_message</B> <I>(void)</I>
-<DD>Clear the message in the echo area.
-</DL>
-</P><P>
-
-<A NAME="IDX251"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_save_prompt</B> <I>(void)</I>
-<DD>Save the local Readline prompt display state in preparation for
-displaying a new message in the message area with <CODE>rl_message()</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX252"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_restore_prompt</B> <I>(void)</I>
-<DD>Restore the local Readline prompt display state saved by the most
-recent call to <CODE>rl_save_prompt</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX253"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_expand_prompt</B> <I>(char *prompt)</I>
-<DD>Expand any special character sequences in <VAR>prompt</VAR> and set up the
-local Readline prompt redisplay variables.
-This function is called by <CODE>readline()</CODE>. It may also be called to
-expand the primary prompt if the <CODE>rl_on_new_line_with_prompt()</CODE>
-function or <CODE>rl_already_prompted</CODE> variable is used.
-It returns the number of visible characters on the last line of the
-(possibly multi-line) prompt.
-</DL>
-</P><P>
-
-<A NAME="IDX254"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_set_prompt</B> <I>(const char *prompt)</I>
-<DD>Make Readline use <VAR>prompt</VAR> for subsequent redisplay. This calls
-<CODE>rl_expand_prompt()</CODE> to expand the prompt and sets <CODE>rl_prompt</CODE>
-to the result.
-</DL>
-</P><P>
-
-<A NAME="Modifying Text"></A>
-<HR SIZE="6">
-<A NAME="SEC36"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC35"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC37"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC37"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.4.7 Modifying Text </H3>
-<!--docid::SEC36::-->
-<P>
-
-<A NAME="IDX255"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_insert_text</B> <I>(const char *text)</I>
-<DD>Insert <VAR>text</VAR> into the line at the current cursor position.
-Returns the number of characters inserted.
-</DL>
-</P><P>
-
-<A NAME="IDX256"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_delete_text</B> <I>(int start, int end)</I>
-<DD>Delete the text between <VAR>start</VAR> and <VAR>end</VAR> in the current line.
-Returns the number of characters deleted.
-</DL>
-</P><P>
-
-<A NAME="IDX257"></A>
-<DL>
-<DT><U>Function:</U> char * <B>rl_copy_text</B> <I>(int start, int end)</I>
-<DD>Return a copy of the text between <VAR>start</VAR> and <VAR>end</VAR> in
-the current line.
-</DL>
-</P><P>
-
-<A NAME="IDX258"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_kill_text</B> <I>(int start, int end)</I>
-<DD>Copy the text between <VAR>start</VAR> and <VAR>end</VAR> in the current line
-to the kill ring, appending or prepending to the last kill if the
-last command was a kill command. The text is deleted.
-If <VAR>start</VAR> is less than <VAR>end</VAR>,
-the text is appended, otherwise prepended. If the last command was
-not a kill, a new kill ring slot is used.
-</DL>
-</P><P>
-
-<A NAME="IDX259"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_push_macro_input</B> <I>(char *macro)</I>
-<DD>Cause <VAR>macro</VAR> to be inserted into the line, as if it had been invoked
-by a key bound to a macro. Not especially useful; use
-<CODE>rl_insert_text()</CODE> instead.
-</DL>
-</P><P>
-
-<A NAME="Character Input"></A>
-<HR SIZE="6">
-<A NAME="SEC37"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC36"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC38"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC38"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.4.8 Character Input </H3>
-<!--docid::SEC37::-->
-<P>
-
-<A NAME="IDX260"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_read_key</B> <I>(void)</I>
-<DD>Return the next character available from Readline's current input stream.
-This handles input inserted into
-the input stream via <VAR>rl_pending_input</VAR> (see section <A HREF="readline.html#SEC28">2.3 Readline Variables</A>)
-and <CODE>rl_stuff_char()</CODE>, macros, and characters read from the keyboard.
-While waiting for input, this function will call any function assigned to
-the <CODE>rl_event_hook</CODE> variable.
-</DL>
-</P><P>
-
-<A NAME="IDX261"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_getc</B> <I>(FILE *stream)</I>
-<DD>Return the next character available from <VAR>stream</VAR>, which is assumed to
-be the keyboard.
-</DL>
-</P><P>
-
-<A NAME="IDX262"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_stuff_char</B> <I>(int c)</I>
-<DD>Insert <VAR>c</VAR> into the Readline input stream. It will be "read"
-before Readline attempts to read characters from the terminal with
-<CODE>rl_read_key()</CODE>. Up to 512 characters may be pushed back.
-<CODE>rl_stuff_char</CODE> returns 1 if the character was successfully inserted;
-0 otherwise.
-</DL>
-</P><P>
-
-<A NAME="IDX263"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_execute_next</B> <I>(int c)</I>
-<DD>Make <VAR>c</VAR> be the next command to be executed when <CODE>rl_read_key()</CODE>
-is called. This sets <VAR>rl_pending_input</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX264"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_clear_pending_input</B> <I>(void)</I>
-<DD>Unset <VAR>rl_pending_input</VAR>, effectively negating the effect of any
-previous call to <CODE>rl_execute_next()</CODE>. This works only if the
-pending input has not already been read with <CODE>rl_read_key()</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX265"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_set_keyboard_input_timeout</B> <I>(int u)</I>
-<DD>While waiting for keyboard input in <CODE>rl_read_key()</CODE>, Readline will
-wait for <VAR>u</VAR> microseconds for input before calling any function
-assigned to <CODE>rl_event_hook</CODE>. The default waiting period is
-one-tenth of a second. Returns the old timeout value.
-</DL>
-</P><P>
-
-<A NAME="Terminal Management"></A>
-<HR SIZE="6">
-<A NAME="SEC38"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC37"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC39"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.4.9 Terminal Management </H3>
-<!--docid::SEC38::-->
-<P>
-
-<A NAME="IDX266"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_prep_terminal</B> <I>(int meta_flag)</I>
-<DD>Modify the terminal settings for Readline's use, so <CODE>readline()</CODE>
-can read a single character at a time from the keyboard.
-The <VAR>meta_flag</VAR> argument should be non-zero if Readline should
-read eight-bit input.
-</DL>
-</P><P>
-
-<A NAME="IDX267"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_deprep_terminal</B> <I>(void)</I>
-<DD>Undo the effects of <CODE>rl_prep_terminal()</CODE>, leaving the terminal in
-the state in which it was before the most recent call to
-<CODE>rl_prep_terminal()</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX268"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_tty_set_default_bindings</B> <I>(Keymap kmap)</I>
-<DD>Read the operating system's terminal editing characters (as would be displayed
-by <CODE>stty</CODE>) to their Readline equivalents. The bindings are performed
-in <VAR>kmap</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX269"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_reset_terminal</B> <I>(const char *terminal_name)</I>
-<DD>Reinitialize Readline's idea of the terminal settings using
-<VAR>terminal_name</VAR> as the terminal type (e.g., <CODE>vt100</CODE>).
-If <VAR>terminal_name</VAR> is <CODE>NULL</CODE>, the value of the <CODE>TERM</CODE>
-environment variable is used.
-</DL>
-</P><P>
-
-<A NAME="Utility Functions"></A>
-<HR SIZE="6">
-<A NAME="SEC39"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC38"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC40"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC31"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.4.10 Utility Functions </H3>
-<!--docid::SEC39::-->
-<P>
-
-<A NAME="IDX270"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_replace_line</B> <I>(const char *text, int clear_undo)</I>
-<DD>Replace the contents of <CODE>rl_line_buffer</CODE> with <VAR>text</VAR>.
-The point and mark are preserved, if possible.
-If <VAR>clear_undo</VAR> is non-zero, the undo list associated with the
-current line is cleared.
-</DL>
-</P><P>
-
-<A NAME="IDX271"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_extend_line_buffer</B> <I>(int len)</I>
-<DD>Ensure that <CODE>rl_line_buffer</CODE> has enough space to hold <VAR>len</VAR>
-characters, possibly reallocating it if necessary.
-</DL>
-</P><P>
-
-<A NAME="IDX272"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_initialize</B> <I>(void)</I>
-<DD>Initialize or re-initialize Readline's internal state.
-It's not strictly necessary to call this; <CODE>readline()</CODE> calls it before
-reading any input.
-</DL>
-</P><P>
-
-<A NAME="IDX273"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_ding</B> <I>(void)</I>
-<DD>Ring the terminal bell, obeying the setting of <CODE>bell-style</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX274"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_alphabetic</B> <I>(int c)</I>
-<DD>Return 1 if <VAR>c</VAR> is an alphabetic character.
-</DL>
-</P><P>
-
-<A NAME="IDX275"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_display_match_list</B> <I>(char **matches, int len, int max)</I>
-<DD>A convenience function for displaying a list of strings in
-columnar format on Readline's output stream. <CODE>matches</CODE> is the list
-of strings, in argv format, such as a list of completion matches.
-<CODE>len</CODE> is the number of strings in <CODE>matches</CODE>, and <CODE>max</CODE>
-is the length of the longest string in <CODE>matches</CODE>. This function uses
-the setting of <CODE>print-completions-horizontally</CODE> to select how the
-matches are displayed (see section <A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A>).
-</DL>
-</P><P>
-
-The following are implemented as macros, defined in <CODE>chardefs.h</CODE>.
-Applications should refrain from using them.
-</P><P>
-
-<A NAME="IDX276"></A>
-<DL>
-<DT><U>Function:</U> int <B>_rl_uppercase_p</B> <I>(int c)</I>
-<DD>Return 1 if <VAR>c</VAR> is an uppercase alphabetic character.
-</DL>
-</P><P>
-
-<A NAME="IDX277"></A>
-<DL>
-<DT><U>Function:</U> int <B>_rl_lowercase_p</B> <I>(int c)</I>
-<DD>Return 1 if <VAR>c</VAR> is a lowercase alphabetic character.
-</DL>
-</P><P>
-
-<A NAME="IDX278"></A>
-<DL>
-<DT><U>Function:</U> int <B>_rl_digit_p</B> <I>(int c)</I>
-<DD>Return 1 if <VAR>c</VAR> is a numeric character.
-</DL>
-</P><P>
-
-<A NAME="IDX279"></A>
-<DL>
-<DT><U>Function:</U> int <B>_rl_to_upper</B> <I>(int c)</I>
-<DD>If <VAR>c</VAR> is a lowercase alphabetic character, return the corresponding
-uppercase character.
-</DL>
-</P><P>
-
-<A NAME="IDX280"></A>
-<DL>
-<DT><U>Function:</U> int <B>_rl_to_lower</B> <I>(int c)</I>
-<DD>If <VAR>c</VAR> is an uppercase alphabetic character, return the corresponding
-lowercase character.
-</DL>
-</P><P>
-
-<A NAME="IDX281"></A>
-<DL>
-<DT><U>Function:</U> int <B>_rl_digit_value</B> <I>(int c)</I>
-<DD>If <VAR>c</VAR> is a number, return the value it represents.
-</DL>
-</P><P>
-
-<A NAME="Miscellaneous Functions"></A>
-<HR SIZE="6">
-<A NAME="SEC40"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC39"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC41"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC31"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.4.11 Miscellaneous Functions </H3>
-<!--docid::SEC40::-->
-<P>
-
-<A NAME="IDX282"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_macro_bind</B> <I>(const char *keyseq, const char *macro, Keymap map)</I>
-<DD>Bind the key sequence <VAR>keyseq</VAR> to invoke the macro <VAR>macro</VAR>.
-The binding is performed in <VAR>map</VAR>. When <VAR>keyseq</VAR> is invoked, the
-<VAR>macro</VAR> will be inserted into the line. This function is deprecated;
-use <CODE>rl_generic_bind()</CODE> instead.
-</DL>
-</P><P>
-
-<A NAME="IDX283"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_macro_dumper</B> <I>(int readable)</I>
-<DD>Print the key sequences bound to macros and their values, using
-the current keymap, to <CODE>rl_outstream</CODE>.
-If <VAR>readable</VAR> is non-zero, the list is formatted in such a way
-that it can be made part of an <CODE>inputrc</CODE> file and re-read.
-</DL>
-</P><P>
-
-<A NAME="IDX284"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_variable_bind</B> <I>(const char *variable, const char *value)</I>
-<DD>Make the Readline variable <VAR>variable</VAR> have <VAR>value</VAR>.
-This behaves as if the readline command
-<SAMP>`set <VAR>variable</VAR> <VAR>value</VAR>'</SAMP> had been executed in an <CODE>inputrc</CODE>
-file (see section <A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A>).
-</DL>
-</P><P>
-
-<A NAME="IDX285"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_variable_dumper</B> <I>(int readable)</I>
-<DD>Print the readline variable names and their current values
-to <CODE>rl_outstream</CODE>.
-If <VAR>readable</VAR> is non-zero, the list is formatted in such a way
-that it can be made part of an <CODE>inputrc</CODE> file and re-read.
-</DL>
-</P><P>
-
-<A NAME="IDX286"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_set_paren_blink_timeout</B> <I>(int u)</I>
-<DD>Set the time interval (in microseconds) that Readline waits when showing
-a balancing character when <CODE>blink-matching-paren</CODE> has been enabled.
-</DL>
-</P><P>
-
-<A NAME="IDX287"></A>
-<DL>
-<DT><U>Function:</U> char * <B>rl_get_termcap</B> <I>(const char *cap)</I>
-<DD>Retrieve the string value of the termcap capability <VAR>cap</VAR>.
-Readline fetches the termcap entry for the current terminal name and
-uses those capabilities to move around the screen line and perform other
-terminal-specific operations, like erasing a line. Readline does not
-use all of a terminal's capabilities, and this function will return
-values for only those capabilities Readline uses.
-</DL>
-</P><P>
-
-<A NAME="Alternate Interface"></A>
-<HR SIZE="6">
-<A NAME="SEC41"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC40"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC42"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC31"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.4.12 Alternate Interface </H3>
-<!--docid::SEC41::-->
-<P>
-
-An alternate interface is available to plain <CODE>readline()</CODE>. Some
-applications need to interleave keyboard I/O with file, device, or
-window system I/O, typically by using a main loop to <CODE>select()</CODE>
-on various file descriptors. To accomodate this need, readline can
-also be invoked as a `callback' function from an event loop. There
-are functions available to make this easy.
-</P><P>
-
-<A NAME="IDX288"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_callback_handler_install</B> <I>(const char *prompt, rl_vcpfunc_t *lhandler)</I>
-<DD>Set up the terminal for readline I/O and display the initial
-expanded value of <VAR>prompt</VAR>. Save the value of <VAR>lhandler</VAR> to
-use as a function to call when a complete line of input has been entered.
-The function takes the text of the line as an argument.
-</DL>
-</P><P>
-
-<A NAME="IDX289"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_callback_read_char</B> <I>(void)</I>
-<DD>Whenever an application determines that keyboard input is available, it
-should call <CODE>rl_callback_read_char()</CODE>, which will read the next
-character from the current input source.
-If that character completes the line, <CODE>rl_callback_read_char</CODE> will
-invoke the <VAR>lhandler</VAR> function saved by <CODE>rl_callback_handler_install</CODE>
-to process the line.
-Before calling the <VAR>lhandler</VAR> function, the terminal settings are
-reset to the values they had before calling
-<CODE>rl_callback_handler_install</CODE>.
-If the <VAR>lhandler</VAR> function returns,
-the terminal settings are modified for Readline's use again.
-<CODE>EOF</CODE> is indicated by calling <VAR>lhandler</VAR> with a
-<CODE>NULL</CODE> line.
-</DL>
-</P><P>
-
-<A NAME="IDX290"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_callback_handler_remove</B> <I>(void)</I>
-<DD>Restore the terminal to its initial state and remove the line handler.
-This may be called from within a callback as well as independently.
-If the <VAR>lhandler</VAR> installed by <CODE>rl_callback_handler_install</CODE>
-does not exit the program, either this function or the function referred
-to by the value of <CODE>rl_deprep_term_function</CODE> should be called before
-the program exits to reset the terminal settings.
-</DL>
-</P><P>
-
-<A NAME="A Readline Example"></A>
-<HR SIZE="6">
-<A NAME="SEC42"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC41"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC31"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.4.13 A Readline Example </H3>
-<!--docid::SEC42::-->
-<P>
-
-Here is a function which changes lowercase characters to their uppercase
-equivalents, and uppercase characters to lowercase. If
-this function was bound to <SAMP>`M-c'</SAMP>, then typing <SAMP>`M-c'</SAMP> would
-change the case of the character under point. Typing <SAMP>`M-1 0 M-c'</SAMP>
-would change the case of the following 10 characters, leaving the cursor on
-the last character changed.
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>/* Invert the case of the COUNT following characters. */
-int
-invert_case_line (count, key)
- int count, key;
-{
- register int start, end, i;
-
- start = rl_point;
-
- if (rl_point &#62;= rl_end)
- return (0);
-
- if (count &#60; 0)
- {
- direction = -1;
- count = -count;
- }
- else
- direction = 1;
-
- /* Find the end of the range to modify. */
- end = start + (count * direction);
-
- /* Force it to be within range. */
- if (end &#62; rl_end)
- end = rl_end;
- else if (end &#60; 0)
- end = 0;
-
- if (start == end)
- return (0);
-
- if (start &#62; end)
- {
- int temp = start;
- start = end;
- end = temp;
- }
-
- /* Tell readline that we are modifying the line,
- so it will save the undo information. */
- rl_modifying (start, end);
-
- for (i = start; i != end; i++)
- {
- if (_rl_uppercase_p (rl_line_buffer[i]))
- rl_line_buffer[i] = _rl_to_lower (rl_line_buffer[i]);
- else if (_rl_lowercase_p (rl_line_buffer[i]))
- rl_line_buffer[i] = _rl_to_upper (rl_line_buffer[i]);
- }
- /* Move point to on top of the last character changed. */
- rl_point = (direction == 1) ? end - 1 : start;
- return (0);
-}
-</pre></td></tr></table></P><P>
-
-<A NAME="Readline Signal Handling"></A>
-<HR SIZE="6">
-<A NAME="SEC43"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC42"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 2.5 Readline Signal Handling </H2>
-<!--docid::SEC43::-->
-<P>
-
-Signals are asynchronous events sent to a process by the Unix kernel,
-sometimes on behalf of another process. They are intended to indicate
-exceptional events, like a user pressing the interrupt key on his terminal,
-or a network connection being broken. There is a class of signals that can
-be sent to the process currently reading input from the keyboard. Since
-Readline changes the terminal attributes when it is called, it needs to
-perform special processing when such a signal is received in order to
-restore the terminal to a sane state, or provide application writers with
-functions to do so manually.
-</P><P>
-
-Readline contains an internal signal handler that is installed for a
-number of signals (<CODE>SIGINT</CODE>, <CODE>SIGQUIT</CODE>, <CODE>SIGTERM</CODE>,
-<CODE>SIGALRM</CODE>, <CODE>SIGTSTP</CODE>, <CODE>SIGTTIN</CODE>, and <CODE>SIGTTOU</CODE>).
-When one of these signals is received, the signal handler
-will reset the terminal attributes to those that were in effect before
-<CODE>readline()</CODE> was called, reset the signal handling to what it was
-before <CODE>readline()</CODE> was called, and resend the signal to the calling
-application.
-If and when the calling application's signal handler returns, Readline
-will reinitialize the terminal and continue to accept input.
-When a <CODE>SIGINT</CODE> is received, the Readline signal handler performs
-some additional work, which will cause any partially-entered line to be
-aborted (see the description of <CODE>rl_free_line_state()</CODE> below).
-</P><P>
-
-There is an additional Readline signal handler, for <CODE>SIGWINCH</CODE>, which
-the kernel sends to a process whenever the terminal's size changes (for
-example, if a user resizes an <CODE>xterm</CODE>). The Readline <CODE>SIGWINCH</CODE>
-handler updates Readline's internal screen size information, and then calls
-any <CODE>SIGWINCH</CODE> signal handler the calling application has installed.
-Readline calls the application's <CODE>SIGWINCH</CODE> signal handler without
-resetting the terminal to its original state. If the application's signal
-handler does more than update its idea of the terminal size and return (for
-example, a <CODE>longjmp</CODE> back to a main processing loop), it <EM>must</EM>
-call <CODE>rl_cleanup_after_signal()</CODE> (described below), to restore the
-terminal state.
-</P><P>
-
-Readline provides two variables that allow application writers to
-control whether or not it will catch certain signals and act on them
-when they are received. It is important that applications change the
-values of these variables only when calling <CODE>readline()</CODE>, not in
-a signal handler, so Readline's internal signal state is not corrupted.
-</P><P>
-
-<A NAME="IDX291"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_catch_signals</B>
-<DD>If this variable is non-zero, Readline will install signal handlers for
-<CODE>SIGINT</CODE>, <CODE>SIGQUIT</CODE>, <CODE>SIGTERM</CODE>, <CODE>SIGALRM</CODE>,
-<CODE>SIGTSTP</CODE>, <CODE>SIGTTIN</CODE>, and <CODE>SIGTTOU</CODE>.
-</P><P>
-
-The default value of <CODE>rl_catch_signals</CODE> is 1.
-</DL>
-</P><P>
-
-<A NAME="IDX292"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_catch_sigwinch</B>
-<DD>If this variable is non-zero, Readline will install a signal handler for
-<CODE>SIGWINCH</CODE>.
-</P><P>
-
-The default value of <CODE>rl_catch_sigwinch</CODE> is 1.
-</DL>
-</P><P>
-
-If an application does not wish to have Readline catch any signals, or
-to handle signals other than those Readline catches (<CODE>SIGHUP</CODE>,
-for example),
-Readline provides convenience functions to do the necessary terminal
-and internal state cleanup upon receipt of a signal.
-</P><P>
-
-<A NAME="IDX293"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_cleanup_after_signal</B> <I>(void)</I>
-<DD>This function will reset the state of the terminal to what it was before
-<CODE>readline()</CODE> was called, and remove the Readline signal handlers for
-all signals, depending on the values of <CODE>rl_catch_signals</CODE> and
-<CODE>rl_catch_sigwinch</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX294"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_free_line_state</B> <I>(void)</I>
-<DD>This will free any partial state associated with the current input line
-(undo information, any partial history entry, any partially-entered
-keyboard macro, and any partially-entered numeric argument). This
-should be called before <CODE>rl_cleanup_after_signal()</CODE>. The
-Readline signal handler for <CODE>SIGINT</CODE> calls this to abort the
-current input line.
-</DL>
-</P><P>
-
-<A NAME="IDX295"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_reset_after_signal</B> <I>(void)</I>
-<DD>This will reinitialize the terminal and reinstall any Readline signal
-handlers, depending on the values of <CODE>rl_catch_signals</CODE> and
-<CODE>rl_catch_sigwinch</CODE>.
-</DL>
-</P><P>
-
-If an application does not wish Readline to catch <CODE>SIGWINCH</CODE>, it may
-call <CODE>rl_resize_terminal()</CODE> or <CODE>rl_set_screen_size()</CODE> to force
-Readline to update its idea of the terminal size when a <CODE>SIGWINCH</CODE>
-is received.
-</P><P>
-
-<A NAME="IDX296"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_resize_terminal</B> <I>(void)</I>
-<DD>Update Readline's internal screen size by reading values from the kernel.
-</DL>
-</P><P>
-
-<A NAME="IDX297"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_set_screen_size</B> <I>(int rows, int cols)</I>
-<DD>Set Readline's idea of the terminal size to <VAR>rows</VAR> rows and
-<VAR>cols</VAR> columns.
-</DL>
-</P><P>
-
-If an application does not want to install a <CODE>SIGWINCH</CODE> handler, but
-is still interested in the screen dimensions, Readline's idea of the screen
-size may be queried.
-</P><P>
-
-<A NAME="IDX298"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_get_screen_size</B> <I>(int *rows, int *cols)</I>
-<DD>Return Readline's idea of the terminal's size in the
-variables pointed to by the arguments.
-</DL>
-</P><P>
-
-The following functions install and remove Readline's signal handlers.
-</P><P>
-
-<A NAME="IDX299"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_set_signals</B> <I>(void)</I>
-<DD>Install Readline's signal handler for <CODE>SIGINT</CODE>, <CODE>SIGQUIT</CODE>,
-<CODE>SIGTERM</CODE>, <CODE>SIGALRM</CODE>, <CODE>SIGTSTP</CODE>, <CODE>SIGTTIN</CODE>,
-<CODE>SIGTTOU</CODE>, and <CODE>SIGWINCH</CODE>, depending on the values of
-<CODE>rl_catch_signals</CODE> and <CODE>rl_catch_sigwinch</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX300"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_clear_signals</B> <I>(void)</I>
-<DD>Remove all of the Readline signal handlers installed by
-<CODE>rl_set_signals()</CODE>.
-</DL>
-</P><P>
-
-<A NAME="Custom Completers"></A>
-<HR SIZE="6">
-<A NAME="SEC44"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC45"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 2.6 Custom Completers </H2>
-<!--docid::SEC44::-->
-<P>
-
-Typically, a program that reads commands from the user has a way of
-disambiguating commands and data. If your program is one of these, then
-it can provide completion for commands, data, or both.
-The following sections describe how your program and Readline
-cooperate to provide this service.
-</P><P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC45">2.6.1 How Completing Works</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">The logic used to do completion.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC46">2.6.2 Completion Functions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions provided by Readline.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Variables which control completion.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC48">2.6.4 A Short Completion Example</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">An example of writing completer subroutines.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<A NAME="How Completing Works"></A>
-<HR SIZE="6">
-<A NAME="SEC45"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC46"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.6.1 How Completing Works </H3>
-<!--docid::SEC45::-->
-<P>
-
-In order to complete some text, the full list of possible completions
-must be available. That is, it is not possible to accurately
-expand a partial word without knowing all of the possible words
-which make sense in that context. The Readline library provides
-the user interface to completion, and two of the most common
-completion functions: filename and username. For completing other types
-of text, you must write your own completion function. This section
-describes exactly what such functions must do, and provides an example.
-</P><P>
-
-There are three major functions used to perform completion:
-</P><P>
-
-<OL>
-<LI>
-The user-interface function <CODE>rl_complete()</CODE>. This function is
-called with the same arguments as other bindable Readline functions:
-<VAR>count</VAR> and <VAR>invoking_key</VAR>.
-It isolates the word to be completed and calls
-<CODE>rl_completion_matches()</CODE> to generate a list of possible completions.
-It then either lists the possible completions, inserts the possible
-completions, or actually performs the
-completion, depending on which behavior is desired.
-<P>
-
-<LI>
-The internal function <CODE>rl_completion_matches()</CODE> uses an
-application-supplied <EM>generator</EM> function to generate the list of
-possible matches, and then returns the array of these matches.
-The caller should place the address of its generator function in
-<CODE>rl_completion_entry_function</CODE>.
-<P>
-
-<LI>
-The generator function is called repeatedly from
-<CODE>rl_completion_matches()</CODE>, returning a string each time. The
-arguments to the generator function are <VAR>text</VAR> and <VAR>state</VAR>.
-<VAR>text</VAR> is the partial word to be completed. <VAR>state</VAR> is zero the
-first time the function is called, allowing the generator to perform
-any necessary initialization, and a positive non-zero integer for
-each subsequent call. The generator function returns
-<CODE>(char *)NULL</CODE> to inform <CODE>rl_completion_matches()</CODE> that there are
-no more possibilities left. Usually the generator function computes the
-list of possible completions when <VAR>state</VAR> is zero, and returns them
-one at a time on subsequent calls. Each string the generator function
-returns as a match must be allocated with <CODE>malloc()</CODE>; Readline
-frees the strings when it has finished with them.
-<P>
-
-</OL>
-<P>
-
-<A NAME="IDX301"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_complete</B> <I>(int ignore, int invoking_key)</I>
-<DD>Complete the word at or before point. You have supplied the function
-that does the initial simple matching selection algorithm (see
-<CODE>rl_completion_matches()</CODE>). The default is to do filename completion.
-</DL>
-</P><P>
-
-<A NAME="IDX302"></A>
-<DL>
-<DT><U>Variable:</U> rl_compentry_func_t * <B>rl_completion_entry_function</B>
-<DD>This is a pointer to the generator function for
-<CODE>rl_completion_matches()</CODE>.
-If the value of <CODE>rl_completion_entry_function</CODE> is
-<CODE>NULL</CODE> then the default filename generator
-function, <CODE>rl_filename_completion_function()</CODE>, is used.
-</DL>
-</P><P>
-
-<A NAME="Completion Functions"></A>
-<HR SIZE="6">
-<A NAME="SEC46"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC45"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC47"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC47"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.6.2 Completion Functions </H3>
-<!--docid::SEC46::-->
-<P>
-
-Here is the complete list of callable completion functions present in
-Readline.
-</P><P>
-
-<A NAME="IDX303"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_complete_internal</B> <I>(int what_to_do)</I>
-<DD>Complete the word at or before point. <VAR>what_to_do</VAR> says what to do
-with the completion. A value of <SAMP>`?'</SAMP> means list the possible
-completions. <SAMP>`TAB'</SAMP> means do standard completion. <SAMP>`*'</SAMP> means
-insert all of the possible completions. <SAMP>`!'</SAMP> means to display
-all of the possible completions, if there is more than one, as well as
-performing partial completion.
-</DL>
-</P><P>
-
-<A NAME="IDX304"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_complete</B> <I>(int ignore, int invoking_key)</I>
-<DD>Complete the word at or before point. You have supplied the function
-that does the initial simple matching selection algorithm (see
-<CODE>rl_completion_matches()</CODE> and <CODE>rl_completion_entry_function</CODE>).
-The default is to do filename
-completion. This calls <CODE>rl_complete_internal()</CODE> with an
-argument depending on <VAR>invoking_key</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX305"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_possible_completions</B> <I>(int count, int invoking_key)</I>
-<DD>List the possible completions. See description of <CODE>rl_complete
-()</CODE>. This calls <CODE>rl_complete_internal()</CODE> with an argument of
-<SAMP>`?'</SAMP>.
-</DL>
-</P><P>
-
-<A NAME="IDX306"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_insert_completions</B> <I>(int count, int invoking_key)</I>
-<DD>Insert the list of possible completions into the line, deleting the
-partially-completed word. See description of <CODE>rl_complete()</CODE>.
-This calls <CODE>rl_complete_internal()</CODE> with an argument of <SAMP>`*'</SAMP>.
-</DL>
-</P><P>
-
-<A NAME="IDX307"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_completion_mode</B> <I>(rl_command_func_t *cfunc)</I>
-<DD>Returns the apppriate value to pass to <CODE>rl_complete_internal()</CODE>
-depending on whether <VAR>cfunc</VAR> was called twice in succession and
-the value of the <CODE>show-all-if-ambiguous</CODE> variable.
-Application-specific completion functions may use this function to present
-the same interface as <CODE>rl_complete()</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX308"></A>
-<DL>
-<DT><U>Function:</U> char ** <B>rl_completion_matches</B> <I>(const char *text, rl_compentry_func_t *entry_func)</I>
-<DD>Returns an array of strings which is a list of completions for
-<VAR>text</VAR>. If there are no completions, returns <CODE>NULL</CODE>.
-The first entry in the returned array is the substitution for <VAR>text</VAR>.
-The remaining entries are the possible completions. The array is
-terminated with a <CODE>NULL</CODE> pointer.
-</P><P>
-
-<VAR>entry_func</VAR> is a function of two args, and returns a
-<CODE>char *</CODE>. The first argument is <VAR>text</VAR>. The second is a
-state argument; it is zero on the first call, and non-zero on subsequent
-calls. <VAR>entry_func</VAR> returns a <CODE>NULL</CODE> pointer to the caller
-when there are no more matches.
-</DL>
-</P><P>
-
-<A NAME="IDX309"></A>
-<DL>
-<DT><U>Function:</U> char * <B>rl_filename_completion_function</B> <I>(const char *text, int state)</I>
-<DD>A generator function for filename completion in the general case.
-<VAR>text</VAR> is a partial filename.
-The Bash source is a useful reference for writing custom
-completion functions (the Bash completion functions call this and other
-Readline functions).
-</DL>
-</P><P>
-
-<A NAME="IDX310"></A>
-<DL>
-<DT><U>Function:</U> char * <B>rl_username_completion_function</B> <I>(const char *text, int state)</I>
-<DD>A completion generator for usernames. <VAR>text</VAR> contains a partial
-username preceded by a random character (usually <SAMP>`~'</SAMP>). As with all
-completion generators, <VAR>state</VAR> is zero on the first call and non-zero
-for subsequent calls.
-</DL>
-</P><P>
-
-<A NAME="Completion Variables"></A>
-<HR SIZE="6">
-<A NAME="SEC47"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC46"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC48"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC48"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.6.3 Completion Variables </H3>
-<!--docid::SEC47::-->
-<P>
-
-<A NAME="IDX311"></A>
-<DL>
-<DT><U>Variable:</U> rl_compentry_func_t * <B>rl_completion_entry_function</B>
-<DD>A pointer to the generator function for <CODE>rl_completion_matches()</CODE>.
-<CODE>NULL</CODE> means to use <CODE>rl_filename_completion_function()</CODE>, the default
-filename completer.
-</DL>
-</P><P>
-
-<A NAME="IDX312"></A>
-<DL>
-<DT><U>Variable:</U> rl_completion_func_t * <B>rl_attempted_completion_function</B>
-<DD>A pointer to an alternative function to create matches.
-The function is called with <VAR>text</VAR>, <VAR>start</VAR>, and <VAR>end</VAR>.
-<VAR>start</VAR> and <VAR>end</VAR> are indices in <CODE>rl_line_buffer</CODE> defining
-the boundaries of <VAR>text</VAR>, which is a character string.
-If this function exists and returns <CODE>NULL</CODE>, or if this variable is
-set to <CODE>NULL</CODE>, then <CODE>rl_complete()</CODE> will call the value of
-<CODE>rl_completion_entry_function</CODE> to generate matches, otherwise the
-array of strings returned will be used.
-If this function sets the <CODE>rl_attempted_completion_over</CODE>
-variable to a non-zero value, Readline will not perform its default
-completion even if this function returns no matches.
-</DL>
-</P><P>
-
-<A NAME="IDX313"></A>
-<DL>
-<DT><U>Variable:</U> rl_quote_func_t * <B>rl_filename_quoting_function</B>
-<DD>A pointer to a function that will quote a filename in an
-application-specific fashion. This is called if filename completion is being
-attempted and one of the characters in <CODE>rl_filename_quote_characters</CODE>
-appears in a completed filename. The function is called with
-<VAR>text</VAR>, <VAR>match_type</VAR>, and <VAR>quote_pointer</VAR>. The <VAR>text</VAR>
-is the filename to be quoted. The <VAR>match_type</VAR> is either
-<CODE>SINGLE_MATCH</CODE>, if there is only one completion match, or
-<CODE>MULT_MATCH</CODE>. Some functions use this to decide whether or not to
-insert a closing quote character. The <VAR>quote_pointer</VAR> is a pointer
-to any opening quote character the user typed. Some functions choose
-to reset this character.
-</DL>
-</P><P>
-
-<A NAME="IDX314"></A>
-<DL>
-<DT><U>Variable:</U> rl_dequote_func_t * <B>rl_filename_dequoting_function</B>
-<DD>A pointer to a function that will remove application-specific quoting
-characters from a filename before completion is attempted, so those
-characters do not interfere with matching the text against names in
-the filesystem. It is called with <VAR>text</VAR>, the text of the word
-to be dequoted, and <VAR>quote_char</VAR>, which is the quoting character
-that delimits the filename (usually <SAMP>`''</SAMP> or <SAMP>`"'</SAMP>). If
-<VAR>quote_char</VAR> is zero, the filename was not in an embedded string.
-</DL>
-</P><P>
-
-<A NAME="IDX315"></A>
-<DL>
-<DT><U>Variable:</U> rl_linebuf_func_t * <B>rl_char_is_quoted_p</B>
-<DD>A pointer to a function to call that determines whether or not a specific
-character in the line buffer is quoted, according to whatever quoting
-mechanism the program calling Readline uses. The function is called with
-two arguments: <VAR>text</VAR>, the text of the line, and <VAR>index</VAR>, the
-index of the character in the line. It is used to decide whether a
-character found in <CODE>rl_completer_word_break_characters</CODE> should be
-used to break words for the completer.
-</DL>
-</P><P>
-
-<A NAME="IDX316"></A>
-<DL>
-<DT><U>Variable:</U> rl_compignore_func_t * <B>rl_ignore_some_completions_function</B>
-<DD>This function, if defined, is called by the completer when real filename
-completion is done, after all the matching names have been generated.
-It is passed a <CODE>NULL</CODE> terminated array of matches.
-The first element (<CODE>matches[0]</CODE>) is the
-maximal substring common to all matches. This function can
-re-arrange the list of matches as required, but each element deleted
-from the array must be freed.
-</DL>
-</P><P>
-
-<A NAME="IDX317"></A>
-<DL>
-<DT><U>Variable:</U> rl_icppfunc_t * <B>rl_directory_completion_hook</B>
-<DD>This function, if defined, is allowed to modify the directory portion
-of filenames Readline completes. It is called with the address of a
-string (the current directory name) as an argument, and may modify that string.
-If the string is replaced with a new string, the old value should be freed.
-Any modified directory name should have a trailing slash.
-The modified value will be displayed as part of the completion, replacing
-the directory portion of the pathname the user typed.
-It returns an integer that should be non-zero if the function modifies
-its directory argument.
-It could be used to expand symbolic links or shell variables in pathnames.
-</DL>
-</P><P>
-
-<A NAME="IDX318"></A>
-<DL>
-<DT><U>Variable:</U> rl_compdisp_func_t * <B>rl_completion_display_matches_hook</B>
-<DD>If non-zero, then this is the address of a function to call when
-completing a word would normally display the list of possible matches.
-This function is called in lieu of Readline displaying the list.
-It takes three arguments:
-(<CODE>char **</CODE><VAR>matches</VAR>, <CODE>int</CODE> <VAR>num_matches</VAR>, <CODE>int</CODE> <VAR>max_length</VAR>)
-where <VAR>matches</VAR> is the array of matching strings,
-<VAR>num_matches</VAR> is the number of strings in that array, and
-<VAR>max_length</VAR> is the length of the longest string in that array.
-Readline provides a convenience function, <CODE>rl_display_match_list</CODE>,
-that takes care of doing the display to Readline's output stream. That
-function may be called from this hook.
-</DL>
-</P><P>
-
-<A NAME="IDX319"></A>
-<DL>
-<DT><U>Variable:</U> const char * <B>rl_basic_word_break_characters</B>
-<DD>The basic list of characters that signal a break between words for the
-completer routine. The default value of this variable is the characters
-which break words for completion in Bash:
-<CODE>" \t\n\"\\'`@$>&#60;=;|&#38;{("</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX320"></A>
-<DL>
-<DT><U>Variable:</U> const char * <B>rl_basic_quote_characters</B>
-<DD>A list of quote characters which can cause a word break.
-</DL>
-</P><P>
-
-<A NAME="IDX321"></A>
-<DL>
-<DT><U>Variable:</U> const char * <B>rl_completer_word_break_characters</B>
-<DD>The list of characters that signal a break between words for
-<CODE>rl_complete_internal()</CODE>. The default list is the value of
-<CODE>rl_basic_word_break_characters</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX322"></A>
-<DL>
-<DT><U>Variable:</U> const char * <B>rl_completer_quote_characters</B>
-<DD>A list of characters which can be used to quote a substring of the line.
-Completion occurs on the entire substring, and within the substring
-<CODE>rl_completer_word_break_characters</CODE> are treated as any other character,
-unless they also appear within this list.
-</DL>
-</P><P>
-
-<A NAME="IDX323"></A>
-<DL>
-<DT><U>Variable:</U> const char * <B>rl_filename_quote_characters</B>
-<DD>A list of characters that cause a filename to be quoted by the completer
-when they appear in a completed filename. The default is the null string.
-</DL>
-</P><P>
-
-<A NAME="IDX324"></A>
-<DL>
-<DT><U>Variable:</U> const char * <B>rl_special_prefixes</B>
-<DD>The list of characters that are word break characters, but should be
-left in <VAR>text</VAR> when it is passed to the completion function.
-Programs can use this to help determine what kind of completing to do.
-For instance, Bash sets this variable to "$@" so that it can complete
-shell variables and hostnames.
-</DL>
-</P><P>
-
-<A NAME="IDX325"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_completion_query_items</B>
-<DD>Up to this many items will be displayed in response to a
-possible-completions call. After that, we ask the user if she is sure
-she wants to see them all. The default value is 100.
-</DL>
-</P><P>
-
-<A NAME="IDX326"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_completion_append_character</B>
-<DD>When a single completion alternative matches at the end of the command
-line, this character is appended to the inserted completion text. The
-default is a space character (<SAMP>` '</SAMP>). Setting this to the null
-character (<SAMP>`\0'</SAMP>) prevents anything being appended automatically.
-This can be changed in custom completion functions to
-provide the "most sensible word separator character" according to
-an application-specific command line syntax specification.
-</DL>
-</P><P>
-
-<A NAME="IDX327"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_completion_suppress_append</B>
-<DD>If non-zero, <VAR>rl_completion_append_character</VAR> is not appended to
-matches at the end of the command line, as described above. It is
-set to 0 before any application-specific completion function is called.
-</DL>
-</P><P>
-
-<A NAME="IDX328"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_completion_mark_symlink_dirs</B>
-<DD>If non-zero, a slash will be appended to completed filenames that are
-symbolic links to directory names, subject to the value of the
-user-settable <VAR>mark-directories</VAR> variable.
-This variable exists so that application completion functions can
-override the user's global preference (set via the
-<VAR>mark-symlinked-directories</VAR> Readline variable) if appropriate.
-This variable is set to the user's preference before any
-application completion function is called, so unless that function
-modifies the value, the user's preferences are honored.
-</DL>
-</P><P>
-
-<A NAME="IDX329"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_ignore_completion_duplicates</B>
-<DD>If non-zero, then duplicates in the matches are removed.
-The default is 1.
-</DL>
-</P><P>
-
-<A NAME="IDX330"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_filename_completion_desired</B>
-<DD>Non-zero means that the results of the matches are to be treated as
-filenames. This is <EM>always</EM> zero on entry, and can only be changed
-within a completion entry generator function. If it is set to a non-zero
-value, directory names have a slash appended and Readline attempts to
-quote completed filenames if they contain any characters in
-<CODE>rl_filename_quote_characters</CODE> and <CODE>rl_filename_quoting_desired</CODE>
-is set to a non-zero value.
-</DL>
-</P><P>
-
-<A NAME="IDX331"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_filename_quoting_desired</B>
-<DD>Non-zero means that the results of the matches are to be quoted using
-double quotes (or an application-specific quoting mechanism) if the
-completed filename contains any characters in
-<CODE>rl_filename_quote_chars</CODE>. This is <EM>always</EM> non-zero
-on entry, and can only be changed within a completion entry generator
-function. The quoting is effected via a call to the function pointed to
-by <CODE>rl_filename_quoting_function</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX332"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_attempted_completion_over</B>
-<DD>If an application-specific completion function assigned to
-<CODE>rl_attempted_completion_function</CODE> sets this variable to a non-zero
-value, Readline will not perform its default filename completion even
-if the application's completion function returns no matches.
-It should be set only by an application's completion function.
-</DL>
-</P><P>
-
-<A NAME="IDX333"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_completion_type</B>
-<DD>Set to a character describing the type of completion Readline is currently
-attempting; see the description of <CODE>rl_complete_internal()</CODE>
-(see section <A HREF="readline.html#SEC46">2.6.2 Completion Functions</A>) for the list of characters.
-</DL>
-</P><P>
-
-<A NAME="IDX334"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_inhibit_completion</B>
-<DD>If this variable is non-zero, completion is inhibited. The completion
-character will be inserted as any other bound to <CODE>self-insert</CODE>.
-</DL>
-</P><P>
-
-<A NAME="A Short Completion Example"></A>
-<HR SIZE="6">
-<A NAME="SEC48"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC47"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.6.4 A Short Completion Example </H3>
-<!--docid::SEC48::-->
-<P>
-
-Here is a small application demonstrating the use of the GNU Readline
-library. It is called <CODE>fileman</CODE>, and the source code resides in
-<TT>`examples/fileman.c'</TT>. This sample application provides
-completion of command names, line editing features, and access to the
-history list.
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>/* fileman.c -- A tiny application which demonstrates how to use the
- GNU Readline library. This application interactively allows users
- to manipulate files and their modes. */
-
-#include &#60;stdio.h&#62;
-#include &#60;sys/types.h&#62;
-#include &#60;sys/file.h&#62;
-#include &#60;sys/stat.h&#62;
-#include &#60;sys/errno.h&#62;
-
-#include &#60;readline/readline.h&#62;
-#include &#60;readline/history.h&#62;
-
-extern char *xmalloc ();
-
-/* The names of functions that actually do the manipulation. */
-int com_list __P((char *));
-int com_view __P((char *));
-int com_rename __P((char *));
-int com_stat __P((char *));
-int com_pwd __P((char *));
-int com_delete __P((char *));
-int com_help __P((char *));
-int com_cd __P((char *));
-int com_quit __P((char *));
-
-/* A structure which contains information on the commands this program
- can understand. */
-
-typedef struct {
- char *name; /* User printable name of the function. */
- rl_icpfunc_t *func; /* Function to call to do the job. */
- char *doc; /* Documentation for this function. */
-} COMMAND;
-
-COMMAND commands[] = {
- { "cd", com_cd, "Change to directory DIR" },
- { "delete", com_delete, "Delete FILE" },
- { "help", com_help, "Display this text" },
- { "?", com_help, "Synonym for `help'" },
- { "list", com_list, "List files in DIR" },
- { "ls", com_list, "Synonym for `list'" },
- { "pwd", com_pwd, "Print the current working directory" },
- { "quit", com_quit, "Quit using Fileman" },
- { "rename", com_rename, "Rename FILE to NEWNAME" },
- { "stat", com_stat, "Print out statistics on FILE" },
- { "view", com_view, "View the contents of FILE" },
- { (char *)NULL, (rl_icpfunc_t *)NULL, (char *)NULL }
-};
-
-/* Forward declarations. */
-char *stripwhite ();
-COMMAND *find_command ();
-
-/* The name of this program, as taken from argv[0]. */
-char *progname;
-
-/* When non-zero, this means the user is done using this program. */
-int done;
-
-char *
-dupstr (s)
- int s;
-{
- char *r;
-
- r = xmalloc (strlen (s) + 1);
- strcpy (r, s);
- return (r);
-}
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- char *line, *s;
-
- progname = argv[0];
-
- initialize_readline (); /* Bind our completer. */
-
- /* Loop reading and executing lines until the user quits. */
- for ( ; done == 0; )
- {
- line = readline ("FileMan: ");
-
- if (!line)
- break;
-
- /* Remove leading and trailing whitespace from the line.
- Then, if there is anything left, add it to the history list
- and execute it. */
- s = stripwhite (line);
-
- if (*s)
- {
- add_history (s);
- execute_line (s);
- }
-
- free (line);
- }
- exit (0);
-}
-
-/* Execute a command line. */
-int
-execute_line (line)
- char *line;
-{
- register int i;
- COMMAND *command;
- char *word;
-
- /* Isolate the command word. */
- i = 0;
- while (line[i] &#38;&#38; whitespace (line[i]))
- i++;
- word = line + i;
-
- while (line[i] &#38;&#38; !whitespace (line[i]))
- i++;
-
- if (line[i])
- line[i++] = '\0';
-
- command = find_command (word);
-
- if (!command)
- {
- fprintf (stderr, "%s: No such command for FileMan.\n", word);
- return (-1);
- }
-
- /* Get argument to command, if any. */
- while (whitespace (line[i]))
- i++;
-
- word = line + i;
-
- /* Call the function. */
- return ((*(command-&#62;func)) (word));
-}
-
-/* Look up NAME as the name of a command, and return a pointer to that
- command. Return a NULL pointer if NAME isn't a command name. */
-COMMAND *
-find_command (name)
- char *name;
-{
- register int i;
-
- for (i = 0; commands[i].name; i++)
- if (strcmp (name, commands[i].name) == 0)
- return (&#38;commands[i]);
-
- return ((COMMAND *)NULL);
-}
-
-/* Strip whitespace from the start and end of STRING. Return a pointer
- into STRING. */
-char *
-stripwhite (string)
- char *string;
-{
- register char *s, *t;
-
- for (s = string; whitespace (*s); s++)
- ;
-
- if (*s == 0)
- return (s);
-
- t = s + strlen (s) - 1;
- while (t &#62; s &#38;&#38; whitespace (*t))
- t--;
- *++t = '\0';
-
- return s;
-}
-
-/* **************************************************************** */
-/* */
-/* Interface to Readline Completion */
-/* */
-/* **************************************************************** */
-
-char *command_generator __P((const char *, int));
-char **fileman_completion __P((const char *, int, int));
-
-/* Tell the GNU Readline library how to complete. We want to try to
- complete on command names if this is the first word in the line, or
- on filenames if not. */
-initialize_readline ()
-{
- /* Allow conditional parsing of the ~/.inputrc file. */
- rl_readline_name = "FileMan";
-
- /* Tell the completer that we want a crack first. */
- rl_attempted_completion_function = fileman_completion;
-}
-
-/* Attempt to complete on the contents of TEXT. START and END
- bound the region of rl_line_buffer that contains the word to
- complete. TEXT is the word to complete. We can use the entire
- contents of rl_line_buffer in case we want to do some simple
- parsing. Returnthe array of matches, or NULL if there aren't any. */
-char **
-fileman_completion (text, start, end)
- const char *text;
- int start, end;
-{
- char **matches;
-
- matches = (char **)NULL;
-
- /* If this word is at the start of the line, then it is a command
- to complete. Otherwise it is the name of a file in the current
- directory. */
- if (start == 0)
- matches = rl_completion_matches (text, command_generator);
-
- return (matches);
-}
-
-/* Generator function for command completion. STATE lets us
- know whether to start from scratch; without any state
- (i.e. STATE == 0), then we start at the top of the list. */
-char *
-command_generator (text, state)
- const char *text;
- int state;
-{
- static int list_index, len;
- char *name;
-
- /* If this is a new word to complete, initialize now. This
- includes saving the length of TEXT for efficiency, and
- initializing the index variable to 0. */
- if (!state)
- {
- list_index = 0;
- len = strlen (text);
- }
-
- /* Return the next name which partially matches from the
- command list. */
- while (name = commands[list_index].name)
- {
- list_index++;
-
- if (strncmp (name, text, len) == 0)
- return (dupstr(name));
- }
-
- /* If no names matched, then return NULL. */
- return ((char *)NULL);
-}
-
-/* **************************************************************** */
-/* */
-/* FileMan Commands */
-/* */
-/* **************************************************************** */
-
-/* String to pass to system (). This is for the LIST, VIEW and RENAME
- commands. */
-static char syscom[1024];
-
-/* List the file(s) named in arg. */
-com_list (arg)
- char *arg;
-{
- if (!arg)
- arg = "";
-
- sprintf (syscom, "ls -FClg %s", arg);
- return (system (syscom));
-}
-
-com_view (arg)
- char *arg;
-{
- if (!valid_argument ("view", arg))
- return 1;
-
- sprintf (syscom, "more %s", arg);
- return (system (syscom));
-}
-
-com_rename (arg)
- char *arg;
-{
- too_dangerous ("rename");
- return (1);
-}
-
-com_stat (arg)
- char *arg;
-{
- struct stat finfo;
-
- if (!valid_argument ("stat", arg))
- return (1);
-
- if (stat (arg, &#38;finfo) == -1)
- {
- perror (arg);
- return (1);
- }
-
- printf ("Statistics for `%s':\n", arg);
-
- printf ("%s has %d link%s, and is %d byte%s in length.\n", arg,
- finfo.st_nlink,
- (finfo.st_nlink == 1) ? "" : "s",
- finfo.st_size,
- (finfo.st_size == 1) ? "" : "s");
- printf ("Inode Last Change at: %s", ctime (&#38;finfo.st_ctime));
- printf (" Last access at: %s", ctime (&#38;finfo.st_atime));
- printf (" Last modified at: %s", ctime (&#38;finfo.st_mtime));
- return (0);
-}
-
-com_delete (arg)
- char *arg;
-{
- too_dangerous ("delete");
- return (1);
-}
-
-/* Print out help for ARG, or for all of the commands if ARG is
- not present. */
-com_help (arg)
- char *arg;
-{
- register int i;
- int printed = 0;
-
- for (i = 0; commands[i].name; i++)
- {
- if (!*arg || (strcmp (arg, commands[i].name) == 0))
- {
- printf ("%s\t\t%s.\n", commands[i].name, commands[i].doc);
- printed++;
- }
- }
-
- if (!printed)
- {
- printf ("No commands match `%s'. Possibilties are:\n", arg);
-
- for (i = 0; commands[i].name; i++)
- {
- /* Print in six columns. */
- if (printed == 6)
- {
- printed = 0;
- printf ("\n");
- }
-
- printf ("%s\t", commands[i].name);
- printed++;
- }
-
- if (printed)
- printf ("\n");
- }
- return (0);
-}
-
-/* Change to the directory ARG. */
-com_cd (arg)
- char *arg;
-{
- if (chdir (arg) == -1)
- {
- perror (arg);
- return 1;
- }
-
- com_pwd ("");
- return (0);
-}
-
-/* Print out the current working directory. */
-com_pwd (ignore)
- char *ignore;
-{
- char dir[1024], *s;
-
- s = getcwd (dir, sizeof(dir) - 1);
- if (s == 0)
- {
- printf ("Error getting pwd: %s\n", dir);
- return 1;
- }
-
- printf ("Current directory is %s\n", dir);
- return 0;
-}
-
-/* The user wishes to quit using this program. Just set DONE
- non-zero. */
-com_quit (arg)
- char *arg;
-{
- done = 1;
- return (0);
-}
-
-/* Function which tells you that you can't do this. */
-too_dangerous (caller)
- char *caller;
-{
- fprintf (stderr,
- "%s: Too dangerous for me to distribute.\n"
- caller);
- fprintf (stderr, "Write it yourself.\n");
-}
-
-/* Return non-zero if ARG is a valid argument for CALLER,
- else print an error message and return zero. */
-int
-valid_argument (caller, arg)
- char *caller, *arg;
-{
- if (!arg || !*arg)
- {
- fprintf (stderr, "%s: Argument required.\n", caller);
- return (0);
- }
-
- return (1);
-}
-</FONT></pre></td></tr></table></P><P>
-
-<A NAME="Concept Index"></A>
-<HR SIZE="6">
-<A NAME="SEC49"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC48"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC50"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1> Concept Index </H1>
-<!--docid::SEC49::-->
-<table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="readline.html#cp_C" style="text-decoration:none"><b>C</b></A>
- &nbsp;
-<A HREF="readline.html#cp_E" style="text-decoration:none"><b>E</b></A>
- &nbsp;
-<A HREF="readline.html#cp_I" style="text-decoration:none"><b>I</b></A>
- &nbsp;
-<A HREF="readline.html#cp_K" style="text-decoration:none"><b>K</b></A>
- &nbsp;
-<A HREF="readline.html#cp_N" style="text-decoration:none"><b>N</b></A>
- &nbsp;
-<A HREF="readline.html#cp_R" style="text-decoration:none"><b>R</b></A>
- &nbsp;
-<A HREF="readline.html#cp_V" style="text-decoration:none"><b>V</b></A>
- &nbsp;
-<A HREF="readline.html#cp_Y" style="text-decoration:none"><b>Y</b></A>
- &nbsp;
-</td></tr></table><br><P></P>
-<TABLE border=0>
-<TR><TD></TD><TH ALIGN=LEFT>Index Entry</TH><TH ALIGN=LEFT> Section</TH></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="cp_C"></A>C</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#SEC4">command editing</A></TD><TD valign=top><A HREF="readline.html#SEC4">1.2.1 Readline Bare Essentials</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="cp_E"></A>E</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#SEC4">editing command lines</A></TD><TD valign=top><A HREF="readline.html#SEC4">1.2.1 Readline Bare Essentials</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="cp_I"></A>I</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#SEC9">initialization file, readline</A></TD><TD valign=top><A HREF="readline.html#SEC9">1.3 Readline Init File</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#SEC3">interaction, readline</A></TD><TD valign=top><A HREF="readline.html#SEC3">1.2 Readline Interaction</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="cp_K"></A>K</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX3">kill ring</A></TD><TD valign=top><A HREF="readline.html#SEC6">1.2.3 Readline Killing Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX1">killing text</A></TD><TD valign=top><A HREF="readline.html#SEC6">1.2.3 Readline Killing Commands</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="cp_N"></A>N</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#SEC4">notation, readline</A></TD><TD valign=top><A HREF="readline.html#SEC4">1.2.1 Readline Bare Essentials</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="cp_R"></A>R</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX175">readline, function</A></TD><TD valign=top><A HREF="readline.html#SEC24">2.1 Basic Behavior</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="cp_V"></A>V</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX4">variables, readline</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="cp_Y"></A>Y</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX2">yanking text</A></TD><TD valign=top><A HREF="readline.html#SEC6">1.2.3 Readline Killing Commands</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-</TABLE><P></P><table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="readline.html#cp_C" style="text-decoration:none"><b>C</b></A>
- &nbsp;
-<A HREF="readline.html#cp_E" style="text-decoration:none"><b>E</b></A>
- &nbsp;
-<A HREF="readline.html#cp_I" style="text-decoration:none"><b>I</b></A>
- &nbsp;
-<A HREF="readline.html#cp_K" style="text-decoration:none"><b>K</b></A>
- &nbsp;
-<A HREF="readline.html#cp_N" style="text-decoration:none"><b>N</b></A>
- &nbsp;
-<A HREF="readline.html#cp_R" style="text-decoration:none"><b>R</b></A>
- &nbsp;
-<A HREF="readline.html#cp_V" style="text-decoration:none"><b>V</b></A>
- &nbsp;
-<A HREF="readline.html#cp_Y" style="text-decoration:none"><b>Y</b></A>
- &nbsp;
-</td></tr></table><br><P>
-
-<A NAME="Function and Variable Index"></A>
-<HR SIZE="6">
-<A NAME="SEC50"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1> Function and Variable Index </H1>
-<!--docid::SEC50::-->
-<table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="readline.html#fn__" style="text-decoration:none"><b>_</b></A>
- &nbsp;
-<BR>
-<A HREF="readline.html#fn_A" style="text-decoration:none"><b>A</b></A>
- &nbsp;
-<A HREF="readline.html#fn_B" style="text-decoration:none"><b>B</b></A>
- &nbsp;
-<A HREF="readline.html#fn_C" style="text-decoration:none"><b>C</b></A>
- &nbsp;
-<A HREF="readline.html#fn_D" style="text-decoration:none"><b>D</b></A>
- &nbsp;
-<A HREF="readline.html#fn_E" style="text-decoration:none"><b>E</b></A>
- &nbsp;
-<A HREF="readline.html#fn_F" style="text-decoration:none"><b>F</b></A>
- &nbsp;
-<A HREF="readline.html#fn_H" style="text-decoration:none"><b>H</b></A>
- &nbsp;
-<A HREF="readline.html#fn_I" style="text-decoration:none"><b>I</b></A>
- &nbsp;
-<A HREF="readline.html#fn_K" style="text-decoration:none"><b>K</b></A>
- &nbsp;
-<A HREF="readline.html#fn_M" style="text-decoration:none"><b>M</b></A>
- &nbsp;
-<A HREF="readline.html#fn_N" style="text-decoration:none"><b>N</b></A>
- &nbsp;
-<A HREF="readline.html#fn_O" style="text-decoration:none"><b>O</b></A>
- &nbsp;
-<A HREF="readline.html#fn_P" style="text-decoration:none"><b>P</b></A>
- &nbsp;
-<A HREF="readline.html#fn_Q" style="text-decoration:none"><b>Q</b></A>
- &nbsp;
-<A HREF="readline.html#fn_R" style="text-decoration:none"><b>R</b></A>
- &nbsp;
-<A HREF="readline.html#fn_S" style="text-decoration:none"><b>S</b></A>
- &nbsp;
-<A HREF="readline.html#fn_T" style="text-decoration:none"><b>T</b></A>
- &nbsp;
-<A HREF="readline.html#fn_U" style="text-decoration:none"><b>U</b></A>
- &nbsp;
-<A HREF="readline.html#fn_V" style="text-decoration:none"><b>V</b></A>
- &nbsp;
-<A HREF="readline.html#fn_Y" style="text-decoration:none"><b>Y</b></A>
- &nbsp;
-</td></tr></table><br><P></P>
-<TABLE border=0>
-<TR><TD></TD><TH ALIGN=LEFT>Index Entry</TH><TH ALIGN=LEFT> Section</TH></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn__"></A>_</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX278"><CODE>_rl_digit_p</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX281"><CODE>_rl_digit_value</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX277"><CODE>_rl_lowercase_p</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX280"><CODE>_rl_to_lower</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX279"><CODE>_rl_to_upper</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX276"><CODE>_rl_uppercase_p</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_A"></A>A</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX142"><CODE>abort (C-g)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX143"><CODE>abort (C-g)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX42"><CODE>accept-line (Newline or Return)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX43"><CODE>accept-line (Newline or Return)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_B"></A>B</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX32"><CODE>backward-char (C-b)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX33"><CODE>backward-char (C-b)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX70"><CODE>backward-delete-char (Rubout)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX71"><CODE>backward-delete-char (Rubout)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX94"><CODE>backward-kill-line (C-x Rubout)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX95"><CODE>backward-kill-line (C-x Rubout)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX102"><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX103"><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX36"><CODE>backward-word (M-b)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX37"><CODE>backward-word (M-b)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX48"><CODE>beginning-of-history (M-&#38;#60;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX49"><CODE>beginning-of-history (M-&#38;#60;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX26"><CODE>beginning-of-line (C-a)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX27"><CODE>beginning-of-line (C-a)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX5">bell-style</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_C"></A>C</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX138"><CODE>call-last-kbd-macro (C-x e)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX139"><CODE>call-last-kbd-macro (C-x e)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX88"><CODE>capitalize-word (M-c)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX89"><CODE>capitalize-word (M-c)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX158"><CODE>character-search (C-])</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX159"><CODE>character-search (C-])</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX160"><CODE>character-search-backward (M-C-])</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX161"><CODE>character-search-backward (M-C-])</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX38"><CODE>clear-screen (C-l)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX39"><CODE>clear-screen (C-l)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX6">comment-begin</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX124"><CODE>complete (<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX125"><CODE>complete (<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX7">completion-query-items</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX8">convert-meta</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX112"><CODE>copy-backward-word ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX113"><CODE>copy-backward-word ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX114"><CODE>copy-forward-word ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX115"><CODE>copy-forward-word ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX110"><CODE>copy-region-as-kill ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX111"><CODE>copy-region-as-kill ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_D"></A>D</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX68"><CODE>delete-char (C-d)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX69"><CODE>delete-char (C-d)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX132"><CODE>delete-char-or-list ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX133"><CODE>delete-char-or-list ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX106"><CODE>delete-horizontal-space ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX107"><CODE>delete-horizontal-space ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX120"><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, &#60;small&#62;...&#60;/small&#62; <KBD>M--</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX121"><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, &#60;small&#62;...&#60;/small&#62; <KBD>M--</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX9">disable-completion</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX144"><CODE>do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, &#60;small&#62;...&#60;/small&#62;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX145"><CODE>do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, &#60;small&#62;...&#60;/small&#62;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX86"><CODE>downcase-word (M-l)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX87"><CODE>downcase-word (M-l)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX164"><CODE>dump-functions ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX165"><CODE>dump-functions ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX168"><CODE>dump-macros ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX169"><CODE>dump-macros ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX166"><CODE>dump-variables ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX167"><CODE>dump-variables ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_E"></A>E</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX10">editing-mode</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX170"><CODE>emacs-editing-mode (C-e)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX171"><CODE>emacs-editing-mode (C-e)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX11">enable-keypad</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX136"><CODE>end-kbd-macro (C-x ))</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX137"><CODE>end-kbd-macro (C-x ))</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX50"><CODE>end-of-history (M-&#38;#62;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX51"><CODE>end-of-history (M-&#38;#62;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX28"><CODE>end-of-line (C-e)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX29"><CODE>end-of-line (C-e)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX156"><CODE>exchange-point-and-mark (C-x C-x)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX157"><CODE>exchange-point-and-mark (C-x C-x)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX12">expand-tilde</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_F"></A>F</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX72"><CODE>forward-backward-delete-char ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX73"><CODE>forward-backward-delete-char ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX30"><CODE>forward-char (C-f)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX31"><CODE>forward-char (C-f)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX54"><CODE>forward-search-history (C-s)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX55"><CODE>forward-search-history (C-s)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX34"><CODE>forward-word (M-f)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX35"><CODE>forward-word (M-f)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_H"></A>H</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX13">history-preserve-point</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX62"><CODE>history-search-backward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX63"><CODE>history-search-backward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX60"><CODE>history-search-forward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX61"><CODE>history-search-forward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX14">horizontal-scroll-mode</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_I"></A>I</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX15">input-meta</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX162"><CODE>insert-comment (M-#)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX163"><CODE>insert-comment (M-#)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX128"><CODE>insert-completions (M-*)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX129"><CODE>insert-completions (M-*)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX17">isearch-terminators</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_K"></A>K</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX18">keymap</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX92"><CODE>kill-line (C-k)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX93"><CODE>kill-line (C-k)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX108"><CODE>kill-region ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX109"><CODE>kill-region ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX98"><CODE>kill-whole-line ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX99"><CODE>kill-whole-line ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX100"><CODE>kill-word (M-d)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX101"><CODE>kill-word (M-d)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_M"></A>M</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX19">mark-modified-lines</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX20">mark-symlinked-directories</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX21">match-hidden-files</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX130"><CODE>menu-complete ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX131"><CODE>menu-complete ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX16">meta-flag</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_N"></A>N</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX46"><CODE>next-history (C-n)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX47"><CODE>next-history (C-n)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX58"><CODE>non-incremental-forward-search-history (M-n)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX59"><CODE>non-incremental-forward-search-history (M-n)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX56"><CODE>non-incremental-reverse-search-history (M-p)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX57"><CODE>non-incremental-reverse-search-history (M-p)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_O"></A>O</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX22">output-meta</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX90"><CODE>overwrite-mode ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX91"><CODE>overwrite-mode ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_P"></A>P</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX23">page-completions</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX126"><CODE>possible-completions (M-?)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX127"><CODE>possible-completions (M-?)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX146"><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX147"><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX44"><CODE>previous-history (C-p)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX45"><CODE>previous-history (C-p)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_Q"></A>Q</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX74"><CODE>quoted-insert (C-q or C-v)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX75"><CODE>quoted-insert (C-q or C-v)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_R"></A>R</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX140"><CODE>re-read-init-file (C-x C-r)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX141"><CODE>re-read-init-file (C-x C-r)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX174"><CODE>readline</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC24">2.1 Basic Behavior</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX40"><CODE>redraw-current-line ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX41"><CODE>redraw-current-line ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX52"><CODE>reverse-search-history (C-r)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX53"><CODE>reverse-search-history (C-r)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX150"><CODE>revert-line (M-r)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX151"><CODE>revert-line (M-r)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX209"><CODE>rl_add_defun</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC30">2.4.1 Naming a Function</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX235"><CODE>rl_add_funmap_entry</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX238"><CODE>rl_add_undo</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX274"><CODE>rl_alphabetic</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX186">rl_already_prompted</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX312">rl_attempted_completion_function</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX332">rl_attempted_completion_over</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX320">rl_basic_quote_characters</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX319">rl_basic_word_break_characters</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX236"><CODE>rl_begin_undo_group</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX218"><CODE>rl_bind_key</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX219"><CODE>rl_bind_key_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX203">rl_binding_keymap</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX288"><CODE>rl_callback_handler_install</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC41">2.4.12 Alternate Interface</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX290"><CODE>rl_callback_handler_remove</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC41">2.4.12 Alternate Interface</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX289"><CODE>rl_callback_read_char</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC41">2.4.12 Alternate Interface</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX291">rl_catch_signals</A></TD><TD valign=top><A HREF="readline.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX292">rl_catch_sigwinch</A></TD><TD valign=top><A HREF="readline.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX315">rl_char_is_quoted_p</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX293"><CODE>rl_cleanup_after_signal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX250"><CODE>rl_clear_message</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX264"><CODE>rl_clear_pending_input</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX300"><CODE>rl_clear_signals</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX301"><CODE>rl_complete</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC45">2.6.1 How Completing Works</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX304"><CODE>rl_complete</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC46">2.6.2 Completion Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX303"><CODE>rl_complete_internal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC46">2.6.2 Completion Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX322">rl_completer_quote_characters</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX321">rl_completer_word_break_characters</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX326">rl_completion_append_character</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX318">rl_completion_display_matches_hook</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX302">rl_completion_entry_function</A></TD><TD valign=top><A HREF="readline.html#SEC45">2.6.1 How Completing Works</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX311">rl_completion_entry_function</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX328">rl_completion_mark_symlink_dirs</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX308"><CODE>rl_completion_matches</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC46">2.6.2 Completion Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX307"><CODE>rl_completion_mode</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC46">2.6.2 Completion Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX325">rl_completion_query_items</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX327">rl_completion_suppress_append</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX333">rl_completion_type</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX211"><CODE>rl_copy_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX257"><CODE>rl_copy_text</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX247"><CODE>rl_crlf</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX256"><CODE>rl_delete_text</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX201">rl_deprep_term_function</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX267"><CODE>rl_deprep_terminal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX273"><CODE>rl_ding</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX317">rl_directory_completion_hook</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX213"><CODE>rl_discard_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX183">rl_dispatching</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX275"><CODE>rl_display_match_list</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX240"><CODE>rl_do_undo</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX180">rl_done</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX208">rl_editing_mode</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX178">rl_end</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX237"><CODE>rl_end_undo_group</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX184">rl_erase_empty_line</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX197">rl_event_hook</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX263"><CODE>rl_execute_next</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX202">rl_executing_keymap</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX204">rl_executing_macro</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX253"><CODE>rl_expand_prompt</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX206">rl_explicit_arg</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX271"><CODE>rl_extend_line_buffer</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX330">rl_filename_completion_desired</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX309"><CODE>rl_filename_completion_function</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC46">2.6.2 Completion Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX314">rl_filename_dequoting_function</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX323">rl_filename_quote_characters</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX331">rl_filename_quoting_desired</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX313">rl_filename_quoting_function</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX243"><CODE>rl_forced_update_display</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX294"><CODE>rl_free_line_state</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX239"><CODE>rl_free_undo_list</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX232"><CODE>rl_function_dumper</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX229"><CODE>rl_function_of_keyseq</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX234"><CODE>rl_funmap_names</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX225"><CODE>rl_generic_bind</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX214"><CODE>rl_get_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX216"><CODE>rl_get_keymap_by_name</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX217"><CODE>rl_get_keymap_name</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX298"><CODE>rl_get_screen_size</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX287"><CODE>rl_get_termcap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX261"><CODE>rl_getc</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX198">rl_getc_function</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX189">rl_gnu_readline_p</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX329">rl_ignore_completion_duplicates</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX316">rl_ignore_some_completions_function</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX334">rl_inhibit_completion</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX272"><CODE>rl_initialize</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX306"><CODE>rl_insert_completions</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC46">2.6.2 Completion Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX255"><CODE>rl_insert_text</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX192">rl_instream</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX230"><CODE>rl_invoking_keyseqs</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX231"><CODE>rl_invoking_keyseqs_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX258"><CODE>rl_kill_text</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX194">rl_last_func</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX187">rl_library_version</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX176">rl_line_buffer</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX233"><CODE>rl_list_funmap_names</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX282"><CODE>rl_macro_bind</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX283"><CODE>rl_macro_dumper</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX210"><CODE>rl_make_bare_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX212"><CODE>rl_make_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX179">rl_mark</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX249"><CODE>rl_message</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX241"><CODE>rl_modifying</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX228"><CODE>rl_named_function</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX181">rl_num_chars_to_read</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX207">rl_numeric_arg</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX244"><CODE>rl_on_new_line</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX245"><CODE>rl_on_new_line_with_prompt</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX193">rl_outstream</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX226"><CODE>rl_parse_and_bind</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX182">rl_pending_input</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX177">rl_point</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX305"><CODE>rl_possible_completions</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC46">2.6.2 Completion Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX196">rl_pre_input_hook</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX200">rl_prep_term_function</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX266"><CODE>rl_prep_terminal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX185">rl_prompt</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX259"><CODE>rl_push_macro_input</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX227"><CODE>rl_read_init_file</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX260"><CODE>rl_read_key</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX191">rl_readline_name</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX205">rl_readline_state</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX188">rl_readline_version</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX242"><CODE>rl_redisplay</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX199">rl_redisplay_function</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX270"><CODE>rl_replace_line</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX295"><CODE>rl_reset_after_signal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX246"><CODE>rl_reset_line_state</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX269"><CODE>rl_reset_terminal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX296"><CODE>rl_resize_terminal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX252"><CODE>rl_restore_prompt</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX251"><CODE>rl_save_prompt</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX224"><CODE>rl_set_key</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX265"><CODE>rl_set_keyboard_input_timeout</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX215"><CODE>rl_set_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX286"><CODE>rl_set_paren_blink_timeout</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX254"><CODE>rl_set_prompt</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX297"><CODE>rl_set_screen_size</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX299"><CODE>rl_set_signals</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX248"><CODE>rl_show_char</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX324">rl_special_prefixes</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX195">rl_startup_hook</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX262"><CODE>rl_stuff_char</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX190">rl_terminal_name</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX268"><CODE>rl_tty_set_default_bindings</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX223"><CODE>rl_unbind_command_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX222"><CODE>rl_unbind_function_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX220"><CODE>rl_unbind_key</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX221"><CODE>rl_unbind_key_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX310"><CODE>rl_username_completion_function</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC46">2.6.2 Completion Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX284"><CODE>rl_variable_bind</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX285"><CODE>rl_variable_dumper</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_S"></A>S</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX78"><CODE>self-insert (a, b, A, 1, !, &#60;small&#62;...&#60;/small&#62;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX79"><CODE>self-insert (a, b, A, 1, !, &#60;small&#62;...&#60;/small&#62;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX154"><CODE>set-mark (C-@)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX155"><CODE>set-mark (C-@)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX24">show-all-if-ambiguous</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX134"><CODE>start-kbd-macro (C-x ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX135"><CODE>start-kbd-macro (C-x ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_T"></A>T</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX76"><CODE>tab-insert (M-<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX77"><CODE>tab-insert (M-<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX152"><CODE>tilde-expand (M-~)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX153"><CODE>tilde-expand (M-~)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX80"><CODE>transpose-chars (C-t)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX81"><CODE>transpose-chars (C-t)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX82"><CODE>transpose-words (M-t)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX83"><CODE>transpose-words (M-t)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_U"></A>U</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX148"><CODE>undo (C-_ or C-x C-u)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX149"><CODE>undo (C-_ or C-x C-u)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX122"><CODE>universal-argument ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX123"><CODE>universal-argument ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX96"><CODE>unix-line-discard (C-u)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX97"><CODE>unix-line-discard (C-u)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX104"><CODE>unix-word-rubout (C-w)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX105"><CODE>unix-word-rubout (C-w)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX84"><CODE>upcase-word (M-u)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX85"><CODE>upcase-word (M-u)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_V"></A>V</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX172"><CODE>vi-editing-mode (M-C-j)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX173"><CODE>vi-editing-mode (M-C-j)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX25">visible-stats</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_Y"></A>Y</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX116"><CODE>yank (C-y)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX117"><CODE>yank (C-y)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX66"><CODE>yank-last-arg (M-. or M-_)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX67"><CODE>yank-last-arg (M-. or M-_)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX64"><CODE>yank-nth-arg (M-C-y)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX65"><CODE>yank-nth-arg (M-C-y)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX118"><CODE>yank-pop (M-y)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX119"><CODE>yank-pop (M-y)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-</TABLE><P></P><table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="readline.html#fn__" style="text-decoration:none"><b>_</b></A>
- &nbsp;
-<BR>
-<A HREF="readline.html#fn_A" style="text-decoration:none"><b>A</b></A>
- &nbsp;
-<A HREF="readline.html#fn_B" style="text-decoration:none"><b>B</b></A>
- &nbsp;
-<A HREF="readline.html#fn_C" style="text-decoration:none"><b>C</b></A>
- &nbsp;
-<A HREF="readline.html#fn_D" style="text-decoration:none"><b>D</b></A>
- &nbsp;
-<A HREF="readline.html#fn_E" style="text-decoration:none"><b>E</b></A>
- &nbsp;
-<A HREF="readline.html#fn_F" style="text-decoration:none"><b>F</b></A>
- &nbsp;
-<A HREF="readline.html#fn_H" style="text-decoration:none"><b>H</b></A>
- &nbsp;
-<A HREF="readline.html#fn_I" style="text-decoration:none"><b>I</b></A>
- &nbsp;
-<A HREF="readline.html#fn_K" style="text-decoration:none"><b>K</b></A>
- &nbsp;
-<A HREF="readline.html#fn_M" style="text-decoration:none"><b>M</b></A>
- &nbsp;
-<A HREF="readline.html#fn_N" style="text-decoration:none"><b>N</b></A>
- &nbsp;
-<A HREF="readline.html#fn_O" style="text-decoration:none"><b>O</b></A>
- &nbsp;
-<A HREF="readline.html#fn_P" style="text-decoration:none"><b>P</b></A>
- &nbsp;
-<A HREF="readline.html#fn_Q" style="text-decoration:none"><b>Q</b></A>
- &nbsp;
-<A HREF="readline.html#fn_R" style="text-decoration:none"><b>R</b></A>
- &nbsp;
-<A HREF="readline.html#fn_S" style="text-decoration:none"><b>S</b></A>
- &nbsp;
-<A HREF="readline.html#fn_T" style="text-decoration:none"><b>T</b></A>
- &nbsp;
-<A HREF="readline.html#fn_U" style="text-decoration:none"><b>U</b></A>
- &nbsp;
-<A HREF="readline.html#fn_V" style="text-decoration:none"><b>V</b></A>
- &nbsp;
-<A HREF="readline.html#fn_Y" style="text-decoration:none"><b>Y</b></A>
- &nbsp;
-</td></tr></table><br><P>
-
-<HR SIZE="6">
-<A NAME="SEC_Contents"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1>Table of Contents</H1>
-<UL>
-<A NAME="TOC1" HREF="readline.html#SEC1">1. Command Line Editing</A>
-<BR>
-<UL>
-<A NAME="TOC2" HREF="readline.html#SEC2">1.1 Introduction to Line Editing</A>
-<BR>
-<A NAME="TOC3" HREF="readline.html#SEC3">1.2 Readline Interaction</A>
-<BR>
-<UL>
-<A NAME="TOC4" HREF="readline.html#SEC4">1.2.1 Readline Bare Essentials</A>
-<BR>
-<A NAME="TOC5" HREF="readline.html#SEC5">1.2.2 Readline Movement Commands</A>
-<BR>
-<A NAME="TOC6" HREF="readline.html#SEC6">1.2.3 Readline Killing Commands</A>
-<BR>
-<A NAME="TOC7" HREF="readline.html#SEC7">1.2.4 Readline Arguments</A>
-<BR>
-<A NAME="TOC8" HREF="readline.html#SEC8">1.2.5 Searching for Commands in the History</A>
-<BR>
-</UL>
-<A NAME="TOC9" HREF="readline.html#SEC9">1.3 Readline Init File</A>
-<BR>
-<UL>
-<A NAME="TOC10" HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A>
-<BR>
-<A NAME="TOC11" HREF="readline.html#SEC11">1.3.2 Conditional Init Constructs</A>
-<BR>
-<A NAME="TOC12" HREF="readline.html#SEC12">1.3.3 Sample Init File</A>
-<BR>
-</UL>
-<A NAME="TOC13" HREF="readline.html#SEC13">1.4 Bindable Readline Commands</A>
-<BR>
-<UL>
-<A NAME="TOC14" HREF="readline.html#SEC14">1.4.1 Commands For Moving</A>
-<BR>
-<A NAME="TOC15" HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A>
-<BR>
-<A NAME="TOC16" HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A>
-<BR>
-<A NAME="TOC17" HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A>
-<BR>
-<A NAME="TOC18" HREF="readline.html#SEC18">1.4.5 Specifying Numeric Arguments</A>
-<BR>
-<A NAME="TOC19" HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A>
-<BR>
-<A NAME="TOC20" HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A>
-<BR>
-<A NAME="TOC21" HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A>
-<BR>
-</UL>
-<A NAME="TOC22" HREF="readline.html#SEC22">1.5 Readline vi Mode</A>
-<BR>
-</UL>
-<A NAME="TOC23" HREF="readline.html#SEC23">2. Programming with GNU Readline</A>
-<BR>
-<UL>
-<A NAME="TOC24" HREF="readline.html#SEC24">2.1 Basic Behavior</A>
-<BR>
-<A NAME="TOC25" HREF="readline.html#SEC25">2.2 Custom Functions</A>
-<BR>
-<UL>
-<A NAME="TOC26" HREF="readline.html#SEC26">2.2.1 Readline Typedefs</A>
-<BR>
-<A NAME="TOC27" HREF="readline.html#SEC27">2.2.2 Writing a New Function</A>
-<BR>
-</UL>
-<A NAME="TOC28" HREF="readline.html#SEC28">2.3 Readline Variables</A>
-<BR>
-<A NAME="TOC29" HREF="readline.html#SEC29">2.4 Readline Convenience Functions</A>
-<BR>
-<UL>
-<A NAME="TOC30" HREF="readline.html#SEC30">2.4.1 Naming a Function</A>
-<BR>
-<A NAME="TOC31" HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A>
-<BR>
-<A NAME="TOC32" HREF="readline.html#SEC32">2.4.3 Binding Keys</A>
-<BR>
-<A NAME="TOC33" HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A>
-<BR>
-<A NAME="TOC34" HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A>
-<BR>
-<A NAME="TOC35" HREF="readline.html#SEC35">2.4.6 Redisplay</A>
-<BR>
-<A NAME="TOC36" HREF="readline.html#SEC36">2.4.7 Modifying Text</A>
-<BR>
-<A NAME="TOC37" HREF="readline.html#SEC37">2.4.8 Character Input</A>
-<BR>
-<A NAME="TOC38" HREF="readline.html#SEC38">2.4.9 Terminal Management</A>
-<BR>
-<A NAME="TOC39" HREF="readline.html#SEC39">2.4.10 Utility Functions</A>
-<BR>
-<A NAME="TOC40" HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A>
-<BR>
-<A NAME="TOC41" HREF="readline.html#SEC41">2.4.12 Alternate Interface</A>
-<BR>
-<A NAME="TOC42" HREF="readline.html#SEC42">2.4.13 A Readline Example</A>
-<BR>
-</UL>
-<A NAME="TOC43" HREF="readline.html#SEC43">2.5 Readline Signal Handling</A>
-<BR>
-<A NAME="TOC44" HREF="readline.html#SEC44">2.6 Custom Completers</A>
-<BR>
-<UL>
-<A NAME="TOC45" HREF="readline.html#SEC45">2.6.1 How Completing Works</A>
-<BR>
-<A NAME="TOC46" HREF="readline.html#SEC46">2.6.2 Completion Functions</A>
-<BR>
-<A NAME="TOC47" HREF="readline.html#SEC47">2.6.3 Completion Variables</A>
-<BR>
-<A NAME="TOC48" HREF="readline.html#SEC48">2.6.4 A Short Completion Example</A>
-<BR>
-</UL>
-</UL>
-<A NAME="TOC49" HREF="readline.html#SEC49">Concept Index</A>
-<BR>
-<A NAME="TOC50" HREF="readline.html#SEC50">Function and Variable Index</A>
-<BR>
-</UL>
-<HR SIZE=1>
-<A NAME="SEC_OVERVIEW"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1>Short Table of Contents</H1>
-<BLOCKQUOTE>
-<A NAME="TOC1" HREF="readline.html#SEC1">1. Command Line Editing</A>
-<BR>
-<A NAME="TOC23" HREF="readline.html#SEC23">2. Programming with GNU Readline</A>
-<BR>
-<A NAME="TOC49" HREF="readline.html#SEC49">Concept Index</A>
-<BR>
-<A NAME="TOC50" HREF="readline.html#SEC50">Function and Variable Index</A>
-<BR>
-
-</BLOCKQUOTE>
-<HR SIZE=1>
-<A NAME="SEC_About"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1>About this document</H1>
-This document was generated by <I>Chet Ramey</I> on <I>June, 27 2002</I>
-using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
-"><I>texi2html</I></A>
-<P></P>
-The buttons in the navigation panels have the following meaning:
-<P></P>
-<table border = "1">
-<TR>
-<TH> Button </TH>
-<TH> Name </TH>
-<TH> Go to </TH>
-<TH> From 1.2.3 go to</TH>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ &lt; ] </TD>
-<TD ALIGN="CENTER">
-Back
-</TD>
-<TD>
-previous section in reading order
-</TD>
-<TD>
-1.2.2
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ &gt; ] </TD>
-<TD ALIGN="CENTER">
-Forward
-</TD>
-<TD>
-next section in reading order
-</TD>
-<TD>
-1.2.4
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ &lt;&lt; ] </TD>
-<TD ALIGN="CENTER">
-FastBack
-</TD>
-<TD>
-previous or up-and-previous section
-</TD>
-<TD>
-1.1
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ Up ] </TD>
-<TD ALIGN="CENTER">
-Up
-</TD>
-<TD>
-up section
-</TD>
-<TD>
-1.2
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ &gt;&gt; ] </TD>
-<TD ALIGN="CENTER">
-FastForward
-</TD>
-<TD>
-next or up-and-next section
-</TD>
-<TD>
-1.3
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [Top] </TD>
-<TD ALIGN="CENTER">
-Top
-</TD>
-<TD>
-cover (top) of document
-</TD>
-<TD>
- &nbsp;
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [Contents] </TD>
-<TD ALIGN="CENTER">
-Contents
-</TD>
-<TD>
-table of contents
-</TD>
-<TD>
- &nbsp;
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [Index] </TD>
-<TD ALIGN="CENTER">
-Index
-</TD>
-<TD>
-concept index
-</TD>
-<TD>
- &nbsp;
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ ? ] </TD>
-<TD ALIGN="CENTER">
-About
-</TD>
-<TD>
-this page
-</TD>
-<TD>
- &nbsp;
-</TD>
-</TR>
-</TABLE>
-<P></P>
-where the <STRONG> Example </STRONG> assumes that the current position
-is at <STRONG> Subsubsection One-Two-Three </STRONG> of a document of
-the following structure:
-<UL>
-<LI> 1. Section One </LI>
-<UL>
-<LI>1.1 Subsection One-One</LI>
-<UL>
-<LI> ... </LI>
-</UL>
-<LI>1.2 Subsection One-Two</LI>
-<UL>
-<LI>1.2.1 Subsubsection One-Two-One
-</LI><LI>1.2.2 Subsubsection One-Two-Two
-</LI><LI>1.2.3 Subsubsection One-Two-Three &nbsp; &nbsp; <STRONG>
-&lt;== Current Position </STRONG>
-</LI><LI>1.2.4 Subsubsection One-Two-Four
-</LI></UL>
-<LI>1.3 Subsection One-Three</LI>
-<UL>
-<LI> ... </LI>
-</UL>
-<LI>1.4 Subsection One-Four</LI>
-</UL>
-</UL>
-
-<HR SIZE=1>
-<BR>
-<FONT SIZE="-1">
-This document was generated
-by <I>Chet Ramey</I> on <I>June, 27 2002</I>
-using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
-"><I>texi2html</I></A>
-
-</BODY>
-</HTML>
diff --git a/readline-doc-4.3/doc/readline.info b/readline-doc-4.3/doc/readline.info
deleted file mode 100644
index 57dbdfa..0000000
--- a/readline-doc-4.3/doc/readline.info
+++ /dev/null
@@ -1,3638 +0,0 @@
-This is readline.info, produced by makeinfo version 4.1 from
-/usr/homes/chet/src/bash/readline-src/doc/rlman.texinfo.
-
-INFO-DIR-SECTION Libraries
-START-INFO-DIR-ENTRY
-* Readline: (readline). The GNU readline library API
-END-INFO-DIR-ENTRY
-
- This document describes the GNU Readline Library, a utility which
-aids in the consistency of user interface across discrete programs that
-need to provide a command line interface.
-
- Copyright (C) 1988-2002 Free Software Foundation, Inc.
-
- Permission is granted to make and distribute verbatim copies of this
-manual provided the copyright notice and this permission notice pare
-preserved on all copies.
-
- Permission is granted to copy and distribute modified versions of
-this manual under the conditions for verbatim copying, provided that
-the entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
- Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be stated in a
-translation approved by the Free Software Foundation.
-
-
-File: readline.info, Node: Top, Next: Command Line Editing, Up: (dir)
-
-GNU Readline Library
-********************
-
- This document describes the GNU Readline Library, a utility which
-aids in the consistency of user interface across discrete programs that
-need to provide a command line interface.
-
-* Menu:
-
-* Command Line Editing:: GNU Readline User's Manual.
-* Programming with GNU Readline:: GNU Readline Programmer's Manual.
-* Concept Index:: Index of concepts described in this manual.
-* Function and Variable Index:: Index of externally visible functions
- and variables.
-
-
-File: readline.info, Node: Command Line Editing, Next: Programming with GNU Readline, Prev: Top, Up: Top
-
-Command Line Editing
-********************
-
- This chapter describes the basic features of the GNU command line
-editing interface.
-
-* Menu:
-
-* Introduction and Notation:: Notation used in this text.
-* Readline Interaction:: The minimum set of commands for editing a line.
-* Readline Init File:: Customizing Readline from a user's view.
-* Bindable Readline Commands:: A description of most of the Readline commands
- available for binding
-* Readline vi Mode:: A short description of how to make Readline
- behave like the vi editor.
-
-
-File: readline.info, Node: Introduction and Notation, Next: Readline Interaction, Up: Command Line Editing
-
-Introduction to Line Editing
-============================
-
- The following paragraphs describe the notation used to represent
-keystrokes.
-
- The text `C-k' is read as `Control-K' and describes the character
-produced when the <k> key is pressed while the Control key is depressed.
-
- The text `M-k' is read as `Meta-K' and describes the character
-produced when the Meta key (if you have one) is depressed, and the <k>
-key is pressed. The Meta key is labeled <ALT> on many keyboards. On
-keyboards with two keys labeled <ALT> (usually to either side of the
-space bar), the <ALT> on the left side is generally set to work as a
-Meta key. The <ALT> key on the right may also be configured to work as
-a Meta key or may be configured as some other modifier, such as a
-Compose key for typing accented characters.
-
- If you do not have a Meta or <ALT> key, or another key working as a
-Meta key, the identical keystroke can be generated by typing <ESC>
-_first_, and then typing <k>. Either process is known as "metafying"
-the <k> key.
-
- The text `M-C-k' is read as `Meta-Control-k' and describes the
-character produced by "metafying" `C-k'.
-
- In addition, several keys have their own names. Specifically,
-<DEL>, <ESC>, <LFD>, <SPC>, <RET>, and <TAB> all stand for themselves
-when seen in this text, or in an init file (*note Readline Init File::).
-If your keyboard lacks a <LFD> key, typing <C-j> will produce the
-desired character. The <RET> key may be labeled <Return> or <Enter> on
-some keyboards.
-
-
-File: readline.info, Node: Readline Interaction, Next: Readline Init File, Prev: Introduction and Notation, Up: Command Line Editing
-
-Readline Interaction
-====================
-
- Often during an interactive session you type in a long line of text,
-only to notice that the first word on the line is misspelled. The
-Readline library gives you a set of commands for manipulating the text
-as you type it in, allowing you to just fix your typo, and not forcing
-you to retype the majority of the line. Using these editing commands,
-you move the cursor to the place that needs correction, and delete or
-insert the text of the corrections. Then, when you are satisfied with
-the line, you simply press <RET>. You do not have to be at the end of
-the line to press <RET>; the entire line is accepted regardless of the
-location of the cursor within the line.
-
-* Menu:
-
-* Readline Bare Essentials:: The least you need to know about Readline.
-* Readline Movement Commands:: Moving about the input line.
-* Readline Killing Commands:: How to delete text, and how to get it back!
-* Readline Arguments:: Giving numeric arguments to commands.
-* Searching:: Searching through previous lines.
-
-
-File: readline.info, Node: Readline Bare Essentials, Next: Readline Movement Commands, Up: Readline Interaction
-
-Readline Bare Essentials
-------------------------
-
- In order to enter characters into the line, simply type them. The
-typed character appears where the cursor was, and then the cursor moves
-one space to the right. If you mistype a character, you can use your
-erase character to back up and delete the mistyped character.
-
- Sometimes you may mistype a character, and not notice the error
-until you have typed several other characters. In that case, you can
-type `C-b' to move the cursor to the left, and then correct your
-mistake. Afterwards, you can move the cursor to the right with `C-f'.
-
- When you add text in the middle of a line, you will notice that
-characters to the right of the cursor are `pushed over' to make room
-for the text that you have inserted. Likewise, when you delete text
-behind the cursor, characters to the right of the cursor are `pulled
-back' to fill in the blank space created by the removal of the text. A
-list of the bare essentials for editing the text of an input line
-follows.
-
-`C-b'
- Move back one character.
-
-`C-f'
- Move forward one character.
-
-<DEL> or <Backspace>
- Delete the character to the left of the cursor.
-
-`C-d'
- Delete the character underneath the cursor.
-
-Printing characters
- Insert the character into the line at the cursor.
-
-`C-_' or `C-x C-u'
- Undo the last editing command. You can undo all the way back to an
- empty line.
-
-(Depending on your configuration, the <Backspace> key be set to delete
-the character to the left of the cursor and the <DEL> key set to delete
-the character underneath the cursor, like `C-d', rather than the
-character to the left of the cursor.)
-
-
-File: readline.info, Node: Readline Movement Commands, Next: Readline Killing Commands, Prev: Readline Bare Essentials, Up: Readline Interaction
-
-Readline Movement Commands
---------------------------
-
- The above table describes the most basic keystrokes that you need in
-order to do editing of the input line. For your convenience, many
-other commands have been added in addition to `C-b', `C-f', `C-d', and
-<DEL>. Here are some commands for moving more rapidly about the line.
-
-`C-a'
- Move to the start of the line.
-
-`C-e'
- Move to the end of the line.
-
-`M-f'
- Move forward a word, where a word is composed of letters and
- digits.
-
-`M-b'
- Move backward a word.
-
-`C-l'
- Clear the screen, reprinting the current line at the top.
-
- Notice how `C-f' moves forward a character, while `M-f' moves
-forward a word. It is a loose convention that control keystrokes
-operate on characters while meta keystrokes operate on words.
-
-
-File: readline.info, Node: Readline Killing Commands, Next: Readline Arguments, Prev: Readline Movement Commands, Up: Readline Interaction
-
-Readline Killing Commands
--------------------------
-
- "Killing" text means to delete the text from the line, but to save
-it away for later use, usually by "yanking" (re-inserting) it back into
-the line. (`Cut' and `paste' are more recent jargon for `kill' and
-`yank'.)
-
- If the description for a command says that it `kills' text, then you
-can be sure that you can get the text back in a different (or the same)
-place later.
-
- When you use a kill command, the text is saved in a "kill-ring".
-Any number of consecutive kills save all of the killed text together, so
-that when you yank it back, you get it all. The kill ring is not line
-specific; the text that you killed on a previously typed line is
-available to be yanked back later, when you are typing another line.
-
- Here is the list of commands for killing text.
-
-`C-k'
- Kill the text from the current cursor position to the end of the
- line.
-
-`M-d'
- Kill from the cursor to the end of the current word, or, if between
- words, to the end of the next word. Word boundaries are the same
- as those used by `M-f'.
-
-`M-<DEL>'
- Kill from the cursor the start of the current word, or, if between
- words, to the start of the previous word. Word boundaries are the
- same as those used by `M-b'.
-
-`C-w'
- Kill from the cursor to the previous whitespace. This is
- different than `M-<DEL>' because the word boundaries differ.
-
- Here is how to "yank" the text back into the line. Yanking means to
-copy the most-recently-killed text from the kill buffer.
-
-`C-y'
- Yank the most recently killed text back into the buffer at the
- cursor.
-
-`M-y'
- Rotate the kill-ring, and yank the new top. You can only do this
- if the prior command is `C-y' or `M-y'.
-
-
-File: readline.info, Node: Readline Arguments, Next: Searching, Prev: Readline Killing Commands, Up: Readline Interaction
-
-Readline Arguments
-------------------
-
- You can pass numeric arguments to Readline commands. Sometimes the
-argument acts as a repeat count, other times it is the sign of the
-argument that is significant. If you pass a negative argument to a
-command which normally acts in a forward direction, that command will
-act in a backward direction. For example, to kill text back to the
-start of the line, you might type `M-- C-k'.
-
- The general way to pass numeric arguments to a command is to type
-meta digits before the command. If the first `digit' typed is a minus
-sign (`-'), then the sign of the argument will be negative. Once you
-have typed one meta digit to get the argument started, you can type the
-remainder of the digits, and then the command. For example, to give
-the `C-d' command an argument of 10, you could type `M-1 0 C-d', which
-will delete the next ten characters on the input line.
-
-
-File: readline.info, Node: Searching, Prev: Readline Arguments, Up: Readline Interaction
-
-Searching for Commands in the History
--------------------------------------
-
- Readline provides commands for searching through the command history
-for lines containing a specified string. There are two search modes:
-"incremental" and "non-incremental".
-
- Incremental searches begin before the user has finished typing the
-search string. As each character of the search string is typed,
-Readline displays the next entry from the history matching the string
-typed so far. An incremental search requires only as many characters
-as needed to find the desired history entry. To search backward in the
-history for a particular string, type `C-r'. Typing `C-s' searches
-forward through the history. The characters present in the value of
-the `isearch-terminators' variable are used to terminate an incremental
-search. If that variable has not been assigned a value, the <ESC> and
-`C-J' characters will terminate an incremental search. `C-g' will
-abort an incremental search and restore the original line. When the
-search is terminated, the history entry containing the search string
-becomes the current line.
-
- To find other matching entries in the history list, type `C-r' or
-`C-s' as appropriate. This will search backward or forward in the
-history for the next entry matching the search string typed so far.
-Any other key sequence bound to a Readline command will terminate the
-search and execute that command. For instance, a <RET> will terminate
-the search and accept the line, thereby executing the command from the
-history list. A movement command will terminate the search, make the
-last line found the current line, and begin editing.
-
- Readline remembers the last incremental search string. If two
-`C-r's are typed without any intervening characters defining a new
-search string, any remembered search string is used.
-
- Non-incremental searches read the entire search string before
-starting to search for matching history lines. The search string may be
-typed by the user or be part of the contents of the current line.
-
-
-File: readline.info, Node: Readline Init File, Next: Bindable Readline Commands, Prev: Readline Interaction, Up: Command Line Editing
-
-Readline Init File
-==================
-
- Although the Readline library comes with a set of Emacs-like
-keybindings installed by default, it is possible to use a different set
-of keybindings. Any user can customize programs that use Readline by
-putting commands in an "inputrc" file, conventionally in his home
-directory. The name of this file is taken from the value of the
-environment variable `INPUTRC'. If that variable is unset, the default
-is `~/.inputrc'.
-
- When a program which uses the Readline library starts up, the init
-file is read, and the key bindings are set.
-
- In addition, the `C-x C-r' command re-reads this init file, thus
-incorporating any changes that you might have made to it.
-
-* Menu:
-
-* Readline Init File Syntax:: Syntax for the commands in the inputrc file.
-
-* Conditional Init Constructs:: Conditional key bindings in the inputrc file.
-
-* Sample Init File:: An example inputrc file.
-
-
-File: readline.info, Node: Readline Init File Syntax, Next: Conditional Init Constructs, Up: Readline Init File
-
-Readline Init File Syntax
--------------------------
-
- There are only a few basic constructs allowed in the Readline init
-file. Blank lines are ignored. Lines beginning with a `#' are
-comments. Lines beginning with a `$' indicate conditional constructs
-(*note Conditional Init Constructs::). Other lines denote variable
-settings and key bindings.
-
-Variable Settings
- You can modify the run-time behavior of Readline by altering the
- values of variables in Readline using the `set' command within the
- init file. The syntax is simple:
-
- set VARIABLE VALUE
-
- Here, for example, is how to change from the default Emacs-like
- key binding to use `vi' line editing commands:
-
- set editing-mode vi
-
- Variable names and values, where appropriate, are recognized
- without regard to case.
-
- A great deal of run-time behavior is changeable with the following
- variables.
-
- `bell-style'
- Controls what happens when Readline wants to ring the
- terminal bell. If set to `none', Readline never rings the
- bell. If set to `visible', Readline uses a visible bell if
- one is available. If set to `audible' (the default),
- Readline attempts to ring the terminal's bell.
-
- `comment-begin'
- The string to insert at the beginning of the line when the
- `insert-comment' command is executed. The default value is
- `"#"'.
-
- `completion-ignore-case'
- If set to `on', Readline performs filename matching and
- completion in a case-insensitive fashion. The default value
- is `off'.
-
- `completion-query-items'
- The number of possible completions that determines when the
- user is asked whether he wants to see the list of
- possibilities. If the number of possible completions is
- greater than this value, Readline will ask the user whether
- or not he wishes to view them; otherwise, they are simply
- listed. This variable must be set to an integer value
- greater than or equal to 0. The default limit is `100'.
-
- `convert-meta'
- If set to `on', Readline will convert characters with the
- eighth bit set to an ASCII key sequence by stripping the
- eighth bit and prefixing an <ESC> character, converting them
- to a meta-prefixed key sequence. The default value is `on'.
-
- `disable-completion'
- If set to `On', Readline will inhibit word completion.
- Completion characters will be inserted into the line as if
- they had been mapped to `self-insert'. The default is `off'.
-
- `editing-mode'
- The `editing-mode' variable controls which default set of key
- bindings is used. By default, Readline starts up in Emacs
- editing mode, where the keystrokes are most similar to Emacs.
- This variable can be set to either `emacs' or `vi'.
-
- `enable-keypad'
- When set to `on', Readline will try to enable the application
- keypad when it is called. Some systems need this to enable
- the arrow keys. The default is `off'.
-
- `expand-tilde'
- If set to `on', tilde expansion is performed when Readline
- attempts word completion. The default is `off'.
-
- If set to `on', the history code attempts to place point at
- the same location on each history line retrived with
- `previous-history' or `next-history'.
-
- `horizontal-scroll-mode'
- This variable can be set to either `on' or `off'. Setting it
- to `on' means that the text of the lines being edited will
- scroll horizontally on a single screen line when they are
- longer than the width of the screen, instead of wrapping onto
- a new screen line. By default, this variable is set to `off'.
-
- `input-meta'
- If set to `on', Readline will enable eight-bit input (it will
- not clear the eighth bit in the characters it reads),
- regardless of what the terminal claims it can support. The
- default value is `off'. The name `meta-flag' is a synonym
- for this variable.
-
- `isearch-terminators'
- The string of characters that should terminate an incremental
- search without subsequently executing the character as a
- command (*note Searching::). If this variable has not been
- given a value, the characters <ESC> and `C-J' will terminate
- an incremental search.
-
- `keymap'
- Sets Readline's idea of the current keymap for key binding
- commands. Acceptable `keymap' names are `emacs',
- `emacs-standard', `emacs-meta', `emacs-ctlx', `vi', `vi-move',
- `vi-command', and `vi-insert'. `vi' is equivalent to
- `vi-command'; `emacs' is equivalent to `emacs-standard'. The
- default value is `emacs'. The value of the `editing-mode'
- variable also affects the default keymap.
-
- `mark-directories'
- If set to `on', completed directory names have a slash
- appended. The default is `on'.
-
- `mark-modified-lines'
- This variable, when set to `on', causes Readline to display an
- asterisk (`*') at the start of history lines which have been
- modified. This variable is `off' by default.
-
- `mark-symlinked-directories'
- If set to `on', completed names which are symbolic links to
- directories have a slash appended (subject to the value of
- `mark-directories'). The default is `off'.
-
- `match-hidden-files'
- This variable, when set to `on', causes Readline to match
- files whose names begin with a `.' (hidden files) when
- performing filename completion, unless the leading `.' is
- supplied by the user in the filename to be completed. This
- variable is `on' by default.
-
- `output-meta'
- If set to `on', Readline will display characters with the
- eighth bit set directly rather than as a meta-prefixed escape
- sequence. The default is `off'.
-
- `page-completions'
- If set to `on', Readline uses an internal `more'-like pager
- to display a screenful of possible completions at a time.
- This variable is `on' by default.
-
- `print-completions-horizontally'
- If set to `on', Readline will display completions with matches
- sorted horizontally in alphabetical order, rather than down
- the screen. The default is `off'.
-
- `show-all-if-ambiguous'
- This alters the default behavior of the completion functions.
- If set to `on', words which have more than one possible
- completion cause the matches to be listed immediately instead
- of ringing the bell. The default value is `off'.
-
- `visible-stats'
- If set to `on', a character denoting a file's type is
- appended to the filename when listing possible completions.
- The default is `off'.
-
-Key Bindings
- The syntax for controlling key bindings in the init file is
- simple. First you need to find the name of the command that you
- want to change. The following sections contain tables of the
- command name, the default keybinding, if any, and a short
- description of what the command does.
-
- Once you know the name of the command, simply place on a line in
- the init file the name of the key you wish to bind the command to,
- a colon, and then the name of the command. The name of the key
- can be expressed in different ways, depending on what you find most
- comfortable.
-
- In addition to command names, readline allows keys to be bound to
- a string that is inserted when the key is pressed (a MACRO).
-
- KEYNAME: FUNCTION-NAME or MACRO
- KEYNAME is the name of a key spelled out in English. For
- example:
- Control-u: universal-argument
- Meta-Rubout: backward-kill-word
- Control-o: "> output"
-
- In the above example, `C-u' is bound to the function
- `universal-argument', `M-DEL' is bound to the function
- `backward-kill-word', and `C-o' is bound to run the macro
- expressed on the right hand side (that is, to insert the text
- `> output' into the line).
-
- A number of symbolic character names are recognized while
- processing this key binding syntax: DEL, ESC, ESCAPE, LFD,
- NEWLINE, RET, RETURN, RUBOUT, SPACE, SPC, and TAB.
-
- "KEYSEQ": FUNCTION-NAME or MACRO
- KEYSEQ differs from KEYNAME above in that strings denoting an
- entire key sequence can be specified, by placing the key
- sequence in double quotes. Some GNU Emacs style key escapes
- can be used, as in the following example, but the special
- character names are not recognized.
-
- "\C-u": universal-argument
- "\C-x\C-r": re-read-init-file
- "\e[11~": "Function Key 1"
-
- In the above example, `C-u' is again bound to the function
- `universal-argument' (just as it was in the first example),
- `C-x C-r' is bound to the function `re-read-init-file', and
- `<ESC> <[> <1> <1> <~>' is bound to insert the text `Function
- Key 1'.
-
- The following GNU Emacs style escape sequences are available when
- specifying key sequences:
-
- `\C-'
- control prefix
-
- `\M-'
- meta prefix
-
- `\e'
- an escape character
-
- `\\'
- backslash
-
- `\"'
- <">, a double quotation mark
-
- `\''
- <'>, a single quote or apostrophe
-
- In addition to the GNU Emacs style escape sequences, a second set
- of backslash escapes is available:
-
- `\a'
- alert (bell)
-
- `\b'
- backspace
-
- `\d'
- delete
-
- `\f'
- form feed
-
- `\n'
- newline
-
- `\r'
- carriage return
-
- `\t'
- horizontal tab
-
- `\v'
- vertical tab
-
- `\NNN'
- the eight-bit character whose value is the octal value NNN
- (one to three digits)
-
- `\xHH'
- the eight-bit character whose value is the hexadecimal value
- HH (one or two hex digits)
-
- When entering the text of a macro, single or double quotes must be
- used to indicate a macro definition. Unquoted text is assumed to
- be a function name. In the macro body, the backslash escapes
- described above are expanded. Backslash will quote any other
- character in the macro text, including `"' and `''. For example,
- the following binding will make `C-x \' insert a single `\' into
- the line:
- "\C-x\\": "\\"
-
-
-File: readline.info, Node: Conditional Init Constructs, Next: Sample Init File, Prev: Readline Init File Syntax, Up: Readline Init File
-
-Conditional Init Constructs
----------------------------
-
- Readline implements a facility similar in spirit to the conditional
-compilation features of the C preprocessor which allows key bindings
-and variable settings to be performed as the result of tests. There
-are four parser directives used.
-
-`$if'
- The `$if' construct allows bindings to be made based on the
- editing mode, the terminal being used, or the application using
- Readline. The text of the test extends to the end of the line; no
- characters are required to isolate it.
-
- `mode'
- The `mode=' form of the `$if' directive is used to test
- whether Readline is in `emacs' or `vi' mode. This may be
- used in conjunction with the `set keymap' command, for
- instance, to set bindings in the `emacs-standard' and
- `emacs-ctlx' keymaps only if Readline is starting out in
- `emacs' mode.
-
- `term'
- The `term=' form may be used to include terminal-specific key
- bindings, perhaps to bind the key sequences output by the
- terminal's function keys. The word on the right side of the
- `=' is tested against both the full name of the terminal and
- the portion of the terminal name before the first `-'. This
- allows `sun' to match both `sun' and `sun-cmd', for instance.
-
- `application'
- The APPLICATION construct is used to include
- application-specific settings. Each program using the
- Readline library sets the APPLICATION NAME, and you can test
- for a particular value. This could be used to bind key
- sequences to functions useful for a specific program. For
- instance, the following command adds a key sequence that
- quotes the current or previous word in Bash:
- $if Bash
- # Quote the current or previous word
- "\C-xq": "\eb\"\ef\""
- $endif
-
-`$endif'
- This command, as seen in the previous example, terminates an `$if'
- command.
-
-`$else'
- Commands in this branch of the `$if' directive are executed if the
- test fails.
-
-`$include'
- This directive takes a single filename as an argument and reads
- commands and bindings from that file. For example, the following
- directive reads from `/etc/inputrc':
- $include /etc/inputrc
-
-
-File: readline.info, Node: Sample Init File, Prev: Conditional Init Constructs, Up: Readline Init File
-
-Sample Init File
-----------------
-
- Here is an example of an INPUTRC file. This illustrates key
-binding, variable assignment, and conditional syntax.
-
-
- # This file controls the behaviour of line input editing for
- # programs that use the GNU Readline library. Existing
- # programs include FTP, Bash, and GDB.
- #
- # You can re-read the inputrc file with C-x C-r.
- # Lines beginning with '#' are comments.
- #
- # First, include any systemwide bindings and variable
- # assignments from /etc/Inputrc
- $include /etc/Inputrc
-
- #
- # Set various bindings for emacs mode.
-
- set editing-mode emacs
-
- $if mode=emacs
-
- Meta-Control-h: backward-kill-word Text after the function name is ignored
-
- #
- # Arrow keys in keypad mode
- #
- #"\M-OD": backward-char
- #"\M-OC": forward-char
- #"\M-OA": previous-history
- #"\M-OB": next-history
- #
- # Arrow keys in ANSI mode
- #
- "\M-[D": backward-char
- "\M-[C": forward-char
- "\M-[A": previous-history
- "\M-[B": next-history
- #
- # Arrow keys in 8 bit keypad mode
- #
- #"\M-\C-OD": backward-char
- #"\M-\C-OC": forward-char
- #"\M-\C-OA": previous-history
- #"\M-\C-OB": next-history
- #
- # Arrow keys in 8 bit ANSI mode
- #
- #"\M-\C-[D": backward-char
- #"\M-\C-[C": forward-char
- #"\M-\C-[A": previous-history
- #"\M-\C-[B": next-history
-
- C-q: quoted-insert
-
- $endif
-
- # An old-style binding. This happens to be the default.
- TAB: complete
-
- # Macros that are convenient for shell interaction
- $if Bash
- # edit the path
- "\C-xp": "PATH=${PATH}\e\C-e\C-a\ef\C-f"
- # prepare to type a quoted word --
- # insert open and close double quotes
- # and move to just after the open quote
- "\C-x\"": "\"\"\C-b"
- # insert a backslash (testing backslash escapes
- # in sequences and macros)
- "\C-x\\": "\\"
- # Quote the current or previous word
- "\C-xq": "\eb\"\ef\""
- # Add a binding to refresh the line, which is unbound
- "\C-xr": redraw-current-line
- # Edit variable on current line.
- "\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y="
- $endif
-
- # use a visible bell if one is available
- set bell-style visible
-
- # don't strip characters to 7 bits when reading
- set input-meta on
-
- # allow iso-latin1 characters to be inserted rather
- # than converted to prefix-meta sequences
- set convert-meta off
-
- # display characters with the eighth bit set directly
- # rather than as meta-prefixed characters
- set output-meta on
-
- # if there are more than 150 possible completions for
- # a word, ask the user if he wants to see all of them
- set completion-query-items 150
-
- # For FTP
- $if Ftp
- "\C-xg": "get \M-?"
- "\C-xt": "put \M-?"
- "\M-.": yank-last-arg
- $endif
-
-
-File: readline.info, Node: Bindable Readline Commands, Next: Readline vi Mode, Prev: Readline Init File, Up: Command Line Editing
-
-Bindable Readline Commands
-==========================
-
-* Menu:
-
-* Commands For Moving:: Moving about the line.
-* Commands For History:: Getting at previous lines.
-* Commands For Text:: Commands for changing text.
-* Commands For Killing:: Commands for killing and yanking.
-* Numeric Arguments:: Specifying numeric arguments, repeat counts.
-* Commands For Completion:: Getting Readline to do the typing for you.
-* Keyboard Macros:: Saving and re-executing typed characters
-* Miscellaneous Commands:: Other miscellaneous commands.
-
- This section describes Readline commands that may be bound to key
-sequences. Command names without an accompanying key sequence are
-unbound by default.
-
- In the following descriptions, "point" refers to the current cursor
-position, and "mark" refers to a cursor position saved by the
-`set-mark' command. The text between the point and mark is referred to
-as the "region".
-
-
-File: readline.info, Node: Commands For Moving, Next: Commands For History, Up: Bindable Readline Commands
-
-Commands For Moving
--------------------
-
-`beginning-of-line (C-a)'
- Move to the start of the current line.
-
-`end-of-line (C-e)'
- Move to the end of the line.
-
-`forward-char (C-f)'
- Move forward a character.
-
-`backward-char (C-b)'
- Move back a character.
-
-`forward-word (M-f)'
- Move forward to the end of the next word. Words are composed of
- letters and digits.
-
-`backward-word (M-b)'
- Move back to the start of the current or previous word. Words are
- composed of letters and digits.
-
-`clear-screen (C-l)'
- Clear the screen and redraw the current line, leaving the current
- line at the top of the screen.
-
-`redraw-current-line ()'
- Refresh the current line. By default, this is unbound.
-
-
-File: readline.info, Node: Commands For History, Next: Commands For Text, Prev: Commands For Moving, Up: Bindable Readline Commands
-
-Commands For Manipulating The History
--------------------------------------
-
-`accept-line (Newline or Return)'
- Accept the line regardless of where the cursor is. If this line is
- non-empty, it may be added to the history list for future recall
- with `add_history()'. If this line is a modified history line,
- the history line is restored to its original state.
-
-`previous-history (C-p)'
- Move `back' through the history list, fetching the previous
- command.
-
-`next-history (C-n)'
- Move `forward' through the history list, fetching the next command.
-
-`beginning-of-history (M-<)'
- Move to the first line in the history.
-
-`end-of-history (M->)'
- Move to the end of the input history, i.e., the line currently
- being entered.
-
-`reverse-search-history (C-r)'
- Search backward starting at the current line and moving `up'
- through the history as necessary. This is an incremental search.
-
-`forward-search-history (C-s)'
- Search forward starting at the current line and moving `down'
- through the the history as necessary. This is an incremental
- search.
-
-`non-incremental-reverse-search-history (M-p)'
- Search backward starting at the current line and moving `up'
- through the history as necessary using a non-incremental search
- for a string supplied by the user.
-
-`non-incremental-forward-search-history (M-n)'
- Search forward starting at the current line and moving `down'
- through the the history as necessary using a non-incremental search
- for a string supplied by the user.
-
-`history-search-forward ()'
- Search forward through the history for the string of characters
- between the start of the current line and the point. This is a
- non-incremental search. By default, this command is unbound.
-
-`history-search-backward ()'
- Search backward through the history for the string of characters
- between the start of the current line and the point. This is a
- non-incremental search. By default, this command is unbound.
-
-`yank-nth-arg (M-C-y)'
- Insert the first argument to the previous command (usually the
- second word on the previous line) at point. With an argument N,
- insert the Nth word from the previous command (the words in the
- previous command begin with word 0). A negative argument inserts
- the Nth word from the end of the previous command.
-
-`yank-last-arg (M-. or M-_)'
- Insert last argument to the previous command (the last word of the
- previous history entry). With an argument, behave exactly like
- `yank-nth-arg'. Successive calls to `yank-last-arg' move back
- through the history list, inserting the last argument of each line
- in turn.
-
-
-File: readline.info, Node: Commands For Text, Next: Commands For Killing, Prev: Commands For History, Up: Bindable Readline Commands
-
-Commands For Changing Text
---------------------------
-
-`delete-char (C-d)'
- Delete the character at point. If point is at the beginning of
- the line, there are no characters in the line, and the last
- character typed was not bound to `delete-char', then return EOF.
-
-`backward-delete-char (Rubout)'
- Delete the character behind the cursor. A numeric argument means
- to kill the characters instead of deleting them.
-
-`forward-backward-delete-char ()'
- Delete the character under the cursor, unless the cursor is at the
- end of the line, in which case the character behind the cursor is
- deleted. By default, this is not bound to a key.
-
-`quoted-insert (C-q or C-v)'
- Add the next character typed to the line verbatim. This is how to
- insert key sequences like `C-q', for example.
-
-`tab-insert (M-<TAB>)'
- Insert a tab character.
-
-`self-insert (a, b, A, 1, !, ...)'
- Insert yourself.
-
-`transpose-chars (C-t)'
- Drag the character before the cursor forward over the character at
- the cursor, moving the cursor forward as well. If the insertion
- point is at the end of the line, then this transposes the last two
- characters of the line. Negative arguments have no effect.
-
-`transpose-words (M-t)'
- Drag the word before point past the word after point, moving point
- past that word as well. If the insertion point is at the end of
- the line, this transposes the last two words on the line.
-
-`upcase-word (M-u)'
- Uppercase the current (or following) word. With a negative
- argument, uppercase the previous word, but do not move the cursor.
-
-`downcase-word (M-l)'
- Lowercase the current (or following) word. With a negative
- argument, lowercase the previous word, but do not move the cursor.
-
-`capitalize-word (M-c)'
- Capitalize the current (or following) word. With a negative
- argument, capitalize the previous word, but do not move the cursor.
-
-`overwrite-mode ()'
- Toggle overwrite mode. With an explicit positive numeric argument,
- switches to overwrite mode. With an explicit non-positive numeric
- argument, switches to insert mode. This command affects only
- `emacs' mode; `vi' mode does overwrite differently. Each call to
- `readline()' starts in insert mode.
-
- In overwrite mode, characters bound to `self-insert' replace the
- text at point rather than pushing the text to the right.
- Characters bound to `backward-delete-char' replace the character
- before point with a space.
-
- By default, this command is unbound.
-
-
-File: readline.info, Node: Commands For Killing, Next: Numeric Arguments, Prev: Commands For Text, Up: Bindable Readline Commands
-
-Killing And Yanking
--------------------
-
-`kill-line (C-k)'
- Kill the text from point to the end of the line.
-
-`backward-kill-line (C-x Rubout)'
- Kill backward to the beginning of the line.
-
-`unix-line-discard (C-u)'
- Kill backward from the cursor to the beginning of the current line.
-
-`kill-whole-line ()'
- Kill all characters on the current line, no matter where point is.
- By default, this is unbound.
-
-`kill-word (M-d)'
- Kill from point to the end of the current word, or if between
- words, to the end of the next word. Word boundaries are the same
- as `forward-word'.
-
-`backward-kill-word (M-<DEL>)'
- Kill the word behind point. Word boundaries are the same as
- `backward-word'.
-
-`unix-word-rubout (C-w)'
- Kill the word behind point, using white space as a word boundary.
- The killed text is saved on the kill-ring.
-
-`delete-horizontal-space ()'
- Delete all spaces and tabs around point. By default, this is
- unbound.
-
-`kill-region ()'
- Kill the text in the current region. By default, this command is
- unbound.
-
-`copy-region-as-kill ()'
- Copy the text in the region to the kill buffer, so it can be yanked
- right away. By default, this command is unbound.
-
-`copy-backward-word ()'
- Copy the word before point to the kill buffer. The word
- boundaries are the same as `backward-word'. By default, this
- command is unbound.
-
-`copy-forward-word ()'
- Copy the word following point to the kill buffer. The word
- boundaries are the same as `forward-word'. By default, this
- command is unbound.
-
-`yank (C-y)'
- Yank the top of the kill ring into the buffer at point.
-
-`yank-pop (M-y)'
- Rotate the kill-ring, and yank the new top. You can only do this
- if the prior command is `yank' or `yank-pop'.
-
-
-File: readline.info, Node: Numeric Arguments, Next: Commands For Completion, Prev: Commands For Killing, Up: Bindable Readline Commands
-
-Specifying Numeric Arguments
-----------------------------
-
-`digit-argument (M-0, M-1, ... M--)'
- Add this digit to the argument already accumulating, or start a new
- argument. `M--' starts a negative argument.
-
-`universal-argument ()'
- This is another way to specify an argument. If this command is
- followed by one or more digits, optionally with a leading minus
- sign, those digits define the argument. If the command is
- followed by digits, executing `universal-argument' again ends the
- numeric argument, but is otherwise ignored. As a special case, if
- this command is immediately followed by a character that is
- neither a digit or minus sign, the argument count for the next
- command is multiplied by four. The argument count is initially
- one, so executing this function the first time makes the argument
- count four, a second time makes the argument count sixteen, and so
- on. By default, this is not bound to a key.
-
-
-File: readline.info, Node: Commands For Completion, Next: Keyboard Macros, Prev: Numeric Arguments, Up: Bindable Readline Commands
-
-Letting Readline Type For You
------------------------------
-
-`complete (<TAB>)'
- Attempt to perform completion on the text before point. The
- actual completion performed is application-specific. The default
- is filename completion.
-
-`possible-completions (M-?)'
- List the possible completions of the text before point.
-
-`insert-completions (M-*)'
- Insert all completions of the text before point that would have
- been generated by `possible-completions'.
-
-`menu-complete ()'
- Similar to `complete', but replaces the word to be completed with
- a single match from the list of possible completions. Repeated
- execution of `menu-complete' steps through the list of possible
- completions, inserting each match in turn. At the end of the list
- of completions, the bell is rung (subject to the setting of
- `bell-style') and the original text is restored. An argument of N
- moves N positions forward in the list of matches; a negative
- argument may be used to move backward through the list. This
- command is intended to be bound to <TAB>, but is unbound by
- default.
-
-`delete-char-or-list ()'
- Deletes the character under the cursor if not at the beginning or
- end of the line (like `delete-char'). If at the end of the line,
- behaves identically to `possible-completions'. This command is
- unbound by default.
-
-
-File: readline.info, Node: Keyboard Macros, Next: Miscellaneous Commands, Prev: Commands For Completion, Up: Bindable Readline Commands
-
-Keyboard Macros
----------------
-
-`start-kbd-macro (C-x ()'
- Begin saving the characters typed into the current keyboard macro.
-
-`end-kbd-macro (C-x ))'
- Stop saving the characters typed into the current keyboard macro
- and save the definition.
-
-`call-last-kbd-macro (C-x e)'
- Re-execute the last keyboard macro defined, by making the
- characters in the macro appear as if typed at the keyboard.
-
-
-File: readline.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up: Bindable Readline Commands
-
-Some Miscellaneous Commands
----------------------------
-
-`re-read-init-file (C-x C-r)'
- Read in the contents of the INPUTRC file, and incorporate any
- bindings or variable assignments found there.
-
-`abort (C-g)'
- Abort the current editing command and ring the terminal's bell
- (subject to the setting of `bell-style').
-
-`do-uppercase-version (M-a, M-b, M-X, ...)'
- If the metafied character X is lowercase, run the command that is
- bound to the corresponding uppercase character.
-
-`prefix-meta (<ESC>)'
- Metafy the next character typed. This is for keyboards without a
- meta key. Typing `<ESC> f' is equivalent to typing `M-f'.
-
-`undo (C-_ or C-x C-u)'
- Incremental undo, separately remembered for each line.
-
-`revert-line (M-r)'
- Undo all changes made to this line. This is like executing the
- `undo' command enough times to get back to the beginning.
-
-`tilde-expand (M-~)'
- Perform tilde expansion on the current word.
-
-`set-mark (C-@)'
- Set the mark to the point. If a numeric argument is supplied, the
- mark is set to that position.
-
-`exchange-point-and-mark (C-x C-x)'
- Swap the point with the mark. The current cursor position is set
- to the saved position, and the old cursor position is saved as the
- mark.
-
-`character-search (C-])'
- A character is read and point is moved to the next occurrence of
- that character. A negative count searches for previous
- occurrences.
-
-`character-search-backward (M-C-])'
- A character is read and point is moved to the previous occurrence
- of that character. A negative count searches for subsequent
- occurrences.
-
-`insert-comment (M-#)'
- Without a numeric argument, the value of the `comment-begin'
- variable is inserted at the beginning of the current line. If a
- numeric argument is supplied, this command acts as a toggle: if
- the characters at the beginning of the line do not match the value
- of `comment-begin', the value is inserted, otherwise the
- characters in `comment-begin' are deleted from the beginning of
- the line. In either case, the line is accepted as if a newline
- had been typed.
-
-`dump-functions ()'
- Print all of the functions and their key bindings to the Readline
- output stream. If a numeric argument is supplied, the output is
- formatted in such a way that it can be made part of an INPUTRC
- file. This command is unbound by default.
-
-`dump-variables ()'
- Print all of the settable variables and their values to the
- Readline output stream. If a numeric argument is supplied, the
- output is formatted in such a way that it can be made part of an
- INPUTRC file. This command is unbound by default.
-
-`dump-macros ()'
- Print all of the Readline key sequences bound to macros and the
- strings they output. If a numeric argument is supplied, the
- output is formatted in such a way that it can be made part of an
- INPUTRC file. This command is unbound by default.
-
-`emacs-editing-mode (C-e)'
- When in `vi' command mode, this causes a switch to `emacs' editing
- mode.
-
-`vi-editing-mode (M-C-j)'
- When in `emacs' editing mode, this causes a switch to `vi' editing
- mode.
-
-
-File: readline.info, Node: Readline vi Mode, Prev: Bindable Readline Commands, Up: Command Line Editing
-
-Readline vi Mode
-================
-
- While the Readline library does not have a full set of `vi' editing
-functions, it does contain enough to allow simple editing of the line.
-The Readline `vi' mode behaves as specified in the POSIX 1003.2
-standard.
-
- In order to switch interactively between `emacs' and `vi' editing
-modes, use the command `M-C-j' (bound to emacs-editing-mode when in
-`vi' mode and to vi-editing-mode in `emacs' mode). The Readline
-default is `emacs' mode.
-
- When you enter a line in `vi' mode, you are already placed in
-`insertion' mode, as if you had typed an `i'. Pressing <ESC> switches
-you into `command' mode, where you can edit the text of the line with
-the standard `vi' movement keys, move to previous history lines with
-`k' and subsequent lines with `j', and so forth.
-
- This document describes the GNU Readline Library, a utility for
-aiding in the consitency of user interface across discrete programs
-that need to provide a command line interface.
-
- Copyright (C) 1988-2002 Free Software Foundation, Inc.
-
- Permission is granted to make and distribute verbatim copies of this
-manual provided the copyright notice and this permission notice pare
-preserved on all copies.
-
- Permission is granted to copy and distribute modified versions of
-this manual under the conditions for verbatim copying, provided that
-the entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
- Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be stated in a
-translation approved by the Foundation.
-
-
-File: readline.info, Node: Programming with GNU Readline, Next: Concept Index, Prev: Command Line Editing, Up: Top
-
-Programming with GNU Readline
-*****************************
-
- This chapter describes the interface between the GNU Readline
-Library and other programs. If you are a programmer, and you wish to
-include the features found in GNU Readline such as completion, line
-editing, and interactive history manipulation in your own programs,
-this section is for you.
-
-* Menu:
-
-* Basic Behavior:: Using the default behavior of Readline.
-* Custom Functions:: Adding your own functions to Readline.
-* Readline Variables:: Variables accessible to custom
- functions.
-* Readline Convenience Functions:: Functions which Readline supplies to
- aid in writing your own custom
- functions.
-* Readline Signal Handling:: How Readline behaves when it receives signals.
-* Custom Completers:: Supplanting or supplementing Readline's
- completion functions.
-
-
-File: readline.info, Node: Basic Behavior, Next: Custom Functions, Up: Programming with GNU Readline
-
-Basic Behavior
-==============
-
- Many programs provide a command line interface, such as `mail',
-`ftp', and `sh'. For such programs, the default behaviour of Readline
-is sufficient. This section describes how to use Readline in the
-simplest way possible, perhaps to replace calls in your code to
-`gets()' or `fgets()'.
-
- The function `readline()' prints a prompt PROMPT and then reads and
-returns a single line of text from the user. If PROMPT is `NULL' or
-the empty string, no prompt is displayed. The line `readline' returns
-is allocated with `malloc()'; the caller should `free()' the line when
-it has finished with it. The declaration for `readline' in ANSI C is
-
- `char *readline (const char *PROMPT);'
-
-So, one might say
- `char *line = readline ("Enter a line: ");'
-
-in order to read a line of text from the user. The line returned has
-the final newline removed, so only the text remains.
-
- If `readline' encounters an `EOF' while reading the line, and the
-line is empty at that point, then `(char *)NULL' is returned.
-Otherwise, the line is ended just as if a newline had been typed.
-
- If you want the user to be able to get at the line later, (with
-<C-p> for example), you must call `add_history()' to save the line away
-in a "history" list of such lines.
-
- `add_history (line)';
-
-For full details on the GNU History Library, see the associated manual.
-
- It is preferable to avoid saving empty lines on the history list,
-since users rarely have a burning need to reuse a blank line. Here is
-a function which usefully replaces the standard `gets()' library
-function, and has the advantage of no static buffer to overflow:
-
- /* A static variable for holding the line. */
- static char *line_read = (char *)NULL;
-
- /* Read a string, and return a pointer to it.
- Returns NULL on EOF. */
- char *
- rl_gets ()
- {
- /* If the buffer has already been allocated,
- return the memory to the free pool. */
- if (line_read)
- {
- free (line_read);
- line_read = (char *)NULL;
- }
-
- /* Get a line from the user. */
- line_read = readline ("");
-
- /* If the line has any text in it,
- save it on the history. */
- if (line_read && *line_read)
- add_history (line_read);
-
- return (line_read);
- }
-
- This function gives the user the default behaviour of <TAB>
-completion: completion on file names. If you do not want Readline to
-complete on filenames, you can change the binding of the <TAB> key with
-`rl_bind_key()'.
-
- `int rl_bind_key (int KEY, rl_command_func_t *FUNCTION);'
-
- `rl_bind_key()' takes two arguments: KEY is the character that you
-want to bind, and FUNCTION is the address of the function to call when
-KEY is pressed. Binding <TAB> to `rl_insert()' makes <TAB> insert
-itself. `rl_bind_key()' returns non-zero if KEY is not a valid ASCII
-character code (between 0 and 255).
-
- Thus, to disable the default <TAB> behavior, the following suffices:
- `rl_bind_key ('\t', rl_insert);'
-
- This code should be executed once at the start of your program; you
-might write a function called `initialize_readline()' which performs
-this and other desired initializations, such as installing custom
-completers (*note Custom Completers::).
-
-
-File: readline.info, Node: Custom Functions, Next: Readline Variables, Prev: Basic Behavior, Up: Programming with GNU Readline
-
-Custom Functions
-================
-
- Readline provides many functions for manipulating the text of the
-line, but it isn't possible to anticipate the needs of all programs.
-This section describes the various functions and variables defined
-within the Readline library which allow a user program to add
-customized functionality to Readline.
-
- Before declaring any functions that customize Readline's behavior, or
-using any functionality Readline provides in other code, an application
-writer should include the file `<readline/readline.h>' in any file that
-uses Readline's features. Since some of the definitions in
-`readline.h' use the `stdio' library, the file `<stdio.h>' should be
-included before `readline.h'.
-
- `readline.h' defines a C preprocessor variable that should be
-treated as an integer, `RL_READLINE_VERSION', which may be used to
-conditionally compile application code depending on the installed
-Readline version. The value is a hexadecimal encoding of the major and
-minor version numbers of the library, of the form 0xMMMM. MM is the
-two-digit major version number; MM is the two-digit minor version
-number. For Readline 4.2, for example, the value of
-`RL_READLINE_VERSION' would be `0x0402'.
-
-* Menu:
-
-* Readline Typedefs:: C declarations to make code readable.
-* Function Writing:: Variables and calling conventions.
-
-
-File: readline.info, Node: Readline Typedefs, Next: Function Writing, Up: Custom Functions
-
-Readline Typedefs
------------------
-
- For readabilty, we declare a number of new object types, all pointers
-to functions.
-
- The reason for declaring these new types is to make it easier to
-write code describing pointers to C functions with appropriately
-prototyped arguments and return values.
-
- For instance, say we want to declare a variable FUNC as a pointer to
-a function which takes two `int' arguments and returns an `int' (this
-is the type of all of the Readline bindable functions). Instead of the
-classic C declaration
-
- `int (*func)();'
-
-or the ANSI-C style declaration
-
- `int (*func)(int, int);'
-
-we may write
-
- `rl_command_func_t *func;'
-
- The full list of function pointer types available is
-
-`typedef int rl_command_func_t (int, int);'
-
-`typedef char *rl_compentry_func_t (const char *, int);'
-
-`typedef char **rl_completion_func_t (const char *, int, int);'
-
-`typedef char *rl_quote_func_t (char *, int, char *);'
-
-`typedef char *rl_dequote_func_t (char *, int);'
-
-`typedef int rl_compignore_func_t (char **);'
-
-`typedef void rl_compdisp_func_t (char **, int, int);'
-
-`typedef int rl_hook_func_t (void);'
-
-`typedef int rl_getc_func_t (FILE *);'
-
-`typedef int rl_linebuf_func_t (char *, int);'
-
-`typedef int rl_intfunc_t (int);'
-
-`#define rl_ivoidfunc_t rl_hook_func_t'
-
-`typedef int rl_icpfunc_t (char *);'
-
-`typedef int rl_icppfunc_t (char **);'
-
-`typedef void rl_voidfunc_t (void);'
-
-`typedef void rl_vintfunc_t (int);'
-
-`typedef void rl_vcpfunc_t (char *);'
-
-`typedef void rl_vcppfunc_t (char **);'
-
-File: readline.info, Node: Function Writing, Prev: Readline Typedefs, Up: Custom Functions
-
-Writing a New Function
-----------------------
-
- In order to write new functions for Readline, you need to know the
-calling conventions for keyboard-invoked functions, and the names of the
-variables that describe the current state of the line read so far.
-
- The calling sequence for a command `foo' looks like
-
- `int foo (int count, int key)'
-
-where COUNT is the numeric argument (or 1 if defaulted) and KEY is the
-key that invoked this function.
-
- It is completely up to the function as to what should be done with
-the numeric argument. Some functions use it as a repeat count, some as
-a flag, and others to choose alternate behavior (refreshing the current
-line as opposed to refreshing the screen, for example). Some choose to
-ignore it. In general, if a function uses the numeric argument as a
-repeat count, it should be able to do something useful with both
-negative and positive arguments. At the very least, it should be aware
-that it can be passed a negative argument.
-
- A command function should return 0 if its action completes
-successfully, and a non-zero value if some error occurs.
-
-
-File: readline.info, Node: Readline Variables, Next: Readline Convenience Functions, Prev: Custom Functions, Up: Programming with GNU Readline
-
-Readline Variables
-==================
-
- These variables are available to function writers.
-
- - Variable: char * rl_line_buffer
- This is the line gathered so far. You are welcome to modify the
- contents of the line, but see *Note Allowing Undoing::. The
- function `rl_extend_line_buffer' is available to increase the
- memory allocated to `rl_line_buffer'.
-
- - Variable: int rl_point
- The offset of the current cursor position in `rl_line_buffer' (the
- _point_).
-
- - Variable: int rl_end
- The number of characters present in `rl_line_buffer'. When
- `rl_point' is at the end of the line, `rl_point' and `rl_end' are
- equal.
-
- - Variable: int rl_mark
- The MARK (saved position) in the current line. If set, the mark
- and point define a _region_.
-
- - Variable: int rl_done
- Setting this to a non-zero value causes Readline to return the
- current line immediately.
-
- - Variable: int rl_num_chars_to_read
- Setting this to a positive value before calling `readline()' causes
- Readline to return after accepting that many characters, rather
- than reading up to a character bound to `accept-line'.
-
- - Variable: int rl_pending_input
- Setting this to a value makes it the next keystroke read. This is
- a way to stuff a single character into the input stream.
-
- - Variable: int rl_dispatching
- Set to a non-zero value if a function is being called from a key
- binding; zero otherwise. Application functions can test this to
- discover whether they were called directly or by Readline's
- dispatching mechanism.
-
- - Variable: int rl_erase_empty_line
- Setting this to a non-zero value causes Readline to completely
- erase the current line, including any prompt, any time a newline
- is typed as the only character on an otherwise-empty line. The
- cursor is moved to the beginning of the newly-blank line.
-
- - Variable: char * rl_prompt
- The prompt Readline uses. This is set from the argument to
- `readline()', and should not be assigned to directly. The
- `rl_set_prompt()' function (*note Redisplay::) may be used to
- modify the prompt string after calling `readline()'.
-
- - Variable: int rl_already_prompted
- If an application wishes to display the prompt itself, rather than
- have Readline do it the first time `readline()' is called, it
- should set this variable to a non-zero value after displaying the
- prompt. The prompt must also be passed as the argument to
- `readline()' so the redisplay functions can update the display
- properly. The calling application is responsible for managing the
- value; Readline never sets it.
-
- - Variable: const char * rl_library_version
- The version number of this revision of the library.
-
- - Variable: int rl_readline_version
- An integer encoding the current version of the library. The
- encoding is of the form 0xMMMM, where MM is the two-digit major
- version number, and MM is the two-digit minor version number. For
- example, for Readline-4.2, `rl_readline_version' would have the
- value 0x0402.
-
- - Variable: int rl_gnu_readline_p
- Always set to 1, denoting that this is GNU readline rather than
- some emulation.
-
- - Variable: const char * rl_terminal_name
- The terminal type, used for initialization. If not set by the
- application, Readline sets this to the value of the `TERM'
- environment variable the first time it is called.
-
- - Variable: const char * rl_readline_name
- This variable is set to a unique name by each application using
- Readline. The value allows conditional parsing of the inputrc file
- (*note Conditional Init Constructs::).
-
- - Variable: FILE * rl_instream
- The stdio stream from which Readline reads input. If `NULL',
- Readline defaults to STDIN.
-
- - Variable: FILE * rl_outstream
- The stdio stream to which Readline performs output. If `NULL',
- Readline defaults to STDOUT.
-
- - Variable: rl_command_func_t * rl_last_func
- The address of the last command function Readline executed. May
- be used to test whether or not a function is being executed twice
- in succession, for example.
-
- - Variable: rl_hook_func_t * rl_startup_hook
- If non-zero, this is the address of a function to call just before
- `readline' prints the first prompt.
-
- - Variable: rl_hook_func_t * rl_pre_input_hook
- If non-zero, this is the address of a function to call after the
- first prompt has been printed and just before `readline' starts
- reading input characters.
-
- - Variable: rl_hook_func_t * rl_event_hook
- If non-zero, this is the address of a function to call periodically
- when Readline is waiting for terminal input. By default, this
- will be called at most ten times a second if there is no keyboard
- input.
-
- - Variable: rl_getc_func_t * rl_getc_function
- If non-zero, Readline will call indirectly through this pointer to
- get a character from the input stream. By default, it is set to
- `rl_getc', the default Readline character input function (*note
- Character Input::).
-
- - Variable: rl_voidfunc_t * rl_redisplay_function
- If non-zero, Readline will call indirectly through this pointer to
- update the display with the current contents of the editing buffer.
- By default, it is set to `rl_redisplay', the default Readline
- redisplay function (*note Redisplay::).
-
- - Variable: rl_vintfunc_t * rl_prep_term_function
- If non-zero, Readline will call indirectly through this pointer to
- initialize the terminal. The function takes a single argument, an
- `int' flag that says whether or not to use eight-bit characters.
- By default, this is set to `rl_prep_terminal' (*note Terminal
- Management::).
-
- - Variable: rl_voidfunc_t * rl_deprep_term_function
- If non-zero, Readline will call indirectly through this pointer to
- reset the terminal. This function should undo the effects of
- `rl_prep_term_function'. By default, this is set to
- `rl_deprep_terminal' (*note Terminal Management::).
-
- - Variable: Keymap rl_executing_keymap
- This variable is set to the keymap (*note Keymaps::) in which the
- currently executing readline function was found.
-
- - Variable: Keymap rl_binding_keymap
- This variable is set to the keymap (*note Keymaps::) in which the
- last key binding occurred.
-
- - Variable: char * rl_executing_macro
- This variable is set to the text of any currently-executing macro.
-
- - Variable: int rl_readline_state
- A variable with bit values that encapsulate the current Readline
- state. A bit is set with the `RL_SETSTATE' macro, and unset with
- the `RL_UNSETSTATE' macro. Use the `RL_ISSTATE' macro to test
- whether a particular state bit is set. Current state bits include:
-
- `RL_STATE_NONE'
- Readline has not yet been called, nor has it begun to
- intialize.
-
- `RL_STATE_INITIALIZING'
- Readline is initializing its internal data structures.
-
- `RL_STATE_INITIALIZED'
- Readline has completed its initialization.
-
- `RL_STATE_TERMPREPPED'
- Readline has modified the terminal modes to do its own input
- and redisplay.
-
- `RL_STATE_READCMD'
- Readline is reading a command from the keyboard.
-
- `RL_STATE_METANEXT'
- Readline is reading more input after reading the meta-prefix
- character.
-
- `RL_STATE_DISPATCHING'
- Readline is dispatching to a command.
-
- `RL_STATE_MOREINPUT'
- Readline is reading more input while executing an editing
- command.
-
- `RL_STATE_ISEARCH'
- Readline is performing an incremental history search.
-
- `RL_STATE_NSEARCH'
- Readline is performing a non-incremental history search.
-
- `RL_STATE_SEARCH'
- Readline is searching backward or forward through the history
- for a string.
-
- `RL_STATE_NUMERICARG'
- Readline is reading a numeric argument.
-
- `RL_STATE_MACROINPUT'
- Readline is currently getting its input from a
- previously-defined keyboard macro.
-
- `RL_STATE_MACRODEF'
- Readline is currently reading characters defining a keyboard
- macro.
-
- `RL_STATE_OVERWRITE'
- Readline is in overwrite mode.
-
- `RL_STATE_COMPLETING'
- Readline is performing word completion.
-
- `RL_STATE_SIGHANDLER'
- Readline is currently executing the readline signal handler.
-
- `RL_STATE_UNDOING'
- Readline is performing an undo.
-
- `RL_STATE_DONE'
- Readline has read a key sequence bound to `accept-line' and
- is about to return the line to the caller.
-
-
- - Variable: int rl_explicit_arg
- Set to a non-zero value if an explicit numeric argument was
- specified by the user. Only valid in a bindable command function.
-
- - Variable: int rl_numeric_arg
- Set to the value of any numeric argument explicitly specified by
- the user before executing the current Readline function. Only
- valid in a bindable command function.
-
- - Variable: int rl_editing_mode
- Set to a value denoting Readline's current editing mode. A value
- of 1 means Readline is currently in emacs mode; 0 means that vi
- mode is active.
-
-
-File: readline.info, Node: Readline Convenience Functions, Next: Readline Signal Handling, Prev: Readline Variables, Up: Programming with GNU Readline
-
-Readline Convenience Functions
-==============================
-
-* Menu:
-
-* Function Naming:: How to give a function you write a name.
-* Keymaps:: Making keymaps.
-* Binding Keys:: Changing Keymaps.
-* Associating Function Names and Bindings:: Translate function names to
- key sequences.
-* Allowing Undoing:: How to make your functions undoable.
-* Redisplay:: Functions to control line display.
-* Modifying Text:: Functions to modify `rl_line_buffer'.
-* Character Input:: Functions to read keyboard input.
-* Terminal Management:: Functions to manage terminal settings.
-* Utility Functions:: Generally useful functions and hooks.
-* Miscellaneous Functions:: Functions that don't fall into any category.
-* Alternate Interface:: Using Readline in a `callback' fashion.
-* A Readline Example:: An example Readline function.
-
-
-File: readline.info, Node: Function Naming, Next: Keymaps, Up: Readline Convenience Functions
-
-Naming a Function
------------------
-
- The user can dynamically change the bindings of keys while using
-Readline. This is done by representing the function with a descriptive
-name. The user is able to type the descriptive name when referring to
-the function. Thus, in an init file, one might find
-
- Meta-Rubout: backward-kill-word
-
- This binds the keystroke <Meta-Rubout> to the function
-_descriptively_ named `backward-kill-word'. You, as the programmer,
-should bind the functions you write to descriptive names as well.
-Readline provides a function for doing that:
-
- - Function: int rl_add_defun (const char *name, rl_command_func_t
- *function, int key)
- Add NAME to the list of named functions. Make FUNCTION be the
- function that gets called. If KEY is not -1, then bind it to
- FUNCTION using `rl_bind_key()'.
-
- Using this function alone is sufficient for most applications. It is
-the recommended way to add a few functions to the default functions that
-Readline has built in. If you need to do something other than adding a
-function to Readline, you may need to use the underlying functions
-described below.
-
-
-File: readline.info, Node: Keymaps, Next: Binding Keys, Prev: Function Naming, Up: Readline Convenience Functions
-
-Selecting a Keymap
-------------------
-
- Key bindings take place on a "keymap". The keymap is the
-association between the keys that the user types and the functions that
-get run. You can make your own keymaps, copy existing keymaps, and tell
-Readline which keymap to use.
-
- - Function: Keymap rl_make_bare_keymap (void)
- Returns a new, empty keymap. The space for the keymap is
- allocated with `malloc()'; the caller should free it by calling
- `rl_discard_keymap()' when done.
-
- - Function: Keymap rl_copy_keymap (Keymap map)
- Return a new keymap which is a copy of MAP.
-
- - Function: Keymap rl_make_keymap (void)
- Return a new keymap with the printing characters bound to
- rl_insert, the lowercase Meta characters bound to run their
- equivalents, and the Meta digits bound to produce numeric
- arguments.
-
- - Function: void rl_discard_keymap (Keymap keymap)
- Free the storage associated with KEYMAP.
-
- Readline has several internal keymaps. These functions allow you to
-change which keymap is active.
-
- - Function: Keymap rl_get_keymap (void)
- Returns the currently active keymap.
-
- - Function: void rl_set_keymap (Keymap keymap)
- Makes KEYMAP the currently active keymap.
-
- - Function: Keymap rl_get_keymap_by_name (const char *name)
- Return the keymap matching NAME. NAME is one which would be
- supplied in a `set keymap' inputrc line (*note Readline Init
- File::).
-
- - Function: char * rl_get_keymap_name (Keymap keymap)
- Return the name matching KEYMAP. NAME is one which would be
- supplied in a `set keymap' inputrc line (*note Readline Init
- File::).
-
-
-File: readline.info, Node: Binding Keys, Next: Associating Function Names and Bindings, Prev: Keymaps, Up: Readline Convenience Functions
-
-Binding Keys
-------------
-
- Key sequences are associate with functions through the keymap.
-Readline has several internal keymaps: `emacs_standard_keymap',
-`emacs_meta_keymap', `emacs_ctlx_keymap', `vi_movement_keymap', and
-`vi_insertion_keymap'. `emacs_standard_keymap' is the default, and the
-examples in this manual assume that.
-
- Since `readline()' installs a set of default key bindings the first
-time it is called, there is always the danger that a custom binding
-installed before the first call to `readline()' will be overridden. An
-alternate mechanism is to install custom key bindings in an
-initialization function assigned to the `rl_startup_hook' variable
-(*note Readline Variables::).
-
- These functions manage key bindings.
-
- - Function: int rl_bind_key (int key, rl_command_func_t *function)
- Binds KEY to FUNCTION in the currently active keymap. Returns
- non-zero in the case of an invalid KEY.
-
- - Function: int rl_bind_key_in_map (int key, rl_command_func_t
- *function, Keymap map)
- Bind KEY to FUNCTION in MAP. Returns non-zero in the case of an
- invalid KEY.
-
- - Function: int rl_unbind_key (int key)
- Bind KEY to the null function in the currently active keymap.
- Returns non-zero in case of error.
-
- - Function: int rl_unbind_key_in_map (int key, Keymap map)
- Bind KEY to the null function in MAP. Returns non-zero in case of
- error.
-
- - Function: int rl_unbind_function_in_map (rl_command_func_t
- *function, Keymap map)
- Unbind all keys that execute FUNCTION in MAP.
-
- - Function: int rl_unbind_command_in_map (const char *command, Keymap
- map)
- Unbind all keys that are bound to COMMAND in MAP.
-
- - Function: int rl_set_key (const char *keyseq, rl_command_func_t
- *function, Keymap map)
- Bind the key sequence represented by the string KEYSEQ to the
- function FUNCTION. This makes new keymaps as necessary. The
- initial keymap in which to do bindings is MAP.
-
- - Function: int rl_generic_bind (int type, const char *keyseq, char
- *data, Keymap map)
- Bind the key sequence represented by the string KEYSEQ to the
- arbitrary pointer DATA. TYPE says what kind of data is pointed to
- by DATA; this can be a function (`ISFUNC'), a macro (`ISMACR'), or
- a keymap (`ISKMAP'). This makes new keymaps as necessary. The
- initial keymap in which to do bindings is MAP.
-
- - Function: int rl_parse_and_bind (char *line)
- Parse LINE as if it had been read from the `inputrc' file and
- perform any key bindings and variable assignments found (*note
- Readline Init File::).
-
- - Function: int rl_read_init_file (const char *filename)
- Read keybindings and variable assignments from FILENAME (*note
- Readline Init File::).
-
-
-File: readline.info, Node: Associating Function Names and Bindings, Next: Allowing Undoing, Prev: Binding Keys, Up: Readline Convenience Functions
-
-Associating Function Names and Bindings
----------------------------------------
-
- These functions allow you to find out what keys invoke named
-functions and the functions invoked by a particular key sequence. You
-may also associate a new function name with an arbitrary function.
-
- - Function: rl_command_func_t * rl_named_function (const char *name)
- Return the function with name NAME.
-
- - Function: rl_command_func_t * rl_function_of_keyseq (const char
- *keyseq, Keymap map, int *type)
- Return the function invoked by KEYSEQ in keymap MAP. If MAP is
- `NULL', the current keymap is used. If TYPE is not `NULL', the
- type of the object is returned in the `int' variable it points to
- (one of `ISFUNC', `ISKMAP', or `ISMACR').
-
- - Function: char ** rl_invoking_keyseqs (rl_command_func_t *function)
- Return an array of strings representing the key sequences used to
- invoke FUNCTION in the current keymap.
-
- - Function: char ** rl_invoking_keyseqs_in_map (rl_command_func_t
- *function, Keymap map)
- Return an array of strings representing the key sequences used to
- invoke FUNCTION in the keymap MAP.
-
- - Function: void rl_function_dumper (int readable)
- Print the readline function names and the key sequences currently
- bound to them to `rl_outstream'. If READABLE is non-zero, the
- list is formatted in such a way that it can be made part of an
- `inputrc' file and re-read.
-
- - Function: void rl_list_funmap_names (void)
- Print the names of all bindable Readline functions to
- `rl_outstream'.
-
- - Function: const char ** rl_funmap_names (void)
- Return a NULL terminated array of known function names. The array
- is sorted. The array itself is allocated, but not the strings
- inside. You should `free()' the array when you are done, but not
- the pointers.
-
- - Function: int rl_add_funmap_entry (const char *name,
- rl_command_func_t *function)
- Add NAME to the list of bindable Readline command names, and make
- FUNCTION the function to be called when NAME is invoked.
-
-
-File: readline.info, Node: Allowing Undoing, Next: Redisplay, Prev: Associating Function Names and Bindings, Up: Readline Convenience Functions
-
-Allowing Undoing
-----------------
-
- Supporting the undo command is a painless thing, and makes your
-functions much more useful. It is certainly easy to try something if
-you know you can undo it.
-
- If your function simply inserts text once, or deletes text once, and
-uses `rl_insert_text()' or `rl_delete_text()' to do it, then undoing is
-already done for you automatically.
-
- If you do multiple insertions or multiple deletions, or any
-combination of these operations, you should group them together into
-one operation. This is done with `rl_begin_undo_group()' and
-`rl_end_undo_group()'.
-
- The types of events that can be undone are:
-
- enum undo_code { UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END };
-
- Notice that `UNDO_DELETE' means to insert some text, and
-`UNDO_INSERT' means to delete some text. That is, the undo code tells
-what to undo, not how to undo it. `UNDO_BEGIN' and `UNDO_END' are tags
-added by `rl_begin_undo_group()' and `rl_end_undo_group()'.
-
- - Function: int rl_begin_undo_group (void)
- Begins saving undo information in a group construct. The undo
- information usually comes from calls to `rl_insert_text()' and
- `rl_delete_text()', but could be the result of calls to
- `rl_add_undo()'.
-
- - Function: int rl_end_undo_group (void)
- Closes the current undo group started with `rl_begin_undo_group
- ()'. There should be one call to `rl_end_undo_group()' for each
- call to `rl_begin_undo_group()'.
-
- - Function: void rl_add_undo (enum undo_code what, int start, int end,
- char *text)
- Remember how to undo an event (according to WHAT). The affected
- text runs from START to END, and encompasses TEXT.
-
- - Function: void rl_free_undo_list (void)
- Free the existing undo list.
-
- - Function: int rl_do_undo (void)
- Undo the first thing on the undo list. Returns `0' if there was
- nothing to undo, non-zero if something was undone.
-
- Finally, if you neither insert nor delete text, but directly modify
-the existing text (e.g., change its case), call `rl_modifying()' once,
-just before you modify the text. You must supply the indices of the
-text range that you are going to modify.
-
- - Function: int rl_modifying (int start, int end)
- Tell Readline to save the text between START and END as a single
- undo unit. It is assumed that you will subsequently modify that
- text.
-
-
-File: readline.info, Node: Redisplay, Next: Modifying Text, Prev: Allowing Undoing, Up: Readline Convenience Functions
-
-Redisplay
----------
-
- - Function: void rl_redisplay (void)
- Change what's displayed on the screen to reflect the current
- contents of `rl_line_buffer'.
-
- - Function: int rl_forced_update_display (void)
- Force the line to be updated and redisplayed, whether or not
- Readline thinks the screen display is correct.
-
- - Function: int rl_on_new_line (void)
- Tell the update functions that we have moved onto a new (empty)
- line, usually after ouputting a newline.
-
- - Function: int rl_on_new_line_with_prompt (void)
- Tell the update functions that we have moved onto a new line, with
- RL_PROMPT already displayed. This could be used by applications
- that want to output the prompt string themselves, but still need
- Readline to know the prompt string length for redisplay. It
- should be used after setting RL_ALREADY_PROMPTED.
-
- - Function: int rl_reset_line_state (void)
- Reset the display state to a clean state and redisplay the current
- line starting on a new line.
-
- - Function: int rl_crlf (void)
- Move the cursor to the start of the next screen line.
-
- - Function: int rl_show_char (int c)
- Display character C on `rl_outstream'. If Readline has not been
- set to display meta characters directly, this will convert meta
- characters to a meta-prefixed key sequence. This is intended for
- use by applications which wish to do their own redisplay.
-
- - Function: int rl_message (const char *, ...)
- The arguments are a format string as would be supplied to `printf',
- possibly containing conversion specifications such as `%d', and
- any additional arguments necessary to satisfy the conversion
- specifications. The resulting string is displayed in the "echo
- area". The echo area is also used to display numeric arguments
- and search strings.
-
- - Function: int rl_clear_message (void)
- Clear the message in the echo area.
-
- - Function: void rl_save_prompt (void)
- Save the local Readline prompt display state in preparation for
- displaying a new message in the message area with `rl_message()'.
-
- - Function: void rl_restore_prompt (void)
- Restore the local Readline prompt display state saved by the most
- recent call to `rl_save_prompt'.
-
- - Function: int rl_expand_prompt (char *prompt)
- Expand any special character sequences in PROMPT and set up the
- local Readline prompt redisplay variables. This function is
- called by `readline()'. It may also be called to expand the
- primary prompt if the `rl_on_new_line_with_prompt()' function or
- `rl_already_prompted' variable is used. It returns the number of
- visible characters on the last line of the (possibly multi-line)
- prompt.
-
- - Function: int rl_set_prompt (const char *prompt)
- Make Readline use PROMPT for subsequent redisplay. This calls
- `rl_expand_prompt()' to expand the prompt and sets `rl_prompt' to
- the result.
-
-
-File: readline.info, Node: Modifying Text, Next: Character Input, Prev: Redisplay, Up: Readline Convenience Functions
-
-Modifying Text
---------------
-
- - Function: int rl_insert_text (const char *text)
- Insert TEXT into the line at the current cursor position. Returns
- the number of characters inserted.
-
- - Function: int rl_delete_text (int start, int end)
- Delete the text between START and END in the current line.
- Returns the number of characters deleted.
-
- - Function: char * rl_copy_text (int start, int end)
- Return a copy of the text between START and END in the current
- line.
-
- - Function: int rl_kill_text (int start, int end)
- Copy the text between START and END in the current line to the
- kill ring, appending or prepending to the last kill if the last
- command was a kill command. The text is deleted. If START is
- less than END, the text is appended, otherwise prepended. If the
- last command was not a kill, a new kill ring slot is used.
-
- - Function: int rl_push_macro_input (char *macro)
- Cause MACRO to be inserted into the line, as if it had been invoked
- by a key bound to a macro. Not especially useful; use
- `rl_insert_text()' instead.
-
-
-File: readline.info, Node: Character Input, Next: Terminal Management, Prev: Modifying Text, Up: Readline Convenience Functions
-
-Character Input
----------------
-
- - Function: int rl_read_key (void)
- Return the next character available from Readline's current input
- stream. This handles input inserted into the input stream via
- RL_PENDING_INPUT (*note Readline Variables::) and
- `rl_stuff_char()', macros, and characters read from the keyboard.
- While waiting for input, this function will call any function
- assigned to the `rl_event_hook' variable.
-
- - Function: int rl_getc (FILE *stream)
- Return the next character available from STREAM, which is assumed
- to be the keyboard.
-
- - Function: int rl_stuff_char (int c)
- Insert C into the Readline input stream. It will be "read" before
- Readline attempts to read characters from the terminal with
- `rl_read_key()'. Up to 512 characters may be pushed back.
- `rl_stuff_char' returns 1 if the character was successfully
- inserted; 0 otherwise.
-
- - Function: int rl_execute_next (int c)
- Make C be the next command to be executed when `rl_read_key()' is
- called. This sets RL_PENDING_INPUT.
-
- - Function: int rl_clear_pending_input (void)
- Unset RL_PENDING_INPUT, effectively negating the effect of any
- previous call to `rl_execute_next()'. This works only if the
- pending input has not already been read with `rl_read_key()'.
-
- - Function: int rl_set_keyboard_input_timeout (int u)
- While waiting for keyboard input in `rl_read_key()', Readline will
- wait for U microseconds for input before calling any function
- assigned to `rl_event_hook'. The default waiting period is
- one-tenth of a second. Returns the old timeout value.
-
-
-File: readline.info, Node: Terminal Management, Next: Utility Functions, Prev: Character Input, Up: Readline Convenience Functions
-
-Terminal Management
--------------------
-
- - Function: void rl_prep_terminal (int meta_flag)
- Modify the terminal settings for Readline's use, so `readline()'
- can read a single character at a time from the keyboard. The
- META_FLAG argument should be non-zero if Readline should read
- eight-bit input.
-
- - Function: void rl_deprep_terminal (void)
- Undo the effects of `rl_prep_terminal()', leaving the terminal in
- the state in which it was before the most recent call to
- `rl_prep_terminal()'.
-
- - Function: void rl_tty_set_default_bindings (Keymap kmap)
- Read the operating system's terminal editing characters (as would
- be displayed by `stty') to their Readline equivalents. The
- bindings are performed in KMAP.
-
- - Function: int rl_reset_terminal (const char *terminal_name)
- Reinitialize Readline's idea of the terminal settings using
- TERMINAL_NAME as the terminal type (e.g., `vt100'). If
- TERMINAL_NAME is `NULL', the value of the `TERM' environment
- variable is used.
-
-
-File: readline.info, Node: Utility Functions, Next: Miscellaneous Functions, Prev: Terminal Management, Up: Readline Convenience Functions
-
-Utility Functions
------------------
-
- - Function: void rl_replace_line (const char *text, int clear_undo)
- Replace the contents of `rl_line_buffer' with TEXT. The point and
- mark are preserved, if possible. If CLEAR_UNDO is non-zero, the
- undo list associated with the current line is cleared.
-
- - Function: int rl_extend_line_buffer (int len)
- Ensure that `rl_line_buffer' has enough space to hold LEN
- characters, possibly reallocating it if necessary.
-
- - Function: int rl_initialize (void)
- Initialize or re-initialize Readline's internal state. It's not
- strictly necessary to call this; `readline()' calls it before
- reading any input.
-
- - Function: int rl_ding (void)
- Ring the terminal bell, obeying the setting of `bell-style'.
-
- - Function: int rl_alphabetic (int c)
- Return 1 if C is an alphabetic character.
-
- - Function: void rl_display_match_list (char **matches, int len, int
- max)
- A convenience function for displaying a list of strings in
- columnar format on Readline's output stream. `matches' is the list
- of strings, in argv format, such as a list of completion matches.
- `len' is the number of strings in `matches', and `max' is the
- length of the longest string in `matches'. This function uses the
- setting of `print-completions-horizontally' to select how the
- matches are displayed (*note Readline Init File Syntax::).
-
- The following are implemented as macros, defined in `chardefs.h'.
-Applications should refrain from using them.
-
- - Function: int _rl_uppercase_p (int c)
- Return 1 if C is an uppercase alphabetic character.
-
- - Function: int _rl_lowercase_p (int c)
- Return 1 if C is a lowercase alphabetic character.
-
- - Function: int _rl_digit_p (int c)
- Return 1 if C is a numeric character.
-
- - Function: int _rl_to_upper (int c)
- If C is a lowercase alphabetic character, return the corresponding
- uppercase character.
-
- - Function: int _rl_to_lower (int c)
- If C is an uppercase alphabetic character, return the corresponding
- lowercase character.
-
- - Function: int _rl_digit_value (int c)
- If C is a number, return the value it represents.
-
-
-File: readline.info, Node: Miscellaneous Functions, Next: Alternate Interface, Prev: Utility Functions, Up: Readline Convenience Functions
-
-Miscellaneous Functions
------------------------
-
- - Function: int rl_macro_bind (const char *keyseq, const char *macro,
- Keymap map)
- Bind the key sequence KEYSEQ to invoke the macro MACRO. The
- binding is performed in MAP. When KEYSEQ is invoked, the MACRO
- will be inserted into the line. This function is deprecated; use
- `rl_generic_bind()' instead.
-
- - Function: void rl_macro_dumper (int readable)
- Print the key sequences bound to macros and their values, using
- the current keymap, to `rl_outstream'. If READABLE is non-zero,
- the list is formatted in such a way that it can be made part of an
- `inputrc' file and re-read.
-
- - Function: int rl_variable_bind (const char *variable, const char
- *value)
- Make the Readline variable VARIABLE have VALUE. This behaves as
- if the readline command `set VARIABLE VALUE' had been executed in
- an `inputrc' file (*note Readline Init File Syntax::).
-
- - Function: void rl_variable_dumper (int readable)
- Print the readline variable names and their current values to
- `rl_outstream'. If READABLE is non-zero, the list is formatted in
- such a way that it can be made part of an `inputrc' file and
- re-read.
-
- - Function: int rl_set_paren_blink_timeout (int u)
- Set the time interval (in microseconds) that Readline waits when
- showing a balancing character when `blink-matching-paren' has been
- enabled.
-
- - Function: char * rl_get_termcap (const char *cap)
- Retrieve the string value of the termcap capability CAP. Readline
- fetches the termcap entry for the current terminal name and uses
- those capabilities to move around the screen line and perform other
- terminal-specific operations, like erasing a line. Readline does
- not use all of a terminal's capabilities, and this function will
- return values for only those capabilities Readline uses.
-
-
-File: readline.info, Node: Alternate Interface, Next: A Readline Example, Prev: Miscellaneous Functions, Up: Readline Convenience Functions
-
-Alternate Interface
--------------------
-
- An alternate interface is available to plain `readline()'. Some
-applications need to interleave keyboard I/O with file, device, or
-window system I/O, typically by using a main loop to `select()' on
-various file descriptors. To accomodate this need, readline can also
-be invoked as a `callback' function from an event loop. There are
-functions available to make this easy.
-
- - Function: void rl_callback_handler_install (const char *prompt,
- rl_vcpfunc_t *lhandler)
- Set up the terminal for readline I/O and display the initial
- expanded value of PROMPT. Save the value of LHANDLER to use as a
- function to call when a complete line of input has been entered.
- The function takes the text of the line as an argument.
-
- - Function: void rl_callback_read_char (void)
- Whenever an application determines that keyboard input is
- available, it should call `rl_callback_read_char()', which will
- read the next character from the current input source. If that
- character completes the line, `rl_callback_read_char' will invoke
- the LHANDLER function saved by `rl_callback_handler_install' to
- process the line. Before calling the LHANDLER function, the
- terminal settings are reset to the values they had before calling
- `rl_callback_handler_install'. If the LHANDLER function returns,
- the terminal settings are modified for Readline's use again.
- `EOF' is indicated by calling LHANDLER with a `NULL' line.
-
- - Function: void rl_callback_handler_remove (void)
- Restore the terminal to its initial state and remove the line
- handler. This may be called from within a callback as well as
- independently. If the LHANDLER installed by
- `rl_callback_handler_install' does not exit the program, either
- this function or the function referred to by the value of
- `rl_deprep_term_function' should be called before the program
- exits to reset the terminal settings.
-
-
-File: readline.info, Node: A Readline Example, Prev: Alternate Interface, Up: Readline Convenience Functions
-
-A Readline Example
-------------------
-
- Here is a function which changes lowercase characters to their
-uppercase equivalents, and uppercase characters to lowercase. If this
-function was bound to `M-c', then typing `M-c' would change the case of
-the character under point. Typing `M-1 0 M-c' would change the case of
-the following 10 characters, leaving the cursor on the last character
-changed.
-
- /* Invert the case of the COUNT following characters. */
- int
- invert_case_line (count, key)
- int count, key;
- {
- register int start, end, i;
-
- start = rl_point;
-
- if (rl_point >= rl_end)
- return (0);
-
- if (count < 0)
- {
- direction = -1;
- count = -count;
- }
- else
- direction = 1;
-
- /* Find the end of the range to modify. */
- end = start + (count * direction);
-
- /* Force it to be within range. */
- if (end > rl_end)
- end = rl_end;
- else if (end < 0)
- end = 0;
-
- if (start == end)
- return (0);
-
- if (start > end)
- {
- int temp = start;
- start = end;
- end = temp;
- }
-
- /* Tell readline that we are modifying the line,
- so it will save the undo information. */
- rl_modifying (start, end);
-
- for (i = start; i != end; i++)
- {
- if (_rl_uppercase_p (rl_line_buffer[i]))
- rl_line_buffer[i] = _rl_to_lower (rl_line_buffer[i]);
- else if (_rl_lowercase_p (rl_line_buffer[i]))
- rl_line_buffer[i] = _rl_to_upper (rl_line_buffer[i]);
- }
- /* Move point to on top of the last character changed. */
- rl_point = (direction == 1) ? end - 1 : start;
- return (0);
- }
-
-
-File: readline.info, Node: Readline Signal Handling, Next: Custom Completers, Prev: Readline Convenience Functions, Up: Programming with GNU Readline
-
-Readline Signal Handling
-========================
-
- Signals are asynchronous events sent to a process by the Unix kernel,
-sometimes on behalf of another process. They are intended to indicate
-exceptional events, like a user pressing the interrupt key on his
-terminal, or a network connection being broken. There is a class of
-signals that can be sent to the process currently reading input from
-the keyboard. Since Readline changes the terminal attributes when it
-is called, it needs to perform special processing when such a signal is
-received in order to restore the terminal to a sane state, or provide
-application writers with functions to do so manually.
-
- Readline contains an internal signal handler that is installed for a
-number of signals (`SIGINT', `SIGQUIT', `SIGTERM', `SIGALRM',
-`SIGTSTP', `SIGTTIN', and `SIGTTOU'). When one of these signals is
-received, the signal handler will reset the terminal attributes to
-those that were in effect before `readline()' was called, reset the
-signal handling to what it was before `readline()' was called, and
-resend the signal to the calling application. If and when the calling
-application's signal handler returns, Readline will reinitialize the
-terminal and continue to accept input. When a `SIGINT' is received,
-the Readline signal handler performs some additional work, which will
-cause any partially-entered line to be aborted (see the description of
-`rl_free_line_state()' below).
-
- There is an additional Readline signal handler, for `SIGWINCH', which
-the kernel sends to a process whenever the terminal's size changes (for
-example, if a user resizes an `xterm'). The Readline `SIGWINCH'
-handler updates Readline's internal screen size information, and then
-calls any `SIGWINCH' signal handler the calling application has
-installed. Readline calls the application's `SIGWINCH' signal handler
-without resetting the terminal to its original state. If the
-application's signal handler does more than update its idea of the
-terminal size and return (for example, a `longjmp' back to a main
-processing loop), it _must_ call `rl_cleanup_after_signal()' (described
-below), to restore the terminal state.
-
- Readline provides two variables that allow application writers to
-control whether or not it will catch certain signals and act on them
-when they are received. It is important that applications change the
-values of these variables only when calling `readline()', not in a
-signal handler, so Readline's internal signal state is not corrupted.
-
- - Variable: int rl_catch_signals
- If this variable is non-zero, Readline will install signal
- handlers for `SIGINT', `SIGQUIT', `SIGTERM', `SIGALRM', `SIGTSTP',
- `SIGTTIN', and `SIGTTOU'.
-
- The default value of `rl_catch_signals' is 1.
-
- - Variable: int rl_catch_sigwinch
- If this variable is non-zero, Readline will install a signal
- handler for `SIGWINCH'.
-
- The default value of `rl_catch_sigwinch' is 1.
-
- If an application does not wish to have Readline catch any signals,
-or to handle signals other than those Readline catches (`SIGHUP', for
-example), Readline provides convenience functions to do the necessary
-terminal and internal state cleanup upon receipt of a signal.
-
- - Function: void rl_cleanup_after_signal (void)
- This function will reset the state of the terminal to what it was
- before `readline()' was called, and remove the Readline signal
- handlers for all signals, depending on the values of
- `rl_catch_signals' and `rl_catch_sigwinch'.
-
- - Function: void rl_free_line_state (void)
- This will free any partial state associated with the current input
- line (undo information, any partial history entry, any
- partially-entered keyboard macro, and any partially-entered
- numeric argument). This should be called before
- `rl_cleanup_after_signal()'. The Readline signal handler for
- `SIGINT' calls this to abort the current input line.
-
- - Function: void rl_reset_after_signal (void)
- This will reinitialize the terminal and reinstall any Readline
- signal handlers, depending on the values of `rl_catch_signals' and
- `rl_catch_sigwinch'.
-
- If an application does not wish Readline to catch `SIGWINCH', it may
-call `rl_resize_terminal()' or `rl_set_screen_size()' to force Readline
-to update its idea of the terminal size when a `SIGWINCH' is received.
-
- - Function: void rl_resize_terminal (void)
- Update Readline's internal screen size by reading values from the
- kernel.
-
- - Function: void rl_set_screen_size (int rows, int cols)
- Set Readline's idea of the terminal size to ROWS rows and COLS
- columns.
-
- If an application does not want to install a `SIGWINCH' handler, but
-is still interested in the screen dimensions, Readline's idea of the
-screen size may be queried.
-
- - Function: void rl_get_screen_size (int *rows, int *cols)
- Return Readline's idea of the terminal's size in the variables
- pointed to by the arguments.
-
- The following functions install and remove Readline's signal
-handlers.
-
- - Function: int rl_set_signals (void)
- Install Readline's signal handler for `SIGINT', `SIGQUIT',
- `SIGTERM', `SIGALRM', `SIGTSTP', `SIGTTIN', `SIGTTOU', and
- `SIGWINCH', depending on the values of `rl_catch_signals' and
- `rl_catch_sigwinch'.
-
- - Function: int rl_clear_signals (void)
- Remove all of the Readline signal handlers installed by
- `rl_set_signals()'.
-
-
-File: readline.info, Node: Custom Completers, Prev: Readline Signal Handling, Up: Programming with GNU Readline
-
-Custom Completers
-=================
-
- Typically, a program that reads commands from the user has a way of
-disambiguating commands and data. If your program is one of these, then
-it can provide completion for commands, data, or both. The following
-sections describe how your program and Readline cooperate to provide
-this service.
-
-* Menu:
-
-* How Completing Works:: The logic used to do completion.
-* Completion Functions:: Functions provided by Readline.
-* Completion Variables:: Variables which control completion.
-* A Short Completion Example:: An example of writing completer subroutines.
-
-
-File: readline.info, Node: How Completing Works, Next: Completion Functions, Up: Custom Completers
-
-How Completing Works
---------------------
-
- In order to complete some text, the full list of possible completions
-must be available. That is, it is not possible to accurately expand a
-partial word without knowing all of the possible words which make sense
-in that context. The Readline library provides the user interface to
-completion, and two of the most common completion functions: filename
-and username. For completing other types of text, you must write your
-own completion function. This section describes exactly what such
-functions must do, and provides an example.
-
- There are three major functions used to perform completion:
-
- 1. The user-interface function `rl_complete()'. This function is
- called with the same arguments as other bindable Readline
- functions: COUNT and INVOKING_KEY. It isolates the word to be
- completed and calls `rl_completion_matches()' to generate a list
- of possible completions. It then either lists the possible
- completions, inserts the possible completions, or actually
- performs the completion, depending on which behavior is desired.
-
- 2. The internal function `rl_completion_matches()' uses an
- application-supplied "generator" function to generate the list of
- possible matches, and then returns the array of these matches.
- The caller should place the address of its generator function in
- `rl_completion_entry_function'.
-
- 3. The generator function is called repeatedly from
- `rl_completion_matches()', returning a string each time. The
- arguments to the generator function are TEXT and STATE. TEXT is
- the partial word to be completed. STATE is zero the first time
- the function is called, allowing the generator to perform any
- necessary initialization, and a positive non-zero integer for each
- subsequent call. The generator function returns `(char *)NULL' to
- inform `rl_completion_matches()' that there are no more
- possibilities left. Usually the generator function computes the
- list of possible completions when STATE is zero, and returns them
- one at a time on subsequent calls. Each string the generator
- function returns as a match must be allocated with `malloc()';
- Readline frees the strings when it has finished with them.
-
-
- - Function: int rl_complete (int ignore, int invoking_key)
- Complete the word at or before point. You have supplied the
- function that does the initial simple matching selection algorithm
- (see `rl_completion_matches()'). The default is to do filename
- completion.
-
- - Variable: rl_compentry_func_t * rl_completion_entry_function
- This is a pointer to the generator function for
- `rl_completion_matches()'. If the value of
- `rl_completion_entry_function' is `NULL' then the default filename
- generator function, `rl_filename_completion_function()', is used.
-
-
-File: readline.info, Node: Completion Functions, Next: Completion Variables, Prev: How Completing Works, Up: Custom Completers
-
-Completion Functions
---------------------
-
- Here is the complete list of callable completion functions present in
-Readline.
-
- - Function: int rl_complete_internal (int what_to_do)
- Complete the word at or before point. WHAT_TO_DO says what to do
- with the completion. A value of `?' means list the possible
- completions. `TAB' means do standard completion. `*' means
- insert all of the possible completions. `!' means to display all
- of the possible completions, if there is more than one, as well as
- performing partial completion.
-
- - Function: int rl_complete (int ignore, int invoking_key)
- Complete the word at or before point. You have supplied the
- function that does the initial simple matching selection algorithm
- (see `rl_completion_matches()' and `rl_completion_entry_function').
- The default is to do filename completion. This calls
- `rl_complete_internal()' with an argument depending on
- INVOKING_KEY.
-
- - Function: int rl_possible_completions (int count, int invoking_key)
- List the possible completions. See description of `rl_complete
- ()'. This calls `rl_complete_internal()' with an argument of `?'.
-
- - Function: int rl_insert_completions (int count, int invoking_key)
- Insert the list of possible completions into the line, deleting the
- partially-completed word. See description of `rl_complete()'.
- This calls `rl_complete_internal()' with an argument of `*'.
-
- - Function: int rl_completion_mode (rl_command_func_t *cfunc)
- Returns the apppriate value to pass to `rl_complete_internal()'
- depending on whether CFUNC was called twice in succession and the
- value of the `show-all-if-ambiguous' variable.
- Application-specific completion functions may use this function to
- present the same interface as `rl_complete()'.
-
- - Function: char ** rl_completion_matches (const char *text,
- rl_compentry_func_t *entry_func)
- Returns an array of strings which is a list of completions for
- TEXT. If there are no completions, returns `NULL'. The first
- entry in the returned array is the substitution for TEXT. The
- remaining entries are the possible completions. The array is
- terminated with a `NULL' pointer.
-
- ENTRY_FUNC is a function of two args, and returns a `char *'. The
- first argument is TEXT. The second is a state argument; it is
- zero on the first call, and non-zero on subsequent calls.
- ENTRY_FUNC returns a `NULL' pointer to the caller when there are
- no more matches.
-
- - Function: char * rl_filename_completion_function (const char *text,
- int state)
- A generator function for filename completion in the general case.
- TEXT is a partial filename. The Bash source is a useful reference
- for writing custom completion functions (the Bash completion
- functions call this and other Readline functions).
-
- - Function: char * rl_username_completion_function (const char *text,
- int state)
- A completion generator for usernames. TEXT contains a partial
- username preceded by a random character (usually `~'). As with all
- completion generators, STATE is zero on the first call and non-zero
- for subsequent calls.
-
-
-File: readline.info, Node: Completion Variables, Next: A Short Completion Example, Prev: Completion Functions, Up: Custom Completers
-
-Completion Variables
---------------------
-
- - Variable: rl_compentry_func_t * rl_completion_entry_function
- A pointer to the generator function for `rl_completion_matches()'.
- `NULL' means to use `rl_filename_completion_function()', the
- default filename completer.
-
- - Variable: rl_completion_func_t * rl_attempted_completion_function
- A pointer to an alternative function to create matches. The
- function is called with TEXT, START, and END. START and END are
- indices in `rl_line_buffer' defining the boundaries of TEXT, which
- is a character string. If this function exists and returns
- `NULL', or if this variable is set to `NULL', then `rl_complete()'
- will call the value of `rl_completion_entry_function' to generate
- matches, otherwise the array of strings returned will be used. If
- this function sets the `rl_attempted_completion_over' variable to
- a non-zero value, Readline will not perform its default completion
- even if this function returns no matches.
-
- - Variable: rl_quote_func_t * rl_filename_quoting_function
- A pointer to a function that will quote a filename in an
- application-specific fashion. This is called if filename
- completion is being attempted and one of the characters in
- `rl_filename_quote_characters' appears in a completed filename.
- The function is called with TEXT, MATCH_TYPE, and QUOTE_POINTER.
- The TEXT is the filename to be quoted. The MATCH_TYPE is either
- `SINGLE_MATCH', if there is only one completion match, or
- `MULT_MATCH'. Some functions use this to decide whether or not to
- insert a closing quote character. The QUOTE_POINTER is a pointer
- to any opening quote character the user typed. Some functions
- choose to reset this character.
-
- - Variable: rl_dequote_func_t * rl_filename_dequoting_function
- A pointer to a function that will remove application-specific
- quoting characters from a filename before completion is attempted,
- so those characters do not interfere with matching the text
- against names in the filesystem. It is called with TEXT, the text
- of the word to be dequoted, and QUOTE_CHAR, which is the quoting
- character that delimits the filename (usually `'' or `"'). If
- QUOTE_CHAR is zero, the filename was not in an embedded string.
-
- - Variable: rl_linebuf_func_t * rl_char_is_quoted_p
- A pointer to a function to call that determines whether or not a
- specific character in the line buffer is quoted, according to
- whatever quoting mechanism the program calling Readline uses. The
- function is called with two arguments: TEXT, the text of the line,
- and INDEX, the index of the character in the line. It is used to
- decide whether a character found in
- `rl_completer_word_break_characters' should be used to break words
- for the completer.
-
- - Variable: rl_compignore_func_t * rl_ignore_some_completions_function
- This function, if defined, is called by the completer when real
- filename completion is done, after all the matching names have
- been generated. It is passed a `NULL' terminated array of matches.
- The first element (`matches[0]') is the maximal substring common
- to all matches. This function can re-arrange the list of matches
- as required, but each element deleted from the array must be freed.
-
- - Variable: rl_icppfunc_t * rl_directory_completion_hook
- This function, if defined, is allowed to modify the directory
- portion of filenames Readline completes. It is called with the
- address of a string (the current directory name) as an argument,
- and may modify that string. If the string is replaced with a new
- string, the old value should be freed. Any modified directory
- name should have a trailing slash. The modified value will be
- displayed as part of the completion, replacing the directory
- portion of the pathname the user typed. It returns an integer
- that should be non-zero if the function modifies its directory
- argument. It could be used to expand symbolic links or shell
- variables in pathnames.
-
- - Variable: rl_compdisp_func_t * rl_completion_display_matches_hook
- If non-zero, then this is the address of a function to call when
- completing a word would normally display the list of possible
- matches. This function is called in lieu of Readline displaying
- the list. It takes three arguments: (`char **'MATCHES, `int'
- NUM_MATCHES, `int' MAX_LENGTH) where MATCHES is the array of
- matching strings, NUM_MATCHES is the number of strings in that
- array, and MAX_LENGTH is the length of the longest string in that
- array. Readline provides a convenience function,
- `rl_display_match_list', that takes care of doing the display to
- Readline's output stream. That function may be called from this
- hook.
-
- - Variable: const char * rl_basic_word_break_characters
- The basic list of characters that signal a break between words for
- the completer routine. The default value of this variable is the
- characters which break words for completion in Bash: `"
- \t\n\"\\'`@$><=;|&{("'.
-
- - Variable: const char * rl_basic_quote_characters
- A list of quote characters which can cause a word break.
-
- - Variable: const char * rl_completer_word_break_characters
- The list of characters that signal a break between words for
- `rl_complete_internal()'. The default list is the value of
- `rl_basic_word_break_characters'.
-
- - Variable: const char * rl_completer_quote_characters
- A list of characters which can be used to quote a substring of the
- line. Completion occurs on the entire substring, and within the
- substring `rl_completer_word_break_characters' are treated as any
- other character, unless they also appear within this list.
-
- - Variable: const char * rl_filename_quote_characters
- A list of characters that cause a filename to be quoted by the
- completer when they appear in a completed filename. The default
- is the null string.
-
- - Variable: const char * rl_special_prefixes
- The list of characters that are word break characters, but should
- be left in TEXT when it is passed to the completion function.
- Programs can use this to help determine what kind of completing to
- do. For instance, Bash sets this variable to "$@" so that it can
- complete shell variables and hostnames.
-
- - Variable: int rl_completion_query_items
- Up to this many items will be displayed in response to a
- possible-completions call. After that, we ask the user if she is
- sure she wants to see them all. The default value is 100.
-
- - Variable: int rl_completion_append_character
- When a single completion alternative matches at the end of the
- command line, this character is appended to the inserted
- completion text. The default is a space character (` '). Setting
- this to the null character (`\0') prevents anything being appended
- automatically. This can be changed in custom completion functions
- to provide the "most sensible word separator character" according
- to an application-specific command line syntax specification.
-
- - Variable: int rl_completion_suppress_append
- If non-zero, RL_COMPLETION_APPEND_CHARACTER is not appended to
- matches at the end of the command line, as described above. It is
- set to 0 before any application-specific completion function is
- called.
-
- - Variable: int rl_completion_mark_symlink_dirs
- If non-zero, a slash will be appended to completed filenames that
- are symbolic links to directory names, subject to the value of the
- user-settable MARK-DIRECTORIES variable. This variable exists so
- that application completion functions can override the user's
- global preference (set via the MARK-SYMLINKED-DIRECTORIES Readline
- variable) if appropriate. This variable is set to the user's
- preference before any application completion function is called,
- so unless that function modifies the value, the user's preferences
- are honored.
-
- - Variable: int rl_ignore_completion_duplicates
- If non-zero, then duplicates in the matches are removed. The
- default is 1.
-
- - Variable: int rl_filename_completion_desired
- Non-zero means that the results of the matches are to be treated as
- filenames. This is _always_ zero on entry, and can only be changed
- within a completion entry generator function. If it is set to a
- non-zero value, directory names have a slash appended and Readline
- attempts to quote completed filenames if they contain any
- characters in `rl_filename_quote_characters' and
- `rl_filename_quoting_desired' is set to a non-zero value.
-
- - Variable: int rl_filename_quoting_desired
- Non-zero means that the results of the matches are to be quoted
- using double quotes (or an application-specific quoting mechanism)
- if the completed filename contains any characters in
- `rl_filename_quote_chars'. This is _always_ non-zero on entry,
- and can only be changed within a completion entry generator
- function. The quoting is effected via a call to the function
- pointed to by `rl_filename_quoting_function'.
-
- - Variable: int rl_attempted_completion_over
- If an application-specific completion function assigned to
- `rl_attempted_completion_function' sets this variable to a non-zero
- value, Readline will not perform its default filename completion
- even if the application's completion function returns no matches.
- It should be set only by an application's completion function.
-
- - Variable: int rl_completion_type
- Set to a character describing the type of completion Readline is
- currently attempting; see the description of
- `rl_complete_internal()' (*note Completion Functions::) for the
- list of characters.
-
- - Variable: int rl_inhibit_completion
- If this variable is non-zero, completion is inhibited. The
- completion character will be inserted as any other bound to
- `self-insert'.
-
-
-File: readline.info, Node: A Short Completion Example, Prev: Completion Variables, Up: Custom Completers
-
-A Short Completion Example
---------------------------
-
- Here is a small application demonstrating the use of the GNU Readline
-library. It is called `fileman', and the source code resides in
-`examples/fileman.c'. This sample application provides completion of
-command names, line editing features, and access to the history list.
-
- /* fileman.c -- A tiny application which demonstrates how to use the
- GNU Readline library. This application interactively allows users
- to manipulate files and their modes. */
-
- #include <stdio.h>
- #include <sys/types.h>
- #include <sys/file.h>
- #include <sys/stat.h>
- #include <sys/errno.h>
-
- #include <readline/readline.h>
- #include <readline/history.h>
-
- extern char *xmalloc ();
-
- /* The names of functions that actually do the manipulation. */
- int com_list __P((char *));
- int com_view __P((char *));
- int com_rename __P((char *));
- int com_stat __P((char *));
- int com_pwd __P((char *));
- int com_delete __P((char *));
- int com_help __P((char *));
- int com_cd __P((char *));
- int com_quit __P((char *));
-
- /* A structure which contains information on the commands this program
- can understand. */
-
- typedef struct {
- char *name; /* User printable name of the function. */
- rl_icpfunc_t *func; /* Function to call to do the job. */
- char *doc; /* Documentation for this function. */
- } COMMAND;
-
- COMMAND commands[] = {
- { "cd", com_cd, "Change to directory DIR" },
- { "delete", com_delete, "Delete FILE" },
- { "help", com_help, "Display this text" },
- { "?", com_help, "Synonym for `help'" },
- { "list", com_list, "List files in DIR" },
- { "ls", com_list, "Synonym for `list'" },
- { "pwd", com_pwd, "Print the current working directory" },
- { "quit", com_quit, "Quit using Fileman" },
- { "rename", com_rename, "Rename FILE to NEWNAME" },
- { "stat", com_stat, "Print out statistics on FILE" },
- { "view", com_view, "View the contents of FILE" },
- { (char *)NULL, (rl_icpfunc_t *)NULL, (char *)NULL }
- };
-
- /* Forward declarations. */
- char *stripwhite ();
- COMMAND *find_command ();
-
- /* The name of this program, as taken from argv[0]. */
- char *progname;
-
- /* When non-zero, this means the user is done using this program. */
- int done;
-
- char *
- dupstr (s)
- int s;
- {
- char *r;
-
- r = xmalloc (strlen (s) + 1);
- strcpy (r, s);
- return (r);
- }
-
- main (argc, argv)
- int argc;
- char **argv;
- {
- char *line, *s;
-
- progname = argv[0];
-
- initialize_readline (); /* Bind our completer. */
-
- /* Loop reading and executing lines until the user quits. */
- for ( ; done == 0; )
- {
- line = readline ("FileMan: ");
-
- if (!line)
- break;
-
- /* Remove leading and trailing whitespace from the line.
- Then, if there is anything left, add it to the history list
- and execute it. */
- s = stripwhite (line);
-
- if (*s)
- {
- add_history (s);
- execute_line (s);
- }
-
- free (line);
- }
- exit (0);
- }
-
- /* Execute a command line. */
- int
- execute_line (line)
- char *line;
- {
- register int i;
- COMMAND *command;
- char *word;
-
- /* Isolate the command word. */
- i = 0;
- while (line[i] && whitespace (line[i]))
- i++;
- word = line + i;
-
- while (line[i] && !whitespace (line[i]))
- i++;
-
- if (line[i])
- line[i++] = '\0';
-
- command = find_command (word);
-
- if (!command)
- {
- fprintf (stderr, "%s: No such command for FileMan.\n", word);
- return (-1);
- }
-
- /* Get argument to command, if any. */
- while (whitespace (line[i]))
- i++;
-
- word = line + i;
-
- /* Call the function. */
- return ((*(command->func)) (word));
- }
-
- /* Look up NAME as the name of a command, and return a pointer to that
- command. Return a NULL pointer if NAME isn't a command name. */
- COMMAND *
- find_command (name)
- char *name;
- {
- register int i;
-
- for (i = 0; commands[i].name; i++)
- if (strcmp (name, commands[i].name) == 0)
- return (&commands[i]);
-
- return ((COMMAND *)NULL);
- }
-
- /* Strip whitespace from the start and end of STRING. Return a pointer
- into STRING. */
- char *
- stripwhite (string)
- char *string;
- {
- register char *s, *t;
-
- for (s = string; whitespace (*s); s++)
- ;
-
- if (*s == 0)
- return (s);
-
- t = s + strlen (s) - 1;
- while (t > s && whitespace (*t))
- t--;
- *++t = '\0';
-
- return s;
- }
-
- /* **************************************************************** */
- /* */
- /* Interface to Readline Completion */
- /* */
- /* **************************************************************** */
-
- char *command_generator __P((const char *, int));
- char **fileman_completion __P((const char *, int, int));
-
- /* Tell the GNU Readline library how to complete. We want to try to
- complete on command names if this is the first word in the line, or
- on filenames if not. */
- initialize_readline ()
- {
- /* Allow conditional parsing of the ~/.inputrc file. */
- rl_readline_name = "FileMan";
-
- /* Tell the completer that we want a crack first. */
- rl_attempted_completion_function = fileman_completion;
- }
-
- /* Attempt to complete on the contents of TEXT. START and END
- bound the region of rl_line_buffer that contains the word to
- complete. TEXT is the word to complete. We can use the entire
- contents of rl_line_buffer in case we want to do some simple
- parsing. Returnthe array of matches, or NULL if there aren't any. */
- char **
- fileman_completion (text, start, end)
- const char *text;
- int start, end;
- {
- char **matches;
-
- matches = (char **)NULL;
-
- /* If this word is at the start of the line, then it is a command
- to complete. Otherwise it is the name of a file in the current
- directory. */
- if (start == 0)
- matches = rl_completion_matches (text, command_generator);
-
- return (matches);
- }
-
- /* Generator function for command completion. STATE lets us
- know whether to start from scratch; without any state
- (i.e. STATE == 0), then we start at the top of the list. */
- char *
- command_generator (text, state)
- const char *text;
- int state;
- {
- static int list_index, len;
- char *name;
-
- /* If this is a new word to complete, initialize now. This
- includes saving the length of TEXT for efficiency, and
- initializing the index variable to 0. */
- if (!state)
- {
- list_index = 0;
- len = strlen (text);
- }
-
- /* Return the next name which partially matches from the
- command list. */
- while (name = commands[list_index].name)
- {
- list_index++;
-
- if (strncmp (name, text, len) == 0)
- return (dupstr(name));
- }
-
- /* If no names matched, then return NULL. */
- return ((char *)NULL);
- }
-
- /* **************************************************************** */
- /* */
- /* FileMan Commands */
- /* */
- /* **************************************************************** */
-
- /* String to pass to system (). This is for the LIST, VIEW and RENAME
- commands. */
- static char syscom[1024];
-
- /* List the file(s) named in arg. */
- com_list (arg)
- char *arg;
- {
- if (!arg)
- arg = "";
-
- sprintf (syscom, "ls -FClg %s", arg);
- return (system (syscom));
- }
-
- com_view (arg)
- char *arg;
- {
- if (!valid_argument ("view", arg))
- return 1;
-
- sprintf (syscom, "more %s", arg);
- return (system (syscom));
- }
-
- com_rename (arg)
- char *arg;
- {
- too_dangerous ("rename");
- return (1);
- }
-
- com_stat (arg)
- char *arg;
- {
- struct stat finfo;
-
- if (!valid_argument ("stat", arg))
- return (1);
-
- if (stat (arg, &finfo) == -1)
- {
- perror (arg);
- return (1);
- }
-
- printf ("Statistics for `%s':\n", arg);
-
- printf ("%s has %d link%s, and is %d byte%s in length.\n", arg,
- finfo.st_nlink,
- (finfo.st_nlink == 1) ? "" : "s",
- finfo.st_size,
- (finfo.st_size == 1) ? "" : "s");
- printf ("Inode Last Change at: %s", ctime (&finfo.st_ctime));
- printf (" Last access at: %s", ctime (&finfo.st_atime));
- printf (" Last modified at: %s", ctime (&finfo.st_mtime));
- return (0);
- }
-
- com_delete (arg)
- char *arg;
- {
- too_dangerous ("delete");
- return (1);
- }
-
- /* Print out help for ARG, or for all of the commands if ARG is
- not present. */
- com_help (arg)
- char *arg;
- {
- register int i;
- int printed = 0;
-
- for (i = 0; commands[i].name; i++)
- {
- if (!*arg || (strcmp (arg, commands[i].name) == 0))
- {
- printf ("%s\t\t%s.\n", commands[i].name, commands[i].doc);
- printed++;
- }
- }
-
- if (!printed)
- {
- printf ("No commands match `%s'. Possibilties are:\n", arg);
-
- for (i = 0; commands[i].name; i++)
- {
- /* Print in six columns. */
- if (printed == 6)
- {
- printed = 0;
- printf ("\n");
- }
-
- printf ("%s\t", commands[i].name);
- printed++;
- }
-
- if (printed)
- printf ("\n");
- }
- return (0);
- }
-
- /* Change to the directory ARG. */
- com_cd (arg)
- char *arg;
- {
- if (chdir (arg) == -1)
- {
- perror (arg);
- return 1;
- }
-
- com_pwd ("");
- return (0);
- }
-
- /* Print out the current working directory. */
- com_pwd (ignore)
- char *ignore;
- {
- char dir[1024], *s;
-
- s = getcwd (dir, sizeof(dir) - 1);
- if (s == 0)
- {
- printf ("Error getting pwd: %s\n", dir);
- return 1;
- }
-
- printf ("Current directory is %s\n", dir);
- return 0;
- }
-
- /* The user wishes to quit using this program. Just set DONE
- non-zero. */
- com_quit (arg)
- char *arg;
- {
- done = 1;
- return (0);
- }
-
- /* Function which tells you that you can't do this. */
- too_dangerous (caller)
- char *caller;
- {
- fprintf (stderr,
- "%s: Too dangerous for me to distribute.\n"
- caller);
- fprintf (stderr, "Write it yourself.\n");
- }
-
- /* Return non-zero if ARG is a valid argument for CALLER,
- else print an error message and return zero. */
- int
- valid_argument (caller, arg)
- char *caller, *arg;
- {
- if (!arg || !*arg)
- {
- fprintf (stderr, "%s: Argument required.\n", caller);
- return (0);
- }
-
- return (1);
- }
-
-
-File: readline.info, Node: Concept Index, Next: Function and Variable Index, Prev: Programming with GNU Readline, Up: Top
-
-Concept Index
-*************
-
-* Menu:
-
-* command editing: Readline Bare Essentials.
-* editing command lines: Readline Bare Essentials.
-* initialization file, readline: Readline Init File.
-* interaction, readline: Readline Interaction.
-* kill ring: Readline Killing Commands.
-* killing text: Readline Killing Commands.
-* notation, readline: Readline Bare Essentials.
-* readline, function: Basic Behavior.
-* variables, readline: Readline Init File Syntax.
-* yanking text: Readline Killing Commands.
-
-
-File: readline.info, Node: Function and Variable Index, Prev: Concept Index, Up: Top
-
-Function and Variable Index
-***************************
-
-* Menu:
-
-* _rl_digit_p: Utility Functions.
-* _rl_digit_value: Utility Functions.
-* _rl_lowercase_p: Utility Functions.
-* _rl_to_lower: Utility Functions.
-* _rl_to_upper: Utility Functions.
-* _rl_uppercase_p: Utility Functions.
-* abort (C-g): Miscellaneous Commands.
-* accept-line (Newline or Return): Commands For History.
-* backward-char (C-b): Commands For Moving.
-* backward-delete-char (Rubout): Commands For Text.
-* backward-kill-line (C-x Rubout): Commands For Killing.
-* backward-kill-word (M-<DEL>): Commands For Killing.
-* backward-word (M-b): Commands For Moving.
-* beginning-of-history (M-<): Commands For History.
-* beginning-of-line (C-a): Commands For Moving.
-* bell-style: Readline Init File Syntax.
-* call-last-kbd-macro (C-x e): Keyboard Macros.
-* capitalize-word (M-c): Commands For Text.
-* character-search (C-]): Miscellaneous Commands.
-* character-search-backward (M-C-]): Miscellaneous Commands.
-* clear-screen (C-l): Commands For Moving.
-* comment-begin: Readline Init File Syntax.
-* complete (<TAB>): Commands For Completion.
-* completion-query-items: Readline Init File Syntax.
-* convert-meta: Readline Init File Syntax.
-* copy-backward-word (): Commands For Killing.
-* copy-forward-word (): Commands For Killing.
-* copy-region-as-kill (): Commands For Killing.
-* delete-char (C-d): Commands For Text.
-* delete-char-or-list (): Commands For Completion.
-* delete-horizontal-space (): Commands For Killing.
-* digit-argument (M-0, M-1, ... M--): Numeric Arguments.
-* disable-completion: Readline Init File Syntax.
-* do-uppercase-version (M-a, M-b, M-X, ...): Miscellaneous Commands.
-* downcase-word (M-l): Commands For Text.
-* dump-functions (): Miscellaneous Commands.
-* dump-macros (): Miscellaneous Commands.
-* dump-variables (): Miscellaneous Commands.
-* editing-mode: Readline Init File Syntax.
-* enable-keypad: Readline Init File Syntax.
-* end-kbd-macro (C-x )): Keyboard Macros.
-* end-of-history (M->): Commands For History.
-* end-of-line (C-e): Commands For Moving.
-* exchange-point-and-mark (C-x C-x): Miscellaneous Commands.
-* expand-tilde: Readline Init File Syntax.
-* forward-backward-delete-char (): Commands For Text.
-* forward-char (C-f): Commands For Moving.
-* forward-search-history (C-s): Commands For History.
-* forward-word (M-f): Commands For Moving.
-* history-preserve-point: Readline Init File Syntax.
-* history-search-backward (): Commands For History.
-* history-search-forward (): Commands For History.
-* horizontal-scroll-mode: Readline Init File Syntax.
-* input-meta: Readline Init File Syntax.
-* insert-comment (M-#): Miscellaneous Commands.
-* insert-completions (M-*): Commands For Completion.
-* isearch-terminators: Readline Init File Syntax.
-* keymap: Readline Init File Syntax.
-* kill-line (C-k): Commands For Killing.
-* kill-region (): Commands For Killing.
-* kill-whole-line (): Commands For Killing.
-* kill-word (M-d): Commands For Killing.
-* mark-modified-lines: Readline Init File Syntax.
-* mark-symlinked-directories: Readline Init File Syntax.
-* match-hidden-files: Readline Init File Syntax.
-* menu-complete (): Commands For Completion.
-* meta-flag: Readline Init File Syntax.
-* next-history (C-n): Commands For History.
-* non-incremental-forward-search-history (M-n): Commands For History.
-* non-incremental-reverse-search-history (M-p): Commands For History.
-* output-meta: Readline Init File Syntax.
-* overwrite-mode (): Commands For Text.
-* page-completions: Readline Init File Syntax.
-* possible-completions (M-?): Commands For Completion.
-* prefix-meta (<ESC>): Miscellaneous Commands.
-* previous-history (C-p): Commands For History.
-* quoted-insert (C-q or C-v): Commands For Text.
-* re-read-init-file (C-x C-r): Miscellaneous Commands.
-* readline: Basic Behavior.
-* redraw-current-line (): Commands For Moving.
-* reverse-search-history (C-r): Commands For History.
-* revert-line (M-r): Miscellaneous Commands.
-* rl_add_defun: Function Naming.
-* rl_add_funmap_entry: Associating Function Names and Bindings.
-* rl_add_undo: Allowing Undoing.
-* rl_alphabetic: Utility Functions.
-* rl_already_prompted: Readline Variables.
-* rl_attempted_completion_function: Completion Variables.
-* rl_attempted_completion_over: Completion Variables.
-* rl_basic_quote_characters: Completion Variables.
-* rl_basic_word_break_characters: Completion Variables.
-* rl_begin_undo_group: Allowing Undoing.
-* rl_bind_key: Binding Keys.
-* rl_bind_key_in_map: Binding Keys.
-* rl_binding_keymap: Readline Variables.
-* rl_callback_handler_install: Alternate Interface.
-* rl_callback_handler_remove: Alternate Interface.
-* rl_callback_read_char: Alternate Interface.
-* rl_catch_signals: Readline Signal Handling.
-* rl_catch_sigwinch: Readline Signal Handling.
-* rl_char_is_quoted_p: Completion Variables.
-* rl_cleanup_after_signal: Readline Signal Handling.
-* rl_clear_message: Redisplay.
-* rl_clear_pending_input: Character Input.
-* rl_clear_signals: Readline Signal Handling.
-* rl_complete <1>: How Completing Works.
-* rl_complete: Completion Functions.
-* rl_complete_internal: Completion Functions.
-* rl_completer_quote_characters: Completion Variables.
-* rl_completer_word_break_characters: Completion Variables.
-* rl_completion_append_character: Completion Variables.
-* rl_completion_display_matches_hook: Completion Variables.
-* rl_completion_entry_function <1>: Completion Variables.
-* rl_completion_entry_function: How Completing Works.
-* rl_completion_mark_symlink_dirs: Completion Variables.
-* rl_completion_matches: Completion Functions.
-* rl_completion_mode: Completion Functions.
-* rl_completion_query_items: Completion Variables.
-* rl_completion_suppress_append: Completion Variables.
-* rl_completion_type: Completion Variables.
-* rl_copy_keymap: Keymaps.
-* rl_copy_text: Modifying Text.
-* rl_crlf: Redisplay.
-* rl_delete_text: Modifying Text.
-* rl_deprep_term_function: Readline Variables.
-* rl_deprep_terminal: Terminal Management.
-* rl_ding: Utility Functions.
-* rl_directory_completion_hook: Completion Variables.
-* rl_discard_keymap: Keymaps.
-* rl_dispatching: Readline Variables.
-* rl_display_match_list: Utility Functions.
-* rl_do_undo: Allowing Undoing.
-* rl_done: Readline Variables.
-* rl_editing_mode: Readline Variables.
-* rl_end: Readline Variables.
-* rl_end_undo_group: Allowing Undoing.
-* rl_erase_empty_line: Readline Variables.
-* rl_event_hook: Readline Variables.
-* rl_execute_next: Character Input.
-* rl_executing_keymap: Readline Variables.
-* rl_executing_macro: Readline Variables.
-* rl_expand_prompt: Redisplay.
-* rl_explicit_arg: Readline Variables.
-* rl_extend_line_buffer: Utility Functions.
-* rl_filename_completion_desired: Completion Variables.
-* rl_filename_completion_function: Completion Functions.
-* rl_filename_dequoting_function: Completion Variables.
-* rl_filename_quote_characters: Completion Variables.
-* rl_filename_quoting_desired: Completion Variables.
-* rl_filename_quoting_function: Completion Variables.
-* rl_forced_update_display: Redisplay.
-* rl_free_line_state: Readline Signal Handling.
-* rl_free_undo_list: Allowing Undoing.
-* rl_function_dumper: Associating Function Names and Bindings.
-* rl_function_of_keyseq: Associating Function Names and Bindings.
-* rl_funmap_names: Associating Function Names and Bindings.
-* rl_generic_bind: Binding Keys.
-* rl_get_keymap: Keymaps.
-* rl_get_keymap_by_name: Keymaps.
-* rl_get_keymap_name: Keymaps.
-* rl_get_screen_size: Readline Signal Handling.
-* rl_get_termcap: Miscellaneous Functions.
-* rl_getc: Character Input.
-* rl_getc_function: Readline Variables.
-* rl_gnu_readline_p: Readline Variables.
-* rl_ignore_completion_duplicates: Completion Variables.
-* rl_ignore_some_completions_function: Completion Variables.
-* rl_inhibit_completion: Completion Variables.
-* rl_initialize: Utility Functions.
-* rl_insert_completions: Completion Functions.
-* rl_insert_text: Modifying Text.
-* rl_instream: Readline Variables.
-* rl_invoking_keyseqs: Associating Function Names and Bindings.
-* rl_invoking_keyseqs_in_map: Associating Function Names and Bindings.
-* rl_kill_text: Modifying Text.
-* rl_last_func: Readline Variables.
-* rl_library_version: Readline Variables.
-* rl_line_buffer: Readline Variables.
-* rl_list_funmap_names: Associating Function Names and Bindings.
-* rl_macro_bind: Miscellaneous Functions.
-* rl_macro_dumper: Miscellaneous Functions.
-* rl_make_bare_keymap: Keymaps.
-* rl_make_keymap: Keymaps.
-* rl_mark: Readline Variables.
-* rl_message: Redisplay.
-* rl_modifying: Allowing Undoing.
-* rl_named_function: Associating Function Names and Bindings.
-* rl_num_chars_to_read: Readline Variables.
-* rl_numeric_arg: Readline Variables.
-* rl_on_new_line: Redisplay.
-* rl_on_new_line_with_prompt: Redisplay.
-* rl_outstream: Readline Variables.
-* rl_parse_and_bind: Binding Keys.
-* rl_pending_input: Readline Variables.
-* rl_point: Readline Variables.
-* rl_possible_completions: Completion Functions.
-* rl_pre_input_hook: Readline Variables.
-* rl_prep_term_function: Readline Variables.
-* rl_prep_terminal: Terminal Management.
-* rl_prompt: Readline Variables.
-* rl_push_macro_input: Modifying Text.
-* rl_read_init_file: Binding Keys.
-* rl_read_key: Character Input.
-* rl_readline_name: Readline Variables.
-* rl_readline_state: Readline Variables.
-* rl_readline_version: Readline Variables.
-* rl_redisplay: Redisplay.
-* rl_redisplay_function: Readline Variables.
-* rl_replace_line: Utility Functions.
-* rl_reset_after_signal: Readline Signal Handling.
-* rl_reset_line_state: Redisplay.
-* rl_reset_terminal: Terminal Management.
-* rl_resize_terminal: Readline Signal Handling.
-* rl_restore_prompt: Redisplay.
-* rl_save_prompt: Redisplay.
-* rl_set_key: Binding Keys.
-* rl_set_keyboard_input_timeout: Character Input.
-* rl_set_keymap: Keymaps.
-* rl_set_paren_blink_timeout: Miscellaneous Functions.
-* rl_set_prompt: Redisplay.
-* rl_set_screen_size: Readline Signal Handling.
-* rl_set_signals: Readline Signal Handling.
-* rl_show_char: Redisplay.
-* rl_special_prefixes: Completion Variables.
-* rl_startup_hook: Readline Variables.
-* rl_stuff_char: Character Input.
-* rl_terminal_name: Readline Variables.
-* rl_tty_set_default_bindings: Terminal Management.
-* rl_unbind_command_in_map: Binding Keys.
-* rl_unbind_function_in_map: Binding Keys.
-* rl_unbind_key: Binding Keys.
-* rl_unbind_key_in_map: Binding Keys.
-* rl_username_completion_function: Completion Functions.
-* rl_variable_bind: Miscellaneous Functions.
-* rl_variable_dumper: Miscellaneous Functions.
-* self-insert (a, b, A, 1, !, ...): Commands For Text.
-* set-mark (C-@): Miscellaneous Commands.
-* show-all-if-ambiguous: Readline Init File Syntax.
-* start-kbd-macro (C-x (): Keyboard Macros.
-* transpose-chars (C-t): Commands For Text.
-* transpose-words (M-t): Commands For Text.
-* undo (C-_ or C-x C-u): Miscellaneous Commands.
-* universal-argument (): Numeric Arguments.
-* unix-line-discard (C-u): Commands For Killing.
-* unix-word-rubout (C-w): Commands For Killing.
-* upcase-word (M-u): Commands For Text.
-* visible-stats: Readline Init File Syntax.
-* yank (C-y): Commands For Killing.
-* yank-last-arg (M-. or M-_): Commands For History.
-* yank-nth-arg (M-C-y): Commands For History.
-* yank-pop (M-y): Commands For Killing.
-
-
-
-Tag Table:
-Node: Top1164
-Node: Command Line Editing1763
-Node: Introduction and Notation2414
-Node: Readline Interaction4032
-Node: Readline Bare Essentials5219
-Node: Readline Movement Commands7000
-Node: Readline Killing Commands7957
-Node: Readline Arguments9866
-Node: Searching10902
-Node: Readline Init File13045
-Node: Readline Init File Syntax14106
-Node: Conditional Init Constructs24989
-Node: Sample Init File27514
-Node: Bindable Readline Commands30698
-Node: Commands For Moving31748
-Node: Commands For History32597
-Node: Commands For Text35455
-Node: Commands For Killing38169
-Node: Numeric Arguments40120
-Node: Commands For Completion41248
-Node: Keyboard Macros42780
-Node: Miscellaneous Commands43339
-Node: Readline vi Mode46688
-Node: Programming with GNU Readline48506
-Node: Basic Behavior49474
-Node: Custom Functions52904
-Node: Readline Typedefs54382
-Node: Function Writing56011
-Node: Readline Variables57219
-Node: Readline Convenience Functions66642
-Node: Function Naming67624
-Node: Keymaps68876
-Node: Binding Keys70632
-Node: Associating Function Names and Bindings73558
-Node: Allowing Undoing75803
-Node: Redisplay78338
-Node: Modifying Text81409
-Node: Character Input82638
-Node: Terminal Management84418
-Node: Utility Functions85593
-Node: Miscellaneous Functions87932
-Node: Alternate Interface89996
-Node: A Readline Example92141
-Node: Readline Signal Handling94078
-Node: Custom Completers99681
-Node: How Completing Works100396
-Node: Completion Functions103394
-Node: Completion Variables106778
-Node: A Short Completion Example117049
-Node: Concept Index129602
-Node: Function and Variable Index130424
-
-End Tag Table
diff --git a/readline-doc-4.3/doc/readline.ps b/readline-doc-4.3/doc/readline.ps
deleted file mode 100644
index 21ca2ca..0000000
--- a/readline-doc-4.3/doc/readline.ps
+++ /dev/null
@@ -1,5200 +0,0 @@
-%!PS-Adobe-2.0
-%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software
-%%Title: readline.dvi
-%%Pages: 66
-%%PageOrder: Ascend
-%%BoundingBox: 0 0 612 792
-%%EndComments
-%DVIPSWebPage: (www.radicaleye.com)
-%DVIPSCommandLine: dvips -D 300 -t letter -o readline.ps readline.dvi
-%DVIPSParameters: dpi=300, compressed
-%DVIPSSource: TeX output 2002.06.27:1354
-%%BeginProcSet: texc.pro
-%!
-/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
-N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
-mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
-0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
-landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
-mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
-matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
-exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
-statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
-N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
-/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
-/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
-array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
-df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
-definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
-}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
-B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
-1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3
-1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
-0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
-sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
-rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
-gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
-/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
-/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
-A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
-get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
-ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
-fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
-{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
-chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
-1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
-forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
-/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
-}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
-bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
-mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
-SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
-userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
-1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
-index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
-/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
-/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
-(LaserWriter 16/600)]{A length product length le{A length product exch 0
-exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
-end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
-grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
-imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
-exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
-fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
-delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
-B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
-p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
-rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
-
-%%EndProcSet
-TeXDict begin 40258431 52099146 1000 300 300 (readline.dvi)
-@start
-%DVIPSBitmapFont: Fa cmbxti10 14.4 1
-/Fa 1 47 df<120E123FEA7F80A212FFA21300127E123C0909798815>46
-D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fb cmsl9 9 1
-/Fb 1 121 df<383FC7E038078380EB0200EA038413C8EA01D8EA00F05B7F1201133812
-02487EEA081E123838FC3FC013107F8F14>120 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fc cmsltt10 9 4
-/Fc 4 78 df<EAFFFC13FE13FC0F037C8C14>45 D<EA01E0EA07F8EA0E3CEA1C1CEA180E
-12381270A312E0A4131CA31338A21370EA70E01271EA3F80EA1F000F177C9614>48
-D<134013E0EA01C01203120F123D12111201EA0380A6EA0700A6120EEAFFE0A20B177B96
-14>I<381F81F813C1380FC3E0EA0EC213C6A213CE13CC381CCDC013DD13D9A213F1A238
-38E3801303A53870070038FC0FC0A215177F9614>77 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fd cmtt9 9 47
-/Fd 47 127 df<126012F0AD12601200A4126012F0A212600417789614>33
-D<EA071CA5B51280A27E380E3800A7387FFF80B5FCA2381C7000A511177F9614>35
-D<EA01801203EA06005A121C121812385AA35AA91270A37E1218121C120C7EEA03801201
-091D799914>40 D<128012C01260123012381218121C120EA31207A9120EA3121C121812
-381230126012C01280081D7C9914>I<EA0380A3EA638CEAF39EEA7FFCEA3FF8EA0FE0A2
-EA3FF8EA7FFCEAF39EEA638CEA0380A30F107E9214>I<127012F812FCA2127C120C1218
-123012E012C0060A798414>44 D<EAFFFEA30F037E8C14>I<127012F8A3127005057984
-14>I<1203A25A5A123F12F712471207AEEA7FF0A20C177C9614>49
-D<1306131E133E13F8EA01F0EA03C0EA0F80EA1F00123C12F85A7E123C121FEA0F80EA03
-C0EA01F0EA00F8133E131E13060F157E9514>60 D<12C012F07E123E7EEA0780EA03E0EA
-01F0EA0078133E131E133E1378EA01F0EA03E0EA0780EA1F00123E12F85A12C00F157E95
-14>62 D<EA1FE0EA3FF8EA701CEAE00EA21240EA003C137013E0EA01C0EA0380A41300C7
-FCA41203EA0780A2EA03000F177E9614>I<EA01E0EA07F0EA0E38EA181CEA38FC1271EA
-731E1277EAEE0EA7EA771CEA7318EA71F0EA38E0EA1806EA0E1EEA07F8EA01F00F177E96
-14>I<EA01C0487EA21360A2EA0770A4EA0630EA0E38A4487EEA1FFCA2EA1C1CA2487EA2
-38FE3F80A211177F9614>I<3801F180EA07FFEA0E1FEA1C071238EA7003A348C7FCA738
-700380A338380700121CEA0E0EEA07FCEA01F011177F9614>67 D<38FC1F80A2007C1300
-EA7637A4EA7777A2EA7367A313E7EA71C7A2EA7007A638F80F80A211177F9614>77
-D<38FE3F80A2383E0E00123BA4138E1239A213CEA31238A213EE136EA4133E12FEA21117
-7F9614>I<EAFFE013F8EA383C131C7FA45B133CEA3FF85BEA38387FA51480EB1DC0A238
-FE0F80EB070012177F9614>82 D<EAFFE0A21200B3A712FFA20B1D7F9914>93
-D<EAFFFEA30F037E7E14>95 D<EA1FC0EA7FF0EA7078EA2018EA001CA2EA07FC121FEA3C
-1C127012E0A3EA707C383FFF80EA0F8F11107E8F14>97 D<12FCA2121CA513F8EA1DFEEA
-1F07EA1E03001C1380EB01C0A6EB0380001E1300EA1F0EEA1DFCEA0CF81217809614>I<
-EA03F8EA0FFEEA1C0EEA3804EA7000126012E0A412601270EA380EEA1C1EEA0FFCEA03F0
-0F107E8F14>I<137EA2130EA5EA07CEEA0FFEEA1C3EEA301EEA700E12E0A61270EA301E
-EA383E381FEFC0EA07CF12177F9614>I<EA07E0EA0FF0EA1C38EA301CEA700CEAE00EA2
-EAFFFEA2EAE00012601270EA380EEA1C1EEA0FFCEA03F00F107E8F14>I<13FCEA01FEEA
-038EEA07041300A3EA7FFE12FFEA0700ACEAFFF8A20F177F9614>I<EA07CF381FFF80EA
-383B38301800EA701CA3EA3018EA3838EA3FF0EA37C00070C7FCA2EA3FF86C7E487EEA70
-0F38E00380A438700700EA3C1EEA1FFCEA07F011197F8F14>I<12FCA2121CA51378EA1D
-FEEA1F86EA1E07121CAA38FF8FE0A21317809614>I<1206120FA21206C7FCA4B4FCA212
-07ACEAFFF8A20D187C9714>I<136013F0A213601300A4EA1FF0A2EA0070B2EA40E0EAE0
-C0EA7F80EA3F000C207E9714>I<12FCA2121CA5EBFF80A2EB1C005B5B5BEA1DC0EA1FE0
-A2EA1E70EA1C38133C131C7F38FF1F80A21117809614>I<EAFF80A21203B3EAFFFEA20F
-177E9614>I<EAFB8EEAFFDF383CF380A2EA38E3AA38FEFBE013791310808F14>I<EAFC78
-EAFDFEEA1F86EA1E07121CAA38FF8FE0A21310808F14>I<EA07C0EA1FF0EA3C78EA701C
-A2EAE00EA6EA701CEA783CEA3C78EA1FF0EA07C00F107E8F14>I<EAFCF8EAFDFEEA1F07
-EA1E03001C1380EB01C0A6EB0380001E1300EA1F0EEA1DFCEA1CF890C7FCA6B47EA21218
-808F14>I<EA03E7EA0FF7EA1C1FEA300F1270487EA6EA700F1230EA1C3FEA0FF7EA07C7
-EA0007A6EB3FE0A213187F8F14>I<EAFE1FEB7F80EA0EE3380F810090C7FCA2120EA8EA
-FFF0A211107F8F14>I<EA0FD8EA3FF8EA603812C0A2EAF000EA7F80EA3FF0EA07F8EA00
-1CEA600612E012F0EAF81CEAFFF8EACFE00F107E8F14>I<1206120EA4EA7FFC12FFEA0E
-00A8130EA3131CEA07F8EA01F00F157F9414>I<EAFC3FA2EA1C07AB131F380FFFE0EA03
-E71310808F14>I<38FE3F80A2383C1E00EA1C1CA36C5AA3EA0630EA0770A36C5AA31110
-7F8F14>I<38FE3F80A238700700EA380EA3EA39CEA3EA1B6C121AA3EA1E7CA2EA0E3811
-107F8F14>I<EA7E3FA2EA1E3CEA0E78EA07705B12036C5A12037FEA0770EA0E78133848
-7E38FE3F80A211107F8F14>I<38FE3F80A2381C0E005BA2120E5BA212071330A2EA0370
-A25B1201A25BA3485A12730077C7FC127E123C11187F8F14>I<EA3FFF5AEA700E131C13
-38EA007013E0EA01C0EA0380EA0700120EEA1C0712381270B5FCA210107F8F14>I<EA1C
-10EA3F38EAE7E0EA41C00D047D9614>126 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fe cmti9 9 1
-/Fe 1 47 df<1230127812F0126005047C830C>46 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Ff cmr9 9 39
-/Ff 39 123 df<13FEEA038138060180EA0E03381C010090C7FCA5B51280EA1C03AE38FF
-8FF0141A809915>12 D<EBFF80EA0383EA0603120E121CA6B5FCEA1C03AE38FF9FF0141A
-809915>I<126012F0A212701210A31220A21240A2040B7D830B>44
-D<EAFFC0A20A0280880D>I<EA07E0EA1C38EA381CEA300CEA700EEA6006A2EAE007AAEA
-6006A2EA700EEA300CEA381CEA1C38EA07E010187F9713>48 D<12035AB4FC1207B3A2EA
-7FF80D187D9713>I<EA0F80EA1060EA2030EA4038EA803CEAC01C12E01240EA003C1338
-A21370136013C0EA018013001202EA040412081210EA3008EA3FF8127F12FF0E187E9713
->I<EA07E0EA1838EA201CEA601EEA700EEA201E1200131CA213381370EA07E0EA003813
-1C130E130FA212E0A212C0EA400EEA601CEA1838EA07E010187F9713>I<1318A2133813
-7813F813B8EA01381202A212041208121812101220124012C0B5FCEA0038A6EA03FF1018
-7F9713>I<EA3018EA3FF013E01380EA2000A5EA2FC0EA3060EA2030EA00381318131CA2
-124012E0A2EA8018EA40381330EA30E0EA0F800E187E9713>I<EA01F8EA0704EA0C06EA
-180E123013001270126012E0EAE3E0EAE418EAE80CEAF00EEAE0061307A31260A2EA7006
-EA300EEA180CEA0C38EA07E010187F9713>I<1240EA7FFF13FEA2EA4004EA80081310A2
-EA00201340A21380120113005AA25A1206A2120EA5120410197E9813>I<EA07E0EA1818
-EA300CEA20061260A21270EA780CEA3E18EA1F30EA07C0EA03E0EA0CF8EA307CEA601E13
-0FEAC0071303A3EA6002EA2004EA1818EA07E010187F9713>I<EA07E0EA1C30EA3018EA
-700CEA600EEAE006A21307A31260EA700FEA3017EA1827EA07C7EA00071306130E130C12
-701318EA6030EA3060EA0F8010187F9713>I<EA1FC0EA38707FEA101C1200A2EA03FCEA
-1E1C1238127012E01480A2133CEA705F381F8F0011107F8F13>97
-D<12FC121CA913FCEA1D07381E0380381C01C0130014E0A6EB01C01480381E0300EA1906
-EA10F8131A809915>I<EA07F8EA1C1C1238EA700813005AA612701304EA3808EA1C18EA
-07E00E107F8F11>I<133F1307A9EA03E7EA0C17EA180F487E127012E0A6126012706C5A
-EA1C373807C7E0131A7F9915>I<EA07C0EA1C30EA30181270EA600C12E0EAFFFCEAE000
-A41260EA7004EA3808EA1C18EA07E00E107F8F11>I<EA01F0EA0718EA0E38EA1C101300
-A6EAFFC0EA1C00AEEAFF800D1A80990C>I<EA0FCF3818718038303000EA7038A4EA3030
-6C5AEA2FC00060C7FCA21270EA3FF013FC6C7EEA600FEAC003A4EA6006EA381CEA07E011
-187F8F13>I<12FC121CA9137CEA1D87381E0380A2121CAB38FF9FF0141A809915>I<1218
-123CA212181200A612FC121CAE12FF081A80990A>I<12FC121CA9EB1FC0EB0F00130C5B
-13205B13E0121DEA1E70EA1C7813387F131E7F148038FF9FE0131A809914>107
-D<12FC121CB3A6EAFF80091A80990A>I<38FC7C1F391D8E6380391E0781C0A2001C1301
-AB39FF9FE7F81D107F8F20>I<EAFC7CEA1D87381E0380A2121CAB38FF9FF01410808F15>
-I<EA07E0EA1C38EA300CEA700EEA6006EAE007A6EA6006EA700EEA381CEA1C38EA07E010
-107F8F13>I<EAFCFCEA1D07381E0380381C01C0A2EB00E0A6EB01C01480381E0300EA1D
-06EA1CF890C7FCA6B47E1317808F15>I<EA03E1EA0C13EA180BEA300FEA700712E0A612
-70A26C5AEA1C37EA07C7EA0007A6EB3FE013177F8F14>I<EAFC78EA1D9CEA1E1C1308EA
-1C00ABEAFF800E10808F0F>I<EA1F20EA60E0EA402012C0A2EAF000127FEA3FC0EA1FE0
-EA00F0EA8070133012C01320EAF040EA8F800C107F8F0F>I<1208A41218A21238EAFFC0
-EA3800A81320A41218EA1C40EA07800B177F960F>I<38FC1F80EA1C03AB1307120CEA0E
-0B3803F3F01410808F15>I<38FF0F80383C0700EA1C061304A26C5AA26C5AA3EA03A0A2
-EA01C0A36C5A11107F8F14>I<39FE7F1F8039381C0700003C1306381C0C04130E380E16
-081317A238072310149013A33803C1A014E0380180C0A319107F8F1C>I<38FE3F80383C
-1E00EA1C086C5AEA0F306C5A6C5A12017F1203EA0270487E1208EA181CEA381E38FC3FC0
-12107F8F14>I<38FF0F80383C0700EA1C061304A26C5AA26C5AA3EA03A0A2EA01C0A36C
-5AA248C7FCA212E112E212E4127811177F8F14>I<EAFFF8EAE07012C0EA80E0EA81C0A2
-EA0380EA0700A2EA0E04121CA2EA380812701338EAFFF80E107F8F11>I
-E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fg cmss10 10.95 2
-/Fg 2 42 df<13E0EA01C0EA0380120713005A121EA2121C123CA212381278A3127012F0
-AE12701278A31238123CA2121C121EA27E7E13801203EA01C0EA00E00B2E7CA112>40
-D<12E012707E123C121C121E7EA27E1380A2120313C0A3120113E0AE13C01203A3138012
-07A213005AA2121E121C123C12385A5A0B2E7EA112>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fh cmbx10 12 27
-/Fh 27 123 df<90380FF83F90397FFDFFC03A01FC1FE3E03903F03FC7EA07E0D80FC013
-87ED83C091381F8000A6B612FCA2390FC01F80B2397FF8FFF8A223237FA221>11
-D<EB07F8EB7FFC3801FC0E3803F01F48485AEA0FC0A3141E140C91C7FCA2ECFF80B6FCA2
-380FC01FB2397FF8FFF0A21C237FA220>I<EA07FE381FFF80383F07E06D7E130180121E
-1200A2133FEA03FDEA1F81EA3E01127C12F8A4EA7C02EA7E0C391FF87F803807E03F1916
-7E951C>97 D<B47EA2121FABEB87F0EBBFFCEBF03EEBC01F9038800F8015C0140715E0A7
-15C0A2140F15809038C01F00381E707E381C3FFC38180FE01B237EA220>I<EBFF800007
-13E0380F83F0EA1F03123E127E387C01E090C7FC12FCA6127C127EA2003E13186C133038
-0FC0603807FFC0C6130015167E9519>I<49B4FCA2EB003FAB13FE3807FFBF380FC1FF48
-C67E003E7F127E127CA212FCA7127C127E123E6C5B380F81FF3907FF3FE0EA01FC1B237E
-A220>I<13FE3807FF80380F83C0381E01E0383E00F0127E007C13F8147812FCB512F8A2
-00FCC7FCA3127CA26C1318A26C1330380F80E03803FFC0C6130015167E951A>I<EB1F80
-EBFFE03801F1F0EA03E31207EA0FC3EBC1E0EBC000A6EAFFFEA2EA0FC0B2EA7FFCA21423
-7EA212>I<9038FE0F803903FF9FC0380F83E3381F01F3391E00F000003E7FA5001E5BEA
-1F01380F83E0380BFF80D808FEC7FC0018C8FCA2121C381FFFE014FC6C13FF7E001F1480
-397C001FC00078130F00F81307A3007CEB0F806CEB1F00381F807E6CB45A000113E01A21
-7F951D>I<B47EA2121FABEB83F0EB8FFCEB987EEBA03EEBC03FA21380AE39FFF1FFE0A2
-1B237DA220>I<121E123FEA7F80A4EA3F00121EC7FCA6EAFF80A2121FB2EAFFF0A20C24
-7EA30F>I<B47EA2121FABECFF80A2EC3C00143014E0EB81C00183C7FC1386139E13BE13
-FFEBDF80EB8FC01307806D7E6D7E130080147E39FFE1FFC0A21A237EA21E>107
-D<EAFF80A2121FB3ADEAFFF0A20C237EA20F>I<3AFF03F803F890390FFE0FFE3A1F183F
-183F9039201F201F014001C01380A201801380AE3BFFF0FFF0FFF0A22C167D9531>I<38
-FF03F0EB0FFC381F187EEB203EEB403FA21380AE39FFF1FFE0A21B167D9520>I<13FF00
-0713E0380F81F0381F00F8003E137C48133EA300FC133FA7007C133E007E137E003E137C
-6C13F8380F81F03807FFE0C6130018167E951D>I<38FF87F0EBBFFC381FF07EEBC01F90
-38800F8015C0A2EC07E0A715C0140FA2EC1F8001C01300EBF07EEBBFFCEB8FE00180C7FC
-A8EAFFF0A21B207E9520>I<EBFE033807FF07380FC1CF381F00DF48137F007E7FA2127C
-12FCA7127EA2003E5B6C5BEA0FC13807FF3FEA00FC1300A8903801FFE0A21B207E951E>
-I<38FF0F80EB1FE0381F33F013631343A2EBC1E0EB8000ADEAFFF8A214167E9518>I<38
-07F980EA1FFFEA3807EA7003EAF001A26CC7FCB4FC13F8EA7FFE6C7E6C1380120738003F
-C0EAC007130312E0A200F0138038FC0F00EAEFFEEAC3F812167E9517>I<487EA41203A2
-1207A2120F123FB5FCA2EA1F80ABEB8180A5380F830013C3EA07FEEA01F811207F9F16>
-I<38FF81FFA2381F803FAF5C5C380FC1BF3907FF3FE0EA01FC1B167D9520>I<39FFF01F
-E0A2391FC00700000F1306EBE00E0007130C13F000035BA26C6C5AA26C6C5AA2EBFEE0EB
-7EC0137F6D5AA26DC7FCA2130EA21B167F951E>I<3AFFF3FF83FCA23A1F807C00E0D80F
-C014C08001E013010007017F1380A2D803F0EB0300ECCF8301F81387D801F913C61487D8
-00FD13ECEBFF0315FC017F5BEB7E01013E5BEB3C00A20118136026167F9529>I<39FFF0
-7FC0A2390FC01C006C6C5A6D5A00035B6C6C5A3800FD80137F91C7FC7F6D7E497EEB37E0
-EB67F013C33801C1F8380380FC48487E000E137F39FF81FFE0A21B167F951E>I<39FFF0
-1FE0A2391FC00700000F1306EBE00E0007130C13F000035BA26C6C5AA26C6C5AA2EBFEE0
-EB7EC0137F6D5AA26DC7FCA2130EA2130CA25B1278EAFC3813305BEA69C0EA7F80001FC8
-FC1B207F951E>I<387FFFF0A2387C07E038700FC0EA601F00E0138038C03F005B137EC6
-5A1201485AEBF030EA07E0120FEBC070EA1F80003F1360EB00E0EA7E03B5FCA214167E95
-19>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fi cmtt10 12 29
-/Fi 29 122 df<13E0A538F0E1E0EAFCE7387EEFC0381FFF00EA07FCEA01F0EA07FCEA1F
-FF387EEFC038FCE7E0EAF0E13800E000A513157D991A>42 D<B512F8A3381C0038A51400
-A2130EA3EA1FFEA3EA1C0EA390C7FCA3141CA5B512FCA3161E7E9D1A>69
-D<387FFFFCB5FC7E380E001CA51400A2EB0380A3EA0FFFA3EA0E03A390C7FCA8EA7FE012
-FF127F161E7F9D1A>I<B51280A33801C000B3A6B51280A3111E7C9D1A>73
-D<387F03F838FF87FC387F03F8381C01E0EB03C01480EB07005B131E131C5B13785B7F12
-1DEA1FDC139C130EEA1E0F7F001C13801303EB01C0A2EB00E0A21470007F13FC38FF81FE
-387F00FC171E7F9D1A>75 D<EA7FE0487E6C5A000EC7FCB3141CA5387FFFFCB5FC7E161E
-7F9D1A>I<387FFFC0B512E0A26C13C013047D7E1A>95 D<EA1FF0EA3FFC487EEA780FEA
-300738000380A2137FEA07FF121FEA3F83EA7803127012E0A3EA7007EA780F383FFFFCEA
-1FFDEA07F016157D941A>97 D<12FEA3120EA6133EEBFF80000F13E0EBC1F0EB8070EB00
-38120E141CA7000F13381478EB80F0EBC1E0EBFFC0000E138038063E00161E7F9D1A>I<
-EBFF80000313C0000F13E0EA1F01383C00C04813001270A25AA51270A2007813707E381F
-01F0380FFFE0000313C03800FE0014157D941A>I<EB1FC0A31301A6EA01F1EA07FDEA0F
-FFEA1E0FEA3C07EA7803EA700112E0A7EA7003A2EA3807EA3E0F381FFFFCEA07FDEA01F1
-161E7E9D1A>I<EA01F8EA07FF481380381E07C0EA3C01387800E01270481370A2B512F0
-A300E0C7FC1270A2007813707E381F01F0380FFFE0000313803800FE0014157D941A>I<
-EB07E0EB1FF0EB3FF8EB7878EBF030EBE000A4387FFFF0B5FCA23800E000AF383FFF8048
-13C06C1380151E7F9D1A>I<3801F87C3807FFFE5A381E078C381C0380383801C0A5381C
-0380EA1E07381FFF005BEA39F80038C7FCA27E381FFF8014E04813F83878007C0070131C
-48130EA40070131C0078133C003E13F8381FFFF0000713C00001130017217F941A>I<12
-FEA3120EA6133EEBFF80000F13C013C1EB80E01300120EAC38FFE3FE13E713E3171E7F9D
-1A>I<EA01C0487EA36C5AC8FCA5EA7FE0A31200AF387FFF80B512C06C1380121F7C9E1A>
-I<12FEA3120EA6EB0FFCEB1FFEEB0FFCEB03C0EB0780EB0F00131E5B5B13FC120F13DE13
-8F380E07801303EB01C014E0EB00F038FFE3FE14FF14FE181E7F9D1A>107
-D<EAFFE0A31200B3A6B512E0A3131E7D9D1A>I<387CE0E038FFFBF8EA7FFF381F1F1CEA
-1E1EA2EA1C1CAC387F1F1F39FF9F9F80397F1F1F00191580941A>I<EAFE3EEBFF80B512
-C0EA0FC1EB80E01300120EAC38FFE3FE13E713E317157F941A>I<EA01F0EA07FCEA1FFF
-383E0F80EA3C07387803C0EA700138E000E0A6EAF001007013C0EA7803383C0780EA3E0F
-381FFF00EA07FCEA01F013157D941A>I<EAFE3EEBFF80B512E0380FC1F0EB8070EB0038
-120E141CA7000F13381478EB80F0EBC1E0EBFFC0000E1380EB3E0090C7FCA8EAFFE0A316
-207F941A>I<3801F8E0EA07FEEA0FFFEA1E07EA3C03EA78011270EAE000A613011270EA
-7803123CEA1E0FEA0FFFEA07FCEA01F0C7FCA8EB0FFEA317207E941A>I<387F81F838FF
-8FFC387F9FFE3803FE1EEBF80CEBE000A25B5BAAEA7FFFB5FC7E17157F941A>I<3807FB
-80EA1FFF127FEA7807EAE003A30078C7FCEA7FC0EA1FFCEA07FE38003F801307386001C0
-12E0A2EAF00338FC0780B51200EAEFFEEAE3F812157C941A>I<487E1203A6387FFFE0B5
-FCA238038000AA1470A43801C1E013FF6C1380EB3F00141C7F9B1A>I<38FE0FE0A3EA0E
-00AD1301EA0F033807FFFE7EEA00FC17157F941A>I<387FC7FC00FF13FE007F13FC380E
-00E0A3380701C0A338038380A33801C700A3EA00EEA3137CA2133817157F941A>I<387F
-C7FC00FF13FE007F13FC380E00E0A27EEB01C013811203EB8380EA01C3A2EBC700EA00E7
-A213E61366136E133CA31338A3137813701230EA78E01271EA7FC06C5A001EC7FC17207F
-941A>121 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fj cmbx12 13.14 52
-/Fj 52 122 df<123C127E12FFA4127E123C08087C8711>46 D<EB7F803803FFF03807E1
-F8380F807C48487E48133F003E7F007E1480A400FE14C0AD007E1480A46CEB3F00A26C13
-3E6C6C5A3807E1F86CB45A38007F801A237EA21F>48 D<131C133C13FC12FFA21200B3AA
-387FFFFCA216237CA21F>I<48B4FC000713C0381E07F0383803F8386001FC387C00FE12
-FE14FF147FA2127C003813FFC7FC14FEA2EB01FC14F8EB03F0EB07E01480EB0F00131E5B
-1370EBE003EA01C038038007380700061206380FFFFE5A5A4813FCB5FCA218237DA21F>
-I<48B4FC000713E0381E03F0383801F8003C13FC387E00FEA3123EEA1C01000013FCA2EB
-03F8EB07F0EB0FC03801FF00A2380007E0EB01F014F8EB00FC14FE14FFA21210127C12FE
-A214FEA2387C01FC007013F8383E07F0380FFFC00001130018237DA21F>I<14381478A2
-14F81301130313071306130C131C13381330136013E0EA01C01380EA03005A120E5A1218
-5A12705AB612C0A2390001F800A790387FFFC0A21A237EA21F>I<0018130C001F137CEB
-FFF814F014E014C01480EBFC000018C7FCA513FF001B13E0381F03F0381C00F8000813FC
-C7127EA3147FA2127812FCA3147E5A006013FC1270383801F8381E07E03807FFC03801FE
-0018237DA21F>I<EB1FC0EB7FF03801F0383803E00C3807803E000F137EEA1F005AA200
-7E133C1400A338FE3FC0EB7FF0EB80F800FF13FCEB007C147E5A147FA4127EA4003E137E
-123F6C137C380F80F83807C1F03803FFC038007F0018237DA21F>I<1230123C003FB512
-C0A215804814005C5C38600018A200E05B485B5CC6485AA249C7FC1306130EA25BA2133C
-A25BA213F8A41201A66C5A13601A257DA41F>I<EBFF80000313E0380F01F8381C007C48
-133C141E1278A2127C127E387F803C13E0383FF878381FFDF0EBFFC07E000313E014F800
-0F13FCEA1E1F383C07FEEA7803EB00FF48133F141F140FA3140E1278141C6C1338381F80
-F03807FFE00001130018237DA21F>I<13FF000313C0380F83E0381F00F04813F8007E13
-7CA2147E12FEA3147FA4127E14FF123EEA3F01001F137FEA0FFEEA03FCC7FC147EA2123C
-007E13FCA214F814F0EA7C01383003E0381C0F80380FFF00EA03F818237DA21F>I<141C
-A2143EA3147FA24A7EA39038019FC0A29038031FE0140F01077FEB0607A2010C7F140301
-1C7FEB1801A2496C7EA2017FB5FCA29039E0007F8049133FA2484880151F00038190C712
-0FA2486E7ED8FFF090B51280A229257EA42E>65 D<B612E015FC3903F0007FED3F80ED1F
-C0ED0FE0A216F0A21507150FA216E0151F16C0ED7F80913801FE0090B512F815FF9039F0
-003FC0ED0FE0ED07F016F8150316FCA616F81507ED0FF0ED1FE0ED7FC0B7120015F82625
-7EA42C>I<9138FF8008010FEBF01890393FC03C789039FE0006F8D801F8130348481301
-4848130048481478121F48481438A2007F151890C8FCA2481500A97E16187F123FA26C6C
-1430120F6C6C14606C6C14C06C6CEB0180D800FEEB070090383FC01E90380FFFF8010013
-C025257DA42C>I<B7FCA23903F8007FED0F8015071503A21501A3ED00C01406A21600A2
-140E141EEBFFFEA2EBF81E140E1406A21660A291C7FC16C0A415011503A2ED0F80153FB7
-FCA223257EA428>69 D<B612FEA23803F800151F8181A281A3ED01801403A292C7FCA25C
-5C90B5FCA2EBF80F8080A491C8FCAAB512F0A221257EA427>I<B500E0B512E0A23B03F8
-0003F800AF90B6FCA29038F80003B0B500E0B512E0A22B257EA430>72
-D<B512E0A23803F800B3AFB512E0A213257EA417>I<B539E007FF80A2D803F8C7EA7800
-16605E4B5A0307C7FC150E15185D5D5DEC03804AC8FC140E141F4A7E147FECDFC09038FB
-8FE09038FF0FF0EBFC07496C7E816E7E1400157F82153F6F7E6F7E8215076F7E82B539E0
-3FFFC0A22A257EA430>75 D<B512F0A2D803F8C7FCB3A31503A31506A3150EA2151E153E
-157CEC03FCB6FCA220257EA425>I<D8FFF8EDFFF86D5C0003EEFE00017EEC037EA36D14
-06A26D6C130CA26D6C1318A26D6C1330A36D6C1360A26D6C13C0A2903900FC0180A29138
-7E0300A3EC3F06A2EC1F8CA2EC0FD8A2EC07F0A36E5AEA07803CFFFC01C01FFFF8A23525
-7EA43A>I<D8FFF8903807FFE07FD803FE9038003C006D14187F6D7E6D7E806D7E6D7E13
-036D7E6D7E80EC7F80EC3FC0141FEC0FE015F0EC07F8EC03FC1401EC00FE157F1698ED3F
-D8ED1FF8150F15071503A2150115001678486C1438D8FFFC1418A22B257EA430>I<B67E
-15F83903F801FEEC007F6F7E6F7EA282A55EA24B5A4BC7FCEC01FE90B512F815C09038F8
-03F06E7E6E7E157EA2157FA482A31760ED3FC017C0ED1FE1B539E00FFF80923801FE002B
-257EA42E>82 D<01FF1380000713E3380F80F7381E001F48130F481307140312F81401A2
-7E91C7FCB4FCEA7FE013FE383FFFE014F86C13FE00077F6C1480C67E010313C0EB003FEC
-0FE01407A200C01303A315C07E6C13076C14806CEB0F0038FFC03E38E3FFF838803FE01B
-257DA422>I<007FB612F8A2397E00FE010078EC00780070153800601518A200E0151C16
-0C5AA4C71400B3A390B512FEA226247EA32B>I<B539E00FFFC0A2D803F8C7EA78001630
-B3A700015D7F00005D137C6D495A6D0107C7FC90380FE03E903803FFF89038007FC02A25
-7EA42F>I<B5398001FFE0A2D807F8C7EA1C0000031518A26D1438000115306D14700000
-15607F6D5C80013F495AA2ECC003011F91C7FC6E5A010F130614F001075BA26D6C5AA2EC
-FC3801011330ECFE700100136014FF6E5AA26E5AA36EC8FCA2140EA22B257FA42E>I<B5
-3B81FFFE01FFF0A23D07F0001FC0000F007013066C6C010F5CA26F7E6C6C5EA26D496C13
-38000017304B7E017F01195CA291388030FE013F5E829139C0607F01011F5E03E0138190
-280FE0C03F83C7FCA29139F1801FC3010715C617E69139FB000FEE010315EC02FF14FC6D
-486D5AA24A130301005DA24A130102785CA202306D5A3C257FA43F>I<B539C001FFE0A2
-D807F8C7EA1C006C6C141816386C6C14306C6C5C16E06D6C5B6D6C485A1503D91FE090C7
-FC90380FF006150E903807F80C6D6C5A15386D6C5A903800FF6015E06E5A6E5AAE90380F
-FFFCA22B257FA42E>89 D<EA07FF001F13E0383E03F0383F00F880147E121EC7FCA3EB1F
-FE3803FE7EEA0FC0EA1F00123E127E5AA314BEEA7E01383F073E391FFE1FE03807F00F1B
-187E971E>97 D<EAFFC0A2120FACEBC1FCEBCFFF9038FC0FC09038F007E09038C003F0A2
-EC01F8A215FCA815F8A2EC03F013E09038F007E090381C1F80390E0FFF00380C03F81E26
-7FA522>I<EB7FE03803FFF83807C07C381F80FC13005A007E1378140012FEA8127E127F
-6C130CEA1F80EBC0183807E0703803FFE038007F0016187E971B>I<ECFFC0A2140FAC13
-7F3803FFCF380FE0FF381F803F383F000FA2127EA212FEA8127EA27E141F381F803F380F
-C0EF3903FFCFFC3800FE0F1E267EA522>I<137F3803FFC03807C1F0380F80F8EA1F0048
-137C127E147E12FEA2B512FEA248C7FCA3127EA214067E6C130C380F80183807E0703803
-FFE038007F8017187E971C>I<EB1FC0EB7FF0EA01F83803E1F8120713C1380FC0F01400
-A7B5FCA2EA0FC0B3A2EAFFFEA215267EA513>I<3901FF07C00007EBDFE0380F83F1EA1F
-01393E00F800007E7FA6003E5B6C485A380F83E0EBFFC0001190C7FC0030C8FCA2123812
-3C383FFFE06C13FC806C7F481480383C003F48EB0FC000F81307A4007CEB0F806CEB1F00
-381F807E3807FFF8C613C01B247E971F>I<EAFFC0A2120FAC14FE9038C3FF809038CE0F
-C013D89038D007E013E0A213C0AF39FFFC7FFEA21F267EA522>I<120FEA1F80EA3FC0A4
-EA1F80EA0F00C7FCA7EA7FC0A2120FB3A2EAFFF8A20D277EA611>I<EAFFC0A2120FACEC
-1FF0A2EC0780EC0E005C14305CEBC1C0EBC38013C713DFEBFFC0EBE7E0EBC3F0138180EB
-80FC147E80A2EC1F80EC0FC039FFF83FF8A21D267FA520>107 D<EAFFC0A2120FB3B0EA
-FFFCA20E267EA511>I<26FF80FE137F903A83FF81FFC03B0F8E0FC707E0019813CC903A
-9007E803F001A013F0A201C013E0AF3BFFFC7FFE3FFFA230187E9733>I<38FF80FE9038
-83FF80390F8E0FC0139890389007E013A0A213C0AF39FFFC7FFEA21F187E9722>I<EB7F
-803803FFF03807C0F8381F807E48487EA2007EEB1F80A200FE14C0A8007E1480A26CEB3F
-00A2381F807E6C6C5A3803FFF038007F801A187E971F>I<38FFC1FCEBCFFF390FFC1FC0
-9038F007E001C013F0140315F8140115FCA8EC03F8A215F0EBE0079038F00FE09038DC1F
-809038CFFF00EBC3F801C0C7FCA9EAFFFCA21E237F9722>I<38FF83E0EB8FF8380F8C7C
-EB90FC13B013A01478EBE0005BAEEAFFFEA216187F9719>114 D<3807F8C0EA1FFFEA3C
-07EA7001EAF000A300FC1300B47EEA7FFC7F383FFF80000F13C0120338001FE01303EAC0
-01A212E014C0EAF00338FC078038EFFF00EAC3FC13187E9718>I<13C0A41201A3120312
-07120F121FB512C0A2380FC000AC1460A63807E0C013E13801FF8038007E0013237FA218
->I<39FFC07FE0A2000F1307B0140FA200071317EBE0673903FFC7FE38007F071F187E97
-22>I<39FFF80FF8A2390FC001C015803907E00300A26D5A00031306EBF80E0001130C13
-FC00005B13FEEB7E30A26D5AA214E06D5AA26D5AA26DC7FCA21D187F9720>I<3BFFF9FF
-E0FF80A23B1FC03F001C00000F6D13181580D807E05CA29039F03FC07000030137136015
-E02601F8635BA29038FCE3F1000001C15B15F990267F80FBC7FCA215FF90383F007EA201
-1E133CA3010C131829187F972C>I<39FFF83FF0A2390FC00F003807E00E6C6C5A6D5A6C
-6C5A00001360EB7EC06D5AA2131F6D7E497E80EB33F81361EBE0FC3801C07E3803807F39
-07003F8048131F39FFC07FF8A21D187F9720>I<39FFF80FF8A2390FC001C015803907E0
-0300A26D5A00031306EBF80E0001130C13FC00005B13FEEB7E30A26D5AA214E06D5AA26D
-5AA26DC7FCA21306A25B1230EA781CEAFC185B1370EA68E0EA7FC0001FC8FC1D237F9720
->I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fk cmsl10 10.95 48
-/Fk 48 122 df<EB03E0EB1C181338EB703C13E014383801C000A5485A387FFFF0380380
-70A4380700E0A6380E01C0A6381C0380001E13C038FF0FF016207E9F19>12
-D<EB03F4EB1C1CEB383C137013E01438EA01C0A538038070387FFFF038038070A4380700
-E0A6380E01C0A6381C0380001E13C038FF9FF016207E9F19>I<EAFFF0A20C027E8A0F>
-45 D<137EEA01C338030180000713C0EA0E0014E05AA2EA3C0112381278A538F003C0A5
-1480130712E01400A2130E1260EA701CEA3038EA3870EA0FC0131F7C9D17>48
-D<13181338EA01F8EA0E701200A513E0A6EA01C0A6EA0380A6EA07001380EAFFFC0E1E7B
-9D17>I<1408140C141C143CA2147C147E149EA2EB011EA21302801304A21308A2011013
-8014071320A2EB7FFF90384007C0EB8003A2EA0100A21202EC01E01206001F130339FF80
-1FFE1F207F9F22>65 D<0007B5FC3900F803C090387801E0EC00F04913F8A515F03801E0
-01EC03E015C0EC0F809038FFFE009038E00F803903C003C0EC01E015F0A21400A2485A14
-01A215E01403EC07C0390F000F80EC3E00B512F01D1F7E9E20>I<ECFE02903807018690
-381C004E0170133E49131E4848131C4848130C120748C7FC5A121E003E1408003C140012
-7CA45AA4127815101520A27E1540001C14806CEB01006C13023803800C3800E030EB3FC0
-1F217C9F21>I<0007B57E3900F801E0903878007081497F151E150E150FA348481480A6
-484814005DA3151E153E4848133C5DA25D4A5A4A5A260F000FC7FC143CB512F0211F7E9E
-23>I<0007B512FC3900F8007C0178131C150C5B1504A414043901E00800A31438EBFFF8
-EBE0383803C010A4EC00081510485AA21520A2156015C0380F00011407B612801E1F7E9E
-1F>I<0007B512F83900F800780178133815185B1508A53901E00800A314181438EBFFF8
-3803C0301410A491C7FC485AA648C8FC7FEAFFFC1D1F7E9E1E>I<3A07FF83FFC03A00F8
-007C000178133CA2495BA648485BA490B5FCEBE0004848485AA64848485AA64848485A01
-807F39FFF07FF8221F7E9E22>72 D<3807FF803800F8001378A25BA6485AA6485AA6485A
-A648C7FC7FEAFFF0111F7E9E10>I<3A07FF803FE03A00F8001F000178130C5D4913205D
-5D4AC7FC1402140848485A5C146014F013E1EBE4F83803C878EBD07CEBE03CEBC03E141E
-141F48487E81140781140381380F00016D487E39FFF00FFE231F7E9E23>75
-D<3807FFE0D800FCC7FC1378A25BA6485AA6485AA41580EC0100EA0780A25C1402140614
-0E380F001E147CB512FC191F7E9E1C>I<D807F8EC7FE00000ED7C00017814BCA2019C49
-5AA21502A2018E13041508D8010E5C1510A26D1320A215400002EC41E09038038081EC81
-01A21482A23A0401C403C0A214C8A2EB00F0000C13E04B5A001E01C07FD8FFC0EB7FFC2B
-1F7E9E2A>I<D807F8EB7FC0D8007CEB1F00150C015E1304019E5B138FA2EB8780A2EB83
-C0D801035BEB01E0A2EB00F0A2147800025C143CA2141EA2140F485CEC07C0A21403A214
-01000C5C001E1300B47E221F7E9E22>I<EB01FCEB0E0790383801C090387000E0484813
-F048481378485A153C48C7FC5A001E143E123E123C127CA448147CA3157815F81278EC01
-F0007C14E01403003C14C0001CEB0780001EEB0F006C131E380780383801C0E038007F80
-1F217C9F23>I<0007B5FC3900F803C090387800F015785B157CA41578484813F815F0EC
-01E0EC03C0EC0F00EBFFFCD803C0C7FCA6485AA648C8FC7FEAFFF81E1F7E9E1F>I<3807
-FFFE3900F8078090387801E0EC00F05B15F8A415F03801E00115E0EC03C0EC0780EC1E00
-EBFFF03803C03880141E140EA2140F48485AA51501D80F0013029038800F8239FFF8078C
-C7EA01F020207E9E22>82 D<EB1F82EB7066EBC01E3801800EEA030048130C0006130412
-0EA3000F1300A27FEA07F013FF6C13C06C13E038003FF0EB03F813001478143CA2004013
-38A3143000601370146000F013C038E8018038C60300EA81FC17217E9F19>I<003FB512
-F0383C078000301430126039400F0010A212C01280A3D8001E1300A65BA65BA65B7F383F
-FFE01C1F7A9E21>I<39FFF00FF8391F0003E06CEB01801400001EEB0100A6481302A648
-5BA600705BA25CA200785B1238001813C06C48C7FCEA0706EA01F81D20799E22>I<3BFF
-F07FF81FF03B1F000FC007C0001E903907800380001FED01006C1502140F5EEC17C00213
-5B142301805C000713435E14C3913883E0401481D981015B13C1D803C213E193C7FC13C4
-15F2EBC80015F4EA01F015F85B5D5B15605B000014402C207A9E2F>87
-D<EA07F8EA0C0CEA1E061307121C1200A313FFEA07C7EA1E07EA3C0E127800F01310A313
-1EEB2E2038784F40381F878014147D9317>97 D<1207123F120F7EA2120EA65A137CEA1D
-83381E0180001C13C0EB00E05A14F0A5387001E0A214C013031480EB0700EAE80EEACC38
-EA83E014207B9F19>I<13FEEA0383380E0780121C0038130090C7FC12785AA45AA37E5B
-EA70026C5AEA1C18EA07E011147D9314>I<1438EB01F8EB00781438A21470A614E013FC
-EA0382EA0601121CEA3C00383801C0127812F0A438E00380A412F0EA700738380F00381C
-37803807C7E015207D9F19>I<13F8EA070EEA0E07381C038012381278127012F0B5FC00
-F0C7FCA25AA46C5AEA7002EA3004EA1C18EA07E011147D9314>I<EB07C0EB1C60EB30F0
-1360EBE0E0EBC0001201A5485AEA3FFCEA0380A448C7FCA6120EA65A121EEAFFC014207F
-9F0E>I<140EEB3E11EBE1A33801C1C2380381E0EA07801301120FA3380703C01480EB87
-00EA04FC48C7FCA21218121CEA0FFF14C014E0381800F04813305A5AA3006013606C13C0
-381C0700EA07FC181F809417>I<13E0120712011200A2485AA6485AEB8F80EB90E013A0
-EBC0601380000713E01300A5380E01C0A6381C0380001E13C038FF8FF014207E9F19>I<
-EA01C0EA03E0A213C0EA0180C7FCA6EA0380121F12071203A2EA0700A6120EA65A121EEA
-FF800B1F7F9E0C>I<13E0120712011200A2485AA6485AEB81FCEB80F014C0EB81801400
-EA07045B13181338137C131C120E7FA2130F7F1480EA1C03381E07C038FF8FF016207E9F
-18>107 D<13E0120712011200A2EA01C0A6EA0380A6EA0700A6120EA65A121EEAFF800B
-207F9F0C>I<390387C07C391F9861863907A072073903C03403EB80380007EB7807EB00
-70A5000EEBE00EA64848485A001EEBE01E3AFFCFFCFFC022147E9326>I<38038F80381F
-90E0EA07A03803C0601380000713E01300A5380E01C0A6381C0380001E13C038FF8FF014
-147E9319>I<13FCEA0387380E0180381C00C04813E0A24813F012F0A438E001E0A214C0
-130300F0138038700700EA380E6C5AEA07E014147D9317>I<EBE3E03807EC383801F01C
-6C487E140F48487E1580A53903800F00A2140E141E141C5C38074070EB61C0011FC7FC90
-C8FCA3120EA4121EEAFFC0191D809319>I<EBFC2038038260EA0702381E01E0123C0038
-13C0127812F0A438E00380A212F0A21307127038380F00EA1C37EA07C7EA0007A3130EA4
-131EEBFFC0131D7D9318>I<EA038E381FB380EA07C71203EB8300EA078090C7FCA5120E
-A65A121EEAFFC011147E9312>I<EA01F9EA0607EA080312181301EA3802EA3C00121F13
-F0EA07FCEA01FEEA001FEA40071303A212601306EAF004EAC818EA87E010147F9312>I<
-1380EA0100A35A5A5A121EEAFFF8EA0E00A45AA65A1310A41320A2EA1840EA0F800D1C7C
-9B12>I<381C0380EAFC1FEA3C07EA1C03A238380700A6EA700EA4131EA25BEA305E381F
-9F8011147B9319>I<38FF83F8381E00E0001C13C01480121E380E01005B13025B12075B
-A25BEA039013A013E05B5B120190C7FC15147C9318>I<39FF9FE1FC393C078070391C03
-0060148015401580EA0E0790380D81001309EB19C21311380F21C4EA0720EB40C814E8EB
-80F0A26C485A1460000213401E147C9321>I<381FF0FF3803C0780001137014403800E0
-C0EBE180EB73001376133CA2131C132E134E1387EA0107380203801204380C01C0383C03
-E038FE07FC18147F9318>I<390FF83F803901E00E00EBC00C140813E000005B14301420
-5C13705CA20171C7FC1339133A133E133C133813181310A25BA25BEA70C0EAF08000F1C8
-FC12E61278191D809318>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fl cmti10 10.95 20
-/Fl 20 122 df<EC3FE0ECE010903801803801031378A290380700301500A3130EA390B5
-12E0EB0E0090381C01C0A4EC03801338A3EC0700A2137801701310EC0E20A313609038E0
-0640EC038091C7FC5BA21201EA3180127948C8FC1262123C1D29829F1A>12
-D<127012F8A212F012E005057B840E>46 D<EBF180380389C038070780EA0E03121C123C
-383807001278A3EAF00EA31420EB1C40A2EA703C135C38308C80380F070013147C9317>
-97 D<137EEA01C138030080EA0E07121E001C1300003CC7FC5AA35AA45B12701302EA30
-0CEA1830EA07C011147C9315>99 D<1478EB03F8EB0070A414E0A4EB01C0A213F1EA0389
-38070780EA0E03121C123C383807001278A3EAF00EA31420EB1C40A2EA703C135C38308C
-80380F070015207C9F17>I<137CEA01C2EA0701120E121C123CEA3802EA780CEA7FF0EA
-78005AA4EA7001A21302EA380CEA1830EA07C010147C9315>I<EB3C60EBE2703801C1E0
-EA0380EA07005A380E01C0121EA3383C0380A4EB0700A2EA1C0F1317EA0C2EEA03CEEA00
-0EA25BA21230EA7838485AEA60E0EA3F80141D7E9315>103 D<13C0EA01E0A213C0C7FC
-A7120E12131223EA4380EA4700A21287120EA35AA3EA38401380A21270EA31001232121C
-0B1F7C9E0E>105 D<EA03C0121FEA0380A4EA0700A4120EA45AA45AA45AA3127112E2A4
-126412380A207C9F0C>108 D<391C0F80F0392630C318394740640C903880680EEB0070
-A2008E495A120EA34848485AA3ED70803A3803807100A215E115623970070064D8300313
-3821147C9325>I<381C0F80382630C0384740601380EB0070A2008E13E0120EA3381C01
-C0A3EB038400381388A2EB0708EB031000701330383001C016147C931A>I<137CEA01C3
-38030180000E13C0121E001C13E0123C1278A338F003C0A3EB07801400EA700F130EEA30
-18EA1870EA07C013147C9317>I<3801C1E0380262183804741C1378EB701EA2EA08E012
-00A33801C03CA3143838038078147014E0EBC1C038072380EB1E0090C7FCA2120EA45AA2
-B47E171D809317>I<EA1C1EEA266138278380EA47871307EB0300008EC7FC120EA35AA4
-5AA45A123011147C9313>114 D<13FCEA0302EA0601EA0C03130713061300EA0F8013F0
-EA07F8EA03FCEA003E130E1270EAF00CA2EAE008EA4010EA2060EA1F8010147D9313>I<
-EA018013C0EA0380A4EA0700A2EAFFF0EA0700120EA45AA45AA31320EA7040A21380A2EA
-3100121E0C1C7C9B0F>I<000E13C0001313E0382301C0EA4381EA4701A238870380120E
-A3381C0700A31410EB0E201218A2381C1E40EA0C263807C38014147C9318>I<380E0380
-EA1307002313C0EA4383EA4701130000871380120EA3381C0100A31302A25BA25BEA0E30
-EA03C012147C9315>I<000EEBC1C0001313E3392301C3E0384381C1384701C015603987
-038040120EA3391C070080A3EC0100A21306EB0F02000C5B380E13083803E1F01B147C93
-1E>I<000E13C0001313E0382301C0EA4381EA4701A238870380120EA3381C0700A4130E
-1218A2EA1C1EEA0C3CEA07DCEA001CA25B12F05BEAE060485AEA4380003EC7FC131D7C93
-16>121 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fm cmr8 8 29
-/Fm 29 118 df<126012F0A212701210A21220A21240A2040A7D960A>39
-D<EAFF80A2090280870C>45 D<1206120E12FE120EB1EAFFE00B157D9412>49
-D<13101338A3135CA3138EA3EA0107A238020380A33807FFC0EA0401A2380800E0A20018
-13F0123838FE03FE17177F961A>65 D<EAFFFE381C0380EB00E014601470A414E0EB01C0
-381FFF8014C0381C00E0147014301438A4147014E0EB01C0B5120015177F9619>I<EBFC
-1038038330380E00B0481370481330123000701310126012E01400A51410126012700030
-132012386C13406C138038038300EA00FC14177E9619>I<B5FC381C01C0EB00E0143014
-381418141C140C140EA7140C141CA2143814301460EB01C0B5120017177F961B>I<B512
-E0EA1C00146014201410A3EB0400A3130CEA1FFCEA1C0C13041408A2130014181410A214
-3014F0B5FC15177F9618>I<B512E0EA1C00146014201410A3EB0400A3130CEA1FFCEA1C
-0C1304A390C7FCA6EAFFC014177F9617>I<EAFFC0001CC7FCAD1420A31460A2144014C0
-1303B5FC13177F9616>76 D<00FEEB03F8001E14C000171305A338138009A23811C011A3
-3810E021A2EB7041A3EB3881A2EB1D01A2130EA2123839FE040FF81D177F9620>I<EAFF
-FE381C0380EB00C014601470A4146014C0EB0380381FFE00001CC7FCAAB47E14177F9618
->80 D<EAFFFC381C0380EB00C014E01470A414E014C0EB0380381FFE00381C0780EB01C0
-EB00E0A514E1A2147238FF803C18177F961A>82 D<EA0FC4EA302CEA601CEA400CEAC004
-A3EAE0001270127FEA3FE0EA0FF8EA01FCEA001C130E13061280A3EAC004EAE008EAD810
-EA87E00F177E9614>I<387FFFF83860381800401308A200801304A300001300AF3803FF
-8016177F9619>I<12FCA212C0B3AB12FCA206217D980A>91 D<EA3FC0EA70601330EA20
-381200EA03F8EA1E3812301270EAE039A21379EA70FFEA1F1E100E7F8D12>97
-D<12F81238A8EA39F0EA3E0CEA380613077F1480A414005B1306EA361CEA21F011177F96
-14>I<EA07F0EA18381230EA7010EA600012E0A41260EA70081230EA1830EA07C00D0E7F
-8D10>I<EA0FC0EA1860EA3030EA7038EAE018EAFFF8EAE000A31260EA7008EA3010EA18
-30EA07C00D0E7F8D10>101 D<1203EA0780A2EA0300C7FCA5EA1F801203AF1243EAE300
-12E7127C091D82960B>106 D<12F81238A8133E13381330134013801239EA3FC0EA39E0
-123813F01378133CA2EAFE7F10177F9613>I<EAF8F8EA3B1CEA3C0E1238AA38FE3F8011
-0E7F8D14>110 D<EA07C0EA1830EA3018EA600CA2EAE00EA5EA701CEA3018EA1830EA07
-C00F0E7F8D12>I<EAF9F0EA3E1CEA380613077F1480A414005B130EEA3E1CEA39F00038
-C7FCA512FE11147F8D14>I<EAF9E0EA3A70123CEA38201300A9B4FC0C0E7F8D0E>114
-D<EA1F40EA60C0EAC040A2EAE000B4FCEA7F80EA1FC0EA01E0EA8060A212C0EAE0C0EA9F
-000B0E7F8D0E>I<1208A31218A21238EAFFC0EA3800A71340A4EA1C80EA0F000A147F93
-0E>I<EAF83EEA380EAA131EEA1C2E3807CF80110E7F8D14>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fn cmsy9 9 2
-/Fn 2 106 df<13801201EA0300A31206A25AA35AA35AA25AA35AA21260A37EA27EA37E
-A37EA27EA3EA0180120009267D9B0F>104 D<12C0A21260A37EA27EA37EA37EA27EA3EA
-0180A2EA0300A31206A25AA35AA35AA25AA35AA209267E9B0F>I
-E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fo cmsltt10 10.95 29
-/Fo 29 122 df<1206120FEA1F80120FA21203EA0700A25A120E123C127C12F01260090E
-769B18>39 D<387FFFC0B512E0A26C13C013047C8F18>45 D<133E13FF000313803807C3
-C0EA0F01000E13E0EA1C00123C003813F014705AA34813E0A4EB01C0A2130300F01380EA
-7007EB0F00EA781E6C5AEA1FF85BEA07C0141C7C9B18>48 D<13181338A2137813F81203
-120F137012041200A413E0A6EA01C0A6EA7FFE12FF127F0F1C7B9B18>I<EB3E18EBFFB8
-4813F8EA07C1EB8078EA0E00121E001C137048133014005AA35AA614C0EA7001A2130338
-380780383C0F00EA1FFE6C5AEA03F0151C7C9B18>67 D<3807FFC014E014F03801C0F814
-78143C141CEA0380141EA2140EA33807001CA4143C1438120E147014F0EB01E0EB03C013
-07387FFF8038FFFE00EA7FF8171C7F9B18>I<0007B5FC5A7E3801C007A3140638038000
-A2EB818014C0A213FF481380A21303A2140090C7FC120E140C141CA4387FFFF8B5FC7E18
-1C7F9B18>I<EB1FF8EB3FFCEB1FF8EB01C0A4EB0380A6EB0700A6130EA2124012E06C5A
-EAE03CEAFFF86C5AEA1FC0161C7C9B18>74 D<EA07FC487E6C5AEA01C0A4485AA648C7FC
-A6120E14301470A4B512E0A3141C7E9B18>76 D<3907E01F80000FEB3FC0000714803903
-B02E00146EA214CE380730DC1331149CA21333141C000E5B13371336133E133C131848C6
-5AA638FE03F800FF7F00FE5B1A1C7F9B18>I<126012F0A37E1278A3127C123CA3123E12
-1EA3121F7EA313801207A313C01203A413E01201A313F0120013600C24789F18>92
-D<387FFFC0B512E0A26C13C013047E7F18>95 D<EA03FC48B4FC4813801303380601C012
-00A2137FEA07FF121FEA3F813878038012F012E0A21307EA701F387FFFF0EA3FFBEA0FE1
-14147D9318>97 D<127EA3120EA45A137CEA1DFF001F13801383381E01C0123CEB00E012
-38A4387801C0A2EB0380A2EB0F00EA7C1FEAFFFCEAEFF8EA63E0131C7C9B18>I<EB07E0
-A31300A4EB01C0EA01F1EA07FDEA0FFFEA1E0FEA3C0738780380127012E0A4EB0700A25B
-5B6C5AEA787F383FFFC0381FEFE0380F87C0131C7C9B18>100 D<13F8EA07FE487E381F
-0780EA3C03387801C0127012E0A2B5FCA2148000E0C7FCA213033870078038780F00EA3F
-FE6C5AEA07F012147B9318>I<EB01F8EB07FC131FEB1E3CEB38181400A25B381FFFF05A
-7E38007000A25BA6485AA6EA7FFE12FF127F161C7E9B18>I<EB1E1F90387FFF8090B5FC
-3901E1E3003803C0E01380EA0700A3495AA238038780EA07FF49C7FCEA0E7890C8FCA26C
-B47E4813E0487F383C007848133812705AA2147800705B387C03E0383FFFC0000F90C7FC
-EA03FC191F809318>I<14C0EB01E013031301EB00C01400A4EBFFC0A31301A2EB0380A6
-EB0700A6130EA65BA2EA6038EAF078B45A5BEA3F8013277F9C18>106
-D<EA07E0120F12071200A4485AEBC7FEA3EBC1E0EBC3C038038780EB8F00139E13BC13FE
-13EEEA07CF1387EB0780130314C01301387FC7F838FFE7FC387FC7F8171C7F9B18>I<EA
-0FFCA3EA001CA45BA65BA65BA6B5128014C01480121C7D9B18>I<13FCEA03FF000F1380
-EA1F07383C03C0EA7801007013E0EAE000A4EB01C0A2EB0380EAF007EB0F00EA7C3EEA3F
-FC6C5AEA07E013147C9318>111 D<EBF8C0EA03FDEA0FFFEA1F0FEA3C07387803801270
-12E0A4EB0700A25BA26C5AEA787FEA3FFEEA1FEEEA078EEA000EA35BA43801FF80A3121E
-7C9318>113 D<381FE1F8EBE7FCEBEFFE3800FE1EEBFC0C3801F8005B5B5BA3485AA6EA
-FFFC7F5B17147E9318>I<EBFE603807FFE05AEA1F01121C003813C0EA3C00001F1300EA
-0FF8EA07FE3800FF801307383001C01270A238780380EA7C07B51200EAEFFEEA63F81314
-7D9318>I<387E07E0EAFE0FEA7E07EA0E00A2381C01C0A638380380A41307131F383FFF
-E06C13F03807E3E014147D9318>117 D<38FF87F8138F1387383800E0EB01C0A3148013
-E3EA39F31233EB7700A212371376EA3666136EEA3C7CA2EA383815147C9318>119
-D<381FE3FC13E713E33803C3C000011380EBE700EA00EE13FC137C1338137813FCEA01DC
-EA038E12071307120E38FF1FE0EB9FF0EB1FE016147E9318>I<380FF1FE381FF9FF380F
-F1FE3803807013C0000113E0A213C114C0A23800E380A2EBE700A213E6136E136C137C13
-78A21370A25BA2485A12F3EAF780B4C7FC5A1278181E7F9318>I
-E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fp cmcsc10 10.95 12
-/Fp 12 121 df<1318A2133CA3134EA213CF1387A238010380A2000313C0EA0201A23807
-FFE0EA0400A2481370A2001813380038137838FE01FF18177F961C>97
-D<EB7E083803819838070078000C1338001C13185A00781308127000F01300A700701308
-127812386C1310120C000713603803818038007E0015177E961B>99
-D<B512C0EA1C011300144014601420A213081400A21318EA1FF8EA1C1813081410A21300
-14301420A21460EB01E0B5FC14177E9619>101 D<B512C0EA1C011300144014601420A2
-13081400A21318EA1FF8EA1C181308A390C7FCA6EAFFC013177E9618>I<EB7E08380381
-9838070078000C1338001C13185A00781308127000F01300A5EB03FEEB00381270127812
-387E120C1207380380D838007F0817177E961D>I<EAFF80EA1C00B3A3EAFF8009177E96
-0E>105 D<38FC01FC381E007014201217EA1380A2EA11C0EA10E0A213701338A2131C13
-0E1307A2EB03A0EB01E0A213001460123800FE132016177E961C>110
-D<13FE38038380380E00E0481370003C1378003813380078133C0070131C00F0131EA700
-70131C0078133C00381338003C1378001C13706C13E0380383803800FE0017177E961D>
-I<EAFFFCEA1C07EB03C0130114E0A414C01303EB0700EA1FFC001CC7FCAAB47E13177E96
-19>I<EA0FC4EA302CEA601CEA400CEAC004A3EAE0001270127FEA3FE0EA0FF8EA01FCEA
-001C130E13061280A3EAC004EAE008EAD810EA87E00F177E9615>115
-D<38FF81FC381C00701420B0000C1340120E6C138038018300EA007C16177E961C>117
-D<38FF80FE381F0070000E13606C1340EB80803803C100EA01C3EA00E213F4137813387F
-133E134E13C7EB8780380103C0EA0201380600E0000413F0000C1370003C137800FE13FF
-18177F961C>120 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fq cmbx12 17.28 34
-/Fq 34 121 df<EB01C01303130F137FEA1FFFB5FC13BFEAE03F1200B3B1007FB512F0A3
-1C2E7AAD28>49 D<EB3FE03801FFFE0007EBFF80D80F8013C0391E003FE00038EB1FF000
-7CEB0FF8007EEB07FCB4FC018013FEA21403A2EA7F00003E1307C7FC15FCA2EC0FF8A215
-F0EC1FE015C0EC3F80EC7F00147E14F8495A495A495A49C7FC011E130E5B133849131E49
-131C485A48C7123C48B512FC5A5A5A4814F8B6FCA31F2E7CAD28>I<913A03FF80018002
-3FEBF00349B5EAFC0701079038003F0FD91FF8EB079FD93FC0EB01FFD9FF807F4848C812
-7F4848153F0007161F49150F485A001F1607A2485A1703127FA24992C7FCA212FFA9127F
-A27FEF0380123FA26C7E1707000F17006C7E6D150E0003161E6C6C151C6C6C6C1478D93F
-C05CD91FF8EB03E0D907FFEB3F800101D9FFFEC7FCD9003F13F80203138031317CB03A>
-67 D<B812F0A3C6903880003FEE07F816031600A21778A21738A3171C1507A31700A25D
-5D5D91B5FCA3EC803F818181A21707A392C7120EA4171EA2173CA2177C17FC1601160716
-3FB812F8A330317EB035>69 D<B812E0A3C6903880007FEE0FF016031601A21600A21770
-A31738A21507A21700A35D5D5D91B5FCA3EC803F818181A592C8FCACB612C0A32D317EB0
-33>I<DA03FF1303027FEBF00749B5EAFC0F01079038007E1FD91FF0EB0FBFD97FC0EB03
-FF49487F4848C87E485A0007824848815B001F82A2484881A2127FA24992C7FC12FFAA03
-07B512F8127F7FDB00011300123FA26C7EA2120F7F6C7E12036C7E6C6C7E6D6C5BD91FF8
-497ED907FFEB3E3F01019038FFFC1F6D6CEBF00F0203EB800335317CB03F>I<B61280A3
-C6EB8000B3B3A7B61280A319317EB01E>73 D<B67EA3000190C9FCB3A9EE0380A4160717
-00A25EA35E5E5E5E4B5A150FB7FCA329317DB030>76 D<B56C49B512C08080C66D903900
-03E0006E6E5AEBEFFC13E780EBE3FF01E17F01E07F6E7E143F816E7E6E7E6E7E14036E7E
-16806E13C0ED7FE0ED3FF0151F16F8ED0FFCED07FEED03FF6F13818117C1EE7FE1EE3FF1
-EE1FF9EE0FFD160717FF828282177F173FA2171F170F486C1507B500E014031701A23A31
-7EB03F>78 D<B712E016FEEEFF80C6D9800013E0EE3FF0EE0FF8EE07FCA2EE03FEA217FF
-A717FEA2EE07FC17F8160FEE3FE0EEFFC091B6120016F80280C8FCB3A2B67EA330317EB0
-37>80 D<B77E16F816FEC690398003FF809238007FE0EE1FF0707EA283160783A65F160F
-5F4C5A4C5A4C5ADB03FFC8FC91B512F816E091388007F8ED01FC6F7E167F83707EA283A5
-83A4F0038017F8161F1900706C5AB6398003FE0E933801FFFC9338001FF039317EB03C>
-82 D<007FB8FCA39039C00FF801D87E00EC003F007C82007882A200708200F01780A348
-1603A5C792C7FCB3AA017FB6FCA331307DAF38>84 D<B6D88003B51280A3C60180C73807
-C000715AB3AE137F4DC7FC80013F150EA26D6C5C6D6C5C6D6C5C6D6C495A903A00FF801F
-C0023FB55A020F49C8FC020013E039317EB03E>I<B500FC91B5FCA3000390C8EA03C06C
-17806E14076C170080017F150EA26E141E013F151C6E143C011F153880010F5D8001075D
-A26E130101035D6E13036D5D15806D4AC7FCA26F5A027F130EEDE01E023F131CEDF03C02
-1F133815F8020F5BA2EDFCF002075B15FF6E5BA26E5BA26E90C8FCA3157EA2153CA23831
-7EB03D>I<EBFFF0000313FF390F803F809038C00FE0486C6C7EA26E7ED80FC07FEA0780
-C7FCA414FF131FEBFFE33803FC03EA0FF0EA1FC0123FEA7F80A2EAFF00A31407A2387F80
-0D393FC01DFE3A1FE078FFF03907FFE07FC6EB803F24207E9F27>97
-D<EA01F812FFA3120F1207ADEC3FE0ECFFFC9038FBE07F9039FF001F8049EB0FC04914E0
-49EB07F016F8A2ED03FCA316FEA816FCA3ED07F8A216F06DEB0FE06D14C001E7EB3F8090
-39C3C0FE00903880FFF89038003FC027327EB12D>I<EB0FFF017F13C03901FC01F03803
-F0033907E007F8120FEA1FC0003FEB03F0EC01E04848C7FCA312FFA8127FA36C6C131CA2
-001F14386C7E000714703903F001E03901FC07C039007FFF00EB0FF81E207D9F24>I<ED
-0FC0EC07FFA3EC007F153FADEB07F8EB3FFF9038FE07BF3903F801FF3907E0007F120F48
-48133F123FA2485AA312FFA8127FA36C7EA2121F6C6C137F000714FF2603F00313E03A01
-FC0F3FFE38007FFEEB0FF027327DB12D>I<EB0FFC90387FFF803901FC0FC03903F003E0
-3907E001F0000F14F8391FC000FC003F14FEA24848137E157FA212FFA290B6FCA20180C7
-FCA4127FA36C6C1307121F150E6C7E6C6C131C6C6C13783900FE03E090383FFFC0903807
-FE0020207E9F25>I<EB01FE90380FFF8090381FC3C090387F07E09038FE0FF0120113FC
-1203EC07E0EC018091C7FCA8B512FCA3D803FCC7FCB3A8387FFFF0A31C327EB119>I<90
-391FF007C09039FFFE3FE03A01F83F79F03907E00FC3000F14E19039C007E0E0001FECF0
-00A2003F80A5001F5CA2000F5CEBE00F00075C2603F83FC7FC3806FFFE380E1FF090C9FC
-121EA2121F7F90B57E6C14F015FC6C806C801680000F15C0003FC7127F007EEC1FE0007C
-140F00FC1407A4007EEC0FC0003E1580003F141FD80FC0EB7E003907F803FC0001B512F0
-D8001F90C7FC242F7E9F28>I<EA01F812FFA3120F1207ADEC07F8EC3FFEEC783F02C013
-809039F9801FC0EBFB0001FE14E05BA35BB3B500C3B5FCA328327DB12D>I<EA03C0487E
-487E487EA46C5A6C5A6C5AC8FCA9EA01F8127FA31207B3A7B51280A311337DB217>I<EA
-01F812FFA3120F1207B3B3A6B512C0A312327DB117>108 D<2703F007F8EB1FE000FFD9
-3FFEEBFFF8913A783F01E0FC02C090388300FE280FF1801FC6137F2607F30013CC01F602
-F8148001FC5CA3495CB3B500C3B5380FFFFCA33E207D9F43>I<3903F007F800FFEB3FFE
-EC783F02C013803A0FF1801FC03807F30001F614E013FCA35BB3B500C3B5FCA328207D9F
-2D>I<EB07FC90387FFFC03901FC07F03903F001F848486C7E4848137E001F147F003F15
-8049133F007F15C0A300FF15E0A8007F15C0A36C6CEB7F80A2001F15006C6C13FE00075C
-3903F803F83901FE0FF039007FFFC0D907FCC7FC23207E9F28>I<3901F83FE000FFEBFF
-FC9038FBE07F9039FF003F80D80FFEEB1FC06C48EB0FE04914F0ED07F8A216FC1503A216
-FEA816FC1507A216F8A2ED0FF06D14E06DEB1FC06DEB3F809039FBC0FE009038F8FFF8EC
-3FC091C8FCABB512C0A3272E7E9F2D>I<3803F03F00FFEB7FC09038F1C3E01487390FF3
-0FF0EA07F6A29038FC07E0EC03C091C7FCA25BB2B512E0A31C207E9F21>114
-D<3801FF86000713FEEA1F00003C133E48131E140E12F8A36C90C7FCB47E13FC387FFFC0
-6C13F0806C7F00077F00017FEA003F01001380143F0060131F00E0130FA27E15007E6C13
-1E6C131C38FF807838F3FFF038C07F8019207D9F20>I<131CA5133CA3137CA213FC1201
-12031207381FFFFEB5FCA2D803FCC7FCB0EC0380A71201EC0700EA00FEEB7F0EEB3FFCEB
-07F0192E7FAD1F>I<D801F8EB07E000FFEB03FFA3000FEB003F0007141FB3153FA20003
-147FA26C6CEBDFF03A00FE039FFF90387FFF1FEB0FFC28207D9F2D>I<B53A1FFFE03FF8
-A33C0FF000FE0007806D150300076EEB0700816D5D00039138FF800EA26C6C486D5A15DF
-01FF153C6C9039038FE038A2D97F876D5A150702C714F0D93FCF6D5AECCE03D91FFEEBF9
-C09138FC01FD16FF010F5D4A7EA26D486DC7FCA20103147E4A133EA26D48131C35207E9F
-3A>119 D<3A7FFF807FFCA33A03FC000F006C6C131E6C6C5BEC803890387FC078013F5B
-90381FE1E090380FF3C0ECFF806D90C7FC6D5A13016D7E81815B903803DFE09038078FF0
-8190380F07FC90381E03FEEB3C01496C7E4914804848EB7FC00003EC3FE026FFFC01B5FC
-A328207F9F2B>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fr cmsy10 10.95 1
-/Fr 1 14 df<14FE903807FFC090381F01F0903878003C01E0130ED80180130348C7EA01
-800006EC00C0481560A2481530481518A248150CA4481506A90060150CA46C1518A26C15
-306C1560A26C15C06CEC01806C6CEB0300D800E0130E0178133C90381F01F0903807FFC0
-D900FEC7FC272B7DA02E>13 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fs cmbx12 14.4 55
-/Fs 55 122 df<123C127FEAFF80A213C0A3127F123E1200A2EA0180A3EA0300A2120612
-0E5A5A12100A157B8813>44 D<121C127FA2EAFF80A3EA7F00A2121C09097B8813>46
-D<130E131E137EEA07FE12FFA212F81200B3ABB512FEA317277BA622>49
-D<EBFF80000713F04813FC381E03FE393800FF80007C133F00FE14C06C131F15E0140FA2
-127E003C131FC7FC15C0A2EC3F801500147E5C5C495A495AEB078049C7FC131E4913E013
-705B3901C001C0EA0380EA0600000FB5FC5A5A5AB61280A31B277DA622>I<EB7F803803
-FFF04813FC380F81FE381F007FEA3F80EC3F80A3121F1300C7EA7F00A2147E5C495AEB07
-F0EBFFC0A2EB01F8EB007E801580EC1FC0A215E0A2123C127EB4FCA215C0143F48148000
-7CEB7F00383F01FE6CB45A000713F0C613801B277DA622>I<140FA25C5C5C5C5BA2EB03
-BFEB073F130E131C133C1338137013E0EA01C0EA038012071300120E5A5A5A12F0B612F8
-A3C7EA7F00A890381FFFF8A31D277EA622>I<00181303381F801FEBFFFE5C5C5C14C091
-C7FC001CC8FCA7EB7FC0381DFFF8381F80FC381E003F1208C7EA1F8015C0A215E0A21218
-127C12FEA315C05A0078EB3F80A26CEB7F00381F01FE6CB45A000313F0C613801B277DA6
-22>I<EB07F8EB3FFE90B5FC3901FC07803903F00FC03807C01FEA0F80121F130048EB0F
-8091C7FC127EA3EAFE02EB1FF0EB3FFCEB603EEB801F00FF14809038000FC0A24814E0A4
-127EA4123E003F14C07EEC1F80D80F8013003807E07E6CB45A6C5B38003FC01B277DA622
->I<1238123E003FB512F0A34814E015C0158015003870000EA25C485B5C5CC6485AA249
-5A130791C7FC5B5B131E133EA2137E137CA213FCA41201A76C5A13701C297CA822>I<EB
-7F803801FFF000077F380FC0FC381F803E48487E007E1480A2140F00FE14C0A315E0A500
-7E131FA26C133F6C132F380F80CF3807FF8F0001130FEA0008010013C0A3EC1F80123E12
-7FEC3F00143E147E007E5B383E03F8381FFFE06C1380D801FEC7FC1B277DA622>57
-D<EC0780A24A7EA34A7EA24A7EA3EC77F8A2ECF7FC14E3A2903801C1FEA201037F1480A2
-49486C7EA24980010E133FA2496D7EA2013FB57EA39039700007F8A201F0804913030001
-81491301A2000381D8FFFE013F13FCA32E297EA833>65 D<B612F815FF16C03A03F8001F
-E0ED0FF0ED07F8150316FCA21501A3150316F8A2ED07F0150FED1FC0EDFF8090B5EAFE00
-EDFFC09039F8000FF0ED03F8ED01FC16FE1500A216FFA616FE1501ED03FC1507ED1FF8B7
-12E016C0EDFE0028297DA830>I<91387FE003903907FFFC07011FEBFF0F90397FF00F9F
-9039FF0001FFD801FC7F4848147F4848143F4848141F485A160F485A1607127FA290C9FC
-5AA97E7F1607123FA26C7E160E6C7E6C6C141C6C6C143C6C6C14786CB4EB01F090397FF0
-07C0011FB512800107EBFE009038007FF028297CA831>I<B612FCEDFF8016E03A03FC00
-1FF8ED03FCED00FE167FEE3F80EE1FC0A2EE0FE0A2EE07F0A417F8AA17F0A3EE0FE0A217
-C0161FEE3F80EE7F005EED03FCED1FF8B75A168003FCC7FC2D297EA834>I<B712E0A339
-03FC001FED07F01501A215001670A3913801C0781638A302031300A2140F90B5FCA3EBFC
-0F1403A20201130EA3161C91C7FCA3163C1638167816F815011503151FB712F0A327297E
-A82C>I<B712C0A33903FC003FED0FE015031501A21500A316F0913801C070A316001403
-A2140F90B5FCA3EBFC0F1403A21401A491C8FCA9B512FCA324297EA82A>I<91387FE003
-903907FFFC07011FEBFF0F90397FF00F9F9039FF0001FFD801FC7F484880484880484880
-485A82485A82127FA290CAFC5AA892B512F87E7F03001300123FA26C7EA26C7E6C7E6C7E
-6C7E6CB45B90387FF007011FB5129F0107EBFE0F9039007FF0032D297CA835>I<B5D8F0
-0FB5FCA3D803FCC7EA3FC0AF90B7FCA301FCC7123FB1B5D8F00FB5FCA330297EA835>I<
-B512F0A33803FC00B3B1B512F0A314297EA819>I<B500F0EBFFFEA3D803FCC7EA0F0016
-1E5E5E16E0ED03C04B5A4BC7FC151E5D15F04A5A4A5A1407140F4A7EEC7FF04A7EEBFDE7
-9038FFC3FCEC83FE9038FE01FF497E6F7E826F7E151F6F7E8215076F7E6F7E8281EE7F80
-B539F00FFFFEA32F297EA835>75 D<B512FCA3D803FCC8FCB3A3ED01C0A415031680A215
-07A2150FA2151F157F913801FF00B7FCA322297EA828>I<D8FFFE92383FFF80A26D5D00
-03EFE000A2D9BF8014EFA2D99FC0EB01CFA2D98FE0EB038FA3D987F0EB070FA2D983F813
-0EA2D981FC131CA3D980FE1338A2027F1370A291383F80E0A391381FC1C0A291380FE380
-A2913807F700A3EC03FEA26E5AA26E5AD8FFFE0203B51280A2157039297DA840>I<D8FF
-FCEC7FFF7F7F00036DEB01C080EBBFE0139F80EB8FF8EB87FCEB83FEEB81FF0180138014
-7F15C0EC3FE0EC1FF0EC0FF8EC07FC140315FEEC01FF6E1381ED7FC1ED3FE1ED1FF1150F
-16F9ED07FDED03FF8181167FA2163F161F160F1607D8FFFE14031601A230297EA835>I<
-ECFFC0010F13FC90383F807F9039FE001FC0D801F8EB07E048486D7E48486D7E000F8148
-486D7EA24848147FA2007F168090C8123FA34816C0AA6C16806D147FA2003F1600A26C6C
-14FEA26C6C495A6C6C495A6C6C495A6C6C495A6C6C495A90263FC0FFC7FC90380FFFFC01
-0013C02A297CA833>I<B612F815FF16C03A03FC003FE0ED07F0ED03F816FC150116FEA7
-16FC150316F8ED07F0ED3FE090B61280EDFE0001FCC8FCB0B512F0A327297EA82E>I<EC
-FFC0010F13FC90383FC0FF9039FE001FC048486D7ED803F0EB03F000078148486D7E4848
-6D7EA24848147FA2007F1680A290C8123FA24816C0AA6C16806D147FA2003F1600A26C6C
-14FE143E3A0FE07F81FC00079038C1C1F83A03F18063F0D801F9EB67E0D800FFEB3FC090
-263FC07FC7FC90380FFFFC01004913C0EC003C811601ED1F8316FF6F1380A21700816F5A
-6F5A6F5A2A357CA833>I<B612E015FE6F7E3A03FC003FE0ED0FF06F7E6F7E150182A65E
-4B5A1507ED0FE0ED3FC090B500FEC7FCA29039FC00FF80ED3FC06F7E6F7E6F7EA9170EA2
-1503923801FC1CB538F000FEEE7FF8EE0FE02F297EA832>I<9038FF80600003EBF0E000
-0F13F8381F80FD383F001F003E1307481303A200FC1301A214007EA26C140013C0EA7FFC
-EBFFE06C13F86C13FE80000714806C14C0C6FC010F13E0EB007FEC1FF0140F140700E013
-03A46C14E0A26C13076C14C0B4EB0F80EBE03F39E3FFFE0000E15B38C01FF01C297CA825
->I<007FB71280A39039807F807FD87C00140F00781507A20070150300F016C0A2481501
-A5C791C7FCB3A490B612C0A32A287EA72F>I<B500F0EBFFFEA3D803FCC7EA0380B3AA00
-01ED07007F0000150E137F6D143CD91FC05B90390FF003F06DB55A01001480DA1FFCC7FC
-2F297EA834>I<B500F0EB7FFFA3D803FEC7EA01C00001ED0380A26D14076C16006E5B01
-7F140E80013F5CA26E133C011F14386E1378010F14708001075CA26D6C485AA2ECFE0301
-015CECFF076D91C7FC1587EC7F8EA215DEEC3FDC15FC6E5AA26E5AA36E5AA26E5AA23029
-7FA833>I<B53CE07FFFE01FFFC0A32803FC0003FCC7EA7000A26D6D7E000160A26D6E13
-016C604B138002801503017F5F4B13C0D93FC0013F49C7FCA2913AE00E1FE00F011F160E
-17F09126F01C0F131E010F161C033C13F8902707F838075BA2037813FC902703FC70035B
-A2913AFEE001FEF001015E02FF14FF4B7E6D5EA26E486D5AA36EC76CC8FCA2023E80021E
-141EA242297FA845>I<B500F0EB3FFFA3D803FEC7EA03C06C6C15806C6DEB07005E6D6C
-130E6E5B013F143C6D6C13386E5B010F14F06D6C5B6E485A01031303D901FF5B0387C7FC
-6D138FEC7FCE15FC143F6E5A5D140FAE0103B512C0A330297FA833>89
-D<3803FF80000F13F0381F01FC383F80FE147F801580EA1F00C7FCA4EB3FFF3801FC3FEA
-0FE0EA1F80EA3F00127E5AA4145F007E13DF393F839FFC381FFE0F3803FC031E1B7E9A21
->97 D<EAFFE0A3120FACEBE1FE9038EFFF809038FE07E09038F803F09038F001F89038E0
-00FCA2157EA2157FA8157EA315FCA29038F001F89038F803F090389C0FE090380FFF8039
-0E01FC00202A7EA925>I<EB3FF03801FFFC3803F03E380FC07FEA1F80EA3F00A248133E
-007E90C7FCA212FEA7127EA2127F6CEB03801380001FEB0700380FE00E3803F83C3801FF
-F838003FC0191B7E9A1E>I<EC7FF0A31407ACEB3F873801FFF73807F03F380FC00F381F
-8007EA3F00A2127EA312FEA8127EA27EA2381F800F380FC01F3907E07FFF3801FFE73800
-7F87202A7EA925>I<EB3FC03801FFF03803E07C380F803E001F7F130048EB0F80127E15
-C0A200FE1307A2B6FCA248C8FCA3127EA2127F6CEB01C07E390F8003803907C007003803
-F01E3800FFFCEB3FE01A1B7E9A1F>I<EB07F8EB3FFCEB7E3E3801FC7FEA03F813F01207
-143E1400A7B512C0A33807F000B3A3387FFF80A3182A7EA915>I<9038FF80F00003EBE3
-F8390FC1FE1C391F007C7C48137E003EEB3E10007EEB3F00A6003E133E003F137E6C137C
-380FC1F8380BFFE00018138090C8FC1238A2123C383FFFF814FF6C14C06C14E06C14F012
-1F383C0007007CEB01F8481300A4007CEB01F0A2003FEB07E0390FC01F806CB512003800
-7FF01E287E9A22>I<EAFFE0A3120FAC147E9038E1FF809038E30FC001E413E0EBE80701
-F813F013F0A213E0B039FFFE3FFFA3202A7DA925>I<1207EA0F80EA1FC0EA3FE0A3EA1F
-C0EA0F80EA0700C7FCA7EAFFE0A3120FB3A3EAFFFEA30F2B7EAA12>I<EAFFE0A3120FB3
-B2EAFFFEA30F2A7EA912>108 D<26FFC07FEB1FC0903AC1FFC07FF0903AC307E0C1F8D8
-0FC49038F101FC9039C803F20001D801FE7F01D05BA201E05BB03CFFFE3FFF8FFFE0A333
-1B7D9A38>I<38FFC07E9038C1FF809038C30FC0D80FC413E0EBC80701D813F013D0A213
-E0B039FFFE3FFFA3201B7D9A25>I<EB3FE03801FFFC3803F07E390FC01F80391F800FC0
-393F0007E0A2007EEB03F0A300FE14F8A8007E14F0A26CEB07E0A2391F800FC0390FC01F
-803907F07F003801FFFC38003FE01D1B7E9A22>I<38FFE1FE9038EFFF809038FE0FE039
-0FF803F09038F001F801E013FC140015FEA2157FA8157E15FEA215FC140101F013F89038
-F807F09038FC0FE09038EFFF809038E1FC0001E0C7FCA9EAFFFEA320277E9A25>I<38FF
-C1F0EBC7FCEBC63E380FCC7F13D813D0A2EBF03EEBE000B0B5FCA3181B7F9A1B>114
-D<3803FE30380FFFF0EA3E03EA7800127000F01370A27E00FE1300EAFFE06CB4FC14C06C
-13E06C13F0000713F8C6FCEB07FC130000E0137C143C7E14387E6C137038FF01E038E7FF
-C000C11300161B7E9A1B>I<13E0A41201A31203A21207120F381FFFE0B5FCA2380FE000
-AD1470A73807F0E0000313C03801FF8038007F0014267FA51A>I<39FFE07FF0A3000F13
-07B2140FA2000713173903F067FF3801FFC738007F87201B7D9A25>I<39FFFC03FFA339
-0FF000F0000714E07F0003EB01C0A2EBFC0300011480EBFE070000140013FFEB7F0EA214
-9EEB3F9C14FC6D5AA26D5AA36D5AA26D5AA2201B7F9A23>I<3BFFFC7FFC1FFCA33B0FE0
-0FE001C02607F007EB0380A201F8EBF00700031600EC0FF801FC5C0001150EEC1FFC2600
-FE1C5B15FE9039FF387E3C017F1438EC787F6D486C5A16F0ECE01F011F5CA26D486C5AA2
-EC800701075CA22E1B7F9A31>I<39FFFC1FFEA33907F003803803F8079038FC0F003801
-FE1E00005BEB7F3814F86D5A6D5A130F806D7E130F497EEB3CFEEB38FFEB787F9038F03F
-803901E01FC0D803C013E0EB800F39FFF03FFFA3201B7F9A23>I<39FFFC03FFA3390FF0
-00F0000714E07F0003EB01C0A2EBFC0300011480EBFE070000140013FFEB7F0EA2149EEB
-3F9C14FC6D5AA26D5AA36D5AA26D5AA25CA21307003890C7FCEA7C0FEAFE0E131E131C5B
-EA74F0EA3FE0EA0F8020277F9A23>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Ft cmtt10 10.95 91
-/Ft 91 127 df<127012F8B012701200A5127012F8A31270051C779B18>33
-D<EA4010EAE038EAF078EAE038AAEA60300D0E7B9C18>I<EA0306EA078FA6387FFFC0B5
-12E0A26C13C0380F1E00A6387FFFC0B512E0A26C13C0381E3C00A6EA0C18131C7E9B18>
-I<13C01201A3EA03F0EA0FFCEA3FFEEA7DCFEA71C738E1C38013C7A338F1C0001279123F
-6C7EEA0FF8EA01FC13DE13CF13C73861C38012F1A212E1EBC7001271EA79DEEA3FFEEA1F
-F8EA07E0EA01C0A3120011247D9F18>I<EA3803387C0780A2EAEE0F1400A25B131EA213
-3EEA7C3CA2EA387CEA0078A213F85B12015BA212035BA21207EB8380EB87C0120FEB0EE0
-A2121F121EA2123E383C07C0A23818038013247E9F18>I<EA01C0EA07E0487EEA0E7048
-7EA4EB73F813F313E3380FC1C0EBC38013831303381F0700EA3F87EA7B8EEA71CEEAE1FC
-12E0137CEB7870A2EA70FE387FFFE0EA3FC7380F03C0151C7F9B18>I<1238127CA2127E
-123E120EA3121CA2123812F812F012C0070E789B18>I<137013F0EA01E0EA03C0EA0780
-EA0F00121E121C5AA25AA45AA81270A47EA27E121E7EEA0780EA03C0EA01F0120013700C
-24799F18>I<126012F012787E7E7EEA07801203EA01C0A2EA00E0A41370A813E0A4EA01
-C0A2EA03801207EA0F00121E5A5A5A12600C247C9F18>I<EA01C0A4EA41C138F1C780EA
-FDDF387FFF00EA1FFCEA07F0A2EA1FFCEA7FFF38FDDF80EAF1C73841C100EA01C0A41114
-7D9718>I<136013F0A7387FFFC0B512E0A26C13C03800F000A7136013147E9718>I<121C
-123E127E127F123F121F1207120E121E127C12F81260080C788518>I<387FFFC0B512E0
-A26C13C013047E8F18>I<1230127812FCA2127812300606778518>I<1303EB0780A2130F
-14005B131EA2133E133C137C1378A213F85B12015B12035BA212075B120F90C7FCA25A12
-1E123E123CA2127C127812F85AA2126011247D9F18>I<EA01F0EA07FC487EEA1F1FEA1C
-0738380380007813C0EA7001A238E000E0A9EAF001007013C0A2EA780300381380381C07
-00EA1F1FEA0FFE6C5AEA01F0131C7E9B18>I<EA01801203A21207120F123F12FF12FB12
-431203B0EA7FFCEAFFFEEA7FFC0F1C7B9B18>I<EA03F0EA0FFEEA3FFF387C0F80387003
-C0EAE00138F000E0A21260C7FCA2EB01C0A21303EB0780EB0F00131E5B5B5B485AEA07C0
-485A381E00E05AEA7FFFB5FC7E131C7E9B18>I<131F5B1377A213E7120113C7EA038712
-071307120E121E123C1238127812F0B512F8A338000700A6EB7FF0A3151C7F9B18>52
-D<383FFF80A30038C7FCA8EA3BF8EA3FFE7F383C0780383003C0EA0001EB00E0A2126012
-F0A238E001C0EA7003387C0F80383FFF00EA1FFCEA03F0131C7E9B18>I<137E48B4FC00
-071380380F83C0EA1E03121C3838018090C7FC5AA2EAE1F8EAE7FEB5FC38FE078038F803
-C0EAF001EB00E05AA21270A3383801C0EA3C03381E0780380FFF006C5AEA01F8131C7E9B
-18>I<12E0B512E0A214C038E00380EB0700C65A131E131C5BA25B13F05BA2485AA3485A
-A448C7FCA7131D7E9C18>I<EA03F8EA0FFE487E383E0F80EA3803387001C0A438380380
-EA3C07381FFF00EA07FC487EEA1F1F383C0780387001C000F013E0EAE000A4387001C0EA
-7803383E0F80381FFF006C5AEA03F8131C7E9B18>I<1230127812FCA2127812301200A8
-1230127812FCA2127812300614779318>58 D<1218123C127EA2123C12181200A8121812
-3C127EA2123E121E120E121C123C127812F01260071A789318>I<14C0EB03E01307EB1F
-C0EB3F80EBFE00485AEA07F0485AEA3F8048C7FC12FCA2127F6C7EEA0FE06C7EEA01FC6C
-7EEB3F80EB1FC0EB07E01303EB00C013187E9918>I<387FFFC0B512E0A26C13C0C8FCA4
-387FFFC0B512E0A26C13C0130C7E9318>I<126012F87E127F6C7EEA0FE06C7EEA01FC6C
-7EEB3F80EB1FC0EB07E0A2EB1FC0EB3F80EBFE00485AEA07F0485AEA3F8048C7FC12FC5A
-126013187E9918>I<EA0FF0EA3FFC48B4FCEA700F38F00380A2EA600738000F00133E5B
-EA01F05B485AA55BC8FCA5EA0380487EA36C5A111C7D9B18>I<137CEA01FEEA07FF380F
-8780381E03C0EA3C1DEA387F3870FFE0EA71E313C112E1EAE380A638E1C1C0127113E338
-70FF8038387F00EA3C1C381E00E0EA0F833807FFC00001138038007E00131C7E9B18>I<
-137013F8A213D8A2EA01DCA3138CEA038EA4EA0707A5380FFF80A3EA0E03381C01C0A338
-7F07F000FF13F8007F13F0151C7F9B18>I<EA7FFCB5FC6C1380381C03C01301EB00E0A4
-130114C01307381FFF80140014C0EA1C03EB00E014F01470A414F014E01303387FFFC0B5
-1280387FFE00141C7F9B18>I<EBF8E0EA03FEEA07FFEA0F07EA1E03EA3C01EA38005AA2
-14005AA8127014E0A27E123C381E01C0EA0F073807FF803803FE00EA00F8131C7E9B18>
-I<EA7FF8EAFFFE6C7E381C0F80EB03C0A2EB01E01300A214F01470A814F014E0A2130114
-C01303EB0F80387FFF00485AEA7FF8141C7F9B18>I<B512F0A3381C0070A41400A2130E
-A3EA1FFEA3EA1C0EA390C7FCA21438A5B512F8A3151C7F9B18>I<B512F0A3381C0070A4
-1400A2130EA3EA1FFEA3EA1C0EA390C7FCA7EAFFC0A3141C7E9B18>I<3801F1C0EA03FD
-EA0FFFEA1F0FEA1C03123813011270A290C7FC5AA5EB0FF0131F130F387001C0A2130312
-38A2EA1C07EA1F0FEA0FFFEA03FDEA01F1141C7E9B18>I<387F07F038FF8FF8387F07F0
-381C01C0A9EA1FFFA3EA1C01AA387F07F038FF8FF8387F07F0151C7F9B18>I<EA7FFFB5
-12806C1300EA01C0B3A4EA7FFFB512806C1300111C7D9B18>I<3801FFC0A338000E00B3
-12F0A2133CEA7FFCEA3FF0EA0FC0121C7D9B18>I<387F07F038FF87F8387F07F0381C03
-C0EB07801400130E131E5B13385B13F0121DA2EA1FB8A2131C121EEA1C0EA27FA2EB0380
-A2EB01C0387F03F038FF87F8387F03F0151C7F9B18>I<EAFFC0A3001CC7FCB114E0A5B5
-FCA3131C7E9B18>I<38FC01F8EAFE03A2383B06E0A4138EA2EA398CA213DCA3EA38D8A2
-13F81370A21300A638FE03F8A3151C7F9B18>I<387E07F038FF0FF8387F07F0381D81C0
-A313C1121CA213E1A313611371A213311339A31319A2131D130DA3EA7F07EAFF87EA7F03
-151C7F9B18>I<EA0FFE383FFF804813C0EA7803EA700100F013E0EAE000B0EAF0010070
-13C0EA7C07EA7FFF6C1380380FFE00131C7E9B18>I<EAFFFEEBFF8014C0EA1C03EB01E0
-13001470A514E01301EB03C0EA1FFF1480EBFE00001CC7FCA8B47EA3141C7F9B18>I<EA
-0FFE383FFF804813C0EA7803EA700100F013E0EAE000AE1370A2EAF079387039C0EA783F
-EA7FFF6C1380380FFE00EA000FEB0780A2EB03C01301A213227E9B18>I<EA7FF8EAFFFE
-6C7E381C0F80130314C01301A313031480130F381FFF005BA2EA1C0F7FEB0380A5149CA3
-387F01F8EAFF81387F00F0161C7F9B18>I<3803F1C0EA1FFF5AEA7C0FEA7003EAE001A3
-90C7FC12701278123FEA1FF0EA07FEC67EEB0F80EB03C01301EB00E0A2126012E0130100
-F013C038F80780B5FCEBFE00EAE7F8131C7E9B18>I<387FFFF8B5FCA238E07038A40000
-1300B2EA07FFA3151C7F9B18>I<38FF83FEA3381C0070B36C13E0EA0F01380783C03803
-FF806C1300EA007C171C809B18>I<38FE03F8EAFF07EAFE03383C01E0001C13C0A3EA1E
-03000E1380A438070700A4EA038EA4EA018C13DCA3EA00D813F8A21370151C7F9B18>I<
-38FE03F8A338700070A36C13E0A513F8EA39FC13DCA2001913C0A3138CA2EA1D8DA31305
-000D1380EA0F07A2EA0E03151C7F9B18>I<387F0FE0139F130F380E0700120FEA070E13
-8EEA039C13DCEA01F8A212005B137013F07F487E13DCEA039E138EEA070F7F000E138013
-03001E13C0387F07F000FF13F8007F13F0151C7F9B18>I<38FE03F8EAFF07EAFE03381C
-01C0EA1E03000E1380EA0F0700071300A2EA038EA2EA01DCA3EA00F8A21370A9EA01FC48
-7E6C5A151C7F9B18>I<383FFFE05AA2387001C01303EB07801400C65A131E131C133C5B
-137013F0485A5B1203485A90C7FC5A001E13E0121C123C5A1270B5FCA3131C7E9B18>I<
-EAFFF8A3EAE000B3ACEAFFF8A30D24779F18>I<126012F0A27E1278127C123CA2123E12
-1E121F7EA27F12077F1203A27F12017F12007F1378A2137C133C133E131EA2131F7F1480
-1307A2EB030011247D9F18>I<EAFFF8A3EA0038B3ACEAFFF8A30D247F9F18>I<387FFFC0
-B512E0A26C13C013047E7F18>95 D<1206121E123E12381270A212E0A312F812FC127CA2
-1238070E789E18>I<EA0FF0EA1FFC487EEA3C0FEA180738000380A213FF1207121FEA7F
-03127812E0A3EAF007EA780F383FFFF8EA1FFDEA07F015147E9318>I<127E12FE127E12
-0EA5133EEBFF80000F13C0EBC1E01380EB0070120E1438A6000F1370A2EB80E013C1EBFF
-C0000E138038063E00151C809B18>I<EA01FEEA07FF001F1380EA3E073838030048C7FC
-A25AA61270EB01C01238EA3E03381FFF8000071300EA01FC12147D9318>I<EB1F80133F
-131F1303A5EA03E3EA0FFBEA1FFFEA3C1FEA380FEA7007130312E0A6EA7007A2EA380FEA
-3C1F381FFFF0380FFBF83803E3F0151C7E9B18>I<EA01F0EA07FCEA1FFEEA3E0F383807
-80EA7003A238E001C0A2B5FCA300E0C7FC1270EB01C01238EA3E07381FFF8000071300EA
-01F812147D9318>I<EB1F80EB7FC0EBFFE013E13801C0C01400A3387FFFC0B5FCA23801
-C000AEEA7FFFA3131C7F9B18>I<3801E1F03807FFF85A381E1E30381C0E00487EA5EA1C
-0EEA1E1EEA1FFC5BEA39E00038C7FC7EEA1FFEEBFFC04813E0387801F038700070481338
-A4007813F0EA7E03381FFFC06C13803801FC00151F7F9318>I<127E12FE127E120EA513
-3EEBFF80000F13C013C1EB80E01300120EAB387FC7FC38FFE7FE387FC7FC171C809B18>
-I<EA0380EA07C0A3EA0380C7FCA4EA7FC012FF127F1201AEB5FCA3101D7C9C18>I<1338
-137CA313381300A4EA0FFCA3EA001CB3A4EA6038EAF078EAFFF0EA7FE0EA3F800E277E9C
-18>I<127E12FE127E120EA5EB3FF0A3EB0780EB0F00131E5B5B5BEA0FF87F139C130EEA
-0E0F7FEB038014C0387FC7F812FF127F151C7F9B18>I<EAFFC0A31201B3A4B51280A311
-1C7D9B18>I<38F9C1C038FFF7F013FF383E3E38EA3C3CA2EA3838AB38FE3E3EEB7E7EEB
-3E3E1714809318>I<EA7E3E38FEFF80007F13C0EA0FC1EB80E01300120EAB387FC7FC38
-FFE7FE387FC7FC1714809318>I<EA01F0EA0FFE487E383E0F80EA3803387001C0A238E0
-00E0A5EAF001007013C0EA7803383C0780EA3E0F381FFF006C5AEA01F013147E9318>I<
-EA7E3E38FEFF80007F13C0380FC1E01380EB0070120E1438A6000F1370A2EB80E013C1EB
-FFC0000E1380EB3E0090C7FCA7EA7FC0487E6C5A151E809318>I<3801F380EA07FBEA1F
-FFEA3E1FEA380FEA7007A2EAE003A6EA7007A2EA380FEA3C1FEA1FFFEA0FFBEA03E3EA00
-03A7EB1FF0EB3FF8EB1FF0151E7E9318>I<38FF0FC0EB3FE0EB7FF0EA07F0EBE060EBC0
-005BA290C7FCA9EAFFFC7F5B14147E9318>I<EA07F7EA3FFF5AEA780FEAE007A3007CC7
-FCEA7FE0EA1FFCEA03FEEA001F38600780EAE003A212F038F80F00B5FC13FCEAE7F01114
-7D9318>I<487E1203A4387FFFC0B5FCA238038000A9144014E0A33801C1C013FF6C1380
-EB3E0013197F9818>I<387E07E0EAFE0FEA7E07EA0E00AC1301EA0F033807FFFC6C13FE
-3801FCFC1714809318>I<387F8FF000FF13F8007F13F0381C01C0380E0380A338070700
-A3138FEA038EA3EA01DCA3EA00F8A2137015147F9318>I<38FF07F8138F1307383800E0
-A4381C01C0137113F9A213D9EA1DDD000D1380A3138DEA0F8FA23807070015147F9318>
-I<387F8FF0139F138F380F0700EA078EEA039EEA01DC13F81200137013F07FEA01DCEA03
-9E138EEA0707000E1380387F8FF000FF13F8007F13F015147F9318>I<387F8FF000FF13
-F8007F13F0380E01C0EB0380A21207EB0700A2EA0387A2138EEA01CEA213CC120013DC13
-78A31370A313F05B1279EA7BC0EA7F806CC7FC121E151E7F9318>I<383FFFF05AA23870
-01E0EB03C0EB078038000F00131E5B13F8485AEA03C0485A380F0070121E5A5AB512F0A3
-14147F9318>I<EB07E0131F137FEB780013E0AB1201EA7FC0485AA26C7EEA01E01200AB
-1378EB7FE0131F130713247E9F18>I<126012F0B3B012600424769F18>I<127CB4FC13C0
-1203C67EAB7FEB7FC0EB3FE0A2EB7FC0EBF0005BABEA03C012FF90C7FC127C13247E9F18
->I<EA060CEA1F1EEA3FBEEAFBF8EAF1F0EA60C00F067C9B18>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fu cmr10 10.95 77
-/Fu 77 123 df<90381F83E09038F06E303901C07878380380F8903800F03048EB7000A7
-B612803907007000B2383FE3FF1D20809F1B>11 D<133FEBE0C0EA01C0380381E0EA0701
-A290C7FCA6B512E0EA0700B2383FC3FC1620809F19>I<EB3FE013E0EA01C1EA0381EA07
-00A8B5FCEA0700B2383FE7FC1620809F19>I<90381F81F89038F04F043901C07C063903
-80F80FEB00F05A0270C7FCA6B7FC3907007007B23A3FE3FE3FE02320809F26>I<EA7038
-EAF87CEAFC7EA2EA743AEA0402A3EA0804A2EA1008A2EA2010EA40200F0E7F9F17>34
-D<1340A2EA03F0EA0C4EEA10413820408012600040134038C041C01343A238E04180EB40
-001270127CEA3FC0EA1FF86C7EEA03FEEA007FEB4F801343EB41C0A2EAF040A312801480
-EA404100201300EA3042EA0C4CEA03F0EA0040A312257EA117>36
-D<127012F812FCA212741204A31208A21210A212201240060E7C9F0D>39
-D<13401380EA01005A12061204120C5AA212381230A212701260A412E0AC1260A4127012
-30A212381218A27E120412067E7EEA008013400A2E7BA112>I<7E12407E12307E120812
-0C7EA212077EA213801201A413C0AC1380A412031300A25A1206A25A120812185A12205A
-5A0A2E7EA112>I<127012F012F8A212781208A31210A31220A21240050E7C840D>44
-D<EAFFF0A20C02808A0F>I<127012F8A3127005057C840D>I<144014C0EB0180A3EB0300
-A31306A25BA35BA35BA25BA35BA3485AA348C7FCA21206A35AA35AA25AA35AA35AA2122D
-7EA117>I<EA03F0EA0E1C487EEA1806EA380738700380A400F013C0AD00701380A3EA78
-0700381300EA1806EA1C0E6C5AEA03F0121F7E9D17>I<13801203120F12F31203B3A6EA
-07C0EA7FFE0F1E7C9D17>I<EA03F0EA0C1CEA100E487E00401380128000F013C0EAF803
-A3EA200712001480A2EB0F00130E5B5B5B13605B485A48C7FC000613405A5A00101380EA
-3FFF5AB5FC121E7E9D17>I<EA03F0EA0C1CEA100EEA200F007813801307A2EA380F1200
-1400A2131E131C1370EA07F0EA003C130E130FEB0780A214C0122012F8A300F013801240
-EB0F00EA200EEA183CEA07F0121F7E9D17>I<1306A2130EA2131E132EA2134E138EA2EA
-010E1202A212041208A212101220A2124012C0B512F038000E00A7EBFFE0141E7F9D17>
-I<EA1803EA1FFE5B5B13E00010C7FCA6EA11F0EA161CEA180EEA10071480EA0003A214C0
-A3127012F0A200E013801240EB0700EA20066C5AEA0838EA07E0121F7E9D17>I<137CEA
-0182EA0701380E0380EA0C0712183838030090C7FC12781270A2EAF1F0EAF21CEAF406EA
-F807EB0380A200F013C0A51270A214801238EB07001218EA0C0E6C5AEA01F0121F7E9D17
->I<1240387FFFE014C0A23840008038800100A21302485AA25B5BA25BA21360A213E05B
-1201A41203A76C5A131F7E9D17>I<EA03F0EA0C0CEA1006EA3003382001801260A31270
-38780300123EEA3F06EA1FC8EA0FF0EA03F8487EEA0C7EEA103F38300F80EA6007EB01C0
-12C01300A31480EA600100201300EA1002EA0C0CEA03F0121F7E9D17>I<EA03F0EA0E18
-487E487E13071270EB038012F0A214C0A5EA7007A21238EA180BEA0E13EA03E338000380
-A3EB07001230EA7806130EEA700CEA2018EA1070EA0FC0121F7E9D17>I<127012F8A312
-701200AA127012F8A3127005147C930D>I<127012F8A312701200AA127012F012F8A212
-781208A31210A31220A21240051D7C930D>I<5B497EA3497EA3EB09E0A3EB10F0A3EB20
-78A3497EA2EBC03EEB801EA248B5FCEB000FA20002EB0780A348EB03C0A2120C001E14E0
-39FF801FFE1F207F9F22>65 D<B512E0380F0078141EA2801580A515005C141E147CEBFF
-F0EB007C141FEC0F80EC07C0140315E0A515C014071580EC0F00143EB512F01B1F7E9E20
->I<90380FE0109038381C309038E002703803C00139078000F048C71270121E15305A15
-10127C127800F81400A91278007C1410123CA26C1420A27E6C6C13406C6C13803900E003
-00EB380CEB0FF01C217E9F21>I<B512F83807801EEC0780EC03C0EC01E0EC00F0157015
-78A2153CA3153EA8153CA2157C1578A215F0EC01E0EC03C0EC0780EC1E00B512F81F1F7F
-9E23>I<B61280380F000F14031401140015C01540A314401500A214C0130113FF130113
-001440A3EC0020A31540A315C01401EC0380140FB6FC1B1F7E9E1F>I<B6128038078007
-1401A2140015C01540A4EC2000A3146014E013FF138014601420A391C7FCA87FEAFFFE1A
-1F7F9E1E>I<90380FE02090387818609038E004E03803800238070001481300001E1460
-A25A1520127C127800F81400A7EC7FFCEC03E000781301127C123CA27EA27E7E38038002
-3900E00460903878182090380FE0001E217D9F24>I<39FFF07FF8390F000780AD90B5FC
-EB0007AF39FFF07FF81D1F7E9E22>I<EAFFF0EA0F00B3ABEAFFF00C1F7E9E10>I<39FFF0
-07FC390F0003E0EC0180150014025C5C5C5C5C5C49C7FC5B497E130FEB13C0EB21E01341
-EB80F0EB0078A28080A280EC0780A2EC03C015E015F039FFF01FFE1F1F7E9E23>75
-D<EAFFF8EA0F8090C7FCB21402A414061404A2140C141C147CB512FC171F7E9E1C>I<B4
-6CEB07FE000715C0A2D805C0130BA2D804E01313A301701323A26D1343A36D1383A29038
-0E0103A3EB0702A3EB0384A2EB01C8A3EB00F0A21460121FD8FFE0EB7FFE271F7F9E2A>
-I<B4EB0FF8390F8003E0EC0080EA0BC0EA09E0A2EA08F01378A27F7FA27FEB0780A2EB03
-C0EB01E0A2EB00F01478A2143C141EA2140F1407A214031401123E38FF80001D1F7E9E22
->I<EB1FE0EB70383801C00E48487E39070003804814C0001EEB01E048EB00F0A2007C14
-F8A20078147800F8147CA900781478007C14F8A2003C14F0003E1301001E14E06CEB03C0
-6C148039038007003801E01E38007038EB1FE01E217E9F23>I<B512E0380F007C141E80
-EC0780A215C0A41580A2EC0F00141E147CEBFFE090C8FCAEEAFFF01A1F7E9E1F>I<B512
-E0380F80780007131E80EC0780A215C0A41580A2EC0F00141E1478EBFFE0EB8060143814
-3C141C141EA3141FA315011581140F390FC0078239FFFC03C4C812F820207F9E22>82
-D<3803F040380C0CC0EA1803EA3001EA6000A212E01440A36C13007E127CEA7F80EA3FF8
-6CB4FC00071380C613C0EB1FE013031301EB00F014707EA46C136014E06C13C038F80180
-38C60300EA81FC14217E9F19>I<007FB512E038780F010060EB006000401420A200C014
-3000801410A400001400B3497E3803FFFC1C1F7E9E21>I<39FFF00FF8390F0003E0EC00
-80B3A46CEB01001380120314026C6C5A6C6C5AEB3830EB0FC01D207E9E22>I<39FFF003
-FE391F8000F86CC7126015206C6C1340A36C6C1380A2EBE00100011400A23800F002A213
-F8EB7804A26D5AA36D5AA2131F6D5AA2EB07C0A36D5AA36DC7FC1F207F9E22>I<3BFFF0
-7FF81FF03B1F000FC007C06C903907800180170015C001805C00071502EC09E013C00003
-5DEC19F01410D801E05CA2EC2078D800F05CA2EC403C01785CA2EC801E017C1460013C14
-4090383D000F133F6D5CA2011E1307010E91C7FCA2010C7F010413022C207F9E2F>I<39
-FFF001FF391F800078000F146012076D1340000314807F3901F001001200EBF802EB7C06
-EB3C04EB3E08131EEB1F10EB0FB0EB07A014E06D5AACEB3FFC201F7F9E22>89
-D<12FFA212C0B3B3A512FFA2082D7CA10D>91 D<EA0804EA1008EA2010A2EA4020A2EA80
-40A3EAB85CEAFC7EA2EA7C3EEA381C0F0E7A9F17>I<12FFA21203B3B3A512FFA2082D80
-A10D>I<120812101220A21240A21280A312B812FCA2127C1238060E7D9F0D>96
-D<EA1FE0EA3030EA7818131CEA300E1200A313FEEA0F8EEA1E0E1238127800F01310A313
-1E127838386720380F83C014147E9317>I<121C12FC121CAA137CEA1D87381E0180EB00
-C0001C13E01470A21478A6147014F014E0001E13C0381A018038198700EA107C15207E9F
-19>I<EA01FCEA0706EA1C0F123813060078C7FC127012F0A61270127800381380A2381C
-0100EA0706EA01F811147F9314>I<EB01C0130F1301AAEA01F1EA070DEA0C03EA180112
-381278127012F0A61270A21238EA1803120CEA070D3801F1F815207F9F19>I<EA03F0EA
-0E1C487E487EA238700380A212F0B5FC00F0C7FCA41270A26C1380A2381C0100EA0706EA
-01F811147F9314>I<137CEA01C6EA030F1207EA0E061300A7EAFFF0EA0E00B2EA7FE010
-20809F0E>I<14E03803E330EA0E3CEA1C1C38380E00EA780FA5EA380E6C5AEA1E38EA33
-E00020C7FCA21230A2EA3FFE381FFF8014C0383001E038600070481330A4006013606C13
-C0381C03803803FC00141F7F9417>I<121C12FC121CAA137C1386EA1D03001E1380A212
-1CAE38FF8FF014207E9F19>I<1238127CA31238C7FCA6121C12FC121CB1EAFF80091F7F
-9E0C>I<13E0EA01F0A3EA00E01300A61370EA07F012001370B3A31260EAF06013C0EA61
-80EA3F000C28829E0E>I<121C12FC121CAAEB1FE0EB0780EB060013045B5B5B136013E0
-EA1DF0EA1E70EA1C38133C131C7F130F7F148014C038FF9FF014207E9F18>I<121C12FC
-121CB3ABEAFF8009207F9F0C>I<391C3E03E039FCC30C30391D019018001EEBE01CA200
-1C13C0AE3AFF8FF8FF8021147E9326>I<EA1C7CEAFC86EA1D03001E1380A2121CAE38FF
-8FF014147E9319>I<EA01F8EA070E381C0380383801C0A2387000E0A200F013F0A60070
-13E0A2383801C0A2381C038038070E00EA01F814147F9317>I<EA1C7CEAFD87381E0180
-14C0381C00E014F014701478A6147014F014E0381E01C0EB0380381D8700EA1C7C90C7FC
-A8B47E151D7E9319>I<3801F04038070CC0EA0E02EA1C03EA38011278127012F0A61270
-12781238EA1C03EA0C05EA0709EA01F1EA0001A8EB0FF8151D7F9318>I<EA1CF0EAFD18
-EA1E3CA21318EA1C00AEEAFFC00E147E9312>I<EA0FC8EA3038EA6018EAC008A3EAE000
-127CEA3FE0EA1FF0EA07F8EA003CEA800E130612C0A21304EAE00CEAD818EA87E00F147F
-9312>I<1202A31206A2120EA2123EEAFFF8EA0E00AB1304A5EA07081203EA01F00E1C7F
-9B12>I<381C0380EAFC1FEA1C03AE1307120CEA061B3803E3F014147E9319>I<38FF83F8
-383E00E0001C13C06C1380A338070100A21383EA0382A2EA01C4A213E4EA00E8A21370A3
-132015147F9318>I<39FF9FE1FC393C078070391C030060EC8020000E1440A214C0D807
-04138014E0A239038861001471A23801D032143A143E3800E01CA2EB6018EB40081E147F
-9321>I<38FF87F8381E03C0380E0180EB0300EA0702EA0384EA01C813D8EA00F0137013
-7813F8139CEA010E1202EA060738040380000C13C0003C13E038FE07FC16147F9318>I<
-38FF83F8383E00E0001C13C06C1380A338070100A21383EA0382A2EA01C4A213E4EA00E8
-A21370A31320A25BA3EAF080A200F1C7FC1262123C151D7F9318>I<EA7FFFEA700E1260
-EA401C133813781370EA00E0120113C0EA038012071301120E121EEA1C03EA3802EA7006
-130EEAFFFE10147F9314>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fv cmbx12 20.736 14
-/Fv 14 122 df<DB1FFC14C00203B5EAC001021FECF003027FECFC07903B01FFFC00FE0F
-010701C0EB1F9F4948C7EA07FFD93FF880494814004948157F485B4A153F4890C9121F48
-5A000F170F5B001F1707A2485A1803A2127FA24993C8FCA212FFAA041FB61280127FA27F
-DC0001EBC000123FA36C7EA26C7EA26C7E7E6C7F806C7F6D6C5CEB3FFCD90FFF5C6D01C0
-EB1FBF010101FCEBFF1F6D6CB5EAFE0F021FECF8030203ECE0009126001FFEC9FC413D7B
-BB4C>71 D<B612FEA426007FF0C9FCB3ADEF03C0A517071880A3170FA3171FA2173F177F
-17FF5E04071300163FB9FCA4323B7DBA3A>76 D<B500F00207B512E0808080D8007F9239
-0007E0006E6F5A81017B7F81137901787F6E7E6E7E81141F6E7E6E7F6E7F82806E7F6F7E
-6F7E826F7E816F13806F13C017E06F13F081EE7FF8EE3FFC17FEEE1FFF827013837013C3
-18E37013F382EF7FFBEF3FFFA283838383A28383187F183FA201FC161FB500FC150F1807
-1803A2433B7CBA4C>78 D<B712F8EEFFC017F817FE3B007FF0001FFF040313C004007F71
-7E717EA284171FA284A660A2173F604D5A604C485A4C5BDC1FFEC8FC91B612F817C0A291
-39F0007FF0EE1FF8707E707E707E8482A284A584A5F101E0A27013F0A2F103C0EF7FF8B6
-00F890393FFC078094381FFE0F0507B51200050113FCCBEA1FF0433C7CBA48>82
-D<B600F80107B512E0A426007FF0C83807E000725AB3B3A3013F4C5AA280011F4CC7FCA2
-6D6C151E0107163E6E5D6D6C5D6D6D13019026007FE0EB0FE0DA3FFCEB7FC0020FB65A02
-034AC8FCDA007F13F003071380433C7DBA4A>85 D<EB3FFE48B512E0000714F8390FE007
-FC9038F001FE486C6C7E6F7E82153F6C48806C5A6C5AC8FCA491B5FC131F90387FF83F38
-03FF803807FC00EA0FF0485A123F485AA2485AA4157F6C7E15DF3A3FE0039FF03B1FF80F
-0FFFE03807FFFE0001497E39003FE0002B267DA52F>97 D<13FE12FFA412071203B04AB4
-FC021F13F0027F13FC9138FC03FE9039FFF000FF02C0EB3F8091C7EA1FC04915E0EE0FF0
-17F8A2EE07FCA317FEA917FCA3160F17F817F0161F6D15E06EEB3FC06EEB7F80D9F9E0EB
-FF009039F0FC07FE91387FFFF8D9E01F13E09026C003FEC7FC2F3C7DBB36>I<EE3F80ED
-3FFFA4150181B0ECFF80010F13F0013F13FC9038FFC03F3901FE000F4848130348487F48
-487F121F485AA2127F5BA312FFA9127FA36C7EA2121F6C6C5B6C6C5B00035CD801FE011F
-13C02700FF807E13FE90387FFFF8010F13E0010113002F3C7DBB36>100
-D<49B47E010F13F0017F13FC9038FF81FE3A03FE007F80D807F8133F4848EB1FC0ED0FE0
-485A003F15F01507485A16F8A212FFA290B6FCA301C0C8FCA4127FA36C7E1678121F7F00
-0F15F06C6C13016C6CEB03E06C6CEB0FC03A00FFC07F8090393FFFFE00010F13F8010013
-C025267DA52C>I<EA01E0EA07F8487EA2487EA46C5AA26C5AEA01E0C8FCAB13FE127FA4
-12071203B3AAB512F0A4143D7DBC1A>105 D<13FE12FFA412071203B3B3AEB512F8A415
-3C7DBB1A>108 D<D801FCEBFF8000FF010313F0020F7F91381E03FC91383801FE000701
-607F0003497E01FD15805C01FFC7FCA35BB3A4B5D8F83F13FEA42F267CA536>110
-D<3901FC03F000FFEB0FFC4AB4FC91383C3F80EC707F00079038E0FFC000035BEBFD80A2
-01FFEB7F809138003F00151E92C7FC5BB3A3B512FCA422267DA528>114
-D<B500F0EBFFFCA4D803FEC7EA1F806D15006C151E806C5DA26E137C017F14786E13F801
-3F5CECF001011F5CECF803010F5CA2ECFC0701075CECFE0F010391C7FC6E5A6D131E15BE
-6D13BC15FC6E5AA36E5AA26E5AA26E5AA26E5AA2140F92C8FC5C141E0008133E007F133C
-147C38FF807814F8EB81F0EB83E06C485A387C1F80D83FFFC9FCEA1FFCEA07F02E377EA5
-33>121 D E
-%EndDVIPSBitmapFont
-end
-%%EndProlog
-%%BeginSetup
-%%Feature: *Resolution 300dpi
-TeXDict begin
-%%BeginPaperSize: Letter
-letter
-%%EndPaperSize
-
-%%EndSetup
-%%Page: 1 1
-1 0 bop 75 659 a Fv(GNU)33 b(Readline)h(Library)p 75
-709 1800 17 v 936 757 a Fu(Edition)17 b(4.3,)c(for)i
-Ft(Readline)f(Library)g Fu(V)l(ersion)i(4.3.)1643 811
-y(Marc)o(h)e(2002)75 2467 y Fs(Brian)23 b(F)-6 b(o)n(x,)23
-b(F)-6 b(ree)23 b(Soft)n(w)n(are)f(F)-6 b(oundation)75
-2534 y(Chet)22 b(Ramey)-6 b(,)23 b(Case)e(W)-6 b(estern)23
-b(Reserv)n(e)f(Univ)n(ersit)n(y)p 75 2570 1800 9 v eop
-%%Page: 2 2
-2 1 bop 75 217 a Fu(This)14 b(do)q(cumen)o(t)h(describ)q(es)g(the)f
-(GNU)g(Readline)h(Library)l(,)f(a)g(utilit)o(y)h(whic)o(h)f(aids)g(in)h
-(the)f(consistency)75 271 y(of)h(user)g(in)o(terface)h(across)e
-(discrete)i(programs)e(that)h(need)h(to)e(pro)o(vide)i(a)f(command)g
-(line)i(in)o(terface.)75 339 y(Published)g(b)o(y)f(the)f(F)l(ree)g
-(Soft)o(w)o(are)f(F)l(oundation)75 394 y(59)h(T)l(emple)h(Place,)f
-(Suite)i(330,)75 448 y(Boston,)d(MA)h(02111)f(USA)75
-516 y(P)o(ermission)j(is)f(gran)o(ted)g(to)f(mak)o(e)h(and)g
-(distribute)i(v)o(erbatim)d(copies)i(of)f(this)h(man)o(ual)f(pro)o
-(vided)h(the)75 570 y(cop)o(yrigh)o(t)e(notice)h(and)f(this)h(p)q
-(ermission)g(notice)g(are)f(preserv)o(ed)h(on)f(all)h(copies.)75
-638 y(P)o(ermission)c(is)h(gran)o(ted)e(to)g(cop)o(y)h(and)g
-(distribute)h(mo)q(di\014ed)g(v)o(ersions)f(of)f(this)h(man)o(ual)g
-(under)h(the)f(con-)75 692 y(ditions)k(for)e(v)o(erbatim)h(cop)o(ying,)
-g(pro)o(vided)h(that)e(the)h(en)o(tire)h(resulting)g(deriv)o(ed)g(w)o
-(ork)e(is)h(distributed)75 747 y(under)h(the)f(terms)g(of)g(a)f(p)q
-(ermission)j(notice)f(iden)o(tical)h(to)e(this)g(one.)75
-814 y(P)o(ermission)i(is)g(gran)o(ted)f(to)g(cop)o(y)h(and)f
-(distribute)i(translations)f(of)f(this)h(man)o(ual)g(in)o(to)f(another)
-g(lan-)75 869 y(guage,)e(under)h(the)f(ab)q(o)o(v)o(e)g(conditions)i
-(for)d(mo)q(di\014ed)j(v)o(ersions,)e(except)h(that)f(this)h(p)q
-(ermission)g(notice)75 924 y(ma)o(y)f(b)q(e)i(stated)f(in)h(a)f
-(translation)g(appro)o(v)o(ed)g(b)o(y)g(the)g(F)l(ree)h(Soft)o(w)o(are)
-d(F)l(oundation.)75 2661 y(Cop)o(yrigh)o(t)301 2660 y(c)289
-2661 y Fr(\015)h Fu(1988-2002)f(F)l(ree)i(Soft)o(w)o(are)f(F)l
-(oundation,)h(Inc.)p eop
-%%Page: 1 3
-1 2 bop 75 -58 a Fu(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077
-b(1)75 149 y Fq(1)41 b(Command)28 b(Line)e(Editing)137
-271 y Fu(This)16 b(c)o(hapter)f(describ)q(es)i(the)e(basic)h(features)f
-(of)g(the)g Fp(gnu)g Fu(command)g(line)i(editing)f(in)o(terface.)75
-403 y Fs(1.1)33 b(In)n(tro)r(duction)24 b(to)e(Line)i(Editing)137
-501 y Fu(The)16 b(follo)o(wing)g(paragraphs)e(describ)q(e)j(the)e
-(notation)g(used)h(to)e(represen)o(t)i(k)o(eystrok)o(es.)137
-569 y(The)h(text)f Fo(C-k)h Fu(is)g(read)g(as)f(`Con)o(trol-K')g(and)h
-(describ)q(es)h(the)f(c)o(haracter)f(pro)q(duced)h(when)h(the)1831
-567 y Fn(h)p 1844 541 19 2 v 1844 569 a Fm(k)p 1844 577
-V 1860 567 a Fn(i)75 624 y Fu(k)o(ey)d(is)h(pressed)g(while)g(the)f
-(Con)o(trol)g(k)o(ey)g(is)h(depressed.)137 693 y(The)g(text)g
-Fo(M-k)f Fu(is)i(read)f(as)f(`Meta-K')g(and)h(describ)q(es)i(the)e(c)o
-(haracter)f(pro)q(duced)i(when)g(the)f(Meta)75 747 y(k)o(ey)e(\(if)g(y)
-o(ou)g(ha)o(v)o(e)g(one\))g(is)h(depressed,)g(and)f(the)930
-745 y Fn(h)p 942 719 V 942 747 a Fm(k)p 942 755 V 958
-745 a Fn(i)987 747 y Fu(k)o(ey)g(is)h(pressed.)20 b(The)15
-b(Meta)e(k)o(ey)h(is)h(lab)q(eled)1779 745 y Fn(h)p 1791
-719 72 2 v 1791 747 a Fm(AL)m(T)p 1791 755 V 1860 745
-a Fn(i)75 802 y Fu(on)e(man)o(y)g(k)o(eyb)q(oards.)19
-b(On)13 b(k)o(eyb)q(oards)g(with)h(t)o(w)o(o)e(k)o(eys)g(lab)q(eled)
-1213 800 y Fn(h)p 1225 774 V 1225 802 a Fm(AL)m(T)p 1225
-810 V 1294 800 a Fn(i)1322 802 y Fu(\(usually)i(to)e(either)i(side)g
-(of)f(the)75 857 y(space)j(bar\),)f(the)388 855 y Fn(h)p
-400 829 V 400 857 a Fm(AL)m(T)p 400 865 V 469 855 a Fn(i)499
-857 y Fu(on)h(the)g(left)g(side)g(is)g(generally)h(set)f(to)f(w)o(ork)g
-(as)g(a)g(Meta)g(k)o(ey)l(.)22 b(The)1697 855 y Fn(h)p
-1709 829 V 1709 857 a Fm(AL)m(T)p 1709 865 V 1778 855
-a Fn(i)1808 857 y Fu(k)o(ey)75 912 y(on)17 b(the)f(righ)o(t)h(ma)o(y)f
-(also)h(b)q(e)g(con\014gured)g(to)f(w)o(ork)g(as)g(a)h(Meta)f(k)o(ey)g
-(or)g(ma)o(y)g(b)q(e)i(con\014gured)f(as)f(some)75 967
-y(other)f(mo)q(di\014er,)h(suc)o(h)f(as)g(a)g(Comp)q(ose)g(k)o(ey)g
-(for)f(t)o(yping)i(accen)o(ted)f(c)o(haracters.)137 1035
-y(If)c(y)o(ou)g(do)g(not)f(ha)o(v)o(e)h(a)f(Meta)h(or)694
-1033 y Fn(h)p 706 1007 V 706 1035 a Fm(AL)m(T)p 706 1043
-V 775 1033 a Fn(i)801 1035 y Fu(k)o(ey)l(,)g(or)g(another)f(k)o(ey)h(w)
-o(orking)f(as)h(a)f(Meta)h(k)o(ey)l(,)g(the)g(iden)o(tical)75
-1090 y(k)o(eystrok)o(e)f(can)i(b)q(e)g(generated)f(b)o(y)g(t)o(yping)
-809 1088 y Fn(h)p 822 1062 70 2 v 822 1090 a Fm(ESC)p
-822 1098 V 888 1088 a Fn(i)915 1090 y Fl(\014rst)p Fu(,)g(and)g(then)h
-(t)o(yping)1339 1088 y Fn(h)p 1351 1062 19 2 v 1351 1090
-a Fm(k)p 1351 1098 V 1368 1088 a Fn(i)1383 1090 y Fu(.)18
-b(Either)12 b(pro)q(cess)f(is)h(kno)o(wn)75 1145 y(as)j
-Fk(metafying)k Fu(the)425 1143 y Fn(h)p 437 1117 V 437
-1145 a Fm(k)p 437 1153 V 454 1143 a Fn(i)484 1145 y Fu(k)o(ey)l(.)137
-1214 y(The)i(text)e Fo(M-C-k)h Fu(is)h(read)f(as)f(`Meta-Con)o(trol-k')
-g(and)h(describ)q(es)i(the)e(c)o(haracter)g(pro)q(duced)h(b)o(y)75
-1268 y Fk(metafying)e Fo(C-k)p Fu(.)137 1337 y(In)g(addition,)h(sev)o
-(eral)f(k)o(eys)f(ha)o(v)o(e)g(their)h(o)o(wn)f(names.)30
-b(Sp)q(eci\014cally)l(,)1384 1335 y Fn(h)p 1396 1309
-73 2 v 1396 1337 a Fm(DEL)p 1396 1345 V 1467 1335 a Fn(i)1482
-1337 y Fu(,)1514 1335 y Fn(h)p 1526 1309 70 2 v 1526
-1337 a Fm(ESC)p 1526 1345 V 1593 1335 a Fn(i)1608 1337
-y Fu(,)1640 1335 y Fn(h)p 1652 1309 72 2 v 1652 1337
-a Fm(LFD)p 1652 1345 V 1722 1335 a Fn(i)1737 1337 y Fu(,)1768
-1335 y Fn(h)p 1780 1309 70 2 v 1780 1337 a Fm(SPC)p 1780
-1345 V 1847 1335 a Fn(i)1862 1337 y Fu(,)75 1390 y Fn(h)p
-87 1364 76 2 v 87 1392 a Fm(RET)p 87 1399 V 160 1390
-a Fn(i)175 1392 y Fu(,)23 b(and)306 1390 y Fn(h)p 318
-1364 74 2 v 318 1392 a Fm(T)m(AB)p 318 1399 V 390 1390
-a Fn(i)427 1392 y Fu(all)f(stand)g(for)f(themselv)o(es)h(when)h(seen)f
-(in)g(this)g(text,)h(or)e(in)i(an)e(init)i(\014le)g(\(see)75
-1447 y(Section)d(1.3)f([Readline)h(Init)g(File],)h(page)e(4\).)32
-b(If)19 b(y)o(our)g(k)o(eyb)q(oard)h(lac)o(ks)f(a)1444
-1445 y Fn(h)p 1456 1419 72 2 v 1456 1447 a Fm(LFD)p 1456
-1454 V 1526 1445 a Fn(i)1560 1447 y Fu(k)o(ey)l(,)h(t)o(yping)1802
-1445 y Fn(h)p 1814 1419 49 2 v 1814 1447 a Fm(C-j)p 1814
-1454 V 1860 1445 a Fn(i)75 1501 y Fu(will)c(pro)q(duce)g(the)f(desired)
-h(c)o(haracter.)j(The)874 1499 y Fn(h)p 886 1473 76 2
-v 886 1501 a Fm(RET)p 886 1509 V 959 1499 a Fn(i)989
-1501 y Fu(k)o(ey)c(ma)o(y)f(b)q(e)h(lab)q(eled)1385 1499
-y Fn(h)p 1397 1473 109 2 v 1397 1501 a Fm(Return)p 1397
-1509 V 1503 1499 a Fn(i)1533 1501 y Fu(or)1588 1499 y
-Fn(h)p 1600 1473 86 2 v 1600 1501 a Fm(En)o(ter)p 1600
-1509 V 1684 1499 a Fn(i)1714 1501 y Fu(on)f(some)75 1556
-y(k)o(eyb)q(oards.)75 1688 y Fs(1.2)33 b(Readline)23
-b(In)n(teraction)137 1786 y Fu(Often)13 b(during)h(an)e(in)o(teractiv)o
-(e)h(session)g(y)o(ou)g(t)o(yp)q(e)f(in)i(a)e(long)h(line)h(of)e(text,)
-h(only)g(to)f(notice)h(that)f(the)75 1841 y(\014rst)k(w)o(ord)f(on)h
-(the)h(line)h(is)e(missp)q(elled.)26 b(The)16 b(Readline)i(library)f
-(giv)o(es)f(y)o(ou)g(a)g(set)g(of)g(commands)g(for)75
-1896 y(manipulating)g(the)f(text)g(as)f(y)o(ou)h(t)o(yp)q(e)g(it)g(in,)
-g(allo)o(wing)h(y)o(ou)f(to)f(just)h(\014x)g(y)o(our)f(t)o(yp)q(o,)g
-(and)h(not)g(forcing)75 1950 y(y)o(ou)f(to)f(ret)o(yp)q(e)h(the)g(ma)s
-(jorit)o(y)f(of)h(the)g(line.)21 b(Using)15 b(these)f(editing)h
-(commands,)f(y)o(ou)g(mo)o(v)o(e)f(the)h(cursor)75 2005
-y(to)i(the)i(place)g(that)e(needs)i(correction,)g(and)f(delete)h(or)f
-(insert)g(the)h(text)e(of)h(the)g(corrections.)26 b(Then,)75
-2060 y(when)16 b(y)o(ou)f(are)h(satis\014ed)g(with)g(the)f(line,)i(y)o
-(ou)e(simply)i(press)1160 2058 y Fn(h)p 1172 2032 76
-2 v 1172 2060 a Fm(RET)p 1172 2068 V 1245 2058 a Fn(i)1260
-2060 y Fu(.)k(Y)l(ou)16 b(do)f(not)h(ha)o(v)o(e)f(to)g(b)q(e)h(at)f
-(the)75 2115 y(end)k(of)e(the)h(line)i(to)d(press)563
-2113 y Fn(h)p 575 2087 V 575 2115 a Fm(RET)p 575 2122
-V 648 2113 a Fn(i)663 2115 y Fu(;)i(the)f(en)o(tire)h(line)g(is)g
-(accepted)f(regardless)g(of)g(the)g(lo)q(cation)g(of)g(the)75
-2170 y(cursor)d(within)h(the)g(line.)75 2284 y Fj(1.2.1)30
-b(Readline)20 b(Bare)g(Essen)n(tials)137 2382 y Fu(In)12
-b(order)g(to)f(en)o(ter)g(c)o(haracters)g(in)o(to)g(the)h(line,)h
-(simply)g(t)o(yp)q(e)f(them.)18 b(The)12 b(t)o(yp)q(ed)g(c)o(haracter)f
-(app)q(ears)75 2437 y(where)16 b(the)h(cursor)f(w)o(as,)f(and)h(then)h
-(the)f(cursor)g(mo)o(v)o(es)g(one)g(space)g(to)g(the)g(righ)o(t.)23
-b(If)17 b(y)o(ou)f(mist)o(yp)q(e)g(a)75 2492 y(c)o(haracter,)e(y)o(ou)h
-(can)g(use)h(y)o(our)f(erase)g(c)o(haracter)f(to)h(bac)o(k)g(up)g(and)h
-(delete)g(the)f(mist)o(yp)q(ed)h(c)o(haracter.)137 2560
-y(Sometimes)g(y)o(ou)f(ma)o(y)g(mist)o(yp)q(e)h(a)f(c)o(haracter,)f
-(and)i(not)f(notice)h(the)f(error)g(un)o(til)i(y)o(ou)e(ha)o(v)o(e)g(t)
-o(yp)q(ed)75 2615 y(sev)o(eral)g(other)f(c)o(haracters.)19
-b(In)c(that)e(case,)i(y)o(ou)f(can)g(t)o(yp)q(e)h Fo(C-b)f
-Fu(to)g(mo)o(v)o(e)f(the)i(cursor)f(to)g(the)g(left,)h(and)75
-2670 y(then)h(correct)e(y)o(our)h(mistak)o(e.)20 b(Afterw)o(ards,)13
-b(y)o(ou)i(can)g(mo)o(v)o(e)g(the)g(cursor)g(to)g(the)g(righ)o(t)g
-(with)g Fo(C-f)p Fu(.)p eop
-%%Page: 2 4
-2 3 bop 75 -58 a Fu(2)1322 b(GNU)15 b(Readline)h(Library)137
-149 y(When)h(y)o(ou)f(add)g(text)g(in)h(the)g(middle)h(of)e(a)f(line,)j
-(y)o(ou)e(will)i(notice)f(that)f(c)o(haracters)f(to)h(the)g(righ)o(t)75
-204 y(of)e(the)g(cursor)g(are)g(`pushed)h(o)o(v)o(er')f(to)f(mak)o(e)h
-(ro)q(om)g(for)f(the)i(text)f(that)f(y)o(ou)h(ha)o(v)o(e)g(inserted.)21
-b(Lik)o(ewise,)75 259 y(when)e(y)o(ou)g(delete)h(text)e(b)q(ehind)j
-(the)e(cursor,)g(c)o(haracters)f(to)g(the)h(righ)o(t)f(of)g(the)h
-(cursor)g(are)f(`pulled)75 314 y(bac)o(k')11 b(to)g(\014ll)h(in)h(the)e
-(blank)h(space)g(created)f(b)o(y)h(the)f(remo)o(v)m(al)g(of)g(the)h
-(text.)18 b(A)11 b(list)h(of)f(the)h(bare)f(essen)o(tials)75
-369 y(for)k(editing)h(the)f(text)g(of)g(an)g(input)h(line)h(follo)o
-(ws.)75 449 y Fo(C-b)168 b Fu(Mo)o(v)o(e)14 b(bac)o(k)h(one)h(c)o
-(haracter.)75 530 y Fo(C-f)168 b Fu(Mo)o(v)o(e)14 b(forw)o(ard)g(one)h
-(c)o(haracter.)75 608 y Fn(h)p 87 582 73 2 v 87 610 a
-Fm(DEL)p 87 618 V 158 608 a Fn(i)188 610 y Fu(or)244
-608 y Fn(h)p 256 582 159 2 v 256 610 a Fm(Bac)o(kspace)p
-256 618 V 412 608 a Fn(i)315 665 y Fu(Delete)h(the)f(c)o(haracter)g(to)
-f(the)h(left)h(of)f(the)g(cursor.)75 745 y Fo(C-d)168
-b Fu(Delete)16 b(the)f(c)o(haracter)g(underneath)h(the)f(cursor.)75
-825 y(Prin)o(ting)h(c)o(haracters)315 880 y(Insert)f(the)h(c)o
-(haracter)e(in)o(to)h(the)h(line)h(at)d(the)h(cursor.)75
-961 y Fo(C-_)g Fu(or)f Fo(C-x)h(C-u)315 1015 y Fu(Undo)i(the)g(last)f
-(editing)i(command.)25 b(Y)l(ou)17 b(can)g(undo)g(all)g(the)g(w)o(a)o
-(y)f(bac)o(k)h(to)f(an)g(empt)o(y)315 1070 y(line.)75
-1151 y(\(Dep)q(ending)i(on)f(y)o(our)g(con\014guration,)g(the)863
-1149 y Fn(h)p 875 1123 V 875 1151 a Fm(Bac)o(kspace)p
-875 1159 V 1032 1149 a Fn(i)1063 1151 y Fu(k)o(ey)g(b)q(e)h(set)f(to)f
-(delete)i(the)f(c)o(haracter)g(to)f(the)75 1206 y(left)h(of)f(the)h
-(cursor)f(and)g(the)596 1204 y Fn(h)p 608 1178 73 2 v
-608 1206 a Fm(DEL)p 608 1213 V 679 1204 a Fn(i)710 1206
-y Fu(k)o(ey)h(set)f(to)g(delete)h(the)g(c)o(haracter)f(underneath)h
-(the)g(cursor,)f(lik)o(e)75 1260 y Fo(C-d)p Fu(,)e(rather)h(than)g(the)
-g(c)o(haracter)g(to)f(the)i(left)f(of)g(the)g(cursor.\))75
-1374 y Fj(1.2.2)30 b(Readline)20 b(Mo)n(v)n(emen)n(t)i(Commands)137
-1471 y Fu(The)14 b(ab)q(o)o(v)o(e)e(table)i(describ)q(es)g(the)g(most)e
-(basic)i(k)o(eystrok)o(es)d(that)i(y)o(ou)g(need)h(in)f(order)g(to)g
-(do)g(editing)75 1526 y(of)f(the)h(input)h(line.)21 b(F)l(or)12
-b(y)o(our)g(con)o(v)o(enience,)i(man)o(y)f(other)f(commands)h(ha)o(v)o
-(e)f(b)q(een)i(added)f(in)h(addition)75 1580 y(to)h Fo(C-b)p
-Fu(,)h Fo(C-f)p Fu(,)f Fo(C-d)p Fu(,)g(and)522 1578 y
-Fn(h)p 534 1552 V 534 1580 a Fm(DEL)p 534 1588 V 605
-1578 a Fn(i)619 1580 y Fu(.)23 b(Here)16 b(are)g(some)f(commands)h(for)
-f(mo)o(ving)h(more)g(rapidly)h(ab)q(out)f(the)75 1635
-y(line.)75 1716 y Fo(C-a)168 b Fu(Mo)o(v)o(e)14 b(to)h(the)g(start)f
-(of)h(the)g(line.)75 1796 y Fo(C-e)168 b Fu(Mo)o(v)o(e)14
-b(to)h(the)g(end)h(of)f(the)g(line.)75 1876 y Fo(M-f)168
-b Fu(Mo)o(v)o(e)14 b(forw)o(ard)g(a)h(w)o(ord,)f(where)i(a)e(w)o(ord)h
-(is)h(comp)q(osed)f(of)g(letters)g(and)h(digits.)75 1957
-y Fo(M-b)168 b Fu(Mo)o(v)o(e)14 b(bac)o(kw)o(ard)h(a)g(w)o(ord.)75
-2037 y Fo(C-l)168 b Fu(Clear)15 b(the)h(screen,)f(reprin)o(ting)h(the)f
-(curren)o(t)g(line)i(at)e(the)g(top.)137 2118 y(Notice)e(ho)o(w)f
-Fo(C-f)g Fu(mo)o(v)o(es)f(forw)o(ard)g(a)h(c)o(haracter,)g(while)i
-Fo(M-f)e Fu(mo)o(v)o(es)f(forw)o(ard)g(a)h(w)o(ord.)18
-b(It)13 b(is)g(a)f(lo)q(ose)75 2173 y(con)o(v)o(en)o(tion)j(that)f(con)
-o(trol)h(k)o(eystrok)o(es)f(op)q(erate)h(on)f(c)o(haracters)h(while)h
-(meta)e(k)o(eystrok)o(es)g(op)q(erate)h(on)75 2227 y(w)o(ords.)75
-2341 y Fj(1.2.3)30 b(Readline)20 b(Killing)h(Commands)137
-2438 y Fk(Killing)26 b Fu(text)18 b(means)g(to)g(delete)i(the)f(text)f
-(from)g(the)h(line,)i(but)d(to)g(sa)o(v)o(e)g(it)h(a)o(w)o(a)o(y)e(for)
-h(later)h(use,)75 2493 y(usually)f(b)o(y)f Fk(y)o(anking)22
-b Fu(\(re-inserting\))17 b(it)g(bac)o(k)g(in)o(to)g(the)h(line.)27
-b(\(`Cut')15 b(and)j(`paste')e(are)g(more)h(recen)o(t)75
-2547 y(jargon)d(for)h(`kill')h(and)g(`y)o(ank'.\))137
-2615 y(If)g(the)f(description)h(for)f(a)g(command)g(sa)o(ys)f(that)h
-(it)g(`kills')h(text,)e(then)i(y)o(ou)f(can)g(b)q(e)h(sure)f(that)f(y)o
-(ou)75 2670 y(can)h(get)g(the)g(text)g(bac)o(k)g(in)h(a)f(di\013eren)o
-(t)g(\(or)g(the)g(same\))g(place)h(later.)p eop
-%%Page: 3 5
-3 4 bop 75 -58 a Fu(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077
-b(3)137 149 y(When)12 b(y)o(ou)g(use)g(a)f(kill)i(command,)f(the)g
-(text)f(is)h(sa)o(v)o(ed)f(in)i(a)e Fk(kill-ring)p Fu(.)21
-b(An)o(y)12 b(n)o(um)o(b)q(er)g(of)f(consecutiv)o(e)75
-204 y(kills)17 b(sa)o(v)o(e)e(all)h(of)f(the)h(killed)i(text)d
-(together,)f(so)h(that)g(when)h(y)o(ou)f(y)o(ank)g(it)h(bac)o(k,)f(y)o
-(ou)g(get)g(it)h(all.)22 b(The)75 259 y(kill)c(ring)f(is)f(not)g(line)i
-(sp)q(eci\014c;)g(the)e(text)g(that)f(y)o(ou)h(killed)j(on)d(a)g
-(previously)h(t)o(yp)q(ed)g(line)h(is)e(a)o(v)m(ailable)75
-314 y(to)f(b)q(e)g(y)o(ank)o(ed)g(bac)o(k)h(later,)e(when)i(y)o(ou)f
-(are)g(t)o(yping)g(another)g(line.)137 380 y(Here)h(is)f(the)h(list)g
-(of)e(commands)h(for)g(killing)j(text.)75 458 y Fo(C-k)168
-b Fu(Kill)17 b(the)f(text)e(from)h(the)g(curren)o(t)g(cursor)g(p)q
-(osition)h(to)f(the)g(end)h(of)f(the)g(line.)75 535 y
-Fo(M-d)168 b Fu(Kill)15 b(from)e(the)g(cursor)g(to)f(the)i(end)g(of)e
-(the)i(curren)o(t)f(w)o(ord,)f(or,)h(if)g(b)q(et)o(w)o(een)h(w)o(ords,)
-e(to)h(the)315 590 y(end)j(of)f(the)g(next)g(w)o(ord.)k(W)l(ord)c(b)q
-(oundaries)i(are)e(the)g(same)g(as)g(those)f(used)i(b)o(y)f
-Fo(M-f)p Fu(.)75 668 y Fo(M-)123 666 y Fn(h)p 135 640
-73 2 v 135 668 a Fm(DEL)p 135 675 V 206 666 a Fn(i)315
-668 y Fu(Kill)i(from)e(the)g(cursor)g(the)h(start)e(of)h(the)g(curren)o
-(t)g(w)o(ord,)f(or,)h(if)g(b)q(et)o(w)o(een)h(w)o(ords,)e(to)h(the)315
-723 y(start)j(of)h(the)g(previous)h(w)o(ord.)31 b(W)l(ord)19
-b(b)q(oundaries)h(are)f(the)h(same)e(as)h(those)g(used)h(b)o(y)315
-777 y Fo(M-b)p Fu(.)75 855 y Fo(C-w)168 b Fu(Kill)18
-b(from)d(the)g(cursor)h(to)f(the)g(previous)i(whitespace.)22
-b(This)16 b(is)g(di\013eren)o(t)g(than)f Fo(M-)1777 853
-y Fn(h)p 1789 827 V 1789 855 a Fm(DEL)p 1789 863 V 1860
-853 a Fn(i)315 910 y Fu(b)q(ecause)h(the)f(w)o(ord)g(b)q(oundaries)h
-(di\013er.)137 987 y(Here)21 b(is)h(ho)o(w)e(to)g Fk(y)o(ank)j
-Fu(the)e(text)f(bac)o(k)h(in)o(to)g(the)f(line.)39 b(Y)l(anking)21
-b(means)g(to)f(cop)o(y)h(the)g(most-)75 1042 y(recen)o(tly-killed)d
-(text)d(from)f(the)i(kill)h(bu\013er.)75 1120 y Fo(C-y)168
-b Fu(Y)l(ank)15 b(the)h(most)e(recen)o(tly)i(killed)h(text)e(bac)o(k)g
-(in)o(to)g(the)h(bu\013er)f(at)f(the)i(cursor.)75 1198
-y Fo(M-y)168 b Fu(Rotate)16 b(the)h(kill-ring,)j(and)d(y)o(ank)g(the)h
-(new)f(top.)26 b(Y)l(ou)17 b(can)h(only)g(do)f(this)h(if)f(the)h(prior)
-315 1252 y(command)d(is)h Fo(C-y)f Fu(or)f Fo(M-y)p Fu(.)75
-1361 y Fj(1.2.4)30 b(Readline)20 b(Argumen)n(ts)137 1457
-y Fu(Y)l(ou)15 b(can)g(pass)f(n)o(umeric)i(argumen)o(ts)e(to)g
-(Readline)h(commands.)20 b(Sometimes)15 b(the)g(argumen)o(t)e(acts)75
-1511 y(as)20 b(a)f(rep)q(eat)i(coun)o(t,)f(other)g(times)g(it)h(is)f
-(the)g Fl(sign)j Fu(of)c(the)h(argumen)o(t)g(that)f(is)i(signi\014can)o
-(t.)35 b(If)20 b(y)o(ou)75 1566 y(pass)d(a)f(negativ)o(e)h(argumen)o(t)
-f(to)g(a)g(command)h(whic)o(h)h(normally)f(acts)f(in)i(a)e(forw)o(ard)g
-(direction,)i(that)75 1621 y(command)g(will)h(act)e(in)i(a)e(bac)o(kw)o
-(ard)g(direction.)28 b(F)l(or)17 b(example,)i(to)e(kill)j(text)d(bac)o
-(k)g(to)g(the)h(start)e(of)75 1676 y(the)f(line,)i(y)o(ou)e(migh)o(t)g
-(t)o(yp)q(e)g(`)p Ft(M--)f(C-k)p Fu('.)137 1742 y(The)h(general)f(w)o
-(a)o(y)f(to)h(pass)g(n)o(umeric)h(argumen)o(ts)e(to)g(a)h(command)g(is)
-h(to)e(t)o(yp)q(e)h(meta)g(digits)h(b)q(efore)75 1797
-y(the)h(command.)k(If)c(the)f(\014rst)g(`digit')h(t)o(yp)q(ed)f(is)h(a)
-g(min)o(us)g(sign)g(\(`)p Ft(-)p Fu('\),)d(then)j(the)f(sign)h(of)f
-(the)h(argumen)o(t)75 1852 y(will)21 b(b)q(e)f(negativ)o(e.)31
-b(Once)20 b(y)o(ou)f(ha)o(v)o(e)g(t)o(yp)q(ed)g(one)g(meta)g(digit)h
-(to)e(get)h(the)g(argumen)o(t)f(started,)h(y)o(ou)75
-1906 y(can)c(t)o(yp)q(e)f(the)h(remainder)g(of)f(the)g(digits,)h(and)g
-(then)g(the)f(command.)20 b(F)l(or)13 b(example,)i(to)f(giv)o(e)h(the)f
-Fo(C-d)75 1961 y Fu(command)19 b(an)f(argumen)o(t)g(of)g(10,)h(y)o(ou)f
-(could)i(t)o(yp)q(e)f(`)p Ft(M-1)14 b(0)h(C-d)p Fu(',)k(whic)o(h)g
-(will)h(delete)g(the)f(next)g(ten)75 2016 y(c)o(haracters)14
-b(on)i(the)f(input)h(line.)75 2125 y Fj(1.2.5)30 b(Searc)n(hing)21
-b(for)f(Commands)h(in)f(the)h(History)137 2220 y Fu(Readline)d(pro)o
-(vides)e(commands)g(for)g(searc)o(hing)g(through)g(the)g(command)g
-(history)g(for)g(lines)i(con-)75 2275 y(taining)e(a)f(sp)q(eci\014ed)i
-(string.)j(There)c(are)e(t)o(w)o(o)g(searc)o(h)h(mo)q(des:)20
-b Fk(incremen)o(tal)e Fu(and)e Fk(non-incremen)o(tal)p
-Fu(.)137 2341 y(Incremen)o(tal)e(searc)o(hes)f(b)q(egin)h(b)q(efore)f
-(the)g(user)g(has)g(\014nished)h(t)o(yping)f(the)g(searc)o(h)g(string.)
-19 b(As)13 b(eac)o(h)75 2396 y(c)o(haracter)k(of)g(the)h(searc)o(h)g
-(string)f(is)h(t)o(yp)q(ed,)h(Readline)g(displa)o(ys)f(the)g(next)g(en)
-o(try)f(from)g(the)h(history)75 2451 y(matc)o(hing)12
-b(the)g(string)g(t)o(yp)q(ed)g(so)g(far.)18 b(An)13 b(incremen)o(tal)g
-(searc)o(h)f(requires)g(only)h(as)f(man)o(y)f(c)o(haracters)g(as)75
-2506 y(needed)16 b(to)d(\014nd)j(the)e(desired)i(history)e(en)o(try)l
-(.)19 b(T)l(o)c(searc)o(h)f(bac)o(kw)o(ard)f(in)j(the)e(history)g(for)g
-(a)g(particular)75 2560 y(string,)g(t)o(yp)q(e)h Fo(C-r)p
-Fu(.)k(T)o(yping)d Fo(C-s)e Fu(searc)o(hes)h(forw)o(ard)e(through)h
-(the)h(history)l(.)20 b(The)15 b(c)o(haracters)f(presen)o(t)75
-2615 y(in)20 b(the)f(v)m(alue)h(of)f(the)g Ft(isearch-terminators)d
-Fu(v)m(ariable)k(are)f(used)h(to)e(terminate)h(an)g(incremen)o(tal)75
-2670 y(searc)o(h.)31 b(If)19 b(that)f(v)m(ariable)i(has)f(not)f(b)q
-(een)i(assigned)g(a)e(v)m(alue,)j(the)1289 2668 y Fn(h)p
-1301 2642 70 2 v 1301 2670 a Fm(ESC)p 1301 2678 V 1368
-2668 a Fn(i)1402 2670 y Fu(and)e Fo(C-J)f Fu(c)o(haracters)g(will)p
-eop
-%%Page: 4 6
-4 5 bop 75 -58 a Fu(4)1322 b(GNU)15 b(Readline)h(Library)75
-149 y(terminate)21 b(an)g(incremen)o(tal)i(searc)o(h.)37
-b Fo(C-g)21 b Fu(will)i(ab)q(ort)e(an)g(incremen)o(tal)h(searc)o(h)f
-(and)g(restore)g(the)75 204 y(original)16 b(line.)21
-b(When)15 b(the)f(searc)o(h)g(is)h(terminated,)g(the)f(history)h(en)o
-(try)f(con)o(taining)h(the)g(searc)o(h)f(string)75 259
-y(b)q(ecomes)i(the)f(curren)o(t)g(line.)137 325 y(T)l(o)g(\014nd)i
-(other)e(matc)o(hing)g(en)o(tries)h(in)h(the)e(history)h(list,)g(t)o
-(yp)q(e)f Fo(C-r)g Fu(or)g Fo(C-s)g Fu(as)h(appropriate.)k(This)75
-380 y(will)15 b(searc)o(h)e(bac)o(kw)o(ard)f(or)g(forw)o(ard)g(in)i
-(the)f(history)g(for)g(the)g(next)g(en)o(try)g(matc)o(hing)g(the)g
-(searc)o(h)g(string)75 434 y(t)o(yp)q(ed)19 b(so)g(far.)30
-b(An)o(y)19 b(other)f(k)o(ey)h(sequence)h(b)q(ound)g(to)e(a)h(Readline)
-h(command)e(will)j(terminate)e(the)75 489 y(searc)o(h)10
-b(and)h(execute)g(that)f(command.)18 b(F)l(or)10 b(instance,)i(a)1063
-487 y Fn(h)p 1076 461 76 2 v 1076 489 a Fm(RET)p 1076
-497 V 1149 487 a Fn(i)1174 489 y Fu(will)g(terminate)f(the)g(searc)o(h)
-f(and)h(accept)75 544 y(the)k(line,)h(thereb)o(y)f(executing)g(the)g
-(command)g(from)f(the)g(history)h(list.)20 b(A)15 b(mo)o(v)o(emen)o(t)f
-(command)g(will)75 599 y(terminate)h(the)g(searc)o(h,)g(mak)o(e)g(the)g
-(last)g(line)i(found)f(the)f(curren)o(t)g(line,)h(and)g(b)q(egin)g
-(editing.)137 665 y(Readline)j(remem)o(b)q(ers)e(the)h(last)f(incremen)
-o(tal)i(searc)o(h)e(string.)27 b(If)17 b(t)o(w)o(o)f
-Fo(C-r)p Fu(s)h(are)g(t)o(yp)q(ed)h(without)75 719 y(an)o(y)g(in)o
-(terv)o(ening)h(c)o(haracters)f(de\014ning)h(a)f(new)h(searc)o(h)f
-(string,)g(an)o(y)g(remem)o(b)q(ered)h(searc)o(h)f(string)g(is)75
-774 y(used.)137 840 y(Non-incremen)o(tal)25 b(searc)o(hes)e(read)h(the)
-f(en)o(tire)h(searc)o(h)f(string)g(b)q(efore)h(starting)f(to)f(searc)o
-(h)i(for)75 895 y(matc)o(hing)d(history)h(lines.)39 b(The)22
-b(searc)o(h)f(string)g(ma)o(y)g(b)q(e)h(t)o(yp)q(ed)f(b)o(y)h(the)f
-(user)h(or)e(b)q(e)i(part)f(of)g(the)75 950 y(con)o(ten)o(ts)15
-b(of)f(the)i(curren)o(t)f(line.)75 1074 y Fs(1.3)33 b(Readline)23
-b(Init)h(File)137 1169 y Fu(Although)f(the)g(Readline)h(library)f
-(comes)g(with)g(a)f(set)g(of)g(Emacs-lik)o(e)i(k)o(eybindings)g
-(installed)75 1224 y(b)o(y)d(default,)h(it)f(is)h(p)q(ossible)g(to)e
-(use)i(a)e(di\013eren)o(t)h(set)g(of)f(k)o(eybindings.)39
-b(An)o(y)20 b(user)h(can)g(customize)75 1278 y(programs)15
-b(that)h(use)g(Readline)i(b)o(y)e(putting)g(commands)g(in)i(an)e
-Fk(inputrc)k Fu(\014le,)d(con)o(v)o(en)o(tionally)g(in)g(his)75
-1333 y(home)g(directory)l(.)24 b(The)17 b(name)g(of)f(this)h(\014le)g
-(is)g(tak)o(en)g(from)e(the)i(v)m(alue)h(of)e(the)h(en)o(vironmen)o(t)g
-(v)m(ariable)75 1388 y Ft(INPUTRC)p Fu(.)i(If)c(that)g(v)m(ariable)h
-(is)g(unset,)f(the)g(default)h(is)g(`)p Ft(~/.inputrc)p
-Fu('.)137 1454 y(When)f(a)g(program)f(whic)o(h)h(uses)g(the)g(Readline)
-h(library)g(starts)d(up,)i(the)g(init)h(\014le)g(is)f(read,)g(and)g
-(the)75 1509 y(k)o(ey)g(bindings)i(are)e(set.)137 1574
-y(In)f(addition,)h(the)e Ft(C-x)i(C-r)e Fu(command)g(re-reads)h(this)g
-(init)g(\014le,)h(th)o(us)e(incorp)q(orating)h(an)o(y)f(c)o(hanges)75
-1629 y(that)h(y)o(ou)h(migh)o(t)g(ha)o(v)o(e)g(made)g(to)g(it.)75
-1737 y Fj(1.3.1)30 b(Readline)20 b(Init)g(File)h(Syn)n(tax)137
-1832 y Fu(There)c(are)g(only)g(a)g(few)f(basic)i(constructs)e(allo)o(w)
-o(ed)i(in)f(the)g(Readline)h(init)g(\014le.)26 b(Blank)18
-b(lines)g(are)75 1886 y(ignored.)36 b(Lines)22 b(b)q(eginning)h(with)d
-(a)h(`)p Ft(#)p Fu(')e(are)h(commen)o(ts.)35 b(Lines)22
-b(b)q(eginning)h(with)e(a)f(`)p Ft($)p Fu(')f(indicate)75
-1941 y(conditional)c(constructs)f(\(see)g(Section)g(1.3.2)f
-([Conditional)h(Init)h(Constructs],)e(page)h(9\).)k(Other)c(lines)75
-1996 y(denote)h(v)m(ariable)i(settings)e(and)h(k)o(ey)f(bindings.)75
-2073 y(V)l(ariable)h(Settings)315 2128 y(Y)l(ou)k(can)h(mo)q(dify)g
-(the)f(run-time)h(b)q(eha)o(vior)g(of)e(Readline)j(b)o(y)e(altering)h
-(the)f(v)m(alues)h(of)315 2182 y(v)m(ariables)d(in)g(Readline)g(using)f
-(the)g Ft(set)g Fu(command)f(within)i(the)f(init)h(\014le.)26
-b(The)17 b(syn)o(tax)315 2237 y(is)f(simple:)435 2300
-y Ft(set)23 b Fk(v)m(ariable)28 b(v)m(alue)315 2366 y
-Fu(Here,)14 b(for)f(example,)h(is)g(ho)o(w)f(to)g(c)o(hange)h(from)f
-(the)h(default)g(Emacs-lik)o(e)h(k)o(ey)e(binding)j(to)315
-2421 y(use)g Ft(vi)e Fu(line)j(editing)g(commands:)435
-2484 y Ft(set)23 b(editing-mode)g(vi)315 2549 y Fu(V)l(ariable)c(names)
-e(and)h(v)m(alues,)h(where)e(appropriate,)h(are)f(recognized)i(without)
-e(regard)315 2604 y(to)e(case.)315 2670 y(A)g(great)g(deal)g(of)g
-(run-time)h(b)q(eha)o(vior)g(is)g(c)o(hangeable)g(with)f(the)h(follo)o
-(wing)f(v)m(ariables.)p eop
-%%Page: 5 7
-5 6 bop 75 -58 a Fu(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077
-b(5)315 149 y Ft(bell-style)555 204 y Fu(Con)o(trols)21
-b(what)h(happ)q(ens)h(when)f(Readline)h(w)o(an)o(ts)e(to)g(ring)i(the)f
-(termi-)555 259 y(nal)d(b)q(ell.)32 b(If)19 b(set)f(to)g(`)p
-Ft(none)p Fu(',)g(Readline)i(nev)o(er)f(rings)g(the)f(b)q(ell.)32
-b(If)19 b(set)g(to)555 314 y(`)p Ft(visible)p Fu(',)c(Readline)i(uses)g
-(a)f(visible)j(b)q(ell)g(if)e(one)f(is)h(a)o(v)m(ailable.)26
-b(If)16 b(set)h(to)555 369 y(`)p Ft(audible)p Fu(')g(\(the)h
-(default\),)i(Readline)g(attempts)e(to)g(ring)h(the)g(terminal's)555
-423 y(b)q(ell.)315 504 y Ft(comment-begin)555 559 y Fu(The)c(string)f
-(to)g(insert)i(at)d(the)i(b)q(eginning)i(of)d(the)h(line)h(when)f(the)g
-Ft(insert-)555 614 y(comment)f Fu(command)h(is)h(executed.)21
-b(The)15 b(default)h(v)m(alue)g(is)g Ft("#")p Fu(.)315
-694 y Ft(completion-ignore-case)555 749 y Fu(If)e(set)f(to)g(`)p
-Ft(on)p Fu(',)g(Readline)i(p)q(erforms)e(\014lename)i(matc)o(hing)f
-(and)g(completion)555 804 y(in)i(a)f(case-insensitiv)o(e)i(fashion.)k
-(The)15 b(default)h(v)m(alue)g(is)g(`)p Ft(off)p Fu('.)315
-884 y Ft(completion-query-items)555 939 y Fu(The)d(n)o(um)o(b)q(er)h
-(of)e(p)q(ossible)j(completions)g(that)d(determines)i(when)g(the)f
-(user)555 994 y(is)21 b(ask)o(ed)g(whether)g(he)h(w)o(an)o(ts)d(to)i
-(see)g(the)g(list)h(of)e(p)q(ossibilitie)q(s.)40 b(If)21
-b(the)555 1049 y(n)o(um)o(b)q(er)14 b(of)f(p)q(ossible)i(completions)f
-(is)g(greater)f(than)g(this)h(v)m(alue,)h(Readline)555
-1104 y(will)g(ask)e(the)g(user)h(whether)f(or)g(not)g(he)g(wishes)h(to)
-f(view)h(them;)f(otherwise,)555 1158 y(they)f(are)g(simply)i(listed.)20
-b(This)13 b(v)m(ariable)g(m)o(ust)f(b)q(e)h(set)f(to)f(an)h(in)o(teger)
-h(v)m(alue)555 1213 y(greater)h(than)h(or)g(equal)h(to)f(0.)k(The)d
-(default)f(limit)i(is)f Ft(100)p Fu(.)315 1294 y Ft(convert-meta)555
-1348 y Fu(If)11 b(set)g(to)g(`)p Ft(on)p Fu(',)f(Readline)i(will)h(con)
-o(v)o(ert)d(c)o(haracters)h(with)g(the)g(eigh)o(th)h(bit)f(set)555
-1403 y(to)f(an)h Fp(asci)q(i)e Fu(k)o(ey)i(sequence)g(b)o(y)g
-(stripping)h(the)e(eigh)o(th)h(bit)h(and)e(pre\014xing)i(an)555
-1456 y Fn(h)p 567 1430 70 2 v 567 1458 a Fm(ESC)p 567
-1466 V 634 1456 a Fn(i)666 1458 y Fu(c)o(haracter,)k(con)o(v)o(erting)h
-(them)g(to)f(a)h(meta-pre\014xed)g(k)o(ey)g(sequence.)555
-1513 y(The)e(default)h(v)m(alue)h(is)e(`)p Ft(on)p Fu('.)315
-1593 y Ft(disable-completion)555 1648 y Fu(If)k(set)f(to)f(`)p
-Ft(On)p Fu(',)h(Readline)i(will)g(inhibit)g(w)o(ord)e(completion.)30
-b(Completion)555 1703 y(c)o(haracters)12 b(will)j(b)q(e)f(inserted)g
-(in)o(to)f(the)g(line)h(as)f(if)h(they)f(had)g(b)q(een)h(mapp)q(ed)555
-1758 y(to)h Ft(self-insert)p Fu(.)j(The)d(default)h(is)g(`)p
-Ft(off)p Fu('.)315 1838 y Ft(editing-mode)555 1893 y
-Fu(The)f Ft(editing-mode)d Fu(v)m(ariable)k(con)o(trols)e(whic)o(h)h
-(default)g(set)f(of)g(k)o(ey)g(bind-)555 1948 y(ings)f(is)g(used.)20
-b(By)12 b(default,)i(Readline)f(starts)f(up)h(in)g(Emacs)f(editing)i
-(mo)q(de,)555 2003 y(where)h(the)f(k)o(eystrok)o(es)g(are)g(most)g
-(similar)i(to)d(Emacs.)20 b(This)15 b(v)m(ariable)h(can)555
-2058 y(b)q(e)g(set)f(to)f(either)i(`)p Ft(emacs)p Fu(')e(or)h(`)p
-Ft(vi)p Fu('.)315 2138 y Ft(enable-keypad)555 2193 y
-Fu(When)d(set)f(to)h(`)p Ft(on)p Fu(',)e(Readline)j(will)h(try)d(to)g
-(enable)i(the)f(application)h(k)o(eypad)555 2248 y(when)h(it)f(is)h
-(called.)21 b(Some)13 b(systems)g(need)h(this)g(to)f(enable)h(the)g
-(arro)o(w)e(k)o(eys.)555 2303 y(The)j(default)h(is)g(`)p
-Ft(off)p Fu('.)315 2383 y Ft(expand-tilde)555 2438 y
-Fu(If)e(set)g(to)f(`)p Ft(on)p Fu(',)f(tilde)k(expansion)e(is)h(p)q
-(erformed)f(when)g(Readline)h(attempts)555 2493 y(w)o(ord)g
-(completion.)21 b(The)15 b(default)h(is)f(`)p Ft(off)p
-Fu('.)555 2560 y(If)g(set)g(to)f(`)p Ft(on)p Fu(',)g(the)g(history)h
-(co)q(de)h(attempts)e(to)g(place)i(p)q(oin)o(t)f(at)f(the)h(same)555
-2615 y(lo)q(cation)20 b(on)f(eac)o(h)g(history)h(line)g(retriv)o(ed)g
-(with)f Ft(previous-history)e Fu(or)555 2670 y Ft(next-history)p
-Fu(.)p eop
-%%Page: 6 8
-6 7 bop 75 -58 a Fu(6)1322 b(GNU)15 b(Readline)h(Library)315
-149 y Ft(horizontal-scroll-mode)555 204 y Fu(This)j(v)m(ariable)g(can)f
-(b)q(e)g(set)g(to)f(either)i(`)p Ft(on)p Fu(')e(or)g(`)p
-Ft(off)p Fu('.)27 b(Setting)19 b(it)f(to)f(`)p Ft(on)p
-Fu(')555 259 y(means)c(that)f(the)i(text)e(of)h(the)g(lines)i(b)q(eing)
-f(edited)g(will)h(scroll)f(horizon)o(tally)555 314 y(on)i(a)f(single)i
-(screen)g(line)g(when)g(they)f(are)f(longer)h(than)g(the)g(width)g(of)g
-(the)555 369 y(screen,)e(instead)f(of)g(wrapping)g(on)o(to)f(a)h(new)g
-(screen)h(line.)21 b(By)13 b(default,)h(this)555 423
-y(v)m(ariable)j(is)e(set)g(to)g(`)p Ft(off)p Fu('.)315
-506 y Ft(input-meta)555 560 y Fu(If)h(set)f(to)g(`)p
-Ft(on)p Fu(',)f(Readline)j(will)h(enable)e(eigh)o(t-bit)h(input)f(\(it)
-g(will)h(not)e(clear)555 615 y(the)20 b(eigh)o(th)g(bit)g(in)h(the)f(c)
-o(haracters)f(it)h(reads\),)g(regardless)g(of)g(what)f(the)555
-670 y(terminal)i(claims)g(it)f(can)g(supp)q(ort.)34 b(The)20
-b(default)h(v)m(alue)g(is)g(`)p Ft(off)p Fu('.)33 b(The)555
-725 y(name)15 b Ft(meta-flag)f Fu(is)i(a)f(synon)o(ym)g(for)f(this)i(v)
-m(ariable.)315 807 y Ft(isearch-terminators)555 862 y
-Fu(The)26 b(string)g(of)f(c)o(haracters)g(that)g(should)i(terminate)f
-(an)g(incremen)o(tal)555 917 y(searc)o(h)12 b(without)h(subsequen)o
-(tly)g(executing)h(the)e(c)o(haracter)g(as)g(a)g(command)555
-971 y(\(see)22 b(Section)h(1.2.5)e([Searc)o(hing],)j(page)e(3\).)40
-b(If)23 b(this)g(v)m(ariable)g(has)f(not)555 1026 y(b)q(een)17
-b(giv)o(en)f(a)g(v)m(alue,)g(the)g(c)o(haracters)1247
-1024 y Fn(h)p 1259 998 70 2 v 1259 1026 a Fm(ESC)p 1259
-1034 V 1326 1024 a Fn(i)1357 1026 y Fu(and)g Fo(C-J)f
-Fu(will)i(terminate)f(an)555 1081 y(incremen)o(tal)g(searc)o(h.)315
-1163 y Ft(keymap)96 b Fu(Sets)19 b(Readline's)i(idea)f(of)f(the)g
-(curren)o(t)h(k)o(eymap)f(for)f(k)o(ey)i(binding)h(com-)555
-1218 y(mands.)41 b(Acceptable)23 b Ft(keymap)f Fu(names)g(are)f
-Ft(emacs)p Fu(,)i Ft(emacs-standard)p Fu(,)555 1273 y
-Ft(emacs-meta)p Fu(,)49 b Ft(emacs-ctlx)p Fu(,)g Ft(vi)p
-Fu(,)h Ft(vi-move)p Fu(,)f Ft(vi-command)p Fu(,)g(and)555
-1328 y Ft(vi-insert)p Fu(.)31 b Ft(vi)20 b Fu(is)g(equiv)m(alen)o(t)h
-(to)e Ft(vi-command)p Fu(;)g Ft(emacs)g Fu(is)h(equiv)m(alen)o(t)555
-1382 y(to)15 b Ft(emacs-standard)p Fu(.)20 b(The)d(default)f(v)m(alue)h
-(is)g Ft(emacs)p Fu(.)k(The)16 b(v)m(alue)h(of)f(the)555
-1437 y Ft(editing-mode)e Fu(v)m(ariable)i(also)f(a\013ects)g(the)g
-(default)h(k)o(eymap.)315 1519 y Ft(mark-directories)555
-1574 y Fu(If)j(set)g(to)g(`)p Ft(on)p Fu(',)f(completed)i(directory)g
-(names)f(ha)o(v)o(e)f(a)h(slash)h(app)q(ended.)555 1629
-y(The)15 b(default)h(is)g(`)p Ft(on)p Fu('.)315 1711
-y Ft(mark-modified-lines)555 1766 y Fu(This)j(v)m(ariable,)g(when)g
-(set)e(to)h(`)p Ft(on)p Fu(',)f(causes)h(Readline)h(to)e(displa)o(y)i
-(an)f(as-)555 1821 y(terisk)f(\(`)p Ft(*)p Fu('\))e(at)i(the)f(start)g
-(of)h(history)f(lines)j(whic)o(h)e(ha)o(v)o(e)g(b)q(een)h(mo)q
-(di\014ed.)555 1875 y(This)e(v)m(ariable)g(is)g(`)p Ft(off)p
-Fu(')e(b)o(y)h(default.)315 1958 y Ft(mark-symlinked-directories)555
-2012 y Fu(If)23 b(set)f(to)f(`)p Ft(on)p Fu(',)i(completed)g(names)g
-(whic)o(h)g(are)f(sym)o(b)q(olic)i(links)f(to)f(di-)555
-2067 y(rectories)h(ha)o(v)o(e)g(a)g(slash)g(app)q(ended)i(\(sub)s(ject)
-e(to)f(the)i(v)m(alue)g(of)f Ft(mark-)555 2122 y(directories)p
-Fu(\).)18 b(The)d(default)h(is)g(`)p Ft(off)p Fu('.)315
-2204 y Ft(match-hidden-files)555 2259 y Fu(This)c(v)m(ariable,)h(when)e
-(set)g(to)g(`)p Ft(on)p Fu(',)f(causes)h(Readline)i(to)d(matc)o(h)h
-(\014les)h(whose)555 2314 y(names)22 b(b)q(egin)h(with)g(a)e(`)p
-Ft(.)p Fu(')h(\(hidden)h(\014les\))g(when)f(p)q(erforming)h(\014lename)
-555 2369 y(completion,)g(unless)f(the)f(leading)h(`)p
-Ft(.)p Fu(')e(is)h(supplied)i(b)o(y)e(the)f(user)h(in)h(the)555
-2423 y(\014lename)16 b(to)f(b)q(e)h(completed.)21 b(This)15
-b(v)m(ariable)i(is)f(`)p Ft(on)p Fu(')e(b)o(y)h(default.)315
-2506 y Ft(output-meta)555 2560 y Fu(If)j(set)f(to)g(`)p
-Ft(on)p Fu(',)g(Readline)i(will)h(displa)o(y)f(c)o(haracters)d(with)j
-(the)e(eigh)o(th)h(bit)555 2615 y(set)g(directly)i(rather)d(than)h(as)g
-(a)g(meta-pre\014xed)h(escap)q(e)g(sequence.)30 b(The)555
-2670 y(default)16 b(is)f(`)p Ft(off)p Fu('.)p eop
-%%Page: 7 9
-7 8 bop 75 -58 a Fu(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077
-b(7)315 149 y Ft(page-completions)555 204 y Fu(If)17
-b(set)g(to)f(`)p Ft(on)p Fu(',)g(Readline)i(uses)g(an)e(in)o(ternal)i
-Ft(more)p Fu(-lik)o(e)g(pager)f(to)f(displa)o(y)555 259
-y(a)g(screenful)h(of)f(p)q(ossible)i(completions)f(at)f(a)g(time.)23
-b(This)17 b(v)m(ariable)g(is)g(`)p Ft(on)p Fu(')555 314
-y(b)o(y)e(default.)315 395 y Ft(print-completions-horizont)o(ally)555
-450 y Fu(If)d(set)g(to)f(`)p Ft(on)p Fu(',)h(Readline)h(will)g(displa)o
-(y)h(completions)f(with)f(matc)o(hes)f(sorted)555 505
-y(horizon)o(tally)23 b(in)f(alphab)q(etical)i(order,)f(rather)e(than)g
-(do)o(wn)h(the)g(screen.)555 560 y(The)15 b(default)h(is)g(`)p
-Ft(off)p Fu('.)315 641 y Ft(show-all-if-ambiguous)555
-696 y Fu(This)g(alters)e(the)i(default)f(b)q(eha)o(vior)h(of)e(the)h
-(completion)h(functions.)21 b(If)15 b(set)555 751 y(to)e(`)p
-Ft(on)p Fu(',)g(w)o(ords)g(whic)o(h)h(ha)o(v)o(e)g(more)f(than)g(one)h
-(p)q(ossible)i(completion)f(cause)555 806 y(the)20 b(matc)o(hes)f(to)f
-(b)q(e)j(listed)f(immediately)h(instead)f(of)f(ringing)i(the)e(b)q
-(ell.)555 861 y(The)c(default)h(v)m(alue)h(is)e(`)p Ft(off)p
-Fu('.)315 942 y Ft(visible-stats)555 997 y Fu(If)h(set)g(to)f(`)p
-Ft(on)p Fu(',)g(a)h(c)o(haracter)f(denoting)h(a)g(\014le's)h(t)o(yp)q
-(e)f(is)g(app)q(ended)i(to)d(the)555 1052 y(\014lename)h(when)g
-(listing)h(p)q(ossible)g(completions.)j(The)c(default)g(is)f(`)p
-Ft(off)p Fu('.)75 1133 y(Key)h(Bindings)315 1188 y(The)21
-b(syn)o(tax)f(for)h(con)o(trolling)h(k)o(ey)f(bindings)h(in)g(the)f
-(init)h(\014le)g(is)g(simple.)39 b(First)20 b(y)o(ou)315
-1243 y(need)15 b(to)e(\014nd)h(the)g(name)g(of)g(the)f(command)h(that)f
-(y)o(ou)h(w)o(an)o(t)f(to)g(c)o(hange.)19 b(The)14 b(follo)o(wing)315
-1298 y(sections)k(con)o(tain)h(tables)f(of)f(the)h(command)g(name,)g
-(the)g(default)h(k)o(eybinding,)h(if)e(an)o(y)l(,)315
-1353 y(and)d(a)g(short)g(description)i(of)d(what)h(the)g(command)g(do)q
-(es.)315 1421 y(Once)k(y)o(ou)f(kno)o(w)f(the)h(name)g(of)g(the)g
-(command,)g(simply)h(place)g(on)f(a)f(line)j(in)f(the)f(init)315
-1476 y(\014le)g(the)f(name)g(of)f(the)h(k)o(ey)g(y)o(ou)f(wish)i(to)e
-(bind)i(the)f(command)g(to,)f(a)g(colon,)i(and)f(then)315
-1530 y(the)f(name)g(of)g(the)g(command.)22 b(The)16 b(name)g(of)g(the)g
-(k)o(ey)f(can)i(b)q(e)f(expressed)h(in)g(di\013eren)o(t)315
-1585 y(w)o(a)o(ys,)d(dep)q(ending)j(on)e(what)g(y)o(ou)g(\014nd)h(most)
-e(comfortable.)315 1653 y(In)19 b(addition)g(to)e(command)h(names,)g
-(readline)i(allo)o(ws)e(k)o(eys)g(to)f(b)q(e)i(b)q(ound)g(to)e(a)h
-(string)315 1708 y(that)c(is)i(inserted)g(when)g(the)f(k)o(ey)g(is)h
-(pressed)g(\(a)e Fk(macro)r Fu(\).)315 1790 y Fk(k)o(eyname)s
-Fu(:)19 b Fk(function-name)g Fu(or)c Fk(macro)555 1845
-y(k)o(eyname)i Fu(is)e(the)f(name)h(of)f(a)g(k)o(ey)g(sp)q(elled)j(out)
-d(in)h(English.)21 b(F)l(or)13 b(example:)675 1910 y
-Ft(Control-u:)22 b(universal-argument)675 1962 y(Meta-Rubout:)g
-(backward-kill-word)675 2014 y(Control-o:)g(">)i(output")555
-2082 y Fu(In)c(the)f(ab)q(o)o(v)o(e)g(example,)i Fo(C-u)e
-Fu(is)h(b)q(ound)g(to)f(the)g(function)h Ft(universal-)555
-2137 y(argument)p Fu(,)e Fo(M-DEL)h Fu(is)g(b)q(ound)h(to)e(the)h
-(function)h Ft(backward-kill-word)p Fu(,)555 2191 y(and)g
-Fo(C-o)f Fu(is)h(b)q(ound)g(to)f(run)h(the)f(macro)g(expressed)h(on)g
-(the)f(righ)o(t)h(hand)555 2246 y(side)c(\(that)e(is,)i(to)e(insert)i
-(the)f(text)g(`)p Ft(>)f(output)p Fu(')g(in)o(to)i(the)f(line\).)555
-2314 y(A)k(n)o(um)o(b)q(er)f(of)g(sym)o(b)q(olic)i(c)o(haracter)e
-(names)g(are)g(recognized)i(while)g(pro-)555 2369 y(cessing)13
-b(this)f(k)o(ey)g(binding)h(syn)o(tax:)18 b Fk(DEL)p
-Fu(,)11 b Fk(ESC)p Fu(,)h Fk(ESCAPE)p Fu(,)f Fk(LFD)p
-Fu(,)g Fk(NEW-)555 2424 y(LINE)p Fu(,)16 b Fk(RET)p Fu(,)e
-Fk(RETURN)p Fu(,)f Fk(R)o(UBOUT)p Fu(,)i Fk(SP)l(A)o(CE)p
-Fu(,)g Fk(SPC)p Fu(,)f(and)i Fk(T)l(AB)p Fu(.)315 2506
-y Ft(")p Fk(k)o(eyseq)q Ft(")p Fu(:)k Fk(function-name)e
-Fu(or)d Fk(macro)555 2560 y(k)o(eyseq)i Fu(di\013ers)e(from)g
-Fk(k)o(eyname)j Fu(ab)q(o)o(v)o(e)d(in)i(that)d(strings)i(denoting)g
-(an)f(en-)555 2615 y(tire)i(k)o(ey)g(sequence)h(can)f(b)q(e)g(sp)q
-(eci\014ed,)i(b)o(y)e(placing)h(the)f(k)o(ey)g(sequence)h(in)555
-2670 y(double)e(quotes.)j(Some)c Fp(gnu)g Fu(Emacs)f(st)o(yle)h(k)o(ey)
-g(escap)q(es)g(can)g(b)q(e)g(used,)g(as)p eop
-%%Page: 8 10
-8 9 bop 75 -58 a Fu(8)1322 b(GNU)15 b(Readline)h(Library)555
-149 y(in)i(the)f(follo)o(wing)g(example,)h(but)f(the)g(sp)q(ecial)i(c)o
-(haracter)d(names)h(are)f(not)555 204 y(recognized.)675
-270 y Ft("\\C-u":)23 b(universal-argument)675 322 y("\\C-x\\C-r":)f
-(re-read-init-file)675 373 y("\\e[11~":)h("Function)f(Key)i(1")555
-442 y Fu(In)33 b(the)f(ab)q(o)o(v)o(e)g(example,)37 b
-Fo(C-u)32 b Fu(is)h(again)f(b)q(ound)h(to)f(the)g(function)555
-497 y Ft(universal-argument)19 b Fu(\(just)j(as)f(it)h(w)o(as)f(in)i
-(the)f(\014rst)f(example\),)j(`)p Fo(C-x)555 551 y(C-r)p
-Fu(')c(is)h(b)q(ound)g(to)f(the)h(function)g Ft(re-read-init-file)p
-Fu(,)f(and)g(`)1731 549 y Fn(h)p 1743 523 70 2 v 1743
-551 a Fm(ESC)p 1743 559 V 1810 549 a Fn(i)15 b(h)p 1852
-523 10 2 v 1852 551 a Fm([)p 1852 560 V 1860 549 a Fn(i)555
-604 y(h)p 567 578 18 2 v 567 606 a Fm(1)p 567 614 V 583
-604 a Fn(i)g(h)p 625 578 V 625 606 a Fm(1)p 625 614 V
-640 604 a Fn(i)g(h)p 683 578 24 2 v 683 606 a Ft(~)p
-683 614 V 704 604 a Fn(i)719 606 y Fu(')g(is)h(b)q(ound)g(to)e(insert)i
-(the)f(text)g(`)p Ft(Function)f(Key)g(1)p Fu('.)315 688
-y(The)h(follo)o(wing)h Fp(gnu)e Fu(Emacs)h(st)o(yle)g(escap)q(e)h
-(sequences)g(are)e(a)o(v)m(ailable)j(when)e(sp)q(ecifying)315
-743 y(k)o(ey)g(sequences:)315 825 y Fo(\\C-)168 b Fu(con)o(trol)15
-b(pre\014x)315 907 y Fo(\\M-)168 b Fu(meta)15 b(pre\014x)315
-989 y Fo(\\e)192 b Fu(an)15 b(escap)q(e)h(c)o(haracter)315
-1071 y Fo(\\\\)192 b Fu(bac)o(kslash)315 1152 y Fo(\\)p
-Ft(")555 1150 y Fn(h)p 567 1124 V 567 1152 a Ft(")p 567
-1160 V 589 1150 a Fn(i)604 1152 y Fu(,)15 b(a)f(double)j(quotation)e
-(mark)315 1234 y Fo(\\')555 1232 y Fn(h)p 567 1206 10
-2 v 567 1234 a Fm(')p 567 1242 V 575 1232 a Fn(i)590
-1234 y Fu(,)g(a)f(single)j(quote)e(or)g(ap)q(ostrophe)315
-1316 y(In)f(addition)h(to)f(the)f Fp(gnu)h Fu(Emacs)g(st)o(yle)f(escap)
-q(e)i(sequences,)g(a)e(second)i(set)e(of)h(bac)o(kslash)315
-1371 y(escap)q(es)i(is)g(a)o(v)m(ailable:)315 1453 y
-Ft(\\a)192 b Fu(alert)15 b(\(b)q(ell\))315 1535 y Ft(\\b)192
-b Fu(bac)o(kspace)315 1617 y Ft(\\d)g Fu(delete)315 1699
-y Ft(\\f)g Fu(form)14 b(feed)315 1781 y Ft(\\n)192 b
-Fu(newline)315 1862 y Ft(\\r)g Fu(carriage)15 b(return)315
-1944 y Ft(\\t)192 b Fu(horizon)o(tal)16 b(tab)315 2026
-y Ft(\\v)192 b Fu(v)o(ertical)16 b(tab)315 2108 y Ft(\\)p
-Fk(nnn)141 b Fu(the)17 b(eigh)o(t-bit)h(c)o(haracter)f(whose)g(v)m
-(alue)i(is)e(the)h(o)q(ctal)f(v)m(alue)i Fk(nnn)f Fu(\(one)f(to)555
-2163 y(three)e(digits\))315 2245 y Ft(\\x)p Fk(HH)124
-b Fu(the)20 b(eigh)o(t-bit)g(c)o(haracter)f(whose)h(v)m(alue)h(is)f
-(the)g(hexadecimal)h(v)m(alue)g Fk(HH)555 2300 y Fu(\(one)15
-b(or)g(t)o(w)o(o)f(hex)h(digits\))315 2382 y(When)k(en)o(tering)g(the)g
-(text)f(of)g(a)h(macro,)f(single)i(or)e(double)i(quotes)f(m)o(ust)f(b)q
-(e)h(used)h(to)315 2436 y(indicate)12 b(a)f(macro)f(de\014nition.)20
-b(Unquoted)11 b(text)f(is)i(assumed)e(to)h(b)q(e)g(a)f(function)i
-(name.)18 b(In)315 2491 y(the)11 b(macro)f(b)q(o)q(dy)l(,)i(the)f(bac)o
-(kslash)g(escap)q(es)g(describ)q(ed)i(ab)q(o)o(v)o(e)d(are)g(expanded.)
-20 b(Bac)o(kslash)315 2546 y(will)i(quote)d(an)o(y)h(other)g(c)o
-(haracter)f(in)i(the)f(macro)f(text,)h(including)j(`)p
-Ft(")p Fu(')c(and)h(`)p Ft(')p Fu('.)34 b(F)l(or)315
-2601 y(example,)14 b(the)f(follo)o(wing)g(binding)i(will)g(mak)o(e)d(`)
-p Fo(C-x)i Ft(\\)p Fu(')f(insert)g(a)g(single)h(`)p Ft(\\)p
-Fu(')e(in)o(to)h(the)g(line:)435 2666 y Ft("\\C-x\\\\":)23
-b("\\\\")p eop
-%%Page: 9 11
-9 10 bop 75 -58 a Fu(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077
-b(9)75 149 y Fj(1.3.2)30 b(Conditional)20 b(Init)g(Constructs)137
-246 y Fu(Readline)f(implemen)o(ts)g(a)f(facilit)o(y)g(similar)h(in)g
-(spirit)f(to)f(the)h(conditional)h(compilation)g(features)75
-301 y(of)e(the)g(C)g(prepro)q(cessor)g(whic)o(h)i(allo)o(ws)e(k)o(ey)g
-(bindings)i(and)f(v)m(ariable)g(settings)f(to)g(b)q(e)h(p)q(erformed)f
-(as)75 355 y(the)e(result)h(of)f(tests.)k(There)c(are)g(four)g(parser)g
-(directiv)o(es)h(used.)75 435 y Ft($if)168 b Fu(The)16
-b Ft($if)f Fu(construct)g(allo)o(ws)h(bindings)i(to)d(b)q(e)h(made)g
-(based)g(on)f(the)h(editing)h(mo)q(de,)f(the)315 490
-y(terminal)k(b)q(eing)g(used,)g(or)f(the)g(application)i(using)e
-(Readline.)33 b(The)19 b(text)g(of)f(the)i(test)315 545
-y(extends)c(to)e(the)h(end)h(of)f(the)g(line;)i(no)e(c)o(haracters)f
-(are)h(required)i(to)d(isolate)i(it.)315 624 y Ft(mode)144
-b Fu(The)11 b Ft(mode=)e Fu(form)h(of)g(the)h Ft($if)f
-Fu(directiv)o(e)h(is)g(used)g(to)f(test)g(whether)h(Readline)555
-679 y(is)k(in)h Ft(emacs)e Fu(or)g Ft(vi)g Fu(mo)q(de.)20
-b(This)c(ma)o(y)e(b)q(e)h(used)g(in)h(conjunction)g(with)f(the)555
-734 y(`)p Ft(set)f(keymap)p Fu(')f(command,)g(for)h(instance,)g(to)f
-(set)h(bindings)h(in)g(the)f Ft(emacs-)555 789 y(standard)d
-Fu(and)i Ft(emacs-ctlx)e Fu(k)o(eymaps)h(only)i(if)f(Readline)g(is)g
-(starting)f(out)555 844 y(in)k Ft(emacs)f Fu(mo)q(de.)315
-923 y Ft(term)144 b Fu(The)14 b Ft(term=)e Fu(form)h(ma)o(y)g(b)q(e)h
-(used)g(to)f(include)j(terminal-sp)q(eci\014c)g(k)o(ey)d(bind-)555
-978 y(ings,)19 b(p)q(erhaps)g(to)e(bind)i(the)g(k)o(ey)e(sequences)j
-(output)e(b)o(y)g(the)g(terminal's)555 1033 y(function)13
-b(k)o(eys.)18 b(The)13 b(w)o(ord)e(on)h(the)g(righ)o(t)g(side)g(of)g
-(the)g(`)p Ft(=)p Fu(')f(is)h(tested)g(against)555 1088
-y(b)q(oth)j(the)g(full)i(name)e(of)f(the)h(terminal)h(and)f(the)g(p)q
-(ortion)h(of)e(the)h(terminal)555 1142 y(name)i(b)q(efore)g(the)g
-(\014rst)f(`)p Ft(-)p Fu('.)24 b(This)17 b(allo)o(ws)g
-Ft(sun)f Fu(to)g(matc)o(h)h(b)q(oth)f Ft(sun)h Fu(and)555
-1197 y Ft(sun-cmd)p Fu(,)d(for)g(instance.)315 1277 y
-Ft(application)555 1332 y Fu(The)d Fk(application)i Fu(construct)e(is)g
-(used)h(to)e(include)j(application-sp)q(eci)q(\014c)h(set-)555
-1386 y(tings.)19 b(Eac)o(h)12 b(program)f(using)j(the)e(Readline)i
-(library)f(sets)f(the)g Fk(application)555 1441 y(name)p
-Fu(,)g(and)g(y)o(ou)f(can)h(test)f(for)g(a)g(particular)h(v)m(alue.)20
-b(This)12 b(could)h(b)q(e)f(used)h(to)555 1496 y(bind)18
-b(k)o(ey)e(sequences)i(to)d(functions)j(useful)f(for)f(a)g(sp)q
-(eci\014c)i(program.)23 b(F)l(or)555 1551 y(instance,)17
-b(the)g(follo)o(wing)g(command)g(adds)f(a)g(k)o(ey)h(sequence)g(that)f
-(quotes)555 1606 y(the)f(curren)o(t)g(or)g(previous)h(w)o(ord)e(in)j
-(Bash:)675 1670 y Ft($if)23 b(Bash)675 1722 y(#)h(Quote)f(the)g
-(current)g(or)h(previous)f(word)675 1774 y("\\C-xq":)g
-("\\eb\\"\\ef\\"")675 1826 y($endif)75 1905 y($endif)96
-b Fu(This)16 b(command,)e(as)h(seen)h(in)g(the)f(previous)h(example,)g
-(terminates)f(an)g Ft($if)f Fu(command.)75 1985 y Ft($else)120
-b Fu(Commands)15 b(in)h(this)f(branc)o(h)h(of)e(the)i
-Ft($if)e Fu(directiv)o(e)j(are)e(executed)h(if)g(the)f(test)g(fails.)75
-2065 y Ft($include)48 b Fu(This)22 b(directiv)o(e)h(tak)o(es)e(a)h
-(single)h(\014lename)g(as)e(an)h(argumen)o(t)f(and)h(reads)f(commands)
-315 2120 y(and)e(bindings)j(from)c(that)h(\014le.)33
-b(F)l(or)19 b(example,)i(the)e(follo)o(wing)h(directiv)o(e)h(reads)e
-(from)315 2174 y(`)p Ft(/etc/inputrc)p Fu(':)435 2239
-y Ft($include)k(/etc/inputrc)75 2351 y Fj(1.3.3)30 b(Sample)20
-b(Init)h(File)137 2447 y Fu(Here)16 b(is)g(an)f(example)h(of)f(an)g
-Fk(inputrc)k Fu(\014le.)i(This)16 b(illustrates)g(k)o(ey)f(binding,)i
-(v)m(ariable)f(assignmen)o(t,)75 2502 y(and)f(conditional)i(syn)o(tax.)
-p eop
-%%Page: 10 12
-10 11 bop 75 -58 a Fu(10)1299 b(GNU)15 b(Readline)h(Library)195
-201 y Ft(#)24 b(This)f(file)g(controls)g(the)h(behaviour)e(of)i(line)f
-(input)g(editing)g(for)195 253 y(#)h(programs)e(that)i(use)f(the)h(GNU)
-f(Readline)g(library.)47 b(Existing)195 305 y(#)24 b(programs)e
-(include)h(FTP,)h(Bash,)f(and)g(GDB.)195 357 y(#)195
-409 y(#)h(You)f(can)h(re-read)f(the)g(inputrc)g(file)g(with)h(C-x)f
-(C-r.)195 461 y(#)h(Lines)f(beginning)g(with)g('#')g(are)h(comments.)
-195 513 y(#)195 565 y(#)g(First,)f(include)g(any)g(systemwide)g
-(bindings)f(and)i(variable)195 616 y(#)g(assignments)e(from)h
-(/etc/Inputrc)195 668 y($include)g(/etc/Inputrc)195 772
-y(#)195 824 y(#)h(Set)f(various)g(bindings)g(for)g(emacs)g(mode.)195
-928 y(set)g(editing-mode)g(emacs)195 1032 y($if)g(mode=emacs)195
-1135 y(Meta-Control-h:)46 b(backward-kill-word)21 b(Text)i(after)h(the)
-f(function)g(name)g(is)h(ignored)p 1986 1145 21 38 v
-195 1239 a(#)195 1291 y(#)g(Arrow)f(keys)g(in)h(keypad)f(mode)195
-1343 y(#)195 1395 y(#"\\M-OD":)190 b(backward-char)195
-1447 y(#"\\M-OC":)g(forward-char)195 1499 y(#"\\M-OA":)g
-(previous-history)195 1550 y(#"\\M-OB":)g(next-history)195
-1602 y(#)195 1654 y(#)24 b(Arrow)f(keys)g(in)h(ANSI)f(mode)195
-1706 y(#)195 1758 y("\\M-[D":)190 b(backward-char)195
-1810 y("\\M-[C":)g(forward-char)195 1862 y("\\M-[A":)g
-(previous-history)195 1914 y("\\M-[B":)g(next-history)195
-1966 y(#)195 2017 y(#)24 b(Arrow)f(keys)g(in)h(8)g(bit)f(keypad)g(mode)
-195 2069 y(#)195 2121 y(#"\\M-\\C-OD":)165 b(backward-char)195
-2173 y(#"\\M-\\C-OC":)g(forward-char)195 2225 y(#"\\M-\\C-OA":)g
-(previous-history)195 2277 y(#"\\M-\\C-OB":)g(next-history)195
-2329 y(#)195 2381 y(#)24 b(Arrow)f(keys)g(in)h(8)g(bit)f(ANSI)g(mode)
-195 2433 y(#)195 2484 y(#"\\M-\\C-[D":)165 b(backward-char)195
-2536 y(#"\\M-\\C-[C":)g(forward-char)195 2588 y(#"\\M-\\C-[A":)g
-(previous-history)195 2640 y(#"\\M-\\C-[B":)g(next-history)p
-eop
-%%Page: 11 13
-11 12 bop 75 -58 a Fu(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1055
-b(11)195 201 y Ft(C-q:)23 b(quoted-insert)195 305 y($endif)195
-409 y(#)h(An)f(old-style)g(binding.)47 b(This)23 b(happens)g(to)g(be)h
-(the)f(default.)195 461 y(TAB:)g(complete)195 565 y(#)h(Macros)f(that)g
-(are)h(convenient)e(for)h(shell)h(interaction)195 616
-y($if)f(Bash)195 668 y(#)h(edit)f(the)g(path)195 720
-y("\\C-xp":)g("PATH=${PATH}\\e\\C-e\\C-a\\)o(ef\\C-f")195
-772 y(#)h(prepare)f(to)g(type)h(a)f(quoted)g(word)h(--)195
-824 y(#)g(insert)f(open)g(and)h(close)f(double)g(quotes)195
-876 y(#)h(and)f(move)g(to)h(just)f(after)h(the)f(open)g(quote)195
-928 y("\\C-x\\"":)g("\\"\\"\\C-b")195 980 y(#)h(insert)f(a)g(backslash)
-g(\(testing)g(backslash)g(escapes)195 1032 y(#)h(in)f(sequences)g(and)g
-(macros\))195 1083 y("\\C-x\\\\":)g("\\\\")195 1135 y(#)h(Quote)f(the)g
-(current)g(or)h(previous)f(word)195 1187 y("\\C-xq":)g
-("\\eb\\"\\ef\\"")195 1239 y(#)h(Add)f(a)h(binding)f(to)g(refresh)g
-(the)h(line,)f(which)g(is)h(unbound)195 1291 y("\\C-xr":)f
-(redraw-current-line)195 1343 y(#)h(Edit)f(variable)g(on)g(current)g
-(line.)195 1395 y("\\M-\\C-v":)f("\\C-a\\C-k$\\C-y\\M-\\C-e\\C-a\\C-y=)
-o(")195 1447 y($endif)195 1550 y(#)i(use)f(a)h(visible)f(bell)g(if)h
-(one)f(is)h(available)195 1602 y(set)f(bell-style)g(visible)195
-1706 y(#)h(don't)f(strip)g(characters)g(to)g(7)h(bits)f(when)h(reading)
-195 1758 y(set)f(input-meta)g(on)195 1862 y(#)h(allow)f(iso-latin1)f
-(characters)h(to)g(be)h(inserted)f(rather)195 1914 y(#)h(than)f
-(converted)g(to)g(prefix-meta)g(sequences)195 1966 y(set)g
-(convert-meta)g(off)195 2069 y(#)h(display)f(characters)f(with)h(the)h
-(eighth)f(bit)g(set)h(directly)195 2121 y(#)g(rather)f(than)g(as)h
-(meta-prefixed)e(characters)195 2173 y(set)h(output-meta)g(on)195
-2277 y(#)h(if)f(there)g(are)h(more)f(than)h(150)f(possible)g
-(completions)f(for)195 2329 y(#)i(a)f(word,)h(ask)f(the)h(user)f(if)g
-(he)h(wants)f(to)h(see)f(all)h(of)f(them)195 2381 y(set)g
-(completion-query-items)e(150)195 2484 y(#)j(For)f(FTP)195
-2536 y($if)g(Ftp)195 2588 y("\\C-xg":)g("get)g(\\M-?")195
-2640 y("\\C-xt":)g("put)g(\\M-?")p eop
-%%Page: 12 14
-12 13 bop 75 -58 a Fu(12)1299 b(GNU)15 b(Readline)h(Library)195
-149 y Ft("\\M-.":)23 b(yank-last-arg)195 201 y($endif)75
-329 y Fs(1.4)33 b(Bindable)24 b(Readline)f(Commands)137
-425 y Fu(This)17 b(section)f(describ)q(es)h(Readline)g(commands)f(that)
-e(ma)o(y)h(b)q(e)i(b)q(ound)f(to)f(k)o(ey)h(sequences.)22
-b(Com-)75 480 y(mand)15 b(names)g(without)h(an)f(accompan)o(ying)g(k)o
-(ey)g(sequence)i(are)e(un)o(b)q(ound)h(b)o(y)f(default.)137
-547 y(In)f(the)f(follo)o(wing)h(descriptions,)h Fk(p)q(oin)o(t)f
-Fu(refers)f(to)g(the)g(curren)o(t)g(cursor)f(p)q(osition,)j(and)e
-Fk(mark)i Fu(refers)75 601 y(to)k(a)g(cursor)g(p)q(osition)h(sa)o(v)o
-(ed)f(b)o(y)h(the)f Ft(set-mark)g Fu(command.)32 b(The)20
-b(text)f(b)q(et)o(w)o(een)g(the)h(p)q(oin)o(t)g(and)75
-656 y(mark)15 b(is)g(referred)h(to)e(as)h(the)g Fk(region)p
-Fu(.)75 767 y Fj(1.4.1)30 b(Commands)21 b(F)-5 b(or)19
-b(Mo)n(ving)75 888 y Ft(beginning-of-line)13 b(\(C-a\))315
-942 y Fu(Mo)o(v)o(e)h(to)h(the)g(start)f(of)h(the)g(curren)o(t)g(line.)
-75 1034 y Ft(end-of-line)f(\(C-e\))315 1088 y Fu(Mo)o(v)o(e)g(to)h(the)
-g(end)h(of)f(the)g(line.)75 1179 y Ft(forward-char)f(\(C-f\))315
-1234 y Fu(Mo)o(v)o(e)g(forw)o(ard)g(a)h(c)o(haracter.)75
-1325 y Ft(backward-char)e(\(C-b\))315 1380 y Fu(Mo)o(v)o(e)h(bac)o(k)h
-(a)g(c)o(haracter.)75 1471 y Ft(forward-word)f(\(M-f\))315
-1526 y Fu(Mo)o(v)o(e)g(forw)o(ard)g(to)g(the)i(end)g(of)e(the)h(next)h
-(w)o(ord.)j(W)l(ords)c(are)f(comp)q(osed)i(of)f(letters)g(and)315
-1581 y(digits.)75 1672 y Ft(backward-word)e(\(M-b\))315
-1727 y Fu(Mo)o(v)o(e)j(bac)o(k)g(to)h(the)f(start)g(of)g(the)h(curren)o
-(t)g(or)f(previous)i(w)o(ord.)24 b(W)l(ords)16 b(are)h(comp)q(osed)315
-1782 y(of)e(letters)g(and)g(digits.)75 1873 y Ft(clear-screen)f
-(\(C-l\))315 1928 y Fu(Clear)f(the)h(screen)g(and)f(redra)o(w)g(the)g
-(curren)o(t)g(line,)i(lea)o(ving)g(the)e(curren)o(t)g(line)i(at)e(the)g
-(top)315 1982 y(of)i(the)g(screen.)75 2074 y Ft(redraw-current-line)e
-(\(\))315 2128 y Fu(Refresh)i(the)g(curren)o(t)g(line.)22
-b(By)15 b(default,)h(this)f(is)h(un)o(b)q(ound.)75 2239
-y Fj(1.4.2)30 b(Commands)21 b(F)-5 b(or)19 b(Manipulating)i(The)f
-(History)75 2360 y Ft(accept-line)14 b(\(Newline)g(or)h(Return\))315
-2414 y Fu(Accept)j(the)g(line)h(regardless)f(of)f(where)h(the)g(cursor)
-f(is.)27 b(If)18 b(this)g(line)h(is)g(non-empt)o(y)l(,)f(it)315
-2469 y(ma)o(y)d(b)q(e)i(added)f(to)g(the)g(history)g(list)g(for)g
-(future)g(recall)h(with)f Ft(add_history\(\))p Fu(.)k(If)d(this)315
-2524 y(line)g(is)f(a)e(mo)q(di\014ed)j(history)e(line,)i(the)e(history)
-g(line)i(is)f(restored)e(to)h(its)g(original)i(state.)75
-2615 y Ft(previous-history)c(\(C-p\))315 2670 y Fu(Mo)o(v)o(e)h(`bac)o
-(k')h(through)f(the)i(history)f(list,)g(fetc)o(hing)h(the)f(previous)h
-(command.)p eop
-%%Page: 13 15
-13 14 bop 75 -58 a Fu(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1055
-b(13)75 149 y Ft(next-history)14 b(\(C-n\))315 204 y
-Fu(Mo)o(v)o(e)g(`forw)o(ard')f(through)i(the)h(history)f(list,)g(fetc)o
-(hing)h(the)f(next)h(command.)75 307 y Ft(beginning-of-history)c
-(\(M-<\))315 362 y Fu(Mo)o(v)o(e)i(to)h(the)g(\014rst)g(line)i(in)f
-(the)f(history)l(.)75 465 y Ft(end-of-history)e(\(M->\))315
-520 y Fu(Mo)o(v)o(e)h(to)h(the)g(end)h(of)f(the)g(input)h(history)l(,)f
-(i.e.,)g(the)g(line)i(curren)o(tly)f(b)q(eing)g(en)o(tered.)75
-624 y Ft(reverse-search-history)c(\(C-r\))315 678 y Fu(Searc)o(h)k(bac)
-o(kw)o(ard)e(starting)h(at)g(the)h(curren)o(t)f(line)j(and)d(mo)o(ving)
-h(`up')f(through)g(the)h(his-)315 733 y(tory)e(as)h(necessary)l(.)20
-b(This)c(is)g(an)f(incremen)o(tal)h(searc)o(h.)75 836
-y Ft(forward-search-history)c(\(C-s\))315 891 y Fu(Searc)o(h)j(forw)o
-(ard)e(starting)h(at)h(the)f(curren)o(t)h(line)h(and)f(mo)o(ving)g(`do)
-o(wn')f(through)g(the)h(the)315 946 y(history)g(as)g(necessary)l(.)20
-b(This)c(is)g(an)f(incremen)o(tal)h(searc)o(h.)75 1049
-y Ft(non-incremental-reverse-se)o(arch-hi)o(story)c(\(M-p\))315
-1104 y Fu(Searc)o(h)k(bac)o(kw)o(ard)e(starting)h(at)g(the)h(curren)o
-(t)f(line)j(and)d(mo)o(ving)h(`up')f(through)g(the)h(his-)315
-1159 y(tory)h(as)h(necessary)g(using)h(a)e(non-incremen)o(tal)j(searc)o
-(h)e(for)f(a)h(string)g(supplied)i(b)o(y)e(the)315 1214
-y(user.)75 1317 y Ft(non-incremental-forward-se)o(arch-hi)o(story)12
-b(\(M-n\))315 1372 y Fu(Searc)o(h)j(forw)o(ard)e(starting)h(at)h(the)f
-(curren)o(t)h(line)h(and)f(mo)o(ving)g(`do)o(wn')f(through)g(the)h(the)
-315 1426 y(history)e(as)g(necessary)h(using)g(a)f(non-incremen)o(tal)i
-(searc)o(h)e(for)g(a)g(string)g(supplied)j(b)o(y)d(the)315
-1481 y(user.)75 1584 y Ft(history-search-forward)f(\(\))315
-1639 y Fu(Searc)o(h)21 b(forw)o(ard)e(through)i(the)f(history)h(for)f
-(the)h(string)g(of)f(c)o(haracters)g(b)q(et)o(w)o(een)h(the)315
-1694 y(start)16 b(of)h(the)h(curren)o(t)g(line)h(and)e(the)h(p)q(oin)o
-(t.)28 b(This)18 b(is)g(a)f(non-incremen)o(tal)i(searc)o(h.)27
-b(By)315 1749 y(default,)15 b(this)h(command)f(is)h(un)o(b)q(ound.)75
-1852 y Ft(history-search-backward)c(\(\))315 1907 y Fu(Searc)o(h)18
-b(bac)o(kw)o(ard)e(through)h(the)h(history)f(for)g(the)g(string)h(of)f
-(c)o(haracters)f(b)q(et)o(w)o(een)i(the)315 1962 y(start)e(of)h(the)h
-(curren)o(t)g(line)h(and)e(the)h(p)q(oin)o(t.)28 b(This)18
-b(is)g(a)f(non-incremen)o(tal)i(searc)o(h.)27 b(By)315
-2016 y(default,)15 b(this)h(command)f(is)h(un)o(b)q(ound.)75
-2120 y Ft(yank-nth-arg)e(\(M-C-y\))315 2174 y Fu(Insert)f(the)g
-(\014rst)g(argumen)o(t)f(to)g(the)i(previous)f(command)g(\(usually)h
-(the)f(second)h(w)o(ord)e(on)315 2229 y(the)j(previous)h(line\))g(at)e
-(p)q(oin)o(t.)21 b(With)15 b(an)g(argumen)o(t)f Fk(n)p
-Fu(,)h(insert)g(the)g Fk(n)p Fu(th)g(w)o(ord)g(from)f(the)315
-2284 y(previous)g(command)g(\(the)f(w)o(ords)f(in)j(the)e(previous)i
-(command)e(b)q(egin)i(with)e(w)o(ord)g(0\).)19 b(A)315
-2339 y(negativ)o(e)13 b(argumen)o(t)f(inserts)h(the)g
-Fk(n)p Fu(th)g(w)o(ord)f(from)g(the)h(end)h(of)e(the)h(previous)g
-(command.)75 2442 y Ft(yank-last-arg)g(\(M-.)i(or)g(M-_\))315
-2497 y Fu(Insert)j(last)f(argumen)o(t)g(to)g(the)g(previous)i(command)e
-(\(the)g(last)h(w)o(ord)f(of)g(the)g(previous)315 2552
-y(history)e(en)o(try\).)20 b(With)15 b(an)g(argumen)o(t,)g(b)q(eha)o(v)
-o(e)g(exactly)h(lik)o(e)g Ft(yank-nth-arg)p Fu(.)j(Succes-)315
-2606 y(siv)o(e)f(calls)g(to)f Ft(yank-last-arg)e Fu(mo)o(v)o(e)i(bac)o
-(k)g(through)g(the)g(history)g(list,)i(inserting)f(the)315
-2661 y(last)d(argumen)o(t)g(of)f(eac)o(h)i(line)g(in)g(turn.)p
-eop
-%%Page: 14 16
-14 15 bop 75 -58 a Fu(14)1299 b(GNU)15 b(Readline)h(Library)75
-149 y Fj(1.4.3)30 b(Commands)21 b(F)-5 b(or)19 b(Changing)i(T)-5
-b(ext)75 286 y Ft(delete-char)14 b(\(C-d\))315 341 y
-Fu(Delete)20 b(the)g(c)o(haracter)e(at)h(p)q(oin)o(t.)33
-b(If)20 b(p)q(oin)o(t)g(is)g(at)e(the)i(b)q(eginning)i(of)d(the)g
-(line,)j(there)315 396 y(are)c(no)h(c)o(haracters)e(in)j(the)e(line,)j
-(and)e(the)f(last)h(c)o(haracter)e(t)o(yp)q(ed)i(w)o(as)f(not)g(b)q
-(ound)i(to)315 450 y Ft(delete-char)p Fu(,)13 b(then)j(return)f
-Fp(eof)p Fu(.)75 552 y Ft(backward-delete-char)d(\(Rubout\))315
-607 y Fu(Delete)k(the)f(c)o(haracter)f(b)q(ehind)j(the)f(cursor.)j(A)c
-(n)o(umeric)h(argumen)o(t)e(means)i(to)e(kill)j(the)315
-661 y(c)o(haracters)d(instead)i(of)f(deleting)i(them.)75
-763 y Ft(forward-backward-delete-ch)o(ar)12 b(\(\))315
-818 y Fu(Delete)20 b(the)f(c)o(haracter)f(under)i(the)f(cursor,)h
-(unless)g(the)f(cursor)g(is)h(at)e(the)h(end)h(of)f(the)315
-872 y(line,)e(in)g(whic)o(h)g(case)e(the)h(c)o(haracter)g(b)q(ehind)h
-(the)f(cursor)g(is)g(deleted.)23 b(By)16 b(default,)h(this)315
-927 y(is)f(not)f(b)q(ound)h(to)e(a)h(k)o(ey)l(.)75 1029
-y Ft(quoted-insert)e(\(C-q)i(or)g(C-v\))315 1083 y Fu(Add)j(the)f(next)
-g(c)o(haracter)g(t)o(yp)q(ed)g(to)f(the)i(line)g(v)o(erbatim.)26
-b(This)18 b(is)f(ho)o(w)g(to)g(insert)g(k)o(ey)315 1138
-y(sequences)f(lik)o(e)h Fo(C-q)p Fu(,)d(for)h(example.)75
-1240 y Ft(tab-insert)f(\(M-)401 1238 y Fn(h)p 412 1212
-74 2 v 412 1240 a Fm(T)m(AB)p 412 1247 V 484 1238 a Fn(i)499
-1240 y Ft(\))315 1294 y Fu(Insert)h(a)g(tab)g(c)o(haracter.)75
-1396 y Ft(self-insert)f(\(a,)g(b,)h(A,)g(1,)g(!,)g(...)o(\))315
-1451 y Fu(Insert)g(y)o(ourself.)75 1552 y Ft(transpose-chars)e(\(C-t\))
-315 1607 y Fu(Drag)i(the)h(c)o(haracter)f(b)q(efore)h(the)h(cursor)e
-(forw)o(ard)g(o)o(v)o(er)g(the)h(c)o(haracter)f(at)h(the)g(cursor,)315
-1662 y(mo)o(ving)i(the)f(cursor)h(forw)o(ard)e(as)i(w)o(ell.)28
-b(If)18 b(the)g(insertion)h(p)q(oin)o(t)f(is)g(at)f(the)h(end)h(of)e
-(the)315 1716 y(line,)c(then)e(this)h(transp)q(oses)e(the)h(last)g(t)o
-(w)o(o)f(c)o(haracters)g(of)h(the)g(line.)20 b(Negativ)o(e)11
-b(argumen)o(ts)315 1771 y(ha)o(v)o(e)k(no)g(e\013ect.)75
-1873 y Ft(transpose-words)e(\(M-t\))315 1927 y Fu(Drag)i(the)h(w)o(ord)
-g(b)q(efore)g(p)q(oin)o(t)h(past)f(the)g(w)o(ord)f(after)h(p)q(oin)o
-(t,)g(mo)o(ving)g(p)q(oin)o(t)h(past)f(that)315 1982
-y(w)o(ord)d(as)h(w)o(ell.)21 b(If)14 b(the)g(insertion)i(p)q(oin)o(t)e
-(is)h(at)f(the)g(end)h(of)e(the)i(line,)g(this)g(transp)q(oses)f(the)
-315 2037 y(last)h(t)o(w)o(o)f(w)o(ords)g(on)i(the)f(line.)75
-2138 y Ft(upcase-word)f(\(M-u\))315 2193 y Fu(Upp)q(ercase)j(the)f
-(curren)o(t)g(\(or)f(follo)o(wing\))h(w)o(ord.)22 b(With)16
-b(a)g(negativ)o(e)g(argumen)o(t,)f(upp)q(er-)315 2248
-y(case)g(the)g(previous)h(w)o(ord,)f(but)g(do)g(not)g(mo)o(v)o(e)f(the)
-i(cursor.)75 2349 y Ft(downcase-word)d(\(M-l\))315 2404
-y Fu(Lo)o(w)o(ercase)d(the)h(curren)o(t)g(\(or)f(follo)o(wing\))h(w)o
-(ord.)17 b(With)11 b(a)g(negativ)o(e)g(argumen)o(t,)f(lo)o(w)o(ercase)
-315 2459 y(the)15 b(previous)h(w)o(ord,)e(but)i(do)f(not)g(mo)o(v)o(e)f
-(the)h(cursor.)75 2560 y Ft(capitalize-word)e(\(M-c\))315
-2615 y Fu(Capitalize)f(the)f(curren)o(t)f(\(or)g(follo)o(wing\))h(w)o
-(ord.)18 b(With)11 b(a)f(negativ)o(e)h(argumen)o(t,)f(capitalize)315
-2670 y(the)15 b(previous)h(w)o(ord,)e(but)i(do)f(not)g(mo)o(v)o(e)f
-(the)h(cursor.)p eop
-%%Page: 15 17
-15 16 bop 75 -58 a Fu(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1055
-b(15)75 149 y Ft(overwrite-mode)13 b(\(\))315 204 y Fu(T)l(oggle)j(o)o
-(v)o(erwrite)g(mo)q(de.)24 b(With)17 b(an)f(explicit)j(p)q(ositiv)o(e)f
-(n)o(umeric)f(argumen)o(t,)f(switc)o(hes)315 259 y(to)10
-b(o)o(v)o(erwrite)g(mo)q(de.)19 b(With)11 b(an)g(explicit)i(non-p)q
-(ositiv)o(e)f(n)o(umeric)g(argumen)o(t,)e(switc)o(hes)i(to)315
-314 y(insert)k(mo)q(de.)k(This)c(command)f(a\013ects)g(only)h
-Ft(emacs)e Fu(mo)q(de;)h Ft(vi)g Fu(mo)q(de)h(do)q(es)g(o)o(v)o
-(erwrite)315 369 y(di\013eren)o(tly)l(.)21 b(Eac)o(h)15
-b(call)h(to)f Ft(readline\(\))f Fu(starts)f(in)k(insert)e(mo)q(de.)315
-436 y(In)g(o)o(v)o(erwrite)f(mo)q(de,)h(c)o(haracters)f(b)q(ound)h(to)f
-Ft(self-insert)f Fu(replace)j(the)e(text)h(at)e(p)q(oin)o(t)315
-491 y(rather)20 b(than)h(pushing)h(the)f(text)f(to)g(the)h(righ)o(t.)36
-b(Characters)20 b(b)q(ound)i(to)e Ft(backward-)315 546
-y(delete-char)14 b Fu(replace)i(the)f(c)o(haracter)g(b)q(efore)g(p)q
-(oin)o(t)h(with)f(a)g(space.)315 614 y(By)g(default,)h(this)f(command)g
-(is)h(un)o(b)q(ound.)75 729 y Fj(1.4.4)30 b(Killing)20
-b(And)h(Y)-5 b(anking)75 853 y Ft(kill-line)14 b(\(C-k\))315
-908 y Fu(Kill)j(the)f(text)e(from)h(p)q(oin)o(t)h(to)e(the)h(end)h(of)f
-(the)g(line.)75 1002 y Ft(backward-kill-line)e(\(C-x)h(Rubout\))315
-1057 y Fu(Kill)j(bac)o(kw)o(ard)e(to)f(the)i(b)q(eginning)h(of)e(the)g
-(line.)75 1151 y Ft(unix-line-discard)e(\(C-u\))315 1205
-y Fu(Kill)k(bac)o(kw)o(ard)e(from)f(the)i(cursor)e(to)h(the)g(b)q
-(eginning)j(of)c(the)i(curren)o(t)f(line.)75 1299 y Ft(kill-whole-line)
-e(\(\))315 1354 y Fu(Kill)20 b(all)g(c)o(haracters)d(on)h(the)h(curren)
-o(t)f(line,)i(no)e(matter)g(where)g(p)q(oin)o(t)h(is.)29
-b(By)19 b(default,)315 1409 y(this)d(is)f(un)o(b)q(ound.)75
-1503 y Ft(kill-word)f(\(M-d\))315 1558 y Fu(Kill)j(from)d(p)q(oin)o(t)h
-(to)f(the)h(end)g(of)f(the)h(curren)o(t)g(w)o(ord,)e(or)i(if)g(b)q(et)o
-(w)o(een)g(w)o(ords,)e(to)i(the)f(end)315 1613 y(of)h(the)g(next)g(w)o
-(ord.)20 b(W)l(ord)14 b(b)q(oundaries)j(are)e(the)g(same)g(as)g
-Ft(forward-word)p Fu(.)75 1707 y Ft(backward-kill-word)e(\(M-)592
-1705 y Fn(h)p 603 1679 73 2 v 603 1707 a Fm(DEL)p 603
-1714 V 674 1705 a Fn(i)689 1707 y Ft(\))315 1761 y Fu(Kill)k(the)d(w)o
-(ord)g(b)q(ehind)i(p)q(oin)o(t.)21 b(W)l(ord)14 b(b)q(oundaries)h(are)f
-(the)h(same)f(as)g Ft(backward-word)p Fu(.)75 1855 y
-Ft(unix-word-rubout)f(\(C-w\))315 1910 y Fu(Kill)18 b(the)e(w)o(ord)f
-(b)q(ehind)j(p)q(oin)o(t,)e(using)h(white)f(space)g(as)g(a)f(w)o(ord)g
-(b)q(oundary)l(.)23 b(The)16 b(killed)315 1965 y(text)f(is)g(sa)o(v)o
-(ed)g(on)g(the)h(kill-ring.)75 2059 y Ft(delete-horizontal-space)c
-(\(\))315 2114 y Fu(Delete)k(all)g(spaces)f(and)h(tabs)e(around)i(p)q
-(oin)o(t.)k(By)15 b(default,)h(this)f(is)h(un)o(b)q(ound.)75
-2208 y Ft(kill-region)e(\(\))315 2263 y Fu(Kill)j(the)f(text)e(in)i
-(the)g(curren)o(t)f(region.)20 b(By)15 b(default,)h(this)f(command)g
-(is)h(un)o(b)q(ound.)75 2357 y Ft(copy-region-as-kill)d(\(\))315
-2412 y Fu(Cop)o(y)j(the)i(text)e(in)i(the)f(region)g(to)g(the)g(kill)h
-(bu\013er,)f(so)g(it)g(can)g(b)q(e)h(y)o(ank)o(ed)f(righ)o(t)g(a)o(w)o
-(a)o(y)l(.)315 2466 y(By)e(default,)h(this)f(command)g(is)h(un)o(b)q
-(ound.)75 2560 y Ft(copy-backward-word)d(\(\))315 2615
-y Fu(Cop)o(y)19 b(the)g(w)o(ord)g(b)q(efore)g(p)q(oin)o(t)h(to)e(the)i
-(kill)h(bu\013er.)32 b(The)19 b(w)o(ord)g(b)q(oundaries)h(are)f(the)315
-2670 y(same)c(as)g Ft(backward-word)p Fu(.)j(By)d(default,)g(this)h
-(command)f(is)h(un)o(b)q(ound.)p eop
-%%Page: 16 18
-16 17 bop 75 -58 a Fu(16)1299 b(GNU)15 b(Readline)h(Library)75
-149 y Ft(copy-forward-word)d(\(\))315 204 y Fu(Cop)o(y)i(the)h(w)o(ord)
-e(follo)o(wing)j(p)q(oin)o(t)f(to)f(the)g(kill)j(bu\013er.)i(The)c(w)o
-(ord)f(b)q(oundaries)i(are)e(the)315 259 y(same)g(as)g
-Ft(forward-word)p Fu(.)j(By)d(default,)h(this)f(command)g(is)h(un)o(b)q
-(ound.)75 342 y Ft(yank)f(\(C-y\))315 397 y Fu(Y)l(ank)g(the)h(top)f
-(of)f(the)i(kill)h(ring)e(in)o(to)g(the)h(bu\013er)f(at)f(p)q(oin)o(t.)
-75 481 y Ft(yank-pop)g(\(M-y\))315 535 y Fu(Rotate)i(the)h(kill-ring,)j
-(and)d(y)o(ank)g(the)h(new)f(top.)26 b(Y)l(ou)17 b(can)h(only)g(do)f
-(this)h(if)f(the)h(prior)315 590 y(command)d(is)h Ft(yank)e
-Fu(or)h Ft(yank-pop)p Fu(.)75 693 y Fj(1.4.5)30 b(Sp)r(ecifying)20
-b(Numeric)h(Argumen)n(ts)75 806 y Ft(digit-argument)13
-b(\()p Fo(M-0)p Ft(,)i Fo(M-1)p Ft(,)f(...)h Fo(M--)p
-Ft(\))315 861 y Fu(Add)f(this)g(digit)g(to)f(the)h(argumen)o(t)e
-(already)i(accum)o(ulating,)g(or)f(start)f(a)h(new)h(argumen)o(t.)315
-915 y Fo(M--)h Fu(starts)f(a)h(negativ)o(e)g(argumen)o(t.)75
-999 y Ft(universal-argument)e(\(\))315 1054 y Fu(This)g(is)h(another)e
-(w)o(a)o(y)g(to)g(sp)q(ecify)i(an)f(argumen)o(t.)18 b(If)13
-b(this)g(command)g(is)g(follo)o(w)o(ed)g(b)o(y)g(one)315
-1108 y(or)h(more)h(digits,)g(optionally)h(with)f(a)g(leading)h(min)o
-(us)f(sign,)g(those)g(digits)g(de\014ne)h(the)f(ar-)315
-1163 y(gumen)o(t.)k(If)c(the)g(command)f(is)h(follo)o(w)o(ed)g(b)o(y)g
-(digits,)g(executing)g Ft(universal-argument)315 1218
-y Fu(again)h(ends)g(the)g(n)o(umeric)h(argumen)o(t,)e(but)h(is)h
-(otherwise)f(ignored.)22 b(As)16 b(a)g(sp)q(ecial)h(case,)315
-1273 y(if)g(this)g(command)f(is)h(immediately)h(follo)o(w)o(ed)f(b)o(y)
-f(a)g(c)o(haracter)g(that)g(is)h(neither)g(a)f(digit)315
-1328 y(or)d(min)o(us)i(sign,)f(the)g(argumen)o(t)g(coun)o(t)f(for)h
-(the)g(next)g(command)g(is)g(m)o(ultiplied)j(b)o(y)d(four.)315
-1382 y(The)19 b(argumen)o(t)f(coun)o(t)g(is)h(initially)j(one,)d(so)f
-(executing)i(this)f(function)h(the)e(\014rst)h(time)315
-1437 y(mak)o(es)c(the)h(argumen)o(t)f(coun)o(t)h(four,)f(a)h(second)g
-(time)g(mak)o(es)g(the)g(argumen)o(t)f(coun)o(t)g(six-)315
-1492 y(teen,)g(and)g(so)g(on.)20 b(By)15 b(default,)h(this)f(is)h(not)f
-(b)q(ound)h(to)f(a)g(k)o(ey)l(.)75 1595 y Fj(1.4.6)30
-b(Letting)20 b(Readline)g(T)n(yp)r(e)h(F)-5 b(or)19 b(Y)-5
-b(ou)75 1708 y Ft(complete)14 b(\()305 1706 y Fn(h)p
-317 1680 74 2 v 317 1708 a Fm(T)m(AB)p 317 1715 V 389
-1706 a Fn(i)404 1708 y Ft(\))315 1762 y Fu(A)o(ttempt)c(to)h(p)q
-(erform)g(completion)i(on)e(the)g(text)g(b)q(efore)h(p)q(oin)o(t.)19
-b(The)11 b(actual)h(completion)315 1817 y(p)q(erformed)j(is)h
-(application-sp)q(eci\014)q(c.)23 b(The)15 b(default)h(is)g(\014lename)
-g(completion.)75 1901 y Ft(possible-completions)c(\(M-?\))315
-1955 y Fu(List)k(the)f(p)q(ossible)i(completions)f(of)f(the)g(text)g(b)
-q(efore)h(p)q(oin)o(t.)75 2039 y Ft(insert-completions)d(\(M-*\))315
-2093 y Fu(Insert)j(all)g(completions)g(of)f(the)g(text)g(b)q(efore)h(p)
-q(oin)o(t)f(that)g(w)o(ould)h(ha)o(v)o(e)f(b)q(een)h(generated)315
-2148 y(b)o(y)f Ft(possible-completions)p Fu(.)75 2232
-y Ft(menu-complete)e(\(\))315 2286 y Fu(Similar)g(to)f
-Ft(complete)p Fu(,)f(but)h(replaces)h(the)f(w)o(ord)f(to)g(b)q(e)i
-(completed)f(with)h(a)e(single)j(matc)o(h)315 2341 y(from)k(the)h(list)
-h(of)e(p)q(ossible)j(completions.)32 b(Rep)q(eated)19
-b(execution)h(of)f Ft(menu-complete)315 2396 y Fu(steps)h(through)g
-(the)g(list)h(of)f(p)q(ossible)i(completions,)g(inserting)f(eac)o(h)f
-(matc)o(h)f(in)i(turn.)315 2451 y(A)o(t)d(the)g(end)h(of)f(the)h(list)g
-(of)f(completions,)i(the)e(b)q(ell)j(is)d(rung)h(\(sub)s(ject)f(to)f
-(the)i(setting)315 2506 y(of)f Ft(bell-style)p Fu(\))e(and)i(the)g
-(original)h(text)f(is)g(restored.)28 b(An)19 b(argumen)o(t)e(of)g
-Fk(n)i Fu(mo)o(v)o(es)e Fk(n)315 2560 y Fu(p)q(ositions)h(forw)o(ard)e
-(in)j(the)e(list)h(of)f(matc)o(hes;)h(a)f(negativ)o(e)g(argumen)o(t)g
-(ma)o(y)g(b)q(e)h(used)g(to)315 2615 y(mo)o(v)o(e)g(bac)o(kw)o(ard)h
-(through)g(the)g(list.)32 b(This)20 b(command)f(is)h(in)o(tended)g(to)f
-(b)q(e)h(b)q(ound)g(to)315 2668 y Fn(h)p 327 2642 V 327
-2670 a Fm(T)m(AB)p 327 2678 V 399 2668 a Fn(i)414 2670
-y Fu(,)15 b(but)g(is)h(un)o(b)q(ound)g(b)o(y)f(default.)p
-eop
-%%Page: 17 19
-17 18 bop 75 -58 a Fu(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1055
-b(17)75 149 y Ft(delete-char-or-list)13 b(\(\))315 204
-y Fu(Deletes)h(the)f(c)o(haracter)g(under)h(the)g(cursor)f(if)h(not)f
-(at)g(the)g(b)q(eginning)j(or)d(end)h(of)f(the)g(line)315
-259 y(\(lik)o(e)i Ft(delete-char)p Fu(\).)j(If)d(at)f(the)h(end)g(of)f
-(the)g(line,)i(b)q(eha)o(v)o(es)f(iden)o(tically)i(to)d
-Ft(possible-)315 314 y(completions)p Fu(.)k(This)e(command)f(is)h(un)o
-(b)q(ound)g(b)o(y)f(default.)75 428 y Fj(1.4.7)30 b(Keyb)r(oard)20
-b(Macros)75 551 y Ft(start-kbd-macro)13 b(\(C-x)i(\(\))315
-606 y Fu(Begin)h(sa)o(ving)f(the)h(c)o(haracters)e(t)o(yp)q(ed)i(in)o
-(to)f(the)g(curren)o(t)g(k)o(eyb)q(oard)g(macro.)75 699
-y Ft(end-kbd-macro)e(\(C-x)i(\)\))315 754 y Fu(Stop)f(sa)o(ving)f(the)h
-(c)o(haracters)f(t)o(yp)q(ed)h(in)o(to)f(the)h(curren)o(t)g(k)o(eyb)q
-(oard)f(macro)g(and)h(sa)o(v)o(e)f(the)315 809 y(de\014nition.)75
-902 y Ft(call-last-kbd-macro)g(\(C-x)h(e\))315 957 y
-Fu(Re-execute)k(the)g(last)f(k)o(eyb)q(oard)h(macro)f(de\014ned,)i(b)o
-(y)e(making)h(the)g(c)o(haracters)e(in)j(the)315 1012
-y(macro)14 b(app)q(ear)i(as)f(if)g(t)o(yp)q(ed)h(at)e(the)i(k)o(eyb)q
-(oard.)75 1126 y Fj(1.4.8)30 b(Some)20 b(Miscellaneous)h(Commands)75
-1249 y Ft(re-read-init-file)13 b(\(C-x)h(C-r\))315 1304
-y Fu(Read)d(in)g(the)g(con)o(ten)o(ts)g(of)f(the)h Fk(inputrc)k
-Fu(\014le,)d(and)g(incorp)q(orate)f(an)o(y)f(bindings)j(or)e(v)m
-(ariable)315 1358 y(assignmen)o(ts)k(found)h(there.)75
-1452 y Ft(abort)e(\(C-g\))315 1507 y Fu(Ab)q(ort)f(the)g(curren)o(t)h
-(editing)g(command)f(and)h(ring)f(the)h(terminal's)f(b)q(ell)i(\(sub)s
-(ject)e(to)g(the)315 1561 y(setting)i(of)g Ft(bell-style)p
-Fu(\).)75 1655 y Ft(do-uppercase-version)d(\(M-a,)j(M-b,)f(M-)p
-Fk(x)p Ft(,)h(...\))315 1710 y Fu(If)f(the)g(meta\014ed)g(c)o(haracter)
-f Fk(x)k Fu(is)d(lo)o(w)o(ercase,)g(run)g(the)g(command)f(that)h(is)g
-(b)q(ound)h(to)e(the)315 1764 y(corresp)q(onding)j(upp)q(ercase)g(c)o
-(haracter.)75 1858 y Ft(prefix-meta)e(\()377 1856 y Fn(h)p
-389 1830 70 2 v 389 1858 a Fm(ESC)p 389 1866 V 456 1856
-a Fn(i)471 1858 y Ft(\))315 1913 y Fu(Metafy)k(the)h(next)g(c)o
-(haracter)f(t)o(yp)q(ed.)30 b(This)20 b(is)f(for)f(k)o(eyb)q(oards)h
-(without)g(a)f(meta)g(k)o(ey)l(.)315 1968 y(T)o(yping)e(`)485
-1966 y Fn(h)p 496 1939 V 496 1968 a Fm(ESC)p 496 1975
-V 563 1966 a Fn(i)593 1968 y Ft(f)p Fu(')f(is)h(equiv)m(alen)o(t)h(to)d
-(t)o(yping)i Fo(M-f)p Fu(.)75 2061 y Ft(undo)f(\(C-_)f(or)h(C-x)g
-(C-u\))315 2116 y Fu(Incremen)o(tal)h(undo,)f(separately)h(remem)o(b)q
-(ered)g(for)e(eac)o(h)h(line.)75 2209 y Ft(revert-line)f(\(M-r\))315
-2264 y Fu(Undo)j(all)g(c)o(hanges)g(made)f(to)g(this)h(line.)26
-b(This)17 b(is)g(lik)o(e)h(executing)f(the)g Ft(undo)f
-Fu(command)315 2319 y(enough)g(times)f(to)g(get)f(bac)o(k)h(to)g(the)g
-(b)q(eginning.)75 2412 y Ft(tilde-expand)f(\(M-~\))315
-2467 y Fu(P)o(erform)g(tilde)j(expansion)f(on)f(the)g(curren)o(t)g(w)o
-(ord.)75 2560 y Ft(set-mark)f(\(C-@\))315 2615 y Fu(Set)i(the)h(mark)f
-(to)f(the)i(p)q(oin)o(t.)24 b(If)17 b(a)f(n)o(umeric)h(argumen)o(t)f
-(is)g(supplied,)j(the)e(mark)e(is)i(set)315 2670 y(to)e(that)f(p)q
-(osition.)p eop
-%%Page: 18 20
-18 19 bop 75 -58 a Fu(18)1299 b(GNU)15 b(Readline)h(Library)75
-149 y Ft(exchange-point-and-mark)c(\(C-x)j(C-x\))315
-204 y Fu(Sw)o(ap)g(the)h(p)q(oin)o(t)g(with)g(the)g(mark.)k(The)c
-(curren)o(t)f(cursor)h(p)q(osition)g(is)g(set)g(to)f(the)g(sa)o(v)o(ed)
-315 259 y(p)q(osition,)h(and)f(the)h(old)f(cursor)g(p)q(osition)h(is)g
-(sa)o(v)o(ed)f(as)g(the)g(mark.)75 347 y Ft(character-search)e(\(C-]\))
-315 402 y Fu(A)f(c)o(haracter)g(is)h(read)g(and)f(p)q(oin)o(t)h(is)g
-(mo)o(v)o(ed)f(to)g(the)g(next)h(o)q(ccurrence)g(of)f(that)g(c)o
-(haracter.)315 456 y(A)j(negativ)o(e)h(coun)o(t)f(searc)o(hes)g(for)f
-(previous)i(o)q(ccurrences.)75 544 y Ft(character-search-backward)c
-(\(M-C-]\))315 599 y Fu(A)22 b(c)o(haracter)g(is)h(read)f(and)h(p)q
-(oin)o(t)g(is)g(mo)o(v)o(ed)f(to)g(the)g(previous)h(o)q(ccurrence)h(of)
-e(that)315 654 y(c)o(haracter.)d(A)c(negativ)o(e)h(coun)o(t)f(searc)o
-(hes)g(for)f(subsequen)o(t)i(o)q(ccurrences.)75 741 y
-Ft(insert-comment)d(\(M-#\))315 796 y Fu(Without)18 b(a)f(n)o(umeric)i
-(argumen)o(t,)e(the)h(v)m(alue)h(of)f(the)f Ft(comment-begin)f
-Fu(v)m(ariable)k(is)e(in-)315 851 y(serted)e(at)f(the)h(b)q(eginning)i
-(of)d(the)h(curren)o(t)g(line.)23 b(If)16 b(a)g(n)o(umeric)h(argumen)o
-(t)e(is)h(supplied,)315 906 y(this)j(command)f(acts)g(as)f(a)h(toggle:)
-26 b(if)19 b(the)f(c)o(haracters)g(at)f(the)i(b)q(eginning)h(of)e(the)g
-(line)315 960 y(do)d(not)g(matc)o(h)g(the)g(v)m(alue)i(of)e
-Ft(comment-begin)p Fu(,)e(the)i(v)m(alue)i(is)f(inserted,)f(otherwise)h
-(the)315 1015 y(c)o(haracters)j(in)i Ft(comment-begin)d
-Fu(are)i(deleted)i(from)d(the)h(b)q(eginning)i(of)e(the)g(line.)36
-b(In)315 1070 y(either)16 b(case,)f(the)g(line)i(is)f(accepted)f(as)g
-(if)h(a)f(newline)i(had)e(b)q(een)i(t)o(yp)q(ed.)75 1158
-y Ft(dump-functions)c(\(\))315 1213 y Fu(Prin)o(t)g(all)h(of)f(the)g
-(functions)h(and)g(their)g(k)o(ey)f(bindings)i(to)d(the)i(Readline)g
-(output)f(stream.)315 1267 y(If)j(a)g(n)o(umeric)g(argumen)o(t)f(is)i
-(supplied,)h(the)e(output)f(is)i(formatted)d(in)j(suc)o(h)f(a)g(w)o(a)o
-(y)f(that)315 1322 y(it)g(can)h(b)q(e)g(made)f(part)f(of)h(an)g
-Fk(inputrc)k Fu(\014le.)i(This)16 b(command)f(is)h(un)o(b)q(ound)g(b)o
-(y)f(default.)75 1410 y Ft(dump-variables)e(\(\))315
-1465 y Fu(Prin)o(t)e(all)g(of)f(the)h(settable)g(v)m(ariables)h(and)f
-(their)g(v)m(alues)h(to)e(the)h(Readline)h(output)e(stream.)315
-1519 y(If)16 b(a)g(n)o(umeric)g(argumen)o(t)f(is)i(supplied,)h(the)e
-(output)f(is)i(formatted)d(in)j(suc)o(h)f(a)g(w)o(a)o(y)f(that)315
-1574 y(it)g(can)h(b)q(e)g(made)f(part)f(of)h(an)g Fk(inputrc)k
-Fu(\014le.)i(This)16 b(command)f(is)h(un)o(b)q(ound)g(b)o(y)f(default.)
-75 1662 y Ft(dump-macros)f(\(\))315 1717 y Fu(Prin)o(t)j(all)h(of)e
-(the)h(Readline)h(k)o(ey)f(sequences)h(b)q(ound)g(to)e(macros)g(and)h
-(the)g(strings)g(they)315 1771 y(output.)26 b(If)18 b(a)f(n)o(umeric)h
-(argumen)o(t)f(is)h(supplied,)i(the)d(output)g(is)h(formatted)e(in)j
-(suc)o(h)e(a)315 1826 y(w)o(a)o(y)d(that)g(it)i(can)f(b)q(e)g(made)g
-(part)g(of)f(an)h Fk(inputrc)k Fu(\014le.)i(This)15 b(command)g(is)h
-(un)o(b)q(ound)g(b)o(y)315 1881 y(default.)75 1969 y
-Ft(emacs-editing-mode)d(\(C-e\))315 2024 y Fu(When)j(in)g
-Ft(vi)e Fu(command)i(mo)q(de,)f(this)g(causes)h(a)f(switc)o(h)g(to)g
-Ft(emacs)f Fu(editing)j(mo)q(de.)75 2111 y Ft(vi-editing-mode)c
-(\(M-C-j\))315 2166 y Fu(When)j(in)g Ft(emacs)e Fu(editing)j(mo)q(de,)e
-(this)g(causes)h(a)f(switc)o(h)g(to)g Ft(vi)f Fu(editing)j(mo)q(de.)75
-2290 y Fs(1.5)33 b(Readline)23 b(vi)h(Mo)r(de)137 2385
-y Fu(While)13 b(the)f(Readline)i(library)e(do)q(es)g(not)g(ha)o(v)o(e)f
-(a)h(full)h(set)f(of)f Ft(vi)g Fu(editing)j(functions,)f(it)f(do)q(es)g
-(con)o(tain)75 2440 y(enough)17 b(to)g(allo)o(w)g(simple)h(editing)h
-(of)d(the)i(line.)27 b(The)17 b(Readline)h Ft(vi)f Fu(mo)q(de)g(b)q
-(eha)o(v)o(es)g(as)g(sp)q(eci\014ed)i(in)75 2495 y(the)c
-Fp(posix)g Fu(1003.2)f(standard.)137 2560 y(In)h(order)g(to)f(switc)o
-(h)g(in)o(teractiv)o(ely)i(b)q(et)o(w)o(een)f Ft(emacs)e
-Fu(and)i Ft(vi)f Fu(editing)i(mo)q(des,)f(use)f(the)h(command)75
-2615 y Fo(M-C-j)j Fu(\(b)q(ound)i(to)e(emacs-editing-mo)q(de)j(when)e
-(in)h Ft(vi)f Fu(mo)q(de)g(and)g(to)f(vi-editing-mo)q(de)k(in)e
-Ft(emacs)75 2670 y Fu(mo)q(de\).)g(The)15 b(Readline)i(default)f(is)f
-Ft(emacs)g Fu(mo)q(de.)p eop
-%%Page: 19 21
-19 20 bop 75 -58 a Fu(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1055
-b(19)137 149 y(When)16 b(y)o(ou)e(en)o(ter)h(a)g(line)i(in)e
-Ft(vi)g Fu(mo)q(de,)g(y)o(ou)g(are)f(already)i(placed)g(in)g
-(`insertion')f(mo)q(de,)g(as)g(if)g(y)o(ou)75 204 y(had)e(t)o(yp)q(ed)h
-(an)f(`)p Ft(i)p Fu('.)18 b(Pressing)608 202 y Fn(h)p
-620 176 70 2 v 620 204 a Fm(ESC)p 620 212 V 687 202 a
-Fn(i)715 204 y Fu(switc)o(hes)13 b(y)o(ou)g(in)o(to)g(`command')f(mo)q
-(de,)i(where)f(y)o(ou)g(can)g(edit)h(the)75 259 y(text)i(of)h(the)g
-(line)h(with)g(the)f(standard)f Ft(vi)h Fu(mo)o(v)o(emen)o(t)f(k)o
-(eys,)g(mo)o(v)o(e)g(to)h(previous)g(history)g(lines)i(with)75
-314 y(`)p Ft(k)p Fu(')14 b(and)i(subsequen)o(t)f(lines)i(with)f(`)p
-Ft(j)p Fu(',)e(and)h(so)g(forth.)p eop
-%%Page: 20 22
-20 21 bop 75 -58 a Fu(20)1299 b(GNU)15 b(Readline)h(Library)p
-eop
-%%Page: 21 23
-21 22 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(21)75 149 y Fq(2)41 b(Programming)28
-b(with)e(GNU)i(Readline)137 267 y Fu(This)18 b(c)o(hapter)f(describ)q
-(es)h(the)f(in)o(terface)g(b)q(et)o(w)o(een)h(the)f Fp(gnu)g
-Fu(Readline)h(Library)f(and)g(other)g(pro-)75 322 y(grams.)h(If)11
-b(y)o(ou)g(are)g(a)g(programmer,)f(and)i(y)o(ou)f(wish)g(to)g(include)j
-(the)d(features)g(found)g(in)i Fp(gnu)e Fu(Readline)75
-377 y(suc)o(h)h(as)f(completion,)h(line)h(editing,)g(and)f(in)o
-(teractiv)o(e)g(history)f(manipulation)i(in)f(y)o(our)f(o)o(wn)g
-(programs,)75 432 y(this)16 b(section)f(is)h(for)f(y)o(ou.)75
-561 y Fs(2.1)33 b(Basic)22 b(Beha)n(vior)137 658 y Fu(Man)o(y)15
-b(programs)f(pro)o(vide)i(a)f(command)g(line)i(in)o(terface,)e(suc)o(h)
-h(as)f Ft(mail)p Fu(,)f Ft(ftp)p Fu(,)h(and)g Ft(sh)p
-Fu(.)20 b(F)l(or)15 b(suc)o(h)75 713 y(programs,)e(the)h(default)h(b)q
-(eha)o(viour)g(of)f(Readline)i(is)e(su\016cien)o(t.)21
-b(This)14 b(section)h(describ)q(es)h(ho)o(w)e(to)g(use)75
-768 y(Readline)k(in)h(the)e(simplest)h(w)o(a)o(y)e(p)q(ossible,)j(p)q
-(erhaps)f(to)f(replace)h(calls)g(in)g(y)o(our)f(co)q(de)h(to)e
-Ft(gets\(\))g Fu(or)75 822 y Ft(fgets\(\))p Fu(.)137
-890 y(The)h(function)g Ft(readline\(\))e Fu(prin)o(ts)h(a)g(prompt)g
-Fk(prompt)h Fu(and)f(then)h(reads)f(and)h(returns)f(a)g(single)75
-945 y(line)i(of)e(text)g(from)f(the)i(user.)23 b(If)17
-b Fk(prompt)g Fu(is)g Ft(NULL)e Fu(or)h(the)h(empt)o(y)f(string,)g(no)g
-(prompt)g(is)h(displa)o(y)o(ed.)75 1000 y(The)i(line)h
-Ft(readline)d Fu(returns)i(is)g(allo)q(cated)g(with)g
-Ft(malloc\(\))p Fu(;)g(the)g(caller)g(should)h Ft(free\(\))e
-Fu(the)g(line)75 1054 y(when)e(it)f(has)g(\014nished)i(with)f(it.)k
-(The)15 b(declaration)h(for)f Ft(readline)f Fu(in)i(ANSI)g(C)f(is)195
-1119 y Ft(char)23 b(*readline)g(\(const)g(char)g(*)p
-Fk(prompt)q Ft(\);)75 1187 y Fu(So,)15 b(one)g(migh)o(t)g(sa)o(y)195
-1251 y Ft(char)23 b(*line)g(=)h(readline)f(\("Enter)g(a)h(line:)f("\);)
-75 1319 y Fu(in)12 b(order)f(to)g(read)h(a)f(line)i(of)e(text)g(from)f
-(the)i(user.)19 b(The)11 b(line)j(returned)d(has)h(the)f(\014nal)h
-(newline)i(remo)o(v)o(ed,)75 1374 y(so)h(only)h(the)f(text)g(remains.)
-137 1441 y(If)21 b Ft(readline)e Fu(encoun)o(ters)h(an)g
-Ft(EOF)g Fu(while)i(reading)f(the)f(line,)j(and)d(the)h(line)g(is)g
-(empt)o(y)f(at)g(that)75 1496 y(p)q(oin)o(t,)15 b(then)g
-Ft(\(char)f(*\)NULL)g Fu(is)h(returned.)21 b(Otherwise,)15
-b(the)g(line)h(is)f(ended)h(just)e(as)h(if)g(a)f(newline)j(had)75
-1551 y(b)q(een)f(t)o(yp)q(ed.)137 1618 y(If)d(y)o(ou)g(w)o(an)o(t)f
-(the)h(user)g(to)f(b)q(e)i(able)g(to)e(get)g(at)h(the)g(line)h(later,)f
-(\(with)1325 1616 y Fn(h)p 1338 1590 57 2 v 1338 1618
-a Fm(C-p)p 1338 1626 V 1392 1616 a Fn(i)1420 1618 y Fu(for)f
-(example\),)i(y)o(ou)f(m)o(ust)75 1673 y(call)j Ft(add_history\(\))e
-Fu(to)g(sa)o(v)o(e)h(the)g(line)i(a)o(w)o(a)o(y)d(in)i(a)e
-Fk(history)19 b Fu(list)d(of)f(suc)o(h)h(lines.)195 1738
-y Ft(add_history)22 b(\(line\);)75 1805 y Fu(F)l(or)15
-b(full)h(details)g(on)f(the)h(GNU)f(History)g(Library)l(,)g(see)h(the)f
-(asso)q(ciated)g(man)o(ual.)137 1873 y(It)h(is)g(preferable)h(to)e(a)o
-(v)o(oid)g(sa)o(ving)h(empt)o(y)f(lines)i(on)f(the)g(history)f(list,)i
-(since)f(users)g(rarely)g(ha)o(v)o(e)f(a)75 1928 y(burning)h(need)g(to)
-e(reuse)h(a)g(blank)g(line.)22 b(Here)15 b(is)g(a)g(function)g(whic)o
-(h)h(usefully)h(replaces)e(the)g(standard)75 1983 y Ft(gets\(\))f
-Fu(library)i(function,)g(and)f(has)g(the)h(adv)m(an)o(tage)e(of)h(no)g
-(static)g(bu\013er)g(to)g(o)o(v)o(er\015o)o(w:)195 2047
-y Ft(/*)24 b(A)f(static)g(variable)g(for)h(holding)e(the)i(line.)f(*/)
-195 2099 y(static)g(char)g(*line_read)g(=)h(\(char)f(*\)NULL;)195
-2203 y(/*)h(Read)f(a)h(string,)f(and)g(return)g(a)h(pointer)f(to)g(it.)
-267 2255 y(Returns)f(NULL)i(on)f(EOF.)h(*/)195 2307 y(char)f(*)195
-2359 y(rl_gets)g(\(\))195 2411 y({)243 2462 y(/*)g(If)h(the)f(buffer)g
-(has)h(already)f(been)g(allocated,)314 2514 y(return)g(the)h(memory)f
-(to)g(the)h(free)f(pool.)g(*/)243 2566 y(if)g(\(line_read\))290
-2618 y({)338 2670 y(free)g(\(line_read\);)p eop
-%%Page: 22 24
-22 23 bop 75 -58 a Fu(22)1299 b(GNU)15 b(Readline)h(Library)338
-149 y Ft(line_read)23 b(=)h(\(char)f(*\)NULL;)290 201
-y(})243 305 y(/*)g(Get)h(a)f(line)h(from)f(the)h(user.)f(*/)243
-357 y(line_read)f(=)i(readline)f(\(""\);)243 461 y(/*)g(If)h(the)f
-(line)h(has)f(any)h(text)f(in)g(it,)314 513 y(save)h(it)f(on)h(the)f
-(history.)g(*/)243 565 y(if)g(\(line_read)g(&&)g(*line_read\))290
-616 y(add_history)g(\(line_read\);)243 720 y(return)g(\(line_read\);)
-195 772 y(})137 848 y Fu(This)13 b(function)f(giv)o(es)h(the)e(user)h
-(the)g(default)h(b)q(eha)o(viour)g(of)1169 846 y Fn(h)p
-1181 820 74 2 v 1181 848 a Fm(T)m(AB)p 1181 856 V 1253
-846 a Fn(i)1280 848 y Fu(completion:)19 b(completion)13
-b(on)f(\014le)75 903 y(names.)20 b(If)c(y)o(ou)f(do)g(not)g(w)o(an)o(t)
-f(Readline)j(to)d(complete)j(on)e(\014lenames,)h(y)o(ou)f(can)g(c)o
-(hange)h(the)f(binding)75 958 y(of)g(the)205 956 y Fn(h)p
-217 930 V 217 958 a Fm(T)m(AB)p 217 965 V 289 956 a Fn(i)319
-958 y Fu(k)o(ey)g(with)h Ft(rl_bind_key\(\))p Fu(.)195
-1031 y Ft(int)23 b(rl_bind_key)g(\(int)g Fk(k)o(ey)p
-Ft(,)h(rl_command_func_t)d(*)p Fk(function)p Ft(\);)137
-1107 y(rl_bind_key\(\))15 b Fu(tak)o(es)h(t)o(w)o(o)g(argumen)o(ts:)22
-b Fk(k)o(ey)e Fu(is)e(the)e(c)o(haracter)g(that)g(y)o(ou)h(w)o(an)o(t)f
-(to)g(bind,)i(and)75 1161 y Fk(function)h Fu(is)f(the)g(address)g(of)g
-(the)g(function)g(to)g(call)h(when)f Fk(k)o(ey)k Fu(is)c(pressed.)29
-b(Binding)1628 1159 y Fn(h)p 1641 1133 V 1641 1161 a
-Fm(T)m(AB)p 1641 1169 V 1712 1159 a Fn(i)1745 1161 y
-Fu(to)17 b Ft(rl_)75 1216 y(insert\(\))f Fu(mak)o(es)422
-1214 y Fn(h)p 434 1188 V 434 1216 a Fm(T)m(AB)p 434 1224
-V 506 1214 a Fn(i)539 1216 y Fu(insert)i(itself.)28 b
-Ft(rl_bind_key\(\))15 b Fu(returns)j(non-zero)g(if)g
-Fk(k)o(ey)j Fu(is)d(not)f(a)g(v)m(alid)75 1271 y(ASCI)q(I)f(c)o
-(haracter)f(co)q(de)h(\(b)q(et)o(w)o(een)f(0)g(and)g(255\).)137
-1347 y(Th)o(us,)g(to)g(disable)h(the)g(default)703 1345
-y Fn(h)p 716 1319 V 716 1347 a Fm(T)m(AB)p 716 1354 V
-787 1345 a Fn(i)817 1347 y Fu(b)q(eha)o(vior,)g(the)f(follo)o(wing)h
-(su\016ces:)195 1420 y Ft(rl_bind_key)22 b(\('\\t',)h(rl_insert\);)137
-1496 y Fu(This)14 b(co)q(de)g(should)g(b)q(e)g(executed)g(once)g(at)e
-(the)h(start)f(of)h(y)o(our)g(program;)f(y)o(ou)h(migh)o(t)g(write)g(a)
-g(func-)75 1551 y(tion)k(called)h Ft(initialize_readline\(\))13
-b Fu(whic)o(h)k(p)q(erforms)f(this)h(and)g(other)f(desired)h
-(initializations,)75 1605 y(suc)o(h)f(as)e(installing)k(custom)c
-(completers)i(\(see)f(Section)h(2.6)f([Custom)f(Completers],)g(page)h
-(41\).)75 1756 y Fs(2.2)33 b(Custom)21 b(F)-6 b(unctions)137
-1861 y Fu(Readline)14 b(pro)o(vides)f(man)o(y)e(functions)i(for)f
-(manipulating)i(the)e(text)g(of)g(the)g(line,)i(but)e(it)h(isn't)f(p)q
-(ossi-)75 1915 y(ble)i(to)f(an)o(ticipate)h(the)f(needs)h(of)f(all)h
-(programs.)k(This)13 b(section)h(describ)q(es)h(the)e(v)m(arious)h
-(functions)g(and)75 1970 y(v)m(ariables)g(de\014ned)h(within)f(the)f
-(Readline)i(library)e(whic)o(h)h(allo)o(w)g(a)e(user)h(program)f(to)h
-(add)g(customized)75 2025 y(functionalit)o(y)j(to)f(Readline.)137
-2101 y(Before)j(declaring)i(an)o(y)e(functions)h(that)f(customize)g
-(Readline's)h(b)q(eha)o(vior,)h(or)d(using)i(an)o(y)f(func-)75
-2156 y(tionalit)o(y)23 b(Readline)h(pro)o(vides)g(in)f(other)g(co)q
-(de,)h(an)f(application)i(writer)d(should)i(include)h(the)e(\014le)75
-2211 y Ft(<readline/readline.h>)14 b Fu(in)j(an)o(y)g(\014le)h(that)e
-(uses)h(Readline's)g(features.)24 b(Since)19 b(some)d(of)g(the)h
-(de\014-)75 2265 y(nitions)g(in)f Ft(readline.h)e Fu(use)i(the)g
-Ft(stdio)f Fu(library)l(,)h(the)g(\014le)g Ft(<stdio.h>)f
-Fu(should)h(b)q(e)g(included)j(b)q(efore)75 2320 y Ft(readline.h)p
-Fu(.)137 2396 y Ft(readline.h)14 b Fu(de\014nes)i(a)f(C)h(prepro)q
-(cessor)f(v)m(ariable)i(that)d(should)i(b)q(e)g(treated)f(as)g(an)g(in)
-o(teger,)g Ft(RL_)75 2451 y(READLINE_VERSION)p Fu(,)9
-b(whic)o(h)j(ma)o(y)f(b)q(e)g(used)h(to)e(conditionally)k(compile)e
-(application)h(co)q(de)f(dep)q(ending)75 2506 y(on)17
-b(the)h(installed)h(Readline)g(v)o(ersion.)27 b(The)18
-b(v)m(alue)h(is)f(a)f(hexadecimal)i(enco)q(ding)g(of)e(the)h(ma)s(jor)e
-(and)75 2560 y(minor)h(v)o(ersion)h(n)o(um)o(b)q(ers)f(of)g(the)g
-(library)l(,)h(of)f(the)g(form)f(0x)p Fk(MMmm)p Fu(.)25
-b Fk(MM)c Fu(is)c(the)h(t)o(w)o(o-digit)e(ma)s(jor)75
-2615 y(v)o(ersion)f(n)o(um)o(b)q(er;)f Fk(mm)h Fu(is)g(the)f(t)o(w)o
-(o-digit)g(minor)h(v)o(ersion)g(n)o(um)o(b)q(er.)20 b(F)l(or)14
-b(Readline)h(4.2,)f(for)f(example,)75 2670 y(the)i(v)m(alue)i(of)d
-Ft(RL_READLINE_VERSION)f Fu(w)o(ould)j(b)q(e)f Ft(0x0402)p
-Fu(.)p eop
-%%Page: 23 25
-23 24 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(23)75 149 y Fj(2.2.1)30 b(Readline)20
-b(T)n(yp)r(edefs)137 251 y Fu(F)l(or)15 b(readabilt)o(y)l(,)g(w)o(e)g
-(declare)i(a)d(n)o(um)o(b)q(er)i(of)f(new)g(ob)s(ject)g(t)o(yp)q(es,)g
-(all)h(p)q(oin)o(ters)f(to)g(functions.)137 324 y(The)j(reason)g(for)f
-(declaring)i(these)f(new)g(t)o(yp)q(es)g(is)h(to)e(mak)o(e)g(it)h
-(easier)h(to)e(write)h(co)q(de)g(describing)75 379 y(p)q(oin)o(ters)e
-(to)e(C)h(functions)h(with)g(appropriately)f(protot)o(yp)q(ed)g
-(argumen)o(ts)g(and)g(return)g(v)m(alues.)137 452 y(F)l(or)j(instance,)
-i(sa)o(y)e(w)o(e)g(w)o(an)o(t)f(to)h(declare)h(a)f(v)m(ariable)i
-Fk(func)i Fu(as)c(a)g(p)q(oin)o(ter)h(to)f(a)g(function)h(whic)o(h)75
-507 y(tak)o(es)12 b(t)o(w)o(o)g Ft(int)g Fu(argumen)o(ts)g(and)h
-(returns)g(an)g Ft(int)f Fu(\(this)h(is)g(the)g(t)o(yp)q(e)g(of)g(all)g
-(of)g(the)g(Readline)h(bindable)75 561 y(functions\).)20
-b(Instead)c(of)f(the)g(classic)h(C)f(declaration)137
-634 y Ft(int)g(\(*func\)\(\);)75 707 y Fu(or)g(the)g(ANSI-C)h(st)o(yle)
-f(declaration)137 780 y Ft(int)g(\(*func\)\(int,)f(int\);)75
-853 y Fu(w)o(e)h(ma)o(y)f(write)137 926 y Ft(rl_command_func_t)f
-(*func;)137 999 y Fu(The)j(full)g(list)g(of)f(function)h(p)q(oin)o(ter)
-g(t)o(yp)q(es)f(a)o(v)m(ailable)i(is)75 1087 y Ft(typedef)d(int)h
-(rl_command_func_t)e(\(int,)h(int\);)75 1157 y(typedef)g(char)h
-(*rl_compentry_func_t)d(\(const)j(char)f(*,)h(int\);)75
-1227 y(typedef)f(char)h(**rl_completion_func_t)d(\(const)i(char)h(*,)g
-(int,)f(int\);)75 1297 y(typedef)g(char)h(*rl_quote_func_t)e(\(char)h
-(*,)h(int,)g(char)f(*\);)75 1367 y(typedef)g(char)h(*rl_dequote_func_t)
-d(\(char)j(*,)g(int\);)75 1437 y(typedef)f(int)h(rl_compignore_func_t)d
-(\(char)j(**\);)75 1507 y(typedef)f(void)h(rl_compdisp_func_t)d(\(char)
-j(**,)g(int,)f(int\);)75 1577 y(typedef)g(int)h(rl_hook_func_t)e
-(\(void\);)75 1647 y(typedef)h(int)h(rl_getc_func_t)e(\(FILE)i(*\);)75
-1717 y(typedef)f(int)h(rl_linebuf_func_t)e(\(char)h(*,)h(int\);)75
-1787 y(typedef)f(int)h(rl_intfunc_t)e(\(int\);)75 1857
-y(#define)h(rl_ivoidfunc_t)f(rl_hook_func_t)75 1927 y(typedef)h(int)h
-(rl_icpfunc_t)e(\(char)i(*\);)75 1997 y(typedef)f(int)h(rl_icppfunc_t)e
-(\(char)i(**\);)75 2067 y(typedef)f(void)h(rl_voidfunc_t)e(\(void\);)75
-2137 y(typedef)h(void)h(rl_vintfunc_t)e(\(int\);)75 2208
-y(typedef)h(void)h(rl_vcpfunc_t)e(\(char)i(*\);)75 2278
-y(typedef)f(void)h(rl_vcppfunc_t)e(\(char)i(**\);)75
-2386 y Fj(2.2.2)30 b(W)-5 b(riting)20 b(a)h(New)f(F)-5
-b(unction)137 2488 y Fu(In)17 b(order)f(to)f(write)h(new)h(functions)g
-(for)e(Readline,)i(y)o(ou)f(need)h(to)e(kno)o(w)h(the)g(calling)i(con)o
-(v)o(en)o(tions)75 2542 y(for)g(k)o(eyb)q(oard-in)o(v)o(ok)o(ed)h
-(functions,)g(and)g(the)f(names)h(of)f(the)g(v)m(ariables)i(that)d
-(describ)q(e)k(the)d(curren)o(t)75 2597 y(state)c(of)h(the)g(line)i
-(read)e(so)g(far.)137 2670 y(The)h(calling)h(sequence)f(for)f(a)f
-(command)i Ft(foo)e Fu(lo)q(oks)i(lik)o(e)p eop
-%%Page: 24 26
-24 25 bop 75 -58 a Fu(24)1299 b(GNU)15 b(Readline)h(Library)195
-149 y Ft(int)23 b(foo)h(\(int)f(count,)g(int)h(key\))75
-221 y Fu(where)18 b Fk(coun)o(t)h Fu(is)f(the)g(n)o(umeric)h(argumen)o
-(t)e(\(or)h(1)f(if)i(defaulted\))f(and)g Fk(k)o(ey)k
-Fu(is)d(the)f(k)o(ey)g(that)f(in)o(v)o(ok)o(ed)75 276
-y(this)f(function.)137 348 y(It)c(is)g(completely)h(up)f(to)f(the)g
-(function)i(as)e(to)g(what)g(should)h(b)q(e)g(done)g(with)g(the)g(n)o
-(umeric)g(argumen)o(t.)75 403 y(Some)20 b(functions)h(use)f(it)g(as)g
-(a)g(rep)q(eat)g(coun)o(t,)g(some)g(as)g(a)f(\015ag,)i(and)f(others)g
-(to)f(c)o(ho)q(ose)h(alternate)75 457 y(b)q(eha)o(vior)i(\(refreshing)g
-(the)g(curren)o(t)f(line)j(as)d(opp)q(osed)h(to)f(refreshing)i(the)e
-(screen,)j(for)d(example\).)75 512 y(Some)c(c)o(ho)q(ose)f(to)g(ignore)
-h(it.)24 b(In)18 b(general,)f(if)g(a)f(function)h(uses)g(the)g(n)o
-(umeric)h(argumen)o(t)d(as)i(a)f(rep)q(eat)75 567 y(coun)o(t,)e(it)g
-(should)h(b)q(e)f(able)h(to)e(do)h(something)h(useful)g(with)f(b)q(oth)
-g(negativ)o(e)g(and)g(p)q(ositiv)o(e)h(argumen)o(ts.)75
-622 y(A)o(t)g(the)g(v)o(ery)g(least,)g(it)g(should)h(b)q(e)g(a)o(w)o
-(are)e(that)h(it)g(can)g(b)q(e)h(passed)g(a)f(negativ)o(e)g(argumen)o
-(t.)137 693 y(A)f(command)g(function)h(should)g(return)e(0)h(if)g(its)g
-(action)h(completes)f(successfully)l(,)i(and)e(a)g(non-zero)75
-748 y(v)m(alue)i(if)g(some)f(error)f(o)q(ccurs.)75 888
-y Fs(2.3)33 b(Readline)23 b(V)-6 b(ariables)137 989 y
-Fu(These)16 b(v)m(ariables)g(are)f(a)o(v)m(ailable)i(to)e(function)h
-(writers.)1773 1120 y(V)l(ariable)-1861 b Fi(char)20
-b(*)f Fh(rl)p 286 1120 18 3 v 21 w(line)p 395 1120 V
-23 w(bu\013er)195 1174 y Fu(This)d(is)g(the)g(line)h(gathered)f(so)f
-(far.)20 b(Y)l(ou)c(are)f(w)o(elcome)h(to)f(mo)q(dify)h(the)g(con)o
-(ten)o(ts)f(of)g(the)h(line,)195 1229 y(but)i(see)g(Section)h(2.4.5)d
-([Allo)o(wing)i(Undoing],)h(page)e(32.)27 b(The)18 b(function)h
-Ft(rl_extend_line_)195 1284 y(buffer)14 b Fu(is)i(a)o(v)m(ailable)h(to)
-d(increase)j(the)e(memory)f(allo)q(cated)j(to)d Ft(rl_line_buffer)p
-Fu(.)1773 1414 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p
-215 1414 V 21 w(p)r(oin)n(t)195 1469 y Fu(The)15 b(o\013set)g(of)f(the)
-i(curren)o(t)f(cursor)g(p)q(osition)h(in)g Ft(rl_line_buffer)d
-Fu(\(the)i Fl(p)n(oint)t Fu(\).)1773 1600 y(V)l(ariable)-1861
-b Fi(int)20 b Fh(rl)p 215 1600 V 21 w(end)195 1655 y
-Fu(The)14 b(n)o(um)o(b)q(er)g(of)g(c)o(haracters)f(presen)o(t)h(in)h
-Ft(rl_line_buffer)p Fu(.)i(When)e Ft(rl_point)e Fu(is)h(at)f(the)h(end)
-195 1709 y(of)h(the)g(line,)i Ft(rl_point)d Fu(and)h
-Ft(rl_end)f Fu(are)h(equal.)1773 1840 y(V)l(ariable)-1861
-b Fi(int)20 b Fh(rl)p 215 1840 V 21 w(mark)195 1895 y
-Fu(The)f Fk(mark)h Fu(\(sa)o(v)o(ed)e(p)q(osition\))h(in)g(the)g
-(curren)o(t)f(line.)31 b(If)19 b(set,)g(the)f(mark)g(and)h(p)q(oin)o(t)
-g(de\014ne)g(a)195 1950 y Fl(r)n(e)n(gion)p Fu(.)1773
-2080 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p 215 2080
-V 21 w(done)195 2135 y Fu(Setting)11 b(this)g(to)g(a)f(non-zero)h(v)m
-(alue)h(causes)f(Readline)h(to)f(return)f(the)h(curren)o(t)g(line)h
-(immediately)l(.)1773 2265 y(V)l(ariable)-1861 b Fi(int)20
-b Fh(rl)p 215 2265 V 21 w(n)n(um)p 347 2265 V 19 w(c)n(hars)p
-496 2265 V 20 w(to)p 567 2265 V 21 w(read)195 2320 y
-Fu(Setting)d(this)g(to)f(a)g(p)q(ositiv)o(e)h(v)m(alue)h(b)q(efore)f
-(calling)h Ft(readline\(\))d Fu(causes)h(Readline)i(to)e(return)195
-2375 y(after)h(accepting)i(that)e(man)o(y)g(c)o(haracters,)h(rather)f
-(than)h(reading)g(up)g(to)f(a)h(c)o(haracter)f(b)q(ound)195
-2430 y(to)e Ft(accept-line)p Fu(.)1773 2560 y(V)l(ariable)-1861
-b Fi(int)20 b Fh(rl)p 215 2560 V 21 w(p)r(ending)p 436
-2560 V 20 w(input)195 2615 y Fu(Setting)13 b(this)g(to)f(a)g(v)m(alue)i
-(mak)o(es)e(it)h(the)f(next)h(k)o(eystrok)o(e)f(read.)19
-b(This)13 b(is)g(a)f(w)o(a)o(y)g(to)f(stu\013)h(a)h(single)195
-2670 y(c)o(haracter)h(in)o(to)i(the)f(input)h(stream.)p
-eop
-%%Page: 25 27
-25 26 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(25)1773 149 y(V)l(ariable)-1861 b Fi(int)20
-b Fh(rl)p 215 149 18 3 v 21 w(dispatc)n(hing)195 204
-y Fu(Set)12 b(to)g(a)f(non-zero)i(v)m(alue)g(if)g(a)f(function)h(is)f
-(b)q(eing)i(called)f(from)f(a)f(k)o(ey)h(binding;)j(zero)d(otherwise.)
-195 259 y(Application)20 b(functions)e(can)g(test)g(this)g(to)f(disco)o
-(v)o(er)h(whether)g(they)g(w)o(ere)g(called)h(directly)g(or)195
-314 y(b)o(y)c(Readline's)h(dispatc)o(hing)h(mec)o(hanism.)1773
-423 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p 215 423
-V 21 w(erase)p 363 423 V 20 w(empt)n(y)p 540 423 V 20
-w(line)195 478 y Fu(Setting)j(this)h(to)e(a)h(non-zero)g(v)m(alue)h
-(causes)f(Readline)i(to)d(completely)i(erase)f(the)g(curren)o(t)195
-533 y(line,)g(including)h(an)o(y)c(prompt,)h(an)o(y)g(time)g(a)f
-(newline)j(is)e(t)o(yp)q(ed)g(as)f(the)h(only)g(c)o(haracter)f(on)195
-588 y(an)e(otherwise-empt)o(y)g(line.)31 b(The)18 b(cursor)g(is)h(mo)o
-(v)o(ed)e(to)h(the)g(b)q(eginning)i(of)e(the)g(newly-blank)195
-643 y(line.)1773 752 y(V)l(ariable)-1861 b Fi(char)20
-b(*)f Fh(rl)p 286 752 V 21 w(prompt)195 807 y Fu(The)13
-b(prompt)g(Readline)h(uses.)20 b(This)13 b(is)h(set)f(from)f(the)h
-(argumen)o(t)g(to)f Ft(readline\(\))p Fu(,)g(and)h(should)195
-862 y(not)g(b)q(e)h(assigned)g(to)f(directly)l(.)21 b(The)14
-b Ft(rl_set_prompt\(\))d Fu(function)j(\(see)g(Section)g(2.4.6)e
-([Redis-)195 917 y(pla)o(y],)j(page)g(33\))f(ma)o(y)h(b)q(e)g(used)h
-(to)f(mo)q(dify)h(the)f(prompt)g(string)g(after)f(calling)j
-Ft(readline\(\))p Fu(.)1773 1026 y(V)l(ariable)-1861
-b Fi(int)20 b Fh(rl)p 215 1026 V 21 w(already)p 419 1026
-V 21 w(prompted)195 1081 y Fu(If)e(an)g(application)i(wishes)f(to)f
-(displa)o(y)h(the)f(prompt)g(itself,)h(rather)f(than)g(ha)o(v)o(e)g
-(Readline)h(do)195 1136 y(it)e(the)f(\014rst)g(time)h
-Ft(readline\(\))e Fu(is)i(called,)h(it)e(should)i(set)e(this)h(v)m
-(ariable)g(to)f(a)g(non-zero)h(v)m(alue)195 1191 y(after)h(displa)o
-(ying)j(the)e(prompt.)31 b(The)19 b(prompt)g(m)o(ust)f(also)h(b)q(e)h
-(passed)f(as)f(the)h(argumen)o(t)g(to)195 1245 y Ft(readline\(\))c
-Fu(so)h(the)h(redispla)o(y)g(functions)h(can)e(up)q(date)h(the)g
-(displa)o(y)h(prop)q(erly)l(.)24 b(The)17 b(calling)195
-1300 y(application)g(is)f(resp)q(onsible)h(for)d(managing)h(the)h(v)m
-(alue;)g(Readline)g(nev)o(er)g(sets)e(it.)1773 1410 y(V)l(ariable)-1861
-b Fi(const)20 b(char)g(*)f Fh(rl)p 436 1410 V 21 w(library)p
-625 1410 V 21 w(v)n(ersion)195 1465 y Fu(The)c(v)o(ersion)h(n)o(um)o(b)
-q(er)f(of)g(this)h(revision)g(of)f(the)g(library)l(.)1773
-1574 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p 215 1574
-V 21 w(readline)p 434 1574 V 22 w(v)n(ersion)195 1629
-y Fu(An)d(in)o(teger)h(enco)q(ding)g(the)f(curren)o(t)g(v)o(ersion)g
-(of)g(the)g(library)l(.)27 b(The)17 b(enco)q(ding)h(is)g(of)f(the)g
-(form)195 1684 y(0x)p Fk(MMmm)p Fu(,)g(where)i Fk(MM)j
-Fu(is)d(the)f(t)o(w)o(o-digit)g(ma)s(jor)f(v)o(ersion)i(n)o(um)o(b)q
-(er,)g(and)f Fk(mm)g Fu(is)h(the)f(t)o(w)o(o-)195 1738
-y(digit)i(minor)e(v)o(ersion)h(n)o(um)o(b)q(er.)31 b(F)l(or)18
-b(example,)i(for)e(Readline-4.2,)i Ft(rl_readline_version)195
-1793 y Fu(w)o(ould)c(ha)o(v)o(e)e(the)i(v)m(alue)g(0x0402.)1773
-1903 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p 215 1903
-V 21 w(gn)n(u)p 327 1903 V 20 w(readline)p 545 1903 V
-22 w(p)195 1958 y Fu(Alw)o(a)o(ys)15 b(set)g(to)f(1,)h(denoting)h(that)
-e(this)i(is)g Fp(gnu)f Fu(readline)h(rather)f(than)g(some)g(em)o
-(ulation.)1773 2067 y(V)l(ariable)-1861 b Fi(const)20
-b(char)g(*)f Fh(rl)p 436 2067 V 21 w(terminal)p 668 2067
-V 21 w(name)195 2122 y Fu(The)14 b(terminal)h(t)o(yp)q(e,)f(used)h(for)
-e(initialization.)23 b(If)14 b(not)f(set)h(b)o(y)g(the)g(application,)i
-(Readline)f(sets)195 2177 y(this)h(to)e(the)h(v)m(alue)i(of)e(the)g
-Ft(TERM)g Fu(en)o(vironmen)o(t)g(v)m(ariable)i(the)e(\014rst)g(time)g
-(it)h(is)f(called.)1773 2286 y(V)l(ariable)-1861 b Fi(const)20
-b(char)g(*)f Fh(rl)p 436 2286 V 21 w(readline)p 655 2286
-V 22 w(name)195 2341 y Fu(This)d(v)m(ariable)h(is)f(set)g(to)f(a)g
-(unique)i(name)f(b)o(y)f(eac)o(h)h(application)h(using)f(Readline.)23
-b(The)16 b(v)m(alue)195 2396 y(allo)o(ws)e(conditional)i(parsing)e(of)g
-(the)g(inputrc)h(\014le)g(\(see)f(Section)h(1.3.2)d([Conditional)j
-(Init)g(Con-)195 2451 y(structs],)f(page)h(9\).)1773
-2560 y(V)l(ariable)-1861 b Fi(FILE)20 b(*)f Fh(rl)p 286
-2560 V 21 w(instream)195 2615 y Fu(The)i(stdio)f(stream)g(from)g(whic)o
-(h)h(Readline)h(reads)e(input.)37 b(If)21 b Ft(NULL)p
-Fu(,)g(Readline)h(defaults)f(to)195 2670 y Fk(stdin)p
-Fu(.)p eop
-%%Page: 26 28
-26 27 bop 75 -58 a Fu(26)1299 b(GNU)15 b(Readline)h(Library)1773
-149 y(V)l(ariable)-1861 b Fi(FILE)20 b(*)f Fh(rl)p 286
-149 18 3 v 21 w(outstream)195 204 y Fu(The)e(stdio)h(stream)e(to)h
-(whic)o(h)h(Readline)g(p)q(erforms)f(output.)26 b(If)18
-b Ft(NULL)p Fu(,)e(Readline)j(defaults)f(to)195 259 y
-Fk(stdout)p Fu(.)1773 381 y(V)l(ariable)-1861 b Fi(rl_command_func_t)22
-b(*)d Fh(rl)p 626 381 V 21 w(last)p 735 381 V 21 w(func)195
-436 y Fu(The)f(address)f(of)g(the)g(last)h(command)f(function)h
-(Readline)h(executed.)27 b(Ma)o(y)17 b(b)q(e)h(used)g(to)f(test)195
-490 y(whether)e(or)g(not)g(a)g(function)h(is)f(b)q(eing)i(executed)f(t)
-o(wice)g(in)g(succession,)g(for)e(example.)1773 612 y(V)l(ariable)-1861
-b Fi(rl_hook_func_t)21 b(*)e Fh(rl)p 547 612 V 22 w(startup)p
-752 612 V 19 w(ho)r(ok)195 667 y Fu(If)e(non-zero,)h(this)g(is)f(the)h
-(address)f(of)f(a)h(function)h(to)f(call)h(just)f(b)q(efore)g
-Ft(readline)f Fu(prin)o(ts)i(the)195 722 y(\014rst)d(prompt.)1773
-844 y(V)l(ariable)-1861 b Fi(rl_hook_func_t)21 b(*)e
-Fh(rl)p 547 844 V 22 w(pre)p 651 844 V 20 w(input)p 804
-844 V 21 w(ho)r(ok)195 898 y Fu(If)f(non-zero,)g(this)g(is)h(the)f
-(address)f(of)h(a)f(function)i(to)e(call)i(after)e(the)h(\014rst)f
-(prompt)g(has)h(b)q(een)195 953 y(prin)o(ted)e(and)f(just)g(b)q(efore)h
-Ft(readline)e Fu(starts)g(reading)h(input)i(c)o(haracters.)1773
-1075 y(V)l(ariable)-1861 b Fi(rl_hook_func_t)21 b(*)e
-Fh(rl)p 547 1075 V 22 w(ev)n(en)n(t)p 701 1075 V 22 w(ho)r(ok)195
-1130 y Fu(If)i(non-zero,)g(this)g(is)g(the)f(address)g(of)g(a)g
-(function)h(to)f(call)i(p)q(erio)q(dically)h(when)e(Readline)g(is)195
-1184 y(w)o(aiting)15 b(for)f(terminal)h(input.)21 b(By)14
-b(default,)h(this)g(will)i(b)q(e)e(called)h(at)e(most)g(ten)g(times)h
-(a)f(second)195 1239 y(if)i(there)f(is)h(no)f(k)o(eyb)q(oard)g(input.)
-1773 1361 y(V)l(ariable)-1861 b Fi(rl_getc_func_t)21
-b(*)e Fh(rl)p 547 1361 V 22 w(getc)p 671 1361 V 21 w(function)195
-1416 y Fu(If)c(non-zero,)h(Readline)g(will)h(call)f(indirectly)i
-(through)d(this)g(p)q(oin)o(ter)h(to)f(get)f(a)h(c)o(haracter)g(from)
-195 1471 y(the)k(input)i(stream.)31 b(By)19 b(default,)h(it)g(is)g(set)
-f(to)f Ft(rl_getc)p Fu(,)h(the)g(default)h(Readline)h(c)o(haracter)195
-1525 y(input)16 b(function)g(\(see)f(Section)h(2.4.8)e([Character)g
-(Input],)h(page)g(34\).)1773 1647 y(V)l(ariable)-1861
-b Fi(rl_voidfunc_t)21 b(*)e Fh(rl)p 521 1647 V 21 w(redispla)n(y)p
-765 1647 V 22 w(function)195 1702 y Fu(If)f(non-zero,)h(Readline)g
-(will)h(call)f(indirectly)h(through)e(this)g(p)q(oin)o(ter)h(to)e(up)q
-(date)i(the)f(displa)o(y)195 1757 y(with)c(the)f(curren)o(t)h(con)o
-(ten)o(ts)f(of)g(the)g(editing)i(bu\013er.)k(By)14 b(default,)g(it)g
-(is)g(set)f(to)g Ft(rl_redisplay)p Fu(,)195 1812 y(the)i(default)h
-(Readline)h(redispla)o(y)f(function)g(\(see)f(Section)h(2.4.6)e
-([Redispla)o(y],)h(page)g(33\).)1773 1933 y(V)l(ariable)-1861
-b Fi(rl_vintfunc_t)21 b(*)e Fh(rl)p 521 1933 V 21 w(prep)p
-656 1933 V 21 w(term)p 798 1933 V 19 w(function)195 1988
-y Fu(If)12 b(non-zero,)h(Readline)g(will)h(call)f(indirectly)h(through)
-e(this)g(p)q(oin)o(ter)h(to)e(initialize)k(the)e(terminal.)195
-2043 y(The)19 b(function)g(tak)o(es)f(a)g(single)i(argumen)o(t,)e(an)h
-Ft(int)f Fu(\015ag)g(that)g(sa)o(ys)g(whether)g(or)h(not)f(to)g(use)195
-2098 y(eigh)o(t-bit)g(c)o(haracters.)25 b(By)17 b(default,)h(this)f(is)
-h(set)e(to)h Ft(rl_prep_terminal)e Fu(\(see)i(Section)h(2.4.9)195
-2152 y([T)l(erminal)e(Managemen)o(t],)d(page)i(35\).)1773
-2274 y(V)l(ariable)-1861 b Fi(rl_voidfunc_t)21 b(*)e
-Fh(rl)p 521 2274 V 21 w(deprep)p 714 2274 V 21 w(term)p
-856 2274 V 19 w(function)195 2329 y Fu(If)g(non-zero,)g(Readline)g
-(will)h(call)g(indirectly)g(through)e(this)h(p)q(oin)o(ter)f(to)g
-(reset)g(the)h(terminal.)195 2384 y(This)f(function)g(should)h(undo)f
-(the)f(e\013ects)h(of)f Ft(rl_prep_term_function)p Fu(.)24
-b(By)17 b(default,)i(this)195 2439 y(is)d(set)f(to)f
-Ft(rl_deprep_terminal)f Fu(\(see)i(Section)h(2.4.9)e([T)l(erminal)i
-(Managemen)o(t],)d(page)i(35\).)1773 2560 y(V)l(ariable)-1861
-b Fi(Keymap)20 b Fh(rl)p 293 2560 V 21 w(executing)p
-551 2560 V 22 w(k)n(eymap)195 2615 y Fu(This)f(v)m(ariable)g(is)f(set)g
-(to)g(the)g(k)o(eymap)f(\(see)h(Section)h(2.4.2)e([Keymaps],)g(page)h
-(29\))f(in)i(whic)o(h)195 2670 y(the)c(curren)o(tly)h(executing)g
-(readline)h(function)f(w)o(as)f(found.)p eop
-%%Page: 27 29
-27 28 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(27)1773 149 y(V)l(ariable)-1861 b Fi(Keymap)20
-b Fh(rl)p 293 149 18 3 v 21 w(binding)p 501 149 V 22
-w(k)n(eymap)195 204 y Fu(This)f(v)m(ariable)g(is)f(set)g(to)g(the)g(k)o
-(eymap)f(\(see)h(Section)h(2.4.2)e([Keymaps],)g(page)h(29\))f(in)i
-(whic)o(h)195 259 y(the)c(last)g(k)o(ey)g(binding)j(o)q(ccurred.)1773
-383 y(V)l(ariable)-1861 b Fi(char)20 b(*)f Fh(rl)p 286
-383 V 21 w(executing)p 544 383 V 22 w(macro)195 438 y
-Fu(This)d(v)m(ariable)g(is)g(set)f(to)g(the)g(text)g(of)f(an)o(y)h
-(curren)o(tly-executing)i(macro.)1773 562 y(V)l(ariable)-1861
-b Fi(int)20 b Fh(rl)p 215 562 V 21 w(readline)p 434 562
-V 22 w(state)195 617 y Fu(A)d(v)m(ariable)i(with)e(bit)h(v)m(alues)h
-(that)d(encapsulate)i(the)g(curren)o(t)f(Readline)h(state.)25
-b(A)18 b(bit)f(is)h(set)195 671 y(with)h(the)g Ft(RL_SETSTATE)f
-Fu(macro,)h(and)g(unset)g(with)g(the)g Ft(RL_UNSETSTATE)e
-Fu(macro.)31 b(Use)19 b(the)195 726 y Ft(RL_ISSTATE)e
-Fu(macro)h(to)g(test)g(whether)h(a)f(particular)i(state)d(bit)j(is)f
-(set.)30 b(Curren)o(t)18 b(state)g(bits)195 781 y(include:)195
-864 y Ft(RL_STATE_NONE)435 919 y Fu(Readline)e(has)g(not)e(y)o(et)h(b)q
-(een)h(called,)h(nor)e(has)g(it)g(b)q(egun)h(to)f(in)o(tialize.)195
-1001 y Ft(RL_STATE_INITIALIZING)435 1056 y Fu(Readline)h(is)g
-(initializi)q(ng)i(its)d(in)o(ternal)h(data)f(structures.)195
-1138 y Ft(RL_STATE_INITIALIZED)435 1192 y Fu(Readline)h(has)g
-(completed)g(its)f(initialization.)195 1274 y Ft(RL_STATE_TERMPREPPED)
-435 1329 y Fu(Readline)h(has)e(mo)q(di\014ed)i(the)e(terminal)h(mo)q
-(des)g(to)e(do)i(its)f(o)o(wn)g(input)h(and)g(redis-)435
-1384 y(pla)o(y)l(.)195 1466 y Ft(RL_STATE_READCMD)435
-1521 y Fu(Readline)h(is)g(reading)g(a)f(command)g(from)f(the)i(k)o(eyb)
-q(oard.)195 1603 y Ft(RL_STATE_METANEXT)435 1658 y Fu(Readline)g(is)g
-(reading)g(more)f(input)h(after)e(reading)i(the)f(meta-pre\014x)h(c)o
-(haracter.)195 1740 y Ft(RL_STATE_DISPATCHING)435 1794
-y Fu(Readline)g(is)g(dispatc)o(hing)h(to)d(a)h(command.)195
-1876 y Ft(RL_STATE_MOREINPUT)435 1931 y Fu(Readline)h(is)g(reading)g
-(more)f(input)h(while)h(executing)f(an)f(editing)i(command.)195
-2013 y Ft(RL_STATE_ISEARCH)435 2068 y Fu(Readline)f(is)g(p)q(erforming)
-g(an)f(incremen)o(tal)h(history)f(searc)o(h.)195 2150
-y Ft(RL_STATE_NSEARCH)435 2205 y Fu(Readline)h(is)g(p)q(erforming)g(a)f
-(non-incremen)o(tal)h(history)g(searc)o(h.)195 2287 y
-Ft(RL_STATE_SEARCH)435 2342 y Fu(Readline)11 b(is)g(searc)o(hing)g(bac)
-o(kw)o(ard)e(or)h(forw)o(ard)f(through)h(the)g(history)g(for)f(a)h
-(string.)195 2424 y Ft(RL_STATE_NUMERICARG)435 2478 y
-Fu(Readline)16 b(is)g(reading)g(a)f(n)o(umeric)h(argumen)o(t.)195
-2560 y Ft(RL_STATE_MACROINPUT)435 2615 y Fu(Readline)d(is)g(curren)o
-(tly)g(getting)f(its)g(input)h(from)e(a)h(previously-de\014ned)j(k)o
-(eyb)q(oard)435 2670 y(macro.)p eop
-%%Page: 28 30
-28 29 bop 75 -58 a Fu(28)1299 b(GNU)15 b(Readline)h(Library)195
-149 y Ft(RL_STATE_MACRODEF)435 204 y Fu(Readline)g(is)g(curren)o(tly)g
-(reading)g(c)o(haracters)e(de\014ning)j(a)e(k)o(eyb)q(oard)g(macro.)195
-286 y Ft(RL_STATE_OVERWRITE)435 341 y Fu(Readline)h(is)g(in)g(o)o(v)o
-(erwrite)f(mo)q(de.)195 423 y Ft(RL_STATE_COMPLETING)435
-478 y Fu(Readline)h(is)g(p)q(erforming)g(w)o(ord)e(completion.)195
-560 y Ft(RL_STATE_SIGHANDLER)435 615 y Fu(Readline)i(is)g(curren)o(tly)
-g(executing)g(the)f(readline)i(signal)f(handler.)195
-697 y Ft(RL_STATE_UNDOING)435 752 y Fu(Readline)g(is)g(p)q(erforming)g
-(an)f(undo.)195 834 y Ft(RL_STATE_DONE)435 889 y Fu(Readline)g(has)f
-(read)g(a)f(k)o(ey)h(sequence)h(b)q(ound)g(to)e Ft(accept-line)f
-Fu(and)i(is)h(ab)q(out)f(to)435 944 y(return)h(the)g(line)i(to)e(the)g
-(caller.)1773 1068 y(V)l(ariable)-1861 b Fi(int)20 b
-Fh(rl)p 215 1068 18 3 v 21 w(explicit)p 417 1068 V 24
-w(arg)195 1123 y Fu(Set)f(to)g(a)g(non-zero)h(v)m(alue)h(if)e(an)h
-(explicit)h(n)o(umeric)g(argumen)o(t)d(w)o(as)h(sp)q(eci\014ed)i(b)o(y)
-f(the)f(user.)195 1178 y(Only)d(v)m(alid)h(in)f(a)f(bindable)i(command)
-f(function.)1773 1302 y(V)l(ariable)-1861 b Fi(int)20
-b Fh(rl)p 215 1302 V 21 w(n)n(umeric)p 437 1302 V 20
-w(arg)195 1357 y Fu(Set)j(to)f(the)g(v)m(alue)i(of)f(an)o(y)f(n)o
-(umeric)h(argumen)o(t)f(explicitly)k(sp)q(eci\014ed)f(b)o(y)d(the)h
-(user)g(b)q(efore)195 1412 y(executing)14 b(the)f(curren)o(t)g
-(Readline)h(function.)20 b(Only)14 b(v)m(alid)h(in)f(a)f(bindable)i
-(command)d(function.)1773 1536 y(V)l(ariable)-1861 b
-Fi(int)20 b Fh(rl)p 215 1536 V 21 w(editing)p 407 1536
-V 22 w(mo)r(de)195 1591 y Fu(Set)13 b(to)f(a)g(v)m(alue)i(denoting)f
-(Readline's)g(curren)o(t)g(editing)h(mo)q(de.)19 b(A)12
-b(v)m(alue)i(of)e Fk(1)k Fu(means)d(Readline)195 1646
-y(is)j(curren)o(tly)f(in)h(emacs)g(mo)q(de;)f Fk(0)j
-Fu(means)d(that)g(vi)h(mo)q(de)f(is)h(activ)o(e.)75 1781
-y Fs(2.4)33 b(Readline)23 b(Con)n(v)n(enience)g(F)-6
-b(unctions)75 1927 y Fj(2.4.1)30 b(Naming)20 b(a)g(F)-5
-b(unction)137 2025 y Fu(The)20 b(user)g(can)g(dynamically)i(c)o(hange)e
-(the)g(bindings)i(of)d(k)o(eys)h(while)h(using)g(Readline.)35
-b(This)20 b(is)75 2080 y(done)f(b)o(y)f(represen)o(ting)h(the)g
-(function)g(with)g(a)f(descriptiv)o(e)i(name.)29 b(The)19
-b(user)f(is)h(able)h(to)d(t)o(yp)q(e)i(the)75 2135 y(descriptiv)o(e)e
-(name)e(when)h(referring)f(to)g(the)g(function.)21 b(Th)o(us,)14
-b(in)i(an)f(init)i(\014le,)f(one)f(migh)o(t)g(\014nd)195
-2202 y Ft(Meta-Rubout:)46 b(backward-kill-word)137 2272
-y Fu(This)21 b(binds)g(the)f(k)o(eystrok)o(e)661 2270
-y Fn(h)p 673 2244 209 2 v 673 2272 a Fm(Meta-Rub)q(out)p
-673 2279 V 879 2270 a Fn(i)914 2272 y Fu(to)g(the)g(function)g
-Fl(descriptively)k Fu(named)c Ft(backward-)75 2326 y(kill-word)p
-Fu(.)29 b(Y)l(ou,)19 b(as)f(the)h(programmer,)f(should)i(bind)f(the)g
-(functions)h(y)o(ou)e(write)h(to)e(descriptiv)o(e)75
-2381 y(names)e(as)g(w)o(ell.)21 b(Readline)16 b(pro)o(vides)g(a)f
-(function)h(for)e(doing)i(that:)1762 2506 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 2506 18 3 v 21 w(add)p 328
-2506 V 20 w(defun)i Fg(\()p Ft(const)14 b(char)h(*name,)f
-(rl_command_func_t)283 2560 y(*function,)f(int)i(key)p
-Fg(\))195 2615 y Fu(Add)j Fk(name)i Fu(to)d(the)h(list)h(of)e(named)h
-(functions.)28 b(Mak)o(e)17 b Fk(function)h Fu(b)q(e)g(the)g(function)h
-(that)d(gets)195 2670 y(called.)21 b(If)16 b Fk(k)o(ey)j
-Fu(is)d(not)e(-1,)h(then)h(bind)g(it)g(to)e Fk(function)i
-Fu(using)g Ft(rl_bind_key\(\))p Fu(.)p eop
-%%Page: 29 31
-29 30 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(29)137 149 y(Using)16 b(this)f(function)h(alone)g(is)f
-(su\016cien)o(t)h(for)f(most)f(applications.)21 b(It)15
-b(is)h(the)f(recommended)h(w)o(a)o(y)75 204 y(to)d(add)h(a)f(few)g
-(functions)h(to)f(the)h(default)g(functions)g(that)f(Readline)i(has)e
-(built)i(in.)20 b(If)14 b(y)o(ou)f(need)h(to)f(do)75
-259 y(something)k(other)g(than)f(adding)i(a)e(function)i(to)e
-(Readline,)i(y)o(ou)f(ma)o(y)f(need)i(to)e(use)h(the)g(underlying)75
-314 y(functions)f(describ)q(ed)h(b)q(elo)o(w.)75 442
-y Fj(2.4.2)30 b(Selecting)20 b(a)h(Keymap)137 546 y Fu(Key)16
-b(bindings)i(tak)o(e)c(place)j(on)e(a)g Fk(k)o(eymap)p
-Fu(.)21 b(The)15 b(k)o(eymap)h(is)f(the)h(asso)q(ciation)g(b)q(et)o(w)o
-(een)g(the)f(k)o(eys)75 601 y(that)f(the)g(user)g(t)o(yp)q(es)g(and)h
-(the)f(functions)h(that)f(get)g(run.)19 b(Y)l(ou)c(can)f(mak)o(e)g(y)o
-(our)g(o)o(wn)f(k)o(eymaps,)h(cop)o(y)75 656 y(existing)i(k)o(eymaps,)f
-(and)g(tell)h(Readline)h(whic)o(h)f(k)o(eymap)f(to)f(use.)1762
-797 y(F)l(unction)-1861 b Fi(Keymap)20 b Fh(rl)p 293
-797 18 3 v 21 w(mak)n(e)p 445 797 V 20 w(bare)p 575 797
-V 20 w(k)n(eymap)j Fg(\()p Ft(void)p Fg(\))195 851 y
-Fu(Returns)12 b(a)f(new,)i(empt)o(y)f(k)o(eymap.)18 b(The)13
-b(space)f(for)f(the)i(k)o(eymap)e(is)i(allo)q(cated)g(with)f
-Ft(malloc\(\))p Fu(;)195 906 y(the)j(caller)i(should)f(free)f(it)h(b)o
-(y)f(calling)i Ft(rl_discard_keymap\(\))12 b Fu(when)k(done.)1762
-1047 y(F)l(unction)-1861 b Fi(Keymap)20 b Fh(rl)p 293
-1047 V 21 w(cop)n(y)p 428 1047 V 21 w(k)n(eymap)j Fg(\()p
-Ft(Keymap)14 b(map)p Fg(\))195 1102 y Fu(Return)h(a)g(new)g(k)o(eymap)g
-(whic)o(h)h(is)g(a)f(cop)o(y)g(of)g Fk(map)p Fu(.)1762
-1243 y(F)l(unction)-1861 b Fi(Keymap)20 b Fh(rl)p 293
-1243 V 21 w(mak)n(e)p 445 1243 V 20 w(k)n(eymap)j Fg(\()p
-Ft(void)p Fg(\))195 1298 y Fu(Return)16 b(a)f(new)i(k)o(eymap)e(with)i
-(the)f(prin)o(ting)h(c)o(haracters)e(b)q(ound)i(to)e(rl)p
-1457 1298 14 2 v 17 w(insert,)h(the)g(lo)o(w)o(ercase)195
-1353 y(Meta)11 b(c)o(haracters)f(b)q(ound)i(to)f(run)h(their)f(equiv)m
-(alen)o(ts,)j(and)d(the)h(Meta)e(digits)i(b)q(ound)g(to)f(pro)q(duce)
-195 1407 y(n)o(umeric)16 b(argumen)o(ts.)1762 1548 y(F)l(unction)-1861
-b Fi(void)20 b Fh(rl)p 241 1548 18 3 v 21 w(discard)p
-441 1548 V 21 w(k)n(eymap)i Fg(\()p Ft(Keymap)14 b(keymap)p
-Fg(\))195 1603 y Fu(F)l(ree)h(the)h(storage)d(asso)q(ciated)j(with)f
-Fk(k)o(eymap)p Fu(.)137 1711 y(Readline)24 b(has)f(sev)o(eral)g(in)o
-(ternal)g(k)o(eymaps.)42 b(These)23 b(functions)g(allo)o(w)g(y)o(ou)f
-(to)g(c)o(hange)h(whic)o(h)75 1766 y(k)o(eymap)15 b(is)h(activ)o(e.)
-1762 1907 y(F)l(unction)-1861 b Fi(Keymap)20 b Fh(rl)p
-293 1907 V 21 w(get)p 391 1907 V 21 w(k)n(eymap)i Fg(\()p
-Ft(void)p Fg(\))195 1962 y Fu(Returns)15 b(the)g(curren)o(tly)h(activ)o
-(e)f(k)o(eymap.)1762 2103 y(F)l(unction)-1861 b Fi(void)20
-b Fh(rl)p 241 2103 V 21 w(set)p 333 2103 V 21 w(k)n(eymap)i
-Fg(\()p Ft(Keymap)14 b(keymap)p Fg(\))195 2158 y Fu(Mak)o(es)g
-Fk(k)o(eymap)j Fu(the)e(curren)o(tly)h(activ)o(e)f(k)o(eymap.)1762
-2298 y(F)l(unction)-1861 b Fi(Keymap)20 b Fh(rl)p 293
-2298 V 21 w(get)p 391 2298 V 21 w(k)n(eymap)p 605 2298
-V 20 w(b)n(y)p 685 2298 V 21 w(name)i Fg(\()p Ft(const)14
-b(char)g(*name)p Fg(\))195 2353 y Fu(Return)i(the)h(k)o(eymap)f(matc)o
-(hing)h Fk(name)p Fu(.)24 b Fk(name)19 b Fu(is)e(one)g(whic)o(h)g(w)o
-(ould)g(b)q(e)h(supplied)h(in)e(a)f Ft(set)195 2408 y(keymap)e
-Fu(inputrc)j(line)f(\(see)g(Section)g(1.3)e([Readline)i(Init)g(File],)g
-(page)f(4\).)1762 2549 y(F)l(unction)-1861 b Fi(char)20
-b(*)f Fh(rl)p 286 2549 V 21 w(get)p 384 2549 V 21 w(k)n(eymap)p
-598 2549 V 20 w(name)i Fg(\()p Ft(Keymap)14 b(keymap)p
-Fg(\))195 2604 y Fu(Return)i(the)h(name)g(matc)o(hing)f
-Fk(k)o(eymap)p Fu(.)24 b Fk(name)19 b Fu(is)e(one)g(whic)o(h)g(w)o
-(ould)g(b)q(e)h(supplied)h(in)e(a)f Ft(set)195 2659 y(keymap)e
-Fu(inputrc)j(line)f(\(see)g(Section)g(1.3)e([Readline)i(Init)g(File],)g
-(page)f(4\).)p eop
-%%Page: 30 32
-30 31 bop 75 -58 a Fu(30)1299 b(GNU)15 b(Readline)h(Library)75
-149 y Fj(2.4.3)30 b(Binding)20 b(Keys)137 244 y Fu(Key)13
-b(sequences)g(are)e(asso)q(ciate)h(with)h(functions)f(through)g(the)g
-(k)o(eymap.)19 b(Readline)13 b(has)f(sev)o(eral)g(in-)75
-299 y(ternal)j(k)o(eymaps:)k Ft(emacs_standard_keymap)p
-Fu(,)11 b Ft(emacs_meta_keymap)p Fu(,)h Ft(emacs_ctlx_keymap)p
-Fu(,)g Ft(vi_)75 354 y(movement_keymap)p Fu(,)20 b(and)i
-Ft(vi_insertion_keymap)p Fu(.)35 b Ft(emacs_standard_keymap)18
-b Fu(is)k(the)f(default,)75 408 y(and)15 b(the)h(examples)g(in)g(this)f
-(man)o(ual)h(assume)f(that.)137 474 y(Since)h Ft(readline\(\))c
-Fu(installs)j(a)f(set)f(of)h(default)g(k)o(ey)g(bindings)h(the)f
-(\014rst)g(time)g(it)g(is)g(called,)i(there)d(is)75 529
-y(alw)o(a)o(ys)j(the)g(danger)g(that)g(a)g(custom)g(binding)i
-(installed)g(b)q(efore)f(the)f(\014rst)g(call)i(to)d
-Ft(readline\(\))g Fu(will)75 584 y(b)q(e)f(o)o(v)o(erridden.)19
-b(An)13 b(alternate)g(mec)o(hanism)h(is)f(to)f(install)i(custom)f(k)o
-(ey)g(bindings)h(in)g(an)f(initialization)75 638 y(function)19
-b(assigned)h(to)d(the)i Ft(rl_startup_hook)e Fu(v)m(ariable)j(\(see)e
-(Section)h(2.3)f([Readline)i(V)l(ariables],)75 693 y(page)15
-b(24\).)137 759 y(These)h(functions)g(manage)e(k)o(ey)i(bindings.)1762
-868 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 868
-18 3 v 21 w(bind)p 347 868 V 21 w(k)n(ey)k Fg(\()p Ft(int)14
-b(key,)h(rl_command_func_t)d(*function)p Fg(\))195 922
-y Fu(Binds)18 b Fk(k)o(ey)i Fu(to)c Fk(function)h Fu(in)h(the)e(curren)
-o(tly)h(activ)o(e)g(k)o(eymap.)23 b(Returns)16 b(non-zero)h(in)g(the)g
-(case)195 977 y(of)e(an)g(in)o(v)m(alid)i Fk(k)o(ey)p
-Fu(.)1762 1086 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p
-215 1086 V 21 w(bind)p 347 1086 V 21 w(k)n(ey)p 452 1086
-V 21 w(in)p 520 1086 V 22 w(map)h Fg(\()p Ft(int)14 b(key,)h
-(rl_command_func_t)e(*function,)283 1141 y(Keymap)h(map)p
-Fg(\))195 1196 y Fu(Bind)i Fk(k)o(ey)j Fu(to)c Fk(function)h
-Fu(in)g Fk(map)p Fu(.)k(Returns)14 b(non-zero)i(in)g(the)f(case)g(of)g
-(an)g(in)o(v)m(alid)j Fk(k)o(ey)p Fu(.)1762 1304 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 1304 V 21 w(un)n(bind)p 409
-1304 V 21 w(k)n(ey)k Fg(\()p Ft(int)14 b(key)p Fg(\))195
-1359 y Fu(Bind)19 b Fk(k)o(ey)j Fu(to)c(the)g(n)o(ull)i(function)f(in)g
-(the)f(curren)o(tly)g(activ)o(e)h(k)o(eymap.)28 b(Returns)18
-b(non-zero)g(in)195 1414 y(case)d(of)g(error.)1762 1523
-y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 1523 V
-21 w(un)n(bind)p 409 1523 V 21 w(k)n(ey)p 514 1523 V
-21 w(in)p 582 1523 V 22 w(map)h Fg(\()p Ft(int)14 b(key,)h(Keymap)f
-(map)p Fg(\))195 1577 y Fu(Bind)i Fk(k)o(ey)j Fu(to)c(the)g(n)o(ull)i
-(function)f(in)g Fk(map)p Fu(.)k(Returns)14 b(non-zero)i(in)g(case)f
-(of)g(error.)1762 1686 y(F)l(unction)-1861 b Fi(int)20
-b Fh(rl)p 215 1686 V 21 w(un)n(bind)p 409 1686 V 21 w(function)p
-635 1686 V 21 w(in)p 703 1686 V 21 w(map)h Fg(\()p Ft
-(rl_command_func_t)13 b(*function,)283 1741 y(Keymap)h(map)p
-Fg(\))195 1796 y Fu(Un)o(bind)j(all)f(k)o(eys)f(that)f(execute)i
-Fk(function)g Fu(in)g Fk(map)p Fu(.)1762 1905 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 1905 V 21 w(un)n(bind)p 409
-1905 V 21 w(command)p 674 1905 V 17 w(in)p 738 1905 V
-22 w(map)h Fg(\()p Ft(const)14 b(char)h(*command,)f(Keymap)283
-1959 y(map)p Fg(\))195 2014 y Fu(Un)o(bind)j(all)f(k)o(eys)f(that)f
-(are)h(b)q(ound)h(to)f Fk(command)i Fu(in)f Fk(map)p
-Fu(.)1762 2123 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p
-215 2123 V 21 w(set)p 307 2123 V 20 w(k)n(ey)k Fg(\()p
-Ft(const)14 b(char)h(*keyseq,)f(rl_command_func_t)f(*function,)283
-2178 y(Keymap)h(map)p Fg(\))195 2232 y Fu(Bind)g(the)e(k)o(ey)h
-(sequence)h(represen)o(ted)f(b)o(y)f(the)h(string)f Fk(k)o(eyseq)i
-Fu(to)e(the)g(function)i Fk(function)p Fu(.)19 b(This)195
-2287 y(mak)o(es)13 b(new)g(k)o(eymaps)g(as)f(necessary)l(.)20
-b(The)13 b(initial)j(k)o(eymap)c(in)i(whic)o(h)g(to)f(do)g(bindings)i
-(is)f Fk(map)p Fu(.)1762 2396 y(F)l(unction)-1861 b Fi(int)20
-b Fh(rl)p 215 2396 V 21 w(generic)p 413 2396 V 21 w(bind)j
-Fg(\()p Ft(int)15 b(type,)f(const)h(char)f(*keyseq,)g(char)h(*data,)283
-2451 y(Keymap)f(map)p Fg(\))195 2506 y Fu(Bind)h(the)e(k)o(ey)h
-(sequence)h(represen)o(ted)e(b)o(y)h(the)g(string)f Fk(k)o(eyseq)i
-Fu(to)d(the)i(arbitrary)f(p)q(oin)o(ter)h Fk(data)p Fu(.)195
-2560 y Fk(t)o(yp)q(e)j Fu(sa)o(ys)c(what)h(kind)h(of)f(data)g(is)g(p)q
-(oin)o(ted)i(to)d(b)o(y)h Fk(data)p Fu(;)g(this)h(can)f(b)q(e)h(a)f
-(function)h(\()p Ft(ISFUNC)p Fu(\),)d(a)195 2615 y(macro)i(\()p
-Ft(ISMACR)p Fu(\),)f(or)h(a)h(k)o(eymap)f(\()p Ft(ISKMAP)p
-Fu(\).)k(This)e(mak)o(es)e(new)h(k)o(eymaps)f(as)h(necessary)l(.)20
-b(The)195 2670 y(initial)d(k)o(eymap)e(in)h(whic)o(h)g(to)f(do)g
-(bindings)i(is)f Fk(map)p Fu(.)p eop
-%%Page: 31 33
-31 32 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(31)1762 149 y(F)l(unction)-1861 b Fi(int)20
-b Fh(rl)p 215 149 18 3 v 21 w(parse)p 369 149 V 19 w(and)p
-480 149 V 21 w(bind)j Fg(\()p Ft(char)14 b(*line)p Fg(\))195
-204 y Fu(P)o(arse)g Fk(line)19 b Fu(as)14 b(if)h(it)g(had)g(b)q(een)h
-(read)f(from)f(the)g Ft(inputrc)g Fu(\014le)i(and)f(p)q(erform)f(an)o
-(y)h(k)o(ey)f(bindings)195 259 y(and)h(v)m(ariable)i(assignmen)o(ts)e
-(found)h(\(see)f(Section)h(1.3)e([Readline)i(Init)g(File],)g(page)f
-(4\).)1762 359 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p
-215 359 V 21 w(read)p 346 359 V 20 w(init)p 450 359 V
-22 w(\014le)k Fg(\()p Ft(const)14 b(char)h(*filename)p
-Fg(\))195 414 y Fu(Read)g(k)o(eybindings)j(and)e(v)m(ariable)h
-(assignmen)o(ts)f(from)f Fk(\014lename)k Fu(\(see)d(Section)g(1.3)f
-([Readline)195 469 y(Init)h(File],)g(page)f(4\).)75 571
-y Fj(2.4.4)30 b(Asso)r(ciating)20 b(F)-5 b(unction)20
-b(Names)h(and)f(Bindings)137 664 y Fu(These)11 b(functions)h(allo)o(w)e
-(y)o(ou)h(to)f(\014nd)h(out)f(what)g(k)o(eys)h(in)o(v)o(ok)o(e)f(named)
-h(functions)h(and)e(the)h(functions)75 718 y(in)o(v)o(ok)o(ed)j(b)o(y)g
-(a)f(particular)h(k)o(ey)g(sequence.)21 b(Y)l(ou)14 b(ma)o(y)f(also)g
-(asso)q(ciate)h(a)g(new)g(function)g(name)g(with)g(an)75
-773 y(arbitrary)h(function.)1762 873 y(F)l(unction)-1861
-b Fi(rl_command_func_t)22 b(*)d Fh(rl)p 626 873 V 21
-w(named)p 814 873 V 19 w(function)k Fg(\()p Ft(const)14
-b(char)h(*name)p Fg(\))195 928 y Fu(Return)g(the)g(function)h(with)g
-(name)f Fk(name)p Fu(.)1762 1028 y(F)l(unction)-1861
-b Fi(rl_command_func_t)22 b(*)d Fh(rl)p 626 1028 V 21
-w(function)p 852 1028 V 21 w(of)p 920 1028 V 20 w(k)n(eyseq)24
-b Fg(\()p Ft(const)14 b(char)283 1083 y(*keyseq,)g(Keymap)g(map,)h(int)
-f(*type)p Fg(\))195 1138 y Fu(Return)i(the)g(function)h(in)o(v)o(ok)o
-(ed)g(b)o(y)f Fk(k)o(eyseq)h Fu(in)g(k)o(eymap)f Fk(map)p
-Fu(.)23 b(If)17 b Fk(map)g Fu(is)g Ft(NULL)p Fu(,)f(the)g(curren)o(t)
-195 1193 y(k)o(eymap)i(is)h(used.)31 b(If)18 b Fk(t)o(yp)q(e)j
-Fu(is)e(not)g Ft(NULL)p Fu(,)f(the)g(t)o(yp)q(e)h(of)f(the)h(ob)s(ject)
-f(is)h(returned)g(in)g(the)f Ft(int)195 1247 y Fu(v)m(ariable)f(it)e(p)
-q(oin)o(ts)h(to)e(\(one)h(of)g Ft(ISFUNC)p Fu(,)f Ft(ISKMAP)p
-Fu(,)g(or)h Ft(ISMACR)p Fu(\).)1762 1347 y(F)l(unction)-1861
-b Fi(char)20 b(**)f Fh(rl)p 312 1347 V 21 w(in)n(v)n(oking)p
-541 1347 V 23 w(k)n(eyseqs)k Fg(\()p Ft(rl_command_func_t)13
-b(*function)p Fg(\))195 1402 y Fu(Return)i(an)h(arra)o(y)e(of)h
-(strings)h(represen)o(ting)g(the)g(k)o(ey)f(sequences)i(used)f(to)f(in)
-o(v)o(ok)o(e)h Fk(function)g Fu(in)195 1457 y(the)f(curren)o(t)g(k)o
-(eymap.)1762 1557 y(F)l(unction)-1861 b Fi(char)20 b(**)f
-Fh(rl)p 312 1557 V 21 w(in)n(v)n(oking)p 541 1557 V 23
-w(k)n(eyseqs)p 750 1557 V 21 w(in)p 818 1557 V 22 w(map)i
-Fg(\()p Ft(rl_command_func_t)283 1612 y(*function,)13
-b(Keymap)i(map)p Fg(\))195 1667 y Fu(Return)g(an)h(arra)o(y)e(of)h
-(strings)h(represen)o(ting)g(the)g(k)o(ey)f(sequences)i(used)f(to)f(in)
-o(v)o(ok)o(e)h Fk(function)g Fu(in)195 1722 y(the)f(k)o(eymap)g
-Fk(map)p Fu(.)1762 1822 y(F)l(unction)-1861 b Fi(void)20
-b Fh(rl)p 241 1822 V 21 w(function)p 467 1822 V 21 w(dump)r(er)g
-Fg(\()p Ft(int)15 b(readable)p Fg(\))195 1876 y Fu(Prin)o(t)g(the)f
-(readline)j(function)e(names)g(and)f(the)h(k)o(ey)g(sequences)g(curren)
-o(tly)g(b)q(ound)h(to)e(them)h(to)195 1931 y Ft(rl_outstream)p
-Fu(.)j(If)c Fk(readable)j Fu(is)d(non-zero,)g(the)g(list)g(is)h
-(formatted)d(in)j(suc)o(h)f(a)f(w)o(a)o(y)g(that)g(it)h(can)195
-1986 y(b)q(e)i(made)f(part)g(of)f(an)i Ft(inputrc)e Fu(\014le)i(and)f
-(re-read.)1762 2086 y(F)l(unction)-1861 b Fi(void)20
-b Fh(rl)p 241 2086 V 21 w(list)p 337 2086 V 22 w(funmap)p
-550 2086 V 18 w(names)h Fg(\()p Ft(void)p Fg(\))195 2141
-y Fu(Prin)o(t)15 b(the)g(names)h(of)e(all)j(bindable)g(Readline)f
-(functions)g(to)f Ft(rl_outstream)p Fu(.)1762 2241 y(F)l(unction)-1861
-b Fi(const)20 b(char)g(**)f Fh(rl)p 462 2241 V 21 w(funmap)p
-674 2241 V 18 w(names)i Fg(\()p Ft(void)p Fg(\))195 2296
-y Fu(Return)13 b(a)f(NULL)i(terminated)g(arra)o(y)d(of)i(kno)o(wn)g
-(function)g(names.)20 b(The)13 b(arra)o(y)f(is)h(sorted.)19
-b(The)195 2351 y(arra)o(y)11 b(itself)j(is)f(allo)q(cated,)h(but)f(not)
-f(the)h(strings)f(inside.)21 b(Y)l(ou)13 b(should)h Ft(free\(\))d
-Fu(the)i(arra)o(y)e(when)195 2405 y(y)o(ou)k(are)g(done,)g(but)g(not)g
-(the)g(p)q(oin)o(ters.)1762 2506 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 2506 V 21 w(add)p 328 2506
-V 20 w(funmap)p 539 2506 V 18 w(en)n(try)j Fg(\()p Ft(const)14
-b(char)h(*name,)f(rl_command_func_t)283 2560 y(*function)p
-Fg(\))195 2615 y Fu(Add)j Fk(name)i Fu(to)d(the)g(list)h(of)f(bindable)
-j(Readline)f(command)e(names,)g(and)h(mak)o(e)f Fk(function)h
-Fu(the)195 2670 y(function)f(to)f(b)q(e)g(called)i(when)f
-Fk(name)i Fu(is)d(in)o(v)o(ok)o(ed.)p eop
-%%Page: 32 34
-32 33 bop 75 -58 a Fu(32)1299 b(GNU)15 b(Readline)h(Library)75
-149 y Fj(2.4.5)30 b(Allo)n(wing)21 b(Undoing)137 251
-y Fu(Supp)q(orting)14 b(the)g(undo)f(command)g(is)h(a)f(painless)h
-(thing,)g(and)f(mak)o(es)g(y)o(our)f(functions)i(m)o(uc)o(h)f(more)75
-306 y(useful.)21 b(It)15 b(is)h(certainly)g(easy)f(to)g(try)f
-(something)i(if)f(y)o(ou)g(kno)o(w)g(y)o(ou)g(can)g(undo)h(it.)137
-378 y(If)21 b(y)o(our)f(function)h(simply)h(inserts)f(text)e(once,)j
-(or)e(deletes)h(text)f(once,)i(and)f(uses)f Ft(rl_insert_)75
-433 y(text\(\))13 b Fu(or)h Ft(rl_delete_text\(\))d Fu(to)j(do)f(it,)h
-(then)h(undoing)g(is)f(already)g(done)h(for)e(y)o(ou)h(automatically)l
-(.)137 506 y(If)d(y)o(ou)f(do)g(m)o(ultiple)i(insertions)f(or)f(m)o
-(ultiple)i(deletions,)g(or)e(an)o(y)g(com)o(bination)h(of)f(these)g(op)
-q(erations,)75 560 y(y)o(ou)19 b(should)h(group)e(them)h(together)g(in)
-o(to)g(one)g(op)q(eration.)31 b(This)20 b(is)f(done)h(with)f
-Ft(rl_begin_undo_)75 615 y(group\(\))14 b Fu(and)i Ft
-(rl_end_undo_group\(\))p Fu(.)137 688 y(The)g(t)o(yp)q(es)f(of)g(ev)o
-(en)o(ts)g(that)f(can)h(b)q(e)h(undone)g(are:)195 757
-y Ft(enum)23 b(undo_code)g({)h(UNDO_DELETE,)e(UNDO_INSERT,)g
-(UNDO_BEGIN,)g(UNDO_END)h(};)137 830 y Fu(Notice)16 b(that)e
-Ft(UNDO_DELETE)g Fu(means)h(to)g(insert)g(some)g(text,)f(and)i
-Ft(UNDO_INSERT)d Fu(means)i(to)g(delete)75 885 y(some)e(text.)19
-b(That)14 b(is,)g(the)g(undo)g(co)q(de)g(tells)h(what)e(to)h(undo,)g
-(not)f(ho)o(w)g(to)g(undo)i(it.)k Ft(UNDO_BEGIN)13 b
-Fu(and)75 939 y Ft(UNDO_END)h Fu(are)h(tags)f(added)i(b)o(y)f
-Ft(rl_begin_undo_group\(\))d Fu(and)k Ft(rl_end_undo_group\(\))p
-Fu(.)1762 1072 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p
-215 1072 18 3 v 21 w(b)r(egin)p 372 1072 V 20 w(undo)p
-517 1072 V 20 w(group)h Fg(\()p Ft(void)p Fg(\))195 1127
-y Fu(Begins)16 b(sa)o(ving)g(undo)g(information)f(in)i(a)e(group)g
-(construct.)20 b(The)c(undo)g(information)g(usually)195
-1182 y(comes)21 b(from)f(calls)i(to)e Ft(rl_insert_text\(\))e
-Fu(and)j Ft(rl_delete_text\(\))p Fu(,)f(but)h(could)g(b)q(e)h(the)195
-1237 y(result)16 b(of)e(calls)j(to)d Ft(rl_add_undo\(\))p
-Fu(.)1762 1370 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p
-215 1370 V 21 w(end)p 326 1370 V 20 w(undo)p 471 1370
-V 20 w(group)h Fg(\()p Ft(void)p Fg(\))195 1424 y Fu(Closes)15
-b(the)f(curren)o(t)h(undo)g(group)f(started)g(with)g
-Ft(rl_begin_undo_group)f(\(\))p Fu(.)19 b(There)c(should)195
-1479 y(b)q(e)h(one)f(call)i(to)d Ft(rl_end_undo_group\(\))f
-Fu(for)h(eac)o(h)h(call)i(to)d Ft(rl_begin_undo_group\(\))p
-Fu(.)1762 1612 y(F)l(unction)-1861 b Fi(void)20 b Fh(rl)p
-241 1612 V 21 w(add)p 354 1612 V 20 w(undo)i Fg(\()p
-Ft(enum)14 b(undo_code)g(what,)g(int)h(start,)g(int)f(end,)h(char)283
-1667 y(*text)p Fg(\))195 1722 y Fu(Remem)o(b)q(er)i(ho)o(w)f(to)h(undo)
-g(an)g(ev)o(en)o(t)g(\(according)g(to)g Fk(what)q Fu(\).)24
-b(The)17 b(a\013ected)g(text)f(runs)i(from)195 1776 y
-Fk(start)d Fu(to)g Fk(end)p Fu(,)g(and)g(encompasses)h
-Fk(text)p Fu(.)1762 1909 y(F)l(unction)-1861 b Fi(void)20
-b Fh(rl)p 241 1909 V 21 w(free)p 356 1909 V 20 w(undo)p
-501 1909 V 20 w(list)k Fg(\()p Ft(void)p Fg(\))195 1964
-y Fu(F)l(ree)15 b(the)h(existing)g(undo)f(list.)1762
-2097 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 2097
-V 21 w(do)p 297 2097 V 20 w(undo)i Fg(\()p Ft(void)p
-Fg(\))195 2152 y Fu(Undo)12 b(the)f(\014rst)g(thing)h(on)g(the)f(undo)h
-(list.)19 b(Returns)11 b Ft(0)h Fu(if)g(there)f(w)o(as)g(nothing)h(to)e
-(undo,)j(non-zero)195 2206 y(if)j(something)f(w)o(as)f(undone.)137
-2309 y(Finally)l(,)j(if)f(y)o(ou)f(neither)i(insert)f(nor)f(delete)i
-(text,)e(but)g(directly)i(mo)q(dify)f(the)g(existing)g(text)g(\(e.g.,)
-75 2364 y(c)o(hange)j(its)h(case\),)g(call)g Ft(rl_modifying\(\))e
-Fu(once,)i(just)f(b)q(efore)h(y)o(ou)f(mo)q(dify)h(the)f(text.)32
-b(Y)l(ou)20 b(m)o(ust)75 2419 y(supply)c(the)g(indices)h(of)e(the)g
-(text)g(range)g(that)f(y)o(ou)h(are)g(going)g(to)g(mo)q(dify)l(.)1762
-2552 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 2552
-V 21 w(mo)r(difying)h Fg(\()p Ft(int)15 b(start,)f(int)h(end)p
-Fg(\))195 2606 y Fu(T)l(ell)22 b(Readline)f(to)e(sa)o(v)o(e)h(the)g
-(text)g(b)q(et)o(w)o(een)g Fk(start)g Fu(and)g Fk(end)j
-Fu(as)c(a)h(single)h(undo)g(unit.)35 b(It)20 b(is)195
-2661 y(assumed)15 b(that)g(y)o(ou)g(will)i(subsequen)o(tly)f(mo)q(dify)
-g(that)e(text.)p eop
-%%Page: 33 35
-33 34 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(33)75 149 y Fj(2.4.6)30 b(Redispla)n(y)1762
-302 y Fu(F)l(unction)-1861 b Fi(void)20 b Fh(rl)p 241
-302 18 3 v 21 w(redispla)n(y)k Fg(\()p Ft(void)p Fg(\))195
-356 y Fu(Change)19 b(what's)f(displa)o(y)o(ed)i(on)f(the)g(screen)g(to)
-f(re\015ect)i(the)f(curren)o(t)f(con)o(ten)o(ts)h(of)f
-Ft(rl_line_)195 411 y(buffer)p Fu(.)1762 534 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 534 V 21 w(forced)p 390 534
-V 20 w(up)r(date)p 584 534 V 20 w(displa)n(y)k Fg(\()p
-Ft(void)p Fg(\))195 589 y Fu(F)l(orce)c(the)g(line)h(to)e(b)q(e)i(up)q
-(dated)f(and)g(redispla)o(y)o(ed,)i(whether)e(or)g(not)f(Readline)i
-(thinks)g(the)195 644 y(screen)16 b(displa)o(y)g(is)g(correct.)1762
-767 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 767
-V 21 w(on)p 297 767 V 20 w(new)p 416 767 V 21 w(line)k
-Fg(\()p Ft(void)p Fg(\))195 822 y Fu(T)l(ell)16 b(the)f(up)q(date)h
-(functions)g(that)e(w)o(e)g(ha)o(v)o(e)h(mo)o(v)o(ed)f(on)o(to)g(a)h
-(new)g(\(empt)o(y\))f(line,)i(usually)h(after)195 877
-y(ouputting)f(a)e(newline.)1762 1000 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 1000 V 21 w(on)p 297 1000 V
-20 w(new)p 416 1000 V 21 w(line)p 525 1000 V 22 w(with)p
-657 1000 V 22 w(prompt)h Fg(\()p Ft(void)p Fg(\))195
-1055 y Fu(T)l(ell)14 b(the)e(up)q(date)h(functions)g(that)f(w)o(e)g(ha)
-o(v)o(e)g(mo)o(v)o(ed)f(on)o(to)h(a)g(new)g(line,)i(with)f
-Fk(rl)p 1556 1055 14 2 v 17 w(prompt)g Fu(already)195
-1109 y(displa)o(y)o(ed.)21 b(This)15 b(could)g(b)q(e)g(used)g(b)o(y)f
-(applications)i(that)e(w)o(an)o(t)f(to)h(output)g(the)g(prompt)g
-(string)195 1164 y(themselv)o(es,)g(but)g(still)h(need)g(Readline)g(to)
-e(kno)o(w)g(the)h(prompt)f(string)h(length)g(for)f(redispla)o(y)l(.)21
-b(It)195 1219 y(should)16 b(b)q(e)g(used)g(after)e(setting)i
-Fk(rl)p 795 1219 V 16 w(already)p 956 1219 V 17 w(prompted)p
-Fu(.)1762 1342 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p
-215 1342 18 3 v 21 w(reset)p 357 1342 V 20 w(line)p 465
-1342 V 23 w(state)j Fg(\()p Ft(void)p Fg(\))195 1397
-y Fu(Reset)17 b(the)g(displa)o(y)i(state)d(to)h(a)g(clean)h(state)f
-(and)g(redispla)o(y)i(the)e(curren)o(t)g(line)i(starting)e(on)g(a)195
-1452 y(new)e(line.)1762 1575 y(F)l(unction)-1861 b Fi(int)20
-b Fh(rl)p 215 1575 V 21 w(crlf)j Fg(\()p Ft(void)p Fg(\))195
-1630 y Fu(Mo)o(v)o(e)14 b(the)h(cursor)g(to)g(the)g(start)f(of)h(the)g
-(next)g(screen)h(line.)1762 1753 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 1753 V 21 w(sho)n(w)p 359 1753
-V 20 w(c)n(har)j Fg(\()p Ft(int)14 b(c)p Fg(\))195 1807
-y Fu(Displa)o(y)j(c)o(haracter)e Fk(c)20 b Fu(on)c Ft(rl_outstream)p
-Fu(.)21 b(If)c(Readline)g(has)f(not)g(b)q(een)i(set)e(to)f(displa)o(y)j
-(meta)195 1862 y(c)o(haracters)12 b(directly)l(,)j(this)e(will)i(con)o
-(v)o(ert)d(meta)h(c)o(haracters)f(to)g(a)h(meta-pre\014xed)g(k)o(ey)g
-(sequence.)195 1917 y(This)j(is)f(in)o(tended)i(for)e(use)g(b)o(y)g
-(applications)i(whic)o(h)f(wish)g(to)f(do)g(their)g(o)o(wn)g(redispla)o
-(y)l(.)1762 2040 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p
-215 2040 V 21 w(message)g Fg(\()p Ft(const)14 b(char)h(*,)g(...)p
-Fg(\))195 2095 y Fu(The)c(argumen)o(ts)e(are)h(a)g(format)f(string)h
-(as)g(w)o(ould)h(b)q(e)g(supplied)i(to)c Ft(printf)p
-Fu(,)h(p)q(ossibly)i(con)o(taining)195 2150 y(con)o(v)o(ersion)22
-b(sp)q(eci\014cations)i(suc)o(h)f(as)e(`)p Ft(\045d)p
-Fu(',)i(and)f(an)o(y)g(additional)h(argumen)o(ts)e(necessary)i(to)195
-2205 y(satisfy)d(the)h(con)o(v)o(ersion)g(sp)q(eci\014cations.)38
-b(The)21 b(resulting)h(string)e(is)i(displa)o(y)o(ed)g(in)f(the)g
-Fk(ec)o(ho)195 2259 y(area)p Fu(.)e(The)d(ec)o(ho)f(area)g(is)g(also)g
-(used)h(to)f(displa)o(y)h(n)o(umeric)g(argumen)o(ts)f(and)g(searc)o(h)g
-(strings.)1762 2382 y(F)l(unction)-1861 b Fi(int)20 b
-Fh(rl)p 215 2382 V 21 w(clear)p 354 2382 V 21 w(message)h
-Fg(\()p Ft(void)p Fg(\))195 2437 y Fu(Clear)15 b(the)h(message)e(in)i
-(the)g(ec)o(ho)f(area.)1762 2560 y(F)l(unction)-1861
-b Fi(void)20 b Fh(rl)p 241 2560 V 21 w(sa)n(v)n(e)p 365
-2560 V 21 w(prompt)h Fg(\()p Ft(void)p Fg(\))195 2615
-y Fu(Sa)o(v)o(e)g(the)h(lo)q(cal)g(Readline)h(prompt)e(displa)o(y)i
-(state)e(in)h(preparation)f(for)g(displa)o(ying)j(a)d(new)195
-2670 y(message)15 b(in)h(the)f(message)g(area)f(with)i
-Ft(rl_message\(\))p Fu(.)p eop
-%%Page: 34 36
-34 35 bop 75 -58 a Fu(34)1299 b(GNU)15 b(Readline)h(Library)1762
-149 y(F)l(unction)-1861 b Fi(void)20 b Fh(rl)p 241 149
-18 3 v 21 w(restore)p 436 149 V 20 w(prompt)g Fg(\()p
-Ft(void)p Fg(\))195 204 y Fu(Restore)g(the)i(lo)q(cal)g(Readline)h
-(prompt)e(displa)o(y)h(state)f(sa)o(v)o(ed)g(b)o(y)g(the)g(most)g
-(recen)o(t)g(call)i(to)195 259 y Ft(rl_save_prompt)p
-Fu(.)1762 369 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p
-215 369 V 21 w(expand)p 416 369 V 20 w(prompt)h Fg(\()p
-Ft(char)14 b(*prompt)p Fg(\))195 423 y Fu(Expand)22 b(an)o(y)f(sp)q
-(ecial)i(c)o(haracter)e(sequences)h(in)g Fk(prompt)g
-Fu(and)g(set)f(up)h(the)f(lo)q(cal)i(Readline)195 478
-y(prompt)17 b(redispla)o(y)i(v)m(ariables.)30 b(This)18
-b(function)h(is)f(called)i(b)o(y)e Ft(readline\(\))p
-Fu(.)26 b(It)18 b(ma)o(y)f(also)h(b)q(e)195 533 y(called)12
-b(to)e(expand)h(the)g(primary)g(prompt)f(if)h(the)f Ft
-(rl_on_new_line_with_prompt\(\))d Fu(function)195 588
-y(or)12 b Ft(rl_already_prompted)e Fu(v)m(ariable)k(is)g(used.)19
-b(It)13 b(returns)g(the)f(n)o(um)o(b)q(er)i(of)e(visible)j(c)o
-(haracters)195 643 y(on)g(the)g(last)h(line)g(of)f(the)g(\(p)q(ossibly)
-i(m)o(ulti-line\))g(prompt.)1762 752 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 752 V 21 w(set)p 307 752 V
-20 w(prompt)h Fg(\()p Ft(const)14 b(char)h(*prompt)p
-Fg(\))195 807 y Fu(Mak)o(e)e(Readline)i(use)e Fk(prompt)h
-Fu(for)f(subsequen)o(t)h(redispla)o(y)l(.)21 b(This)14
-b(calls)g Ft(rl_expand_prompt\(\))195 862 y Fu(to)h(expand)g(the)h
-(prompt)e(and)i(sets)f Ft(rl_prompt)f Fu(to)g(the)h(result.)75
-970 y Fj(2.4.7)30 b(Mo)r(difying)20 b(T)-5 b(ext)1762
-1108 y Fu(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215
-1108 V 21 w(insert)p 378 1108 V 21 w(text)k Fg(\()p Ft(const)14
-b(char)g(*text)p Fg(\))195 1163 y Fu(Insert)i Fk(text)g
-Fu(in)o(to)g(the)g(line)h(at)f(the)g(curren)o(t)f(cursor)h(p)q
-(osition.)22 b(Returns)16 b(the)g(n)o(um)o(b)q(er)g(of)f(c)o(har-)195
-1218 y(acters)g(inserted.)1762 1328 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 1328 V 21 w(delete)p 383 1328
-V 22 w(text)k Fg(\()p Ft(int)14 b(start,)h(int)f(end)p
-Fg(\))195 1382 y Fu(Delete)19 b(the)g(text)g(b)q(et)o(w)o(een)g
-Fk(start)g Fu(and)g Fk(end)i Fu(in)f(the)f(curren)o(t)f(line.)33
-b(Returns)18 b(the)h(n)o(um)o(b)q(er)g(of)195 1437 y(c)o(haracters)14
-b(deleted.)1762 1547 y(F)l(unction)-1861 b Fi(char)20
-b(*)f Fh(rl)p 286 1547 V 21 w(cop)n(y)p 421 1547 V 21
-w(text)24 b Fg(\()p Ft(int)14 b(start,)h(int)g(end)p
-Fg(\))195 1602 y Fu(Return)g(a)g(cop)o(y)g(of)g(the)g(text)f(b)q(et)o
-(w)o(een)i Fk(start)f Fu(and)g Fk(end)j Fu(in)e(the)f(curren)o(t)g
-(line.)1762 1711 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p
-215 1711 V 21 w(kill)p 311 1711 V 23 w(text)k Fg(\()p
-Ft(int)14 b(start,)h(int)g(end)p Fg(\))195 1766 y Fu(Cop)o(y)i(the)g
-(text)f(b)q(et)o(w)o(een)i Fk(start)f Fu(and)g Fk(end)i
-Fu(in)f(the)f(curren)o(t)g(line)i(to)e(the)g(kill)i(ring,)e(app)q
-(ending)195 1821 y(or)f(prep)q(ending)k(to)c(the)h(last)g(kill)i(if)e
-(the)g(last)g(command)g(w)o(as)f(a)h(kill)i(command.)25
-b(The)17 b(text)f(is)195 1876 y(deleted.)26 b(If)17 b
-Fk(start)g Fu(is)g(less)g(than)g Fk(end)p Fu(,)g(the)g(text)g(is)g(app)
-q(ended,)h(otherwise)f(prep)q(ended.)27 b(If)17 b(the)195
-1930 y(last)e(command)g(w)o(as)g(not)f(a)h(kill,)i(a)e(new)g(kill)i
-(ring)f(slot)f(is)h(used.)1762 2040 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 2040 V 21 w(push)p 355 2040
-V 19 w(macro)p 529 2040 V 19 w(input)k Fg(\()p Ft(char)14
-b(*macro)p Fg(\))195 2095 y Fu(Cause)g Fk(macro)i Fu(to)d(b)q(e)i
-(inserted)g(in)o(to)f(the)g(line,)i(as)e(if)g(it)h(had)f(b)q(een)h(in)o
-(v)o(ok)o(ed)g(b)o(y)f(a)g(k)o(ey)g(b)q(ound)h(to)195
-2150 y(a)g(macro.)k(Not)c(esp)q(ecially)i(useful;)f(use)g
-Ft(rl_insert_text\(\))d Fu(instead.)75 2257 y Fj(2.4.8)30
-b(Character)21 b(Input)1762 2396 y Fu(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 2396 V 21 w(read)p 346 2396
-V 20 w(k)n(ey)k Fg(\()p Ft(void)p Fg(\))195 2451 y Fu(Return)14
-b(the)h(next)g(c)o(haracter)f(a)o(v)m(ailable)i(from)e(Readline's)i
-(curren)o(t)f(input)g(stream.)k(This)d(han-)195 2506
-y(dles)f(input)g(inserted)f(in)o(to)g(the)g(input)h(stream)e(via)h
-Fk(rl)p 1117 2506 14 2 v 17 w(p)q(ending)p 1290 2506
-V 18 w(input)i Fu(\(see)e(Section)h(2.3)e([Read-)195
-2560 y(line)21 b(V)l(ariables],)g(page)f(24\))f(and)h
-Ft(rl_stuff_char\(\))p Fu(,)e(macros,)h(and)h(c)o(haracters)f(read)h
-(from)195 2615 y(the)d(k)o(eyb)q(oard.)25 b(While)19
-b(w)o(aiting)e(for)f(input,)j(this)e(function)h(will)h(call)f(an)o(y)e
-(function)i(assigned)195 2670 y(to)d(the)g Ft(rl_event_hook)e
-Fu(v)m(ariable.)p eop
-%%Page: 35 37
-35 36 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(35)1762 149 y(F)l(unction)-1861 b Fi(int)20
-b Fh(rl)p 215 149 18 3 v 21 w(getc)j Fg(\()p Ft(FILE)14
-b(*stream)p Fg(\))195 204 y Fu(Return)c(the)h(next)g(c)o(haracter)f(a)o
-(v)m(ailable)i(from)e Fk(stream)p Fu(,)g(whic)o(h)i(is)f(assumed)f(to)g
-(b)q(e)i(the)e(k)o(eyb)q(oard.)1762 342 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 342 V 21 w(stu\013)p 346 342
-V 20 w(c)n(har)j Fg(\()p Ft(int)15 b(c)p Fg(\))195 397
-y Fu(Insert)i Fk(c)i Fu(in)o(to)d(the)h(Readline)h(input)f(stream.)23
-b(It)16 b(will)i(b)q(e)f Ft(")p Fu(read)p Ft(")g Fu(b)q(efore)f
-(Readline)i(attempts)195 452 y(to)13 b(read)g(c)o(haracters)g(from)f
-(the)i(terminal)g(with)g Ft(rl_read_key\(\))p Fu(.)j(Up)d(to)f(512)f(c)
-o(haracters)h(ma)o(y)195 507 y(b)q(e)j(pushed)g(bac)o(k.)k
-Ft(rl_stuff_char)14 b Fu(returns)h(1)g(if)h(the)f(c)o(haracter)g(w)o
-(as)f(successfully)j(inserted;)195 562 y(0)e(otherwise.)1762
-700 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 700
-V 21 w(execute)p 423 700 V 22 w(next)j Fg(\()p Ft(int)15
-b(c)p Fg(\))195 754 y Fu(Mak)o(e)i Fk(c)k Fu(b)q(e)d(the)g(next)g
-(command)g(to)f(b)q(e)i(executed)f(when)h Ft(rl_read_key\(\))d
-Fu(is)i(called.)29 b(This)195 809 y(sets)15 b Fk(rl)p
-317 809 14 2 v 17 w(p)q(ending)p 490 809 V 18 w(input)p
-Fu(.)1762 947 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p
-215 947 18 3 v 21 w(clear)p 354 947 V 21 w(p)r(ending)p
-575 947 V 21 w(input)j Fg(\()p Ft(void)p Fg(\))195 1002
-y Fu(Unset)f Fk(rl)p 365 1002 14 2 v 16 w(p)q(ending)p
-537 1002 V 19 w(input)p Fu(,)h(e\013ectiv)o(ely)g(negating)e(the)h
-(e\013ect)f(of)g(an)o(y)h(previous)g(call)h(to)d Ft(rl_)195
-1057 y(execute_next\(\))p Fu(.)29 b(This)19 b(w)o(orks)f(only)h(if)h
-(the)e(p)q(ending)j(input)f(has)f(not)f(already)h(b)q(een)h(read)195
-1112 y(with)c Ft(rl_read_key\(\))p Fu(.)1762 1250 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 1250 18 3 v 21 w(set)p 307
-1250 V 20 w(k)n(eyb)r(oard)p 558 1250 V 21 w(input)p
-712 1250 V 21 w(timeout)i Fg(\()p Ft(int)15 b(u)p Fg(\))195
-1305 y Fu(While)21 b(w)o(aiting)g(for)e(k)o(eyb)q(oard)h(input)h(in)g
-Ft(rl_read_key\(\))p Fu(,)e(Readline)i(will)h(w)o(ait)e(for)f
-Fk(u)h Fu(mi-)195 1360 y(croseconds)h(for)e(input)j(b)q(efore)f
-(calling)h(an)o(y)e(function)h(assigned)g(to)f Ft(rl_event_hook)p
-Fu(.)34 b(The)195 1414 y(default)16 b(w)o(aiting)f(p)q(erio)q(d)i(is)e
-(one-ten)o(th)h(of)e(a)h(second.)21 b(Returns)14 b(the)i(old)f(timeout)
-h(v)m(alue.)75 1540 y Fj(2.4.9)30 b(T)-5 b(erminal)20
-b(Managemen)n(t)1762 1708 y Fu(F)l(unction)-1861 b Fi(void)20
-b Fh(rl)p 241 1708 V 21 w(prep)p 376 1708 V 20 w(terminal)j
-Fg(\()p Ft(int)14 b(meta_flag)p Fg(\))195 1762 y Fu(Mo)q(dify)22
-b(the)f(terminal)h(settings)f(for)g(Readline's)h(use,)h(so)d
-Ft(readline\(\))g Fu(can)i(read)f(a)g(single)195 1817
-y(c)o(haracter)15 b(at)g(a)g(time)i(from)d(the)i(k)o(eyb)q(oard.)22
-b(The)16 b Fk(meta)p 1192 1817 14 2 v 15 w(\015ag)k Fu(argumen)o(t)15
-b(should)h(b)q(e)h(non-zero)195 1872 y(if)f(Readline)g(should)g(read)f
-(eigh)o(t-bit)i(input.)1762 2010 y(F)l(unction)-1861
-b Fi(void)20 b Fh(rl)p 241 2010 18 3 v 21 w(deprep)p
-434 2010 V 20 w(terminal)j Fg(\()p Ft(void)p Fg(\))195
-2065 y Fu(Undo)16 b(the)g(e\013ects)f(of)h Ft(rl_prep_terminal\(\))p
-Fu(,)d(lea)o(ving)k(the)e(terminal)i(in)g(the)e(state)g(in)i(whic)o(h)
-195 2120 y(it)e(w)o(as)g(b)q(efore)g(the)h(most)e(recen)o(t)h(call)i
-(to)d Ft(rl_prep_terminal\(\))p Fu(.)1762 2258 y(F)l(unction)-1861
-b Fi(void)20 b Fh(rl)p 241 2258 V 21 w(tt)n(y)p 334 2258
-V 22 w(set)p 427 2258 V 20 w(default)p 620 2258 V 21
-w(bindings)k Fg(\()p Ft(Keymap)14 b(kmap)p Fg(\))195
-2313 y Fu(Read)k(the)h(op)q(erating)f(system's)g(terminal)h(editing)h
-(c)o(haracters)e(\(as)f(w)o(ould)i(b)q(e)g(displa)o(y)o(ed)h(b)o(y)195
-2367 y Ft(stty)p Fu(\))14 b(to)h(their)h(Readline)g(equiv)m(alen)o(ts.)
-22 b(The)15 b(bindings)i(are)e(p)q(erformed)g(in)h Fk(kmap)p
-Fu(.)1762 2506 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p
-215 2506 V 21 w(reset)p 357 2506 V 20 w(terminal)j Fg(\()p
-Ft(const)15 b(char)f(*terminal_name)p Fg(\))195 2560
-y Fu(Reinitialize)h(Readline's)e(idea)g(of)f(the)g(terminal)h(settings)
-g(using)g Fk(terminal)p 1491 2560 14 2 v 17 w(name)h
-Fu(as)e(the)h(termi-)195 2615 y(nal)k(t)o(yp)q(e)f(\(e.g.,)f
-Ft(vt100)p Fu(\).)21 b(If)c Fk(terminal)p 878 2615 V
-17 w(name)i Fu(is)d Ft(NULL)p Fu(,)g(the)g(v)m(alue)h(of)f(the)g
-Ft(TERM)g Fu(en)o(vironmen)o(t)195 2670 y(v)m(ariable)h(is)e(used.)p
-eop
-%%Page: 36 38
-36 37 bop 75 -58 a Fu(36)1299 b(GNU)15 b(Readline)h(Library)75
-149 y Fj(2.4.10)29 b(Utilit)n(y)22 b(F)-5 b(unctions)1762
-287 y Fu(F)l(unction)-1861 b Fi(void)20 b Fh(rl)p 241
-287 18 3 v 21 w(replace)p 438 287 V 22 w(line)k Fg(\()p
-Ft(const)14 b(char)h(*text,)f(int)h(clear_undo)p Fg(\))195
-342 y Fu(Replace)20 b(the)g(con)o(ten)o(ts)f(of)g Ft(rl_line_buffer)f
-Fu(with)i Fk(text)p Fu(.)33 b(The)20 b(p)q(oin)o(t)g(and)g(mark)f(are)h
-(pre-)195 397 y(serv)o(ed,)13 b(if)h(p)q(ossible.)21
-b(If)13 b Fk(clear)p 712 397 14 2 v 17 w(undo)j Fu(is)d(non-zero,)h
-(the)f(undo)g(list)h(asso)q(ciated)g(with)f(the)g(curren)o(t)195
-452 y(line)k(is)f(cleared.)1762 561 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 561 18 3 v 21 w(extend)p 404
-561 V 21 w(line)p 513 561 V 22 w(bu\013er)j Fg(\()p Ft(int)15
-b(len)p Fg(\))195 616 y Fu(Ensure)g(that)g Ft(rl_line_buffer)e
-Fu(has)i(enough)g(space)h(to)e(hold)i Fk(len)g Fu(c)o(haracters,)e(p)q
-(ossibly)i(real-)195 670 y(lo)q(cating)g(it)f(if)h(necessary)l(.)1762
-779 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 779
-V 21 w(initiali)q(z)q(e)26 b Fg(\()p Ft(void)p Fg(\))195
-834 y Fu(Initialize)21 b(or)d(re-initialize)k(Readline's)d(in)o(ternal)
-h(state.)28 b(It's)18 b(not)g(strictly)h(necessary)g(to)f(call)195
-889 y(this;)d Ft(readline\(\))f Fu(calls)i(it)g(b)q(efore)f(reading)h
-(an)o(y)f(input.)1762 998 y(F)l(unction)-1861 b Fi(int)20
-b Fh(rl)p 215 998 V 21 w(ding)j Fg(\()p Ft(void)p Fg(\))195
-1053 y Fu(Ring)15 b(the)g(terminal)h(b)q(ell,)h(ob)q(eying)f(the)g
-(setting)f(of)g Ft(bell-style)p Fu(.)1762 1162 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 1162 V 21 w(alphab)r(etic)k
-Fg(\()p Ft(int)14 b(c)p Fg(\))195 1217 y Fu(Return)h(1)g(if)g
-Fk(c)j Fu(is)e(an)f(alphab)q(etic)i(c)o(haracter.)1762
-1325 y(F)l(unction)-1861 b Fi(void)20 b Fh(rl)p 241 1325
-V 21 w(displa)n(y)p 435 1325 V 22 w(matc)n(h)p 611 1325
-V 20 w(list)25 b Fg(\()p Ft(char)14 b(**matches,)g(int)g(len,)h(int)g
-(max)p Fg(\))195 1380 y Fu(A)i(con)o(v)o(enience)i(function)f(for)f
-(displa)o(ying)i(a)e(list)h(of)e(strings)h(in)i(columnar)e(format)f(on)
-h(Read-)195 1435 y(line's)h(output)f(stream.)23 b Ft(matches)16
-b Fu(is)h(the)g(list)h(of)e(strings,)h(in)g(argv)f(format,)g(suc)o(h)h
-(as)f(a)h(list)g(of)195 1490 y(completion)c(matc)o(hes.)19
-b Ft(len)11 b Fu(is)i(the)f(n)o(um)o(b)q(er)h(of)e(strings)h(in)h
-Ft(matches)p Fu(,)f(and)g Ft(max)g Fu(is)g(the)h(length)f(of)195
-1545 y(the)h(longest)g(string)g(in)h Ft(matches)p Fu(.)19
-b(This)13 b(function)h(uses)f(the)h(setting)f(of)f Ft
-(print-completions-)195 1599 y(horizontally)k Fu(to)i(select)h(ho)o(w)e
-(the)i(matc)o(hes)e(are)h(displa)o(y)o(ed)h(\(see)g(Section)g(1.3.1)d
-([Readline)195 1654 y(Init)g(File)g(Syn)o(tax],)e(page)h(4\).)137
-1742 y(The)i(follo)o(wing)f(are)g(implemen)o(ted)i(as)e(macros,)f
-(de\014ned)i(in)g Ft(chardefs.h)p Fu(.)k(Applications)d(should)75
-1796 y(refrain)d(from)g(using)h(them.)1762 1905 y(F)l(unction)-1861
-b Fi(int)p 176 1905 V 40 w Fh(rl)p 235 1905 V 21 w(upp)r(ercase)p
-506 1905 V 20 w(p)23 b Fg(\()p Ft(int)14 b(c)p Fg(\))195
-1960 y Fu(Return)h(1)g(if)g Fk(c)j Fu(is)e(an)f(upp)q(ercase)i(alphab)q
-(etic)f(c)o(haracter.)1762 2069 y(F)l(unction)-1861 b
-Fi(int)p 176 2069 V 40 w Fh(rl)p 235 2069 V 21 w(lo)n(w)n(ercase)p
-489 2069 V 23 w(p)22 b Fg(\()p Ft(int)15 b(c)p Fg(\))195
-2124 y Fu(Return)g(1)g(if)g Fk(c)j Fu(is)e(a)f(lo)o(w)o(ercase)g
-(alphab)q(etic)i(c)o(haracter.)1762 2233 y(F)l(unction)-1861
-b Fi(int)p 176 2233 V 40 w Fh(rl)p 235 2233 V 21 w(digit)p
-369 2233 V 22 w(p)23 b Fg(\()p Ft(int)14 b(c)p Fg(\))195
-2288 y Fu(Return)h(1)g(if)g Fk(c)j Fu(is)e(a)f(n)o(umeric)h(c)o
-(haracter.)1762 2397 y(F)l(unction)-1861 b Fi(int)p 176
-2397 V 40 w Fh(rl)p 235 2397 V 21 w(to)p 307 2397 V 21
-w(upp)r(er)21 b Fg(\()p Ft(int)15 b(c)p Fg(\))195 2451
-y Fu(If)d Fk(c)j Fu(is)d(a)g(lo)o(w)o(ercase)f(alphab)q(etic)j(c)o
-(haracter,)d(return)h(the)g(corresp)q(onding)h(upp)q(ercase)g(c)o
-(haracter.)1762 2560 y(F)l(unction)-1861 b Fi(int)p 176
-2560 V 40 w Fh(rl)p 235 2560 V 21 w(to)p 307 2560 V 21
-w(lo)n(w)n(er)24 b Fg(\()p Ft(int)15 b(c)p Fg(\))195
-2615 y Fu(If)g Fk(c)i Fu(is)e(an)f(upp)q(ercase)i(alphab)q(etic)g(c)o
-(haracter,)e(return)g(the)h(corresp)q(onding)g(lo)o(w)o(ercase)f(c)o
-(harac-)195 2670 y(ter.)p eop
-%%Page: 37 39
-37 38 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(37)1762 149 y(F)l(unction)-1861 b Fi(int)p
-176 149 18 3 v 40 w Fh(rl)p 235 149 V 21 w(digit)p 369
-149 V 22 w(v)m(alue)24 b Fg(\()p Ft(int)15 b(c)p Fg(\))195
-204 y Fu(If)g Fk(c)k Fu(is)c(a)g(n)o(um)o(b)q(er,)g(return)g(the)h(v)m
-(alue)g(it)g(represen)o(ts.)75 325 y Fj(2.4.11)29 b(Miscellaneous)22
-b(F)-5 b(unctions)1762 484 y Fu(F)l(unction)-1861 b Fi(int)20
-b Fh(rl)p 215 484 V 21 w(macro)p 391 484 V 19 w(bind)j
-Fg(\()p Ft(const)14 b(char)g(*keyseq,)h(const)f(char)h(*macro,)283
-539 y(Keymap)f(map)p Fg(\))195 593 y Fu(Bind)f(the)f(k)o(ey)f(sequence)
-i Fk(k)o(eyseq)g Fu(to)e(in)o(v)o(ok)o(e)g(the)h(macro)f
-Fk(macro)p Fu(.)18 b(The)12 b(binding)h(is)f(p)q(erformed)g(in)195
-648 y Fk(map)p Fu(.)19 b(When)14 b Fk(k)o(eyseq)h Fu(is)f(in)o(v)o(ok)o
-(ed,)g(the)g Fk(macro)i Fu(will)f(b)q(e)f(inserted)h(in)o(to)f(the)g
-(line.)21 b(This)14 b(function)195 703 y(is)i(deprecated;)f(use)h
-Ft(rl_generic_bind\(\))d Fu(instead.)1762 833 y(F)l(unction)-1861
-b Fi(void)20 b Fh(rl)p 241 833 V 21 w(macro)p 417 833
-V 19 w(dump)r(er)g Fg(\()p Ft(int)15 b(readable)p Fg(\))195
-888 y Fu(Prin)o(t)f(the)f(k)o(ey)h(sequences)g(b)q(ound)h(to)e(macros)g
-(and)g(their)h(v)m(alues,)h(using)f(the)g(curren)o(t)g(k)o(eymap,)195
-943 y(to)h Ft(rl_outstream)p Fu(.)k(If)d Fk(readable)j
-Fu(is)d(non-zero,)g(the)g(list)g(is)g(formatted)f(in)h(suc)o(h)g(a)f(w)
-o(a)o(y)g(that)g(it)195 997 y(can)g(b)q(e)h(made)f(part)g(of)g(an)g
-Ft(inputrc)f Fu(\014le)i(and)g(re-read.)1762 1127 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 1127 V 21 w(v)m(ariable)p 431
-1127 V 22 w(bind)j Fg(\()p Ft(const)14 b(char)g(*variable,)g(const)h
-(char)f(*value)p Fg(\))195 1182 y Fu(Mak)o(e)22 b(the)g(Readline)i(v)m
-(ariable)g Fk(v)m(ariable)j Fu(ha)o(v)o(e)22 b Fk(v)m(alue)p
-Fu(.)43 b(This)23 b(b)q(eha)o(v)o(es)g(as)f(if)h(the)f(readline)195
-1237 y(command)12 b(`)p Ft(set)j Fk(v)m(ariable)k(v)m(alue)s
-Fu(')12 b(had)h(b)q(een)g(executed)h(in)f(an)f Ft(inputrc)g
-Fu(\014le)h(\(see)f(Section)i(1.3.1)195 1292 y([Readline)i(Init)g(File)
-h(Syn)o(tax],)d(page)h(4\).)1762 1422 y(F)l(unction)-1861
-b Fi(void)20 b Fh(rl)p 241 1422 V 21 w(v)m(ariable)p
-457 1422 V 22 w(dump)r(er)g Fg(\()p Ft(int)14 b(readable)p
-Fg(\))195 1476 y Fu(Prin)o(t)g(the)h(readline)h(v)m(ariable)f(names)g
-(and)f(their)h(curren)o(t)f(v)m(alues)i(to)d Ft(rl_outstream)p
-Fu(.)18 b(If)d Fk(read-)195 1531 y(able)20 b Fu(is)e(non-zero,)f(the)g
-(list)h(is)g(formatted)e(in)h(suc)o(h)h(a)e(w)o(a)o(y)g(that)h(it)g
-(can)g(b)q(e)h(made)f(part)f(of)h(an)195 1586 y Ft(inputrc)d
-Fu(\014le)i(and)g(re-read.)1762 1716 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 1716 V 21 w(set)p 307 1716
-V 20 w(paren)p 469 1716 V 20 w(blink)p 613 1716 V 23
-w(timeout)i Fg(\()p Ft(int)15 b(u)p Fg(\))195 1771 y
-Fu(Set)e(the)f(time)h(in)o(terv)m(al)h(\(in)f(microseconds\))g(that)f
-(Readline)i(w)o(aits)e(when)h(sho)o(wing)f(a)h(balancing)195
-1826 y(c)o(haracter)h(when)i Ft(blink-matching-paren)d
-Fu(has)i(b)q(een)h(enabled.)1762 1956 y(F)l(unction)-1861
-b Fi(char)20 b(*)f Fh(rl)p 286 1956 V 21 w(get)p 384
-1956 V 21 w(termcap)j Fg(\()p Ft(const)14 b(char)g(*cap)p
-Fg(\))195 2010 y Fu(Retriev)o(e)f(the)h(string)f(v)m(alue)i(of)e(the)h
-(termcap)f(capabilit)o(y)i Fk(cap)p Fu(.)k(Readline)c(fetc)o(hes)f(the)
-f(termcap)195 2065 y(en)o(try)j(for)h(the)f(curren)o(t)h(terminal)h
-(name)e(and)h(uses)g(those)g(capabilities)i(to)d(mo)o(v)o(e)g(around)h
-(the)195 2120 y(screen)11 b(line)h(and)f(p)q(erform)f(other)g
-(terminal-sp)q(eci\014c)k(op)q(erations,)d(lik)o(e)h(erasing)e(a)h
-(line.)20 b(Readline)195 2175 y(do)q(es)e(not)f(use)h(all)g(of)f(a)g
-(terminal's)h(capabilities,)i(and)e(this)g(function)g(will)h(return)f
-(v)m(alues)h(for)195 2230 y(only)d(those)f(capabilities)i(Readline)g
-(uses.)75 2350 y Fj(2.4.12)29 b(Alternate)21 b(In)n(terface)137
-2451 y Fu(An)i(alternate)f(in)o(terface)h(is)g(a)o(v)m(ailable)h(to)d
-(plain)j Ft(readline\(\))p Fu(.)40 b(Some)22 b(applications)i(need)g
-(to)75 2506 y(in)o(terlea)o(v)o(e)15 b(k)o(eyb)q(oard)f(I/O)h(with)g
-(\014le,)h(device,)f(or)f(windo)o(w)h(system)f(I/O,)h(t)o(ypically)h(b)
-o(y)e(using)h(a)g(main)75 2560 y(lo)q(op)f(to)g Ft(select\(\))e
-Fu(on)i(v)m(arious)g(\014le)h(descriptors.)20 b(T)l(o)14
-b(accomo)q(date)f(this)h(need,)h(readline)g(can)f(also)g(b)q(e)75
-2615 y(in)o(v)o(ok)o(ed)i(as)f(a)g(`callbac)o(k')h(function)h(from)d
-(an)i(ev)o(en)o(t)f(lo)q(op.)22 b(There)16 b(are)f(functions)h(a)o(v)m
-(ailable)i(to)c(mak)o(e)75 2670 y(this)i(easy)l(.)p eop
-%%Page: 38 40
-38 39 bop 75 -58 a Fu(38)1299 b(GNU)15 b(Readline)h(Library)1762
-149 y(F)l(unction)-1861 b Fi(void)20 b Fh(rl)p 241 149
-18 3 v 21 w(callbac)n(k)p 458 149 V 23 w(handler)p 670
-149 V 21 w(install)25 b Fg(\()p Ft(const)14 b(char)h(*prompt,)283
-204 y(rl_vcpfunc_t)e(*lhandler)p Fg(\))195 259 y Fu(Set)f(up)h(the)g
-(terminal)g(for)f(readline)i(I/O)f(and)f(displa)o(y)i(the)e(initial)j
-(expanded)e(v)m(alue)h(of)e Fk(prompt)p Fu(.)195 314
-y(Sa)o(v)o(e)j(the)h(v)m(alue)h(of)f Fk(lhandler)21 b
-Fu(to)15 b(use)h(as)f(a)h(function)h(to)e(call)i(when)f(a)g(complete)g
-(line)i(of)d(input)195 369 y(has)g(b)q(een)h(en)o(tered.)21
-b(The)15 b(function)h(tak)o(es)e(the)i(text)e(of)h(the)g(line)i(as)e
-(an)g(argumen)o(t.)1762 480 y(F)l(unction)-1861 b Fi(void)20
-b Fh(rl)p 241 480 V 21 w(callbac)n(k)p 458 480 V 23 w(read)p
-591 480 V 20 w(c)n(har)j Fg(\()p Ft(void)p Fg(\))195
-535 y Fu(Whenev)o(er)17 b(an)g(application)h(determines)g(that)e(k)o
-(eyb)q(oard)h(input)h(is)f(a)o(v)m(ailable,)i(it)e(should)h(call)195
-590 y Ft(rl_callback_read_char\(\))p Fu(,)8 b(whic)o(h)k(will)g(read)f
-(the)g(next)g(c)o(haracter)f(from)g(the)h(curren)o(t)g(input)195
-645 y(source.)38 b(If)21 b(that)g(c)o(haracter)f(completes)i(the)f
-(line,)j Ft(rl_callback_read_char)18 b Fu(will)23 b(in)o(v)o(ok)o(e)195
-699 y(the)18 b Fk(lhandler)k Fu(function)d(sa)o(v)o(ed)e(b)o(y)h
-Ft(rl_callback_handler_insta)o(ll)d Fu(to)i(pro)q(cess)h(the)g(line.)
-195 754 y(Before)13 b(calling)i(the)f Fk(lhandler)k Fu(function,)c(the)
-g(terminal)g(settings)f(are)g(reset)g(to)g(the)g(v)m(alues)i(they)195
-809 y(had)g(b)q(efore)g(calling)i Ft(rl_callback_handler_insta)o(ll)p
-Fu(.)g(If)e(the)g Fk(lhandler)20 b Fu(function)15 b(returns,)195
-864 y(the)d(terminal)i(settings)e(are)g(mo)q(di\014ed)i(for)d
-(Readline's)i(use)g(again.)19 b Ft(EOF)12 b Fu(is)h(indicated)h(b)o(y)e
-(calling)195 919 y Fk(lhandler)20 b Fu(with)c(a)f Ft(NULL)f
-Fu(line.)1762 1030 y(F)l(unction)-1861 b Fi(void)20 b
-Fh(rl)p 241 1030 V 21 w(callbac)n(k)p 458 1030 V 23 w(handler)p
-670 1030 V 21 w(remo)n(v)n(e)i Fg(\()p Ft(void)p Fg(\))195
-1085 y Fu(Restore)c(the)g(terminal)i(to)d(its)i(initial)i(state)d(and)g
-(remo)o(v)o(e)g(the)h(line)h(handler.)31 b(This)19 b(ma)o(y)f(b)q(e)195
-1140 y(called)i(from)d(within)j(a)d(callbac)o(k)j(as)d(w)o(ell)i(as)f
-(indep)q(enden)o(tly)m(.)31 b(If)19 b(the)f Fk(lhandler)23
-b Fu(installed)d(b)o(y)195 1195 y Ft(rl_callback_handler_instal)o(l)d
-Fu(do)q(es)i(not)g(exit)h(the)g(program,)e(either)i(this)g(function)g
-(or)195 1249 y(the)c(function)g(referred)g(to)f(b)o(y)h(the)g(v)m(alue)
-h(of)e Ft(rl_deprep_term_function)d Fu(should)17 b(b)q(e)f(called)195
-1304 y(b)q(efore)f(the)h(program)e(exits)h(to)g(reset)g(the)g(terminal)
-h(settings.)75 1413 y Fj(2.4.13)29 b(A)21 b(Readline)g(Example)137
-1508 y Fu(Here)f(is)g(a)f(function)i(whic)o(h)f(c)o(hanges)f(lo)o(w)o
-(ercase)h(c)o(haracters)e(to)h(their)h(upp)q(ercase)h(equiv)m(alen)o
-(ts,)75 1563 y(and)e(upp)q(ercase)i(c)o(haracters)d(to)h(lo)o(w)o
-(ercase.)31 b(If)20 b(this)f(function)h(w)o(as)f(b)q(ound)h(to)f(`)p
-Ft(M-c)p Fu(',)f(then)i(t)o(yping)75 1618 y(`)p Ft(M-c)p
-Fu(')12 b(w)o(ould)h(c)o(hange)h(the)f(case)g(of)g(the)g(c)o(haracter)g
-(under)g(p)q(oin)o(t.)20 b(T)o(yping)14 b(`)p Ft(M-1)g(0)h(M-c)p
-Fu(')d(w)o(ould)i(c)o(hange)75 1673 y(the)h(case)g(of)g(the)h(follo)o
-(wing)f(10)g(c)o(haracters,)f(lea)o(ving)i(the)f(cursor)g(on)g(the)h
-(last)f(c)o(haracter)f(c)o(hanged.)195 1736 y Ft(/*)24
-b(Invert)f(the)g(case)g(of)h(the)f(COUNT)h(following)e(characters.)h
-(*/)195 1788 y(int)195 1840 y(invert_case_line)f(\(count,)h(key\))314
-1892 y(int)h(count,)f(key;)195 1944 y({)243 1995 y(register)f(int)i
-(start,)f(end,)g(i;)243 2099 y(start)g(=)h(rl_point;)243
-2203 y(if)f(\(rl_point)g(>=)h(rl_end\))290 2255 y(return)f(\(0\);)243
-2359 y(if)g(\(count)g(<)h(0\))290 2411 y({)338 2462 y(direction)f(=)h
-(-1;)338 2514 y(count)f(=)h(-count;)290 2566 y(})243
-2618 y(else)290 2670 y(direction)f(=)h(1;)p eop
-%%Page: 39 41
-39 40 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(39)243 201 y Ft(/*)23 b(Find)h(the)f(end)h(of)f(the)h
-(range)f(to)g(modify.)g(*/)243 253 y(end)g(=)h(start)f(+)h(\(count)f(*)
-h(direction\);)243 357 y(/*)f(Force)g(it)h(to)g(be)f(within)g(range.)g
-(*/)243 409 y(if)g(\(end)h(>)f(rl_end\))290 461 y(end)h(=)g(rl_end;)243
-513 y(else)f(if)h(\(end)f(<)h(0\))290 565 y(end)g(=)g(0;)243
-668 y(if)f(\(start)g(==)h(end\))290 720 y(return)f(\(0\);)243
-824 y(if)g(\(start)g(>)h(end\))290 876 y({)338 928 y(int)g(temp)f(=)h
-(start;)338 980 y(start)f(=)h(end;)338 1032 y(end)g(=)f(temp;)290
-1083 y(})243 1187 y(/*)g(Tell)h(readline)e(that)i(we)f(are)h(modifying)
-e(the)i(line,)314 1239 y(so)g(it)f(will)h(save)f(the)h(undo)f
-(information.)f(*/)243 1291 y(rl_modifying)g(\(start,)h(end\);)243
-1395 y(for)g(\(i)h(=)f(start;)h(i)f(!=)h(end;)f(i++\))290
-1447 y({)338 1499 y(if)h(\(_rl_uppercase_p)d(\(rl_line_buffer[i]\)\))
-386 1550 y(rl_line_buffer[i])g(=)j(_rl_to_lower)e
-(\(rl_line_buffer[i]\);)338 1602 y(else)h(if)h(\(_rl_lowercase_p)e
-(\(rl_line_buffer[i]\)\))386 1654 y(rl_line_buffer[i])f(=)j
-(_rl_to_upper)e(\(rl_line_buffer[i]\);)290 1706 y(})243
-1758 y(/*)h(Move)h(point)f(to)g(on)h(top)f(of)h(the)f(last)h(character)
-e(changed.)h(*/)243 1810 y(rl_point)f(=)i(\(direction)f(==)g(1\))h(?)g
-(end)f(-)h(1)g(:)f(start;)243 1862 y(return)g(\(0\);)195
-1914 y(})75 2057 y Fs(2.5)33 b(Readline)23 b(Signal)h(Handling)137
-2159 y Fu(Signals)e(are)f(async)o(hronous)f(ev)o(en)o(ts)h(sen)o(t)f
-(to)h(a)f(pro)q(cess)h(b)o(y)g(the)g(Unix)h(k)o(ernel,)g(sometimes)f
-(on)75 2213 y(b)q(ehalf)g(of)e(another)h(pro)q(cess.)34
-b(They)20 b(are)g(in)o(tended)h(to)e(indicate)j(exceptional)f(ev)o(en)o
-(ts,)f(lik)o(e)h(a)f(user)75 2268 y(pressing)c(the)f(in)o(terrupt)g(k)o
-(ey)g(on)g(his)h(terminal,)f(or)g(a)f(net)o(w)o(ork)g(connection)i(b)q
-(eing)g(brok)o(en.)k(There)15 b(is)75 2323 y(a)e(class)g(of)g(signals)h
-(that)f(can)g(b)q(e)h(sen)o(t)f(to)f(the)i(pro)q(cess)f(curren)o(tly)h
-(reading)f(input)i(from)d(the)h(k)o(eyb)q(oard.)75 2378
-y(Since)i(Readline)f(c)o(hanges)g(the)f(terminal)h(attributes)f(when)h
-(it)g(is)g(called,)h(it)e(needs)h(to)f(p)q(erform)g(sp)q(ecial)75
-2433 y(pro)q(cessing)i(when)f(suc)o(h)g(a)g(signal)g(is)g(receiv)o(ed)h
-(in)g(order)f(to)f(restore)g(the)h(terminal)g(to)f(a)h(sane)g(state,)e
-(or)75 2487 y(pro)o(vide)k(application)h(writers)e(with)g(functions)h
-(to)f(do)g(so)g(man)o(ually)l(.)137 2560 y(Readline)22
-b(con)o(tains)e(an)g(in)o(ternal)h(signal)g(handler)g(that)f(is)h
-(installed)h(for)d(a)h(n)o(um)o(b)q(er)g(of)g(signals)75
-2615 y(\()p Ft(SIGINT)p Fu(,)h Ft(SIGQUIT)p Fu(,)g Ft(SIGTERM)p
-Fu(,)g Ft(SIGALRM)p Fu(,)g Ft(SIGTSTP)p Fu(,)g Ft(SIGTTIN)p
-Fu(,)h(and)f Ft(SIGTTOU)p Fu(\).)36 b(When)21 b(one)g(of)75
-2670 y(these)16 b(signals)h(is)f(receiv)o(ed,)h(the)f(signal)h(handler)
-f(will)i(reset)e(the)g(terminal)g(attributes)g(to)f(those)h(that)p
-eop
-%%Page: 40 42
-40 41 bop 75 -58 a Fu(40)1299 b(GNU)15 b(Readline)h(Library)75
-149 y(w)o(ere)d(in)i(e\013ect)e(b)q(efore)h Ft(readline\(\))e
-Fu(w)o(as)h(called,)i(reset)f(the)f(signal)i(handling)g(to)e(what)g(it)
-h(w)o(as)f(b)q(efore)75 204 y Ft(readline\(\))21 b Fu(w)o(as)h(called,)
-j(and)e(resend)g(the)g(signal)g(to)f(the)h(calling)h(application.)44
-b(If)23 b(and)f(when)75 259 y(the)17 b(calling)i(application's)f
-(signal)g(handler)g(returns,)f(Readline)h(will)h(reinitialize)h(the)d
-(terminal)h(and)75 314 y(con)o(tin)o(ue)d(to)e(accept)i(input.)20
-b(When)15 b(a)e Ft(SIGINT)h Fu(is)g(receiv)o(ed,)h(the)g(Readline)g
-(signal)g(handler)g(p)q(erforms)75 369 y(some)k(additional)i(w)o(ork,)e
-(whic)o(h)h(will)h(cause)f(an)o(y)f(partially-en)o(tered)i(line)g(to)d
-(b)q(e)i(ab)q(orted)g(\(see)f(the)75 423 y(description)e(of)d
-Ft(rl_free_line_state\(\))f Fu(b)q(elo)o(w\).)137 488
-y(There)g(is)f(an)g(additional)i(Readline)g(signal)f(handler,)g(for)f
-Ft(SIGWINCH)p Fu(,)f(whic)o(h)i(the)f(k)o(ernel)h(sends)g(to)e(a)75
-543 y(pro)q(cess)k(whenev)o(er)g(the)f(terminal's)h(size)g(c)o(hanges)f
-(\(for)g(example,)h(if)g(a)f(user)h(resizes)g(an)f Ft(xterm)p
-Fu(\).)19 b(The)75 598 y(Readline)g Ft(SIGWINCH)e Fu(handler)i(up)q
-(dates)f(Readline's)h(in)o(ternal)f(screen)h(size)f(information,)h(and)
-f(then)75 653 y(calls)g(an)o(y)f Ft(SIGWINCH)e Fu(signal)j(handler)g
-(the)f(calling)i(application)f(has)f(installed.)27 b(Readline)18
-b(calls)g(the)75 708 y(application's)h Ft(SIGWINCH)d
-Fu(signal)j(handler)f(without)g(resetting)g(the)f(terminal)i(to)e(its)g
-(original)i(state.)75 762 y(If)d(the)g(application's)h(signal)g
-(handler)g(do)q(es)g(more)e(than)h(up)q(date)h(its)f(idea)h(of)e(the)h
-(terminal)h(size)g(and)75 817 y(return)e(\(for)f(example,)h(a)f
-Ft(longjmp)g Fu(bac)o(k)h(to)f(a)h(main)g(pro)q(cessing)g(lo)q(op\),)g
-(it)g Fl(must)20 b Fu(call)c Ft(rl_cleanup_)75 872 y(after_signal\(\))d
-Fu(\(describ)q(ed)k(b)q(elo)o(w\),)e(to)g(restore)f(the)h(terminal)h
-(state.)137 937 y(Readline)g(pro)o(vides)f(t)o(w)o(o)e(v)m(ariables)i
-(that)f(allo)o(w)g(application)i(writers)e(to)g(con)o(trol)g(whether)h
-(or)e(not)75 992 y(it)k(will)h(catc)o(h)e(certain)h(signals)h(and)f
-(act)f(on)g(them)h(when)g(they)f(are)h(receiv)o(ed.)25
-b(It)16 b(is)i(imp)q(ortan)o(t)e(that)75 1047 y(applications)k(c)o
-(hange)e(the)h(v)m(alues)g(of)f(these)h(v)m(ariables)g(only)g(when)g
-(calling)h Ft(readline\(\))p Fu(,)d(not)h(in)h(a)75 1101
-y(signal)d(handler,)g(so)f(Readline's)h(in)o(ternal)g(signal)g(state)e
-(is)i(not)f(corrupted.)1773 1208 y(V)l(ariable)-1861
-b Fi(int)20 b Fh(rl)p 215 1208 18 3 v 21 w(catc)n(h)p
-366 1208 V 22 w(signals)195 1262 y Fu(If)15 b(this)g(v)m(ariable)g(is)g
-(non-zero,)g(Readline)h(will)g(install)f(signal)h(handlers)f(for)f
-Ft(SIGINT)p Fu(,)f Ft(SIGQUIT)p Fu(,)195 1317 y Ft(SIGTERM)p
-Fu(,)h Ft(SIGALRM)p Fu(,)g Ft(SIGTSTP)p Fu(,)f Ft(SIGTTIN)p
-Fu(,)h(and)i Ft(SIGTTOU)p Fu(.)195 1382 y(The)f(default)h(v)m(alue)h
-(of)d Ft(rl_catch_signals)f Fu(is)j(1.)1773 1488 y(V)l(ariable)-1861
-b Fi(int)20 b Fh(rl)p 215 1488 V 21 w(catc)n(h)p 366
-1488 V 22 w(sigwinc)n(h)195 1543 y Fu(If)15 b(this)h(v)m(ariable)h(is)e
-(non-zero,)g(Readline)i(will)g(install)f(a)f(signal)h(handler)h(for)d
-Ft(SIGWINCH)p Fu(.)195 1608 y(The)h(default)h(v)m(alue)h(of)d
-Ft(rl_catch_sigwinch)f Fu(is)j(1.)137 1694 y(If)g(an)f(application)j
-(do)q(es)d(not)g(wish)i(to)d(ha)o(v)o(e)h(Readline)i(catc)o(h)f(an)o(y)
-f(signals,)h(or)f(to)f(handle)j(signals)75 1749 y(other)i(than)g(those)
-g(Readline)i(catc)o(hes)e(\()p Ft(SIGHUP)p Fu(,)g(for)g(example\),)h
-(Readline)h(pro)o(vides)e(con)o(v)o(enience)75 1804 y(functions)d(to)f
-(do)g(the)g(necessary)g(terminal)h(and)g(in)o(ternal)g(state)e(clean)o
-(up)i(up)q(on)g(receipt)g(of)f(a)g(signal.)1762 1910
-y(F)l(unction)-1861 b Fi(void)20 b Fh(rl)p 241 1910 V
-21 w(clean)n(up)p 450 1910 V 22 w(after)p 590 1910 V
-20 w(signal)j Fg(\()p Ft(void)p Fg(\))195 1965 y Fu(This)18
-b(function)f(will)i(reset)e(the)g(state)f(of)g(the)h(terminal)h(to)e
-(what)h(it)g(w)o(as)f(b)q(efore)h Ft(readline\(\))195
-2019 y Fu(w)o(as)d(called,)i(and)f(remo)o(v)o(e)f(the)g(Readline)i
-(signal)g(handlers)g(for)e(all)h(signals,)g(dep)q(ending)i(on)e(the)195
-2074 y(v)m(alues)h(of)f Ft(rl_catch_signals)e Fu(and)i
-Ft(rl_catch_sigwinch)p Fu(.)1762 2180 y(F)l(unction)-1861
-b Fi(void)20 b Fh(rl)p 241 2180 V 21 w(free)p 356 2180
-V 20 w(line)p 464 2180 V 23 w(state)j Fg(\()p Ft(void)p
-Fg(\))195 2235 y Fu(This)d(will)h(free)f(an)o(y)f(partial)h(state)f
-(asso)q(ciated)h(with)g(the)g(curren)o(t)f(input)i(line)g(\(undo)f
-(infor-)195 2290 y(mation,)i(an)o(y)f(partial)h(history)f(en)o(try)l(,)
-h(an)o(y)f(partially-en)o(tered)i(k)o(eyb)q(oard)e(macro,)h(and)f(an)o
-(y)195 2345 y(partially-en)o(tered)k(n)o(umeric)g(argumen)o(t\).)45
-b(This)24 b(should)h(b)q(e)g(called)g(b)q(efore)g Ft(rl_cleanup_)195
-2399 y(after_signal\(\))p Fu(.)36 b(The)22 b(Readline)h(signal)f
-(handler)g(for)f Ft(SIGINT)f Fu(calls)j(this)e(to)g(ab)q(ort)g(the)195
-2454 y(curren)o(t)15 b(input)h(line.)1762 2560 y(F)l(unction)-1861
-b Fi(void)20 b Fh(rl)p 241 2560 V 21 w(reset)p 383 2560
-V 20 w(after)p 521 2560 V 21 w(signal)j Fg(\()p Ft(void)p
-Fg(\))195 2615 y Fu(This)15 b(will)h(reinitialize)h(the)d(terminal)h
-(and)g(reinstall)h(an)o(y)d(Readline)j(signal)f(handlers,)g(dep)q(end-)
-195 2670 y(ing)h(on)f(the)g(v)m(alues)i(of)d Ft(rl_catch_signals)f
-Fu(and)j Ft(rl_catch_sigwinch)p Fu(.)p eop
-%%Page: 41 43
-41 42 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(41)137 149 y(If)20 b(an)g(application)h(do)q(es)f(not)g
-(wish)g(Readline)h(to)e(catc)o(h)g Ft(SIGWINCH)p Fu(,)h(it)g(ma)o(y)f
-(call)h Ft(rl_resize_)75 204 y(terminal\(\))12 b Fu(or)h
-Ft(rl_set_screen_size\(\))e Fu(to)i(force)g(Readline)i(to)e(up)q(date)h
-(its)g(idea)g(of)g(the)f(terminal)75 259 y(size)j(when)g(a)f
-Ft(SIGWINCH)f Fu(is)h(receiv)o(ed.)1762 360 y(F)l(unction)-1861
-b Fi(void)20 b Fh(rl)p 241 360 18 3 v 21 w(resize)p 401
-360 V 22 w(terminal)j Fg(\()p Ft(void)p Fg(\))195 415
-y Fu(Up)q(date)16 b(Readline's)g(in)o(ternal)g(screen)f(size)i(b)o(y)e
-(reading)g(v)m(alues)i(from)d(the)i(k)o(ernel.)1762 516
-y(F)l(unction)-1861 b Fi(void)20 b Fh(rl)p 241 516 V
-21 w(set)p 333 516 V 21 w(screen)p 510 516 V 20 w(size)k
-Fg(\()p Ft(int)15 b(rows,)f(int)h(cols)p Fg(\))195 571
-y Fu(Set)g(Readline's)h(idea)g(of)f(the)g(terminal)h(size)g(to)f
-Fk(ro)o(ws)h Fu(ro)o(ws)e(and)i Fk(cols)h Fu(columns.)137
-653 y(If)g(an)g(application)h(do)q(es)f(not)f(w)o(an)o(t)g(to)g
-(install)i(a)f Ft(SIGWINCH)e Fu(handler,)j(but)f(is)g(still)h(in)o
-(terested)f(in)75 708 y(the)e(screen)h(dimensions,)g(Readline's)h(idea)
-e(of)g(the)h(screen)f(size)h(ma)o(y)f(b)q(e)h(queried.)1762
-809 y(F)l(unction)-1861 b Fi(void)20 b Fh(rl)p 241 809
-V 21 w(get)p 339 809 V 21 w(screen)p 516 809 V 20 w(size)k
-Fg(\()p Ft(int)15 b(*rows,)f(int)h(*cols)p Fg(\))195
-864 y Fu(Return)g(Readline's)h(idea)f(of)g(the)g(terminal's)g(size)h
-(in)g(the)f(v)m(ariables)i(p)q(oin)o(ted)f(to)e(b)o(y)h(the)g(argu-)195
-918 y(men)o(ts.)137 1001 y(The)h(follo)o(wing)g(functions)g(install)g
-(and)g(remo)o(v)o(e)e(Readline's)i(signal)g(handlers.)1762
-1102 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 1102
-V 21 w(set)p 307 1102 V 20 w(signals)j Fg(\()p Ft(void)p
-Fg(\))195 1157 y Fu(Install)c(Readline's)f(signal)h(handler)f(for)f
-Ft(SIGINT)p Fu(,)g Ft(SIGQUIT)p Fu(,)g Ft(SIGTERM)p Fu(,)g
-Ft(SIGALRM)p Fu(,)f Ft(SIGTSTP)p Fu(,)195 1211 y Ft(SIGTTIN)p
-Fu(,)11 b Ft(SIGTTOU)p Fu(,)g(and)h Ft(SIGWINCH)p Fu(,)e(dep)q(ending)k
-(on)e(the)f(v)m(alues)i(of)e Ft(rl_catch_signals)f Fu(and)195
-1266 y Ft(rl_catch_sigwinch)p Fu(.)1762 1367 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 1367 V 21 w(clear)p 354 1367
-V 21 w(signals)j Fg(\()p Ft(void)p Fg(\))195 1422 y Fu(Remo)o(v)o(e)14
-b(all)i(of)f(the)g(Readline)i(signal)f(handlers)g(installed)h(b)o(y)e
-Ft(rl_set_signals\(\))p Fu(.)75 1541 y Fs(2.6)33 b(Custom)21
-b(Completers)137 1634 y Fu(T)o(ypically)l(,)e(a)d(program)f(that)h
-(reads)h(commands)f(from)g(the)h(user)f(has)h(a)f(w)o(a)o(y)g(of)g
-(disam)o(biguating)75 1689 y(commands)i(and)f(data.)27
-b(If)18 b(y)o(our)f(program)g(is)h(one)g(of)f(these,)i(then)f(it)g(can)
-f(pro)o(vide)i(completion)g(for)75 1744 y(commands,)14
-b(data,)g(or)g(b)q(oth.)20 b(The)15 b(follo)o(wing)g(sections)g
-(describ)q(e)h(ho)o(w)e(y)o(our)g(program)g(and)h(Readline)75
-1798 y(co)q(op)q(erate)g(to)g(pro)o(vide)g(this)h(service.)75
-1901 y Fj(2.6.1)30 b(Ho)n(w)21 b(Completing)f(W)-5 b(orks)137
-1994 y Fu(In)18 b(order)f(to)f(complete)i(some)f(text,)g(the)g(full)i
-(list)e(of)g(p)q(ossible)i(completions)f(m)o(ust)f(b)q(e)h(a)o(v)m
-(ailable.)75 2049 y(That)e(is,)i(it)f(is)h(not)f(p)q(ossible)h(to)f
-(accurately)g(expand)h(a)e(partial)i(w)o(ord)e(without)h(kno)o(wing)g
-(all)h(of)f(the)75 2104 y(p)q(ossible)i(w)o(ords)e(whic)o(h)h(mak)o(e)f
-(sense)h(in)h(that)d(con)o(text.)26 b(The)18 b(Readline)h(library)f
-(pro)o(vides)g(the)g(user)75 2158 y(in)o(terface)f(to)f(completion,)i
-(and)e(t)o(w)o(o)g(of)g(the)h(most)f(common)g(completion)i(functions:)
-23 b(\014lename)18 b(and)75 2213 y(username.)h(F)l(or)10
-b(completing)i(other)e(t)o(yp)q(es)h(of)f(text,)h(y)o(ou)g(m)o(ust)f
-(write)h(y)o(our)f(o)o(wn)h(completion)g(function.)75
-2268 y(This)16 b(section)g(describ)q(es)g(exactly)g(what)f(suc)o(h)g
-(functions)h(m)o(ust)f(do,)f(and)i(pro)o(vides)f(an)h(example.)137
-2332 y(There)g(are)f(three)g(ma)s(jor)f(functions)i(used)f(to)g(p)q
-(erform)g(completion:)100 2396 y(1.)29 b(The)22 b(user-in)o(terface)g
-(function)h Ft(rl_complete\(\))p Fu(.)37 b(This)22 b(function)h(is)f
-(called)h(with)f(the)g(same)165 2451 y(argumen)o(ts)17
-b(as)h(other)g(bindable)i(Readline)f(functions:)27 b
-Fk(coun)o(t)19 b Fu(and)f Fk(in)o(v)o(oking)p 1556 2451
-14 2 v 17 w(k)o(ey)p Fu(.)28 b(It)19 b(isolates)165 2506
-y(the)g(w)o(ord)f(to)g(b)q(e)i(completed)f(and)g(calls)h
-Ft(rl_completion_matches\(\))c Fu(to)i(generate)g(a)h(list)g(of)165
-2560 y(p)q(ossible)e(completions.)22 b(It)16 b(then)g(either)g(lists)g
-(the)g(p)q(ossible)h(completions,)g(inserts)f(the)f(p)q(ossible)165
-2615 y(completions,)25 b(or)d(actually)i(p)q(erforms)e(the)g
-(completion,)k(dep)q(ending)e(on)f(whic)o(h)g(b)q(eha)o(vior)g(is)165
-2670 y(desired.)p eop
-%%Page: 42 44
-42 43 bop 75 -58 a Fu(42)1299 b(GNU)15 b(Readline)h(Library)100
-149 y(2.)29 b(The)17 b(in)o(ternal)h(function)f Ft
-(rl_completion_matches\(\))d Fu(uses)j(an)g(application-supplie)q(d)j
-Fk(gener-)165 204 y(ator)h Fu(function)e(to)f(generate)g(the)h(list)g
-(of)f(p)q(ossible)i(matc)o(hes,)f(and)f(then)h(returns)g(the)f(arra)o
-(y)f(of)165 259 y(these)j(matc)o(hes.)32 b(The)20 b(caller)g(should)h
-(place)f(the)g(address)f(of)h(its)f(generator)g(function)h(in)g
-Ft(rl_)165 314 y(completion_entry_function)p Fu(.)100
-383 y(3.)29 b(The)12 b(generator)e(function)i(is)g(called)h(rep)q
-(eatedly)g(from)e Ft(rl_completion_matches\(\))p Fu(,)d(returning)165
-438 y(a)16 b(string)g(eac)o(h)h(time.)24 b(The)17 b(argumen)o(ts)e(to)h
-(the)g(generator)g(function)h(are)f Fk(text)h Fu(and)g
-Fk(state)p Fu(.)22 b Fk(text)165 493 y Fu(is)17 b(the)f(partial)g(w)o
-(ord)f(to)h(b)q(e)h(completed.)23 b Fk(state)18 b Fu(is)e(zero)g(the)g
-(\014rst)g(time)g(the)g(function)h(is)g(called,)165 547
-y(allo)o(wing)23 b(the)f(generator)f(to)g(p)q(erform)h(an)o(y)g
-(necessary)g(initialization,)k(and)c(a)g(p)q(ositiv)o(e)h(non-)165
-602 y(zero)14 b(in)o(teger)h(for)f(eac)o(h)h(subsequen)o(t)g(call.)21
-b(The)15 b(generator)e(function)j(returns)e Ft(\(char)h(*\)NULL)f
-Fu(to)165 657 y(inform)19 b Ft(rl_completion_matches\(\))d
-Fu(that)i(there)h(are)g(no)g(more)g(p)q(ossibilities)j(left.)32
-b(Usually)165 712 y(the)19 b(generator)g(function)h(computes)g(the)f
-(list)h(of)f(p)q(ossible)i(completions)g(when)e Fk(state)j
-Fu(is)d(zero,)165 767 y(and)13 b(returns)g(them)f(one)h(at)f(a)h(time)g
-(on)g(subsequen)o(t)g(calls.)20 b(Eac)o(h)13 b(string)f(the)h
-(generator)f(function)165 821 y(returns)k(as)f(a)h(matc)o(h)f(m)o(ust)h
-(b)q(e)g(allo)q(cated)h(with)g Ft(malloc\(\))p Fu(;)d(Readline)k(frees)
-e(the)g(strings)f(when)165 876 y(it)g(has)h(\014nished)g(with)g(them.)
-1762 1005 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215
-1005 18 3 v 21 w(complete)j Fg(\()p Ft(int)14 b(ignore,)g(int)h
-(invoking_key)p Fg(\))195 1059 y Fu(Complete)h(the)f(w)o(ord)g(at)f(or)
-h(b)q(efore)h(p)q(oin)o(t.)21 b(Y)l(ou)15 b(ha)o(v)o(e)g(supplied)j
-(the)d(function)i(that)d(do)q(es)i(the)195 1114 y(initial)23
-b(simple)f(matc)o(hing)e(selection)i(algorithm)f(\(see)f
-Ft(rl_completion_matches\(\))p Fu(\).)33 b(The)195 1169
-y(default)16 b(is)f(to)g(do)g(\014lename)h(completion.)1773
-1298 y(V)l(ariable)-1861 b Fi(rl_compentry_func_t)22
-b(*)d Fh(rl)p 678 1298 V 21 w(completion)p 973 1298 V
-21 w(en)n(try)p 1126 1298 V 22 w(function)195 1352 y
-Fu(This)i(is)f(a)g(p)q(oin)o(ter)g(to)f(the)h(generator)g(function)g
-(for)g Ft(rl_completion_matches\(\))p Fu(.)31 b(If)20
-b(the)195 1407 y(v)m(alue)13 b(of)f Ft(rl_completion_entry_fun)o(ction)
-d Fu(is)j Ft(NULL)f Fu(then)h(the)g(default)h(\014lename)g(generator)
-195 1462 y(function,)j Ft(rl_filename_completion_f)o(unction)o(\(\))p
-Fu(,)c(is)k(used.)75 1582 y Fj(2.6.2)30 b(Completion)20
-b(F)-5 b(unctions)137 1682 y Fu(Here)16 b(is)f(the)h(complete)g(list)g
-(of)e(callable)k(completion)e(functions)g(presen)o(t)f(in)h(Readline.)
-1762 1810 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215
-1810 V 21 w(complete)p 460 1810 V 21 w(in)n(ternal)k
-Fg(\()p Ft(int)15 b(what_to_do)p Fg(\))195 1865 y Fu(Complete)k(the)g
-(w)o(ord)f(at)g(or)g(b)q(efore)h(p)q(oin)o(t.)31 b Fk(what)p
-1108 1865 14 2 v 16 w(to)p 1165 1865 V 16 w(do)21 b Fu(sa)o(ys)d(what)g
-(to)g(do)h(with)g(the)g(com-)195 1920 y(pletion.)j(A)16
-b(v)m(alue)h(of)e(`)p Ft(?)p Fu(')g(means)g(list)i(the)e(p)q(ossible)j
-(completions.)k(`)p Ft(TAB)p Fu(')14 b(means)i(do)f(standard)195
-1975 y(completion.)22 b(`)p Ft(*)p Fu(')15 b(means)g(insert)h(all)h(of)
-e(the)h(p)q(ossible)h(completions.)22 b(`)p Ft(!)p Fu(')15
-b(means)g(to)g(displa)o(y)i(all)195 2029 y(of)g(the)g(p)q(ossible)i
-(completions,)f(if)g(there)f(is)h(more)f(than)g(one,)g(as)g(w)o(ell)h
-(as)f(p)q(erforming)h(partial)195 2084 y(completion.)1762
-2213 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 2213
-18 3 v 21 w(complete)j Fg(\()p Ft(int)14 b(ignore,)g(int)h
-(invoking_key)p Fg(\))195 2268 y Fu(Complete)21 b(the)g(w)o(ord)e(at)h
-(or)g(b)q(efore)h(p)q(oin)o(t.)37 b(Y)l(ou)21 b(ha)o(v)o(e)f(supplied)j
-(the)d(function)i(that)e(do)q(es)195 2322 y(the)d(initial)h(simple)g
-(matc)o(hing)f(selection)h(algorithm)e(\(see)g Ft
-(rl_completion_matches\(\))e Fu(and)195 2377 y Ft
-(rl_completion_entry_functi)o(on)p Fu(\).)25 b(The)18
-b(default)h(is)f(to)f(do)h(\014lename)h(completion.)29
-b(This)195 2432 y(calls)16 b Ft(rl_complete_internal\(\))c
-Fu(with)k(an)f(argumen)o(t)f(dep)q(ending)k(on)d Fk(in)o(v)o(oking)p
-1657 2432 14 2 v 17 w(k)o(ey)p Fu(.)1762 2560 y(F)l(unction)-1861
-b Fi(int)20 b Fh(rl)p 215 2560 18 3 v 21 w(p)r(ossible)p
-433 2560 V 20 w(completions)j Fg(\()p Ft(int)15 b(count,)f(int)h
-(invoking_key)p Fg(\))195 2615 y Fu(List)21 b(the)f(p)q(ossible)i
-(completions.)36 b(See)21 b(description)h(of)e Ft(rl_complete)13
-b(\(\))p Fu(.)35 b(This)21 b(calls)g Ft(rl_)195 2670
-y(complete_internal\(\))13 b Fu(with)i(an)g(argumen)o(t)g(of)f(`)p
-Ft(?)p Fu('.)p eop
-%%Page: 43 45
-43 44 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(43)1762 149 y(F)l(unction)-1861 b Fi(int)20
-b Fh(rl)p 215 149 18 3 v 21 w(insert)p 378 149 V 21 w(completions)j
-Fg(\()p Ft(int)14 b(count,)g(int)h(invoking_key)p Fg(\))195
-204 y Fu(Insert)i(the)g(list)h(of)e(p)q(ossible)j(completions)e(in)o
-(to)g(the)g(line,)i(deleting)f(the)f(partially-completed)195
-259 y(w)o(ord.)k(See)c(description)g(of)e Ft(rl_complete\(\))p
-Fu(.)20 b(This)d(calls)g Ft(rl_complete_internal\(\))c
-Fu(with)195 314 y(an)i(argumen)o(t)g(of)f(`)p Ft(*)p
-Fu('.)1762 434 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p
-215 434 V 21 w(completion)p 510 434 V 21 w(mo)r(de)h
-Fg(\()p Ft(rl_command_func_t)12 b(*cfunc)p Fg(\))195
-489 y Fu(Returns)25 b(the)g(apppriate)h(v)m(alue)g(to)f(pass)g(to)f
-Ft(rl_complete_internal\(\))f Fu(dep)q(ending)k(on)195
-543 y(whether)22 b Fk(cfunc)j Fu(w)o(as)d(called)h(t)o(wice)f(in)h
-(succession)g(and)f(the)g(v)m(alue)h(of)f(the)g Ft(show-all-if-)195
-598 y(ambiguous)14 b Fu(v)m(ariable.)21 b(Application-sp)q(ec)q(i\014c)
-e(completion)d(functions)g(ma)o(y)f(use)g(this)h(function)195
-653 y(to)f(presen)o(t)g(the)g(same)g(in)o(terface)g(as)g
-Ft(rl_complete\(\))p Fu(.)1762 773 y(F)l(unction)-1861
-b Fi(char)20 b(**)f Fh(rl)p 312 773 V 21 w(completion)p
-607 773 V 21 w(matc)n(hes)j Fg(\()p Ft(const)15 b(char)f(*text,)283
-828 y(rl_compentry_func_t)e(*entry_func)p Fg(\))195 883
-y Fu(Returns)18 b(an)h(arra)o(y)f(of)g(strings)h(whic)o(h)h(is)g(a)e
-(list)i(of)e(completions)i(for)f Fk(text)p Fu(.)30 b(If)19
-b(there)g(are)g(no)195 937 y(completions,)f(returns)g
-Ft(NULL)p Fu(.)25 b(The)17 b(\014rst)g(en)o(try)g(in)h(the)f(returned)h
-(arra)o(y)e(is)i(the)f(substitution)195 992 y(for)c Fk(text)p
-Fu(.)18 b(The)c(remaining)g(en)o(tries)f(are)g(the)h(p)q(ossible)g
-(completions.)21 b(The)13 b(arra)o(y)f(is)i(terminated)195
-1047 y(with)i(a)e Ft(NULL)h Fu(p)q(oin)o(ter.)195 1115
-y Fk(en)o(try)p 302 1115 14 2 v 16 w(func)h Fu(is)e(a)f(function)h(of)e
-(t)o(w)o(o)g(args,)g(and)i(returns)f(a)f Ft(char)j(*)p
-Fu(.)k(The)13 b(\014rst)g(argumen)o(t)f(is)i Fk(text)p
-Fu(.)195 1170 y(The)f(second)g(is)f(a)h(state)e(argumen)o(t;)h(it)h(is)
-g(zero)f(on)g(the)h(\014rst)f(call,)i(and)e(non-zero)h(on)f(subsequen)o
-(t)195 1225 y(calls.)20 b Fk(en)o(try)p 420 1225 V 16
-w(func)15 b Fu(returns)e(a)e Ft(NULL)h Fu(p)q(oin)o(ter)h(to)e(the)i
-(caller)g(when)g(there)f(are)g(no)g(more)g(matc)o(hes.)1762
-1345 y(F)l(unction)-1861 b Fi(char)20 b(*)f Fh(rl)p 286
-1345 18 3 v 21 w(\014lename)p 515 1345 V 20 w(completion)p
-809 1345 V 21 w(function)k Fg(\()p Ft(const)15 b(char)f(*text,)h(int)
-283 1400 y(state)p Fg(\))195 1454 y Fu(A)e(generator)f(function)h(for)g
-(\014lename)h(completion)f(in)h(the)f(general)g(case.)19
-b Fk(text)14 b Fu(is)f(a)g(partial)g(\014le-)195 1509
-y(name.)20 b(The)15 b(Bash)f(source)h(is)g(a)g(useful)g(reference)h
-(for)e(writing)h(custom)f(completion)i(functions)195
-1564 y(\(the)f(Bash)g(completion)i(functions)e(call)i(this)e(and)h
-(other)f(Readline)h(functions\).)1762 1684 y(F)l(unction)-1861
-b Fi(char)20 b(*)f Fh(rl)p 286 1684 V 21 w(username)p
-547 1684 V 19 w(completion)p 840 1684 V 21 w(function)k
-Fg(\()p Ft(const)14 b(char)g(*text,)283 1739 y(int)g(state)p
-Fg(\))195 1794 y Fu(A)g(completion)i(generator)d(for)h(usernames.)19
-b Fk(text)c Fu(con)o(tains)f(a)g(partial)h(username)f(preceded)i(b)o(y)
-195 1848 y(a)f(random)g(c)o(haracter)f(\(usually)j(`)p
-Ft(~)p Fu('\).)i(As)c(with)g(all)i(completion)f(generators,)e
-Fk(state)j Fu(is)f(zero)f(on)195 1903 y(the)g(\014rst)g(call)h(and)g
-(non-zero)f(for)g(subsequen)o(t)h(calls.)75 2017 y Fj(2.6.3)30
-b(Completion)20 b(V)-5 b(ariables)1773 2166 y Fu(V)l(ariable)-1861
-b Fi(rl_compentry_func_t)22 b(*)d Fh(rl)p 678 2166 V
-21 w(completion)p 973 2166 V 21 w(en)n(try)p 1126 2166
-V 22 w(function)195 2221 y Fu(A)e(p)q(oin)o(ter)g(to)f(the)h(generator)
-f(function)h(for)f Ft(rl_completion_matches\(\))p Fu(.)22
-b Ft(NULL)16 b Fu(means)h(to)195 2276 y(use)f Ft
-(rl_filename_completion_)o(functio)o(n\(\))p Fu(,)c(the)j(default)h
-(\014lename)g(completer.)1773 2396 y(V)l(ariable)-1861
-b Fi(rl_completion_func_t)22 b(*)d Fh(rl)p 704 2396 V
-22 w(attempted)p 985 2396 V 20 w(completion)p 1279 2396
-V 21 w(function)195 2451 y Fu(A)e(p)q(oin)o(ter)h(to)f(an)g(alternativ)
-o(e)h(function)g(to)f(create)g(matc)o(hes.)26 b(The)18
-b(function)g(is)g(called)h(with)195 2506 y Fk(text)p
-Fu(,)11 b Fk(start)p Fu(,)g(and)h Fk(end)p Fu(.)19 b
-Fk(start)11 b Fu(and)h Fk(end)i Fu(are)d(indices)i(in)g
-Ft(rl_line_buffer)c Fu(de\014ning)k(the)f(b)q(ound-)195
-2560 y(aries)h(of)g Fk(text)p Fu(,)f(whic)o(h)i(is)g(a)e(c)o(haracter)h
-(string.)19 b(If)13 b(this)g(function)h(exists)g(and)f(returns)g
-Ft(NULL)p Fu(,)f(or)g(if)195 2615 y(this)f(v)m(ariable)i(is)e(set)g(to)
-f Ft(NULL)p Fu(,)h(then)g Ft(rl_complete\(\))e Fu(will)k(call)f(the)f
-(v)m(alue)h(of)f Ft(rl_completion_)195 2670 y(entry_function)h
-Fu(to)i(generate)g(matc)o(hes,)f(otherwise)i(the)f(arra)o(y)f(of)h
-(strings)g(returned)g(will)i(b)q(e)p eop
-%%Page: 44 46
-44 45 bop 75 -58 a Fu(44)1299 b(GNU)15 b(Readline)h(Library)195
-149 y(used.)j(If)12 b(this)f(function)h(sets)f(the)g
-Ft(rl_attempted_completion_over)d Fu(v)m(ariable)k(to)f(a)g(non-zero)
-195 204 y(v)m(alue,)18 b(Readline)h(will)f(not)f(p)q(erform)f(its)i
-(default)f(completion)h(ev)o(en)f(if)h(this)f(function)h(returns)195
-259 y(no)d(matc)o(hes.)1773 380 y(V)l(ariable)-1861 b
-Fi(rl_quote_func_t)21 b(*)f Fh(rl)p 574 380 18 3 v 21
-w(\014lename)p 803 380 V 20 w(quoting)p 1012 380 V 21
-w(function)195 434 y Fu(A)c(p)q(oin)o(ter)h(to)f(a)g(function)h(that)e
-(will)j(quote)e(a)g(\014lename)i(in)f(an)f(application-sp)q(eci\014)q
-(c)j(fashion.)195 489 y(This)h(is)g(called)i(if)e(\014lename)g
-(completion)h(is)f(b)q(eing)h(attempted)e(and)h(one)g(of)f(the)h(c)o
-(haracters)195 544 y(in)d Ft(rl_filename_quote_characters)c
-Fu(app)q(ears)k(in)g(a)g(completed)g(\014lename.)25 b(The)17
-b(function)195 599 y(is)i(called)i(with)e Fk(text)p Fu(,)g
-Fk(matc)o(h)p 722 599 14 2 v 16 w(t)o(yp)q(e)p Fu(,)g(and)g
-Fk(quote)p 1059 599 V 17 w(p)q(oin)o(ter)p Fu(.)31 b(The)19
-b Fk(text)h Fu(is)f(the)g(\014lename)h(to)e(b)q(e)195
-654 y(quoted.)39 b(The)21 b Fk(matc)o(h)p 607 654 V 16
-w(t)o(yp)q(e)j Fu(is)e(either)g Ft(SINGLE_MATCH)p Fu(,)f(if)h(there)f
-(is)h(only)g(one)g(completion)195 708 y(matc)o(h,)15
-b(or)g Ft(MULT_MATCH)p Fu(.)20 b(Some)c(functions)g(use)g(this)g(to)f
-(decide)j(whether)e(or)f(not)g(to)g(insert)h(a)195 763
-y(closing)c(quote)e(c)o(haracter.)18 b(The)11 b Fk(quote)p
-877 763 V 16 w(p)q(oin)o(ter)k Fu(is)c(a)f(p)q(oin)o(ter)i(to)e(an)o(y)
-g(op)q(ening)i(quote)f(c)o(haracter)195 818 y(the)k(user)h(t)o(yp)q
-(ed.)k(Some)15 b(functions)h(c)o(ho)q(ose)f(to)g(reset)g(this)g(c)o
-(haracter.)1773 938 y(V)l(ariable)-1861 b Fi(rl_dequote_func_t)22
-b(*)d Fh(rl)p 626 938 18 3 v 21 w(\014lename)p 855 938
-V 20 w(dequoting)p 1122 938 V 21 w(function)195 993 y
-Fu(A)c(p)q(oin)o(ter)g(to)f(a)h(function)g(that)g(will)h(remo)o(v)o(e)e
-(application-sp)q(eci\014)q(c)k(quoting)d(c)o(haracters)f(from)195
-1048 y(a)i(\014lename)h(b)q(efore)g(completion)g(is)g(attempted,)f(so)f
-(those)h(c)o(haracters)g(do)g(not)g(in)o(terfere)h(with)195
-1103 y(matc)o(hing)i(the)g(text)g(against)f(names)h(in)h(the)f
-(\014lesystem.)33 b(It)19 b(is)g(called)i(with)e Fk(text)p
-Fu(,)g(the)g(text)195 1158 y(of)i(the)g(w)o(ord)g(to)g(b)q(e)h
-(dequoted,)h(and)e Fk(quote)p 1009 1158 14 2 v 17 w(c)o(har)p
-Fu(,)h(whic)o(h)g(is)g(the)f(quoting)h(c)o(haracter)f(that)195
-1212 y(delimits)d(the)e(\014lename)i(\(usually)f(`)p
-Ft(')p Fu(')f(or)f(`)p Ft(")p Fu('\).)22 b(If)17 b Fk(quote)p
-1187 1212 V 16 w(c)o(har)i Fu(is)e(zero,)f(the)g(\014lename)i(w)o(as)d
-(not)195 1267 y(in)h(an)f(em)o(b)q(edded)i(string.)1773
-1388 y(V)l(ariable)-1861 b Fi(rl_linebuf_func_t)22 b(*)d
-Fh(rl)p 626 1388 18 3 v 21 w(c)n(har)p 754 1388 V 21
-w(is)p 813 1388 V 21 w(quoted)p 1005 1388 V 21 w(p)195
-1443 y Fu(A)f(p)q(oin)o(ter)h(to)f(a)g(function)h(to)f(call)i(that)d
-(determines)j(whether)e(or)g(not)g(a)g(sp)q(eci\014c)j(c)o(haracter)195
-1497 y(in)d(the)f(line)i(bu\013er)e(is)h(quoted,)g(according)f(to)g
-(whatev)o(er)f(quoting)i(mec)o(hanism)g(the)f(program)195
-1552 y(calling)d(Readline)g(uses.)19 b(The)13 b(function)g(is)g(called)
-h(with)f(t)o(w)o(o)e(argumen)o(ts:)17 b Fk(text)p Fu(,)12
-b(the)h(text)f(of)g(the)195 1607 y(line,)17 b(and)e Fk(index)p
-Fu(,)i(the)e(index)i(of)e(the)g(c)o(haracter)g(in)h(the)g(line.)22
-b(It)15 b(is)h(used)g(to)f(decide)i(whether)e(a)195 1662
-y(c)o(haracter)f(found)i(in)g Ft(rl_completer_word_break_)o(charact)o
-(ers)c Fu(should)k(b)q(e)g(used)g(to)e(break)195 1717
-y(w)o(ords)g(for)h(the)g(completer.)1773 1837 y(V)l(ariable)-1861
-b Fi(rl_compignore_func_t)22 b(*)d Fh(rl)p 704 1837 V
-22 w(ignore)p 881 1837 V 20 w(some)p 1028 1837 V 19 w(completions)p
-1344 1837 V 21 w(function)195 1892 y Fu(This)g(function,)i(if)e
-(de\014ned,)i(is)e(called)h(b)o(y)f(the)g(completer)g(when)h(real)f
-(\014lename)h(completion)195 1947 y(is)e(done,)f(after)f(all)i(the)f
-(matc)o(hing)g(names)g(ha)o(v)o(e)g(b)q(een)h(generated.)25
-b(It)17 b(is)h(passed)f(a)g Ft(NULL)f Fu(ter-)195 2001
-y(minated)g(arra)o(y)e(of)h(matc)o(hes.)20 b(The)c(\014rst)f(elemen)o
-(t)h(\()p Ft(matches[0])p Fu(\))d(is)j(the)g(maximal)g(substring)195
-2056 y(common)e(to)g(all)h(matc)o(hes.)k(This)c(function)g(can)g
-(re-arrange)f(the)g(list)h(of)f(matc)o(hes)g(as)g(required,)195
-2111 y(but)h(eac)o(h)h(elemen)o(t)g(deleted)g(from)f(the)g(arra)o(y)f
-(m)o(ust)g(b)q(e)i(freed.)1773 2232 y(V)l(ariable)-1861
-b Fi(rl_icppfunc_t)21 b(*)e Fh(rl)p 521 2232 V 21 w(directory)p
-769 2232 V 22 w(completion)p 1065 2232 V 21 w(ho)r(ok)195
-2286 y Fu(This)k(function,)i(if)e(de\014ned,)j(is)d(allo)o(w)o(ed)g(to)
-f(mo)q(dify)h(the)g(directory)g(p)q(ortion)g(of)f(\014lenames)195
-2341 y(Readline)e(completes.)29 b(It)19 b(is)f(called)i(with)f(the)f
-(address)h(of)e(a)h(string)h(\(the)f(curren)o(t)g(directory)195
-2396 y(name\))g(as)g(an)h(argumen)o(t,)f(and)h(ma)o(y)f(mo)q(dify)h
-(that)f(string.)30 b(If)19 b(the)f(string)h(is)g(replaced)h(with)195
-2451 y(a)g(new)g(string,)h(the)f(old)g(v)m(alue)h(should)g(b)q(e)g
-(freed.)34 b(An)o(y)20 b(mo)q(di\014ed)i(directory)e(name)g(should)195
-2506 y(ha)o(v)o(e)14 b(a)g(trailing)i(slash.)k(The)15
-b(mo)q(di\014ed)h(v)m(alue)g(will)g(b)q(e)f(displa)o(y)o(ed)h(as)e
-(part)g(of)h(the)f(completion,)195 2560 y(replacing)h(the)g(directory)f
-(p)q(ortion)g(of)g(the)g(pathname)g(the)h(user)f(t)o(yp)q(ed.)20
-b(It)14 b(returns)g(an)g(in)o(teger)195 2615 y(that)i(should)h(b)q(e)g
-(non-zero)g(if)g(the)g(function)g(mo)q(di\014es)h(its)e(directory)h
-(argumen)o(t.)23 b(It)17 b(could)g(b)q(e)195 2670 y(used)f(to)e(expand)
-i(sym)o(b)q(olic)h(links)f(or)f(shell)i(v)m(ariables)f(in)g(pathnames.)
-p eop
-%%Page: 45 47
-45 46 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(45)1773 149 y(V)l(ariable)-1861 b Fi
-(rl_compdisp_func_t)22 b(*)d Fh(rl)p 652 149 18 3 v 21
-w(completion)p 947 149 V 21 w(displa)n(y)p 1141 149 V
-22 w(matc)n(hes)p 1366 149 V 21 w(ho)r(ok)195 204 y Fu(If)11
-b(non-zero,)h(then)f(this)h(is)f(the)g(address)g(of)g(a)g(function)g
-(to)g(call)h(when)f(completing)i(a)d(w)o(ord)h(w)o(ould)195
-259 y(normally)h(displa)o(y)g(the)f(list)h(of)f(p)q(ossible)h(matc)o
-(hes.)18 b(This)12 b(function)g(is)g(called)g(in)g(lieu)h(of)e
-(Readline)195 314 y(displa)o(ying)21 b(the)d(list.)32
-b(It)19 b(tak)o(es)f(three)h(argumen)o(ts:)26 b(\()p
-Ft(char)14 b(**)p Fk(matc)o(hes)p Fu(,)19 b Ft(int)f
-Fk(n)o(um)p 1688 314 14 2 v 17 w(matc)o(hes)p Fu(,)195
-369 y Ft(int)13 b Fk(max)p 368 369 V 16 w(length)p Fu(\))i(where)f
-Fk(matc)o(hes)h Fu(is)f(the)g(arra)o(y)f(of)g(matc)o(hing)h(strings,)g
-Fk(n)o(um)p 1578 369 V 16 w(matc)o(hes)i Fu(is)e(the)195
-423 y(n)o(um)o(b)q(er)h(of)f(strings)h(in)h(that)e(arra)o(y)l(,)f(and)i
-Fk(max)p 1012 423 V 16 w(length)h Fu(is)f(the)g(length)g(of)g(the)f
-(longest)h(string)g(in)195 478 y(that)e(arra)o(y)l(.)19
-b(Readline)c(pro)o(vides)g(a)e(con)o(v)o(enience)j(function,)f
-Ft(rl_display_match_list)p Fu(,)c(that)195 533 y(tak)o(es)17
-b(care)g(of)g(doing)h(the)f(displa)o(y)i(to)d(Readline's)j(output)e
-(stream.)26 b(That)16 b(function)j(ma)o(y)d(b)q(e)195
-588 y(called)h(from)d(this)i(ho)q(ok.)1773 704 y(V)l(ariable)-1861
-b Fi(const)20 b(char)g(*)f Fh(rl)p 436 704 18 3 v 21
-w(basic)p 580 704 V 21 w(w)n(ord)p 725 704 V 21 w(break)p
-886 704 V 20 w(c)n(haracters)195 759 y Fu(The)j(basic)h(list)g(of)f(c)o
-(haracters)f(that)g(signal)i(a)f(break)g(b)q(et)o(w)o(een)g(w)o(ords)g
-(for)f(the)h(completer)195 814 y(routine.)30 b(The)19
-b(default)g(v)m(alue)h(of)e(this)h(v)m(ariable)h(is)f(the)g(c)o
-(haracters)f(whic)o(h)h(break)g(w)o(ords)f(for)195 869
-y(completion)e(in)g(Bash:)k Ft(")15 b(\\t\\n\\"\\\\'`@$><=;|&{\(")p
-Fu(.)1773 985 y(V)l(ariable)-1861 b Fi(const)20 b(char)g(*)f
-Fh(rl)p 436 985 V 21 w(basic)p 580 985 V 21 w(quote)p
-740 985 V 21 w(c)n(haracters)195 1040 y Fu(A)c(list)h(of)f(quote)g(c)o
-(haracters)f(whic)o(h)i(can)g(cause)f(a)g(w)o(ord)g(break.)1773
-1156 y(V)l(ariable)-1861 b Fi(const)20 b(char)g(*)f Fh(rl)p
-436 1156 V 21 w(completer)p 705 1156 V 21 w(w)n(ord)p
-850 1156 V 20 w(break)p 1010 1156 V 20 w(c)n(haracters)195
-1211 y Fu(The)33 b(list)g(of)f(c)o(haracters)g(that)f(signal)j(a)e
-(break)g(b)q(et)o(w)o(een)h(w)o(ords)f(for)g Ft(rl_complete_)195
-1266 y(internal\(\))p Fu(.)18 b(The)e(default)g(list)g(is)f(the)h(v)m
-(alue)g(of)f Ft(rl_basic_word_break_chara)o(cters)p Fu(.)1773
-1382 y(V)l(ariable)-1861 b Fi(const)20 b(char)g(*)f Fh(rl)p
-436 1382 V 21 w(completer)p 705 1382 V 21 w(quote)p 865
-1382 V 20 w(c)n(haracters)195 1437 y Fu(A)e(list)h(of)e(c)o(haracters)g
-(whic)o(h)i(can)f(b)q(e)g(used)h(to)e(quote)h(a)f(substring)h(of)g(the)
-g(line.)26 b(Completion)195 1492 y(o)q(ccurs)13 b(on)h(the)f(en)o(tire)
-g(substring,)h(and)f(within)i(the)e(substring)g Ft
-(rl_completer_word_break_)195 1547 y(characters)j Fu(are)h(treated)g
-(as)h(an)o(y)f(other)g(c)o(haracter,)g(unless)i(they)e(also)h(app)q
-(ear)g(within)h(this)195 1601 y(list.)1773 1718 y(V)l(ariable)-1861
-b Fi(const)20 b(char)g(*)f Fh(rl)p 436 1718 V 21 w(\014lename)p
-665 1718 V 20 w(quote)p 824 1718 V 21 w(c)n(haracters)195
-1773 y Fu(A)e(list)h(of)e(c)o(haracters)g(that)g(cause)h(a)g
-(\014lename)h(to)e(b)q(e)i(quoted)e(b)o(y)h(the)g(completer)h(when)f
-(they)195 1828 y(app)q(ear)e(in)h(a)f(completed)h(\014lename.)21
-b(The)16 b(default)g(is)f(the)h(n)o(ull)g(string.)1773
-1944 y(V)l(ariable)-1861 b Fi(const)20 b(char)g(*)f Fh(rl)p
-436 1944 V 21 w(sp)r(ecial)p 623 1944 V 22 w(pre\014xes)195
-1999 y Fu(The)14 b(list)h(of)e(c)o(haracters)g(that)g(are)h(w)o(ord)f
-(break)h(c)o(haracters,)f(but)h(should)h(b)q(e)f(left)g(in)h
-Fk(text)f Fu(when)195 2054 y(it)f(is)f(passed)h(to)f(the)g(completion)h
-(function.)20 b(Programs)11 b(can)h(use)h(this)g(to)f(help)h(determine)
-h(what)195 2108 y(kind)i(of)e(completing)i(to)e(do.)19
-b(F)l(or)14 b(instance,)i(Bash)e(sets)h(this)g(v)m(ariable)h(to)e
-Ft(")p Fu($)p Ft(@")g Fu(so)g(that)g(it)h(can)195 2163
-y(complete)h(shell)h(v)m(ariables)f(and)g(hostnames.)1773
-2280 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p 215 2280
-V 21 w(completion)p 510 2280 V 21 w(query)p 673 2280
-V 21 w(items)195 2334 y Fu(Up)e(to)g(this)g(man)o(y)g(items)g(will)i(b)
-q(e)f(displa)o(y)o(ed)g(in)g(resp)q(onse)g(to)e(a)h(p)q
-(ossible-completions)j(call.)195 2389 y(After)14 b(that,)f(w)o(e)h(ask)
-g(the)h(user)f(if)h(she)f(is)h(sure)g(she)f(w)o(an)o(ts)f(to)h(see)h
-(them)f(all.)20 b(The)15 b(default)g(v)m(alue)195 2444
-y(is)h(100.)1773 2560 y(V)l(ariable)-1861 b Fi(int)20
-b Fh(rl)p 215 2560 V 21 w(completion)p 510 2560 V 21
-w(app)r(end)p 715 2560 V 19 w(c)n(haracter)195 2615 y
-Fu(When)d(a)f(single)i(completion)g(alternativ)o(e)f(matc)o(hes)f(at)g
-(the)h(end)g(of)f(the)h(command)f(line,)j(this)195 2670
-y(c)o(haracter)10 b(is)h(app)q(ended)i(to)d(the)g(inserted)i
-(completion)g(text.)18 b(The)11 b(default)g(is)g(a)g(space)g(c)o
-(haracter)p eop
-%%Page: 46 48
-46 47 bop 75 -58 a Fu(46)1299 b(GNU)15 b(Readline)h(Library)195
-149 y(\(`)e('\).)19 b(Setting)14 b(this)f(to)g(the)g(n)o(ull)i(c)o
-(haracter)e(\(`)p Ft(\\0)p Fu('\))e(prev)o(en)o(ts)i(an)o(ything)h(b)q
-(eing)h(app)q(ended)f(auto-)195 204 y(matically)l(.)21
-b(This)15 b(can)f(b)q(e)h(c)o(hanged)g(in)g(custom)f(completion)i
-(functions)f(to)f(pro)o(vide)h(the)f(\\most)195 259 y(sensible)i(w)o
-(ord)c(separator)h(c)o(haracter")f(according)i(to)f(an)h
-(application-sp)q(eci\014c)j(command)c(line)195 314 y(syn)o(tax)h(sp)q
-(eci\014cation.)1773 423 y(V)l(ariable)-1861 b Fi(int)20
-b Fh(rl)p 215 423 18 3 v 21 w(completion)p 510 423 V
-21 w(suppress)p 746 423 V 19 w(app)r(end)195 478 y Fu(If)e(non-zero,)g
-Fk(rl)p 476 478 14 2 v 17 w(completion)p 709 478 V 18
-w(app)q(end)p 871 478 V 17 w(c)o(haracter)i Fu(is)f(not)e(app)q(ended)i
-(to)e(matc)o(hes)g(at)h(the)f(end)195 533 y(of)c(the)h(command)g(line,)
-h(as)f(describ)q(ed)h(ab)q(o)o(v)o(e.)k(It)14 b(is)h(set)e(to)g(0)h(b)q
-(efore)g(an)o(y)f(application-sp)q(eci)q(\014c)195 588
-y(completion)j(function)g(is)g(called.)1773 697 y(V)l(ariable)-1861
-b Fi(int)20 b Fh(rl)p 215 697 18 3 v 21 w(completion)p
-510 697 V 21 w(mark)p 662 697 V 19 w(symlink)p 875 697
-V 21 w(dirs)195 752 y Fu(If)c(non-zero,)g(a)g(slash)g(will)i(b)q(e)e
-(app)q(ended)i(to)d(completed)i(\014lenames)g(that)e(are)g(sym)o(b)q
-(olic)j(links)195 807 y(to)11 b(directory)i(names,)f(sub)s(ject)g(to)f
-(the)i(v)m(alue)g(of)f(the)g(user-settable)g Fk(mark-directories)j
-Fu(v)m(ariable.)195 862 y(This)i(v)m(ariable)h(exists)f(so)g(that)e
-(application)k(completion)f(functions)f(can)g(o)o(v)o(erride)g(the)f
-(user's)195 917 y(global)f(preference)g(\(set)e(via)h(the)g
-Fk(mark-symlink)o(ed-directories)k Fu(Readline)e(v)m(ariable\))f(if)f
-(appro-)195 971 y(priate.)20 b(This)15 b(v)m(ariable)g(is)g(set)f(to)f
-(the)i(user's)e(preference)j(b)q(efore)e(an)o(y)g(application)i
-(completion)195 1026 y(function)j(is)g(called,)h(so)e(unless)h(that)f
-(function)h(mo)q(di\014es)g(the)f(v)m(alue,)i(the)e(user's)g
-(preferences)195 1081 y(are)d(honored.)1773 1191 y(V)l(ariable)-1861
-b Fi(int)20 b Fh(rl)p 215 1191 V 21 w(ignore)p 391 1191
-V 20 w(completion)p 685 1191 V 21 w(duplicates)195 1245
-y Fu(If)15 b(non-zero,)h(then)f(duplicates)i(in)f(the)f(matc)o(hes)g
-(are)g(remo)o(v)o(ed.)k(The)d(default)g(is)f(1.)1773
-1355 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p 215 1355
-V 21 w(\014lename)p 444 1355 V 20 w(completion)p 738
-1355 V 21 w(desired)195 1410 y Fu(Non-zero)c(means)g(that)f(the)h
-(results)g(of)g(the)g(matc)o(hes)f(are)h(to)f(b)q(e)i(treated)e(as)g
-(\014lenames.)23 b(This)195 1465 y(is)14 b Fl(always)j
-Fu(zero)c(on)g(en)o(try)l(,)g(and)h(can)f(only)h(b)q(e)g(c)o(hanged)f
-(within)i(a)e(completion)h(en)o(try)f(generator)195 1519
-y(function.)38 b(If)21 b(it)g(is)g(set)g(to)f(a)g(non-zero)h(v)m(alue,)
-i(directory)e(names)g(ha)o(v)o(e)g(a)f(slash)h(app)q(ended)195
-1574 y(and)d(Readline)h(attempts)d(to)h(quote)g(completed)i
-(\014lenames)f(if)g(they)g(con)o(tain)g(an)o(y)f(c)o(haracters)195
-1629 y(in)f Ft(rl_filename_quote_character)o(s)d Fu(and)i
-Ft(rl_filename_quoting_desired)d Fu(is)k(set)f(to)f(a)195
-1684 y(non-zero)h(v)m(alue.)1773 1793 y(V)l(ariable)-1861
-b Fi(int)20 b Fh(rl)p 215 1793 V 21 w(\014lename)p 444
-1793 V 20 w(quoting)p 653 1793 V 21 w(desired)195 1848
-y Fu(Non-zero)14 b(means)g(that)f(the)i(results)f(of)g(the)g(matc)o
-(hes)f(are)h(to)f(b)q(e)i(quoted)f(using)h(double)g(quotes)195
-1903 y(\(or)c(an)h(application-sp)q(eci\014)q(c)j(quoting)d(mec)o
-(hanism\))g(if)h(the)f(completed)h(\014lename)g(con)o(tains)f(an)o(y)
-195 1958 y(c)o(haracters)i(in)i Ft(rl_filename_quote_chars)p
-Fu(.)h(This)f(is)f Fl(always)k Fu(non-zero)d(on)f(en)o(try)l(,)f(and)i
-(can)195 2012 y(only)c(b)q(e)g(c)o(hanged)g(within)h(a)f(completion)g
-(en)o(try)g(generator)e(function.)20 b(The)12 b(quoting)g(is)g
-(e\013ected)195 2067 y(via)j(a)g(call)i(to)d(the)i(function)g(p)q(oin)o
-(ted)g(to)e(b)o(y)h Ft(rl_filename_quoting_function)p
-Fu(.)1773 2177 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p
-215 2177 V 21 w(attempted)p 495 2177 V 20 w(completion)p
-789 2177 V 21 w(o)n(v)n(er)195 2232 y Fu(If)47 b(an)g(application-sp)q
-(eci\014)q(c)j(completion)e(function)g(assigned)f(to)g
-Ft(rl_attempted_)195 2286 y(completion_function)24 b
-Fu(sets)i(this)h(v)m(ariable)h(to)e(a)g(non-zero)h(v)m(alue,)j
-(Readline)e(will)g(not)195 2341 y(p)q(erform)15 b(its)g(default)g
-(\014lename)h(completion)g(ev)o(en)f(if)g(the)g(application's)h
-(completion)g(function)195 2396 y(returns)f(no)g(matc)o(hes.)20
-b(It)15 b(should)h(b)q(e)g(set)f(only)h(b)o(y)f(an)g(application's)h
-(completion)h(function.)1773 2506 y(V)l(ariable)-1861
-b Fi(int)20 b Fh(rl)p 215 2506 V 21 w(completion)p 510
-2506 V 21 w(t)n(yp)r(e)195 2560 y Fu(Set)e(to)e(a)i(c)o(haracter)f
-(describing)i(the)e(t)o(yp)q(e)h(of)f(completion)i(Readline)g(is)f
-(curren)o(tly)g(attempt-)195 2615 y(ing;)g(see)f(the)f(description)i
-(of)f Ft(rl_complete_internal\(\))c Fu(\(see)k(Section)h(2.6.2)d
-([Completion)195 2670 y(F)l(unctions],)g(page)g(42\))g(for)f(the)h
-(list)h(of)f(c)o(haracters.)p eop
-%%Page: 47 49
-47 48 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(47)1773 149 y(V)l(ariable)-1861 b Fi(int)20
-b Fh(rl)p 215 149 18 3 v 21 w(inhibit)p 399 149 V 23
-w(completion)195 204 y Fu(If)14 b(this)h(v)m(ariable)g(is)g(non-zero,)f
-(completion)i(is)e(inhibited.)22 b(The)15 b(completion)g(c)o(haracter)e
-(will)j(b)q(e)195 259 y(inserted)g(as)f(an)o(y)g(other)g(b)q(ound)h(to)
-e Ft(self-insert)p Fu(.)75 371 y Fj(2.6.4)30 b(A)21 b(Short)f
-(Completion)g(Example)137 467 y Fu(Here)11 b(is)f(a)g(small)h
-(application)h(demonstrating)e(the)g(use)h(of)e(the)i(GNU)f(Readline)h
-(library)l(.)19 b(It)11 b(is)f(called)75 522 y Ft(fileman)p
-Fu(,)17 b(and)h(the)g(source)g(co)q(de)g(resides)h(in)f(`)p
-Ft(examples/fileman.c)p Fu('.)25 b(This)18 b(sample)g(application)75
-577 y(pro)o(vides)c(completion)g(of)e(command)h(names,)g(line)i
-(editing)g(features,)d(and)i(access)f(to)f(the)h(history)h(list.)p
-eop
-%%Page: 48 50
-48 49 bop 75 -58 a Fu(48)1299 b(GNU)15 b(Readline)h(Library)195
-149 y Ft(/*)24 b(fileman.c)e(--)i(A)g(tiny)f(application)f(which)h
-(demonstrates)g(how)g(to)h(use)f(the)267 201 y(GNU)g(Readline)g
-(library.)46 b(This)24 b(application)e(interactively)g(allows)h(users)
-267 253 y(to)g(manipulate)g(files)g(and)g(their)g(modes.)h(*/)195
-357 y(#include)f(<stdio.h>)195 409 y(#include)g(<sys/types.h>)195
-461 y(#include)g(<sys/file.h>)195 513 y(#include)g(<sys/stat.h>)195
-565 y(#include)g(<sys/errno.h>)195 668 y(#include)g
-(<readline/readline.h>)195 720 y(#include)g(<readline/history.h>)195
-824 y(extern)g(char)g(*xmalloc)g(\(\);)195 928 y(/*)h(The)f(names)g(of)
-h(functions)e(that)i(actually)f(do)g(the)h(manipulation.)e(*/)195
-980 y(int)h(com_list)g(__P\(\(char)g(*\)\);)195 1032
-y(int)g(com_view)g(__P\(\(char)g(*\)\);)195 1083 y(int)g(com_rename)g
-(__P\(\(char)g(*\)\);)195 1135 y(int)g(com_stat)g(__P\(\(char)g(*\)\);)
-195 1187 y(int)g(com_pwd)g(__P\(\(char)g(*\)\);)195 1239
-y(int)g(com_delete)g(__P\(\(char)g(*\)\);)195 1291 y(int)g(com_help)g
-(__P\(\(char)g(*\)\);)195 1343 y(int)g(com_cd)g(__P\(\(char)g(*\)\);)
-195 1395 y(int)g(com_quit)g(__P\(\(char)g(*\)\);)195
-1499 y(/*)h(A)f(structure)g(which)g(contains)g(information)f(on)i(the)f
-(commands)g(this)g(program)267 1550 y(can)g(understand.)f(*/)195
-1654 y(typedef)h(struct)g({)243 1706 y(char)g(*name;)g(/*)h(User)f
-(printable)g(name)g(of)h(the)f(function.)g(*/)243 1758
-y(rl_icpfunc_t)f(*func;)h(/*)h(Function)e(to)i(call)f(to)h(do)f(the)h
-(job.)f(*/)243 1810 y(char)g(*doc;)g(/*)h(Documentation)e(for)h(this)h
-(function.)46 b(*/)195 1862 y(})24 b(COMMAND;)195 1966
-y(COMMAND)f(commands[])f(=)i({)243 2017 y({)f("cd",)h(com_cd,)f
-("Change)f(to)i(directory)f(DIR")g(},)243 2069 y({)g("delete",)g
-(com_delete,)f("Delete)h(FILE")h(},)243 2121 y({)f("help",)g(com_help,)
-g("Display)g(this)g(text")g(},)243 2173 y({)g("?",)h(com_help,)e
-("Synonym)h(for)h(`help'")f(},)243 2225 y({)g("list",)g(com_list,)g
-("List)g(files)g(in)h(DIR")f(},)243 2277 y({)g("ls",)h(com_list,)e
-("Synonym)h(for)g(`list'")g(},)243 2329 y({)g("pwd",)g(com_pwd,)g
-("Print)g(the)h(current)f(working)g(directory")f(},)243
-2381 y({)h("quit",)g(com_quit,)g("Quit)g(using)g(Fileman")g(},)243
-2433 y({)g("rename",)g(com_rename,)f("Rename)h(FILE)h(to)f(NEWNAME")g
-(},)243 2484 y({)g("stat",)g(com_stat,)g("Print)g(out)g(statistics)g
-(on)h(FILE")f(},)243 2536 y({)g("view",)g(com_view,)g("View)g(the)h
-(contents)e(of)i(FILE")f(},)243 2588 y({)g(\(char)h(*\)NULL,)f
-(\(rl_icpfunc_t)f(*\)NULL,)h(\(char)g(*\)NULL)g(})195
-2640 y(};)p eop
-%%Page: 49 51
-49 50 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(49)195 201 y Ft(/*)24 b(Forward)e(declarations.)h(*/)
-195 253 y(char)g(*stripwhite)g(\(\);)195 305 y(COMMAND)g(*find_command)
-f(\(\);)195 409 y(/*)i(The)f(name)g(of)h(this)f(program,)g(as)h(taken)f
-(from)g(argv[0].)g(*/)195 461 y(char)g(*progname;)195
-565 y(/*)h(When)f(non-zero,)g(this)g(means)g(the)g(user)h(is)f(done)h
-(using)f(this)g(program.)g(*/)195 616 y(int)g(done;)195
-720 y(char)g(*)195 772 y(dupstr)g(\(s\))314 824 y(int)h(s;)195
-876 y({)243 928 y(char)f(*r;)243 1032 y(r)g(=)h(xmalloc)f(\(strlen)g
-(\(s\))g(+)h(1\);)243 1083 y(strcpy)f(\(r,)g(s\);)243
-1135 y(return)g(\(r\);)195 1187 y(})195 1291 y(main)g(\(argc,)g(argv\))
-314 1343 y(int)h(argc;)314 1395 y(char)g(**argv;)195
-1447 y({)243 1499 y(char)f(*line,)g(*s;)243 1602 y(progname)f(=)i
-(argv[0];)243 1706 y(initialize_readline)d(\(\);)i(/*)h(Bind)f(our)h
-(completer.)e(*/)243 1810 y(/*)h(Loop)h(reading)f(and)g(executing)g
-(lines)g(until)g(the)g(user)h(quits.)f(*/)243 1862 y(for)g(\()h(;)g
-(done)f(==)h(0;)f(\))290 1914 y({)338 1966 y(line)g(=)h(readline)f
-(\("FileMan:)f("\);)338 2069 y(if)i(\(!line\))386 2121
-y(break;)338 2225 y(/*)g(Remove)f(leading)g(and)g(trailing)g
-(whitespace)f(from)i(the)f(line.)410 2277 y(Then,)g(if)h(there)f(is)g
-(anything)g(left,)g(add)h(it)f(to)h(the)f(history)g(list)410
-2329 y(and)g(execute)g(it.)h(*/)338 2381 y(s)g(=)g(stripwhite)e
-(\(line\);)338 2484 y(if)i(\(*s\))386 2536 y({)434 2588
-y(add_history)e(\(s\);)434 2640 y(execute_line)g(\(s\);)p
-eop
-%%Page: 50 52
-50 51 bop 75 -58 a Fu(50)1299 b(GNU)15 b(Readline)h(Library)386
-149 y Ft(})338 253 y(free)23 b(\(line\);)290 305 y(})243
-357 y(exit)g(\(0\);)195 409 y(})195 513 y(/*)h(Execute)e(a)i(command)f
-(line.)g(*/)195 565 y(int)195 616 y(execute_line)f(\(line\))314
-668 y(char)i(*line;)195 720 y({)243 772 y(register)e(int)i(i;)243
-824 y(COMMAND)f(*command;)243 876 y(char)g(*word;)243
-980 y(/*)g(Isolate)g(the)h(command)f(word.)g(*/)243 1032
-y(i)g(=)h(0;)243 1083 y(while)f(\(line[i])g(&&)g(whitespace)g
-(\(line[i]\)\))290 1135 y(i++;)243 1187 y(word)g(=)h(line)f(+)h(i;)243
-1291 y(while)f(\(line[i])g(&&)g(!whitespace)g(\(line[i]\)\))290
-1343 y(i++;)243 1447 y(if)g(\(line[i]\))290 1499 y(line[i++])g(=)h
-('\\0';)243 1602 y(command)f(=)g(find_command)g(\(word\);)243
-1706 y(if)g(\(!command\))290 1758 y({)338 1810 y(fprintf)g(\(stderr,)g
-("\045s:)g(No)h(such)f(command)g(for)g(FileMan.\\n",)g(word\);)338
-1862 y(return)g(\(-1\);)290 1914 y(})243 2017 y(/*)g(Get)h(argument)f
-(to)g(command,)g(if)g(any.)h(*/)243 2069 y(while)f(\(whitespace)f
-(\(line[i]\)\))290 2121 y(i++;)243 2225 y(word)h(=)h(line)f(+)h(i;)243
-2329 y(/*)f(Call)h(the)f(function.)g(*/)243 2381 y(return)g
-(\(\(*\(command->func\)\))e(\(word\)\);)195 2433 y(})195
-2536 y(/*)j(Look)f(up)g(NAME)h(as)f(the)h(name)f(of)h(a)f(command,)g
-(and)h(return)f(a)g(pointer)g(to)h(that)267 2588 y(command.)46
-b(Return)23 b(a)h(NULL)f(pointer)g(if)h(NAME)f(isn't)g(a)h(command)f
-(name.)g(*/)195 2640 y(COMMAND)g(*)p eop
-%%Page: 51 53
-51 52 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(51)195 149 y Ft(find_command)22 b(\(name\))314
-201 y(char)i(*name;)195 253 y({)243 305 y(register)e(int)i(i;)243
-409 y(for)f(\(i)h(=)f(0;)h(commands[i].name;)e(i++\))290
-461 y(if)i(\(strcmp)f(\(name,)g(commands[i].name\))f(==)h(0\))338
-513 y(return)g(\(&commands[i]\);)243 616 y(return)g(\(\(COMMAND)f
-(*\)NULL\);)195 668 y(})195 772 y(/*)i(Strip)f(whitespace)f(from)i(the)
-f(start)g(and)h(end)f(of)h(STRING.)46 b(Return)24 b(a)f(pointer)267
-824 y(into)g(STRING.)g(*/)195 876 y(char)g(*)195 928
-y(stripwhite)f(\(string\))314 980 y(char)i(*string;)195
-1032 y({)243 1083 y(register)e(char)i(*s,)f(*t;)243 1187
-y(for)g(\(s)h(=)f(string;)g(whitespace)g(\(*s\);)g(s++\))290
-1239 y(;)243 1343 y(if)g(\(*s)h(==)f(0\))290 1395 y(return)g(\(s\);)243
-1499 y(t)g(=)h(s)g(+)g(strlen)f(\(s\))g(-)h(1;)243 1550
-y(while)f(\(t)g(>)h(s)g(&&)g(whitespace)e(\(*t\)\))290
-1602 y(t--;)243 1654 y(*++t)h(=)h('\\0';)243 1758 y(return)f(s;)195
-1810 y(})195 1914 y(/*)h(***********************)o(*******)o(********)o
-(*******)o(*******)o(********)o(****)d(*/)195 1966 y(/*)1575
-b(*/)195 2017 y(/*)429 b(Interface)23 b(to)g(Readline)g(Completion)381
-b(*/)195 2069 y(/*)1575 b(*/)195 2121 y(/*)24 b
-(***********************)o(*******)o(********)o(*******)o(*******)o
-(********)o(****)d(*/)195 2225 y(char)i(*command_generator)f
-(__P\(\(const)g(char)i(*,)f(int\)\);)195 2277 y(char)g
-(**fileman_completion)e(__P\(\(const)i(char)g(*,)h(int,)f(int\)\);)195
-2381 y(/*)h(Tell)f(the)g(GNU)h(Readline)f(library)f(how)i(to)g
-(complete.)46 b(We)24 b(want)f(to)h(try)f(to)267 2433
-y(complete)f(on)i(command)f(names)g(if)h(this)f(is)h(the)f(first)g
-(word)g(in)h(the)g(line,)f(or)267 2484 y(on)g(filenames)g(if)g(not.)h
-(*/)195 2536 y(initialize_readline)d(\(\))195 2588 y({)243
-2640 y(/*)i(Allow)g(conditional)g(parsing)g(of)g(the)h(~/.inputrc)e
-(file.)h(*/)p eop
-%%Page: 52 54
-52 53 bop 75 -58 a Fu(52)1299 b(GNU)15 b(Readline)h(Library)243
-149 y Ft(rl_readline_name)21 b(=)j("FileMan";)243 253
-y(/*)f(Tell)h(the)f(completer)g(that)g(we)h(want)f(a)h(crack)f(first.)g
-(*/)243 305 y(rl_attempted_completion_)o(functio)o(n)e(=)j
-(fileman_completion;)195 357 y(})195 461 y(/*)g(Attempt)e(to)i
-(complete)f(on)g(the)h(contents)f(of)g(TEXT.)47 b(START)23
-b(and)h(END)267 513 y(bound)f(the)g(region)g(of)h(rl_line_buffer)e
-(that)h(contains)g(the)g(word)h(to)267 565 y(complete.)46
-b(TEXT)23 b(is)h(the)f(word)h(to)f(complete.)47 b(We)23
-b(can)h(use)f(the)h(entire)267 616 y(contents)e(of)i(rl_line_buffer)e
-(in)h(case)h(we)f(want)h(to)f(do)h(some)f(simple)267
-668 y(parsing.)46 b(Returnthe)23 b(array)g(of)h(matches,)e(or)i(NULL)f
-(if)h(there)f(aren't)g(any.)g(*/)195 720 y(char)g(**)195
-772 y(fileman_completion)e(\(text,)i(start,)g(end\))314
-824 y(const)g(char)h(*text;)314 876 y(int)g(start,)f(end;)195
-928 y({)243 980 y(char)g(**matches;)243 1083 y(matches)g(=)g(\(char)h
-(**\)NULL;)243 1187 y(/*)f(If)h(this)f(word)h(is)f(at)h(the)f(start)g
-(of)h(the)f(line,)h(then)f(it)g(is)h(a)g(command)314
-1239 y(to)g(complete.)46 b(Otherwise)23 b(it)h(is)f(the)h(name)f(of)h
-(a)f(file)h(in)f(the)h(current)314 1291 y(directory.)f(*/)243
-1343 y(if)g(\(start)g(==)h(0\))290 1395 y(matches)f(=)h
-(rl_completion_matches)d(\(text,)i(command_generator\);)243
-1499 y(return)g(\(matches\);)195 1550 y(})195 1654 y(/*)h(Generator)e
-(function)h(for)g(command)g(completion.)47 b(STATE)23
-b(lets)g(us)267 1706 y(know)g(whether)g(to)g(start)h(from)f(scratch;)g
-(without)g(any)g(state)267 1758 y(\(i.e.)g(STATE)g(==)h(0\),)f(then)g
-(we)h(start)f(at)h(the)f(top)h(of)f(the)h(list.)f(*/)195
-1810 y(char)g(*)195 1862 y(command_generator)f(\(text,)h(state\))314
-1914 y(const)g(char)h(*text;)314 1966 y(int)g(state;)195
-2017 y({)243 2069 y(static)f(int)g(list_index,)g(len;)243
-2121 y(char)g(*name;)243 2225 y(/*)g(If)h(this)f(is)h(a)g(new)f(word)g
-(to)h(complete,)f(initialize)f(now.)47 b(This)314 2277
-y(includes)23 b(saving)g(the)h(length)f(of)g(TEXT)h(for)f(efficiency,)f
-(and)314 2329 y(initializing)h(the)g(index)g(variable)g(to)h(0.)f(*/)
-243 2381 y(if)g(\(!state\))290 2433 y({)338 2484 y(list_index)g(=)g(0;)
-338 2536 y(len)h(=)f(strlen)g(\(text\);)290 2588 y(})p
-eop
-%%Page: 53 55
-53 54 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(53)243 149 y Ft(/*)23 b(Return)g(the)h(next)f(name)g
-(which)h(partially)e(matches)h(from)g(the)314 201 y(command)g(list.)g
-(*/)243 253 y(while)g(\(name)g(=)h(commands[list_index].name)o(\))290
-305 y({)338 357 y(list_index++;)338 461 y(if)g(\(strncmp)f(\(name,)g
-(text,)g(len\))g(==)h(0\))386 513 y(return)f(\(dupstr\(name\)\);)290
-565 y(})243 668 y(/*)g(If)h(no)f(names)h(matched,)e(then)i(return)f
-(NULL.)g(*/)243 720 y(return)g(\(\(char)g(*\)NULL\);)195
-772 y(})195 876 y(/*)h(***********************)o(*******)o(********)o
-(*******)o(*******)o(********)o(****)d(*/)195 928 y(/*)1575
-b(*/)195 980 y(/*)549 b(FileMan)22 b(Commands)644 b(*/)195
-1032 y(/*)1575 b(*/)195 1083 y(/*)24 b(***********************)o
-(*******)o(********)o(*******)o(*******)o(********)o(****)d(*/)195
-1187 y(/*)j(String)f(to)g(pass)h(to)f(system)g(\(\).)47
-b(This)24 b(is)f(for)h(the)f(LIST,)g(VIEW)h(and)f(RENAME)267
-1239 y(commands.)f(*/)195 1291 y(static)h(char)g(syscom[1024];)195
-1395 y(/*)h(List)f(the)g(file\(s\))g(named)g(in)h(arg.)f(*/)195
-1447 y(com_list)g(\(arg\))314 1499 y(char)h(*arg;)195
-1550 y({)243 1602 y(if)f(\(!arg\))290 1654 y(arg)h(=)g("";)243
-1758 y(sprintf)f(\(syscom,)f("ls)i(-FClg)f(\045s",)g(arg\);)243
-1810 y(return)g(\(system)g(\(syscom\)\);)195 1862 y(})195
-1966 y(com_view)g(\(arg\))314 2017 y(char)h(*arg;)195
-2069 y({)243 2121 y(if)f(\(!valid_argument)f(\("view",)h(arg\)\))290
-2173 y(return)g(1;)243 2277 y(sprintf)g(\(syscom,)f("more)i(\045s",)f
-(arg\);)243 2329 y(return)g(\(system)g(\(syscom\)\);)195
-2381 y(})195 2484 y(com_rename)f(\(arg\))314 2536 y(char)i(*arg;)195
-2588 y({)243 2640 y(too_dangerous)e(\("rename"\);)p eop
-%%Page: 54 56
-54 55 bop 75 -58 a Fu(54)1299 b(GNU)15 b(Readline)h(Library)243
-149 y Ft(return)23 b(\(1\);)195 201 y(})195 305 y(com_stat)g(\(arg\))
-314 357 y(char)h(*arg;)195 409 y({)243 461 y(struct)f(stat)g(finfo;)243
-565 y(if)g(\(!valid_argument)f(\("stat",)h(arg\)\))290
-616 y(return)g(\(1\);)243 720 y(if)g(\(stat)g(\(arg,)h(&finfo\))f(==)g
-(-1\))290 772 y({)338 824 y(perror)g(\(arg\);)338 876
-y(return)g(\(1\);)290 928 y(})243 1032 y(printf)g(\("Statistics)f(for)h
-(`\045s':\\n",)g(arg\);)243 1135 y(printf)g(\("\045s)g(has)h(\045d)f
-(link\045s,)g(and)g(is)h(\045d)g(byte\045s)f(in)g(length.\\n",)g(arg,)
-434 1187 y(finfo.st_nlink,)434 1239 y(\(finfo.st_nlink)e(==)j(1\))g(?)f
-("")h(:)g("s",)434 1291 y(finfo.st_size,)434 1343 y(\(finfo.st_size)e
-(==)h(1\))h(?)f("")h(:)g("s"\);)243 1395 y(printf)f(\("Inode)g(Last)g
-(Change)g(at:)g(\045s",)h(ctime)f(\(&finfo.st_ctime\)\);)243
-1447 y(printf)g(\(")143 b(Last)23 b(access)g(at:)g(\045s",)h(ctime)f
-(\(&finfo.st_atime\)\);)243 1499 y(printf)g(\(")95 b(Last)23
-b(modified)g(at:)g(\045s",)h(ctime)f(\(&finfo.st_mtime\)\);)243
-1550 y(return)g(\(0\);)195 1602 y(})195 1706 y(com_delete)f(\(arg\))314
-1758 y(char)i(*arg;)195 1810 y({)243 1862 y(too_dangerous)e
-(\("delete"\);)243 1914 y(return)h(\(1\);)195 1966 y(})195
-2069 y(/*)h(Print)f(out)g(help)h(for)f(ARG,)g(or)h(for)f(all)h(of)f
-(the)h(commands)f(if)g(ARG)h(is)267 2121 y(not)f(present.)g(*/)195
-2173 y(com_help)g(\(arg\))314 2225 y(char)h(*arg;)195
-2277 y({)243 2329 y(register)e(int)i(i;)243 2381 y(int)f(printed)g(=)h
-(0;)243 2484 y(for)f(\(i)h(=)f(0;)h(commands[i].name;)e(i++\))290
-2536 y({)338 2588 y(if)i(\(!*arg)f(||)g(\(strcmp)g(\(arg,)g
-(commands[i].name\))f(==)i(0\)\))386 2640 y({)p eop
-%%Page: 55 57
-55 56 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(55)434 149 y Ft(printf)23 b(\("\045s\\t\\t\045s.\\n",)e
-(commands[i].name,)h(commands[i].doc\);)434 201 y(printed++;)386
-253 y(})290 305 y(})243 409 y(if)h(\(!printed\))290 461
-y({)338 513 y(printf)g(\("No)h(commands)e(match)h(`\045s'.)48
-b(Possibilties)22 b(are:\\n",)h(arg\);)338 616 y(for)h(\(i)f(=)h(0;)g
-(commands[i].name;)d(i++\))386 668 y({)434 720 y(/*)i(Print)g(in)h(six)
-f(columns.)g(*/)434 772 y(if)g(\(printed)g(==)h(6\))481
-824 y({)529 876 y(printed)f(=)h(0;)529 928 y(printf)f(\("\\n"\);)481
-980 y(})434 1083 y(printf)g(\("\045s\\t",)f(commands[i].name\);)434
-1135 y(printed++;)386 1187 y(})338 1291 y(if)i(\(printed\))386
-1343 y(printf)f(\("\\n"\);)290 1395 y(})243 1447 y(return)g(\(0\);)195
-1499 y(})195 1602 y(/*)h(Change)f(to)g(the)h(directory)e(ARG.)i(*/)195
-1654 y(com_cd)f(\(arg\))314 1706 y(char)h(*arg;)195 1758
-y({)243 1810 y(if)f(\(chdir)g(\(arg\))h(==)f(-1\))290
-1862 y({)338 1914 y(perror)g(\(arg\);)338 1966 y(return)g(1;)290
-2017 y(})243 2121 y(com_pwd)g(\(""\);)243 2173 y(return)g(\(0\);)195
-2225 y(})195 2329 y(/*)h(Print)f(out)g(the)h(current)f(working)f
-(directory.)h(*/)195 2381 y(com_pwd)g(\(ignore\))314
-2433 y(char)h(*ignore;)195 2484 y({)243 2536 y(char)f(dir[1024],)g(*s;)
-243 2640 y(s)g(=)h(getcwd)f(\(dir,)g(sizeof\(dir\))g(-)g(1\);)p
-eop
-%%Page: 56 58
-56 57 bop 75 -58 a Fu(56)1299 b(GNU)15 b(Readline)h(Library)243
-149 y Ft(if)23 b(\(s)h(==)f(0\))290 201 y({)338 253 y(printf)g
-(\("Error)g(getting)g(pwd:)g(\045s\\n",)g(dir\);)338
-305 y(return)g(1;)290 357 y(})243 461 y(printf)g(\("Current)f
-(directory)h(is)h(\045s\\n",)f(dir\);)243 513 y(return)g(0;)195
-565 y(})195 668 y(/*)h(The)f(user)g(wishes)g(to)h(quit)f(using)g(this)h
-(program.)46 b(Just)24 b(set)f(DONE)267 720 y(non-zero.)f(*/)195
-772 y(com_quit)h(\(arg\))314 824 y(char)h(*arg;)195 876
-y({)243 928 y(done)f(=)h(1;)243 980 y(return)f(\(0\);)195
-1032 y(})195 1135 y(/*)h(Function)e(which)i(tells)f(you)g(that)g(you)h
-(can't)f(do)h(this.)f(*/)195 1187 y(too_dangerous)f(\(caller\))314
-1239 y(char)i(*caller;)195 1291 y({)243 1343 y(fprintf)f(\(stderr,)457
-1395 y("\045s:)h(Too)f(dangerous)g(for)g(me)h(to)g(distribute.\\n")457
-1447 y(caller\);)243 1499 y(fprintf)f(\(stderr,)f("Write)h(it)h
-(yourself.\\n"\);)195 1550 y(})195 1654 y(/*)g(Return)f(non-zero)f(if)i
-(ARG)f(is)h(a)g(valid)f(argument)g(for)g(CALLER,)267
-1706 y(else)g(print)g(an)h(error)f(message)g(and)g(return)g(zero.)g(*/)
-195 1758 y(int)195 1810 y(valid_argument)f(\(caller,)h(arg\))314
-1862 y(char)h(*caller,)e(*arg;)195 1914 y({)243 1966
-y(if)h(\(!arg)g(||)h(!*arg\))290 2017 y({)338 2069 y(fprintf)f
-(\(stderr,)g("\045s:)g(Argument)g(required.\\n",)f(caller\);)338
-2121 y(return)h(\(0\);)290 2173 y(})243 2277 y(return)g(\(1\);)195
-2329 y(})p eop
-%%Page: 57 59
-57 58 bop 75 -58 a Fu(Concept)15 b(Index)1466 b(57)75
-149 y Fq(Concept)27 b(Index)75 321 y Fs(C)75 382 y Ff(command)14
-b(editing)e Fe(.)6 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)22
-b Ff(1)75 511 y Fs(E)75 572 y Ff(editing)15 b(command)f(lines)f
-Fe(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)g(.)24 b Ff(1)75 702 y Fs(I)75
-763 y Ff(initiali)q(zati)q(on)16 b(\014le,)e(readline)t
-Fe(.)8 b(.)e(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)17 b Ff(4)75 808 y(in)o(teraction,)e(readline)5
-b Fe(.)j(.)f(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)18 b Ff(1)75
-938 y Fs(K)75 999 y Ff(kill)d(ring)8 b Fe(.)f(.)f(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)20
-b Ff(3)75 1044 y(killing)c(text)9 b Fe(.)d(.)h(.)f(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)21 b Ff(2)1012 321
-y Fs(N)1012 390 y Ff(notation,)15 b(readline)7 b Fe(.)h(.)e(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)g(.)g(.)20 b Ff(1)1012 539 y Fs(R)1012
-608 y Ff(readline,)15 b(function)8 b Fe(.)g(.)e(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)21 b Ff(21)1012 757 y Fs(V)1012 826 y Ff(v)n(ariables,)15
-b(readline)t Fe(.)9 b(.)d(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)17
-b Ff(4)1012 976 y Fs(Y)1012 1044 y Ff(y)o(anking)e(text)t
-Fe(.)7 b(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)17
-b Ff(2)p eop
-%%Page: 58 60
-58 59 bop 75 -58 a Fu(58)1299 b(GNU)15 b(Readline)h(Library)p
-eop
-%%Page: 59 61
-59 60 bop 75 -58 a Fu(F)l(unction)16 b(and)f(V)l(ariable)i(Index)1187
-b(59)75 149 y Fq(F)-7 b(unction)26 b(and)h(V)-7 b(ariable)26
-b(Index)p 79 307 21 3 v 75 369 a Fd(_rl_digit_)o(p)7
-b Fe(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)23
-b Ff(36)75 415 y Fd(_rl_digit_)o(va)o(lue)6 b Fe(.)t(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)20 b Ff(37)75 462 y Fd(_rl_lowerc)o(as)o(e_p)6
-b Fe(.)t(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)20 b Ff(36)75
-508 y Fd(_rl_to_low)o(er)6 b Fe(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)h(.)f(.)22 b Ff(36)75 554 y Fd(_rl_to_upp)o(er)6
-b Fe(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)22
-b Ff(36)75 600 y Fd(_rl_upperc)o(as)o(e_p)6 b Fe(.)t(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)20 b Ff(36)75 733 y Fs(A)75 794 y
-Fd(abort)11 b(\(C-g\))5 b Fe(.)t(.)h(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)17 b Ff(17)75 841 y Fd(accept-lin)o(e)10
-b(\(Newline)f(or)j(Return\))6 b Fe(.)t(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)19 b Ff(12)75 973 y Fs(B)75 1035 y Fd(backward-c)o(ha)o(r)10
-b(\(C-b\))e Fe(.)t(.)e(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)21 b Ff(12)75
-1081 y Fd(backward-d)o(el)o(ete)o(-c)o(har)9 b(\(Rubout\))e
-Fe(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)22
-b Ff(14)75 1127 y Fd(backward-k)o(il)o(l-l)o(in)o(e)10
-b(\(C-x)h(Rubout\))e Fe(.)d(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)24
-b Ff(15)75 1174 y Fd(backward-k)o(il)o(l-w)o(or)o(d)10
-b(\(M-)501 1172 y Fn(h)p 512 1146 73 2 v 512 1174 a Fm(DEL)p
-512 1181 V 583 1172 a Fn(i)598 1174 y Fd(\))g Fe(.)c(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)23 b Ff(15)75 1220 y
-Fd(backward-w)o(or)o(d)10 b(\(M-b\))e Fe(.)t(.)e(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)21
-b Ff(12)75 1266 y Fd(beginning-)o(of)o(-hi)o(st)o(ory)9
-b(\(M-<\))h Fe(.)c(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)25 b Ff(13)75 1312 y Fd(beginning-)o(of)o(-li)o(ne)9
-b(\(C-a\))c Fe(.)t(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)18 b Ff(12)75 1359 y(b)q(ell-st)o(yle)7
-b Fe(.)i(.)d(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)20 b Ff(5)75 1490 y Fs(C)75 1552 y Fd(call-last-)o(kb)o(d-m)
-o(ac)o(ro)9 b(\(C-x)j(e\))5 b Fe(.)h(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)g(.)h(.)f(.)18 b Ff(17)75 1598 y Fd(capitalize)o(-w)o(ord)9
-b(\(M-c\))d Fe(.)f(.)h(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)19 b Ff(14)75 1644 y Fd(character-)o(se)
-o(arc)o(h)10 b(\(C-]\))c Fe(.)t(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)18 b Ff(18)75
-1691 y Fd(character-)o(se)o(arc)o(h-)o(bac)o(kwa)o(rd)9
-b(\(M-C-]\))e Fe(.)s(.)g(.)f(.)g(.)g(.)g(.)g(.)g(.)20
-b Ff(18)75 1737 y Fd(clear-scre)o(en)9 b(\(C-l\))g Fe(.)t(.)d(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)h(.)f(.)21 b Ff(12)75 1783 y(commen)o(t-b)q(egin)9
-b Fe(.)f(.)e(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)21
-b Ff(5)75 1829 y Fd(complete)10 b(\()265 1827 y Fn(h)p
-276 1801 74 2 v 276 1829 a Fm(T)m(AB)p 276 1837 V 348
-1827 a Fn(i)363 1829 y Fd(\))f Fe(.)e(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)
-22 b Ff(16)75 1875 y(completion-query-i)q(tems)t Fe(.)9
-b(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)h(.)16 b Ff(5)75 1922 y(con)o(v)o(ert-meta)10
-b Fe(.)c(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)22
-b Ff(5)75 1968 y Fd(copy-backw)o(ar)o(d-w)o(or)o(d)10
-b(\(\))c Fe(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)19 b Ff(15)75 2014 y Fd(copy-forwa)o(rd)o
-(-wo)o(rd)9 b(\(\))e Fe(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)20 b Ff(16)75
-2060 y Fd(copy-regio)o(n-)o(as-)o(ki)o(ll)9 b(\(\))d
-Fe(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)18 b Ff(15)75 2193 y Fs(D)75 2255 y Fd(delete-cha)o(r)10
-b(\(C-d\))d Fe(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)22 b Ff(14)75
-2301 y Fd(delete-cha)o(r-)o(or-)o(li)o(st)9 b(\(\))d
-Fe(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)18 b Ff(17)75 2347 y Fd(delete-hor)o(iz)o(ont)o(al)o
-(-sp)o(ace)9 b(\(\))i Fe(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)25 b Ff(15)75 2393 y Fd(digit-argu)o(me)o(nt)9
-b(\()p Fc(M-0)p Fd(,)i Fc(M-1)p Fd(,)h(...)f Fc(M--)p
-Fd(\))c Fe(.)e(.)h(.)g(.)g(.)h(.)f(.)g(.)g(.)20 b Ff(16)75
-2439 y(disable-comple)q(tion)9 b Fe(.)g(.)d(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)21 b Ff(5)75 2486 y Fd(do-upperca)o(se)o(-ve)o(rs)o(ion)9
-b(\(M-a,)i(M-b,)g(M-)p Fb(x)p Fd(,)h(...)o(\))159 2531
-y Fe(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)g(.)g(.)20 b Ff(17)75 2578 y Fd(downcase-w)o(or)o(d)10
-b(\(M-l\))e Fe(.)t(.)e(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)21 b Ff(14)75
-2624 y Fd(dump-funct)o(io)o(ns)9 b(\(\))g Fe(.)d(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)22 b Ff(18)75 2670 y Fd(dump-macro)o(s)10 b(\(\))g
-Fe(.)c(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)24 b Ff(18)1012
-307 y Fd(dump-variab)o(le)o(s)10 b(\(\))e Fe(.)e(.)h(.)f(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)23 b Ff(18)1012 449 y Fs(E)1012 514 y Ff(editing-mo)q(de)12
-b Fe(.)7 b(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)22
-b Ff(5)1012 562 y Fd(emacs-editi)o(ng)o(-mo)o(de)9 b(\(C-e\))t
-Fe(.)c(.)h(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)18 b Ff(18)1012 610 y(enable-k)o(eypad)9 b Fe(.)g(.)d(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)22 b Ff(5)1012
-658 y Fd(end-kbd-mac)o(ro)9 b(\(C-x)i(\)\))e Fe(.)e(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)23
-b Ff(17)1012 706 y Fd(end-of-hist)o(or)o(y)10 b(\(M->\))d
-Fe(.)t(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)h(.)20 b Ff(13)1012 754 y Fd(end-of-line)9
-b(\(C-e\))e Fe(.)f(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)23 b Ff(12)1012
-802 y Fd(exchange-po)o(in)o(t-a)o(nd)o(-ma)o(rk)9 b(\(C-x)j(C-x\))c
-Fe(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)24 b Ff(18)1012
-850 y(expand-tilde)6 b Fe(.)j(.)d(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)19 b Ff(5)1012 991 y Fs(F)1012 1056
-y Fd(forward-bac)o(kw)o(ard)o(-d)o(ele)o(te)o(-ch)o(ar)9
-b(\(\))f Fe(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)22
-b Ff(14)1012 1104 y Fd(forward-cha)o(r)10 b(\(C-f\))f
-Fe(.)s(.)e(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)22 b Ff(12)1012 1152 y
-Fd(forward-sea)o(rc)o(h-h)o(is)o(tor)o(y)10 b(\(C-s\))e
-Fe(.)e(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)24
-b Ff(13)1012 1200 y Fd(forward-wor)o(d)10 b(\(M-f\))f
-Fe(.)s(.)e(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)22 b Ff(12)1012 1334 y
-Fs(H)1012 1400 y Ff(history-preserv)o(e-p)q(oi)q(n)o(t)8
-b Fe(.)h(.)d(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)21 b Ff(5)1012 1448 y
-Fd(history-sea)o(rc)o(h-b)o(ac)o(kwa)o(rd)9 b(\(\))i
-Fe(.)c(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)25
-b Ff(13)1012 1496 y Fd(history-sea)o(rc)o(h-f)o(or)o(war)o(d)10
-b(\(\))s Fe(.)c(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)17 b Ff(13)1012 1543 y(horizon)o(tal-scrol)q(l-mo)r(de)6
-b Fe(.)j(.)d(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)19 b Ff(6)1012 1678 y
-Fs(I)1012 1743 y Ff(input-meta)8 b Fe(.)g(.)e(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21 b Ff(6)1012 1791
-y Fd(insert-comm)o(en)o(t)10 b(\(M-#\))d Fe(.)t(.)f(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)20
-b Ff(18)1012 1839 y Fd(insert-comp)o(le)o(tio)o(ns)9
-b(\(M-*\))t Fe(.)c(.)h(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)18 b Ff(16)1012 1887 y(isearc)o(h-terminators)t
-Fe(.)8 b(.)f(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)16 b Ff(6)1012
-2021 y Fs(K)1012 2087 y Ff(k)o(eymap)9 b Fe(.)e(.)f(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)22
-b Ff(6)1012 2135 y Fd(kill-line)10 b(\(C-k\))f Fe(.)d(.)g(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)24 b Ff(15)1012 2183 y Fd(kill-region)9
-b(\(\))i Fe(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)25
-b Ff(15)1012 2231 y Fd(kill-whole-)o(li)o(ne)9 b(\(\))g
-Fe(.)c(.)i(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)22 b Ff(15)1012 2278 y
-Fd(kill-word)10 b(\(M-d\))f Fe(.)d(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-24 b Ff(15)1012 2413 y Fs(M)1012 2478 y Ff(mark-mo)q(di\014ed-li)q(nes)
-8 b Fe(.)h(.)d(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21 b Ff(6)1012
-2526 y(mark-symlink)o(ed-di)q(rectori)q(es)14 b Fe(.)6
-b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)23 b Ff(6)1012 2574 y(matc)o(h-hidden-\014l)q(es)14
-b Fe(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)24 b Ff(6)1012
-2622 y Fd(menu-comple)o(te)9 b(\(\))g Fe(.)e(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)23 b Ff(16)1012 2670 y(meta-\015ag)t Fe(.)8 b(.)e(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)18
-b Ff(6)p eop
-%%Page: 60 62
-60 61 bop 75 -58 a Fu(60)1299 b(GNU)15 b(Readline)h(Library)75
-149 y Fs(N)75 210 y Fd(next-histo)o(ry)9 b(\(C-n\))g
-Fe(.)t(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)21 b Ff(13)75 256 y Fd(non-increm)o(en)o
-(tal)o(-f)o(orw)o(ard)o(-s)o(ear)o(ch)o(-hi)o(st)o(ory)9
-b(\(M-n\))159 302 y Fe(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)20 b Ff(13)75
-347 y Fd(non-increm)o(en)o(tal)o(-r)o(eve)o(rse)o(-s)o(ear)o(ch)o(-hi)o
-(st)o(ory)9 b(\(M-p\))159 393 y Fe(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)20
-b Ff(13)75 515 y Fs(O)75 576 y Ff(output-meta)5 b Fe(.)i(.)f(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)18 b Ff(6)75
-622 y Fd(overwrite-)o(mo)o(de)9 b(\(\))g Fe(.)d(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)22 b Ff(15)75 744 y Fs(P)75 805 y Ff(page-completions)14
-b Fe(.)6 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)23
-b Ff(7)75 851 y Fd(possible-c)o(om)o(ple)o(ti)o(ons)9
-b(\(M-?\))h Fe(.)c(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)25 b Ff(16)75 897 y Fd(prefix-met)o(a)10 b(\()324
-895 y Fn(h)p 335 868 70 2 v 335 897 a Fm(ESC)p 335 904
-V 402 895 a Fn(i)417 897 y Fd(\))g Fe(.)c(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)23
-b Ff(17)75 942 y Fd(previous-h)o(is)o(tor)o(y)10 b(\(C-p\))c
-Fe(.)t(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)18 b Ff(12)75 1072 y Fs(Q)75 1133 y Fd(quoted-ins)o(er)o
-(t)10 b(\(C-q)h(or)h(C-v\))c Fe(.)e(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)h(.)f(.)22 b Ff(14)75 1263 y Fs(R)75
-1323 y Fd(re-read-in)o(it)o(-fi)o(le)9 b(\(C-x)i(C-r\))5
-b Fe(.)h(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)18
-b Ff(17)75 1369 y Fd(readline)s Fe(.)s(.)7 b(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)16 b Ff(21)75
-1415 y Fd(redraw-cur)o(re)o(nt-)o(li)o(ne)9 b(\(\))d
-Fe(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)18 b Ff(12)75 1461 y Fd(reverse-se)o(ar)o(ch-)o(hi)o
-(sto)o(ry)9 b(\(C-r\))g Fe(.)d(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)23 b Ff(13)75 1506 y Fd(revert-lin)o(e)10
-b(\(M-r\))d Fe(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)22 b Ff(17)75
-1552 y Fd(rl_add_def)o(un)6 b Fe(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)22 b Ff(28)75 1598 y Fd(rl_add_fun)o(ma)o(p_e)o(nt)o(ry)
-t Fe(.)s(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Ff(31)75 1643 y Fd(rl_add_und)o(o)7
-b Fe(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)23
-b Ff(32)75 1689 y Fd(rl_alphabe)o(ti)o(c)9 b Fe(.)s(.)d(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)22 b Ff(36)75 1735 y Fd(rl_already)o(_p)o(rom)o
-(pt)o(ed)t Fe(.)s(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Ff(25)75
-1781 y Fd(rl_attempt)o(ed)o(_co)o(mp)o(let)o(ion)o(_f)o(unc)o(ti)o(on)t
-Fe(.)s(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)17 b Ff(43)75
-1826 y Fd(rl_attempt)o(ed)o(_co)o(mp)o(let)o(ion)o(_o)o(ver)6
-b Fe(.)s(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)20
-b Ff(46)75 1872 y Fd(rl_basic_q)o(uo)o(te_)o(ch)o(ara)o(cte)o(rs)8
-b Fe(.)t(.)e(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-22 b Ff(45)75 1918 y Fd(rl_basic_w)o(or)o(d_b)o(re)o(ak_)o(cha)o(ra)o
-(cte)o(rs)5 b Fe(.)s(.)h(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)18
-b Ff(45)75 1964 y Fd(rl_begin_u)o(nd)o(o_g)o(ro)o(up)t
-Fe(.)s(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Ff(32)75 2009 y Fd(rl_bind_ke)o(y)7
-b Fe(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)23
-b Ff(30)75 2055 y Fd(rl_bind_ke)o(y_)o(in_)o(ma)o(p)5
-b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)18 b Ff(30)75 2101 y
-Fd(rl_binding)o(_k)o(eym)o(ap)5 b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)19
-b Ff(27)75 2146 y Fd(rl_callbac)o(k_)o(han)o(dl)o(er_)o(ins)o(ta)o(ll)7
-b Fe(.)s(.)g(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)20
-b Ff(38)75 2192 y Fd(rl_callbac)o(k_)o(han)o(dl)o(er_)o(rem)o(ov)o(e)8
-b Fe(.)t(.)e(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)21
-b Ff(38)75 2238 y Fd(rl_callbac)o(k_)o(rea)o(d_)o(cha)o(r)9
-b Fe(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)25 b Ff(38)75 2284 y Fd(rl_catch_s)o(ig)o(nal)o(s)6
-b Fe(.)t(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)19 b Ff(40)75
-2329 y Fd(rl_catch_s)o(ig)o(win)o(ch)5 b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)19 b Ff(40)75 2375 y Fd(rl_char_is)o(_q)o(uot)o(ed)o(_p)t
-Fe(.)s(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Ff(44)75 2421 y Fd(rl_cleanup)o(_a)o
-(fte)o(r_)o(sig)o(nal)7 b Fe(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)23 b Ff(40)75 2467 y
-Fd(rl_clear_m)o(es)o(sag)o(e)6 b Fe(.)t(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)
-19 b Ff(33)75 2512 y Fd(rl_clear_p)o(en)o(din)o(g_)o(inp)o(ut)8
-b Fe(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)24 b Ff(35)1012 149 y Fd(rl_clear_si)o(gn)o(als)6
-b Fe(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)20 b Ff(41)1012
-196 y Fd(rl_complete)6 b Fe(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)24 b Ff(42)1012 242 y Fd(rl_complete)o(_i)o(nte)o(rn)o(al)s
-Fe(.)t(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)17 b Ff(42)1012 288 y Fd(rl_complete)o(r_)o
-(quo)o(te)o(_ch)o(ar)o(act)o(ers)5 b Fe(.)t(.)h(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)20 b Ff(45)1012 335 y Fd(rl_complete)o(r_)o(wor)o
-(d_)o(bre)o(ak)o(_ch)o(ara)o(ct)o(ers)8 b Fe(.)e(.)g(.)g(.)h(.)f(.)g(.)
-25 b Ff(45)1012 381 y Fd(rl_completi)o(on)o(_ap)o(pe)o(nd_)o(ch)o(ara)o
-(cte)o(r)5 b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)19
-b Ff(45)1012 427 y Fd(rl_completi)o(on)o(_di)o(sp)o(lay)o(_m)o(atc)o
-(hes)o(_h)o(ook)8 b Fe(.)e(.)g(.)g(.)h(.)f(.)g(.)25 b
-Ff(45)1012 474 y Fd(rl_completi)o(on)o(_en)o(tr)o(y_f)o(un)o(cti)o(on)s
-Fe(.)s(.)6 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)17 b Ff(42,)c(43)1012
-520 y Fd(rl_completi)o(on)o(_ma)o(rk)o(_sy)o(ml)o(ink)o(_di)o(rs)t
-Fe(.)s(.)7 b(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)18 b Ff(46)1012
-566 y Fd(rl_completi)o(on)o(_ma)o(tc)o(hes)8 b Fe(.)f(.)f(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)25
-b Ff(43)1012 613 y Fd(rl_completi)o(on)o(_mo)o(de)t Fe(.)t(.)6
-b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)g(.)19 b Ff(43)1012 659 y Fd(rl_completi)o(on)o(_qu)
-o(er)o(y_i)o(te)o(ms)9 b Fe(.)s(.)d(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)g(.)23 b Ff(45)1012 705 y Fd(rl_completi)o(on)o(_su)
-o(pp)o(res)o(s_)o(app)o(end)5 b Fe(.)t(.)h(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)20 b Ff(46)1012 752 y Fd(rl_completi)o(on)o(_ty)o(pe)t
-Fe(.)t(.)6 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)19 b Ff(46)1012 798 y
-Fd(rl_copy_key)o(ma)o(p)8 b Fe(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)21 b Ff(29)1012 844 y Fd(rl_copy_tex)o(t)6 b Fe(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)23 b Ff(34)1012 891 y
-Fd(rl_crlf)t Fe(.)t(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)17 b Ff(33)1012 937 y Fd(rl_delete_t)o(ex)o(t)8
-b Fe(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)21 b
-Ff(34)1012 983 y Fd(rl_deprep_t)o(er)o(m_f)o(un)o(cti)o(on)7
-b Fe(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)24 b Ff(26)1012 1030 y Fd(rl_deprep_t)o(er)o(min)o(al)t
-Fe(.)t(.)6 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)19 b Ff(35)1012 1076
-y Fd(rl_ding)t Fe(.)t(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)17 b Ff(36)1012 1122 y Fd(rl_director)o(y_)o
-(com)o(pl)o(eti)o(on)o(_ho)o(ok)7 b Fe(.)s(.)f(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)g(.)h(.)20 b Ff(44)1012 1169 y Fd(rl_discard_)o(ke)o
-(yma)o(p)6 b Fe(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)19 b Ff(29)1012
-1215 y Fd(rl_dispatch)o(in)o(g)8 b Fe(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)21 b Ff(25)1012 1261 y Fd(rl_display_)o(ma)o(tch)o(_l)o
-(ist)8 b Fe(.)f(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)h(.)25 b Ff(36)1012 1308 y Fd(rl_do_undo)8
-b Fe(.)e(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)24
-b Ff(32)1012 1354 y Fd(rl_done)t Fe(.)t(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)17 b Ff(24)1012
-1400 y Fd(rl_editing_)o(mo)o(de)7 b Fe(.)s(.)f(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)21 b Ff(28)1012 1447 y Fd(rl_end)5 b Fe(.)t(.)h(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)18
-b Ff(24)1012 1493 y Fd(rl_end_undo)o(_g)o(rou)o(p)6 b
-Fe(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)19 b Ff(32)1012 1539
-y Fd(rl_erase_em)o(pt)o(y_l)o(in)o(e)t Fe(.)t(.)6 b(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)18
-b Ff(25)1012 1586 y Fd(rl_event_ho)o(ok)8 b Fe(.)s(.)e(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)22 b Ff(26)1012 1632 y Fd(rl_execute_)o(ne)o
-(xt)7 b Fe(.)s(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21
-b Ff(35)1012 1678 y Fd(rl_executin)o(g_)o(key)o(ma)o(p)t
-Fe(.)t(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)18 b Ff(26)1012 1725 y Fd(rl_executin)o(g_)
-o(mac)o(ro)t Fe(.)t(.)6 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)19 b Ff(27)1012
-1771 y Fd(rl_expand_p)o(ro)o(mpt)6 b Fe(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)20 b Ff(34)1012 1817 y Fd(rl_explicit)o(_a)o(rg)7
-b Fe(.)s(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21 b Ff(28)1012
-1864 y Fd(rl_extend_l)o(in)o(e_b)o(uf)o(fer)8 b Fe(.)f(.)f(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)25
-b Ff(36)1012 1910 y Fd(rl_filename)o(_c)o(omp)o(le)o(tio)o(n_)o(des)o
-(ire)o(d)5 b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)19
-b Ff(46)1012 1956 y Fd(rl_filename)o(_c)o(omp)o(le)o(tio)o(n_)o(fun)o
-(cti)o(on)t Fe(.)s(.)7 b(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)18
-b Ff(43)1012 2003 y Fd(rl_filename)o(_d)o(equ)o(ot)o(ing)o(_f)o(unc)o
-(tio)o(n)5 b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)19
-b Ff(44)1012 2049 y Fd(rl_filename)o(_q)o(uot)o(e_)o(cha)o(ra)o(cte)o
-(rs)7 b Fe(.)s(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)20
-b Ff(45)1012 2095 y Fd(rl_filename)o(_q)o(uot)o(in)o(g_d)o(es)o(ire)o
-(d)8 b Fe(.)s(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)21
-b Ff(46)1012 2142 y Fd(rl_filename)o(_q)o(uot)o(in)o(g_f)o(un)o(cti)o
-(on)7 b Fe(.)s(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)20
-b Ff(44)1012 2188 y Fd(rl_forced_u)o(pd)o(ate)o(_d)o(isp)o(la)o(y)7
-b Fe(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)23 b Ff(33)1012 2234 y Fd(rl_free_lin)o(e_)o(sta)o(te)t
-Fe(.)t(.)6 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)19 b Ff(40)1012 2281
-y Fd(rl_free_und)o(o_)o(lis)o(t)6 b Fe(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-19 b Ff(32)1012 2327 y Fd(rl_function)o(_d)o(ump)o(er)t
-Fe(.)t(.)6 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)19 b Ff(31)1012 2373
-y Fd(rl_function)o(_o)o(f_k)o(ey)o(seq)8 b Fe(.)f(.)f(.)g(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)25
-b Ff(31)1012 2420 y Fd(rl_funmap_n)o(am)o(es)7 b Fe(.)s(.)f(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)21 b Ff(31)1012 2466 y Fd(rl_generic_)o(bi)o(nd)7
-b Fe(.)s(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21 b Ff(30)1012
-2512 y Fd(rl_get_keym)o(ap)8 b Fe(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)22 b Ff(29)p eop
-%%Page: 61 63
-61 62 bop 75 -58 a Fu(F)l(unction)16 b(and)f(V)l(ariable)i(Index)1187
-b(61)75 149 y Fd(rl_get_key)o(ma)o(p_b)o(y_)o(nam)o(e)9
-b Fe(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)25 b Ff(29)75 196 y Fd(rl_get_key)o(ma)o(p_n)o(am)o(e)5
-b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)18 b Ff(29)75 242 y Fd(rl_get_scr)o(ee)
-o(n_s)o(iz)o(e)5 b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)18
-b Ff(41)75 288 y Fd(rl_get_ter)o(mc)o(ap)8 b Fe(.)s(.)e(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)21 b Ff(37)75 335 y Fd(rl_getc)t
-Fe(.)t(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)17 b Ff(35)75 381 y Fd(rl_getc_fu)o(nc)o(tio)o(n)6
-b Fe(.)t(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)19 b Ff(26)75
-427 y Fd(rl_gnu_rea)o(dl)o(ine)o(_p)5 b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)19 b Ff(25)75 474 y Fd(rl_ignore_)o(co)o(mpl)o(et)o(ion)o(_du)o(pl)
-o(ica)o(te)o(s)5 b Fe(.)s(.)h(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)18
-b Ff(46)75 520 y Fd(rl_ignore_)o(so)o(me_)o(co)o(mpl)o(eti)o(on)o(s_f)o
-(un)o(cti)o(on)7 b Fe(.)g(.)f(.)g(.)g(.)g(.)24 b Ff(44)75
-566 y Fd(rl_inhibit)o(_c)o(omp)o(le)o(tio)o(n)9 b Fe(.)d(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)25
-b Ff(47)75 613 y Fd(rl_initial)o(iz)o(e)9 b Fe(.)s(.)d(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)22 b Ff(36)75 659 y Fd(rl_insert_)o(co)o(mpl)o
-(et)o(ion)o(s)9 b Fe(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)25 b Ff(43)75 705 y Fd(rl_insert_)o(te)
-o(xt)8 b Fe(.)s(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21
-b Ff(34)75 752 y Fd(rl_instrea)o(m)7 b Fe(.)f(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)g(.)23 b Ff(25)75 798 y Fd(rl_invokin)o(g_)o
-(key)o(se)o(qs)t Fe(.)s(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Ff(31)75
-844 y Fd(rl_invokin)o(g_)o(key)o(se)o(qs_)o(in_)o(ma)o(p)8
-b Fe(.)t(.)e(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)21
-b Ff(31)75 891 y Fd(rl_kill_te)o(xt)6 b Fe(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)22 b Ff(34)75 937 y Fd(rl_last_fu)o(nc)6
-b Fe(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)22
-b Ff(26)75 983 y Fd(rl_library)o(_v)o(ers)o(io)o(n)5
-b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)18 b Ff(25)75 1030 y
-Fd(rl_line_bu)o(ff)o(er)8 b Fe(.)s(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)21 b Ff(24)75 1076 y Fd(rl_list_fu)o(nm)o(ap_)o(na)o(mes)s
-Fe(.)s(.)6 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)16 b Ff(31)75 1122 y Fd(rl_macro_b)o(in)o(d)9
-b Fe(.)s(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)22
-b Ff(37)75 1169 y Fd(rl_macro_d)o(um)o(per)6 b Fe(.)t(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)20 b Ff(37)75 1215 y Fd(rl_make_ba)o(re)o(_ke)o(ym)
-o(ap)t Fe(.)s(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Ff(29)75 1261
-y Fd(rl_make_ke)o(ym)o(ap)8 b Fe(.)s(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)21 b Ff(29)75 1308 y Fd(rl_mark)t Fe(.)t(.)6 b(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)17
-b Ff(24)75 1354 y Fd(rl_message)7 b Fe(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)24 b Ff(33)75 1400 y Fd(rl_modifyi)o(ng)6
-b Fe(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)22
-b Ff(32)75 1447 y Fd(rl_named_f)o(un)o(cti)o(on)5 b Fe(.)s(.)i(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)19 b Ff(31)75 1493 y Fd(rl_num_cha)o(rs)o(_to)o(_r)o
-(ead)s Fe(.)s(.)6 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)16 b Ff(24)75 1539 y Fd(rl_numeric)o(_a)
-o(rg)8 b Fe(.)s(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21
-b Ff(28)75 1586 y Fd(rl_on_new_)o(li)o(ne)8 b Fe(.)s(.)e(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)21 b Ff(33)75 1632 y Fd(rl_on_new_)o(li)o(ne_)o
-(wi)o(th_)o(pro)o(mp)o(t)8 b Fe(.)t(.)e(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)g(.)h(.)f(.)21 b Ff(33)75 1678 y Fd(rl_outstre)o(am)6
-b Fe(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)22
-b Ff(26)75 1725 y Fd(rl_parse_a)o(nd)o(_bi)o(nd)5 b Fe(.)s(.)i(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)19 b Ff(31)75 1771 y Fd(rl_pending)o(_i)o(npu)o(t)6
-b Fe(.)t(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)19 b Ff(24)75
-1817 y Fd(rl_point)s Fe(.)s(.)7 b(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)16 b Ff(24)75 1864 y Fd(rl_possibl)o(e_)o
-(com)o(pl)o(eti)o(ons)7 b Fe(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)23 b Ff(42)75 1910 y
-Fd(rl_pre_inp)o(ut)o(_ho)o(ok)5 b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)19
-b Ff(26)75 1956 y Fd(rl_prep_te)o(rm)o(_fu)o(nc)o(tio)o(n)9
-b Fe(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)25 b Ff(26)75 2003 y Fd(rl_prep_te)o(rm)o(ina)o(l)6
-b Fe(.)t(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)19 b Ff(35)75
-2049 y Fd(rl_prompt)8 b Fe(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)24 b Ff(25)75 2095 y Fd(rl_push_ma)o(cr)o(o_i)o(np)
-o(ut)t Fe(.)s(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Ff(34)75 2142
-y Fd(rl_read_in)o(it)o(_fi)o(le)5 b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-19 b Ff(31)75 2188 y Fd(rl_read_ke)o(y)7 b Fe(.)f(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)23 b Ff(34)75 2234 y
-Fd(rl_readlin)o(e_)o(nam)o(e)6 b Fe(.)t(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)
-19 b Ff(25)75 2281 y Fd(rl_readlin)o(e_)o(sta)o(te)5
-b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)19 b Ff(27)75 2327
-y Fd(rl_readlin)o(e_)o(ver)o(si)o(on)t Fe(.)s(.)6 b(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)17
-b Ff(25)75 2373 y Fd(rl_redispl)o(ay)6 b Fe(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)22 b Ff(33)75 2420 y Fd(rl_redispl)o(ay)o(_fu)o
-(nc)o(tio)o(n)9 b Fe(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)25 b Ff(26)75 2466 y
-Fd(rl_replace)o(_l)o(ine)6 b Fe(.)t(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-20 b Ff(36)75 2512 y Fd(rl_reset_a)o(ft)o(er_)o(si)o(gna)o(l)9
-b Fe(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)25 b Ff(40)1012 149 y Fd(rl_reset_li)o(ne)o(_st)o(at)o
-(e)t Fe(.)t(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)18 b Ff(33)1012 195
-y Fd(rl_reset_te)o(rm)o(ina)o(l)6 b Fe(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-19 b Ff(35)1012 241 y Fd(rl_resize_t)o(er)o(min)o(al)t
-Fe(.)t(.)6 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)19 b Ff(41)1012 287 y
-Fd(rl_restore_)o(pr)o(omp)o(t)6 b Fe(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)19
-b Ff(34)1012 333 y Fd(rl_save_pro)o(mp)o(t)8 b Fe(.)s(.)e(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)21 b Ff(33)1012 379 y Fd(rl_set_key)8
-b Fe(.)e(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)24
-b Ff(30)1012 424 y Fd(rl_set_keyb)o(oa)o(rd_)o(in)o(put)o(_t)o(ime)o
-(out)5 b Fe(.)t(.)h(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)20
-b Ff(35)1012 470 y Fd(rl_set_keym)o(ap)8 b Fe(.)s(.)e(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)22 b Ff(29)1012 516 y Fd(rl_set_pare)o(n_)o
-(bli)o(nk)o(_ti)o(me)o(out)7 b Fe(.)t(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)22 b Ff(37)1012 562 y Fd(rl_set_prom)o(pt)8
-b Fe(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)22
-b Ff(34)1012 608 y Fd(rl_set_scre)o(en)o(_si)o(ze)t Fe(.)t(.)6
-b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)g(.)19 b Ff(41)1012 654 y Fd(rl_set_sign)o(al)o(s)8
-b Fe(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)21 b
-Ff(41)1012 700 y Fd(rl_show_cha)o(r)6 b Fe(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)23 b Ff(33)1012 745 y Fd(rl_special_)o(pr)o
-(efi)o(xe)o(s)t Fe(.)t(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)18 b Ff(45)1012
-791 y Fd(rl_startup_)o(ho)o(ok)7 b Fe(.)s(.)f(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)21 b Ff(26)1012 837 y Fd(rl_stuff_ch)o(ar)8 b
-Fe(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)22
-b Ff(35)1012 883 y Fd(rl_terminal)o(_n)o(ame)6 b Fe(.)s(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)20 b Ff(25)1012 929 y Fd(rl_tty_set_)o(de)o(fau)o(lt)o
-(_bi)o(nd)o(ing)o(s)8 b Fe(.)s(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)21 b Ff(35)1012 975 y Fd(rl_unbind_c)o(om)o(man)o(d_)o
-(in_)o(ma)o(p)7 b Fe(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)h(.)f(.)23 b Ff(30)1012 1020 y Fd(rl_unbind_f)o(un)o(cti)o
-(on)o(_in)o(_m)o(ap)9 b Fe(.)s(.)d(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)g(.)23 b Ff(30)1012 1066 y Fd(rl_unbind_k)o(ey)8
-b Fe(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)22
-b Ff(30)1012 1112 y Fd(rl_unbind_k)o(ey)o(_in)o(_m)o(ap)s
-Fe(.)t(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)17 b Ff(30)1012 1158 y Fd(rl_username)o(_c)o
-(omp)o(le)o(tio)o(n_)o(fun)o(cti)o(on)t Fe(.)s(.)7 b(.)f(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)18 b Ff(43)1012 1204 y Fd(rl_variable)o(_b)o(ind)6
-b Fe(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)20 b Ff(37)1012
-1250 y Fd(rl_variable)o(_d)o(ump)o(er)t Fe(.)t(.)6 b(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
-(.)19 b Ff(37)1012 1380 y Fs(S)1012 1441 y Fd(self-insert)9
-b(\(a,)j(b,)g(A,)g(1,)g(!,)g(...)o(\))6 b Fe(.)g(.)g(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)20 b Ff(14)1012 1487 y Fd(set-mark)10
-b(\(C-@\))g Fe(.)c(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)25
-b Ff(17)1012 1533 y(sho)o(w-all-if-am)o(bigu)q(ous)14
-b Fe(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)23 b Ff(7)1012 1579
-y Fd(start-kbd-m)o(ac)o(ro)9 b(\(C-x)j(\(\))c Fe(.)d(.)i(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)22
-b Ff(17)1012 1701 y Fs(T)1012 1763 y Fd(tab-insert)9
-b(\(M-)1281 1761 y Fn(h)p 1292 1735 74 2 v 1292 1763
-a Fm(T)m(AB)p 1292 1770 V 1364 1761 a Fn(i)1379 1763
-y Fd(\))e Fe(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)20 b Ff(14)1012 1808
-y Fd(tilde-expan)o(d)10 b(\(M-~\))f Fe(.)s(.)e(.)f(.)g(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)22
-b Ff(17)1012 1854 y Fd(transpose-c)o(ha)o(rs)9 b(\(C-t\))d
-Fe(.)f(.)h(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)20 b Ff(14)1012 1900 y Fd(transpose-w)o(or)o(ds)9
-b(\(M-t\))d Fe(.)f(.)h(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)20 b Ff(14)1012 2030 y
-Fs(U)1012 2092 y Fd(undo)12 b(\(C-_)f(or)h(C-x)g(C-u\))c
-Fe(.)t(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)21 b Ff(17)1012 2137 y Fd(universal-a)o(rg)o
-(ume)o(nt)9 b(\(\))d Fe(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)20 b Ff(16)1012
-2183 y Fd(unix-line-d)o(is)o(car)o(d)10 b(\(C-u\))5 b
-Fe(.)t(.)h(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)18 b Ff(15)1012 2229 y Fd(unix-word-r)o(ub)o(out)9
-b(\(C-w\))d Fe(.)t(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)19 b Ff(15)1012 2275 y Fd(upcase-word)9
-b(\(M-u\))e Fe(.)f(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)23 b Ff(14)1012
-2405 y Fs(V)1012 2466 y Fd(vi-editing-)o(mo)o(de)9 b(\(M-C-j\))c
-Fe(.)t(.)h(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)18 b Ff(18)1012 2512 y(visible-stats)c Fe(.)6
-b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)24
-b Ff(7)p eop
-%%Page: 62 64
-62 63 bop 75 -58 a Fu(62)1299 b(GNU)15 b(Readline)h(Library)75
-149 y Fs(Y)75 242 y Fd(yank)11 b(\(C-y\))5 b Fe(.)g(.)h(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)18 b Ff(16)1012
-149 y Fd(yank-last-a)o(rg)9 b(\(M-.)i(or)h(M-_\))c Fe(.)f(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)23
-b Ff(13)1012 196 y Fd(yank-nth-ar)o(g)10 b(\(M-C-y\))d
-Fe(.)s(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)h(.)20 b Ff(13)1012 242 y Fd(yank-pop)10
-b(\(M-y\))g Fe(.)c(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)25
-b Ff(16)p eop
-%%Page: -1 65
--1 64 bop 1862 -58 a Fu(i)75 149 y Fq(T)-7 b(able)27
-b(of)f(Con)n(ten)n(ts)75 320 y Fs(1)67 b(Command)22 b(Line)i(Editing)d
-Fa(.)10 b(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)h
-(.)f(.)g(.)g(.)42 b Fs(1)224 389 y Fu(1.1)j(In)o(tro)q(duction)16
-b(to)f(Line)h(Editing)e Fl(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)27 b Fu(1)224 444 y(1.2)45 b(Readline)16 b(In)o(teraction)8
-b Fl(.)g(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)23 b Fu(1)374 499 y(1.2.1)44 b(Readline)16
-b(Bare)f(Essen)o(tials)f Fl(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)27
-b Fu(1)374 553 y(1.2.2)44 b(Readline)16 b(Mo)o(v)o(emen)o(t)e(Commands)
-7 b Fl(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
-(.)h(.)21 b Fu(2)374 608 y(1.2.3)44 b(Readline)16 b(Killing)i(Commands)
-11 b Fl(.)c(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)h(.)f(.)h(.)25 b Fu(2)374 663 y(1.2.4)44 b(Readline)16
-b(Argumen)o(ts)c Fl(.)c(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)27
-b Fu(3)374 718 y(1.2.5)44 b(Searc)o(hing)16 b(for)e(Commands)h(in)h
-(the)f(History)e Fl(.)8 b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)27
-b Fu(3)224 773 y(1.3)45 b(Readline)16 b(Init)h(File)e
-Fl(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)29 b Fu(4)374 827 y(1.3.1)44 b(Readline)16
-b(Init)g(File)h(Syn)o(tax)7 b Fl(.)g(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)21
-b Fu(4)374 882 y(1.3.2)44 b(Conditional)16 b(Init)g(Constructs)5
-b Fl(.)i(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)h(.)g(.)f(.)19 b Fu(9)374 937 y(1.3.3)44 b(Sample)16
-b(Init)g(File)11 b Fl(.)e(.)e(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
-(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)26 b Fu(9)224 992 y(1.4)45 b(Bindable)17 b(Readline)g(Commands)
-6 b Fl(.)h(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)21 b Fu(12)374
-1046 y(1.4.1)44 b(Commands)14 b(F)l(or)h(Mo)o(ving)e
-Fl(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)h(.)f(.)h(.)f(.)h(.)28 b Fu(12)374 1101 y(1.4.2)44
-b(Commands)14 b(F)l(or)h(Manipulating)i(The)e(History)9
-b Fl(.)e(.)h(.)f(.)h(.)f(.)h(.)24 b Fu(12)374 1156 y(1.4.3)44
-b(Commands)14 b(F)l(or)h(Changing)h(T)l(ext)e Fl(.)8
-b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)30
-b Fu(14)374 1211 y(1.4.4)44 b(Killing)18 b(And)e(Y)l(anking)9
-b Fl(.)e(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)24 b Fu(15)374
-1266 y(1.4.5)44 b(Sp)q(ecifying)17 b(Numeric)f(Argumen)o(ts)c
-Fl(.)c(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)27
-b Fu(16)374 1320 y(1.4.6)44 b(Letting)15 b(Readline)i(T)o(yp)q(e)e(F)l
-(or)g(Y)l(ou)10 b Fl(.)d(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)h(.)f(.)25 b Fu(16)374 1375 y(1.4.7)44 b(Keyb)q(oard)15
-b(Macros)6 b Fl(.)h(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)21
-b Fu(17)374 1430 y(1.4.8)44 b(Some)15 b(Miscellaneous)i(Commands)7
-b Fl(.)g(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-22 b Fu(17)224 1485 y(1.5)45 b(Readline)16 b(vi)g(Mo)q(de)e
-Fl(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)28 b Fu(18)75 1606 y Fs(2)67 b(Programming)23
-b(with)g(GNU)f(Readline)12 b Fa(.)f(.)g(.)f(.)g(.)g(.)g(.)h(.)f(.)35
-b Fs(21)224 1675 y Fu(2.1)45 b(Basic)16 b(Beha)o(vior)8
-b Fl(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)23 b Fu(21)224 1729 y(2.2)45
-b(Custom)14 b(F)l(unctions)7 b Fl(.)i(.)f(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)22 b Fu(22)374
-1784 y(2.2.1)44 b(Readline)16 b(T)o(yp)q(edefs)9 b Fl(.)g(.)e(.)h(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)g(.)f(.)h(.)24 b Fu(23)374 1839 y(2.2.2)44
-b(W)l(riting)16 b(a)e(New)i(F)l(unction)6 b Fl(.)i(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-21 b Fu(23)224 1894 y(2.3)45 b(Readline)16 b(V)l(ariables)g
-Fl(.)8 b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g
-(.)f(.)h(.)29 b Fu(24)224 1949 y(2.4)45 b(Readline)16
-b(Con)o(v)o(enience)h(F)l(unctions)7 b Fl(.)i(.)e(.)h(.)f(.)h(.)f(.)h
-(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-23 b Fu(28)374 2003 y(2.4.1)44 b(Naming)15 b(a)g(F)l(unction)e
-Fl(.)7 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)27 b Fu(28)374
-2058 y(2.4.2)44 b(Selecting)17 b(a)e(Keymap)6 b Fl(.)h(.)h(.)g(.)f(.)h
-(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)h(.)f(.)h(.)21 b Fu(29)374 2113 y(2.4.3)44 b(Binding)17
-b(Keys)5 b Fl(.)j(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)
-h(.)f(.)20 b Fu(30)374 2168 y(2.4.4)44 b(Asso)q(ciating)16
-b(F)l(unction)g(Names)f(and)g(Bindings)8 b Fl(.)h(.)f(.)f(.)h(.)f(.)h
-(.)23 b Fu(31)374 2222 y(2.4.5)44 b(Allo)o(wing)16 b(Undoing)f
-Fl(.)8 b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)
-f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)29 b
-Fu(32)374 2277 y(2.4.6)44 b(Redispla)o(y)10 b Fl(.)e(.)g(.)g(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)26
-b Fu(33)374 2332 y(2.4.7)44 b(Mo)q(difying)16 b(T)l(ext)7
-b Fl(.)g(.)g(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)22
-b Fu(34)374 2387 y(2.4.8)44 b(Character)14 b(Input)c
-Fl(.)f(.)e(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)25
-b Fu(34)374 2442 y(2.4.9)44 b(T)l(erminal)16 b(Managemen)o(t)11
-b Fl(.)c(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)
-h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)27 b Fu(35)374 2496 y(2.4.10)43
-b(Utilit)o(y)17 b(F)l(unctions)c Fl(.)7 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)28 b Fu(36)374 2551 y(2.4.11)43 b(Miscellaneous)18
-b(F)l(unctions)6 b Fl(.)i(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)21 b Fu(37)374
-2606 y(2.4.12)43 b(Alternate)16 b(In)o(terface)f Fl(.)7
-b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)30 b Fu(37)374 2661
-y(2.4.13)43 b(A)16 b(Readline)g(Example)9 b Fl(.)f(.)f(.)h(.)f(.)h(.)g
-(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)24 b Fu(38)p eop
-%%Page: -2 66
--2 65 bop 75 -58 a Fu(ii)1321 b(GNU)15 b(Readline)h(Library)224
-42 y(2.5)45 b(Readline)16 b(Signal)h(Handling)12 b Fl(.)c(.)g(.)f(.)h
-(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)27 b Fu(39)224 96
-y(2.6)45 b(Custom)14 b(Completers)f Fl(.)8 b(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)28 b Fu(41)374
-151 y(2.6.1)44 b(Ho)o(w)14 b(Completing)i(W)l(orks)10
-b Fl(.)d(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)f(.)25 b Fu(41)374 206 y(2.6.2)44
-b(Completion)16 b(F)l(unctions)6 b Fl(.)i(.)g(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-21 b Fu(42)374 261 y(2.6.3)44 b(Completion)16 b(V)l(ariables)c
-Fl(.)c(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)27 b Fu(43)374 315
-y(2.6.4)44 b(A)15 b(Short)g(Completion)h(Example)5 b
-Fl(.)j(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)20 b Fu(47)75 437 y Fs(Concept)i(Index)10 b Fa(.)i(.)e(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)33 b Fs(57)75 572
-y(F)-6 b(unction)25 b(and)d(V)-6 b(ariable)24 b(Index)9
-b Fa(.)i(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)32 b Fs(59)p eop
-%%Trailer
-end
-userdict /end-hook known{end-hook}if
-%%EOF
diff --git a/readline-doc-4.3/doc/readline_3.ps b/readline-doc-4.3/doc/readline_3.ps
deleted file mode 100644
index 7d20e17..0000000
--- a/readline-doc-4.3/doc/readline_3.ps
+++ /dev/null
@@ -1,1294 +0,0 @@
-%!PS-Adobe-3.0
-%%Creator: groff version 1.17.2
-%%CreationDate: Thu Jun 27 13:54:44 2002
-%%DocumentNeededResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Courier
-%%DocumentSuppliedResources: procset grops 1.17 2
-%%Pages: 14
-%%PageOrder: Ascend
-%%Orientation: Portrait
-%%EndComments
-%%BeginProlog
-%%BeginResource: procset grops 1.17 2
-/setpacking where{
-pop
-currentpacking
-true setpacking
-}if
-/grops 120 dict dup begin
-/SC 32 def
-/A/show load def
-/B{0 SC 3 -1 roll widthshow}bind def
-/C{0 exch ashow}bind def
-/D{0 exch 0 SC 5 2 roll awidthshow}bind def
-/E{0 rmoveto show}bind def
-/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
-/G{0 rmoveto 0 exch ashow}bind def
-/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/I{0 exch rmoveto show}bind def
-/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
-/K{0 exch rmoveto 0 exch ashow}bind def
-/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/M{rmoveto show}bind def
-/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
-/O{rmoveto 0 exch ashow}bind def
-/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/Q{moveto show}bind def
-/R{moveto 0 SC 3 -1 roll widthshow}bind def
-/S{moveto 0 exch ashow}bind def
-/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/SF{
-findfont exch
-[exch dup 0 exch 0 exch neg 0 0]makefont
-dup setfont
-[exch/setfont cvx]cvx bind def
-}bind def
-/MF{
-findfont
-[5 2 roll
-0 3 1 roll
-neg 0 0]makefont
-dup setfont
-[exch/setfont cvx]cvx bind def
-}bind def
-/level0 0 def
-/RES 0 def
-/PL 0 def
-/LS 0 def
-/MANUAL{
-statusdict begin/manualfeed true store end
-}bind def
-/PLG{
-gsave newpath clippath pathbbox grestore
-exch pop add exch pop
-}bind def
-/BP{
-/level0 save def
-1 setlinecap
-1 setlinejoin
-72 RES div dup scale
-LS{
-90 rotate
-}{
-0 PL translate
-}ifelse
-1 -1 scale
-}bind def
-/EP{
-level0 restore
-showpage
-}bind def
-/DA{
-newpath arcn stroke
-}bind def
-/SN{
-transform
-.25 sub exch .25 sub exch
-round .25 add exch round .25 add exch
-itransform
-}bind def
-/DL{
-SN
-moveto
-SN
-lineto stroke
-}bind def
-/DC{
-newpath 0 360 arc closepath
-}bind def
-/TM matrix def
-/DE{
-TM currentmatrix pop
-translate scale newpath 0 0 .5 0 360 arc closepath
-TM setmatrix
-}bind def
-/RC/rcurveto load def
-/RL/rlineto load def
-/ST/stroke load def
-/MT/moveto load def
-/CL/closepath load def
-/FL{
-currentgray exch setgray fill setgray
-}bind def
-/BL/fill load def
-/LW/setlinewidth load def
-/RE{
-findfont
-dup maxlength 1 index/FontName known not{1 add}if dict begin
-{
-1 index/FID ne{def}{pop pop}ifelse
-}forall
-/Encoding exch def
-dup/FontName exch def
-currentdict end definefont pop
-}bind def
-/DEFS 0 def
-/EBEGIN{
-moveto
-DEFS begin
-}bind def
-/EEND/end load def
-/CNT 0 def
-/level1 0 def
-/PBEGIN{
-/level1 save def
-translate
-div 3 1 roll div exch scale
-neg exch neg exch translate
-0 setgray
-0 setlinecap
-1 setlinewidth
-0 setlinejoin
-10 setmiterlimit
-[]0 setdash
-/setstrokeadjust where{
-pop
-false setstrokeadjust
-}if
-/setoverprint where{
-pop
-false setoverprint
-}if
-newpath
-/CNT countdictstack def
-userdict begin
-/showpage{}def
-}bind def
-/PEND{
-clear
-countdictstack CNT sub{end}repeat
-level1 restore
-}bind def
-end def
-/setpacking where{
-pop
-setpacking
-}if
-%%EndResource
-%%IncludeResource: font Times-Roman
-%%IncludeResource: font Times-Bold
-%%IncludeResource: font Times-Italic
-%%IncludeResource: font Courier
-grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
-def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron
-/scaron/zcaron/Ydieresis/trademark/quotesingle/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
-/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
-/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
-/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
-/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
-/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
-/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
-/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
-/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
-/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
-/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
-/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
-/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
-/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
-/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
-/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
-/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
-/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
-/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
-/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
-/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
-/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
-/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
-/Courier@0 ENC0/Courier RE/Times-Italic@0 ENC0/Times-Italic RE
-/Times-Bold@0 ENC0/Times-Bold RE/Times-Roman@0 ENC0/Times-Roman RE
-%%EndProlog
-%%Page: 1 1
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R/F1
-10.95/Times-Bold@0 SF -.219(NA)72 84 S(ME).219 E F0
-(readline \255 get a line from a user with editing)108 96 Q F1(SYNOPSIS)
-72 112.8 Q/F2 10/Times-Bold@0 SF(#include <stdio.h>)108 124.8 Q
-(#include <r)108 136.8 Q(eadline/r)-.18 E(eadline.h>)-.18 E(#include <r)
-108 148.8 Q(eadline/history)-.18 E(.h>)-.7 E/F3 10/Times-Italic@0 SF
--.15(ch)108 165.6 S(ar *).15 E F2 -.18(re)108 177.6 S(adline).18 E F0
-(\()2.5 E F3(const c)A(har *pr)-.15 E(ompt)-.45 E F0(\);)A F1(COPYRIGHT)
-72 194.4 Q F0(Readline is Cop)108 206.4 Q
-(yright \251 1989\2552002 by the Free Softw)-.1 E(are F)-.1 E
-(oundation, Inc.)-.15 E F1(DESCRIPTION)72 223.2 Q F2 -.18(re)108 235.2 S
-(adline).18 E F0 .088
-(will read a line from the terminal and return it, using)2.588 F F2(pr)
-2.587 E(ompt)-.18 E F0 .087(as a prompt.)2.587 F(If)5.087 E F2(pr)2.587
-E(ompt)-.18 E F0(is)2.587 E F2(NULL)2.587 E F0(or)2.587 E .42
-(the empty string, no prompt is issued.)108 247.2 R .421
-(The line returned is allocated with)5.42 F F3(malloc)2.921 E F0 .421
-(\(3\); the caller must free it).31 F(when \214nished.)108 259.2 Q
-(The line returned has the \214nal ne)5 E(wline remo)-.25 E -.15(ve)-.15
-G(d, so only the te).15 E(xt of the line remains.)-.15 E F2 -.18(re)108
-276 S(adline).18 E F0(of)3.79 E 1.29
-(fers editing capabilities while the user is entering the line.)-.25 F
-1.289(By def)6.289 F 1.289(ault, the line editing com-)-.1 F
-(mands are similar to those of emacs.)108 288 Q 2.5(Av)5 G
-(i\255style line editing interf)-2.5 E(ace is also a)-.1 E -.25(va)-.2 G
-(ilable.).25 E .272
-(This manual page describes only the most basic use of)108 304.8 R F2
--.18(re)2.772 G(adline).18 E F0 5.272(.M)C .272
-(uch more functionality is a)-5.272 F -.25(va)-.2 G .272(ilable; see).25
-F F3(The GNU Readline Libr)108 316.8 Q(ary)-.15 E F0(and)2.5 E F3
-(The GNU History Libr)2.5 E(ary)-.15 E F0(for additional information.)
-2.5 E F1(RETURN V)72 333.6 Q(ALUE)-1.478 E F2 -.18(re)108 345.6 S
-(adline).18 E F0 1.09(returns the te)3.59 F 1.09(xt of the line read.)
--.15 F 3.589(Ab)6.09 G 1.089(lank line returns the empty string.)-3.589
-F(If)6.089 E F2(EOF)3.589 E F0 1.089(is encountered)3.589 F .283
-(while reading a line, and the line is empty)108 357.6 R(,)-.65 E F2
-(NULL)2.783 E F0 .283(is returned.)2.783 F .283(If an)5.283 F F2(EOF)
-2.783 E F0 .283(is read with a non\255empty line, it)2.783 F
-(is treated as a ne)108 369.6 Q(wline.)-.25 E F1(NO)72 386.4 Q -.986(TA)
--.438 G(TION)-.054 E F0 .181
-(An emacs-style notation is used to denote k)108 398.4 R -.15(ey)-.1 G
-(strok).15 E 2.681(es. Control)-.1 F -.1(ke)2.681 G .18
-(ys are denoted by C\255)-.05 F F3 -.1(ke)C(y)-.2 E F0 2.68(,e)C .18
-(.g., C\255n means)-2.68 F 2.625(Control\255N. Similarly)108 410.4 R(,)
--.65 E F3(meta)2.625 E F0 -.1(ke)2.625 G .125(ys are denoted by M\255)
--.05 F F3 -.1(ke)C(y)-.2 E F0 2.625(,s)C 2.625(oM)-2.625 G .125
-(\255x means Meta\255X.)-2.625 F .126(\(On k)5.126 F -.15(ey)-.1 G .126
-(boards without a).15 F F3(meta)108 422.4 Q F0 -.1(ke)3.309 G 2.109 -.65
-(y, M)-.05 H<ad>.65 E F3(x)A F0 .809(means ESC)3.309 F F3(x)3.309 E F0
-3.309(,i)C .809(.e., press the Escape k)-3.309 F 1.108 -.15(ey t)-.1 H
-.808(hen the).15 F F3(x)3.308 E F0 -.1(ke)3.308 G 4.608 -.65(y. T)-.05 H
-.808(his mak).65 F .808(es ESC the)-.1 F F3 .808(meta pr)3.308 F(e\214x)
--.37 E F0(.)A .48(The combination M\255C\255)108 434.4 R F3(x)A F0 .48
-(means ESC\255Control\255)2.98 F F3(x)A F0 2.98(,o)C 2.98(rp)-2.98 G .48
-(ress the Escape k)-2.98 F .78 -.15(ey t)-.1 H .48
-(hen hold the Control k).15 F .78 -.15(ey w)-.1 H(hile).15 E
-(pressing the)108 446.4 Q F3(x)2.5 E F0 -.1(ke)2.5 G -.65(y.)-.05 G(\))
-.65 E .62(Readline commands may be gi)108 463.2 R -.15(ve)-.25 G 3.119
-(nn).15 G(umeric)-3.119 E F3(ar)3.119 E(guments)-.37 E F0 3.119(,w).27 G
-.619(hich normally act as a repeat count.)-3.119 F(Sometimes,)5.619 E
-(ho)108 475.2 Q(we)-.25 E -.15(ve)-.25 G 1.418 -.4(r, i).15 H 3.118(ti)
-.4 G 3.119(st)-3.118 G .619(he sign of the ar)-3.119 F .619
-(gument that is signi\214cant.)-.18 F -.15(Pa)5.619 G .619(ssing a ne)
-.15 F -.05(ga)-.15 G(ti).05 E .919 -.15(ve a)-.25 H -.18(rg).15 G .619
-(ument to a command that).18 F 1.019(acts in the forw)108 487.2 R 1.018
-(ard direction \(e.g.,)-.1 F F2(kill\255line)3.518 E F0 3.518(\)c)C
-1.018(auses that command to act in a backw)-3.518 F 1.018
-(ard direction.)-.1 F(Com-)6.018 E(mands whose beha)108 499.2 Q
-(vior with ar)-.2 E(guments de)-.18 E(viates from this are noted.)-.25 E
-.811(When a command is described as)108 516 R F3(killing)3.311 E F0(te)
-3.311 E .811(xt, the te)-.15 F .811(xt deleted is sa)-.15 F -.15(ve)-.2
-G 3.311(df).15 G .812(or possible future retrie)-3.311 F -.25(va)-.25 G
-3.312(l\().25 G F3(yank-)-3.312 E(ing)108 528 Q F0 2.529(\). The)B .029
-(killed te)2.529 F .029(xt is sa)-.15 F -.15(ve)-.2 G 2.529(di).15 G
-2.529(na)-2.529 G F3 .029(kill ring)B F0 5.029(.C)C(onsecuti)-5.029 E
-.329 -.15(ve k)-.25 H .029(ills cause the te).15 F .029
-(xt to be accumulated into one unit,)-.15 F .567(which can be yank)108
-540 R .567(ed all at once.)-.1 F .567(Commands which do not kill te)
-5.567 F .567(xt separate the chunks of te)-.15 F .567(xt on the kill)
--.15 F(ring.)108 552 Q F1(INITIALIZA)72 568.8 Q(TION FILE)-1.04 E F0
-.091(Readline is customized by putting commands in an initialization \
-\214le \(the)108 580.8 R F3(inputr)2.591 E(c)-.37 E F0 2.591
-(\214le\). The)2.591 F .091(name of this \214le)2.591 F 1.442(is tak)108
-592.8 R 1.443(en from the v)-.1 F 1.443(alue of the)-.25 F F2(INPUTRC)
-3.943 E F0(en)3.943 E 1.443(vironment v)-.4 F 3.943(ariable. If)-.25 F
-1.443(that v)3.943 F 1.443(ariable is unset, the def)-.25 F 1.443
-(ault is)-.1 F F3(~/.inputr)108 604.8 Q(c)-.37 E F0 5.359(.W).31 G .359
-(hen a program which uses the readline library starts up, the init \214\
-le is read, and the k)-5.359 F .658 -.15(ey b)-.1 H(ind-).15 E 1.083
-(ings and v)108 616.8 R 1.083(ariables are set.)-.25 F 1.083
-(There are only a fe)6.083 F 3.583(wb)-.25 G 1.083(asic constructs allo)
--3.583 F 1.084(wed in the readline init \214le.)-.25 F(Blank)6.084 E
-.737(lines are ignored.)108 628.8 R .737(Lines be)5.737 F .737
-(ginning with a)-.15 F F2(#)3.237 E F0 .737(are comments.)3.237 F .737
-(Lines be)5.737 F .737(ginning with a)-.15 F F2($)3.237 E F0 .736
-(indicate conditional)3.236 F 2.614(constructs. Other)108 640.8 R .114
-(lines denote k)2.614 F .414 -.15(ey b)-.1 H .115(indings and v).15 F
-.115(ariable settings.)-.25 F .115
-(Each program using this library may add)5.115 F(its o)108 652.8 Q
-(wn commands and bindings.)-.25 E -.15(Fo)108 669.6 S 2.5(re).15 G
-(xample, placing)-2.65 E(M\255Control\255u: uni)144 686.4 Q -.15(ve)-.25
-G(rsal\255ar).15 E(gument)-.18 E(or)108 698.4 Q(C\255Meta\255u: uni)144
-710.4 Q -.15(ve)-.25 G(rsal\255ar).15 E(gument)-.18 E(GNU Readline 4.3)
-72 768 Q(2002 January 22)126.24 E(1)195.95 E EP
-%%Page: 2 2
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R
-(into the)108 84 Q/F1 10/Times-Italic@0 SF(inputr)2.5 E(c)-.37 E F0 -.1
-(wo)2.5 G(uld mak).1 E 2.5(eM)-.1 G(\255C\255u e)-2.5 E -.15(xe)-.15 G
-(cute the readline command).15 E F1(univer)2.5 E(sal\255ar)-.1 E(gument)
--.37 E F0(.).68 E 2.795(The follo)108 100.8 R 2.795
-(wing symbolic character names are recognized while processing k)-.25 F
-3.095 -.15(ey b)-.1 H(indings:).15 E F1(DEL)5.295 E F0(,).53 E F1(ESC)
-5.295 E F0(,).72 E F1(ESCAPE)108 112.8 Q F0(,).73 E F1(LFD)2.5 E F0(,)
-.28 E F1(NEWLINE)2.5 E F0(,).73 E F1(RET)2.5 E F0(,)1.27 E F1(RETURN)2.5
-E F0(,)1.1 E F1 -.4(RU)2.5 G(BOUT).4 E F0(,)1.27 E F1(SP)2.5 E -.3(AC)
--.9 G(E).3 E F0(,).73 E F1(SPC)2.5 E F0 2.5(,a).72 G(nd)-2.5 E F1 -.5
-(TA)2.5 G(B).5 E F0(.).27 E .209
-(In addition to command names, readline allo)108 129.6 R .209(ws k)-.25
-F -.15(ey)-.1 G 2.709(st).15 G 2.709(ob)-2.709 G 2.709(eb)-2.709 G .209
-(ound to a string that is inserted when the k)-2.709 F .509 -.15(ey i)
--.1 H(s).15 E(pressed \(a)108 141.6 Q F1(macr)2.5 E(o)-.45 E F0(\).)A/F2
-10/Times-Bold@0 SF -.25(Ke)87 163.2 S 2.5(yB).25 G(indings)-2.5 E F0
-.382(The syntax for controlling k)108 175.2 R .682 -.15(ey b)-.1 H .382
-(indings in the).15 F F1(inputr)2.882 E(c)-.37 E F0 .382
-(\214le is simple.)2.882 F .382(All that is required is the name of the)
-5.382 F .382(command or the te)108 187.2 R .383(xt of a macro and a k)
--.15 F .683 -.15(ey s)-.1 H .383
-(equence to which it should be bound. The name may be speci-).15 F .853
-(\214ed in one of tw)108 199.2 R 3.353(ow)-.1 G .853
-(ays: as a symbolic k)-3.453 F 1.153 -.15(ey n)-.1 H .853
-(ame, possibly with).15 F F1(Meta\255)3.353 E F0(or)3.353 E F1(Contr)
-3.353 E(ol\255)-.45 E F0(pre\214x)3.353 E .853(es, or as a k)-.15 F -.15
-(ey)-.1 G(sequence.)108 211.2 Q 1.766(When using the form)108 228 R F2
--.1(ke)4.266 G(yname).1 E F0(:)A F1(function-name).833 E F0(or)4.266 E
-F1(macr)4.267 E(o)-.45 E F0(,)A F1 -.1(ke)4.267 G(yname)-.2 E F0 1.767
-(is the name of a k)4.267 F 2.067 -.15(ey s)-.1 H 1.767(pelled out in)
-.15 F 2.5(English. F)108 240 R(or e)-.15 E(xample:)-.15 E
-(Control\255u: uni)144 264 Q -.15(ve)-.25 G(rsal\255ar).15 E(gument)-.18
-E(Meta\255Rubout: backw)144 276 Q(ard\255kill\255w)-.1 E(ord)-.1 E
-(Control\255o: "> output")144 288 Q .229(In the abo)108 304.8 R .529
--.15(ve ex)-.15 H(ample,).15 E F1(C\255u)2.729 E F0 .229
-(is bound to the function)2.729 F F2(uni)2.729 E -.1(ve)-.1 G
-(rsal\255ar).1 E(gument)-.1 E F0(,)A F1(M-DEL)2.729 E F0 .228
-(is bound to the function)2.729 F F2(backward\255kill\255w)108 316.8 Q
-(ord)-.1 E F0 3.837(,a)C(nd)-3.837 E F1(C\255o)3.837 E F0 1.337
-(is bound to run the macro e)3.837 F 1.337
-(xpressed on the right hand side \(that is, to)-.15 F(insert the te)108
-328.8 Q(xt)-.15 E/F3 10/Courier@0 SF 6(>o)2.5 G(utput)-6 E F0
-(into the line\).)2.5 E .056(In the second form,)108 345.6 R F2("k)2.556
-E(eyseq")-.1 E F0(:)A F1(function\255name).833 E F0(or)2.556 E F1(macr)
-2.556 E(o)-.45 E F0(,)A F2 -.1(ke)2.556 G(yseq).1 E F0(dif)2.555 E .055
-(fers from)-.25 F F2 -.1(ke)2.555 G(yname).1 E F0(abo)2.555 E .355 -.15
-(ve i)-.15 H 2.555(nt).15 G .055(hat strings)-2.555 F 1.284
-(denoting an entire k)108 357.6 R 1.584 -.15(ey s)-.1 H 1.284(equence m\
-ay be speci\214ed by placing the sequence within double quotes.).15 F
-(Some)6.284 E .386(GNU Emacs style k)108 369.6 R .686 -.15(ey e)-.1 H
-.385(scapes can be used, as in the follo).15 F .385(wing e)-.25 F .385
-(xample, b)-.15 F .385(ut the symbolic character names)-.2 F
-(are not recognized.)108 381.6 Q("\\C\255u": uni)144 405.6 Q -.15(ve)
--.25 G(rsal\255ar).15 E(gument)-.18 E
-("\\C\255x\\C\255r": re\255read\255init\255\214le)144 417.6 Q
-("\\e[11~": "Function K)144 429.6 Q .3 -.15(ey 1)-.25 H(").15 E .237
-(In this e)108 446.4 R(xample,)-.15 E F1(C-u)2.737 E F0 .237(is ag)2.737
-F .238(ain bound to the function)-.05 F F2(uni)2.738 E -.1(ve)-.1 G
-(rsal\255ar).1 E(gument)-.1 E F0(.)A F1 .238(C-x C-r)5.238 F F0 .238
-(is bound to the function)2.738 F F2 -.18(re)108 458.4 S<ad72>.18 E
-(ead\255init\255\214le)-.18 E F0 2.5(,a)C(nd)-2.5 E F1(ESC [ 1 1 ~)2.5 E
-F0(is bound to insert the te)2.5 E(xt)-.15 E F3(Function Key 1)2.5 E F0
-(.)A(The full set of GNU Emacs style escape sequences a)108 475.2 Q -.25
-(va)-.2 G(ilable when specifying k).25 E .3 -.15(ey s)-.1 H(equences is)
-.15 E F2<5c43ad>144 487.2 Q F0(control pre\214x)20.3 E F2<5c4dad>144
-499.2 Q F0(meta pre\214x)18.08 E F2(\\e)144 511.2 Q F0
-(an escape character)28.78 E F2(\\\\)144 523.2 Q F0(backslash)30.44 E F2
-(\\")144 535.2 Q F0(literal ", a double quote)27.67 E F2(\\')144 547.2 Q
-F0(literal ', a single quote)29.89 E(In addition to the GNU Emacs style\
- escape sequences, a second set of backslash escapes is a)108 564 Q -.25
-(va)-.2 G(ilable:).25 E F2(\\a)144 576 Q F0(alert \(bell\))28.22 E F2
-(\\b)144 588 Q F0(backspace)27.66 E F2(\\d)144 600 Q F0(delete)27.66 E
-F2(\\f)144 612 Q F0(form feed)29.89 E F2(\\n)144 624 Q F0(ne)27.66 E
-(wline)-.25 E F2(\\r)144 636 Q F0(carriage return)28.78 E F2(\\t)144 648
-Q F0(horizontal tab)29.89 E F2(\\v)144 660 Q F0 -.15(ve)28.22 G
-(rtical tab).15 E F2(\\)144 672 Q F1(nnn)A F0
-(the eight-bit character whose v)18.22 E(alue is the octal v)-.25 E
-(alue)-.25 E F1(nnn)2.5 E F0(\(one to three digits\))2.5 E F2(\\x)144
-684 Q F1(HH)A F0(the eight-bit character whose v)13.78 E(alue is the he)
--.25 E(xadecimal v)-.15 E(alue)-.25 E F1(HH)2.5 E F0(\(one or tw)2.5 E
-2.5(oh)-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E .74(When entering the te)
-108 700.8 R .74(xt of a macro, single or double quotes should be used t\
-o indicate a macro de\214nition.)-.15 F .089(Unquoted te)108 712.8 R
-.089(xt is assumed to be a function name.)-.15 F .09(In the macro body)
-5.089 F 2.59(,t)-.65 G .09(he backslash escapes described abo)-2.59 F
--.15(ve)-.15 G(are e)108 724.8 Q 2.5(xpanded. Backslash)-.15 F
-(will quote an)2.5 E 2.5(yo)-.15 G(ther character in the macro te)-2.5 E
-(xt, including " and '.)-.15 E(GNU Readline 4.3)72 768 Q
-(2002 January 22)126.24 E(2)195.95 E EP
-%%Page: 3 3
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R/F1 10
-/Times-Bold@0 SF(Bash)108 84 Q F0(allo)2.93 E .43
-(ws the current readline k)-.25 F .73 -.15(ey b)-.1 H .429
-(indings to be displayed or modi\214ed with the).15 F F1(bind)2.929 E F0
--.2(bu)2.929 G .429(iltin command.).2 F 1.095
-(The editing mode may be switched during interacti)108 96 R 1.395 -.15
-(ve u)-.25 H 1.095(se by using the).15 F F1<ad6f>3.595 E F0 1.095
-(option to the)3.595 F F1(set)3.595 E F0 -.2(bu)3.595 G 1.095
-(iltin com-).2 F 3.097(mand. Other)108 108 R .597
-(programs using this library pro)3.097 F .597(vide similar mechanisms.)
--.15 F(The)5.597 E/F2 10/Times-Italic@0 SF(inputr)3.097 E(c)-.37 E F0
-.596(\214le may be edited and)3.096 F(re-read if a program does not pro)
-108 120 Q(vide an)-.15 E 2.5(yo)-.15 G(ther means to incorporate ne)-2.5
-E 2.5(wb)-.25 G(indings.)-2.5 E F1 -.92(Va)87 136.8 S(riables).92 E F0
-.043(Readline has v)108 148.8 R .044
-(ariables that can be used to further customize its beha)-.25 F(vior)-.2
-E 5.044(.A)-.55 G -.25(va)-2.5 G .044(riable may be set in the).25 F F2
-(inpu-)2.544 E(tr)108 160.8 Q(c)-.37 E F0
-(\214le with a statement of the form)2.5 E F1(set)144 177.6 Q F2
-(variable\255name value)2.5 E F0 .807(Except where noted, readline v)108
-194.4 R .807(ariables can tak)-.25 F 3.307(et)-.1 G .807(he v)-3.307 F
-(alues)-.25 E F1(On)3.307 E F0(or)3.307 E F1(Off)3.307 E F0 .807
-(\(without re)3.307 F -.05(ga)-.15 G .807(rd to case\).).05 F .807
-(The v)5.807 F(ari-)-.25 E(ables and their def)108 206.4 Q(ault v)-.1 E
-(alues are:)-.25 E F1(bell\255style \(audible\))108 223.2 Q F0 .01
-(Controls what happens when readline w)144 235.2 R .011
-(ants to ring the terminal bell.)-.1 F .011(If set to)5.011 F F1(none)
-2.511 E F0 2.511(,r)C .011(eadline ne)-2.511 F -.15(ve)-.25 G(r).15 E
-.94(rings the bell.)144 247.2 R .94(If set to)5.94 F F1(visible)3.44 E
-F0 3.44(,r)C .94(eadline uses a visible bell if one is a)-3.44 F -.25
-(va)-.2 G 3.44(ilable. If).25 F .94(set to)3.44 F F1(audible)3.44 E F0
-(,)A(readline attempts to ring the terminal')144 259.2 Q 2.5(sb)-.55 G
-(ell.)-2.5 E F1(comment\255begin \(`)108 271.2 Q(`#')-.63 E('\))-.63 E
-F0 .062(The string that is inserted in)144 283.2 R F1(vi)2.562 E F0 .062
-(mode when the)2.562 F F1(insert\255comment)2.562 E F0 .062
-(command is e)2.562 F -.15(xe)-.15 G 2.562(cuted. This).15 F(com-)2.562
-E(mand is bound to)144 295.2 Q F1(M\255#)2.5 E F0(in emacs mode and to)
-2.5 E F1(#)2.5 E F0(in vi command mode.)2.5 E F1(completion\255ignor)108
-307.2 Q(e\255case \(Off\))-.18 E F0(If set to)144 319.2 Q F1(On)2.5 E F0
-2.5(,r)C(eadline performs \214lename matching and completion in a case\
-\255insensiti)-2.5 E .3 -.15(ve f)-.25 H(ashion.).05 E F1
-(completion\255query\255items \(100\))108 331.2 Q F0 .53
-(This determines when the user is queried about vie)144 343.2 R .529
-(wing the number of possible completions gen-)-.25 F .56(erated by the)
-144 355.2 R F1(possible\255completions)3.06 E F0 3.06(command. It)3.06 F
-.561(may be set to an)3.061 F 3.061(yi)-.15 G(nte)-3.061 E .561(ger v)
--.15 F .561(alue greater than or)-.25 F .783(equal to zero.)144 367.2 R
-.783(If the number of possible completions is greater than or equal to \
-the v)5.783 F .782(alue of this)-.25 F -.25(va)144 379.2 S .237
-(riable, the user is ask).25 F .237(ed whether or not he wishes to vie)
--.1 F 2.737(wt)-.25 G .237(hem; otherwise the)-2.737 F 2.737(ya)-.15 G
-.237(re simply listed)-2.737 F(on the terminal.)144 391.2 Q F1(con)108
-403.2 Q -.1(ve)-.4 G(rt\255meta \(On\)).1 E F0 .613(If set to)144 415.2
-R F1(On)3.113 E F0 3.113(,r)C .613(eadline will con)-3.113 F -.15(ve)-.4
-G .613(rt characters with the eighth bit set to an ASCII k).15 F .912
--.15(ey s)-.1 H .612(equence by).15 F 1.315(stripping the eighth bit an\
-d pre\214xing it with an escape character \(in ef)144 427.2 R 1.316
-(fect, using escape as the)-.25 F F2(meta pr)144 439.2 Q(e\214x)-.37 E
-F0(\).)A F1(disable\255completion \(Off\))108 451.2 Q F0 .038(If set to)
-144 463.2 R F1(On)2.538 E F0 2.538(,r)C .038(eadline will inhibit w)
--2.538 F .038(ord completion.)-.1 F .038
-(Completion characters will be inserted into the)5.038 F(line as if the)
-144 475.2 Q 2.5(yh)-.15 G(ad been mapped to)-2.5 E F1(self-insert)2.5 E
-F0(.)A F1(editing\255mode \(emacs\))108 487.2 Q F0 .215
-(Controls whether readline be)144 499.2 R .215(gins with a set of k)-.15
-F .515 -.15(ey b)-.1 H .216(indings similar to emacs or vi.).15 F F1
-(editing\255mode)5.216 E F0(can be set to either)144 511.2 Q F1(emacs)
-2.5 E F0(or)2.5 E F1(vi)2.5 E F0(.)A F1(enable\255k)108 523.2 Q
-(eypad \(Off\))-.1 E F0 .893(When set to)144 535.2 R F1(On)3.393 E F0
-3.393(,r)C .893(eadline will try to enable the application k)-3.393 F
--.15(ey)-.1 G .893(pad when it is called.).15 F .892(Some sys-)5.893 F
-(tems need this to enable the arro)144 547.2 Q 2.5(wk)-.25 G -.15(ey)
--2.6 G(s.).15 E F1(expand\255tilde \(Off\))108 559.2 Q F0(If set to)144
-571.2 Q F1(on)2.5 E F0 2.5(,t)C(ilde e)-2.5 E
-(xpansion is performed when readline attempts w)-.15 E(ord completion.)
--.1 E F1(history-pr)108 583.2 Q(eser)-.18 E -.1(ve)-.1 G(-point).1 E F0
-1.492(If set to)144 595.2 R F1(on)3.992 E F0 3.992(,t)C 1.493(he histor\
-y code attempts to place point at the same location on each history lin\
-e)-3.992 F(retri)144 607.2 Q -.15(ve)-.25 G 2.5(dw).15 G(ith)-2.5 E F1
-(pr)2.5 E -.15(ev)-.18 G(ious-history).15 E F0(or)2.5 E F1(next-history)
-2.5 E F0(.)A F1(horizontal\255scr)108 619.2 Q(oll\255mode \(Off\))-.18 E
-F0 .449(When set to)144 631.2 R F1(On)2.949 E F0 2.949(,m)C(ak)-2.949 E
-.448(es readline use a single line for display)-.1 F 2.948(,s)-.65 G
-.448(crolling the input horizontally on a)-2.948 F 1.194(single screen \
-line when it becomes longer than the screen width rather than wrapping \
-to a ne)144 643.2 R(w)-.25 E(line.)144 655.2 Q F1(input\255meta \(Off\))
-108 667.2 Q F0 .367(If set to)144 679.2 R F1(On)2.867 E F0 2.867(,r)C
-.367(eadline will enable eight-bit input \(that is, it will not clear t\
-he eighth bit in the char)-2.867 F(-)-.2 E .956(acters it reads\), re)
-144 691.2 R -.05(ga)-.15 G .956
-(rdless of what the terminal claims it can support.).05 F .957(The name)
-5.956 F F1(meta\255\215ag)3.457 E F0 .957(is a)3.457 F(synon)144 703.2 Q
-(ym for this v)-.15 E(ariable.)-.25 E(GNU Readline 4.3)72 768 Q
-(2002 January 22)126.24 E(3)195.95 E EP
-%%Page: 4 4
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R/F1 10
-/Times-Bold@0 SF(isear)108 84 Q(ch\255terminators \(`)-.18 E
-(`C\255[ C\255J')-.63 E('\))-.63 E F0 .439(The string of characters tha\
-t should terminate an incremental search without subsequently e)144 96 R
--.15(xe)-.15 G(cut-).15 E .934(ing the character as a command.)144 108 R
-.935(If this v)5.935 F .935(ariable has not been gi)-.25 F -.15(ve)-.25
-G 3.435(nav).15 G .935(alue, the characters)-3.685 F/F2 10
-/Times-Italic@0 SF(ESC)3.435 E F0(and)144 120 Q F2(C\255J)2.5 E F0
-(will terminate an incremental search.)2.5 E F1 -.1(ke)108 132 S
-(ymap \(emacs\)).1 E F0 2.323(Set the current readline k)144 144 R -.15
-(ey)-.1 G 4.823(map. The).15 F 2.323(set of le)4.823 F -.05(ga)-.15 G
-4.823(lk).05 G -.15(ey)-4.923 G 2.323(map names is).15 F F2 2.323
-(emacs, emacs-standar)4.823 F(d,)-.37 E .808
-(emacs-meta, emacs-ctlx, vi, vi-mo)144 156 R(ve)-.1 E 3.308(,v)-.1 G
-(i-command)-3.308 E F0 3.308(,a)C(nd)-3.308 E F2(vi-insert)3.308 E F0(.)
-.68 E F2(vi)5.808 E F0 .808(is equi)3.308 F -.25(va)-.25 G .809(lent to)
-.25 F F2(vi-command)3.309 E F0(;)A F2(emacs)144 168 Q F0 .697(is equi)
-3.197 F -.25(va)-.25 G .697(lent to).25 F F2(emacs-standar)3.197 E(d)
--.37 E F0 5.697(.T)C .697(he def)-5.697 F .697(ault v)-.1 F .697
-(alue is)-.25 F F2(emacs)3.197 E F0 5.697(.T).27 G .697(he v)-5.697 F
-.697(alue of)-.25 F F1(editing\255mode)3.196 E F0(also af)144 180 Q
-(fects the def)-.25 E(ault k)-.1 E -.15(ey)-.1 G(map.).15 E F1
-(mark\255dir)108 192 Q(ectories \(On\))-.18 E F0(If set to)144 204 Q F1
-(On)2.5 E F0 2.5(,c)C(ompleted directory names ha)-2.5 E .3 -.15(ve a s)
--.2 H(lash appended.).15 E F1(mark\255modi\214ed\255lines \(Off\))108
-216 Q F0(If set to)144 228 Q F1(On)2.5 E F0 2.5(,h)C
-(istory lines that ha)-2.5 E .3 -.15(ve b)-.2 H
-(een modi\214ed are displayed with a preceding asterisk \().15 E F1(*)A
-F0(\).)A F1(mark\255symlink)108 240 Q(ed\255dir)-.1 E(ectories \(Off\))
--.18 E F0 .175(If set to)144 252 R F1(On)2.675 E F0 2.675(,c)C .175
-(ompleted names which are symbolic links to directories ha)-2.675 F .475
--.15(ve a s)-.2 H .175(lash appended \(sub-).15 F(ject to the v)144 264
-Q(alue of)-.25 E F1(mark\255dir)2.5 E(ectories)-.18 E F0(\).)A F1
-(match\255hidden\255\214les \(On\))108 276 Q F0 .193(This v)144 288 R
-.193(ariable, when set to)-.25 F F1(On)2.693 E F0 2.693(,c)C .192
-(auses readline to match \214les whose names be)-2.693 F .192
-(gin with a `.)-.15 F 2.692('\()-.7 G(hidden)-2.692 E 1.023
-(\214les\) when performing \214lename completion, unless the leading `.)
-144 300 R 3.523('i)-.7 G 3.523(ss)-3.523 G 1.024
-(upplied by the user in the)-3.523 F(\214lename to be completed.)144 312
-Q F1(output\255meta \(Off\))108 324 Q F0 .507(If set to)144 336 R F1(On)
-3.007 E F0 3.007(,r)C .507(eadline will display characters with the eig\
-hth bit set directly rather than as a meta-)-3.007 F(pre\214x)144 348 Q
-(ed escape sequence.)-.15 E F1(page\255completions \(On\))108 360 Q F0
-.808(If set to)144 372 R F1(On)3.308 E F0 3.308(,r)C .808
-(eadline uses an internal)-3.308 F F2(mor)3.308 E(e)-.37 E F0(-lik)A
-3.308(ep)-.1 G .808(ager to display a screenful of possible comple-)
--3.308 F(tions at a time.)144 384 Q F1
-(print\255completions\255horizontally \(Off\))108 396 Q F0 1.319
-(If set to)144 408 R F1(On)3.819 E F0 3.819(,r)C 1.318(eadline will dis\
-play completions with matches sorted horizontally in alphabetical)-3.819
-F(order)144 420 Q 2.5(,r)-.4 G(ather than do)-2.5 E(wn the screen.)-.25
-E F1(sho)108 432 Q(w\255all\255if\255ambiguous \(Off\))-.1 E F0 .477
-(This alters the def)144 444 R .477(ault beha)-.1 F .477
-(vior of the completion functions.)-.2 F .478(If set to)5.478 F F1(on)
-2.978 E F0 2.978(,w)C .478(ords which ha)-3.078 F .778 -.15(ve m)-.2 H
-(ore).15 E 1.264(than one possible completion cause the matches to be l\
-isted immediately instead of ringing the)144 456 R(bell.)144 468 Q F1
-(visible\255stats \(Off\))108 480 Q F0 .846(If set to)144 492 R F1(On)
-3.346 E F0 3.346(,ac)C .846(haracter denoting a \214le')-3.346 F 3.346
-(st)-.55 G .846(ype as reported by)-3.346 F F2(stat)3.346 E F0 .846
-(\(2\) is appended to the \214lename)B
-(when listing possible completions.)144 504 Q F1(Conditional Constructs)
-87 520.8 Q F0 .05(Readline implements a f)108 532.8 R .05(acility simil\
-ar in spirit to the conditional compilation features of the C preproces\
-sor)-.1 F .096(which allo)108 544.8 R .096(ws k)-.25 F .396 -.15(ey b)
--.1 H .096(indings and v).15 F .096
-(ariable settings to be performed as the result of tests.)-.25 F .097
-(There are four parser)5.096 F(directi)108 556.8 Q -.15(ve)-.25 G 2.5
-(su).15 G(sed.)-2.5 E F1($if)108 573.6 Q F0(The)24.89 E F1($if)2.963 E
-F0 .463(construct allo)2.963 F .462(ws bindings to be made based on the\
- editing mode, the terminal being used,)-.25 F .477
-(or the application using readline.)144 585.6 R .477(The te)5.477 F .477
-(xt of the test e)-.15 F .477
-(xtends to the end of the line; no characters)-.15 F
-(are required to isolate it.)144 597.6 Q F1(mode)144 614.4 Q F0(The)
-12.67 E F1(mode=)3.712 E F0 1.212(form of the)3.712 F F1($if)3.711 E F0
-(directi)3.711 E 1.511 -.15(ve i)-.25 H 3.711(su).15 G 1.211
-(sed to test whether readline is in emacs or vi)-3.711 F 3.065
-(mode. This)180 626.4 R .565(may be used in conjunction with the)3.065 F
-F1 .565(set k)3.065 F(eymap)-.1 E F0 .565(command, for instance, to)
-3.065 F .03(set bindings in the)180 638.4 R F2(emacs-standar)2.529 E(d)
--.37 E F0(and)2.529 E F2(emacs-ctlx)2.529 E F0 -.1(ke)2.529 G .029
-(ymaps only if readline is starting out)-.05 F(in emacs mode.)180 650.4
-Q F1(term)144 667.2 Q F0(The)15.46 E F1(term=)3.196 E F0 .696
-(form may be used to include terminal-speci\214c k)3.196 F .996 -.15
-(ey b)-.1 H .697(indings, perhaps to bind).15 F .654(the k)180 679.2 R
-.954 -.15(ey s)-.1 H .654(equences output by the terminal').15 F 3.154
-(sf)-.55 G .654(unction k)-3.154 F -.15(ey)-.1 G 3.154(s. The).15 F -.1
-(wo)3.154 G .654(rd on the right side of).1 F(the)180 691.2 Q F1(=)3.003
-E F0 .503(is tested ag)3.003 F .504(ainst the full name of the terminal\
- and the portion of the terminal name)-.05 F(before the \214rst)180
-703.2 Q F1<ad>2.5 E F0 5(.T)C(his allo)-5 E(ws)-.25 E F2(sun)2.5 E F0
-(to match both)2.5 E F2(sun)2.5 E F0(and)2.5 E F2(sun\255cmd)2.5 E F0
-2.5(,f).77 G(or instance.)-2.5 E(GNU Readline 4.3)72 768 Q
-(2002 January 22)126.24 E(4)195.95 E EP
-%%Page: 5 5
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R/F1 10
-/Times-Bold@0 SF(application)144 84 Q F0(The)180 96 Q F1(application)
-3.003 E F0 .503
-(construct is used to include application-speci\214c settings.)3.003 F
-.503(Each program)5.503 F .114(using the readline library sets the)180
-108 R/F2 10/Times-Italic@0 SF .114(application name)2.614 F F0 2.614(,a)
-C .114(nd an initialization \214le can test for a)-2.614 F .501
-(particular v)180 120 R 3.001(alue. This)-.25 F .501
-(could be used to bind k)3.001 F .801 -.15(ey s)-.1 H .5
-(equences to functions useful for a spe-).15 F .396(ci\214c program.)180
-132 R -.15(Fo)5.396 G 2.896(ri).15 G .396(nstance, the follo)-2.896 F
-.396(wing command adds a k)-.25 F .696 -.15(ey s)-.1 H .397
-(equence that quotes the).15 F(current or pre)180 144 Q(vious w)-.25 E
-(ord in Bash:)-.1 E F1($if)180 168 Q F0(Bash)2.5 E 2.5(#Q)180 180 S
-(uote the current or pre)-2.5 E(vious w)-.25 E(ord)-.1 E
-("\\C-xq": "\\eb\\"\\ef\\"")180 192 Q F1($endif)180 204 Q($endif)108
-220.8 Q F0(This command, as seen in the pre)9.33 E(vious e)-.25 E
-(xample, terminates an)-.15 E F1($if)2.5 E F0(command.)2.5 E F1($else)
-108 237.6 Q F0(Commands in this branch of the)15.45 E F1($if)2.5 E F0
-(directi)2.5 E .3 -.15(ve a)-.25 H(re e).15 E -.15(xe)-.15 G
-(cuted if the test f).15 E(ails.)-.1 E F1($include)108 254.4 Q F0 .357
-(This directi)144 266.4 R .657 -.15(ve t)-.25 H(ak).15 E .357
-(es a single \214lename as an ar)-.1 F .356
-(gument and reads commands and bindings from that)-.18 F 2.5(\214le. F)
-144 278.4 R(or e)-.15 E(xample, the follo)-.15 E(wing directi)-.25 E .3
--.15(ve w)-.25 H(ould read).05 E F2(/etc/inputr)2.5 E(c)-.37 E F0(:)A F1
-($include)144 302.4 Q F2(/etc/inputr)5.833 E(c)-.37 E/F3 10.95
-/Times-Bold@0 SF(SEARCHING)72 319.2 Q F0 1.003(Readline pro)108 331.2 R
-1.003(vides commands for searching through the command history for line\
-s containing a speci\214ed)-.15 F 2.5(string. There)108 343.2 R(are tw)
-2.5 E 2.5(os)-.1 G(earch modes:)-2.5 E F2(incr)2.5 E(emental)-.37 E F0
-(and)2.5 E F2(non-incr)2.5 E(emental)-.37 E F0(.).51 E .698
-(Incremental searches be)108 360 R .698
-(gin before the user has \214nished typing the search string.)-.15 F
-.697(As each character of the)5.697 F .112
-(search string is typed, readline displays the ne)108 372 R .112
-(xt entry from the history matching the string typed so f)-.15 F(ar)-.1
-E 5.113(.A)-.55 G(n)-5.113 E .545
-(incremental search requires only as man)108 384 R 3.045(yc)-.15 G .544
-(haracters as needed to \214nd the desired history entry)-3.045 F 5.544
-(.T)-.65 G 3.044(os)-6.344 G(earch)-3.044 E(backw)108 396 Q .18
-(ard in the history for a particular string, type)-.1 F F1(C\255r)2.681
-E F0 5.181(.T)C(yping)-5.981 E F1(C\255s)2.681 E F0 .181(searches forw)
-2.681 F .181(ard through the history)-.1 F(.)-.65 E .354
-(The characters present in the v)108 408 R .354(alue of the)-.25 F F1
-(isear)2.854 E(ch-terminators)-.18 E F0 -.25(va)2.854 G .354
-(riable are used to terminate an incremen-).25 F .6(tal search.)108 420
-R .6(If that v)5.6 F .6(ariable has not been assigned a v)-.25 F .6
-(alue the)-.25 F F2(Escape)3.1 E F0(and)3.1 E F1(C\255J)3.1 E F0 .6
-(characters will terminate an)3.1 F .123(incremental search.)108 432 R
-F1(C\255G)5.123 E F0 .123
-(will abort an incremental search and restore the original line.)2.623 F
-.122(When the search is)5.122 F(terminated, the history entry containin\
-g the search string becomes the current line.)108 444 Q 2.406 -.8
-(To \214)108 460.8 T .806
-(nd other matching entries in the history list, type).8 F F1(C\255s)
-3.306 E F0(or)3.306 E F1(C\255r)3.306 E F0 .806(as appropriate.)3.306 F
-.807(This will search back-)5.806 F -.1(wa)108 472.8 S 1.309(rd or forw)
-.1 F 1.309(ard in the history for the ne)-.1 F 1.309
-(xt line matching the search string typed so f)-.15 F(ar)-.1 E 6.309(.A)
--.55 G 1.609 -.15(ny o)-6.309 H 1.308(ther k).15 F -.15(ey)-.1 G .317
-(sequence bound to a readline command will terminate the search and e)
-108 484.8 R -.15(xe)-.15 G .318(cute that command.).15 F -.15(Fo)5.318 G
-2.818(ri).15 G(nstance,)-2.818 E 3.481(an)108 496.8 S -.25(ew)-3.481 G
-.981(line will terminate the search and accept the line, thereby e).25 F
--.15(xe)-.15 G .98(cuting the command from the history).15 F 3.061
-(list. A)108 508.8 R(mo)3.061 E -.15(ve)-.15 G .562
-(ment command will terminate the search, mak).15 F 3.062(et)-.1 G .562
-(he last line found the current line, and be)-3.062 F(gin)-.15 E
-(editing.)108 520.8 Q .567(Non-incremental searches read the entire sea\
-rch string before starting to search for matching history lines.)108
-537.6 R(The search string may be typed by the user or be part of the co\
-ntents of the current line.)108 549.6 Q F3(EDITING COMMANDS)72 566.4 Q
-F0 1.391(The follo)108 578.4 R 1.391
-(wing is a list of the names of the commands and the def)-.25 F 1.391
-(ault k)-.1 F 1.691 -.15(ey s)-.1 H 1.391(equences to which the).15 F
-3.892(ya)-.15 G(re)-3.892 E 2.5(bound. Command)108 590.4 R
-(names without an accompan)2.5 E(ying k)-.15 E .3 -.15(ey s)-.1 H
-(equence are unbound by def).15 E(ault.)-.1 E .055(In the follo)108
-607.2 R .055(wing descriptions,)-.25 F F2(point)2.555 E F0 .055
-(refers to the current cursor position, and)2.555 F F2(mark)2.555 E F0
-.054(refers to a cursor position)2.554 F(sa)108 619.2 Q -.15(ve)-.2 G
-2.5(db).15 G 2.5(yt)-2.5 G(he)-2.5 E F1(set\255mark)2.5 E F0 2.5
-(command. The)2.5 F(te)2.5 E
-(xt between the point and mark is referred to as the)-.15 E F2 -.37(re)
-2.5 G(gion)-.03 E F0(.)A F1(Commands f)87 636 Q(or Mo)-.25 E(ving)-.1 E
-(beginning\255of\255line \(C\255a\))108 648 Q F0(Mo)144 660 Q .3 -.15
-(ve t)-.15 H 2.5(ot).15 G(he start of the current line.)-2.5 E F1
-(end\255of\255line \(C\255e\))108 672 Q F0(Mo)144 684 Q .3 -.15(ve t)
--.15 H 2.5(ot).15 G(he end of the line.)-2.5 E F1 -.25(fo)108 696 S
-(rward\255char \(C\255f\)).25 E F0(Mo)144 708 Q .3 -.15(ve f)-.15 H(orw)
-.15 E(ard a character)-.1 E(.)-.55 E(GNU Readline 4.3)72 768 Q
-(2002 January 22)126.24 E(5)195.95 E EP
-%%Page: 6 6
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R/F1 10
-/Times-Bold@0 SF(backward\255char \(C\255b\))108 84 Q F0(Mo)144 96 Q .3
--.15(ve b)-.15 H(ack a character).15 E(.)-.55 E F1 -.25(fo)108 108 S
-(rward\255w).25 E(ord \(M\255f\))-.1 E F0(Mo)144 120 Q .822 -.15(ve f)
--.15 H(orw).15 E .522(ard to the end of the ne)-.1 F .523(xt w)-.15 F
-3.023(ord. W)-.1 F .523
-(ords are composed of alphanumeric characters \(let-)-.8 F
-(ters and digits\).)144 132 Q F1(backward\255w)108 144 Q(ord \(M\255b\))
--.1 E F0(Mo)144 156 Q 1.71 -.15(ve b)-.15 H 1.41
-(ack to the start of the current or pre).15 F 1.41(vious w)-.25 F 3.91
-(ord. W)-.1 F 1.41(ords are composed of alphanumeric)-.8 F
-(characters \(letters and digits\).)144 168 Q F1(clear\255scr)108 180 Q
-(een \(C\255l\))-.18 E F0 .993(Clear the screen lea)144 192 R .993
-(ving the current line at the top of the screen.)-.2 F -.4(Wi)5.993 G
-.993(th an ar).4 F .993(gument, refresh the)-.18 F
-(current line without clearing the screen.)144 204 Q F1 -.18(re)108 216
-S(draw\255curr).18 E(ent\255line)-.18 E F0(Refresh the current line.)144
-228 Q F1(Commands f)87 244.8 Q(or Manipulating the History)-.25 E
-(accept\255line \(Newline, Retur)108 256.8 Q(n\))-.15 E F0 .365
-(Accept the line re)144 268.8 R -.05(ga)-.15 G .364
-(rdless of where the cursor is.).05 F .364(If this line is non-empty)
-5.364 F 2.864(,i)-.65 G 2.864(tm)-2.864 G .364(ay be added to the)-2.864
-F .74(history list for future recall with)144 280.8 R F1
-(add_history\(\))3.24 E F0 5.741(.I)C 3.241(ft)-5.741 G .741
-(he line is a modi\214ed history line, the history)-3.241 F
-(line is restored to its original state.)144 292.8 Q F1(pr)108 304.8 Q
--.15(ev)-.18 G(ious\255history \(C\255p\)).15 E F0(Fetch the pre)144
-316.8 Q(vious command from the history list, mo)-.25 E
-(ving back in the list.)-.15 E F1(next\255history \(C\255n\))108 328.8 Q
-F0(Fetch the ne)144 340.8 Q(xt command from the history list, mo)-.15 E
-(ving forw)-.15 E(ard in the list.)-.1 E F1
-(beginning\255of\255history \(M\255<\))108 352.8 Q F0(Mo)144 364.8 Q .3
--.15(ve t)-.15 H 2.5(ot).15 G(he \214rst line in the history)-2.5 E(.)
--.65 E F1(end\255of\255history \(M\255>\))108 376.8 Q F0(Mo)144 388.8 Q
-.3 -.15(ve t)-.15 H 2.5(ot).15 G(he end of the input history)-2.5 E 2.5
-(,i)-.65 G(.e., the line currently being entered.)-2.5 E F1 -2.29 -.18
-(re v)108 400.8 T(erse\255sear).08 E(ch\255history \(C\255r\))-.18 E F0
-1.471(Search backw)144 412.8 R 1.471
-(ard starting at the current line and mo)-.1 F 1.47
-(ving `up' through the history as necessary)-.15 F(.)-.65 E
-(This is an incremental search.)144 424.8 Q F1 -.25(fo)108 436.8 S
-(rward\255sear).25 E(ch\255history \(C\255s\))-.18 E F0 1.131
-(Search forw)144 448.8 R 1.131(ard starting at the current line and mo)
--.1 F 1.132(ving `do)-.15 F 1.132(wn' through the history as necessary)
--.25 F(.)-.65 E(This is an incremental search.)144 460.8 Q F1
-(non\255incr)108 472.8 Q(emental\255r)-.18 E -2.3 -.15(ev e)-.18 H
-(rse\255sear).15 E(ch\255history \(M\255p\))-.18 E F0 .165(Search backw)
-144 484.8 R .164(ard through the history starting at the current line u\
-sing a non-incremental search for)-.1 F 2.5(as)144 496.8 S
-(tring supplied by the user)-2.5 E(.)-.55 E F1(non\255incr)108 508.8 Q
-(emental\255f)-.18 E(orward\255sear)-.25 E(ch\255history \(M\255n\))-.18
-E F0 1.353(Search forw)144 520.8 R 1.354(ard through the history using \
-a non-incremental search for a string supplied by the)-.1 F(user)144
-532.8 Q(.)-.55 E F1(history\255sear)108 544.8 Q(ch\255f)-.18 E(orward)
--.25 E F0 .249(Search forw)144 556.8 R .249(ard through the history for\
- the string of characters between the start of the current line)-.1 F
-(and the current cursor position \(the)144 568.8 Q/F2 10/Times-Italic@0
-SF(point)2.5 E F0 2.5(\). This)B(is a non-incremental search.)2.5 E F1
-(history\255sear)108 580.8 Q(ch\255backward)-.18 E F0 .95(Search backw)
-144 592.8 R .951(ard through the history for the string of characters b\
-etween the start of the current)-.1 F(line and the point.)144 604.8 Q
-(This is a non-incremental search.)5 E F1(yank\255nth\255ar)108 616.8 Q
-2.5(g\()-.1 G<4dad43ad7929>-2.5 E F0 .622(Insert the \214rst ar)144
-628.8 R .622(gument to the pre)-.18 F .622
-(vious command \(usually the second w)-.25 F .622(ord on the pre)-.1 F
-.622(vious line\))-.25 F .794(at point.)144 640.8 R -.4(Wi)5.794 G .794
-(th an ar).4 F(gument)-.18 E F2(n)3.294 E F0 3.294(,i).24 G .794
-(nsert the)-3.294 F F2(n)3.294 E F0 .794(th w)B .794(ord from the pre)
--.1 F .794(vious command \(the w)-.25 F .795(ords in the)-.1 F(pre)144
-652.8 Q .292(vious command be)-.25 F .292(gin with w)-.15 F .291
-(ord 0\).)-.1 F 2.791(An)5.291 G -2.25 -.15(eg a)-2.791 H(ti).15 E .591
--.15(ve a)-.25 H -.18(rg).15 G .291(ument inserts the).18 F F2(n)2.791 E
-F0 .291(th w)B .291(ord from the end of)-.1 F(the pre)144 664.8 Q
-(vious command.)-.25 E F1(yank\255last\255ar)108 676.8 Q 2.5(g\()-.1 G
--1.667(M\255. ,)-2.5 F -1.667(M\255_ \))2.5 F F0 1.307
-(Insert the last ar)144 688.8 R 1.307(gument to the pre)-.18 F 1.307
-(vious command \(the last w)-.25 F 1.308(ord of the pre)-.1 F 1.308
-(vious history entry\).)-.25 F -.4(Wi)144 700.8 S .736(th an ar).4 F
-.736(gument, beha)-.18 F 1.036 -.15(ve ex)-.2 H .736(actly lik).15 F(e)
--.1 E F1(yank\255nth\255ar)3.235 E(g)-.1 E F0 5.735(.S)C(uccessi)-5.735
-E 1.035 -.15(ve c)-.25 H .735(alls to).15 F F1(yank\255last\255ar)3.235
-E(g)-.1 E F0(mo)3.235 E -.15(ve)-.15 G
-(back through the history list, inserting the last ar)144 712.8 Q
-(gument of each line in turn.)-.18 E(GNU Readline 4.3)72 768 Q
-(2002 January 22)126.24 E(6)195.95 E EP
-%%Page: 7 7
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R/F1 10
-/Times-Bold@0 SF(Commands f)87 84 Q(or Changing T)-.25 E(ext)-.92 E
-(delete\255char \(C\255d\))108 96 Q F0 .357
-(Delete the character at point.)144 108 R .358(If point is at the be)
-5.358 F .358(ginning of the line, there are no characters in the)-.15 F
-(line, and the last character typed w)144 120 Q(as not bound to)-.1 E F1
-(delete\255char)2.5 E F0 2.5(,t)C(hen return)-2.5 E/F2 9/Times-Bold@0 SF
-(EOF)2.5 E/F3 9/Times-Roman@0 SF(.)A F1
-(backward\255delete\255char \(Rubout\))108 132 Q F0 .553
-(Delete the character behind the cursor)144 144 R 5.553(.W)-.55 G .553
-(hen gi)-5.553 F -.15(ve)-.25 G 3.053(nan).15 G .553(umeric ar)-3.053 F
-.552(gument, sa)-.18 F .852 -.15(ve t)-.2 H .552(he deleted te).15 F
-.552(xt on)-.15 F(the kill ring.)144 156 Q F1 -.25(fo)108 168 S
-(rward\255backward\255delete\255char).25 E F0 .473
-(Delete the character under the cursor)144 180 R 2.973(,u)-.4 G .474
-(nless the cursor is at the end of the line, in which case the)-2.973 F
-(character behind the cursor is deleted.)144 192 Q F1
-(quoted\255insert \(C\255q, C\255v\))108 204 Q F0 1.229(Add the ne)144
-216 R 1.228(xt character that you type to the line v)-.15 F 3.728
-(erbatim. This)-.15 F 1.228(is ho)3.728 F 3.728(wt)-.25 G 3.728(oi)
--3.728 G 1.228(nsert characters lik)-3.728 F(e)-.1 E F1(C\255q)144 228 Q
-F0 2.5(,f)C(or e)-2.5 E(xample.)-.15 E F1(tab\255insert \(M-T)108 240 Q
-(AB\))-.9 E F0(Insert a tab character)144 252 Q(.)-.55 E F1
-(self\255insert \(a, b, A, 1, !, ...\))108 264 Q F0
-(Insert the character typed.)144 276 Q F1(transpose\255chars \(C\255t\))
-108 288 Q F0 .321(Drag the character before point forw)144 300 R .321
-(ard o)-.1 F -.15(ve)-.15 G 2.821(rt).15 G .321
-(he character at point, mo)-2.821 F .322(ving point forw)-.15 F .322
-(ard as well.)-.1 F 1.182
-(If point is at the end of the line, then this transposes the tw)144 312
-R 3.682(oc)-.1 G 1.182(haracters before point.)-3.682 F(Ne)6.182 E -.05
-(ga)-.15 G(ti).05 E -.15(ve)-.25 G(ar)144 324 Q(guments ha)-.18 E .3
--.15(ve n)-.2 H 2.5(oe).15 G -.25(ff)-2.5 G(ect.).25 E F1
-(transpose\255w)108 336 Q(ords \(M\255t\))-.1 E F0 .023(Drag the w)144
-348 R .023(ord before point past the w)-.1 F .023(ord after point, mo)
--.1 F .023(ving point o)-.15 F -.15(ve)-.15 G 2.524(rt).15 G .024(hat w)
--2.524 F .024(ord as well.)-.1 F .024(If point)5.024 F
-(is at the end of the line, this transposes the last tw)144 360 Q 2.5
-(ow)-.1 G(ords on the line.)-2.6 E F1(upcase\255w)108 372 Q
-(ord \(M\255u\))-.1 E F0 1.699(Uppercase the current \(or follo)144 384
-R 1.698(wing\) w)-.25 F 4.198(ord. W)-.1 F 1.698(ith a ne)-.4 F -.05(ga)
--.15 G(ti).05 E 1.998 -.15(ve a)-.25 H -.18(rg).15 G 1.698
-(ument, uppercase the pre).18 F(vious)-.25 E -.1(wo)144 396 S(rd, b).1 E
-(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1(do)108 408 Q
-(wncase\255w)-.1 E(ord \(M\255l\))-.1 E F0(Lo)144 420 Q 1.647
-(wercase the current \(or follo)-.25 F 1.647(wing\) w)-.25 F 4.147
-(ord. W)-.1 F 1.648(ith a ne)-.4 F -.05(ga)-.15 G(ti).05 E 1.948 -.15
-(ve a)-.25 H -.18(rg).15 G 1.648(ument, lo).18 F 1.648(wercase the pre)
--.25 F(vious)-.25 E -.1(wo)144 432 S(rd, b).1 E(ut do not mo)-.2 E .3
--.15(ve p)-.15 H(oint.).15 E F1(capitalize\255w)108 444 Q
-(ord \(M\255c\))-.1 E F0 1.975(Capitalize the current \(or follo)144 456
-R 1.974(wing\) w)-.25 F 4.474(ord. W)-.1 F 1.974(ith a ne)-.4 F -.05(ga)
--.15 G(ti).05 E 2.274 -.15(ve a)-.25 H -.18(rg).15 G 1.974
-(ument, capitalize the pre).18 F(vious)-.25 E -.1(wo)144 468 S(rd, b).1
-E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1 -.1(ove)108 480
-S(rwrite\255mode).1 E F0 -.8(To)144 492 S .437(ggle o).8 F -.15(ve)-.15
-G .437(rwrite mode.).15 F -.4(Wi)5.437 G .437(th an e).4 F .437
-(xplicit positi)-.15 F .738 -.15(ve n)-.25 H .438(umeric ar).15 F .438
-(gument, switches to o)-.18 F -.15(ve)-.15 G .438(rwrite mode.).15 F -.4
-(Wi)144 504 S .781(th an e).4 F .781(xplicit non-positi)-.15 F 1.081
--.15(ve n)-.25 H .781(umeric ar).15 F .781
-(gument, switches to insert mode.)-.18 F .78(This command af)5.781 F
-(fects)-.25 E(only)144 516 Q F1(emacs)4.394 E F0(mode;)4.394 E F1(vi)
-4.394 E F0 1.894(mode does o)4.394 F -.15(ve)-.15 G 1.894(rwrite dif).15
-F(ferently)-.25 E 6.894(.E)-.65 G 1.894(ach call to)-6.894 F/F4 10
-/Times-Italic@0 SF -.37(re)4.395 G(adline\(\)).37 E F0 1.895
-(starts in insert)4.395 F 3.969(mode. In)144 528 R -.15(ove)3.969 G
-1.469(rwrite mode, characters bound to).15 F F1(self\255insert)3.969 E
-F0 1.468(replace the te)3.969 F 1.468(xt at point rather than)-.15 F
-.957(pushing the te)144 540 R .957(xt to the right.)-.15 F .958
-(Characters bound to)5.957 F F1(backward\255delete\255char)3.458 E F0
-.958(replace the character)3.458 F(before point with a space.)144 552 Q
-(By def)5 E(ault, this command is unbound.)-.1 E F1(Killing and Y)87
-568.8 Q(anking)-.85 E(kill\255line \(C\255k\))108 580.8 Q F0
-(Kill the te)144 592.8 Q(xt from point to the end of the line.)-.15 E F1
-(backward\255kill\255line \(C\255x Rubout\))108 604.8 Q F0(Kill backw)
-144 616.8 Q(ard to the be)-.1 E(ginning of the line.)-.15 E F1
-(unix\255line\255discard \(C\255u\))108 628.8 Q F0(Kill backw)144 640.8
-Q(ard from point to the be)-.1 E(ginning of the line.)-.15 E
-(The killed te)5 E(xt is sa)-.15 E -.15(ve)-.2 G 2.5(do).15 G 2.5(nt)
--2.5 G(he kill-ring.)-2.5 E F1(kill\255whole\255line)108 652.8 Q F0
-(Kill all characters on the current line, no matter where point is.)144
-664.8 Q F1(kill\255w)108 676.8 Q(ord \(M\255d\))-.1 E F0 1.308
-(Kill from point the end of the current w)144 688.8 R 1.308
-(ord, or if between w)-.1 F 1.308(ords, to the end of the ne)-.1 F 1.307
-(xt w)-.15 F(ord.)-.1 E -.8(Wo)144 700.8 S
-(rd boundaries are the same as those used by).8 E F1 -.25(fo)2.5 G
-(rward\255w).25 E(ord)-.1 E F0(.)A(GNU Readline 4.3)72 768 Q
-(2002 January 22)126.24 E(7)195.95 E EP
-%%Page: 8 8
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R/F1 10
-/Times-Bold@0 SF(backward\255kill\255w)108 84 Q(ord \(M\255Rubout\))-.1
-E F0(Kill the w)144 96 Q(ord behind point.)-.1 E -.8(Wo)5 G
-(rd boundaries are the same as those used by).8 E F1(backward\255w)2.5 E
-(ord)-.1 E F0(.)A F1(unix\255w)108 108 Q(ord\255rubout \(C\255w\))-.1 E
-F0 .364(Kill the w)144 120 R .364
-(ord behind point, using white space as a w)-.1 F .365(ord boundary)-.1
-F 5.365(.T)-.65 G .365(he killed te)-5.365 F .365(xt is sa)-.15 F -.15
-(ve)-.2 G 2.865(do).15 G 2.865(nt)-2.865 G(he)-2.865 E(kill-ring.)144
-132 Q F1(delete\255horizontal\255space \(M\255\\\))108 144 Q F0
-(Delete all spaces and tabs around point.)144 156 Q F1(kill\255r)108 168
-Q(egion)-.18 E F0 1.13(Kill the te)144 180 R 1.13
-(xt between the point and)-.15 F/F2 10/Times-Italic@0 SF(mark)3.63 E F0
-(\(sa)3.63 E -.15(ve)-.2 G 3.63(dc).15 G 1.13(ursor position\).)-3.63 F
-1.13(This te)6.13 F 1.13(xt is referred to as the)-.15 F F2 -.37(re)144
-192 S(gion)-.03 E F0(.)A F1(copy\255r)108 204 Q(egion\255as\255kill)-.18
-E F0(Cop)144 216 Q 2.5(yt)-.1 G(he te)-2.5 E(xt in the re)-.15 E
-(gion to the kill b)-.15 E(uf)-.2 E(fer)-.25 E(.)-.55 E F1
-(copy\255backward\255w)108 228 Q(ord)-.1 E F0(Cop)144 240 Q 4.8(yt)-.1 G
-2.3(he w)-4.8 F 2.3(ord before point to the kill b)-.1 F(uf)-.2 E(fer)
--.25 E 7.301(.T)-.55 G 2.301(he w)-7.301 F 2.301
-(ord boundaries are the same as)-.1 F F1(back-)4.801 E(ward\255w)144 252
-Q(ord)-.1 E F0(.)A F1(copy\255f)108 264 Q(orward\255w)-.25 E(ord)-.1 E
-F0(Cop)144 276 Q 4.508(yt)-.1 G 2.008(he w)-4.508 F 2.008(ord follo)-.1
-F 2.008(wing point to the kill b)-.25 F(uf)-.2 E(fer)-.25 E 7.007(.T)
--.55 G 2.007(he w)-7.007 F 2.007(ord boundaries are the same as)-.1 F F1
--.25(fo)4.507 G -.37(r-).25 G(ward\255w)144 288 Q(ord)-.1 E F0(.)A F1
-(yank \(C\255y\))108 300 Q F0 -1(Ya)144 312 S
-(nk the top of the kill ring into the b)1 E(uf)-.2 E(fer at point.)-.25
-E F1(yank\255pop \(M\255y\))108 324 Q F0
-(Rotate the kill ring, and yank the ne)144 336 Q 2.5(wt)-.25 G 2.5
-(op. Only)-2.5 F -.1(wo)2.5 G(rks follo).1 E(wing)-.25 E F1(yank)2.5 E
-F0(or)2.5 E F1(yank\255pop)2.5 E F0(.)A F1(Numeric Ar)87 352.8 Q
-(guments)-.1 E(digit\255ar)108 364.8 Q
-(gument \(M\2550, M\2551, ..., M\255\255\))-.1 E F0 .641
-(Add this digit to the ar)144 376.8 R .641
-(gument already accumulating, or start a ne)-.18 F 3.141(wa)-.25 G -.18
-(rg)-3.141 G 3.142(ument. M\255\255).18 F .642(starts a ne)3.142 F(g-)
--.15 E(ati)144 388.8 Q .3 -.15(ve a)-.25 H -.18(rg).15 G(ument.).18 E F1
-(uni)108 400.8 Q -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 E F0 .779
-(This is another w)144 412.8 R .779(ay to specify an ar)-.1 F 3.279
-(gument. If)-.18 F .779(this command is follo)3.279 F .778
-(wed by one or more digits,)-.25 F 1.376
-(optionally with a leading minus sign, those digits de\214ne the ar)144
-424.8 R 3.876(gument. If)-.18 F 1.376(the command is fol-)3.876 F(lo)144
-436.8 Q 1.17(wed by digits, e)-.25 F -.15(xe)-.15 G(cuting).15 E F1(uni)
-3.67 E -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 E F0(ag)3.67 E 1.17
-(ain ends the numeric ar)-.05 F 1.17(gument, b)-.18 F 1.17(ut is other)
--.2 F(-)-.2 E .898(wise ignored.)144 448.8 R .898
-(As a special case, if this command is immediately follo)5.898 F .898
-(wed by a character that is)-.25 F .243
-(neither a digit or minus sign, the ar)144 460.8 R .243
-(gument count for the ne)-.18 F .243(xt command is multiplied by four)
--.15 F 5.242(.T)-.55 G(he)-5.242 E(ar)144 472.8 Q .378
-(gument count is initially one, so e)-.18 F -.15(xe)-.15 G .378
-(cuting this function the \214rst time mak).15 F .378(es the ar)-.1 F
-.378(gument count)-.18 F(four)144 484.8 Q 2.5(,as)-.4 G(econd time mak)
--2.5 E(es the ar)-.1 E(gument count sixteen, and so on.)-.18 E F1
-(Completing)87 501.6 Q(complete \(T)108 513.6 Q(AB\))-.9 E F0 1.909
-(Attempt to perform completion on the te)144 525.6 R 1.908
-(xt before point.)-.15 F 1.908(The actual completion performed is)6.908
-F(application-speci\214c.)144 537.6 Q F1(Bash)5.517 E F0 3.017(,f)C .518
-(or instance, attempts completion treating the te)-3.017 F .518
-(xt as a v)-.15 F .518(ariable \(if the)-.25 F(te)144 549.6 Q .657
-(xt be)-.15 F .657(gins with)-.15 F F1($)3.156 E F0 .656
-(\), username \(if the te)B .656(xt be)-.15 F .656(gins with)-.15 F F1
-(~)3.156 E F0 .656(\), hostname \(if the te)B .656(xt be)-.15 F .656
-(gins with)-.15 F F1(@)3.156 E F0 .656(\), or)B .929
-(command \(including aliases and functions\) in turn.)144 561.6 R .93
-(If none of these produces a match, \214lename)5.929 F 1.274
-(completion is attempted.)144 573.6 R F1(Gdb)6.273 E F0 3.773(,o)C 3.773
-(nt)-3.773 G 1.273(he other hand, allo)-3.773 F 1.273
-(ws completion of program functions and)-.25 F -.25(va)144 585.6 S(riab\
-les, and only attempts \214lename completion under certain circumstance\
-s.).25 E F1(possible\255completions \(M\255?\))108 597.6 Q F0
-(List the possible completions of the te)144 609.6 Q(xt before point.)
--.15 E F1(insert\255completions \(M\255*\))108 621.6 Q F0 .783
-(Insert all completions of the te)144 633.6 R .783
-(xt before point that w)-.15 F .783(ould ha)-.1 F 1.083 -.15(ve b)-.2 H
-.783(een generated by).15 F F1(possible\255com-)3.283 E(pletions)144
-645.6 Q F0(.)A F1(menu\255complete)108 657.6 Q F0 .929(Similar to)144
-669.6 R F1(complete)3.429 E F0 3.429(,b)C .929(ut replaces the w)-3.629
-F .929(ord to be completed with a single match from the list of)-.1 F
-1.193(possible completions.)144 681.6 R 1.193(Repeated e)6.193 F -.15
-(xe)-.15 G 1.193(cution of).15 F F1(menu\255complete)3.694 E F0 1.194
-(steps through the list of possible)3.694 F .829
-(completions, inserting each match in turn.)144 693.6 R .828
-(At the end of the list of completions, the bell is rung)5.828 F .965
-(\(subject to the setting of)144 705.6 R F1 .965
-(0and the original text is r)3.465 F(estor)-.18 E 3.465(ed. An)-.18 F
-(ar)3.465 E .966(gument of)-.1 F F2(n)3.466 E F1(mo)3.466 E -.1(ve)-.1 G
-(s).1 E F2(n)3.466 E F1(posi-)3.466 E 1.249(tions f)144 717.6 R 1.249
-(orward in the list of matches; a negati)-.25 F 1.449 -.1(ve a)-.1 H -.1
-(rg).1 G 1.248(ument may be used to mo).1 F 1.448 -.1(ve b)-.1 H
-(ackward).1 E(thr)144 729.6 Q(ough the list.)-.18 E
-(This command is intended to be bound to T)5 E(AB, b)-.9 E
-(ut is unbound by default.)-.2 E F0(GNU Readline 4.3)72 768 Q
-(2002 January 22)126.24 E(8)195.95 E EP
-%%Page: 9 9
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R/F1 10
-/Times-Bold@0 SF(delete\255char\255or\255list)108 84 Q F0 .373
-(Deletes the character under the cursor if not at the be)144 96 R .374
-(ginning or end of the line \(lik)-.15 F(e)-.1 E F1(delete-char)2.874 E
-F0(\).)A(If at the end of the line, beha)144 108 Q -.15(ve)-.2 G 2.5(si)
-.15 G(dentically to)-2.5 E F1(possible-completions)2.5 E F0(.)A F1 -.25
-(Ke)87 124.8 S(yboard Macr).25 E(os)-.18 E(start\255kbd\255macr)108
-136.8 Q 2.5(o\()-.18 G(C\255x \()-2.5 E(\)).833 E F0(Be)144 148.8 Q
-(gin sa)-.15 E(ving the characters typed into the current k)-.2 E -.15
-(ey)-.1 G(board macro.).15 E F1(end\255kbd\255macr)108 160.8 Q 2.5(o\()
--.18 G(C\255x \))-2.5 E(\)).833 E F0(Stop sa)144 172.8 Q
-(ving the characters typed into the current k)-.2 E -.15(ey)-.1 G
-(board macro and store the de\214nition.).15 E F1
-(call\255last\255kbd\255macr)108 184.8 Q 2.5(o\()-.18 G(C\255x e\))-2.5
-E F0(Re-e)144 196.8 Q -.15(xe)-.15 G 1(cute the last k).15 F -.15(ey)-.1
-G .999(board macro de\214ned, by making the characters in the macro app\
-ear as if).15 F(typed at the k)144 208.8 Q -.15(ey)-.1 G(board.).15 E F1
-(Miscellaneous)87 225.6 Q -.18(re)108 237.6 S<ad72>.18 E
-(ead\255init\255\214le \(C\255x C\255r\))-.18 E F0 1.776
-(Read in the contents of the)144 249.6 R/F2 10/Times-Italic@0 SF(inputr)
-4.276 E(c)-.37 E F0 1.777(\214le, and incorporate an)4.276 F 4.277(yb)
--.15 G 1.777(indings or v)-4.277 F 1.777(ariable assignments)-.25 F
-(found there.)144 261.6 Q F1(abort \(C\255g\))108 273.6 Q F0 3.249
-(Abort the current editing command and ring the terminal')144 285.6 R
-5.748(sb)-.55 G 3.248(ell \(subject to the setting of)-5.748 F F1
-(bell\255style)144 297.6 Q F0(\).)A F1(do\255upper)108 309.6 Q
-(case\255v)-.18 E(ersion \(M\255a, M\255b, M\255)-.1 E F2(x)A F1 2.5(,.)
-C(..\))-2.5 E F0 1.755(If the meta\214ed character)144 321.6 R F2(x)
-4.255 E F0 1.755(is lo)4.255 F 1.756
-(wercase, run the command that is bound to the corresponding)-.25 F
-(uppercase character)144 333.6 Q(.)-.55 E F1(pr)108 345.6 Q
-(e\214x\255meta \(ESC\))-.18 E F0(Metafy the ne)144 357.6 Q
-(xt character typed.)-.15 E/F3 9/Times-Bold@0 SF(ESC)5 E F1(f)2.25 E F0
-(is equi)2.5 E -.25(va)-.25 G(lent to).25 E F1(Meta\255f)2.5 E F0(.)A F1
-(undo \(C\255_, C\255x C\255u\))108 369.6 Q F0
-(Incremental undo, separately remembered for each line.)144 381.6 Q F1
--2.29 -.18(re v)108 393.6 T(ert\255line \(M\255r\)).08 E F0 1.095
-(Undo all changes made to this line.)144 405.6 R 1.095(This is lik)6.095
-F 3.595(ee)-.1 G -.15(xe)-3.745 G 1.095(cuting the).15 F F1(undo)3.595 E
-F0 1.095(command enough times to)3.595 F
-(return the line to its initial state.)144 417.6 Q F1
-(tilde\255expand \(M\255&\))108 429.6 Q F0(Perform tilde e)144 441.6 Q
-(xpansion on the current w)-.15 E(ord.)-.1 E F1
-(set\255mark \(C\255@, M\255<space>\))108 453.6 Q F0
-(Set the mark to the point.)144 465.6 Q(If a numeric ar)5 E
-(gument is supplied, the mark is set to that position.)-.18 E F1
-(exchange\255point\255and\255mark \(C\255x C\255x\))108 477.6 Q F0(Sw)
-144 489.6 Q .282(ap the point with the mark.)-.1 F .283
-(The current cursor position is set to the sa)5.283 F -.15(ve)-.2 G
-2.783(dp).15 G .283(osition, and the old)-2.783 F(cursor position is sa)
-144 501.6 Q -.15(ve)-.2 G 2.5(da).15 G 2.5(st)-2.5 G(he mark.)-2.5 E F1
-(character\255sear)108 513.6 Q(ch \(C\255]\))-.18 E F0 3.036(Ac)144
-525.6 S .536(haracter is read and point is mo)-3.036 F -.15(ve)-.15 G
-3.035(dt).15 G 3.035(ot)-3.035 G .535(he ne)-3.035 F .535
-(xt occurrence of that character)-.15 F 5.535(.A)-.55 G(ne)-2.5 E -.05
-(ga)-.15 G(ti).05 E .835 -.15(ve c)-.25 H(ount).15 E(searches for pre)
-144 537.6 Q(vious occurrences.)-.25 E F1(character\255sear)108 549.6 Q
-(ch\255backward \(M\255C\255]\))-.18 E F0 3.543(Ac)144 561.6 S 1.043
-(haracter is read and point is mo)-3.543 F -.15(ve)-.15 G 3.544(dt).15 G
-3.544(ot)-3.544 G 1.044(he pre)-3.544 F 1.044
-(vious occurrence of that character)-.25 F 6.044(.A)-.55 G(ne)-2.5 E
--.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G
-(count searches for subsequent occurrences.)144 573.6 Q F1
-(insert\255comment \(M\255#\))108 585.6 Q F0 -.4(Wi)144 597.6 S .481
-(thout a numeric ar).4 F .481(gument, the v)-.18 F .481
-(alue of the readline)-.25 F F1(comment\255begin)2.981 E F0 -.25(va)
-2.981 G .48(riable is inserted at the).25 F(be)144 609.6 Q .097
-(ginning of the current line.)-.15 F .098(If a numeric ar)5.097 F .098
-(gument is supplied, this command acts as a toggle:)-.18 F(if)5.098 E
-.322(the characters at the be)144 621.6 R .321
-(ginning of the line do not match the v)-.15 F .321(alue of)-.25 F F1
-(comment\255begin)2.821 E F0 2.821(,t)C .321(he v)-2.821 F .321(alue is)
--.25 F 1.013(inserted, otherwise the characters in)144 633.6 R F1
-(comment-begin)3.514 E F0 1.014(are deleted from the be)3.514 F 1.014
-(ginning of the line.)-.15 F 1.469
-(In either case, the line is accepted as if a ne)144 645.6 R 1.468
-(wline had been typed.)-.25 F 1.468(The def)6.468 F 1.468(ault v)-.1 F
-1.468(alue of)-.25 F F1(com-)3.968 E(ment\255begin)144 657.6 Q F0(mak)
-2.982 E .483(es the current line a shell comment.)-.1 F .483
-(If a numeric ar)5.483 F .483(gument causes the comment)-.18 F
-(character to be remo)144 669.6 Q -.15(ve)-.15 G(d, the line will be e)
-.15 E -.15(xe)-.15 G(cuted by the shell.).15 E F1(dump\255functions)108
-681.6 Q F0 .627(Print all of the functions and their k)144 693.6 R .927
--.15(ey b)-.1 H .626(indings to the readline output stream.).15 F .626
-(If a numeric ar)5.626 F(gu-)-.18 E
-(ment is supplied, the output is formatted in such a w)144 705.6 Q
-(ay that it can be made part of an)-.1 E F2(inputr)2.5 E(c)-.37 E F0
-(\214le.)2.5 E(GNU Readline 4.3)72 768 Q(2002 January 22)126.24 E(9)
-195.95 E EP
-%%Page: 10 10
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R/F1 10
-/Times-Bold@0 SF(dump\255v)108 84 Q(ariables)-.1 E F0 .283
-(Print all of the settable v)144 96 R .283(ariables and their v)-.25 F
-.283(alues to the readline output stream.)-.25 F .283(If a numeric ar)
-5.283 F(gu-)-.18 E
-(ment is supplied, the output is formatted in such a w)144 108 Q
-(ay that it can be made part of an)-.1 E/F2 10/Times-Italic@0 SF(inputr)
-2.5 E(c)-.37 E F0(\214le.)2.5 E F1(dump\255macr)108 120 Q(os)-.18 E F0
-.756(Print all of the readline k)144 132 R 1.056 -.15(ey s)-.1 H .756
-(equences bound to macros and the strings the).15 F 3.256(yo)-.15 G
-3.256(uput. If)-3.256 F 3.255(an)3.255 G(umeric)-3.255 E(ar)144 144 Q
-.528(gument is supplied, the output is formatted in such a w)-.18 F .528
-(ay that it can be made part of an)-.1 F F2(inputr)3.028 E(c)-.37 E F0
-(\214le.)144 156 Q F1(emacs\255editing\255mode \(C\255e\))108 168 Q F0
-(When in)144 180 Q F1(vi)2.5 E F0(command mode, this causes a switch to)
-2.5 E F1(emacs)2.5 E F0(editing mode.)2.5 E F1
-(vi\255editing\255mode \(M\255C\255j\))108 192 Q F0(When in)144 204 Q F1
-(emacs)2.5 E F0(editing mode, this causes a switch to)2.5 E F1(vi)2.5 E
-F0(editing mode.)2.5 E/F3 10.95/Times-Bold@0 SF(DEF)72 220.8 Q -.548(AU)
--.986 G 2.014 -1.007(LT K).548 H(EY BINDINGS)1.007 E F0 .065(The follo)
-108 232.8 R .065(wing is a list of the def)-.25 F .065
-(ault emacs and vi bindings.)-.1 F .064
-(Characters with the eighth bit set are written as)5.064 F .615
-(M\255<character>, and are referred to as)108 244.8 R F2(meta\214ed)
-3.115 E F0 3.115(characters. The)3.115 F .616
-(printable ASCII characters not mentioned)3.116 F 1.116
-(in the list of emacs standard bindings are bound to the)108 256.8 R F1
-(self\255insert)3.615 E F0 1.115(function, which just inserts the gi)
-3.615 F -.15(ve)-.25 G(n).15 E .945(character into the input line.)108
-268.8 R .945(In vi insertion mode, all characters not speci\214cally me\
-ntioned are bound to)5.945 F F1(self\255insert)108 280.8 Q F0 5.359(.C)C
-.359(haracters assigned to signal generation by)-5.359 F F2(stty)2.859 E
-F0 .359(\(1\) or the terminal dri).32 F -.15(ve)-.25 G 1.159 -.4(r, s)
-.15 H .358(uch as C-Z or C-C,).4 F .187(retain that function.)108 292.8
-R .187(Upper and lo)5.187 F .188(wer case meta\214ed characters are bou\
-nd to the same function in the emacs)-.25 F .305(mode meta k)108 304.8 R
--.15(ey)-.1 G 2.805(map. The).15 F .305(remaining characters are unboun\
-d, which causes readline to ring the bell \(subject)2.805 F
-(to the setting of the)108 316.8 Q F1(bell\255style)2.5 E F0 -.25(va)2.5
-G(riable\).).25 E F1(Emacs Mode)87 333.6 Q F0(Emacs Standard bindings)
-151.2 345.6 Q 2.5("C-@" set-mark)151.2 369.6 R 2.5("C-A" be)151.2 381.6
-R(ginning-of-line)-.15 E 2.5("C-B" backw)151.2 393.6 R(ard-char)-.1 E
-2.5("C-D" delete-char)151.2 405.6 R 2.5("C-E" end-of-line)151.2 417.6 R
-2.5("C-F" forw)151.2 429.6 R(ard-char)-.1 E 2.5("C-G" abort)151.2 441.6
-R 2.5("C-H" backw)151.2 453.6 R(ard-delete-char)-.1 E 2.5
-("C-I" complete)151.2 465.6 R 2.5("C-J" accept-line)151.2 477.6 R 2.5
-("C-K" kill-line)151.2 489.6 R 2.5("C-L" clear)151.2 501.6 R(-screen)-.2
-E 2.5("C-M" accept-line)151.2 513.6 R 2.5("C-N" ne)151.2 525.6 R
-(xt-history)-.15 E 2.5("C-P" pre)151.2 537.6 R(vious-history)-.25 E 2.5
-("C-Q" quoted-insert)151.2 549.6 R 2.5("C-R" re)151.2 561.6 R -.15(ve)
--.25 G(rse-search-history).15 E 2.5("C-S" forw)151.2 573.6 R
-(ard-search-history)-.1 E 2.5("C-T" transpose-chars)151.2 585.6 R 2.5
-("C-U" unix-line-discard)151.2 597.6 R 2.5("C-V" quoted-insert)151.2
-609.6 R 2.5("C-W" unix-w)151.2 621.6 R(ord-rubout)-.1 E 2.5("C-Y" yank)
-151.2 633.6 R 2.5("C-]" character)151.2 645.6 R(-search)-.2 E 2.5
-("C-_" undo)151.2 657.6 R 3.333("")151.2 669.6 S(to "/")-.833 E
-(self-insert)5 E 2.5("0" to)151.2 681.6 R 2.5("9" self-insert)2.5 F 2.5
-(":" to)151.2 693.6 R 2.5("~" self-insert)2.5 F 2.5("C-?" backw)151.2
-705.6 R(ard-delete-char)-.1 E(Emacs Meta bindings)151.2 722.4 Q
-(GNU Readline 4.3)72 768 Q(2002 January 22)126.24 E(10)190.95 E EP
-%%Page: 11 11
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R 2.5
-("M-C-G" abort)151.2 84 R 2.5("M-C-H" backw)151.2 96 R(ard-kill-w)-.1 E
-(ord)-.1 E 2.5("M-C-I" tab-insert)151.2 108 R 2.5
-("M-C-J" vi-editing-mode)151.2 120 R 2.5("M-C-M" vi-editing-mode)151.2
-132 R 2.5("M-C-R" re)151.2 144 R -.15(ve)-.25 G(rt-line).15 E 2.5
-("M-C-Y" yank-nth-ar)151.2 156 R(g)-.18 E 2.5("M-C-[" complete)151.2 168
-R 2.5("M-C-]" character)151.2 180 R(-search-backw)-.2 E(ard)-.1 E 2.5
-("M-space" set-mark)151.2 192 R 2.5("M-#" insert-comment)151.2 204 R 2.5
-("M-&" tilde-e)151.2 216 R(xpand)-.15 E 2.5("M-*" insert-completions)
-151.2 228 R 2.5("M--" digit-ar)151.2 240 R(gument)-.18 E 2.5
-("M-." yank-last-ar)151.2 252 R(g)-.18 E 2.5("M-0" digit-ar)151.2 264 R
-(gument)-.18 E 2.5("M-1" digit-ar)151.2 276 R(gument)-.18 E 2.5
-("M-2" digit-ar)151.2 288 R(gument)-.18 E 2.5("M-3" digit-ar)151.2 300 R
-(gument)-.18 E 2.5("M-4" digit-ar)151.2 312 R(gument)-.18 E 2.5
-("M-5" digit-ar)151.2 324 R(gument)-.18 E 2.5("M-6" digit-ar)151.2 336 R
-(gument)-.18 E 2.5("M-7" digit-ar)151.2 348 R(gument)-.18 E 2.5
-("M-8" digit-ar)151.2 360 R(gument)-.18 E 2.5("M-9" digit-ar)151.2 372 R
-(gument)-.18 E 2.5("M-<" be)151.2 384 R(ginning-of-history)-.15 E 2.5
-("M-=" possible-completions)151.2 396 R 2.5("M->" end-of-history)151.2
-408 R 2.5("M-?" possible-completions)151.2 420 R 2.5("M-B" backw)151.2
-432 R(ard-w)-.1 E(ord)-.1 E 2.5("M-C" capitalize-w)151.2 444 R(ord)-.1 E
-2.5("M-D" kill-w)151.2 456 R(ord)-.1 E 2.5("M-F" forw)151.2 468 R(ard-w)
--.1 E(ord)-.1 E 2.5("M-L" do)151.2 480 R(wncase-w)-.25 E(ord)-.1 E 2.5
-("M-N" non-incremental-forw)151.2 492 R(ard-search-history)-.1 E 2.5
-("M-P" non-incremental-re)151.2 504 R -.15(ve)-.25 G(rse-search-history)
-.15 E 2.5("M-R" re)151.2 516 R -.15(ve)-.25 G(rt-line).15 E 2.5
-("M-T" transpose-w)151.2 528 R(ords)-.1 E 2.5("M-U" upcase-w)151.2 540 R
-(ord)-.1 E 2.5("M-Y" yank-pop)151.2 552 R 2.5
-("M-\\" delete-horizontal-space)151.2 564 R 2.5("M-~" tilde-e)151.2 576
-R(xpand)-.15 E 2.5("M-C-?" backw)151.2 588 R(ard-kill-w)-.1 E(ord)-.1 E
-2.5("M-_" yank-last-ar)151.2 600 R(g)-.18 E(Emacs Control-X bindings)
-151.2 616.8 Q 2.5("C-XC-G" abort)151.2 640.8 R 2.5
-("C-XC-R" re-read-init-\214le)151.2 652.8 R 2.5("C-XC-U" undo)151.2
-664.8 R 2.5("C-XC-X" e)151.2 676.8 R(xchange-point-and-mark)-.15 E 2.5
-("C-X\(" start-kbd-macro)151.2 688.8 R 2.5("C-X\)" end-kbd-macro)151.2
-700.8 R 2.5("C-XE" call-last-kbd-macro)151.2 712.8 R 2.5("C-XC-?" backw)
-151.2 724.8 R(ard-kill-line)-.1 E(GNU Readline 4.3)72 768 Q
-(2002 January 22)126.24 E(11)190.95 E EP
-%%Page: 12 12
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R/F1 10
-/Times-Bold@0 SF(VI Mode bindings)87 84 Q F0(VI Insert Mode functions)
-151.2 96 Q 2.5("C-D" vi-eof-maybe)151.2 120 R 2.5("C-H" backw)151.2 132
-R(ard-delete-char)-.1 E 2.5("C-I" complete)151.2 144 R 2.5
-("C-J" accept-line)151.2 156 R 2.5("C-M" accept-line)151.2 168 R 2.5
-("C-R" re)151.2 180 R -.15(ve)-.25 G(rse-search-history).15 E 2.5
-("C-S" forw)151.2 192 R(ard-search-history)-.1 E 2.5
-("C-T" transpose-chars)151.2 204 R 2.5("C-U" unix-line-discard)151.2 216
-R 2.5("C-V" quoted-insert)151.2 228 R 2.5("C-W" unix-w)151.2 240 R
-(ord-rubout)-.1 E 2.5("C-Y" yank)151.2 252 R 2.5("C-[" vi-mo)151.2 264 R
--.15(ve)-.15 G(ment-mode).15 E 2.5("C-_" undo)151.2 276 R 3.333("")151.2
-288 S(to "~")-.833 E(self-insert)5 E 2.5("C-?" backw)151.2 300 R
-(ard-delete-char)-.1 E(VI Command Mode functions)151.2 316.8 Q 2.5
-("C-D" vi-eof-maybe)151.2 340.8 R 2.5("C-E" emacs-editing-mode)151.2
-352.8 R 2.5("C-G" abort)151.2 364.8 R 2.5("C-H" backw)151.2 376.8 R
-(ard-char)-.1 E 2.5("C-J" accept-line)151.2 388.8 R 2.5("C-K" kill-line)
-151.2 400.8 R 2.5("C-L" clear)151.2 412.8 R(-screen)-.2 E 2.5
-("C-M" accept-line)151.2 424.8 R 2.5("C-N" ne)151.2 436.8 R(xt-history)
--.15 E 2.5("C-P" pre)151.2 448.8 R(vious-history)-.25 E 2.5
-("C-Q" quoted-insert)151.2 460.8 R 2.5("C-R" re)151.2 472.8 R -.15(ve)
--.25 G(rse-search-history).15 E 2.5("C-S" forw)151.2 484.8 R
-(ard-search-history)-.1 E 2.5("C-T" transpose-chars)151.2 496.8 R 2.5
-("C-U" unix-line-discard)151.2 508.8 R 2.5("C-V" quoted-insert)151.2
-520.8 R 2.5("C-W" unix-w)151.2 532.8 R(ord-rubout)-.1 E 2.5("C-Y" yank)
-151.2 544.8 R 2.5("C-_" vi-undo)151.2 556.8 R -4.166 3.333("" f)151.2
-568.8 T(orw)-3.333 E(ard-char)-.1 E 2.5("#" insert-comment)151.2 580.8 R
-2.5("$" end-of-line)151.2 592.8 R 2.5("%" vi-match)151.2 604.8 R 2.5
-("&" vi-tilde-e)151.2 616.8 R(xpand)-.15 E 2.5("*" vi-complete)151.2
-628.8 R 2.5("+" ne)151.2 640.8 R(xt-history)-.15 E 2.5("," vi-char)151.2
-652.8 R(-search)-.2 E 2.5("-" pre)151.2 664.8 R(vious-history)-.25 E 2.5
-("." vi-redo)151.2 676.8 R 2.5("/" vi-search)151.2 688.8 R 2.5("0" be)
-151.2 700.8 R(ginning-of-line)-.15 E("1" to "9")151.2 712.8 Q(vi-ar)5 E
-(g-digit)-.18 E 2.5(";" vi-char)151.2 724.8 R(-search)-.2 E
-(GNU Readline 4.3)72 768 Q(2002 January 22)126.24 E(12)190.95 E EP
-%%Page: 13 13
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R 2.5
-("=" vi-complete)151.2 84 R 2.5("?" vi-search)151.2 96 R 2.5
-("A" vi-append-eol)151.2 108 R 2.5("B" vi-pre)151.2 120 R(v-w)-.25 E
-(ord)-.1 E 2.5("C" vi-change-to)151.2 132 R 2.5("D" vi-delete-to)151.2
-144 R 2.5("E" vi-end-w)151.2 156 R(ord)-.1 E 2.5("F" vi-char)151.2 168 R
-(-search)-.2 E 2.5("G" vi-fetch-history)151.2 180 R 2.5
-("I" vi-insert-be)151.2 192 R(g)-.15 E 2.5("N" vi-search-ag)151.2 204 R
-(ain)-.05 E 2.5("P" vi-put)151.2 216 R 2.5("R" vi-replace)151.2 228 R
-2.5("S" vi-subst)151.2 240 R 2.5("T" vi-char)151.2 252 R(-search)-.2 E
-2.5("U" re)151.2 264 R -.15(ve)-.25 G(rt-line).15 E 2.5("W" vi-ne)151.2
-276 R(xt-w)-.15 E(ord)-.1 E 2.5("X" backw)151.2 288 R(ard-delete-char)
--.1 E 2.5("Y" vi-yank-to)151.2 300 R 2.5("\\" vi-complete)151.2 312 R
-2.5("^" vi-\214rst-print)151.2 324 R 2.5("_" vi-yank-ar)151.2 336 R(g)
--.18 E 2.5("`" vi-goto-mark)151.2 348 R 2.5("a" vi-append-mode)151.2 360
-R 2.5("b" vi-pre)151.2 372 R(v-w)-.25 E(ord)-.1 E 2.5("c" vi-change-to)
-151.2 384 R 2.5("d" vi-delete-to)151.2 396 R 2.5("e" vi-end-w)151.2 408
-R(ord)-.1 E 2.5("f" vi-char)151.2 420 R(-search)-.2 E 2.5("h" backw)
-151.2 432 R(ard-char)-.1 E 2.5("i" vi-insertion-mode)151.2 444 R 2.5
-("j" ne)151.2 456 R(xt-history)-.15 E 2.5("k" pre)151.2 468 R(v-history)
--.25 E 2.5("l" forw)151.2 480 R(ard-char)-.1 E 2.5("m" vi-set-mark)151.2
-492 R 2.5("n" vi-search-ag)151.2 504 R(ain)-.05 E 2.5("p" vi-put)151.2
-516 R 2.5("r" vi-change-char)151.2 528 R 2.5("s" vi-subst)151.2 540 R
-2.5("t" vi-char)151.2 552 R(-search)-.2 E 2.5("u" vi-undo)151.2 564 R
-2.5("w" vi-ne)151.2 576 R(xt-w)-.15 E(ord)-.1 E 2.5("x" vi-delete)151.2
-588 R 2.5("y" vi-yank-to)151.2 600 R 2.5("|" vi-column)151.2 612 R 2.5
-("~" vi-change-case)151.2 624 R/F1 10.95/Times-Bold@0 SF(SEE ALSO)72
-640.8 Q/F2 10/Times-Italic@0 SF(The Gnu Readline Libr)108 652.8 Q(ary)
--.15 E F0 2.5(,B)C(rian F)-2.5 E(ox and Chet Rame)-.15 E(y)-.15 E F2
-(The Gnu History Libr)108 664.8 Q(ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E
-(ox and Chet Rame)-.15 E(y)-.15 E F2(bash)108 676.8 Q F0(\(1\))A F1
-(FILES)72 693.6 Q F2(~/.inputr)109.666 705.6 Q(c)-.37 E F0(Indi)144
-717.6 Q(vidual)-.25 E/F3 10/Times-Bold@0 SF -.18(re)2.5 G(adline).18 E
-F0(initialization \214le)2.5 E(GNU Readline 4.3)72 768 Q
-(2002 January 22)126.24 E(13)190.95 E EP
-%%Page: 14 14
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R/F1
-10.95/Times-Bold@0 SF -.548(AU)72 84 S(THORS).548 E F0(Brian F)108 96 Q
-(ox, Free Softw)-.15 E(are F)-.1 E(oundation)-.15 E(bfox@gnu.or)108 108
-Q(g)-.18 E(Chet Rame)108 124.8 Q 1.3 -.65(y, C)-.15 H(ase W).65 E
-(estern Reserv)-.8 E 2.5(eU)-.15 G(ni)-2.5 E -.15(ve)-.25 G(rsity).15 E
-(chet@ins.CWR)108 136.8 Q(U.Edu)-.4 E F1 -.11(BU)72 153.6 S 2.738(GR).11
-G(EPOR)-2.738 E(TS)-.438 E F0 .69(If you \214nd a b)108 165.6 R .69
-(ug in)-.2 F/F2 10/Times-Bold@0 SF -.18(re)3.19 G(adline,).18 E F0 .69
-(you should report it.)3.19 F .691(But \214rst, you should mak)5.69 F
-3.191(es)-.1 G .691(ure that it really is a b)-3.191 F(ug,)-.2 E
-(and that it appears in the latest v)108 177.6 Q(ersion of the)-.15 E F2
--.18(re)2.5 G(adline).18 E F0(library that you ha)2.5 E -.15(ve)-.2 G(.)
-.15 E .705(Once you ha)108 194.4 R 1.005 -.15(ve d)-.2 H .705
-(etermined that a b).15 F .704(ug actually e)-.2 F .704(xists, mail a b)
--.15 F .704(ug report to)-.2 F/F3 10/Times-Italic@0 SF -.2(bu)3.204 G
-(g\255r).2 E(eadline)-.37 E F0(@)A F3(gnu.or)A(g)-.37 E F0 5.704(.I)C
-3.204(fy)-5.704 G(ou)-3.204 E(ha)108 206.4 Q 1.809 -.15(ve a \214)-.2 H
-1.509(x, you are welcome to mail that as well!).15 F 1.51
-(Suggestions and `philosophical' b)6.51 F 1.51(ug reports may be)-.2 F
-(mailed to)108 218.4 Q F3 -.2(bu)2.5 G(g-r).2 E(eadline)-.37 E F0(@)A F3
-(gnu.or)A(g)-.37 E F0(or posted to the Usenet ne)2.5 E(wsgroup)-.25 E F2
-(gnu.bash.b)2.5 E(ug)-.2 E F0(.)A(Comments and b)108 235.2 Q
-(ug reports concerning this manual page should be directed to)-.2 E F3
--.15(ch)2.5 G(et@ins.CWR).15 E -.25(U.)-.4 G(Edu).25 E F0(.).25 E F1
--.11(BU)72 252 S(GS).11 E F0(It')108 264 Q 2.5(st)-.55 G
-(oo big and too slo)-2.5 E -.65(w.)-.25 G(GNU Readline 4.3)72 768 Q
-(2002 January 22)126.24 E(14)190.95 E EP
-%%Trailer
-end
-%%EOF
diff --git a/readline-doc-4.3/doc/rluserman.dvi b/readline-doc-4.3/doc/rluserman.dvi
deleted file mode 100644
index a2339aa..0000000
--- a/readline-doc-4.3/doc/rluserman.dvi
+++ /dev/null
Binary files differ
diff --git a/readline-doc-4.3/doc/rluserman.html b/readline-doc-4.3/doc/rluserman.html
deleted file mode 100644
index ac8bfbd..0000000
--- a/readline-doc-4.3/doc/rluserman.html
+++ /dev/null
@@ -1,2184 +0,0 @@
-<HTML>
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<!-- Created on June, 27 2002 by texi2html 1.64 -->
-<!--
-Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
- Karl Berry <karl@freefriends.org>
- Olaf Bachmann <obachman@mathematik.uni-kl.de>
- and many others.
-Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>
-Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
-
--->
-<HEAD>
-<TITLE>GNU Readline Library: </TITLE>
-
-<META NAME="description" CONTENT="GNU Readline Library: ">
-<META NAME="keywords" CONTENT="GNU Readline Library: ">
-<META NAME="resource-type" CONTENT="document">
-<META NAME="distribution" CONTENT="global">
-<META NAME="Generator" CONTENT="texi2html 1.64">
-
-</HEAD>
-
-<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
-
-<A NAME="SEC_Top"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1>GNU Readline Library</H1></P><P>
-
-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 that need to provide a command line interface.
-</P><P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC1">1. Command Line Editing</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">GNU Readline User's Manual.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<HR SIZE=1>
-<A NAME="SEC1"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC2"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<A NAME="Command Line Editing"></A>
-<H1> 1. Command Line Editing </H1>
-<!--docid::SEC1::-->
-<P>
-
-This chapter describes the basic features of the GNU
-command line editing interface.
-</P><P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC2">1.1 Introduction to Line Editing</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Notation used in this text.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC3">1.2 Readline Interaction</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">The minimum set of commands for editing a line.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC9">1.3 Readline Init File</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Customizing Readline from a user's view.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC13">1.4 Bindable Readline Commands</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">A description of most of the Readline commands
- available for binding</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC22">1.5 Readline vi Mode</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">A short description of how to make Readline
- behave like the vi editor.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<A NAME="Introduction and Notation"></A>
-<HR SIZE="6">
-<A NAME="SEC2"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC1"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC3"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC1"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 1.1 Introduction to Line Editing </H2>
-<!--docid::SEC2::-->
-<P>
-
-The following paragraphs describe the notation used to represent
-keystrokes.
-</P><P>
-
-The text <KBD>C-k</KBD> is read as `Control-K' and describes the character
-produced when the <KBD>k</KBD> key is pressed while the Control key
-is depressed.
-</P><P>
-
-The text <KBD>M-k</KBD> is read as `Meta-K' and describes the character
-produced when the Meta key (if you have one) is depressed, and the <KBD>k</KBD>
-key is pressed.
-The Meta key is labeled <KBD>ALT</KBD> on many keyboards.
-On keyboards with two keys labeled <KBD>ALT</KBD> (usually to either side of
-the space bar), the <KBD>ALT</KBD> on the left side is generally set to
-work as a Meta key.
-The <KBD>ALT</KBD> key on the right may also be configured to work as a
-Meta key or may be configured as some other modifier, such as a
-Compose key for typing accented characters.
-</P><P>
-
-If you do not have a Meta or <KBD>ALT</KBD> key, or another key working as
-a Meta key, the identical keystroke can be generated by typing <KBD>ESC</KBD>
-<EM>first</EM>, and then typing <KBD>k</KBD>.
-Either process is known as <EM>metafying</EM> the <KBD>k</KBD> key.
-</P><P>
-
-The text <KBD>M-C-k</KBD> is read as `Meta-Control-k' and describes the
-character produced by <EM>metafying</EM> <KBD>C-k</KBD>.
-</P><P>
-
-In addition, several keys have their own names. Specifically,
-<KBD>DEL</KBD>, <KBD>ESC</KBD>, <KBD>LFD</KBD>, <KBD>SPC</KBD>, <KBD>RET</KBD>, and <KBD>TAB</KBD> all
-stand for themselves when seen in this text, or in an init file
-(see section <A HREF="rluserman.html#SEC9">1.3 Readline Init File</A>).
-If your keyboard lacks a <KBD>LFD</KBD> key, typing <KBD>C-j</KBD> will
-produce the desired character.
-The <KBD>RET</KBD> key may be labeled <KBD>Return</KBD> or <KBD>Enter</KBD> on
-some keyboards.
-</P><P>
-
-<A NAME="Readline Interaction"></A>
-<HR SIZE="6">
-<A NAME="SEC3"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC2"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC4"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC1"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 1.2 Readline Interaction </H2>
-<!--docid::SEC3::-->
-<P>
-
-Often during an interactive session you type in a long line of text,
-only to notice that the first word on the line is misspelled. The
-Readline library gives you a set of commands for manipulating the text
-as you type it in, allowing you to just fix your typo, and not forcing
-you to retype the majority of the line. Using these editing commands,
-you move the cursor to the place that needs correction, and delete or
-insert the text of the corrections. Then, when you are satisfied with
-the line, you simply press <KBD>RET</KBD>. You do not have to be at the
-end of the line to press <KBD>RET</KBD>; the entire line is accepted
-regardless of the location of the cursor within the line.
-</P><P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC4">1.2.1 Readline Bare Essentials</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">The least you need to know about Readline.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC5">1.2.2 Readline Movement Commands</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Moving about the input line.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC6">1.2.3 Readline Killing Commands</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">How to delete text, and how to get it back!</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC7">1.2.4 Readline Arguments</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Giving numeric arguments to commands.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC8">1.2.5 Searching for Commands in the History</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Searching through previous lines.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<A NAME="Readline Bare Essentials"></A>
-<HR SIZE="6">
-<A NAME="SEC4"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC3"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC5"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC3"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.2.1 Readline Bare Essentials </H3>
-<!--docid::SEC4::-->
-<P>
-
-In order to enter characters into the line, simply type them. The typed
-character appears where the cursor was, and then the cursor moves one
-space to the right. If you mistype a character, you can use your
-erase character to back up and delete the mistyped character.
-</P><P>
-
-Sometimes you may mistype a character, and
-not notice the error until you have typed several other characters. In
-that case, you can type <KBD>C-b</KBD> to move the cursor to the left, and then
-correct your mistake. Afterwards, you can move the cursor to the right
-with <KBD>C-f</KBD>.
-</P><P>
-
-When you add text in the middle of a line, you will notice that characters
-to the right of the cursor are `pushed over' to make room for the text
-that you have inserted. Likewise, when you delete text behind the cursor,
-characters to the right of the cursor are `pulled back' to fill in the
-blank space created by the removal of the text. A list of the bare
-essentials for editing the text of an input line follows.
-</P><P>
-
-<DL COMPACT>
-<DT><KBD>C-b</KBD>
-<DD>Move back one character.
-<DT><KBD>C-f</KBD>
-<DD>Move forward one character.
-<DT><KBD>DEL</KBD> or <KBD>Backspace</KBD>
-<DD>Delete the character to the left of the cursor.
-<DT><KBD>C-d</KBD>
-<DD>Delete the character underneath the cursor.
-<DT>Printing characters
-<DD>Insert the character into the line at the cursor.
-<DT><KBD>C-_</KBD> or <KBD>C-x C-u</KBD>
-<DD>Undo the last editing command. You can undo all the way back to an
-empty line.
-</DL>
-<P>
-
-(Depending on your configuration, the <KBD>Backspace</KBD> key be set to
-delete the character to the left of the cursor and the <KBD>DEL</KBD> key set
-to delete the character underneath the cursor, like <KBD>C-d</KBD>, rather
-than the character to the left of the cursor.)
-</P><P>
-
-<A NAME="Readline Movement Commands"></A>
-<HR SIZE="6">
-<A NAME="SEC5"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC4"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC6"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC6"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC3"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.2.2 Readline Movement Commands </H3>
-<!--docid::SEC5::-->
-<P>
-
-The above table describes the most basic keystrokes that you need
-in order to do editing of the input line. For your convenience, many
-other commands have been added in addition to <KBD>C-b</KBD>, <KBD>C-f</KBD>,
-<KBD>C-d</KBD>, and <KBD>DEL</KBD>. Here are some commands for moving more rapidly
-about the line.
-</P><P>
-
-<DL COMPACT>
-<DT><KBD>C-a</KBD>
-<DD>Move to the start of the line.
-<DT><KBD>C-e</KBD>
-<DD>Move to the end of the line.
-<DT><KBD>M-f</KBD>
-<DD>Move forward a word, where a word is composed of letters and digits.
-<DT><KBD>M-b</KBD>
-<DD>Move backward a word.
-<DT><KBD>C-l</KBD>
-<DD>Clear the screen, reprinting the current line at the top.
-</DL>
-<P>
-
-Notice how <KBD>C-f</KBD> moves forward a character, while <KBD>M-f</KBD> moves
-forward a word. It is a loose convention that control keystrokes
-operate on characters while meta keystrokes operate on words.
-</P><P>
-
-<A NAME="Readline Killing Commands"></A>
-<HR SIZE="6">
-<A NAME="SEC6"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC5"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC7"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC7"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC3"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.2.3 Readline Killing Commands </H3>
-<!--docid::SEC6::-->
-<P>
-
-<A NAME="IDX1"></A>
-<A NAME="IDX2"></A>
-</P><P>
-
-<EM>Killing</EM> text means to delete the text from the line, but to save
-it away for later use, usually by <EM>yanking</EM> (re-inserting)
-it back into the line.
-(`Cut' and `paste' are more recent jargon for `kill' and `yank'.)
-</P><P>
-
-If the description for a command says that it `kills' text, then you can
-be sure that you can get the text back in a different (or the same)
-place later.
-</P><P>
-
-When you use a kill command, the text is saved in a <EM>kill-ring</EM>.
-Any number of consecutive kills save all of the killed text together, so
-that when you yank it back, you get it all. The kill
-ring is not line specific; the text that you killed on a previously
-typed line is available to be yanked back later, when you are typing
-another line.
-<A NAME="IDX3"></A>
-</P><P>
-
-Here is the list of commands for killing text.
-</P><P>
-
-<DL COMPACT>
-<DT><KBD>C-k</KBD>
-<DD>Kill the text from the current cursor position to the end of the line.
-<P>
-
-<DT><KBD>M-d</KBD>
-<DD>Kill from the cursor to the end of the current word, or, if between
-words, to the end of the next word.
-Word boundaries are the same as those used by <KBD>M-f</KBD>.
-<P>
-
-<DT><KBD>M-<KBD>DEL</KBD></KBD>
-<DD>Kill from the cursor the start of the current word, or, if between
-words, to the start of the previous word.
-Word boundaries are the same as those used by <KBD>M-b</KBD>.
-<P>
-
-<DT><KBD>C-w</KBD>
-<DD>Kill from the cursor to the previous whitespace. This is different than
-<KBD>M-<KBD>DEL</KBD></KBD> because the word boundaries differ.
-<P>
-
-</DL>
-<P>
-
-Here is how to <EM>yank</EM> the text back into the line. Yanking
-means to copy the most-recently-killed text from the kill buffer.
-</P><P>
-
-<DL COMPACT>
-<DT><KBD>C-y</KBD>
-<DD>Yank the most recently killed text back into the buffer at the cursor.
-<P>
-
-<DT><KBD>M-y</KBD>
-<DD>Rotate the kill-ring, and yank the new top. You can only do this if
-the prior command is <KBD>C-y</KBD> or <KBD>M-y</KBD>.
-</DL>
-<P>
-
-<A NAME="Readline Arguments"></A>
-<HR SIZE="6">
-<A NAME="SEC7"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC6"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC8"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC8"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC3"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.2.4 Readline Arguments </H3>
-<!--docid::SEC7::-->
-<P>
-
-You can pass numeric arguments to Readline commands. Sometimes the
-argument acts as a repeat count, other times it is the <I>sign</I> of the
-argument that is significant. If you pass a negative argument to a
-command which normally acts in a forward direction, that command will
-act in a backward direction. For example, to kill text back to the
-start of the line, you might type <SAMP>`M-- C-k'</SAMP>.
-</P><P>
-
-The general way to pass numeric arguments to a command is to type meta
-digits before the command. If the first `digit' typed is a minus
-sign (<SAMP>`-'</SAMP>), then the sign of the argument will be negative. Once
-you have typed one meta digit to get the argument started, you can type
-the remainder of the digits, and then the command. For example, to give
-the <KBD>C-d</KBD> command an argument of 10, you could type <SAMP>`M-1 0 C-d'</SAMP>,
-which will delete the next ten characters on the input line.
-</P><P>
-
-<A NAME="Searching"></A>
-<HR SIZE="6">
-<A NAME="SEC8"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC7"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC3"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.2.5 Searching for Commands in the History </H3>
-<!--docid::SEC8::-->
-<P>
-
-Readline provides commands for searching through the command history
-for lines containing a specified string.
-There are two search modes: <EM>incremental</EM> and <EM>non-incremental</EM>.
-</P><P>
-
-Incremental searches begin before the user has finished typing the
-search string.
-As each character of the search string is typed, Readline displays
-the next entry from the history matching the string typed so far.
-An incremental search requires only as many characters as needed to
-find the desired history entry.
-To search backward in the history for a particular string, type
-<KBD>C-r</KBD>. Typing <KBD>C-s</KBD> searches forward through the history.
-The characters present in the value of the <CODE>isearch-terminators</CODE> variable
-are used to terminate an incremental search.
-If that variable has not been assigned a value, the <KBD>ESC</KBD> and
-<KBD>C-J</KBD> characters will terminate an incremental search.
-<KBD>C-g</KBD> will abort an incremental search and restore the original line.
-When the search is terminated, the history entry containing the
-search string becomes the current line.
-</P><P>
-
-To find other matching entries in the history list, type <KBD>C-r</KBD> or
-<KBD>C-s</KBD> as appropriate.
-This will search backward or forward in the history for the next
-entry matching the search string typed so far.
-Any other key sequence bound to a Readline command will terminate
-the search and execute that command.
-For instance, a <KBD>RET</KBD> will terminate the search and accept
-the line, thereby executing the command from the history list.
-A movement command will terminate the search, make the last line found
-the current line, and begin editing.
-</P><P>
-
-Readline remembers the last incremental search string. If two
-<KBD>C-r</KBD>s are typed without any intervening characters defining a new
-search string, any remembered search string is used.
-</P><P>
-
-Non-incremental searches read the entire search string before starting
-to search for matching history lines. The search string may be
-typed by the user or be part of the contents of the current line.
-</P><P>
-
-<A NAME="Readline Init File"></A>
-<HR SIZE="6">
-<A NAME="SEC9"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC8"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC10"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC1"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 1.3 Readline Init File </H2>
-<!--docid::SEC9::-->
-<P>
-
-Although the Readline library comes with a set of Emacs-like
-keybindings installed by default, it is possible to use a different set
-of keybindings.
-Any user can customize programs that use Readline by putting
-commands in an <EM>inputrc</EM> file, conventionally in his home directory.
-The name of this
-file is taken from the value of the environment variable <CODE>INPUTRC</CODE>. If
-that variable is unset, the default is <TT>`~/.inputrc'</TT>.
-</P><P>
-
-When a program which uses the Readline library starts up, the
-init file is read, and the key bindings are set.
-</P><P>
-
-In addition, the <CODE>C-x C-r</CODE> command re-reads this init file, thus
-incorporating any changes that you might have made to it.
-</P><P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Syntax for the commands in the inputrc file.</TD></TR>
-</TABLE>
-
-<br>
-<TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC11">1.3.2 Conditional Init Constructs</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Conditional key bindings in the inputrc file.</TD></TR>
-</TABLE>
-
-<br>
-<TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC12">1.3.3 Sample Init File</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">An example inputrc file.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<A NAME="Readline Init File Syntax"></A>
-<HR SIZE="6">
-<A NAME="SEC10"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC11"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.3.1 Readline Init File Syntax </H3>
-<!--docid::SEC10::-->
-<P>
-
-There are only a few basic constructs allowed in the
-Readline init file. Blank lines are ignored.
-Lines beginning with a <SAMP>`#'</SAMP> are comments.
-Lines beginning with a <SAMP>`$'</SAMP> indicate conditional
-constructs (see section <A HREF="rluserman.html#SEC11">1.3.2 Conditional Init Constructs</A>). Other lines
-denote variable settings and key bindings.
-</P><P>
-
-<DL COMPACT>
-<DT>Variable Settings
-<DD>You can modify the run-time behavior of Readline by
-altering the values of variables in Readline
-using the <CODE>set</CODE> command within the init file.
-The syntax is simple:
-<P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>set <VAR>variable</VAR> <VAR>value</VAR>
-</pre></td></tr></table></P><P>
-
-Here, for example, is how to
-change from the default Emacs-like key binding to use
-<CODE>vi</CODE> line editing commands:
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>set editing-mode vi
-</pre></td></tr></table></P><P>
-
-Variable names and values, where appropriate, are recognized without regard
-to case.
-</P><P>
-
-A great deal of run-time behavior is changeable with the following
-variables.
-</P><P>
-
-<A NAME="IDX4"></A>
-<DL COMPACT>
-
-<DT><CODE>bell-style</CODE>
-<DD><A NAME="IDX5"></A>
-Controls what happens when Readline wants to ring the terminal bell.
-If set to <SAMP>`none'</SAMP>, Readline never rings the bell. If set to
-<SAMP>`visible'</SAMP>, Readline uses a visible bell if one is available.
-If set to <SAMP>`audible'</SAMP> (the default), Readline attempts to ring
-the terminal's bell.
-<P>
-
-<DT><CODE>comment-begin</CODE>
-<DD><A NAME="IDX6"></A>
-The string to insert at the beginning of the line when the
-<CODE>insert-comment</CODE> command is executed. The default value
-is <CODE>"#"</CODE>.
-<P>
-
-<DT><CODE>completion-ignore-case</CODE>
-<DD>If set to <SAMP>`on'</SAMP>, Readline performs filename matching and completion
-in a case-insensitive fashion.
-The default value is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>completion-query-items</CODE>
-<DD><A NAME="IDX7"></A>
-The number of possible completions that determines when the user is
-asked whether he wants to see the list of possibilities. If the
-number of possible completions is greater than this value,
-Readline will ask the user whether or not he wishes to view
-them; otherwise, they are simply listed.
-This variable must be set to an integer value greater than or equal to 0.
-The default limit is <CODE>100</CODE>.
-<P>
-
-<DT><CODE>convert-meta</CODE>
-<DD><A NAME="IDX8"></A>
-If set to <SAMP>`on'</SAMP>, Readline will convert characters with the
-eighth bit set to an ASCII key sequence by stripping the eighth
-bit and prefixing an <KBD>ESC</KBD> character, converting them to a
-meta-prefixed key sequence. The default value is <SAMP>`on'</SAMP>.
-<P>
-
-<DT><CODE>disable-completion</CODE>
-<DD><A NAME="IDX9"></A>
-If set to <SAMP>`On'</SAMP>, Readline will inhibit word completion.
-Completion characters will be inserted into the line as if they had
-been mapped to <CODE>self-insert</CODE>. The default is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>editing-mode</CODE>
-<DD><A NAME="IDX10"></A>
-The <CODE>editing-mode</CODE> variable controls which default set of
-key bindings is used. By default, Readline starts up in Emacs editing
-mode, where the keystrokes are most similar to Emacs. This variable can be
-set to either <SAMP>`emacs'</SAMP> or <SAMP>`vi'</SAMP>.
-<P>
-
-<DT><CODE>enable-keypad</CODE>
-<DD><A NAME="IDX11"></A>
-When set to <SAMP>`on'</SAMP>, Readline will try to enable the application
-keypad when it is called. Some systems need this to enable the
-arrow keys. The default is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>expand-tilde</CODE>
-<DD><A NAME="IDX12"></A>
-If set to <SAMP>`on'</SAMP>, tilde expansion is performed when Readline
-attempts word completion. The default is <SAMP>`off'</SAMP>.
-<P>
-
-<A NAME="IDX13"></A>
-If set to <SAMP>`on'</SAMP>, the history code attempts to place point at the
-same location on each history line retrived with <CODE>previous-history</CODE>
-or <CODE>next-history</CODE>.
-</P><P>
-
-<DT><CODE>horizontal-scroll-mode</CODE>
-<DD><A NAME="IDX14"></A>
-This variable can be set to either <SAMP>`on'</SAMP> or <SAMP>`off'</SAMP>. Setting it
-to <SAMP>`on'</SAMP> means that the text of the lines being edited will scroll
-horizontally on a single screen line when they are longer than the width
-of the screen, instead of wrapping onto a new screen line. By default,
-this variable is set to <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>input-meta</CODE>
-<DD><A NAME="IDX15"></A>
-<A NAME="IDX16"></A>
-If set to <SAMP>`on'</SAMP>, Readline will enable eight-bit input (it
-will not clear the eighth bit in the characters it reads),
-regardless of what the terminal claims it can support. The
-default value is <SAMP>`off'</SAMP>. The name <CODE>meta-flag</CODE> is a
-synonym for this variable.
-<P>
-
-<DT><CODE>isearch-terminators</CODE>
-<DD><A NAME="IDX17"></A>
-The string of characters that should terminate an incremental search without
-subsequently executing the character as a command (see section <A HREF="rluserman.html#SEC8">1.2.5 Searching for Commands in the History</A>).
-If this variable has not been given a value, the characters <KBD>ESC</KBD> and
-<KBD>C-J</KBD> will terminate an incremental search.
-<P>
-
-<DT><CODE>keymap</CODE>
-<DD><A NAME="IDX18"></A>
-Sets Readline's idea of the current keymap for key binding commands.
-Acceptable <CODE>keymap</CODE> names are
-<CODE>emacs</CODE>,
-<CODE>emacs-standard</CODE>,
-<CODE>emacs-meta</CODE>,
-<CODE>emacs-ctlx</CODE>,
-<CODE>vi</CODE>,
-<CODE>vi-move</CODE>,
-<CODE>vi-command</CODE>, and
-<CODE>vi-insert</CODE>.
-<CODE>vi</CODE> is equivalent to <CODE>vi-command</CODE>; <CODE>emacs</CODE> is
-equivalent to <CODE>emacs-standard</CODE>. The default value is <CODE>emacs</CODE>.
-The value of the <CODE>editing-mode</CODE> variable also affects the
-default keymap.
-<P>
-
-<DT><CODE>mark-directories</CODE>
-<DD>If set to <SAMP>`on'</SAMP>, completed directory names have a slash
-appended. The default is <SAMP>`on'</SAMP>.
-<P>
-
-<DT><CODE>mark-modified-lines</CODE>
-<DD><A NAME="IDX19"></A>
-This variable, when set to <SAMP>`on'</SAMP>, causes Readline to display an
-asterisk (<SAMP>`*'</SAMP>) at the start of history lines which have been modified.
-This variable is <SAMP>`off'</SAMP> by default.
-<P>
-
-<DT><CODE>mark-symlinked-directories</CODE>
-<DD><A NAME="IDX20"></A>
-If set to <SAMP>`on'</SAMP>, completed names which are symbolic links
-to directories have a slash appended (subject to the value of
-<CODE>mark-directories</CODE>).
-The default is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>match-hidden-files</CODE>
-<DD><A NAME="IDX21"></A>
-This variable, when set to <SAMP>`on'</SAMP>, causes Readline to match files whose
-names begin with a <SAMP>`.'</SAMP> (hidden files) when performing filename
-completion, unless the leading <SAMP>`.'</SAMP> is
-supplied by the user in the filename to be completed.
-This variable is <SAMP>`on'</SAMP> by default.
-<P>
-
-<DT><CODE>output-meta</CODE>
-<DD><A NAME="IDX22"></A>
-If set to <SAMP>`on'</SAMP>, Readline will display characters with the
-eighth bit set directly rather than as a meta-prefixed escape
-sequence. The default is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>page-completions</CODE>
-<DD><A NAME="IDX23"></A>
-If set to <SAMP>`on'</SAMP>, Readline uses an internal <CODE>more</CODE>-like pager
-to display a screenful of possible completions at a time.
-This variable is <SAMP>`on'</SAMP> by default.
-<P>
-
-<DT><CODE>print-completions-horizontally</CODE>
-<DD>If set to <SAMP>`on'</SAMP>, Readline will display completions with matches
-sorted horizontally in alphabetical order, rather than down the screen.
-The default is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>show-all-if-ambiguous</CODE>
-<DD><A NAME="IDX24"></A>
-This alters the default behavior of the completion functions. If
-set to <SAMP>`on'</SAMP>,
-words which have more than one possible completion cause the
-matches to be listed immediately instead of ringing the bell.
-The default value is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>visible-stats</CODE>
-<DD><A NAME="IDX25"></A>
-If set to <SAMP>`on'</SAMP>, a character denoting a file's type
-is appended to the filename when listing possible
-completions. The default is <SAMP>`off'</SAMP>.
-<P>
-
-</DL>
-<P>
-
-<DT>Key Bindings
-<DD>The syntax for controlling key bindings in the init file is
-simple. First you need to find the name of the command that you
-want to change. The following sections contain tables of the command
-name, the default keybinding, if any, and a short description of what
-the command does.
-<P>
-
-Once you know the name of the command, simply place on a line
-in the init file the name of the key
-you wish to bind the command to, a colon, and then the name of the
-command. The name of the key
-can be expressed in different ways, depending on what you find most
-comfortable.
-</P><P>
-
-In addition to command names, readline allows keys to be bound
-to a string that is inserted when the key is pressed (a <VAR>macro</VAR>).
-</P><P>
-
-<DL COMPACT>
-<DT><VAR>keyname</VAR>: <VAR>function-name</VAR> or <VAR>macro</VAR>
-<DD><VAR>keyname</VAR> is the name of a key spelled out in English. For example:
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>Control-u: universal-argument
-Meta-Rubout: backward-kill-word
-Control-o: "&#62; output"
-</pre></td></tr></table><P>
-
-In the above example, <KBD>C-u</KBD> is bound to the function
-<CODE>universal-argument</CODE>,
-<KBD>M-DEL</KBD> is bound to the function <CODE>backward-kill-word</CODE>, and
-<KBD>C-o</KBD> is bound to run the macro
-expressed on the right hand side (that is, to insert the text
-<SAMP>`&#62; output'</SAMP> into the line).
-</P><P>
-
-A number of symbolic character names are recognized while
-processing this key binding syntax:
-<VAR>DEL</VAR>,
-<VAR>ESC</VAR>,
-<VAR>ESCAPE</VAR>,
-<VAR>LFD</VAR>,
-<VAR>NEWLINE</VAR>,
-<VAR>RET</VAR>,
-<VAR>RETURN</VAR>,
-<VAR>RUBOUT</VAR>,
-<VAR>SPACE</VAR>,
-<VAR>SPC</VAR>,
-and
-<VAR>TAB</VAR>.
-</P><P>
-
-<DT>"<VAR>keyseq</VAR>": <VAR>function-name</VAR> or <VAR>macro</VAR>
-<DD><VAR>keyseq</VAR> differs from <VAR>keyname</VAR> above in that strings
-denoting an entire key sequence can be specified, by placing
-the key sequence in double quotes. Some GNU Emacs style key
-escapes can be used, as in the following example, but the
-special character names are not recognized.
-<P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>"\C-u": universal-argument
-"\C-x\C-r": re-read-init-file
-"\e[11~": "Function Key 1"
-</pre></td></tr></table></P><P>
-
-In the above example, <KBD>C-u</KBD> is again bound to the function
-<CODE>universal-argument</CODE> (just as it was in the first example),
-<SAMP>`<KBD>C-x</KBD> <KBD>C-r</KBD>'</SAMP> is bound to the function <CODE>re-read-init-file</CODE>,
-and <SAMP>`<KBD>ESC</KBD> <KBD>[</KBD> <KBD>1</KBD> <KBD>1</KBD> <KBD>~</KBD>'</SAMP> is bound to insert
-the text <SAMP>`Function Key 1'</SAMP>.
-</P><P>
-
-</DL>
-<P>
-
-The following GNU Emacs style escape sequences are available when
-specifying key sequences:
-</P><P>
-
-<DL COMPACT>
-<DT><CODE><KBD>\C-</KBD></CODE>
-<DD>control prefix
-<DT><CODE><KBD>\M-</KBD></CODE>
-<DD>meta prefix
-<DT><CODE><KBD>\e</KBD></CODE>
-<DD>an escape character
-<DT><CODE><KBD>\\</KBD></CODE>
-<DD>backslash
-<DT><CODE><KBD>\"</KBD></CODE>
-<DD><KBD>"</KBD>, a double quotation mark
-<DT><CODE><KBD>\'</KBD></CODE>
-<DD><KBD>'</KBD>, a single quote or apostrophe
-</DL>
-<P>
-
-In addition to the GNU Emacs style escape sequences, a second
-set of backslash escapes is available:
-</P><P>
-
-<DL COMPACT>
-<DT><CODE>\a</CODE>
-<DD>alert (bell)
-<DT><CODE>\b</CODE>
-<DD>backspace
-<DT><CODE>\d</CODE>
-<DD>delete
-<DT><CODE>\f</CODE>
-<DD>form feed
-<DT><CODE>\n</CODE>
-<DD>newline
-<DT><CODE>\r</CODE>
-<DD>carriage return
-<DT><CODE>\t</CODE>
-<DD>horizontal tab
-<DT><CODE>\v</CODE>
-<DD>vertical tab
-<DT><CODE>\<VAR>nnn</VAR></CODE>
-<DD>the eight-bit character whose value is the octal value <VAR>nnn</VAR>
-(one to three digits)
-<DT><CODE>\x<VAR>HH</VAR></CODE>
-<DD>the eight-bit character whose value is the hexadecimal value <VAR>HH</VAR>
-(one or two hex digits)
-</DL>
-<P>
-
-When entering the text of a macro, single or double quotes must
-be used to indicate a macro definition.
-Unquoted text is assumed to be a function name.
-In the macro body, the backslash escapes described above are expanded.
-Backslash will quote any other character in the macro text,
-including <SAMP>`"'</SAMP> and <SAMP>`''</SAMP>.
-For example, the following binding will make <SAMP>`<KBD>C-x</KBD> \'</SAMP>
-insert a single <SAMP>`\'</SAMP> into the line:
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>"\C-x\\": "\\"
-</pre></td></tr></table></P><P>
-
-</DL>
-<P>
-
-<A NAME="Conditional Init Constructs"></A>
-<HR SIZE="6">
-<A NAME="SEC11"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC10"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC12"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC12"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.3.2 Conditional Init Constructs </H3>
-<!--docid::SEC11::-->
-<P>
-
-Readline implements a facility similar in spirit to the conditional
-compilation features of the C preprocessor which allows key
-bindings and variable settings to be performed as the result
-of tests. There are four parser directives used.
-</P><P>
-
-<DL COMPACT>
-<DT><CODE>$if</CODE>
-<DD>The <CODE>$if</CODE> construct allows bindings to be made based on the
-editing mode, the terminal being used, or the application using
-Readline. The text of the test extends to the end of the line;
-no characters are required to isolate it.
-<P>
-
-<DL COMPACT>
-<DT><CODE>mode</CODE>
-<DD>The <CODE>mode=</CODE> form of the <CODE>$if</CODE> directive is used to test
-whether Readline is in <CODE>emacs</CODE> or <CODE>vi</CODE> mode.
-This may be used in conjunction
-with the <SAMP>`set keymap'</SAMP> command, for instance, to set bindings in
-the <CODE>emacs-standard</CODE> and <CODE>emacs-ctlx</CODE> keymaps only if
-Readline is starting out in <CODE>emacs</CODE> mode.
-<P>
-
-<DT><CODE>term</CODE>
-<DD>The <CODE>term=</CODE> form may be used to include terminal-specific
-key bindings, perhaps to bind the key sequences output by the
-terminal's function keys. The word on the right side of the
-<SAMP>`='</SAMP> is tested against both the full name of the terminal and
-the portion of the terminal name before the first <SAMP>`-'</SAMP>. This
-allows <CODE>sun</CODE> to match both <CODE>sun</CODE> and <CODE>sun-cmd</CODE>,
-for instance.
-<P>
-
-<DT><CODE>application</CODE>
-<DD>The <VAR>application</VAR> construct is used to include
-application-specific settings. Each program using the Readline
-library sets the <VAR>application name</VAR>, and you can test for
-a particular value.
-This could be used to bind key sequences to functions useful for
-a specific program. For instance, the following command adds a
-key sequence that quotes the current or previous word in Bash:
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>$if Bash
-# Quote the current or previous word
-"\C-xq": "\eb\"\ef\""
-$endif
-</pre></td></tr></table></DL>
-<P>
-
-<DT><CODE>$endif</CODE>
-<DD>This command, as seen in the previous example, terminates an
-<CODE>$if</CODE> command.
-<P>
-
-<DT><CODE>$else</CODE>
-<DD>Commands in this branch of the <CODE>$if</CODE> directive are executed if
-the test fails.
-<P>
-
-<DT><CODE>$include</CODE>
-<DD>This directive takes a single filename as an argument and reads commands
-and bindings from that file.
-For example, the following directive reads from <TT>`/etc/inputrc'</TT>:
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>$include /etc/inputrc
-</pre></td></tr></table></DL>
-<P>
-
-<A NAME="Sample Init File"></A>
-<HR SIZE="6">
-<A NAME="SEC12"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC11"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.3.3 Sample Init File </H3>
-<!--docid::SEC12::-->
-<P>
-
-Here is an example of an <VAR>inputrc</VAR> file. This illustrates key
-binding, variable assignment, and conditional syntax.
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre># This file controls the behaviour of line input editing for
-# programs that use the GNU Readline library. Existing
-# programs include FTP, Bash, and GDB.
-#
-# You can re-read the inputrc file with C-x C-r.
-# Lines beginning with '#' are comments.
-#
-# First, include any systemwide bindings and variable
-# assignments from /etc/Inputrc
-$include /etc/Inputrc
-
-#
-# Set various bindings for emacs mode.
-
-set editing-mode emacs
-
-$if mode=emacs
-
-Meta-Control-h: backward-kill-word Text after the function name is ignored
-
-#
-# Arrow keys in keypad mode
-#
-#"\M-OD": backward-char
-#"\M-OC": forward-char
-#"\M-OA": previous-history
-#"\M-OB": next-history
-#
-# Arrow keys in ANSI mode
-#
-"\M-[D": backward-char
-"\M-[C": forward-char
-"\M-[A": previous-history
-"\M-[B": next-history
-#
-# Arrow keys in 8 bit keypad mode
-#
-#"\M-\C-OD": backward-char
-#"\M-\C-OC": forward-char
-#"\M-\C-OA": previous-history
-#"\M-\C-OB": next-history
-#
-# Arrow keys in 8 bit ANSI mode
-#
-#"\M-\C-[D": backward-char
-#"\M-\C-[C": forward-char
-#"\M-\C-[A": previous-history
-#"\M-\C-[B": next-history
-
-C-q: quoted-insert
-
-$endif
-
-# An old-style binding. This happens to be the default.
-TAB: complete
-
-# Macros that are convenient for shell interaction
-$if Bash
-# edit the path
-"\C-xp": "PATH=${PATH}\e\C-e\C-a\ef\C-f"
-# prepare to type a quoted word --
-# insert open and close double quotes
-# and move to just after the open quote
-"\C-x\"": "\"\"\C-b"
-# insert a backslash (testing backslash escapes
-# in sequences and macros)
-"\C-x\\": "\\"
-# Quote the current or previous word
-"\C-xq": "\eb\"\ef\""
-# Add a binding to refresh the line, which is unbound
-"\C-xr": redraw-current-line
-# Edit variable on current line.
-"\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y="
-$endif
-
-# use a visible bell if one is available
-set bell-style visible
-
-# don't strip characters to 7 bits when reading
-set input-meta on
-
-# allow iso-latin1 characters to be inserted rather
-# than converted to prefix-meta sequences
-set convert-meta off
-
-# display characters with the eighth bit set directly
-# rather than as meta-prefixed characters
-set output-meta on
-
-# if there are more than 150 possible completions for
-# a word, ask the user if he wants to see all of them
-set completion-query-items 150
-
-# For FTP
-$if Ftp
-"\C-xg": "get \M-?"
-"\C-xt": "put \M-?"
-"\M-.": yank-last-arg
-$endif
-</pre></td></tr></table></P><P>
-
-<A NAME="Bindable Readline Commands"></A>
-<HR SIZE="6">
-<A NAME="SEC13"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC12"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC14"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC1"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 1.4 Bindable Readline Commands </H2>
-<!--docid::SEC13::-->
-<P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC14">1.4.1 Commands For Moving</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Moving about the line.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Getting at previous lines.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC16">1.4.3 Commands For Changing Text</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Commands for changing text.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC17">1.4.4 Killing And Yanking</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Commands for killing and yanking.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Specifying numeric arguments, repeat counts.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Getting Readline to do the typing for you.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC20">1.4.7 Keyboard Macros</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Saving and re-executing typed characters</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Other miscellaneous commands.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-This section describes Readline commands that may be bound to key
-sequences.
-Command names without an accompanying key sequence are unbound by default.
-</P><P>
-
-In the following descriptions, <EM>point</EM> refers to the current cursor
-position, and <EM>mark</EM> refers to a cursor position saved by the
-<CODE>set-mark</CODE> command.
-The text between the point and mark is referred to as the <EM>region</EM>.
-</P><P>
-
-<A NAME="Commands For Moving"></A>
-<HR SIZE="6">
-<A NAME="SEC14"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC15"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.4.1 Commands For Moving </H3>
-<!--docid::SEC14::-->
-<DL COMPACT>
-<A NAME="IDX26"></A>
-<DT><CODE>beginning-of-line (C-a)</CODE>
-<DD><A NAME="IDX27"></A>
-Move to the start of the current line.
-<P>
-
-<A NAME="IDX28"></A>
-<DT><CODE>end-of-line (C-e)</CODE>
-<DD><A NAME="IDX29"></A>
-Move to the end of the line.
-<P>
-
-<A NAME="IDX30"></A>
-<DT><CODE>forward-char (C-f)</CODE>
-<DD><A NAME="IDX31"></A>
-Move forward a character.
-<P>
-
-<A NAME="IDX32"></A>
-<DT><CODE>backward-char (C-b)</CODE>
-<DD><A NAME="IDX33"></A>
-Move back a character.
-<P>
-
-<A NAME="IDX34"></A>
-<DT><CODE>forward-word (M-f)</CODE>
-<DD><A NAME="IDX35"></A>
-Move forward to the end of the next word. Words are composed of
-letters and digits.
-<P>
-
-<A NAME="IDX36"></A>
-<DT><CODE>backward-word (M-b)</CODE>
-<DD><A NAME="IDX37"></A>
-Move back to the start of the current or previous word. Words are
-composed of letters and digits.
-<P>
-
-<A NAME="IDX38"></A>
-<DT><CODE>clear-screen (C-l)</CODE>
-<DD><A NAME="IDX39"></A>
-Clear the screen and redraw the current line,
-leaving the current line at the top of the screen.
-<P>
-
-<A NAME="IDX40"></A>
-<DT><CODE>redraw-current-line ()</CODE>
-<DD><A NAME="IDX41"></A>
-Refresh the current line. By default, this is unbound.
-<P>
-
-</DL>
-<P>
-
-<A NAME="Commands For History"></A>
-<HR SIZE="6">
-<A NAME="SEC15"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC14"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC16"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC16"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.4.2 Commands For Manipulating The History </H3>
-<!--docid::SEC15::-->
-<P>
-
-<DL COMPACT>
-<A NAME="IDX42"></A>
-<DT><CODE>accept-line (Newline or Return)</CODE>
-<DD><A NAME="IDX43"></A>
-Accept the line regardless of where the cursor is.
-If this line is
-non-empty, it may be added to the history list for future recall with
-<CODE>add_history()</CODE>.
-If this line is a modified history line, the history line is restored
-to its original state.
-<P>
-
-<A NAME="IDX44"></A>
-<DT><CODE>previous-history (C-p)</CODE>
-<DD><A NAME="IDX45"></A>
-Move `back' through the history list, fetching the previous command.
-<P>
-
-<A NAME="IDX46"></A>
-<DT><CODE>next-history (C-n)</CODE>
-<DD><A NAME="IDX47"></A>
-Move `forward' through the history list, fetching the next command.
-<P>
-
-<A NAME="IDX48"></A>
-<DT><CODE>beginning-of-history (M-&#60;)</CODE>
-<DD><A NAME="IDX49"></A>
-Move to the first line in the history.
-<P>
-
-<A NAME="IDX50"></A>
-<DT><CODE>end-of-history (M-&#62;)</CODE>
-<DD><A NAME="IDX51"></A>
-Move to the end of the input history, i.e., the line currently
-being entered.
-<P>
-
-<A NAME="IDX52"></A>
-<DT><CODE>reverse-search-history (C-r)</CODE>
-<DD><A NAME="IDX53"></A>
-Search backward starting at the current line and moving `up' through
-the history as necessary. This is an incremental search.
-<P>
-
-<A NAME="IDX54"></A>
-<DT><CODE>forward-search-history (C-s)</CODE>
-<DD><A NAME="IDX55"></A>
-Search forward starting at the current line and moving `down' through
-the the history as necessary. This is an incremental search.
-<P>
-
-<A NAME="IDX56"></A>
-<DT><CODE>non-incremental-reverse-search-history (M-p)</CODE>
-<DD><A NAME="IDX57"></A>
-Search backward starting at the current line and moving `up'
-through the history as necessary using a non-incremental search
-for a string supplied by the user.
-<P>
-
-<A NAME="IDX58"></A>
-<DT><CODE>non-incremental-forward-search-history (M-n)</CODE>
-<DD><A NAME="IDX59"></A>
-Search forward starting at the current line and moving `down'
-through the the history as necessary using a non-incremental search
-for a string supplied by the user.
-<P>
-
-<A NAME="IDX60"></A>
-<DT><CODE>history-search-forward ()</CODE>
-<DD><A NAME="IDX61"></A>
-Search forward through the history for the string of characters
-between the start of the current line and the point.
-This is a non-incremental search.
-By default, this command is unbound.
-<P>
-
-<A NAME="IDX62"></A>
-<DT><CODE>history-search-backward ()</CODE>
-<DD><A NAME="IDX63"></A>
-Search backward through the history for the string of characters
-between the start of the current line and the point. This
-is a non-incremental search. By default, this command is unbound.
-<P>
-
-<A NAME="IDX64"></A>
-<DT><CODE>yank-nth-arg (M-C-y)</CODE>
-<DD><A NAME="IDX65"></A>
-Insert the first argument to the previous command (usually
-the second word on the previous line) at point.
-With an argument <VAR>n</VAR>,
-insert the <VAR>n</VAR>th word from the previous command (the words
-in the previous command begin with word 0). A negative argument
-inserts the <VAR>n</VAR>th word from the end of the previous command.
-<P>
-
-<A NAME="IDX66"></A>
-<DT><CODE>yank-last-arg (M-. or M-_)</CODE>
-<DD><A NAME="IDX67"></A>
-Insert last argument to the previous command (the last word of the
-previous history entry). With an
-argument, behave exactly like <CODE>yank-nth-arg</CODE>.
-Successive calls to <CODE>yank-last-arg</CODE> move back through the history
-list, inserting the last argument of each line in turn.
-<P>
-
-</DL>
-<P>
-
-<A NAME="Commands For Text"></A>
-<HR SIZE="6">
-<A NAME="SEC16"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC15"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC17"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC17"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.4.3 Commands For Changing Text </H3>
-<!--docid::SEC16::-->
-<P>
-
-<DL COMPACT>
-<A NAME="IDX68"></A>
-<DT><CODE>delete-char (C-d)</CODE>
-<DD><A NAME="IDX69"></A>
-Delete the character at point. If point is at the
-beginning of the line, there are no characters in the line, and
-the last character typed was not bound to <CODE>delete-char</CODE>, then
-return EOF.
-<P>
-
-<A NAME="IDX70"></A>
-<DT><CODE>backward-delete-char (Rubout)</CODE>
-<DD><A NAME="IDX71"></A>
-Delete the character behind the cursor. A numeric argument means
-to kill the characters instead of deleting them.
-<P>
-
-<A NAME="IDX72"></A>
-<DT><CODE>forward-backward-delete-char ()</CODE>
-<DD><A NAME="IDX73"></A>
-Delete the character under the cursor, unless the cursor is at the
-end of the line, in which case the character behind the cursor is
-deleted. By default, this is not bound to a key.
-<P>
-
-<A NAME="IDX74"></A>
-<DT><CODE>quoted-insert (C-q or C-v)</CODE>
-<DD><A NAME="IDX75"></A>
-Add the next character typed to the line verbatim. This is
-how to insert key sequences like <KBD>C-q</KBD>, for example.
-<P>
-
-<A NAME="IDX76"></A>
-<DT><CODE>tab-insert (M-<KBD>TAB</KBD>)</CODE>
-<DD><A NAME="IDX77"></A>
-Insert a tab character.
-<P>
-
-<A NAME="IDX78"></A>
-<DT><CODE>self-insert (a, b, A, 1, !, <small>...</small>)</CODE>
-<DD><A NAME="IDX79"></A>
-Insert yourself.
-<P>
-
-<A NAME="IDX80"></A>
-<DT><CODE>transpose-chars (C-t)</CODE>
-<DD><A NAME="IDX81"></A>
-Drag the character before the cursor forward over
-the character at the cursor, moving the
-cursor forward as well. If the insertion point
-is at the end of the line, then this
-transposes the last two characters of the line.
-Negative arguments have no effect.
-<P>
-
-<A NAME="IDX82"></A>
-<DT><CODE>transpose-words (M-t)</CODE>
-<DD><A NAME="IDX83"></A>
-Drag the word before point past the word after point,
-moving point past that word as well.
-If the insertion point is at the end of the line, this transposes
-the last two words on the line.
-<P>
-
-<A NAME="IDX84"></A>
-<DT><CODE>upcase-word (M-u)</CODE>
-<DD><A NAME="IDX85"></A>
-Uppercase the current (or following) word. With a negative argument,
-uppercase the previous word, but do not move the cursor.
-<P>
-
-<A NAME="IDX86"></A>
-<DT><CODE>downcase-word (M-l)</CODE>
-<DD><A NAME="IDX87"></A>
-Lowercase the current (or following) word. With a negative argument,
-lowercase the previous word, but do not move the cursor.
-<P>
-
-<A NAME="IDX88"></A>
-<DT><CODE>capitalize-word (M-c)</CODE>
-<DD><A NAME="IDX89"></A>
-Capitalize the current (or following) word. With a negative argument,
-capitalize the previous word, but do not move the cursor.
-<P>
-
-<A NAME="IDX90"></A>
-<DT><CODE>overwrite-mode ()</CODE>
-<DD><A NAME="IDX91"></A>
-Toggle overwrite mode. With an explicit positive numeric argument,
-switches to overwrite mode. With an explicit non-positive numeric
-argument, switches to insert mode. This command affects only
-<CODE>emacs</CODE> mode; <CODE>vi</CODE> mode does overwrite differently.
-Each call to <CODE>readline()</CODE> starts in insert mode.
-<P>
-
-In overwrite mode, characters bound to <CODE>self-insert</CODE> replace
-the text at point rather than pushing the text to the right.
-Characters bound to <CODE>backward-delete-char</CODE> replace the character
-before point with a space.
-</P><P>
-
-By default, this command is unbound.
-</P><P>
-
-</DL>
-<P>
-
-<A NAME="Commands For Killing"></A>
-<HR SIZE="6">
-<A NAME="SEC17"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC16"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC18"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC18"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.4.4 Killing And Yanking </H3>
-<!--docid::SEC17::-->
-<P>
-
-<DL COMPACT>
-
-<A NAME="IDX92"></A>
-<DT><CODE>kill-line (C-k)</CODE>
-<DD><A NAME="IDX93"></A>
-Kill the text from point to the end of the line.
-<P>
-
-<A NAME="IDX94"></A>
-<DT><CODE>backward-kill-line (C-x Rubout)</CODE>
-<DD><A NAME="IDX95"></A>
-Kill backward to the beginning of the line.
-<P>
-
-<A NAME="IDX96"></A>
-<DT><CODE>unix-line-discard (C-u)</CODE>
-<DD><A NAME="IDX97"></A>
-Kill backward from the cursor to the beginning of the current line.
-<P>
-
-<A NAME="IDX98"></A>
-<DT><CODE>kill-whole-line ()</CODE>
-<DD><A NAME="IDX99"></A>
-Kill all characters on the current line, no matter where point is.
-By default, this is unbound.
-<P>
-
-<A NAME="IDX100"></A>
-<DT><CODE>kill-word (M-d)</CODE>
-<DD><A NAME="IDX101"></A>
-Kill from point to the end of the current word, or if between
-words, to the end of the next word.
-Word boundaries are the same as <CODE>forward-word</CODE>.
-<P>
-
-<A NAME="IDX102"></A>
-<DT><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE>
-<DD><A NAME="IDX103"></A>
-Kill the word behind point.
-Word boundaries are the same as <CODE>backward-word</CODE>.
-<P>
-
-<A NAME="IDX104"></A>
-<DT><CODE>unix-word-rubout (C-w)</CODE>
-<DD><A NAME="IDX105"></A>
-Kill the word behind point, using white space as a word boundary.
-The killed text is saved on the kill-ring.
-<P>
-
-<A NAME="IDX106"></A>
-<DT><CODE>delete-horizontal-space ()</CODE>
-<DD><A NAME="IDX107"></A>
-Delete all spaces and tabs around point. By default, this is unbound.
-<P>
-
-<A NAME="IDX108"></A>
-<DT><CODE>kill-region ()</CODE>
-<DD><A NAME="IDX109"></A>
-Kill the text in the current region.
-By default, this command is unbound.
-<P>
-
-<A NAME="IDX110"></A>
-<DT><CODE>copy-region-as-kill ()</CODE>
-<DD><A NAME="IDX111"></A>
-Copy the text in the region to the kill buffer, so it can be yanked
-right away. By default, this command is unbound.
-<P>
-
-<A NAME="IDX112"></A>
-<DT><CODE>copy-backward-word ()</CODE>
-<DD><A NAME="IDX113"></A>
-Copy the word before point to the kill buffer.
-The word boundaries are the same as <CODE>backward-word</CODE>.
-By default, this command is unbound.
-<P>
-
-<A NAME="IDX114"></A>
-<DT><CODE>copy-forward-word ()</CODE>
-<DD><A NAME="IDX115"></A>
-Copy the word following point to the kill buffer.
-The word boundaries are the same as <CODE>forward-word</CODE>.
-By default, this command is unbound.
-<P>
-
-<A NAME="IDX116"></A>
-<DT><CODE>yank (C-y)</CODE>
-<DD><A NAME="IDX117"></A>
-Yank the top of the kill ring into the buffer at point.
-<P>
-
-<A NAME="IDX118"></A>
-<DT><CODE>yank-pop (M-y)</CODE>
-<DD><A NAME="IDX119"></A>
-Rotate the kill-ring, and yank the new top. You can only do this if
-the prior command is <CODE>yank</CODE> or <CODE>yank-pop</CODE>.
-</DL>
-<P>
-
-<A NAME="Numeric Arguments"></A>
-<HR SIZE="6">
-<A NAME="SEC18"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC17"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC19"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC19"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.4.5 Specifying Numeric Arguments </H3>
-<!--docid::SEC18::-->
-<DL COMPACT>
-
-<A NAME="IDX120"></A>
-<DT><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, <small>...</small> <KBD>M--</KBD>)</CODE>
-<DD><A NAME="IDX121"></A>
-Add this digit to the argument already accumulating, or start a new
-argument. <KBD>M--</KBD> starts a negative argument.
-<P>
-
-<A NAME="IDX122"></A>
-<DT><CODE>universal-argument ()</CODE>
-<DD><A NAME="IDX123"></A>
-This is another way to specify an argument.
-If this command is followed by one or more digits, optionally with a
-leading minus sign, those digits define the argument.
-If the command is followed by digits, executing <CODE>universal-argument</CODE>
-again ends the numeric argument, but is otherwise ignored.
-As a special case, if this command is immediately followed by a
-character that is neither a digit or minus sign, the argument count
-for the next command is multiplied by four.
-The argument count is initially one, so executing this function the
-first time makes the argument count four, a second time makes the
-argument count sixteen, and so on.
-By default, this is not bound to a key.
-</DL>
-<P>
-
-<A NAME="Commands For Completion"></A>
-<HR SIZE="6">
-<A NAME="SEC19"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC18"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC20"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC20"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.4.6 Letting Readline Type For You </H3>
-<!--docid::SEC19::-->
-<P>
-
-<DL COMPACT>
-<A NAME="IDX124"></A>
-<DT><CODE>complete (<KBD>TAB</KBD>)</CODE>
-<DD><A NAME="IDX125"></A>
-Attempt to perform completion on the text before point.
-The actual completion performed is application-specific.
-The default is filename completion.
-<P>
-
-<A NAME="IDX126"></A>
-<DT><CODE>possible-completions (M-?)</CODE>
-<DD><A NAME="IDX127"></A>
-List the possible completions of the text before point.
-<P>
-
-<A NAME="IDX128"></A>
-<DT><CODE>insert-completions (M-*)</CODE>
-<DD><A NAME="IDX129"></A>
-Insert all completions of the text before point that would have
-been generated by <CODE>possible-completions</CODE>.
-<P>
-
-<A NAME="IDX130"></A>
-<DT><CODE>menu-complete ()</CODE>
-<DD><A NAME="IDX131"></A>
-Similar to <CODE>complete</CODE>, but replaces the word to be completed
-with a single match from the list of possible completions.
-Repeated execution of <CODE>menu-complete</CODE> steps through the list
-of possible completions, inserting each match in turn.
-At the end of the list of completions, the bell is rung
-(subject to the setting of <CODE>bell-style</CODE>)
-and the original text is restored.
-An argument of <VAR>n</VAR> moves <VAR>n</VAR> positions forward in the list
-of matches; a negative argument may be used to move backward
-through the list.
-This command is intended to be bound to <KBD>TAB</KBD>, but is unbound
-by default.
-<P>
-
-<A NAME="IDX132"></A>
-<DT><CODE>delete-char-or-list ()</CODE>
-<DD><A NAME="IDX133"></A>
-Deletes the character under the cursor if not at the beginning or
-end of the line (like <CODE>delete-char</CODE>).
-If at the end of the line, behaves identically to
-<CODE>possible-completions</CODE>.
-This command is unbound by default.
-<P>
-
-</DL>
-<P>
-
-<A NAME="Keyboard Macros"></A>
-<HR SIZE="6">
-<A NAME="SEC20"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC19"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC21"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC21"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.4.7 Keyboard Macros </H3>
-<!--docid::SEC20::-->
-<DL COMPACT>
-
-<A NAME="IDX134"></A>
-<DT><CODE>start-kbd-macro (C-x ()</CODE>
-<DD><A NAME="IDX135"></A>
-Begin saving the characters typed into the current keyboard macro.
-<P>
-
-<A NAME="IDX136"></A>
-<DT><CODE>end-kbd-macro (C-x ))</CODE>
-<DD><A NAME="IDX137"></A>
-Stop saving the characters typed into the current keyboard macro
-and save the definition.
-<P>
-
-<A NAME="IDX138"></A>
-<DT><CODE>call-last-kbd-macro (C-x e)</CODE>
-<DD><A NAME="IDX139"></A>
-Re-execute the last keyboard macro defined, by making the characters
-in the macro appear as if typed at the keyboard.
-<P>
-
-</DL>
-<P>
-
-<A NAME="Miscellaneous Commands"></A>
-<HR SIZE="6">
-<A NAME="SEC21"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC20"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.4.8 Some Miscellaneous Commands </H3>
-<!--docid::SEC21::-->
-<DL COMPACT>
-
-<A NAME="IDX140"></A>
-<DT><CODE>re-read-init-file (C-x C-r)</CODE>
-<DD><A NAME="IDX141"></A>
-Read in the contents of the <VAR>inputrc</VAR> file, and incorporate
-any bindings or variable assignments found there.
-<P>
-
-<A NAME="IDX142"></A>
-<DT><CODE>abort (C-g)</CODE>
-<DD><A NAME="IDX143"></A>
-Abort the current editing command and
-ring the terminal's bell (subject to the setting of
-<CODE>bell-style</CODE>).
-<P>
-
-<A NAME="IDX144"></A>
-<DT><CODE>do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, <small>...</small>)</CODE>
-<DD><A NAME="IDX145"></A>
-If the metafied character <VAR>x</VAR> is lowercase, run the command
-that is bound to the corresponding uppercase character.
-<P>
-
-<A NAME="IDX146"></A>
-<DT><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE>
-<DD><A NAME="IDX147"></A>
-Metafy the next character typed. This is for keyboards
-without a meta key. Typing <SAMP>`<KBD>ESC</KBD> f'</SAMP> is equivalent to typing
-<KBD>M-f</KBD>.
-<P>
-
-<A NAME="IDX148"></A>
-<DT><CODE>undo (C-_ or C-x C-u)</CODE>
-<DD><A NAME="IDX149"></A>
-Incremental undo, separately remembered for each line.
-<P>
-
-<A NAME="IDX150"></A>
-<DT><CODE>revert-line (M-r)</CODE>
-<DD><A NAME="IDX151"></A>
-Undo all changes made to this line. This is like executing the <CODE>undo</CODE>
-command enough times to get back to the beginning.
-<P>
-
-<A NAME="IDX152"></A>
-<DT><CODE>tilde-expand (M-~)</CODE>
-<DD><A NAME="IDX153"></A>
-Perform tilde expansion on the current word.
-<P>
-
-<A NAME="IDX154"></A>
-<DT><CODE>set-mark (C-@)</CODE>
-<DD><A NAME="IDX155"></A>
-Set the mark to the point. If a
-numeric argument is supplied, the mark is set to that position.
-<P>
-
-<A NAME="IDX156"></A>
-<DT><CODE>exchange-point-and-mark (C-x C-x)</CODE>
-<DD><A NAME="IDX157"></A>
-Swap the point with the mark. The current cursor position is set to
-the saved position, and the old cursor position is saved as the mark.
-<P>
-
-<A NAME="IDX158"></A>
-<DT><CODE>character-search (C-])</CODE>
-<DD><A NAME="IDX159"></A>
-A character is read and point is moved to the next occurrence of that
-character. A negative count searches for previous occurrences.
-<P>
-
-<A NAME="IDX160"></A>
-<DT><CODE>character-search-backward (M-C-])</CODE>
-<DD><A NAME="IDX161"></A>
-A character is read and point is moved to the previous occurrence
-of that character. A negative count searches for subsequent
-occurrences.
-<P>
-
-<A NAME="IDX162"></A>
-<DT><CODE>insert-comment (M-#)</CODE>
-<DD><A NAME="IDX163"></A>
-Without a numeric argument, the value of the <CODE>comment-begin</CODE>
-variable is inserted at the beginning of the current line.
-If a numeric argument is supplied, this command acts as a toggle: if
-the characters at the beginning of the line do not match the value
-of <CODE>comment-begin</CODE>, the value is inserted, otherwise
-the characters in <CODE>comment-begin</CODE> are deleted from the beginning of
-the line.
-In either case, the line is accepted as if a newline had been typed.
-<P>
-
-<A NAME="IDX164"></A>
-<DT><CODE>dump-functions ()</CODE>
-<DD><A NAME="IDX165"></A>
-Print all of the functions and their key bindings to the
-Readline output stream. If a numeric argument is supplied,
-the output is formatted in such a way that it can be made part
-of an <VAR>inputrc</VAR> file. This command is unbound by default.
-<P>
-
-<A NAME="IDX166"></A>
-<DT><CODE>dump-variables ()</CODE>
-<DD><A NAME="IDX167"></A>
-Print all of the settable variables and their values to the
-Readline output stream. If a numeric argument is supplied,
-the output is formatted in such a way that it can be made part
-of an <VAR>inputrc</VAR> file. This command is unbound by default.
-<P>
-
-<A NAME="IDX168"></A>
-<DT><CODE>dump-macros ()</CODE>
-<DD><A NAME="IDX169"></A>
-Print all of the Readline key sequences bound to macros and the
-strings they output. If a numeric argument is supplied,
-the output is formatted in such a way that it can be made part
-of an <VAR>inputrc</VAR> file. This command is unbound by default.
-<P>
-
-<A NAME="IDX170"></A>
-<DT><CODE>emacs-editing-mode (C-e)</CODE>
-<DD><A NAME="IDX171"></A>
-When in <CODE>vi</CODE> command mode, this causes a switch to <CODE>emacs</CODE>
-editing mode.
-<P>
-
-<A NAME="IDX172"></A>
-<DT><CODE>vi-editing-mode (M-C-j)</CODE>
-<DD><A NAME="IDX173"></A>
-When in <CODE>emacs</CODE> editing mode, this causes a switch to <CODE>vi</CODE>
-editing mode.
-<P>
-
-</DL>
-<P>
-
-<A NAME="Readline vi Mode"></A>
-<HR SIZE="6">
-<A NAME="SEC22"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC21"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC1"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 1.5 Readline vi Mode </H2>
-<!--docid::SEC22::-->
-<P>
-
-While the Readline library does not have a full set of <CODE>vi</CODE>
-editing functions, it does contain enough to allow simple editing
-of the line. The Readline <CODE>vi</CODE> mode behaves as specified in
-the POSIX 1003.2 standard.
-</P><P>
-
-In order to switch interactively between <CODE>emacs</CODE> and <CODE>vi</CODE>
-editing modes, use the command <KBD>M-C-j</KBD> (bound to emacs-editing-mode
-when in <CODE>vi</CODE> mode and to vi-editing-mode in <CODE>emacs</CODE> mode).
-The Readline default is <CODE>emacs</CODE> mode.
-</P><P>
-
-When you enter a line in <CODE>vi</CODE> mode, you are already placed in
-`insertion' mode, as if you had typed an <SAMP>`i'</SAMP>. Pressing <KBD>ESC</KBD>
-switches you into `command' mode, where you can edit the text of the
-line with the standard <CODE>vi</CODE> movement keys, move to previous
-history lines with <SAMP>`k'</SAMP> and subsequent lines with <SAMP>`j'</SAMP>, and
-so forth.
-</P><P>
-
-<HR SIZE="6">
-<A NAME="SEC_Contents"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1>Table of Contents</H1>
-<UL>
-<A NAME="TOC1" HREF="rluserman.html#SEC1">1. Command Line Editing</A>
-<BR>
-<UL>
-<A NAME="TOC2" HREF="rluserman.html#SEC2">1.1 Introduction to Line Editing</A>
-<BR>
-<A NAME="TOC3" HREF="rluserman.html#SEC3">1.2 Readline Interaction</A>
-<BR>
-<UL>
-<A NAME="TOC4" HREF="rluserman.html#SEC4">1.2.1 Readline Bare Essentials</A>
-<BR>
-<A NAME="TOC5" HREF="rluserman.html#SEC5">1.2.2 Readline Movement Commands</A>
-<BR>
-<A NAME="TOC6" HREF="rluserman.html#SEC6">1.2.3 Readline Killing Commands</A>
-<BR>
-<A NAME="TOC7" HREF="rluserman.html#SEC7">1.2.4 Readline Arguments</A>
-<BR>
-<A NAME="TOC8" HREF="rluserman.html#SEC8">1.2.5 Searching for Commands in the History</A>
-<BR>
-</UL>
-<A NAME="TOC9" HREF="rluserman.html#SEC9">1.3 Readline Init File</A>
-<BR>
-<UL>
-<A NAME="TOC10" HREF="rluserman.html#SEC10">1.3.1 Readline Init File Syntax</A>
-<BR>
-<A NAME="TOC11" HREF="rluserman.html#SEC11">1.3.2 Conditional Init Constructs</A>
-<BR>
-<A NAME="TOC12" HREF="rluserman.html#SEC12">1.3.3 Sample Init File</A>
-<BR>
-</UL>
-<A NAME="TOC13" HREF="rluserman.html#SEC13">1.4 Bindable Readline Commands</A>
-<BR>
-<UL>
-<A NAME="TOC14" HREF="rluserman.html#SEC14">1.4.1 Commands For Moving</A>
-<BR>
-<A NAME="TOC15" HREF="rluserman.html#SEC15">1.4.2 Commands For Manipulating The History</A>
-<BR>
-<A NAME="TOC16" HREF="rluserman.html#SEC16">1.4.3 Commands For Changing Text</A>
-<BR>
-<A NAME="TOC17" HREF="rluserman.html#SEC17">1.4.4 Killing And Yanking</A>
-<BR>
-<A NAME="TOC18" HREF="rluserman.html#SEC18">1.4.5 Specifying Numeric Arguments</A>
-<BR>
-<A NAME="TOC19" HREF="rluserman.html#SEC19">1.4.6 Letting Readline Type For You</A>
-<BR>
-<A NAME="TOC20" HREF="rluserman.html#SEC20">1.4.7 Keyboard Macros</A>
-<BR>
-<A NAME="TOC21" HREF="rluserman.html#SEC21">1.4.8 Some Miscellaneous Commands</A>
-<BR>
-</UL>
-<A NAME="TOC22" HREF="rluserman.html#SEC22">1.5 Readline vi Mode</A>
-<BR>
-</UL>
-</UL>
-<HR SIZE=1>
-<A NAME="SEC_OVERVIEW"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1>Short Table of Contents</H1>
-<BLOCKQUOTE>
-<A NAME="TOC1" HREF="rluserman.html#SEC1">1. Command Line Editing</A>
-<BR>
-
-</BLOCKQUOTE>
-<HR SIZE=1>
-<A NAME="SEC_About"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1>About this document</H1>
-This document was generated by <I>Chet Ramey</I> on <I>June, 27 2002</I>
-using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
-"><I>texi2html</I></A>
-<P></P>
-The buttons in the navigation panels have the following meaning:
-<P></P>
-<table border = "1">
-<TR>
-<TH> Button </TH>
-<TH> Name </TH>
-<TH> Go to </TH>
-<TH> From 1.2.3 go to</TH>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ &lt; ] </TD>
-<TD ALIGN="CENTER">
-Back
-</TD>
-<TD>
-previous section in reading order
-</TD>
-<TD>
-1.2.2
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ &gt; ] </TD>
-<TD ALIGN="CENTER">
-Forward
-</TD>
-<TD>
-next section in reading order
-</TD>
-<TD>
-1.2.4
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ &lt;&lt; ] </TD>
-<TD ALIGN="CENTER">
-FastBack
-</TD>
-<TD>
-previous or up-and-previous section
-</TD>
-<TD>
-1.1
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ Up ] </TD>
-<TD ALIGN="CENTER">
-Up
-</TD>
-<TD>
-up section
-</TD>
-<TD>
-1.2
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ &gt;&gt; ] </TD>
-<TD ALIGN="CENTER">
-FastForward
-</TD>
-<TD>
-next or up-and-next section
-</TD>
-<TD>
-1.3
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [Top] </TD>
-<TD ALIGN="CENTER">
-Top
-</TD>
-<TD>
-cover (top) of document
-</TD>
-<TD>
- &nbsp;
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [Contents] </TD>
-<TD ALIGN="CENTER">
-Contents
-</TD>
-<TD>
-table of contents
-</TD>
-<TD>
- &nbsp;
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [Index] </TD>
-<TD ALIGN="CENTER">
-Index
-</TD>
-<TD>
-concept index
-</TD>
-<TD>
- &nbsp;
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ ? ] </TD>
-<TD ALIGN="CENTER">
-About
-</TD>
-<TD>
-this page
-</TD>
-<TD>
- &nbsp;
-</TD>
-</TR>
-</TABLE>
-<P></P>
-where the <STRONG> Example </STRONG> assumes that the current position
-is at <STRONG> Subsubsection One-Two-Three </STRONG> of a document of
-the following structure:
-<UL>
-<LI> 1. Section One </LI>
-<UL>
-<LI>1.1 Subsection One-One</LI>
-<UL>
-<LI> ... </LI>
-</UL>
-<LI>1.2 Subsection One-Two</LI>
-<UL>
-<LI>1.2.1 Subsubsection One-Two-One
-</LI><LI>1.2.2 Subsubsection One-Two-Two
-</LI><LI>1.2.3 Subsubsection One-Two-Three &nbsp; &nbsp; <STRONG>
-&lt;== Current Position </STRONG>
-</LI><LI>1.2.4 Subsubsection One-Two-Four
-</LI></UL>
-<LI>1.3 Subsection One-Three</LI>
-<UL>
-<LI> ... </LI>
-</UL>
-<LI>1.4 Subsection One-Four</LI>
-</UL>
-</UL>
-
-<HR SIZE=1>
-<BR>
-<FONT SIZE="-1">
-This document was generated
-by <I>Chet Ramey</I> on <I>June, 27 2002</I>
-using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
-"><I>texi2html</I></A>
-
-</BODY>
-</HTML>
diff --git a/readline-doc-4.3/doc/rluserman.info b/readline-doc-4.3/doc/rluserman.info
deleted file mode 100644
index 3fccbd4..0000000
--- a/readline-doc-4.3/doc/rluserman.info
+++ /dev/null
@@ -1,1260 +0,0 @@
-This is rluserman.info, produced by makeinfo version 4.1 from
-/usr/homes/chet/src/bash/readline-src/doc/rluserman.texinfo.
-
-INFO-DIR-SECTION Libraries
-START-INFO-DIR-ENTRY
-* RLuserman: (rluserman). The GNU readline library User's Manual.
-END-INFO-DIR-ENTRY
-
- 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 that need to provide a command line interface.
-
- Copyright (C) 1988-2002 Free Software Foundation, Inc.
-
- Permission is granted to make and distribute verbatim copies of this
-manual provided the copyright notice and this permission notice pare
-preserved on all copies.
-
- Permission is granted to copy and distribute modified versions of
-this manual under the conditions for verbatim copying, provided that
-the entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
- Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be stated in a
-translation approved by the Free Software Foundation.
-
-
-File: rluserman.info, Node: Top, Next: Command Line Editing, Up: (dir)
-
-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 that need to provide a command line interface.
-
-* Menu:
-
-* Command Line Editing:: GNU Readline User's Manual.
-
-
-File: rluserman.info, Node: Command Line Editing, Prev: Top, Up: Top
-
-Command Line Editing
-********************
-
- This chapter describes the basic features of the GNU command line
-editing interface.
-
-* Menu:
-
-* Introduction and Notation:: Notation used in this text.
-* Readline Interaction:: The minimum set of commands for editing a line.
-* Readline Init File:: Customizing Readline from a user's view.
-* Bindable Readline Commands:: A description of most of the Readline commands
- available for binding
-* Readline vi Mode:: A short description of how to make Readline
- behave like the vi editor.
-
-
-File: rluserman.info, Node: Introduction and Notation, Next: Readline Interaction, Up: Command Line Editing
-
-Introduction to Line Editing
-============================
-
- The following paragraphs describe the notation used to represent
-keystrokes.
-
- The text `C-k' is read as `Control-K' and describes the character
-produced when the <k> key is pressed while the Control key is depressed.
-
- The text `M-k' is read as `Meta-K' and describes the character
-produced when the Meta key (if you have one) is depressed, and the <k>
-key is pressed. The Meta key is labeled <ALT> on many keyboards. On
-keyboards with two keys labeled <ALT> (usually to either side of the
-space bar), the <ALT> on the left side is generally set to work as a
-Meta key. The <ALT> key on the right may also be configured to work as
-a Meta key or may be configured as some other modifier, such as a
-Compose key for typing accented characters.
-
- If you do not have a Meta or <ALT> key, or another key working as a
-Meta key, the identical keystroke can be generated by typing <ESC>
-_first_, and then typing <k>. Either process is known as "metafying"
-the <k> key.
-
- The text `M-C-k' is read as `Meta-Control-k' and describes the
-character produced by "metafying" `C-k'.
-
- In addition, several keys have their own names. Specifically,
-<DEL>, <ESC>, <LFD>, <SPC>, <RET>, and <TAB> all stand for themselves
-when seen in this text, or in an init file (*note Readline Init File::).
-If your keyboard lacks a <LFD> key, typing <C-j> will produce the
-desired character. The <RET> key may be labeled <Return> or <Enter> on
-some keyboards.
-
-
-File: rluserman.info, Node: Readline Interaction, Next: Readline Init File, Prev: Introduction and Notation, Up: Command Line Editing
-
-Readline Interaction
-====================
-
- Often during an interactive session you type in a long line of text,
-only to notice that the first word on the line is misspelled. The
-Readline library gives you a set of commands for manipulating the text
-as you type it in, allowing you to just fix your typo, and not forcing
-you to retype the majority of the line. Using these editing commands,
-you move the cursor to the place that needs correction, and delete or
-insert the text of the corrections. Then, when you are satisfied with
-the line, you simply press <RET>. You do not have to be at the end of
-the line to press <RET>; the entire line is accepted regardless of the
-location of the cursor within the line.
-
-* Menu:
-
-* Readline Bare Essentials:: The least you need to know about Readline.
-* Readline Movement Commands:: Moving about the input line.
-* Readline Killing Commands:: How to delete text, and how to get it back!
-* Readline Arguments:: Giving numeric arguments to commands.
-* Searching:: Searching through previous lines.
-
-
-File: rluserman.info, Node: Readline Bare Essentials, Next: Readline Movement Commands, Up: Readline Interaction
-
-Readline Bare Essentials
-------------------------
-
- In order to enter characters into the line, simply type them. The
-typed character appears where the cursor was, and then the cursor moves
-one space to the right. If you mistype a character, you can use your
-erase character to back up and delete the mistyped character.
-
- Sometimes you may mistype a character, and not notice the error
-until you have typed several other characters. In that case, you can
-type `C-b' to move the cursor to the left, and then correct your
-mistake. Afterwards, you can move the cursor to the right with `C-f'.
-
- When you add text in the middle of a line, you will notice that
-characters to the right of the cursor are `pushed over' to make room
-for the text that you have inserted. Likewise, when you delete text
-behind the cursor, characters to the right of the cursor are `pulled
-back' to fill in the blank space created by the removal of the text. A
-list of the bare essentials for editing the text of an input line
-follows.
-
-`C-b'
- Move back one character.
-
-`C-f'
- Move forward one character.
-
-<DEL> or <Backspace>
- Delete the character to the left of the cursor.
-
-`C-d'
- Delete the character underneath the cursor.
-
-Printing characters
- Insert the character into the line at the cursor.
-
-`C-_' or `C-x C-u'
- Undo the last editing command. You can undo all the way back to an
- empty line.
-
-(Depending on your configuration, the <Backspace> key be set to delete
-the character to the left of the cursor and the <DEL> key set to delete
-the character underneath the cursor, like `C-d', rather than the
-character to the left of the cursor.)
-
-
-File: rluserman.info, Node: Readline Movement Commands, Next: Readline Killing Commands, Prev: Readline Bare Essentials, Up: Readline Interaction
-
-Readline Movement Commands
---------------------------
-
- The above table describes the most basic keystrokes that you need in
-order to do editing of the input line. For your convenience, many
-other commands have been added in addition to `C-b', `C-f', `C-d', and
-<DEL>. Here are some commands for moving more rapidly about the line.
-
-`C-a'
- Move to the start of the line.
-
-`C-e'
- Move to the end of the line.
-
-`M-f'
- Move forward a word, where a word is composed of letters and
- digits.
-
-`M-b'
- Move backward a word.
-
-`C-l'
- Clear the screen, reprinting the current line at the top.
-
- Notice how `C-f' moves forward a character, while `M-f' moves
-forward a word. It is a loose convention that control keystrokes
-operate on characters while meta keystrokes operate on words.
-
-
-File: rluserman.info, Node: Readline Killing Commands, Next: Readline Arguments, Prev: Readline Movement Commands, Up: Readline Interaction
-
-Readline Killing Commands
--------------------------
-
- "Killing" text means to delete the text from the line, but to save
-it away for later use, usually by "yanking" (re-inserting) it back into
-the line. (`Cut' and `paste' are more recent jargon for `kill' and
-`yank'.)
-
- If the description for a command says that it `kills' text, then you
-can be sure that you can get the text back in a different (or the same)
-place later.
-
- When you use a kill command, the text is saved in a "kill-ring".
-Any number of consecutive kills save all of the killed text together, so
-that when you yank it back, you get it all. The kill ring is not line
-specific; the text that you killed on a previously typed line is
-available to be yanked back later, when you are typing another line.
-
- Here is the list of commands for killing text.
-
-`C-k'
- Kill the text from the current cursor position to the end of the
- line.
-
-`M-d'
- Kill from the cursor to the end of the current word, or, if between
- words, to the end of the next word. Word boundaries are the same
- as those used by `M-f'.
-
-`M-<DEL>'
- Kill from the cursor the start of the current word, or, if between
- words, to the start of the previous word. Word boundaries are the
- same as those used by `M-b'.
-
-`C-w'
- Kill from the cursor to the previous whitespace. This is
- different than `M-<DEL>' because the word boundaries differ.
-
- Here is how to "yank" the text back into the line. Yanking means to
-copy the most-recently-killed text from the kill buffer.
-
-`C-y'
- Yank the most recently killed text back into the buffer at the
- cursor.
-
-`M-y'
- Rotate the kill-ring, and yank the new top. You can only do this
- if the prior command is `C-y' or `M-y'.
-
-
-File: rluserman.info, Node: Readline Arguments, Next: Searching, Prev: Readline Killing Commands, Up: Readline Interaction
-
-Readline Arguments
-------------------
-
- You can pass numeric arguments to Readline commands. Sometimes the
-argument acts as a repeat count, other times it is the sign of the
-argument that is significant. If you pass a negative argument to a
-command which normally acts in a forward direction, that command will
-act in a backward direction. For example, to kill text back to the
-start of the line, you might type `M-- C-k'.
-
- The general way to pass numeric arguments to a command is to type
-meta digits before the command. If the first `digit' typed is a minus
-sign (`-'), then the sign of the argument will be negative. Once you
-have typed one meta digit to get the argument started, you can type the
-remainder of the digits, and then the command. For example, to give
-the `C-d' command an argument of 10, you could type `M-1 0 C-d', which
-will delete the next ten characters on the input line.
-
-
-File: rluserman.info, Node: Searching, Prev: Readline Arguments, Up: Readline Interaction
-
-Searching for Commands in the History
--------------------------------------
-
- Readline provides commands for searching through the command history
-for lines containing a specified string. There are two search modes:
-"incremental" and "non-incremental".
-
- Incremental searches begin before the user has finished typing the
-search string. As each character of the search string is typed,
-Readline displays the next entry from the history matching the string
-typed so far. An incremental search requires only as many characters
-as needed to find the desired history entry. To search backward in the
-history for a particular string, type `C-r'. Typing `C-s' searches
-forward through the history. The characters present in the value of
-the `isearch-terminators' variable are used to terminate an incremental
-search. If that variable has not been assigned a value, the <ESC> and
-`C-J' characters will terminate an incremental search. `C-g' will
-abort an incremental search and restore the original line. When the
-search is terminated, the history entry containing the search string
-becomes the current line.
-
- To find other matching entries in the history list, type `C-r' or
-`C-s' as appropriate. This will search backward or forward in the
-history for the next entry matching the search string typed so far.
-Any other key sequence bound to a Readline command will terminate the
-search and execute that command. For instance, a <RET> will terminate
-the search and accept the line, thereby executing the command from the
-history list. A movement command will terminate the search, make the
-last line found the current line, and begin editing.
-
- Readline remembers the last incremental search string. If two
-`C-r's are typed without any intervening characters defining a new
-search string, any remembered search string is used.
-
- Non-incremental searches read the entire search string before
-starting to search for matching history lines. The search string may be
-typed by the user or be part of the contents of the current line.
-
-
-File: rluserman.info, Node: Readline Init File, Next: Bindable Readline Commands, Prev: Readline Interaction, Up: Command Line Editing
-
-Readline Init File
-==================
-
- Although the Readline library comes with a set of Emacs-like
-keybindings installed by default, it is possible to use a different set
-of keybindings. Any user can customize programs that use Readline by
-putting commands in an "inputrc" file, conventionally in his home
-directory. The name of this file is taken from the value of the
-environment variable `INPUTRC'. If that variable is unset, the default
-is `~/.inputrc'.
-
- When a program which uses the Readline library starts up, the init
-file is read, and the key bindings are set.
-
- In addition, the `C-x C-r' command re-reads this init file, thus
-incorporating any changes that you might have made to it.
-
-* Menu:
-
-* Readline Init File Syntax:: Syntax for the commands in the inputrc file.
-
-* Conditional Init Constructs:: Conditional key bindings in the inputrc file.
-
-* Sample Init File:: An example inputrc file.
-
-
-File: rluserman.info, Node: Readline Init File Syntax, Next: Conditional Init Constructs, Up: Readline Init File
-
-Readline Init File Syntax
--------------------------
-
- There are only a few basic constructs allowed in the Readline init
-file. Blank lines are ignored. Lines beginning with a `#' are
-comments. Lines beginning with a `$' indicate conditional constructs
-(*note Conditional Init Constructs::). Other lines denote variable
-settings and key bindings.
-
-Variable Settings
- You can modify the run-time behavior of Readline by altering the
- values of variables in Readline using the `set' command within the
- init file. The syntax is simple:
-
- set VARIABLE VALUE
-
- Here, for example, is how to change from the default Emacs-like
- key binding to use `vi' line editing commands:
-
- set editing-mode vi
-
- Variable names and values, where appropriate, are recognized
- without regard to case.
-
- A great deal of run-time behavior is changeable with the following
- variables.
-
- `bell-style'
- Controls what happens when Readline wants to ring the
- terminal bell. If set to `none', Readline never rings the
- bell. If set to `visible', Readline uses a visible bell if
- one is available. If set to `audible' (the default),
- Readline attempts to ring the terminal's bell.
-
- `comment-begin'
- The string to insert at the beginning of the line when the
- `insert-comment' command is executed. The default value is
- `"#"'.
-
- `completion-ignore-case'
- If set to `on', Readline performs filename matching and
- completion in a case-insensitive fashion. The default value
- is `off'.
-
- `completion-query-items'
- The number of possible completions that determines when the
- user is asked whether he wants to see the list of
- possibilities. If the number of possible completions is
- greater than this value, Readline will ask the user whether
- or not he wishes to view them; otherwise, they are simply
- listed. This variable must be set to an integer value
- greater than or equal to 0. The default limit is `100'.
-
- `convert-meta'
- If set to `on', Readline will convert characters with the
- eighth bit set to an ASCII key sequence by stripping the
- eighth bit and prefixing an <ESC> character, converting them
- to a meta-prefixed key sequence. The default value is `on'.
-
- `disable-completion'
- If set to `On', Readline will inhibit word completion.
- Completion characters will be inserted into the line as if
- they had been mapped to `self-insert'. The default is `off'.
-
- `editing-mode'
- The `editing-mode' variable controls which default set of key
- bindings is used. By default, Readline starts up in Emacs
- editing mode, where the keystrokes are most similar to Emacs.
- This variable can be set to either `emacs' or `vi'.
-
- `enable-keypad'
- When set to `on', Readline will try to enable the application
- keypad when it is called. Some systems need this to enable
- the arrow keys. The default is `off'.
-
- `expand-tilde'
- If set to `on', tilde expansion is performed when Readline
- attempts word completion. The default is `off'.
-
- If set to `on', the history code attempts to place point at
- the same location on each history line retrived with
- `previous-history' or `next-history'.
-
- `horizontal-scroll-mode'
- This variable can be set to either `on' or `off'. Setting it
- to `on' means that the text of the lines being edited will
- scroll horizontally on a single screen line when they are
- longer than the width of the screen, instead of wrapping onto
- a new screen line. By default, this variable is set to `off'.
-
- `input-meta'
- If set to `on', Readline will enable eight-bit input (it will
- not clear the eighth bit in the characters it reads),
- regardless of what the terminal claims it can support. The
- default value is `off'. The name `meta-flag' is a synonym
- for this variable.
-
- `isearch-terminators'
- The string of characters that should terminate an incremental
- search without subsequently executing the character as a
- command (*note Searching::). If this variable has not been
- given a value, the characters <ESC> and `C-J' will terminate
- an incremental search.
-
- `keymap'
- Sets Readline's idea of the current keymap for key binding
- commands. Acceptable `keymap' names are `emacs',
- `emacs-standard', `emacs-meta', `emacs-ctlx', `vi', `vi-move',
- `vi-command', and `vi-insert'. `vi' is equivalent to
- `vi-command'; `emacs' is equivalent to `emacs-standard'. The
- default value is `emacs'. The value of the `editing-mode'
- variable also affects the default keymap.
-
- `mark-directories'
- If set to `on', completed directory names have a slash
- appended. The default is `on'.
-
- `mark-modified-lines'
- This variable, when set to `on', causes Readline to display an
- asterisk (`*') at the start of history lines which have been
- modified. This variable is `off' by default.
-
- `mark-symlinked-directories'
- If set to `on', completed names which are symbolic links to
- directories have a slash appended (subject to the value of
- `mark-directories'). The default is `off'.
-
- `match-hidden-files'
- This variable, when set to `on', causes Readline to match
- files whose names begin with a `.' (hidden files) when
- performing filename completion, unless the leading `.' is
- supplied by the user in the filename to be completed. This
- variable is `on' by default.
-
- `output-meta'
- If set to `on', Readline will display characters with the
- eighth bit set directly rather than as a meta-prefixed escape
- sequence. The default is `off'.
-
- `page-completions'
- If set to `on', Readline uses an internal `more'-like pager
- to display a screenful of possible completions at a time.
- This variable is `on' by default.
-
- `print-completions-horizontally'
- If set to `on', Readline will display completions with matches
- sorted horizontally in alphabetical order, rather than down
- the screen. The default is `off'.
-
- `show-all-if-ambiguous'
- This alters the default behavior of the completion functions.
- If set to `on', words which have more than one possible
- completion cause the matches to be listed immediately instead
- of ringing the bell. The default value is `off'.
-
- `visible-stats'
- If set to `on', a character denoting a file's type is
- appended to the filename when listing possible completions.
- The default is `off'.
-
-Key Bindings
- The syntax for controlling key bindings in the init file is
- simple. First you need to find the name of the command that you
- want to change. The following sections contain tables of the
- command name, the default keybinding, if any, and a short
- description of what the command does.
-
- Once you know the name of the command, simply place on a line in
- the init file the name of the key you wish to bind the command to,
- a colon, and then the name of the command. The name of the key
- can be expressed in different ways, depending on what you find most
- comfortable.
-
- In addition to command names, readline allows keys to be bound to
- a string that is inserted when the key is pressed (a MACRO).
-
- KEYNAME: FUNCTION-NAME or MACRO
- KEYNAME is the name of a key spelled out in English. For
- example:
- Control-u: universal-argument
- Meta-Rubout: backward-kill-word
- Control-o: "> output"
-
- In the above example, `C-u' is bound to the function
- `universal-argument', `M-DEL' is bound to the function
- `backward-kill-word', and `C-o' is bound to run the macro
- expressed on the right hand side (that is, to insert the text
- `> output' into the line).
-
- A number of symbolic character names are recognized while
- processing this key binding syntax: DEL, ESC, ESCAPE, LFD,
- NEWLINE, RET, RETURN, RUBOUT, SPACE, SPC, and TAB.
-
- "KEYSEQ": FUNCTION-NAME or MACRO
- KEYSEQ differs from KEYNAME above in that strings denoting an
- entire key sequence can be specified, by placing the key
- sequence in double quotes. Some GNU Emacs style key escapes
- can be used, as in the following example, but the special
- character names are not recognized.
-
- "\C-u": universal-argument
- "\C-x\C-r": re-read-init-file
- "\e[11~": "Function Key 1"
-
- In the above example, `C-u' is again bound to the function
- `universal-argument' (just as it was in the first example),
- `C-x C-r' is bound to the function `re-read-init-file', and
- `<ESC> <[> <1> <1> <~>' is bound to insert the text `Function
- Key 1'.
-
- The following GNU Emacs style escape sequences are available when
- specifying key sequences:
-
- `\C-'
- control prefix
-
- `\M-'
- meta prefix
-
- `\e'
- an escape character
-
- `\\'
- backslash
-
- `\"'
- <">, a double quotation mark
-
- `\''
- <'>, a single quote or apostrophe
-
- In addition to the GNU Emacs style escape sequences, a second set
- of backslash escapes is available:
-
- `\a'
- alert (bell)
-
- `\b'
- backspace
-
- `\d'
- delete
-
- `\f'
- form feed
-
- `\n'
- newline
-
- `\r'
- carriage return
-
- `\t'
- horizontal tab
-
- `\v'
- vertical tab
-
- `\NNN'
- the eight-bit character whose value is the octal value NNN
- (one to three digits)
-
- `\xHH'
- the eight-bit character whose value is the hexadecimal value
- HH (one or two hex digits)
-
- When entering the text of a macro, single or double quotes must be
- used to indicate a macro definition. Unquoted text is assumed to
- be a function name. In the macro body, the backslash escapes
- described above are expanded. Backslash will quote any other
- character in the macro text, including `"' and `''. For example,
- the following binding will make `C-x \' insert a single `\' into
- the line:
- "\C-x\\": "\\"
-
-
-File: rluserman.info, Node: Conditional Init Constructs, Next: Sample Init File, Prev: Readline Init File Syntax, Up: Readline Init File
-
-Conditional Init Constructs
----------------------------
-
- Readline implements a facility similar in spirit to the conditional
-compilation features of the C preprocessor which allows key bindings
-and variable settings to be performed as the result of tests. There
-are four parser directives used.
-
-`$if'
- The `$if' construct allows bindings to be made based on the
- editing mode, the terminal being used, or the application using
- Readline. The text of the test extends to the end of the line; no
- characters are required to isolate it.
-
- `mode'
- The `mode=' form of the `$if' directive is used to test
- whether Readline is in `emacs' or `vi' mode. This may be
- used in conjunction with the `set keymap' command, for
- instance, to set bindings in the `emacs-standard' and
- `emacs-ctlx' keymaps only if Readline is starting out in
- `emacs' mode.
-
- `term'
- The `term=' form may be used to include terminal-specific key
- bindings, perhaps to bind the key sequences output by the
- terminal's function keys. The word on the right side of the
- `=' is tested against both the full name of the terminal and
- the portion of the terminal name before the first `-'. This
- allows `sun' to match both `sun' and `sun-cmd', for instance.
-
- `application'
- The APPLICATION construct is used to include
- application-specific settings. Each program using the
- Readline library sets the APPLICATION NAME, and you can test
- for a particular value. This could be used to bind key
- sequences to functions useful for a specific program. For
- instance, the following command adds a key sequence that
- quotes the current or previous word in Bash:
- $if Bash
- # Quote the current or previous word
- "\C-xq": "\eb\"\ef\""
- $endif
-
-`$endif'
- This command, as seen in the previous example, terminates an `$if'
- command.
-
-`$else'
- Commands in this branch of the `$if' directive are executed if the
- test fails.
-
-`$include'
- This directive takes a single filename as an argument and reads
- commands and bindings from that file. For example, the following
- directive reads from `/etc/inputrc':
- $include /etc/inputrc
-
-
-File: rluserman.info, Node: Sample Init File, Prev: Conditional Init Constructs, Up: Readline Init File
-
-Sample Init File
-----------------
-
- Here is an example of an INPUTRC file. This illustrates key
-binding, variable assignment, and conditional syntax.
-
-
- # This file controls the behaviour of line input editing for
- # programs that use the GNU Readline library. Existing
- # programs include FTP, Bash, and GDB.
- #
- # You can re-read the inputrc file with C-x C-r.
- # Lines beginning with '#' are comments.
- #
- # First, include any systemwide bindings and variable
- # assignments from /etc/Inputrc
- $include /etc/Inputrc
-
- #
- # Set various bindings for emacs mode.
-
- set editing-mode emacs
-
- $if mode=emacs
-
- Meta-Control-h: backward-kill-word Text after the function name is ignored
-
- #
- # Arrow keys in keypad mode
- #
- #"\M-OD": backward-char
- #"\M-OC": forward-char
- #"\M-OA": previous-history
- #"\M-OB": next-history
- #
- # Arrow keys in ANSI mode
- #
- "\M-[D": backward-char
- "\M-[C": forward-char
- "\M-[A": previous-history
- "\M-[B": next-history
- #
- # Arrow keys in 8 bit keypad mode
- #
- #"\M-\C-OD": backward-char
- #"\M-\C-OC": forward-char
- #"\M-\C-OA": previous-history
- #"\M-\C-OB": next-history
- #
- # Arrow keys in 8 bit ANSI mode
- #
- #"\M-\C-[D": backward-char
- #"\M-\C-[C": forward-char
- #"\M-\C-[A": previous-history
- #"\M-\C-[B": next-history
-
- C-q: quoted-insert
-
- $endif
-
- # An old-style binding. This happens to be the default.
- TAB: complete
-
- # Macros that are convenient for shell interaction
- $if Bash
- # edit the path
- "\C-xp": "PATH=${PATH}\e\C-e\C-a\ef\C-f"
- # prepare to type a quoted word --
- # insert open and close double quotes
- # and move to just after the open quote
- "\C-x\"": "\"\"\C-b"
- # insert a backslash (testing backslash escapes
- # in sequences and macros)
- "\C-x\\": "\\"
- # Quote the current or previous word
- "\C-xq": "\eb\"\ef\""
- # Add a binding to refresh the line, which is unbound
- "\C-xr": redraw-current-line
- # Edit variable on current line.
- "\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y="
- $endif
-
- # use a visible bell if one is available
- set bell-style visible
-
- # don't strip characters to 7 bits when reading
- set input-meta on
-
- # allow iso-latin1 characters to be inserted rather
- # than converted to prefix-meta sequences
- set convert-meta off
-
- # display characters with the eighth bit set directly
- # rather than as meta-prefixed characters
- set output-meta on
-
- # if there are more than 150 possible completions for
- # a word, ask the user if he wants to see all of them
- set completion-query-items 150
-
- # For FTP
- $if Ftp
- "\C-xg": "get \M-?"
- "\C-xt": "put \M-?"
- "\M-.": yank-last-arg
- $endif
-
-
-File: rluserman.info, Node: Bindable Readline Commands, Next: Readline vi Mode, Prev: Readline Init File, Up: Command Line Editing
-
-Bindable Readline Commands
-==========================
-
-* Menu:
-
-* Commands For Moving:: Moving about the line.
-* Commands For History:: Getting at previous lines.
-* Commands For Text:: Commands for changing text.
-* Commands For Killing:: Commands for killing and yanking.
-* Numeric Arguments:: Specifying numeric arguments, repeat counts.
-* Commands For Completion:: Getting Readline to do the typing for you.
-* Keyboard Macros:: Saving and re-executing typed characters
-* Miscellaneous Commands:: Other miscellaneous commands.
-
- This section describes Readline commands that may be bound to key
-sequences. Command names without an accompanying key sequence are
-unbound by default.
-
- In the following descriptions, "point" refers to the current cursor
-position, and "mark" refers to a cursor position saved by the
-`set-mark' command. The text between the point and mark is referred to
-as the "region".
-
-
-File: rluserman.info, Node: Commands For Moving, Next: Commands For History, Up: Bindable Readline Commands
-
-Commands For Moving
--------------------
-
-`beginning-of-line (C-a)'
- Move to the start of the current line.
-
-`end-of-line (C-e)'
- Move to the end of the line.
-
-`forward-char (C-f)'
- Move forward a character.
-
-`backward-char (C-b)'
- Move back a character.
-
-`forward-word (M-f)'
- Move forward to the end of the next word. Words are composed of
- letters and digits.
-
-`backward-word (M-b)'
- Move back to the start of the current or previous word. Words are
- composed of letters and digits.
-
-`clear-screen (C-l)'
- Clear the screen and redraw the current line, leaving the current
- line at the top of the screen.
-
-`redraw-current-line ()'
- Refresh the current line. By default, this is unbound.
-
-
-File: rluserman.info, Node: Commands For History, Next: Commands For Text, Prev: Commands For Moving, Up: Bindable Readline Commands
-
-Commands For Manipulating The History
--------------------------------------
-
-`accept-line (Newline or Return)'
- Accept the line regardless of where the cursor is. If this line is
- non-empty, it may be added to the history list for future recall
- with `add_history()'. If this line is a modified history line,
- the history line is restored to its original state.
-
-`previous-history (C-p)'
- Move `back' through the history list, fetching the previous
- command.
-
-`next-history (C-n)'
- Move `forward' through the history list, fetching the next command.
-
-`beginning-of-history (M-<)'
- Move to the first line in the history.
-
-`end-of-history (M->)'
- Move to the end of the input history, i.e., the line currently
- being entered.
-
-`reverse-search-history (C-r)'
- Search backward starting at the current line and moving `up'
- through the history as necessary. This is an incremental search.
-
-`forward-search-history (C-s)'
- Search forward starting at the current line and moving `down'
- through the the history as necessary. This is an incremental
- search.
-
-`non-incremental-reverse-search-history (M-p)'
- Search backward starting at the current line and moving `up'
- through the history as necessary using a non-incremental search
- for a string supplied by the user.
-
-`non-incremental-forward-search-history (M-n)'
- Search forward starting at the current line and moving `down'
- through the the history as necessary using a non-incremental search
- for a string supplied by the user.
-
-`history-search-forward ()'
- Search forward through the history for the string of characters
- between the start of the current line and the point. This is a
- non-incremental search. By default, this command is unbound.
-
-`history-search-backward ()'
- Search backward through the history for the string of characters
- between the start of the current line and the point. This is a
- non-incremental search. By default, this command is unbound.
-
-`yank-nth-arg (M-C-y)'
- Insert the first argument to the previous command (usually the
- second word on the previous line) at point. With an argument N,
- insert the Nth word from the previous command (the words in the
- previous command begin with word 0). A negative argument inserts
- the Nth word from the end of the previous command.
-
-`yank-last-arg (M-. or M-_)'
- Insert last argument to the previous command (the last word of the
- previous history entry). With an argument, behave exactly like
- `yank-nth-arg'. Successive calls to `yank-last-arg' move back
- through the history list, inserting the last argument of each line
- in turn.
-
-
-File: rluserman.info, Node: Commands For Text, Next: Commands For Killing, Prev: Commands For History, Up: Bindable Readline Commands
-
-Commands For Changing Text
---------------------------
-
-`delete-char (C-d)'
- Delete the character at point. If point is at the beginning of
- the line, there are no characters in the line, and the last
- character typed was not bound to `delete-char', then return EOF.
-
-`backward-delete-char (Rubout)'
- Delete the character behind the cursor. A numeric argument means
- to kill the characters instead of deleting them.
-
-`forward-backward-delete-char ()'
- Delete the character under the cursor, unless the cursor is at the
- end of the line, in which case the character behind the cursor is
- deleted. By default, this is not bound to a key.
-
-`quoted-insert (C-q or C-v)'
- Add the next character typed to the line verbatim. This is how to
- insert key sequences like `C-q', for example.
-
-`tab-insert (M-<TAB>)'
- Insert a tab character.
-
-`self-insert (a, b, A, 1, !, ...)'
- Insert yourself.
-
-`transpose-chars (C-t)'
- Drag the character before the cursor forward over the character at
- the cursor, moving the cursor forward as well. If the insertion
- point is at the end of the line, then this transposes the last two
- characters of the line. Negative arguments have no effect.
-
-`transpose-words (M-t)'
- Drag the word before point past the word after point, moving point
- past that word as well. If the insertion point is at the end of
- the line, this transposes the last two words on the line.
-
-`upcase-word (M-u)'
- Uppercase the current (or following) word. With a negative
- argument, uppercase the previous word, but do not move the cursor.
-
-`downcase-word (M-l)'
- Lowercase the current (or following) word. With a negative
- argument, lowercase the previous word, but do not move the cursor.
-
-`capitalize-word (M-c)'
- Capitalize the current (or following) word. With a negative
- argument, capitalize the previous word, but do not move the cursor.
-
-`overwrite-mode ()'
- Toggle overwrite mode. With an explicit positive numeric argument,
- switches to overwrite mode. With an explicit non-positive numeric
- argument, switches to insert mode. This command affects only
- `emacs' mode; `vi' mode does overwrite differently. Each call to
- `readline()' starts in insert mode.
-
- In overwrite mode, characters bound to `self-insert' replace the
- text at point rather than pushing the text to the right.
- Characters bound to `backward-delete-char' replace the character
- before point with a space.
-
- By default, this command is unbound.
-
-
-File: rluserman.info, Node: Commands For Killing, Next: Numeric Arguments, Prev: Commands For Text, Up: Bindable Readline Commands
-
-Killing And Yanking
--------------------
-
-`kill-line (C-k)'
- Kill the text from point to the end of the line.
-
-`backward-kill-line (C-x Rubout)'
- Kill backward to the beginning of the line.
-
-`unix-line-discard (C-u)'
- Kill backward from the cursor to the beginning of the current line.
-
-`kill-whole-line ()'
- Kill all characters on the current line, no matter where point is.
- By default, this is unbound.
-
-`kill-word (M-d)'
- Kill from point to the end of the current word, or if between
- words, to the end of the next word. Word boundaries are the same
- as `forward-word'.
-
-`backward-kill-word (M-<DEL>)'
- Kill the word behind point. Word boundaries are the same as
- `backward-word'.
-
-`unix-word-rubout (C-w)'
- Kill the word behind point, using white space as a word boundary.
- The killed text is saved on the kill-ring.
-
-`delete-horizontal-space ()'
- Delete all spaces and tabs around point. By default, this is
- unbound.
-
-`kill-region ()'
- Kill the text in the current region. By default, this command is
- unbound.
-
-`copy-region-as-kill ()'
- Copy the text in the region to the kill buffer, so it can be yanked
- right away. By default, this command is unbound.
-
-`copy-backward-word ()'
- Copy the word before point to the kill buffer. The word
- boundaries are the same as `backward-word'. By default, this
- command is unbound.
-
-`copy-forward-word ()'
- Copy the word following point to the kill buffer. The word
- boundaries are the same as `forward-word'. By default, this
- command is unbound.
-
-`yank (C-y)'
- Yank the top of the kill ring into the buffer at point.
-
-`yank-pop (M-y)'
- Rotate the kill-ring, and yank the new top. You can only do this
- if the prior command is `yank' or `yank-pop'.
-
-
-File: rluserman.info, Node: Numeric Arguments, Next: Commands For Completion, Prev: Commands For Killing, Up: Bindable Readline Commands
-
-Specifying Numeric Arguments
-----------------------------
-
-`digit-argument (M-0, M-1, ... M--)'
- Add this digit to the argument already accumulating, or start a new
- argument. `M--' starts a negative argument.
-
-`universal-argument ()'
- This is another way to specify an argument. If this command is
- followed by one or more digits, optionally with a leading minus
- sign, those digits define the argument. If the command is
- followed by digits, executing `universal-argument' again ends the
- numeric argument, but is otherwise ignored. As a special case, if
- this command is immediately followed by a character that is
- neither a digit or minus sign, the argument count for the next
- command is multiplied by four. The argument count is initially
- one, so executing this function the first time makes the argument
- count four, a second time makes the argument count sixteen, and so
- on. By default, this is not bound to a key.
-
-
-File: rluserman.info, Node: Commands For Completion, Next: Keyboard Macros, Prev: Numeric Arguments, Up: Bindable Readline Commands
-
-Letting Readline Type For You
------------------------------
-
-`complete (<TAB>)'
- Attempt to perform completion on the text before point. The
- actual completion performed is application-specific. The default
- is filename completion.
-
-`possible-completions (M-?)'
- List the possible completions of the text before point.
-
-`insert-completions (M-*)'
- Insert all completions of the text before point that would have
- been generated by `possible-completions'.
-
-`menu-complete ()'
- Similar to `complete', but replaces the word to be completed with
- a single match from the list of possible completions. Repeated
- execution of `menu-complete' steps through the list of possible
- completions, inserting each match in turn. At the end of the list
- of completions, the bell is rung (subject to the setting of
- `bell-style') and the original text is restored. An argument of N
- moves N positions forward in the list of matches; a negative
- argument may be used to move backward through the list. This
- command is intended to be bound to <TAB>, but is unbound by
- default.
-
-`delete-char-or-list ()'
- Deletes the character under the cursor if not at the beginning or
- end of the line (like `delete-char'). If at the end of the line,
- behaves identically to `possible-completions'. This command is
- unbound by default.
-
-
-File: rluserman.info, Node: Keyboard Macros, Next: Miscellaneous Commands, Prev: Commands For Completion, Up: Bindable Readline Commands
-
-Keyboard Macros
----------------
-
-`start-kbd-macro (C-x ()'
- Begin saving the characters typed into the current keyboard macro.
-
-`end-kbd-macro (C-x ))'
- Stop saving the characters typed into the current keyboard macro
- and save the definition.
-
-`call-last-kbd-macro (C-x e)'
- Re-execute the last keyboard macro defined, by making the
- characters in the macro appear as if typed at the keyboard.
-
-
-File: rluserman.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up: Bindable Readline Commands
-
-Some Miscellaneous Commands
----------------------------
-
-`re-read-init-file (C-x C-r)'
- Read in the contents of the INPUTRC file, and incorporate any
- bindings or variable assignments found there.
-
-`abort (C-g)'
- Abort the current editing command and ring the terminal's bell
- (subject to the setting of `bell-style').
-
-`do-uppercase-version (M-a, M-b, M-X, ...)'
- If the metafied character X is lowercase, run the command that is
- bound to the corresponding uppercase character.
-
-`prefix-meta (<ESC>)'
- Metafy the next character typed. This is for keyboards without a
- meta key. Typing `<ESC> f' is equivalent to typing `M-f'.
-
-`undo (C-_ or C-x C-u)'
- Incremental undo, separately remembered for each line.
-
-`revert-line (M-r)'
- Undo all changes made to this line. This is like executing the
- `undo' command enough times to get back to the beginning.
-
-`tilde-expand (M-~)'
- Perform tilde expansion on the current word.
-
-`set-mark (C-@)'
- Set the mark to the point. If a numeric argument is supplied, the
- mark is set to that position.
-
-`exchange-point-and-mark (C-x C-x)'
- Swap the point with the mark. The current cursor position is set
- to the saved position, and the old cursor position is saved as the
- mark.
-
-`character-search (C-])'
- A character is read and point is moved to the next occurrence of
- that character. A negative count searches for previous
- occurrences.
-
-`character-search-backward (M-C-])'
- A character is read and point is moved to the previous occurrence
- of that character. A negative count searches for subsequent
- occurrences.
-
-`insert-comment (M-#)'
- Without a numeric argument, the value of the `comment-begin'
- variable is inserted at the beginning of the current line. If a
- numeric argument is supplied, this command acts as a toggle: if
- the characters at the beginning of the line do not match the value
- of `comment-begin', the value is inserted, otherwise the
- characters in `comment-begin' are deleted from the beginning of
- the line. In either case, the line is accepted as if a newline
- had been typed.
-
-`dump-functions ()'
- Print all of the functions and their key bindings to the Readline
- output stream. If a numeric argument is supplied, the output is
- formatted in such a way that it can be made part of an INPUTRC
- file. This command is unbound by default.
-
-`dump-variables ()'
- Print all of the settable variables and their values to the
- Readline output stream. If a numeric argument is supplied, the
- output is formatted in such a way that it can be made part of an
- INPUTRC file. This command is unbound by default.
-
-`dump-macros ()'
- Print all of the Readline key sequences bound to macros and the
- strings they output. If a numeric argument is supplied, the
- output is formatted in such a way that it can be made part of an
- INPUTRC file. This command is unbound by default.
-
-`emacs-editing-mode (C-e)'
- When in `vi' command mode, this causes a switch to `emacs' editing
- mode.
-
-`vi-editing-mode (M-C-j)'
- When in `emacs' editing mode, this causes a switch to `vi' editing
- mode.
-
-
-File: rluserman.info, Node: Readline vi Mode, Prev: Bindable Readline Commands, Up: Command Line Editing
-
-Readline vi Mode
-================
-
- While the Readline library does not have a full set of `vi' editing
-functions, it does contain enough to allow simple editing of the line.
-The Readline `vi' mode behaves as specified in the POSIX 1003.2
-standard.
-
- In order to switch interactively between `emacs' and `vi' editing
-modes, use the command `M-C-j' (bound to emacs-editing-mode when in
-`vi' mode and to vi-editing-mode in `emacs' mode). The Readline
-default is `emacs' mode.
-
- When you enter a line in `vi' mode, you are already placed in
-`insertion' mode, as if you had typed an `i'. Pressing <ESC> switches
-you into `command' mode, where you can edit the text of the line with
-the standard `vi' movement keys, move to previous history lines with
-`k' and subsequent lines with `j', and so forth.
-
-
-
-Tag Table:
-Node: Top1208
-Node: Command Line Editing1604
-Node: Introduction and Notation2218
-Node: Readline Interaction3837
-Node: Readline Bare Essentials5025
-Node: Readline Movement Commands6807
-Node: Readline Killing Commands7765
-Node: Readline Arguments9675
-Node: Searching10712
-Node: Readline Init File12856
-Node: Readline Init File Syntax13918
-Node: Conditional Init Constructs24802
-Node: Sample Init File27328
-Node: Bindable Readline Commands30513
-Node: Commands For Moving31564
-Node: Commands For History32414
-Node: Commands For Text35273
-Node: Commands For Killing37988
-Node: Numeric Arguments39940
-Node: Commands For Completion41069
-Node: Keyboard Macros42602
-Node: Miscellaneous Commands43162
-Node: Readline vi Mode46512
-
-End Tag Table
diff --git a/readline-doc-4.3/doc/rluserman.ps b/readline-doc-4.3/doc/rluserman.ps
deleted file mode 100644
index b46417a..0000000
--- a/readline-doc-4.3/doc/rluserman.ps
+++ /dev/null
@@ -1,2001 +0,0 @@
-%!PS-Adobe-2.0
-%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software
-%%Title: rluserman.dvi
-%%Pages: 24
-%%PageOrder: Ascend
-%%BoundingBox: 0 0 612 792
-%%EndComments
-%DVIPSWebPage: (www.radicaleye.com)
-%DVIPSCommandLine: dvips -D 300 -t letter -o rluserman.ps rluserman.dvi
-%DVIPSParameters: dpi=300, compressed
-%DVIPSSource: TeX output 2002.06.27:1354
-%%BeginProcSet: texc.pro
-%!
-/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
-N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
-mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
-0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
-landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
-mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
-matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
-exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
-statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
-N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
-/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
-/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
-array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
-df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
-definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
-}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
-B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
-1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3
-1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
-0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
-sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
-rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
-gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
-/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
-/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
-A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
-get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
-ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
-fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
-{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
-chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
-1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
-forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
-/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
-}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
-bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
-mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
-SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
-userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
-1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
-index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
-/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
-/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
-(LaserWriter 16/600)]{A length product length le{A length product exch 0
-exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
-end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
-grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
-imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
-exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
-fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
-delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
-B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
-p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
-rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
-
-%%EndProcSet
-TeXDict begin 40258431 52099146 1000 300 300 (rluserman.dvi)
-@start
-%DVIPSBitmapFont: Fa cmbxti10 14.4 1
-/Fa 1 47 df<120E123FEA7F80A212FFA21300127E123C0909798815>46
-D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fb cmbx12 13.14 46
-/Fb 46 122 df<123C127E12FFA4127E123C08087C8711>46 D<131C133C13FC12FFA212
-00B3AA387FFFFCA216237CA21F>49 D<48B4FC000713C0381E07F0383803F8386001FC38
-7C00FE12FE14FF147FA2127C003813FFC7FC14FEA2EB01FC14F8EB03F0EB07E01480EB0F
-00131E5B1370EBE003EA01C038038007380700061206380FFFFE5A5A4813FCB5FCA21823
-7DA21F>I<48B4FC000713E0381E03F0383801F8003C13FC387E00FEA3123EEA1C010000
-13FCA2EB03F8EB07F0EB0FC03801FF00A2380007E0EB01F014F8EB00FC14FE14FFA21210
-127C12FEA214FEA2387C01FC007013F8383E07F0380FFFC00001130018237DA21F>I<14
-381478A214F81301130313071306130C131C13381330136013E0EA01C01380EA03005A12
-0E5A12185A12705AB612C0A2390001F800A790387FFFC0A21A237EA21F>I<0018130C00
-1F137CEBFFF814F014E014C01480EBFC000018C7FCA513FF001B13E0381F03F0381C00F8
-000813FCC7127EA3147FA2127812FCA3147E5A006013FC1270383801F8381E07E03807FF
-C03801FE0018237DA21F>I<EB1FC0EB7FF03801F0383803E00C3807803E000F137EEA1F
-005AA2007E133C1400A338FE3FC0EB7FF0EB80F800FF13FCEB007C147E5A147FA4127EA4
-003E137E123F6C137C380F80F83807C1F03803FFC038007F0018237DA21F>I<1230123C
-003FB512C0A215804814005C5C38600018A200E05B485B5CC6485AA249C7FC1306130EA2
-5BA2133CA25BA213F8A41201A66C5A13601A257DA41F>I<EBFF80000313E0380F01F838
-1C007C48133C141E1278A2127C127E387F803C13E0383FF878381FFDF0EBFFC07E000313
-E014F8000F13FCEA1E1F383C07FEEA7803EB00FF48133F141F140FA3140E1278141C6C13
-38381F80F03807FFE00001130018237DA21F>I<141CA2143EA3147FA24A7EA39038019F
-C0A29038031FE0140F01077FEB0607A2010C7F1403011C7FEB1801A2496C7EA2017FB5FC
-A29039E0007F8049133FA2484880151F00038190C7120FA2486E7ED8FFF090B51280A229
-257EA42E>65 D<B612E015FC3903F0007FED3F80ED1FC0ED0FE0A216F0A21507150FA216
-E0151F16C0ED7F80913801FE0090B512F815FF9039F0003FC0ED0FE0ED07F016F8150316
-FCA616F81507ED0FF0ED1FE0ED7FC0B7120015F826257EA42C>I<9138FF8008010FEBF0
-1890393FC03C789039FE0006F8D801F81303484813014848130048481478121F48481438
-A2007F151890C8FCA2481500A97E16187F123FA26C6C1430120F6C6C14606C6C14C06C6C
-EB0180D800FEEB070090383FC01E90380FFFF8010013C025257DA42C>I<B7FCA23903F8
-007FED0F8015071503A21501A3ED00C01406A21600A2140E141EEBFFFEA2EBF81E140E14
-06A21660A291C7FC16C0A415011503A2ED0F80153FB7FCA223257EA428>69
-D<B612FEA23803F800151F8181A281A3ED01801403A292C7FCA25C5C90B5FCA2EBF80F80
-80A491C8FCAAB512F0A221257EA427>I<B500E0B512E0A23B03F80003F800AF90B6FCA2
-9038F80003B0B500E0B512E0A22B257EA430>72 D<B512E0A23803F800B3AFB512E0A213
-257EA417>I<B539E007FF80A2D803F8C7EA780016605E4B5A0307C7FC150E15185D5D5D
-EC03804AC8FC140E141F4A7E147FECDFC09038FB8FE09038FF0FF0EBFC07496C7E816E7E
-1400157F82153F6F7E6F7E8215076F7E82B539E03FFFC0A22A257EA430>75
-D<B512F0A2D803F8C7FCB3A31503A31506A3150EA2151E153E157CEC03FCB6FCA220257E
-A425>I<D8FFF8EDFFF86D5C0003EEFE00017EEC037EA36D1406A26D6C130CA26D6C1318
-A26D6C1330A36D6C1360A26D6C13C0A2903900FC0180A291387E0300A3EC3F06A2EC1F8C
-A2EC0FD8A2EC07F0A36E5AEA07803CFFFC01C01FFFF8A235257EA43A>I<D8FFF8903807
-FFE07FD803FE9038003C006D14187F6D7E6D7E806D7E6D7E13036D7E6D7E80EC7F80EC3F
-C0141FEC0FE015F0EC07F8EC03FC1401EC00FE157F1698ED3FD8ED1FF8150F15071503A2
-150115001678486C1438D8FFFC1418A22B257EA430>I<B67E15F83903F801FEEC007F6F
-7E6F7EA282A55EA24B5A4BC7FCEC01FE90B512F815C09038F803F06E7E6E7E157EA2157F
-A482A31760ED3FC017C0ED1FE1B539E00FFF80923801FE002B257EA42E>82
-D<01FF1380000713E3380F80F7381E001F48130F481307140312F81401A27E91C7FCB4FC
-EA7FE013FE383FFFE014F86C13FE00077F6C1480C67E010313C0EB003FEC0FE01407A200
-C01303A315C07E6C13076C14806CEB0F0038FFC03E38E3FFF838803FE01B257DA422>I<
-007FB612F8A2397E00FE010078EC00780070153800601518A200E0151C160C5AA4C71400
-B3A390B512FEA226247EA32B>I<B539C001FFE0A2D807F8C7EA1C006C6C141816386C6C
-14306C6C5C16E06D6C5B6D6C485A1503D91FE090C7FC90380FF006150E903807F80C6D6C
-5A15386D6C5A903800FF6015E06E5A6E5AAE90380FFFFCA22B257FA42E>89
-D<EA07FF001F13E0383E03F0383F00F880147E121EC7FCA3EB1FFE3803FE7EEA0FC0EA1F
-00123E127E5AA314BEEA7E01383F073E391FFE1FE03807F00F1B187E971E>97
-D<EAFFC0A2120FACEBC1FCEBCFFF9038FC0FC09038F007E09038C003F0A2EC01F8A215FC
-A815F8A2EC03F013E09038F007E090381C1F80390E0FFF00380C03F81E267FA522>I<EB
-7FE03803FFF83807C07C381F80FC13005A007E1378140012FEA8127E127F6C130CEA1F80
-EBC0183807E0703803FFE038007F0016187E971B>I<ECFFC0A2140FAC137F3803FFCF38
-0FE0FF381F803F383F000FA2127EA212FEA8127EA27E141F381F803F380FC0EF3903FFCF
-FC3800FE0F1E267EA522>I<137F3803FFC03807C1F0380F80F8EA1F0048137C127E147E
-12FEA2B512FEA248C7FCA3127EA214067E6C130C380F80183807E0703803FFE038007F80
-17187E971C>I<EB1FC0EB7FF0EA01F83803E1F8120713C1380FC0F01400A7B5FCA2EA0F
-C0B3A2EAFFFEA215267EA513>I<3901FF07C00007EBDFE0380F83F1EA1F01393E00F800
-007E7FA6003E5B6C485A380F83E0EBFFC0001190C7FC0030C8FCA21238123C383FFFE06C
-13FC806C7F481480383C003F48EB0FC000F81307A4007CEB0F806CEB1F00381F807E3807
-FFF8C613C01B247E971F>I<EAFFC0A2120FAC14FE9038C3FF809038CE0FC013D89038D0
-07E013E0A213C0AF39FFFC7FFEA21F267EA522>I<120FEA1F80EA3FC0A4EA1F80EA0F00
-C7FCA7EA7FC0A2120FB3A2EAFFF8A20D277EA611>I<EAFFC0A2120FACEC1FF0A2EC0780
-EC0E005C14305CEBC1C0EBC38013C713DFEBFFC0EBE7E0EBC3F0138180EB80FC147E80A2
-EC1F80EC0FC039FFF83FF8A21D267FA520>107 D<EAFFC0A2120FB3B0EAFFFCA20E267E
-A511>I<26FF80FE137F903A83FF81FFC03B0F8E0FC707E0019813CC903A9007E803F001
-A013F0A201C013E0AF3BFFFC7FFE3FFFA230187E9733>I<38FF80FE903883FF80390F8E
-0FC0139890389007E013A0A213C0AF39FFFC7FFEA21F187E9722>I<EB7F803803FFF038
-07C0F8381F807E48487EA2007EEB1F80A200FE14C0A8007E1480A26CEB3F00A2381F807E
-6C6C5A3803FFF038007F801A187E971F>I<38FFC1FCEBCFFF390FFC1FC09038F007E001
-C013F0140315F8140115FCA8EC03F8A215F0EBE0079038F00FE09038DC1F809038CFFF00
-EBC3F801C0C7FCA9EAFFFCA21E237F9722>I<38FF83E0EB8FF8380F8C7CEB90FC13B013
-A01478EBE0005BAEEAFFFEA216187F9719>114 D<3807F8C0EA1FFFEA3C07EA7001EAF0
-00A300FC1300B47EEA7FFC7F383FFF80000F13C0120338001FE01303EAC001A212E014C0
-EAF00338FC078038EFFF00EAC3FC13187E9718>I<13C0A41201A312031207120F121FB5
-12C0A2380FC000AC1460A63807E0C013E13801FF8038007E0013237FA218>I<39FFC07F
-E0A2000F1307B0140FA200071317EBE0673903FFC7FE38007F071F187E9722>I<39FFF8
-0FF8A2390FC001C015803907E00300A26D5A00031306EBF80E0001130C13FC00005B13FE
-EB7E30A26D5AA214E06D5AA26D5AA26DC7FCA21D187F9720>I<39FFF83FF0A2390FC00F
-003807E00E6C6C5A6D5A6C6C5A00001360EB7EC06D5AA2131F6D7E497E80EB33F81361EB
-E0FC3801C07E3803807F3907003F8048131F39FFC07FF8A21D187F9720>120
-D<39FFF80FF8A2390FC001C015803907E00300A26D5A00031306EBF80E0001130C13FC00
-005B13FEEB7E30A26D5AA214E06D5AA26D5AA26DC7FCA21306A25B1230EA781CEAFC185B
-1370EA68E0EA7FC0001FC8FC1D237F9720>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fc cmsl10 10.95 40
-/Fc 40 122 df<EAFFF0A20C027E8A0F>45 D<1408140C141C143CA2147C147E149EA2EB
-011EA21302801304A21308A20110138014071320A2EB7FFF90384007C0EB8003A2EA0100
-A21202EC01E01206001F130339FF801FFE1F207F9F22>65 D<0007B5FC3900F803C09038
-7801E0EC00F04913F8A515F03801E001EC03E015C0EC0F809038FFFE009038E00F803903
-C003C0EC01E015F0A21400A2485A1401A215E01403EC07C0390F000F80EC3E00B512F01D
-1F7E9E20>I<ECFE02903807018690381C004E0170133E49131E4848131C4848130C1207
-48C7FC5A121E003E1408003C1400127CA45AA4127815101520A27E1540001C14806CEB01
-006C13023803800C3800E030EB3FC01F217C9F21>I<0007B57E3900F801E09038780070
-81497F151E150E150FA348481480A6484814005DA3151E153E4848133C5DA25D4A5A4A5A
-260F000FC7FC143CB512F0211F7E9E23>I<0007B512FC3900F8007C0178131C150C5B15
-04A414043901E00800A31438EBFFF8EBE0383803C010A4EC00081510485AA21520A21560
-15C0380F00011407B612801E1F7E9E1F>I<0007B512F83900F800780178133815185B15
-08A53901E00800A314181438EBFFF83803C0301410A491C7FC485AA648C8FC7FEAFFFC1D
-1F7E9E1E>I<3A07FF83FFC03A00F8007C000178133CA2495BA648485BA490B5FCEBE000
-4848485AA64848485AA64848485A01807F39FFF07FF8221F7E9E22>72
-D<3807FF803800F8001378A25BA6485AA6485AA6485AA648C7FC7FEAFFF0111F7E9E10>
-I<3A07FF803FE03A00F8001F000178130C5D4913205D5D4AC7FC1402140848485A5C1460
-14F013E1EBE4F83803C878EBD07CEBE03CEBC03E141E141F48487E81140781140381380F
-00016D487E39FFF00FFE231F7E9E23>75 D<3807FFE0D800FCC7FC1378A25BA6485AA648
-5AA41580EC0100EA0780A25C14021406140E380F001E147CB512FC191F7E9E1C>I<D807
-F8EB7FC0D8007CEB1F00150C015E1304019E5B138FA2EB8780A2EB83C0D801035BEB01E0
-A2EB00F0A2147800025C143CA2141EA2140F485CEC07C0A21403A21401000C5C001E1300
-B47E221F7E9E22>78 D<EB01FCEB0E0790383801C090387000E0484813F048481378485A
-153C48C7FC5A001E143E123E123C127CA448147CA3157815F81278EC01F0007C14E01403
-003C14C0001CEB0780001EEB0F006C131E380780383801C0E038007F801F217C9F23>I<
-0007B5FC3900F803C090387800F015785B157CA41578484813F815F0EC01E0EC03C0EC0F
-00EBFFFCD803C0C7FCA6485AA648C8FC7FEAFFF81E1F7E9E1F>I<3807FFFE3900F80780
-90387801E0EC00F05B15F8A415F03801E00115E0EC03C0EC0780EC1E00EBFFF03803C038
-80141E140EA2140F48485AA51501D80F0013029038800F8239FFF8078CC7EA01F020207E
-9E22>82 D<EB1F82EB7066EBC01E3801800EEA030048130C00061304120EA3000F1300A2
-7FEA07F013FF6C13C06C13E038003FF0EB03F813001478143CA200401338A31430006013
-70146000F013C038E8018038C60300EA81FC17217E9F19>I<003FB512F0383C07800030
-1430126039400F0010A212C01280A3D8001E1300A65BA65BA65B7F383FFFE01C1F7A9E21
->I<39FFF00FF8391F0003E06CEB01801400001EEB0100A6481302A6485BA600705BA25C
-A200785B1238001813C06C48C7FCEA0706EA01F81D20799E22>I<3BFFF07FF81FF03B1F
-000FC007C0001E903907800380001FED01006C1502140F5EEC17C002135B142301805C00
-0713435E14C3913883E0401481D981015B13C1D803C213E193C7FC13C415F2EBC80015F4
-EA01F015F85B5D5B15605B000014402C207A9E2F>87 D<EA07F8EA0C0CEA1E061307121C
-1200A313FFEA07C7EA1E07EA3C0E127800F01310A3131EEB2E2038784F40381F87801414
-7D9317>97 D<1207123F120F7EA2120EA65A137CEA1D83381E0180001C13C0EB00E05A14
-F0A5387001E0A214C013031480EB0700EAE80EEACC38EA83E014207B9F19>I<13FEEA03
-83380E0780121C0038130090C7FC12785AA45AA37E5BEA70026C5AEA1C18EA07E011147D
-9314>I<13F8EA070EEA0E07381C038012381278127012F0B5FC00F0C7FCA25AA46C5AEA
-7002EA3004EA1C18EA07E011147D9314>101 D<EB07C0EB1C60EB30F01360EBE0E0EBC0
-001201A5485AEA3FFCEA0380A448C7FCA6120EA65A121EEAFFC014207F9F0E>I<140EEB
-3E11EBE1A33801C1C2380381E0EA07801301120FA3380703C01480EB8700EA04FC48C7FC
-A21218121CEA0FFF14C014E0381800F04813305A5AA3006013606C13C0381C0700EA07FC
-181F809417>I<EA01C0EA03E0A213C0EA0180C7FCA6EA0380121F12071203A2EA0700A6
-120EA65A121EEAFF800B1F7F9E0C>105 D<13E0120712011200A2485AA6485AEB81FCEB
-80F014C0EB81801400EA07045B13181338137C131C120E7FA2130F7F1480EA1C03381E07
-C038FF8FF016207E9F18>107 D<13E0120712011200A2EA01C0A6EA0380A6EA0700A612
-0EA65A121EEAFF800B207F9F0C>I<390387C07C391F9861863907A072073903C03403EB
-80380007EB7807EB0070A5000EEBE00EA64848485A001EEBE01E3AFFCFFCFFC022147E93
-26>I<38038F80381F90E0EA07A03803C0601380000713E01300A5380E01C0A6381C0380
-001E13C038FF8FF014147E9319>I<13FCEA0387380E0180381C00C04813E0A24813F012
-F0A438E001E0A214C0130300F0138038700700EA380E6C5AEA07E014147D9317>I<EBE3
-E03807EC383801F01C6C487E140F48487E1580A53903800F00A2140E141E141C5C380740
-70EB61C0011FC7FC90C8FCA3120EA4121EEAFFC0191D809319>I<EBFC2038038260EA07
-02381E01E0123C003813C0127812F0A438E00380A212F0A21307127038380F00EA1C37EA
-07C7EA0007A3130EA4131EEBFFC0131D7D9318>I<EA038E381FB380EA07C71203EB8300
-EA078090C7FCA5120EA65A121EEAFFC011147E9312>I<EA01F9EA0607EA080312181301
-EA3802EA3C00121F13F0EA07FCEA01FEEA001FEA40071303A212601306EAF004EAC818EA
-87E010147F9312>I<1380EA0100A35A5A5A121EEAFFF8EA0E00A45AA65A1310A41320A2
-EA1840EA0F800D1C7C9B12>I<381C0380EAFC1FEA3C07EA1C03A238380700A6EA700EA4
-131EA25BEA305E381F9F8011147B9319>I<38FF83F8381E00E0001C13C01480121E380E
-01005B13025B12075BA25BEA039013A013E05B5B120190C7FC15147C9318>I<381FF0FF
-3803C0780001137014403800E0C0EBE180EB73001376133CA2131C132E134E1387EA0107
-380203801204380C01C0383C03E038FE07FC18147F9318>120 D<390FF83F803901E00E
-00EBC00C140813E000005B143014205C13705CA20171C7FC1339133A133E133C13381318
-1310A25BA25BEA70C0EAF08000F1C8FC12E61278191D809318>I
-E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fd cmti10 10.95 8
-/Fd 8 117 df<EC3FE0ECE010903801803801031378A290380700301500A3130EA390B5
-12E0EB0E0090381C01C0A4EC03801338A3EC0700A2137801701310EC0E20A313609038E0
-0640EC038091C7FC5BA21201EA3180127948C8FC1262123C1D29829F1A>12
-D<127012F8A212F012E005057B840E>46 D<EB3C60EBE2703801C1E0EA0380EA07005A38
-0E01C0121EA3383C0380A4EB0700A2EA1C0F1317EA0C2EEA03CEEA000EA25BA21230EA78
-38485AEA60E0EA3F80141D7E9315>103 D<13C0EA01E0A213C0C7FCA7120E12131223EA
-4380EA4700A21287120EA35AA3EA38401380A21270EA31001232121C0B1F7C9E0E>105
-D<381C0F80382630C0384740601380EB0070A2008E13E0120EA3381C01C0A3EB03840038
-1388A2EB0708EB031000701330383001C016147C931A>110 D<EA1C1EEA266138278380
-EA47871307EB0300008EC7FC120EA35AA45AA45A123011147C9313>114
-D<13FCEA0302EA0601EA0C03130713061300EA0F8013F0EA07F8EA03FCEA003E130E1270
-EAF00CA2EAE008EA4010EA2060EA1F8010147D9313>I<EA018013C0EA0380A4EA0700A2
-EAFFF0EA0700120EA45AA45AA31320EA7040A21380A2EA3100121E0C1C7C9B0F>I
-E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fe cmr8 8 26
-/Fe 26 118 df<126012F0A212701210A21220A21240A2040A7D960A>39
-D<EAFF80A2090280870C>45 D<1206120E12FE120EB1EAFFE00B157D9412>49
-D<13101338A3135CA3138EA3EA0107A238020380A33807FFC0EA0401A2380800E0A20018
-13F0123838FE03FE17177F961A>65 D<EAFFFE381C0380EB00E014601470A414E0EB01C0
-381FFF8014C0381C00E0147014301438A4147014E0EB01C0B5120015177F9619>I<EBFC
-1038038330380E00B0481370481330123000701310126012E01400A51410126012700030
-132012386C13406C138038038300EA00FC14177E9619>I<B5FC381C01C0EB00E0143014
-381418141C140C140EA7140C141CA2143814301460EB01C0B5120017177F961B>I<B512
-E0EA1C00146014201410A3EB0400A3130CEA1FFCEA1C0C13041408A2130014181410A214
-3014F0B5FC15177F9618>I<B512E0EA1C00146014201410A3EB0400A3130CEA1FFCEA1C
-0C1304A390C7FCA6EAFFC014177F9617>I<EAFFC0001CC7FCAD1420A31460A2144014C0
-1303B5FC13177F9616>76 D<EAFFFE381C0380EB00C014601470A4146014C0EB0380381F
-FE00001CC7FCAAB47E14177F9618>80 D<EAFFFC381C0380EB00C014E01470A414E014C0
-EB0380381FFE00381C0780EB01C0EB00E0A514E1A2147238FF803C18177F961A>82
-D<EA0FC4EA302CEA601CEA400CEAC004A3EAE0001270127FEA3FE0EA0FF8EA01FCEA001C
-130E13061280A3EAC004EAE008EAD810EA87E00F177E9614>I<387FFFF8386038180040
-1308A200801304A300001300AF3803FF8016177F9619>I<12FCA212C0B3AB12FCA20621
-7D980A>91 D<EA3FC0EA70601330EA20381200EA03F8EA1E3812301270EAE039A21379EA
-70FFEA1F1E100E7F8D12>97 D<EA07F0EA18381230EA7010EA600012E0A41260EA700812
-30EA1830EA07C00D0E7F8D10>99 D<EA0FC0EA1860EA3030EA7038EAE018EAFFF8EAE000
-A31260EA7008EA3010EA1830EA07C00D0E7F8D10>101 D<1203EA0780A2EA0300C7FCA5
-EA1F801203AF1243EAE30012E7127C091D82960B>106 D<12F81238A8133E1338133013
-4013801239EA3FC0EA39E0123813F01378133CA2EAFE7F10177F9613>I<EAF8F8EA3B1C
-EA3C0E1238AA38FE3F80110E7F8D14>110 D<EAF9F0EA3E1CEA380613077F1480A41400
-5B130EEA3E1CEA39F00038C7FCA512FE11147F8D14>112 D<EAF9E0EA3A70123CEA3820
-1300A9B4FC0C0E7F8D0E>114 D<EA1F40EA60C0EAC040A2EAE000B4FCEA7F80EA1FC0EA
-01E0EA8060A212C0EAE0C0EA9F000B0E7F8D0E>I<1208A31218A21238EAFFC0EA3800A7
-1340A4EA1C80EA0F000A147F930E>I<EAF83EEA380EAA131EEA1C2E3807CF80110E7F8D
-14>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Ff cmsy9 9 2
-/Ff 2 106 df<13801201EA0300A31206A25AA35AA35AA25AA35AA21260A37EA27EA37E
-A37EA27EA3EA0180120009267D9B0F>104 D<12C0A21260A37EA27EA37EA37EA27EA3EA
-0180A2EA0300A31206A25AA35AA35AA25AA35AA209267E9B0F>I
-E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fg cmsltt10 10.95 29
-/Fg 29 122 df<1206120FEA1F80120FA21203EA0700A25A120E123C127C12F01260090E
-769B18>39 D<387FFFC0B512E0A26C13C013047C8F18>45 D<133E13FF000313803807C3
-C0EA0F01000E13E0EA1C00123C003813F014705AA34813E0A4EB01C0A2130300F01380EA
-7007EB0F00EA781E6C5AEA1FF85BEA07C0141C7C9B18>48 D<13181338A2137813F81203
-120F137012041200A413E0A6EA01C0A6EA7FFE12FF127F0F1C7B9B18>I<EB3E18EBFFB8
-4813F8EA07C1EB8078EA0E00121E001C137048133014005AA35AA614C0EA7001A2130338
-380780383C0F00EA1FFE6C5AEA03F0151C7C9B18>67 D<3807FFC014E014F03801C0F814
-78143C141CEA0380141EA2140EA33807001CA4143C1438120E147014F0EB01E0EB03C013
-07387FFF8038FFFE00EA7FF8171C7F9B18>I<0007B5FC5A7E3801C007A3140638038000
-A2EB818014C0A213FF481380A21303A2140090C7FC120E140C141CA4387FFFF8B5FC7E18
-1C7F9B18>I<EB1FF8EB3FFCEB1FF8EB01C0A4EB0380A6EB0700A6130EA2124012E06C5A
-EAE03CEAFFF86C5AEA1FC0161C7C9B18>74 D<EA07FC487E6C5AEA01C0A4485AA648C7FC
-A6120E14301470A4B512E0A3141C7E9B18>76 D<3907E01F80000FEB3FC0000714803903
-B02E00146EA214CE380730DC1331149CA21333141C000E5B13371336133E133C131848C6
-5AA638FE03F800FF7F00FE5B1A1C7F9B18>I<126012F0A37E1278A3127C123CA3123E12
-1EA3121F7EA313801207A313C01203A413E01201A313F0120013600C24789F18>92
-D<387FFFC0B512E0A26C13C013047E7F18>95 D<EA03FC48B4FC4813801303380601C012
-00A2137FEA07FF121FEA3F813878038012F012E0A21307EA701F387FFFF0EA3FFBEA0FE1
-14147D9318>97 D<127EA3120EA45A137CEA1DFF001F13801383381E01C0123CEB00E012
-38A4387801C0A2EB0380A2EB0F00EA7C1FEAFFFCEAEFF8EA63E0131C7C9B18>I<EB07E0
-A31300A4EB01C0EA01F1EA07FDEA0FFFEA1E0FEA3C0738780380127012E0A4EB0700A25B
-5B6C5AEA787F383FFFC0381FEFE0380F87C0131C7C9B18>100 D<13F8EA07FE487E381F
-0780EA3C03387801C0127012E0A2B5FCA2148000E0C7FCA213033870078038780F00EA3F
-FE6C5AEA07F012147B9318>I<EB01F8EB07FC131FEB1E3CEB38181400A25B381FFFF05A
-7E38007000A25BA6485AA6EA7FFE12FF127F161C7E9B18>I<EB1E1F90387FFF8090B5FC
-3901E1E3003803C0E01380EA0700A3495AA238038780EA07FF49C7FCEA0E7890C8FCA26C
-B47E4813E0487F383C007848133812705AA2147800705B387C03E0383FFFC0000F90C7FC
-EA03FC191F809318>I<14C0EB01E013031301EB00C01400A4EBFFC0A31301A2EB0380A6
-EB0700A6130EA65BA2EA6038EAF078B45A5BEA3F8013277F9C18>106
-D<EA07E0120F12071200A4485AEBC7FEA3EBC1E0EBC3C038038780EB8F00139E13BC13FE
-13EEEA07CF1387EB0780130314C01301387FC7F838FFE7FC387FC7F8171C7F9B18>I<EA
-0FFCA3EA001CA45BA65BA65BA6B5128014C01480121C7D9B18>I<13FCEA03FF000F1380
-EA1F07383C03C0EA7801007013E0EAE000A4EB01C0A2EB0380EAF007EB0F00EA7C3EEA3F
-FC6C5AEA07E013147C9318>111 D<EBF8C0EA03FDEA0FFFEA1F0FEA3C07387803801270
-12E0A4EB0700A25BA26C5AEA787FEA3FFEEA1FEEEA078EEA000EA35BA43801FF80A3121E
-7C9318>113 D<381FE1F8EBE7FCEBEFFE3800FE1EEBFC0C3801F8005B5B5BA3485AA6EA
-FFFC7F5B17147E9318>I<EBFE603807FFE05AEA1F01121C003813C0EA3C00001F1300EA
-0FF8EA07FE3800FF801307383001C01270A238780380EA7C07B51200EAEFFEEA63F81314
-7D9318>I<387E07E0EAFE0FEA7E07EA0E00A2381C01C0A638380380A41307131F383FFF
-E06C13F03807E3E014147D9318>117 D<38FF87F8138F1387383800E0EB01C0A3148013
-E3EA39F31233EB7700A212371376EA3666136EEA3C7CA2EA383815147C9318>119
-D<381FE3FC13E713E33803C3C000011380EBE700EA00EE13FC137C1338137813FCEA01DC
-EA038E12071307120E38FF1FE0EB9FF0EB1FE016147E9318>I<380FF1FE381FF9FF380F
-F1FE3803807013C0000113E0A213C114C0A23800E380A2EBE700A213E6136E136C137C13
-78A21370A25BA2485A12F3EAF780B4C7FC5A1278181E7F9318>I
-E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fh cmcsc10 10.95 12
-/Fh 12 121 df<1318A2133CA3134EA213CF1387A238010380A2000313C0EA0201A23807
-FFE0EA0400A2481370A2001813380038137838FE01FF18177F961C>97
-D<EB7E083803819838070078000C1338001C13185A00781308127000F01300A700701308
-127812386C1310120C000713603803818038007E0015177E961B>99
-D<B512C0EA1C011300144014601420A213081400A21318EA1FF8EA1C1813081410A21300
-14301420A21460EB01E0B5FC14177E9619>101 D<B512C0EA1C011300144014601420A2
-13081400A21318EA1FF8EA1C181308A390C7FCA6EAFFC013177E9618>I<EB7E08380381
-9838070078000C1338001C13185A00781308127000F01300A5EB03FEEB00381270127812
-387E120C1207380380D838007F0817177E961D>I<EAFF80EA1C00B3A3EAFF8009177E96
-0E>105 D<38FC01FC381E007014201217EA1380A2EA11C0EA10E0A213701338A2131C13
-0E1307A2EB03A0EB01E0A213001460123800FE132016177E961C>110
-D<13FE38038380380E00E0481370003C1378003813380078133C0070131C00F0131EA700
-70131C0078133C00381338003C1378001C13706C13E0380383803800FE0017177E961D>
-I<EAFFFCEA1C07EB03C0130114E0A414C01303EB0700EA1FFC001CC7FCAAB47E13177E96
-19>I<EA0FC4EA302CEA601CEA400CEAC004A3EAE0001270127FEA3FE0EA0FF8EA01FCEA
-001C130E13061280A3EAC004EAE008EAD810EA87E00F177E9615>115
-D<38FF81FC381C00701420B0000C1340120E6C138038018300EA007C16177E961C>117
-D<38FF80FE381F0070000E13606C1340EB80803803C100EA01C3EA00E213F4137813387F
-133E134E13C7EB8780380103C0EA0201380600E0000413F0000C1370003C137800FE13FF
-18177F961C>120 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fi cmbx12 17.28 18
-/Fi 18 117 df<EB01C01303130F137FEA1FFFB5FC13BFEAE03F1200B3B1007FB512F0A3
-1C2E7AAD28>49 D<913A03FF800180023FEBF00349B5EAFC0701079038003F0FD91FF8EB
-079FD93FC0EB01FFD9FF807F4848C8127F4848153F0007161F49150F485A001F1607A248
-5A1703127FA24992C7FCA212FFA9127FA27FEF0380123FA26C7E1707000F17006C7E6D15
-0E0003161E6C6C151C6C6C6C1478D93FC05CD91FF8EB03E0D907FFEB3F800101D9FFFEC7
-FCD9003F13F80203138031317CB03A>67 D<B812F0A3C6903880003FEE07F816031600A2
-1778A21738A3171C1507A31700A25D5D5D91B5FCA3EC803F818181A21707A392C7120EA4
-171EA2173CA2177C17FC16011607163FB812F8A330317EB035>69
-D<B67EA3000190C9FCB3A9EE0380A416071700A25EA35E5E5E5E4B5A150FB7FCA329317D
-B030>76 D<007FB8FCA39039C00FF801D87E00EC003F007C82007882A200708200F01780
-A3481603A5C792C7FCB3AA017FB6FCA331307DAF38>84 D<EBFFF0000313FF390F803F80
-9038C00FE0486C6C7EA26E7ED80FC07FEA0780C7FCA414FF131FEBFFE33803FC03EA0FF0
-EA1FC0123FEA7F80A2EAFF00A31407A2387F800D393FC01DFE3A1FE078FFF03907FFE07F
-C6EB803F24207E9F27>97 D<EA01F812FFA3120F1207ADEC3FE0ECFFFC9038FBE07F9039
-FF001F8049EB0FC04914E049EB07F016F8A2ED03FCA316FEA816FCA3ED07F8A216F06DEB
-0FE06D14C001E7EB3F809039C3C0FE00903880FFF89038003FC027327EB12D>I<ED0FC0
-EC07FFA3EC007F153FADEB07F8EB3FFF9038FE07BF3903F801FF3907E0007F120F484813
-3F123FA2485AA312FFA8127FA36C7EA2121F6C6C137F000714FF2603F00313E03A01FC0F
-3FFE38007FFEEB0FF027327DB12D>100 D<EB0FFC90387FFF803901FC0FC03903F003E0
-3907E001F0000F14F8391FC000FC003F14FEA24848137E157FA212FFA290B6FCA20180C7
-FCA4127FA36C6C1307121F150E6C7E6C6C131C6C6C13783900FE03E090383FFFC0903807
-FE0020207E9F25>I<EB01FE90380FFF8090381FC3C090387F07E09038FE0FF0120113FC
-1203EC07E0EC018091C7FCA8B512FCA3D803FCC7FCB3A8387FFFF0A31C327EB119>I<90
-391FF007C09039FFFE3FE03A01F83F79F03907E00FC3000F14E19039C007E0E0001FECF0
-00A2003F80A5001F5CA2000F5CEBE00F00075C2603F83FC7FC3806FFFE380E1FF090C9FC
-121EA2121F7F90B57E6C14F015FC6C806C801680000F15C0003FC7127F007EEC1FE0007C
-140F00FC1407A4007EEC0FC0003E1580003F141FD80FC0EB7E003907F803FC0001B512F0
-D8001F90C7FC242F7E9F28>I<EA03C0487E487E487EA46C5A6C5A6C5AC8FCA9EA01F812
-7FA31207B3A7B51280A311337DB217>105 D<EA01F812FFA3120F1207B3B3A6B512C0A3
-12327DB117>108 D<2703F007F8EB1FE000FFD93FFEEBFFF8913A783F01E0FC02C09038
-8300FE280FF1801FC6137F2607F30013CC01F602F8148001FC5CA3495CB3B500C3B5380F
-FFFCA33E207D9F43>I<3903F007F800FFEB3FFEEC783F02C013803A0FF1801FC03807F3
-0001F614E013FCA35BB3B500C3B5FCA328207D9F2D>I<EB07FC90387FFFC03901FC07F0
-3903F001F848486C7E4848137E001F147F003F158049133F007F15C0A300FF15E0A8007F
-15C0A36C6CEB7F80A2001F15006C6C13FE00075C3903F803F83901FE0FF039007FFFC0D9
-07FCC7FC23207E9F28>I<3801FF86000713FEEA1F00003C133E48131E140E12F8A36C90
-C7FCB47E13FC387FFFC06C13F0806C7F00077F00017FEA003F01001380143F0060131F00
-E0130FA27E15007E6C131E6C131C38FF807838F3FFF038C07F8019207D9F20>115
-D<131CA5133CA3137CA213FC120112031207381FFFFEB5FCA2D803FCC7FCB0EC0380A712
-01EC0700EA00FEEB7F0EEB3FFCEB07F0192E7FAD1F>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fj cmsy10 10.95 1
-/Fj 1 14 df<14FE903807FFC090381F01F0903878003C01E0130ED80180130348C7EA01
-800006EC00C0481560A2481530481518A248150CA4481506A90060150CA46C1518A26C15
-306C1560A26C15C06CEC01806C6CEB0300D800E0130E0178133C90381F01F0903807FFC0
-D900FEC7FC272B7DA02E>13 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fk cmbx12 14.4 39
-/Fk 39 122 df<123C127FEAFF80A213C0A3127F123E1200A2EA0180A3EA0300A2120612
-0E5A5A12100A157B8813>44 D<121C127FA2EAFF80A3EA7F00A2121C09097B8813>46
-D<130E131E137EEA07FE12FFA212F81200B3ABB512FEA317277BA622>49
-D<EBFF80000713F04813FC381E03FE393800FF80007C133F00FE14C06C131F15E0140FA2
-127E003C131FC7FC15C0A2EC3F801500147E5C5C495A495AEB078049C7FC131E4913E013
-705B3901C001C0EA0380EA0600000FB5FC5A5A5AB61280A31B277DA622>I<EB7F803803
-FFF04813FC380F81FE381F007FEA3F80EC3F80A3121F1300C7EA7F00A2147E5C495AEB07
-F0EBFFC0A2EB01F8EB007E801580EC1FC0A215E0A2123C127EB4FCA215C0143F48148000
-7CEB7F00383F01FE6CB45A000713F0C613801B277DA622>I<140FA25C5C5C5C5BA2EB03
-BFEB073F130E131C133C1338137013E0EA01C0EA038012071300120E5A5A5A12F0B612F8
-A3C7EA7F00A890381FFFF8A31D277EA622>I<00181303381F801FEBFFFE5C5C5C14C091
-C7FC001CC8FCA7EB7FC0381DFFF8381F80FC381E003F1208C7EA1F8015C0A215E0A21218
-127C12FEA315C05A0078EB3F80A26CEB7F00381F01FE6CB45A000313F0C613801B277DA6
-22>I<B612F815FF16C03A03F8001FE0ED0FF0ED07F8150316FCA21501A3150316F8A2ED
-07F0150FED1FC0EDFF8090B5EAFE00EDFFC09039F8000FF0ED03F8ED01FC16FE1500A216
-FFA616FE1501ED03FC1507ED1FF8B712E016C0EDFE0028297DA830>66
-D<91387FE003903907FFFC07011FEBFF0F90397FF00F9F9039FF0001FFD801FC7F484814
-7F4848143F4848141F485A160F485A1607127FA290C9FC5AA97E7F1607123FA26C7E160E
-6C7E6C6C141C6C6C143C6C6C14786CB4EB01F090397FF007C0011FB512800107EBFE0090
-38007FF028297CA831>I<B712E0A33903FC001FED07F01501A215001670A3913801C078
-1638A302031300A2140F90B5FCA3EBFC0F1403A20201130EA3161C91C7FCA3163C163816
-7816F815011503151FB712F0A327297EA82C>69 D<B712C0A33903FC003FED0FE0150315
-01A21500A316F0913801C070A316001403A2140F90B5FCA3EBFC0F1403A21401A491C8FC
-A9B512FCA324297EA82A>I<B512F0A33803FC00B3B1B512F0A314297EA819>73
-D<B512FCA3D803FCC8FCB3A3ED01C0A415031680A21507A2150FA2151F157F913801FF00
-B7FCA322297EA828>76 D<D8FFFE92383FFF80A26D5D0003EFE000A2D9BF8014EFA2D99F
-C0EB01CFA2D98FE0EB038FA3D987F0EB070FA2D983F8130EA2D981FC131CA3D980FE1338
-A2027F1370A291383F80E0A391381FC1C0A291380FE380A2913807F700A3EC03FEA26E5A
-A26E5AD8FFFE0203B51280A2157039297DA840>I<B612E015FE6F7E3A03FC003FE0ED0F
-F06F7E6F7E150182A65E4B5A1507ED0FE0ED3FC090B500FEC7FCA29039FC00FF80ED3FC0
-6F7E6F7E6F7EA9170EA21503923801FC1CB538F000FEEE7FF8EE0FE02F297EA832>82
-D<9038FF80600003EBF0E0000F13F8381F80FD383F001F003E1307481303A200FC1301A2
-14007EA26C140013C0EA7FFCEBFFE06C13F86C13FE80000714806C14C0C6FC010F13E0EB
-007FEC1FF0140F140700E01303A46C14E0A26C13076C14C0B4EB0F80EBE03F39E3FFFE00
-00E15B38C01FF01C297CA825>I<B500F0EBFFFEA3D803FCC7EA0380B3AA0001ED07007F
-0000150E137F6D143CD91FC05B90390FF003F06DB55A01001480DA1FFCC7FC2F297EA834
->85 D<B53CE07FFFE01FFFC0A32803FC0003FCC7EA7000A26D6D7E000160A26D6E13016C
-604B138002801503017F5F4B13C0D93FC0013F49C7FCA2913AE00E1FE00F011F160E17F0
-9126F01C0F131E010F161C033C13F8902707F838075BA2037813FC902703FC70035BA291
-3AFEE001FEF001015E02FF14FF4B7E6D5EA26E486D5AA36EC76CC8FCA2023E80021E141E
-A242297FA845>87 D<3803FF80000F13F0381F01FC383F80FE147F801580EA1F00C7FCA4
-EB3FFF3801FC3FEA0FE0EA1F80EA3F00127E5AA4145F007E13DF393F839FFC381FFE0F38
-03FC031E1B7E9A21>97 D<EAFFE0A3120FACEBE1FE9038EFFF809038FE07E09038F803F0
-9038F001F89038E000FCA2157EA2157FA8157EA315FCA29038F001F89038F803F090389C
-0FE090380FFF80390E01FC00202A7EA925>I<EB3FF03801FFFC3803F03E380FC07FEA1F
-80EA3F00A248133E007E90C7FCA212FEA7127EA2127F6CEB03801380001FEB0700380FE0
-0E3803F83C3801FFF838003FC0191B7E9A1E>I<EC7FF0A31407ACEB3F873801FFF73807
-F03F380FC00F381F8007EA3F00A2127EA312FEA8127EA27EA2381F800F380FC01F3907E0
-7FFF3801FFE738007F87202A7EA925>I<EB3FC03801FFF03803E07C380F803E001F7F13
-0048EB0F80127E15C0A200FE1307A2B6FCA248C8FCA3127EA2127F6CEB01C07E390F8003
-803907C007003803F01E3800FFFCEB3FE01A1B7E9A1F>I<EB07F8EB3FFCEB7E3E3801FC
-7FEA03F813F01207143E1400A7B512C0A33807F000B3A3387FFF80A3182A7EA915>I<90
-38FF80F00003EBE3F8390FC1FE1C391F007C7C48137E003EEB3E10007EEB3F00A6003E13
-3E003F137E6C137C380FC1F8380BFFE00018138090C8FC1238A2123C383FFFF814FF6C14
-C06C14E06C14F0121F383C0007007CEB01F8481300A4007CEB01F0A2003FEB07E0390FC0
-1F806CB5120038007FF01E287E9A22>I<EAFFE0A3120FAC147E9038E1FF809038E30FC0
-01E413E0EBE80701F813F013F0A213E0B039FFFE3FFFA3202A7DA925>I<1207EA0F80EA
-1FC0EA3FE0A3EA1FC0EA0F80EA0700C7FCA7EAFFE0A3120FB3A3EAFFFEA30F2B7EAA12>
-I<EAFFE0A3120FB3B2EAFFFEA30F2A7EA912>108 D<26FFC07FEB1FC0903AC1FFC07FF0
-903AC307E0C1F8D80FC49038F101FC9039C803F20001D801FE7F01D05BA201E05BB03CFF
-FE3FFF8FFFE0A3331B7D9A38>I<38FFC07E9038C1FF809038C30FC0D80FC413E0EBC807
-01D813F013D0A213E0B039FFFE3FFFA3201B7D9A25>I<EB3FE03801FFFC3803F07E390F
-C01F80391F800FC0393F0007E0A2007EEB03F0A300FE14F8A8007E14F0A26CEB07E0A239
-1F800FC0390FC01F803907F07F003801FFFC38003FE01D1B7E9A22>I<38FFC1F0EBC7FC
-EBC63E380FCC7F13D813D0A2EBF03EEBE000B0B5FCA3181B7F9A1B>114
-D<3803FE30380FFFF0EA3E03EA7800127000F01370A27E00FE1300EAFFE06CB4FC14C06C
-13E06C13F0000713F8C6FCEB07FC130000E0137C143C7E14387E6C137038FF01E038E7FF
-C000C11300161B7E9A1B>I<13E0A41201A31203A21207120F381FFFE0B5FCA2380FE000
-AD1470A73807F0E0000313C03801FF8038007F0014267FA51A>I<39FFE07FF0A3000F13
-07B2140FA2000713173903F067FF3801FFC738007F87201B7D9A25>I<39FFFC03FFA339
-0FF000F0000714E07F0003EB01C0A2EBFC0300011480EBFE070000140013FFEB7F0EA214
-9EEB3F9C14FC6D5AA26D5AA36D5AA26D5AA2201B7F9A23>I<3BFFFC7FFC1FFCA33B0FE0
-0FE001C02607F007EB0380A201F8EBF00700031600EC0FF801FC5C0001150EEC1FFC2600
-FE1C5B15FE9039FF387E3C017F1438EC787F6D486C5A16F0ECE01F011F5CA26D486C5AA2
-EC800701075CA22E1B7F9A31>I<39FFFC1FFEA33907F003803803F8079038FC0F003801
-FE1E00005BEB7F3814F86D5A6D5A130F806D7E130F497EEB3CFEEB38FFEB787F9038F03F
-803901E01FC0D803C013E0EB800F39FFF03FFFA3201B7F9A23>I<39FFFC03FFA3390FF0
-00F0000714E07F0003EB01C0A2EBFC0300011480EBFE070000140013FFEB7F0EA2149EEB
-3F9C14FC6D5AA26D5AA36D5AA26D5AA25CA21307003890C7FCEA7C0FEAFE0E131E131C5B
-EA74F0EA3FE0EA0F8020277F9A23>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fl cmtt10 10.95 77
-/Fl 77 127 df<127012F8B012701200A5127012F8A31270051C779B18>33
-D<EA4010EAE038EAF078EAE038AAEA60300D0E7B9C18>I<EA0306EA078FA6387FFFC0B5
-12E0A26C13C0380F1E00A6387FFFC0B512E0A26C13C0381E3C00A6EA0C18131C7E9B18>
-I<13C01201A3EA03F0EA0FFCEA3FFEEA7DCFEA71C738E1C38013C7A338F1C0001279123F
-6C7EEA0FF8EA01FC13DE13CF13C73861C38012F1A212E1EBC7001271EA79DEEA3FFEEA1F
-F8EA07E0EA01C0A3120011247D9F18>I<1238127CA2127E123E120EA3121CA2123812F8
-12F012C0070E789B18>39 D<137013F0EA01E0EA03C0EA0780EA0F00121E121C5AA25AA4
-5AA81270A47EA27E121E7EEA0780EA03C0EA01F0120013700C24799F18>I<126012F012
-787E7E7EEA07801203EA01C0A2EA00E0A41370A813E0A4EA01C0A2EA03801207EA0F0012
-1E5A5A5A12600C247C9F18>I<EA01C0A4EA41C138F1C780EAFDDF387FFF00EA1FFCEA07
-F0A2EA1FFCEA7FFF38FDDF80EAF1C73841C100EA01C0A411147D9718>I<121C123E127E
-127F123F121F1207120E121E127C12F81260080C788518>44 D<387FFFC0B512E0A26C13
-C013047E8F18>I<1230127812FCA2127812300606778518>I<1303EB0780A2130F14005B
-131EA2133E133C137C1378A213F85B12015B12035BA212075B120F90C7FCA25A121E123E
-123CA2127C127812F85AA2126011247D9F18>I<EA01F0EA07FC487EEA1F1FEA1C073838
-0380007813C0EA7001A238E000E0A9EAF001007013C0A2EA780300381380381C0700EA1F
-1FEA0FFE6C5AEA01F0131C7E9B18>I<EA01801203A21207120F123F12FF12FB12431203
-B0EA7FFCEAFFFEEA7FFC0F1C7B9B18>I<383FFF80A30038C7FCA8EA3BF8EA3FFE7F383C
-0780383003C0EA0001EB00E0A2126012F0A238E001C0EA7003387C0F80383FFF00EA1FFC
-EA03F0131C7E9B18>53 D<12E0B512E0A214C038E00380EB0700C65A131E131C5BA25B13
-F05BA2485AA3485AA448C7FCA7131D7E9C18>55 D<EA03F8EA0FFE487E383E0F80EA3803
-387001C0A438380380EA3C07381FFF00EA07FC487EEA1F1F383C0780387001C000F013E0
-EAE000A4387001C0EA7803383E0F80381FFF006C5AEA03F8131C7E9B18>I<1230127812
-FCA2127812301200A81230127812FCA2127812300614779318>58
-D<14C0EB03E01307EB1FC0EB3F80EBFE00485AEA07F0485AEA3F8048C7FC12FCA2127F6C
-7EEA0FE06C7EEA01FC6C7EEB3F80EB1FC0EB07E01303EB00C013187E9918>60
-D<387FFFC0B512E0A26C13C0C8FCA4387FFFC0B512E0A26C13C0130C7E9318>I<126012
-F87E127F6C7EEA0FE06C7EEA01FC6C7EEB3F80EB1FC0EB07E0A2EB1FC0EB3F80EBFE0048
-5AEA07F0485AEA3F8048C7FC12FC5A126013187E9918>I<EA0FF0EA3FFC48B4FCEA700F
-38F00380A2EA600738000F00133E5BEA01F05B485AA55BC8FCA5EA0380487EA36C5A111C
-7D9B18>I<137CEA01FEEA07FF380F8780381E03C0EA3C1DEA387F3870FFE0EA71E313C1
-12E1EAE380A638E1C1C0127113E33870FF8038387F00EA3C1C381E00E0EA0F833807FFC0
-0001138038007E00131C7E9B18>I<137013F8A213D8A2EA01DCA3138CEA038EA4EA0707
-A5380FFF80A3EA0E03381C01C0A3387F07F000FF13F8007F13F0151C7F9B18>I<EA7FFC
-B5FC6C1380381C03C01301EB00E0A4130114C01307381FFF80140014C0EA1C03EB00E014
-F01470A414F014E01303387FFFC0B51280387FFE00141C7F9B18>I<EBF8E0EA03FEEA07
-FFEA0F07EA1E03EA3C01EA38005AA214005AA8127014E0A27E123C381E01C0EA0F073807
-FF803803FE00EA00F8131C7E9B18>I<EA7FF8EAFFFE6C7E381C0F80EB03C0A2EB01E013
-00A214F01470A814F014E0A2130114C01303EB0F80387FFF00485AEA7FF8141C7F9B18>
-I<B512F0A3381C0070A41400A2130EA3EA1FFEA3EA1C0EA390C7FCA21438A5B512F8A315
-1C7F9B18>I<B512F0A3381C0070A41400A2130EA3EA1FFEA3EA1C0EA390C7FCA7EAFFC0
-A3141C7E9B18>I<3801F1C0EA03FDEA0FFFEA1F0FEA1C03123813011270A290C7FC5AA5
-EB0FF0131F130F387001C0A213031238A2EA1C07EA1F0FEA0FFFEA03FDEA01F1141C7E9B
-18>I<387F07F038FF8FF8387F07F0381C01C0A9EA1FFFA3EA1C01AA387F07F038FF8FF8
-387F07F0151C7F9B18>I<EA7FFFB512806C1300EA01C0B3A4EA7FFFB512806C1300111C
-7D9B18>I<387F07F038FF87F8387F07F0381C03C0EB07801400130E131E5B13385B13F0
-121DA2EA1FB8A2131C121EEA1C0EA27FA2EB0380A2EB01C0387F03F038FF87F8387F03F0
-151C7F9B18>75 D<EAFFC0A3001CC7FCB114E0A5B5FCA3131C7E9B18>I<38FC01F8EAFE
-03A2383B06E0A4138EA2EA398CA213DCA3EA38D8A213F81370A21300A638FE03F8A3151C
-7F9B18>I<387E07F038FF0FF8387F07F0381D81C0A313C1121CA213E1A313611371A213
-311339A31319A2131D130DA3EA7F07EAFF87EA7F03151C7F9B18>I<EA0FFE383FFF8048
-13C0EA7803EA700100F013E0EAE000B0EAF001007013C0EA7C07EA7FFF6C1380380FFE00
-131C7E9B18>I<EAFFFEEBFF8014C0EA1C03EB01E013001470A514E01301EB03C0EA1FFF
-1480EBFE00001CC7FCA8B47EA3141C7F9B18>I<EA0FFE383FFF804813C0EA7803EA7001
-00F013E0EAE000AE1370A2EAF079387039C0EA783FEA7FFF6C1380380FFE00EA000FEB07
-80A2EB03C01301A213227E9B18>I<EA7FF8EAFFFE6C7E381C0F80130314C01301A31303
-1480130F381FFF005BA2EA1C0F7FEB0380A5149CA3387F01F8EAFF81387F00F0161C7F9B
-18>I<3803F1C0EA1FFF5AEA7C0FEA7003EAE001A390C7FC12701278123FEA1FF0EA07FE
-C67EEB0F80EB03C01301EB00E0A2126012E0130100F013C038F80780B5FCEBFE00EAE7F8
-131C7E9B18>I<387FFFF8B5FCA238E07038A400001300B2EA07FFA3151C7F9B18>I<38FF
-83FEA3381C0070B36C13E0EA0F01380783C03803FF806C1300EA007C171C809B18>I<38
-FE03F8EAFF07EAFE03381C01C0EA1E03000E1380EA0F0700071300A2EA038EA2EA01DCA3
-EA00F8A21370A9EA01FC487E6C5A151C7F9B18>89 D<EAFFF8A3EAE000B3ACEAFFF8A30D
-24779F18>91 D<126012F0A27E1278127C123CA2123E121E121F7EA27F12077F1203A27F
-12017F12007F1378A2137C133C133E131EA2131F7F14801307A2EB030011247D9F18>I<
-EAFFF8A3EA0038B3ACEAFFF8A30D247F9F18>I<387FFFC0B512E0A26C13C013047E7F18>
-95 D<EA0FF0EA1FFC487EEA3C0FEA180738000380A213FF1207121FEA7F03127812E0A3
-EAF007EA780F383FFFF8EA1FFDEA07F015147E9318>97 D<127E12FE127E120EA5133EEB
-FF80000F13C0EBC1E01380EB0070120E1438A6000F1370A2EB80E013C1EBFFC0000E1380
-38063E00151C809B18>I<EA01FEEA07FF001F1380EA3E073838030048C7FCA25AA61270
-EB01C01238EA3E03381FFF8000071300EA01FC12147D9318>I<EB1F80133F131F1303A5
-EA03E3EA0FFBEA1FFFEA3C1FEA380FEA7007130312E0A6EA7007A2EA380FEA3C1F381FFF
-F0380FFBF83803E3F0151C7E9B18>I<EA01F0EA07FCEA1FFEEA3E0F38380780EA7003A2
-38E001C0A2B5FCA300E0C7FC1270EB01C01238EA3E07381FFF8000071300EA01F812147D
-9318>I<EB1F80EB7FC0EBFFE013E13801C0C01400A3387FFFC0B5FCA23801C000AEEA7F
-FFA3131C7F9B18>I<3801E1F03807FFF85A381E1E30381C0E00487EA5EA1C0EEA1E1EEA
-1FFC5BEA39E00038C7FC7EEA1FFEEBFFC04813E0387801F038700070481338A4007813F0
-EA7E03381FFFC06C13803801FC00151F7F9318>I<127E12FE127E120EA5133EEBFF8000
-0F13C013C1EB80E01300120EAB387FC7FC38FFE7FE387FC7FC171C809B18>I<EA0380EA
-07C0A3EA0380C7FCA4EA7FC012FF127F1201AEB5FCA3101D7C9C18>I<1338137CA31338
-1300A4EA0FFCA3EA001CB3A4EA6038EAF078EAFFF0EA7FE0EA3F800E277E9C18>I<127E
-12FE127E120EA5EB3FF0A3EB0780EB0F00131E5B5B5BEA0FF87F139C130EEA0E0F7FEB03
-8014C0387FC7F812FF127F151C7F9B18>I<EAFFC0A31201B3A4B51280A3111C7D9B18>I<
-38F9C1C038FFF7F013FF383E3E38EA3C3CA2EA3838AB38FE3E3EEB7E7EEB3E3E17148093
-18>I<EA7E3E38FEFF80007F13C0EA0FC1EB80E01300120EAB387FC7FC38FFE7FE387FC7
-FC1714809318>I<EA01F0EA0FFE487E383E0F80EA3803387001C0A238E000E0A5EAF001
-007013C0EA7803383C0780EA3E0F381FFF006C5AEA01F013147E9318>I<EA7E3E38FEFF
-80007F13C0380FC1E01380EB0070120E1438A6000F1370A2EB80E013C1EBFFC0000E1380
-EB3E0090C7FCA7EA7FC0487E6C5A151E809318>I<3801F380EA07FBEA1FFFEA3E1FEA38
-0FEA7007A2EAE003A6EA7007A2EA380FEA3C1FEA1FFFEA0FFBEA03E3EA0003A7EB1FF0EB
-3FF8EB1FF0151E7E9318>I<38FF0FC0EB3FE0EB7FF0EA07F0EBE060EBC0005BA290C7FC
-A9EAFFFC7F5B14147E9318>I<EA07F7EA3FFF5AEA780FEAE007A3007CC7FCEA7FE0EA1F
-FCEA03FEEA001F38600780EAE003A212F038F80F00B5FC13FCEAE7F011147D9318>I<48
-7E1203A4387FFFC0B5FCA238038000A9144014E0A33801C1C013FF6C1380EB3E0013197F
-9818>I<387E07E0EAFE0FEA7E07EA0E00AC1301EA0F033807FFFC6C13FE3801FCFC1714
-809318>I<387F8FF000FF13F8007F13F0381C01C0380E0380A338070700A3138FEA038E
-A3EA01DCA3EA00F8A2137015147F9318>I<38FF07F8138F1307383800E0A4381C01C013
-7113F9A213D9EA1DDD000D1380A3138DEA0F8FA23807070015147F9318>I<387F8FF013
-9F138F380F0700EA078EEA039EEA01DC13F81200137013F07FEA01DCEA039E138EEA0707
-000E1380387F8FF000FF13F8007F13F015147F9318>I<387F8FF000FF13F8007F13F038
-0E01C0EB0380A21207EB0700A2EA0387A2138EEA01CEA213CC120013DC1378A31370A313
-F05B1279EA7BC0EA7F806CC7FC121E151E7F9318>I<383FFFF05AA2387001E0EB03C0EB
-078038000F00131E5B13F8485AEA03C0485A380F0070121E5A5AB512F0A314147F9318>
-I<EB07E0131F137FEB780013E0AB1201EA7FC0485AA26C7EEA01E01200AB1378EB7FE013
-1F130713247E9F18>I<127CB4FC13C01203C67EAB7FEB7FC0EB3FE0A2EB7FC0EBF0005B
-ABEA03C012FF90C7FC127C13247E9F18>125 D<EA060CEA1F1EEA3FBEEAFBF8EAF1F0EA
-60C00F067C9B18>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fm cmr10 10.95 71
-/Fm 71 123 df<90381F83E09038F06E303901C07878380380F8903800F03048EB7000A7
-B612803907007000B2383FE3FF1D20809F1B>11 D<133FEBE0C0EA01C0380381E0EA0701
-A290C7FCA6B512E0EA0700B2383FC3FC1620809F19>I<127012F812FCA212741204A312
-08A21210A212201240060E7C9F0D>39 D<13401380EA01005A12061204120C5AA2123812
-30A212701260A412E0AC1260A412701230A212381218A27E120412067E7EEA008013400A
-2E7BA112>I<7E12407E12307E1208120C7EA212077EA213801201A413C0AC1380A41203
-1300A25A1206A25A120812185A12205A5A0A2E7EA112>I<127012F012F8A212781208A3
-1210A31220A21240050E7C840D>44 D<EAFFF0A20C02808A0F>I<127012F8A312700505
-7C840D>I<EA03F0EA0E1C487EEA1806EA380738700380A400F013C0AD00701380A3EA78
-0700381300EA1806EA1C0E6C5AEA03F0121F7E9D17>48 D<13801203120F12F31203B3A6
-EA07C0EA7FFE0F1E7C9D17>I<EA03F0EA0C1CEA100E487E00401380128000F013C0EAF8
-03A3EA200712001480A2EB0F00130E5B5B5B13605B485A48C7FC000613405A5A00101380
-EA3FFF5AB5FC121E7E9D17>I<EA03F0EA0C1CEA100EEA200F007813801307A2EA380F12
-001400A2131E131C1370EA07F0EA003C130E130FEB0780A214C0122012F8A300F0138012
-40EB0F00EA200EEA183CEA07F0121F7E9D17>I<1306A2130EA2131E132EA2134E138EA2
-EA010E1202A212041208A212101220A2124012C0B512F038000E00A7EBFFE0141E7F9D17
->I<EA1803EA1FFE5B5B13E00010C7FCA6EA11F0EA161CEA180EEA10071480EA0003A214
-C0A3127012F0A200E013801240EB0700EA20066C5AEA0838EA07E0121F7E9D17>I<137C
-EA0182EA0701380E0380EA0C0712183838030090C7FC12781270A2EAF1F0EAF21CEAF406
-EAF807EB0380A200F013C0A51270A214801238EB07001218EA0C0E6C5AEA01F0121F7E9D
-17>I<1240387FFFE014C0A23840008038800100A21302485AA25B5BA25BA21360A213E0
-5B1201A41203A76C5A131F7E9D17>I<EA03F0EA0C0CEA1006EA3003382001801260A312
-7038780300123EEA3F06EA1FC8EA0FF0EA03F8487EEA0C7EEA103F38300F80EA6007EB01
-C012C01300A31480EA600100201300EA1002EA0C0CEA03F0121F7E9D17>I<EA03F0EA0E
-18487E487E13071270EB038012F0A214C0A5EA7007A21238EA180BEA0E13EA03E3380003
-80A3EB07001230EA7806130EEA700CEA2018EA1070EA0FC0121F7E9D17>I<127012F8A3
-12701200AA127012F8A3127005147C930D>I<127012F8A312701200AA127012F012F8A2
-12781208A31210A31220A21240051D7C930D>I<5B497EA3497EA3EB09E0A3EB10F0A3EB
-2078A3497EA2EBC03EEB801EA248B5FCEB000FA20002EB0780A348EB03C0A2120C001E14
-E039FF801FFE1F207F9F22>65 D<B512E0380F0078141EA2801580A515005C141E147CEB
-FFF0EB007C141FEC0F80EC07C0140315E0A515C014071580EC0F00143EB512F01B1F7E9E
-20>I<90380FE0109038381C309038E002703803C00139078000F048C71270121E15305A
-1510127C127800F81400A91278007C1410123CA26C1420A27E6C6C13406C6C13803900E0
-0300EB380CEB0FF01C217E9F21>I<B512F83807801EEC0780EC03C0EC01E0EC00F01570
-1578A2153CA3153EA8153CA2157C1578A215F0EC01E0EC03C0EC0780EC1E00B512F81F1F
-7F9E23>I<B61280380F000F14031401140015C01540A314401500A214C0130113FF1301
-13001440A3EC0020A31540A315C01401EC0380140FB6FC1B1F7E9E1F>I<B61280380780
-071401A2140015C01540A4EC2000A3146014E013FF138014601420A391C7FCA87FEAFFFE
-1A1F7F9E1E>I<90380FE02090387818609038E004E03803800238070001481300001E14
-60A25A1520127C127800F81400A7EC7FFCEC03E000781301127C123CA27EA27E7E380380
-023900E00460903878182090380FE0001E217D9F24>I<39FFF07FF8390F000780AD90B5
-FCEB0007AF39FFF07FF81D1F7E9E22>I<EAFFF0EA0F00B3ABEAFFF00C1F7E9E10>I<39FF
-F007FC390F0003E0EC0180150014025C5C5C5C5C5C49C7FC5B497E130FEB13C0EB21E013
-41EB80F0EB0078A28080A280EC0780A2EC03C015E015F039FFF01FFE1F1F7E9E23>75
-D<EAFFF8EA0F8090C7FCB21402A414061404A2140C141C147CB512FC171F7E9E1C>I<B4
-6CEB07FE000715C0A2D805C0130BA2D804E01313A301701323A26D1343A36D1383A29038
-0E0103A3EB0702A3EB0384A2EB01C8A3EB00F0A21460121FD8FFE0EB7FFE271F7F9E2A>
-I<B4EB0FF8390F8003E0EC0080EA0BC0EA09E0A2EA08F01378A27F7FA27FEB0780A2EB03
-C0EB01E0A2EB00F01478A2143C141EA2140F1407A214031401123E38FF80001D1F7E9E22
->I<EB1FE0EB70383801C00E48487E39070003804814C0001EEB01E048EB00F0A2007C14
-F8A20078147800F8147CA900781478007C14F8A2003C14F0003E1301001E14E06CEB03C0
-6C148039038007003801E01E38007038EB1FE01E217E9F23>I<B512E0380F007C141E80
-EC0780A215C0A41580A2EC0F00141E147CEBFFE090C8FCAEEAFFF01A1F7E9E1F>I<B512
-E0380F80780007131E80EC0780A215C0A41580A2EC0F00141E1478EBFFE0EB8060143814
-3C141C141EA3141FA315011581140F390FC0078239FFFC03C4C812F820207F9E22>82
-D<3803F040380C0CC0EA1803EA3001EA6000A212E01440A36C13007E127CEA7F80EA3FF8
-6CB4FC00071380C613C0EB1FE013031301EB00F014707EA46C136014E06C13C038F80180
-38C60300EA81FC14217E9F19>I<007FB512E038780F010060EB006000401420A200C014
-3000801410A400001400B3497E3803FFFC1C1F7E9E21>I<39FFF00FF8390F0003E0EC00
-80B3A46CEB01001380120314026C6C5A6C6C5AEB3830EB0FC01D207E9E22>I<39FFF003
-FE391F8000F86CC7126015206C6C1340A36C6C1380A2EBE00100011400A23800F002A213
-F8EB7804A26D5AA36D5AA2131F6D5AA2EB07C0A36D5AA36DC7FC1F207F9E22>I<3BFFF0
-7FF81FF03B1F000FC007C06C903907800180170015C001805C00071502EC09E013C00003
-5DEC19F01410D801E05CA2EC2078D800F05CA2EC403C01785CA2EC801E017C1460013C14
-4090383D000F133F6D5CA2011E1307010E91C7FCA2010C7F010413022C207F9E2F>I<39
-FFF001FF391F800078000F146012076D1340000314807F3901F001001200EBF802EB7C06
-EB3C04EB3E08131EEB1F10EB0FB0EB07A014E06D5AACEB3FFC201F7F9E22>89
-D<12FFA212C0B3B3A512FFA2082D7CA10D>91 D<12FFA21203B3B3A512FFA2082D80A10D
->93 D<120812101220A21240A21280A312B812FCA2127C1238060E7D9F0D>96
-D<EA1FE0EA3030EA7818131CEA300E1200A313FEEA0F8EEA1E0E1238127800F01310A313
-1E127838386720380F83C014147E9317>I<121C12FC121CAA137CEA1D87381E0180EB00
-C0001C13E01470A21478A6147014F014E0001E13C0381A018038198700EA107C15207E9F
-19>I<EA01FCEA0706EA1C0F123813060078C7FC127012F0A61270127800381380A2381C
-0100EA0706EA01F811147F9314>I<EB01C0130F1301AAEA01F1EA070DEA0C03EA180112
-381278127012F0A61270A21238EA1803120CEA070D3801F1F815207F9F19>I<EA03F0EA
-0E1C487E487EA238700380A212F0B5FC00F0C7FCA41270A26C1380A2381C0100EA0706EA
-01F811147F9314>I<137CEA01C6EA030F1207EA0E061300A7EAFFF0EA0E00B2EA7FE010
-20809F0E>I<14E03803E330EA0E3CEA1C1C38380E00EA780FA5EA380E6C5AEA1E38EA33
-E00020C7FCA21230A2EA3FFE381FFF8014C0383001E038600070481330A4006013606C13
-C0381C03803803FC00141F7F9417>I<121C12FC121CAA137C1386EA1D03001E1380A212
-1CAE38FF8FF014207E9F19>I<1238127CA31238C7FCA6121C12FC121CB1EAFF80091F7F
-9E0C>I<13E0EA01F0A3EA00E01300A61370EA07F012001370B3A31260EAF06013C0EA61
-80EA3F000C28829E0E>I<121C12FC121CAAEB1FE0EB0780EB060013045B5B5B136013E0
-EA1DF0EA1E70EA1C38133C131C7F130F7F148014C038FF9FF014207E9F18>I<121C12FC
-121CB3ABEAFF8009207F9F0C>I<391C3E03E039FCC30C30391D019018001EEBE01CA200
-1C13C0AE3AFF8FF8FF8021147E9326>I<EA1C7CEAFC86EA1D03001E1380A2121CAE38FF
-8FF014147E9319>I<EA01F8EA070E381C0380383801C0A2387000E0A200F013F0A60070
-13E0A2383801C0A2381C038038070E00EA01F814147F9317>I<EA1C7CEAFD87381E0180
-14C0381C00E014F014701478A6147014F014E0381E01C0EB0380381D8700EA1C7C90C7FC
-A8B47E151D7E9319>I<3801F04038070CC0EA0E02EA1C03EA38011278127012F0A61270
-12781238EA1C03EA0C05EA0709EA01F1EA0001A8EB0FF8151D7F9318>I<EA1CF0EAFD18
-EA1E3CA21318EA1C00AEEAFFC00E147E9312>I<EA0FC8EA3038EA6018EAC008A3EAE000
-127CEA3FE0EA1FF0EA07F8EA003CEA800E130612C0A21304EAE00CEAD818EA87E00F147F
-9312>I<1202A31206A2120EA2123EEAFFF8EA0E00AB1304A5EA07081203EA01F00E1C7F
-9B12>I<381C0380EAFC1FEA1C03AE1307120CEA061B3803E3F014147E9319>I<38FF83F8
-383E00E0001C13C06C1380A338070100A21383EA0382A2EA01C4A213E4EA00E8A21370A3
-132015147F9318>I<39FF9FE1FC393C078070391C030060EC8020000E1440A214C0D807
-04138014E0A239038861001471A23801D032143A143E3800E01CA2EB6018EB40081E147F
-9321>I<38FF87F8381E03C0380E0180EB0300EA0702EA0384EA01C813D8EA00F0137013
-7813F8139CEA010E1202EA060738040380000C13C0003C13E038FE07FC16147F9318>I<
-38FF83F8383E00E0001C13C06C1380A338070100A21383EA0382A2EA01C4A213E4EA00E8
-A21370A31320A25BA3EAF080A200F1C7FC1262123C151D7F9318>I<EA7FFFEA700E1260
-EA401C133813781370EA00E0120113C0EA038012071301120E121EEA1C03EA3802EA7006
-130EEAFFFE10147F9314>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fn cmbx12 20.736 19
-/Fn 19 122 df<DB1FFC14C00203B5EAC001021FECF003027FECFC07903B01FFFC00FE0F
-010701C0EB1F9F4948C7EA07FFD93FF880494814004948157F485B4A153F4890C9121F48
-5A000F170F5B001F1707A2485A1803A2127FA24993C8FCA212FFAA041FB61280127FA27F
-DC0001EBC000123FA36C7EA26C7EA26C7E7E6C7F806C7F6D6C5CEB3FFCD90FFF5C6D01C0
-EB1FBF010101FCEBFF1F6D6CB5EAFE0F021FECF8030203ECE0009126001FFEC9FC413D7B
-BB4C>71 D<B612F8A439007FF000B3B3AFB612F8A41D3B7DBA24>73
-D<B612FEA426007FF0C9FCB3ADEF03C0A517071880A3170FA3171FA2173F177F17FF5E04
-071300163FB9FCA4323B7DBA3A>76 D<B500F00207B512E0808080D8007F92390007E000
-6E6F5A81017B7F81137901787F6E7E6E7E81141F6E7E6E7F6E7F82806E7F6F7E6F7E826F
-7E816F13806F13C017E06F13F081EE7FF8EE3FFC17FEEE1FFF827013837013C318E37013
-F382EF7FFBEF3FFFA283838383A28383187F183FA201FC161FB500FC150F18071803A243
-3B7CBA4C>78 D<B712F8EEFFC017F817FE3B007FF0001FFF040313C004007F717E717EA2
-84171FA284A660A2173F604D5A604C485A4C5BDC1FFEC8FC91B612F817C0A29139F0007F
-F0EE1FF8707E707E707E8482A284A584A5F101E0A27013F0A2F103C0EF7FF8B600F89039
-3FFC078094381FFE0F0507B51200050113FCCBEA1FF0433C7CBA48>82
-D<B600F80107B512E0A426007FF0C83807E000725AB3B3A3013F4C5AA280011F4CC7FCA2
-6D6C151E0107163E6E5D6D6C5D6D6D13019026007FE0EB0FE0DA3FFCEB7FC0020FB65A02
-034AC8FCDA007F13F003071380433C7DBA4A>85 D<EB3FFE48B512E0000714F8390FE007
-FC9038F001FE486C6C7E6F7E82153F6C48806C5A6C5AC8FCA491B5FC131F90387FF83F38
-03FF803807FC00EA0FF0485A123F485AA2485AA4157F6C7E15DF3A3FE0039FF03B1FF80F
-0FFFE03807FFFE0001497E39003FE0002B267DA52F>97 D<13FE12FFA412071203B04AB4
-FC021F13F0027F13FC9138FC03FE9039FFF000FF02C0EB3F8091C7EA1FC04915E0EE0FF0
-17F8A2EE07FCA317FEA917FCA3160F17F817F0161F6D15E06EEB3FC06EEB7F80D9F9E0EB
-FF009039F0FC07FE91387FFFF8D9E01F13E09026C003FEC7FC2F3C7DBB36>I<903801FF
-F0010F13FE013FEBFF809039FF801FC03901FE003F4848EB7FE0485A485A121F4848EB3F
-C0ED1F80007FEC0F004990C7FCA212FFAA127F7FA2123F6D14F0121F6C6CEB01E012076C
-6CEB03C06CB4EB0F806C9038C03F0090383FFFFE010F13F8010113C024267DA52B>I<EE
-3F80ED3FFFA4150181B0ECFF80010F13F0013F13FC9038FFC03F3901FE000F4848130348
-487F48487F121F485AA2127F5BA312FFA9127FA36C7EA2121F6C6C5B6C6C5B00035CD801
-FE011F13C02700FF807E13FE90387FFFF8010F13E0010113002F3C7DBB36>I<49B47E01
-0F13F0017F13FC9038FF81FE3A03FE007F80D807F8133F4848EB1FC0ED0FE0485A003F15
-F01507485A16F8A212FFA290B6FCA301C0C8FCA4127FA36C7E1678121F7F000F15F06C6C
-13016C6CEB03E06C6CEB0FC03A00FFC07F8090393FFFFE00010F13F8010013C025267DA5
-2C>I<EC1FF0ECFFFC010313FF90390FF83F8090381FE07F90393FC0FFC0495A13FFA248
-9038007F80ED3F00151E92C7FCAAB67EA4000190C8FCB3AC007F13FEA4223C7DBB1E>I<
-EA01E0EA07F8487EA2487EA46C5AA26C5AEA01E0C8FCAB13FE127FA412071203B3AAB512
-F0A4143D7DBC1A>105 D<13FE12FFA412071203B3B3AEB512F8A4153C7DBB1A>108
-D<D801FCEBFF8000FF010313F0020F7F91381E03FC91383801FE000701607F0003497E01
-FD15805C01FFC7FCA35BB3A4B5D8F83F13FEA42F267CA536>110
-D<3901FC03F000FFEB0FFC4AB4FC91383C3F80EC707F00079038E0FFC000035BEBFD80A2
-01FFEB7F809138003F00151E92C7FC5BB3A3B512FCA422267DA528>114
-D<90383FF0383903FFFE7848EBFFF8381FC00F383F0003003E13005A157812FCA27E6C14
-0013C013FC387FFFF06C13FEECFF806C14C06C14E0000314F0C614F8011F13FCEB007FEC
-07FE0070130100F01300157E7EA27E157C6C14FC6C14F890388001F09038F00FE000F9B5
-12C0D8F07F130038C01FF81F267DA526>I<130FA55BA45BA25BA25B5A5A5A001FEBFFF0
-B6FCA3000190C7FCB3153CA86C14781480017F13F090383FC1E090381FFFC06D13809038
-01FE001E377EB626>I<B500F0EBFFFCA4D803FEC7EA1F806D15006C151E806C5DA26E13
-7C017F14786E13F8013F5CECF001011F5CECF803010F5CA2ECFC0701075CECFE0F010391
-C7FC6E5A6D131E15BE6D13BC15FC6E5AA36E5AA26E5AA26E5AA26E5AA2140F92C8FC5C14
-1E0008133E007F133C147C38FF807814F8EB81F0EB83E06C485A387C1F80D83FFFC9FCEA
-1FFCEA07F02E377EA533>121 D E
-%EndDVIPSBitmapFont
-end
-%%EndProlog
-%%BeginSetup
-%%Feature: *Resolution 300dpi
-TeXDict begin
-%%BeginPaperSize: Letter
-letter
-%%EndPaperSize
-
-%%EndSetup
-%%Page: 1 1
-1 0 bop 75 659 a Fn(GNU)33 b(Readline)h(Library)e(User)h(In)m(terface)p
-75 709 1800 17 v 936 757 a Fm(Edition)17 b(4.3,)c(for)i
-Fl(Readline)f(Library)g Fm(V)l(ersion)i(4.3.)1643 811
-y(Marc)o(h)e(2002)75 2467 y Fk(Brian)23 b(F)-6 b(o)n(x,)23
-b(F)-6 b(ree)23 b(Soft)n(w)n(are)f(F)-6 b(oundation)75
-2534 y(Chet)22 b(Ramey)-6 b(,)23 b(Case)e(W)-6 b(estern)23
-b(Reserv)n(e)f(Univ)n(ersit)n(y)p 75 2570 1800 9 v eop
-%%Page: 2 2
-2 1 bop 75 217 a Fm(This)22 b(do)q(cumen)o(t)f(describ)q(es)i(the)f
-(end)f(user)h(in)o(terface)f(of)g(the)g(GNU)g(Readline)i(Library)l(,)g
-(a)e(utilit)o(y)75 271 y(whic)o(h)14 b(aids)f(in)g(the)g(consistency)h
-(of)e(user)h(in)o(terface)g(across)f(discrete)h(programs)f(that)g(need)
-h(to)f(pro)o(vide)75 326 y(a)j(command)g(line)i(in)o(terface.)75
-394 y(Published)g(b)o(y)f(the)f(F)l(ree)g(Soft)o(w)o(are)f(F)l
-(oundation)75 448 y(59)h(T)l(emple)h(Place,)f(Suite)i(330,)75
-503 y(Boston,)d(MA)h(02111)f(USA)75 570 y(P)o(ermission)j(is)f(gran)o
-(ted)g(to)f(mak)o(e)h(and)g(distribute)i(v)o(erbatim)d(copies)i(of)f
-(this)h(man)o(ual)f(pro)o(vided)h(the)75 625 y(cop)o(yrigh)o(t)e
-(notice)h(and)f(this)h(p)q(ermission)g(notice)g(are)f(preserv)o(ed)h
-(on)f(all)h(copies.)75 692 y(P)o(ermission)c(is)h(gran)o(ted)e(to)g
-(cop)o(y)h(and)g(distribute)h(mo)q(di\014ed)g(v)o(ersions)f(of)f(this)h
-(man)o(ual)g(under)h(the)f(con-)75 747 y(ditions)k(for)e(v)o(erbatim)h
-(cop)o(ying,)g(pro)o(vided)h(that)e(the)h(en)o(tire)h(resulting)g
-(deriv)o(ed)g(w)o(ork)e(is)h(distributed)75 802 y(under)h(the)f(terms)g
-(of)g(a)f(p)q(ermission)j(notice)f(iden)o(tical)h(to)e(this)g(one.)75
-869 y(P)o(ermission)i(is)g(gran)o(ted)f(to)g(cop)o(y)h(and)f
-(distribute)i(translations)f(of)f(this)h(man)o(ual)g(in)o(to)f(another)
-g(lan-)75 924 y(guage,)e(under)h(the)f(ab)q(o)o(v)o(e)g(conditions)i
-(for)d(mo)q(di\014ed)j(v)o(ersions,)e(except)h(that)f(this)h(p)q
-(ermission)g(notice)75 979 y(ma)o(y)f(b)q(e)i(stated)f(in)h(a)f
-(translation)g(appro)o(v)o(ed)g(b)o(y)g(the)g(F)l(ree)h(Soft)o(w)o(are)
-d(F)l(oundation.)75 2661 y(Cop)o(yrigh)o(t)301 2660 y(c)289
-2661 y Fj(\015)h Fm(1988-2002)f(F)l(ree)i(Soft)o(w)o(are)f(F)l
-(oundation,)h(Inc.)p eop
-%%Page: 1 3
-1 2 bop 75 -58 a Fm(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077
-b(1)75 149 y Fi(1)41 b(Command)28 b(Line)e(Editing)137
-271 y Fm(This)16 b(c)o(hapter)f(describ)q(es)i(the)e(basic)h(features)f
-(of)g(the)g Fh(gnu)g Fm(command)g(line)i(editing)f(in)o(terface.)75
-403 y Fk(1.1)33 b(In)n(tro)r(duction)24 b(to)e(Line)i(Editing)137
-501 y Fm(The)16 b(follo)o(wing)g(paragraphs)e(describ)q(e)j(the)e
-(notation)g(used)h(to)e(represen)o(t)i(k)o(eystrok)o(es.)137
-569 y(The)h(text)f Fg(C-k)h Fm(is)g(read)g(as)f(`Con)o(trol-K')g(and)h
-(describ)q(es)h(the)f(c)o(haracter)f(pro)q(duced)h(when)h(the)1831
-567 y Ff(h)p 1844 541 19 2 v 1844 569 a Fe(k)p 1844 577
-V 1860 567 a Ff(i)75 624 y Fm(k)o(ey)d(is)h(pressed)g(while)g(the)f
-(Con)o(trol)g(k)o(ey)g(is)h(depressed.)137 693 y(The)g(text)g
-Fg(M-k)f Fm(is)i(read)f(as)f(`Meta-K')g(and)h(describ)q(es)i(the)e(c)o
-(haracter)f(pro)q(duced)i(when)g(the)f(Meta)75 747 y(k)o(ey)e(\(if)g(y)
-o(ou)g(ha)o(v)o(e)g(one\))g(is)h(depressed,)g(and)f(the)930
-745 y Ff(h)p 942 719 V 942 747 a Fe(k)p 942 755 V 958
-745 a Ff(i)987 747 y Fm(k)o(ey)g(is)h(pressed.)20 b(The)15
-b(Meta)e(k)o(ey)h(is)h(lab)q(eled)1779 745 y Ff(h)p 1791
-719 72 2 v 1791 747 a Fe(AL)m(T)p 1791 755 V 1860 745
-a Ff(i)75 802 y Fm(on)e(man)o(y)g(k)o(eyb)q(oards.)19
-b(On)13 b(k)o(eyb)q(oards)g(with)h(t)o(w)o(o)e(k)o(eys)g(lab)q(eled)
-1213 800 y Ff(h)p 1225 774 V 1225 802 a Fe(AL)m(T)p 1225
-810 V 1294 800 a Ff(i)1322 802 y Fm(\(usually)i(to)e(either)i(side)g
-(of)f(the)75 857 y(space)j(bar\),)f(the)388 855 y Ff(h)p
-400 829 V 400 857 a Fe(AL)m(T)p 400 865 V 469 855 a Ff(i)499
-857 y Fm(on)h(the)g(left)g(side)g(is)g(generally)h(set)f(to)f(w)o(ork)g
-(as)g(a)g(Meta)g(k)o(ey)l(.)22 b(The)1697 855 y Ff(h)p
-1709 829 V 1709 857 a Fe(AL)m(T)p 1709 865 V 1778 855
-a Ff(i)1808 857 y Fm(k)o(ey)75 912 y(on)17 b(the)f(righ)o(t)h(ma)o(y)f
-(also)h(b)q(e)g(con\014gured)g(to)f(w)o(ork)g(as)g(a)h(Meta)f(k)o(ey)g
-(or)g(ma)o(y)g(b)q(e)i(con\014gured)f(as)f(some)75 967
-y(other)f(mo)q(di\014er,)h(suc)o(h)f(as)g(a)g(Comp)q(ose)g(k)o(ey)g
-(for)f(t)o(yping)i(accen)o(ted)f(c)o(haracters.)137 1035
-y(If)c(y)o(ou)g(do)g(not)f(ha)o(v)o(e)h(a)f(Meta)h(or)694
-1033 y Ff(h)p 706 1007 V 706 1035 a Fe(AL)m(T)p 706 1043
-V 775 1033 a Ff(i)801 1035 y Fm(k)o(ey)l(,)g(or)g(another)f(k)o(ey)h(w)
-o(orking)f(as)h(a)f(Meta)h(k)o(ey)l(,)g(the)g(iden)o(tical)75
-1090 y(k)o(eystrok)o(e)f(can)i(b)q(e)g(generated)f(b)o(y)g(t)o(yping)
-809 1088 y Ff(h)p 822 1062 70 2 v 822 1090 a Fe(ESC)p
-822 1098 V 888 1088 a Ff(i)915 1090 y Fd(\014rst)p Fm(,)g(and)g(then)h
-(t)o(yping)1339 1088 y Ff(h)p 1351 1062 19 2 v 1351 1090
-a Fe(k)p 1351 1098 V 1368 1088 a Ff(i)1383 1090 y Fm(.)18
-b(Either)12 b(pro)q(cess)f(is)h(kno)o(wn)75 1145 y(as)j
-Fc(metafying)k Fm(the)425 1143 y Ff(h)p 437 1117 V 437
-1145 a Fe(k)p 437 1153 V 454 1143 a Ff(i)484 1145 y Fm(k)o(ey)l(.)137
-1214 y(The)i(text)e Fg(M-C-k)h Fm(is)h(read)f(as)f(`Meta-Con)o(trol-k')
-g(and)h(describ)q(es)i(the)e(c)o(haracter)g(pro)q(duced)h(b)o(y)75
-1268 y Fc(metafying)e Fg(C-k)p Fm(.)137 1337 y(In)g(addition,)h(sev)o
-(eral)f(k)o(eys)f(ha)o(v)o(e)g(their)h(o)o(wn)f(names.)30
-b(Sp)q(eci\014cally)l(,)1384 1335 y Ff(h)p 1396 1309
-73 2 v 1396 1337 a Fe(DEL)p 1396 1345 V 1467 1335 a Ff(i)1482
-1337 y Fm(,)1514 1335 y Ff(h)p 1526 1309 70 2 v 1526
-1337 a Fe(ESC)p 1526 1345 V 1593 1335 a Ff(i)1608 1337
-y Fm(,)1640 1335 y Ff(h)p 1652 1309 72 2 v 1652 1337
-a Fe(LFD)p 1652 1345 V 1722 1335 a Ff(i)1737 1337 y Fm(,)1768
-1335 y Ff(h)p 1780 1309 70 2 v 1780 1337 a Fe(SPC)p 1780
-1345 V 1847 1335 a Ff(i)1862 1337 y Fm(,)75 1390 y Ff(h)p
-87 1364 76 2 v 87 1392 a Fe(RET)p 87 1399 V 160 1390
-a Ff(i)175 1392 y Fm(,)23 b(and)306 1390 y Ff(h)p 318
-1364 74 2 v 318 1392 a Fe(T)m(AB)p 318 1399 V 390 1390
-a Ff(i)427 1392 y Fm(all)f(stand)g(for)f(themselv)o(es)h(when)h(seen)f
-(in)g(this)g(text,)h(or)e(in)i(an)e(init)i(\014le)g(\(see)75
-1447 y(Section)d(1.3)f([Readline)h(Init)g(File],)h(page)e(4\).)32
-b(If)19 b(y)o(our)g(k)o(eyb)q(oard)h(lac)o(ks)f(a)1444
-1445 y Ff(h)p 1456 1419 72 2 v 1456 1447 a Fe(LFD)p 1456
-1454 V 1526 1445 a Ff(i)1560 1447 y Fm(k)o(ey)l(,)h(t)o(yping)1802
-1445 y Ff(h)p 1814 1419 49 2 v 1814 1447 a Fe(C-j)p 1814
-1454 V 1860 1445 a Ff(i)75 1501 y Fm(will)c(pro)q(duce)g(the)f(desired)
-h(c)o(haracter.)j(The)874 1499 y Ff(h)p 886 1473 76 2
-v 886 1501 a Fe(RET)p 886 1509 V 959 1499 a Ff(i)989
-1501 y Fm(k)o(ey)c(ma)o(y)f(b)q(e)h(lab)q(eled)1385 1499
-y Ff(h)p 1397 1473 109 2 v 1397 1501 a Fe(Return)p 1397
-1509 V 1503 1499 a Ff(i)1533 1501 y Fm(or)1588 1499 y
-Ff(h)p 1600 1473 86 2 v 1600 1501 a Fe(En)o(ter)p 1600
-1509 V 1684 1499 a Ff(i)1714 1501 y Fm(on)f(some)75 1556
-y(k)o(eyb)q(oards.)75 1688 y Fk(1.2)33 b(Readline)23
-b(In)n(teraction)137 1786 y Fm(Often)13 b(during)h(an)e(in)o(teractiv)o
-(e)h(session)g(y)o(ou)g(t)o(yp)q(e)f(in)i(a)e(long)h(line)h(of)e(text,)
-h(only)g(to)f(notice)h(that)f(the)75 1841 y(\014rst)k(w)o(ord)f(on)h
-(the)h(line)h(is)e(missp)q(elled.)26 b(The)16 b(Readline)i(library)f
-(giv)o(es)f(y)o(ou)g(a)g(set)g(of)g(commands)g(for)75
-1896 y(manipulating)g(the)f(text)g(as)f(y)o(ou)h(t)o(yp)q(e)g(it)g(in,)
-g(allo)o(wing)h(y)o(ou)f(to)f(just)h(\014x)g(y)o(our)f(t)o(yp)q(o,)g
-(and)h(not)g(forcing)75 1950 y(y)o(ou)f(to)f(ret)o(yp)q(e)h(the)g(ma)s
-(jorit)o(y)f(of)h(the)g(line.)21 b(Using)15 b(these)f(editing)h
-(commands,)f(y)o(ou)g(mo)o(v)o(e)f(the)h(cursor)75 2005
-y(to)i(the)i(place)g(that)e(needs)i(correction,)g(and)f(delete)h(or)f
-(insert)g(the)h(text)e(of)h(the)g(corrections.)26 b(Then,)75
-2060 y(when)16 b(y)o(ou)f(are)h(satis\014ed)g(with)g(the)f(line,)i(y)o
-(ou)e(simply)i(press)1160 2058 y Ff(h)p 1172 2032 76
-2 v 1172 2060 a Fe(RET)p 1172 2068 V 1245 2058 a Ff(i)1260
-2060 y Fm(.)k(Y)l(ou)16 b(do)f(not)h(ha)o(v)o(e)f(to)g(b)q(e)h(at)f
-(the)75 2115 y(end)k(of)e(the)h(line)i(to)d(press)563
-2113 y Ff(h)p 575 2087 V 575 2115 a Fe(RET)p 575 2122
-V 648 2113 a Ff(i)663 2115 y Fm(;)i(the)f(en)o(tire)h(line)g(is)g
-(accepted)f(regardless)g(of)g(the)g(lo)q(cation)g(of)g(the)75
-2170 y(cursor)d(within)h(the)g(line.)75 2284 y Fb(1.2.1)30
-b(Readline)20 b(Bare)g(Essen)n(tials)137 2382 y Fm(In)12
-b(order)g(to)f(en)o(ter)g(c)o(haracters)g(in)o(to)g(the)h(line,)h
-(simply)g(t)o(yp)q(e)f(them.)18 b(The)12 b(t)o(yp)q(ed)g(c)o(haracter)f
-(app)q(ears)75 2437 y(where)16 b(the)h(cursor)f(w)o(as,)f(and)h(then)h
-(the)f(cursor)g(mo)o(v)o(es)g(one)g(space)g(to)g(the)g(righ)o(t.)23
-b(If)17 b(y)o(ou)f(mist)o(yp)q(e)g(a)75 2492 y(c)o(haracter,)e(y)o(ou)h
-(can)g(use)h(y)o(our)f(erase)g(c)o(haracter)f(to)h(bac)o(k)g(up)g(and)h
-(delete)g(the)f(mist)o(yp)q(ed)h(c)o(haracter.)137 2560
-y(Sometimes)g(y)o(ou)f(ma)o(y)g(mist)o(yp)q(e)h(a)f(c)o(haracter,)f
-(and)i(not)f(notice)h(the)f(error)g(un)o(til)i(y)o(ou)e(ha)o(v)o(e)g(t)
-o(yp)q(ed)75 2615 y(sev)o(eral)g(other)f(c)o(haracters.)19
-b(In)c(that)e(case,)i(y)o(ou)f(can)g(t)o(yp)q(e)h Fg(C-b)f
-Fm(to)g(mo)o(v)o(e)f(the)i(cursor)f(to)g(the)g(left,)h(and)75
-2670 y(then)h(correct)e(y)o(our)h(mistak)o(e.)20 b(Afterw)o(ards,)13
-b(y)o(ou)i(can)g(mo)o(v)o(e)g(the)g(cursor)g(to)g(the)g(righ)o(t)g
-(with)g Fg(C-f)p Fm(.)p eop
-%%Page: 2 4
-2 3 bop 75 -58 a Fm(2)1322 b(GNU)15 b(Readline)h(Library)137
-149 y(When)h(y)o(ou)f(add)g(text)g(in)h(the)g(middle)h(of)e(a)f(line,)j
-(y)o(ou)e(will)i(notice)f(that)f(c)o(haracters)f(to)h(the)g(righ)o(t)75
-204 y(of)e(the)g(cursor)g(are)g(`pushed)h(o)o(v)o(er')f(to)f(mak)o(e)h
-(ro)q(om)g(for)f(the)i(text)f(that)f(y)o(ou)h(ha)o(v)o(e)g(inserted.)21
-b(Lik)o(ewise,)75 259 y(when)e(y)o(ou)g(delete)h(text)e(b)q(ehind)j
-(the)e(cursor,)g(c)o(haracters)f(to)g(the)h(righ)o(t)f(of)g(the)h
-(cursor)g(are)f(`pulled)75 314 y(bac)o(k')11 b(to)g(\014ll)h(in)h(the)e
-(blank)h(space)g(created)f(b)o(y)h(the)f(remo)o(v)m(al)g(of)g(the)h
-(text.)18 b(A)11 b(list)h(of)f(the)h(bare)f(essen)o(tials)75
-369 y(for)k(editing)h(the)f(text)g(of)g(an)g(input)h(line)h(follo)o
-(ws.)75 449 y Fg(C-b)168 b Fm(Mo)o(v)o(e)14 b(bac)o(k)h(one)h(c)o
-(haracter.)75 530 y Fg(C-f)168 b Fm(Mo)o(v)o(e)14 b(forw)o(ard)g(one)h
-(c)o(haracter.)75 608 y Ff(h)p 87 582 73 2 v 87 610 a
-Fe(DEL)p 87 618 V 158 608 a Ff(i)188 610 y Fm(or)244
-608 y Ff(h)p 256 582 159 2 v 256 610 a Fe(Bac)o(kspace)p
-256 618 V 412 608 a Ff(i)315 665 y Fm(Delete)h(the)f(c)o(haracter)g(to)
-f(the)h(left)h(of)f(the)g(cursor.)75 745 y Fg(C-d)168
-b Fm(Delete)16 b(the)f(c)o(haracter)g(underneath)h(the)f(cursor.)75
-825 y(Prin)o(ting)h(c)o(haracters)315 880 y(Insert)f(the)h(c)o
-(haracter)e(in)o(to)h(the)h(line)h(at)d(the)h(cursor.)75
-961 y Fg(C-_)g Fm(or)f Fg(C-x)h(C-u)315 1015 y Fm(Undo)i(the)g(last)f
-(editing)i(command.)25 b(Y)l(ou)17 b(can)g(undo)g(all)g(the)g(w)o(a)o
-(y)f(bac)o(k)h(to)f(an)g(empt)o(y)315 1070 y(line.)75
-1151 y(\(Dep)q(ending)i(on)f(y)o(our)g(con\014guration,)g(the)863
-1149 y Ff(h)p 875 1123 V 875 1151 a Fe(Bac)o(kspace)p
-875 1159 V 1032 1149 a Ff(i)1063 1151 y Fm(k)o(ey)g(b)q(e)h(set)f(to)f
-(delete)i(the)f(c)o(haracter)g(to)f(the)75 1206 y(left)h(of)f(the)h
-(cursor)f(and)g(the)596 1204 y Ff(h)p 608 1178 73 2 v
-608 1206 a Fe(DEL)p 608 1213 V 679 1204 a Ff(i)710 1206
-y Fm(k)o(ey)h(set)f(to)g(delete)h(the)g(c)o(haracter)f(underneath)h
-(the)g(cursor,)f(lik)o(e)75 1260 y Fg(C-d)p Fm(,)e(rather)h(than)g(the)
-g(c)o(haracter)g(to)f(the)i(left)f(of)g(the)g(cursor.\))75
-1374 y Fb(1.2.2)30 b(Readline)20 b(Mo)n(v)n(emen)n(t)i(Commands)137
-1471 y Fm(The)14 b(ab)q(o)o(v)o(e)e(table)i(describ)q(es)g(the)g(most)e
-(basic)i(k)o(eystrok)o(es)d(that)i(y)o(ou)g(need)h(in)f(order)g(to)g
-(do)g(editing)75 1526 y(of)f(the)h(input)h(line.)21 b(F)l(or)12
-b(y)o(our)g(con)o(v)o(enience,)i(man)o(y)f(other)f(commands)h(ha)o(v)o
-(e)f(b)q(een)i(added)f(in)h(addition)75 1580 y(to)h Fg(C-b)p
-Fm(,)h Fg(C-f)p Fm(,)f Fg(C-d)p Fm(,)g(and)522 1578 y
-Ff(h)p 534 1552 V 534 1580 a Fe(DEL)p 534 1588 V 605
-1578 a Ff(i)619 1580 y Fm(.)23 b(Here)16 b(are)g(some)f(commands)h(for)
-f(mo)o(ving)h(more)g(rapidly)h(ab)q(out)f(the)75 1635
-y(line.)75 1716 y Fg(C-a)168 b Fm(Mo)o(v)o(e)14 b(to)h(the)g(start)f
-(of)h(the)g(line.)75 1796 y Fg(C-e)168 b Fm(Mo)o(v)o(e)14
-b(to)h(the)g(end)h(of)f(the)g(line.)75 1876 y Fg(M-f)168
-b Fm(Mo)o(v)o(e)14 b(forw)o(ard)g(a)h(w)o(ord,)f(where)i(a)e(w)o(ord)h
-(is)h(comp)q(osed)f(of)g(letters)g(and)h(digits.)75 1957
-y Fg(M-b)168 b Fm(Mo)o(v)o(e)14 b(bac)o(kw)o(ard)h(a)g(w)o(ord.)75
-2037 y Fg(C-l)168 b Fm(Clear)15 b(the)h(screen,)f(reprin)o(ting)h(the)f
-(curren)o(t)g(line)i(at)e(the)g(top.)137 2118 y(Notice)e(ho)o(w)f
-Fg(C-f)g Fm(mo)o(v)o(es)f(forw)o(ard)g(a)h(c)o(haracter,)g(while)i
-Fg(M-f)e Fm(mo)o(v)o(es)f(forw)o(ard)g(a)h(w)o(ord.)18
-b(It)13 b(is)g(a)f(lo)q(ose)75 2173 y(con)o(v)o(en)o(tion)j(that)f(con)
-o(trol)h(k)o(eystrok)o(es)f(op)q(erate)h(on)f(c)o(haracters)h(while)h
-(meta)e(k)o(eystrok)o(es)g(op)q(erate)h(on)75 2227 y(w)o(ords.)75
-2341 y Fb(1.2.3)30 b(Readline)20 b(Killing)h(Commands)137
-2438 y Fc(Killing)26 b Fm(text)18 b(means)g(to)g(delete)i(the)f(text)f
-(from)g(the)h(line,)i(but)d(to)g(sa)o(v)o(e)g(it)h(a)o(w)o(a)o(y)e(for)
-h(later)h(use,)75 2493 y(usually)f(b)o(y)f Fc(y)o(anking)22
-b Fm(\(re-inserting\))17 b(it)g(bac)o(k)g(in)o(to)g(the)h(line.)27
-b(\(`Cut')15 b(and)j(`paste')e(are)g(more)h(recen)o(t)75
-2547 y(jargon)d(for)h(`kill')h(and)g(`y)o(ank'.\))137
-2615 y(If)g(the)f(description)h(for)f(a)g(command)g(sa)o(ys)f(that)h
-(it)g(`kills')h(text,)e(then)i(y)o(ou)f(can)g(b)q(e)h(sure)f(that)f(y)o
-(ou)75 2670 y(can)h(get)g(the)g(text)g(bac)o(k)g(in)h(a)f(di\013eren)o
-(t)g(\(or)g(the)g(same\))g(place)h(later.)p eop
-%%Page: 3 5
-3 4 bop 75 -58 a Fm(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077
-b(3)137 149 y(When)12 b(y)o(ou)g(use)g(a)f(kill)i(command,)f(the)g
-(text)f(is)h(sa)o(v)o(ed)f(in)i(a)e Fc(kill-ring)p Fm(.)21
-b(An)o(y)12 b(n)o(um)o(b)q(er)g(of)f(consecutiv)o(e)75
-204 y(kills)17 b(sa)o(v)o(e)e(all)h(of)f(the)h(killed)i(text)d
-(together,)f(so)h(that)g(when)h(y)o(ou)f(y)o(ank)g(it)h(bac)o(k,)f(y)o
-(ou)g(get)g(it)h(all.)22 b(The)75 259 y(kill)c(ring)f(is)f(not)g(line)i
-(sp)q(eci\014c;)g(the)e(text)g(that)f(y)o(ou)h(killed)j(on)d(a)g
-(previously)h(t)o(yp)q(ed)g(line)h(is)e(a)o(v)m(ailable)75
-314 y(to)f(b)q(e)g(y)o(ank)o(ed)g(bac)o(k)h(later,)e(when)i(y)o(ou)f
-(are)g(t)o(yping)g(another)g(line.)137 380 y(Here)h(is)f(the)h(list)g
-(of)e(commands)h(for)g(killing)j(text.)75 458 y Fg(C-k)168
-b Fm(Kill)17 b(the)f(text)e(from)h(the)g(curren)o(t)g(cursor)g(p)q
-(osition)h(to)f(the)g(end)h(of)f(the)g(line.)75 535 y
-Fg(M-d)168 b Fm(Kill)15 b(from)e(the)g(cursor)g(to)f(the)i(end)g(of)e
-(the)i(curren)o(t)f(w)o(ord,)f(or,)h(if)g(b)q(et)o(w)o(een)h(w)o(ords,)
-e(to)h(the)315 590 y(end)j(of)f(the)g(next)g(w)o(ord.)k(W)l(ord)c(b)q
-(oundaries)i(are)e(the)g(same)g(as)g(those)f(used)i(b)o(y)f
-Fg(M-f)p Fm(.)75 668 y Fg(M-)123 666 y Ff(h)p 135 640
-73 2 v 135 668 a Fe(DEL)p 135 675 V 206 666 a Ff(i)315
-668 y Fm(Kill)i(from)e(the)g(cursor)g(the)h(start)e(of)h(the)g(curren)o
-(t)g(w)o(ord,)f(or,)h(if)g(b)q(et)o(w)o(een)h(w)o(ords,)e(to)h(the)315
-723 y(start)j(of)h(the)g(previous)h(w)o(ord.)31 b(W)l(ord)19
-b(b)q(oundaries)h(are)f(the)h(same)e(as)h(those)g(used)h(b)o(y)315
-777 y Fg(M-b)p Fm(.)75 855 y Fg(C-w)168 b Fm(Kill)18
-b(from)d(the)g(cursor)h(to)f(the)g(previous)i(whitespace.)22
-b(This)16 b(is)g(di\013eren)o(t)g(than)f Fg(M-)1777 853
-y Ff(h)p 1789 827 V 1789 855 a Fe(DEL)p 1789 863 V 1860
-853 a Ff(i)315 910 y Fm(b)q(ecause)h(the)f(w)o(ord)g(b)q(oundaries)h
-(di\013er.)137 987 y(Here)21 b(is)h(ho)o(w)e(to)g Fc(y)o(ank)j
-Fm(the)e(text)f(bac)o(k)h(in)o(to)g(the)f(line.)39 b(Y)l(anking)21
-b(means)g(to)f(cop)o(y)h(the)g(most-)75 1042 y(recen)o(tly-killed)d
-(text)d(from)f(the)i(kill)h(bu\013er.)75 1120 y Fg(C-y)168
-b Fm(Y)l(ank)15 b(the)h(most)e(recen)o(tly)i(killed)h(text)e(bac)o(k)g
-(in)o(to)g(the)h(bu\013er)f(at)f(the)i(cursor.)75 1198
-y Fg(M-y)168 b Fm(Rotate)16 b(the)h(kill-ring,)j(and)d(y)o(ank)g(the)h
-(new)f(top.)26 b(Y)l(ou)17 b(can)h(only)g(do)f(this)h(if)f(the)h(prior)
-315 1252 y(command)d(is)h Fg(C-y)f Fm(or)f Fg(M-y)p Fm(.)75
-1361 y Fb(1.2.4)30 b(Readline)20 b(Argumen)n(ts)137 1457
-y Fm(Y)l(ou)15 b(can)g(pass)f(n)o(umeric)i(argumen)o(ts)e(to)g
-(Readline)h(commands.)20 b(Sometimes)15 b(the)g(argumen)o(t)e(acts)75
-1511 y(as)20 b(a)f(rep)q(eat)i(coun)o(t,)f(other)g(times)g(it)h(is)f
-(the)g Fd(sign)j Fm(of)c(the)h(argumen)o(t)g(that)f(is)i(signi\014can)o
-(t.)35 b(If)20 b(y)o(ou)75 1566 y(pass)d(a)f(negativ)o(e)h(argumen)o(t)
-f(to)g(a)g(command)h(whic)o(h)h(normally)f(acts)f(in)i(a)e(forw)o(ard)g
-(direction,)i(that)75 1621 y(command)g(will)h(act)e(in)i(a)e(bac)o(kw)o
-(ard)g(direction.)28 b(F)l(or)17 b(example,)i(to)e(kill)j(text)d(bac)o
-(k)g(to)g(the)h(start)e(of)75 1676 y(the)f(line,)i(y)o(ou)e(migh)o(t)g
-(t)o(yp)q(e)g(`)p Fl(M--)f(C-k)p Fm('.)137 1742 y(The)h(general)f(w)o
-(a)o(y)f(to)h(pass)g(n)o(umeric)h(argumen)o(ts)e(to)g(a)h(command)g(is)
-h(to)e(t)o(yp)q(e)h(meta)g(digits)h(b)q(efore)75 1797
-y(the)h(command.)k(If)c(the)f(\014rst)g(`digit')h(t)o(yp)q(ed)f(is)h(a)
-g(min)o(us)g(sign)g(\(`)p Fl(-)p Fm('\),)d(then)j(the)f(sign)h(of)f
-(the)h(argumen)o(t)75 1852 y(will)21 b(b)q(e)f(negativ)o(e.)31
-b(Once)20 b(y)o(ou)f(ha)o(v)o(e)g(t)o(yp)q(ed)g(one)g(meta)g(digit)h
-(to)e(get)h(the)g(argumen)o(t)f(started,)h(y)o(ou)75
-1906 y(can)c(t)o(yp)q(e)f(the)h(remainder)g(of)f(the)g(digits,)h(and)g
-(then)g(the)f(command.)20 b(F)l(or)13 b(example,)i(to)f(giv)o(e)h(the)f
-Fg(C-d)75 1961 y Fm(command)19 b(an)f(argumen)o(t)g(of)g(10,)h(y)o(ou)f
-(could)i(t)o(yp)q(e)f(`)p Fl(M-1)14 b(0)h(C-d)p Fm(',)k(whic)o(h)g
-(will)h(delete)g(the)f(next)g(ten)75 2016 y(c)o(haracters)14
-b(on)i(the)f(input)h(line.)75 2125 y Fb(1.2.5)30 b(Searc)n(hing)21
-b(for)f(Commands)h(in)f(the)h(History)137 2220 y Fm(Readline)d(pro)o
-(vides)e(commands)g(for)g(searc)o(hing)g(through)g(the)g(command)g
-(history)g(for)g(lines)i(con-)75 2275 y(taining)e(a)f(sp)q(eci\014ed)i
-(string.)j(There)c(are)e(t)o(w)o(o)g(searc)o(h)h(mo)q(des:)20
-b Fc(incremen)o(tal)e Fm(and)e Fc(non-incremen)o(tal)p
-Fm(.)137 2341 y(Incremen)o(tal)e(searc)o(hes)f(b)q(egin)h(b)q(efore)f
-(the)g(user)g(has)g(\014nished)h(t)o(yping)f(the)g(searc)o(h)g(string.)
-19 b(As)13 b(eac)o(h)75 2396 y(c)o(haracter)k(of)g(the)h(searc)o(h)g
-(string)f(is)h(t)o(yp)q(ed,)h(Readline)g(displa)o(ys)f(the)g(next)g(en)
-o(try)f(from)g(the)h(history)75 2451 y(matc)o(hing)12
-b(the)g(string)g(t)o(yp)q(ed)g(so)g(far.)18 b(An)13 b(incremen)o(tal)g
-(searc)o(h)f(requires)g(only)h(as)f(man)o(y)f(c)o(haracters)g(as)75
-2506 y(needed)16 b(to)d(\014nd)j(the)e(desired)i(history)e(en)o(try)l
-(.)19 b(T)l(o)c(searc)o(h)f(bac)o(kw)o(ard)f(in)j(the)e(history)g(for)g
-(a)g(particular)75 2560 y(string,)g(t)o(yp)q(e)h Fg(C-r)p
-Fm(.)k(T)o(yping)d Fg(C-s)e Fm(searc)o(hes)h(forw)o(ard)e(through)h
-(the)h(history)l(.)20 b(The)15 b(c)o(haracters)f(presen)o(t)75
-2615 y(in)20 b(the)f(v)m(alue)h(of)f(the)g Fl(isearch-terminators)d
-Fm(v)m(ariable)k(are)f(used)h(to)e(terminate)h(an)g(incremen)o(tal)75
-2670 y(searc)o(h.)31 b(If)19 b(that)f(v)m(ariable)i(has)f(not)f(b)q
-(een)i(assigned)g(a)e(v)m(alue,)j(the)1289 2668 y Ff(h)p
-1301 2642 70 2 v 1301 2670 a Fe(ESC)p 1301 2678 V 1368
-2668 a Ff(i)1402 2670 y Fm(and)e Fg(C-J)f Fm(c)o(haracters)g(will)p
-eop
-%%Page: 4 6
-4 5 bop 75 -58 a Fm(4)1322 b(GNU)15 b(Readline)h(Library)75
-149 y(terminate)21 b(an)g(incremen)o(tal)i(searc)o(h.)37
-b Fg(C-g)21 b Fm(will)i(ab)q(ort)e(an)g(incremen)o(tal)h(searc)o(h)f
-(and)g(restore)g(the)75 204 y(original)16 b(line.)21
-b(When)15 b(the)f(searc)o(h)g(is)h(terminated,)g(the)f(history)h(en)o
-(try)f(con)o(taining)h(the)g(searc)o(h)f(string)75 259
-y(b)q(ecomes)i(the)f(curren)o(t)g(line.)137 325 y(T)l(o)g(\014nd)i
-(other)e(matc)o(hing)g(en)o(tries)h(in)h(the)e(history)h(list,)g(t)o
-(yp)q(e)f Fg(C-r)g Fm(or)g Fg(C-s)g Fm(as)h(appropriate.)k(This)75
-380 y(will)15 b(searc)o(h)e(bac)o(kw)o(ard)f(or)g(forw)o(ard)g(in)i
-(the)f(history)g(for)g(the)g(next)g(en)o(try)g(matc)o(hing)g(the)g
-(searc)o(h)g(string)75 434 y(t)o(yp)q(ed)19 b(so)g(far.)30
-b(An)o(y)19 b(other)f(k)o(ey)h(sequence)h(b)q(ound)g(to)e(a)h(Readline)
-h(command)e(will)j(terminate)e(the)75 489 y(searc)o(h)10
-b(and)h(execute)g(that)f(command.)18 b(F)l(or)10 b(instance,)i(a)1063
-487 y Ff(h)p 1076 461 76 2 v 1076 489 a Fe(RET)p 1076
-497 V 1149 487 a Ff(i)1174 489 y Fm(will)g(terminate)f(the)g(searc)o(h)
-f(and)h(accept)75 544 y(the)k(line,)h(thereb)o(y)f(executing)g(the)g
-(command)g(from)f(the)g(history)h(list.)20 b(A)15 b(mo)o(v)o(emen)o(t)f
-(command)g(will)75 599 y(terminate)h(the)g(searc)o(h,)g(mak)o(e)g(the)g
-(last)g(line)i(found)f(the)f(curren)o(t)g(line,)h(and)g(b)q(egin)g
-(editing.)137 665 y(Readline)j(remem)o(b)q(ers)e(the)h(last)f(incremen)
-o(tal)i(searc)o(h)e(string.)27 b(If)17 b(t)o(w)o(o)f
-Fg(C-r)p Fm(s)h(are)g(t)o(yp)q(ed)h(without)75 719 y(an)o(y)g(in)o
-(terv)o(ening)h(c)o(haracters)f(de\014ning)h(a)f(new)h(searc)o(h)f
-(string,)g(an)o(y)g(remem)o(b)q(ered)h(searc)o(h)f(string)g(is)75
-774 y(used.)137 840 y(Non-incremen)o(tal)25 b(searc)o(hes)e(read)h(the)
-f(en)o(tire)h(searc)o(h)f(string)g(b)q(efore)h(starting)f(to)f(searc)o
-(h)i(for)75 895 y(matc)o(hing)d(history)h(lines.)39 b(The)22
-b(searc)o(h)f(string)g(ma)o(y)g(b)q(e)h(t)o(yp)q(ed)f(b)o(y)h(the)f
-(user)h(or)e(b)q(e)i(part)f(of)g(the)75 950 y(con)o(ten)o(ts)15
-b(of)f(the)i(curren)o(t)f(line.)75 1074 y Fk(1.3)33 b(Readline)23
-b(Init)h(File)137 1169 y Fm(Although)f(the)g(Readline)h(library)f
-(comes)g(with)g(a)f(set)g(of)g(Emacs-lik)o(e)i(k)o(eybindings)g
-(installed)75 1224 y(b)o(y)d(default,)h(it)f(is)h(p)q(ossible)g(to)e
-(use)i(a)e(di\013eren)o(t)h(set)g(of)f(k)o(eybindings.)39
-b(An)o(y)20 b(user)h(can)g(customize)75 1278 y(programs)15
-b(that)h(use)g(Readline)i(b)o(y)e(putting)g(commands)g(in)i(an)e
-Fc(inputrc)k Fm(\014le,)d(con)o(v)o(en)o(tionally)g(in)g(his)75
-1333 y(home)g(directory)l(.)24 b(The)17 b(name)g(of)f(this)h(\014le)g
-(is)g(tak)o(en)g(from)e(the)i(v)m(alue)h(of)e(the)h(en)o(vironmen)o(t)g
-(v)m(ariable)75 1388 y Fl(INPUTRC)p Fm(.)i(If)c(that)g(v)m(ariable)h
-(is)g(unset,)f(the)g(default)h(is)g(`)p Fl(~/.inputrc)p
-Fm('.)137 1454 y(When)f(a)g(program)f(whic)o(h)h(uses)g(the)g(Readline)
-h(library)g(starts)d(up,)i(the)g(init)h(\014le)g(is)f(read,)g(and)g
-(the)75 1509 y(k)o(ey)g(bindings)i(are)e(set.)137 1574
-y(In)f(addition,)h(the)e Fl(C-x)i(C-r)e Fm(command)g(re-reads)h(this)g
-(init)g(\014le,)h(th)o(us)e(incorp)q(orating)h(an)o(y)f(c)o(hanges)75
-1629 y(that)h(y)o(ou)h(migh)o(t)g(ha)o(v)o(e)g(made)g(to)g(it.)75
-1737 y Fb(1.3.1)30 b(Readline)20 b(Init)g(File)h(Syn)n(tax)137
-1832 y Fm(There)c(are)g(only)g(a)g(few)f(basic)i(constructs)e(allo)o(w)
-o(ed)i(in)f(the)g(Readline)h(init)g(\014le.)26 b(Blank)18
-b(lines)g(are)75 1886 y(ignored.)36 b(Lines)22 b(b)q(eginning)h(with)d
-(a)h(`)p Fl(#)p Fm(')e(are)h(commen)o(ts.)35 b(Lines)22
-b(b)q(eginning)h(with)e(a)f(`)p Fl($)p Fm(')f(indicate)75
-1941 y(conditional)c(constructs)f(\(see)g(Section)g(1.3.2)f
-([Conditional)h(Init)h(Constructs],)e(page)h(9\).)k(Other)c(lines)75
-1996 y(denote)h(v)m(ariable)i(settings)e(and)h(k)o(ey)f(bindings.)75
-2073 y(V)l(ariable)h(Settings)315 2128 y(Y)l(ou)k(can)h(mo)q(dify)g
-(the)f(run-time)h(b)q(eha)o(vior)g(of)e(Readline)j(b)o(y)e(altering)h
-(the)f(v)m(alues)h(of)315 2182 y(v)m(ariables)d(in)g(Readline)g(using)f
-(the)g Fl(set)g Fm(command)f(within)i(the)f(init)h(\014le.)26
-b(The)17 b(syn)o(tax)315 2237 y(is)f(simple:)435 2300
-y Fl(set)23 b Fc(v)m(ariable)28 b(v)m(alue)315 2366 y
-Fm(Here,)14 b(for)f(example,)h(is)g(ho)o(w)f(to)g(c)o(hange)h(from)f
-(the)h(default)g(Emacs-lik)o(e)h(k)o(ey)e(binding)j(to)315
-2421 y(use)g Fl(vi)e Fm(line)j(editing)g(commands:)435
-2484 y Fl(set)23 b(editing-mode)g(vi)315 2549 y Fm(V)l(ariable)c(names)
-e(and)h(v)m(alues,)h(where)e(appropriate,)h(are)f(recognized)i(without)
-e(regard)315 2604 y(to)e(case.)315 2670 y(A)g(great)g(deal)g(of)g
-(run-time)h(b)q(eha)o(vior)g(is)g(c)o(hangeable)g(with)f(the)h(follo)o
-(wing)f(v)m(ariables.)p eop
-%%Page: 5 7
-5 6 bop 75 -58 a Fm(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077
-b(5)315 149 y Fl(bell-style)555 204 y Fm(Con)o(trols)21
-b(what)h(happ)q(ens)h(when)f(Readline)h(w)o(an)o(ts)e(to)g(ring)i(the)f
-(termi-)555 259 y(nal)d(b)q(ell.)32 b(If)19 b(set)f(to)g(`)p
-Fl(none)p Fm(',)g(Readline)i(nev)o(er)f(rings)g(the)f(b)q(ell.)32
-b(If)19 b(set)g(to)555 314 y(`)p Fl(visible)p Fm(',)c(Readline)i(uses)g
-(a)f(visible)j(b)q(ell)g(if)e(one)f(is)h(a)o(v)m(ailable.)26
-b(If)16 b(set)h(to)555 369 y(`)p Fl(audible)p Fm(')g(\(the)h
-(default\),)i(Readline)g(attempts)e(to)g(ring)h(the)g(terminal's)555
-423 y(b)q(ell.)315 504 y Fl(comment-begin)555 559 y Fm(The)c(string)f
-(to)g(insert)i(at)d(the)i(b)q(eginning)i(of)d(the)h(line)h(when)f(the)g
-Fl(insert-)555 614 y(comment)f Fm(command)h(is)h(executed.)21
-b(The)15 b(default)h(v)m(alue)g(is)g Fl("#")p Fm(.)315
-694 y Fl(completion-ignore-case)555 749 y Fm(If)e(set)f(to)g(`)p
-Fl(on)p Fm(',)g(Readline)i(p)q(erforms)e(\014lename)i(matc)o(hing)f
-(and)g(completion)555 804 y(in)i(a)f(case-insensitiv)o(e)i(fashion.)k
-(The)15 b(default)h(v)m(alue)g(is)g(`)p Fl(off)p Fm('.)315
-884 y Fl(completion-query-items)555 939 y Fm(The)d(n)o(um)o(b)q(er)h
-(of)e(p)q(ossible)j(completions)g(that)d(determines)i(when)g(the)f
-(user)555 994 y(is)21 b(ask)o(ed)g(whether)g(he)h(w)o(an)o(ts)d(to)i
-(see)g(the)g(list)h(of)e(p)q(ossibilitie)q(s.)40 b(If)21
-b(the)555 1049 y(n)o(um)o(b)q(er)14 b(of)f(p)q(ossible)i(completions)f
-(is)g(greater)f(than)g(this)h(v)m(alue,)h(Readline)555
-1104 y(will)g(ask)e(the)g(user)h(whether)f(or)g(not)g(he)g(wishes)h(to)
-f(view)h(them;)f(otherwise,)555 1158 y(they)f(are)g(simply)i(listed.)20
-b(This)13 b(v)m(ariable)g(m)o(ust)f(b)q(e)h(set)f(to)f(an)h(in)o(teger)
-h(v)m(alue)555 1213 y(greater)h(than)h(or)g(equal)h(to)f(0.)k(The)d
-(default)f(limit)i(is)f Fl(100)p Fm(.)315 1294 y Fl(convert-meta)555
-1348 y Fm(If)11 b(set)g(to)g(`)p Fl(on)p Fm(',)f(Readline)i(will)h(con)
-o(v)o(ert)d(c)o(haracters)h(with)g(the)g(eigh)o(th)h(bit)f(set)555
-1403 y(to)f(an)h Fh(asci)q(i)e Fm(k)o(ey)i(sequence)g(b)o(y)g
-(stripping)h(the)e(eigh)o(th)h(bit)h(and)e(pre\014xing)i(an)555
-1456 y Ff(h)p 567 1430 70 2 v 567 1458 a Fe(ESC)p 567
-1466 V 634 1456 a Ff(i)666 1458 y Fm(c)o(haracter,)k(con)o(v)o(erting)h
-(them)g(to)f(a)h(meta-pre\014xed)g(k)o(ey)g(sequence.)555
-1513 y(The)e(default)h(v)m(alue)h(is)e(`)p Fl(on)p Fm('.)315
-1593 y Fl(disable-completion)555 1648 y Fm(If)k(set)f(to)f(`)p
-Fl(On)p Fm(',)h(Readline)i(will)g(inhibit)g(w)o(ord)e(completion.)30
-b(Completion)555 1703 y(c)o(haracters)12 b(will)j(b)q(e)f(inserted)g
-(in)o(to)f(the)g(line)h(as)f(if)h(they)f(had)g(b)q(een)h(mapp)q(ed)555
-1758 y(to)h Fl(self-insert)p Fm(.)j(The)d(default)h(is)g(`)p
-Fl(off)p Fm('.)315 1838 y Fl(editing-mode)555 1893 y
-Fm(The)f Fl(editing-mode)d Fm(v)m(ariable)k(con)o(trols)e(whic)o(h)h
-(default)g(set)f(of)g(k)o(ey)g(bind-)555 1948 y(ings)f(is)g(used.)20
-b(By)12 b(default,)i(Readline)f(starts)f(up)h(in)g(Emacs)f(editing)i
-(mo)q(de,)555 2003 y(where)h(the)f(k)o(eystrok)o(es)g(are)g(most)g
-(similar)i(to)d(Emacs.)20 b(This)15 b(v)m(ariable)h(can)555
-2058 y(b)q(e)g(set)f(to)f(either)i(`)p Fl(emacs)p Fm(')e(or)h(`)p
-Fl(vi)p Fm('.)315 2138 y Fl(enable-keypad)555 2193 y
-Fm(When)d(set)f(to)h(`)p Fl(on)p Fm(',)e(Readline)j(will)h(try)d(to)g
-(enable)i(the)f(application)h(k)o(eypad)555 2248 y(when)h(it)f(is)h
-(called.)21 b(Some)13 b(systems)g(need)h(this)g(to)f(enable)h(the)g
-(arro)o(w)e(k)o(eys.)555 2303 y(The)j(default)h(is)g(`)p
-Fl(off)p Fm('.)315 2383 y Fl(expand-tilde)555 2438 y
-Fm(If)e(set)g(to)f(`)p Fl(on)p Fm(',)f(tilde)k(expansion)e(is)h(p)q
-(erformed)f(when)g(Readline)h(attempts)555 2493 y(w)o(ord)g
-(completion.)21 b(The)15 b(default)h(is)f(`)p Fl(off)p
-Fm('.)555 2560 y(If)g(set)g(to)f(`)p Fl(on)p Fm(',)g(the)g(history)h
-(co)q(de)h(attempts)e(to)g(place)i(p)q(oin)o(t)f(at)f(the)h(same)555
-2615 y(lo)q(cation)20 b(on)f(eac)o(h)g(history)h(line)g(retriv)o(ed)g
-(with)f Fl(previous-history)e Fm(or)555 2670 y Fl(next-history)p
-Fm(.)p eop
-%%Page: 6 8
-6 7 bop 75 -58 a Fm(6)1322 b(GNU)15 b(Readline)h(Library)315
-149 y Fl(horizontal-scroll-mode)555 204 y Fm(This)j(v)m(ariable)g(can)f
-(b)q(e)g(set)g(to)f(either)i(`)p Fl(on)p Fm(')e(or)g(`)p
-Fl(off)p Fm('.)27 b(Setting)19 b(it)f(to)f(`)p Fl(on)p
-Fm(')555 259 y(means)c(that)f(the)i(text)e(of)h(the)g(lines)i(b)q(eing)
-f(edited)g(will)h(scroll)f(horizon)o(tally)555 314 y(on)i(a)f(single)i
-(screen)g(line)g(when)g(they)f(are)f(longer)h(than)g(the)g(width)g(of)g
-(the)555 369 y(screen,)e(instead)f(of)g(wrapping)g(on)o(to)f(a)h(new)g
-(screen)h(line.)21 b(By)13 b(default,)h(this)555 423
-y(v)m(ariable)j(is)e(set)g(to)g(`)p Fl(off)p Fm('.)315
-506 y Fl(input-meta)555 560 y Fm(If)h(set)f(to)g(`)p
-Fl(on)p Fm(',)f(Readline)j(will)h(enable)e(eigh)o(t-bit)h(input)f(\(it)
-g(will)h(not)e(clear)555 615 y(the)20 b(eigh)o(th)g(bit)g(in)h(the)f(c)
-o(haracters)f(it)h(reads\),)g(regardless)g(of)g(what)f(the)555
-670 y(terminal)i(claims)g(it)f(can)g(supp)q(ort.)34 b(The)20
-b(default)h(v)m(alue)g(is)g(`)p Fl(off)p Fm('.)33 b(The)555
-725 y(name)15 b Fl(meta-flag)f Fm(is)i(a)f(synon)o(ym)g(for)f(this)i(v)
-m(ariable.)315 807 y Fl(isearch-terminators)555 862 y
-Fm(The)26 b(string)g(of)f(c)o(haracters)g(that)g(should)i(terminate)f
-(an)g(incremen)o(tal)555 917 y(searc)o(h)12 b(without)h(subsequen)o
-(tly)g(executing)h(the)e(c)o(haracter)g(as)g(a)g(command)555
-971 y(\(see)22 b(Section)h(1.2.5)e([Searc)o(hing],)j(page)e(3\).)40
-b(If)23 b(this)g(v)m(ariable)g(has)f(not)555 1026 y(b)q(een)17
-b(giv)o(en)f(a)g(v)m(alue,)g(the)g(c)o(haracters)1247
-1024 y Ff(h)p 1259 998 70 2 v 1259 1026 a Fe(ESC)p 1259
-1034 V 1326 1024 a Ff(i)1357 1026 y Fm(and)g Fg(C-J)f
-Fm(will)i(terminate)f(an)555 1081 y(incremen)o(tal)g(searc)o(h.)315
-1163 y Fl(keymap)96 b Fm(Sets)19 b(Readline's)i(idea)f(of)f(the)g
-(curren)o(t)h(k)o(eymap)f(for)f(k)o(ey)i(binding)h(com-)555
-1218 y(mands.)41 b(Acceptable)23 b Fl(keymap)f Fm(names)g(are)f
-Fl(emacs)p Fm(,)i Fl(emacs-standard)p Fm(,)555 1273 y
-Fl(emacs-meta)p Fm(,)49 b Fl(emacs-ctlx)p Fm(,)g Fl(vi)p
-Fm(,)h Fl(vi-move)p Fm(,)f Fl(vi-command)p Fm(,)g(and)555
-1328 y Fl(vi-insert)p Fm(.)31 b Fl(vi)20 b Fm(is)g(equiv)m(alen)o(t)h
-(to)e Fl(vi-command)p Fm(;)g Fl(emacs)g Fm(is)h(equiv)m(alen)o(t)555
-1382 y(to)15 b Fl(emacs-standard)p Fm(.)20 b(The)d(default)f(v)m(alue)h
-(is)g Fl(emacs)p Fm(.)k(The)16 b(v)m(alue)h(of)f(the)555
-1437 y Fl(editing-mode)e Fm(v)m(ariable)i(also)f(a\013ects)g(the)g
-(default)h(k)o(eymap.)315 1519 y Fl(mark-directories)555
-1574 y Fm(If)j(set)g(to)g(`)p Fl(on)p Fm(',)f(completed)i(directory)g
-(names)f(ha)o(v)o(e)f(a)h(slash)h(app)q(ended.)555 1629
-y(The)15 b(default)h(is)g(`)p Fl(on)p Fm('.)315 1711
-y Fl(mark-modified-lines)555 1766 y Fm(This)j(v)m(ariable,)g(when)g
-(set)e(to)h(`)p Fl(on)p Fm(',)f(causes)h(Readline)h(to)e(displa)o(y)i
-(an)f(as-)555 1821 y(terisk)f(\(`)p Fl(*)p Fm('\))e(at)i(the)f(start)g
-(of)h(history)f(lines)j(whic)o(h)e(ha)o(v)o(e)g(b)q(een)h(mo)q
-(di\014ed.)555 1875 y(This)e(v)m(ariable)g(is)g(`)p Fl(off)p
-Fm(')e(b)o(y)h(default.)315 1958 y Fl(mark-symlinked-directories)555
-2012 y Fm(If)23 b(set)f(to)f(`)p Fl(on)p Fm(',)i(completed)g(names)g
-(whic)o(h)g(are)f(sym)o(b)q(olic)i(links)f(to)f(di-)555
-2067 y(rectories)h(ha)o(v)o(e)g(a)g(slash)g(app)q(ended)i(\(sub)s(ject)
-e(to)f(the)i(v)m(alue)g(of)f Fl(mark-)555 2122 y(directories)p
-Fm(\).)18 b(The)d(default)h(is)g(`)p Fl(off)p Fm('.)315
-2204 y Fl(match-hidden-files)555 2259 y Fm(This)c(v)m(ariable,)h(when)e
-(set)g(to)g(`)p Fl(on)p Fm(',)f(causes)h(Readline)i(to)d(matc)o(h)h
-(\014les)h(whose)555 2314 y(names)22 b(b)q(egin)h(with)g(a)e(`)p
-Fl(.)p Fm(')h(\(hidden)h(\014les\))g(when)f(p)q(erforming)h(\014lename)
-555 2369 y(completion,)g(unless)f(the)f(leading)h(`)p
-Fl(.)p Fm(')e(is)h(supplied)i(b)o(y)e(the)f(user)h(in)h(the)555
-2423 y(\014lename)16 b(to)f(b)q(e)h(completed.)21 b(This)15
-b(v)m(ariable)i(is)f(`)p Fl(on)p Fm(')e(b)o(y)h(default.)315
-2506 y Fl(output-meta)555 2560 y Fm(If)j(set)f(to)g(`)p
-Fl(on)p Fm(',)g(Readline)i(will)h(displa)o(y)f(c)o(haracters)d(with)j
-(the)e(eigh)o(th)h(bit)555 2615 y(set)g(directly)i(rather)d(than)h(as)g
-(a)g(meta-pre\014xed)h(escap)q(e)g(sequence.)30 b(The)555
-2670 y(default)16 b(is)f(`)p Fl(off)p Fm('.)p eop
-%%Page: 7 9
-7 8 bop 75 -58 a Fm(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077
-b(7)315 149 y Fl(page-completions)555 204 y Fm(If)17
-b(set)g(to)f(`)p Fl(on)p Fm(',)g(Readline)i(uses)g(an)e(in)o(ternal)i
-Fl(more)p Fm(-lik)o(e)g(pager)f(to)f(displa)o(y)555 259
-y(a)g(screenful)h(of)f(p)q(ossible)i(completions)f(at)f(a)g(time.)23
-b(This)17 b(v)m(ariable)g(is)g(`)p Fl(on)p Fm(')555 314
-y(b)o(y)e(default.)315 395 y Fl(print-completions-horizont)o(ally)555
-450 y Fm(If)d(set)g(to)f(`)p Fl(on)p Fm(',)h(Readline)h(will)g(displa)o
-(y)h(completions)f(with)f(matc)o(hes)f(sorted)555 505
-y(horizon)o(tally)23 b(in)f(alphab)q(etical)i(order,)f(rather)e(than)g
-(do)o(wn)h(the)g(screen.)555 560 y(The)15 b(default)h(is)g(`)p
-Fl(off)p Fm('.)315 641 y Fl(show-all-if-ambiguous)555
-696 y Fm(This)g(alters)e(the)i(default)f(b)q(eha)o(vior)h(of)e(the)h
-(completion)h(functions.)21 b(If)15 b(set)555 751 y(to)e(`)p
-Fl(on)p Fm(',)g(w)o(ords)g(whic)o(h)h(ha)o(v)o(e)g(more)f(than)g(one)h
-(p)q(ossible)i(completion)f(cause)555 806 y(the)20 b(matc)o(hes)f(to)f
-(b)q(e)j(listed)f(immediately)h(instead)f(of)f(ringing)i(the)e(b)q
-(ell.)555 861 y(The)c(default)h(v)m(alue)h(is)e(`)p Fl(off)p
-Fm('.)315 942 y Fl(visible-stats)555 997 y Fm(If)h(set)g(to)f(`)p
-Fl(on)p Fm(',)g(a)h(c)o(haracter)f(denoting)h(a)g(\014le's)h(t)o(yp)q
-(e)f(is)g(app)q(ended)i(to)d(the)555 1052 y(\014lename)h(when)g
-(listing)h(p)q(ossible)g(completions.)j(The)c(default)g(is)f(`)p
-Fl(off)p Fm('.)75 1133 y(Key)h(Bindings)315 1188 y(The)21
-b(syn)o(tax)f(for)h(con)o(trolling)h(k)o(ey)f(bindings)h(in)g(the)f
-(init)h(\014le)g(is)g(simple.)39 b(First)20 b(y)o(ou)315
-1243 y(need)15 b(to)e(\014nd)h(the)g(name)g(of)g(the)f(command)h(that)f
-(y)o(ou)h(w)o(an)o(t)f(to)g(c)o(hange.)19 b(The)14 b(follo)o(wing)315
-1298 y(sections)k(con)o(tain)h(tables)f(of)f(the)h(command)g(name,)g
-(the)g(default)h(k)o(eybinding,)h(if)e(an)o(y)l(,)315
-1353 y(and)d(a)g(short)g(description)i(of)d(what)h(the)g(command)g(do)q
-(es.)315 1421 y(Once)k(y)o(ou)f(kno)o(w)f(the)h(name)g(of)g(the)g
-(command,)g(simply)h(place)g(on)f(a)f(line)j(in)f(the)f(init)315
-1476 y(\014le)g(the)f(name)g(of)f(the)h(k)o(ey)g(y)o(ou)f(wish)i(to)e
-(bind)i(the)f(command)g(to,)f(a)g(colon,)i(and)f(then)315
-1530 y(the)f(name)g(of)g(the)g(command.)22 b(The)16 b(name)g(of)g(the)g
-(k)o(ey)f(can)i(b)q(e)f(expressed)h(in)g(di\013eren)o(t)315
-1585 y(w)o(a)o(ys,)d(dep)q(ending)j(on)e(what)g(y)o(ou)g(\014nd)h(most)
-e(comfortable.)315 1653 y(In)19 b(addition)g(to)e(command)h(names,)g
-(readline)i(allo)o(ws)e(k)o(eys)g(to)f(b)q(e)i(b)q(ound)g(to)e(a)h
-(string)315 1708 y(that)c(is)i(inserted)g(when)g(the)f(k)o(ey)g(is)h
-(pressed)g(\(a)e Fc(macro)r Fm(\).)315 1790 y Fc(k)o(eyname)s
-Fm(:)19 b Fc(function-name)g Fm(or)c Fc(macro)555 1845
-y(k)o(eyname)i Fm(is)e(the)f(name)h(of)f(a)g(k)o(ey)g(sp)q(elled)j(out)
-d(in)h(English.)21 b(F)l(or)13 b(example:)675 1910 y
-Fl(Control-u:)22 b(universal-argument)675 1962 y(Meta-Rubout:)g
-(backward-kill-word)675 2014 y(Control-o:)g(">)i(output")555
-2082 y Fm(In)c(the)f(ab)q(o)o(v)o(e)g(example,)i Fg(C-u)e
-Fm(is)h(b)q(ound)g(to)f(the)g(function)h Fl(universal-)555
-2137 y(argument)p Fm(,)e Fg(M-DEL)h Fm(is)g(b)q(ound)h(to)e(the)h
-(function)h Fl(backward-kill-word)p Fm(,)555 2191 y(and)g
-Fg(C-o)f Fm(is)h(b)q(ound)g(to)f(run)h(the)f(macro)g(expressed)h(on)g
-(the)f(righ)o(t)h(hand)555 2246 y(side)c(\(that)e(is,)i(to)e(insert)i
-(the)f(text)g(`)p Fl(>)f(output)p Fm(')g(in)o(to)i(the)f(line\).)555
-2314 y(A)k(n)o(um)o(b)q(er)f(of)g(sym)o(b)q(olic)i(c)o(haracter)e
-(names)g(are)g(recognized)i(while)g(pro-)555 2369 y(cessing)13
-b(this)f(k)o(ey)g(binding)h(syn)o(tax:)18 b Fc(DEL)p
-Fm(,)11 b Fc(ESC)p Fm(,)h Fc(ESCAPE)p Fm(,)f Fc(LFD)p
-Fm(,)g Fc(NEW-)555 2424 y(LINE)p Fm(,)16 b Fc(RET)p Fm(,)e
-Fc(RETURN)p Fm(,)f Fc(R)o(UBOUT)p Fm(,)i Fc(SP)l(A)o(CE)p
-Fm(,)g Fc(SPC)p Fm(,)f(and)i Fc(T)l(AB)p Fm(.)315 2506
-y Fl(")p Fc(k)o(eyseq)q Fl(")p Fm(:)k Fc(function-name)e
-Fm(or)d Fc(macro)555 2560 y(k)o(eyseq)i Fm(di\013ers)e(from)g
-Fc(k)o(eyname)j Fm(ab)q(o)o(v)o(e)d(in)i(that)d(strings)i(denoting)g
-(an)f(en-)555 2615 y(tire)i(k)o(ey)g(sequence)h(can)f(b)q(e)g(sp)q
-(eci\014ed,)i(b)o(y)e(placing)h(the)f(k)o(ey)g(sequence)h(in)555
-2670 y(double)e(quotes.)j(Some)c Fh(gnu)g Fm(Emacs)f(st)o(yle)h(k)o(ey)
-g(escap)q(es)g(can)g(b)q(e)g(used,)g(as)p eop
-%%Page: 8 10
-8 9 bop 75 -58 a Fm(8)1322 b(GNU)15 b(Readline)h(Library)555
-149 y(in)i(the)f(follo)o(wing)g(example,)h(but)f(the)g(sp)q(ecial)i(c)o
-(haracter)d(names)h(are)f(not)555 204 y(recognized.)675
-270 y Fl("\\C-u":)23 b(universal-argument)675 322 y("\\C-x\\C-r":)f
-(re-read-init-file)675 373 y("\\e[11~":)h("Function)f(Key)i(1")555
-442 y Fm(In)33 b(the)f(ab)q(o)o(v)o(e)g(example,)37 b
-Fg(C-u)32 b Fm(is)h(again)f(b)q(ound)h(to)f(the)g(function)555
-497 y Fl(universal-argument)19 b Fm(\(just)j(as)f(it)h(w)o(as)f(in)i
-(the)f(\014rst)f(example\),)j(`)p Fg(C-x)555 551 y(C-r)p
-Fm(')c(is)h(b)q(ound)g(to)f(the)h(function)g Fl(re-read-init-file)p
-Fm(,)f(and)g(`)1731 549 y Ff(h)p 1743 523 70 2 v 1743
-551 a Fe(ESC)p 1743 559 V 1810 549 a Ff(i)15 b(h)p 1852
-523 10 2 v 1852 551 a Fe([)p 1852 560 V 1860 549 a Ff(i)555
-604 y(h)p 567 578 18 2 v 567 606 a Fe(1)p 567 614 V 583
-604 a Ff(i)g(h)p 625 578 V 625 606 a Fe(1)p 625 614 V
-640 604 a Ff(i)g(h)p 683 578 24 2 v 683 606 a Fl(~)p
-683 614 V 704 604 a Ff(i)719 606 y Fm(')g(is)h(b)q(ound)g(to)e(insert)i
-(the)f(text)g(`)p Fl(Function)f(Key)g(1)p Fm('.)315 688
-y(The)h(follo)o(wing)h Fh(gnu)e Fm(Emacs)h(st)o(yle)g(escap)q(e)h
-(sequences)g(are)e(a)o(v)m(ailable)j(when)e(sp)q(ecifying)315
-743 y(k)o(ey)g(sequences:)315 825 y Fg(\\C-)168 b Fm(con)o(trol)15
-b(pre\014x)315 907 y Fg(\\M-)168 b Fm(meta)15 b(pre\014x)315
-989 y Fg(\\e)192 b Fm(an)15 b(escap)q(e)h(c)o(haracter)315
-1071 y Fg(\\\\)192 b Fm(bac)o(kslash)315 1152 y Fg(\\)p
-Fl(")555 1150 y Ff(h)p 567 1124 V 567 1152 a Fl(")p 567
-1160 V 589 1150 a Ff(i)604 1152 y Fm(,)15 b(a)f(double)j(quotation)e
-(mark)315 1234 y Fg(\\')555 1232 y Ff(h)p 567 1206 10
-2 v 567 1234 a Fe(')p 567 1242 V 575 1232 a Ff(i)590
-1234 y Fm(,)g(a)f(single)j(quote)e(or)g(ap)q(ostrophe)315
-1316 y(In)f(addition)h(to)f(the)f Fh(gnu)h Fm(Emacs)g(st)o(yle)f(escap)
-q(e)i(sequences,)g(a)e(second)i(set)e(of)h(bac)o(kslash)315
-1371 y(escap)q(es)i(is)g(a)o(v)m(ailable:)315 1453 y
-Fl(\\a)192 b Fm(alert)15 b(\(b)q(ell\))315 1535 y Fl(\\b)192
-b Fm(bac)o(kspace)315 1617 y Fl(\\d)g Fm(delete)315 1699
-y Fl(\\f)g Fm(form)14 b(feed)315 1781 y Fl(\\n)192 b
-Fm(newline)315 1862 y Fl(\\r)g Fm(carriage)15 b(return)315
-1944 y Fl(\\t)192 b Fm(horizon)o(tal)16 b(tab)315 2026
-y Fl(\\v)192 b Fm(v)o(ertical)16 b(tab)315 2108 y Fl(\\)p
-Fc(nnn)141 b Fm(the)17 b(eigh)o(t-bit)h(c)o(haracter)f(whose)g(v)m
-(alue)i(is)e(the)h(o)q(ctal)f(v)m(alue)i Fc(nnn)f Fm(\(one)f(to)555
-2163 y(three)e(digits\))315 2245 y Fl(\\x)p Fc(HH)124
-b Fm(the)20 b(eigh)o(t-bit)g(c)o(haracter)f(whose)h(v)m(alue)h(is)f
-(the)g(hexadecimal)h(v)m(alue)g Fc(HH)555 2300 y Fm(\(one)15
-b(or)g(t)o(w)o(o)f(hex)h(digits\))315 2382 y(When)k(en)o(tering)g(the)g
-(text)f(of)g(a)h(macro,)f(single)i(or)e(double)i(quotes)f(m)o(ust)f(b)q
-(e)h(used)h(to)315 2436 y(indicate)12 b(a)f(macro)f(de\014nition.)20
-b(Unquoted)11 b(text)f(is)i(assumed)e(to)h(b)q(e)g(a)f(function)i
-(name.)18 b(In)315 2491 y(the)11 b(macro)f(b)q(o)q(dy)l(,)i(the)f(bac)o
-(kslash)g(escap)q(es)g(describ)q(ed)i(ab)q(o)o(v)o(e)d(are)g(expanded.)
-20 b(Bac)o(kslash)315 2546 y(will)i(quote)d(an)o(y)h(other)g(c)o
-(haracter)f(in)i(the)f(macro)f(text,)h(including)j(`)p
-Fl(")p Fm(')c(and)h(`)p Fl(')p Fm('.)34 b(F)l(or)315
-2601 y(example,)14 b(the)f(follo)o(wing)g(binding)i(will)g(mak)o(e)d(`)
-p Fg(C-x)i Fl(\\)p Fm(')f(insert)g(a)g(single)h(`)p Fl(\\)p
-Fm(')e(in)o(to)h(the)g(line:)435 2666 y Fl("\\C-x\\\\":)23
-b("\\\\")p eop
-%%Page: 9 11
-9 10 bop 75 -58 a Fm(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077
-b(9)75 149 y Fb(1.3.2)30 b(Conditional)20 b(Init)g(Constructs)137
-246 y Fm(Readline)f(implemen)o(ts)g(a)f(facilit)o(y)g(similar)h(in)g
-(spirit)f(to)f(the)h(conditional)h(compilation)g(features)75
-301 y(of)e(the)g(C)g(prepro)q(cessor)g(whic)o(h)i(allo)o(ws)e(k)o(ey)g
-(bindings)i(and)f(v)m(ariable)g(settings)f(to)g(b)q(e)h(p)q(erformed)f
-(as)75 355 y(the)e(result)h(of)f(tests.)k(There)c(are)g(four)g(parser)g
-(directiv)o(es)h(used.)75 435 y Fl($if)168 b Fm(The)16
-b Fl($if)f Fm(construct)g(allo)o(ws)h(bindings)i(to)d(b)q(e)h(made)g
-(based)g(on)f(the)h(editing)h(mo)q(de,)f(the)315 490
-y(terminal)k(b)q(eing)g(used,)g(or)f(the)g(application)i(using)e
-(Readline.)33 b(The)19 b(text)g(of)f(the)i(test)315 545
-y(extends)c(to)e(the)h(end)h(of)f(the)g(line;)i(no)e(c)o(haracters)f
-(are)h(required)i(to)d(isolate)i(it.)315 624 y Fl(mode)144
-b Fm(The)11 b Fl(mode=)e Fm(form)h(of)g(the)h Fl($if)f
-Fm(directiv)o(e)h(is)g(used)g(to)f(test)g(whether)h(Readline)555
-679 y(is)k(in)h Fl(emacs)e Fm(or)g Fl(vi)g Fm(mo)q(de.)20
-b(This)c(ma)o(y)e(b)q(e)h(used)g(in)h(conjunction)g(with)f(the)555
-734 y(`)p Fl(set)f(keymap)p Fm(')f(command,)g(for)h(instance,)g(to)f
-(set)h(bindings)h(in)g(the)f Fl(emacs-)555 789 y(standard)d
-Fm(and)i Fl(emacs-ctlx)e Fm(k)o(eymaps)h(only)i(if)f(Readline)g(is)g
-(starting)f(out)555 844 y(in)k Fl(emacs)f Fm(mo)q(de.)315
-923 y Fl(term)144 b Fm(The)14 b Fl(term=)e Fm(form)h(ma)o(y)g(b)q(e)h
-(used)g(to)f(include)j(terminal-sp)q(eci\014c)g(k)o(ey)d(bind-)555
-978 y(ings,)19 b(p)q(erhaps)g(to)e(bind)i(the)g(k)o(ey)e(sequences)j
-(output)e(b)o(y)g(the)g(terminal's)555 1033 y(function)13
-b(k)o(eys.)18 b(The)13 b(w)o(ord)e(on)h(the)g(righ)o(t)g(side)g(of)g
-(the)g(`)p Fl(=)p Fm(')f(is)h(tested)g(against)555 1088
-y(b)q(oth)j(the)g(full)i(name)e(of)f(the)h(terminal)h(and)f(the)g(p)q
-(ortion)h(of)e(the)h(terminal)555 1142 y(name)i(b)q(efore)g(the)g
-(\014rst)f(`)p Fl(-)p Fm('.)24 b(This)17 b(allo)o(ws)g
-Fl(sun)f Fm(to)g(matc)o(h)h(b)q(oth)f Fl(sun)h Fm(and)555
-1197 y Fl(sun-cmd)p Fm(,)d(for)g(instance.)315 1277 y
-Fl(application)555 1332 y Fm(The)d Fc(application)i Fm(construct)e(is)g
-(used)h(to)e(include)j(application-sp)q(eci)q(\014c)h(set-)555
-1386 y(tings.)19 b(Eac)o(h)12 b(program)f(using)j(the)e(Readline)i
-(library)f(sets)f(the)g Fc(application)555 1441 y(name)p
-Fm(,)g(and)g(y)o(ou)f(can)h(test)f(for)g(a)g(particular)h(v)m(alue.)20
-b(This)12 b(could)h(b)q(e)f(used)h(to)555 1496 y(bind)18
-b(k)o(ey)e(sequences)i(to)d(functions)j(useful)f(for)f(a)g(sp)q
-(eci\014c)i(program.)23 b(F)l(or)555 1551 y(instance,)17
-b(the)g(follo)o(wing)g(command)g(adds)f(a)g(k)o(ey)h(sequence)g(that)f
-(quotes)555 1606 y(the)f(curren)o(t)g(or)g(previous)h(w)o(ord)e(in)j
-(Bash:)675 1670 y Fl($if)23 b(Bash)675 1722 y(#)h(Quote)f(the)g
-(current)g(or)h(previous)f(word)675 1774 y("\\C-xq":)g
-("\\eb\\"\\ef\\"")675 1826 y($endif)75 1905 y($endif)96
-b Fm(This)16 b(command,)e(as)h(seen)h(in)g(the)f(previous)h(example,)g
-(terminates)f(an)g Fl($if)f Fm(command.)75 1985 y Fl($else)120
-b Fm(Commands)15 b(in)h(this)f(branc)o(h)h(of)e(the)i
-Fl($if)e Fm(directiv)o(e)j(are)e(executed)h(if)g(the)f(test)g(fails.)75
-2065 y Fl($include)48 b Fm(This)22 b(directiv)o(e)h(tak)o(es)e(a)h
-(single)h(\014lename)g(as)e(an)h(argumen)o(t)f(and)h(reads)f(commands)
-315 2120 y(and)e(bindings)j(from)c(that)h(\014le.)33
-b(F)l(or)19 b(example,)i(the)e(follo)o(wing)h(directiv)o(e)h(reads)e
-(from)315 2174 y(`)p Fl(/etc/inputrc)p Fm(':)435 2239
-y Fl($include)k(/etc/inputrc)75 2351 y Fb(1.3.3)30 b(Sample)20
-b(Init)h(File)137 2447 y Fm(Here)16 b(is)g(an)f(example)h(of)f(an)g
-Fc(inputrc)k Fm(\014le.)i(This)16 b(illustrates)g(k)o(ey)f(binding,)i
-(v)m(ariable)f(assignmen)o(t,)75 2502 y(and)f(conditional)i(syn)o(tax.)
-p eop
-%%Page: 10 12
-10 11 bop 75 -58 a Fm(10)1299 b(GNU)15 b(Readline)h(Library)195
-201 y Fl(#)24 b(This)f(file)g(controls)g(the)h(behaviour)e(of)i(line)f
-(input)g(editing)g(for)195 253 y(#)h(programs)e(that)i(use)f(the)h(GNU)
-f(Readline)g(library.)47 b(Existing)195 305 y(#)24 b(programs)e
-(include)h(FTP,)h(Bash,)f(and)g(GDB.)195 357 y(#)195
-409 y(#)h(You)f(can)h(re-read)f(the)g(inputrc)g(file)g(with)h(C-x)f
-(C-r.)195 461 y(#)h(Lines)f(beginning)g(with)g('#')g(are)h(comments.)
-195 513 y(#)195 565 y(#)g(First,)f(include)g(any)g(systemwide)g
-(bindings)f(and)i(variable)195 616 y(#)g(assignments)e(from)h
-(/etc/Inputrc)195 668 y($include)g(/etc/Inputrc)195 772
-y(#)195 824 y(#)h(Set)f(various)g(bindings)g(for)g(emacs)g(mode.)195
-928 y(set)g(editing-mode)g(emacs)195 1032 y($if)g(mode=emacs)195
-1135 y(Meta-Control-h:)46 b(backward-kill-word)21 b(Text)i(after)h(the)
-f(function)g(name)g(is)h(ignored)p 1986 1145 21 38 v
-195 1239 a(#)195 1291 y(#)g(Arrow)f(keys)g(in)h(keypad)f(mode)195
-1343 y(#)195 1395 y(#"\\M-OD":)190 b(backward-char)195
-1447 y(#"\\M-OC":)g(forward-char)195 1499 y(#"\\M-OA":)g
-(previous-history)195 1550 y(#"\\M-OB":)g(next-history)195
-1602 y(#)195 1654 y(#)24 b(Arrow)f(keys)g(in)h(ANSI)f(mode)195
-1706 y(#)195 1758 y("\\M-[D":)190 b(backward-char)195
-1810 y("\\M-[C":)g(forward-char)195 1862 y("\\M-[A":)g
-(previous-history)195 1914 y("\\M-[B":)g(next-history)195
-1966 y(#)195 2017 y(#)24 b(Arrow)f(keys)g(in)h(8)g(bit)f(keypad)g(mode)
-195 2069 y(#)195 2121 y(#"\\M-\\C-OD":)165 b(backward-char)195
-2173 y(#"\\M-\\C-OC":)g(forward-char)195 2225 y(#"\\M-\\C-OA":)g
-(previous-history)195 2277 y(#"\\M-\\C-OB":)g(next-history)195
-2329 y(#)195 2381 y(#)24 b(Arrow)f(keys)g(in)h(8)g(bit)f(ANSI)g(mode)
-195 2433 y(#)195 2484 y(#"\\M-\\C-[D":)165 b(backward-char)195
-2536 y(#"\\M-\\C-[C":)g(forward-char)195 2588 y(#"\\M-\\C-[A":)g
-(previous-history)195 2640 y(#"\\M-\\C-[B":)g(next-history)p
-eop
-%%Page: 11 13
-11 12 bop 75 -58 a Fm(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1055
-b(11)195 201 y Fl(C-q:)23 b(quoted-insert)195 305 y($endif)195
-409 y(#)h(An)f(old-style)g(binding.)47 b(This)23 b(happens)g(to)g(be)h
-(the)f(default.)195 461 y(TAB:)g(complete)195 565 y(#)h(Macros)f(that)g
-(are)h(convenient)e(for)h(shell)h(interaction)195 616
-y($if)f(Bash)195 668 y(#)h(edit)f(the)g(path)195 720
-y("\\C-xp":)g("PATH=${PATH}\\e\\C-e\\C-a\\)o(ef\\C-f")195
-772 y(#)h(prepare)f(to)g(type)h(a)f(quoted)g(word)h(--)195
-824 y(#)g(insert)f(open)g(and)h(close)f(double)g(quotes)195
-876 y(#)h(and)f(move)g(to)h(just)f(after)h(the)f(open)g(quote)195
-928 y("\\C-x\\"":)g("\\"\\"\\C-b")195 980 y(#)h(insert)f(a)g(backslash)
-g(\(testing)g(backslash)g(escapes)195 1032 y(#)h(in)f(sequences)g(and)g
-(macros\))195 1083 y("\\C-x\\\\":)g("\\\\")195 1135 y(#)h(Quote)f(the)g
-(current)g(or)h(previous)f(word)195 1187 y("\\C-xq":)g
-("\\eb\\"\\ef\\"")195 1239 y(#)h(Add)f(a)h(binding)f(to)g(refresh)g
-(the)h(line,)f(which)g(is)h(unbound)195 1291 y("\\C-xr":)f
-(redraw-current-line)195 1343 y(#)h(Edit)f(variable)g(on)g(current)g
-(line.)195 1395 y("\\M-\\C-v":)f("\\C-a\\C-k$\\C-y\\M-\\C-e\\C-a\\C-y=)
-o(")195 1447 y($endif)195 1550 y(#)i(use)f(a)h(visible)f(bell)g(if)h
-(one)f(is)h(available)195 1602 y(set)f(bell-style)g(visible)195
-1706 y(#)h(don't)f(strip)g(characters)g(to)g(7)h(bits)f(when)h(reading)
-195 1758 y(set)f(input-meta)g(on)195 1862 y(#)h(allow)f(iso-latin1)f
-(characters)h(to)g(be)h(inserted)f(rather)195 1914 y(#)h(than)f
-(converted)g(to)g(prefix-meta)g(sequences)195 1966 y(set)g
-(convert-meta)g(off)195 2069 y(#)h(display)f(characters)f(with)h(the)h
-(eighth)f(bit)g(set)h(directly)195 2121 y(#)g(rather)f(than)g(as)h
-(meta-prefixed)e(characters)195 2173 y(set)h(output-meta)g(on)195
-2277 y(#)h(if)f(there)g(are)h(more)f(than)h(150)f(possible)g
-(completions)f(for)195 2329 y(#)i(a)f(word,)h(ask)f(the)h(user)f(if)g
-(he)h(wants)f(to)h(see)f(all)h(of)f(them)195 2381 y(set)g
-(completion-query-items)e(150)195 2484 y(#)j(For)f(FTP)195
-2536 y($if)g(Ftp)195 2588 y("\\C-xg":)g("get)g(\\M-?")195
-2640 y("\\C-xt":)g("put)g(\\M-?")p eop
-%%Page: 12 14
-12 13 bop 75 -58 a Fm(12)1299 b(GNU)15 b(Readline)h(Library)195
-149 y Fl("\\M-.":)23 b(yank-last-arg)195 201 y($endif)75
-329 y Fk(1.4)33 b(Bindable)24 b(Readline)f(Commands)137
-425 y Fm(This)17 b(section)f(describ)q(es)h(Readline)g(commands)f(that)
-e(ma)o(y)h(b)q(e)i(b)q(ound)f(to)f(k)o(ey)h(sequences.)22
-b(Com-)75 480 y(mand)15 b(names)g(without)h(an)f(accompan)o(ying)g(k)o
-(ey)g(sequence)i(are)e(un)o(b)q(ound)h(b)o(y)f(default.)137
-547 y(In)f(the)f(follo)o(wing)h(descriptions,)h Fc(p)q(oin)o(t)f
-Fm(refers)f(to)g(the)g(curren)o(t)g(cursor)f(p)q(osition,)j(and)e
-Fc(mark)i Fm(refers)75 601 y(to)k(a)g(cursor)g(p)q(osition)h(sa)o(v)o
-(ed)f(b)o(y)h(the)f Fl(set-mark)g Fm(command.)32 b(The)20
-b(text)f(b)q(et)o(w)o(een)g(the)h(p)q(oin)o(t)g(and)75
-656 y(mark)15 b(is)g(referred)h(to)e(as)h(the)g Fc(region)p
-Fm(.)75 767 y Fb(1.4.1)30 b(Commands)21 b(F)-5 b(or)19
-b(Mo)n(ving)75 888 y Fl(beginning-of-line)13 b(\(C-a\))315
-942 y Fm(Mo)o(v)o(e)h(to)h(the)g(start)f(of)h(the)g(curren)o(t)g(line.)
-75 1034 y Fl(end-of-line)f(\(C-e\))315 1088 y Fm(Mo)o(v)o(e)g(to)h(the)
-g(end)h(of)f(the)g(line.)75 1179 y Fl(forward-char)f(\(C-f\))315
-1234 y Fm(Mo)o(v)o(e)g(forw)o(ard)g(a)h(c)o(haracter.)75
-1325 y Fl(backward-char)e(\(C-b\))315 1380 y Fm(Mo)o(v)o(e)h(bac)o(k)h
-(a)g(c)o(haracter.)75 1471 y Fl(forward-word)f(\(M-f\))315
-1526 y Fm(Mo)o(v)o(e)g(forw)o(ard)g(to)g(the)i(end)g(of)e(the)h(next)h
-(w)o(ord.)j(W)l(ords)c(are)f(comp)q(osed)i(of)f(letters)g(and)315
-1581 y(digits.)75 1672 y Fl(backward-word)e(\(M-b\))315
-1727 y Fm(Mo)o(v)o(e)j(bac)o(k)g(to)h(the)f(start)g(of)g(the)h(curren)o
-(t)g(or)f(previous)i(w)o(ord.)24 b(W)l(ords)16 b(are)h(comp)q(osed)315
-1782 y(of)e(letters)g(and)g(digits.)75 1873 y Fl(clear-screen)f
-(\(C-l\))315 1928 y Fm(Clear)f(the)h(screen)g(and)f(redra)o(w)g(the)g
-(curren)o(t)g(line,)i(lea)o(ving)g(the)e(curren)o(t)g(line)i(at)e(the)g
-(top)315 1982 y(of)i(the)g(screen.)75 2074 y Fl(redraw-current-line)e
-(\(\))315 2128 y Fm(Refresh)i(the)g(curren)o(t)g(line.)22
-b(By)15 b(default,)h(this)f(is)h(un)o(b)q(ound.)75 2239
-y Fb(1.4.2)30 b(Commands)21 b(F)-5 b(or)19 b(Manipulating)i(The)f
-(History)75 2360 y Fl(accept-line)14 b(\(Newline)g(or)h(Return\))315
-2414 y Fm(Accept)j(the)g(line)h(regardless)f(of)f(where)h(the)g(cursor)
-f(is.)27 b(If)18 b(this)g(line)h(is)g(non-empt)o(y)l(,)f(it)315
-2469 y(ma)o(y)d(b)q(e)i(added)f(to)g(the)g(history)g(list)g(for)g
-(future)g(recall)h(with)f Fl(add_history\(\))p Fm(.)k(If)d(this)315
-2524 y(line)g(is)f(a)e(mo)q(di\014ed)j(history)e(line,)i(the)e(history)
-g(line)i(is)f(restored)e(to)h(its)g(original)i(state.)75
-2615 y Fl(previous-history)c(\(C-p\))315 2670 y Fm(Mo)o(v)o(e)h(`bac)o
-(k')h(through)f(the)i(history)f(list,)g(fetc)o(hing)h(the)f(previous)h
-(command.)p eop
-%%Page: 13 15
-13 14 bop 75 -58 a Fm(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1055
-b(13)75 149 y Fl(next-history)14 b(\(C-n\))315 204 y
-Fm(Mo)o(v)o(e)g(`forw)o(ard')f(through)i(the)h(history)f(list,)g(fetc)o
-(hing)h(the)f(next)h(command.)75 307 y Fl(beginning-of-history)c
-(\(M-<\))315 362 y Fm(Mo)o(v)o(e)i(to)h(the)g(\014rst)g(line)i(in)f
-(the)f(history)l(.)75 465 y Fl(end-of-history)e(\(M->\))315
-520 y Fm(Mo)o(v)o(e)h(to)h(the)g(end)h(of)f(the)g(input)h(history)l(,)f
-(i.e.,)g(the)g(line)i(curren)o(tly)f(b)q(eing)g(en)o(tered.)75
-624 y Fl(reverse-search-history)c(\(C-r\))315 678 y Fm(Searc)o(h)k(bac)
-o(kw)o(ard)e(starting)h(at)g(the)h(curren)o(t)f(line)j(and)d(mo)o(ving)
-h(`up')f(through)g(the)h(his-)315 733 y(tory)e(as)h(necessary)l(.)20
-b(This)c(is)g(an)f(incremen)o(tal)h(searc)o(h.)75 836
-y Fl(forward-search-history)c(\(C-s\))315 891 y Fm(Searc)o(h)j(forw)o
-(ard)e(starting)h(at)h(the)f(curren)o(t)h(line)h(and)f(mo)o(ving)g(`do)
-o(wn')f(through)g(the)h(the)315 946 y(history)g(as)g(necessary)l(.)20
-b(This)c(is)g(an)f(incremen)o(tal)h(searc)o(h.)75 1049
-y Fl(non-incremental-reverse-se)o(arch-hi)o(story)c(\(M-p\))315
-1104 y Fm(Searc)o(h)k(bac)o(kw)o(ard)e(starting)h(at)g(the)h(curren)o
-(t)f(line)j(and)d(mo)o(ving)h(`up')f(through)g(the)h(his-)315
-1159 y(tory)h(as)h(necessary)g(using)h(a)e(non-incremen)o(tal)j(searc)o
-(h)e(for)f(a)h(string)g(supplied)i(b)o(y)e(the)315 1214
-y(user.)75 1317 y Fl(non-incremental-forward-se)o(arch-hi)o(story)12
-b(\(M-n\))315 1372 y Fm(Searc)o(h)j(forw)o(ard)e(starting)h(at)h(the)f
-(curren)o(t)h(line)h(and)f(mo)o(ving)g(`do)o(wn')f(through)g(the)h(the)
-315 1426 y(history)e(as)g(necessary)h(using)g(a)f(non-incremen)o(tal)i
-(searc)o(h)e(for)g(a)g(string)g(supplied)j(b)o(y)d(the)315
-1481 y(user.)75 1584 y Fl(history-search-forward)f(\(\))315
-1639 y Fm(Searc)o(h)21 b(forw)o(ard)e(through)i(the)f(history)h(for)f
-(the)h(string)g(of)f(c)o(haracters)g(b)q(et)o(w)o(een)h(the)315
-1694 y(start)16 b(of)h(the)h(curren)o(t)g(line)h(and)e(the)h(p)q(oin)o
-(t.)28 b(This)18 b(is)g(a)f(non-incremen)o(tal)i(searc)o(h.)27
-b(By)315 1749 y(default,)15 b(this)h(command)f(is)h(un)o(b)q(ound.)75
-1852 y Fl(history-search-backward)c(\(\))315 1907 y Fm(Searc)o(h)18
-b(bac)o(kw)o(ard)e(through)h(the)h(history)f(for)g(the)g(string)h(of)f
-(c)o(haracters)f(b)q(et)o(w)o(een)i(the)315 1962 y(start)e(of)h(the)h
-(curren)o(t)g(line)h(and)e(the)h(p)q(oin)o(t.)28 b(This)18
-b(is)g(a)f(non-incremen)o(tal)i(searc)o(h.)27 b(By)315
-2016 y(default,)15 b(this)h(command)f(is)h(un)o(b)q(ound.)75
-2120 y Fl(yank-nth-arg)e(\(M-C-y\))315 2174 y Fm(Insert)f(the)g
-(\014rst)g(argumen)o(t)f(to)g(the)i(previous)f(command)g(\(usually)h
-(the)f(second)h(w)o(ord)e(on)315 2229 y(the)j(previous)h(line\))g(at)e
-(p)q(oin)o(t.)21 b(With)15 b(an)g(argumen)o(t)f Fc(n)p
-Fm(,)h(insert)g(the)g Fc(n)p Fm(th)g(w)o(ord)g(from)f(the)315
-2284 y(previous)g(command)g(\(the)f(w)o(ords)f(in)j(the)e(previous)i
-(command)e(b)q(egin)i(with)e(w)o(ord)g(0\).)19 b(A)315
-2339 y(negativ)o(e)13 b(argumen)o(t)f(inserts)h(the)g
-Fc(n)p Fm(th)g(w)o(ord)f(from)g(the)h(end)h(of)e(the)h(previous)g
-(command.)75 2442 y Fl(yank-last-arg)g(\(M-.)i(or)g(M-_\))315
-2497 y Fm(Insert)j(last)f(argumen)o(t)g(to)g(the)g(previous)i(command)e
-(\(the)g(last)h(w)o(ord)f(of)g(the)g(previous)315 2552
-y(history)e(en)o(try\).)20 b(With)15 b(an)g(argumen)o(t,)g(b)q(eha)o(v)
-o(e)g(exactly)h(lik)o(e)g Fl(yank-nth-arg)p Fm(.)j(Succes-)315
-2606 y(siv)o(e)f(calls)g(to)f Fl(yank-last-arg)e Fm(mo)o(v)o(e)i(bac)o
-(k)g(through)g(the)g(history)g(list,)i(inserting)f(the)315
-2661 y(last)d(argumen)o(t)g(of)f(eac)o(h)i(line)g(in)g(turn.)p
-eop
-%%Page: 14 16
-14 15 bop 75 -58 a Fm(14)1299 b(GNU)15 b(Readline)h(Library)75
-149 y Fb(1.4.3)30 b(Commands)21 b(F)-5 b(or)19 b(Changing)i(T)-5
-b(ext)75 286 y Fl(delete-char)14 b(\(C-d\))315 341 y
-Fm(Delete)20 b(the)g(c)o(haracter)e(at)h(p)q(oin)o(t.)33
-b(If)20 b(p)q(oin)o(t)g(is)g(at)e(the)i(b)q(eginning)i(of)d(the)g
-(line,)j(there)315 396 y(are)c(no)h(c)o(haracters)e(in)j(the)e(line,)j
-(and)e(the)f(last)h(c)o(haracter)e(t)o(yp)q(ed)i(w)o(as)f(not)g(b)q
-(ound)i(to)315 450 y Fl(delete-char)p Fm(,)13 b(then)j(return)f
-Fh(eof)p Fm(.)75 552 y Fl(backward-delete-char)d(\(Rubout\))315
-607 y Fm(Delete)k(the)f(c)o(haracter)f(b)q(ehind)j(the)f(cursor.)j(A)c
-(n)o(umeric)h(argumen)o(t)e(means)i(to)e(kill)j(the)315
-661 y(c)o(haracters)d(instead)i(of)f(deleting)i(them.)75
-763 y Fl(forward-backward-delete-ch)o(ar)12 b(\(\))315
-818 y Fm(Delete)20 b(the)f(c)o(haracter)f(under)i(the)f(cursor,)h
-(unless)g(the)f(cursor)g(is)h(at)e(the)h(end)h(of)f(the)315
-872 y(line,)e(in)g(whic)o(h)g(case)e(the)h(c)o(haracter)g(b)q(ehind)h
-(the)f(cursor)g(is)g(deleted.)23 b(By)16 b(default,)h(this)315
-927 y(is)f(not)f(b)q(ound)h(to)e(a)h(k)o(ey)l(.)75 1029
-y Fl(quoted-insert)e(\(C-q)i(or)g(C-v\))315 1083 y Fm(Add)j(the)f(next)
-g(c)o(haracter)g(t)o(yp)q(ed)g(to)f(the)i(line)g(v)o(erbatim.)26
-b(This)18 b(is)f(ho)o(w)g(to)g(insert)g(k)o(ey)315 1138
-y(sequences)f(lik)o(e)h Fg(C-q)p Fm(,)d(for)h(example.)75
-1240 y Fl(tab-insert)f(\(M-)401 1238 y Ff(h)p 412 1212
-74 2 v 412 1240 a Fe(T)m(AB)p 412 1247 V 484 1238 a Ff(i)499
-1240 y Fl(\))315 1294 y Fm(Insert)h(a)g(tab)g(c)o(haracter.)75
-1396 y Fl(self-insert)f(\(a,)g(b,)h(A,)g(1,)g(!,)g(...)o(\))315
-1451 y Fm(Insert)g(y)o(ourself.)75 1552 y Fl(transpose-chars)e(\(C-t\))
-315 1607 y Fm(Drag)i(the)h(c)o(haracter)f(b)q(efore)h(the)h(cursor)e
-(forw)o(ard)g(o)o(v)o(er)g(the)h(c)o(haracter)f(at)h(the)g(cursor,)315
-1662 y(mo)o(ving)i(the)f(cursor)h(forw)o(ard)e(as)i(w)o(ell.)28
-b(If)18 b(the)g(insertion)h(p)q(oin)o(t)f(is)g(at)f(the)h(end)h(of)e
-(the)315 1716 y(line,)c(then)e(this)h(transp)q(oses)e(the)h(last)g(t)o
-(w)o(o)f(c)o(haracters)g(of)h(the)g(line.)20 b(Negativ)o(e)11
-b(argumen)o(ts)315 1771 y(ha)o(v)o(e)k(no)g(e\013ect.)75
-1873 y Fl(transpose-words)e(\(M-t\))315 1927 y Fm(Drag)i(the)h(w)o(ord)
-g(b)q(efore)g(p)q(oin)o(t)h(past)f(the)g(w)o(ord)f(after)h(p)q(oin)o
-(t,)g(mo)o(ving)g(p)q(oin)o(t)h(past)f(that)315 1982
-y(w)o(ord)d(as)h(w)o(ell.)21 b(If)14 b(the)g(insertion)i(p)q(oin)o(t)e
-(is)h(at)f(the)g(end)h(of)e(the)i(line,)g(this)g(transp)q(oses)f(the)
-315 2037 y(last)h(t)o(w)o(o)f(w)o(ords)g(on)i(the)f(line.)75
-2138 y Fl(upcase-word)f(\(M-u\))315 2193 y Fm(Upp)q(ercase)j(the)f
-(curren)o(t)g(\(or)f(follo)o(wing\))h(w)o(ord.)22 b(With)16
-b(a)g(negativ)o(e)g(argumen)o(t,)f(upp)q(er-)315 2248
-y(case)g(the)g(previous)h(w)o(ord,)f(but)g(do)g(not)g(mo)o(v)o(e)f(the)
-i(cursor.)75 2349 y Fl(downcase-word)d(\(M-l\))315 2404
-y Fm(Lo)o(w)o(ercase)d(the)h(curren)o(t)g(\(or)f(follo)o(wing\))h(w)o
-(ord.)17 b(With)11 b(a)g(negativ)o(e)g(argumen)o(t,)f(lo)o(w)o(ercase)
-315 2459 y(the)15 b(previous)h(w)o(ord,)e(but)i(do)f(not)g(mo)o(v)o(e)f
-(the)h(cursor.)75 2560 y Fl(capitalize-word)e(\(M-c\))315
-2615 y Fm(Capitalize)f(the)f(curren)o(t)f(\(or)g(follo)o(wing\))h(w)o
-(ord.)18 b(With)11 b(a)f(negativ)o(e)h(argumen)o(t,)f(capitalize)315
-2670 y(the)15 b(previous)h(w)o(ord,)e(but)i(do)f(not)g(mo)o(v)o(e)f
-(the)h(cursor.)p eop
-%%Page: 15 17
-15 16 bop 75 -58 a Fm(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1055
-b(15)75 149 y Fl(overwrite-mode)13 b(\(\))315 204 y Fm(T)l(oggle)j(o)o
-(v)o(erwrite)g(mo)q(de.)24 b(With)17 b(an)f(explicit)j(p)q(ositiv)o(e)f
-(n)o(umeric)f(argumen)o(t,)f(switc)o(hes)315 259 y(to)10
-b(o)o(v)o(erwrite)g(mo)q(de.)19 b(With)11 b(an)g(explicit)i(non-p)q
-(ositiv)o(e)f(n)o(umeric)g(argumen)o(t,)e(switc)o(hes)i(to)315
-314 y(insert)k(mo)q(de.)k(This)c(command)f(a\013ects)g(only)h
-Fl(emacs)e Fm(mo)q(de;)h Fl(vi)g Fm(mo)q(de)h(do)q(es)g(o)o(v)o
-(erwrite)315 369 y(di\013eren)o(tly)l(.)21 b(Eac)o(h)15
-b(call)h(to)f Fl(readline\(\))f Fm(starts)f(in)k(insert)e(mo)q(de.)315
-436 y(In)g(o)o(v)o(erwrite)f(mo)q(de,)h(c)o(haracters)f(b)q(ound)h(to)f
-Fl(self-insert)f Fm(replace)j(the)e(text)h(at)e(p)q(oin)o(t)315
-491 y(rather)20 b(than)h(pushing)h(the)f(text)f(to)g(the)h(righ)o(t.)36
-b(Characters)20 b(b)q(ound)i(to)e Fl(backward-)315 546
-y(delete-char)14 b Fm(replace)i(the)f(c)o(haracter)g(b)q(efore)g(p)q
-(oin)o(t)h(with)f(a)g(space.)315 614 y(By)g(default,)h(this)f(command)g
-(is)h(un)o(b)q(ound.)75 729 y Fb(1.4.4)30 b(Killing)20
-b(And)h(Y)-5 b(anking)75 853 y Fl(kill-line)14 b(\(C-k\))315
-908 y Fm(Kill)j(the)f(text)e(from)h(p)q(oin)o(t)h(to)e(the)h(end)h(of)f
-(the)g(line.)75 1002 y Fl(backward-kill-line)e(\(C-x)h(Rubout\))315
-1057 y Fm(Kill)j(bac)o(kw)o(ard)e(to)f(the)i(b)q(eginning)h(of)e(the)g
-(line.)75 1151 y Fl(unix-line-discard)e(\(C-u\))315 1205
-y Fm(Kill)k(bac)o(kw)o(ard)e(from)f(the)i(cursor)e(to)h(the)g(b)q
-(eginning)j(of)c(the)i(curren)o(t)f(line.)75 1299 y Fl(kill-whole-line)
-e(\(\))315 1354 y Fm(Kill)20 b(all)g(c)o(haracters)d(on)h(the)h(curren)
-o(t)f(line,)i(no)e(matter)g(where)g(p)q(oin)o(t)h(is.)29
-b(By)19 b(default,)315 1409 y(this)d(is)f(un)o(b)q(ound.)75
-1503 y Fl(kill-word)f(\(M-d\))315 1558 y Fm(Kill)j(from)d(p)q(oin)o(t)h
-(to)f(the)h(end)g(of)f(the)h(curren)o(t)g(w)o(ord,)e(or)i(if)g(b)q(et)o
-(w)o(een)g(w)o(ords,)e(to)i(the)f(end)315 1613 y(of)h(the)g(next)g(w)o
-(ord.)20 b(W)l(ord)14 b(b)q(oundaries)j(are)e(the)g(same)g(as)g
-Fl(forward-word)p Fm(.)75 1707 y Fl(backward-kill-word)e(\(M-)592
-1705 y Ff(h)p 603 1679 73 2 v 603 1707 a Fe(DEL)p 603
-1714 V 674 1705 a Ff(i)689 1707 y Fl(\))315 1761 y Fm(Kill)k(the)d(w)o
-(ord)g(b)q(ehind)i(p)q(oin)o(t.)21 b(W)l(ord)14 b(b)q(oundaries)h(are)f
-(the)h(same)f(as)g Fl(backward-word)p Fm(.)75 1855 y
-Fl(unix-word-rubout)f(\(C-w\))315 1910 y Fm(Kill)18 b(the)e(w)o(ord)f
-(b)q(ehind)j(p)q(oin)o(t,)e(using)h(white)f(space)g(as)g(a)f(w)o(ord)g
-(b)q(oundary)l(.)23 b(The)16 b(killed)315 1965 y(text)f(is)g(sa)o(v)o
-(ed)g(on)g(the)h(kill-ring.)75 2059 y Fl(delete-horizontal-space)c
-(\(\))315 2114 y Fm(Delete)k(all)g(spaces)f(and)h(tabs)e(around)i(p)q
-(oin)o(t.)k(By)15 b(default,)h(this)f(is)h(un)o(b)q(ound.)75
-2208 y Fl(kill-region)e(\(\))315 2263 y Fm(Kill)j(the)f(text)e(in)i
-(the)g(curren)o(t)f(region.)20 b(By)15 b(default,)h(this)f(command)g
-(is)h(un)o(b)q(ound.)75 2357 y Fl(copy-region-as-kill)d(\(\))315
-2412 y Fm(Cop)o(y)j(the)i(text)e(in)i(the)f(region)g(to)g(the)g(kill)h
-(bu\013er,)f(so)g(it)g(can)g(b)q(e)h(y)o(ank)o(ed)f(righ)o(t)g(a)o(w)o
-(a)o(y)l(.)315 2466 y(By)e(default,)h(this)f(command)g(is)h(un)o(b)q
-(ound.)75 2560 y Fl(copy-backward-word)d(\(\))315 2615
-y Fm(Cop)o(y)19 b(the)g(w)o(ord)g(b)q(efore)g(p)q(oin)o(t)h(to)e(the)i
-(kill)h(bu\013er.)32 b(The)19 b(w)o(ord)g(b)q(oundaries)h(are)f(the)315
-2670 y(same)c(as)g Fl(backward-word)p Fm(.)j(By)d(default,)g(this)h
-(command)f(is)h(un)o(b)q(ound.)p eop
-%%Page: 16 18
-16 17 bop 75 -58 a Fm(16)1299 b(GNU)15 b(Readline)h(Library)75
-149 y Fl(copy-forward-word)d(\(\))315 204 y Fm(Cop)o(y)i(the)h(w)o(ord)
-e(follo)o(wing)j(p)q(oin)o(t)f(to)f(the)g(kill)j(bu\013er.)i(The)c(w)o
-(ord)f(b)q(oundaries)i(are)e(the)315 259 y(same)g(as)g
-Fl(forward-word)p Fm(.)j(By)d(default,)h(this)f(command)g(is)h(un)o(b)q
-(ound.)75 342 y Fl(yank)f(\(C-y\))315 397 y Fm(Y)l(ank)g(the)h(top)f
-(of)f(the)i(kill)h(ring)e(in)o(to)g(the)h(bu\013er)f(at)f(p)q(oin)o(t.)
-75 481 y Fl(yank-pop)g(\(M-y\))315 535 y Fm(Rotate)i(the)h(kill-ring,)j
-(and)d(y)o(ank)g(the)h(new)f(top.)26 b(Y)l(ou)17 b(can)h(only)g(do)f
-(this)h(if)f(the)h(prior)315 590 y(command)d(is)h Fl(yank)e
-Fm(or)h Fl(yank-pop)p Fm(.)75 693 y Fb(1.4.5)30 b(Sp)r(ecifying)20
-b(Numeric)h(Argumen)n(ts)75 806 y Fl(digit-argument)13
-b(\()p Fg(M-0)p Fl(,)i Fg(M-1)p Fl(,)f(...)h Fg(M--)p
-Fl(\))315 861 y Fm(Add)f(this)g(digit)g(to)f(the)h(argumen)o(t)e
-(already)i(accum)o(ulating,)g(or)f(start)f(a)h(new)h(argumen)o(t.)315
-915 y Fg(M--)h Fm(starts)f(a)h(negativ)o(e)g(argumen)o(t.)75
-999 y Fl(universal-argument)e(\(\))315 1054 y Fm(This)g(is)h(another)e
-(w)o(a)o(y)g(to)g(sp)q(ecify)i(an)f(argumen)o(t.)18 b(If)13
-b(this)g(command)g(is)g(follo)o(w)o(ed)g(b)o(y)g(one)315
-1108 y(or)h(more)h(digits,)g(optionally)h(with)f(a)g(leading)h(min)o
-(us)f(sign,)g(those)g(digits)g(de\014ne)h(the)f(ar-)315
-1163 y(gumen)o(t.)k(If)c(the)g(command)f(is)h(follo)o(w)o(ed)g(b)o(y)g
-(digits,)g(executing)g Fl(universal-argument)315 1218
-y Fm(again)h(ends)g(the)g(n)o(umeric)h(argumen)o(t,)e(but)h(is)h
-(otherwise)f(ignored.)22 b(As)16 b(a)g(sp)q(ecial)h(case,)315
-1273 y(if)g(this)g(command)f(is)h(immediately)h(follo)o(w)o(ed)f(b)o(y)
-f(a)g(c)o(haracter)g(that)g(is)h(neither)g(a)f(digit)315
-1328 y(or)d(min)o(us)i(sign,)f(the)g(argumen)o(t)g(coun)o(t)f(for)h
-(the)g(next)g(command)g(is)g(m)o(ultiplied)j(b)o(y)d(four.)315
-1382 y(The)19 b(argumen)o(t)f(coun)o(t)g(is)h(initially)j(one,)d(so)f
-(executing)i(this)f(function)h(the)e(\014rst)h(time)315
-1437 y(mak)o(es)c(the)h(argumen)o(t)f(coun)o(t)h(four,)f(a)h(second)g
-(time)g(mak)o(es)g(the)g(argumen)o(t)f(coun)o(t)g(six-)315
-1492 y(teen,)g(and)g(so)g(on.)20 b(By)15 b(default,)h(this)f(is)h(not)f
-(b)q(ound)h(to)f(a)g(k)o(ey)l(.)75 1595 y Fb(1.4.6)30
-b(Letting)20 b(Readline)g(T)n(yp)r(e)h(F)-5 b(or)19 b(Y)-5
-b(ou)75 1708 y Fl(complete)14 b(\()305 1706 y Ff(h)p
-317 1680 74 2 v 317 1708 a Fe(T)m(AB)p 317 1715 V 389
-1706 a Ff(i)404 1708 y Fl(\))315 1762 y Fm(A)o(ttempt)c(to)h(p)q
-(erform)g(completion)i(on)e(the)g(text)g(b)q(efore)h(p)q(oin)o(t.)19
-b(The)11 b(actual)h(completion)315 1817 y(p)q(erformed)j(is)h
-(application-sp)q(eci\014)q(c.)23 b(The)15 b(default)h(is)g(\014lename)
-g(completion.)75 1901 y Fl(possible-completions)c(\(M-?\))315
-1955 y Fm(List)k(the)f(p)q(ossible)i(completions)f(of)f(the)g(text)g(b)
-q(efore)h(p)q(oin)o(t.)75 2039 y Fl(insert-completions)d(\(M-*\))315
-2093 y Fm(Insert)j(all)g(completions)g(of)f(the)g(text)g(b)q(efore)h(p)
-q(oin)o(t)f(that)g(w)o(ould)h(ha)o(v)o(e)f(b)q(een)h(generated)315
-2148 y(b)o(y)f Fl(possible-completions)p Fm(.)75 2232
-y Fl(menu-complete)e(\(\))315 2286 y Fm(Similar)g(to)f
-Fl(complete)p Fm(,)f(but)h(replaces)h(the)f(w)o(ord)f(to)g(b)q(e)i
-(completed)f(with)h(a)e(single)j(matc)o(h)315 2341 y(from)k(the)h(list)
-h(of)e(p)q(ossible)j(completions.)32 b(Rep)q(eated)19
-b(execution)h(of)f Fl(menu-complete)315 2396 y Fm(steps)h(through)g
-(the)g(list)h(of)f(p)q(ossible)i(completions,)g(inserting)f(eac)o(h)f
-(matc)o(h)f(in)i(turn.)315 2451 y(A)o(t)d(the)g(end)h(of)f(the)h(list)g
-(of)f(completions,)i(the)e(b)q(ell)j(is)d(rung)h(\(sub)s(ject)f(to)f
-(the)i(setting)315 2506 y(of)f Fl(bell-style)p Fm(\))e(and)i(the)g
-(original)h(text)f(is)g(restored.)28 b(An)19 b(argumen)o(t)e(of)g
-Fc(n)i Fm(mo)o(v)o(es)e Fc(n)315 2560 y Fm(p)q(ositions)h(forw)o(ard)e
-(in)j(the)e(list)h(of)f(matc)o(hes;)h(a)f(negativ)o(e)g(argumen)o(t)g
-(ma)o(y)g(b)q(e)h(used)g(to)315 2615 y(mo)o(v)o(e)g(bac)o(kw)o(ard)h
-(through)g(the)g(list.)32 b(This)20 b(command)f(is)h(in)o(tended)g(to)f
-(b)q(e)h(b)q(ound)g(to)315 2668 y Ff(h)p 327 2642 V 327
-2670 a Fe(T)m(AB)p 327 2678 V 399 2668 a Ff(i)414 2670
-y Fm(,)15 b(but)g(is)h(un)o(b)q(ound)g(b)o(y)f(default.)p
-eop
-%%Page: 17 19
-17 18 bop 75 -58 a Fm(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1055
-b(17)75 149 y Fl(delete-char-or-list)13 b(\(\))315 204
-y Fm(Deletes)h(the)f(c)o(haracter)g(under)h(the)g(cursor)f(if)h(not)f
-(at)g(the)g(b)q(eginning)j(or)d(end)h(of)f(the)g(line)315
-259 y(\(lik)o(e)i Fl(delete-char)p Fm(\).)j(If)d(at)f(the)h(end)g(of)f
-(the)g(line,)i(b)q(eha)o(v)o(es)f(iden)o(tically)i(to)d
-Fl(possible-)315 314 y(completions)p Fm(.)k(This)e(command)f(is)h(un)o
-(b)q(ound)g(b)o(y)f(default.)75 428 y Fb(1.4.7)30 b(Keyb)r(oard)20
-b(Macros)75 551 y Fl(start-kbd-macro)13 b(\(C-x)i(\(\))315
-606 y Fm(Begin)h(sa)o(ving)f(the)h(c)o(haracters)e(t)o(yp)q(ed)i(in)o
-(to)f(the)g(curren)o(t)g(k)o(eyb)q(oard)g(macro.)75 699
-y Fl(end-kbd-macro)e(\(C-x)i(\)\))315 754 y Fm(Stop)f(sa)o(ving)f(the)h
-(c)o(haracters)f(t)o(yp)q(ed)h(in)o(to)f(the)h(curren)o(t)g(k)o(eyb)q
-(oard)f(macro)g(and)h(sa)o(v)o(e)f(the)315 809 y(de\014nition.)75
-902 y Fl(call-last-kbd-macro)g(\(C-x)h(e\))315 957 y
-Fm(Re-execute)k(the)g(last)f(k)o(eyb)q(oard)h(macro)f(de\014ned,)i(b)o
-(y)e(making)h(the)g(c)o(haracters)e(in)j(the)315 1012
-y(macro)14 b(app)q(ear)i(as)f(if)g(t)o(yp)q(ed)h(at)e(the)i(k)o(eyb)q
-(oard.)75 1126 y Fb(1.4.8)30 b(Some)20 b(Miscellaneous)h(Commands)75
-1249 y Fl(re-read-init-file)13 b(\(C-x)h(C-r\))315 1304
-y Fm(Read)d(in)g(the)g(con)o(ten)o(ts)g(of)f(the)h Fc(inputrc)k
-Fm(\014le,)d(and)g(incorp)q(orate)f(an)o(y)f(bindings)j(or)e(v)m
-(ariable)315 1358 y(assignmen)o(ts)k(found)h(there.)75
-1452 y Fl(abort)e(\(C-g\))315 1507 y Fm(Ab)q(ort)f(the)g(curren)o(t)h
-(editing)g(command)f(and)h(ring)f(the)h(terminal's)f(b)q(ell)i(\(sub)s
-(ject)e(to)g(the)315 1561 y(setting)i(of)g Fl(bell-style)p
-Fm(\).)75 1655 y Fl(do-uppercase-version)d(\(M-a,)j(M-b,)f(M-)p
-Fc(x)p Fl(,)h(...\))315 1710 y Fm(If)f(the)g(meta\014ed)g(c)o(haracter)
-f Fc(x)k Fm(is)d(lo)o(w)o(ercase,)g(run)g(the)g(command)f(that)h(is)g
-(b)q(ound)h(to)e(the)315 1764 y(corresp)q(onding)j(upp)q(ercase)g(c)o
-(haracter.)75 1858 y Fl(prefix-meta)e(\()377 1856 y Ff(h)p
-389 1830 70 2 v 389 1858 a Fe(ESC)p 389 1866 V 456 1856
-a Ff(i)471 1858 y Fl(\))315 1913 y Fm(Metafy)k(the)h(next)g(c)o
-(haracter)f(t)o(yp)q(ed.)30 b(This)20 b(is)f(for)f(k)o(eyb)q(oards)h
-(without)g(a)f(meta)g(k)o(ey)l(.)315 1968 y(T)o(yping)e(`)485
-1966 y Ff(h)p 496 1939 V 496 1968 a Fe(ESC)p 496 1975
-V 563 1966 a Ff(i)593 1968 y Fl(f)p Fm(')f(is)h(equiv)m(alen)o(t)h(to)d
-(t)o(yping)i Fg(M-f)p Fm(.)75 2061 y Fl(undo)f(\(C-_)f(or)h(C-x)g
-(C-u\))315 2116 y Fm(Incremen)o(tal)h(undo,)f(separately)h(remem)o(b)q
-(ered)g(for)e(eac)o(h)h(line.)75 2209 y Fl(revert-line)f(\(M-r\))315
-2264 y Fm(Undo)j(all)g(c)o(hanges)g(made)f(to)g(this)h(line.)26
-b(This)17 b(is)g(lik)o(e)h(executing)f(the)g Fl(undo)f
-Fm(command)315 2319 y(enough)g(times)f(to)g(get)f(bac)o(k)h(to)g(the)g
-(b)q(eginning.)75 2412 y Fl(tilde-expand)f(\(M-~\))315
-2467 y Fm(P)o(erform)g(tilde)j(expansion)f(on)f(the)g(curren)o(t)g(w)o
-(ord.)75 2560 y Fl(set-mark)f(\(C-@\))315 2615 y Fm(Set)i(the)h(mark)f
-(to)f(the)i(p)q(oin)o(t.)24 b(If)17 b(a)f(n)o(umeric)h(argumen)o(t)f
-(is)g(supplied,)j(the)e(mark)e(is)i(set)315 2670 y(to)e(that)f(p)q
-(osition.)p eop
-%%Page: 18 20
-18 19 bop 75 -58 a Fm(18)1299 b(GNU)15 b(Readline)h(Library)75
-149 y Fl(exchange-point-and-mark)c(\(C-x)j(C-x\))315
-204 y Fm(Sw)o(ap)g(the)h(p)q(oin)o(t)g(with)g(the)g(mark.)k(The)c
-(curren)o(t)f(cursor)h(p)q(osition)g(is)g(set)g(to)f(the)g(sa)o(v)o(ed)
-315 259 y(p)q(osition,)h(and)f(the)h(old)f(cursor)g(p)q(osition)h(is)g
-(sa)o(v)o(ed)f(as)g(the)g(mark.)75 347 y Fl(character-search)e(\(C-]\))
-315 402 y Fm(A)f(c)o(haracter)g(is)h(read)g(and)f(p)q(oin)o(t)h(is)g
-(mo)o(v)o(ed)f(to)g(the)g(next)h(o)q(ccurrence)g(of)f(that)g(c)o
-(haracter.)315 456 y(A)j(negativ)o(e)h(coun)o(t)f(searc)o(hes)g(for)f
-(previous)i(o)q(ccurrences.)75 544 y Fl(character-search-backward)c
-(\(M-C-]\))315 599 y Fm(A)22 b(c)o(haracter)g(is)h(read)f(and)h(p)q
-(oin)o(t)g(is)g(mo)o(v)o(ed)f(to)g(the)g(previous)h(o)q(ccurrence)h(of)
-e(that)315 654 y(c)o(haracter.)d(A)c(negativ)o(e)h(coun)o(t)f(searc)o
-(hes)g(for)f(subsequen)o(t)i(o)q(ccurrences.)75 741 y
-Fl(insert-comment)d(\(M-#\))315 796 y Fm(Without)18 b(a)f(n)o(umeric)i
-(argumen)o(t,)e(the)h(v)m(alue)h(of)f(the)f Fl(comment-begin)f
-Fm(v)m(ariable)k(is)e(in-)315 851 y(serted)e(at)f(the)h(b)q(eginning)i
-(of)d(the)h(curren)o(t)g(line.)23 b(If)16 b(a)g(n)o(umeric)h(argumen)o
-(t)e(is)h(supplied,)315 906 y(this)j(command)f(acts)g(as)f(a)h(toggle:)
-26 b(if)19 b(the)f(c)o(haracters)g(at)f(the)i(b)q(eginning)h(of)e(the)g
-(line)315 960 y(do)d(not)g(matc)o(h)g(the)g(v)m(alue)i(of)e
-Fl(comment-begin)p Fm(,)e(the)i(v)m(alue)i(is)f(inserted,)f(otherwise)h
-(the)315 1015 y(c)o(haracters)j(in)i Fl(comment-begin)d
-Fm(are)i(deleted)i(from)d(the)h(b)q(eginning)i(of)e(the)g(line.)36
-b(In)315 1070 y(either)16 b(case,)f(the)g(line)i(is)f(accepted)f(as)g
-(if)h(a)f(newline)i(had)e(b)q(een)i(t)o(yp)q(ed.)75 1158
-y Fl(dump-functions)c(\(\))315 1213 y Fm(Prin)o(t)g(all)h(of)f(the)g
-(functions)h(and)g(their)g(k)o(ey)f(bindings)i(to)d(the)i(Readline)g
-(output)f(stream.)315 1267 y(If)j(a)g(n)o(umeric)g(argumen)o(t)f(is)i
-(supplied,)h(the)e(output)f(is)i(formatted)d(in)j(suc)o(h)f(a)g(w)o(a)o
-(y)f(that)315 1322 y(it)g(can)h(b)q(e)g(made)f(part)f(of)h(an)g
-Fc(inputrc)k Fm(\014le.)i(This)16 b(command)f(is)h(un)o(b)q(ound)g(b)o
-(y)f(default.)75 1410 y Fl(dump-variables)e(\(\))315
-1465 y Fm(Prin)o(t)e(all)g(of)f(the)h(settable)g(v)m(ariables)h(and)f
-(their)g(v)m(alues)h(to)e(the)h(Readline)h(output)e(stream.)315
-1519 y(If)16 b(a)g(n)o(umeric)g(argumen)o(t)f(is)i(supplied,)h(the)e
-(output)f(is)i(formatted)d(in)j(suc)o(h)f(a)g(w)o(a)o(y)f(that)315
-1574 y(it)g(can)h(b)q(e)g(made)f(part)f(of)h(an)g Fc(inputrc)k
-Fm(\014le.)i(This)16 b(command)f(is)h(un)o(b)q(ound)g(b)o(y)f(default.)
-75 1662 y Fl(dump-macros)f(\(\))315 1717 y Fm(Prin)o(t)j(all)h(of)e
-(the)h(Readline)h(k)o(ey)f(sequences)h(b)q(ound)g(to)e(macros)g(and)h
-(the)g(strings)g(they)315 1771 y(output.)26 b(If)18 b(a)f(n)o(umeric)h
-(argumen)o(t)f(is)h(supplied,)i(the)d(output)g(is)h(formatted)e(in)j
-(suc)o(h)e(a)315 1826 y(w)o(a)o(y)d(that)g(it)i(can)f(b)q(e)g(made)g
-(part)g(of)f(an)h Fc(inputrc)k Fm(\014le.)i(This)15 b(command)g(is)h
-(un)o(b)q(ound)g(b)o(y)315 1881 y(default.)75 1969 y
-Fl(emacs-editing-mode)d(\(C-e\))315 2024 y Fm(When)j(in)g
-Fl(vi)e Fm(command)i(mo)q(de,)f(this)g(causes)h(a)f(switc)o(h)g(to)g
-Fl(emacs)f Fm(editing)j(mo)q(de.)75 2111 y Fl(vi-editing-mode)c
-(\(M-C-j\))315 2166 y Fm(When)j(in)g Fl(emacs)e Fm(editing)j(mo)q(de,)e
-(this)g(causes)h(a)f(switc)o(h)g(to)g Fl(vi)f Fm(editing)j(mo)q(de.)75
-2290 y Fk(1.5)33 b(Readline)23 b(vi)h(Mo)r(de)137 2385
-y Fm(While)13 b(the)f(Readline)i(library)e(do)q(es)g(not)g(ha)o(v)o(e)f
-(a)h(full)h(set)f(of)f Fl(vi)g Fm(editing)j(functions,)f(it)f(do)q(es)g
-(con)o(tain)75 2440 y(enough)17 b(to)g(allo)o(w)g(simple)h(editing)h
-(of)d(the)i(line.)27 b(The)17 b(Readline)h Fl(vi)f Fm(mo)q(de)g(b)q
-(eha)o(v)o(es)g(as)g(sp)q(eci\014ed)i(in)75 2495 y(the)c
-Fh(posix)g Fm(1003.2)f(standard.)137 2560 y(In)h(order)g(to)f(switc)o
-(h)g(in)o(teractiv)o(ely)i(b)q(et)o(w)o(een)f Fl(emacs)e
-Fm(and)i Fl(vi)f Fm(editing)i(mo)q(des,)f(use)f(the)h(command)75
-2615 y Fg(M-C-j)j Fm(\(b)q(ound)i(to)e(emacs-editing-mo)q(de)j(when)e
-(in)h Fl(vi)f Fm(mo)q(de)g(and)g(to)f(vi-editing-mo)q(de)k(in)e
-Fl(emacs)75 2670 y Fm(mo)q(de\).)g(The)15 b(Readline)i(default)f(is)f
-Fl(emacs)g Fm(mo)q(de.)p eop
-%%Page: 19 21
-19 20 bop 75 -58 a Fm(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1055
-b(19)137 149 y(When)16 b(y)o(ou)e(en)o(ter)h(a)g(line)i(in)e
-Fl(vi)g Fm(mo)q(de,)g(y)o(ou)g(are)f(already)i(placed)g(in)g
-(`insertion')f(mo)q(de,)g(as)g(if)g(y)o(ou)75 204 y(had)e(t)o(yp)q(ed)h
-(an)f(`)p Fl(i)p Fm('.)18 b(Pressing)608 202 y Ff(h)p
-620 176 70 2 v 620 204 a Fe(ESC)p 620 212 V 687 202 a
-Ff(i)715 204 y Fm(switc)o(hes)13 b(y)o(ou)g(in)o(to)g(`command')f(mo)q
-(de,)i(where)f(y)o(ou)g(can)g(edit)h(the)75 259 y(text)i(of)h(the)g
-(line)h(with)g(the)f(standard)f Fl(vi)h Fm(mo)o(v)o(emen)o(t)f(k)o
-(eys,)g(mo)o(v)o(e)g(to)h(previous)g(history)g(lines)i(with)75
-314 y(`)p Fl(k)p Fm(')14 b(and)i(subsequen)o(t)f(lines)i(with)f(`)p
-Fl(j)p Fm(',)e(and)h(so)g(forth.)p eop
-%%Page: 20 22
-20 21 bop 75 -58 a Fm(20)1299 b(GNU)15 b(Readline)h(Library)p
-eop
-%%Page: -1 23
--1 22 bop 1862 -58 a Fm(i)75 149 y Fi(T)-7 b(able)27
-b(of)f(Con)n(ten)n(ts)75 320 y Fk(1)67 b(Command)22 b(Line)i(Editing)d
-Fa(.)10 b(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)h
-(.)f(.)g(.)g(.)42 b Fk(1)224 389 y Fm(1.1)j(In)o(tro)q(duction)16
-b(to)f(Line)h(Editing)e Fd(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)27 b Fm(1)224 444 y(1.2)45 b(Readline)16 b(In)o(teraction)8
-b Fd(.)g(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)23 b Fm(1)374 499 y(1.2.1)44 b(Readline)16
-b(Bare)f(Essen)o(tials)f Fd(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)27
-b Fm(1)374 553 y(1.2.2)44 b(Readline)16 b(Mo)o(v)o(emen)o(t)e(Commands)
-7 b Fd(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
-(.)h(.)21 b Fm(2)374 608 y(1.2.3)44 b(Readline)16 b(Killing)i(Commands)
-11 b Fd(.)c(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)h(.)f(.)h(.)25 b Fm(2)374 663 y(1.2.4)44 b(Readline)16
-b(Argumen)o(ts)c Fd(.)c(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)27
-b Fm(3)374 718 y(1.2.5)44 b(Searc)o(hing)16 b(for)e(Commands)h(in)h
-(the)f(History)e Fd(.)8 b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)27
-b Fm(3)224 773 y(1.3)45 b(Readline)16 b(Init)h(File)e
-Fd(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)29 b Fm(4)374 827 y(1.3.1)44 b(Readline)16
-b(Init)g(File)h(Syn)o(tax)7 b Fd(.)g(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)21
-b Fm(4)374 882 y(1.3.2)44 b(Conditional)16 b(Init)g(Constructs)5
-b Fd(.)i(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)h(.)g(.)f(.)19 b Fm(9)374 937 y(1.3.3)44 b(Sample)16
-b(Init)g(File)11 b Fd(.)e(.)e(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
-(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)26 b Fm(9)224 992 y(1.4)45 b(Bindable)17 b(Readline)g(Commands)
-6 b Fd(.)h(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)21 b Fm(12)374
-1046 y(1.4.1)44 b(Commands)14 b(F)l(or)h(Mo)o(ving)e
-Fd(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)h(.)f(.)h(.)f(.)h(.)28 b Fm(12)374 1101 y(1.4.2)44
-b(Commands)14 b(F)l(or)h(Manipulating)i(The)e(History)9
-b Fd(.)e(.)h(.)f(.)h(.)f(.)h(.)24 b Fm(12)374 1156 y(1.4.3)44
-b(Commands)14 b(F)l(or)h(Changing)h(T)l(ext)e Fd(.)8
-b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)30
-b Fm(14)374 1211 y(1.4.4)44 b(Killing)18 b(And)e(Y)l(anking)9
-b Fd(.)e(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)24 b Fm(15)374
-1266 y(1.4.5)44 b(Sp)q(ecifying)17 b(Numeric)f(Argumen)o(ts)c
-Fd(.)c(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)27
-b Fm(16)374 1320 y(1.4.6)44 b(Letting)15 b(Readline)i(T)o(yp)q(e)e(F)l
-(or)g(Y)l(ou)10 b Fd(.)d(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)h(.)f(.)25 b Fm(16)374 1375 y(1.4.7)44 b(Keyb)q(oard)15
-b(Macros)6 b Fd(.)h(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)21
-b Fm(17)374 1430 y(1.4.8)44 b(Some)15 b(Miscellaneous)i(Commands)7
-b Fd(.)g(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-22 b Fm(17)224 1485 y(1.5)45 b(Readline)16 b(vi)g(Mo)q(de)e
-Fd(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)28 b Fm(18)p eop
-%%Page: -2 24
--2 23 bop 75 -58 a Fm(ii)1321 b(GNU)15 b(Readline)h(Library)p
-eop
-%%Trailer
-end
-userdict /end-hook known{end-hook}if
-%%EOF