[Mew-dist 06261] Re: im-100pre4.tar.gz

SAKAI Kiyotaka ksakai at example.com
1998年 9月 2日 (水) 15:01:57 JST


>> In article <199809020510.OAA14431 at example.com>, Hajimu UMEMOTO (梅本 肇) <ume at example.com> writes:

ksakai> Config.pm を見る限り、Socket.pm で定義されている関数が使われているよう
ksakai> には見えないのですが、なぜ必要なのでしょうか?

>   use Socket がないと、

> ume at example.com:102> imget
> Bareword "AF_INET6" not allowed while "strict subs" in use at /usr/local/lib/perl5/site_perl/IM/Config.pm line 66.
> BEGIN not safe after errors--compilation aborted at /usr/local/lib/perl5/site_perl/IM/Config.pm line 80.
> BEGIN failed--compilation aborted at /usr/local/bin/imget line 23.

> となります。

IPv6 のサポートの部分ですね。

それで、IPv6 のサポートのコードを調べていて疑問に思ったのですが、わざ
わざ configure で判定する必要はあるのでしょうか? こちらに IPv6 の環境
がないのでテストは行っていませんが、以下のパッチのように動的に判断すれ
ば充分ではないかと思うのですが…。
-- 
酒井 清隆 (E-mail: ksakai at example.com)

-------------- next part --------------
===================================================================
RCS file: RCS/configure.in,v
retrieving revision 1.2
diff -u -r1.2 configure.in
--- configure.in	1998/09/02 05:18:24	1.2
+++ configure.in	1998/09/02 05:18:55
@@ -19,8 +19,6 @@
 AC_SUBST(im_rpop)
 AC_SUBST(im_db_type)
 AC_SUBST(im_file_attr)
-AC_SUBST(im_inet6_family)
-AC_SUBST(im_inet6_pack_sockaddr_in6)
 AC_SUBST(im_src_siteperl)
 AC_SUBST(im_my_siteperl)
 AC_SUBST(im_usecl)
@@ -52,33 +50,6 @@
 [  --enable-rpop           Use RPOP (suidperl is needed)],
 [im_rpop="-o root -m 4555"],
 [im_rpop="-m 555"],)
-
-AC_ARG_ENABLE(inet6,
-[  --enable-inet6          Use IPv6 (IPv6 Perl is needed)],
-inet6="$enableval", inet6="no")
-if test "${enable_inet6+set}" != set; then
-	AC_MSG_CHECKING([for IPv6 Perl])
-	cat > conftest.pl <<EOF
-use Socket;
-print AF_INET6 . "\n";
-EOF
-	if test "`$im_path_perl conftest.pl`" != AF_INET6
-	then
-		AC_MSG_RESULT([Perl has IPv6])
-		inet6=yes
-	else
-		AC_MSG_RESULT([Perl doesn't have IPv6])
-	fi
-	rm -fr conftest*
-fi
-if test "$inet6" != "no"; then
-	AC_MSG_RESULT(INET6 is enabled.)
-	im_inet6_family='AF_INET6'
-	im_inet6_pack_sockaddr_in6='&pack_sockaddr_in6($port, $he_addr)'
-else
-	im_inet6_family='24'
-	im_inet6_pack_sockaddr_in6="pack('CCnN', 1+1+2+4+16, \$family, \$port, 0) . \$he_addr"
-fi
 
 dnl check fsync() is in syscall.h or sys/syscall.h
 im_nosync="undefined"
===================================================================
RCS file: RCS/Config.pm.in,v
retrieving revision 1.1
diff -u -r1.1 Config.pm.in
--- Config.pm.in	1998/09/02 05:19:47	1.1
+++ Config.pm.in	1998/09/02 05:29:08
@@ -55,7 +55,7 @@
 	    $O_FOPT %C_DESC %C_VNAM
 	    %WHO_SET
 	    @SELECTORS
-	    $IM_LIBDIR $IM_DB_TYPE $IM_INET6_FAMILY);
+	    $IM_LIBDIR $IM_DB_TYPE);
 
 ##
 ## configurable value by configure
@@ -63,12 +63,6 @@
 
 $IM_LIBDIR  = '@prefix@/lib/im';
 $IM_DB_TYPE = '@im_db_type@';
-$IM_INET6_FAMILY = @im_inet6_family@;
-
-sub inet6_pack_sockaddr_in6 ($;$;$) {
-    my ($family, $port, $he_addr) = @_;
-    return @im_inet6_pack_sockaddr_in6@;
-}
 
 sub file_attr () {
     return @im_file_attr@;
@@ -859,10 +853,6 @@
 
 sub db_type () {
     return $IM_DB_TYPE;
-}
-
-sub inet6_family () {
-    return $IM_INET6_FAMILY;
 }
 
 ###
===================================================================
RCS file: RCS/TcpTransaction.pm,v
retrieving revision 1.1
diff -u -r1.1 TcpTransaction.pm
--- TcpTransaction.pm	1998/09/02 05:26:56	1.1
+++ TcpTransaction.pm	1998/09/02 05:55:41
@@ -13,7 +13,7 @@
 package IM::TcpTransaction;
 require 5.003;
 require Exporter;
-use IM::Config qw(dns_timeout connect_timeout command_timeout rcv_buf_siz inet6_family inet6_pack_sockaddr_in6);
+use IM::Config qw(dns_timeout connect_timeout command_timeout rcv_buf_siz);
 use Socket;
 use IM::Util;
 use integer;
@@ -423,7 +423,21 @@
 
 sub alarm_func {
     im_die("connection error\n");
-}   
+}
+
+sub inet6_pack_sockaddr_in6 ($;$;$) {
+    my ($family, $port, $he_addr) = @_;
+
+    if (eval '&AF_INET6') {   # perl supports IPv6
+	return pack_sockaddr_in6($port, $he_addr);
+    } else {
+	return pack('CCnN', 1+1+2+4+16, $family, $port, 0) . $he_addr;
+    }
+}
+
+sub inet6_family () {
+    return eval '&AF_INET6' || 24;
+}
 
 1;
 


Mew-dist メーリングリストの案内