delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2006/02/02/13:41:46

X-Spam-Check-By: sourceware.org
Date: Thu, 2 Feb 2006 10:41:33 -0800
From: David Rothenberger <daveroth AT acm DOT org>
To: cygwin AT cygwin DOT com
Subject: Re: [ANNOUNCEMENT] Updated: OpenSSH-4.3p1-1
Message-ID: <20060202184133.GA11468@tela.daveroth.dyndns.org>
References: <announce DOT 20060201152244 DOT GA3765 AT calimero DOT vinschen DOT de>
Mime-Version: 1.0
In-Reply-To: <announce.20060201152244.GA3765@calimero.vinschen.de>
User-Agent: Mutt/1.4.2.1i
X-IsSubscribed: yes
Reply-To: cygwin AT cygwin DOT com
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Unsubscribe: <mailto:cygwin-unsubscribe-archive-cygwin=delorie DOT com AT cygwin DOT com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com

--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 -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019