]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blobdiff - src/patches/bash/bash43-010
Merge branch 'next'
[people/pmueller/ipfire-2.x.git] / src / patches / bash / bash43-010
diff --git a/src/patches/bash/bash43-010 b/src/patches/bash/bash43-010
deleted file mode 100644 (file)
index 835a96e..0000000
+++ /dev/null
@@ -1,157 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-010
-
-Bug-Reported-by:       Albert Shih <Albert.Shih@obspm.fr>
-Bug-Reference-ID:      Wed, 5 Mar 2014 23:01:40 +0100
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00028.html
-
-Bug-Description:
-
-Patch (apply with `patch -p0'):
-
-This patch changes the behavior of programmable completion to compensate
-for two assumptions made by the bash-completion package.  Bash-4.3 changed
-to dequote the argument to programmable completion only under certain
-circumstances, to make the behavior of compgen more consistent when run
-from the command line -- closer to the behavior when run by a shell function
-run as part of programmable completion.  Bash-completion can pass quoted
-arguments to compgen when the original word to be completed was not quoted,
-expecting programmable completion to dequote the word before attempting
-completion.
-
-This patch fixes two cases:
-
-1.  An empty string that bash-completion passes to compgen as a quoted null
-    string ('').
-
-2.  An unquoted word that bash-completion quotes using single quotes or
-    backslashes before passing it to compgen.
-
-In these cases, since readline did not detect a quote character in the original
-word to be completed, bash-4.3 
-
-*** ../bash-4.3/externs.h      2014-01-02 14:58:20.000000000 -0500
---- externs.h  2014-03-13 14:42:57.000000000 -0400
-***************
-*** 325,328 ****
---- 325,329 ----
-  extern char *sh_backslash_quote_for_double_quotes __P((char *));
-  extern int sh_contains_shell_metas __P((char *));
-+ extern int sh_contains_quotes __P((char *));
-  
-  /* declarations for functions defined in lib/sh/spell.c */
-*** ../bash-4.3/lib/sh/shquote.c       2013-03-31 21:53:32.000000000 -0400
---- lib/sh/shquote.c   2014-03-13 14:42:57.000000000 -0400
-***************
-*** 312,313 ****
---- 312,327 ----
-    return (0);
-  }
-+ 
-+ int
-+ sh_contains_quotes (string)
-+      char *string;
-+ {
-+   char *s;
-+ 
-+   for (s = string; s && *s; s++)
-+     {
-+       if (*s == '\'' || *s == '"' || *s == '\\')
-+      return 1;
-+     }
-+   return 0;
-+ }
-*** ../bash-4.3/pcomplete.c    2013-08-26 15:23:45.000000000 -0400
---- pcomplete.c        2014-03-25 17:23:23.000000000 -0400
-***************
-*** 184,187 ****
---- 184,188 ----
-  COMPSPEC *pcomp_curcs;
-  const char *pcomp_curcmd;
-+ const char *pcomp_curtxt;
-  
-  #ifdef DEBUG
-***************
-*** 754,757 ****
---- 755,784 ----
-         dfn = (*rl_filename_dequoting_function) ((char *)text, rl_completion_quote_character);
-       }
-+       /* Intended to solve a mismatched assumption by bash-completion.  If
-+       the text to be completed is empty, but bash-completion turns it into
-+       a quoted string ('') assuming that this code will dequote it before
-+       calling readline, do the dequoting. */
-+       else if (iscompgen && iscompleting &&
-+             pcomp_curtxt && *pcomp_curtxt == 0 &&
-+             text && (*text == '\'' || *text == '"') && text[1] == text[0] && text[2] == 0 && 
-+             rl_filename_dequoting_function)
-+      dfn = (*rl_filename_dequoting_function) ((char *)text, rl_completion_quote_character);
-+       /* Another mismatched assumption by bash-completion.  If compgen is being
-+               run as part of bash-completion, and the argument to compgen is not
-+               the same as the word originally passed to the programmable completion
-+               code, dequote the argument if it has quote characters.  It's an
-+               attempt to detect when bash-completion is quoting its filename
-+               argument before calling compgen. */
-+       /* We could check whether gen_shell_function_matches is in the call
-+       stack by checking whether the gen-shell-function-matches tag is in
-+       the unwind-protect stack, but there's no function to do that yet.
-+       We could simply check whether we're executing in a function by
-+       checking variable_context, and may end up doing that. */
-+       else if (iscompgen && iscompleting && rl_filename_dequoting_function &&
-+             pcomp_curtxt && text &&
-+             STREQ (pcomp_curtxt, text) == 0 &&
-+             variable_context &&
-+             sh_contains_quotes (text))       /* guess */
-+      dfn = (*rl_filename_dequoting_function) ((char *)text, rl_completion_quote_character);
-        else
-       dfn = savestring (text);
-***************
-*** 1523,1527 ****
-  {
-    COMPSPEC *cs, *oldcs;
-!   const char *oldcmd;
-    STRINGLIST *ret;
-  
---- 1550,1554 ----
-  {
-    COMPSPEC *cs, *oldcs;
-!   const char *oldcmd, *oldtxt;
-    STRINGLIST *ret;
-  
-***************
-*** 1546,1552 ****
---- 1573,1581 ----
-    oldcs = pcomp_curcs;
-    oldcmd = pcomp_curcmd;
-+   oldtxt = pcomp_curtxt;
-  
-    pcomp_curcs = cs;
-    pcomp_curcmd = cmd;
-+   pcomp_curtxt = word;
-  
-    ret = gen_compspec_completions (cs, cmd, word, start, end, foundp);
-***************
-*** 1554,1557 ****
---- 1583,1587 ----
-    pcomp_curcs = oldcs;
-    pcomp_curcmd = oldcmd;
-+   pcomp_curtxt = oldtxt;
-  
-    /* We need to conditionally handle setting *retryp here */
-*** ../bash-4.3/patchlevel.h   2012-12-29 10:47:57.000000000 -0500
---- patchlevel.h       2014-03-20 20:01:28.000000000 -0400
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 9
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 10
-  
-  #endif /* _PATCHLEVEL_H_ */