https://gcc.gnu.org/g:f81f033bdfda4550419805bbb1eef770c2af7b23

commit r17-2457-gf81f033bdfda4550419805bbb1eef770c2af7b23
Author: Jonathan Wakely <[email protected]>
Date:   Wed Jun 24 21:50:24 2026 +0100

    contrib: Fix exit status of relpath.sh for invalid args [PR125956]
    
    The relpath.sh script always writes its usage message to stdout and
    exits with zero status, even for invalid arguments. This caused a
    problem for libstdc++-v3/src/c++23/Makefile which assumed that
    relpath.sh won't exit successfully on error, via:
    
    relpath=$(relpath.sh ...) && sed 's,@MODPATH@,$$relpath,' ...
    
    Because relpath.sh exits successfully for invalid args, the sed command
    still ran even when relpath.sh was invoked incorrectly.
    
    The libstdc++ Makefile has been changed to work around this, but
    relpath.sh should still have an idiomatic exit status.
    
    contrib/ChangeLog:
    
            PR libstdc++/125956
            * relpath.sh: For invalid arguments write to stderr and exit
            with non-zero status.

Diff:
---
 contrib/relpath.sh | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/contrib/relpath.sh b/contrib/relpath.sh
index 1b329fc04a78..286e7f1a1752 100755
--- a/contrib/relpath.sh
+++ b/contrib/relpath.sh
@@ -1,10 +1,18 @@
 #!/bin/sh
 
-if [ "$1" = "--help" -o $# -ne 2 -o -f "$1" ]; then
+usage()
+{
     echo Usage: relpath.sh FROM TO
     echo Print the relative path from FROM to TO
     echo FROM must be a directory, but need not exist
+}
+
+if [ "$1" = "--help" ]; then
+    usage
     exit 0
+elif [ $# -ne 2 -o -f "$1" ]; then
+    usage >&2
+    exit 1
 fi
 
 from="${1%%/}"

Reply via email to