diff options
author | Mike Frysinger <vapier@gentoo.org> | 2005-02-12 04:16:58 +0000 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2005-02-12 04:16:58 +0000 |
commit | 38fa8ffcb1f2dd14e3bc68d40f57a329bf709bf7 (patch) | |
tree | aea540e029f5e0ec9a70bd67d70a40fc7f0189ed /sys-apps/gawk | |
parent | old (diff) | |
download | gentoo-2-38fa8ffcb1f2dd14e3bc68d40f57a329bf709bf7.tar.gz gentoo-2-38fa8ffcb1f2dd14e3bc68d40f57a329bf709bf7.tar.bz2 gentoo-2-38fa8ffcb1f2dd14e3bc68d40f57a329bf709bf7.zip |
Add some patches from Fedora and xmlgawk support #57857 by Alcino Dall Igna Junior.
(Portage version: 2.0.51-r15)
Diffstat (limited to 'sys-apps/gawk')
-rw-r--r-- | sys-apps/gawk/ChangeLog | 11 | ||||
-rw-r--r-- | sys-apps/gawk/files/digest-gawk-3.1.4-r2 | 2 | ||||
-rw-r--r-- | sys-apps/gawk/files/gawk-3.1.3-getpgrp_void.patch | 47 | ||||
-rw-r--r-- | sys-apps/gawk/files/gawk-3.1.4-flonum.patch | 105 | ||||
-rw-r--r-- | sys-apps/gawk/files/gawk-3.1.4-nextc.patch | 28 | ||||
-rw-r--r-- | sys-apps/gawk/files/gawk-3.1.4-uplow.patch | 212 | ||||
-rw-r--r-- | sys-apps/gawk/gawk-3.1.4-r2.ebuild (renamed from sys-apps/gawk/gawk-3.1.4-r1.ebuild) | 21 |
7 files changed, 418 insertions, 8 deletions
diff --git a/sys-apps/gawk/ChangeLog b/sys-apps/gawk/ChangeLog index afb697932d81..eebf07733b72 100644 --- a/sys-apps/gawk/ChangeLog +++ b/sys-apps/gawk/ChangeLog @@ -1,6 +1,15 @@ # ChangeLog for sys-apps/gawk # Copyright 2002-2005 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/sys-apps/gawk/ChangeLog,v 1.50 2005/01/29 07:00:17 vapier Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-apps/gawk/ChangeLog,v 1.51 2005/02/12 04:16:58 vapier Exp $ + +*gawk-3.1.4-r2 (11 Feb 2005) + + 11 Feb 2005; Mike Frysinger <vapier@gentoo.org> + +files/gawk-3.1.3-getpgrp_void.patch, +files/gawk-3.1.4-flonum.patch, + +files/gawk-3.1.4-nextc.patch, +files/gawk-3.1.4-uplow.patch, + -gawk-3.1.4-r1.ebuild, +gawk-3.1.4-r2.ebuild: + Add some patches from Fedora and xmlgawk support #57857 by Alcino Dall Igna + Junior. *gawk-3.1.4-r1 (29 Jan 2005) diff --git a/sys-apps/gawk/files/digest-gawk-3.1.4-r2 b/sys-apps/gawk/files/digest-gawk-3.1.4-r2 new file mode 100644 index 000000000000..96e092b1b324 --- /dev/null +++ b/sys-apps/gawk/files/digest-gawk-3.1.4-r2 @@ -0,0 +1,2 @@ +MD5 3c8935efb9fdc7202720894279ad04a7 gawk-3.1.4.tar.gz 2260582 +MD5 7ff33a3753997f38a2a8343cc14796d2 patch_3.1.4__xml_20040813 50667 diff --git a/sys-apps/gawk/files/gawk-3.1.3-getpgrp_void.patch b/sys-apps/gawk/files/gawk-3.1.3-getpgrp_void.patch new file mode 100644 index 000000000000..13d01310211b --- /dev/null +++ b/sys-apps/gawk/files/gawk-3.1.3-getpgrp_void.patch @@ -0,0 +1,47 @@ +Ripped from Fedora. + +--- gawk-3.1.3/main.c.getpgrp_void 2004-01-26 12:08:26.000000000 +0100 ++++ gawk-3.1.3/main.c 2004-01-26 12:15:22.000000000 +0100 +@@ -874,14 +874,11 @@ + + PROCINFO_node = install("PROCINFO", + node((NODE *) NULL, Node_var_array, (NODE *) NULL)); +- + #ifdef GETPGRP_VOID +-#define getpgrp_arg() /* nothing */ ++ value = getpgrp(); + #else +-#define getpgrp_arg() getpid() ++ value = getpgrp(getpid()); + #endif +- +- value = getpgrp(getpgrp_arg()); + aptr = assoc_lookup(PROCINFO_node, tmp_string("pgrpid", 6), FALSE); + *aptr = make_number(value); + +--- gawk-3.1.3/io.c.getpgrp_void 2004-01-26 12:08:36.000000000 +0100 ++++ gawk-3.1.3/io.c 2004-01-26 12:16:04.000000000 +0100 +@@ -1422,11 +1422,6 @@ + return 0; + } + +-#ifdef GETPGRP_VOID +-#define getpgrp_arg() /* nothing */ +-#else +-#define getpgrp_arg() getpid() +-#endif + + /* pidopen --- "open" /dev/pid, /dev/ppid, and /dev/pgrpid */ + +@@ -1440,7 +1435,11 @@ + warning(_("use `PROCINFO[\"%s\"]' instead of `%s'"), cp, name); + + if (name[6] == 'g') ++#ifdef GETPGRP_VOID ++ sprintf(tbuf, "%d\n", (int) getpgrp()); ++#else + sprintf(tbuf, "%d\n", (int) getpgrp(getpgrp_arg())); ++#endif + else if (name[6] == 'i') + sprintf(tbuf, "%d\n", (int) getpid()); + else diff --git a/sys-apps/gawk/files/gawk-3.1.4-flonum.patch b/sys-apps/gawk/files/gawk-3.1.4-flonum.patch new file mode 100644 index 000000000000..5ba45cdd05ad --- /dev/null +++ b/sys-apps/gawk/files/gawk-3.1.4-flonum.patch @@ -0,0 +1,105 @@ +Ripped from Fedora. + +--- gawk-3.1.4/node.c.flonum 2004-07-28 15:45:04.000000000 +0200 ++++ gawk-3.1.4/node.c 2004-11-09 15:53:03.353119096 +0100 +@@ -91,7 +91,7 @@ + + if (do_non_decimal_data) { + errno = 0; +- if (! do_traditional && isnondecimal(cp)) { ++ if (! do_traditional && isnondecimal(cp, TRUE)) { + n->numbr = nondec2awknum(cp, cpend - cp); + goto finish; + } +@@ -584,3 +584,38 @@ + return c; + } + } ++ ++/* isnondecimal --- return true if number is not a decimal number */ ++ ++int ++isnondecimal(const char *str, int use_locale) ++{ ++ int dec_point = '.'; ++#if ENABLE_NLS && defined(HAVE_LOCALE_H) ++ if (use_locale) ++ dec_point = loc.decimal_point[0]; /* XXX --- assumes one char */ ++#endif ++ ++ if (str[0] != '0') ++ return FALSE; ++ ++ /* leading 0x or 0X */ ++ if (str[1] == 'x' || str[1] == 'X') ++ return TRUE; ++ ++ /* ++ * Numbers with '.', 'e', or 'E' are decimal. ++ * Have to check so that things like 00.34 are handled right. ++ * ++ * These beasts can have trailing whitespace. Deal with that too. ++ */ ++ for (; *str != '\0'; str++) { ++ if (*str == 'e' || *str == 'E' || *str == dec_point) ++ return FALSE; ++ else if (! ISDIGIT(*str)) ++ break; ++ } ++ ++ return TRUE; ++} ++ +--- gawk-3.1.4/awkgram.y.flonum 2004-07-26 16:11:12.000000000 +0200 ++++ gawk-3.1.4/awkgram.y 2004-11-09 15:53:03.355118792 +0100 +@@ -2069,12 +2069,14 @@ + eof_warned = TRUE; + } + tokadd('\0'); +- if (! do_traditional && isnondecimal(tokstart)) { +- static short warned = FALSE; +- if (do_lint && ! warned) { +- warned = TRUE; +- lintwarn("numeric constant `%.*s' treated as octal or hexadecimal", +- strlen(tokstart)-1, tokstart); ++ if (! do_traditional && isnondecimal(tokstart, FALSE)) { ++ if (do_lint) { ++ if (ISDIGIT(tokstart[1])) /* not an 'x' or 'X' */ ++ lintwarn("numeric constant `%.*s' treated as octal", ++ strlen(tokstart)-1, tokstart); ++ else if (tokstart[1] == 'x' || tokstart[1] == 'X') ++ lintwarn("numeric constant `%.*s' treated as hexadecimal", ++ strlen(tokstart)-1, tokstart); + } + yylval.nodeval = make_number(nondec2awknum(tokstart, strlen(tokstart))); + } else +--- gawk-3.1.4/builtin.c.flonum 2004-07-13 09:55:28.000000000 +0200 ++++ gawk-3.1.4/builtin.c 2004-11-09 15:53:03.357118488 +0100 +@@ -2779,7 +2779,7 @@ + + if ((tmp->flags & (NUMBER|NUMCUR)) != 0) + d = (double) force_number(tmp); +- else if (isnondecimal(tmp->stptr)) ++ else if (isnondecimal(tmp->stptr, TRUE)) + d = nondec2awknum(tmp->stptr, tmp->stlen); + else + d = (double) force_number(tmp); +--- gawk-3.1.4/awk.h.flonum 2004-07-26 16:11:05.000000000 +0200 ++++ gawk-3.1.4/awk.h 2004-11-09 15:53:03.358118336 +0100 +@@ -742,8 +742,6 @@ + /* ------------------------- Pseudo-functions ------------------------- */ + + #define is_identchar(c) (isalnum(c) || (c) == '_') +-#define isnondecimal(str) (((str)[0]) == '0' && (ISDIGIT((str)[1]) \ +- || (str)[1] == 'x' || (str)[1] == 'X')) + + #define var_uninitialized(n) ((n)->var_value == Nnull_string) + +@@ -1138,6 +1136,7 @@ + extern int avoid_dfa P((NODE *re, char *str, size_t len)); /* temporary */ + extern int reisstring P((const char *text, size_t len, Regexp *re, const char *buf)); + extern int remaybelong P((const char *text, size_t len)); ++extern int isnondecimal P((const char *str, int use_locale)); + + /* strncasecmp.c */ + #ifndef BROKEN_STRNCASECMP diff --git a/sys-apps/gawk/files/gawk-3.1.4-nextc.patch b/sys-apps/gawk/files/gawk-3.1.4-nextc.patch new file mode 100644 index 000000000000..bbed6591e24a --- /dev/null +++ b/sys-apps/gawk/files/gawk-3.1.4-nextc.patch @@ -0,0 +1,28 @@ +Ripped from Fedora. + +--- gawk-3.1.4/awkgram.y.nextc 2004-11-09 15:53:03.355118792 +0100 ++++ gawk-3.1.4/awkgram.y 2004-11-09 16:05:46.091165288 +0100 +@@ -1433,6 +1433,11 @@ + nextc(void) + { + if (gawk_mb_cur_max > 1) { ++ if (!lexptr || lexptr >= lexend) ++ if (!get_src_buf()) { ++ return EOF; ++ } ++ + /* Update the buffer index. */ + cur_ring_idx = (cur_ring_idx == RING_BUFFER_SIZE - 1)? 0 : + cur_ring_idx + 1; +@@ -1444,11 +1449,6 @@ + mbstate_t tmp_state; + size_t mbclen; + +- if (!lexptr || lexptr >= lexend) +- if (!get_src_buf()) { +- return EOF; +- } +- + for (idx = 0 ; lexptr + idx < lexend ; idx++) { + tmp_state = cur_mbstate; + mbclen = mbrlen(lexptr, idx + 1, &tmp_state); diff --git a/sys-apps/gawk/files/gawk-3.1.4-uplow.patch b/sys-apps/gawk/files/gawk-3.1.4-uplow.patch new file mode 100644 index 000000000000..2db5185595df --- /dev/null +++ b/sys-apps/gawk/files/gawk-3.1.4-uplow.patch @@ -0,0 +1,212 @@ +Ripped from Fedora. + +--- gawk-3.1.4/builtin.c.uplow 2004-11-09 15:53:03.357118488 +0100 ++++ gawk-3.1.4/builtin.c 2004-11-09 15:55:25.455516248 +0100 +@@ -1652,51 +1652,116 @@ + fflush(rp->fp); + } + ++/* wide_tolower_toupper --- lower- or uppercase a multibute string */ ++ ++typedef int (*isw_func)(wint_t); ++typedef wint_t (*tow_func)(wint_t); ++ ++static NODE * ++wide_tolower_toupper(NODE *t1, isw_func iswu, tow_func towl) ++{ ++#ifdef MBS_SUPPORT ++ register unsigned char *cp, *cpe; ++ register unsigned char *cp2; ++ size_t mbclen; ++ mbstate_t mbs, prev_mbs; ++ wchar_t wc; ++ NODE *t2; ++ /* ++ * Since the lowercase char and its uppercase equivalent may occupy ++ * different number of bytes (Turkish `i'), we cannot say the length ++ * of the output string. ++ * This approach is adapted from format_tree(). ++ */ ++ unsigned char *obuf; ++ size_t osiz, ofre; ++ ++ /* ++ * Better 2 spare bytes than 1, consistently with make_str_node(). ++ * And we need gawk_mb_cur_max free bytes before we convert the last ++ * char, so we add (gawk_mb_cur_max - 1). ++ */ ++ osiz = t1->stlen + 2 + (gawk_mb_cur_max - 1); ++ ofre = osiz - 2; ++ emalloc(obuf, char *, osiz, "wide_tolower_toupper"); ++ ++ memset(&mbs, 0, sizeof(mbstate_t)); ++ cp = (unsigned char *)t1->stptr; ++ cpe = (unsigned char *)(t1->stptr + t1->stlen); ++ cp2 = obuf; ++ while (cp < cpe) { ++ if (ofre < gawk_mb_cur_max) { ++ size_t olen = cp2 - obuf; ++ ofre += osiz; ++ osiz *= 2; ++ erealloc(obuf, char *, osiz, "wide_tolower_toupper"); ++ cp2 = obuf + olen; ++ } ++ prev_mbs = mbs; ++ mbclen = (size_t) mbrtowc(&wc, (char *) cp, cpe - cp, ++ &mbs); ++ if (mbclen == 0 || mbclen == (size_t) -1 || mbclen == (size_t) -2) { ++ /* Null wide char, or a problem appeared. */ ++ *cp2++ = *cp++; ++ ofre--; ++ continue; ++ } ++ ++ /* If the character doesn't need change, copy it. */ ++ if (!(*iswu)(wc)) { ++ ofre -= mbclen; ++ while (mbclen--) ++ *cp2++ = *cp++; ++ continue; ++ } ++ ++ /* Increment the input pointer. */ ++ cp += mbclen; ++ ++ /* Write the modified wide character. */ ++ mbclen = wcrtomb((char *) cp2, (*towl)(wc), &prev_mbs); ++ ++ if (mbclen > 0 && mbclen < (size_t) -2) { ++ /* Increment the output pointer. */ ++ cp2 += mbclen; ++ ofre -= mbclen; ++ } else { ++ /* A problem appeared. */ ++ cp2++; ++ ofre--; ++ } ++ } ++ t2 = make_str_node(obuf, cp2 - obuf, ALREADY_MALLOCED); ++ t2->flags |= TEMP; ++ return t2; ++#else ++ cant_happen(); ++ return NULL; ++#endif ++} ++ + /* do_tolower --- lower case a string */ + + NODE * + do_tolower(NODE *tree) + { + NODE *t1, *t2; +- register unsigned char *cp, *cp2; +-#ifdef MBS_SUPPORT +- size_t mbclen = 0; +- mbstate_t mbs, prev_mbs; +- if (gawk_mb_cur_max > 1) +- memset(&mbs, 0, sizeof(mbstate_t)); +-#endif + + t1 = tree_eval(tree->lnode); + if (do_lint && (t1->flags & (STRING|STRCUR)) == 0) + lintwarn(_("tolower: received non-string argument")); + t1 = force_string(t1); +- t2 = tmp_string(t1->stptr, t1->stlen); +- for (cp = (unsigned char *)t2->stptr, +- cp2 = (unsigned char *)(t2->stptr + t2->stlen); cp < cp2; cp++) +-#ifdef MBS_SUPPORT +- if (gawk_mb_cur_max > 1) { +- wchar_t wc; +- prev_mbs = mbs; +- mbclen = (size_t) mbrtowc(&wc, (char *) cp, cp2 - cp, +- &mbs); +- if ((mbclen != 1) && (mbclen != (size_t) -1) && +- (mbclen != (size_t) -2) && (mbclen != 0)) { +- /* a multibyte character. */ +- if (iswupper(wc)) { +- wc = towlower(wc); +- wcrtomb((char *) cp, wc, &prev_mbs); +- } +- /* Adjust the pointer. */ +- cp += mbclen - 1; +- } else { +- /* Otherwise we treat it as a singlebyte character. */ +- if (ISUPPER(*cp)) +- *cp = tolower(*cp); +- } +- } else +-#endif +- if (ISUPPER(*cp)) +- *cp = TOLOWER(*cp); ++ ++ if (gawk_mb_cur_max > 1) ++ t2 = wide_tolower_toupper(t1, &iswupper, &towlower); ++ else { ++ register unsigned char *cp, *cpe; ++ t2 = tmp_string(t1->stptr, t1->stlen); ++ for (cp = (unsigned char *)t2->stptr, ++ cpe = (unsigned char *)(t2->stptr + t2->stlen); cp < cpe; cp++) ++ if (ISUPPER(*cp)) ++ *cp = TOLOWER(*cp); ++ } + free_temp(t1); + return t2; + } +@@ -1707,45 +1772,22 @@ + do_toupper(NODE *tree) + { + NODE *t1, *t2; +- register unsigned char *cp, *cp2; +-#ifdef MBS_SUPPORT +- size_t mbclen = 0; +- mbstate_t mbs, prev_mbs; +- if (gawk_mb_cur_max > 1) +- memset(&mbs, 0, sizeof(mbstate_t)); +-#endif + + t1 = tree_eval(tree->lnode); + if (do_lint && (t1->flags & (STRING|STRCUR)) == 0) + lintwarn(_("toupper: received non-string argument")); + t1 = force_string(t1); +- t2 = tmp_string(t1->stptr, t1->stlen); +- for (cp = (unsigned char *)t2->stptr, +- cp2 = (unsigned char *)(t2->stptr + t2->stlen); cp < cp2; cp++) +-#ifdef MBS_SUPPORT +- if (gawk_mb_cur_max > 1) { +- wchar_t wc; +- prev_mbs = mbs; +- mbclen = (size_t) mbrtowc(&wc, (char *) cp, cp2 - cp, +- &mbs); +- if ((mbclen != 1) && (mbclen != (size_t) -1) && +- (mbclen != (size_t) -2) && (mbclen != 0)) { +- /* a multibyte character. */ +- if (iswlower(wc)) { +- wc = towupper(wc); +- wcrtomb((char *) cp, wc, &prev_mbs); +- } +- /* Adjust the pointer. */ +- cp += mbclen - 1; +- } else { +- /* Otherwise we treat it as a singlebyte character. */ +- if (ISLOWER(*cp)) +- *cp = toupper(*cp); +- } +- } else +-#endif +- if (ISLOWER(*cp)) +- *cp = TOUPPER(*cp); ++ ++ if (gawk_mb_cur_max > 1) ++ t2 = wide_tolower_toupper(t1, &iswlower, &towupper); ++ else { ++ register unsigned char *cp, *cpe; ++ t2 = tmp_string(t1->stptr, t1->stlen); ++ for (cp = (unsigned char *)t2->stptr, ++ cpe = (unsigned char *)(t2->stptr + t2->stlen); cp < cpe; cp++) ++ if (ISLOWER(*cp)) ++ *cp = TOUPPER(*cp); ++ } + free_temp(t1); + return t2; + } diff --git a/sys-apps/gawk/gawk-3.1.4-r1.ebuild b/sys-apps/gawk/gawk-3.1.4-r2.ebuild index b215d8b33af6..c071c31df383 100644 --- a/sys-apps/gawk/gawk-3.1.4-r1.ebuild +++ b/sys-apps/gawk/gawk-3.1.4-r2.ebuild @@ -1,30 +1,37 @@ # Copyright 1999-2005 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/sys-apps/gawk/gawk-3.1.4-r1.ebuild,v 1.1 2005/01/29 07:00:17 vapier Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-apps/gawk/gawk-3.1.4-r2.ebuild,v 1.1 2005/02/12 04:16:58 vapier Exp $ inherit eutils toolchain-funcs +XML_PATCH=patch_3.1.4__xml_20040813 DESCRIPTION="GNU awk pattern-matching language" HOMEPAGE="http://www.gnu.org/software/gawk/gawk.html" -SRC_URI="mirror://gnu/gawk/${P}.tar.gz" +SRC_URI="mirror://gnu/gawk/${P}.tar.gz + xml? ( http://home1.vr-web.de/~Juergen.Kahrs/${XML_PATCH} )" LICENSE="GPL-2" SLOT="0" KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86" -IUSE="nls build uclibc" +IUSE="nls build xml" RDEPEND="virtual/libc" DEPEND="${RDEPEND} nls? ( sys-devel/gettext )" src_unpack() { - unpack ${A} + unpack ${P}.tar.gz # Copy filefuncs module's source over ... cp -PR "${FILESDIR}"/filefuncs "${WORKDIR}"/ || die "cp failed" - cd ${S} - epatch ${FILESDIR}/${P}-disable-DFA.patch #78227 + cd "${S}" + epatch "${FILESDIR}"/${P}-disable-DFA.patch #78227 + epatch "${FILESDIR}"/${PN}-3.1.3-getpgrp_void.patch #fedora + epatch "${FILESDIR}"/${P}-flonum.patch #fedora + epatch "${FILESDIR}"/${P}-nextc.patch #fedora + epatch "${FILESDIR}"/${P}-uplow.patch #fedora + use xml && epatch "${DISTDIR}"/${XML_PATCH} #57857 # support for dec compiler. [[ $(tc-getCC) == "ccc" ]] && epatch ${FILESDIR}/${PN}-3.1.2-dec-alpha-compiler.diff } @@ -92,7 +99,7 @@ src_install() { done if ! use build ; then - cd ${S} + cd "${S}" dosym gawk.1.gz /usr/share/man/man1/awk.1.gz dodoc AUTHORS ChangeLog FUTURES LIMITATIONS NEWS PROBLEMS POSIX.STD README docinto README_d |