# inplace --- load and invoke the inplace extension. # # Copyright (C) 2013, 2017, 2019 the Free Software Foundation, Inc. # # This file is part of GAWK, the GNU implementation of the # AWK Programming Language. # # GAWK is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # GAWK is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA # # Andrew J. Schorr, aschorr@telemetry-investments.com # January 2013 # # 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::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::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 # actions in an ENDFILE rule will be redirected as expected. @namespace "inplace" BEGIN { enable = 1 # enabled by default } BEGINFILE { sfx = (suffix ? suffix : awk::INPLACE_SUFFIX) if (filename != "") end(filename, sfx) if (enable) begin(filename = FILENAME, sfx) else filename = "" } END { if (filename != "") end(filename, (suffix ? suffix : awk::INPLACE_SUFFIX)) }