aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--awklib/eg/lib/inplace.awk18
-rw-r--r--doc/ChangeLog5
-rw-r--r--doc/gawk.info189
-rw-r--r--doc/gawk.texi18
-rw-r--r--doc/gawktexi.in18
-rw-r--r--extension/ChangeLog4
-rw-r--r--extension/inplace.3am24
-rw-r--r--test/ChangeLog4
-rw-r--r--test/inplace1.ok2
-rw-r--r--test/inplace2.ok2
-rw-r--r--test/inplace3.ok4
11 files changed, 167 insertions, 121 deletions
diff --git a/awklib/eg/lib/inplace.awk b/awklib/eg/lib/inplace.awk
index 68dad92e..0d40d16e 100644
--- a/awklib/eg/lib/inplace.awk
+++ b/awklib/eg/lib/inplace.awk
@@ -1,6 +1,6 @@
# inplace --- load and invoke the inplace extension.
#
-# Copyright (C) 2013, 2017 the Free Software Foundation, Inc.
+# Copyright (C) 2013, 2017, 2019 the Free Software Foundation, Inc.
#
# This file is part of GAWK, the GNU implementation of the
# AWK Programming Language.
@@ -25,16 +25,21 @@
# Revised for namespaces
# Arnold Robbins, arnold@skeeve.com
# July 2017
+# June 2019, add backwards compatibility
@load "inplace"
# Please set inplace::suffix to make a backup copy. For example, you may
# want to set inplace::suffix to .bak on the command line or in a BEGIN rule.
+# Before there were namespaces in gawk, this extension used
+# INPLACE_SUFFIX as the variable for making backup copies. We allow this
+# too, so that any code that used the previous version continues to work.
+
# By default, each filename on the command line will be edited inplace.
-# But you can selectively disable this by adding an inplace=0 argument
+# But you can selectively disable this by adding an inplace::enable=0 argument
# prior to files that you do not want to process this way. You can then
-# reenable it later on the commandline by putting inplace=1 before files
+# reenable it later on the commandline by putting inplace::enable=1 before files
# that you wish to be subject to inplace editing.
# N.B. We call inplace::end() in the BEGINFILE and END rules so that any
@@ -47,15 +52,16 @@ BEGIN {
}
BEGINFILE {
+ sfx = (suffix ? suffix : awk::INPLACE_SUFFIX)
if (filename != "")
- end(filename, suffix)
+ end(filename, sfx)
if (enable)
- begin(filename = FILENAME, suffix)
+ begin(filename = FILENAME, sfx)
else
filename = ""
}
END {
if (filename != "")
- end(filename, suffix)
+ end(filename, (suffix ? suffix : awk::INPLACE_SUFFIX))
}
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 5ea91aaf..6a1a5ae4 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,8 @@
+2019-06-26 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawktexi.in (Extension Sample Inplace): Fix backwards
+ compatibility. Thanks to Andrew Schorr for most of the change.
+
2019-06-21 Arnold D. Robbins <arnold@skeeve.com>
* gawktexi.in (Input Exercises): Remove exercise that is
diff --git a/doc/gawk.info b/doc/gawk.info
index e5a52702..4e46df9e 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -27693,10 +27693,14 @@ and functions in the 'inplace' namespace (*note Namespaces::):
# Please set inplace::suffix to make a backup copy. For example, you may
# want to set inplace::suffix to .bak on the command line or in a BEGIN rule.
+ # Before there were namespaces in gawk, this extension used
+ # INPLACE_SUFFIX as the variable for making backup copies. We allow this
+ # too, so that any code that used the previous version continues to work.
+
# By default, each filename on the command line will be edited inplace.
- # But you can selectively disable this by adding an inplace=0 argument
+ # But you can selectively disable this by adding an inplace::enable=0 argument
# prior to files that you do not want to process this way. You can then
- # reenable it later on the commandline by putting inplace=1 before files
+ # reenable it later on the commandline by putting inplace::enable=1 before files
# that you wish to be subject to inplace editing.
# N.B. We call inplace::end() in the BEGINFILE and END rules so that any
@@ -27709,17 +27713,18 @@ and functions in the 'inplace' namespace (*note Namespaces::):
}
BEGINFILE {
+ sfx = (suffix ? suffix : awk::INPLACE_SUFFIX)
if (filename != "")
- end(filename, suffix)
+ end(filename, sfx)
if (enable)
- begin(filename = FILENAME, suffix)
+ begin(filename = FILENAME, sfx)
else
filename = ""
}
END {
if (filename != "")
- end(filename, suffix)
+ end(filename, (suffix ? suffix : awk::INPLACE_SUFFIX))
}
For each regular file that is processed, the extension redirects
@@ -37415,92 +37420,92 @@ Node: Extension Sample File Functions1111351
Node: Extension Sample Fnmatch1119000
Node: Extension Sample Fork1120487
Node: Extension Sample Inplace1121705
-Node: Extension Sample Ord1125009
-Node: Extension Sample Readdir1125845
-Ref: table-readdir-file-types1126734
-Node: Extension Sample Revout1127539
-Node: Extension Sample Rev2way1128128
-Node: Extension Sample Read write array1128868
-Node: Extension Sample Readfile1130810
-Node: Extension Sample Time1131905
-Node: Extension Sample API Tests1133253
-Node: gawkextlib1133745
-Node: Extension summary1136663
-Node: Extension Exercises1140365
-Node: Language History1141607
-Node: V7/SVR3.11143263
-Node: SVR41145415
-Node: POSIX1146849
-Node: BTL1148229
-Node: POSIX/GNU1148958
-Node: Feature History1154736
-Node: Common Extensions1170782
-Node: Ranges and Locales1172065
-Ref: Ranges and Locales-Footnote-11176681
-Ref: Ranges and Locales-Footnote-21176708
-Ref: Ranges and Locales-Footnote-31176943
-Node: Contributors1177164
-Node: History summary1183117
-Node: Installation1184497
-Node: Gawk Distribution1185441
-Node: Getting1185925
-Node: Extracting1186888
-Node: Distribution contents1188526
-Node: Unix Installation1195006
-Node: Quick Installation1195688
-Node: Shell Startup Files1198102
-Node: Additional Configuration Options1199191
-Node: Configuration Philosophy1201506
-Node: Non-Unix Installation1203875
-Node: PC Installation1204335
-Node: PC Binary Installation1205173
-Node: PC Compiling1205608
-Node: PC Using1206725
-Node: Cygwin1210278
-Node: MSYS1211377
-Node: VMS Installation1211878
-Node: VMS Compilation1212669
-Ref: VMS Compilation-Footnote-11213898
-Node: VMS Dynamic Extensions1213956
-Node: VMS Installation Details1215641
-Node: VMS Running1217894
-Node: VMS GNV1222173
-Node: VMS Old Gawk1222908
-Node: Bugs1223379
-Node: Bug address1224042
-Node: Usenet1227024
-Node: Maintainers1228028
-Node: Other Versions1229289
-Node: Installation summary1236377
-Node: Notes1237579
-Node: Compatibility Mode1238373
-Node: Additions1239155
-Node: Accessing The Source1240080
-Node: Adding Code1241517
-Node: New Ports1247736
-Node: Derived Files1252111
-Ref: Derived Files-Footnote-11257771
-Ref: Derived Files-Footnote-21257806
-Ref: Derived Files-Footnote-31258404
-Node: Future Extensions1258518
-Node: Implementation Limitations1259176
-Node: Extension Design1260359
-Node: Old Extension Problems1261503
-Ref: Old Extension Problems-Footnote-11263021
-Node: Extension New Mechanism Goals1263078
-Ref: Extension New Mechanism Goals-Footnote-11266442
-Node: Extension Other Design Decisions1266631
-Node: Extension Future Growth1268744
-Node: Notes summary1269580
-Node: Basic Concepts1270738
-Node: Basic High Level1271419
-Ref: figure-general-flow1271701
-Ref: figure-process-flow1272386
-Ref: Basic High Level-Footnote-11275687
-Node: Basic Data Typing1275872
-Node: Glossary1279200
-Node: Copying1311038
-Node: GNU Free Documentation License1348581
-Node: Index1373701
+Node: Extension Sample Ord1125330
+Node: Extension Sample Readdir1126166
+Ref: table-readdir-file-types1127055
+Node: Extension Sample Revout1127860
+Node: Extension Sample Rev2way1128449
+Node: Extension Sample Read write array1129189
+Node: Extension Sample Readfile1131131
+Node: Extension Sample Time1132226
+Node: Extension Sample API Tests1133574
+Node: gawkextlib1134066
+Node: Extension summary1136984
+Node: Extension Exercises1140686
+Node: Language History1141928
+Node: V7/SVR3.11143584
+Node: SVR41145736
+Node: POSIX1147170
+Node: BTL1148550
+Node: POSIX/GNU1149279
+Node: Feature History1155057
+Node: Common Extensions1171103
+Node: Ranges and Locales1172386
+Ref: Ranges and Locales-Footnote-11177002
+Ref: Ranges and Locales-Footnote-21177029
+Ref: Ranges and Locales-Footnote-31177264
+Node: Contributors1177485
+Node: History summary1183438
+Node: Installation1184818
+Node: Gawk Distribution1185762
+Node: Getting1186246
+Node: Extracting1187209
+Node: Distribution contents1188847
+Node: Unix Installation1195327
+Node: Quick Installation1196009
+Node: Shell Startup Files1198423
+Node: Additional Configuration Options1199512
+Node: Configuration Philosophy1201827
+Node: Non-Unix Installation1204196
+Node: PC Installation1204656
+Node: PC Binary Installation1205494
+Node: PC Compiling1205929
+Node: PC Using1207046
+Node: Cygwin1210599
+Node: MSYS1211698
+Node: VMS Installation1212199
+Node: VMS Compilation1212990
+Ref: VMS Compilation-Footnote-11214219
+Node: VMS Dynamic Extensions1214277
+Node: VMS Installation Details1215962
+Node: VMS Running1218215
+Node: VMS GNV1222494
+Node: VMS Old Gawk1223229
+Node: Bugs1223700
+Node: Bug address1224363
+Node: Usenet1227345
+Node: Maintainers1228349
+Node: Other Versions1229610
+Node: Installation summary1236698
+Node: Notes1237900
+Node: Compatibility Mode1238694
+Node: Additions1239476
+Node: Accessing The Source1240401
+Node: Adding Code1241838
+Node: New Ports1248057
+Node: Derived Files1252432
+Ref: Derived Files-Footnote-11258092
+Ref: Derived Files-Footnote-21258127
+Ref: Derived Files-Footnote-31258725
+Node: Future Extensions1258839
+Node: Implementation Limitations1259497
+Node: Extension Design1260680
+Node: Old Extension Problems1261824
+Ref: Old Extension Problems-Footnote-11263342
+Node: Extension New Mechanism Goals1263399
+Ref: Extension New Mechanism Goals-Footnote-11266763
+Node: Extension Other Design Decisions1266952
+Node: Extension Future Growth1269065
+Node: Notes summary1269901
+Node: Basic Concepts1271059
+Node: Basic High Level1271740
+Ref: figure-general-flow1272022
+Ref: figure-process-flow1272707
+Ref: Basic High Level-Footnote-11276008
+Node: Basic Data Typing1276193
+Node: Glossary1279521
+Node: Copying1311359
+Node: GNU Free Documentation License1348902
+Node: Index1374022

