Mail Archives: cygwin/2006/02/02/13:41:46
--tKW2IUtsqtDRztdT
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
I get the following error when trying to compile openssh-4.3p1-1
using cygwin 1.5.19-4.
scp.c: In function `rsource':
scp.c:698: error: structure has no member named `d_ino'
The error comes from this code:
while ((dp = readdir(dirp)) != NULL) {
if (dp->d_ino == 0)
continue;
if (!strcmp(dp->d_name, ".") || !strcmp(dp->d_name, ".."))
continue;
...
}
I "solved" the problem with the attached patch, which detects the
missing d_ino in configure and removes the test and continue if
d_ino isn't present.
Is this the appropriate thing to do?
Also, Corinna, how did you make the binaries for openssh-4.3p1-1?
--
David Rothenberger spammer? -> spam AT daveroth DOT dyndns DOT org
GPG/PGP: 0x92D68FD8, DB7C 5146 1AB0 483A 9D27 DFBA FBB9 E328 92D6 8FD8
But Captain -- the engines can't take this much longer!
--tKW2IUtsqtDRztdT
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="openssh.patch"
--- openssh-4.3p1-1/config.h.in 2006-02-01 03:33:49.000000000 -0800
+++ openssh-4.3p1-2/config.h.in 2006-02-01 20:41:16.134875000 -0800
@@ -77,6 +77,9 @@
/* Define if you want to specify the path to your wtmp file */
#undef CONF_WTMP_FILE
+/* Define if your struct dirent doesn't contain d_ino */
+#undef DIRENT_MISSING_D_INO
+
/* Define if your platform needs to skip post auth file descriptor passing */
#undef DISABLE_FD_PASSING
--- openssh-4.3p1-1/configure 2006-02-01 03:33:51.000000000 -0800
+++ openssh-4.3p1-2/configure 2006-02-01 20:41:11.634875000 -0800
@@ -10346,6 +10346,63 @@
rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
+echo "$as_me:$LINENO: checking whether struct dirent contains d_ino" >&5
+echo $ECHO_N "checking whether struct dirent contains d_ino... $ECHO_C" >&6
+if test "$cross_compiling" = yes; then
+
+ { echo "$as_me:$LINENO: WARNING: cross compiling: assuming DIRENT_MISSING_D_INO" >&5
+echo "$as_me: WARNING: cross compiling: assuming DIRENT_MISSING_D_INO" >&2;}
+ cat >>confdefs.h <<\_ACEOF
+#define DIRENT_MISSING_D_INO 1
+_ACEOF
+
+
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <sys/types.h>
+#include <dirent.h>
+int main(void){struct dirent d;exit(sizeof(d.d_ino)>=0);}
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+
+cat >>confdefs.h <<\_ACEOF
+#define DIRENT_MISSING_D_INO 1
+_ACEOF
+
+
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
echo "$as_me:$LINENO: checking for /proc/pid/fd directory" >&5
echo $ECHO_N "checking for /proc/pid/fd directory... $ECHO_C" >&6
if test -d "/proc/$$/fd" ; then
@@ -26883,9 +26940,10 @@
# 1. Remove the extension, and $U if already installed.
ac_i=`echo "$ac_i" |
sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
- # 2. Add them.
- ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
- ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
+ # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
+ # will be set to the directory where LIBOBJS objects are built.
+ ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+ ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'
done
LIBOBJS=$ac_libobjs
@@ -27157,9 +27215,9 @@
exec 5>>config.log
{
echo
- sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<BOXI_EOF
+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## Running $as_me. ##
-BOXI_EOF
+_ASBOX
} >&5
cat >&5 <<_CSEOF
--- openssh-4.3p1-1/configure.ac 2006-01-29 05:22:39.000000000 -0800
+++ openssh-4.3p1-2/configure.ac 2006-02-01 20:38:45.978625000 -0800
@@ -950,6 +950,25 @@
]
)
+AC_MSG_CHECKING([whether struct dirent contains d_ino])
+AC_RUN_IFELSE(
+ [AC_LANG_SOURCE([[
+#include <sys/types.h>
+#include <dirent.h>
+int main(void){struct dirent d;exit(sizeof(d.d_ino)>=0);}
+ ]])],
+ [AC_MSG_RESULT(yes)],
+ [
+ AC_MSG_RESULT(no)
+ AC_DEFINE(DIRENT_MISSING_D_INO, 1,
+ [Define if your struct dirent doesn't contain d_ino])
+ ],
+ [
+ AC_MSG_WARN([cross compiling: assuming DIRENT_MISSING_D_INO])
+ AC_DEFINE(DIRENT_MISSING_D_INO)
+ ]
+)
+
AC_MSG_CHECKING([for /proc/pid/fd directory])
if test -d "/proc/$$/fd" ; then
AC_DEFINE(HAVE_PROC_PID, 1, [Define if you have /proc/$pid/fd])
--- openssh-4.3p1-1/scp.c 2006-01-31 03:11:38.000000000 -0800
+++ openssh-4.3p1-2/scp.c 2006-02-01 20:41:20.619250000 -0800
@@ -695,8 +695,10 @@
return;
}
while ((dp = readdir(dirp)) != NULL) {
+#ifndef DIRENT_MISSING_D_INO
if (dp->d_ino == 0)
continue;
+#endif
if (!strcmp(dp->d_name, ".") || !strcmp(dp->d_name, ".."))
continue;
if (strlen(name) + 1 + strlen(dp->d_name) >= sizeof(path) - 1) {
--tKW2IUtsqtDRztdT
Content-Type: text/plain; charset=us-ascii
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
--tKW2IUtsqtDRztdT--
- Raw text -