1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
  
     | 
    
      #! /bin/sh -e
if [ $# -eq 3 -a "$2" = '-d' ]; then
    pdir="-d $3"
elif [ $# -ne 1 ]; then
    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
    exit 1
fi
case "$1" in
    -patch) patch $pdir -f --no-backup-if-mismatch -p3 < $0;;
    -unpatch) patch $pdir -f --no-backup-if-mismatch -R -p3 < $0;;
    *)
	echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
	exit 1
esac
exit 0
# DP: Support for /etc/inputrc in addition to ~/inputrc
diff -ur bash.saved/lib/readline/bind.c bash/lib/readline/bind.c
--- bash.saved/lib/readline/bind.c	2005-01-16 13:18:30.000000000 +0100
+++ bash/lib/readline/bind.c	2005-01-16 13:21:43.000000000 +0100
@@ -713,6 +713,9 @@
 /* The last key bindings file read. */
 static char *last_readline_init_file = (char *)NULL;
 
+/* Flag to read system init file */
+static int read_system_init_file = 0;
+
 /* The file we're currently reading key bindings from. */
 static const char *current_readline_init_file;
 static int current_readline_init_include_level;
@@ -780,7 +783,7 @@
    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
+     3. /etc/inputrc and ~/.inputrc
    If the file existed and could be opened and read, 0 is returned,
    otherwise errno is returned. */
 int
@@ -791,14 +794,31 @@
   if (filename == 0)
     {
       filename = last_readline_init_file;
-      if (filename == 0)
+      if (filename == 0) {
         filename = sh_get_env_value ("INPUTRC");
-      if (filename == 0)
+	read_system_init_file = 0;
+      }
+      if (filename == 0) {
 	filename = DEFAULT_INPUTRC;
+	read_system_init_file = 1;
+      }
     }
 
-  if (*filename == 0)
+  if (*filename == 0) {
     filename = DEFAULT_INPUTRC;
+    read_system_init_file = 1;
+  }
+
+  if (read_system_init_file)
+    if (filename == last_readline_init_file)
+      {
+	filename = savestring (filename);
+	_rl_read_init_file (SYSTEM_INPUTRC, 0);
+	free (last_readline_init_file);
+	last_readline_init_file = filename;
+      }
+    else
+      _rl_read_init_file (SYSTEM_INPUTRC, 0);
 
 #if defined (__MSDOS__)
   if (_rl_read_init_file (filename, 0) == 0)
Only in bash/lib/readline: bind.c.orig
Only in bash/lib/readline: bind.c.rej
diff -ur bash.saved/lib/readline/doc/rluser.texi bash/lib/readline/doc/rluser.texi
--- bash.saved/lib/readline/doc/rluser.texi	2005-01-16 13:18:30.000000000 +0100
+++ bash/lib/readline/doc/rluser.texi	2005-01-16 13:21:28.000000000 +0100
@@ -336,7 +336,8 @@
 @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}.
+that variable is unset, Readline will read both @file{/etc/inputrc} and 
+@file{~/.inputrc}.
 
 When a program which uses the Readline library starts up, the
 init file is read, and the key bindings are set.
diff -ur bash.saved/lib/readline/rlconf.h bash/lib/readline/rlconf.h
--- bash.saved/lib/readline/rlconf.h	2005-01-16 13:18:30.000000000 +0100
+++ bash/lib/readline/rlconf.h	2005-01-16 13:21:28.000000000 +0100
@@ -39,6 +39,7 @@
 
 /* The final, last-ditch effort file name for an init file. */
 #define DEFAULT_INPUTRC "~/.inputrc"
+#define SYSTEM_INPUTRC "/etc/inputrc"
 
 /* If defined, expand tabs to spaces. */
 #define DISPLAY_TABS
 
     |