GNU bug report logs - #28056
Substitution doing global when it should not.

Previous Next

Package: sed;

Reported by: Techwolf Lupindo <techwolf.lupindo <at> gmail.com>

Date: Fri, 11 Aug 2017 20:15:01 UTC

Severity: normal

Tags: notabug

Done: Eric Blake <eblake <at> redhat.com>

Bug is archived. No further changes may be made.

Full log


Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Techwolf Lupindo <techwolf.lupindo <at> gmail.com>
To: bug-sed <at> gnu.org
Subject: Substitution doing global when it should not.
Date: Fri, 11 Aug 2017 16:04:03 -0400
[Message part 1 (text/plain, inline)]
techwolf <at> laptop ~/test $ sed --version
sed (GNU sed) 4.4
Copyright (C) 2017 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html
>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Jay Fenlason, Tom Lord, Ken Pizzini,
and Paolo Bonzini.
GNU sed home page: <http://www.gnu.org/software/sed/>.
General help using GNU software: <http://www.gnu.org/gethelp/>.
E-mail bug reports to: <bug-sed <at> gnu.org>.

techwolf <at> laptop ~/test $ wget "
https://hg.phoenixviewer.com/phoenix-firestorm-lgpl/raw-file/9d58c58cca90/indra/cmake/BuildVersion.cmake
"

<snipped>

2017-08-11 15:39:45 (38.2 MB/s) - ‘BuildVersion.cmake’ saved [3605/3605]

techwolf <at> laptop ~/test $ sed -e 's:COMMAND ${MERCURIAL}:COMMAND
${MERCURIAL} --cwd ${CMAKE_SOURCE_DIR}:' BuildVersion.cmake >
BuildVersion1.cmake
techwolf <at> laptop ~/test $ sed -e 's:COMMAND ${MERCURIAL}:COMMAND
${MERCURIAL} --cwd ${CMAKE_SOURCE_DIR}:g' BuildVersion.cmake >
BuildVersion2.cmake
techwolf <at> laptop ~/test $ diff -u BuildVersion1.cmake BuildVersion2.cmake
techwolf <at> laptop ~/test $ diff -u BuildVersion.cmake BuildVersion1.cmake
--- BuildVersion.cmake  2017-08-11 15:39:45.639970357 -0400
+++ BuildVersion1.cmake 2017-08-11 15:40:47.646763237 -0400
@@ -25,10 +25,10 @@
                  #         building an earlier revision. Instead, we use
                  #         "hg identify -n" to get the local revision
number
                  #         of the actual state of the repository.
-                 #COMMAND ${MERCURIAL} log -r tip:0 --template '\\n'
+                 #COMMAND ${MERCURIAL} --cwd ${CMAKE_SOURCE_DIR} log -r
tip:0 --template '\\n'
                  #COMMAND ${WORDCOUNT} -l
                  #COMMAND ${SED} "s/ //g"
-                 COMMAND ${MERCURIAL} identify -n
+                 COMMAND ${MERCURIAL} --cwd ${CMAKE_SOURCE_DIR} identify -n
                  COMMAND ${SED} "s/+//"        # [CR] Strip off any + from
the revision number
                  OUTPUT_VARIABLE VIEWER_VERSION_REVISION
                  OUTPUT_STRIP_TRAILING_WHITESPACE

The only difference in the sed commands was s/// and s///g. The diff
between BuildVersion1.cmake and BuildVersion2.cmake should had one change.
But sed is matching two lines without the s///g. All docs I have read says
that without 'g', only the first match is changed. However, this is not in
my case and was not notice for over two years due to my build script not
breaking. I only notice this bug when I was doing some code cleanup and
scratching my head as to why my build script was not breaking when in
theory, it should had an error printed when hg could not see the repo.
[Message part 2 (text/html, inline)]

This bug report was last modified 7 years and 279 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.