[gcc r17-2457] contrib: Fix exit status of relpath.sh for invalid args [PR125956]

Jonathan Wakely via Gcc-cvs <[email protected]>
Newsgroups gmane.comp.gcc.cvs
Message-ID <[email protected]>
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%%/}"
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.