[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 メーリングリストの案内