diff options
author | Harald van Dijk <truedfx@gentoo.org> | 2010-08-22 20:24:45 +0000 |
---|---|---|
committer | Harald van Dijk <truedfx@gentoo.org> | 2010-08-22 20:24:45 +0000 |
commit | f3e69bbf27feb4af1f8981179ab653cb808c17f4 (patch) | |
tree | 66e1da1542ec96d9d1573c67cb0d2fe84cc2dd7b /app-shells | |
parent | Ignore all peekfd build failures #330631 by Raúl Porcel. (diff) | |
download | gentoo-2-f3e69bbf27feb4af1f8981179ab653cb808c17f4.tar.gz gentoo-2-f3e69bbf27feb4af1f8981179ab653cb808c17f4.tar.bz2 gentoo-2-f3e69bbf27feb4af1f8981179ab653cb808c17f4.zip |
Fix IFS handling with read command (#331535)
(Portage version: 2.2_rc67/cvs/Linux x86_64)
Diffstat (limited to 'app-shells')
-rw-r--r-- | app-shells/dash/ChangeLog | 6 | ||||
-rw-r--r-- | app-shells/dash/dash-0.5.6.1-r1.ebuild (renamed from app-shells/dash/dash-0.5.6.1.ebuild) | 3 | ||||
-rw-r--r-- | app-shells/dash/files/dash-0.5.6.1-read-ifs.patch | 70 |
3 files changed, 78 insertions, 1 deletions
diff --git a/app-shells/dash/ChangeLog b/app-shells/dash/ChangeLog index 58508182d2de..f73e490df3cf 100644 --- a/app-shells/dash/ChangeLog +++ b/app-shells/dash/ChangeLog @@ -1,6 +1,12 @@ # ChangeLog for app-shells/dash # Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2 +*dash-0.5.6.1-r1 (22 Aug 2010) + + 22 Aug 2010; Harald van Dijk <truedfx@gentoo.org> -dash-0.5.6.1.ebuild, + +dash-0.5.6.1-r1.ebuild, +files/dash-0.5.6.1-read-ifs.patch: + Fix IFS handling with read command (#331535) + 31 Jul 2010; Lars Wendler <polynomial-c@gentoo.org> dash-0.5.6.1.ebuild: non-maintainer commit: Readded keywords. Ebuild now removes offending patch which lead to bug #328929. Commit done with kind permission from diff --git a/app-shells/dash/dash-0.5.6.1.ebuild b/app-shells/dash/dash-0.5.6.1-r1.ebuild index 745a86a88f6e..d79bac2040df 100644 --- a/app-shells/dash/dash-0.5.6.1.ebuild +++ b/app-shells/dash/dash-0.5.6.1-r1.ebuild @@ -1,6 +1,6 @@ # Copyright 1999-2010 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/app-shells/dash/dash-0.5.6.1.ebuild,v 1.3 2010/07/31 22:09:47 polynomial-c Exp $ +# $Header: /var/cvsroot/gentoo-x86/app-shells/dash/dash-0.5.6.1-r1.ebuild,v 1.1 2010/08/22 20:24:45 truedfx Exp $ EAPI="2" @@ -30,6 +30,7 @@ src_prepare() { rm */debian/diff/0006--INPUT-exit-127-if-command_file-is-given-but-doesn-t.diff \ || die #328929 epatch */debian/diff/* + epatch "${FILESDIR}"/${P}-read-ifs.patch #331535 # Fix the invalid sort sed -i -e 's/LC_COLLATE=C/LC_ALL=C/g' src/mkbuiltins diff --git a/app-shells/dash/files/dash-0.5.6.1-read-ifs.patch b/app-shells/dash/files/dash-0.5.6.1-read-ifs.patch new file mode 100644 index 000000000000..ac52610639c8 --- /dev/null +++ b/app-shells/dash/files/dash-0.5.6.1-read-ifs.patch @@ -0,0 +1,70 @@ +diff --git a/src/expand.c b/src/expand.c +index f2f964c..3ba1a38 100644 +--- a/src/expand.c ++++ b/src/expand.c +@@ -205,7 +205,7 @@ expandarg(union node *arg, struct arglist *arglist, int flag) + * TODO - EXP_REDIR + */ + if (flag & EXP_FULL) { +- ifsbreakup(p, &exparg); ++ ifsbreakup(p, &exparg, 0); + *exparg.lastp = NULL; + exparg.lastp = &exparg.list; + expandmeta(exparg.list, flag); +@@ -1022,9 +1022,11 @@ recordregion(int start, int end, int nulonly) + * Break the argument string into pieces based upon IFS and add the + * strings to the argument list. The regions of the string to be + * searched for IFS characters have been stored by recordregion. ++ * If bltin is set, use bltinlookup to search for IFS in the ++ * environment of the currently executing built-in command. + */ + void +-ifsbreakup(char *string, struct arglist *arglist) ++ifsbreakup(char *string, struct arglist *arglist, int bltin) + { + struct ifsregion *ifsp; + struct strlist *sp; +@@ -1040,7 +1042,13 @@ ifsbreakup(char *string, struct arglist *arglist) + if (ifslastp != NULL) { + ifsspc = 0; + nulonly = 0; +- realifs = ifsset() ? ifsval() : defifs; ++ if (!bltin) ++ realifs = ifsset() ? ifsval() : defifs; ++ else { ++ realifs = bltinlookup("IFS"); ++ if (realifs == NULL) ++ realifs = defifs; ++ } + ifsp = &ifsfirst; + do { + p = string + ifsp->begoff; +diff --git a/src/expand.h b/src/expand.h +index 405af0b..8eb5f07 100644 +--- a/src/expand.h ++++ b/src/expand.h +@@ -69,7 +69,7 @@ char *_rmescapes(char *, int); + int casematch(union node *, char *); + void recordregion(int, int, int); + void removerecordregions(int); +-void ifsbreakup(char *, struct arglist *); ++void ifsbreakup(char *, struct arglist *, int bltin); + + /* From arith.y */ + intmax_t arith(const char *); +diff --git a/src/miscbltin.c b/src/miscbltin.c +index 5ab1648..6810f5f 100644 +--- a/src/miscbltin.c ++++ b/src/miscbltin.c +@@ -85,9 +85,10 @@ readcmd_handle_line(char *line, char **ap, size_t len) + backup = sstrdup(line); + + arglist.lastp = &arglist.list; ++ removerecordregions(0); + recordregion(0, len - 1, 0); + +- ifsbreakup(s, &arglist); ++ ifsbreakup(s, &arglist, 1); + *arglist.lastp = NULL; + removerecordregions(0); + |