* Roberto Bagnara wrote on Wed, Mar 05, 2008 at 07:37:58AM CET:
It is better now, but there is still the problem that, apparently,
libtool redirects stdin for the program it is running.
Gosh. How embarrassing. I've applied this patch.
Thanks for testing!
Ralf
2008-03-05 Ralf Wildenhues [EMAIL PROTECTED]
* libltdl/config/ltmain.m4sh (func_lalib_unsafe_p): redirect
and restore from stdin, not stdout.
* tests/execute-mode.at (execute mode): Adjust test to catch
this.
Report by Roberto Bagnara.
Index: libltdl/config/ltmain.m4sh
===
RCS file: /cvsroot/libtool/libtool/libltdl/config/ltmain.m4sh,v
retrieving revision 1.98
diff -u -r1.98 ltmain.m4sh
--- libltdl/config/ltmain.m4sh 4 Mar 2008 21:25:48 - 1.98
+++ libltdl/config/ltmain.m4sh 5 Mar 2008 20:12:28 -
@@ -648,7 +648,7 @@
func_lalib_unsafe_p ()
{
lalib_p=no
-if test -r $1 exec 51 $1; then
+if test -r $1 exec 50 $1; then
for lalib_p_l in 1 2 3 4
do
read lalib_p_line
@@ -656,7 +656,7 @@
\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
esac
done
- exec 15 5-
+ exec 05 5-
fi
test $lalib_p = yes
}
Index: tests/execute-mode.at
===
RCS file: /cvsroot/libtool/libtool/tests/execute-mode.at,v
retrieving revision 1.1
diff -u -r1.1 execute-mode.at
--- tests/execute-mode.at 4 Mar 2008 21:25:48 - 1.1
+++ tests/execute-mode.at 5 Mar 2008 20:12:28 -
@@ -51,6 +51,30 @@
AT_DATA([lt-real],
[[#! /bin/sh
echo $@
+cat
+]])
+
+AT_DATA([libfakelib.la],
+[[# libfakelib.la - a libtool library file
+# Generated by ltmain.sh (GNU libtool 1.2605 2008/03/04 22:31:32) 2.3a
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+dlname=''
+library_names=''
+old_library='libfakelib.a'
+inherited_linker_flags=''
+dependency_libs=''
+weak_library_names=''
+current=
+age=
+revision=
+installed=no
+shouldnotlink=yes
+dlopen=''
+dlpreopen=''
+libdir=''
]])
mkdir sub
@@ -61,20 +85,26 @@
AT_CHECK([$LIBTOOL --mode=execute sub/foo])
AT_CHECK([$LIBTOOL --mode=execute ./foo foo], [], [foo
])
-AT_CHECK([$LIBTOOL --mode=execute ./lt-wrapper foo], [], [foo
+AT_CHECK([$LIBTOOL --mode=execute ./lt-wrapper foo /dev/null], [], [foo
])
AT_CHECK([cd sub $LIBTOOL --mode=execute ./foo ../foo], [], [../foo
])
# suppose that ./foo is gdb, and lt-wrapper is the wrapper script.
-AT_CHECK([$LIBTOOL --mode=execute ./foo lt-wrapper bar baz], [],
+AT_CHECK([$LIBTOOL --mode=execute ./foo lt-wrapper bar baz /dev/null], [],
[./lt-real bar baz
])
+# check that stdin works even with -dlopen.
+AT_CHECK([echo bar | $LIBTOOL --mode=execute -dlopen libfakelib.la
./lt-wrapper foo],
+[], [foo
+bar
+])
+
# Check that a missing real program causes an error.
# The error message and code are likely to be 126,
# No such file or directory but system-dependent.
mv -f lt-real lt-backup
-AT_CHECK([$LIBTOOL --mode=execute ./lt-wrapper foo || exit 1],
+AT_CHECK([$LIBTOOL --mode=execute ./lt-wrapper foo /dev/null || exit 1],
[1], [ignore], [ignore])
mv -f lt-backup lt-real
@@ -82,7 +112,7 @@
AT_CHECK([$LIBTOOL --mode=execute ./foo arg with special chars: \$!*\`'()],
[], [arg with special chars: $!*`'()
])
-AT_CHECK([$LIBTOOL --mode=execute ./lt-wrapper arg with special chars:
\$!*\`'()],
+AT_CHECK([$LIBTOOL --mode=execute ./lt-wrapper arg with special chars:
\$!*\`'() /dev/null],
[], [arg with special chars: $!*`'()
])
AT_CHECK([$LIBTOOL --mode=execute ./foo lt-wrapper arg with special chars:
\$!*\`'()],