diff options
-rw-r--r-- | doc/stdenv/stdenv.chapter.md | 4 | ||||
-rw-r--r-- | pkgs/stdenv/generic/setup.sh | 15 |
2 files changed, 14 insertions, 5 deletions
diff --git a/doc/stdenv/stdenv.chapter.md b/doc/stdenv/stdenv.chapter.md index 5f7f45dc443..ebfda97ba77 100644 --- a/doc/stdenv/stdenv.chapter.md +++ b/doc/stdenv/stdenv.chapter.md @@ -913,9 +913,9 @@ substitute ./foo.in ./foo.out \ --subst-var someVar ``` -### `substituteInPlace` \<file\> \<subs\> {#fun-substituteInPlace} +### `substituteInPlace` \<multiple files\> \<subs\> {#fun-substituteInPlace} -Like `substitute`, but performs the substitutions in place on the file \<file\>. +Like `substitute`, but performs the substitutions in place on the files passed. ### `substituteAll` \<infile\> \<outfile\> {#fun-substituteAll} diff --git a/pkgs/stdenv/generic/setup.sh b/pkgs/stdenv/generic/setup.sh index de8d13160f9..0ba8d101823 100644 --- a/pkgs/stdenv/generic/setup.sh +++ b/pkgs/stdenv/generic/setup.sh @@ -771,9 +771,18 @@ substitute() { } substituteInPlace() { - local fileName="$1" - shift - substitute "$fileName" "$fileName" "$@" + local -a fileNames=() + for arg in "$@"; do + if [[ "$arg" = "--"* ]]; then + break + fi + fileNames+=("$arg") + shift + done + + for file in "${fileNames[@]}"; do + substitute "$file" "$file" "$@" + done } _allFlags() { |