End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index 25fb3486..94ff298f 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -37601,7 +37601,7 @@ all the variables and functions in the @code{inplace} namespace
@ignore
@c file eg/lib/inplace.awk
#
-# Copyright (C) 2013, 2017 the Free Software Foundation, Inc.
+# Copyright (C) 2013, 2017, 2019 the Free Software Foundation, Inc.
#
# This file is part of GAWK, the GNU implementation of the
# AWK Programming Language.
@@ -37626,6 +37626,7 @@ all the variables and functions in the @code{inplace} namespace
# Revised for namespaces
# Arnold Robbins, arnold@@skeeve.com
# July 2017
+# June 2019, add backwards compatibility
@c endfile
@end ignore
@c file eg/lib/inplace.awk
@@ -37635,10 +37636,14 @@ all the variables and functions in the @code{inplace} namespace
# Please set inplace::suffix to make a backup copy. For example, you may
# want to set inplace::suffix to .bak on the command line or in a BEGIN rule.
+# Before there were namespaces in gawk, this extension used
+# INPLACE_SUFFIX as the variable for making backup copies. We allow this
+# too, so that any code that used the previous version continues to work.
+
# By default, each filename on the command line will be edited inplace.
-# But you can selectively disable this by adding an inplace=0 argument
+# But you can selectively disable this by adding an inplace::enable=0 argument
# prior to files that you do not want to process this way. You can then
-# reenable it later on the commandline by putting inplace=1 before files
+# reenable it later on the commandline by putting inplace::enable=1 before files
# that you wish to be subject to inplace editing.
# N.B. We call inplace::end() in the BEGINFILE and END rules so that any
@@ -37655,10 +37660,11 @@ BEGIN @{
@group
BEGINFILE @{
+ sfx = (suffix ? suffix : awk::INPLACE_SUFFIX)
if (filename != "")
- end(filename, suffix)
+ end(filename, sfx)
if (enable)
- begin(filename = FILENAME, suffix)
+ begin(filename = FILENAME, sfx)
else
filename = ""
@}
@@ -37667,7 +37673,7 @@ BEGINFILE @{
@group
END @{
if (filename != "")
- end(filename, suffix)
+ end(filename, (suffix ? suffix : awk::INPLACE_SUFFIX))
@}
@end group
@c endfile
diff --git a/doc/gawktexi.in b/doc/gawktexi.in
index c60b0238..55e485eb 100644
--- a/doc/gawktexi.in
+++ b/doc/gawktexi.in
@@ -36574,7 +36574,7 @@ all the variables and functions in the @code{inplace} namespace
@ignore
@c file eg/lib/inplace.awk
#
-# Copyright (C) 2013, 2017 the Free Software Foundation, Inc.
+# Copyright (C) 2013, 2017, 2019 the Free Software Foundation, Inc.
#
# This file is part of GAWK, the GNU implementation of the
# AWK Programming Language.
@@ -36599,6 +36599,7 @@ all the variables and functions in the @code{inplace} namespace
# Revised for namespaces
# Arnold Robbins, arnold@@skeeve.com
# July 2017
+# June 2019, add backwards compatibility
@c endfile
@end ignore
@c file eg/lib/inplace.awk
@@ -36608,10 +36609,14 @@ all the variables and functions in the @code{inplace} namespace
# Please set inplace::suffix to make a backup copy. For example, you may
# want to set inplace::suffix to .bak on the command line or in a BEGIN rule.
+# Before there were namespaces in gawk, this extension used
+# INPLACE_SUFFIX as the variable for making backup copies. We allow this
+# too, so that any code that used the previous version continues to work.
+
# By default, each filename on the command line will be edited inplace.
-# But you can selectively disable this by adding an inplace=0 argument
+# But you can selectively disable this by adding an inplace::enable=0 argument
# prior to files that you do not want to process this way. You can then
-# reenable it later on the commandline by putting inplace=1 before files
+# reenable it later on the commandline by putting inplace::enable=1 before files
# that you wish to be subject to inplace editing.
# N.B. We call inplace::end() in the BEGINFILE and END rules so that any
@@ -36628,10 +36633,11 @@ BEGIN @{
@group
BEGINFILE @{
+ sfx = (suffix ? suffix : awk::INPLACE_SUFFIX)
if (filename != "")
- end(filename, suffix)
+ end(filename, sfx)
if (enable)
- begin(filename = FILENAME, suffix)
+ begin(filename = FILENAME, sfx)
else
filename = ""
@}
@@ -36640,7 +36646,7 @@ BEGINFILE @{
@group
END @{
if (filename != "")
- end(filename, suffix)
+ end(filename, (suffix ? suffix : awk::INPLACE_SUFFIX))
@}
@end group
@c endfile
diff --git a/extension/ChangeLog b/extension/ChangeLog
index 3d83f77e..22d73d09 100644
--- a/extension/ChangeLog
+++ b/extension/ChangeLog
@@ -1,3 +1,7 @@
+2019-06-26 Arnold D. Robbins <arnold@skeeve.com>
+
+ * inplace.3am: Update to match current code's behavior.
+
2019-06-18 Arnold D. Robbins <arnold@skeeve.com>
* 5.0.1: Release tar ball made.
diff --git a/extension/inplace.3am b/extension/inplace.3am
index 48fac54a..66047442 100644
--- a/extension/inplace.3am
+++ b/extension/inplace.3am
@@ -1,4 +1,4 @@
-.TH INPLACE 3am "Feb 02 2018" "Free Software Foundation" "GNU Awk Extension Modules"
+.TH INPLACE 3am "Jun 26 2018" "Free Software Foundation" "GNU Awk Extension Modules"
.SH NAME
inplace \- emulate sed/perl/ruby in-place editing
.SH SYNOPSIS
@@ -24,7 +24,7 @@ By default, each named file on the command line is
replaced with a new file of the same name whose contents
are the results of running the AWK program.
If the user supplies an AWK variable named
-.B INPLACE_SUFFIX
+.B inplace::suffix
in a
.B BEGIN
rule or on the command line, then the
@@ -33,17 +33,27 @@ extension concatenates that suffix onto the original
filename and uses the result as a filename for renaming
the original.
.PP
+For backwards compatibility, the variable will also check
+.B INPLACE_SUFFIX
+(in the
+.B awk
+namespace) for the suffix to use if
+.B inplace::suffix
+is not set.
+.PP
One can disable inplace editing selectively by placing
-.B inplace=0
+.B inplace::enable=0
on the command line prior to files that should be processed normally.
One can reenable inplace editing by placing
-.B inplace=1
+.B inplace::enable=1
prior to files that should be subject to inplace editing.
.\" .SH NOTES
.SH BUGS
-While the extension does attempt to preserve ownership and permissions, it makes no attempt to copy the ACLs from the original file.
+While the extension does attempt to preserve ownership and permissions,
+it makes no attempt to copy the ACLs from the original file.
.PP
-If the program dies prematurely, as might happen if an unhandled signal is received, a temporary file may be left behind.
+If the program dies prematurely, as might happen if an unhandled signal
+is received, a temporary file may be left behind.
.SH EXAMPLE
.ft CW
.nf
@@ -66,7 +76,7 @@ gawk -i inplace -f \f(CIscriptfile\fP files ...
Andrew Schorr,
.BR schorr@telemetry-investments.com .
.SH COPYING PERMISSIONS
-Copyright \(co 2012, 2013, 2015, 2018,
+Copyright \(co 2012, 2013, 2015, 2018, 2019,
Free Software Foundation, Inc.
.PP
Permission is granted to make and distribute verbatim copies of
diff --git a/test/ChangeLog b/test/ChangeLog
index 99391b0d..a538c593 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -5,6 +5,10 @@
nsawk2a.ok, nsawk2b.ok: New files.
Tests courtesy of Michal Jaegermann.
+ Unrelated:
+
+ * inplace1.ok, inplace2.ok, inplace3.ok: Updated after code changes.
+
2019-06-19 Arnold D. Robbins <arnold@skeeve.com>
* Makefile.am (EXTRA_DIST): New test: escapebrace.
diff --git a/test/inplace1.ok b/test/inplace1.ok
index 753079b3..f2e36d46 100644
--- a/test/inplace1.ok
+++ b/test/inplace1.ok
@@ -1,5 +1,5 @@
before
-gawk: inplace:53: warning: inplace::begin: disabling in-place editing for invalid FILENAME `-'
+gawk: inplace:59: warning: inplace::begin: disabling in-place editing for invalid FILENAME `-'
stdin start
is bar replaced?
stdin end
diff --git a/test/inplace2.ok b/test/inplace2.ok
index 753079b3..f2e36d46 100644
--- a/test/inplace2.ok
+++ b/test/inplace2.ok
@@ -1,5 +1,5 @@
before
-gawk: inplace:53: warning: inplace::begin: disabling in-place editing for invalid FILENAME `-'
+gawk: inplace:59: warning: inplace::begin: disabling in-place editing for invalid FILENAME `-'
stdin start
is bar replaced?
stdin end
diff --git a/test/inplace3.ok b/test/inplace3.ok
index 7802a0c8..b6f26505 100644
--- a/test/inplace3.ok
+++ b/test/inplace3.ok
@@ -1,11 +1,11 @@
before
-gawk: inplace:53: warning: inplace::begin: disabling in-place editing for invalid FILENAME `-'
+gawk: inplace:59: warning: inplace::begin: disabling in-place editing for invalid FILENAME `-'
stdin start
is bar replaced?
stdin end
after
Before
-gawk: inplace:53: warning: inplace::begin: disabling in-place editing for invalid FILENAME `-'
+gawk: inplace:59: warning: inplace::begin: disabling in-place editing for invalid FILENAME `-'
stdin start
is foo replaced?
stdin end