]> git.draconx.ca Git - dxcommon.git/commitdiff
exported.sh: Work around DJGPP shell redirection bug.
authorNick Bowler <nbowler@draconx.ca>
Thu, 21 Apr 2022 05:29:22 +0000 (01:29 -0400)
committerNick Bowler <nbowler@draconx.ca>
Thu, 21 Apr 2022 05:50:08 +0000 (01:50 -0400)
In DJGPP's bash port, it seems that redirections of the form

  /absolute/path/to/program 3>&-

result in the file descriptor being closed for the whole shell,
rather than just for the one command as expected.  Since some of
the configure substitutions into exported.sh can be absolute paths,
this causes failures.

Using a different command syntax avoids this problem.  For example,

  { /absolute/path/to/program; } 3>&-

appears to work as expected.  Adjust the exported.sh.in snippet to
do just that.  There is still one redirection error message printed
to stderr by DJGPP bash but it appears spurious at first glance.
All the redirections now appear to be working properly and the
script output looks good.

snippet/exported.sh.in

index f9d3c4043511767cded4010d9578154b54079fdb..f5ef7b09b63b85737d9a4aeb1180684a2c36a218 100644 (file)
@@ -41,13 +41,13 @@ case $# in
 *)
   exec 4>&1
   eval_cmd=`exec 3>&1
-    { @NM@ $OBJS 3>&-
+    { { @NM@ $OBJS; } 3>&-
       echo "(exit $?) || exit $?" >&3
-    } | { @GLOBAL_SYMBOL_PIPE@ 3>&-
+    } | { { @GLOBAL_SYMBOL_PIPE@; } 3>&-
       echo "(exit $?) || exit $?" >&3
-    } | { @SED@ 's/^.* //' 3>&-
+    } | { { @SED@ 's/^.* //'; } 3>&-
       echo "(exit $?) || exit $?" >&3
-    } | { LC_ALL=C sort -u 3>&-
+    } | { { LC_ALL=C sort -u; } 3>&-
       echo "(exit $?) || exit $?" >&3
     } >&4`
   exec 4>&-