[ANNOUNCEMENT] Updated: OpenSSH-4.3p1-1

David Rothenberger daveroth@acm.org
Thu Feb 2 18:41:00 GMT 2006


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@daveroth.dyndns.org
GPG/PGP: 0x92D68FD8, DB7C 5146 1AB0 483A 9D27 DFBA FBB9 E328 92D6 8FD8

But Captain -- the engines can't take this much longer!
-------------- next part --------------
--- 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) {

-------------- next part --------------
--
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/


More information about the Cygwin mailing list