Compare commits

...

No commits in common. "c8" and "c9-beta" have entirely different histories.
c8 ... c9-beta

4 changed files with 108 additions and 213 deletions

View File

@ -1 +1 @@
71fc3595865ea6ea859587cbbb35cbf9aeb39d2d SOURCES/gawk-4.2.1.tar.xz
02408f1be58747a0d8c16ef1d191398b4260c638 SOURCES/gawk-5.1.0.tar.xz

2
.gitignore vendored
View File

@ -1 +1 @@
SOURCES/gawk-4.2.1.tar.xz
SOURCES/gawk-5.1.0.tar.xz

View File

@ -1,193 +0,0 @@
From c1f670b26671cc8d60d967bbcb42cb8deb3baf2b Mon Sep 17 00:00:00 2001
From: "Arnold D. Robbins" <arnold@skeeve.com>
Date: Tue, 31 Jul 2018 21:40:49 +0300
Subject: Fix assigning $0 from a number.
---
ChangeLog | 6 ++++++
interpret.h | 1 +
test/ChangeLog | 5 +++++
test/Makefile.am | 5 ++++-
test/Makefile.in | 10 +++++++++-
test/Maketests | 5 +++++
test/assignnumfield.awk | 1 +
test/assignnumfield.in | 5 +++++
test/assignnumfield.ok | 5 +++++
9 files changed, 41 insertions(+), 2 deletions(-)
create mode 100644 test/assignnumfield.awk
create mode 100644 test/assignnumfield.in
create mode 100644 test/assignnumfield.ok
diff --git a/ChangeLog b/ChangeLog
index 904e984c..68210057 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2018-07-31 Arnold D. Robbins <arnold@skeeve.com>
+
+ * interpret.h (unfield): Add a call to force_string() on
+ new value. See test/assignnumfield.awk. Thanks to
+ Ralph Corderoy <ralph@inputplus.co.uk> for the bug report.
+
2018-02-25 Arnold D. Robbins <arnold@skeeve.com>
* 4.2.1: Release tar ball made.
diff --git a/interpret.h b/interpret.h
index 8408a532..fed0078c 100644
--- a/interpret.h
+++ b/interpret.h
@@ -46,16 +46,25 @@ unfield(NODE **l, NODE **r)
* valref 1, that effectively means that this is an assignment like "$n = $n",
* so a no-op, other than triggering $0 reconstitution.
*/
-#define UNFIELD(l, r) \
-{ \
- /* if was a field, turn it into a var */ \
- if ((r->flags & MALLOC) != 0 || r->valref == 1) { \
- l = r; \
- } else { \
- l = dupnode(r); \
- DEREF(r); \
- } \
-}
+// not a macro so we can step into it with a debugger
+#ifndef UNFIELD_DEFINED
+#define UNFIELD_DEFINED 1
+static inline void
+unfield(NODE **l, NODE **r)
+{
+ /* if was a field, turn it into a var */
+ if (((*r)->flags & MALLOC) != 0 || (*r)->valref == 1) {
+ (*l) = (*r);
+ } else {
+ (*l) = dupnode(*r);
+ DEREF(*r);
+ }
+ force_string(*l);
+}
+
+#define UNFIELD(l, r) unfield(& (l), & (r))
+#endif
+
int
r_interpret(INSTRUCTION *code)
{
diff --git a/test/ChangeLog b/test/ChangeLog
index 392d593b..2af89e66 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,8 @@
+2018-07-31 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (EXTRA_DIST): Add assignnumfield files.
+ * assignnumfield.awk, assignnumfield.in, assignnumfield.ok: New files.
+
2018-02-25 Arnold D. Robbins <arnold@skeeve.com>
* 4.2.1: Release tar ball made.
diff --git a/test/Makefile.am b/test/Makefile.am
index e6f1e223..774424f7 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -121,6 +121,9 @@ EXTRA_DIST = \
asort.ok \
asorti.awk \
asorti.ok \
+ assignnumfield.awk \
+ assignnumfield.in \
+ assignnumfield.ok \
awkpath.ok \
back89.awk \
back89.in \
@@ -1235,7 +1238,7 @@ BASIC_TESTS = \
addcomma anchgsub anchor argarray arrayind1 arrayind2 arrayind3 arrayparm \
arrayprm2 arrayprm3 arrayref arrymem1 arryref2 arryref3 arryref4 arryref5 \
arynasty arynocls aryprm1 aryprm2 aryprm3 aryprm4 aryprm5 aryprm6 aryprm7 \
- aryprm8 aryprm9 arysubnm aryunasgn asgext awkpath \
+ aryprm8 aryprm9 arysubnm aryunasgn asgext awkpath assignnumfield \
back89 backgsub badassign1 badbuild \
callparam childin clobber closebad clsflnam compare compare2 \
concat1 concat2 concat3 concat4 concat5 convfmt \
diff --git a/test/Makefile.in b/test/Makefile.in
index 532aca07..69b86d07 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -379,6 +379,9 @@ EXTRA_DIST = \
asort.ok \
asorti.awk \
asorti.ok \
+ assignnumfield.awk \
+ assignnumfield.in \
+ assignnumfield.ok \
awkpath.ok \
back89.awk \
back89.in \
@@ -1493,7 +1496,7 @@ BASIC_TESTS = \
addcomma anchgsub anchor argarray arrayind1 arrayind2 arrayind3 arrayparm \
arrayprm2 arrayprm3 arrayref arrymem1 arryref2 arryref3 arryref4 arryref5 \
arynasty arynocls aryprm1 aryprm2 aryprm3 aryprm4 aryprm5 aryprm6 aryprm7 \
- aryprm8 aryprm9 arysubnm aryunasgn asgext awkpath \
+ aryprm8 aryprm9 arysubnm aryunasgn asgext awkpath assignnumfield \
back89 backgsub badassign1 badbuild \
callparam childin clobber closebad clsflnam compare compare2 \
concat1 concat2 concat3 concat4 concat5 convfmt \
@@ -2787,6 +2790,11 @@ asgext:
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+assignnumfield:
+ @echo $@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
back89:
@echo $@
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
diff --git a/test/Maketests b/test/Maketests
index 8c604222..eb7c4651 100644
--- a/test/Maketests
+++ b/test/Maketests
@@ -140,6 +140,11 @@ asgext:
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+assignnumfield:
+ @echo $@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
back89:
@echo $@
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
diff --git a/test/assignnumfield.awk b/test/assignnumfield.awk
new file mode 100644
index 00000000..3a056cb0
--- /dev/null
+++ b/test/assignnumfield.awk
@@ -0,0 +1 @@
+{$0 = ++i} 1
diff --git a/test/assignnumfield.in b/test/assignnumfield.in
new file mode 100644
index 00000000..b82c4b2d
--- /dev/null
+++ b/test/assignnumfield.in
@@ -0,0 +1,5 @@
+a b c
+a b c
+a b c
+a b c
+a b c
diff --git a/test/assignnumfield.ok b/test/assignnumfield.ok
new file mode 100644
index 00000000..8a1218a1
--- /dev/null
+++ b/test/assignnumfield.ok
@@ -0,0 +1,5 @@
+1
+2
+3
+4
+5
--
cgit v1.2.1

View File

@ -30,10 +30,13 @@
# For more info: https://fedoraproject.org/wiki/Packaging:Guidelines#PIE
%global _hardened_build 1
# Extract the API major & minor versions, so we can export them below:
%global gawk_api_major %%(tar -xf %{SOURCE0} gawk-%{version}/gawkapi.h --to-stdout 2>/dev/null | \
# Extract the API major & minor versions, so we can export them below.
# Ensure that the major version is >= 3, since that patch is not yet
# in the tarball.
%global gawk_api_major %%(x=`tar -xf %{SOURCE0} gawk-%{version}/gawkapi.h --to-stdout 2>/dev/null | \
grep -i -e "gawk_api_major.*[[:digit:]]" | \
grep -o -e "[[:digit:]]" || :)
grep -o -e "[[:digit:]]"`; \
[ "$x" -lt 3 ] && x=3; echo $x)
%global gawk_api_minor %%(tar -xf %{SOURCE0} gawk-%{version}/gawkapi.h --to-stdout 2>/dev/null | \
grep -i -e "gawk_api_minor.*[[:digit:]]" | \
@ -43,8 +46,8 @@
Name: gawk
Summary: The GNU version of the AWK text processing utility
Version: 4.2.1
Release: 4%{?dist}
Version: 5.1.0
Release: 6%{?dist}
License: GPLv3+ and GPLv2+ and LGPLv2+ and BSD
@ -69,7 +72,6 @@ BuildRequires: gcc
BuildRequires: grep
BuildRequires: ghostscript
BuildRequires: automake
# Extending GAWK possibilities:
BuildRequires: libsigsegv-devel
BuildRequires: mpfr-devel
@ -80,6 +82,9 @@ BuildRequires: texinfo-tex
BuildRequires: texlive-ec
BuildRequires: texlive-cm-super
# Make check
BuildRequires: glibc-all-langpacks
# NOTE: In case any patch updates the awkgram.y or command.y (IOW if anything
# changes the timestamp of awkgram.y, and it becomes newer than awkgram.c,
# same applies for command.y), the 'make' command will automatically try
@ -94,6 +99,12 @@ BuildRequires: texlive-cm-super
# For more info, see: https://bugzilla.redhat.com/show_bug.cgi?id=1176993
BuildRequires: bison
# After patching the awkgram.y, and running autoreconf, we now need additional
# packages to correctly finish the build. These should not be needed in the
# future, once upstream fixes their requirement on 'aclocal-1.15'.
BuildRequires: automake
BuildRequires: make
# =============================================================================
# NOTE: 'autosetup' macro (below) uses 'git' for applying the patches:
@ -104,8 +115,12 @@ BuildRequires: bison
# Upstream patches -- official upstream patches released by upstream since the
# ---------------- last rebase that are necessary for any reason:
#Patch000: example000.patch
Patch000: assign-int.patch
Patch001: proc-rv.patch
#Parts of the patch dealing with .info files, were removed, some parts of documentation might be broken
#Patch008: gawk-api-version.patch
# Downstream patches -- these should be always included when doing rebase:
# ------------------
@ -121,6 +136,7 @@ Patch001: proc-rv.patch
# Patches to be removed -- deprecated functionality which shall be removed at
# --------------------- some point in the future:
#Patch200: gawk-4.2.1-200-fix-build-for-f29.patch
%description
@ -163,6 +179,16 @@ displaying images. Therefore, this doc subpackage can provide you with HTML, PDF
and PS versions of those documents, which might be useful when you need to
access them regularly, and/or when you do not have access to Internet.
# ---------------
%package all-langpacks
Summary: Additional localisation files for gawk utility
Supplements: %{name} = %{version}-%{release}
Conflicts: %{name} < 5.0.1-8
%description all-langpacks
The base package of gawk supports only the english localisation. This subpackage
contains additional localisation files.
# === BUILD INSTRUCTIONS ======================================================
# Call the 'autosetup' macro to prepare the environment, but do not patch the
@ -179,7 +205,10 @@ git commit --all --amend --no-edit > /dev/null
# ---------------
%build
autoreconf
# NOTE: The re-generating of ./configure (below) should be removed once the
# direct dependency on 'aclocal-1.15' is fixed in upstream and backported.
autoreconf --force --verbose
%configure
%make_build
@ -227,7 +256,8 @@ install -m 0644 -p doc/gawkinet.{pdf,ps} %{buildroot}%{_docdir}/%{name}
# === PACKAGING INSTRUCTIONS ==================================================
%files -f %{name}.lang
#%files -f %{name}.lang
%files
%{_bindir}/*awk
%{_libdir}/*awk
%{_datadir}/*awk
@ -241,6 +271,8 @@ install -m 0644 -p doc/gawkinet.{pdf,ps} %{buildroot}%{_docdir}/%{name}
%doc NEWS README POSIX.STD README_d/README.multibyte
%license COPYING LICENSE.GPLv2 LICENSE.LGPLv2 LICENSE.BSD
# ---------------
%files -f %{name}.lang all-langpacks
# ---------------
%files devel
@ -257,17 +289,73 @@ install -m 0644 -p doc/gawkinet.{pdf,ps} %{buildroot}%{_docdir}/%{name}
# =============================================================================
%changelog
* Fri Feb 11 2022 Jakub Martisko <jamartis@redhat.com> - 4.2.1-4
- Rebuild with some gating tests disabled
Resolves: rhbz#2053515
* Wed Feb 16 2022 Jakub Martisko <jamartis@redhat.com> - 5.1.0-6
Fix the issue with incorect handling of return values of some processes
Resolves: rhbz#2055107
* Thu Feb 10 2022 Jakub Martisko <jamartis@redhat.com> - 4.2.1-3
Fix the issue with an incorect handling of return code of some processes
Resolves: rhbz#2018077
* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 5.1.0-5
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
Related: rhbz#1991688
* Tue Nov 24 2020 Jakub Martisko <jamartis@redhat.com> - 4.2.1-2
- Fix an issue with an int() value not being assigned to a variable
Resolves: #1893370
* Thu Apr 15 2021 Mohan Boddu <mboddu@redhat.com> - 5.1.0-4
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 5.1.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 5.1.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Tue Jul 21 2020 Jakub Martisko <jamartis@redhat.com> - 5.1.0-1
- New upstream release
* Tue Feb 18 2020 Jakub Martisko <jamartis@redhat.com> - 5.0.1-8
- Split the package into the main package and locales subpackage
* Tue Jan 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 5.0.1-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Wed Oct 9 2019 Jerry James <loganjerry@gmail.com> - 5.0.1-6
- Rebuild for mpfr 4
* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 5.0.1-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Sat Jul 20 2019 Andrew Schorr <ajschorr@fedoraproject.org> - 5.0.1-4
- Force api_major_version >= 3 because patch is not in tarball yet
* Thu Jul 11 2019 Andrew Schorr <ajschorr@fedoraproject.org> - 5.0.1-3
- Add upstream patch to fix the API version number
* Thu Jun 27 2019 Jakub Martisko <jamartis@redhat.com> - 5.0.1-2
- Fix the bacward compatibility of the inplace extension
- (renaming of some variables due to introduction of namespaces)
Resolves: #1723359
* Mon Jun 24 2019 Jakub Martisko <jamartis@redhat.com> - 5.0.1-1
- New upstream release
Resolves: #1674922
* Sun Feb 17 2019 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 4.2.1-6
- Rebuild for readline 8.0
* Wed Feb 13 2019 Jakub Martisko <jamartis@redhat.com> - 4.2.1-5
- Fix FTBFS caused by missing glibc langpacks required by make check
Resolves: #1674922
* Thu Jan 31 2019 Fedora Release Engineering <releng@fedoraproject.org> - 4.2.1-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 4.2.1-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Thu Jun 21 2018 David Kaspar [Dee'Kej] <dkaspar@redhat.com> - 4.2.1-2
- 5 important patches backported from upstream per their request:
gawk-4.2.1-000-add-support-for-a-and-A-in-printf.patch
gawk-4.2.1-001-remove-the-tail-recursion-optimization.patch
gawk-4.2.1-002-copy-MPZ-MPFR-bits-also-in-r_dupnode.patch
gawk-4.2.1-003-fix-rebuilding-records-if-using-API-parser.patch
gawk-4.2.1-004-fix-a-corner-case-with-EPIPE-to-stdout-stderr.patch
* Mon Feb 26 2018 David Kaspar [Dee'Kej] <dkaspar@redhat.com> - 4.2.1-1
- Rebase to latest stable release from upstream