git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH] Improve sed portability

From
CRChris Ridd <chris.ridd@isode.com>
Date
Jun 11, 2008, 13:09 UTC
Message-ID
<1213189759-11565-1-git-send-email-chris.ridd@isode.com>

On Solaris /usr/bin/sed apparently fails to process input that doesn't end in a \n. Consequently constructs like

  re=$(printf '%s' foo | sed -e 's/bar/BAR/g' $)

cause re to be set to the empty string. Such a construct is used in git-submodule.sh.

Changing the printf to add a \n seems the safest change. The POSIX-compliant seds shipped with Solaris do not have this problem.

Signed-off-by: Chris Ridd <chris.ridd@isode.com>
---
 git-submodule.sh |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/git-submodule.sh b/git-submodule.sh
index 1007372..e515bcc 100755
--- a/git-submodule.sh
+++ b/git-submodule.sh
@@ -73,7 +73,7 @@ resolve_relative_url ()
 module_name()
 {
 	# Do we have "submodule.<something>.path = $1" defined in .gitmodules file?
-	re=$(printf '%s' "$1" | sed -e 's/[].[^$\\*]/\\&/g')
+	re=$(printf "%s\n" "$1" | sed -e 's/[].[^$\\*]/\\&/g')
 	name=$( git config -f .gitmodules --get-regexp '^submodule\..*\.path$' |
 		sed -n -e 's|^submodule\.\(.*\)\.path '"$re"'$|\1|p' )
        test -z "$name" &&
-- 
1.5.3.6
Next: Johannes Sixt
Message 1 of 9 in “Improve sed portability”
  1. Improve sed portabilityChris Ridd, Jun 11, 2008
  2. Johannes SixtJun 11, 2008
  3. Chris RiddJun 11, 2008
  4. Jeff KingJun 11, 2008
  5. Johannes SixtJun 12, 2008
  6. Chris RiddJun 12, 2008
  7. Jeff KingJun 12, 2008
  8. Jakub NarebskiJul 13, 2008
  9. Junio C HamanoJun 12, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.