From c12c9871e81bb2226869d1f509eb977c05cad390 Mon Sep 17 00:00:00 2001 From: kris Date: Sun, 26 Aug 2007 00:01:14 +0000 Subject: [PATCH] Upgrading shipped libpcap from 0.9.4 to 0.9.7. Includes CHANGELOG entry --- CHANGELOG | 3 + libpcap/CHANGES | 79 +- libpcap/CREDITS | 5 + libpcap/Makefile.in | 23 +- libpcap/NMAP_MODIFICATIONS | 179 +- libpcap/README.dag | 23 +- libpcap/TODO | 7 - libpcap/VERSION | 2 +- libpcap/bpf_image.c | 4 +- libpcap/config.h.in | 9 + libpcap/configure | 6440 +++++++++++++++++++----------------- libpcap/configure.ac | 38 +- libpcap/fad-win32.c | 34 +- libpcap/gencode.c | 1097 ++++-- libpcap/gencode.h | 20 +- libpcap/grammar.c | 4318 +++++++++++++++--------- libpcap/grammar.y | 18 +- libpcap/inet.c | 128 +- libpcap/nametoaddr.c | 8 +- libpcap/net | 1 + libpcap/optimize.c | 30 +- libpcap/pcap-bpf.c | 34 +- libpcap/pcap-bpf.h | 111 +- libpcap/pcap-dag.c | 375 ++- libpcap/pcap-dlpi.c | 11 +- libpcap/pcap-int.h | 37 +- libpcap/pcap-linux.c | 117 +- libpcap/pcap-win32.c | 48 +- libpcap/pcap.3 | 22 +- libpcap/pcap.c | 48 +- libpcap/pcap.h | 21 +- libpcap/savefile.c | 171 +- libpcap/scanner.c | 5309 +++++++++++++++-------------- libpcap/scanner.l | 18 +- libpcap/tokdefs.h | 368 ++- 35 files changed, 11211 insertions(+), 7945 deletions(-) create mode 120000 libpcap/net diff --git a/CHANGELOG b/CHANGELOG index 6ed8ce12d..c412fc04c 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,4 +1,7 @@ # Nmap Changelog ($Id$); -*-text-*- + +o Upgraded libpcap from version 0.9.4 to 0.9.7 [Kris] + 4.22SOC5 o The Windows installer should actually install UMIT properly now. diff --git a/libpcap/CHANGES b/libpcap/CHANGES index 3a93ec59f..a65654726 100644 --- a/libpcap/CHANGES +++ b/libpcap/CHANGES @@ -1,4 +1,81 @@ -@(#) $Header: /tcpdump/master/libpcap/CHANGES,v 1.59.2.8 2005/09/05 09:17:47 guy Exp $ (LBL) +@(#) $Header: /tcpdump/master/libpcap/CHANGES,v 1.59.2.11 2007/07/24 02:27:32 mcr Exp $ (LBL) + +Wed. July 23, 2007. mcr@xelerance.com. Summary for 0.9.7 libpcap release + + FIXED version file to be 0.9.7 instead of 0.9.5. + added flags/configuration for cloning bpf device. + added DLT_MTP2_WITH_PHDR support (PPI) + "fix" the "memory leak" in icode_to_fcode() -- documentation bug + Various link-layer types, with a pseudo-header, for SITA http://www.sita.aero/ + introduces support for the DAG ERF type TYPE_COLOR_MC_HDLC_POS. + Basic BPF filtering support for DLT_MTP2_WITH_PHDR is also added. + check for IPv4 and IPv6, even for DLT_RAW + add support for DLT_JUNIPER_ISM + Pick up changes from NetBSD: many from tron, christos, drochner + Allocate DLT_ for 802.15.4 without any header munging, for Mikko Saarnivala. + Header for 802.16 MAC Common Part Sublayer plus a radiotap radio header + +Wed. April 25, 2007. ken@xelerance.com. Summary for 0.9.6 libpcap release + + Put the public libpcap headers into a pcap subdirectory in both the + source directory and the target include directory, and have include + files at the top-level directory to include those headers, for + backwards compatibility. + Add Bluetooth support + Add USB capturing support on Linux + Add support for the binary USB sniffing interface in Linux + Add support for new FreeBSD BIOCSDIRECTION ioctl + Add additional filter operations for 802.11 frame types + Add support for filtering on MTP2 frame types + Propagate some changes from the main branch, so the x.9 branch has + all the DLT_ and LINKTYPE_ values that the main branch does + Reserved a DLT_ and SAVEFILE_ value for PPI (Per Packet Info) + encapsulated packets + Add LINKTYPE_ for IEEE 802.15.4, with address fields padded as done + by Linux drivers + Add LINKTYPE_ value corresponding to DLT_IEEE802_16_MAC_CPS. + Add DLT for IEEE 802.16 (WiMAX) MAC Common Part Sublayer + Add DLT for Bluetooth HCI UART transport layer + When building a shared library, build with "-fPIC" on Linux to support x86_64 + Link with "$(CC) -shared" rather than "ld -shared" when building a + ".so" shared library + Add support for autoconf 2.60 + Fixes to discard unread packets when changing filters + Changes to handle name changes in the DAG library resulting from + switching to libtool. + Add support for new DAG ERF types. + Add an explicit "-ldag" when building the shared library, so the DAG + library dependency is explicit. + Mac OSX fixes for dealing with "wlt" devices + Fixes in add_or_find_if() & pcap_findalldevs() to optimize generating + device lists + Fixed a bug in pcap_open_live(). The return value of PacketSetHwFilter + was not checked. + +Tue. September 19, 2006. ken@xelerance.com. Summary for 0.9.5 libpcap release + + Support for LAPD frames with vISDN + Support for ERF on channelized T1/E1 cards via DAG API + Fix capitalization that caused issues crossc compiling on Linux + Better failure detection on PacketGetAdapterNames() + Fixes for MPLS packet generation (link layer) + OP_PACKET now matches the beginning of the packet, instead of + beginning+link-layer + Add DLT/LINKTYPE for carrying FRF.16 Multi-link Frame Relay + Fix allocation of buffer for list of link-layer types + Added a new DLT and LINKTYPE value for ARINC 653 Interpartition Communcation Messages + Fixed a typo in a DLT value: it should start with DLT_ and not LINKTYPE_ + Redefined DLT_CAN20B and LINKTYPE_CAN20B as #190 (as this is the right value for CAN). + Added definition for DLT_A429 and LINKTYPE_A429 as #184. + Added a new DLT and LINKTYPE value for CAN v2.0B frames. + Add support for DLT_JUNIPER_VP. + Don't double-count received packets on Linux systems that + support the PACKET_STATISTICS getsockopt() argument on + PF_PACKET sockets. + Add support for DLT_IEEE802_11 and DLT_IEEE802_11_RADIO link + layers in Windows + Add support to build libpcap.lib and wpcap.dll under Cygnus and + MingW32. Mon. September 5, 2005. ken@xelerance.com. Summary for 0.9.4 libpcap release diff --git a/libpcap/CREDITS b/libpcap/CREDITS index 193f2dbd3..d03dfb874 100644 --- a/libpcap/CREDITS +++ b/libpcap/CREDITS @@ -23,6 +23,7 @@ Additional people who have contributed patches: Chris G. Demetriou Chris Lightfoot Chris Pepper + Daniele Orlandi Darren Reed David Kaelbling David Young @@ -31,6 +32,7 @@ Additional people who have contributed patches: Dug Song Eric Anderson Erik de Castro Lopo + Florent Drouin Franz Schaefer Gianluca Varenni Gilbert Hoyek @@ -50,6 +52,7 @@ Additional people who have contributed patches: John Bankier Jon Lindgren Juergen Schoenwaelder + Jung-uk Kim Kazushi Sugyo Klaus Klein Koryn Grant @@ -69,6 +72,7 @@ Additional people who have contributed patches: Nicolas Dade Octavian Cerna Olaf Kirch + Ollie Wild Onno van der Linden Patrick Marie Paul Mundt @@ -85,6 +89,7 @@ Additional people who have contributed patches: Shaun Clowes Solomon Peachy Stefan Hudson + Stephen Donnelly Takashi Yamamoto Tanaka Shin-ya Tony Li diff --git a/libpcap/Makefile.in b/libpcap/Makefile.in index cea968ab4..6c90d7dfb 100644 --- a/libpcap/Makefile.in +++ b/libpcap/Makefile.in @@ -17,7 +17,7 @@ # WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. # -# @(#) $Header: /tcpdump/master/libpcap/Makefile.in,v 1.99 2003/12/15 01:35:03 guy Exp $ (LBL) +# @(#) $Header: /tcpdump/master/libpcap/Makefile.in,v 1.99.2.2 2007/07/24 02:35:15 mcr Exp $ (LBL) # # Various configurable paths (remember to edit Makefile.in, not Makefile) @@ -46,7 +46,9 @@ CCOPT = @V_CCOPT@ INCLS = -I. @V_INCLS@ DEFS = @DEFS@ @V_DEFS@ LIBS = @V_LIBS@ +DAGLIBS = @DAGLIBS@ DYEXT = @DYEXT@ +PROG=libpcap # Standard CFLAGS CFLAGS = $(CCOPT) $(INCLS) $(DEFS) @@ -112,7 +114,7 @@ shared: libpcap.$(DYEXT) # libpcap.so: $(OBJ) @rm -f $@ - ld -shared -o $@.`cat VERSION` $(OBJ) + $(CC) -shared -o $@.`cat VERSION` $(OBJ) $(DAGLIBS) # the following rule succeeds, but the result is untested. libpcap.dylib: $(OBJ) @@ -216,19 +218,10 @@ packaging/pcap.spec: packaging/pcap.spec.in VERSION RPMVERSION=`cat VERSION | sed s/-.*//g`; \ sed -e s/@VERSION@/$$RPMVERSION/ -e s/@NAME@/libpcap-`cat VERSION`/ $< > $@ -tar: Makefile packaging/pcap.spec - @cwd=`pwd` ; dir=`basename $$cwd` ; name=libpcap-`cat VERSION` ; \ - list="" ; tar="tar chf" ; \ - for i in `cat FILES` ; do list="$$list $$name/$$i" ; done; \ - echo \ - "rm -f ../$$name; ln -s $$dir ../$$name" ; \ - rm -f ../$$name; ln -s $$dir ../$$name ; \ - echo \ - "(cd .. ; $$tar - [lots of files]) | gzip -c > /tmp/$$name.tar.gz" ; \ - (cd .. ; $$tar - $$list) | gzip -c > /tmp/$$name.tar.gz ; \ - echo \ - "rm -f ../$$name" ; \ - rm -f ../$$name +releasetar: + @cwd=`pwd` ; dir=`basename $$cwd` ; name=$(PROG)-`cat VERSION` ; \ + list="" ; make distclean; cd ..; mkdir -p n; cd n; ln -s ../$$dir $$name; \ + tar -c -z -f $$name.tar.gz $$name/. ; depend: $(GENSRC) $(GENHDR) bpf_filter.c ./mkdep -c $(CC) $(DEFS) $(INCLS) $(SRC) diff --git a/libpcap/NMAP_MODIFICATIONS b/libpcap/NMAP_MODIFICATIONS index 39bc83215..f0d5f9bf7 100644 --- a/libpcap/NMAP_MODIFICATIONS +++ b/libpcap/NMAP_MODIFICATIONS @@ -1,8 +1,8 @@ Nmap currently includes a modified version of the tcpdump.org release -of libpcap version 0.9.4 (released October 2, 2005). My -(fyodor@insecure.org) modifications are as follows: +of libpcap version 0.9.7 (released July 23, 2007). The modifications +are as follows: -o Included this file, renamed directory from libpcap-0.8.3 to +o Included this file, renamed directory from libpcap-0.9.7 to libpcap. o Renamed configure.in to configure.ac, which is the name now @@ -12,31 +12,35 @@ o Removed the .cvsignore file, all 'CVS' directories, the 'packaging' directory, (pcap spec file conflicts w/Nmap spec file when I rpmbuild from tarball) and the install-sh script. +o Removed libpcap-0.9, CHANGES~, gencode.c.orig, gencode.c.rej, + wlan_filtering.patch, .#CHANGES.1.59 and .#Makefile.in.1.99.2.1 + o Updated config.sub and config.guess (in the distribution file they - are just symlinks to the corresponding files in the nmap dir + are just symlinks to the corresponding files in the nmap dir) o Removed the Win32 and msdos directories as Nmap doesn't use them o Added the gcc debugging flag (-g) to aclocal.m4 if gcc is being used: ---- libpcap-0.9.4/aclocal.m4 2005-04-20 20:42:09.000000000 -0700 -+++ libpcap/aclocal.m4 2006-08-16 15:27:46.000000000 -0700 -@@ -76,7 +76,7 @@ + +--- libpcap-0.9.7/aclocal.m4 2005-04-20 22:42:09.000000000 -0500 ++++ libpcap/aclocal.m4 2007-08-25 17:11:22.000000000 -0500 +@@ -76,7 +76,7 @@ AC_DEFUN(AC_LBL_C_INIT, if test "$GCC" = yes ; then - if test "$SHLICC2" = yes ; then - ac_cv_lbl_gcc_vers=2 -- $1="-O2" -+ $1="-g -O2" - else - AC_MSG_CHECKING(gcc version) - AC_CACHE_VAL(ac_cv_lbl_gcc_vers, -@@ -87,7 +87,7 @@ - -e 's/\..*//'`) - AC_MSG_RESULT($ac_cv_lbl_gcc_vers) - if test $ac_cv_lbl_gcc_vers -gt 1 ; then -- $1="-O2" -+ $1="-g -O2" - fi - fi + if test "$SHLICC2" = yes ; then + ac_cv_lbl_gcc_vers=2 +- $1="-O2" ++ $1="-g -O2" + else + AC_MSG_CHECKING(gcc version) + AC_CACHE_VAL(ac_cv_lbl_gcc_vers, +@@ -87,7 +87,7 @@ AC_DEFUN(AC_LBL_C_INIT, + -e 's/\..*//'`) + AC_MSG_RESULT($ac_cv_lbl_gcc_vers) + if test $ac_cv_lbl_gcc_vers -gt 1 ; then +- $1="-O2" ++ $1="-g -O2" + fi + fi else o Used to change pcap-linux.c by adding a select() call guarding @@ -48,10 +52,11 @@ o Used to change pcap-linux.c by adding a select() call guarding o Eliminated Lex/Yacc requirement (I now ship the generated .c files). This involved: - o Changes to Makefile.in ---- libpcap-0.9.4/Makefile.in 2003-12-14 17:35:03.000000000 -0800 -+++ libpcap/Makefile.in 2006-08-16 15:32:39.000000000 -0700 -@@ -61,8 +61,8 @@ + o Changes to Makefile.in: + +--- libpcap-0.9.7/Makefile.in 2007-07-23 21:35:15.000000000 -0500 ++++ libpcap/Makefile.in 2007-08-25 17:37:07.000000000 -0500 +@@ -63,8 +63,8 @@ RANLIB = @RANLIB@ # used by the generated parser. This allows programs to use lex/yacc # and link against libpcap. If you don't have flex or bison, get them. # @@ -59,48 +64,48 @@ o Eliminated Lex/Yacc requirement (I now ship the generated .c files). -YACC = @V_YACC@ +LEX = flex +YACC = yacc - + # Explicitly define compilation rule since SunOS 4's make doesn't like gcc. # Also, gcc does not remove the .o before forking 'as', which can be a -@@ -95,7 +95,7 @@ +@@ -97,7 +97,7 @@ TAGHDR = \ TAGFILES = \ - $(SRC) $(HDR) $(TAGHDR) - + $(SRC) $(HDR) $(TAGHDR) + -CLEANFILES = $(OBJ) libpcap.a $(GENSRC) $(GENHDR) lex.yy.c +CLEANFILES = $(OBJ) libpcap.a version.c lex.yy.c - + all: libpcap.a - o Ripped LEX/YACC detection code from configure.in: ---- libpcap-0.9.4/configure.in 2005-07-06 23:56:03.000000000 -0700 -+++ libpcap/configure.ac 2006-08-16 15:35:31.000000000 -0700 -@@ -677,25 +677,6 @@ - AC_MSG_ERROR(Specifying the capture type as 'septel' requires the Septel API to be present; use --with-septel=DIR) - fi + o Ripped LEX/YACC detection code from configure.ac: -- +--- libpcap-0.9.7/configure.in 2007-07-05 08:56:00.000000000 -0500 ++++ libpcap/configure.ac 2007-08-25 17:37:22.000000000 -0500 +@@ -703,24 +703,6 @@ if test "$V_PCAP" = septel -a "$ac_cv_lb + fi + + -AC_LBL_LEX_AND_YACC(V_LEX, V_YACC, pcap_) -if test "$V_LEX" = lex ; then -# Some versions of lex can't handle the definitions section of scanner.l . -# Try lexing it and complain if it can't deal. -- AC_CACHE_CHECK([for capable lex], tcpdump_cv_capable_lex, -- if lex -t scanner.l > /dev/null 2>&1; then -- tcpdump_cv_capable_lex=yes -- else -- tcpdump_cv_capable_lex=insufficient -- fi) -- if test $tcpdump_cv_capable_lex = insufficient ; then -- AC_MSG_ERROR([Your operating system's lex is insufficient to compile +- AC_CACHE_CHECK([for capable lex], tcpdump_cv_capable_lex, +- if lex -t scanner.l > /dev/null 2>&1; then +- tcpdump_cv_capable_lex=yes +- else +- tcpdump_cv_capable_lex=insufficient +- fi) +- if test $tcpdump_cv_capable_lex = insufficient ; then +- AC_MSG_ERROR([Your operating system's lex is insufficient to compile - libpcap. flex is a lex replacement that has many advantages, including - being able to compile libpcap. For more information, see - http://www.gnu.org/software/flex/flex.html .]) -- fi +- fi -fi - DYEXT="so" case "$host_os" in - -@@ -773,11 +754,9 @@ + +@@ -803,11 +818,9 @@ AC_SUBST(V_CCOPT) AC_SUBST(V_DEFS) AC_SUBST(V_INCLS) AC_SUBST(V_LIBS) @@ -111,64 +116,43 @@ o Eliminated Lex/Yacc requirement (I now ship the generated .c files). -AC_SUBST(V_YACC) AC_SUBST(SSRC) AC_SUBST(DYEXT) - -o An OpenBSD portability fix to make loopback work: ---- libpcap-0.9.4/pcap-bpf.h 2005-08-13 15:29:47.000000000 -0700 -+++ libpcap/pcap-bpf.h 2006-08-16 15:36:42.000000000 -0700 -@@ -246,12 +246,14 @@ - * OpenBSD DLT_LOOP, for loopback devices; it's like DLT_NULL, except - * that the AF_ type in the link-layer header is in network byte order. - * -- * OpenBSD defines it as 12, but that collides with DLT_RAW, so we -- * define it as 108 here. If OpenBSD picks up this file, it should -- * define DLT_LOOP as 12 in its version, as per the comment above - -- * and should not use 108 as a DLT_ value. -+ * OpenBSD defines it as 12, but that collides with DLT_RAW, so 108 is -+ * used for other platforms. - */ -+#ifdef __OpenBSD__ -+#define DLT_LOOP 12 -+#else - #define DLT_LOOP 108 -+#endif - - /* - * Encapsulated packets for IPsec; DLT_ENC is 13 in OpenBSD, but that's + AC_SUBST(DAGLIBS) o The following patch removes some code that apparently causes libpcap on Solaris to wait for 64K chunks before returning in some cases, - regardless of the timeout values. Problem report and patch came - from Ben Harris (bjh21(a)cam.ac.uk) + regardless of the timeout values. Problem report and original patch + came from Ben Harris (bjh21(a)cam.ac.uk) ---- libpcap-0.9.4/pcap-dlpi.c 2005-08-13 16:15:58.000000000 -0700 -+++ libpcap/pcap-dlpi.c 2006-08-16 15:38:26.000000000 -0700 -@@ -895,16 +895,6 @@ - } - } - -- /* -- ** Set the chunk length. -- */ -- chunksize = CHUNKSIZE; -- if (strioctl(p->fd, SBIOCSCHUNK, sizeof(chunksize), (char *)&chunksize) -- != 0) { -- snprintf(ebuf, PCAP_ERRBUF_SIZE, "SBIOCSCHUNKP: %s", -- pcap_strerror(errno)); -- goto bad; -- } +--- libpcap-0.9.7/pcap-dlpi.c 2006-09-19 14:26:25.000000000 -0500 ++++ libpcap/pcap-dlpi.c 2007-08-25 17:10:28.000000000 -0500 +@@ -902,17 +902,6 @@ pcap_open_live(const char *device, int s + goto bad; + } + } +- +- /* +- ** Set the chunk length. +- */ +- chunksize = CHUNKSIZE; +- if (strioctl(p->fd, SBIOCSCHUNK, sizeof(chunksize), (char *)&chunksize) +- != 0) { +- snprintf(ebuf, PCAP_ERRBUF_SIZE, "SBIOCSCHUNKP: %s", +- pcap_strerror(errno)); +- goto bad; +- } #endif - - /* + + /* o Changed the configure.ac to enable -fno-strict-aliasing when GCC 4+ is in use. Here is that patch: ---- libpcap-0.9.4/configure.in 2005-07-06 23:56:03.000000000 -0700 -+++ libpcap/configure.ac 2006-08-16 15:40:51.000000000 -0700 -@@ -760,6 +741,39 @@ - +--- libpcap-0.9.7/configure.in 2007-07-05 08:56:00.000000000 -0500 ++++ libpcap/configure.ac 2007-08-25 17:12:49.000000000 -0500 +@@ -790,6 +790,39 @@ AC_LBL_HP_PPA_INFO_T_DL_MODULE_ID_1 + AC_LBL_UNALIGNED_ACCESS - + +pcap_gcc_major_version=0 +AC_MSG_CHECKING([whether the compiler is gcc 4 or greater]) +if test x"$GCC" = xno; then @@ -208,3 +192,4 @@ is in use. Here is that patch: o Ran autoconf to regenerate configure (I ship those with the Nmap tarball rather than generating them at build time). + diff --git a/libpcap/README.dag b/libpcap/README.dag index 49b3e738c..acf97edf8 100644 --- a/libpcap/README.dag +++ b/libpcap/README.dag @@ -77,11 +77,32 @@ RX stream buffer overflow, this count is before filters are applied (it will include packets that would have been dropped by the filter). The RX stream buffer size is user configurable outside libpcap, typically 16-512MB. -pcap_get_selectable_fd() is not supported, DAG cards do not support +pcap_get_selectable_fd() is not supported, as DAG cards do not support poll/select methods. pcap_inject() and pcap_sendpacket() are not supported. +Some DAG cards now support capturing to multiple virtual interfaces, called +streams. Capture streams have even numbers. These are available via libpcap +as separate interfaces, e.g. dag0:0, dag0:2, dag0:4 etc. dag0:0 is the same +as dag0. These are visible via pcap_findalldevs(). + +libpcap now does NOT set the card's hardware snaplen (slen). This must now be +set using the appropriate DAG coniguration program, e.g. dagthree, dagfour, +dagsix, dagconfig. This is because the snaplen is currently shared between +all of the streams. In future this may change if per-stream slen is +implemented. + +DAG cards by default capture entire packets including the L2 +CRC/FCS. If the card is not configured to discard the CRC/FCS, this +can confuse applications that use libpcap if they're not prepared for +packets to have an FCS. Libpcap now reads the environment variable +ERF_FCS_BITS to determine how many bits of CRC/FCS to strip from the +end of the captured frame. This defaults to 32 for use with +Ethernet. If the card is configured to strip the CRC/FCS, then set +ERF_FCS_BITS=0. If used with a HDLC/PoS/PPP/Frame Relay link with 16 +bit CRC/FCS, then set ERF_FCS_BITS=16. + ---------------------------------------------------------------------- Please submit bug reports via . diff --git a/libpcap/TODO b/libpcap/TODO index 633a776a6..3de4530ed 100644 --- a/libpcap/TODO +++ b/libpcap/TODO @@ -15,13 +15,6 @@ General style (okay, you can guess that by looking at the code) and a guide for what needs to be documented. -Linux kernel interface - -- Currently there is a race condition in that a socket is activated at the - same time it is opened - before applying a filter. This has to - be corrected so that capture starts when pcap_read is called for the - first time. - Less urgent items ----------------- diff --git a/libpcap/VERSION b/libpcap/VERSION index a602fc9e2..c81aa44af 100644 --- a/libpcap/VERSION +++ b/libpcap/VERSION @@ -1 +1 @@ -0.9.4 +0.9.7 diff --git a/libpcap/bpf_image.c b/libpcap/bpf_image.c index 7f31d9c97..2e761289f 100644 --- a/libpcap/bpf_image.c +++ b/libpcap/bpf_image.c @@ -21,7 +21,7 @@ #ifndef lint static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/libpcap/bpf_image.c,v 1.26 2003/11/15 23:23:57 guy Exp $ (LBL)"; + "@(#) $Header: /tcpdump/master/libpcap/bpf_image.c,v 1.26.2.1 2007/06/11 09:52:04 guy Exp $ (LBL)"; #endif #ifdef HAVE_CONFIG_H @@ -43,7 +43,7 @@ bpf_image(p, n) int n; { int v; - char *fmt, *op; + const char *fmt, *op; static char image[256]; char operand[64]; diff --git a/libpcap/config.h.in b/libpcap/config.h.in index 6943adb54..0bc48dcab 100644 --- a/libpcap/config.h.in +++ b/libpcap/config.h.in @@ -10,9 +10,15 @@ /* Enable optimizer debugging */ #undef BDEBUG +/* define if you have a cloning BPF device */ +#undef HAVE_CLONING_BPF + /* define if you have the DAG API */ #undef HAVE_DAG_API +/* define if you have dag_get_erf_types() */ +#undef HAVE_DAG_GET_ERF_TYPES + /* define if you have streams capable DAG API */ #undef HAVE_DAG_STREAMS_API @@ -53,6 +59,9 @@ /* if there's an os_proto.h */ #undef HAVE_OS_PROTO_H +/* Define to 1 if you have the header file. */ +#undef HAVE_PATHS_H + /* define if you have a /proc/net/dev */ #undef HAVE_PROC_NET_DEV diff --git a/libpcap/configure b/libpcap/configure index 7da9daff1..b648adcde 100755 --- a/libpcap/configure +++ b/libpcap/configure @@ -1,82 +1,36 @@ #! /bin/sh -# From configure.ac Revision: 1.120.2.7 . +# From configure.ac Revision: 1.120.2.12 . # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.59. +# Generated by GNU Autoconf 2.61. # -# Copyright (C) 2003 Free Software Foundation, Inc. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## -# Be Bourne compatible +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix -fi -DUALCASE=1; export DUALCASE # for MKS sh - -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset + setopt NO_GLOB_SUBST else - as_unset=false + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + fi -# Work around bugs in pre-3.0 UWIN ksh. -$as_unset ENV MAIL MAILPATH -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - $as_unset $as_var - fi -done - -# Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi -# Name of the executable. -as_me=`$as_basename "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - - -# PATH needs CR, and LINENO needs CR and PATH. +# PATH needs CR # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' @@ -97,124 +51,466 @@ if test "${PATH_SEPARATOR+set}" != set; then rm -f conf$$.sh fi +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - # Find who we are. Look in the path if we contain no path at all - # relative or not. - case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +as_nl=' +' +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done +IFS=$as_save_IFS - ;; - esac - # We did not find ourselves, most probably we were run as `sh COMMAND' - # in which case we are not to be found in the path. - if test "x$as_myself" = x; then - as_myself=$0 + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + { (exit 1); exit 1; } +fi + +# Work around bugs in pre-3.0 UWIN ksh. +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var fi - if test ! -f "$as_myself"; then - { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 - { (exit 1); exit 1; }; } - fi - case $CONFIG_SHELL in - '') +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# CDPATH. +$as_unset CDPATH + + +if test "x$CONFIG_SHELL" = x; then + if (eval ":") 2>/dev/null; then + as_have_required=yes +else + as_have_required=no +fi + + if test $as_have_required = yes && (eval ": +(as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0) || { (exit 1); exit 1; } + +( + as_lineno_1=\$LINENO + as_lineno_2=\$LINENO + test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && + test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } +") 2> /dev/null; then + : +else + as_candidate_shells= as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for as_base in sh bash ksh sh5; do - case $as_dir in + case $as_dir in /*) - if ("$as_dir/$as_base" -c ' + for as_base in sh bash ksh sh5; do + as_candidate_shells="$as_candidate_shells $as_dir/$as_base" + done;; + esac +done +IFS=$as_save_IFS + + + for as_shell in $as_candidate_shells $SHELL; do + # Try only shells that exist, to save several forks. + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { ("$as_shell") 2> /dev/null <<\_ASEOF +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + +: +_ASEOF +}; then + CONFIG_SHELL=$as_shell + as_have_required=yes + if { "$as_shell" 2> /dev/null <<\_ASEOF +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + +: +(as_func_return () { + (exit $1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = "$1" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test $exitcode = 0) || { (exit 1); exit 1; } + +( as_lineno_1=$LINENO as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then - $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } - $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" ${1+"$@"} - fi;; - esac - done -done -;; - esac + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } + +_ASEOF +}; then + break +fi + +fi + + done + + if test "x$CONFIG_SHELL" != x; then + for as_var in BASH_ENV ENV + do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + done + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} +fi + + + if test $as_have_required = no; then + echo This script requires a shell more modern than all the + echo shells that I found on your system. Please install a + echo modern shell, or manually run the script under such a + echo shell if you do have one. + { (exit 1); exit 1; } +fi + + +fi + +fi + + + +(eval "as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0") || { + echo No shell found that supports shell functions. + echo Please tell autoconf@gnu.org about your system, + echo including any error possibly output before this + echo message +} + + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line before each line; the second 'sed' does the real - # work. The second script uses 'N' to pair each line-number line - # with the numbered line, and appends trailing '-' during - # substitution so that $LINENO is not a special case at line end. + # line-number line after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, and appends + # trailing '-' during substitution so that $LINENO is not a special + # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) - sed '=' <$as_myself | + # scripts with optimization help from Paolo Bonzini. Blame Lee + # E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno N - s,$,-, - : loop - s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop - s,-$,, - s,^['$as_cr_digits']*\n,, + s/-\n.*// ' >$as_me.lineno && - chmod +x $as_me.lineno || + chmod +x "$as_me.lineno" || { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" # Exit status is that of the last command. exit } -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; esac -if expr a : '\(a\)' >/dev/null 2>&1; then +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir +fi echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi -rm -f conf$$ conf$$.exe conf$$.file +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: @@ -223,7 +519,28 @@ else as_mkdir_p=false fi -as_executable_p="test -f" +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" @@ -232,39 +549,27 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH +exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` -exec 6>&1 - # # Initializations. # ac_default_prefix=/usr/local +ac_clean_files= ac_config_libobj_dir=. +LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} -# Maximum number of lines to put in a shell here document. -# This variable seems obsolete. It should probably be removed, and -# only ac_max_sed_lines should be used. -: ${ac_max_here_lines=38} - # Identity of this package. PACKAGE_NAME= PACKAGE_TARNAME= @@ -276,42 +581,126 @@ ac_unique_file="pcap.c" # Factoring default headers for most tests. ac_includes_default="\ #include -#if HAVE_SYS_TYPES_H +#ifdef HAVE_SYS_TYPES_H # include #endif -#if HAVE_SYS_STAT_H +#ifdef HAVE_SYS_STAT_H # include #endif -#if STDC_HEADERS +#ifdef STDC_HEADERS # include # include #else -# if HAVE_STDLIB_H +# ifdef HAVE_STDLIB_H # include # endif #endif -#if HAVE_STRING_H -# if !STDC_HEADERS && HAVE_MEMORY_H +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif -#if HAVE_STRINGS_H +#ifdef HAVE_STRINGS_H # include #endif -#if HAVE_INTTYPES_H +#ifdef HAVE_INTTYPES_H # include -#else -# if HAVE_STDINT_H -# include -# endif #endif -#if HAVE_UNISTD_H +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H # include #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os SHLICC2 CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP EGREP LIBOBJS RANLIB ac_ct_RANLIB V_CCOPT V_DEFS V_INCLS V_LIBS V_PCAP V_FINDALLDEVS V_RANLIB SSRC DYEXT INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LTLIBOBJS' +ac_subst_vars='SHELL +PATH_SEPARATOR +PACKAGE_NAME +PACKAGE_TARNAME +PACKAGE_VERSION +PACKAGE_STRING +PACKAGE_BUGREPORT +exec_prefix +prefix +program_transform_name +bindir +sbindir +libexecdir +datarootdir +datadir +sysconfdir +sharedstatedir +localstatedir +includedir +oldincludedir +docdir +infodir +htmldir +dvidir +pdfdir +psdir +libdir +localedir +mandir +DEFS +ECHO_C +ECHO_N +ECHO_T +LIBS +build_alias +host_alias +target_alias +build +build_cpu +build_vendor +build_os +host +host_cpu +host_vendor +host_os +target +target_cpu +target_vendor +target_os +SHLICC2 +CC +CFLAGS +LDFLAGS +CPPFLAGS +ac_ct_CC +EXEEXT +OBJEXT +CPP +GREP +EGREP +LIBOBJS +RANLIB +V_CCOPT +V_DEFS +V_INCLS +V_LIBS +V_PCAP +V_FINDALLDEVS +V_RANLIB +SSRC +DYEXT +DAGLIBS +INSTALL_PROGRAM +INSTALL_SCRIPT +INSTALL_DATA +LTLIBOBJS' ac_subst_files='' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP' + # Initialize some variables set by options. ac_init_help= @@ -338,34 +727,48 @@ x_libraries=NONE # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' -datadir='${prefix}/share' +datarootdir='${prefix}/share' +datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' -libdir='${exec_prefix}/lib' includedir='${prefix}/include' oldincludedir='/usr/include' -infodir='${prefix}/info' -mandir='${prefix}/man' +docdir='${datarootdir}/doc/${PACKAGE}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' ac_prev= +ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then - eval "$ac_prev=\$ac_option" + eval $ac_prev=\$ac_option ac_prev= continue fi - ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + case $ac_option in + *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *) ac_optarg=yes ;; + esac # Accept the important Cygnus configure options, so we can diagnose typos. - case $ac_option in + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; @@ -387,33 +790,45 @@ do --config-cache | -C) cache_file=config.cache ;; - -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ - | --da=*) + -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + -disable-* | --disable-*) ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - eval "enable_$ac_feature=no" ;; + ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` + eval enable_$ac_feature=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; - esac - eval "enable_$ac_feature='$ac_optarg'" ;; + ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` + eval enable_$ac_feature=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ @@ -440,6 +855,12 @@ do -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; @@ -464,13 +885,16 @@ do | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst \ - | --locals | --local | --loca | --loc | --lo) + | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* \ - | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) @@ -535,6 +959,16 @@ do | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; @@ -587,24 +1021,20 @@ do -with-* | --with-*) ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } - ac_package=`echo $ac_package| sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; - esac - eval "with_$ac_package='$ac_optarg'" ;; + ac_package=`echo $ac_package | sed 's/[-.]/_/g'` + eval with_$ac_package=\$ac_optarg ;; -without-* | --without-*) ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/-/_/g'` - eval "with_$ac_package=no" ;; + ac_package=`echo $ac_package | sed 's/[-.]/_/g'` + eval with_$ac_package=no ;; --x) # Obsolete; use --with-x. @@ -635,8 +1065,7 @@ Try \`$0 --help' for more information." >&2 expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } - ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` - eval "$ac_envvar='$ac_optarg'" + eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) @@ -656,27 +1085,19 @@ if test -n "$ac_prev"; then { (exit 1); exit 1; }; } fi -# Be sure to have absolute paths. -for ac_var in exec_prefix prefix +# Be sure to have absolute directory names. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir do - eval ac_val=$`echo $ac_var` + eval ac_val=\$$ac_var case $ac_val in - [\\/$]* | ?:[\\/]* | NONE | '' ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; - esac -done - -# Be sure to have absolute paths. -for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ - localstatedir libdir includedir oldincludedir infodir mandir -do - eval ac_val=$`echo $ac_var` - case $ac_val in - [\\/$]* | ?:[\\/]* ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac + { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; } done # There might be people who depend on the old broken behavior: `$host' @@ -703,74 +1124,76 @@ test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + { echo "$as_me: error: Working directory cannot be determined" >&2 + { (exit 1); exit 1; }; } +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + { echo "$as_me: error: pwd does not report name of working directory" >&2 + { (exit 1); exit 1; }; } + + # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes - # Try the directory containing this script, then its parent. - ac_confdir=`(dirname "$0") 2>/dev/null || + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$0" || $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$0" : 'X\(//\)[^/]' \| \ X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || + X"$0" : 'X\(/\)' \| . 2>/dev/null || echo X"$0" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` srcdir=$ac_confdir - if test ! -r $srcdir/$ac_unique_file; then + if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi -if test ! -r $srcdir/$ac_unique_file; then - if test "$ac_srcdir_defaulted" = yes; then - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } - else - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 - { (exit 1); exit 1; }; } - fi fi -(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || - { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 { (exit 1); exit 1; }; } -srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` -ac_env_build_alias_set=${build_alias+set} -ac_env_build_alias_value=$build_alias -ac_cv_env_build_alias_set=${build_alias+set} -ac_cv_env_build_alias_value=$build_alias -ac_env_host_alias_set=${host_alias+set} -ac_env_host_alias_value=$host_alias -ac_cv_env_host_alias_set=${host_alias+set} -ac_cv_env_host_alias_value=$host_alias -ac_env_target_alias_set=${target_alias+set} -ac_env_target_alias_value=$target_alias -ac_cv_env_target_alias_set=${target_alias+set} -ac_cv_env_target_alias_value=$target_alias -ac_env_CC_set=${CC+set} -ac_env_CC_value=$CC -ac_cv_env_CC_set=${CC+set} -ac_cv_env_CC_value=$CC -ac_env_CFLAGS_set=${CFLAGS+set} -ac_env_CFLAGS_value=$CFLAGS -ac_cv_env_CFLAGS_set=${CFLAGS+set} -ac_cv_env_CFLAGS_value=$CFLAGS -ac_env_LDFLAGS_set=${LDFLAGS+set} -ac_env_LDFLAGS_value=$LDFLAGS -ac_cv_env_LDFLAGS_set=${LDFLAGS+set} -ac_cv_env_LDFLAGS_value=$LDFLAGS -ac_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_env_CPPFLAGS_value=$CPPFLAGS -ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_cv_env_CPPFLAGS_value=$CPPFLAGS -ac_env_CPP_set=${CPP+set} -ac_env_CPP_value=$CPP -ac_cv_env_CPP_set=${CPP+set} -ac_cv_env_CPP_value=$CPP + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done # # Report the --help message. @@ -799,9 +1222,6 @@ Configuration: -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] -_ACEOF - - cat <<_ACEOF Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] @@ -819,15 +1239,22 @@ Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] - --datadir=DIR read-only architecture-independent data [PREFIX/share] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] - --infodir=DIR info documentation [PREFIX/info] - --mandir=DIR man documentation [PREFIX/man] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF @@ -866,126 +1293,95 @@ Some influential environment variables: CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory - CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have - headers in a nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if + you have headers in a nonstandard directory CPP C preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. _ACEOF +ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. - ac_popdir=`pwd` for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d $ac_dir || continue + test -d "$ac_dir" || continue ac_builddir=. -if test "$ac_dir" != .; then +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix case $srcdir in - .) # No --srcdir option. We are building in place. + .) # We are building in place. ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; -esac - - cd $ac_dir - # Check for guested configure; otherwise get Cygnus style configure. - if test -f $ac_srcdir/configure.gnu; then - echo - $SHELL $ac_srcdir/configure.gnu --help=recursive - elif test -f $ac_srcdir/configure; then - echo - $SHELL $ac_srcdir/configure --help=recursive - elif test -f $ac_srcdir/configure.ac || - test -f $ac_srcdir/configure.in; then - echo - $ac_configure --help + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive else echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi - cd $ac_popdir + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } done fi -test -n "$ac_init_help" && exit 0 +test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF +configure +generated by GNU Autoconf 2.61 -Copyright (C) 2003 Free Software Foundation, Inc. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF - exit 0 + exit fi -exec 5>config.log -cat >&5 <<_ACEOF +cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by $as_me, which was -generated by GNU Autoconf 2.59. Invocation command line was +generated by GNU Autoconf 2.61. Invocation command line was $ $0 $@ _ACEOF +exec 5>>config.log { cat <<_ASUNAME ## --------- ## @@ -1004,7 +1400,7 @@ uname -v = `(uname -v) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -hostinfo = `(hostinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` @@ -1018,6 +1414,7 @@ do test -z "$as_dir" && as_dir=. echo "PATH: $as_dir" done +IFS=$as_save_IFS } >&5 @@ -1039,7 +1436,6 @@ _ACEOF ac_configure_args= ac_configure_args0= ac_configure_args1= -ac_sep= ac_must_keep_next=false for ac_pass in 1 2 do @@ -1050,7 +1446,7 @@ do -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + *\'*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in @@ -1072,9 +1468,7 @@ do -* ) ac_must_keep_next=true ;; esac fi - ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" - # Get rid of the leading space. - ac_sep=" " + ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac done @@ -1085,8 +1479,8 @@ $as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_ # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. -# WARNING: Be sure not to use single quotes in there, as some shells, -# such as our DU 5.0 friend, will then `close' the trap. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { @@ -1099,20 +1493,34 @@ trap 'exit_status=$? _ASBOX echo # The following way of writing the cache mishandles newlines in values, -{ +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 +echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + *) $as_unset $ac_var ;; + esac ;; + esac + done (set) 2>&1 | - case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in - *ac_space=\ *) + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) sed -n \ - "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" - ;; + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( *) - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; - esac; -} + esac | + sort +) echo cat <<\_ASBOX @@ -1123,22 +1531,28 @@ _ASBOX echo for ac_var in $ac_subst_vars do - eval ac_val=$`echo $ac_var` - echo "$ac_var='"'"'$ac_val'"'"'" + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX -## ------------- ## -## Output files. ## -## ------------- ## +## ------------------- ## +## File substitutions. ## +## ------------------- ## _ASBOX echo for ac_var in $ac_subst_files do - eval ac_val=$`echo $ac_var` - echo "$ac_var='"'"'$ac_val'"'"'" + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + echo "$ac_var='\''$ac_val'\''" done | sort echo fi @@ -1150,26 +1564,24 @@ _ASBOX ## ----------- ## _ASBOX echo - sed "/^$/d" confdefs.h | sort + cat confdefs.h echo fi test "$ac_signal" != 0 && echo "$as_me: caught signal $ac_signal" echo "$as_me: exit $exit_status" } >&5 - rm -f core *.core && - rm -rf conftest* confdefs* conf$$* $ac_clean_files && + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status - ' 0 +' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -rf conftest* confdefs.h -# AIX cpp loses on an empty file, so make sure it contains at least a newline. -echo >confdefs.h +rm -f -r conftest* confdefs.h # Predefined preprocessor variables. @@ -1200,14 +1612,17 @@ _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer explicitly selected file to automatically selected ones. -if test -z "$CONFIG_SITE"; then - if test "x$prefix" != xNONE; then - CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" - else - CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" - fi +if test -n "$CONFIG_SITE"; then + set x "$CONFIG_SITE" +elif test "x$prefix" != xNONE; then + set x "$prefix/share/config.site" "$prefix/etc/config.site" +else + set x "$ac_default_prefix/share/config.site" \ + "$ac_default_prefix/etc/config.site" fi -for ac_site_file in $CONFIG_SITE; do +shift +for ac_site_file +do if test -r "$ac_site_file"; then { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 echo "$as_me: loading site script $ac_site_file" >&6;} @@ -1223,8 +1638,8 @@ if test -r "$cache_file"; then { echo "$as_me:$LINENO: loading cache $cache_file" >&5 echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in - [\\/]* | ?:[\\/]* ) . $cache_file;; - *) . ./$cache_file;; + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; esac fi else @@ -1236,12 +1651,11 @@ fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false -for ac_var in `(set) 2>&1 | - sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do +for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val="\$ac_cv_env_${ac_var}_value" - eval ac_new_val="\$ac_env_${ac_var}_value" + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 @@ -1266,8 +1680,7 @@ echo "$as_me: current value: $ac_new_val" >&2;} # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in @@ -1284,6 +1697,22 @@ echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start ov { (exit 1); exit 1; }; } fi + + + + + + + + + + + + + + + + ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -1292,122 +1721,155 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - - - - - - - - - - - - - - ac_aux_dir= -for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do - if test -f $ac_dir/install-sh; then +for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do + if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break - elif test -f $ac_dir/install.sh; then + elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break - elif test -f $ac_dir/shtool; then + elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then - { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 -echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 +echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} { (exit 1); exit 1; }; } fi -ac_config_guess="$SHELL $ac_aux_dir/config.guess" -ac_config_sub="$SHELL $ac_aux_dir/config.sub" -ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + # Make sure we can run config.sub. -$ac_config_sub sun4 >/dev/null 2>&1 || - { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 -echo "$as_me: error: cannot run $ac_config_sub" >&2;} +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 +echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} { (exit 1); exit 1; }; } -echo "$as_me:$LINENO: checking build system type" >&5 -echo $ECHO_N "checking build system type... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking build system type" >&5 +echo $ECHO_N "checking build system type... $ECHO_C" >&6; } if test "${ac_cv_build+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - ac_cv_build_alias=$build_alias -test -z "$ac_cv_build_alias" && - ac_cv_build_alias=`$ac_config_guess` -test -z "$ac_cv_build_alias" && + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 echo "$as_me: error: cannot guess build type; you must specify one" >&2;} { (exit 1); exit 1; }; } -ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || - { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 +echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} { (exit 1); exit 1; }; } fi -echo "$as_me:$LINENO: result: $ac_cv_build" >&5 -echo "${ECHO_T}$ac_cv_build" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +echo "${ECHO_T}$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 +echo "$as_me: error: invalid value of canonical build" >&2;} + { (exit 1); exit 1; }; };; +esac build=$ac_cv_build -build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac -echo "$as_me:$LINENO: checking host system type" >&5 -echo $ECHO_N "checking host system type... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking host system type" >&5 +echo $ECHO_N "checking host system type... $ECHO_C" >&6; } if test "${ac_cv_host+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - ac_cv_host_alias=$host_alias -test -z "$ac_cv_host_alias" && - ac_cv_host_alias=$ac_cv_build_alias -ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || - { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 +echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} { (exit 1); exit 1; }; } +fi fi -echo "$as_me:$LINENO: result: $ac_cv_host" >&5 -echo "${ECHO_T}$ac_cv_host" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +echo "${ECHO_T}$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 +echo "$as_me: error: invalid value of canonical host" >&2;} + { (exit 1); exit 1; }; };; +esac host=$ac_cv_host -host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac -echo "$as_me:$LINENO: checking target system type" >&5 -echo $ECHO_N "checking target system type... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking target system type" >&5 +echo $ECHO_N "checking target system type... $ECHO_C" >&6; } if test "${ac_cv_target+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - ac_cv_target_alias=$target_alias -test "x$ac_cv_target_alias" = "x" && - ac_cv_target_alias=$ac_cv_host_alias -ac_cv_target=`$ac_config_sub $ac_cv_target_alias` || - { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_target_alias failed" >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;} + if test "x$target_alias" = x; then + ac_cv_target=$ac_cv_host +else + ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || + { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&5 +echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&2;} { (exit 1); exit 1; }; } +fi fi -echo "$as_me:$LINENO: result: $ac_cv_target" >&5 -echo "${ECHO_T}$ac_cv_target" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_target" >&5 +echo "${ECHO_T}$ac_cv_target" >&6; } +case $ac_cv_target in +*-*-*) ;; +*) { { echo "$as_me:$LINENO: error: invalid value of canonical target" >&5 +echo "$as_me: error: invalid value of canonical target" >&2;} + { (exit 1); exit 1; }; };; +esac target=$ac_cv_target -target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_target +shift +target_cpu=$1 +target_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +target_os=$* +IFS=$ac_save_IFS +case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac # The aliases save the names the user supplied, while $host etc. @@ -1422,11 +1884,11 @@ test -n "$target_alias" && -# Check whether --with-gcc or --without-gcc was given. +# Check whether --with-gcc was given. if test "${with_gcc+set}" = set; then - withval="$with_gcc" + withval=$with_gcc; +fi -fi; V_CCOPT="-O" V_INCLS="" if test "${srcdir}" != "." ; then @@ -1441,8 +1903,8 @@ fi; bsdi*) # Extract the first word of "shlicc2", so it can be a program name with args. set dummy shlicc2; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_SHLICC2+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -1455,26 +1917,28 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_SHLICC2="yes" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS test -z "$ac_cv_prog_SHLICC2" && ac_cv_prog_SHLICC2="no" fi fi SHLICC2=$ac_cv_prog_SHLICC2 if test -n "$SHLICC2"; then - echo "$as_me:$LINENO: result: $SHLICC2" >&5 -echo "${ECHO_T}$SHLICC2" >&6 + { echo "$as_me:$LINENO: result: $SHLICC2" >&5 +echo "${ECHO_T}$SHLICC2" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi + if test $SHLICC2 = yes ; then CC=shlicc2 export CC @@ -1494,8 +1958,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -1508,32 +1972,34 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi + fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -1546,36 +2012,51 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 + { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi - CC=$ac_ct_CC + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -1588,74 +2069,34 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 + fi -done -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - CC=$ac_ct_CC -else - CC="$ac_cv_prog_CC" -fi - fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -1669,7 +2110,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue @@ -1680,6 +2121,7 @@ do fi done done +IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. @@ -1697,22 +2139,23 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi + fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then - for ac_prog in cl + for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -1725,36 +2168,38 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi + test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC - for ac_prog in cl + for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -1767,29 +2212,45 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 + { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi + test -n "$ac_ct_CC" && break done - CC=$ac_ct_CC + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi fi fi @@ -1802,21 +2263,35 @@ See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. -echo "$as_me:$LINENO:" \ - "checking for C compiler version" >&5 +echo "$as_me:$LINENO: checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` -{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 - (eval $ac_compiler --version &5) 2>&5 +{ (ac_try="$ac_compiler --version >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 - (eval $ac_compiler -v &5) 2>&5 +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 - (eval $ac_compiler -V &5) 2>&5 +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } @@ -1841,47 +2316,77 @@ ac_clean_files="$ac_clean_files a.out a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. -echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 -echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; } ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` -if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 - (eval $ac_link_default) 2>&5 +# +# List of possible output files, starting from the most likely. +# The algorithm is not robust to junk in `.', hence go to wildcards (a.*) +# only as a last resort. b.out is created by i960 compilers. +ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' +# +# The IRIX 6 linker writes into existing files which may not be +# executable, retaining their permissions. Remove them first so a +# subsequent execution test works. +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { (ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link_default") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then - # Find the output, starting from the most likely. This scheme is -# not robust to junk in `.', hence go to wildcards (a.*) only as a last -# resort. - -# Be careful to initialize this variable, since it used to be cached. -# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. -ac_cv_exeext= -# b.out is created by i960 compilers. -for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) - ;; - conftest.$ac_ext ) - # This is the source file. + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - # FIXME: I believe we export ac_cv_exeext for Libtool, - # but it would be cool to find out if it's true. Does anybody - # maintain Libtool? --akim. - export ac_cv_exeext + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. break;; * ) break;; esac done +test "$ac_cv_exeext" = no && ac_cv_exeext= + else + ac_file='' +fi + +{ echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6; } +if test -z "$ac_file"; then echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 @@ -1893,19 +2398,21 @@ See \`config.log' for more details." >&2;} fi ac_exeext=$ac_cv_exeext -echo "$as_me:$LINENO: result: $ac_file" >&5 -echo "${ECHO_T}$ac_file" >&6 -# Check the compiler produces executables we can run. If not, either +# Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. -echo "$as_me:$LINENO: checking whether the C compiler works" >&5 -echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; } # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -1924,22 +2431,27 @@ See \`config.log' for more details." >&2;} fi fi fi -echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 +{ echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } rm -f a.out a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save -# Check the compiler produces executables we can run. If not, either +# Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. -echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 -echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 -echo "$as_me:$LINENO: result: $cross_compiling" >&5 -echo "${ECHO_T}$cross_compiling" >&6 +{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; } +{ echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6; } -echo "$as_me:$LINENO: checking for suffix of executables" >&5 -echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +{ echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; } +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then @@ -1950,9 +2462,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - export ac_cv_exeext break;; * ) break;; esac @@ -1966,14 +2477,14 @@ See \`config.log' for more details." >&2;} fi rm -f conftest$ac_cv_exeext -echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 -echo "${ECHO_T}$ac_cv_exeext" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT -echo "$as_me:$LINENO: checking for suffix of object files" >&5 -echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; } if test "${ac_cv_objext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -1993,14 +2504,20 @@ main () } _ACEOF rm -f conftest.o conftest.obj -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then - for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac @@ -2018,12 +2535,12 @@ fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 -echo "${ECHO_T}$ac_cv_objext" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT -echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -2046,50 +2563,49 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (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); }; } && - { ac_try='test -s conftest.$ac_objext' - { (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 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_compiler_gnu=no + ac_compiler_gnu=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi -echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } GCC=`test $ac_compiler_gnu = yes && echo yes` ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS -CFLAGS="-g" -echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 -echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - cat >conftest.$ac_ext <<_ACEOF + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -2105,38 +2621,118 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (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); }; } && - { ac_try='test -s conftest.$ac_objext' - { (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 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_prog_cc_g=no + CFLAGS="" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then @@ -2152,12 +2748,12 @@ else CFLAGS= fi fi -echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 -echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 -if test "${ac_cv_prog_cc_stdc+set}" = set; then +{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 +echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } +if test "${ac_cv_prog_cc_c89+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - ac_cv_prog_cc_stdc=no + ac_cv_prog_cc_c89=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -2191,12 +2787,17 @@ static char *f (char * (*g) (char **, int), char **p, ...) /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std1 is added to get + as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std1. */ + that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; @@ -2211,205 +2812,57 @@ return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; return 0; } _ACEOF -# Don't try gcc -ansi; that turns off useful extensions and -# breaks some systems' header files. -# AIX -qlanglvl=ansi -# Ultrix and OSF/1 -std1 -# HP-UX 10.20 and later -Ae -# HP-UX older versions -Aa -D_HPUX_SOURCE -# SVR4 -Xc -D__EXTENSIONS__ -for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (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); }; } && - { ac_try='test -s conftest.$ac_objext' - { (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 - ac_cv_prog_cc_stdc=$ac_arg -break + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_c89=$ac_arg else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 + fi -rm -f conftest.err conftest.$ac_objext + +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break done -rm -f conftest.$ac_ext conftest.$ac_objext +rm -f conftest.$ac_ext CC=$ac_save_CC fi - -case "x$ac_cv_prog_cc_stdc" in - x|xno) - echo "$as_me:$LINENO: result: none needed" >&5 -echo "${ECHO_T}none needed" >&6 ;; +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6; } ;; + xno) + { echo "$as_me:$LINENO: result: unsupported" >&5 +echo "${ECHO_T}unsupported" >&6; } ;; *) - echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 - CC="$CC $ac_cv_prog_cc_stdc" ;; + CC="$CC $ac_cv_prog_cc_c89" + { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; esac -# Some people use a C++ compiler to compile C. Since we use `exit', -# in C++ we need to declare it. In case someone uses the same compiler -# for both compiling C and C++ we need to have the C++ compiler decide -# the declaration of exit, since it's the most demanding environment. -cat >conftest.$ac_ext <<_ACEOF -#ifndef __cplusplus - choke me -#endif -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (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); }; } && - { ac_try='test -s conftest.$ac_objext' - { (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 - for ac_declaration in \ - '' \ - 'extern "C" void std::exit (int) throw (); using std::exit;' \ - 'extern "C" void std::exit (int); using std::exit;' \ - 'extern "C" void exit (int) throw ();' \ - 'extern "C" void exit (int);' \ - 'void exit (int);' -do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_declaration -#include -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (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); }; } && - { ac_try='test -s conftest.$ac_objext' - { (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 - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -continue -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_declaration -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (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); }; } && - { ac_try='test -s conftest.$ac_objext' - { (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 - break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -done -rm -f conftest* -if test -n "$ac_declaration"; then - echo '#ifdef __cplusplus' >>confdefs.h - echo $ac_declaration >>confdefs.h - echo '#endif' >>confdefs.h -fi - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -2421,8 +2874,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_cv_lbl_gcc_vers=2 V_CCOPT="-g -O2" else - echo "$as_me:$LINENO: checking gcc version" >&5 -echo $ECHO_N "checking gcc version... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking gcc version" >&5 +echo $ECHO_N "checking gcc version... $ECHO_C" >&6; } if test "${ac_cv_lbl_gcc_vers+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -2433,15 +2886,15 @@ else -e 's/\..*//'` fi - echo "$as_me:$LINENO: result: $ac_cv_lbl_gcc_vers" >&5 -echo "${ECHO_T}$ac_cv_lbl_gcc_vers" >&6 + { echo "$as_me:$LINENO: result: $ac_cv_lbl_gcc_vers" >&5 +echo "${ECHO_T}$ac_cv_lbl_gcc_vers" >&6; } if test $ac_cv_lbl_gcc_vers -gt 1 ; then V_CCOPT="-g -O2" fi fi else - echo "$as_me:$LINENO: checking that $CC handles ansi prototypes" >&5 -echo $ECHO_N "checking that $CC handles ansi prototypes... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking that $CC handles ansi prototypes" >&5 +echo $ECHO_N "checking that $CC handles ansi prototypes... $ECHO_C" >&6; } if test "${ac_cv_lbl_cc_ansi_prototypes+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -2462,45 +2915,41 @@ int frob(int, char *) } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (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); }; } && - { ac_try='test -s conftest.$ac_objext' - { (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 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_lbl_cc_ansi_prototypes=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lbl_cc_ansi_prototypes=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_lbl_cc_ansi_prototypes=no fi - echo "$as_me:$LINENO: result: $ac_cv_lbl_cc_ansi_prototypes" >&5 -echo "${ECHO_T}$ac_cv_lbl_cc_ansi_prototypes" >&6 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + + { echo "$as_me:$LINENO: result: $ac_cv_lbl_cc_ansi_prototypes" >&5 +echo "${ECHO_T}$ac_cv_lbl_cc_ansi_prototypes" >&6; } if test $ac_cv_lbl_cc_ansi_prototypes = no ; then case "$target_os" in hpux*) - echo "$as_me:$LINENO: checking for HP-UX ansi compiler ($CC -Aa -D_HPUX_SOURCE)" >&5 -echo $ECHO_N "checking for HP-UX ansi compiler ($CC -Aa -D_HPUX_SOURCE)... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking for HP-UX ansi compiler ($CC -Aa -D_HPUX_SOURCE)" >&5 +echo $ECHO_N "checking for HP-UX ansi compiler ($CC -Aa -D_HPUX_SOURCE)... $ECHO_C" >&6; } savedcflags="$CFLAGS" CFLAGS="-Aa -D_HPUX_SOURCE $CFLAGS" if test "${ac_cv_lbl_cc_hpux_cc_aa+set}" = set; then @@ -2522,39 +2971,35 @@ int frob(int, char *) } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (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); }; } && - { ac_try='test -s conftest.$ac_objext' - { (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 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_lbl_cc_hpux_cc_aa=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lbl_cc_hpux_cc_aa=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_lbl_cc_hpux_cc_aa=no fi - echo "$as_me:$LINENO: result: $ac_cv_lbl_cc_hpux_cc_aa" >&5 -echo "${ECHO_T}$ac_cv_lbl_cc_hpux_cc_aa" >&6 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + + { echo "$as_me:$LINENO: result: $ac_cv_lbl_cc_hpux_cc_aa" >&5 +echo "${ECHO_T}$ac_cv_lbl_cc_hpux_cc_aa" >&6; } if test $ac_cv_lbl_cc_hpux_cc_aa = no ; then { { echo "$as_me:$LINENO: error: see the INSTALL doc for more info" >&5 echo "$as_me: error: see the INSTALL doc for more info" >&2;} @@ -2590,8 +3035,8 @@ echo "$as_me: error: see the INSTALL doc for more info" >&2;} ;; ultrix*) - echo "$as_me:$LINENO: checking that Ultrix $CC hacks const in prototypes" >&5 -echo $ECHO_N "checking that Ultrix $CC hacks const in prototypes... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking that Ultrix $CC hacks const in prototypes" >&5 +echo $ECHO_N "checking that Ultrix $CC hacks const in prototypes... $ECHO_C" >&6; } if test "${ac_cv_lbl_cc_const_proto+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -2612,39 +3057,35 @@ struct a { int b; }; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (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); }; } && - { ac_try='test -s conftest.$ac_objext' - { (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 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_lbl_cc_const_proto=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lbl_cc_const_proto=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_lbl_cc_const_proto=no fi - echo "$as_me:$LINENO: result: $ac_cv_lbl_cc_const_proto" >&5 -echo "${ECHO_T}$ac_cv_lbl_cc_const_proto" >&6 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + + { echo "$as_me:$LINENO: result: $ac_cv_lbl_cc_const_proto" >&5 +echo "${ECHO_T}$ac_cv_lbl_cc_const_proto" >&6; } if test $ac_cv_lbl_cc_const_proto = no ; then cat >>confdefs.h <<\_ACEOF #define const @@ -2655,8 +3096,8 @@ _ACEOF esac fi -echo "$as_me:$LINENO: checking for inline" >&5 -echo $ECHO_N "checking for inline... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for inline" >&5 +echo $ECHO_N "checking for inline... $ECHO_C" >&6; } save_CFLAGS="$CFLAGS" CFLAGS="$V_CCOPT" if test "${ac_cv_lbl_inline+set}" = set; then @@ -2696,34 +3137,31 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (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); }; } && - { ac_try='test -s conftest.$ac_objext' - { (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 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lbl_cc_inline=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 + fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test "$ac_lbl_cc_inline" = yes ; then break; fi @@ -2735,11 +3173,11 @@ fi CFLAGS="$save_CFLAGS" if test ! -z "$ac_cv_lbl_inline" ; then - echo "$as_me:$LINENO: result: $ac_cv_lbl_inline" >&5 -echo "${ECHO_T}$ac_cv_lbl_inline" >&6 + { echo "$as_me:$LINENO: result: $ac_cv_lbl_inline" >&5 +echo "${ECHO_T}$ac_cv_lbl_inline" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi cat >>confdefs.h <<_ACEOF @@ -2747,8 +3185,8 @@ cat >>confdefs.h <<_ACEOF _ACEOF -echo "$as_me:$LINENO: checking for __attribute__" >&5 -echo $ECHO_N "checking for __attribute__... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for __attribute__" >&5 +echo $ECHO_N "checking for __attribute__... $ECHO_C" >&6; } if test "${ac_cv___attribute__+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -2778,35 +3216,31 @@ main(int argc, char **argv) _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (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); }; } && - { ac_try='test -s conftest.$ac_objext' - { (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 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv___attribute__=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv___attribute__=no + ac_cv___attribute__=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi if test "$ac_cv___attribute__" = "yes"; then @@ -2819,12 +3253,12 @@ _ACEOF else V_DEFS="$V_DEFS -D_U_=\"\"" fi -echo "$as_me:$LINENO: result: $ac_cv___attribute__" >&5 -echo "${ECHO_T}$ac_cv___attribute__" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv___attribute__" >&5 +echo "${ECHO_T}$ac_cv___attribute__" >&6; } -echo "$as_me:$LINENO: checking for u_int8_t using $CC" >&5 -echo $ECHO_N "checking for u_int8_t using $CC... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for u_int8_t using $CC" >&5 +echo $ECHO_N "checking for u_int8_t using $CC... $ECHO_C" >&6; } if test "${ac_cv_lbl_have_u_int8_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -2850,39 +3284,35 @@ u_int8_t i } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (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); }; } && - { ac_try='test -s conftest.$ac_objext' - { (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 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_lbl_have_u_int8_t=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lbl_have_u_int8_t=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_lbl_have_u_int8_t=no fi - echo "$as_me:$LINENO: result: $ac_cv_lbl_have_u_int8_t" >&5 -echo "${ECHO_T}$ac_cv_lbl_have_u_int8_t" >&6 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + + { echo "$as_me:$LINENO: result: $ac_cv_lbl_have_u_int8_t" >&5 +echo "${ECHO_T}$ac_cv_lbl_have_u_int8_t" >&6; } if test $ac_cv_lbl_have_u_int8_t = no ; then cat >>confdefs.h <<\_ACEOF @@ -2890,8 +3320,8 @@ cat >>confdefs.h <<\_ACEOF _ACEOF fi -echo "$as_me:$LINENO: checking for u_int16_t using $CC" >&5 -echo $ECHO_N "checking for u_int16_t using $CC... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for u_int16_t using $CC" >&5 +echo $ECHO_N "checking for u_int16_t using $CC... $ECHO_C" >&6; } if test "${ac_cv_lbl_have_u_int16_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -2917,39 +3347,35 @@ u_int16_t i } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (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); }; } && - { ac_try='test -s conftest.$ac_objext' - { (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 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_lbl_have_u_int16_t=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lbl_have_u_int16_t=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_lbl_have_u_int16_t=no fi - echo "$as_me:$LINENO: result: $ac_cv_lbl_have_u_int16_t" >&5 -echo "${ECHO_T}$ac_cv_lbl_have_u_int16_t" >&6 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + + { echo "$as_me:$LINENO: result: $ac_cv_lbl_have_u_int16_t" >&5 +echo "${ECHO_T}$ac_cv_lbl_have_u_int16_t" >&6; } if test $ac_cv_lbl_have_u_int16_t = no ; then cat >>confdefs.h <<\_ACEOF @@ -2957,8 +3383,8 @@ cat >>confdefs.h <<\_ACEOF _ACEOF fi -echo "$as_me:$LINENO: checking for u_int32_t using $CC" >&5 -echo $ECHO_N "checking for u_int32_t using $CC... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for u_int32_t using $CC" >&5 +echo $ECHO_N "checking for u_int32_t using $CC... $ECHO_C" >&6; } if test "${ac_cv_lbl_have_u_int32_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -2984,39 +3410,35 @@ u_int32_t i } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (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); }; } && - { ac_try='test -s conftest.$ac_objext' - { (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 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_lbl_have_u_int32_t=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lbl_have_u_int32_t=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_lbl_have_u_int32_t=no fi - echo "$as_me:$LINENO: result: $ac_cv_lbl_have_u_int32_t" >&5 -echo "${ECHO_T}$ac_cv_lbl_have_u_int32_t" >&6 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + + { echo "$as_me:$LINENO: result: $ac_cv_lbl_have_u_int32_t" >&5 +echo "${ECHO_T}$ac_cv_lbl_have_u_int32_t" >&6; } if test $ac_cv_lbl_have_u_int32_t = no ; then cat >>confdefs.h <<\_ACEOF @@ -3030,8 +3452,8 @@ ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 -echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -3065,24 +3487,22 @@ cat >>conftest.$ac_ext <<_ACEOF #endif Syntax error _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : else echo "$as_me: failed program was:" >&5 @@ -3091,9 +3511,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi + rm -f conftest.err conftest.$ac_ext - # OK, works on sane cases. Now check whether non-existent headers + # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -3103,24 +3524,22 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then # Broken: success on invalid input. continue else @@ -3131,6 +3550,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_preproc_ok=: break fi + rm -f conftest.err conftest.$ac_ext done @@ -3148,8 +3568,8 @@ fi else ac_cv_prog_CPP=$CPP fi -echo "$as_me:$LINENO: result: $CPP" >&5 -echo "${ECHO_T}$CPP" >&6 +{ echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do @@ -3172,24 +3592,22 @@ cat >>conftest.$ac_ext <<_ACEOF #endif Syntax error _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : else echo "$as_me: failed program was:" >&5 @@ -3198,9 +3616,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi + rm -f conftest.err conftest.$ac_ext - # OK, works on sane cases. Now check whether non-existent headers + # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -3210,24 +3629,22 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then # Broken: success on invalid input. continue else @@ -3238,6 +3655,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_preproc_ok=: break fi + rm -f conftest.err conftest.$ac_ext done @@ -3260,23 +3678,170 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $ ac_compiler_gnu=$ac_cv_c_compiler_gnu -echo "$as_me:$LINENO: checking for egrep" >&5 -echo $ECHO_N "checking for egrep... $ECHO_C" >&6 -if test "${ac_cv_prog_egrep+set}" = set; then +{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 +echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; } +if test "${ac_cv_path_GREP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if echo a | (grep -E '(a|b)') >/dev/null 2>&1 - then ac_cv_prog_egrep='grep -E' - else ac_cv_prog_egrep='egrep' + # Extract the first word of "grep ggrep" to use in msg output +if test -z "$GREP"; then +set dummy grep ggrep; ac_prog_name=$2 +if test "${ac_cv_path_GREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_path_GREP_found=false +# Loop through the user's path and test for each of PROGNAME-LIST +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue + # Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + ac_count=`expr $ac_count + 1` + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + + $ac_path_GREP_found && break 3 + done +done + +done +IFS=$as_save_IFS + + +fi + +GREP="$ac_cv_path_GREP" +if test -z "$GREP"; then + { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} + { (exit 1); exit 1; }; } +fi + +else + ac_cv_path_GREP=$GREP fi -echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 -echo "${ECHO_T}$ac_cv_prog_egrep" >&6 - EGREP=$ac_cv_prog_egrep -echo "$as_me:$LINENO: checking for ANSI C header files" >&5 -echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +fi +{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 +echo "${ECHO_T}$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ echo "$as_me:$LINENO: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6; } +if test "${ac_cv_path_EGREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + # Extract the first word of "egrep" to use in msg output +if test -z "$EGREP"; then +set dummy egrep; ac_prog_name=$2 +if test "${ac_cv_path_EGREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_path_EGREP_found=false +# Loop through the user's path and test for each of PROGNAME-LIST +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue + # Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + ac_count=`expr $ac_count + 1` + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + + $ac_path_EGREP_found && break 3 + done +done + +done +IFS=$as_save_IFS + + +fi + +EGREP="$ac_cv_path_EGREP" +if test -z "$EGREP"; then + { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} + { (exit 1); exit 1; }; } +fi + +else + ac_cv_path_EGREP=$EGREP +fi + + + fi +fi +{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 +echo "${ECHO_T}$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } if test "${ac_cv_header_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3300,35 +3865,31 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (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); }; } && - { ac_try='test -s conftest.$ac_objext' - { (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 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_header_stdc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_header_stdc=no + ac_cv_header_stdc=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. @@ -3384,6 +3945,7 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include +#include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) @@ -3403,18 +3965,27 @@ main () for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) - exit(2); - exit (0); + return 2; + return 0; } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -3427,12 +3998,14 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + fi fi -fi -echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 -echo "${ECHO_T}$ac_cv_header_stdc" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF @@ -3455,9 +4028,9 @@ for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -3471,38 +4044,35 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (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); }; } && - { ac_try='test -s conftest.$ac_objext' - { (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 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -eval "$as_ac_Header=no" + eval "$as_ac_Header=no" fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 @@ -3516,21 +4086,23 @@ done -for ac_header in sys/ioccom.h sys/sockio.h limits.h + +for ac_header in sys/ioccom.h sys/sockio.h limits.h paths.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } else # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -3541,41 +4113,37 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (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); }; } && - { ac_try='test -s conftest.$ac_objext' - { (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 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_header_compiler=no + ac_header_compiler=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } # Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -3584,24 +4152,22 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -3609,9 +4175,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi + rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -3635,25 +4202,19 @@ echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 + ;; esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } fi if test `eval echo '${'$as_ac_Header'}'` = yes; then @@ -3669,9 +4230,9 @@ done for ac_header in netinet/if_ether.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -3686,38 +4247,35 @@ cat >>conftest.$ac_ext <<_ACEOF #include <$ac_header> _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (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); }; } && - { ac_try='test -s conftest.$ac_objext' - { (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 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -eval "$as_ac_Header=no" + eval "$as_ac_Header=no" fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 @@ -3742,9 +4300,9 @@ echo "$as_me: Rechecking with some additional includes" >&6;} for ac_header in netinet/if_ether.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -3763,38 +4321,35 @@ struct rtentry; #include <$ac_header> _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (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); }; } && - { ac_try='test -s conftest.$ac_objext' - { (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 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -eval "$as_ac_Header=no" + eval "$as_ac_Header=no" fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 @@ -3807,8 +4362,8 @@ done fi if test "$GCC" = yes ; then - echo "$as_me:$LINENO: checking for ANSI ioctl definitions" >&5 -echo $ECHO_N "checking for ANSI ioctl definitions... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking for ANSI ioctl definitions" >&5 +echo $ECHO_N "checking for ANSI ioctl definitions... $ECHO_C" >&6; } if test "${ac_cv_lbl_gcc_fixincludes+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3840,39 +4395,35 @@ switch (0) { } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (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); }; } && - { ac_try='test -s conftest.$ac_objext' - { (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 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_lbl_gcc_fixincludes=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lbl_gcc_fixincludes=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_lbl_gcc_fixincludes=no fi - echo "$as_me:$LINENO: result: $ac_cv_lbl_gcc_fixincludes" >&5 -echo "${ECHO_T}$ac_cv_lbl_gcc_fixincludes" >&6 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + + { echo "$as_me:$LINENO: result: $ac_cv_lbl_gcc_fixincludes" >&5 +echo "${ECHO_T}$ac_cv_lbl_gcc_fixincludes" >&6; } if test $ac_cv_lbl_gcc_fixincludes = no ; then # Don't cache failure unset ac_cv_lbl_gcc_fixincludes @@ -3887,9 +4438,9 @@ echo "$as_me: error: see the INSTALL for more info" >&2;} for ac_func in strerror strlcpy do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then +{ echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -3915,68 +4466,60 @@ cat >>conftest.$ac_ext <<_ACEOF #undef $ac_func -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" -{ #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +#if defined __stub_$ac_func || defined __stub___$ac_func choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} #endif int main () { -return f != $ac_func; +return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (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); }; } && - { ac_try='test -s 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 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -eval "$as_ac_var=no" + eval "$as_ac_var=no" fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 @@ -3992,9 +4535,9 @@ needsnprintf=no for ac_func in vsnprintf snprintf do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then +{ echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -4020,68 +4563,60 @@ cat >>conftest.$ac_ext <<_ACEOF #undef $ac_func -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" -{ #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +#if defined __stub_$ac_func || defined __stub___$ac_func choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} #endif int main () { -return f != $ac_func; +return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (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); }; } && - { ac_try='test -s 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 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -eval "$as_ac_var=no" + eval "$as_ac_var=no" fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 @@ -4093,12 +4628,10 @@ fi done if test $needsnprintf = yes; then - case $LIBOBJS in - "snprintf.$ac_objext" | \ - *" snprintf.$ac_objext" | \ - "snprintf.$ac_objext "* | \ + case " $LIBOBJS " in *" snprintf.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS snprintf.$ac_objext" ;; + *) LIBOBJS="$LIBOBJS snprintf.$ac_objext" + ;; esac fi @@ -4112,13 +4645,12 @@ fi # libraries (i.e. libc): # Some OSes (eg. Solaris) place it in libnsl # Some strange OSes (SINIX) have it in libsocket: - echo "$as_me:$LINENO: checking for library containing gethostbyname" >&5 -echo $ECHO_N "checking for library containing gethostbyname... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking for library containing gethostbyname" >&5 +echo $ECHO_N "checking for library containing gethostbyname... $ECHO_C" >&6; } if test "${ac_cv_search_gethostbyname+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_func_search_save_LIBS=$LIBS -ac_cv_search_gethostbyname=no cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -4126,115 +4658,73 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char gethostbyname (); int main () { -gethostbyname (); +return gethostbyname (); ; return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (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); }; } && - { ac_try='test -s 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 - ac_cv_search_gethostbyname="none required" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -if test "$ac_cv_search_gethostbyname" = no; then - for ac_lib in nsl socket resolv; do +for ac_lib in '' nsl socket resolv; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char gethostbyname (); -int -main () -{ -gethostbyname (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 + fi + rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (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); }; } && - { ac_try='test -s 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 - ac_cv_search_gethostbyname="-l$ac_lib" -break + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_search_gethostbyname=$ac_res else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 + fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - done + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext + if test "${ac_cv_search_gethostbyname+set}" = set; then + break fi +done +if test "${ac_cv_search_gethostbyname+set}" = set; then + : +else + ac_cv_search_gethostbyname=no +fi +rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_search_gethostbyname" >&5 -echo "${ECHO_T}$ac_cv_search_gethostbyname" >&6 -if test "$ac_cv_search_gethostbyname" != no; then - test "$ac_cv_search_gethostbyname" = "none required" || LIBS="$ac_cv_search_gethostbyname $LIBS" +{ echo "$as_me:$LINENO: result: $ac_cv_search_gethostbyname" >&5 +echo "${ECHO_T}$ac_cv_search_gethostbyname" >&6; } +ac_res=$ac_cv_search_gethostbyname +if test "$ac_res" != no; then + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi @@ -4242,8 +4732,8 @@ fi # AC_SEARCH_LIBS isn't up to the task of handling dependencies like this. if test "$ac_cv_search_gethostbyname" = "no" then - echo "$as_me:$LINENO: checking for gethostbyname in -lsocket" >&5 -echo $ECHO_N "checking for gethostbyname in -lsocket... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking for gethostbyname in -lsocket" >&5 +echo $ECHO_N "checking for gethostbyname in -lsocket... $ECHO_C" >&6; } if test "${ac_cv_lib_socket_gethostbyname+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -4256,68 +4746,64 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char gethostbyname (); int main () { -gethostbyname (); +return gethostbyname (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (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); }; } && - { ac_try='test -s 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 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_lib_socket_gethostbyname=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_socket_gethostbyname=no + ac_cv_lib_socket_gethostbyname=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_socket_gethostbyname" >&5 -echo "${ECHO_T}$ac_cv_lib_socket_gethostbyname" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_lib_socket_gethostbyname" >&5 +echo "${ECHO_T}$ac_cv_lib_socket_gethostbyname" >&6; } if test $ac_cv_lib_socket_gethostbyname = yes; then LIBS="-lsocket -lnsl $LIBS" fi fi - echo "$as_me:$LINENO: checking for library containing socket" >&5 -echo $ECHO_N "checking for library containing socket... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking for library containing socket" >&5 +echo $ECHO_N "checking for library containing socket... $ECHO_C" >&6; } if test "${ac_cv_search_socket+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_func_search_save_LIBS=$LIBS -ac_cv_search_socket=no cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -4325,119 +4811,77 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char socket (); int main () { -socket (); +return socket (); ; return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (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); }; } && - { ac_try='test -s 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 - ac_cv_search_socket="none required" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -if test "$ac_cv_search_socket" = no; then - for ac_lib in socket; do +for ac_lib in '' socket; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char socket (); -int -main () -{ -socket (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 + fi + rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (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); }; } && - { ac_try='test -s 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 - ac_cv_search_socket="-l$ac_lib" -break + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_search_socket=$ac_res else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 + fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - done + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext + if test "${ac_cv_search_socket+set}" = set; then + break fi +done +if test "${ac_cv_search_socket+set}" = set; then + : +else + ac_cv_search_socket=no +fi +rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_search_socket" >&5 -echo "${ECHO_T}$ac_cv_search_socket" >&6 -if test "$ac_cv_search_socket" != no; then - test "$ac_cv_search_socket" = "none required" || LIBS="$ac_cv_search_socket $LIBS" +{ echo "$as_me:$LINENO: result: $ac_cv_search_socket" >&5 +echo "${ECHO_T}$ac_cv_search_socket" >&6; } +ac_res=$ac_cv_search_socket +if test "$ac_res" != no; then + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" else - echo "$as_me:$LINENO: checking for socket in -lsocket" >&5 -echo $ECHO_N "checking for socket in -lsocket... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking for socket in -lsocket" >&5 +echo $ECHO_N "checking for socket in -lsocket... $ECHO_C" >&6; } if test "${ac_cv_lib_socket_socket+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -4450,56 +4894,53 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char socket (); int main () { -socket (); +return socket (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (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); }; } && - { ac_try='test -s 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 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_lib_socket_socket=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_socket_socket=no + ac_cv_lib_socket_socket=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_socket_socket" >&5 -echo "${ECHO_T}$ac_cv_lib_socket_socket" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_lib_socket_socket" >&5 +echo "${ECHO_T}$ac_cv_lib_socket_socket" >&6; } if test $ac_cv_lib_socket_socket = yes; then LIBS="-lsocket -lnsl $LIBS" fi @@ -4507,13 +4948,12 @@ fi fi # DLPI needs putmsg under HPUX so test for -lstr while we're at it - echo "$as_me:$LINENO: checking for library containing putmsg" >&5 -echo $ECHO_N "checking for library containing putmsg... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking for library containing putmsg" >&5 +echo $ECHO_N "checking for library containing putmsg... $ECHO_C" >&6; } if test "${ac_cv_search_putmsg+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_func_search_save_LIBS=$LIBS -ac_cv_search_putmsg=no cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -4521,115 +4961,73 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char putmsg (); int main () { -putmsg (); +return putmsg (); ; return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (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); }; } && - { ac_try='test -s 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 - ac_cv_search_putmsg="none required" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -if test "$ac_cv_search_putmsg" = no; then - for ac_lib in str; do +for ac_lib in '' str; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char putmsg (); -int -main () -{ -putmsg (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 + fi + rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (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); }; } && - { ac_try='test -s 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 - ac_cv_search_putmsg="-l$ac_lib" -break + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_search_putmsg=$ac_res else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 + fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - done + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext + if test "${ac_cv_search_putmsg+set}" = set; then + break fi +done +if test "${ac_cv_search_putmsg+set}" = set; then + : +else + ac_cv_search_putmsg=no +fi +rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_search_putmsg" >&5 -echo "${ECHO_T}$ac_cv_search_putmsg" >&6 -if test "$ac_cv_search_putmsg" != no; then - test "$ac_cv_search_putmsg" = "none required" || LIBS="$ac_cv_search_putmsg $LIBS" +{ echo "$as_me:$LINENO: result: $ac_cv_search_putmsg" >&5 +echo "${ECHO_T}$ac_cv_search_putmsg" >&6; } +ac_res=$ac_cv_search_putmsg +if test "$ac_res" != no; then + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi @@ -4650,9 +5048,9 @@ fi for ac_func in ether_hostton do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then +{ echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -4678,68 +5076,60 @@ cat >>conftest.$ac_ext <<_ACEOF #undef $ac_func -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" -{ #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +#if defined __stub_$ac_func || defined __stub___$ac_func choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} #endif int main () { -return f != $ac_func; +return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (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); }; } && - { ac_try='test -s 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 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -eval "$as_ac_var=no" + eval "$as_ac_var=no" fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 @@ -4756,8 +5146,8 @@ if test "$ac_cv_func_ether_hostton" = yes; then # # Yes. Does it declare ether_hostton()? # - echo "$as_me:$LINENO: checking whether ether_hostton is declared" >&5 -echo $ECHO_N "checking whether ether_hostton is declared... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking whether ether_hostton is declared" >&5 +echo $ECHO_N "checking whether ether_hostton is declared... $ECHO_C" >&6; } if test "${ac_cv_have_decl_ether_hostton+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -4782,7 +5172,7 @@ int main () { #ifndef ether_hostton - char *p = (char *) ether_hostton; + (void) ether_hostton; #endif ; @@ -4790,38 +5180,34 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (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); }; } && - { ac_try='test -s conftest.$ac_objext' - { (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 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_have_decl_ether_hostton=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_have_decl_ether_hostton=no + ac_cv_have_decl_ether_hostton=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_have_decl_ether_hostton" >&5 -echo "${ECHO_T}$ac_cv_have_decl_ether_hostton" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_ether_hostton" >&5 +echo "${ECHO_T}$ac_cv_have_decl_ether_hostton" >&6; } if test $ac_cv_have_decl_ether_hostton = yes; then @@ -4844,18 +5230,19 @@ fi for ac_header in netinet/ether.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } else # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -4866,41 +5253,37 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (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); }; } && - { ac_try='test -s conftest.$ac_objext' - { (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 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_header_compiler=no + ac_header_compiler=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } # Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -4909,24 +5292,22 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -4934,9 +5315,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi + rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -4960,25 +5342,19 @@ echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 + ;; esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } fi if test `eval echo '${'$as_ac_Header'}'` = yes; then @@ -4998,8 +5374,8 @@ done # suppress the next test. # unset ac_cv_have_decl_ether_hostton - echo "$as_me:$LINENO: checking whether ether_hostton is declared" >&5 -echo $ECHO_N "checking whether ether_hostton is declared... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking whether ether_hostton is declared" >&5 +echo $ECHO_N "checking whether ether_hostton is declared... $ECHO_C" >&6; } if test "${ac_cv_have_decl_ether_hostton+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -5017,7 +5393,7 @@ int main () { #ifndef ether_hostton - char *p = (char *) ether_hostton; + (void) ether_hostton; #endif ; @@ -5025,38 +5401,34 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (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); }; } && - { ac_try='test -s conftest.$ac_objext' - { (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 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_have_decl_ether_hostton=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_have_decl_ether_hostton=no + ac_cv_have_decl_ether_hostton=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_have_decl_ether_hostton" >&5 -echo "${ECHO_T}$ac_cv_have_decl_ether_hostton" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_ether_hostton" >&5 +echo "${ECHO_T}$ac_cv_have_decl_ether_hostton" >&6; } if test $ac_cv_have_decl_ether_hostton = yes; then @@ -5077,8 +5449,8 @@ fi # No, we'll have to declare it ourselves. # Do we have "struct ether_addr"? # - echo "$as_me:$LINENO: checking for struct ether_addr" >&5 -echo $ECHO_N "checking for struct ether_addr... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking for struct ether_addr" >&5 +echo $ECHO_N "checking for struct ether_addr... $ECHO_C" >&6; } if test "${ac_cv_type_struct_ether_addr+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -5099,50 +5471,47 @@ struct rtentry; #include +typedef struct ether_addr ac__type_new_; int main () { -if ((struct ether_addr *) 0) +if ((ac__type_new_ *) 0) return 0; -if (sizeof (struct ether_addr)) +if (sizeof (ac__type_new_)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (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); }; } && - { ac_try='test -s conftest.$ac_objext' - { (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 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_type_struct_ether_addr=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_type_struct_ether_addr=no + ac_cv_type_struct_ether_addr=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_type_struct_ether_addr" >&5 -echo "${ECHO_T}$ac_cv_type_struct_ether_addr" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_type_struct_ether_addr" >&5 +echo "${ECHO_T}$ac_cv_type_struct_ether_addr" >&6; } if test $ac_cv_type_struct_ether_addr = yes; then cat >>confdefs.h <<_ACEOF @@ -5166,13 +5535,13 @@ _ACEOF fi fi -echo "$as_me:$LINENO: checking if --disable-protochain option is specified" >&5 -echo $ECHO_N "checking if --disable-protochain option is specified... $ECHO_C" >&6 -# Check whether --enable-protochain or --disable-protochain was given. +{ echo "$as_me:$LINENO: checking if --disable-protochain option is specified" >&5 +echo $ECHO_N "checking if --disable-protochain option is specified... $ECHO_C" >&6; } +# Check whether --enable-protochain was given. if test "${enable_protochain+set}" = set; then - enableval="$enable_protochain" + enableval=$enable_protochain; +fi -fi; case "x$enable_protochain" in xyes) enable_protochain=enabled ;; xno) enable_protochain=disabled ;; @@ -5186,8 +5555,8 @@ cat >>confdefs.h <<\_ACEOF _ACEOF fi -echo "$as_me:$LINENO: result: ${enable_protochain}" >&5 -echo "${ECHO_T}${enable_protochain}" >&6 +{ echo "$as_me:$LINENO: result: ${enable_protochain}" >&5 +echo "${ECHO_T}${enable_protochain}" >&6; } if test -z "$with_pcap" && test "$cross_compiling" = yes; then { { echo "$as_me:$LINENO: error: pcap type not determined when cross-compiling; use --with-pcap=..." >&5 @@ -5195,15 +5564,25 @@ echo "$as_me: error: pcap type not determined when cross-compiling; use --with-p { (exit 1); exit 1; }; } fi -# Check whether --with-pcap or --without-pcap was given. +# Check whether --with-pcap was given. if test "${with_pcap+set}" = set; then - withval="$with_pcap" + withval=$with_pcap; +fi -fi; -echo "$as_me:$LINENO: checking packet capture type" >&5 -echo $ECHO_N "checking packet capture type... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking packet capture type" >&5 +echo $ECHO_N "checking packet capture type... $ECHO_C" >&6; } if test ! -z "$with_pcap" ; then V_PCAP="$withval" +elif test -r /dev/bpf ; then + # + # Cloning BPF device. + # + V_PCAP=bpf + +cat >>confdefs.h <<\_ACEOF +#define HAVE_CLONING_BPF 1 +_ACEOF + elif test -r /dev/bpf0 ; then V_PCAP=bpf elif test -r /usr/include/net/pfilt.h ; then @@ -5236,8 +5615,8 @@ elif test -c /dev/nit ; then # check again in case not readable else V_PCAP=null fi -echo "$as_me:$LINENO: result: $V_PCAP" >&5 -echo "${ECHO_T}$V_PCAP" >&6 +{ echo "$as_me:$LINENO: result: $V_PCAP" >&5 +echo "${ECHO_T}$V_PCAP" >&6; } if test "$V_PCAP" = null then @@ -5247,8 +5626,8 @@ then # V_FINDALLDEVS=null else - echo "$as_me:$LINENO: checking for getifaddrs" >&5 -echo $ECHO_N "checking for getifaddrs... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking for getifaddrs" >&5 +echo $ECHO_N "checking for getifaddrs... $ECHO_C" >&6; } if test "${ac_cv_func_getifaddrs+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -5275,68 +5654,59 @@ cat >>conftest.$ac_ext <<_ACEOF #undef getifaddrs -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" -{ #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char getifaddrs (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_getifaddrs) || defined (__stub___getifaddrs) +#if defined __stub_getifaddrs || defined __stub___getifaddrs choke me -#else -char (*f) () = getifaddrs; -#endif -#ifdef __cplusplus -} #endif int main () { -return f != getifaddrs; +return getifaddrs (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (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); }; } && - { ac_try='test -s 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 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_func_getifaddrs=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_func_getifaddrs=no + ac_cv_func_getifaddrs=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_func_getifaddrs" >&5 -echo "${ECHO_T}$ac_cv_func_getifaddrs" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_func_getifaddrs" >&5 +echo "${ECHO_T}$ac_cv_func_getifaddrs" >&6; } if test $ac_cv_func_getifaddrs = yes; then # @@ -5344,17 +5714,17 @@ if test $ac_cv_func_getifaddrs = yes; then # as well, just in case some platform is really weird. # if test "${ac_cv_header_ifaddrs_h+set}" = set; then - echo "$as_me:$LINENO: checking for ifaddrs.h" >&5 -echo $ECHO_N "checking for ifaddrs.h... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking for ifaddrs.h" >&5 +echo $ECHO_N "checking for ifaddrs.h... $ECHO_C" >&6; } if test "${ac_cv_header_ifaddrs_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -echo "$as_me:$LINENO: result: $ac_cv_header_ifaddrs_h" >&5 -echo "${ECHO_T}$ac_cv_header_ifaddrs_h" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_header_ifaddrs_h" >&5 +echo "${ECHO_T}$ac_cv_header_ifaddrs_h" >&6; } else # Is the header compilable? -echo "$as_me:$LINENO: checking ifaddrs.h usability" >&5 -echo $ECHO_N "checking ifaddrs.h usability... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking ifaddrs.h usability" >&5 +echo $ECHO_N "checking ifaddrs.h usability... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -5365,41 +5735,37 @@ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (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); }; } && - { ac_try='test -s conftest.$ac_objext' - { (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 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_header_compiler=no + ac_header_compiler=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } # Is the header present? -echo "$as_me:$LINENO: checking ifaddrs.h presence" >&5 -echo $ECHO_N "checking ifaddrs.h presence... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking ifaddrs.h presence" >&5 +echo $ECHO_N "checking ifaddrs.h presence... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -5408,24 +5774,22 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -5433,9 +5797,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi + rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -5459,25 +5824,18 @@ echo "$as_me: WARNING: ifaddrs.h: section \"Present But Cannot Be Compiled\" echo "$as_me: WARNING: ifaddrs.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: ifaddrs.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: ifaddrs.h: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 + ;; esac -echo "$as_me:$LINENO: checking for ifaddrs.h" >&5 -echo $ECHO_N "checking for ifaddrs.h... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for ifaddrs.h" >&5 +echo $ECHO_N "checking for ifaddrs.h... $ECHO_C" >&6; } if test "${ac_cv_header_ifaddrs_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_ifaddrs_h=$ac_header_preproc fi -echo "$as_me:$LINENO: result: $ac_cv_header_ifaddrs_h" >&5 -echo "${ECHO_T}$ac_cv_header_ifaddrs_h" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_header_ifaddrs_h" >&5 +echo "${ECHO_T}$ac_cv_header_ifaddrs_h" >&6; } fi if test $ac_cv_header_ifaddrs_h = yes; then @@ -5525,8 +5883,8 @@ else # or some older version of Solaris, with # just SIOCGIFCONF. # - echo "$as_me:$LINENO: checking whether we have SIOCGLIFCONF" >&5 -echo $ECHO_N "checking whether we have SIOCGLIFCONF... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking whether we have SIOCGLIFCONF" >&5 +echo $ECHO_N "checking whether we have SIOCGLIFCONF... $ECHO_C" >&6; } if test "${ac_cv_lbl_have_siocglifconf+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -5550,39 +5908,35 @@ ioctl(0, SIOCGLIFCONF, (char *)0); } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (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); }; } && - { ac_try='test -s conftest.$ac_objext' - { (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 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_lbl_have_siocglifconf=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lbl_have_siocglifconf=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_lbl_have_siocglifconf=no fi - echo "$as_me:$LINENO: result: $ac_cv_lbl_have_siocglifconf" >&5 -echo "${ECHO_T}$ac_cv_lbl_have_siocglifconf" >&6 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + + { echo "$as_me:$LINENO: result: $ac_cv_lbl_have_siocglifconf" >&5 +echo "${ECHO_T}$ac_cv_lbl_have_siocglifconf" >&6; } if test $ac_cv_lbl_have_siocglifconf = yes ; then V_FINDALLDEVS=glifc else @@ -5604,13 +5958,13 @@ fi fi -echo "$as_me:$LINENO: checking if --enable-ipv6 option is specified" >&5 -echo $ECHO_N "checking if --enable-ipv6 option is specified... $ECHO_C" >&6 -# Check whether --enable-ipv6 or --disable-ipv6 was given. +{ echo "$as_me:$LINENO: checking if --enable-ipv6 option is specified" >&5 +echo $ECHO_N "checking if --enable-ipv6 option is specified... $ECHO_C" >&6; } +# Check whether --enable-ipv6 was given. if test "${enable_ipv6+set}" = set; then - enableval="$enable_ipv6" + enableval=$enable_ipv6; +fi -fi; if test "$enable_ipv6" = "yes"; then cat >>confdefs.h <<\_ACEOF @@ -5618,16 +5972,16 @@ cat >>confdefs.h <<\_ACEOF _ACEOF fi -echo "$as_me:$LINENO: result: ${enable_ipv6-no}" >&5 -echo "${ECHO_T}${enable_ipv6-no}" >&6 +{ echo "$as_me:$LINENO: result: ${enable_ipv6-no}" >&5 +echo "${ECHO_T}${enable_ipv6-no}" >&6; } -echo "$as_me:$LINENO: checking whether to build optimizer debugging code" >&5 -echo $ECHO_N "checking whether to build optimizer debugging code... $ECHO_C" >&6 -# Check whether --enable-optimizer-dbg or --disable-optimizer-dbg was given. +{ echo "$as_me:$LINENO: checking whether to build optimizer debugging code" >&5 +echo $ECHO_N "checking whether to build optimizer debugging code... $ECHO_C" >&6; } +# Check whether --enable-optimizer-dbg was given. if test "${enable_optimizer_dbg+set}" = set; then - enableval="$enable_optimizer_dbg" + enableval=$enable_optimizer_dbg; +fi -fi; if test "$enable_optimizer_dbg" = "yes"; then cat >>confdefs.h <<\_ACEOF @@ -5635,16 +5989,16 @@ cat >>confdefs.h <<\_ACEOF _ACEOF fi -echo "$as_me:$LINENO: result: ${enable_optimizer_dbg-no}" >&5 -echo "${ECHO_T}${enable_optimizer_dbg-no}" >&6 +{ echo "$as_me:$LINENO: result: ${enable_optimizer_dbg-no}" >&5 +echo "${ECHO_T}${enable_optimizer_dbg-no}" >&6; } -echo "$as_me:$LINENO: checking whether to build parser debugging code" >&5 -echo $ECHO_N "checking whether to build parser debugging code... $ECHO_C" >&6 -# Check whether --enable-yydebug or --disable-yydebug was given. +{ echo "$as_me:$LINENO: checking whether to build parser debugging code" >&5 +echo $ECHO_N "checking whether to build parser debugging code... $ECHO_C" >&6; } +# Check whether --enable-yydebug was given. if test "${enable_yydebug+set}" = set; then - enableval="$enable_yydebug" + enableval=$enable_yydebug; +fi -fi; if test "$enable_yydebug" = "yes"; then cat >>confdefs.h <<\_ACEOF @@ -5652,8 +6006,8 @@ cat >>confdefs.h <<\_ACEOF _ACEOF fi -echo "$as_me:$LINENO: result: ${enable_yydebug-no}" >&5 -echo "${ECHO_T}${enable_yydebug-no}" >&6 +{ echo "$as_me:$LINENO: result: ${enable_yydebug-no}" >&5 +echo "${ECHO_T}${enable_yydebug-no}" >&6; } case "$V_PCAP" in @@ -5663,18 +6017,19 @@ dlpi) for ac_header in sys/bufmod.h sys/dlpi_ext.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } else # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -5685,41 +6040,37 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (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); }; } && - { ac_try='test -s conftest.$ac_objext' - { (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 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_header_compiler=no + ac_header_compiler=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } # Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -5728,24 +6079,22 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -5753,9 +6102,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi + rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -5779,25 +6129,19 @@ echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 + ;; esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } fi if test `eval echo '${'$as_ac_Header'}'` = yes; then @@ -5809,40 +6153,40 @@ fi done - echo "$as_me:$LINENO: checking for /dev/dlpi device" >&5 -echo $ECHO_N "checking for /dev/dlpi device... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking for /dev/dlpi device" >&5 +echo $ECHO_N "checking for /dev/dlpi device... $ECHO_C" >&6; } if test -c /dev/dlpi ; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_DEV_DLPI 1 _ACEOF else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } dir="/dev/dlpi" - echo "$as_me:$LINENO: checking for $dir directory" >&5 -echo $ECHO_N "checking for $dir directory... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking for $dir directory" >&5 +echo $ECHO_N "checking for $dir directory... $ECHO_C" >&6; } if test -d $dir ; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } cat >>confdefs.h <<_ACEOF #define PCAP_DEV_PREFIX "$dir" _ACEOF else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi fi ;; linux) - echo "$as_me:$LINENO: checking Linux kernel version" >&5 -echo $ECHO_N "checking Linux kernel version... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking Linux kernel version" >&5 +echo $ECHO_N "checking Linux kernel version... $ECHO_C" >&6; } if test "$cross_compiling" = yes; then if test "${ac_cv_linux_vers+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -5859,8 +6203,8 @@ else fi fi - echo "$as_me:$LINENO: result: $ac_cv_linux_vers" >&5 -echo "${ECHO_T}$ac_cv_linux_vers" >&6 + { echo "$as_me:$LINENO: result: $ac_cv_linux_vers" >&5 +echo "${ECHO_T}$ac_cv_linux_vers" >&6; } if test $ac_cv_linux_vers = unknown ; then { { echo "$as_me:$LINENO: error: cannot determine linux version when cross-compiling" >&5 echo "$as_me: error: cannot determine linux version when cross-compiling" >&2;} @@ -5871,8 +6215,8 @@ echo "$as_me: error: cannot determine linux version when cross-compiling" >&2;} echo "$as_me: error: version 2 or higher required; see the INSTALL doc for more info" >&2;} { (exit 1); exit 1; }; } fi - echo "$as_me:$LINENO: checking if if_packet.h has tpacket_stats defined" >&5 -echo $ECHO_N "checking if if_packet.h has tpacket_stats defined... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking if if_packet.h has tpacket_stats defined" >&5 +echo $ECHO_N "checking if if_packet.h has tpacket_stats defined... $ECHO_C" >&6; } if test "${ac_cv_lbl_tpacket_stats+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -5893,39 +6237,35 @@ struct tpacket_stats stats } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (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); }; } && - { ac_try='test -s conftest.$ac_objext' - { (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 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_lbl_tpacket_stats=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lbl_tpacket_stats=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_lbl_tpacket_stats=no fi - echo "$as_me:$LINENO: result: $ac_cv_lbl_tpacket_stats" >&5 -echo "${ECHO_T}$ac_cv_lbl_tpacket_stats" >&6 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + + { echo "$as_me:$LINENO: result: $ac_cv_lbl_tpacket_stats" >&5 +echo "${ECHO_T}$ac_cv_lbl_tpacket_stats" >&6; } if test $ac_cv_lbl_tpacket_stats = yes; then cat >>confdefs.h <<\_ACEOF @@ -5952,8 +6292,8 @@ echo "$as_me: WARNING: (see the INSTALL doc for more info)" >&2;} esac -echo "$as_me:$LINENO: checking whether we have /proc/net/dev" >&5 -echo $ECHO_N "checking whether we have /proc/net/dev... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking whether we have /proc/net/dev" >&5 +echo $ECHO_N "checking whether we have /proc/net/dev... $ECHO_C" >&6; } if test -r /proc/net/dev ; then ac_cv_lbl_proc_net_dev=yes else @@ -5966,15 +6306,14 @@ cat >>confdefs.h <<\_ACEOF _ACEOF fi -echo "$as_me:$LINENO: result: $ac_cv_lbl_proc_net_dev" >&5 -echo "${ECHO_T}$ac_cv_lbl_proc_net_dev" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_lbl_proc_net_dev" >&5 +echo "${ECHO_T}$ac_cv_lbl_proc_net_dev" >&6; } # Check for Endace DAG card support. -# Check whether --with-dag or --without-dag was given. +# Check whether --with-dag was given. if test "${with_dag+set}" = set; then - withval="$with_dag" - + withval=$with_dag; if test "$withval" = no then # User doesn't want DAG support. @@ -5996,29 +6335,30 @@ else # want_dag=ifpresent -fi; +fi -# Check whether --with-dag-includes or --without-dag-includes was given. + +# Check whether --with-dag-includes was given. if test "${with_dag_includes+set}" = set; then - withval="$with_dag_includes" - + withval=$with_dag_includes; # User wants DAG support and has specified a header directory, so use the provided value. want_dag=yes dag_include_dir=$withval -fi; +fi -# Check whether --with-dag-libraries or --without-dag-libraries was given. + +# Check whether --with-dag-libraries was given. if test "${with_dag_libraries+set}" = set; then - withval="$with_dag_libraries" - + withval=$with_dag_libraries; # User wants DAG support and has specified a library directory, so use the provided value. want_dag=yes dag_lib_dir=$withval -fi; +fi + case "$V_PCAP" in linux|bpf|dag) @@ -6047,8 +6387,8 @@ esac ac_cv_lbl_dag_api=no if test "$want_dag" != no; then - echo "$as_me:$LINENO: checking whether we have DAG API headers" >&5 -echo $ECHO_N "checking whether we have DAG API headers... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking whether we have DAG API headers" >&5 +echo $ECHO_N "checking whether we have DAG API headers... $ECHO_C" >&6; } # If necessary, set default paths for DAG API headers and libraries. if test -z "$dag_root"; then @@ -6070,14 +6410,14 @@ echo $ECHO_N "checking whether we have DAG API headers... $ECHO_C" >&6 if test -r $dag_include_dir/dagapi.h; then ac_cv_lbl_dag_api=yes fi - echo "$as_me:$LINENO: result: $ac_cv_lbl_dag_api ($dag_include_dir)" >&5 -echo "${ECHO_T}$ac_cv_lbl_dag_api ($dag_include_dir)" >&6 + { echo "$as_me:$LINENO: result: $ac_cv_lbl_dag_api ($dag_include_dir)" >&5 +echo "${ECHO_T}$ac_cv_lbl_dag_api ($dag_include_dir)" >&6; } fi if test $ac_cv_lbl_dag_api = yes; then - echo "$as_me:$LINENO: checking dagapi.o" >&5 -echo $ECHO_N "checking dagapi.o... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking dagapi.o" >&5 +echo $ECHO_N "checking dagapi.o... $ECHO_C" >&6; } dagapi_obj=no if test -r $dag_tools_dir/dagapi.o; then # 2.4.x. @@ -6090,23 +6430,28 @@ echo $ECHO_N "checking dagapi.o... $ECHO_C" >&6 ar x $dag_lib_dir/libdag.a dagapi.o if test -r ./dagapi.o; then dagapi_obj=./dagapi.o + else + ar x $dag_lib_dir/libdag.a libdag_la-dagapi.o + if test -r ./libdag_la-dagapi.o; then + dagapi_obj=./libdag_la-dagapi.o + fi fi fi if test $dagapi_obj = no; then - echo "$as_me:$LINENO: result: no (checked $dag_lib_dir $dag_tools_dir $dag_lib_dir/libdag.a)" >&5 -echo "${ECHO_T}no (checked $dag_lib_dir $dag_tools_dir $dag_lib_dir/libdag.a)" >&6 + { echo "$as_me:$LINENO: result: no (checked $dag_lib_dir $dag_tools_dir $dag_lib_dir/libdag.a)" >&5 +echo "${ECHO_T}no (checked $dag_lib_dir $dag_tools_dir $dag_lib_dir/libdag.a)" >&6; } ac_cv_lbl_dag_api=no else - echo "$as_me:$LINENO: result: yes ($dagapi_obj)" >&5 -echo "${ECHO_T}yes ($dagapi_obj)" >&6 + { echo "$as_me:$LINENO: result: yes ($dagapi_obj)" >&5 +echo "${ECHO_T}yes ($dagapi_obj)" >&6; } fi fi if test $ac_cv_lbl_dag_api = yes; then - echo "$as_me:$LINENO: checking dagopts.o" >&5 -echo $ECHO_N "checking dagopts.o... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking dagopts.o" >&5 +echo $ECHO_N "checking dagopts.o... $ECHO_C" >&6; } dagopts_obj=no if test -r $dag_tools_dir/dagopts.o; then # 2.4.x. @@ -6119,24 +6464,29 @@ echo $ECHO_N "checking dagopts.o... $ECHO_C" >&6 ar x $dag_lib_dir/libdag.a dagopts.o if test -r ./dagopts.o; then dagopts_obj=./dagopts.o + else + ar x $dag_lib_dir/libdag.a libdag_la-dagopts.o + if test -r ./libdag_la-dagopts.o; then + dagopts_obj=./libdag_la-dagopts.o + fi fi fi if test $dagopts_obj = no; then - echo "$as_me:$LINENO: result: no (checked $dag_lib_dir $dag_tools_dir $dag_lib_dir/libdag.a)" >&5 -echo "${ECHO_T}no (checked $dag_lib_dir $dag_tools_dir $dag_lib_dir/libdag.a)" >&6 + { echo "$as_me:$LINENO: result: no (checked $dag_lib_dir $dag_tools_dir $dag_lib_dir/libdag.a)" >&5 +echo "${ECHO_T}no (checked $dag_lib_dir $dag_tools_dir $dag_lib_dir/libdag.a)" >&6; } ac_cv_lbl_dag_api=no else - echo "$as_me:$LINENO: result: yes ($dagopts_obj)" >&5 -echo "${ECHO_T}yes ($dagopts_obj)" >&6 + { echo "$as_me:$LINENO: result: yes ($dagopts_obj)" >&5 +echo "${ECHO_T}yes ($dagopts_obj)" >&6; } fi fi if test $ac_cv_lbl_dag_api = yes; then # Under 2.5.x only we need to add dagreg.o. if test -r $dag_include_dir/dagreg.h; then - echo "$as_me:$LINENO: checking dagreg.o" >&5 -echo $ECHO_N "checking dagreg.o... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking dagreg.o" >&5 +echo $ECHO_N "checking dagreg.o... $ECHO_C" >&6; } dagreg_obj=no if test -r $dag_lib_dir/dagreg.o; then # Object file is ready and waiting. @@ -6146,16 +6496,21 @@ echo $ECHO_N "checking dagreg.o... $ECHO_C" >&6 ar x $dag_lib_dir/libdag.a dagreg.o if test -r ./dagreg.o; then dagreg_obj=./dagreg.o + else + ar x $dag_lib_dir/libdag.a libdag_la-dagreg.o + if test -r ./libdag_la-dagreg.o; then + dagreg_obj=./libdag_la-dagreg.o + fi fi fi if test $dagreg_obj = no; then - echo "$as_me:$LINENO: result: no (checked $dag_lib_dir $dag_lib_dir/libdag.a)" >&5 -echo "${ECHO_T}no (checked $dag_lib_dir $dag_lib_dir/libdag.a)" >&6 + { echo "$as_me:$LINENO: result: no (checked $dag_lib_dir $dag_lib_dir/libdag.a)" >&5 +echo "${ECHO_T}no (checked $dag_lib_dir $dag_lib_dir/libdag.a)" >&6; } ac_cv_lbl_dag_api=no else - echo "$as_me:$LINENO: result: yes ($dagreg_obj)" >&5 -echo "${ECHO_T}yes ($dagreg_obj)" >&6 + { echo "$as_me:$LINENO: result: yes ($dagreg_obj)" >&5 +echo "${ECHO_T}yes ($dagreg_obj)" >&6; } fi fi fi @@ -6172,8 +6527,8 @@ if test $ac_cv_lbl_dag_api = yes; then # included if there's a found-action (arg 3). saved_ldflags=$LDFLAGS LDFLAGS="-L$dag_lib_dir" - echo "$as_me:$LINENO: checking for dag_attach_stream in -ldag" >&5 -echo $ECHO_N "checking for dag_attach_stream in -ldag... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking for dag_attach_stream in -ldag" >&5 +echo $ECHO_N "checking for dag_attach_stream in -ldag... $ECHO_C" >&6; } if test "${ac_cv_lib_dag_dag_attach_stream+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -6186,60 +6541,128 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char dag_attach_stream (); int main () { -dag_attach_stream (); +return dag_attach_stream (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (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); }; } && - { ac_try='test -s 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 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_lib_dag_dag_attach_stream=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_dag_dag_attach_stream=no + ac_cv_lib_dag_dag_attach_stream=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_dag_dag_attach_stream" >&5 -echo "${ECHO_T}$ac_cv_lib_dag_dag_attach_stream" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_lib_dag_dag_attach_stream" >&5 +echo "${ECHO_T}$ac_cv_lib_dag_dag_attach_stream" >&6; } if test $ac_cv_lib_dag_dag_attach_stream = yes; then dag_version="2.5.x" else dag_version="2.4.x" +fi + + { echo "$as_me:$LINENO: checking for dag_get_erf_types in -ldag" >&5 +echo $ECHO_N "checking for dag_get_erf_types in -ldag... $ECHO_C" >&6; } +if test "${ac_cv_lib_dag_dag_get_erf_types+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldag $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dag_get_erf_types (); +int +main () +{ +return dag_get_erf_types (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_dag_dag_get_erf_types=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_dag_dag_get_erf_types=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_dag_dag_get_erf_types" >&5 +echo "${ECHO_T}$ac_cv_lib_dag_dag_get_erf_types" >&6; } +if test $ac_cv_lib_dag_dag_get_erf_types = yes; then + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_DAG_GET_ERF_TYPES 1 +_ACEOF + + fi LDFLAGS=$saved_ldflags @@ -6250,16 +6673,17 @@ cat >>confdefs.h <<\_ACEOF #define HAVE_DAG_STREAMS_API 1 _ACEOF + DAGLIBS="-ldag" fi # See if we can find a specific version string. - echo "$as_me:$LINENO: checking the DAG API version" >&5 -echo $ECHO_N "checking the DAG API version... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking the DAG API version" >&5 +echo $ECHO_N "checking the DAG API version... $ECHO_C" >&6; } if test -r "$dag_root/VERSION"; then dag_version="`cat $dag_root/VERSION`" fi - echo "$as_me:$LINENO: result: $dag_version" >&5 -echo "${ECHO_T}$dag_version" >&6 + { echo "$as_me:$LINENO: result: $dag_version" >&5 +echo "${ECHO_T}$dag_version" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_DAG_API 1 @@ -6285,10 +6709,9 @@ echo "$as_me: error: Specifying the capture type as \"dag\" requires the DAG API fi -# Check whether --with-septel or --without-septel was given. +# Check whether --with-septel was given. if test "${with_septel+set}" = set; then - withval="$with_septel" - + withval=$with_septel; if test "$withval" = no then want_septel=no @@ -6309,7 +6732,8 @@ else want_septel=ifpresent septel_root=./../septel -fi; +fi + ac_cv_lbl_septel_api=no case "$V_PCAP" in linux|septel) @@ -6336,8 +6760,8 @@ echo "$as_me: error: Septel support only available with 'linux' and 'septel' pac esac if test "$with_septel" != no; then - echo "$as_me:$LINENO: checking whether we have Septel API" >&5 -echo $ECHO_N "checking whether we have Septel API... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking whether we have Septel API" >&5 +echo $ECHO_N "checking whether we have Septel API... $ECHO_C" >&6; } if test -z "$septel_root"; then septel_root=$srcdir/../septel @@ -6361,8 +6785,8 @@ echo $ECHO_N "checking whether we have Septel API... $ECHO_C" >&6 ac_cv_lbl_septel_api=yes fi - echo "$as_me:$LINENO: result: $ac_cv_lbl_septel_api" >&5 -echo "${ECHO_T}$ac_cv_lbl_septel_api" >&6 + { echo "$as_me:$LINENO: result: $ac_cv_lbl_septel_api" >&5 +echo "${ECHO_T}$ac_cv_lbl_septel_api" >&6; } if test $ac_cv_lbl_septel_api = no; then if test "$want_septel" = yes; then { { echo "$as_me:$LINENO: error: Septel API not found under directory $septel_root; use --without-septel" >&5 @@ -6384,6 +6808,7 @@ echo "$as_me: error: Specifying the capture type as 'septel' requires the Septel { (exit 1); exit 1; }; } fi + DYEXT="so" case "$host_os" in @@ -6418,8 +6843,8 @@ _ACEOF ;; sinix*) - echo "$as_me:$LINENO: checking if SINIX compiler defines sinix" >&5 -echo $ECHO_N "checking if SINIX compiler defines sinix... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking if SINIX compiler defines sinix" >&5 +echo $ECHO_N "checking if SINIX compiler defines sinix... $ECHO_C" >&6; } if test "${ac_cv_cc_sinix_defined+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -6439,39 +6864,35 @@ int i = sinix; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (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); }; } && - { ac_try='test -s conftest.$ac_objext' - { (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 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_cc_sinix_defined=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_cc_sinix_defined=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_cc_sinix_defined=no fi - echo "$as_me:$LINENO: result: $ac_cv_cc_sinix_defined" >&5 -echo "${ECHO_T}$ac_cv_cc_sinix_defined" >&6 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + + { echo "$as_me:$LINENO: result: $ac_cv_cc_sinix_defined" >&5 +echo "${ECHO_T}$ac_cv_cc_sinix_defined" >&6; } if test $ac_cv_cc_sinix_defined = no ; then cat >>confdefs.h <<\_ACEOF @@ -6493,13 +6914,18 @@ darwin*) DYEXT="dylib" V_CCOPT="$V_CCOPT -fno-common" ;; + +linux*) + V_CCOPT="$V_CCOPT -fPIC" + ;; + esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -6512,32 +6938,34 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then - echo "$as_me:$LINENO: result: $RANLIB" >&5 -echo "${ECHO_T}$RANLIB" >&6 + { echo "$as_me:$LINENO: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi + fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -6550,27 +6978,41 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_RANLIB="ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS - test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then - echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 -echo "${ECHO_T}$ac_ct_RANLIB" >&6 + { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi - RANLIB=$ac_ct_RANLIB + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi else RANLIB="$ac_cv_prog_RANLIB" fi @@ -6617,8 +7059,8 @@ echo "$as_me: WARNING: can't find $name" >&2;} fi fi -echo "$as_me:$LINENO: checking if sockaddr struct has sa_len member" >&5 -echo $ECHO_N "checking if sockaddr struct has sa_len member... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking if sockaddr struct has sa_len member" >&5 +echo $ECHO_N "checking if sockaddr struct has sa_len member... $ECHO_C" >&6; } if test "${ac_cv_lbl_sockaddr_has_sa_len+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -6640,39 +7082,35 @@ u_int i = sizeof(((struct sockaddr *)0)->sa_len) } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (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); }; } && - { ac_try='test -s conftest.$ac_objext' - { (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 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_lbl_sockaddr_has_sa_len=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lbl_sockaddr_has_sa_len=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_lbl_sockaddr_has_sa_len=no fi - echo "$as_me:$LINENO: result: $ac_cv_lbl_sockaddr_has_sa_len" >&5 -echo "${ECHO_T}$ac_cv_lbl_sockaddr_has_sa_len" >&6 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + + { echo "$as_me:$LINENO: result: $ac_cv_lbl_sockaddr_has_sa_len" >&5 +echo "${ECHO_T}$ac_cv_lbl_sockaddr_has_sa_len" >&6; } if test $ac_cv_lbl_sockaddr_has_sa_len = yes ; then cat >>confdefs.h <<\_ACEOF @@ -6681,8 +7119,8 @@ _ACEOF fi -echo "$as_me:$LINENO: checking if sockaddr_storage struct exists" >&5 -echo $ECHO_N "checking if sockaddr_storage struct exists... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking if sockaddr_storage struct exists" >&5 +echo $ECHO_N "checking if sockaddr_storage struct exists... $ECHO_C" >&6; } if test "${ac_cv_lbl_has_sockaddr_storage+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -6704,39 +7142,35 @@ u_int i = sizeof (struct sockaddr_storage) } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (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); }; } && - { ac_try='test -s conftest.$ac_objext' - { (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 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_lbl_has_sockaddr_storage=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lbl_has_sockaddr_storage=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_lbl_has_sockaddr_storage=no fi - echo "$as_me:$LINENO: result: $ac_cv_lbl_has_sockaddr_storage" >&5 -echo "${ECHO_T}$ac_cv_lbl_has_sockaddr_storage" >&6 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + + { echo "$as_me:$LINENO: result: $ac_cv_lbl_has_sockaddr_storage" >&5 +echo "${ECHO_T}$ac_cv_lbl_has_sockaddr_storage" >&6; } if test $ac_cv_lbl_has_sockaddr_storage = yes ; then cat >>confdefs.h <<\_ACEOF @@ -6745,8 +7179,8 @@ _ACEOF fi -echo "$as_me:$LINENO: checking if dl_hp_ppa_info_t struct has dl_module_id_1 member" >&5 -echo $ECHO_N "checking if dl_hp_ppa_info_t struct has dl_module_id_1 member... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking if dl_hp_ppa_info_t struct has dl_module_id_1 member" >&5 +echo $ECHO_N "checking if dl_hp_ppa_info_t struct has dl_module_id_1 member... $ECHO_C" >&6; } if test "${ac_cv_lbl_dl_hp_ppa_info_t_has_dl_module_id_1+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -6769,39 +7203,35 @@ u_int i = sizeof(((dl_hp_ppa_info_t *)0)->dl_module_id_1) } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (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); }; } && - { ac_try='test -s conftest.$ac_objext' - { (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 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_lbl_dl_hp_ppa_info_t_has_dl_module_id_1=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lbl_dl_hp_ppa_info_t_has_dl_module_id_1=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_lbl_dl_hp_ppa_info_t_has_dl_module_id_1=no fi - echo "$as_me:$LINENO: result: $ac_cv_lbl_dl_hp_ppa_info_t_has_dl_module_id_1" >&5 -echo "${ECHO_T}$ac_cv_lbl_dl_hp_ppa_info_t_has_dl_module_id_1" >&6 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + + { echo "$as_me:$LINENO: result: $ac_cv_lbl_dl_hp_ppa_info_t_has_dl_module_id_1" >&5 +echo "${ECHO_T}$ac_cv_lbl_dl_hp_ppa_info_t_has_dl_module_id_1" >&6; } if test $ac_cv_lbl_dl_hp_ppa_info_t_has_dl_module_id_1 = yes ; then cat >>confdefs.h <<\_ACEOF @@ -6810,8 +7240,8 @@ _ACEOF fi -echo "$as_me:$LINENO: checking if unaligned accesses fail" >&5 -echo $ECHO_N "checking if unaligned accesses fail... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking if unaligned accesses fail" >&5 +echo $ECHO_N "checking if unaligned accesses fail... $ECHO_C" >&6; } if test "${ac_cv_lbl_unaligned_fail+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -6897,8 +7327,8 @@ EOF esac fi - echo "$as_me:$LINENO: result: $ac_cv_lbl_unaligned_fail" >&5 -echo "${ECHO_T}$ac_cv_lbl_unaligned_fail" >&6 + { echo "$as_me:$LINENO: result: $ac_cv_lbl_unaligned_fail" >&5 +echo "${ECHO_T}$ac_cv_lbl_unaligned_fail" >&6; } if test $ac_cv_lbl_unaligned_fail = yes ; then cat >>confdefs.h <<\_ACEOF @@ -6908,11 +7338,11 @@ _ACEOF fi pcap_gcc_major_version=0 -echo "$as_me:$LINENO: checking whether the compiler is gcc 4 or greater" >&5 -echo $ECHO_N "checking whether the compiler is gcc 4 or greater... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking whether the compiler is gcc 4 or greater" >&5 +echo $ECHO_N "checking whether the compiler is gcc 4 or greater... $ECHO_C" >&6; } if test x"$GCC" = xno; then - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } else # new major versions must be added here case `$CC --version | sed -e 's,\..*,.,' -e q` in @@ -6930,11 +7360,11 @@ else ;; esac if test "$pcap_gcc_major_version" -ge 4; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } else - echo "$as_me:$LINENO: result: no - $pcap_gcc_major_version ; $CC ; $GCC" >&5 -echo "${ECHO_T}no - $pcap_gcc_major_version ; $CC ; $GCC" >&6 + { echo "$as_me:$LINENO: result: no - $pcap_gcc_major_version ; $CC ; $GCC" >&5 +echo "${ECHO_T}no - $pcap_gcc_major_version ; $CC ; $GCC" >&6; } fi fi @@ -6967,6 +7397,7 @@ ln -s ${srcdir}/bpf/net net + # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: @@ -6980,8 +7411,8 @@ ln -s ${srcdir}/bpf/net net # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. -echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 -echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -7003,7 +7434,7 @@ case $as_dir/ in # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. @@ -7022,21 +7453,22 @@ case $as_dir/ in ;; esac done +IFS=$as_save_IFS fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else - # As a last resort, use the slow shell script. We don't cache a - # path for INSTALL within a source directory, because that will + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is - # removed, or if the path is relative. + # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi -echo "$as_me:$LINENO: result: $INSTALL" >&5 -echo "${ECHO_T}$INSTALL" >&6 +{ echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. @@ -7047,10 +7479,11 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - ac_config_headers="$ac_config_headers config.h" +ac_config_headers="$ac_config_headers config.h" - ac_config_files="$ac_config_files Makefile" +ac_config_files="$ac_config_files Makefile" + cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure @@ -7069,39 +7502,58 @@ _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. -# So, don't put newlines in cache variables' values. +# So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. -{ +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 +echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + *) $as_unset $ac_var ;; + esac ;; + esac + done + (set) 2>&1 | - case `(ac_space=' '; set | grep ac_space) 2>&1` in - *ac_space=\ *) + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; + ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; - esac; -} | + esac | + sort +) | sed ' + /^ac_cv_env_/b end t clear - : clear + :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end - /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - : end' >>confcache -if diff $cache_file confcache >/dev/null 2>&1; then :; else - if test -w $cache_file; then - test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + test "x$cache_file" != "x/dev/null" && + { echo "$as_me:$LINENO: updating cache $cache_file" >&5 +echo "$as_me: updating cache $cache_file" >&6;} cat confcache >$cache_file else - echo "not updating unwritable cache $cache_file" + { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 +echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache @@ -7110,32 +7562,18 @@ test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' -# VPATH may cause trouble with some makes, so we remove $(srcdir), -# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=/{ -s/:*\$(srcdir):*/:/; -s/:*\${srcdir}:*/:/; -s/:*@srcdir@:*/:/; -s/^\([^=]*=[ ]*\):*/\1/; -s/:*$//; -s/^[^=]*=[ ]*$//; -}' -fi - DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 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' + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`echo "$ac_i" | sed "$ac_script"` + # 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 @@ -7166,73 +7604,26 @@ cat >>$CONFIG_STATUS <<\_ACEOF ## M4sh Initialization. ## ## --------------------- ## -# Be Bourne compatible +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix -fi -DUALCASE=1; export DUALCASE # for MKS sh - -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset + setopt NO_GLOB_SUBST else - as_unset=false + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + fi -# Work around bugs in pre-3.0 UWIN ksh. -$as_unset ENV MAIL MAILPATH -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - $as_unset $as_var - fi -done - -# Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi -# Name of the executable. -as_me=`$as_basename "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - - -# PATH needs CR, and LINENO needs CR and PATH. +# PATH needs CR # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' @@ -7253,126 +7644,198 @@ if test "${PATH_SEPARATOR+set}" != set; then rm -f conf$$.sh fi +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - # Find who we are. Look in the path if we contain no path at all - # relative or not. - case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +as_nl=' +' +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done +IFS=$as_save_IFS - ;; - esac - # We did not find ourselves, most probably we were run as `sh COMMAND' - # in which case we are not to be found in the path. - if test "x$as_myself" = x; then - as_myself=$0 - fi - if test ! -f "$as_myself"; then - { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 -echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} - { (exit 1); exit 1; }; } - fi - case $CONFIG_SHELL in - '') - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + { (exit 1); exit 1; } +fi + +# Work around bugs in pre-3.0 UWIN ksh. +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for as_base in sh bash ksh sh5; do - case $as_dir in - /*) - if ("$as_dir/$as_base" -c ' + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# CDPATH. +$as_unset CDPATH + + + as_lineno_1=$LINENO as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then - $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } - $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" ${1+"$@"} - fi;; - esac - done -done -;; - esac + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line before each line; the second 'sed' does the real - # work. The second script uses 'N' to pair each line-number line - # with the numbered line, and appends trailing '-' during - # substitution so that $LINENO is not a special case at line end. + # line-number line after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, and appends + # trailing '-' during substitution so that $LINENO is not a special + # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) - sed '=' <$as_myself | + # scripts with optimization help from Paolo Bonzini. Blame Lee + # E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno N - s,$,-, - : loop - s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop - s,-$,, - s,^['$as_cr_digits']*\n,, + s/-\n.*// ' >$as_me.lineno && - chmod +x $as_me.lineno || - { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 -echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} + chmod +x "$as_me.lineno" || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" # Exit status is that of the last command. exit } -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; esac -if expr a : '\(a\)' >/dev/null 2>&1; then +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir +fi echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi -rm -f conf$$ conf$$.exe conf$$.file +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: @@ -7381,7 +7844,28 @@ else as_mkdir_p=false fi -as_executable_p="test -f" +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" @@ -7390,31 +7874,14 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH - exec 6>&1 -# Open the log real soon, to keep \$[0] and so on meaningful, and to +# Save the log message, to keep $[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. Logging --version etc. is OK. -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX -} >&5 -cat >&5 <<_CSEOF - +# values after options handling. +ac_log=" This file was extended by $as_me, which was -generated by GNU Autoconf 2.59. Invocation command line was +generated by GNU Autoconf 2.61. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -7422,30 +7889,19 @@ generated by GNU Autoconf 2.59. Invocation command line was CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ -_CSEOF -echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 -echo >&5 +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + _ACEOF +cat >>$CONFIG_STATUS <<_ACEOF # Files that config.status was made for. -if test -n "$ac_config_files"; then - echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS -fi +config_files="$ac_config_files" +config_headers="$ac_config_headers" -if test -n "$ac_config_headers"; then - echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_links"; then - echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_commands"; then - echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS -fi +_ACEOF cat >>$CONFIG_STATUS <<\_ACEOF - ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. @@ -7453,7 +7909,7 @@ current configuration. Usage: $0 [OPTIONS] [FILE]... -h, --help print this help, then exit - -V, --version print version number, then exit + -V, --version print version number and configuration settings, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions @@ -7469,19 +7925,21 @@ Configuration headers: $config_headers Report bugs to ." -_ACEOF +_ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ config.status -configured by $0, generated by GNU Autoconf 2.59, - with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" +configured by $0, generated by GNU Autoconf 2.61, + with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" -Copyright (C) 2003 Free Software Foundation, Inc. +Copyright (C) 2006 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." -srcdir=$srcdir -INSTALL="$INSTALL" + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF @@ -7492,39 +7950,24 @@ while test $# != 0 do case $1 in --*=*) - ac_option=`expr "x$1" : 'x\([^=]*\)='` - ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; - -*) + *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; - *) # This is not an option, so the user has probably given explicit - # arguments. - ac_option=$1 - ac_need_defaults=false;; esac case $ac_option in # Handling of the options. -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; - --version | --vers* | -V ) - echo "$ac_cs_version"; exit 0 ;; - --he | --h) - # Conflict between --help and --header - { { echo "$as_me:$LINENO: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&2;} - { (exit 1); exit 1; }; };; - --help | --hel | -h ) - echo "$ac_cs_usage"; exit 0 ;; - --debug | --d* | -d ) + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + echo "$ac_cs_version"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift @@ -7534,18 +7977,24 @@ Try \`$0 --help' for more information." >&2;} $ac_shift CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + { echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. - -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&2;} + -*) { echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; - *) ac_config_targets="$ac_config_targets $1" ;; + *) ac_config_targets="$ac_config_targets $1" + ac_need_defaults=false ;; esac shift @@ -7561,29 +8010,43 @@ fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF if \$ac_cs_recheck; then - echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 - exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + CONFIG_SHELL=$SHELL + export CONFIG_SHELL + exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion fi _ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + echo "$ac_log" +} >&5 - - - +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +_ACEOF cat >>$CONFIG_STATUS <<\_ACEOF + +# Handling of arguments. for ac_config_target in $ac_config_targets do - case "$ac_config_target" in - # Handling of arguments. - "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + case $ac_config_target in + "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac done + # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely @@ -7594,322 +8057,390 @@ if $ac_need_defaults; then fi # Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason to put it here, and in addition, +# simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. -# Create a temporary directory, and hook for its removal unless debugging. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. $debug || { - trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + tmp= + trap 'exit_status=$? + { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status +' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } - # Create a (secure) tmp directory for tmp files. { - tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { - tmp=./confstat$$-$RANDOM - (umask 077 && mkdir $tmp) + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") } || { echo "$me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } -_ACEOF - -cat >>$CONFIG_STATUS <<_ACEOF - # -# CONFIG_FILES section. +# Set up the sed scripts for CONFIG_FILES section. # # No need to generate the scripts if there are no CONFIG_FILES. # This happens for instance when ./config.status config.h -if test -n "\$CONFIG_FILES"; then - # Protect against being on the right side of a sed subst in config.status. - sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; - s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF -s,@SHELL@,$SHELL,;t t -s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t -s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t -s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t -s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t -s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t -s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t -s,@exec_prefix@,$exec_prefix,;t t -s,@prefix@,$prefix,;t t -s,@program_transform_name@,$program_transform_name,;t t -s,@bindir@,$bindir,;t t -s,@sbindir@,$sbindir,;t t -s,@libexecdir@,$libexecdir,;t t -s,@datadir@,$datadir,;t t -s,@sysconfdir@,$sysconfdir,;t t -s,@sharedstatedir@,$sharedstatedir,;t t -s,@localstatedir@,$localstatedir,;t t -s,@libdir@,$libdir,;t t -s,@includedir@,$includedir,;t t -s,@oldincludedir@,$oldincludedir,;t t -s,@infodir@,$infodir,;t t -s,@mandir@,$mandir,;t t -s,@build_alias@,$build_alias,;t t -s,@host_alias@,$host_alias,;t t -s,@target_alias@,$target_alias,;t t -s,@DEFS@,$DEFS,;t t -s,@ECHO_C@,$ECHO_C,;t t -s,@ECHO_N@,$ECHO_N,;t t -s,@ECHO_T@,$ECHO_T,;t t -s,@LIBS@,$LIBS,;t t -s,@build@,$build,;t t -s,@build_cpu@,$build_cpu,;t t -s,@build_vendor@,$build_vendor,;t t -s,@build_os@,$build_os,;t t -s,@host@,$host,;t t -s,@host_cpu@,$host_cpu,;t t -s,@host_vendor@,$host_vendor,;t t -s,@host_os@,$host_os,;t t -s,@target@,$target,;t t -s,@target_cpu@,$target_cpu,;t t -s,@target_vendor@,$target_vendor,;t t -s,@target_os@,$target_os,;t t -s,@SHLICC2@,$SHLICC2,;t t -s,@CC@,$CC,;t t -s,@CFLAGS@,$CFLAGS,;t t -s,@LDFLAGS@,$LDFLAGS,;t t -s,@CPPFLAGS@,$CPPFLAGS,;t t -s,@ac_ct_CC@,$ac_ct_CC,;t t -s,@EXEEXT@,$EXEEXT,;t t -s,@OBJEXT@,$OBJEXT,;t t -s,@CPP@,$CPP,;t t -s,@EGREP@,$EGREP,;t t -s,@LIBOBJS@,$LIBOBJS,;t t -s,@RANLIB@,$RANLIB,;t t -s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t -s,@V_CCOPT@,$V_CCOPT,;t t -s,@V_DEFS@,$V_DEFS,;t t -s,@V_INCLS@,$V_INCLS,;t t -s,@V_LIBS@,$V_LIBS,;t t -s,@V_PCAP@,$V_PCAP,;t t -s,@V_FINDALLDEVS@,$V_FINDALLDEVS,;t t -s,@V_RANLIB@,$V_RANLIB,;t t -s,@SSRC@,$SSRC,;t t -s,@DYEXT@,$DYEXT,;t t -s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t -s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t -s,@INSTALL_DATA@,$INSTALL_DATA,;t t -s,@LTLIBOBJS@,$LTLIBOBJS,;t t -CEOF +if test -n "$CONFIG_FILES"; then _ACEOF - cat >>$CONFIG_STATUS <<\_ACEOF - # Split the substitutions into bite-sized pieces for seds with - # small command number limits, like on Digital OSF/1 and HP-UX. - ac_max_sed_lines=48 - ac_sed_frag=1 # Number of current file. - ac_beg=1 # First line for current file. - ac_end=$ac_max_sed_lines # Line after last line for current file. - ac_more_lines=: - ac_sed_cmds= - while $ac_more_lines; do - if test $ac_beg -gt 1; then - sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - else - sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - fi - if test ! -s $tmp/subs.frag; then - ac_more_lines=false - else - # The purpose of the label and of the branching condition is to - # speed up the sed processing (if there are no `@' at all, there - # is no need to browse any of the substitutions). - # These are the two extra sed commands mentioned above. - (echo ':t - /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed - if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" - else - ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" - fi - ac_sed_frag=`expr $ac_sed_frag + 1` - ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_lines` - fi - done - if test -z "$ac_sed_cmds"; then - ac_sed_cmds=cat + + +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + cat >conf$$subs.sed <<_ACEOF +SHELL!$SHELL$ac_delim +PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim +PACKAGE_NAME!$PACKAGE_NAME$ac_delim +PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim +PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim +PACKAGE_STRING!$PACKAGE_STRING$ac_delim +PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim +exec_prefix!$exec_prefix$ac_delim +prefix!$prefix$ac_delim +program_transform_name!$program_transform_name$ac_delim +bindir!$bindir$ac_delim +sbindir!$sbindir$ac_delim +libexecdir!$libexecdir$ac_delim +datarootdir!$datarootdir$ac_delim +datadir!$datadir$ac_delim +sysconfdir!$sysconfdir$ac_delim +sharedstatedir!$sharedstatedir$ac_delim +localstatedir!$localstatedir$ac_delim +includedir!$includedir$ac_delim +oldincludedir!$oldincludedir$ac_delim +docdir!$docdir$ac_delim +infodir!$infodir$ac_delim +htmldir!$htmldir$ac_delim +dvidir!$dvidir$ac_delim +pdfdir!$pdfdir$ac_delim +psdir!$psdir$ac_delim +libdir!$libdir$ac_delim +localedir!$localedir$ac_delim +mandir!$mandir$ac_delim +DEFS!$DEFS$ac_delim +ECHO_C!$ECHO_C$ac_delim +ECHO_N!$ECHO_N$ac_delim +ECHO_T!$ECHO_T$ac_delim +LIBS!$LIBS$ac_delim +build_alias!$build_alias$ac_delim +host_alias!$host_alias$ac_delim +target_alias!$target_alias$ac_delim +build!$build$ac_delim +build_cpu!$build_cpu$ac_delim +build_vendor!$build_vendor$ac_delim +build_os!$build_os$ac_delim +host!$host$ac_delim +host_cpu!$host_cpu$ac_delim +host_vendor!$host_vendor$ac_delim +host_os!$host_os$ac_delim +target!$target$ac_delim +target_cpu!$target_cpu$ac_delim +target_vendor!$target_vendor$ac_delim +target_os!$target_os$ac_delim +SHLICC2!$SHLICC2$ac_delim +CC!$CC$ac_delim +CFLAGS!$CFLAGS$ac_delim +LDFLAGS!$LDFLAGS$ac_delim +CPPFLAGS!$CPPFLAGS$ac_delim +ac_ct_CC!$ac_ct_CC$ac_delim +EXEEXT!$EXEEXT$ac_delim +OBJEXT!$OBJEXT$ac_delim +CPP!$CPP$ac_delim +GREP!$GREP$ac_delim +EGREP!$EGREP$ac_delim +LIBOBJS!$LIBOBJS$ac_delim +RANLIB!$RANLIB$ac_delim +V_CCOPT!$V_CCOPT$ac_delim +V_DEFS!$V_DEFS$ac_delim +V_INCLS!$V_INCLS$ac_delim +V_LIBS!$V_LIBS$ac_delim +V_PCAP!$V_PCAP$ac_delim +V_FINDALLDEVS!$V_FINDALLDEVS$ac_delim +V_RANLIB!$V_RANLIB$ac_delim +SSRC!$SSRC$ac_delim +DYEXT!$DYEXT$ac_delim +DAGLIBS!$DAGLIBS$ac_delim +INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim +INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim +INSTALL_DATA!$INSTALL_DATA$ac_delim +LTLIBOBJS!$LTLIBOBJS$ac_delim +_ACEOF + + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 76; then + break + elif $ac_last_try; then + { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi +done + +ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` +if test -n "$ac_eof"; then + ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` + ac_eof=`expr $ac_eof + 1` +fi + +cat >>$CONFIG_STATUS <<_ACEOF +cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end +_ACEOF +sed ' +s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g +s/^/s,@/; s/!/@,|#_!!_#|/ +:n +t n +s/'"$ac_delim"'$/,g/; t +s/$/\\/; p +N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n +' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF +:end +s/|#_!!_#|//g +CEOF$ac_eof +_ACEOF + + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/ +s/:*\${srcdir}:*/:/ +s/:*@srcdir@:*/:/ +s/^\([^=]*=[ ]*\):*/\1/ +s/:*$// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF fi # test -n "$CONFIG_FILES" -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; + +for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 +echo "$as_me: error: Invalid tag $ac_tag." >&2;} + { (exit 1); exit 1; }; };; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 +echo "$as_me: error: cannot find input file: $ac_f" >&2;} + { (exit 1); exit 1; }; };; + esac + ac_file_inputs="$ac_file_inputs $ac_f" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input="Generated from "`IFS=: + echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + fi + + case $ac_tag in + *:-:* | *:-) cat >"$tmp/stdin";; + esac + ;; esac - # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. - ac_dir=`(dirname "$ac_file") 2>/dev/null || + ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { as_dir="$ac_dir" + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || + while :; do + case $as_dir in #( + *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 +echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } - ac_builddir=. -if test "$ac_dir" != .; then +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix case $srcdir in - .) # No --srcdir option. We are building in place. + .) # We are building in place. ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; -esac + case $ac_mode in + :F) + # + # CONFIG_FILE + # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_builddir$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac - - if test x"$ac_file" != x-; then - { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - rm -f "$ac_file" - fi - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - if test x"$ac_file" = x-; then - configure_input= - else - configure_input="$ac_file. " - fi - configure_input=$configure_input"Generated from `echo $ac_file_in | - sed 's,.*/,,'` by configure." - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - echo "$f";; - *) # Relative - if test -f "$f"; then - # Build tree - echo "$f" - elif test -f "$srcdir/$f"; then - # Source tree - echo "$srcdir/$f" - else - # /dev/null tree - { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } _ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= + +case `sed -n '/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p +' $ac_file_inputs` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF sed "$ac_vpsub $extrasub @@ -7917,252 +8448,137 @@ _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s,@configure_input@,$configure_input,;t t -s,@srcdir@,$ac_srcdir,;t t -s,@abs_srcdir@,$ac_abs_srcdir,;t t -s,@top_srcdir@,$ac_top_srcdir,;t t -s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t -s,@builddir@,$ac_builddir,;t t -s,@abs_builddir@,$ac_abs_builddir,;t t -s,@top_builddir@,$ac_top_builddir,;t t -s,@abs_top_builddir@,$ac_abs_top_builddir,;t t -s,@INSTALL@,$ac_INSTALL,;t t -" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out - rm -f $tmp/stdin - if test x"$ac_file" != x-; then - mv $tmp/out $ac_file - else - cat $tmp/out - rm -f $tmp/out - fi +s&@configure_input@&$configure_input&;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +$ac_datarootdir_hack +" $ac_file_inputs | sed -f "$tmp/subs-1.sed" >$tmp/out -done -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && + { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&5 +echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&2;} -# -# CONFIG_HEADER section. -# - -# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where -# NAME is the cpp macro being defined and VALUE is the value it is being given. -# -# ac_d sets the value in "#define NAME VALUE" lines. -ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' -ac_dB='[ ].*$,\1#\2' -ac_dC=' ' -ac_dD=',;t' -# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". -ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_uB='$,\1#\2define\3' -ac_uC=' ' -ac_uD=',;t' - -for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + rm -f "$tmp/stdin" case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; + -) cat "$tmp/out"; rm -f "$tmp/out";; + *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; esac - - test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - # Do quote $f, to prevent DOS paths from being IFS'd. - echo "$f";; - *) # Relative - if test -f "$f"; then - # Build tree - echo "$f" - elif test -f "$srcdir/$f"; then - # Source tree - echo "$srcdir/$f" - else - # /dev/null tree - { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } - # Remove the trailing spaces. - sed 's/[ ]*$//' $ac_file_inputs >$tmp/in - + ;; + :H) + # + # CONFIG_HEADER + # _ACEOF -# Transform confdefs.h into two sed scripts, `conftest.defines' and -# `conftest.undefs', that substitutes the proper values into -# config.h.in to produce config.h. The first handles `#define' -# templates, and the second `#undef' templates. -# And first: Protect against being on the right side of a sed subst in -# config.status. Protect against being in an unquoted here document -# in config.status. -rm -f conftest.defines conftest.undefs -# Using a here document instead of a string reduces the quoting nightmare. -# Putting comments in sed scripts is not portable. -# -# `end' is used to avoid that the second main sed command (meant for -# 0-ary CPP macros) applies to n-ary macro definitions. -# See the Autoconf documentation for `clear'. -cat >confdef2sed.sed <<\_ACEOF -s/[\\&,]/\\&/g -s,[\\$`],\\&,g -t clear -: clear -s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp -t end -s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp -: end -_ACEOF -# If some macros were called several times there might be several times -# the same #defines, which is useless. Nevertheless, we may not want to -# sort them, since we want the *last* AC-DEFINE to be honored. -uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines -sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs -rm -f confdef2sed.sed +# Transform confdefs.h into a sed script `conftest.defines', that +# substitutes the proper values into config.h.in to produce config.h. +rm -f conftest.defines conftest.tail +# First, append a space to every undef/define line, to ease matching. +echo 's/$/ /' >conftest.defines +# Then, protect against being on the right side of a sed subst, or in +# an unquoted here document, in config.status. If some macros were +# called several times there might be several #defines for the same +# symbol, which is useless. But do not sort them, since the last +# AC_DEFINE must be honored. +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where +# NAME is the cpp macro being defined, VALUE is the value it is being given. +# PARAMS is the parameter list in the macro definition--in most cases, it's +# just an empty string. +ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*' +ac_dB='\\)[ (].*,\\1define\\2' +ac_dC=' ' +ac_dD=' ,' -# This sed command replaces #undef with comments. This is necessary, for +uniq confdefs.h | + sed -n ' + t rset + :rset + s/^[ ]*#[ ]*define[ ][ ]*// + t ok + d + :ok + s/[\\&,]/\\&/g + s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p + s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p + ' >>conftest.defines + +# Remove the space that was appended to ease matching. +# Then replace #undef with comments. This is necessary, for # example, in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. -cat >>conftest.undefs <<\_ACEOF -s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, -_ACEOF +# (The regexp can be short, since the line contains either #define or #undef.) +echo 's/ $// +s,^[ #]*u.*,/* & */,' >>conftest.defines -# Break up conftest.defines because some shells have a limit on the size -# of here documents, and old seds have small limits too (100 cmds). -echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS -echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS -echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS -echo ' :' >>$CONFIG_STATUS -rm -f conftest.tail -while grep . conftest.defines >/dev/null +# Break up conftest.defines: +ac_max_sed_lines=50 + +# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1" +# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2" +# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1" +# et cetera. +ac_in='$ac_file_inputs' +ac_out='"$tmp/out1"' +ac_nxt='"$tmp/out2"' + +while : do - # Write a limited-size here document to $tmp/defines.sed. - echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS - # Speed up: don't consider the non `#define' lines. - echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS - # Work around the forget-to-reset-the-flag bug. - echo 't clr' >>$CONFIG_STATUS - echo ': clr' >>$CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS + # Write a here document: + cat >>$CONFIG_STATUS <<_ACEOF + # First, check the format of the line: + cat >"\$tmp/defines.sed" <<\\CEOF +/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def +/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def +b +:def +_ACEOF + sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS echo 'CEOF - sed -f $tmp/defines.sed $tmp/in >$tmp/out - rm -f $tmp/in - mv $tmp/out $tmp/in -' >>$CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail + sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS + ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in + sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail + grep . conftest.tail >/dev/null || break rm -f conftest.defines mv conftest.tail conftest.defines done -rm -f conftest.defines -echo ' fi # grep' >>$CONFIG_STATUS -echo >>$CONFIG_STATUS - -# Break up conftest.undefs because some shells have a limit on the size -# of here documents, and old seds have small limits too (100 cmds). -echo ' # Handle all the #undef templates' >>$CONFIG_STATUS -rm -f conftest.tail -while grep . conftest.undefs >/dev/null -do - # Write a limited-size here document to $tmp/undefs.sed. - echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS - # Speed up: don't consider the non `#undef' - echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS - # Work around the forget-to-reset-the-flag bug. - echo 't clr' >>$CONFIG_STATUS - echo ': clr' >>$CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS - echo 'CEOF - sed -f $tmp/undefs.sed $tmp/in >$tmp/out - rm -f $tmp/in - mv $tmp/out $tmp/in -' >>$CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail - rm -f conftest.undefs - mv conftest.tail conftest.undefs -done -rm -f conftest.undefs +rm -f conftest.defines conftest.tail +echo "ac_result=$ac_in" >>$CONFIG_STATUS cat >>$CONFIG_STATUS <<\_ACEOF - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - if test x"$ac_file" = x-; then - echo "/* Generated by configure. */" >$tmp/config.h - else - echo "/* $ac_file. Generated by configure. */" >$tmp/config.h - fi - cat $tmp/in >>$tmp/config.h - rm -f $tmp/in if test x"$ac_file" != x-; then - if diff $ac_file $tmp/config.h >/dev/null 2>&1; then + echo "/* $configure_input */" >"$tmp/config.h" + cat "$ac_result" >>"$tmp/config.h" + if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 echo "$as_me: $ac_file is unchanged" >&6;} else - ac_dir=`(dirname "$ac_file") 2>/dev/null || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; }; } - rm -f $ac_file - mv $tmp/config.h $ac_file + mv "$tmp/config.h" $ac_file fi else - cat $tmp/config.h - rm -f $tmp/config.h + echo "/* $configure_input */" + cat "$ac_result" fi -done -_ACEOF + rm -f "$tmp/out12" + ;; + + + esac + +done # for ac_tag -cat >>$CONFIG_STATUS <<\_ACEOF { (exit 0); exit 0; } _ACEOF diff --git a/libpcap/configure.ac b/libpcap/configure.ac index bbd7c8199..82cfa4574 100644 --- a/libpcap/configure.ac +++ b/libpcap/configure.ac @@ -1,4 +1,4 @@ -dnl @(#) $Header: /tcpdump/master/libpcap/configure.in,v 1.120.2.7 2005/07/07 06:56:03 guy Exp $ (LBL) +dnl @(#) $Header: /tcpdump/master/libpcap/configure.in,v 1.120.2.12 2007/06/15 17:57:26 guy Exp $ (LBL) dnl dnl Copyright (c) 1994, 1995, 1996, 1997 dnl The Regents of the University of California. All rights reserved. @@ -6,7 +6,7 @@ dnl dnl Process this file with autoconf to produce a configure script. dnl -AC_REVISION($Revision: 1.120.2.7 $) +AC_REVISION($Revision: 1.120.2.12 $) AC_PREREQ(2.50) AC_INIT(pcap.c) @@ -26,7 +26,7 @@ dnl in "AC_LBL_FIXINCLUDES" in "aclocal.m4" uses it, so we have to dnl test for it and set "HAVE_SYS_IOCCOM_H" if we have it, otherwise dnl "AC_LBL_FIXINCLUDES" won't work on some platforms such as Solaris. dnl -AC_CHECK_HEADERS(sys/ioccom.h sys/sockio.h limits.h) +AC_CHECK_HEADERS(sys/ioccom.h sys/sockio.h limits.h paths.h) AC_CHECK_HEADERS(netinet/if_ether.h, , , [#include #include ]) if test "$ac_cv_header_netinet_if_ether_h" != yes; then @@ -184,6 +184,12 @@ AC_ARG_WITH(pcap, [ --with-pcap=TYPE use packet capture TYPE]) AC_MSG_CHECKING(packet capture type) if test ! -z "$with_pcap" ; then V_PCAP="$withval" +elif test -r /dev/bpf ; then + # + # Cloning BPF device. + # + V_PCAP=bpf + AC_DEFINE(HAVE_CLONING_BPF,1,[define if you have a cloning BPF device]) elif test -r /dev/bpf0 ; then V_PCAP=bpf elif test -r /usr/include/net/pfilt.h ; then @@ -492,6 +498,11 @@ if test $ac_cv_lbl_dag_api = yes; then ar x $dag_lib_dir/libdag.a dagapi.o if test -r ./dagapi.o; then dagapi_obj=./dagapi.o + else + ar x $dag_lib_dir/libdag.a libdag_la-dagapi.o + if test -r ./libdag_la-dagapi.o; then + dagapi_obj=./libdag_la-dagapi.o + fi fi fi @@ -518,6 +529,11 @@ if test $ac_cv_lbl_dag_api = yes; then ar x $dag_lib_dir/libdag.a dagopts.o if test -r ./dagopts.o; then dagopts_obj=./dagopts.o + else + ar x $dag_lib_dir/libdag.a libdag_la-dagopts.o + if test -r ./libdag_la-dagopts.o; then + dagopts_obj=./libdag_la-dagopts.o + fi fi fi @@ -542,6 +558,11 @@ if test $ac_cv_lbl_dag_api = yes; then ar x $dag_lib_dir/libdag.a dagreg.o if test -r ./dagreg.o; then dagreg_obj=./dagreg.o + else + ar x $dag_lib_dir/libdag.a libdag_la-dagreg.o + if test -r ./libdag_la-dagreg.o; then + dagreg_obj=./libdag_la-dagreg.o + fi fi fi @@ -567,10 +588,14 @@ if test $ac_cv_lbl_dag_api = yes; then saved_ldflags=$LDFLAGS LDFLAGS="-L$dag_lib_dir" AC_CHECK_LIB([dag], [dag_attach_stream], [dag_version="2.5.x"], [dag_version="2.4.x"]) + AC_CHECK_LIB([dag],[dag_get_erf_types], [ + AC_DEFINE(HAVE_DAG_GET_ERF_TYPES, 1, [define if you have dag_get_erf_types()])] + ) LDFLAGS=$saved_ldflags if test "$dag_version" = 2.5.x; then AC_DEFINE(HAVE_DAG_STREAMS_API, 1, [define if you have streams capable DAG API]) + DAGLIBS="-ldag" fi # See if we can find a specific version string. @@ -677,6 +702,7 @@ if test "$V_PCAP" = septel -a "$ac_cv_lbl_septel_api" = no; then AC_MSG_ERROR(Specifying the capture type as 'septel' requires the Septel API to be present; use --with-septel=DIR) fi + DYEXT="so" case "$host_os" in @@ -727,6 +753,11 @@ darwin*) DYEXT="dylib" V_CCOPT="$V_CCOPT -fno-common" ;; + +linux*) + V_CCOPT="$V_CCOPT -fPIC" + ;; + esac AC_PROG_RANLIB @@ -792,6 +823,7 @@ AC_SUBST(V_FINDALLDEVS) AC_SUBST(V_RANLIB) AC_SUBST(SSRC) AC_SUBST(DYEXT) +AC_SUBST(DAGLIBS) AC_PROG_INSTALL diff --git a/libpcap/fad-win32.c b/libpcap/fad-win32.c index 8144fbb82..4d2c01ede 100644 --- a/libpcap/fad-win32.c +++ b/libpcap/fad-win32.c @@ -1,6 +1,6 @@ /* - * Copyright (c) 2002 - 2003 - * NetGroup, Politecnico di Torino (Italy) + * Copyright (c) 2002 - 2005 NetGroup, Politecnico di Torino (Italy) + * Copyright (c) 2005 - 2006 CACE Technologies, Davis (California) * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -12,9 +12,10 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Politecnico di Torino nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. + * 3. Neither the name of the Politecnico di Torino, CACE Technologies + * nor the names of its contributors may be used to endorse or promote + * products derived from this software without specific prior written + * permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT @@ -32,7 +33,7 @@ #ifndef lint static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/libpcap/fad-win32.c,v 1.11.2.1 2005/09/01 22:07:41 risso Exp $ (LBL)"; + "@(#) $Header: /tcpdump/master/libpcap/fad-win32.c,v 1.11.2.3 2006/02/22 17:09:32 gianluca Exp $ (LBL)"; #endif #ifdef HAVE_CONFIG_H @@ -41,7 +42,7 @@ static const char rcsid[] _U_ = #include #include -#include +#include #include @@ -224,22 +225,23 @@ pcap_findalldevs(pcap_if_t **alldevsp, char *errbuf) ULONG NameLength; char *name; - if(!PacketGetAdapterNames(NULL, &NameLength) && NameLength == 0) + if (!PacketGetAdapterNames(NULL, &NameLength)) { - /* - * If PacketGetAdapterNames *and* sets the lenght of the buffer to zero, - * it means there was an error. - */ - snprintf(errbuf, PCAP_ERRBUF_SIZE, "PacketGetAdapterNames failed: %s", pcap_win32strerror()); - *alldevsp = NULL; - return -1; + DWORD last_error = GetLastError(); + + if (last_error != ERROR_INSUFFICIENT_BUFFER) + { + snprintf(errbuf, PCAP_ERRBUF_SIZE, + "PacketGetAdapterNames: %s", + pcap_win32strerror()); + return (-1); + } } if (NameLength > 0) AdaptersName = (char*) malloc(NameLength); else { - snprintf(errbuf, PCAP_ERRBUF_SIZE, "no adapters found."); *alldevsp = NULL; return 0; } diff --git a/libpcap/gencode.c b/libpcap/gencode.c index 86721719b..5067abc6d 100644 --- a/libpcap/gencode.c +++ b/libpcap/gencode.c @@ -21,7 +21,7 @@ */ #ifndef lint static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/libpcap/gencode.c,v 1.221.2.34 2005/09/05 09:08:04 guy Exp $ (LBL)"; + "@(#) $Header: /tcpdump/master/libpcap/gencode.c,v 1.221.2.52 2007/06/22 06:43:58 guy Exp $ (LBL)"; #endif #ifdef HAVE_CONFIG_H @@ -100,8 +100,12 @@ static const char rcsid[] _U_ = static jmp_buf top_ctx; static pcap_t *bpf_pcap; +#ifdef WIN32 /* Hack for updating VLAN, MPLS, and PPPoE offsets. */ +static u_int orig_linktype = (u_int)-1, orig_nl = (u_int)-1, label_stack_depth = (u_int)-1; +#else static u_int orig_linktype = -1U, orig_nl = -1U, label_stack_depth = -1U; +#endif /* XXX */ #ifdef PCAP_FDDIPAD @@ -189,6 +193,7 @@ static inline struct block *gen_false(void); static struct block *gen_ether_linktype(int); static struct block *gen_linux_sll_linktype(int); static void insert_radiotap_load_llprefixlen(struct block *); +static void insert_ppi_load_llprefixlen(struct block *); static void insert_load_llprefixlen(struct block *); static struct slist *gen_llprefixlen(void); static struct block *gen_linktype(int); @@ -206,9 +211,9 @@ static struct block *gen_wlanhostop(const u_char *, int); static struct block *gen_ipfchostop(const u_char *, int); static struct block *gen_dnhostop(bpf_u_int32, int); static struct block *gen_mpls_linktype(int); -static struct block *gen_host(bpf_u_int32, bpf_u_int32, int, int); +static struct block *gen_host(bpf_u_int32, bpf_u_int32, int, int, int); #ifdef INET6 -static struct block *gen_host6(struct in6_addr *, struct in6_addr *, int, int); +static struct block *gen_host6(struct in6_addr *, struct in6_addr *, int, int, int); #endif #ifndef INET6 static struct block *gen_gateway(const u_char *, bpf_u_int32 **, int, int); @@ -238,6 +243,7 @@ static struct slist *xfer_to_a(struct arth *); static struct block *gen_mac_multicast(int); static struct block *gen_len(int, int); +static struct block *gen_ppi_dlt_check(void); static struct block *gen_msg_abbrev(int type); static void * @@ -348,9 +354,10 @@ int no_optimize; int pcap_compile(pcap_t *p, struct bpf_program *program, - char *buf, int optimize, bpf_u_int32 mask) + const char *buf, int optimize, bpf_u_int32 mask) { extern int n_errors; + const char * volatile xbuf = buf; int len; no_optimize = 0; @@ -372,7 +379,7 @@ pcap_compile(pcap_t *p, struct bpf_program *program, return -1; } - lex_init(buf ? buf : ""); + lex_init(xbuf ? xbuf : ""); init_linktype(p); (void)pcap_parse(); @@ -403,7 +410,7 @@ pcap_compile(pcap_t *p, struct bpf_program *program, int pcap_compile_nopcap(int snaplen_arg, int linktype_arg, struct bpf_program *program, - char *buf, int optimize, bpf_u_int32 mask) + const char *buf, int optimize, bpf_u_int32 mask) { pcap_t *p; int ret; @@ -472,10 +479,20 @@ merge(b0, b1) *p = b1; } + void finish_parse(p) struct block *p; { + struct block *ppi_dlt_check; + + ppi_dlt_check = gen_ppi_dlt_check(); + + if (ppi_dlt_check != NULL) + { + gen_and(ppi_dlt_check, p); + } + backpatch(p, gen_retblk(snaplen)); p->sense = !p->sense; backpatch(p, gen_retblk(0)); @@ -496,6 +513,7 @@ finish_parse(p) * require the length of that header, doing more for that * header length isn't really worth the effort. */ + insert_load_llprefixlen(root); } @@ -668,20 +686,26 @@ gen_ncmp(offrel, offset, size, mask, jtype, reverse, v) static int reg_ll_size; /* - * This is the offset of the beginning of the link-layer header. + * This is the offset of the beginning of the link-layer header from + * the beginning of the raw packet data. + * * It's usually 0, except for 802.11 with a fixed-length radio header. + * (For 802.11 with a variable-length radio header, we have to generate + * code to compute that offset; off_ll is 0 in that case.) */ static u_int off_ll; /* * This is the offset of the beginning of the MAC-layer header. - * It's usually 0, except for ATM LANE. + * It's usually 0, except for ATM LANE, where it's the offset, relative + * to the beginning of the raw packet data, of the Ethernet header. */ static u_int off_mac; /* * "off_linktype" is the offset to information in the link-layer header - * giving the packet type. + * giving the packet type. This offset is relative to the beginning + * of the link-layer header (i.e., it doesn't include off_ll). * * For Ethernet, it's the offset of the Ethernet type field. * @@ -718,6 +742,11 @@ static u_int off_vpi; static u_int off_vci; static u_int off_proto; +/* + * These are offsets for the MTP2 fields. + */ +static u_int off_li; + /* * These are offsets for the MTP3 fields. */ @@ -734,6 +763,8 @@ static u_int off_payload; /* * These are offsets to the beginning of the network-layer header. + * They are relative to the beginning of the link-layer header (i.e., + * they don't include off_ll). * * If the link layer never uses 802.2 LLC: * @@ -782,6 +813,7 @@ init_linktype(p) /* * And assume we're not doing SS7. */ + off_li = -1; off_sio = -1; off_opc = -1; off_dpc = -1; @@ -956,9 +988,9 @@ init_linktype(p) * the Prism header is fixed-length. */ off_ll = 144; - off_linktype = 144+24; - off_nl = 144+32; /* Prism+802.11+802.2+SNAP */ - off_nl_nosnap = 144+27; /* Prism+802.11+802.2 */ + off_linktype = 24; + off_nl = 32; /* Prism+802.11+802.2+SNAP */ + off_nl_nosnap = 27; /* Prism+802.11+802.2 */ return; case DLT_IEEE802_11_RADIO_AVS: @@ -974,14 +1006,35 @@ init_linktype(p) * more so; this header is also variable-length, * with the length being the 32-bit big-endian * number at an offset of 4 from the beginning - * of the radio header. + * of the radio header. We should handle that the + * same way we handle the length at the beginning + * of the radiotap header. + * + * XXX - in Linux, do any drivers that supply an AVS + * header supply a link-layer type other than + * ARPHRD_IEEE80211_PRISM? If so, we should map that + * to DLT_IEEE802_11_RADIO_AVS; if not, or if there are + * any drivers that supply an AVS header but supply + * an ARPHRD value of ARPHRD_IEEE80211_PRISM, we'll + * have to check the header in the generated code to + * determine whether it's Prism or AVS. */ off_ll = 64; - off_linktype = 64+24; - off_nl = 64+32; /* Radio+802.11+802.2+SNAP */ - off_nl_nosnap = 64+27; /* Radio+802.11+802.2 */ + off_linktype = 24; + off_nl = 32; /* Radio+802.11+802.2+SNAP */ + off_nl_nosnap = 27; /* Radio+802.11+802.2 */ return; + + /* + * At the moment we treat PPI as normal Radiotap encoded + * packets. The difference is in the function that generates + * the code at the beginning to compute the header length. + * Since this code generator of PPI supports bare 802.11 + * encapsulation only (i.e. the encapsulated DLT should be + * DLT_IEEE802_11) we generate code to check for this too. + */ + case DLT_PPI: case DLT_IEEE802_11_RADIO: /* * Same as 802.11, but with an additional header before @@ -1081,6 +1134,17 @@ init_linktype(p) off_nl_nosnap = 0; /* no 802.2 LLC */ return; + /* + * the only BPF-interesting FRF.16 frames are non-control frames; + * Frame Relay has a variable length link-layer + * so lets start with offset 4 for now and increments later on (FIXME); + */ + case DLT_MFR: + off_linktype = -1; + off_nl = 4; + off_nl_nosnap = 0; /* XXX - for now -> no 802.2 LLC */ + return; + case DLT_APPLE_IP_OVER_IEEE1394: off_linktype = 16; off_nl = 18; @@ -1180,7 +1244,14 @@ init_linktype(p) off_nl_nosnap = -1; /* no 802.2 LLC */ return; + case DLT_JUNIPER_VP: + off_linktype = 18; + off_nl = -1; + off_nl_nosnap = -1; + return; + case DLT_MTP2: + off_li = 2; off_sio = 3; off_opc = 4; off_dpc = 4; @@ -1190,6 +1261,17 @@ init_linktype(p) off_nl_nosnap = -1; return; + case DLT_MTP2_WITH_PHDR: + off_li = 6; + off_sio = 7; + off_opc = 8; + off_dpc = 8; + off_sls = 11; + off_linktype = -1; + off_nl = -1; + off_nl_nosnap = -1; + return; + #ifdef DLT_PFSYNC case DLT_PFSYNC: off_linktype = -1; @@ -1206,6 +1288,24 @@ init_linktype(p) off_nl = -1; off_nl_nosnap = -1; return; + + case DLT_USB: + /* + * Currently, only raw "link[N:M]" filtering is supported. + */ + off_linktype = -1; + off_nl = -1; + off_nl_nosnap = -1; + return; + + case DLT_BLUETOOTH_HCI_H4: + /* + * Currently, only raw "link[N:M]" filtering is supported. + */ + off_linktype = -1; + off_nl = -1; + off_nl_nosnap = -1; + return; } bpf_error("unknown data link type %d", linktype); /* NOTREACHED */ @@ -1229,18 +1329,34 @@ gen_load_llrel(offset, size) * If "s" is non-null, it has code to arrange that the X register * contains the length of the prefix preceding the link-layer * header. + * + * Otherwise, the length of the prefix preceding the link-layer + * header is "off_ll". */ if (s != NULL) { + /* + * There's a variable-length prefix preceding the + * link-layer header. "s" points to a list of statements + * that put the length of that prefix into the X register. + * do an indirect load, to use the X register as an offset. + */ s2 = new_stmt(BPF_LD|BPF_IND|size); s2->s.k = offset; sappend(s, s2); } else { + /* + * There is no variable-length header preceding the + * link-layer header; add in off_ll, which, if there's + * a fixed-length header preceding the link-layer header, + * is the length of that header. + */ s = new_stmt(BPF_LD|BPF_ABS|size); - s->s.k = offset; + s->s.k = offset + off_ll; } return s; } + /* * Load a value relative to the beginning of the specified header. */ @@ -1254,11 +1370,12 @@ gen_load_a(offrel, offset, size) switch (offrel) { case OR_PACKET: - s = gen_load_llrel(offset, size); + s = new_stmt(BPF_LD|BPF_ABS|size); + s->s.k = offset; break; case OR_LINK: - s = gen_load_llrel(off_ll + offset, size); + s = gen_load_llrel(offset, size); break; case OR_NET: @@ -1271,17 +1388,24 @@ gen_load_a(offrel, offset, size) case OR_TRAN_IPV4: /* - * Load the X register with the length of the IPv4 header, - * in bytes. + * Load the X register with the length of the IPv4 header + * (plus the offset of the link-layer header, if it's + * preceded by a variable-length header such as a radio + * header), in bytes. */ s = gen_loadx_iphdrlen(); /* - * Load the item at {length of the link-layer header} + - * {length of the IPv4 header} + {specified offset}. + * Load the item at {offset of the link-layer header} + + * {offset, relative to the start of the link-layer + * header, of the IPv4 header} + {length of the IPv4 header} + + * {specified offset}. + * + * (If the link-layer is variable-length, it's included + * in the value in the X register, and off_ll is 0.) */ s2 = new_stmt(BPF_LD|BPF_IND|size); - s2->s.k = off_nl + offset; + s2->s.k = off_ll + off_nl + offset; sappend(s, s2); break; @@ -1339,12 +1463,12 @@ gen_loadx_iphdrlen() } else { /* * There is no variable-length header preceding the - * link-layer header; if there's a fixed-length - * header preceding it, its length is included in - * the off_ variables, so it doesn't need to be added. + * link-layer header; add in off_ll, which, if there's + * a fixed-length header preceding the link-layer header, + * is the length of that header. */ s = new_stmt(BPF_LDX|BPF_MSH|BPF_B); - s->s.k = off_nl; + s->s.k = off_ll + off_nl; } return s; } @@ -1794,6 +1918,104 @@ insert_radiotap_load_llprefixlen(b) } } +/* + * At the moment we treat PPI as normal Radiotap encoded + * packets. The difference is in the function that generates + * the code at the beginning to compute the header length. + * Since this code generator of PPI supports bare 802.11 + * encapsulation only (i.e. the encapsulated DLT should be + * DLT_IEEE802_11) we generate code to check for this too. + */ +static void +insert_ppi_load_llprefixlen(b) + struct block *b; +{ + struct slist *s1, *s2; + + /* + * Prepend to the statements in this block code to load the + * length of the radiotap header into the register assigned + * to hold that length, if one has been assigned. + */ + if (reg_ll_size != -1) { + /* + * The 2 bytes at offsets of 2 and 3 from the beginning + * of the radiotap header are the length of the radiotap + * header; unfortunately, it's little-endian, so we have + * to load it a byte at a time and construct the value. + */ + + /* + * Load the high-order byte, at an offset of 3, shift it + * left a byte, and put the result in the X register. + */ + s1 = new_stmt(BPF_LD|BPF_B|BPF_ABS); + s1->s.k = 3; + s2 = new_stmt(BPF_ALU|BPF_LSH|BPF_K); + sappend(s1, s2); + s2->s.k = 8; + s2 = new_stmt(BPF_MISC|BPF_TAX); + sappend(s1, s2); + + /* + * Load the next byte, at an offset of 2, and OR the + * value from the X register into it. + */ + s2 = new_stmt(BPF_LD|BPF_B|BPF_ABS); + sappend(s1, s2); + s2->s.k = 2; + s2 = new_stmt(BPF_ALU|BPF_OR|BPF_X); + sappend(s1, s2); + + /* + * Now allocate a register to hold that value and store + * it. + */ + s2 = new_stmt(BPF_ST); + s2->s.k = reg_ll_size; + sappend(s1, s2); + + /* + * Now move it into the X register. + */ + s2 = new_stmt(BPF_MISC|BPF_TAX); + sappend(s1, s2); + + /* + * Now append all the existing statements in this + * block to these statements. + */ + sappend(s1, b->stmts); + b->stmts = s1; + + } +} + +static struct block * +gen_ppi_dlt_check(void) +{ + struct slist *s_load_dlt; + struct block *b; + + if (linktype == DLT_PPI) + { + /* Create the statements that check for the DLT + */ + s_load_dlt = new_stmt(BPF_LD|BPF_W|BPF_ABS); + s_load_dlt->s.k = 4; + + b = new_block(JMP(BPF_JEQ)); + + b->stmts = s_load_dlt; + b->s.k = SWAPLONG(DLT_IEEE802_11); + } + else + { + b = NULL; + } + + return b; +} static void insert_load_llprefixlen(b) @@ -1801,8 +2023,21 @@ insert_load_llprefixlen(b) { switch (linktype) { + /* + * At the moment we treat PPI as normal Radiotap encoded + * packets. The difference is in the function that generates + * the code at the beginning to compute the header length. + * Since this code generator of PPI supports bare 802.11 + * encapsulation only (i.e. the encapsulated DLT should be + * DLT_IEEE802_11) we generate code to check for this too. + */ + case DLT_PPI: + insert_ppi_load_llprefixlen(b); + break; + case DLT_IEEE802_11_RADIO: insert_radiotap_load_llprefixlen(b); + break; } } @@ -1829,6 +2064,38 @@ gen_radiotap_llprefixlen(void) return s; } +/* + * At the moment we treat PPI as normal Radiotap encoded + * packets. The difference is in the function that generates + * the code at the beginning to compute the header length. + * Since this code generator of PPI supports bare 802.11 + * encapsulation only (i.e. the encapsulated DLT should be + * DLT_IEEE802_11) we generate code to check for this too. + */ +static struct slist * +gen_ppi_llprefixlen(void) +{ + struct slist *s; + + if (reg_ll_size == -1) { + /* + * We haven't yet assigned a register for the length + * of the radiotap header; allocate one. + */ + reg_ll_size = alloc_reg(); + } + + /* + * Load the register containing the radiotap length + * into the X register. + */ + s = new_stmt(BPF_LDX|BPF_MEM); + s->s.k = reg_ll_size; + return s; +} + + + /* * Generate code to compute the link-layer header length, if necessary, * putting it into the X register, and to return either a pointer to a @@ -1840,6 +2107,10 @@ gen_llprefixlen(void) { switch (linktype) { + case DLT_PPI: + return gen_ppi_llprefixlen(); + + case DLT_IEEE802_11_RADIO: return gen_radiotap_llprefixlen(); @@ -1902,6 +2173,7 @@ gen_linktype(proto) } break; + case DLT_PPI: case DLT_FDDI: case DLT_IEEE802: case DLT_IEEE802_11: @@ -1962,7 +2234,7 @@ gen_linktype(proto) case DLT_RAW: /* * These types don't provide any type field; packets - * are always IP. + * are always IPv4 or IPv6. * * XXX - for IPv4, check for a version number of 4, and, * for IPv6, check for a version number of 6? @@ -1970,10 +2242,13 @@ gen_linktype(proto) switch (proto) { case ETHERTYPE_IP: + /* Check for a version number of 4. */ + return gen_mcmp(OR_LINK, 0, BPF_B, 0x40, 0xF0); #ifdef INET6 case ETHERTYPE_IPV6: + /* Check for a version number of 6. */ + return gen_mcmp(OR_LINK, 0, BPF_B, 0x60, 0xF0); #endif - return gen_true(); /* always true */ default: return gen_false(); /* always false */ @@ -2284,6 +2559,7 @@ gen_linktype(proto) case DLT_JUNIPER_PPP: case DLT_JUNIPER_FRELAY: case DLT_JUNIPER_CHDLC: + case DLT_JUNIPER_VP: /* just lets verify the magic number for now - * on ATM we may have up to 6 different encapsulations on the wire * and need a lot of heuristics to figure out that the payload @@ -3044,22 +3320,22 @@ gen_dnhostop(addr, dir) tmp = gen_mcmp(OR_NET, 2, BPF_H, (bpf_int32)ntohs(0x0681), (bpf_int32)ntohs(0x07FF)); b1 = gen_cmp(OR_NET, 2 + 1 + offset_lh, - BPF_H, (bpf_int32)ntohs(addr)); + BPF_H, (bpf_int32)ntohs((u_short)addr)); gen_and(tmp, b1); /* Check for pad = 0, long header case */ tmp = gen_mcmp(OR_NET, 2, BPF_B, (bpf_int32)0x06, (bpf_int32)0x7); - b2 = gen_cmp(OR_NET, 2 + offset_lh, BPF_H, (bpf_int32)ntohs(addr)); + b2 = gen_cmp(OR_NET, 2 + offset_lh, BPF_H, (bpf_int32)ntohs((u_short)addr)); gen_and(tmp, b2); gen_or(b2, b1); /* Check for pad = 1, short header case */ tmp = gen_mcmp(OR_NET, 2, BPF_H, (bpf_int32)ntohs(0x0281), (bpf_int32)ntohs(0x07FF)); - b2 = gen_cmp(OR_NET, 2 + 1 + offset_sh, BPF_H, (bpf_int32)ntohs(addr)); + b2 = gen_cmp(OR_NET, 2 + 1 + offset_sh, BPF_H, (bpf_int32)ntohs((u_short)addr)); gen_and(tmp, b2); gen_or(b2, b1); /* Check for pad = 0, short header case */ tmp = gen_mcmp(OR_NET, 2, BPF_B, (bpf_int32)0x02, (bpf_int32)0x7); - b2 = gen_cmp(OR_NET, 2 + offset_sh, BPF_H, (bpf_int32)ntohs(addr)); + b2 = gen_cmp(OR_NET, 2 + offset_sh, BPF_H, (bpf_int32)ntohs((u_short)addr)); gen_and(tmp, b2); gen_or(b2, b1); @@ -3103,26 +3379,33 @@ gen_mpls_linktype(proto) } static struct block * -gen_host(addr, mask, proto, dir) +gen_host(addr, mask, proto, dir, type) bpf_u_int32 addr; bpf_u_int32 mask; int proto; int dir; + int type; { struct block *b0, *b1; + const char *typestr; + + if (type == Q_NET) + typestr = "net"; + else + typestr = "host"; switch (proto) { case Q_DEFAULT: - b0 = gen_host(addr, mask, Q_IP, dir); + b0 = gen_host(addr, mask, Q_IP, dir, type); /* * Only check for non-IPv4 addresses if we're not * checking MPLS-encapsulated packets. */ if (label_stack_depth == 0) { - b1 = gen_host(addr, mask, Q_ARP, dir); + b1 = gen_host(addr, mask, Q_ARP, dir, type); gen_or(b0, b1); - b0 = gen_host(addr, mask, Q_RARP, dir); + b0 = gen_host(addr, mask, Q_RARP, dir, type); gen_or(b1, b0); } return b0; @@ -3137,28 +3420,28 @@ gen_host(addr, mask, proto, dir) return gen_hostop(addr, mask, dir, ETHERTYPE_ARP, 14, 24); case Q_TCP: - bpf_error("'tcp' modifier applied to host"); + bpf_error("'tcp' modifier applied to %s", typestr); case Q_SCTP: - bpf_error("'sctp' modifier applied to host"); + bpf_error("'sctp' modifier applied to %s", typestr); case Q_UDP: - bpf_error("'udp' modifier applied to host"); + bpf_error("'udp' modifier applied to %s", typestr); case Q_ICMP: - bpf_error("'icmp' modifier applied to host"); + bpf_error("'icmp' modifier applied to %s", typestr); case Q_IGMP: - bpf_error("'igmp' modifier applied to host"); + bpf_error("'igmp' modifier applied to %s", typestr); case Q_IGRP: - bpf_error("'igrp' modifier applied to host"); + bpf_error("'igrp' modifier applied to %s", typestr); case Q_PIM: - bpf_error("'pim' modifier applied to host"); + bpf_error("'pim' modifier applied to %s", typestr); case Q_VRRP: - bpf_error("'vrrp' modifier applied to host"); + bpf_error("'vrrp' modifier applied to %s", typestr); case Q_ATALK: bpf_error("ATALK host filtering not implemented"); @@ -3186,38 +3469,38 @@ gen_host(addr, mask, proto, dir) bpf_error("'ip6' modifier applied to ip host"); case Q_ICMPV6: - bpf_error("'icmp6' modifier applied to host"); + bpf_error("'icmp6' modifier applied to %s", typestr); #endif /* INET6 */ case Q_AH: - bpf_error("'ah' modifier applied to host"); + bpf_error("'ah' modifier applied to %s", typestr); case Q_ESP: - bpf_error("'esp' modifier applied to host"); + bpf_error("'esp' modifier applied to %s", typestr); case Q_ISO: bpf_error("ISO host filtering not implemented"); case Q_ESIS: - bpf_error("'esis' modifier applied to host"); + bpf_error("'esis' modifier applied to %s", typestr); case Q_ISIS: - bpf_error("'isis' modifier applied to host"); + bpf_error("'isis' modifier applied to %s", typestr); case Q_CLNP: - bpf_error("'clnp' modifier applied to host"); + bpf_error("'clnp' modifier applied to %s", typestr); case Q_STP: - bpf_error("'stp' modifier applied to host"); + bpf_error("'stp' modifier applied to %s", typestr); case Q_IPX: bpf_error("IPX host filtering not implemented"); case Q_NETBEUI: - bpf_error("'netbeui' modifier applied to host"); + bpf_error("'netbeui' modifier applied to %s", typestr); case Q_RADIO: - bpf_error("'radio' modifier applied to host"); + bpf_error("'radio' modifier applied to %s", typestr); default: abort(); @@ -3227,49 +3510,57 @@ gen_host(addr, mask, proto, dir) #ifdef INET6 static struct block * -gen_host6(addr, mask, proto, dir) +gen_host6(addr, mask, proto, dir, type) struct in6_addr *addr; struct in6_addr *mask; int proto; int dir; + int type; { + const char *typestr; + + if (type == Q_NET) + typestr = "net"; + else + typestr = "host"; + switch (proto) { case Q_DEFAULT: - return gen_host6(addr, mask, Q_IPV6, dir); + return gen_host6(addr, mask, Q_IPV6, dir, type); case Q_IP: - bpf_error("'ip' modifier applied to ip6 host"); + bpf_error("'ip' modifier applied to ip6 %s", typestr); case Q_RARP: - bpf_error("'rarp' modifier applied to ip6 host"); + bpf_error("'rarp' modifier applied to ip6 %s", typestr); case Q_ARP: - bpf_error("'arp' modifier applied to ip6 host"); + bpf_error("'arp' modifier applied to ip6 %s", typestr); case Q_SCTP: - bpf_error("'sctp' modifier applied to host"); + bpf_error("'sctp' modifier applied to %s", typestr); case Q_TCP: - bpf_error("'tcp' modifier applied to host"); + bpf_error("'tcp' modifier applied to %s", typestr); case Q_UDP: - bpf_error("'udp' modifier applied to host"); + bpf_error("'udp' modifier applied to %s", typestr); case Q_ICMP: - bpf_error("'icmp' modifier applied to host"); + bpf_error("'icmp' modifier applied to %s", typestr); case Q_IGMP: - bpf_error("'igmp' modifier applied to host"); + bpf_error("'igmp' modifier applied to %s", typestr); case Q_IGRP: - bpf_error("'igrp' modifier applied to host"); + bpf_error("'igrp' modifier applied to %s", typestr); case Q_PIM: - bpf_error("'pim' modifier applied to host"); + bpf_error("'pim' modifier applied to %s", typestr); case Q_VRRP: - bpf_error("'vrrp' modifier applied to host"); + bpf_error("'vrrp' modifier applied to %s", typestr); case Q_ATALK: bpf_error("ATALK host filtering not implemented"); @@ -3278,7 +3569,7 @@ gen_host6(addr, mask, proto, dir) bpf_error("AARP host filtering not implemented"); case Q_DECNET: - bpf_error("'decnet' modifier applied to ip6 host"); + bpf_error("'decnet' modifier applied to ip6 %s", typestr); case Q_SCA: bpf_error("SCA host filtering not implemented"); @@ -3296,37 +3587,37 @@ gen_host6(addr, mask, proto, dir) return gen_hostop6(addr, mask, dir, ETHERTYPE_IPV6, 8, 24); case Q_ICMPV6: - bpf_error("'icmp6' modifier applied to host"); + bpf_error("'icmp6' modifier applied to %s", typestr); case Q_AH: - bpf_error("'ah' modifier applied to host"); + bpf_error("'ah' modifier applied to %s", typestr); case Q_ESP: - bpf_error("'esp' modifier applied to host"); + bpf_error("'esp' modifier applied to %s", typestr); case Q_ISO: bpf_error("ISO host filtering not implemented"); case Q_ESIS: - bpf_error("'esis' modifier applied to host"); + bpf_error("'esis' modifier applied to %s", typestr); case Q_ISIS: - bpf_error("'isis' modifier applied to host"); + bpf_error("'isis' modifier applied to %s", typestr); case Q_CLNP: - bpf_error("'clnp' modifier applied to host"); + bpf_error("'clnp' modifier applied to %s", typestr); case Q_STP: - bpf_error("'stp' modifier applied to host"); + bpf_error("'stp' modifier applied to %s", typestr); case Q_IPX: bpf_error("IPX host filtering not implemented"); case Q_NETBEUI: - bpf_error("'netbeui' modifier applied to host"); + bpf_error("'netbeui' modifier applied to %s", typestr); case Q_RADIO: - bpf_error("'radio' modifier applied to host"); + bpf_error("'radio' modifier applied to %s", typestr); default: abort(); @@ -3353,18 +3644,25 @@ gen_gateway(eaddr, alist, proto, dir) case Q_IP: case Q_ARP: case Q_RARP: - if (linktype == DLT_EN10MB) - b0 = gen_ehostop(eaddr, Q_OR); - else if (linktype == DLT_FDDI) - b0 = gen_fhostop(eaddr, Q_OR); - else if (linktype == DLT_IEEE802) - b0 = gen_thostop(eaddr, Q_OR); - else if (linktype == DLT_IEEE802_11 || - linktype == DLT_IEEE802_11_RADIO_AVS || - linktype == DLT_IEEE802_11_RADIO || - linktype == DLT_PRISM_HEADER) - b0 = gen_wlanhostop(eaddr, Q_OR); - else if (linktype == DLT_SUNATM && is_lane) { + switch (linktype) { + case DLT_EN10MB: + b0 = gen_ehostop(eaddr, Q_OR); + break; + case DLT_FDDI: + b0 = gen_fhostop(eaddr, Q_OR); + break; + case DLT_IEEE802: + b0 = gen_thostop(eaddr, Q_OR); + break; + case DLT_IEEE802_11: + case DLT_IEEE802_11_RADIO_AVS: + case DLT_PPI: + case DLT_IEEE802_11_RADIO: + case DLT_PRISM_HEADER: + b0 = gen_wlanhostop(eaddr, Q_OR); + break; + case DLT_SUNATM: + if (is_lane) { /* * Check that the packet doesn't begin with an * LE Control marker. (We've already generated @@ -3379,15 +3677,19 @@ gen_gateway(eaddr, alist, proto, dir) */ b0 = gen_ehostop(eaddr, Q_OR); gen_and(b1, b0); - } else if (linktype == DLT_IP_OVER_FC) - b0 = gen_ipfchostop(eaddr, Q_OR); - else - bpf_error( + } + break; + case DLT_IP_OVER_FC: + b0 = gen_ipfchostop(eaddr, Q_OR); + break; + default: + bpf_error( "'gateway' supported only on ethernet/FDDI/token ring/802.11/Fibre Channel"); - - b1 = gen_host(**alist++, 0xffffffff, proto, Q_OR); + } + b1 = gen_host(**alist++, 0xffffffff, proto, Q_OR, Q_HOST); while (*alist) { - tmp = gen_host(**alist++, 0xffffffff, proto, Q_OR); + tmp = gen_host(**alist++, 0xffffffff, proto, Q_OR, + Q_HOST); gen_or(b1, tmp); b1 = tmp; } @@ -4160,6 +4462,9 @@ gen_protochain(v, proto, dir) if (linktype == DLT_IEEE802_11_RADIO) bpf_error("'protochain' not supported with radiotap headers"); + if (linktype == DLT_PPI) + bpf_error("'protochain' not supported with PPI headers"); + no_optimize = 1; /*this code is not compatible with optimzer yet */ /* @@ -4177,11 +4482,11 @@ gen_protochain(v, proto, dir) /* A = ip->ip_p */ s[i] = new_stmt(BPF_LD|BPF_ABS|BPF_B); - s[i]->s.k = off_nl + 9; + s[i]->s.k = off_ll + off_nl + 9; i++; /* X = ip->ip_hl << 2 */ s[i] = new_stmt(BPF_LDX|BPF_MSH|BPF_B); - s[i]->s.k = off_nl; + s[i]->s.k = off_ll + off_nl; i++; break; #ifdef INET6 @@ -4190,7 +4495,7 @@ gen_protochain(v, proto, dir) /* A = ip6->ip_nxt */ s[i] = new_stmt(BPF_LD|BPF_ABS|BPF_B); - s[i]->s.k = off_nl + 6; + s[i]->s.k = off_ll + off_nl + 6; i++; /* X = sizeof(struct ip6_hdr) */ s[i] = new_stmt(BPF_LDX|BPF_IMM); @@ -4270,7 +4575,7 @@ gen_protochain(v, proto, dir) i++; /* A = P[X + packet head] */ s[i] = new_stmt(BPF_LD|BPF_IND|BPF_B); - s[i]->s.k = off_nl; + s[i]->s.k = off_ll + off_nl; i++; /* MEM[reg2] = A */ s[i] = new_stmt(BPF_ST); @@ -4288,7 +4593,7 @@ gen_protochain(v, proto, dir) i++; /* A = P[X + packet head]; */ s[i] = new_stmt(BPF_LD|BPF_IND|BPF_B); - s[i]->s.k = off_nl; + s[i]->s.k = off_ll + off_nl; i++; /* A += 1 */ s[i] = new_stmt(BPF_ALU|BPF_ADD|BPF_K); @@ -4347,7 +4652,7 @@ gen_protochain(v, proto, dir) i++; /* A = P[X + packet head]; */ s[i] = new_stmt(BPF_LD|BPF_IND|BPF_B); - s[i]->s.k = off_nl; + s[i]->s.k = off_ll + off_nl; i++; /* MEM[reg2] = A */ s[i] = new_stmt(BPF_ST); @@ -4365,7 +4670,7 @@ gen_protochain(v, proto, dir) i++; /* A = P[X + packet head] */ s[i] = new_stmt(BPF_LD|BPF_IND|BPF_B); - s[i]->s.k = off_nl; + s[i]->s.k = off_ll + off_nl; i++; /* A += 2 */ s[i] = new_stmt(BPF_ALU|BPF_ADD|BPF_K); @@ -4419,6 +4724,7 @@ gen_protochain(v, proto, dir) #endif } + /* * Generate code that checks whether the packet is a packet for protocol * and whether the type field in that protocol's header has @@ -4465,7 +4771,6 @@ gen_proto(v, proto, dir) * * So we always check for ETHERTYPE_IP. */ - b0 = gen_linktype(ETHERTYPE_IP); #ifndef CHASE_CHAIN b1 = gen_cmp(OR_NET, 9, BPF_B, (bpf_int32)v); @@ -4650,7 +4955,7 @@ gen_scode(name, q) bpf_u_int32 **alist; #else int tproto6; - struct sockaddr_in *sin; + struct sockaddr_in *sin4; struct sockaddr_in6 *sin6; struct addrinfo *res, *res0; struct in6_addr mask128; @@ -4671,7 +4976,7 @@ gen_scode(name, q) addr <<= 8; mask <<= 8; } - return gen_host(addr, mask, proto, dir); + return gen_host(addr, mask, proto, dir, q.addr); case Q_DEFAULT: case Q_HOST: @@ -4709,6 +5014,7 @@ gen_scode(name, q) case DLT_IEEE802_11_RADIO_AVS: case DLT_IEEE802_11_RADIO: case DLT_PRISM_HEADER: + case DLT_PPI: eaddr = pcap_ether_hostton(name); if (eaddr == NULL) bpf_error( @@ -4756,7 +5062,7 @@ gen_scode(name, q) * I don't think DECNET hosts can be multihomed, so * there is no need to build up a list of addresses */ - return (gen_host(dn_addr, 0, proto, dir)); + return (gen_host(dn_addr, 0, proto, dir, q.addr)); } else { #ifndef INET6 alist = pcap_nametoaddr(name); @@ -4765,10 +5071,10 @@ gen_scode(name, q) tproto = proto; if (off_linktype == (u_int)-1 && tproto == Q_DEFAULT) tproto = Q_IP; - b = gen_host(**alist++, 0xffffffff, tproto, dir); + b = gen_host(**alist++, 0xffffffff, tproto, dir, q.addr); while (*alist) { tmp = gen_host(**alist++, 0xffffffff, - tproto, dir); + tproto, dir, q.addr); gen_or(b, tmp); b = tmp; } @@ -4790,10 +5096,10 @@ gen_scode(name, q) if (tproto == Q_IPV6) continue; - sin = (struct sockaddr_in *) + sin4 = (struct sockaddr_in *) res->ai_addr; - tmp = gen_host(ntohl(sin->sin_addr.s_addr), - 0xffffffff, tproto, dir); + tmp = gen_host(ntohl(sin4->sin_addr.s_addr), + 0xffffffff, tproto, dir, q.addr); break; case AF_INET6: if (tproto6 == Q_IP) @@ -4802,7 +5108,7 @@ gen_scode(name, q) sin6 = (struct sockaddr_in6 *) res->ai_addr; tmp = gen_host6(&sin6->sin6_addr, - &mask128, tproto6, dir); + &mask128, tproto6, dir, q.addr); break; default: continue; @@ -4860,12 +5166,9 @@ gen_scode(name, q) #ifndef INET6 return gen_port(port, real_proto, dir); #else - { - struct block *b; b = gen_port(port, real_proto, dir); gen_or(gen_port6(port, real_proto, dir), b); return b; - } #endif /* INET6 */ case Q_PORTRANGE: @@ -4904,12 +5207,9 @@ gen_scode(name, q) #ifndef INET6 return gen_portrange(port1, port2, real_proto, dir); #else - { - struct block *b; b = gen_portrange(port1, port2, real_proto, dir); gen_or(gen_portrange6(port1, port2, real_proto, dir), b); return b; - } #endif /* INET6 */ case Q_GATEWAY: @@ -4975,7 +5275,14 @@ gen_mcode(s1, s2, masklen, q) /* Convert mask len to mask */ if (masklen > 32) bpf_error("mask length must be <= 32"); - m = 0xffffffff << (32 - masklen); + if (masklen == 0) { + /* + * X << 32 is not guaranteed by C to be 0; it's + * undefined. + */ + m = 0; + } else + m = 0xffffffff << (32 - masklen); if ((n & ~m) != 0) bpf_error("non-network bits set in \"%s/%d\"", s1, masklen); @@ -4984,13 +5291,14 @@ gen_mcode(s1, s2, masklen, q) switch (q.addr) { case Q_NET: - return gen_host(n, m, q.proto, q.dir); + return gen_host(n, m, q.proto, q.dir, q.addr); default: bpf_error("Mask syntax for networks only"); /* NOTREACHED */ } /* NOTREACHED */ + return NULL; } struct block * @@ -5017,7 +5325,7 @@ gen_ncode(s, v, q) case Q_HOST: case Q_NET: if (proto == Q_DECNET) - return gen_host(v, 0, proto, dir); + return gen_host(v, 0, proto, dir, q.addr); else if (proto == Q_LINK) { bpf_error("illegal link layer address"); } else { @@ -5033,7 +5341,7 @@ gen_ncode(s, v, q) v <<= 32 - vlen; mask <<= 32 - vlen; } - return gen_host(v, mask, proto, dir); + return gen_host(v, mask, proto, dir, q.addr); } case Q_PORT: @@ -5151,7 +5459,7 @@ gen_mcode6(s1, s2, masklen, q) /* FALLTHROUGH */ case Q_NET: - b = gen_host6(addr, &mask, q.proto, q.dir); + b = gen_host6(addr, &mask, q.proto, q.dir, q.addr); freeaddrinfo(res); return b; @@ -5159,6 +5467,7 @@ gen_mcode6(s1, s2, masklen, q) bpf_error("invalid qualifier against IPv6 address"); /* NOTREACHED */ } + return NULL; } #endif /*INET6*/ @@ -5170,40 +5479,48 @@ gen_ecode(eaddr, q) struct block *b, *tmp; if ((q.addr == Q_HOST || q.addr == Q_DEFAULT) && q.proto == Q_LINK) { - if (linktype == DLT_EN10MB) - return gen_ehostop(eaddr, (int)q.dir); - if (linktype == DLT_FDDI) - return gen_fhostop(eaddr, (int)q.dir); - if (linktype == DLT_IEEE802) - return gen_thostop(eaddr, (int)q.dir); - if (linktype == DLT_IEEE802_11 || - linktype == DLT_IEEE802_11_RADIO_AVS || - linktype == DLT_IEEE802_11_RADIO || - linktype == DLT_PRISM_HEADER) - return gen_wlanhostop(eaddr, (int)q.dir); - if (linktype == DLT_SUNATM && is_lane) { - /* - * Check that the packet doesn't begin with an - * LE Control marker. (We've already generated - * a test for LANE.) - */ - tmp = gen_cmp(OR_LINK, SUNATM_PKT_BEGIN_POS, BPF_H, - 0xFF00); - gen_not(tmp); + switch (linktype) { + case DLT_EN10MB: + return gen_ehostop(eaddr, (int)q.dir); + case DLT_FDDI: + return gen_fhostop(eaddr, (int)q.dir); + case DLT_IEEE802: + return gen_thostop(eaddr, (int)q.dir); + case DLT_IEEE802_11: + case DLT_IEEE802_11_RADIO_AVS: + case DLT_IEEE802_11_RADIO: + case DLT_PRISM_HEADER: + case DLT_PPI: + return gen_wlanhostop(eaddr, (int)q.dir); + case DLT_SUNATM: + if (is_lane) { + /* + * Check that the packet doesn't begin with an + * LE Control marker. (We've already generated + * a test for LANE.) + */ + tmp = gen_cmp(OR_LINK, SUNATM_PKT_BEGIN_POS, BPF_H, + 0xFF00); + gen_not(tmp); - /* - * Now check the MAC address. - */ - b = gen_ehostop(eaddr, (int)q.dir); - gen_and(tmp, b); - return b; - } - if (linktype == DLT_IP_OVER_FC) - return gen_ipfchostop(eaddr, (int)q.dir); - bpf_error("ethernet addresses supported only on ethernet/FDDI/token ring/802.11/ATM LANE/Fibre Channel"); + /* + * Now check the MAC address. + */ + b = gen_ehostop(eaddr, (int)q.dir); + gen_and(tmp, b); + return b; + } + break; + case DLT_IP_OVER_FC: + return gen_ipfchostop(eaddr, (int)q.dir); + default: + bpf_error("ethernet addresses supported only on ethernet/FDDI/token ring/802.11/ATM LANE/Fibre Channel"); + break; + } } bpf_error("ethernet address used in non-ether expression"); /* NOTREACHED */ + return NULL; } void @@ -5249,16 +5566,16 @@ xfer_to_a(a) * for "index". */ struct arth * -gen_load(proto, index, size) +gen_load(proto, inst, size) int proto; - struct arth *index; + struct arth *inst; int size; { struct slist *s, *tmp; struct block *b; int regno = alloc_reg(); - free_reg(index->regno); + free_reg(inst->regno); switch (size) { default: @@ -5295,14 +5612,14 @@ gen_load(proto, index, size) * Load into the X register the offset computed into the * register specifed by "index". */ - s = xfer_to_x(index); + s = xfer_to_x(inst); /* * Load the item at that offset. */ tmp = new_stmt(BPF_LD|BPF_IND|size); sappend(s, tmp); - sappend(index->s, s); + sappend(inst->s, s); break; case Q_LINK: @@ -5329,11 +5646,11 @@ gen_load(proto, index, size) * by "index". */ if (s != NULL) { - sappend(s, xfer_to_a(index)); + sappend(s, xfer_to_a(inst)); sappend(s, new_stmt(BPF_ALU|BPF_ADD|BPF_X)); sappend(s, new_stmt(BPF_MISC|BPF_TAX)); } else - s = xfer_to_x(index); + s = xfer_to_x(inst); /* * Load the item at the sum of the offset we've put in the @@ -5345,7 +5662,7 @@ gen_load(proto, index, size) tmp = new_stmt(BPF_LD|BPF_IND|size); tmp->s.k = off_ll; sappend(s, tmp); - sappend(index->s, s); + sappend(inst->s, s); break; case Q_IP: @@ -5378,30 +5695,33 @@ gen_load(proto, index, size) * by "index". */ if (s != NULL) { - sappend(s, xfer_to_a(index)); + sappend(s, xfer_to_a(inst)); sappend(s, new_stmt(BPF_ALU|BPF_ADD|BPF_X)); sappend(s, new_stmt(BPF_MISC|BPF_TAX)); } else - s = xfer_to_x(index); + s = xfer_to_x(inst); /* * Load the item at the sum of the offset we've put in the - * X register and the offset of the start of the network - * layer header. + * X register, the offset of the start of the network + * layer header, and the offset of the start of the link + * layer header (which is 0 if the radio header is + * variable-length; that header length is what we put + * into the X register and then added to the index). */ tmp = new_stmt(BPF_LD|BPF_IND|size); - tmp->s.k = off_nl; + tmp->s.k = off_ll + off_nl; sappend(s, tmp); - sappend(index->s, s); + sappend(inst->s, s); /* * Do the computation only if the packet contains * the protocol in question. */ b = gen_proto_abbrev(proto); - if (index->b) - gen_and(index->b, b); - index->b = b; + if (inst->b) + gen_and(inst->b, b); + inst->b = b; break; case Q_SCTP: @@ -5415,6 +5735,11 @@ gen_load(proto, index, size) /* * The offset is relative to the beginning of * the transport-layer header. + * + * Load the X register with the length of the IPv4 header + * (plus the offset of the link-layer header, if it's + * a variable-length header), in bytes. + * * XXX - are there any cases where we want * off_nl_nosnap? * XXX - we should, if we're built with @@ -5424,23 +5749,25 @@ gen_load(proto, index, size) s = gen_loadx_iphdrlen(); /* - * The X register now contains the sum of the offset - * of the beginning of the link-layer header and - * the length of the network-layer header. Load - * into the A register the offset relative to + * The X register now contains the sum of the length + * of any variable-length header preceding the link-layer + * header and the length of the network-layer header. + * Load into the A register the offset relative to * the beginning of the transport layer header, * add the X register to that, move that to the * X register, and load with an offset from the * X register equal to the offset of the network * layer header relative to the beginning of - * the link-layer header. + * the link-layer header plus the length of any + * fixed-length header preceding the link-layer + * header. */ - sappend(s, xfer_to_a(index)); + sappend(s, xfer_to_a(inst)); sappend(s, new_stmt(BPF_ALU|BPF_ADD|BPF_X)); sappend(s, new_stmt(BPF_MISC|BPF_TAX)); sappend(s, tmp = new_stmt(BPF_LD|BPF_IND|size)); - tmp->s.k = off_nl; - sappend(index->s, s); + tmp->s.k = off_ll + off_nl; + sappend(inst->s, s); /* * Do the computation only if the packet contains @@ -5449,12 +5776,12 @@ gen_load(proto, index, size) * only fragment of that datagram. */ gen_and(gen_proto_abbrev(proto), b = gen_ipfrag()); - if (index->b) - gen_and(index->b, b); + if (inst->b) + gen_and(inst->b, b); #ifdef INET6 gen_and(gen_proto_abbrev(Q_IP), b); #endif - index->b = b; + inst->b = b; break; #ifdef INET6 case Q_ICMPV6: @@ -5462,12 +5789,12 @@ gen_load(proto, index, size) /*NOTREACHED*/ #endif } - index->regno = regno; + inst->regno = regno; s = new_stmt(BPF_ST); s->s.k = regno; - sappend(index->s, s); + sappend(inst->s, s); - return index; + return inst; } struct block * @@ -5623,6 +5950,7 @@ alloc_reg() } bpf_error("too many registers needed to evaluate expression"); /* NOTREACHED */ + return 0; } /* @@ -5735,22 +6063,26 @@ gen_broadcast(proto) case Q_DEFAULT: case Q_LINK: - if (linktype == DLT_ARCNET || linktype == DLT_ARCNET_LINUX) - return gen_ahostop(abroadcast, Q_DST); - if (linktype == DLT_EN10MB) - return gen_ehostop(ebroadcast, Q_DST); - if (linktype == DLT_FDDI) - return gen_fhostop(ebroadcast, Q_DST); - if (linktype == DLT_IEEE802) - return gen_thostop(ebroadcast, Q_DST); - if (linktype == DLT_IEEE802_11 || - linktype == DLT_IEEE802_11_RADIO_AVS || - linktype == DLT_IEEE802_11_RADIO || - linktype == DLT_PRISM_HEADER) - return gen_wlanhostop(ebroadcast, Q_DST); - if (linktype == DLT_IP_OVER_FC) - return gen_ipfchostop(ebroadcast, Q_DST); - if (linktype == DLT_SUNATM && is_lane) { + switch (linktype) { + case DLT_ARCNET: + case DLT_ARCNET_LINUX: + return gen_ahostop(abroadcast, Q_DST); + case DLT_EN10MB: + return gen_ehostop(ebroadcast, Q_DST); + case DLT_FDDI: + return gen_fhostop(ebroadcast, Q_DST); + case DLT_IEEE802: + return gen_thostop(ebroadcast, Q_DST); + case DLT_IEEE802_11: + case DLT_IEEE802_11_RADIO_AVS: + case DLT_IEEE802_11_RADIO: + case DLT_PPI: + case DLT_PRISM_HEADER: + return gen_wlanhostop(ebroadcast, Q_DST); + case DLT_IP_OVER_FC: + return gen_ipfchostop(ebroadcast, Q_DST); + case DLT_SUNATM: + if (is_lane) { /* * Check that the packet doesn't begin with an * LE Control marker. (We've already generated @@ -5766,8 +6098,11 @@ gen_broadcast(proto) b0 = gen_ehostop(ebroadcast, Q_DST); gen_and(b1, b0); return b0; - } - bpf_error("not a broadcast link"); + } + break; + default: + bpf_error("not a broadcast link"); + } break; case Q_IP: @@ -5782,6 +6117,7 @@ gen_broadcast(proto) } bpf_error("only link-layer/IP broadcast filters supported"); /* NOTREACHED */ + return NULL; } /* @@ -5814,154 +6150,147 @@ gen_multicast(proto) case Q_DEFAULT: case Q_LINK: - if (linktype == DLT_ARCNET || linktype == DLT_ARCNET_LINUX) - /* all ARCnet multicasts use the same address */ - return gen_ahostop(abroadcast, Q_DST); - - if (linktype == DLT_EN10MB) { - /* ether[0] & 1 != 0 */ - return gen_mac_multicast(0); - } - - if (linktype == DLT_FDDI) { - /* - * XXX TEST THIS: MIGHT NOT PORT PROPERLY XXX - * - * XXX - was that referring to bit-order issues? - */ - /* fddi[1] & 1 != 0 */ - return gen_mac_multicast(1); - } - - if (linktype == DLT_IEEE802) { - /* tr[2] & 1 != 0 */ - return gen_mac_multicast(2); - } - - if (linktype == DLT_IEEE802_11 || - linktype == DLT_IEEE802_11_RADIO_AVS || - linktype == DLT_IEEE802_11_RADIO || - linktype == DLT_PRISM_HEADER) { - /* - * Oh, yuk. - * - * For control frames, there is no DA. - * - * For management frames, DA is at an - * offset of 4 from the beginning of - * the packet. - * - * For data frames, DA is at an offset - * of 4 from the beginning of the packet - * if To DS is clear and at an offset of - * 16 from the beginning of the packet - * if To DS is set. - */ - - /* - * Generate the tests to be done for data frames. - * - * First, check for To DS set, i.e. "link[1] & 0x01". - */ - s = gen_load_a(OR_LINK, 1, BPF_B); - b1 = new_block(JMP(BPF_JSET)); - b1->s.k = 0x01; /* To DS */ - b1->stmts = s; - - /* - * If To DS is set, the DA is at 16. - */ - b0 = gen_mac_multicast(16); - gen_and(b1, b0); - - /* - * Now, check for To DS not set, i.e. check - * "!(link[1] & 0x01)". - */ - s = gen_load_a(OR_LINK, 1, BPF_B); - b2 = new_block(JMP(BPF_JSET)); - b2->s.k = 0x01; /* To DS */ - b2->stmts = s; - gen_not(b2); - - /* - * If To DS is not set, the DA is at 4. - */ - b1 = gen_mac_multicast(4); - gen_and(b2, b1); - - /* - * Now OR together the last two checks. That gives - * the complete set of checks for data frames. - */ - gen_or(b1, b0); - - /* - * Now check for a data frame. - * I.e, check "link[0] & 0x08". - */ - s = gen_load_a(OR_LINK, 0, BPF_B); - b1 = new_block(JMP(BPF_JSET)); - b1->s.k = 0x08; - b1->stmts = s; - - /* - * AND that with the checks done for data frames. - */ - gen_and(b1, b0); - - /* - * If the high-order bit of the type value is 0, this - * is a management frame. - * I.e, check "!(link[0] & 0x08)". - */ - s = gen_load_a(OR_LINK, 0, BPF_B); - b2 = new_block(JMP(BPF_JSET)); - b2->s.k = 0x08; - b2->stmts = s; - gen_not(b2); - - /* - * For management frames, the DA is at 4. - */ - b1 = gen_mac_multicast(4); - gen_and(b2, b1); - - /* - * OR that with the checks done for data frames. - * That gives the checks done for management and - * data frames. - */ - gen_or(b1, b0); - - /* - * If the low-order bit of the type value is 1, - * this is either a control frame or a frame - * with a reserved type, and thus not a - * frame with an SA. - * - * I.e., check "!(link[0] & 0x04)". - */ - s = gen_load_a(OR_LINK, 0, BPF_B); - b1 = new_block(JMP(BPF_JSET)); - b1->s.k = 0x04; - b1->stmts = s; - gen_not(b1); - - /* - * AND that with the checks for data and management - * frames. - */ - gen_and(b1, b0); - return b0; - } - - if (linktype == DLT_IP_OVER_FC) { - b0 = gen_mac_multicast(2); - return b0; - } - - if (linktype == DLT_SUNATM && is_lane) { + switch (linktype) { + case DLT_ARCNET: + case DLT_ARCNET_LINUX: + /* all ARCnet multicasts use the same address */ + return gen_ahostop(abroadcast, Q_DST); + case DLT_EN10MB: + /* ether[0] & 1 != 0 */ + return gen_mac_multicast(0); + case DLT_FDDI: + /* + * XXX TEST THIS: MIGHT NOT PORT PROPERLY XXX + * + * XXX - was that referring to bit-order issues? + */ + /* fddi[1] & 1 != 0 */ + return gen_mac_multicast(1); + case DLT_IEEE802: + /* tr[2] & 1 != 0 */ + return gen_mac_multicast(2); + case DLT_IEEE802_11: + case DLT_IEEE802_11_RADIO_AVS: + case DLT_PPI: + case DLT_IEEE802_11_RADIO: + case DLT_PRISM_HEADER: + /* + * Oh, yuk. + * + * For control frames, there is no DA. + * + * For management frames, DA is at an + * offset of 4 from the beginning of + * the packet. + * + * For data frames, DA is at an offset + * of 4 from the beginning of the packet + * if To DS is clear and at an offset of + * 16 from the beginning of the packet + * if To DS is set. + */ + + /* + * Generate the tests to be done for data frames. + * + * First, check for To DS set, i.e. "link[1] & 0x01". + */ + s = gen_load_a(OR_LINK, 1, BPF_B); + b1 = new_block(JMP(BPF_JSET)); + b1->s.k = 0x01; /* To DS */ + b1->stmts = s; + + /* + * If To DS is set, the DA is at 16. + */ + b0 = gen_mac_multicast(16); + gen_and(b1, b0); + + /* + * Now, check for To DS not set, i.e. check + * "!(link[1] & 0x01)". + */ + s = gen_load_a(OR_LINK, 1, BPF_B); + b2 = new_block(JMP(BPF_JSET)); + b2->s.k = 0x01; /* To DS */ + b2->stmts = s; + gen_not(b2); + + /* + * If To DS is not set, the DA is at 4. + */ + b1 = gen_mac_multicast(4); + gen_and(b2, b1); + + /* + * Now OR together the last two checks. That gives + * the complete set of checks for data frames. + */ + gen_or(b1, b0); + + /* + * Now check for a data frame. + * I.e, check "link[0] & 0x08". + */ + s = gen_load_a(OR_LINK, 0, BPF_B); + b1 = new_block(JMP(BPF_JSET)); + b1->s.k = 0x08; + b1->stmts = s; + + /* + * AND that with the checks done for data frames. + */ + gen_and(b1, b0); + + /* + * If the high-order bit of the type value is 0, this + * is a management frame. + * I.e, check "!(link[0] & 0x08)". + */ + s = gen_load_a(OR_LINK, 0, BPF_B); + b2 = new_block(JMP(BPF_JSET)); + b2->s.k = 0x08; + b2->stmts = s; + gen_not(b2); + + /* + * For management frames, the DA is at 4. + */ + b1 = gen_mac_multicast(4); + gen_and(b2, b1); + + /* + * OR that with the checks done for data frames. + * That gives the checks done for management and + * data frames. + */ + gen_or(b1, b0); + + /* + * If the low-order bit of the type value is 1, + * this is either a control frame or a frame + * with a reserved type, and thus not a + * frame with an SA. + * + * I.e., check "!(link[0] & 0x04)". + */ + s = gen_load_a(OR_LINK, 0, BPF_B); + b1 = new_block(JMP(BPF_JSET)); + b1->s.k = 0x04; + b1->stmts = s; + gen_not(b1); + + /* + * AND that with the checks for data and management + * frames. + */ + gen_and(b1, b0); + return b0; + case DLT_IP_OVER_FC: + b0 = gen_mac_multicast(2); + return b0; + case DLT_SUNATM: + if (is_lane) { /* * Check that the packet doesn't begin with an * LE Control marker. (We've already generated @@ -5975,10 +6304,13 @@ gen_multicast(proto) b0 = gen_mac_multicast(off_mac); gen_and(b1, b0); return b0; - } - - /* Link not known to support multicasts */ - break; + } + break; + default: + break; + } + /* Link not known to support multicasts */ + break; case Q_IP: b0 = gen_linktype(ETHERTYPE_IP); @@ -5996,6 +6328,7 @@ gen_multicast(proto) } bpf_error("link-layer multicast filters supported only on ethernet/FDDI/token ring/ARCNET/802.11/ATM LANE/Fibre Channel"); /* NOTREACHED */ + return NULL; } /* @@ -6071,6 +6404,7 @@ gen_inbound(dir) case DLT_JUNIPER_PPP: case DLT_JUNIPER_FRELAY: case DLT_JUNIPER_CHDLC: + case DLT_JUNIPER_VP: /* juniper flags (including direction) are stored * the byte after the 3-byte magic number */ if (dir) { @@ -6212,6 +6546,7 @@ gen_acode(eaddr, q) } bpf_error("ARCnet address used in non-arc expression"); /* NOTREACHED */ + return NULL; } static struct block * @@ -6354,13 +6689,11 @@ gen_mpls(label_num) case DLT_C_HDLC: /* fall through */ case DLT_EN10MB: - b0 = gen_cmp(OR_LINK, off_linktype, BPF_H, - (bpf_int32)ETHERTYPE_MPLS); + b0 = gen_linktype(ETHERTYPE_MPLS); break; case DLT_PPP: - b0 = gen_cmp(OR_LINK, off_linktype, BPF_H, - (bpf_int32)PPP_MPLS_UCAST); + b0 = gen_linktype(PPP_MPLS_UCAST); break; /* FIXME add other DLT_s ... @@ -6622,6 +6955,50 @@ gen_atmtype_abbrev(type) return b1; } +/* + * Filtering for MTP2 messages based on li value + * FISU, length is null + * LSSU, length is 1 or 2 + * MSU, length is 3 or more + */ +struct block * +gen_mtp2type_abbrev(type) + int type; +{ + struct block *b0, *b1; + + switch (type) { + + case M_FISU: + if ( (linktype != DLT_MTP2) && + (linktype != DLT_MTP2_WITH_PHDR) ) + bpf_error("'fisu' supported only on MTP2"); + /* gen_ncmp(offrel, offset, size, mask, jtype, reverse, value) */ + b0 = gen_ncmp(OR_PACKET, off_li, BPF_B, 0x3f, BPF_JEQ, 0, 0); + break; + + case M_LSSU: + if ( (linktype != DLT_MTP2) && + (linktype != DLT_MTP2_WITH_PHDR) ) + bpf_error("'lssu' supported only on MTP2"); + b0 = gen_ncmp(OR_PACKET, off_li, BPF_B, 0x3f, BPF_JGT, 1, 2); + b1 = gen_ncmp(OR_PACKET, off_li, BPF_B, 0x3f, BPF_JGT, 0, 0); + gen_and(b1, b0); + break; + + case M_MSU: + if ( (linktype != DLT_MTP2) && + (linktype != DLT_MTP2_WITH_PHDR) ) + bpf_error("'msu' supported only on MTP2"); + b0 = gen_ncmp(OR_PACKET, off_li, BPF_B, 0x3f, BPF_JGT, 0, 2); + break; + + default: + abort(); + } + return b0; +} + struct block * gen_mtp3field_code(mtp3field, jvalue, jtype, reverse) int mtp3field; diff --git a/libpcap/gencode.h b/libpcap/gencode.h index 5abc25141..f4c5cf750 100644 --- a/libpcap/gencode.h +++ b/libpcap/gencode.h @@ -18,7 +18,7 @@ * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * @(#) $Header: /tcpdump/master/libpcap/gencode.h,v 1.60.2.6 2005/09/05 09:08:06 guy Exp $ (LBL) + * @(#) $Header: /tcpdump/master/libpcap/gencode.h,v 1.60.2.11 2007/06/11 09:52:04 guy Exp $ (LBL) */ /* @@ -173,11 +173,16 @@ end-to-end circuits, ILMI circuits or connection signalling circuit. */ -/*MTP3 field types */ -#define M_SIO 1 -#define M_OPC 2 -#define M_DPC 3 -#define M_SLS 4 +/* MTP2 types */ +#define M_FISU 22 /* FISU */ +#define M_LSSU 23 /* LSSU */ +#define M_MSU 24 /* MSU */ + +/* MTP3 field types */ +#define M_SIO 1 +#define M_OPC 2 +#define M_DPC 3 +#define M_SLS 4 struct slist; @@ -296,6 +301,7 @@ struct block *gen_atmfield_code(int atmfield, bpf_int32 jvalue, bpf_u_int32 jtyp struct block *gen_atmtype_abbrev(int type); struct block *gen_atmmulti_abbrev(int type); +struct block *gen_mtp2type_abbrev(int type); struct block *gen_mtp3field_code(int mtp3field, bpf_u_int32 jvalue, bpf_u_int32 jtype, int reverse); struct block *gen_pf_ifname(const char *); @@ -315,7 +321,7 @@ char *sdup(const char *); struct bpf_insn *icode_to_fcode(struct block *, int *); int pcap_parse(void); -void lex_init(char *); +void lex_init(const char *); void lex_cleanup(void); void sappend(struct slist *, struct slist *); diff --git a/libpcap/grammar.c b/libpcap/grammar.c index a06739aff..b7cf38468 100644 --- a/libpcap/grammar.c +++ b/libpcap/grammar.c @@ -1,19 +1,291 @@ -#ifndef lint -static char const -yyrcsid[] = "$FreeBSD: src/usr.bin/yacc/skeleton.c,v 1.28 2000/01/17 02:04:06 bde Exp $"; +/* A Bison parser, made by GNU Bison 2.3. */ + +/* Skeleton implementation for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* C LALR(1) parser skeleton written by Richard Stallman, by + simplifying the original so-called "semantic" parser. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output. */ +#define YYBISON 1 + +/* Bison version. */ +#define YYBISON_VERSION "2.3" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 0 + +/* Using locations. */ +#define YYLSP_NEEDED 0 + +/* Substitute the variable and function names. */ +#define yyparse pcap_parse +#define yylex pcap_lex +#define yyerror pcap_error +#define yylval pcap_lval +#define yychar pcap_char +#define yydebug pcap_debug +#define yynerrs pcap_nerrs + + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + DST = 258, + SRC = 259, + HOST = 260, + GATEWAY = 261, + NET = 262, + NETMASK = 263, + PORT = 264, + PORTRANGE = 265, + LESS = 266, + GREATER = 267, + PROTO = 268, + PROTOCHAIN = 269, + CBYTE = 270, + ARP = 271, + RARP = 272, + IP = 273, + SCTP = 274, + TCP = 275, + UDP = 276, + ICMP = 277, + IGMP = 278, + IGRP = 279, + PIM = 280, + VRRP = 281, + ATALK = 282, + AARP = 283, + DECNET = 284, + LAT = 285, + SCA = 286, + MOPRC = 287, + MOPDL = 288, + TK_BROADCAST = 289, + TK_MULTICAST = 290, + NUM = 291, + INBOUND = 292, + OUTBOUND = 293, + PF_IFNAME = 294, + PF_RSET = 295, + PF_RNR = 296, + PF_SRNR = 297, + PF_REASON = 298, + PF_ACTION = 299, + LINK = 300, + GEQ = 301, + LEQ = 302, + NEQ = 303, + ID = 304, + EID = 305, + HID = 306, + HID6 = 307, + AID = 308, + LSH = 309, + RSH = 310, + LEN = 311, + IPV6 = 312, + ICMPV6 = 313, + AH = 314, + ESP = 315, + VLAN = 316, + MPLS = 317, + PPPOED = 318, + PPPOES = 319, + ISO = 320, + ESIS = 321, + CLNP = 322, + ISIS = 323, + L1 = 324, + L2 = 325, + IIH = 326, + LSP = 327, + SNP = 328, + CSNP = 329, + PSNP = 330, + STP = 331, + IPX = 332, + NETBEUI = 333, + LANE = 334, + LLC = 335, + METAC = 336, + BCC = 337, + SC = 338, + ILMIC = 339, + OAMF4EC = 340, + OAMF4SC = 341, + OAM = 342, + OAMF4 = 343, + CONNECTMSG = 344, + METACONNECT = 345, + VPI = 346, + VCI = 347, + RADIO = 348, + FISU = 349, + LSSU = 350, + MSU = 351, + SIO = 352, + OPC = 353, + DPC = 354, + SLS = 355, + AND = 356, + OR = 357, + UMINUS = 358 + }; #endif -#include -#define YYBYACC 1 -#define YYMAJOR 1 -#define YYMINOR 9 -#define YYLEX yylex() -#define YYEMPTY -1 -#define yyclearin (yychar=(YYEMPTY)) -#define yyerrok (yyerrflag=0) -#define YYRECOVERING() (yyerrflag!=0) -static int yygrowstack(); -#define YYPREFIX "yy" -#line 2 "grammar.y" +/* Tokens. */ +#define DST 258 +#define SRC 259 +#define HOST 260 +#define GATEWAY 261 +#define NET 262 +#define NETMASK 263 +#define PORT 264 +#define PORTRANGE 265 +#define LESS 266 +#define GREATER 267 +#define PROTO 268 +#define PROTOCHAIN 269 +#define CBYTE 270 +#define ARP 271 +#define RARP 272 +#define IP 273 +#define SCTP 274 +#define TCP 275 +#define UDP 276 +#define ICMP 277 +#define IGMP 278 +#define IGRP 279 +#define PIM 280 +#define VRRP 281 +#define ATALK 282 +#define AARP 283 +#define DECNET 284 +#define LAT 285 +#define SCA 286 +#define MOPRC 287 +#define MOPDL 288 +#define TK_BROADCAST 289 +#define TK_MULTICAST 290 +#define NUM 291 +#define INBOUND 292 +#define OUTBOUND 293 +#define PF_IFNAME 294 +#define PF_RSET 295 +#define PF_RNR 296 +#define PF_SRNR 297 +#define PF_REASON 298 +#define PF_ACTION 299 +#define LINK 300 +#define GEQ 301 +#define LEQ 302 +#define NEQ 303 +#define ID 304 +#define EID 305 +#define HID 306 +#define HID6 307 +#define AID 308 +#define LSH 309 +#define RSH 310 +#define LEN 311 +#define IPV6 312 +#define ICMPV6 313 +#define AH 314 +#define ESP 315 +#define VLAN 316 +#define MPLS 317 +#define PPPOED 318 +#define PPPOES 319 +#define ISO 320 +#define ESIS 321 +#define CLNP 322 +#define ISIS 323 +#define L1 324 +#define L2 325 +#define IIH 326 +#define LSP 327 +#define SNP 328 +#define CSNP 329 +#define PSNP 330 +#define STP 331 +#define IPX 332 +#define NETBEUI 333 +#define LANE 334 +#define LLC 335 +#define METAC 336 +#define BCC 337 +#define SC 338 +#define ILMIC 339 +#define OAMF4EC 340 +#define OAMF4SC 341 +#define OAM 342 +#define OAMF4 343 +#define CONNECTMSG 344 +#define METACONNECT 345 +#define VPI 346 +#define VCI 347 +#define RADIO 348 +#define FISU 349 +#define LSSU 350 +#define MSU 351 +#define SIO 352 +#define OPC 353 +#define DPC 354 +#define SLS 355 +#define AND 356 +#define OR 357 +#define UMINUS 358 + + + + +/* Copy the first part of user declarations. */ +#line 1 "grammar.y" + /* * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996 * The Regents of the University of California. All rights reserved. @@ -37,7 +309,7 @@ static int yygrowstack(); */ #ifndef lint static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/libpcap/grammar.y,v 1.86.2.5 2005/09/05 09:08:06 guy Exp $ (LBL)"; + "@(#) $Header: /tcpdump/master/libpcap/grammar.y,v 1.86.2.8 2007/06/11 09:52:04 guy Exp $ (LBL)"; #endif #ifdef HAVE_CONFIG_H @@ -83,7 +355,7 @@ int n_errors = 0; static struct qual qerr = { Q_UNDEF, Q_UNDEF, Q_UNDEF, Q_UNDEF }; static void -yyerror(char *msg) +yyerror(const char *msg) { ++n_errors; bpf_error("%s", msg); @@ -100,8 +372,30 @@ pcap_parse() } #endif + + +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* Enabling the token table. */ +#ifndef YYTOKEN_TABLE +# define YYTOKEN_TABLE 0 +#endif + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE #line 90 "grammar.y" -typedef union { +{ int i; bpf_u_int32 h; u_char *e; @@ -115,1677 +409,2709 @@ typedef union { struct block *b; } blk; struct block *rblk; -} YYSTYPE; -#line 120 "y.tab.c" -#define YYERRCODE 256 -#define DST 257 -#define SRC 258 -#define HOST 259 -#define GATEWAY 260 -#define NET 261 -#define NETMASK 262 -#define PORT 263 -#define PORTRANGE 264 -#define LESS 265 -#define GREATER 266 -#define PROTO 267 -#define PROTOCHAIN 268 -#define CBYTE 269 -#define ARP 270 -#define RARP 271 -#define IP 272 -#define SCTP 273 -#define TCP 274 -#define UDP 275 -#define ICMP 276 -#define IGMP 277 -#define IGRP 278 -#define PIM 279 -#define VRRP 280 -#define ATALK 281 -#define AARP 282 -#define DECNET 283 -#define LAT 284 -#define SCA 285 -#define MOPRC 286 -#define MOPDL 287 -#define TK_BROADCAST 288 -#define TK_MULTICAST 289 -#define NUM 290 -#define INBOUND 291 -#define OUTBOUND 292 -#define PF_IFNAME 293 -#define PF_RSET 294 -#define PF_RNR 295 -#define PF_SRNR 296 -#define PF_REASON 297 -#define PF_ACTION 298 -#define LINK 299 -#define GEQ 300 -#define LEQ 301 -#define NEQ 302 -#define ID 303 -#define EID 304 -#define HID 305 -#define HID6 306 -#define AID 307 -#define LSH 308 -#define RSH 309 -#define LEN 310 -#define IPV6 311 -#define ICMPV6 312 -#define AH 313 -#define ESP 314 -#define VLAN 315 -#define MPLS 316 -#define PPPOED 317 -#define PPPOES 318 -#define ISO 319 -#define ESIS 320 -#define CLNP 321 -#define ISIS 322 -#define L1 323 -#define L2 324 -#define IIH 325 -#define LSP 326 -#define SNP 327 -#define CSNP 328 -#define PSNP 329 -#define STP 330 -#define IPX 331 -#define NETBEUI 332 -#define LANE 333 -#define LLC 334 -#define METAC 335 -#define BCC 336 -#define SC 337 -#define ILMIC 338 -#define OAMF4EC 339 -#define OAMF4SC 340 -#define OAM 341 -#define OAMF4 342 -#define CONNECTMSG 343 -#define METACONNECT 344 -#define VPI 345 -#define VCI 346 -#define RADIO 347 -#define SIO 348 -#define OPC 349 -#define DPC 350 -#define SLS 351 -#define OR 352 -#define AND 353 -#define UMINUS 354 -const short yylhs[] = { -1, - 0, 0, 24, 1, 1, 1, 1, 1, 20, 21, - 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 23, 22, 4, 4, 4, 7, 7, 5, - 5, 8, 8, 8, 8, 8, 8, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 9, 9, 10, - 10, 10, 10, 10, 10, 11, 11, 11, 11, 12, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 25, 25, 26, 26, 26, 26, 26, 26, 38, 38, - 37, 18, 18, 18, 19, 19, 19, 13, 13, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 15, 15, 15, 15, 15, 17, 17, 27, - 27, 27, 27, 27, 27, 27, 27, 28, 28, 28, - 28, 29, 29, 31, 31, 31, 31, 30, 32, 32, - 33, 33, 33, 33, 35, 35, 35, 35, 34, 36, - 36, -}; -const short yylen[] = { 2, - 2, 1, 0, 1, 3, 3, 3, 3, 1, 1, - 1, 1, 3, 1, 3, 3, 1, 3, 1, 1, - 1, 2, 1, 1, 1, 3, 3, 1, 1, 1, - 2, 3, 2, 2, 2, 2, 2, 2, 3, 1, - 3, 3, 1, 1, 1, 2, 2, 1, 0, 1, - 1, 3, 3, 3, 3, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, - 2, 2, 4, 1, 1, 2, 1, 2, 1, 1, - 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, - 6, 3, 3, 3, 3, 3, 3, 3, 3, 2, - 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 2, 3, 1, 1, 3, - 1, 1, 1, 1, 1, 2, 2, 3, 1, 1, - 3, -}; -const short yydefred[] = { 3, - 0, 0, 0, 0, 0, 63, 64, 62, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 79, 78, 148, 104, 105, 0, 0, 0, 0, - 0, 0, 61, 142, 80, 81, 82, 83, 0, 0, - 110, 111, 84, 85, 94, 86, 87, 88, 89, 90, - 91, 93, 92, 95, 96, 97, 150, 151, 152, 153, - 156, 157, 154, 155, 158, 159, 160, 161, 162, 163, - 98, 171, 172, 173, 174, 23, 0, 24, 0, 4, - 30, 0, 0, 0, 129, 0, 128, 0, 0, 43, - 112, 44, 45, 0, 0, 101, 102, 0, 113, 114, - 115, 116, 119, 120, 117, 121, 118, 106, 0, 108, - 140, 0, 0, 10, 9, 0, 0, 14, 20, 0, - 0, 21, 38, 11, 12, 0, 0, 0, 0, 56, - 60, 57, 58, 59, 35, 36, 99, 100, 0, 34, - 37, 123, 125, 127, 0, 0, 0, 0, 0, 0, - 0, 0, 122, 124, 126, 0, 0, 0, 0, 0, - 0, 31, 168, 0, 0, 0, 164, 46, 179, 0, - 0, 0, 175, 47, 144, 143, 146, 147, 145, 0, - 0, 0, 6, 5, 0, 0, 0, 8, 7, 0, - 0, 0, 25, 0, 0, 0, 22, 0, 0, 0, - 0, 32, 0, 0, 0, 0, 0, 0, 134, 135, - 0, 0, 0, 39, 141, 149, 165, 166, 169, 0, - 176, 177, 180, 0, 103, 0, 16, 15, 18, 13, - 0, 0, 53, 55, 52, 54, 130, 0, 167, 0, - 178, 0, 26, 27, 0, 170, 181, 131, -}; -const short yydgoto[] = { 1, - 159, 197, 124, 194, 80, 81, 195, 82, 83, 139, - 140, 141, 84, 85, 180, 112, 87, 156, 157, 116, - 117, 113, 127, 2, 90, 91, 92, 93, 94, 167, - 168, 220, 95, 173, 174, 224, 107, 105, -}; -const short yysindex[] = { 0, - 0, 284, -288, -277, -271, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -282, -265, -258, -249, - -273, -252, 0, 0, 0, 0, 0, 0, -40, -40, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 366, 0, -294, 0, - 0, 43, -19, 119, 0, -31, 0, 284, 284, 0, - 0, 0, 0, 40, 677, 0, 0, 54, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -40, 0, - 0, -31, 366, 0, 0, 178, 178, 0, 0, -37, - 38, 0, 0, 0, 0, 43, 43, -235, -216, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -91, 0, - 0, 0, 0, 0, 366, 366, 366, 366, 366, 366, - 366, 366, 0, 0, 0, 366, 366, 366, -38, 12, - 62, 0, 0, -185, -183, -181, 0, 0, 0, -169, - -166, -157, 0, 0, 0, 0, 0, 0, 0, -141, - 62, 673, 0, 0, 0, 178, 178, 0, 0, -153, - -134, -125, 0, 128, -294, 62, 0, -87, -82, -80, - -73, 0, 140, 140, -20, -14, -7, -7, 0, 0, - 673, 673, 158, 0, 0, 0, 0, 0, 0, -36, - 0, 0, 0, -34, 0, 62, 0, 0, 0, 0, - 43, 43, 0, 0, 0, 0, 0, -102, 0, -181, - 0, -157, 0, 0, 96, 0, 0, 0, -}; -const short yyrindex[] = { 0, - 0, 141, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 6, 9, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 190, 0, - 0, 0, 0, 0, 0, 4, 0, 511, 511, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 511, 511, 0, 0, 14, - 16, 0, 0, 0, 0, 0, 0, 446, 499, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 134, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 621, - 661, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 511, 511, 0, 0, 0, - 0, 0, 0, -214, 0, -207, 0, 0, 0, 0, - 0, 0, 26, 82, 93, 70, 11, 36, 0, 0, - 24, 34, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 236, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -}; -const short yygindex[] = { 0, - 189, -4, -118, 0, 10, 0, 0, 0, 0, 0, - 56, 0, 710, -76, 0, 104, 727, 53, 64, 3, - -129, 725, 120, 0, 0, 0, 0, 0, 0, -151, - 0, 0, 0, -152, 0, 0, 0, 0, -}; -#define YYTABLESIZE 982 -const short yytable[] = { 78, - 12, 96, 214, 40, 239, 107, 241, 193, 109, 191, - 132, 160, 97, 17, 219, 19, 103, 148, 98, 223, - 99, 151, 149, 41, 150, 138, 152, 151, 149, 104, - 150, 101, 152, 42, 151, 133, 160, 100, 128, 152, - 102, 12, 128, 128, 40, 128, 107, 128, 132, 109, - 106, 132, 215, 132, 17, 132, 19, 114, 115, 158, - 128, 128, 128, 138, 41, 232, 138, 193, 132, 136, - 132, 132, 132, 133, 42, 76, 133, 123, 133, 78, - 133, 139, 78, 138, 192, 138, 138, 138, 246, 247, - 240, 176, 137, 133, 242, 133, 133, 133, 162, 155, - 154, 153, 216, 132, 217, 86, 218, 136, 163, 160, - 136, 183, 188, 179, 178, 177, 198, 199, 138, 139, - 221, 89, 139, 222, 128, 184, 189, 136, 133, 136, - 136, 136, 169, 137, 132, 200, 201, 29, 29, 139, - 2, 139, 139, 139, 28, 28, 164, 170, 225, 138, - 137, 227, 137, 137, 137, 228, 148, 165, 171, 133, - 151, 149, 136, 150, 229, 152, 33, 130, 230, 132, - 233, 133, 134, 33, 139, 234, 235, 175, 155, 154, - 153, 151, 149, 236, 150, 137, 152, 245, 248, 1, - 79, 86, 86, 136, 202, 148, 162, 231, 0, 151, - 149, 0, 150, 0, 152, 139, 0, 89, 89, 0, - 76, 0, 0, 0, 0, 238, 137, 78, 0, 86, - 86, 0, 77, 0, 190, 0, 243, 244, 0, 0, - 0, 0, 0, 0, 0, 187, 187, 128, 129, 130, - 131, 132, 147, 133, 134, 0, 0, 135, 136, 24, - 237, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 48, 48, 48, 48, 48, 0, 48, 48, 137, 138, - 48, 48, 0, 128, 0, 0, 0, 128, 128, 0, - 128, 147, 128, 0, 0, 0, 0, 145, 146, 86, - 86, 48, 48, 145, 146, 128, 128, 128, 0, 0, - 128, 128, 128, 0, 0, 187, 187, 0, 128, 128, - 132, 132, 132, 114, 115, 114, 76, 114, 132, 132, - 0, 0, 0, 78, 0, 138, 138, 138, 77, 163, - 0, 0, 24, 138, 138, 133, 133, 133, 0, 142, - 143, 144, 0, 133, 133, 118, 119, 120, 121, 122, - 0, 0, 12, 12, 0, 40, 40, 107, 107, 128, - 109, 109, 132, 132, 0, 17, 17, 19, 19, 136, - 136, 136, 0, 0, 0, 41, 41, 138, 138, 0, - 0, 139, 139, 139, 0, 42, 42, 133, 133, 139, - 139, 0, 137, 137, 137, 0, 0, 49, 49, 49, - 49, 49, 0, 49, 49, 78, 0, 49, 49, 0, - 77, 0, 0, 0, 0, 0, 0, 0, 142, 143, - 144, 136, 136, 33, 0, 0, 145, 146, 49, 49, - 0, 0, 0, 139, 139, 0, 33, 33, 33, 33, - 33, 0, 3, 4, 137, 137, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 145, 146, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 0, 51, 0, - 118, 119, 120, 121, 122, 51, 0, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 0, - 0, 50, 0, 0, 0, 128, 128, 128, 50, 0, - 0, 0, 0, 128, 128, 0, 0, 0, 3, 4, - 0, 0, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 0, 0, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 0, 0, 0, 0, 28, 28, 0, - 0, 0, 0, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 0, 0, 24, 0, 0, 129, 0, - 0, 0, 129, 129, 33, 129, 0, 129, 0, 0, - 0, 0, 0, 0, 0, 34, 35, 36, 37, 38, - 129, 129, 129, 0, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 128, 0, - 0, 0, 128, 128, 51, 128, 51, 128, 51, 51, - 148, 0, 71, 0, 151, 149, 78, 150, 0, 152, - 128, 128, 128, 0, 0, 0, 88, 0, 0, 0, - 0, 0, 0, 0, 0, 51, 155, 154, 153, 0, - 0, 0, 0, 0, 129, 0, 0, 0, 51, 51, - 51, 51, 51, 0, 0, 0, 0, 50, 0, 50, - 0, 50, 50, 109, 109, 108, 110, 49, 49, 49, - 49, 49, 0, 49, 49, 0, 0, 49, 49, 0, - 0, 0, 0, 0, 128, 0, 111, 0, 50, 0, - 0, 0, 0, 0, 0, 0, 147, 0, 49, 49, - 0, 50, 50, 50, 50, 50, 126, 0, 125, 0, - 0, 0, 88, 88, 161, 0, 0, 0, 166, 172, - 0, 0, 182, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 109, 0, 181, 0, 0, 0, 161, - 186, 186, 185, 185, 0, 0, 0, 0, 0, 0, - 109, 126, 196, 125, 203, 204, 205, 206, 207, 208, - 209, 210, 0, 0, 0, 211, 212, 213, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 88, 186, 226, 185, 0, 0, 0, 0, 0, 0, - 129, 129, 129, 0, 0, 0, 0, 0, 129, 129, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 126, 126, 125, 125, 0, - 128, 128, 128, 0, 0, 0, 169, 0, 128, 128, - 0, 0, 0, 0, 0, 0, 142, 143, 144, 0, - 145, 146, -}; -const short yycheck[] = { 40, - 0, 290, 41, 0, 41, 0, 41, 126, 0, 47, - 0, 88, 290, 0, 166, 0, 290, 38, 290, 172, - 303, 42, 43, 0, 45, 0, 47, 42, 43, 303, - 45, 290, 47, 0, 42, 0, 113, 303, 38, 47, - 290, 41, 42, 43, 41, 45, 41, 47, 38, 41, - 303, 41, 41, 43, 41, 45, 41, 352, 353, 91, - 60, 61, 62, 38, 41, 195, 41, 186, 58, 0, - 60, 61, 62, 38, 41, 33, 41, 82, 43, 40, - 45, 0, 40, 58, 47, 60, 61, 62, 240, 242, - 220, 38, 0, 58, 224, 60, 61, 62, 89, 60, - 61, 62, 41, 93, 290, 2, 290, 38, 290, 186, - 41, 116, 117, 60, 61, 62, 352, 353, 93, 38, - 290, 2, 41, 290, 124, 116, 117, 58, 93, 60, - 61, 62, 290, 41, 124, 352, 353, 352, 353, 58, - 0, 60, 61, 62, 352, 353, 94, 95, 290, 124, - 58, 305, 60, 61, 62, 290, 38, 94, 95, 124, - 42, 43, 93, 45, 290, 47, 33, 259, 41, 261, - 258, 263, 264, 40, 93, 258, 257, 124, 60, 61, - 62, 42, 43, 257, 45, 93, 47, 290, 93, 0, - 2, 88, 89, 124, 139, 38, 187, 195, -1, 42, - 43, -1, 45, -1, 47, 124, -1, 88, 89, -1, - 33, -1, -1, -1, -1, 58, 124, 40, -1, 116, - 117, -1, 45, -1, 262, -1, 231, 232, -1, -1, - -1, -1, -1, -1, -1, 116, 117, 257, 258, 259, - 260, 261, 124, 263, 264, -1, -1, 267, 268, 290, - 93, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 257, 258, 259, 260, 261, -1, 263, 264, 288, 289, - 267, 268, -1, 38, -1, -1, -1, 42, 43, -1, - 45, 124, 47, -1, -1, -1, -1, 308, 309, 186, - 187, 288, 289, 308, 309, 60, 61, 62, -1, -1, - 300, 301, 302, -1, -1, 186, 187, -1, 308, 309, - 300, 301, 302, 352, 353, 352, 33, 352, 308, 309, - -1, -1, -1, 40, -1, 300, 301, 302, 45, 290, - -1, -1, 290, 308, 309, 300, 301, 302, -1, 300, - 301, 302, -1, 308, 309, 303, 304, 305, 306, 307, - -1, -1, 352, 353, -1, 352, 353, 352, 353, 124, - 352, 353, 352, 353, -1, 352, 353, 352, 353, 300, - 301, 302, -1, -1, -1, 352, 353, 352, 353, -1, - -1, 300, 301, 302, -1, 352, 353, 352, 353, 308, - 309, -1, 300, 301, 302, -1, -1, 257, 258, 259, - 260, 261, -1, 263, 264, 40, -1, 267, 268, -1, - 45, -1, -1, -1, -1, -1, -1, -1, 300, 301, - 302, 352, 353, 290, -1, -1, 308, 309, 288, 289, - -1, -1, -1, 352, 353, -1, 303, 304, 305, 306, - 307, -1, 265, 266, 352, 353, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 308, 309, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, -1, 33, -1, - 303, 304, 305, 306, 307, 40, -1, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 351, -1, - -1, 33, -1, -1, -1, 300, 301, 302, 40, -1, - -1, -1, -1, 308, 309, -1, -1, -1, 265, 266, - -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, -1, -1, -1, -1, 352, 353, -1, - -1, -1, -1, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, 348, 349, 350, 351, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, -1, -1, 290, -1, -1, 38, -1, - -1, -1, 42, 43, 299, 45, -1, 47, -1, -1, - -1, -1, -1, -1, -1, 310, 311, 312, 313, 314, - 60, 61, 62, -1, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, 332, 38, -1, - -1, -1, 42, 43, 259, 45, 261, 47, 263, 264, - 38, -1, 347, -1, 42, 43, 40, 45, -1, 47, - 60, 61, 62, -1, -1, -1, 2, -1, -1, -1, - -1, -1, -1, -1, -1, 290, 60, 61, 62, -1, - -1, -1, -1, -1, 124, -1, -1, -1, 303, 304, - 305, 306, 307, -1, -1, -1, -1, 259, -1, 261, - -1, 263, 264, 39, 40, 39, 40, 257, 258, 259, - 260, 261, -1, 263, 264, -1, -1, 267, 268, -1, - -1, -1, -1, -1, 124, -1, 77, -1, 290, -1, - -1, -1, -1, -1, -1, -1, 124, -1, 288, 289, - -1, 303, 304, 305, 306, 307, 82, -1, 82, -1, - -1, -1, 88, 89, 88, -1, -1, -1, 94, 95, - -1, -1, 113, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 109, -1, 109, -1, -1, -1, 113, - 116, 117, 116, 117, -1, -1, -1, -1, -1, -1, - 126, 127, 126, 127, 145, 146, 147, 148, 149, 150, - 151, 152, -1, -1, -1, 156, 157, 158, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 186, 187, 186, 187, -1, -1, -1, -1, -1, -1, - 300, 301, 302, -1, -1, -1, -1, -1, 308, 309, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 231, 232, 231, 232, -1, - 300, 301, 302, -1, -1, -1, 290, -1, 308, 309, - -1, -1, -1, -1, -1, -1, 300, 301, 302, -1, - 308, 309, -}; -#define YYFINAL 1 -#ifndef YYDEBUG -#define YYDEBUG 0 +} +/* Line 187 of yacc.c. */ +#line 415 "y.tab.c" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 #endif -#define YYMAXTOKEN 354 -#if YYDEBUG -const char * const yyname[] = { -"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -"'!'",0,0,0,0,"'&'",0,"'('","')'","'*'","'+'",0,"'-'",0,"'/'",0,0,0,0,0,0,0,0,0, -0,"':'",0,"'<'","'='","'>'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,"'['",0,"']'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -"'|'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"DST","SRC","HOST","GATEWAY","NET","NETMASK", -"PORT","PORTRANGE","LESS","GREATER","PROTO","PROTOCHAIN","CBYTE","ARP","RARP", -"IP","SCTP","TCP","UDP","ICMP","IGMP","IGRP","PIM","VRRP","ATALK","AARP", -"DECNET","LAT","SCA","MOPRC","MOPDL","TK_BROADCAST","TK_MULTICAST","NUM", -"INBOUND","OUTBOUND","PF_IFNAME","PF_RSET","PF_RNR","PF_SRNR","PF_REASON", -"PF_ACTION","LINK","GEQ","LEQ","NEQ","ID","EID","HID","HID6","AID","LSH","RSH", -"LEN","IPV6","ICMPV6","AH","ESP","VLAN","MPLS","PPPOED","PPPOES","ISO","ESIS", -"CLNP","ISIS","L1","L2","IIH","LSP","SNP","CSNP","PSNP","STP","IPX","NETBEUI", -"LANE","LLC","METAC","BCC","SC","ILMIC","OAMF4EC","OAMF4SC","OAM","OAMF4", -"CONNECTMSG","METACONNECT","VPI","VCI","RADIO","SIO","OPC","DPC","SLS","OR", -"AND","UMINUS", -}; -const char * const yyrule[] = { -"$accept : prog", -"prog : null expr", -"prog : null", -"null :", -"expr : term", -"expr : expr and term", -"expr : expr and id", -"expr : expr or term", -"expr : expr or id", -"and : AND", -"or : OR", -"id : nid", -"id : pnum", -"id : paren pid ')'", -"nid : ID", -"nid : HID '/' NUM", -"nid : HID NETMASK HID", -"nid : HID", -"nid : HID6 '/' NUM", -"nid : HID6", -"nid : EID", -"nid : AID", -"nid : not id", -"not : '!'", -"paren : '('", -"pid : nid", -"pid : qid and id", -"pid : qid or id", -"qid : pnum", -"qid : pid", -"term : rterm", -"term : not term", -"head : pqual dqual aqual", -"head : pqual dqual", -"head : pqual aqual", -"head : pqual PROTO", -"head : pqual PROTOCHAIN", -"head : pqual ndaqual", -"rterm : head id", -"rterm : paren expr ')'", -"rterm : pname", -"rterm : arth relop arth", -"rterm : arth irelop arth", -"rterm : other", -"rterm : atmtype", -"rterm : atmmultitype", -"rterm : atmfield atmvalue", -"rterm : mtp3field mtp3value", -"pqual : pname", -"pqual :", -"dqual : SRC", -"dqual : DST", -"dqual : SRC OR DST", -"dqual : DST OR SRC", -"dqual : SRC AND DST", -"dqual : DST AND SRC", -"aqual : HOST", -"aqual : NET", -"aqual : PORT", -"aqual : PORTRANGE", -"ndaqual : GATEWAY", -"pname : LINK", -"pname : IP", -"pname : ARP", -"pname : RARP", -"pname : SCTP", -"pname : TCP", -"pname : UDP", -"pname : ICMP", -"pname : IGMP", -"pname : IGRP", -"pname : PIM", -"pname : VRRP", -"pname : ATALK", -"pname : AARP", -"pname : DECNET", -"pname : LAT", -"pname : SCA", -"pname : MOPDL", -"pname : MOPRC", -"pname : IPV6", -"pname : ICMPV6", -"pname : AH", -"pname : ESP", -"pname : ISO", -"pname : ESIS", -"pname : ISIS", -"pname : L1", -"pname : L2", -"pname : IIH", -"pname : LSP", -"pname : SNP", -"pname : PSNP", -"pname : CSNP", -"pname : CLNP", -"pname : STP", -"pname : IPX", -"pname : NETBEUI", -"pname : RADIO", -"other : pqual TK_BROADCAST", -"other : pqual TK_MULTICAST", -"other : LESS NUM", -"other : GREATER NUM", -"other : CBYTE NUM byteop NUM", -"other : INBOUND", -"other : OUTBOUND", -"other : VLAN pnum", -"other : VLAN", -"other : MPLS pnum", -"other : MPLS", -"other : PPPOED", -"other : PPPOES", -"other : pfvar", -"pfvar : PF_IFNAME ID", -"pfvar : PF_RSET ID", -"pfvar : PF_RNR NUM", -"pfvar : PF_SRNR NUM", -"pfvar : PF_REASON reason", -"pfvar : PF_ACTION action", -"reason : NUM", -"reason : ID", -"action : ID", -"relop : '>'", -"relop : GEQ", -"relop : '='", -"irelop : LEQ", -"irelop : '<'", -"irelop : NEQ", -"arth : pnum", -"arth : narth", -"narth : pname '[' arth ']'", -"narth : pname '[' arth ':' NUM ']'", -"narth : arth '+' arth", -"narth : arth '-' arth", -"narth : arth '*' arth", -"narth : arth '/' arth", -"narth : arth '&' arth", -"narth : arth '|' arth", -"narth : arth LSH arth", -"narth : arth RSH arth", -"narth : '-' arth", -"narth : paren narth ')'", -"narth : LEN", -"byteop : '&'", -"byteop : '|'", -"byteop : '<'", -"byteop : '>'", -"byteop : '='", -"pnum : NUM", -"pnum : paren pnum ')'", -"atmtype : LANE", -"atmtype : LLC", -"atmtype : METAC", -"atmtype : BCC", -"atmtype : OAMF4EC", -"atmtype : OAMF4SC", -"atmtype : SC", -"atmtype : ILMIC", -"atmmultitype : OAM", -"atmmultitype : OAMF4", -"atmmultitype : CONNECTMSG", -"atmmultitype : METACONNECT", -"atmfield : VPI", -"atmfield : VCI", -"atmvalue : atmfieldvalue", -"atmvalue : relop NUM", -"atmvalue : irelop NUM", -"atmvalue : paren atmlistvalue ')'", -"atmfieldvalue : NUM", -"atmlistvalue : atmfieldvalue", -"atmlistvalue : atmlistvalue or atmfieldvalue", -"mtp3field : SIO", -"mtp3field : OPC", -"mtp3field : DPC", -"mtp3field : SLS", -"mtp3value : mtp3fieldvalue", -"mtp3value : relop NUM", -"mtp3value : irelop NUM", -"mtp3value : paren mtp3listvalue ')'", -"mtp3fieldvalue : NUM", -"mtp3listvalue : mtp3fieldvalue", -"mtp3listvalue : mtp3listvalue or mtp3fieldvalue", -}; + + + +/* Copy the second part of user declarations. */ + + +/* Line 216 of yacc.c. */ +#line 428 "y.tab.c" + +#ifdef short +# undef short #endif -#if YYDEBUG -#include -#endif -#ifdef YYSTACKSIZE -#undef YYMAXDEPTH -#define YYMAXDEPTH YYSTACKSIZE + +#ifdef YYTYPE_UINT8 +typedef YYTYPE_UINT8 yytype_uint8; #else -#ifdef YYMAXDEPTH -#define YYSTACKSIZE YYMAXDEPTH +typedef unsigned char yytype_uint8; +#endif + +#ifdef YYTYPE_INT8 +typedef YYTYPE_INT8 yytype_int8; +#elif (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +typedef signed char yytype_int8; #else -#define YYSTACKSIZE 10000 -#define YYMAXDEPTH 10000 +typedef short int yytype_int8; #endif + +#ifdef YYTYPE_UINT16 +typedef YYTYPE_UINT16 yytype_uint16; +#else +typedef unsigned short int yytype_uint16; #endif -#define YYINITSTACKSIZE 200 + +#ifdef YYTYPE_INT16 +typedef YYTYPE_INT16 yytype_int16; +#else +typedef short int yytype_int16; +#endif + +#ifndef YYSIZE_T +# ifdef __SIZE_TYPE__ +# define YYSIZE_T __SIZE_TYPE__ +# elif defined size_t +# define YYSIZE_T size_t +# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# else +# define YYSIZE_T unsigned int +# endif +#endif + +#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) + +#ifndef YY_ +# if YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_(msgid) dgettext ("bison-runtime", msgid) +# endif +# endif +# ifndef YY_ +# define YY_(msgid) msgid +# endif +#endif + +/* Suppress unused-variable warnings by "using" E. */ +#if ! defined lint || defined __GNUC__ +# define YYUSE(e) ((void) (e)) +#else +# define YYUSE(e) /* empty */ +#endif + +/* Identity function, used to suppress warnings about constant conditions. */ +#ifndef lint +# define YYID(n) (n) +#else +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static int +YYID (int i) +#else +static int +YYID (i) + int i; +#endif +{ + return i; +} +#endif + +#if ! defined yyoverflow || YYERROR_VERBOSE + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# elif defined __BUILTIN_VA_ARG_INCR +# include /* INFRINGES ON USER NAME SPACE */ +# elif defined _AIX +# define YYSTACK_ALLOC __alloca +# elif defined _MSC_VER +# include /* INFRINGES ON USER NAME SPACE */ +# define alloca _alloca +# else +# define YYSTACK_ALLOC alloca +# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) +# ifndef YYSTACK_ALLOC_MAXIMUM + /* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ +# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ +# endif +# else +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# ifndef YYSTACK_ALLOC_MAXIMUM +# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM +# endif +# if (defined __cplusplus && ! defined _STDLIB_H \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void free (void *); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# endif +#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ + + +#if (! defined yyoverflow \ + && (! defined __cplusplus \ + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + yytype_int16 yyss; + YYSTYPE yyvs; + }; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (YYID (0)) +# endif +# endif + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack, Stack, yysize); \ + Stack = &yyptr->Stack; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (YYID (0)) + +#endif + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 3 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 605 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 119 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 41 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 186 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 254 + +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 358 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +static const yytype_uint8 yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 103, 2, 2, 2, 2, 105, 2, + 112, 111, 108, 106, 2, 107, 2, 109, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 118, 2, + 115, 114, 113, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 116, 2, 117, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 104, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 110 +}; + +#if YYDEBUG +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const yytype_uint16 yyprhs[] = +{ + 0, 0, 3, 6, 8, 9, 11, 15, 19, 23, + 27, 29, 31, 33, 35, 39, 41, 45, 49, 51, + 55, 57, 59, 61, 64, 66, 68, 70, 74, 78, + 80, 82, 84, 87, 91, 94, 97, 100, 103, 106, + 109, 113, 115, 119, 123, 125, 127, 129, 132, 134, + 137, 139, 140, 142, 144, 148, 152, 156, 160, 162, + 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, + 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, + 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, + 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, + 244, 246, 249, 252, 255, 258, 263, 265, 267, 270, + 272, 275, 277, 279, 281, 283, 286, 289, 292, 295, + 298, 301, 303, 305, 307, 309, 311, 313, 315, 317, + 319, 321, 323, 328, 335, 339, 343, 347, 351, 355, + 359, 363, 367, 370, 374, 376, 378, 380, 382, 384, + 386, 388, 392, 394, 396, 398, 400, 402, 404, 406, + 408, 410, 412, 414, 416, 418, 420, 422, 425, 428, + 432, 434, 436, 440, 442, 444, 446, 448, 450, 452, + 454, 456, 459, 462, 466, 468, 470 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const yytype_int16 yyrhs[] = +{ + 120, 0, -1, 121, 122, -1, 121, -1, -1, 131, + -1, 122, 123, 131, -1, 122, 123, 125, -1, 122, + 124, 131, -1, 122, 124, 125, -1, 101, -1, 102, + -1, 126, -1, 148, -1, 128, 129, 111, -1, 49, + -1, 51, 109, 36, -1, 51, 8, 51, -1, 51, + -1, 52, 109, 36, -1, 52, -1, 50, -1, 53, + -1, 127, 125, -1, 103, -1, 112, -1, 126, -1, + 130, 123, 125, -1, 130, 124, 125, -1, 148, -1, + 129, -1, 133, -1, 127, 131, -1, 134, 135, 136, + -1, 134, 135, -1, 134, 136, -1, 134, 13, -1, + 134, 14, -1, 134, 137, -1, 132, 125, -1, 128, + 122, 111, -1, 138, -1, 145, 143, 145, -1, 145, + 144, 145, -1, 139, -1, 149, -1, 150, -1, 151, + 152, -1, 155, -1, 156, 157, -1, 138, -1, -1, + 4, -1, 3, -1, 4, 102, 3, -1, 3, 102, + 4, -1, 4, 101, 3, -1, 3, 101, 4, -1, + 5, -1, 7, -1, 9, -1, 10, -1, 6, -1, + 45, -1, 18, -1, 16, -1, 17, -1, 19, -1, + 20, -1, 21, -1, 22, -1, 23, -1, 24, -1, + 25, -1, 26, -1, 27, -1, 28, -1, 29, -1, + 30, -1, 31, -1, 33, -1, 32, -1, 57, -1, + 58, -1, 59, -1, 60, -1, 65, -1, 66, -1, + 68, -1, 69, -1, 70, -1, 71, -1, 72, -1, + 73, -1, 75, -1, 74, -1, 67, -1, 76, -1, + 77, -1, 78, -1, 93, -1, 134, 34, -1, 134, + 35, -1, 11, 36, -1, 12, 36, -1, 15, 36, + 147, 36, -1, 37, -1, 38, -1, 61, 148, -1, + 61, -1, 62, 148, -1, 62, -1, 63, -1, 64, + -1, 140, -1, 39, 49, -1, 40, 49, -1, 41, + 36, -1, 42, 36, -1, 43, 141, -1, 44, 142, + -1, 36, -1, 49, -1, 49, -1, 113, -1, 46, + -1, 114, -1, 47, -1, 115, -1, 48, -1, 148, + -1, 146, -1, 138, 116, 145, 117, -1, 138, 116, + 145, 118, 36, 117, -1, 145, 106, 145, -1, 145, + 107, 145, -1, 145, 108, 145, -1, 145, 109, 145, + -1, 145, 105, 145, -1, 145, 104, 145, -1, 145, + 54, 145, -1, 145, 55, 145, -1, 107, 145, -1, + 128, 146, 111, -1, 56, -1, 105, -1, 104, -1, + 115, -1, 113, -1, 114, -1, 36, -1, 128, 148, + 111, -1, 79, -1, 80, -1, 81, -1, 82, -1, + 85, -1, 86, -1, 83, -1, 84, -1, 87, -1, + 88, -1, 89, -1, 90, -1, 91, -1, 92, -1, + 153, -1, 143, 36, -1, 144, 36, -1, 128, 154, + 111, -1, 36, -1, 153, -1, 154, 124, 153, -1, + 94, -1, 95, -1, 96, -1, 97, -1, 98, -1, + 99, -1, 100, -1, 158, -1, 143, 36, -1, 144, + 36, -1, 128, 159, 111, -1, 36, -1, 158, -1, + 159, 124, 158, -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const yytype_uint16 yyrline[] = +{ + 0, 162, 162, 166, 168, 170, 171, 172, 173, 174, + 176, 178, 180, 181, 183, 185, 186, 188, 190, 195, + 204, 213, 222, 231, 233, 235, 237, 238, 239, 241, + 243, 245, 246, 248, 249, 250, 251, 252, 253, 255, + 256, 257, 258, 260, 262, 263, 264, 265, 266, 267, + 270, 271, 274, 275, 276, 277, 278, 279, 282, 283, + 284, 285, 288, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 327, 329, 330, 331, 332, 333, 334, 335, 336, 337, + 338, 339, 340, 341, 342, 345, 346, 347, 348, 349, + 350, 353, 354, 367, 378, 379, 380, 382, 383, 384, + 386, 387, 389, 390, 391, 392, 393, 394, 395, 396, + 397, 398, 399, 400, 401, 403, 404, 405, 406, 407, + 409, 410, 412, 413, 414, 415, 416, 417, 418, 419, + 421, 422, 423, 424, 427, 428, 430, 431, 432, 433, + 435, 442, 443, 446, 447, 448, 451, 452, 453, 454, + 456, 457, 458, 459, 461, 470, 471 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "$end", "error", "$undefined", "DST", "SRC", "HOST", "GATEWAY", "NET", + "NETMASK", "PORT", "PORTRANGE", "LESS", "GREATER", "PROTO", "PROTOCHAIN", + "CBYTE", "ARP", "RARP", "IP", "SCTP", "TCP", "UDP", "ICMP", "IGMP", + "IGRP", "PIM", "VRRP", "ATALK", "AARP", "DECNET", "LAT", "SCA", "MOPRC", + "MOPDL", "TK_BROADCAST", "TK_MULTICAST", "NUM", "INBOUND", "OUTBOUND", + "PF_IFNAME", "PF_RSET", "PF_RNR", "PF_SRNR", "PF_REASON", "PF_ACTION", + "LINK", "GEQ", "LEQ", "NEQ", "ID", "EID", "HID", "HID6", "AID", "LSH", + "RSH", "LEN", "IPV6", "ICMPV6", "AH", "ESP", "VLAN", "MPLS", "PPPOED", + "PPPOES", "ISO", "ESIS", "CLNP", "ISIS", "L1", "L2", "IIH", "LSP", "SNP", + "CSNP", "PSNP", "STP", "IPX", "NETBEUI", "LANE", "LLC", "METAC", "BCC", + "SC", "ILMIC", "OAMF4EC", "OAMF4SC", "OAM", "OAMF4", "CONNECTMSG", + "METACONNECT", "VPI", "VCI", "RADIO", "FISU", "LSSU", "MSU", "SIO", + "OPC", "DPC", "SLS", "AND", "OR", "'!'", "'|'", "'&'", "'+'", "'-'", + "'*'", "'/'", "UMINUS", "')'", "'('", "'>'", "'='", "'<'", "'['", "']'", + "':'", "$accept", "prog", "null", "expr", "and", "or", "id", "nid", + "not", "paren", "pid", "qid", "term", "head", "rterm", "pqual", "dqual", + "aqual", "ndaqual", "pname", "other", "pfvar", "reason", "action", + "relop", "irelop", "arth", "narth", "byteop", "pnum", "atmtype", + "atmmultitype", "atmfield", "atmvalue", "atmfieldvalue", "atmlistvalue", + "mtp2type", "mtp3field", "mtp3value", "mtp3fieldvalue", "mtp3listvalue", 0 +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ +static const yytype_uint16 yytoknum[] = +{ + 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 33, 124, 38, 43, 45, 42, 47, + 358, 41, 40, 62, 61, 60, 91, 93, 58 +}; +# endif + +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint8 yyr1[] = +{ + 0, 119, 120, 120, 121, 122, 122, 122, 122, 122, + 123, 124, 125, 125, 125, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 127, 128, 129, 129, 129, 130, + 130, 131, 131, 132, 132, 132, 132, 132, 132, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 134, 134, 135, 135, 135, 135, 135, 135, 136, 136, + 136, 136, 137, 138, 138, 138, 138, 138, 138, 138, + 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, + 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, + 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, + 138, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 140, 140, 140, 140, 140, + 140, 141, 141, 142, 143, 143, 143, 144, 144, 144, + 145, 145, 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 146, 146, 147, 147, 147, 147, 147, + 148, 148, 149, 149, 149, 149, 149, 149, 149, 149, + 150, 150, 150, 150, 151, 151, 152, 152, 152, 152, + 153, 154, 154, 155, 155, 155, 156, 156, 156, 156, + 157, 157, 157, 157, 158, 159, 159 +}; + +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = +{ + 0, 2, 2, 1, 0, 1, 3, 3, 3, 3, + 1, 1, 1, 1, 3, 1, 3, 3, 1, 3, + 1, 1, 1, 2, 1, 1, 1, 3, 3, 1, + 1, 1, 2, 3, 2, 2, 2, 2, 2, 2, + 3, 1, 3, 3, 1, 1, 1, 2, 1, 2, + 1, 0, 1, 1, 3, 3, 3, 3, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 2, 2, 2, 4, 1, 1, 2, 1, + 2, 1, 1, 1, 1, 2, 2, 2, 2, 2, + 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 4, 6, 3, 3, 3, 3, 3, 3, + 3, 3, 2, 3, 1, 1, 1, 1, 1, 1, + 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, + 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 2, 3, 1, 1, 3 +}; + +/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state + STATE-NUM when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ +static const yytype_uint8 yydefact[] = +{ + 4, 0, 51, 1, 0, 0, 0, 65, 66, 64, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 81, 80, 150, 106, 107, 0, 0, + 0, 0, 0, 0, 63, 144, 82, 83, 84, 85, + 109, 111, 112, 113, 86, 87, 96, 88, 89, 90, + 91, 92, 93, 95, 94, 97, 98, 99, 152, 153, + 154, 155, 158, 159, 156, 157, 160, 161, 162, 163, + 164, 165, 100, 173, 174, 175, 176, 177, 178, 179, + 24, 0, 25, 2, 51, 51, 5, 0, 31, 0, + 50, 44, 114, 0, 131, 130, 45, 46, 0, 48, + 0, 103, 104, 0, 115, 116, 117, 118, 121, 122, + 119, 123, 120, 0, 108, 110, 0, 0, 142, 10, + 11, 51, 51, 32, 0, 131, 130, 15, 21, 18, + 20, 22, 39, 12, 0, 0, 13, 53, 52, 58, + 62, 59, 60, 61, 36, 37, 101, 102, 34, 35, + 38, 0, 125, 127, 129, 0, 0, 0, 0, 0, + 0, 0, 0, 124, 126, 128, 0, 0, 170, 0, + 0, 0, 47, 166, 184, 0, 0, 0, 49, 180, + 146, 145, 148, 149, 147, 0, 0, 0, 7, 51, + 51, 6, 130, 9, 8, 40, 143, 151, 0, 0, + 0, 23, 26, 30, 0, 29, 0, 0, 0, 0, + 33, 0, 140, 141, 139, 138, 134, 135, 136, 137, + 42, 43, 171, 0, 167, 168, 185, 0, 181, 182, + 105, 130, 17, 16, 19, 14, 0, 0, 57, 55, + 56, 54, 132, 0, 169, 0, 183, 0, 27, 28, + 0, 172, 186, 133 +}; + +/* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int16 yydefgoto[] = +{ + -1, 1, 2, 124, 121, 122, 201, 133, 134, 116, + 203, 204, 86, 87, 88, 89, 148, 149, 150, 117, + 91, 92, 110, 112, 166, 167, 93, 94, 185, 95, + 96, 97, 98, 172, 173, 223, 99, 100, 178, 179, + 227 +}; + +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -181 +static const yytype_int16 yypact[] = +{ + -181, 19, 200, -181, -3, 1, 15, -181, -181, -181, + -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, + -181, -181, -181, -181, -181, -181, -181, -181, 13, 20, + 18, 44, -26, 35, -181, -181, -181, -181, -181, -181, + -19, -19, -181, -181, -181, -181, -181, -181, -181, -181, + -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, + -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, + -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, + -181, 493, -181, 41, 396, 396, -181, -24, -181, 155, + 2, -181, -181, 488, -181, -181, -181, -181, 9, -181, + 134, -181, -181, 62, -181, -181, -181, -181, -181, -181, + -181, -181, -181, -19, -181, -181, 493, -9, -181, -181, + -181, 298, 298, -181, -53, -14, -1, -181, -181, 0, + 3, -181, -181, -181, -24, -24, -181, 77, 82, -181, + -181, -181, -181, -181, -181, -181, -181, -181, 437, -181, + -181, 493, -181, -181, -181, 493, 493, 493, 493, 493, + 493, 493, 493, -181, -181, -181, 493, 493, -181, 78, + 81, 89, -181, -181, -181, 95, 108, 113, -181, -181, + -181, -181, -181, -181, -181, 120, -1, -34, -181, 298, + 298, -181, 4, -181, -181, -181, -181, -181, 112, 149, + 150, -181, -181, 80, 41, -1, 188, 189, 205, 206, + -181, -41, 65, 65, 98, 144, -93, -93, -181, -181, + -34, -34, -181, -80, -181, -181, -181, -58, -181, -181, + -181, 46, -181, -181, -181, -181, -24, -24, -181, -181, + -181, -181, -181, 174, -181, 78, -181, 95, -181, -181, + 96, -181, -181, -181 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int16 yypgoto[] = +{ + -181, -181, -181, 212, 50, -180, -86, -89, 5, -2, + -181, -181, -81, -181, -181, -181, -181, 107, -181, 7, + -181, -181, -181, -181, -66, -39, -21, -74, -181, -35, + -181, -181, -181, -181, -151, -181, -181, -181, -181, -145, + -181 +}; + +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If zero, do what YYDEFACT says. + If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -42 +static const yytype_int16 yytable[] = +{ + 85, 132, -41, 123, -13, 114, 115, 84, 198, 90, + 108, 125, 25, 155, 156, 161, 162, 25, 222, 3, + 155, 156, 120, 109, 237, 127, 128, 129, 130, 131, + 226, 244, 170, 101, 176, 188, 193, 102, 113, 113, + 191, 194, 125, 245, 120, 168, 202, 247, 119, 120, + 126, 103, 136, 246, 106, 152, 153, 154, 195, 171, + 118, 177, 104, 157, 158, 159, 160, 161, 162, 105, + 157, 158, 159, 160, 161, 162, 242, 243, 186, 80, + 107, 126, 85, 85, 111, 135, 192, 192, 82, 84, + 84, 90, 90, 82, 251, 187, 169, 196, 175, 136, + 205, 202, 252, -41, -41, -13, -13, 151, 123, 199, + 197, 113, 200, -41, 168, -13, 125, 224, 151, 190, + 190, 82, 163, 164, 165, 225, 189, 189, 90, 90, + 211, 174, 135, 113, 212, 213, 214, 215, 216, 217, + 218, 219, 119, 120, 228, 220, 221, -29, -29, 229, + 248, 249, 155, 156, 192, 231, 230, 197, 137, 138, + 139, 140, 141, 232, 142, 143, 180, 181, 144, 145, + 174, 159, 160, 161, 162, 182, 183, 184, 206, 207, + 152, 153, 154, 208, 209, 233, 234, 190, 85, 146, + 147, 235, 238, 239, 189, 189, 90, 90, 155, 156, + -3, 136, 136, 158, 159, 160, 161, 162, 240, 241, + 250, 4, 5, 253, 83, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 135, 135, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 82, 163, 164, 165, + 159, 160, 161, 162, 236, 210, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 0, 0, 80, 0, 0, 0, 81, 0, 4, + 5, 0, 82, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 0, 0, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 0, 0, 0, 127, 128, 129, + 130, 131, 0, 0, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 0, + 0, 80, 0, 0, 0, 81, 0, 4, 5, 0, + 82, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 0, 0, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 139, 0, 141, 0, 142, 143, 0, 0, + 0, 0, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 0, 0, 80, + 0, 0, 0, 81, 0, 0, 0, 0, 82, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 0, 0, 25, + 0, 0, 0, 0, 152, 153, 154, 0, 34, 0, + 0, 0, 155, 156, 0, 0, 0, 0, 0, 35, + 36, 37, 38, 39, 0, 0, 0, 0, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, + 0, 0, 157, 158, 159, 160, 161, 162, 0, 0, + 81, 163, 164, 165, 0, 82 +}; + +static const yytype_int16 yycheck[] = +{ + 2, 87, 0, 84, 0, 40, 41, 2, 8, 2, + 36, 85, 36, 54, 55, 108, 109, 36, 169, 0, + 54, 55, 102, 49, 204, 49, 50, 51, 52, 53, + 175, 111, 98, 36, 100, 121, 122, 36, 40, 41, + 121, 122, 116, 223, 102, 36, 135, 227, 101, 102, + 85, 36, 87, 111, 36, 46, 47, 48, 111, 98, + 81, 100, 49, 104, 105, 106, 107, 108, 109, 49, + 104, 105, 106, 107, 108, 109, 117, 118, 113, 103, + 36, 116, 84, 85, 49, 87, 121, 122, 112, 84, + 85, 84, 85, 112, 245, 116, 98, 111, 100, 134, + 135, 190, 247, 101, 102, 101, 102, 116, 189, 109, + 111, 113, 109, 111, 36, 111, 190, 36, 116, 121, + 122, 112, 113, 114, 115, 36, 121, 122, 121, 122, + 151, 36, 134, 135, 155, 156, 157, 158, 159, 160, + 161, 162, 101, 102, 36, 166, 167, 101, 102, 36, + 236, 237, 54, 55, 189, 190, 36, 111, 3, 4, + 5, 6, 7, 51, 9, 10, 104, 105, 13, 14, + 36, 106, 107, 108, 109, 113, 114, 115, 101, 102, + 46, 47, 48, 101, 102, 36, 36, 189, 190, 34, + 35, 111, 4, 4, 189, 190, 189, 190, 54, 55, + 0, 236, 237, 105, 106, 107, 108, 109, 3, 3, + 36, 11, 12, 117, 2, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 236, 237, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 112, 113, 114, 115, + 106, 107, 108, 109, 204, 148, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, -1, -1, 103, -1, -1, -1, 107, -1, 11, + 12, -1, 112, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, -1, -1, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, -1, -1, -1, 49, 50, 51, + 52, 53, -1, -1, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, -1, + -1, 103, -1, -1, -1, 107, -1, 11, 12, -1, + 112, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + -1, -1, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 5, -1, 7, -1, 9, 10, -1, -1, + -1, -1, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, -1, -1, 103, + -1, -1, -1, 107, -1, -1, -1, -1, 112, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, -1, -1, 36, + -1, -1, -1, -1, 46, 47, 48, -1, 45, -1, + -1, -1, 54, 55, -1, -1, -1, -1, -1, 56, + 57, 58, 59, 60, -1, -1, -1, -1, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 93, -1, -1, -1, + -1, -1, 104, 105, 106, 107, 108, 109, -1, -1, + 107, 113, 114, 115, -1, 112 +}; + +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint8 yystos[] = +{ + 0, 120, 121, 0, 11, 12, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 103, 107, 112, 122, 127, 128, 131, 132, 133, 134, + 138, 139, 140, 145, 146, 148, 149, 150, 151, 155, + 156, 36, 36, 36, 49, 49, 36, 36, 36, 49, + 141, 49, 142, 128, 148, 148, 128, 138, 145, 101, + 102, 123, 124, 131, 122, 146, 148, 49, 50, 51, + 52, 53, 125, 126, 127, 128, 148, 3, 4, 5, + 6, 7, 9, 10, 13, 14, 34, 35, 135, 136, + 137, 116, 46, 47, 48, 54, 55, 104, 105, 106, + 107, 108, 109, 113, 114, 115, 143, 144, 36, 128, + 143, 144, 152, 153, 36, 128, 143, 144, 157, 158, + 104, 105, 113, 114, 115, 147, 148, 145, 125, 127, + 128, 131, 148, 125, 131, 111, 111, 111, 8, 109, + 109, 125, 126, 129, 130, 148, 101, 102, 101, 102, + 136, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 153, 154, 36, 36, 158, 159, 36, 36, + 36, 148, 51, 36, 36, 111, 123, 124, 4, 4, + 3, 3, 117, 118, 111, 124, 111, 124, 125, 125, + 36, 153, 158, 117 +}; + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + + +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. */ + +#define YYFAIL goto yyerrlab + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY && yylen == 1) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + yytoken = YYTRANSLATE (yychar); \ + YYPOPSTACK (1); \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (YYID (0)) + + +#define YYTERROR 1 +#define YYERRCODE 256 + + +/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. + If N is 0, then set CURRENT to the empty location which ends + the previous symbol: RHS[0] (always defined). */ + +#define YYRHSLOC(Rhs, K) ((Rhs)[K]) +#ifndef YYLLOC_DEFAULT +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + do \ + if (YYID (N)) \ + { \ + (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ + (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ + (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ + (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ + } \ + else \ + { \ + (Current).first_line = (Current).last_line = \ + YYRHSLOC (Rhs, 0).last_line; \ + (Current).first_column = (Current).last_column = \ + YYRHSLOC (Rhs, 0).last_column; \ + } \ + while (YYID (0)) +#endif + + +/* YY_LOCATION_PRINT -- Print the location on the stream. + This macro was not mandated originally: define only if we know + we won't break user code: when these are the locations we know. */ + +#ifndef YY_LOCATION_PRINT +# if YYLTYPE_IS_TRIVIAL +# define YY_LOCATION_PRINT(File, Loc) \ + fprintf (File, "%d.%d-%d.%d", \ + (Loc).first_line, (Loc).first_column, \ + (Loc).last_line, (Loc).last_column) +# else +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# endif +#endif + + +/* YYLEX -- calling `yylex' with the right arguments. */ + +#ifdef YYLEX_PARAM +# define YYLEX yylex (YYLEX_PARAM) +#else +# define YYLEX yylex () +#endif + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (YYID (0)) + +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (YYID (0)) + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_value_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (!yyvaluep) + return; +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# else + YYUSE (yyoutput); +# endif + switch (yytype) + { + default: + break; + } +} + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + + yy_symbol_value_print (yyoutput, yytype, yyvaluep); + YYFPRINTF (yyoutput, ")"); +} + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) +#else +static void +yy_stack_print (bottom, top) + yytype_int16 *bottom; + yytype_int16 *top; +#endif +{ + YYFPRINTF (stderr, "Stack now"); + for (; bottom <= top; ++bottom) + YYFPRINTF (stderr, " %d", *bottom); + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (YYID (0)) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_reduce_print (YYSTYPE *yyvsp, int yyrule) +#else +static void +yy_reduce_print (yyvsp, yyrule) + YYSTYPE *yyvsp; + int yyrule; +#endif +{ + int yynrhs = yyr2[yyrule]; + int yyi; + unsigned long int yylno = yyrline[yyrule]; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + fprintf (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); + fprintf (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyvsp, Rule); \ +} while (YYID (0)) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ int yydebug; -int yynerrs; -int yyerrflag; -int yychar; -short *yyssp; -YYSTYPE *yyvsp; -YYSTYPE yyval; -YYSTYPE yylval; -short *yyss; -short *yysslim; -YYSTYPE *yyvs; -int yystacksize; -/* allocate initial stack or double stack size, up to YYMAXDEPTH */ -static int yygrowstack() -{ - int newsize, i; - short *newss; - YYSTYPE *newvs; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ - if ((newsize = yystacksize) == 0) - newsize = YYINITSTACKSIZE; - else if (newsize >= YYMAXDEPTH) - return -1; - else if ((newsize *= 2) > YYMAXDEPTH) - newsize = YYMAXDEPTH; - i = yyssp - yyss; - newss = yyss ? (short *)realloc(yyss, newsize * sizeof *newss) : - (short *)malloc(newsize * sizeof *newss); - if (newss == NULL) - return -1; - yyss = newss; - yyssp = newss + i; - newvs = yyvs ? (YYSTYPE *)realloc(yyvs, newsize * sizeof *newvs) : - (YYSTYPE *)malloc(newsize * sizeof *newvs); - if (newvs == NULL) - return -1; - yyvs = newvs; - yyvsp = newvs + i; - yystacksize = newsize; - yysslim = yyss + newsize - 1; + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + + + +#if YYERROR_VERBOSE + +# ifndef yystrlen +# if defined __GLIBC__ && defined _STRING_H +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static YYSIZE_T +yystrlen (const char *yystr) +#else +static YYSIZE_T +yystrlen (yystr) + const char *yystr; +#endif +{ + YYSIZE_T yylen; + for (yylen = 0; yystr[yylen]; yylen++) + continue; + return yylen; +} +# endif +# endif + +# ifndef yystpcpy +# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static char * +yystpcpy (char *yydest, const char *yysrc) +#else +static char * +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +#endif +{ + char *yyd = yydest; + const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +# endif + +# ifndef yytnamerr +/* Copy to YYRES the contents of YYSTR after stripping away unnecessary + quotes and backslashes, so that it's suitable for yyerror. The + heuristic is that double-quoting is unnecessary unless the string + contains an apostrophe, a comma, or backslash (other than + backslash-backslash). YYSTR is taken from yytname. If YYRES is + null, do not copy; instead, return the length of what the result + would have been. */ +static YYSIZE_T +yytnamerr (char *yyres, const char *yystr) +{ + if (*yystr == '"') + { + YYSIZE_T yyn = 0; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } + do_not_strip_quotes: ; + } + + if (! yyres) + return yystrlen (yystr); + + return yystpcpy (yyres, yystr) - yyres; +} +# endif + +/* Copy into YYRESULT an error message about the unexpected token + YYCHAR while in state YYSTATE. Return the number of bytes copied, + including the terminating null byte. If YYRESULT is null, do not + copy anything; just return the number of bytes that would be + copied. As a special case, return 0 if an ordinary "syntax error" + message will do. Return YYSIZE_MAXIMUM if overflow occurs during + size calculation. */ +static YYSIZE_T +yysyntax_error (char *yyresult, int yystate, int yychar) +{ + int yyn = yypact[yystate]; + + if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) return 0; + else + { + int yytype = YYTRANSLATE (yychar); + YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); + YYSIZE_T yysize = yysize0; + YYSIZE_T yysize1; + int yysize_overflow = 0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + int yyx; + +# if 0 + /* This is so xgettext sees the translatable formats that are + constructed on the fly. */ + YY_("syntax error, unexpected %s"); + YY_("syntax error, unexpected %s, expecting %s"); + YY_("syntax error, unexpected %s, expecting %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); +# endif + char *yyfmt; + char const *yyf; + static char const yyunexpected[] = "syntax error, unexpected %s"; + static char const yyexpecting[] = ", expecting %s"; + static char const yyor[] = " or %s"; + char yyformat[sizeof yyunexpected + + sizeof yyexpecting - 1 + + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) + * (sizeof yyor - 1))]; + char const *yyprefix = yyexpecting; + + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yycount = 1; + + yyarg[0] = yytname[yytype]; + yyfmt = yystpcpy (yyformat, yyunexpected); + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + yyformat[sizeof yyunexpected - 1] = '\0'; + break; + } + yyarg[yycount++] = yytname[yyx]; + yysize1 = yysize + yytnamerr (0, yytname[yyx]); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + yyfmt = yystpcpy (yyfmt, yyprefix); + yyprefix = yyor; + } + + yyf = YY_(yyformat); + yysize1 = yysize + yystrlen (yyf); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + + if (yysize_overflow) + return YYSIZE_MAXIMUM; + + if (yyresult) + { + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + char *yyp = yyresult; + int yyi = 0; + while ((*yyp = *yyf) != '\0') + { + if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyf += 2; + } + else + { + yyp++; + yyf++; + } + } + } + return yysize; + } } +#endif /* YYERROR_VERBOSE */ + -#define YYABORT goto yyabort -#define YYREJECT goto yyabort -#define YYACCEPT goto yyaccept -#define YYERROR goto yyerrlab +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ -#ifndef YYPARSE_PARAM -#if defined(__cplusplus) || __STDC__ -#define YYPARSE_PARAM_ARG void -#define YYPARSE_PARAM_DECL -#else /* ! ANSI-C/C++ */ -#define YYPARSE_PARAM_ARG -#define YYPARSE_PARAM_DECL -#endif /* ANSI-C/C++ */ -#else /* YYPARSE_PARAM */ -#ifndef YYPARSE_PARAM_TYPE -#define YYPARSE_PARAM_TYPE void * +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +#else +static void +yydestruct (yymsg, yytype, yyvaluep) + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; #endif -#if defined(__cplusplus) || __STDC__ -#define YYPARSE_PARAM_ARG YYPARSE_PARAM_TYPE YYPARSE_PARAM -#define YYPARSE_PARAM_DECL -#else /* ! ANSI-C/C++ */ -#define YYPARSE_PARAM_ARG YYPARSE_PARAM -#define YYPARSE_PARAM_DECL YYPARSE_PARAM_TYPE YYPARSE_PARAM; -#endif /* ANSI-C/C++ */ -#endif /* ! YYPARSE_PARAM */ +{ + YYUSE (yyvaluep); + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + switch (yytype) + { + + default: + break; + } +} + + +/* Prevent warnings from -Wmissing-prototypes. */ + +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int yyparse (void *YYPARSE_PARAM); +#else +int yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus +int yyparse (void); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ + + + +/* The look-ahead symbol. */ +int yychar; + +/* The semantic value of the look-ahead symbol. */ +YYSTYPE yylval; + +/* Number of syntax errors so far. */ +int yynerrs; + + + +/*----------. +| yyparse. | +`----------*/ + +#ifdef YYPARSE_PARAM +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) int -yyparse (YYPARSE_PARAM_ARG) - YYPARSE_PARAM_DECL +yyparse (void *YYPARSE_PARAM) +#else +int +yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; +#endif +#else /* ! YYPARSE_PARAM */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void) +#else +int +yyparse () + +#endif +#endif { - register int yym, yyn, yystate; -#if YYDEBUG - register const char *yys; - - if ((yys = getenv("YYDEBUG"))) - { - yyn = *yys; - if (yyn >= '0' && yyn <= '9') - yydebug = yyn - '0'; - } + + int yystate; + int yyn; + int yyresult; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + /* Look-ahead token as an internal (translated) token number. */ + int yytoken = 0; +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; #endif - yynerrs = 0; - yyerrflag = 0; - yychar = (-1); + /* Three stacks and their tools: + `yyss': related to states, + `yyvs': related to semantic values, + `yyls': related to locations. - if (yyss == NULL && yygrowstack()) goto yyoverflow; - yyssp = yyss; - yyvsp = yyvs; - *yyssp = yystate = 0; + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ -yyloop: - if ((yyn = yydefred[yystate])) goto yyreduce; - if (yychar < 0) + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss = yyssa; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp; + + + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + YYSIZE_T yystacksize = YYINITDEPTH; + + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + + /* Initialize stack pointers. + Waste one element of value and location stack + so that they stay on the same level as the state stack. + The wasted elements are never initialized. */ + + yyssp = yyss; + yyvsp = yyvs; + + goto yysetstate; + +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. So pushing a state here evens the stacks. */ + yyssp++; + + yysetstate: + *yyssp = yystate; + + if (yyss + yystacksize - 1 <= yyssp) { - if ((yychar = yylex()) < 0) yychar = 0; -#if YYDEBUG - if (yydebug) - { - yys = 0; - if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; - if (!yys) yys = "illegal-symbol"; - printf("%sdebug: state %d, reading %d (%s)\n", - YYPREFIX, yystate, yychar, yys); - } -#endif + /* Get the current used size of the three stacks, in elements. */ + YYSIZE_T yysize = yyssp - yyss + 1; + +#ifdef yyoverflow + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + + &yystacksize); + + yyss = yyss1; + yyvs = yyvs1; + } +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + goto yyexhaustedlab; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss); + YYSTACK_RELOCATE (yyvs); + +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif +#endif /* no yyoverflow */ + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; + + + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); + + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; } - if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + look-ahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to look-ahead token. */ + yyn = yypact[yystate]; + if (yyn == YYPACT_NINF) + goto yydefault; + + /* Not known => get a look-ahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ + if (yychar == YYEMPTY) { -#if YYDEBUG - if (yydebug) - printf("%sdebug: state %d, shifting to state %d\n", - YYPREFIX, yystate, yytable[yyn]); -#endif - if (yyssp >= yysslim && yygrowstack()) - { - goto yyoverflow; - } - *++yyssp = yystate = yytable[yyn]; - *++yyvsp = yylval; - yychar = (-1); - if (yyerrflag > 0) --yyerrflag; - goto yyloop; + YYDPRINTF ((stderr, "Reading a token: ")); + yychar = YYLEX; } - if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + + if (yychar <= YYEOF) { - yyn = yytable[yyn]; - goto yyreduce; + yychar = yytoken = YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); } - if (yyerrflag) goto yyinrecovery; -#if defined(lint) || defined(__GNUC__) - goto yynewerror; -#endif -yynewerror: - yyerror("syntax error"); -#if defined(lint) || defined(__GNUC__) + else + { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) + { + if (yyn == 0 || yyn == YYTABLE_NINF) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + if (yyn == YYFINAL) + YYACCEPT; + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the look-ahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token unless it is eof. */ + if (yychar != YYEOF) + yychar = YYEMPTY; + + yystate = yyn; + *++yyvsp = yylval; + + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) goto yyerrlab; -#endif -yyerrlab: - ++yynerrs; -yyinrecovery: - if (yyerrflag < 3) - { - yyerrflag = 3; - for (;;) - { - if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) - { -#if YYDEBUG - if (yydebug) - printf("%sdebug: state %d, error recovery shifting\ - to state %d\n", YYPREFIX, *yyssp, yytable[yyn]); -#endif - if (yyssp >= yysslim && yygrowstack()) - { - goto yyoverflow; - } - *++yyssp = yystate = yytable[yyn]; - *++yyvsp = yylval; - goto yyloop; - } - else - { -#if YYDEBUG - if (yydebug) - printf("%sdebug: error recovery discarding state %d\n", - YYPREFIX, *yyssp); -#endif - if (yyssp <= yyss) goto yyabort; - --yyssp; - --yyvsp; - } - } - } - else - { - if (yychar == 0) goto yyabort; -#if YYDEBUG - if (yydebug) - { - yys = 0; - if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; - if (!yys) yys = "illegal-symbol"; - printf("%sdebug: state %d, error recovery discards token %d (%s)\n", - YYPREFIX, yystate, yychar, yys); - } -#endif - yychar = (-1); - goto yyloop; - } + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- Do a reduction. | +`-----------------------------*/ yyreduce: -#if YYDEBUG - if (yydebug) - printf("%sdebug: state %d, reducing by rule %d (%s)\n", - YYPREFIX, yystate, yyn, yyrule[yyn]); -#endif - yym = yylen[yyn]; - yyval = yyvsp[1-yym]; - switch (yyn) + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + `$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + + YY_REDUCE_PRINT (yyn); + switch (yyn) { -case 1: -#line 161 "grammar.y" -{ - finish_parse(yyvsp[0].blk.b); + case 2: +#line 163 "grammar.y" + { + finish_parse((yyvsp[(2) - (2)].blk).b); } -break; -case 3: -#line 166 "grammar.y" -{ yyval.blk.q = qerr; } -break; -case 5: -#line 169 "grammar.y" -{ gen_and(yyvsp[-2].blk.b, yyvsp[0].blk.b); yyval.blk = yyvsp[0].blk; } -break; -case 6: -#line 170 "grammar.y" -{ gen_and(yyvsp[-2].blk.b, yyvsp[0].blk.b); yyval.blk = yyvsp[0].blk; } -break; -case 7: + break; + + case 4: +#line 168 "grammar.y" + { (yyval.blk).q = qerr; } + break; + + case 6: #line 171 "grammar.y" -{ gen_or(yyvsp[-2].blk.b, yyvsp[0].blk.b); yyval.blk = yyvsp[0].blk; } -break; -case 8: + { gen_and((yyvsp[(1) - (3)].blk).b, (yyvsp[(3) - (3)].blk).b); (yyval.blk) = (yyvsp[(3) - (3)].blk); } + break; + + case 7: #line 172 "grammar.y" -{ gen_or(yyvsp[-2].blk.b, yyvsp[0].blk.b); yyval.blk = yyvsp[0].blk; } -break; -case 9: + { gen_and((yyvsp[(1) - (3)].blk).b, (yyvsp[(3) - (3)].blk).b); (yyval.blk) = (yyvsp[(3) - (3)].blk); } + break; + + case 8: +#line 173 "grammar.y" + { gen_or((yyvsp[(1) - (3)].blk).b, (yyvsp[(3) - (3)].blk).b); (yyval.blk) = (yyvsp[(3) - (3)].blk); } + break; + + case 9: #line 174 "grammar.y" -{ yyval.blk = yyvsp[-1].blk; } -break; -case 10: + { gen_or((yyvsp[(1) - (3)].blk).b, (yyvsp[(3) - (3)].blk).b); (yyval.blk) = (yyvsp[(3) - (3)].blk); } + break; + + case 10: #line 176 "grammar.y" -{ yyval.blk = yyvsp[-1].blk; } -break; -case 12: -#line 179 "grammar.y" -{ yyval.blk.b = gen_ncode(NULL, (bpf_u_int32)yyvsp[0].i, - yyval.blk.q = yyvsp[-1].blk.q); } -break; -case 13: + { (yyval.blk) = (yyvsp[(0) - (1)].blk); } + break; + + case 11: +#line 178 "grammar.y" + { (yyval.blk) = (yyvsp[(0) - (1)].blk); } + break; + + case 13: #line 181 "grammar.y" -{ yyval.blk = yyvsp[-1].blk; } -break; -case 14: + { (yyval.blk).b = gen_ncode(NULL, (bpf_u_int32)(yyvsp[(1) - (1)].i), + (yyval.blk).q = (yyvsp[(0) - (1)].blk).q); } + break; + + case 14: #line 183 "grammar.y" -{ yyval.blk.b = gen_scode(yyvsp[0].s, yyval.blk.q = yyvsp[-1].blk.q); } -break; -case 15: -#line 184 "grammar.y" -{ yyval.blk.b = gen_mcode(yyvsp[-2].s, NULL, yyvsp[0].i, - yyval.blk.q = yyvsp[-3].blk.q); } -break; -case 16: + { (yyval.blk) = (yyvsp[(2) - (3)].blk); } + break; + + case 15: +#line 185 "grammar.y" + { (yyval.blk).b = gen_scode((yyvsp[(1) - (1)].s), (yyval.blk).q = (yyvsp[(0) - (1)].blk).q); } + break; + + case 16: #line 186 "grammar.y" -{ yyval.blk.b = gen_mcode(yyvsp[-2].s, yyvsp[0].s, 0, - yyval.blk.q = yyvsp[-3].blk.q); } -break; -case 17: + { (yyval.blk).b = gen_mcode((yyvsp[(1) - (3)].s), NULL, (yyvsp[(3) - (3)].i), + (yyval.blk).q = (yyvsp[(0) - (3)].blk).q); } + break; + + case 17: #line 188 "grammar.y" -{ + { (yyval.blk).b = gen_mcode((yyvsp[(1) - (3)].s), (yyvsp[(3) - (3)].s), 0, + (yyval.blk).q = (yyvsp[(0) - (3)].blk).q); } + break; + + case 18: +#line 190 "grammar.y" + { /* Decide how to parse HID based on proto */ - yyval.blk.q = yyvsp[-1].blk.q; - yyval.blk.b = gen_ncode(yyvsp[0].s, 0, yyval.blk.q); + (yyval.blk).q = (yyvsp[(0) - (1)].blk).q; + (yyval.blk).b = gen_ncode((yyvsp[(1) - (1)].s), 0, (yyval.blk).q); } -break; -case 18: -#line 193 "grammar.y" -{ + break; + + case 19: +#line 195 "grammar.y" + { #ifdef INET6 - yyval.blk.b = gen_mcode6(yyvsp[-2].s, NULL, yyvsp[0].i, - yyval.blk.q = yyvsp[-3].blk.q); + (yyval.blk).b = gen_mcode6((yyvsp[(1) - (3)].s), NULL, (yyvsp[(3) - (3)].i), + (yyval.blk).q = (yyvsp[(0) - (3)].blk).q); #else bpf_error("'ip6addr/prefixlen' not supported " "in this configuration"); #endif /*INET6*/ } -break; -case 19: -#line 202 "grammar.y" -{ + break; + + case 20: +#line 204 "grammar.y" + { #ifdef INET6 - yyval.blk.b = gen_mcode6(yyvsp[0].s, 0, 128, - yyval.blk.q = yyvsp[-1].blk.q); + (yyval.blk).b = gen_mcode6((yyvsp[(1) - (1)].s), 0, 128, + (yyval.blk).q = (yyvsp[(0) - (1)].blk).q); #else bpf_error("'ip6addr' not supported " "in this configuration"); #endif /*INET6*/ } -break; -case 20: -#line 211 "grammar.y" -{ - yyval.blk.b = gen_ecode(yyvsp[0].e, yyval.blk.q = yyvsp[-1].blk.q); + break; + + case 21: +#line 213 "grammar.y" + { + (yyval.blk).b = gen_ecode((yyvsp[(1) - (1)].e), (yyval.blk).q = (yyvsp[(0) - (1)].blk).q); /* * $1 was allocated by "pcap_ether_aton()", * so we must free it now that we're done * with it. */ - free(yyvsp[0].e); + free((yyvsp[(1) - (1)].e)); } -break; -case 21: -#line 220 "grammar.y" -{ - yyval.blk.b = gen_acode(yyvsp[0].e, yyval.blk.q = yyvsp[-1].blk.q); + break; + + case 22: +#line 222 "grammar.y" + { + (yyval.blk).b = gen_acode((yyvsp[(1) - (1)].e), (yyval.blk).q = (yyvsp[(0) - (1)].blk).q); /* * $1 was allocated by "pcap_ether_aton()", * so we must free it now that we're done * with it. */ - free(yyvsp[0].e); + free((yyvsp[(1) - (1)].e)); } -break; -case 22: -#line 229 "grammar.y" -{ gen_not(yyvsp[0].blk.b); yyval.blk = yyvsp[0].blk; } -break; -case 23: + break; + + case 23: #line 231 "grammar.y" -{ yyval.blk = yyvsp[-1].blk; } -break; -case 24: + { gen_not((yyvsp[(2) - (2)].blk).b); (yyval.blk) = (yyvsp[(2) - (2)].blk); } + break; + + case 24: #line 233 "grammar.y" -{ yyval.blk = yyvsp[-1].blk; } -break; -case 26: -#line 236 "grammar.y" -{ gen_and(yyvsp[-2].blk.b, yyvsp[0].blk.b); yyval.blk = yyvsp[0].blk; } -break; -case 27: -#line 237 "grammar.y" -{ gen_or(yyvsp[-2].blk.b, yyvsp[0].blk.b); yyval.blk = yyvsp[0].blk; } -break; -case 28: + { (yyval.blk) = (yyvsp[(0) - (1)].blk); } + break; + + case 25: +#line 235 "grammar.y" + { (yyval.blk) = (yyvsp[(0) - (1)].blk); } + break; + + case 27: +#line 238 "grammar.y" + { gen_and((yyvsp[(1) - (3)].blk).b, (yyvsp[(3) - (3)].blk).b); (yyval.blk) = (yyvsp[(3) - (3)].blk); } + break; + + case 28: #line 239 "grammar.y" -{ yyval.blk.b = gen_ncode(NULL, (bpf_u_int32)yyvsp[0].i, - yyval.blk.q = yyvsp[-1].blk.q); } -break; -case 31: -#line 244 "grammar.y" -{ gen_not(yyvsp[0].blk.b); yyval.blk = yyvsp[0].blk; } -break; -case 32: + { gen_or((yyvsp[(1) - (3)].blk).b, (yyvsp[(3) - (3)].blk).b); (yyval.blk) = (yyvsp[(3) - (3)].blk); } + break; + + case 29: +#line 241 "grammar.y" + { (yyval.blk).b = gen_ncode(NULL, (bpf_u_int32)(yyvsp[(1) - (1)].i), + (yyval.blk).q = (yyvsp[(0) - (1)].blk).q); } + break; + + case 32: #line 246 "grammar.y" -{ QSET(yyval.blk.q, yyvsp[-2].i, yyvsp[-1].i, yyvsp[0].i); } -break; -case 33: -#line 247 "grammar.y" -{ QSET(yyval.blk.q, yyvsp[-1].i, yyvsp[0].i, Q_DEFAULT); } -break; -case 34: + { gen_not((yyvsp[(2) - (2)].blk).b); (yyval.blk) = (yyvsp[(2) - (2)].blk); } + break; + + case 33: #line 248 "grammar.y" -{ QSET(yyval.blk.q, yyvsp[-1].i, Q_DEFAULT, yyvsp[0].i); } -break; -case 35: + { QSET((yyval.blk).q, (yyvsp[(1) - (3)].i), (yyvsp[(2) - (3)].i), (yyvsp[(3) - (3)].i)); } + break; + + case 34: #line 249 "grammar.y" -{ QSET(yyval.blk.q, yyvsp[-1].i, Q_DEFAULT, Q_PROTO); } -break; -case 36: + { QSET((yyval.blk).q, (yyvsp[(1) - (2)].i), (yyvsp[(2) - (2)].i), Q_DEFAULT); } + break; + + case 35: #line 250 "grammar.y" -{ QSET(yyval.blk.q, yyvsp[-1].i, Q_DEFAULT, Q_PROTOCHAIN); } -break; -case 37: + { QSET((yyval.blk).q, (yyvsp[(1) - (2)].i), Q_DEFAULT, (yyvsp[(2) - (2)].i)); } + break; + + case 36: #line 251 "grammar.y" -{ QSET(yyval.blk.q, yyvsp[-1].i, Q_DEFAULT, yyvsp[0].i); } -break; -case 38: + { QSET((yyval.blk).q, (yyvsp[(1) - (2)].i), Q_DEFAULT, Q_PROTO); } + break; + + case 37: +#line 252 "grammar.y" + { QSET((yyval.blk).q, (yyvsp[(1) - (2)].i), Q_DEFAULT, Q_PROTOCHAIN); } + break; + + case 38: #line 253 "grammar.y" -{ yyval.blk = yyvsp[0].blk; } -break; -case 39: -#line 254 "grammar.y" -{ yyval.blk.b = yyvsp[-1].blk.b; yyval.blk.q = yyvsp[-2].blk.q; } -break; -case 40: + { QSET((yyval.blk).q, (yyvsp[(1) - (2)].i), Q_DEFAULT, (yyvsp[(2) - (2)].i)); } + break; + + case 39: #line 255 "grammar.y" -{ yyval.blk.b = gen_proto_abbrev(yyvsp[0].i); yyval.blk.q = qerr; } -break; -case 41: + { (yyval.blk) = (yyvsp[(2) - (2)].blk); } + break; + + case 40: #line 256 "grammar.y" -{ yyval.blk.b = gen_relation(yyvsp[-1].i, yyvsp[-2].a, yyvsp[0].a, 0); - yyval.blk.q = qerr; } -break; -case 42: + { (yyval.blk).b = (yyvsp[(2) - (3)].blk).b; (yyval.blk).q = (yyvsp[(1) - (3)].blk).q; } + break; + + case 41: +#line 257 "grammar.y" + { (yyval.blk).b = gen_proto_abbrev((yyvsp[(1) - (1)].i)); (yyval.blk).q = qerr; } + break; + + case 42: #line 258 "grammar.y" -{ yyval.blk.b = gen_relation(yyvsp[-1].i, yyvsp[-2].a, yyvsp[0].a, 1); - yyval.blk.q = qerr; } -break; -case 43: + { (yyval.blk).b = gen_relation((yyvsp[(2) - (3)].i), (yyvsp[(1) - (3)].a), (yyvsp[(3) - (3)].a), 0); + (yyval.blk).q = qerr; } + break; + + case 43: #line 260 "grammar.y" -{ yyval.blk.b = yyvsp[0].rblk; yyval.blk.q = qerr; } -break; -case 44: -#line 261 "grammar.y" -{ yyval.blk.b = gen_atmtype_abbrev(yyvsp[0].i); yyval.blk.q = qerr; } -break; -case 45: + { (yyval.blk).b = gen_relation((yyvsp[(2) - (3)].i), (yyvsp[(1) - (3)].a), (yyvsp[(3) - (3)].a), 1); + (yyval.blk).q = qerr; } + break; + + case 44: #line 262 "grammar.y" -{ yyval.blk.b = gen_atmmulti_abbrev(yyvsp[0].i); yyval.blk.q = qerr; } -break; -case 46: + { (yyval.blk).b = (yyvsp[(1) - (1)].rblk); (yyval.blk).q = qerr; } + break; + + case 45: #line 263 "grammar.y" -{ yyval.blk.b = yyvsp[0].blk.b; yyval.blk.q = qerr; } -break; -case 47: + { (yyval.blk).b = gen_atmtype_abbrev((yyvsp[(1) - (1)].i)); (yyval.blk).q = qerr; } + break; + + case 46: #line 264 "grammar.y" -{ yyval.blk.b = yyvsp[0].blk.b; yyval.blk.q = qerr; } -break; -case 49: -#line 268 "grammar.y" -{ yyval.i = Q_DEFAULT; } -break; -case 50: + { (yyval.blk).b = gen_atmmulti_abbrev((yyvsp[(1) - (1)].i)); (yyval.blk).q = qerr; } + break; + + case 47: +#line 265 "grammar.y" + { (yyval.blk).b = (yyvsp[(2) - (2)].blk).b; (yyval.blk).q = qerr; } + break; + + case 48: +#line 266 "grammar.y" + { (yyval.blk).b = gen_mtp2type_abbrev((yyvsp[(1) - (1)].i)); (yyval.blk).q = qerr; } + break; + + case 49: +#line 267 "grammar.y" + { (yyval.blk).b = (yyvsp[(2) - (2)].blk).b; (yyval.blk).q = qerr; } + break; + + case 51: #line 271 "grammar.y" -{ yyval.i = Q_SRC; } -break; -case 51: -#line 272 "grammar.y" -{ yyval.i = Q_DST; } -break; -case 52: -#line 273 "grammar.y" -{ yyval.i = Q_OR; } -break; -case 53: + { (yyval.i) = Q_DEFAULT; } + break; + + case 52: #line 274 "grammar.y" -{ yyval.i = Q_OR; } -break; -case 54: + { (yyval.i) = Q_SRC; } + break; + + case 53: #line 275 "grammar.y" -{ yyval.i = Q_AND; } -break; -case 55: + { (yyval.i) = Q_DST; } + break; + + case 54: #line 276 "grammar.y" -{ yyval.i = Q_AND; } -break; -case 56: + { (yyval.i) = Q_OR; } + break; + + case 55: +#line 277 "grammar.y" + { (yyval.i) = Q_OR; } + break; + + case 56: +#line 278 "grammar.y" + { (yyval.i) = Q_AND; } + break; + + case 57: #line 279 "grammar.y" -{ yyval.i = Q_HOST; } -break; -case 57: -#line 280 "grammar.y" -{ yyval.i = Q_NET; } -break; -case 58: -#line 281 "grammar.y" -{ yyval.i = Q_PORT; } -break; -case 59: + { (yyval.i) = Q_AND; } + break; + + case 58: #line 282 "grammar.y" -{ yyval.i = Q_PORTRANGE; } -break; -case 60: + { (yyval.i) = Q_HOST; } + break; + + case 59: +#line 283 "grammar.y" + { (yyval.i) = Q_NET; } + break; + + case 60: +#line 284 "grammar.y" + { (yyval.i) = Q_PORT; } + break; + + case 61: #line 285 "grammar.y" -{ yyval.i = Q_GATEWAY; } -break; -case 61: -#line 287 "grammar.y" -{ yyval.i = Q_LINK; } -break; -case 62: + { (yyval.i) = Q_PORTRANGE; } + break; + + case 62: #line 288 "grammar.y" -{ yyval.i = Q_IP; } -break; -case 63: -#line 289 "grammar.y" -{ yyval.i = Q_ARP; } -break; -case 64: + { (yyval.i) = Q_GATEWAY; } + break; + + case 63: #line 290 "grammar.y" -{ yyval.i = Q_RARP; } -break; -case 65: + { (yyval.i) = Q_LINK; } + break; + + case 64: #line 291 "grammar.y" -{ yyval.i = Q_SCTP; } -break; -case 66: + { (yyval.i) = Q_IP; } + break; + + case 65: #line 292 "grammar.y" -{ yyval.i = Q_TCP; } -break; -case 67: + { (yyval.i) = Q_ARP; } + break; + + case 66: #line 293 "grammar.y" -{ yyval.i = Q_UDP; } -break; -case 68: + { (yyval.i) = Q_RARP; } + break; + + case 67: #line 294 "grammar.y" -{ yyval.i = Q_ICMP; } -break; -case 69: + { (yyval.i) = Q_SCTP; } + break; + + case 68: #line 295 "grammar.y" -{ yyval.i = Q_IGMP; } -break; -case 70: + { (yyval.i) = Q_TCP; } + break; + + case 69: #line 296 "grammar.y" -{ yyval.i = Q_IGRP; } -break; -case 71: + { (yyval.i) = Q_UDP; } + break; + + case 70: #line 297 "grammar.y" -{ yyval.i = Q_PIM; } -break; -case 72: + { (yyval.i) = Q_ICMP; } + break; + + case 71: #line 298 "grammar.y" -{ yyval.i = Q_VRRP; } -break; -case 73: + { (yyval.i) = Q_IGMP; } + break; + + case 72: #line 299 "grammar.y" -{ yyval.i = Q_ATALK; } -break; -case 74: + { (yyval.i) = Q_IGRP; } + break; + + case 73: #line 300 "grammar.y" -{ yyval.i = Q_AARP; } -break; -case 75: + { (yyval.i) = Q_PIM; } + break; + + case 74: #line 301 "grammar.y" -{ yyval.i = Q_DECNET; } -break; -case 76: + { (yyval.i) = Q_VRRP; } + break; + + case 75: #line 302 "grammar.y" -{ yyval.i = Q_LAT; } -break; -case 77: + { (yyval.i) = Q_ATALK; } + break; + + case 76: #line 303 "grammar.y" -{ yyval.i = Q_SCA; } -break; -case 78: + { (yyval.i) = Q_AARP; } + break; + + case 77: #line 304 "grammar.y" -{ yyval.i = Q_MOPDL; } -break; -case 79: + { (yyval.i) = Q_DECNET; } + break; + + case 78: #line 305 "grammar.y" -{ yyval.i = Q_MOPRC; } -break; -case 80: + { (yyval.i) = Q_LAT; } + break; + + case 79: #line 306 "grammar.y" -{ yyval.i = Q_IPV6; } -break; -case 81: + { (yyval.i) = Q_SCA; } + break; + + case 80: #line 307 "grammar.y" -{ yyval.i = Q_ICMPV6; } -break; -case 82: + { (yyval.i) = Q_MOPDL; } + break; + + case 81: #line 308 "grammar.y" -{ yyval.i = Q_AH; } -break; -case 83: + { (yyval.i) = Q_MOPRC; } + break; + + case 82: #line 309 "grammar.y" -{ yyval.i = Q_ESP; } -break; -case 84: + { (yyval.i) = Q_IPV6; } + break; + + case 83: #line 310 "grammar.y" -{ yyval.i = Q_ISO; } -break; -case 85: + { (yyval.i) = Q_ICMPV6; } + break; + + case 84: #line 311 "grammar.y" -{ yyval.i = Q_ESIS; } -break; -case 86: + { (yyval.i) = Q_AH; } + break; + + case 85: #line 312 "grammar.y" -{ yyval.i = Q_ISIS; } -break; -case 87: + { (yyval.i) = Q_ESP; } + break; + + case 86: #line 313 "grammar.y" -{ yyval.i = Q_ISIS_L1; } -break; -case 88: + { (yyval.i) = Q_ISO; } + break; + + case 87: #line 314 "grammar.y" -{ yyval.i = Q_ISIS_L2; } -break; -case 89: + { (yyval.i) = Q_ESIS; } + break; + + case 88: #line 315 "grammar.y" -{ yyval.i = Q_ISIS_IIH; } -break; -case 90: + { (yyval.i) = Q_ISIS; } + break; + + case 89: #line 316 "grammar.y" -{ yyval.i = Q_ISIS_LSP; } -break; -case 91: + { (yyval.i) = Q_ISIS_L1; } + break; + + case 90: #line 317 "grammar.y" -{ yyval.i = Q_ISIS_SNP; } -break; -case 92: + { (yyval.i) = Q_ISIS_L2; } + break; + + case 91: #line 318 "grammar.y" -{ yyval.i = Q_ISIS_PSNP; } -break; -case 93: + { (yyval.i) = Q_ISIS_IIH; } + break; + + case 92: #line 319 "grammar.y" -{ yyval.i = Q_ISIS_CSNP; } -break; -case 94: + { (yyval.i) = Q_ISIS_LSP; } + break; + + case 93: #line 320 "grammar.y" -{ yyval.i = Q_CLNP; } -break; -case 95: + { (yyval.i) = Q_ISIS_SNP; } + break; + + case 94: #line 321 "grammar.y" -{ yyval.i = Q_STP; } -break; -case 96: + { (yyval.i) = Q_ISIS_PSNP; } + break; + + case 95: #line 322 "grammar.y" -{ yyval.i = Q_IPX; } -break; -case 97: + { (yyval.i) = Q_ISIS_CSNP; } + break; + + case 96: #line 323 "grammar.y" -{ yyval.i = Q_NETBEUI; } -break; -case 98: + { (yyval.i) = Q_CLNP; } + break; + + case 97: #line 324 "grammar.y" -{ yyval.i = Q_RADIO; } -break; -case 99: + { (yyval.i) = Q_STP; } + break; + + case 98: +#line 325 "grammar.y" + { (yyval.i) = Q_IPX; } + break; + + case 99: #line 326 "grammar.y" -{ yyval.rblk = gen_broadcast(yyvsp[-1].i); } -break; -case 100: + { (yyval.i) = Q_NETBEUI; } + break; + + case 100: #line 327 "grammar.y" -{ yyval.rblk = gen_multicast(yyvsp[-1].i); } -break; -case 101: -#line 328 "grammar.y" -{ yyval.rblk = gen_less(yyvsp[0].i); } -break; -case 102: + { (yyval.i) = Q_RADIO; } + break; + + case 101: #line 329 "grammar.y" -{ yyval.rblk = gen_greater(yyvsp[0].i); } -break; -case 103: + { (yyval.rblk) = gen_broadcast((yyvsp[(1) - (2)].i)); } + break; + + case 102: #line 330 "grammar.y" -{ yyval.rblk = gen_byteop(yyvsp[-1].i, yyvsp[-2].i, yyvsp[0].i); } -break; -case 104: + { (yyval.rblk) = gen_multicast((yyvsp[(1) - (2)].i)); } + break; + + case 103: #line 331 "grammar.y" -{ yyval.rblk = gen_inbound(0); } -break; -case 105: + { (yyval.rblk) = gen_less((yyvsp[(2) - (2)].i)); } + break; + + case 104: #line 332 "grammar.y" -{ yyval.rblk = gen_inbound(1); } -break; -case 106: + { (yyval.rblk) = gen_greater((yyvsp[(2) - (2)].i)); } + break; + + case 105: #line 333 "grammar.y" -{ yyval.rblk = gen_vlan(yyvsp[0].i); } -break; -case 107: + { (yyval.rblk) = gen_byteop((yyvsp[(3) - (4)].i), (yyvsp[(2) - (4)].i), (yyvsp[(4) - (4)].i)); } + break; + + case 106: #line 334 "grammar.y" -{ yyval.rblk = gen_vlan(-1); } -break; -case 108: + { (yyval.rblk) = gen_inbound(0); } + break; + + case 107: #line 335 "grammar.y" -{ yyval.rblk = gen_mpls(yyvsp[0].i); } -break; -case 109: + { (yyval.rblk) = gen_inbound(1); } + break; + + case 108: #line 336 "grammar.y" -{ yyval.rblk = gen_mpls(-1); } -break; -case 110: + { (yyval.rblk) = gen_vlan((yyvsp[(2) - (2)].i)); } + break; + + case 109: #line 337 "grammar.y" -{ yyval.rblk = gen_pppoed(); } -break; -case 111: + { (yyval.rblk) = gen_vlan(-1); } + break; + + case 110: #line 338 "grammar.y" -{ yyval.rblk = gen_pppoes(); } -break; -case 112: + { (yyval.rblk) = gen_mpls((yyvsp[(2) - (2)].i)); } + break; + + case 111: #line 339 "grammar.y" -{ yyval.rblk = yyvsp[0].rblk; } -break; -case 113: + { (yyval.rblk) = gen_mpls(-1); } + break; + + case 112: +#line 340 "grammar.y" + { (yyval.rblk) = gen_pppoed(); } + break; + + case 113: +#line 341 "grammar.y" + { (yyval.rblk) = gen_pppoes(); } + break; + + case 114: #line 342 "grammar.y" -{ yyval.rblk = gen_pf_ifname(yyvsp[0].s); } -break; -case 114: -#line 343 "grammar.y" -{ yyval.rblk = gen_pf_ruleset(yyvsp[0].s); } -break; -case 115: -#line 344 "grammar.y" -{ yyval.rblk = gen_pf_rnr(yyvsp[0].i); } -break; -case 116: + { (yyval.rblk) = (yyvsp[(1) - (1)].rblk); } + break; + + case 115: #line 345 "grammar.y" -{ yyval.rblk = gen_pf_srnr(yyvsp[0].i); } -break; -case 117: + { (yyval.rblk) = gen_pf_ifname((yyvsp[(2) - (2)].s)); } + break; + + case 116: #line 346 "grammar.y" -{ yyval.rblk = gen_pf_reason(yyvsp[0].i); } -break; -case 118: + { (yyval.rblk) = gen_pf_ruleset((yyvsp[(2) - (2)].s)); } + break; + + case 117: #line 347 "grammar.y" -{ yyval.rblk = gen_pf_action(yyvsp[0].i); } -break; -case 119: + { (yyval.rblk) = gen_pf_rnr((yyvsp[(2) - (2)].i)); } + break; + + case 118: +#line 348 "grammar.y" + { (yyval.rblk) = gen_pf_srnr((yyvsp[(2) - (2)].i)); } + break; + + case 119: +#line 349 "grammar.y" + { (yyval.rblk) = gen_pf_reason((yyvsp[(2) - (2)].i)); } + break; + + case 120: #line 350 "grammar.y" -{ yyval.i = yyvsp[0].i; } -break; -case 120: -#line 351 "grammar.y" -{ const char *reasons[] = PFRES_NAMES; + { (yyval.rblk) = gen_pf_action((yyvsp[(2) - (2)].i)); } + break; + + case 121: +#line 353 "grammar.y" + { (yyval.i) = (yyvsp[(1) - (1)].i); } + break; + + case 122: +#line 354 "grammar.y" + { const char *reasons[] = PFRES_NAMES; int i; for (i = 0; reasons[i]; i++) { - if (pcap_strcasecmp(yyvsp[0].s, reasons[i]) == 0) { - yyval.i = i; + if (pcap_strcasecmp((yyvsp[(1) - (1)].s), reasons[i]) == 0) { + (yyval.i) = i; break; } } if (reasons[i] == NULL) bpf_error("unknown PF reason"); } -break; -case 121: -#line 364 "grammar.y" -{ if (pcap_strcasecmp(yyvsp[0].s, "pass") == 0 || - pcap_strcasecmp(yyvsp[0].s, "accept") == 0) - yyval.i = PF_PASS; - else if (pcap_strcasecmp(yyvsp[0].s, "drop") == 0 || - pcap_strcasecmp(yyvsp[0].s, "block") == 0) - yyval.i = PF_DROP; + break; + + case 123: +#line 367 "grammar.y" + { if (pcap_strcasecmp((yyvsp[(1) - (1)].s), "pass") == 0 || + pcap_strcasecmp((yyvsp[(1) - (1)].s), "accept") == 0) + (yyval.i) = PF_PASS; + else if (pcap_strcasecmp((yyvsp[(1) - (1)].s), "drop") == 0 || + pcap_strcasecmp((yyvsp[(1) - (1)].s), "block") == 0) + (yyval.i) = PF_DROP; else bpf_error("unknown PF action"); } -break; -case 122: -#line 375 "grammar.y" -{ yyval.i = BPF_JGT; } -break; -case 123: -#line 376 "grammar.y" -{ yyval.i = BPF_JGE; } -break; -case 124: -#line 377 "grammar.y" -{ yyval.i = BPF_JEQ; } -break; -case 125: + break; + + case 124: +#line 378 "grammar.y" + { (yyval.i) = BPF_JGT; } + break; + + case 125: #line 379 "grammar.y" -{ yyval.i = BPF_JGT; } -break; -case 126: + { (yyval.i) = BPF_JGE; } + break; + + case 126: #line 380 "grammar.y" -{ yyval.i = BPF_JGE; } -break; -case 127: -#line 381 "grammar.y" -{ yyval.i = BPF_JEQ; } -break; -case 128: + { (yyval.i) = BPF_JEQ; } + break; + + case 127: +#line 382 "grammar.y" + { (yyval.i) = BPF_JGT; } + break; + + case 128: #line 383 "grammar.y" -{ yyval.a = gen_loadi(yyvsp[0].i); } -break; -case 130: + { (yyval.i) = BPF_JGE; } + break; + + case 129: +#line 384 "grammar.y" + { (yyval.i) = BPF_JEQ; } + break; + + case 130: #line 386 "grammar.y" -{ yyval.a = gen_load(yyvsp[-3].i, yyvsp[-1].a, 1); } -break; -case 131: -#line 387 "grammar.y" -{ yyval.a = gen_load(yyvsp[-5].i, yyvsp[-3].a, yyvsp[-1].i); } -break; -case 132: -#line 388 "grammar.y" -{ yyval.a = gen_arth(BPF_ADD, yyvsp[-2].a, yyvsp[0].a); } -break; -case 133: + { (yyval.a) = gen_loadi((yyvsp[(1) - (1)].i)); } + break; + + case 132: #line 389 "grammar.y" -{ yyval.a = gen_arth(BPF_SUB, yyvsp[-2].a, yyvsp[0].a); } -break; -case 134: + { (yyval.a) = gen_load((yyvsp[(1) - (4)].i), (yyvsp[(3) - (4)].a), 1); } + break; + + case 133: #line 390 "grammar.y" -{ yyval.a = gen_arth(BPF_MUL, yyvsp[-2].a, yyvsp[0].a); } -break; -case 135: + { (yyval.a) = gen_load((yyvsp[(1) - (6)].i), (yyvsp[(3) - (6)].a), (yyvsp[(5) - (6)].i)); } + break; + + case 134: #line 391 "grammar.y" -{ yyval.a = gen_arth(BPF_DIV, yyvsp[-2].a, yyvsp[0].a); } -break; -case 136: + { (yyval.a) = gen_arth(BPF_ADD, (yyvsp[(1) - (3)].a), (yyvsp[(3) - (3)].a)); } + break; + + case 135: #line 392 "grammar.y" -{ yyval.a = gen_arth(BPF_AND, yyvsp[-2].a, yyvsp[0].a); } -break; -case 137: + { (yyval.a) = gen_arth(BPF_SUB, (yyvsp[(1) - (3)].a), (yyvsp[(3) - (3)].a)); } + break; + + case 136: #line 393 "grammar.y" -{ yyval.a = gen_arth(BPF_OR, yyvsp[-2].a, yyvsp[0].a); } -break; -case 138: + { (yyval.a) = gen_arth(BPF_MUL, (yyvsp[(1) - (3)].a), (yyvsp[(3) - (3)].a)); } + break; + + case 137: #line 394 "grammar.y" -{ yyval.a = gen_arth(BPF_LSH, yyvsp[-2].a, yyvsp[0].a); } -break; -case 139: + { (yyval.a) = gen_arth(BPF_DIV, (yyvsp[(1) - (3)].a), (yyvsp[(3) - (3)].a)); } + break; + + case 138: #line 395 "grammar.y" -{ yyval.a = gen_arth(BPF_RSH, yyvsp[-2].a, yyvsp[0].a); } -break; -case 140: + { (yyval.a) = gen_arth(BPF_AND, (yyvsp[(1) - (3)].a), (yyvsp[(3) - (3)].a)); } + break; + + case 139: #line 396 "grammar.y" -{ yyval.a = gen_neg(yyvsp[0].a); } -break; -case 141: + { (yyval.a) = gen_arth(BPF_OR, (yyvsp[(1) - (3)].a), (yyvsp[(3) - (3)].a)); } + break; + + case 140: #line 397 "grammar.y" -{ yyval.a = yyvsp[-1].a; } -break; -case 142: + { (yyval.a) = gen_arth(BPF_LSH, (yyvsp[(1) - (3)].a), (yyvsp[(3) - (3)].a)); } + break; + + case 141: #line 398 "grammar.y" -{ yyval.a = gen_loadlen(); } -break; -case 143: + { (yyval.a) = gen_arth(BPF_RSH, (yyvsp[(1) - (3)].a), (yyvsp[(3) - (3)].a)); } + break; + + case 142: +#line 399 "grammar.y" + { (yyval.a) = gen_neg((yyvsp[(2) - (2)].a)); } + break; + + case 143: #line 400 "grammar.y" -{ yyval.i = '&'; } -break; -case 144: + { (yyval.a) = (yyvsp[(2) - (3)].a); } + break; + + case 144: #line 401 "grammar.y" -{ yyval.i = '|'; } -break; -case 145: -#line 402 "grammar.y" -{ yyval.i = '<'; } -break; -case 146: + { (yyval.a) = gen_loadlen(); } + break; + + case 145: #line 403 "grammar.y" -{ yyval.i = '>'; } -break; -case 147: + { (yyval.i) = '&'; } + break; + + case 146: #line 404 "grammar.y" -{ yyval.i = '='; } -break; -case 149: + { (yyval.i) = '|'; } + break; + + case 147: +#line 405 "grammar.y" + { (yyval.i) = '<'; } + break; + + case 148: +#line 406 "grammar.y" + { (yyval.i) = '>'; } + break; + + case 149: #line 407 "grammar.y" -{ yyval.i = yyvsp[-1].i; } -break; -case 150: -#line 409 "grammar.y" -{ yyval.i = A_LANE; } -break; -case 151: + { (yyval.i) = '='; } + break; + + case 151: #line 410 "grammar.y" -{ yyval.i = A_LLC; } -break; -case 152: -#line 411 "grammar.y" -{ yyval.i = A_METAC; } -break; -case 153: + { (yyval.i) = (yyvsp[(2) - (3)].i); } + break; + + case 152: #line 412 "grammar.y" -{ yyval.i = A_BCC; } -break; -case 154: + { (yyval.i) = A_LANE; } + break; + + case 153: #line 413 "grammar.y" -{ yyval.i = A_OAMF4EC; } -break; -case 155: + { (yyval.i) = A_LLC; } + break; + + case 154: #line 414 "grammar.y" -{ yyval.i = A_OAMF4SC; } -break; -case 156: + { (yyval.i) = A_METAC; } + break; + + case 155: #line 415 "grammar.y" -{ yyval.i = A_SC; } -break; -case 157: + { (yyval.i) = A_BCC; } + break; + + case 156: #line 416 "grammar.y" -{ yyval.i = A_ILMIC; } -break; -case 158: + { (yyval.i) = A_OAMF4EC; } + break; + + case 157: +#line 417 "grammar.y" + { (yyval.i) = A_OAMF4SC; } + break; + + case 158: #line 418 "grammar.y" -{ yyval.i = A_OAM; } -break; -case 159: + { (yyval.i) = A_SC; } + break; + + case 159: #line 419 "grammar.y" -{ yyval.i = A_OAMF4; } -break; -case 160: -#line 420 "grammar.y" -{ yyval.i = A_CONNECTMSG; } -break; -case 161: + { (yyval.i) = A_ILMIC; } + break; + + case 160: #line 421 "grammar.y" -{ yyval.i = A_METACONNECT; } -break; -case 162: + { (yyval.i) = A_OAM; } + break; + + case 161: +#line 422 "grammar.y" + { (yyval.i) = A_OAMF4; } + break; + + case 162: +#line 423 "grammar.y" + { (yyval.i) = A_CONNECTMSG; } + break; + + case 163: #line 424 "grammar.y" -{ yyval.blk.atmfieldtype = A_VPI; } -break; -case 163: -#line 425 "grammar.y" -{ yyval.blk.atmfieldtype = A_VCI; } -break; -case 165: + { (yyval.i) = A_METACONNECT; } + break; + + case 164: +#line 427 "grammar.y" + { (yyval.blk).atmfieldtype = A_VPI; } + break; + + case 165: #line 428 "grammar.y" -{ yyval.blk.b = gen_atmfield_code(yyvsp[-2].blk.atmfieldtype, (bpf_int32)yyvsp[0].i, (bpf_u_int32)yyvsp[-1].i, 0); } -break; -case 166: -#line 429 "grammar.y" -{ yyval.blk.b = gen_atmfield_code(yyvsp[-2].blk.atmfieldtype, (bpf_int32)yyvsp[0].i, (bpf_u_int32)yyvsp[-1].i, 1); } -break; -case 167: -#line 430 "grammar.y" -{ yyval.blk.b = yyvsp[-1].blk.b; yyval.blk.q = qerr; } -break; -case 168: + { (yyval.blk).atmfieldtype = A_VCI; } + break; + + case 167: +#line 431 "grammar.y" + { (yyval.blk).b = gen_atmfield_code((yyvsp[(0) - (2)].blk).atmfieldtype, (bpf_int32)(yyvsp[(2) - (2)].i), (bpf_u_int32)(yyvsp[(1) - (2)].i), 0); } + break; + + case 168: #line 432 "grammar.y" -{ - yyval.blk.atmfieldtype = yyvsp[-1].blk.atmfieldtype; - if (yyval.blk.atmfieldtype == A_VPI || - yyval.blk.atmfieldtype == A_VCI) - yyval.blk.b = gen_atmfield_code(yyval.blk.atmfieldtype, (bpf_int32) yyvsp[0].i, BPF_JEQ, 0); + { (yyval.blk).b = gen_atmfield_code((yyvsp[(0) - (2)].blk).atmfieldtype, (bpf_int32)(yyvsp[(2) - (2)].i), (bpf_u_int32)(yyvsp[(1) - (2)].i), 1); } + break; + + case 169: +#line 433 "grammar.y" + { (yyval.blk).b = (yyvsp[(2) - (3)].blk).b; (yyval.blk).q = qerr; } + break; + + case 170: +#line 435 "grammar.y" + { + (yyval.blk).atmfieldtype = (yyvsp[(0) - (1)].blk).atmfieldtype; + if ((yyval.blk).atmfieldtype == A_VPI || + (yyval.blk).atmfieldtype == A_VCI) + (yyval.blk).b = gen_atmfield_code((yyval.blk).atmfieldtype, (bpf_int32) (yyvsp[(1) - (1)].i), BPF_JEQ, 0); } -break; -case 170: -#line 440 "grammar.y" -{ gen_or(yyvsp[-2].blk.b, yyvsp[0].blk.b); yyval.blk = yyvsp[0].blk; } -break; -case 171: + break; + + case 172: #line 443 "grammar.y" -{ yyval.blk.mtp3fieldtype = M_SIO; } -break; -case 172: -#line 444 "grammar.y" -{ yyval.blk.mtp3fieldtype = M_OPC; } -break; -case 173: -#line 445 "grammar.y" -{ yyval.blk.mtp3fieldtype = M_DPC; } -break; -case 174: + { gen_or((yyvsp[(1) - (3)].blk).b, (yyvsp[(3) - (3)].blk).b); (yyval.blk) = (yyvsp[(3) - (3)].blk); } + break; + + case 173: #line 446 "grammar.y" -{ yyval.blk.mtp3fieldtype = M_SLS; } -break; -case 176: -#line 449 "grammar.y" -{ yyval.blk.b = gen_mtp3field_code(yyvsp[-2].blk.mtp3fieldtype, (u_int)yyvsp[0].i, (u_int)yyvsp[-1].i, 0); } -break; -case 177: -#line 450 "grammar.y" -{ yyval.blk.b = gen_mtp3field_code(yyvsp[-2].blk.mtp3fieldtype, (u_int)yyvsp[0].i, (u_int)yyvsp[-1].i, 1); } -break; -case 178: + { (yyval.i) = M_FISU; } + break; + + case 174: +#line 447 "grammar.y" + { (yyval.i) = M_LSSU; } + break; + + case 175: +#line 448 "grammar.y" + { (yyval.i) = M_MSU; } + break; + + case 176: #line 451 "grammar.y" -{ yyval.blk.b = yyvsp[-1].blk.b; yyval.blk.q = qerr; } -break; -case 179: + { (yyval.blk).mtp3fieldtype = M_SIO; } + break; + + case 177: +#line 452 "grammar.y" + { (yyval.blk).mtp3fieldtype = M_OPC; } + break; + + case 178: #line 453 "grammar.y" -{ - yyval.blk.mtp3fieldtype = yyvsp[-1].blk.mtp3fieldtype; - if (yyval.blk.mtp3fieldtype == M_SIO || - yyval.blk.mtp3fieldtype == M_OPC || - yyval.blk.mtp3fieldtype == M_DPC || - yyval.blk.mtp3fieldtype == M_SLS ) - yyval.blk.b = gen_mtp3field_code(yyval.blk.mtp3fieldtype, (u_int) yyvsp[0].i, BPF_JEQ, 0); + { (yyval.blk).mtp3fieldtype = M_DPC; } + break; + + case 179: +#line 454 "grammar.y" + { (yyval.blk).mtp3fieldtype = M_SLS; } + break; + + case 181: +#line 457 "grammar.y" + { (yyval.blk).b = gen_mtp3field_code((yyvsp[(0) - (2)].blk).mtp3fieldtype, (u_int)(yyvsp[(2) - (2)].i), (u_int)(yyvsp[(1) - (2)].i), 0); } + break; + + case 182: +#line 458 "grammar.y" + { (yyval.blk).b = gen_mtp3field_code((yyvsp[(0) - (2)].blk).mtp3fieldtype, (u_int)(yyvsp[(2) - (2)].i), (u_int)(yyvsp[(1) - (2)].i), 1); } + break; + + case 183: +#line 459 "grammar.y" + { (yyval.blk).b = (yyvsp[(2) - (3)].blk).b; (yyval.blk).q = qerr; } + break; + + case 184: +#line 461 "grammar.y" + { + (yyval.blk).mtp3fieldtype = (yyvsp[(0) - (1)].blk).mtp3fieldtype; + if ((yyval.blk).mtp3fieldtype == M_SIO || + (yyval.blk).mtp3fieldtype == M_OPC || + (yyval.blk).mtp3fieldtype == M_DPC || + (yyval.blk).mtp3fieldtype == M_SLS ) + (yyval.blk).b = gen_mtp3field_code((yyval.blk).mtp3fieldtype, (u_int) (yyvsp[(1) - (1)].i), BPF_JEQ, 0); } -break; -case 181: -#line 463 "grammar.y" -{ gen_or(yyvsp[-2].blk.b, yyvsp[0].blk.b); yyval.blk = yyvsp[0].blk; } -break; -#line 1736 "y.tab.c" + break; + + case 186: +#line 471 "grammar.y" + { gen_or((yyvsp[(1) - (3)].blk).b, (yyvsp[(3) - (3)].blk).b); (yyval.blk) = (yyvsp[(3) - (3)].blk); } + break; + + +/* Line 1267 of yacc.c. */ +#line 2902 "y.tab.c" + default: break; } - yyssp -= yym; - yystate = *yyssp; - yyvsp -= yym; - yym = yylhs[yyn]; - if (yystate == 0 && yym == 0) + YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + + *++yyvsp = yyval; + + + /* Now `shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; + + goto yynewstate; + + +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ +yyerrlab: + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) { -#if YYDEBUG - if (yydebug) - printf("%sdebug: after reduction, shifting from state 0 to\ - state %d\n", YYPREFIX, YYFINAL); + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (YY_("syntax error")); +#else + { + YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); + if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) + { + YYSIZE_T yyalloc = 2 * yysize; + if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) + yyalloc = YYSTACK_ALLOC_MAXIMUM; + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yyalloc); + if (yymsg) + yymsg_alloc = yyalloc; + else + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + } + } + + if (0 < yysize && yysize <= yymsg_alloc) + { + (void) yysyntax_error (yymsg, yystate, yychar); + yyerror (yymsg); + } + else + { + yyerror (YY_("syntax error")); + if (yysize != 0) + goto yyexhaustedlab; + } + } #endif - yystate = YYFINAL; - *++yyssp = YYFINAL; - *++yyvsp = yyval; - if (yychar < 0) - { - if ((yychar = yylex()) < 0) yychar = 0; -#if YYDEBUG - if (yydebug) - { - yys = 0; - if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; - if (!yys) yys = "illegal-symbol"; - printf("%sdebug: state %d, reading %d (%s)\n", - YYPREFIX, YYFINAL, yychar, yys); - } -#endif - } - if (yychar == 0) goto yyaccept; - goto yyloop; } - if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yystate) - yystate = yytable[yyn]; - else - yystate = yydgoto[yym]; -#if YYDEBUG - if (yydebug) - printf("%sdebug: after reduction, shifting from state %d \ -to state %d\n", YYPREFIX, *yyssp, yystate); -#endif - if (yyssp >= yysslim && yygrowstack()) + + + + if (yyerrstatus == 3) { - goto yyoverflow; + /* If just tried and failed to reuse look-ahead token after an + error, discard it. */ + + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", + yytoken, &yylval); + yychar = YYEMPTY; + } } - *++yyssp = yystate; - *++yyvsp = yyval; - goto yyloop; -yyoverflow: - yyerror("yacc stack overflow"); -yyabort: - return (1); -yyaccept: - return (0); + + /* Else will try to reuse look-ahead token after shifting the error + token. */ + goto yyerrlab1; + + +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: + + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; + + /* Do not reclaim the symbols of the rule which action triggered + this YYERROR. */ + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + yystate = *yyssp; + goto yyerrlab1; + + +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + for (;;) + { + yyn = yypact[yystate]; + if (yyn != YYPACT_NINF) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + + yydestruct ("Error: popping", + yystos[yystate], yyvsp); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); + } + + if (yyn == YYFINAL) + YYACCEPT; + + *++yyvsp = yylval; + + + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturn; + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturn; + +#ifndef yyoverflow +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEOF && yychar != YYEMPTY) + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + /* Do not reclaim the symbols of the rule which action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); + YY_STACK_PRINT (yyss, yyssp); + while (yyssp != yyss) + { + yydestruct ("Cleanup: popping", + yystos[*yyssp], yyvsp); + YYPOPSTACK (1); + } +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif +#if YYERROR_VERBOSE + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); +#endif + /* Make sure YYID is used. */ + return YYID (yyresult); } + + +#line 473 "grammar.y" + + diff --git a/libpcap/grammar.y b/libpcap/grammar.y index c2f96f144..eedd63051 100644 --- a/libpcap/grammar.y +++ b/libpcap/grammar.y @@ -22,7 +22,7 @@ */ #ifndef lint static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/libpcap/grammar.y,v 1.86.2.5 2005/09/05 09:08:06 guy Exp $ (LBL)"; + "@(#) $Header: /tcpdump/master/libpcap/grammar.y,v 1.86.2.8 2007/06/11 09:52:04 guy Exp $ (LBL)"; #endif #ifdef HAVE_CONFIG_H @@ -68,7 +68,7 @@ int n_errors = 0; static struct qual qerr = { Q_UNDEF, Q_UNDEF, Q_UNDEF, Q_UNDEF }; static void -yyerror(char *msg) +yyerror(const char *msg) { ++n_errors; bpf_error("%s", msg); @@ -113,8 +113,9 @@ pcap_parse() %type atmtype atmmultitype %type atmfield %type atmfieldvalue atmvalue atmlistvalue -%type mtp3field -%type mtp3fieldvalue mtp3value mtp3listvalue +%type mtp2type +%type mtp3field +%type mtp3fieldvalue mtp3value mtp3listvalue %token DST SRC HOST GATEWAY @@ -140,7 +141,8 @@ pcap_parse() %token OAM OAMF4 CONNECTMSG METACONNECT %token VPI VCI %token RADIO -%token SIO OPC DPC SLS +%token FISU LSSU MSU +%token SIO OPC DPC SLS %type ID %type EID @@ -261,6 +263,7 @@ rterm: head id { $$ = $2; } | atmtype { $$.b = gen_atmtype_abbrev($1); $$.q = qerr; } | atmmultitype { $$.b = gen_atmmulti_abbrev($1); $$.q = qerr; } | atmfield atmvalue { $$.b = $2.b; $$.q = qerr; } + | mtp2type { $$.b = gen_mtp2type_abbrev($1); $$.q = qerr; } | mtp3field mtp3value { $$.b = $2.b; $$.q = qerr; } ; /* protocol level qualifiers */ @@ -439,6 +442,11 @@ atmfieldvalue: NUM { atmlistvalue: atmfieldvalue | atmlistvalue or atmfieldvalue { gen_or($1.b, $3.b); $$ = $3; } ; + /* MTP2 types quantifier */ +mtp2type: FISU { $$ = M_FISU; } + | LSSU { $$ = M_LSSU; } + | MSU { $$ = M_MSU; } + ; /* MTP3 field types quantifier */ mtp3field: SIO { $$.mtp3fieldtype = M_SIO; } | OPC { $$.mtp3fieldtype = M_OPC; } diff --git a/libpcap/inet.c b/libpcap/inet.c index fb05b7653..8a44728b3 100644 --- a/libpcap/inet.c +++ b/libpcap/inet.c @@ -34,7 +34,7 @@ #ifndef lint static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/libpcap/inet.c,v 1.66.2.1 2005/06/20 21:30:17 guy Exp $ (LBL)"; + "@(#) $Header: /tcpdump/master/libpcap/inet.c,v 1.66.2.6 2007/06/11 09:52:04 guy Exp $ (LBL)"; #endif #ifdef HAVE_CONFIG_H @@ -134,28 +134,6 @@ add_or_find_if(pcap_if_t **curdev_ret, pcap_if_t **alldevs, const char *name, pcap_if_t *curdev, *prevdev, *nextdev; int this_instance; - /* - * Can we open this interface for live capture? - * - * We do this check so that interfaces that ae supplied - * by the interface enumeration mechanism we're using - * but that don't support packet capture aren't included - * in the list. An example of this is loopback interfaces - * on Solaris; we don't just omit loopback interfaces - * becaue you *can* capture on loopback interfaces on some - * OSes. - */ - p = pcap_open_live(name, 68, 0, 0, errbuf); - if (p == NULL) { - /* - * No. Don't bother including it. - * Don't treat this as an error, though. - */ - *curdev_ret = NULL; - return (0); - } - pcap_close(p); - /* * Is there already an entry in the list for this interface? */ @@ -163,9 +141,74 @@ add_or_find_if(pcap_if_t **curdev_ret, pcap_if_t **alldevs, const char *name, if (strcmp(name, curdev->name) == 0) break; /* yes, we found it */ } + if (curdev == NULL) { /* * No, we didn't find it. + * + * Can we open this interface for live capture? + * + * We do this check so that interfaces that are + * supplied by the interface enumeration mechanism + * we're using but that don't support packet capture + * aren't included in the list. Loopback interfaces + * on Solaris are an example of this; we don't just + * omit loopback interfaces on all platforms because + * you *can* capture on loopback interfaces on some + * OSes. + * + * On OS X, we don't do this check if the device + * name begins with "wlt"; at least some versions + * of OS X offer monitor mode capturing by having + * a separate "monitor mode" device for each wireless + * adapter, rather than by implementing the ioctls + * that {Free,Net,Open,DragonFly}BSD provide. + * Opening that device puts the adapter into monitor + * mode, which, at least for some adapters, causes + * them to deassociate from the network with which + * they're associated. + * + * Instead, we try to open the corresponding "en" + * device (so that we don't end up with, for users + * without sufficient privilege to open capture + * devices, a list of adapters that only includes + * the wlt devices). + */ +#ifdef __APPLE__ + if (strncmp(name, "wlt", 3) == 0) { + char *en_name; + size_t en_name_len; + + /* + * Try to allocate a buffer for the "en" + * device's name. + */ + en_name_len = strlen(name) - 1; + en_name = malloc(en_name_len + 1); + if (en_name == NULL) { + (void)snprintf(errbuf, PCAP_ERRBUF_SIZE, + "malloc: %s", pcap_strerror(errno)); + return (-1); + } + strcpy(en_name, "en"); + strcat(en_name, name + 3); + p = pcap_open_live(en_name, 68, 0, 0, errbuf); + free(en_name); + } else +#endif /* __APPLE */ + p = pcap_open_live(name, 68, 0, 0, errbuf); + if (p == NULL) { + /* + * No. Don't bother including it. + * Don't treat this as an error, though. + */ + *curdev_ret = NULL; + return (0); + } + pcap_close(p); + + /* + * Yes, we can open it. * Allocate a new entry. */ curdev = malloc(sizeof(pcap_if_t)); @@ -179,14 +222,25 @@ add_or_find_if(pcap_if_t **curdev_ret, pcap_if_t **alldevs, const char *name, * Fill in the entry. */ curdev->next = NULL; - curdev->name = malloc(strlen(name) + 1); - strcpy(curdev->name, name); + curdev->name = strdup(name); + if (curdev->name == NULL) { + (void)snprintf(errbuf, PCAP_ERRBUF_SIZE, + "malloc: %s", pcap_strerror(errno)); + free(curdev); + return (-1); + } if (description != NULL) { /* * We have a description for this interface. */ - curdev->description = malloc(strlen(description) + 1); - strcpy(curdev->description, description); + curdev->description = strdup(description); + if (curdev->description == NULL) { + (void)snprintf(errbuf, PCAP_ERRBUF_SIZE, + "malloc: %s", pcap_strerror(errno)); + free(curdev->name); + free(curdev); + return (-1); + } } else { /* * We don't. @@ -357,6 +411,8 @@ add_addr_to_iflist(pcap_if_t **alldevs, const char *name, u_int flags, if (curaddr->netmask == NULL) { (void)snprintf(errbuf, PCAP_ERRBUF_SIZE, "malloc: %s", pcap_strerror(errno)); + if (curaddr->addr != NULL) + free(curaddr->addr); free(curaddr); return (-1); } @@ -368,6 +424,10 @@ add_addr_to_iflist(pcap_if_t **alldevs, const char *name, u_int flags, if (curaddr->broadaddr == NULL) { (void)snprintf(errbuf, PCAP_ERRBUF_SIZE, "malloc: %s", pcap_strerror(errno)); + if (curaddr->netmask != NULL) + free(curaddr->netmask); + if (curaddr->addr != NULL) + free(curaddr->addr); free(curaddr); return (-1); } @@ -379,6 +439,12 @@ add_addr_to_iflist(pcap_if_t **alldevs, const char *name, u_int flags, if (curaddr->dstaddr == NULL) { (void)snprintf(errbuf, PCAP_ERRBUF_SIZE, "malloc: %s", pcap_strerror(errno)); + if (curaddr->broadaddr != NULL) + free(curaddr->broadaddr); + if (curaddr->netmask != NULL) + free(curaddr->netmask); + if (curaddr->addr != NULL) + free(curaddr->addr); free(curaddr); return (-1); } @@ -527,7 +593,7 @@ pcap_lookupnet(device, netp, maskp, errbuf) register char *errbuf; { register int fd; - register struct sockaddr_in *sin; + register struct sockaddr_in *sin4; struct ifreq ifr; /* @@ -571,8 +637,8 @@ pcap_lookupnet(device, netp, maskp, errbuf) (void)close(fd); return (-1); } - sin = (struct sockaddr_in *)&ifr.ifr_addr; - *netp = sin->sin_addr.s_addr; + sin4 = (struct sockaddr_in *)&ifr.ifr_addr; + *netp = sin4->sin_addr.s_addr; if (ioctl(fd, SIOCGIFNETMASK, (char *)&ifr) < 0) { (void)snprintf(errbuf, PCAP_ERRBUF_SIZE, "SIOCGIFNETMASK: %s: %s", device, pcap_strerror(errno)); @@ -580,7 +646,7 @@ pcap_lookupnet(device, netp, maskp, errbuf) return (-1); } (void)close(fd); - *maskp = sin->sin_addr.s_addr; + *maskp = sin4->sin_addr.s_addr; if (*maskp == 0) { if (IN_CLASSA(*netp)) *maskp = IN_CLASSA_NET; diff --git a/libpcap/nametoaddr.c b/libpcap/nametoaddr.c index a795e49e2..d60e93d5c 100644 --- a/libpcap/nametoaddr.c +++ b/libpcap/nametoaddr.c @@ -24,7 +24,7 @@ #ifndef lint static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/libpcap/nametoaddr.c,v 1.77.2.3 2005/04/20 11:13:51 guy Exp $ (LBL)"; + "@(#) $Header: /tcpdump/master/libpcap/nametoaddr.c,v 1.77.2.4 2007/06/11 09:52:05 guy Exp $ (LBL)"; #endif #ifdef HAVE_CONFIG_H @@ -276,7 +276,7 @@ pcap_nametoproto(const char *str) #include "ethertype.h" struct eproto { - char *s; + const char *s; u_short p; }; @@ -388,7 +388,7 @@ __pcap_atodn(const char *s, bpf_u_int32 *addr) u_int node, area; - if (sscanf((char *)s, "%d.%d", &area, &node) != 2) + if (sscanf(s, "%d.%d", &area, &node) != 2) bpf_error("malformed decnet address '%s'", s); *addr = (area << AREASHIFT) & AREAMASK; @@ -474,7 +474,7 @@ pcap_ether_hostton(const char *name) u_char a[6]; ap = NULL; - if (ether_hostton((char *)name, (struct ether_addr *)a) == 0) { + if (ether_hostton(name, (struct ether_addr *)a) == 0) { ap = (u_char *)malloc(6); if (ap != NULL) memcpy((char *)ap, (char *)a, 6); diff --git a/libpcap/net b/libpcap/net new file mode 120000 index 000000000..b3eaca950 --- /dev/null +++ b/libpcap/net @@ -0,0 +1 @@ +./bpf/net \ No newline at end of file diff --git a/libpcap/optimize.c b/libpcap/optimize.c index 173bc5540..1502ab15e 100644 --- a/libpcap/optimize.c +++ b/libpcap/optimize.c @@ -22,7 +22,7 @@ */ #ifndef lint static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/libpcap/optimize.c,v 1.85 2005/04/04 08:42:18 guy Exp $ (LBL)"; + "@(#) $Header: /tcpdump/master/libpcap/optimize.c,v 1.85.2.2 2007/07/15 19:55:04 guy Exp $ (LBL)"; #endif #ifdef HAVE_CONFIG_H @@ -624,7 +624,7 @@ fold_op(s, v0, v1) struct stmt *s; int v0, v1; { - bpf_int32 a, b; + bpf_u_int32 a, b; a = vmap[v0].const_val; b = vmap[v1].const_val; @@ -1823,9 +1823,9 @@ intern_blocks(root) { struct block *p; int i, j; - int done; + int done1; /* don't shadow global */ top: - done = 1; + done1 = 1; for (i = 0; i < n_blocks; ++i) blocks[i]->link = 0; @@ -1849,15 +1849,15 @@ intern_blocks(root) if (JT(p) == 0) continue; if (JT(p)->link) { - done = 0; + done1 = 0; JT(p) = JT(p)->link; } if (JF(p)->link) { - done = 0; + done1 = 0; JF(p) = JF(p)->link; } } - if (!done) + if (!done1) goto top; } @@ -2124,7 +2124,7 @@ convert_code_r(p) { int i; int jt, jf; - char *ljerr = "%s for block-local relative jump: off=%d"; + const char *ljerr = "%s for block-local relative jump: off=%d"; #if 0 printf("code=%x off=%d %x %x\n", src->s.code, @@ -2216,6 +2216,20 @@ filled: /* * Convert flowgraph intermediate representation to the * BPF array representation. Set *lenp to the number of instructions. + * + * This routine does *NOT* leak the memory pointed to by fp. It *must + * not* do free(fp) before returning fp; doing so would make no sense, + * as the BPF array pointed to by the return value of icode_to_fcode() + * must be valid - it's being returned for use in a bpf_program structure. + * + * If it appears that icode_to_fcode() is leaking, the problem is that + * the program using pcap_compile() is failing to free the memory in + * the BPF program when it's done - the leak is in the program, not in + * the routine that happens to be allocating the memory. (By analogy, if + * a program calls fopen() without ever calling fclose() on the FILE *, + * it will leak the FILE structure; the leak is not in fopen(), it's in + * the program.) Change the program to use pcap_freecode() when it's + * done with the filter program. See the pcap man page. */ struct bpf_insn * icode_to_fcode(root, lenp) diff --git a/libpcap/pcap-bpf.c b/libpcap/pcap-bpf.c index 97bd60276..027913e7f 100644 --- a/libpcap/pcap-bpf.c +++ b/libpcap/pcap-bpf.c @@ -20,7 +20,7 @@ */ #ifndef lint static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/libpcap/pcap-bpf.c,v 1.86.2.8 2005/07/10 10:55:31 guy Exp $ (LBL)"; + "@(#) $Header: /tcpdump/master/libpcap/pcap-bpf.c,v 1.86.2.12 2007/06/15 17:57:27 guy Exp $ (LBL)"; #endif #ifdef HAVE_CONFIG_H @@ -523,8 +523,12 @@ static inline int bpf_open(pcap_t *p, char *errbuf) { int fd; +#ifdef HAVE_CLONING_BPF + static const char device[] = "/dev/bpf"; +#else int n = 0; char device[sizeof "/dev/bpf0000000000"]; +#endif #ifdef _AIX /* @@ -536,6 +540,12 @@ bpf_open(pcap_t *p, char *errbuf) return (-1); #endif +#ifdef HAVE_CLONING_BPF + if ((fd = open(device, O_RDWR)) == -1 && + (errno != EACCES || (fd = open(device, O_RDONLY)) == -1)) + snprintf(errbuf, PCAP_ERRBUF_SIZE, + "(cannot open device) %s: %s", device, pcap_strerror(errno)); +#else /* * Go through all the minors and find one that isn't in use. */ @@ -566,6 +576,7 @@ bpf_open(pcap_t *p, char *errbuf) if (fd < 0) snprintf(errbuf, PCAP_ERRBUF_SIZE, "(no devices found) %s: %s", device, pcap_strerror(errno)); +#endif return (fd); } @@ -746,7 +757,7 @@ pcap_open_live(const char *device, int snaplen, int promisc, int to_ms, u_int i; int is_ethernet; - bdl.bfl_list = (u_int *) malloc(sizeof(u_int) * bdl.bfl_len + 1); + bdl.bfl_list = (u_int *) malloc(sizeof(u_int) * (bdl.bfl_len + 1)); if (bdl.bfl_list == NULL) { (void)snprintf(ebuf, PCAP_ERRBUF_SIZE, "malloc: %s", pcap_strerror(errno)); @@ -1091,9 +1102,22 @@ pcap_setfilter_bpf(pcap_t *p, struct bpf_program *fp) static int pcap_setdirection_bpf(pcap_t *p, pcap_direction_t d) { -#ifdef BIOCSSEESENT +#if defined(BIOCSDIRECTION) + u_int direction; + + direction = (d == PCAP_D_IN) ? BPF_D_IN : + ((d == PCAP_D_OUT) ? BPF_D_OUT : BPF_D_INOUT); + if (ioctl(p->fd, BIOCSDIRECTION, &direction) == -1) { + (void) snprintf(p->errbuf, sizeof(p->errbuf), + "Cannot set direction to %s: %s", + (d == PCAP_D_IN) ? "PCAP_D_IN" : + ((d == PCAP_D_OUT) ? "PCAP_D_OUT" : "PCAP_D_INOUT"), + strerror(errno)); + return (-1); + } + return (0); +#elif defined(BIOCSSEESENT) u_int seesent; -#endif /* * We don't support PCAP_D_OUT. @@ -1103,7 +1127,7 @@ pcap_setdirection_bpf(pcap_t *p, pcap_direction_t d) "Setting direction to PCAP_D_OUT is not supported on BPF"); return -1; } -#ifdef BIOCSSEESENT + seesent = (d == PCAP_D_INOUT); if (ioctl(p->fd, BIOCSSEESENT, &seesent) == -1) { (void) snprintf(p->errbuf, sizeof(p->errbuf), diff --git a/libpcap/pcap-bpf.h b/libpcap/pcap-bpf.h index e3ecd96b9..aae7b5652 100644 --- a/libpcap/pcap-bpf.h +++ b/libpcap/pcap-bpf.h @@ -37,7 +37,7 @@ * * @(#)bpf.h 7.1 (Berkeley) 5/7/91 * - * @(#) $Header: /tcpdump/master/libpcap/pcap-bpf.h,v 1.34.2.6 2005/08/13 22:29:47 hannes Exp $ (LBL) + * @(#) $Header: /tcpdump/master/libpcap/pcap-bpf.h,v 1.34.2.20 2007/07/19 06:20:53 guy Exp $ (LBL) */ /* @@ -246,13 +246,13 @@ struct bpf_version { * OpenBSD DLT_LOOP, for loopback devices; it's like DLT_NULL, except * that the AF_ type in the link-layer header is in network byte order. * - * OpenBSD defines it as 12, but that collides with DLT_RAW, so 108 is - * used for other platforms. + * DLT_LOOP is 12 in OpenBSD, but that's DLT_RAW in other OSes, so + * we don't use 12 for it in OSes other than OpenBSD. */ #ifdef __OpenBSD__ -#define DLT_LOOP 12 +#define DLT_LOOP 12 #else -#define DLT_LOOP 108 +#define DLT_LOOP 108 #endif /* @@ -607,6 +607,107 @@ struct bpf_version { #define DLT_JUNIPER_FRELAY 180 #define DLT_JUNIPER_CHDLC 181 +/* + * Multi Link Frame Relay (FRF.16) + */ +#define DLT_MFR 182 + +/* + * Juniper-private data link type, as per request from + * Hannes Gredler . + * The DLT_ is used for internal communication with a + * voice Adapter Card (PIC) + */ +#define DLT_JUNIPER_VP 183 + +/* + * Arinc 429 frames. + * DLT_ requested by Gianluca Varenni . + * Every frame contains a 32bit A429 label. + * More documentation on Arinc 429 can be found at + * http://www.condoreng.com/support/downloads/tutorials/ARINCTutorial.pdf + */ +#define DLT_A429 184 + +/* + * Arinc 653 Interpartition Communication messages. + * DLT_ requested by Gianluca Varenni . + * Please refer to the A653-1 standard for more information. + */ +#define DLT_A653_ICM 185 + +/* + * USB packets, beginning with a USB setup header; requested by + * Paolo Abeni . + */ +#define DLT_USB 186 + +/* + * Bluetooth HCI UART transport layer (part H:4); requested by + * Paolo Abeni. + */ +#define DLT_BLUETOOTH_HCI_H4 187 + +/* + * IEEE 802.16 MAC Common Part Sublayer; requested by Maria Cruz + * . + */ +#define DLT_IEEE802_16_MAC_CPS 188 + +/* + * USB packets, beginning with a Linux USB header; requested by + * Paolo Abeni . + */ +#define DLT_USB_LINUX 189 + +/* + * Controller Area Network (CAN) v. 2.0B packets. + * DLT_ requested by Gianluca Varenni . + * Used to dump CAN packets coming from a CAN Vector board. + * More documentation on the CAN v2.0B frames can be found at + * http://www.can-cia.org/downloads/?269 + */ +#define DLT_CAN20B 190 + +/* + * IEEE 802.15.4, with address fields padded, as is done by Linux + * drivers; requested by Juergen Schimmer. + */ +#define DLT_IEEE802_15_4_LINUX 191 + +/* + * Per Packet Information encapsulated packets. + * DLT_ requested by Gianluca Varenni . + */ +#define DLT_PPI 192 + +/* + * Header for 802.16 MAC Common Part Sublayer plus a radiotap radio header; + * requested by Charles Clancy. + */ +#define DLT_IEEE802_16_MAC_CPS_RADIO 193 + +/* + * Juniper-private data link type, as per request from + * Hannes Gredler . + * The DLT_ is used for internal communication with a + * integrated service module (ISM). + */ +#define DLT_JUNIPER_ISM 194 + +/* + * IEEE 802.15.4, exactly as it appears in the spec (no padding, no + * nothing); requested by Mikko Saarnivala . + */ +#define DLT_IEEE802_15_4 195 + +/* + * Various link-layer types, with a pseudo-header, for SITA + * (http://www.sita.aero/); requested by Fulko Hew (fulko.hew@gmail.com). + */ +#define DLT_SITA 196 + + /* * The instruction encodings. */ diff --git a/libpcap/pcap-dag.c b/libpcap/pcap-dag.c index ee482836a..3ef250843 100644 --- a/libpcap/pcap-dag.c +++ b/libpcap/pcap-dag.c @@ -17,7 +17,7 @@ #ifndef lint static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/libpcap/pcap-dag.c,v 1.21.2.3 2005/07/10 22:09:34 guy Exp $ (LBL)"; + "@(#) $Header: /tcpdump/master/libpcap/pcap-dag.c,v 1.21.2.7 2007/06/22 06:43:58 guy Exp $ (LBL)"; #endif #ifdef HAVE_CONFIG_H @@ -46,11 +46,21 @@ struct rtentry; /* declarations in */ #include "dagnew.h" #include "dagapi.h" -#define MIN_DAG_SNAPLEN 12 -#define MAX_DAG_SNAPLEN 2040 #define ATM_CELL_SIZE 52 #define ATM_HDR_SIZE 4 +/* + * A header containing additional MTP information. + */ +#define MTP2_SENT_OFFSET 0 /* 1 byte */ +#define MTP2_ANNEX_A_USED_OFFSET 1 /* 1 byte */ +#define MTP2_LINK_NUMBER_OFFSET 2 /* 2 bytes */ +#define MTP2_HDR_LEN 4 /* length of the header */ + +#define MTP2_ANNEX_A_NOT_USED 0 +#define MTP2_ANNEX_A_USED 1 +#define MTP2_ANNEX_A_USED_UNKNOWN 2 + /* SunATM pseudo header */ struct sunatm_hdr { unsigned char flags; /* destination and traffic type */ @@ -70,19 +80,6 @@ static const unsigned short endian_test_word = 0x0100; #define IS_BIGENDIAN() (*((unsigned char *)&endian_test_word)) -/* - * Swap byte ordering of unsigned long long timestamp on a big endian - * machine. - */ -#define SWAP_TS(ull) ((ull & 0xff00000000000000LL) >> 56) | \ - ((ull & 0x00ff000000000000LL) >> 40) | \ - ((ull & 0x0000ff0000000000LL) >> 24) | \ - ((ull & 0x000000ff00000000LL) >> 8) | \ - ((ull & 0x00000000ff000000LL) << 8) | \ - ((ull & 0x0000000000ff0000LL) << 24) | \ - ((ull & 0x000000000000ff00LL) << 40) | \ - ((ull & 0x00000000000000ffLL) << 56) - #ifdef DAG_ONLY /* This code is required when compiling for a DAG device only. */ @@ -93,6 +90,10 @@ static const unsigned short endian_test_word = 0x0100; #define dag_platform_finddevs pcap_platform_finddevs #endif /* DAG_ONLY */ +#define MAX_DAG_PACKET 65536 + +static unsigned char TempPkt[MAX_DAG_PACKET]; + static int dag_setfilter(pcap_t *p, struct bpf_program *fp); static int dag_stats(pcap_t *p, struct pcap_stat *ps); static int dag_set_datalink(pcap_t *p, int dlt); @@ -139,9 +140,6 @@ dag_platform_close(pcap_t *p) #endif /* HAVE_DAG_STREAMS_API */ if(dag_close(p->fd) < 0) fprintf(stderr,"dag_close: %s\n", strerror(errno)); -#ifdef linux - free(p->md.device); -#endif } delete_pcap_dag(p); /* Note: don't need to call close(p->fd) here as dag_close(p->fd) does this. */ @@ -222,7 +220,7 @@ dag_read(pcap_t *p, int cnt, pcap_handler callback, u_char *user) * If non-block is specified it will return immediately. The user * is then responsible for efficiency. */ - p->md.dag_mem_top = dag_advance_stream(p->fd, p->md.dag_stream, (void**)&(p->md.dag_mem_bottom)); + p->md.dag_mem_top = dag_advance_stream(p->fd, p->md.dag_stream, &(p->md.dag_mem_bottom)); #else /* dag_offset does not support timeouts */ p->md.dag_mem_top = dag_offset(p->fd, &(p->md.dag_mem_bottom), flags); @@ -282,8 +280,14 @@ dag_read(pcap_t *p, int cnt, pcap_handler callback, u_char *user) p->md.dag_mem_bottom += rlen; switch(header->type) { - case TYPE_AAL5: case TYPE_ATM: +#ifdef TYPE_AAL5 + case TYPE_AAL5: + if (header->type == TYPE_AAL5) { + packet_len = ntohs(header->wlen); + caplen = rlen - dag_record_size; + } +#endif #ifdef TYPE_MC_ATM case TYPE_MC_ATM: if (header->type == TYPE_MC_ATM) { @@ -299,10 +303,7 @@ dag_read(pcap_t *p, int cnt, pcap_handler callback, u_char *user) dp+=4; } #endif - if (header->type == TYPE_AAL5) { - packet_len = ntohs(header->wlen); - caplen = rlen - dag_record_size; - } else if(header->type == TYPE_ATM) { + if (header->type == TYPE_ATM) { caplen = packet_len = ATM_CELL_SIZE; } if (p->linktype == DLT_SUNATM) { @@ -326,6 +327,9 @@ dag_read(pcap_t *p, int cnt, pcap_handler callback, u_char *user) } break; +#ifdef TYPE_DSM_COLOR_ETH + case TYPE_DSM_COLOR_ETH: +#endif #ifdef TYPE_COLOR_ETH case TYPE_COLOR_ETH: #endif @@ -338,6 +342,9 @@ dag_read(pcap_t *p, int cnt, pcap_handler callback, u_char *user) } dp += 2; break; +#ifdef TYPE_DSM_COLOR_HDLC_POS + case TYPE_DSM_COLOR_HDLC_POS: +#endif #ifdef TYPE_COLOR_HDLC_POS case TYPE_COLOR_HDLC_POS: #endif @@ -349,6 +356,9 @@ dag_read(pcap_t *p, int cnt, pcap_handler callback, u_char *user) caplen = packet_len; } break; +#ifdef TYPE_COLOR_MC_HDLC_POS + case TYPE_COLOR_MC_HDLC_POS: +#endif #ifdef TYPE_MC_HDLC case TYPE_MC_HDLC: packet_len = ntohs(header->wlen); @@ -357,9 +367,27 @@ dag_read(pcap_t *p, int cnt, pcap_handler callback, u_char *user) if (caplen > packet_len) { caplen = packet_len; } + /* jump the MC_HDLC_HEADER */ dp += 4; + if (p->linktype == DLT_MTP2_WITH_PHDR) { + /* Add the MTP2 Pseudo Header */ + caplen += MTP2_HDR_LEN; + packet_len += MTP2_HDR_LEN; + + TempPkt[MTP2_SENT_OFFSET] = 0; + TempPkt[MTP2_ANNEX_A_USED_OFFSET] = MTP2_ANNEX_A_USED_UNKNOWN; + *(TempPkt+MTP2_LINK_NUMBER_OFFSET) = ((header->rec.mc_hdlc.mc_header>>16)&0x01); + *(TempPkt+MTP2_LINK_NUMBER_OFFSET+1) = ((header->rec.mc_hdlc.mc_header>>24)&0xff); + memcpy(TempPkt+MTP2_HDR_LEN, dp, caplen); + dp = TempPkt; + } break; #endif + default: + /* Unhandled ERF type. + * Ignore rather than generating error + */ + continue; } if (caplen > p->snapshot) @@ -377,6 +405,21 @@ dag_read(pcap_t *p, int cnt, pcap_handler callback, u_char *user) case TYPE_COLOR_ETH: break; #endif +#ifdef TYPE_DSM_COLOR_HDLC_POS + /* in this type the color value overwrites the lctr */ + case TYPE_DSM_COLOR_HDLC_POS: + break; +#endif +#ifdef TYPE_DSM_COLOR_ETH + /* in this type the color value overwrites the lctr */ + case TYPE_DSM_COLOR_ETH: + break; +#endif +#ifdef TYPE_COLOR_MC_HDLC_POS + case TYPE_COLOR_MC_HDLC_POS: + break; +#endif + default: if (header->lctr) { if (p->md.stat.ps_drop > (UINT_MAX - ntohs(header->lctr))) { @@ -394,7 +437,7 @@ dag_read(pcap_t *p, int cnt, pcap_handler callback, u_char *user) register unsigned long long ts; if (IS_BIGENDIAN()) { - ts = SWAP_TS(header->ts); + ts = SWAPLL(header->ts); } else { ts = header->ts; } @@ -445,6 +488,9 @@ dag_inject(pcap_t *p, const void *buf _U_, size_t size _U_) * cards are always promiscuous. The to_ms parameter is also ignored as it is * not supported in hardware. * + * snaplen is now also ignored, until we get per-stream slen support. Set + * slen with approprite DAG tool BEFORE pcap_open_live(). + * * See also pcap(3). */ pcap_t * @@ -455,7 +501,7 @@ dag_open_live(const char *device, int snaplen, int promisc, int to_ms, char *ebu char *s; int n; daginf_t* daginf; - char * newDev; + char * newDev = NULL; #ifdef HAVE_DAG_STREAMS_API uint32_t mindata; struct timeval maxwait; @@ -478,9 +524,12 @@ dag_open_live(const char *device, int snaplen, int promisc, int to_ms, char *ebu memset(handle, 0, sizeof(*handle)); - newDev = (char *)malloc(strlen(device) + 16); - #ifdef HAVE_DAG_STREAMS_API + newDev = (char *)malloc(strlen(device) + 16); + if (newDev == NULL) { + snprintf(ebuf, PCAP_ERRBUF_SIZE, "Can't allocate string for device name: %s\n", pcap_strerror(errno)); + goto fail; + } /* Parse input name to get dag device and stream number if provided */ if (dag_parse_name(device, newDev, strlen(device) + 16, &handle->md.dag_stream) < 0) { @@ -494,18 +543,15 @@ dag_open_live(const char *device, int snaplen, int promisc, int to_ms, char *ebu goto fail; } #else - if (strstr(device, "/dev") == NULL) { - newDev[0] = '\0'; - strcat(newDev, "/dev/"); - strcat(newDev,device); + if (strncmp(device, "/dev/", 5) != 0) { + newDev = (char *)malloc(strlen(device) + 5); + if (newDev == NULL) { + snprintf(ebuf, PCAP_ERRBUF_SIZE, "Can't allocate string for device name: %s\n", pcap_strerror(errno)); + goto fail; + } + strcpy(newDev, "/dev/"); + strcat(newDev, device); device = newDev; - } else { - device = strdup(device); - } - - if (device == NULL) { - snprintf(ebuf, PCAP_ERRBUF_SIZE, "str_dup: %s\n", pcap_strerror(errno)); - goto fail; } #endif /* HAVE_DAG_STREAMS_API */ @@ -519,7 +565,7 @@ dag_open_live(const char *device, int snaplen, int promisc, int to_ms, char *ebu /* Open requested stream. Can fail if already locked or on error */ if (dag_attach_stream(handle->fd, handle->md.dag_stream, 0, 0) < 0) { snprintf(ebuf, PCAP_ERRBUF_SIZE, "dag_attach_stream: %s\n", pcap_strerror(errno)); - goto fail; + goto failclose; } /* Set up default poll parameters for stream @@ -528,7 +574,7 @@ dag_open_live(const char *device, int snaplen, int promisc, int to_ms, char *ebu if (dag_get_stream_poll(handle->fd, handle->md.dag_stream, &mindata, &maxwait, &poll) < 0) { snprintf(ebuf, PCAP_ERRBUF_SIZE, "dag_get_stream_poll: %s\n", pcap_strerror(errno)); - goto fail; + goto faildetach; } /* Amount of data to collect in Bytes before calling callbacks. @@ -546,18 +592,25 @@ dag_open_live(const char *device, int snaplen, int promisc, int to_ms, char *ebu if (dag_set_stream_poll(handle->fd, handle->md.dag_stream, mindata, &maxwait, &poll) < 0) { snprintf(ebuf, PCAP_ERRBUF_SIZE, "dag_set_stream_poll: %s\n", pcap_strerror(errno)); - goto fail; + goto faildetach; } #else if((handle->md.dag_mem_base = dag_mmap(handle->fd)) == MAP_FAILED) { snprintf(ebuf, PCAP_ERRBUF_SIZE,"dag_mmap %s: %s\n", device, pcap_strerror(errno)); - goto fail; + goto failclose; } #endif /* HAVE_DAG_STREAMS_API */ + /* XXX Not calling dag_configure() to set slen; this is unsafe in + * multi-stream environments as the gpp config is global. + * Once the firmware provides 'per-stream slen' this can be supported + * again via the Config API without side-effects */ +#if 0 /* set the card snap length to the specified snaplen parameter */ + /* This is a really bad idea, as different cards have different + * valid slen ranges. Should fix in Config API. */ if (snaplen == 0 || snaplen > MAX_DAG_SNAPLEN) { snaplen = MAX_DAG_SNAPLEN; } else if (snaplen < MIN_DAG_SNAPLEN) { @@ -568,18 +621,19 @@ dag_open_live(const char *device, int snaplen, int promisc, int to_ms, char *ebu if(dag_configure(handle->fd, conf) < 0) { snprintf(ebuf, PCAP_ERRBUF_SIZE,"dag_configure %s: %s\n", device, pcap_strerror(errno)); - goto fail; + goto faildetach; } - +#endif + #ifdef HAVE_DAG_STREAMS_API if(dag_start_stream(handle->fd, handle->md.dag_stream) < 0) { snprintf(ebuf, PCAP_ERRBUF_SIZE, "dag_start_stream %s: %s\n", device, pcap_strerror(errno)); - goto fail; + goto faildetach; } #else if(dag_start(handle->fd) < 0) { snprintf(ebuf, PCAP_ERRBUF_SIZE, "dag_start %s: %s\n", device, pcap_strerror(errno)); - goto fail; + goto failclose; } #endif /* HAVE_DAG_STREAMS_API */ @@ -607,7 +661,7 @@ dag_open_live(const char *device, int snaplen, int promisc, int to_ms, char *ebu } else { snprintf(ebuf, PCAP_ERRBUF_SIZE, "pcap_open_live %s: bad ERF_FCS_BITS value (%d) in environment\n", device, n); - goto fail; + goto failstop; } } @@ -617,14 +671,14 @@ dag_open_live(const char *device, int snaplen, int promisc, int to_ms, char *ebu handle->linktype = -1; if (dag_get_datalink(handle) < 0) { strcpy(ebuf, handle->errbuf); - goto fail; + goto failstop; } handle->bufsize = 0; if (new_pcap_dag(handle) < 0) { snprintf(ebuf, PCAP_ERRBUF_SIZE, "new_pcap_dag %s: %s\n", device, pcap_strerror(errno)); - goto fail; + goto failstop; } /* @@ -632,13 +686,9 @@ dag_open_live(const char *device, int snaplen, int promisc, int to_ms, char *ebu */ handle->selectable_fd = -1; -#ifdef linux - handle->md.device = (char *)device; - handle->md.timeout = to_ms; -#else - free((char *)device); - device = NULL; -#endif + if (newDev != NULL) { + free((char *)newDev); + } handle->read_op = dag_read; handle->inject_op = dag_inject; @@ -649,9 +699,38 @@ dag_open_live(const char *device, int snaplen, int promisc, int to_ms, char *ebu handle->setnonblock_op = dag_setnonblock; handle->stats_op = dag_stats; handle->close_op = dag_platform_close; - + handle->md.stat.ps_drop = 0; + handle->md.stat.ps_recv = 0; return handle; +#ifdef HAVE_DAG_STREAMS_API +failstop: + if (handle != NULL) { + if (dag_stop_stream(handle->fd, handle->md.dag_stream) < 0) + fprintf(stderr,"dag_stop_stream: %s\n", strerror(errno)); + } + +faildetach: + if (handle != NULL) { + if (dag_detach_stream(handle->fd, handle->md.dag_stream) < 0) + fprintf(stderr,"dag_detach_stream: %s\n", strerror(errno)); + } +#else +failstop: + if (handle != NULL) { + if (dag_stop(p->fd) < 0) + fprintf(stderr,"dag_stop: %s\n", strerror(errno)); + } +#endif /* HAVE_DAG_STREAMS_API */ + +failclose: + if (handle != NULL) { + if (dag_close(handle->fd) < 0) + fprintf(stderr,"dag_close: %s\n", strerror(errno)); + } + if (handle != NULL) + delete_pcap_dag(handle); + fail: if (newDev != NULL) { free((char *)newDev); @@ -806,81 +885,123 @@ dag_setnonblock(pcap_t *p, int nonblock, char *errbuf) static int dag_get_datalink(pcap_t *p) { - int daglinktype; + int index=0; + uint8_t types[255]; - if (p->dlt_list == NULL && (p->dlt_list = malloc(2*sizeof(*(p->dlt_list)))) == NULL) { + memset(types, 0, 255); + + if (p->dlt_list == NULL && (p->dlt_list = malloc(255*sizeof(*(p->dlt_list)))) == NULL) { (void)snprintf(p->errbuf, sizeof(p->errbuf), "malloc: %s", pcap_strerror(errno)); return (-1); } - /* Check the type through a dagapi call. */ - daglinktype = dag_linktype(p->fd); - - switch(daglinktype) { - - case TYPE_HDLC_POS: - case TYPE_COLOR_HDLC_POS: - if (p->dlt_list != NULL) { - p->dlt_count = 2; - p->dlt_list[0] = DLT_CHDLC; - p->dlt_list[1] = DLT_PPP_SERIAL; - p->dlt_list[2] = DLT_FRELAY; - } - p->linktype = DLT_CHDLC; - break; - - case TYPE_ETH: - case TYPE_COLOR_ETH: - /* - * This is (presumably) a real Ethernet capture; give it a - * link-layer-type list with DLT_EN10MB and DLT_DOCSIS, so - * that an application can let you choose it, in case you're - * capturing DOCSIS traffic that a Cisco Cable Modem - * Termination System is putting out onto an Ethernet (it - * doesn't put an Ethernet header onto the wire, it puts raw - * DOCSIS frames out on the wire inside the low-level - * Ethernet framing). - */ - if (p->dlt_list != NULL) { - p->dlt_count = 2; - p->dlt_list[0] = DLT_EN10MB; - p->dlt_list[1] = DLT_DOCSIS; - } - p->linktype = DLT_EN10MB; - break; - - case TYPE_AAL5: - case TYPE_ATM: - case TYPE_MC_ATM: - case TYPE_MC_AAL5: - if (p->dlt_list != NULL) { - p->dlt_count = 2; - p->dlt_list[0] = DLT_ATM_RFC1483; - p->dlt_list[1] = DLT_SUNATM; - } - p->linktype = DLT_ATM_RFC1483; - break; - - case TYPE_MC_HDLC: - if (p->dlt_list != NULL) { - p->dlt_count = 4; - p->dlt_list[0] = DLT_CHDLC; - p->dlt_list[1] = DLT_PPP_SERIAL; - p->dlt_list[2] = DLT_FRELAY; - p->dlt_list[3] = DLT_MTP2; - } - p->linktype = DLT_CHDLC; - break; - - case TYPE_LEGACY: - p->linktype = DLT_NULL; - break; - - default: - snprintf(p->errbuf, sizeof(p->errbuf), "unknown DAG linktype %d\n", daglinktype); - return (-1); + p->linktype = 0; +#ifdef HAVE_DAG_GET_ERF_TYPES + /* Get list of possible ERF types for this card */ + if (dag_get_erf_types(p->fd, types, 255) < 0) { + snprintf(p->errbuf, sizeof(p->errbuf), "dag_get_erf_types: %s", pcap_strerror(errno)); + return (-1); } + + while (types[index]) { +#else + /* Check the type through a dagapi call. */ + types[index] = dag_linktype(p->fd); + + { +#endif + switch(types[index]) { + + case TYPE_HDLC_POS: +#ifdef TYPE_COLOR_HDLC_POS + case TYPE_COLOR_HDLC_POS: +#endif +#ifdef TYPE_DSM_COLOR_HDLC_POS + case TYPE_DSM_COLOR_HDLC_POS: +#endif + if (p->dlt_list != NULL) { + p->dlt_list[index++] = DLT_CHDLC; + p->dlt_list[index++] = DLT_PPP_SERIAL; + p->dlt_list[index++] = DLT_FRELAY; + } + if(!p->linktype) + p->linktype = DLT_CHDLC; + break; + + case TYPE_ETH: +#ifdef TYPE_COLOR_ETH + case TYPE_COLOR_ETH: +#endif +#ifdef TYPE_DSM_COLOR_ETH + case TYPE_DSM_COLOR_ETH: +#endif + /* + * This is (presumably) a real Ethernet capture; give it a + * link-layer-type list with DLT_EN10MB and DLT_DOCSIS, so + * that an application can let you choose it, in case you're + * capturing DOCSIS traffic that a Cisco Cable Modem + * Termination System is putting out onto an Ethernet (it + * doesn't put an Ethernet header onto the wire, it puts raw + * DOCSIS frames out on the wire inside the low-level + * Ethernet framing). + */ + if (p->dlt_list != NULL) { + p->dlt_list[index++] = DLT_EN10MB; + p->dlt_list[index++] = DLT_DOCSIS; + } + if(!p->linktype) + p->linktype = DLT_EN10MB; + break; + + case TYPE_ATM: +#ifdef TYPE_AAL5 + case TYPE_AAL5: +#endif +#ifdef TYPE_MC_ATM + case TYPE_MC_ATM: +#endif +#ifdef TYPE_MC_AAL5 + case TYPE_MC_AAL5: +#endif + if (p->dlt_list != NULL) { + p->dlt_list[index++] = DLT_ATM_RFC1483; + p->dlt_list[index++] = DLT_SUNATM; + } + if(!p->linktype) + p->linktype = DLT_ATM_RFC1483; + break; + +#ifdef TYPE_COLOR_MC_HDLC_POS + case TYPE_COLOR_MC_HDLC_POS: +#endif +#ifdef TYPE_MC_HDLC + case TYPE_MC_HDLC: + if (p->dlt_list != NULL) { + p->dlt_list[index++] = DLT_CHDLC; + p->dlt_list[index++] = DLT_PPP_SERIAL; + p->dlt_list[index++] = DLT_FRELAY; + p->dlt_list[index++] = DLT_MTP2; + p->dlt_list[index++] = DLT_MTP2_WITH_PHDR; + } + if(!p->linktype) + p->linktype = DLT_CHDLC; + break; +#endif + + case TYPE_LEGACY: + if(!p->linktype) + p->linktype = DLT_NULL; + break; + + default: + snprintf(p->errbuf, sizeof(p->errbuf), "unknown DAG linktype %d", types[index]); + return (-1); + + } /* switch */ + } + + p->dlt_count = index; return p->linktype; } diff --git a/libpcap/pcap-dlpi.c b/libpcap/pcap-dlpi.c index 7416216a4..c29532a32 100644 --- a/libpcap/pcap-dlpi.c +++ b/libpcap/pcap-dlpi.c @@ -70,7 +70,7 @@ #ifndef lint static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/libpcap/pcap-dlpi.c,v 1.108.2.6 2005/08/13 23:15:58 guy Exp $ (LBL)"; + "@(#) $Header: /tcpdump/master/libpcap/pcap-dlpi.c,v 1.108.2.7 2006/04/04 05:33:02 guy Exp $ (LBL)"; #endif #ifdef HAVE_CONFIG_H @@ -396,6 +396,14 @@ pcap_inject_dlpi(pcap_t *p, const void *buf, size_t size) pcap_strerror(errno)); return (-1); } + /* + * putmsg() returns either 0 or -1; it doesn't indicate how + * many bytes were written (presumably they were all written + * or none of them were written). OpenBSD's pcap_inject() + * returns the number of bytes written, so, for API compatibility, + * we return the number of bytes we were told to write. + */ + ret = size; #else /* no raw mode */ /* * XXX - this is a pain, because you might have to extract @@ -894,7 +902,6 @@ pcap_open_live(const char *device, int snaplen, int promisc, int to_ms, goto bad; } } - #endif /* diff --git a/libpcap/pcap-int.h b/libpcap/pcap-int.h index dfa917064..3071c77f5 100644 --- a/libpcap/pcap-int.h +++ b/libpcap/pcap-int.h @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * @(#) $Header: /tcpdump/master/libpcap/pcap-int.h,v 1.68.2.6 2005/07/07 06:56:04 guy Exp $ (LBL) + * @(#) $Header: /tcpdump/master/libpcap/pcap-int.h,v 1.68.2.11 2007/06/22 06:43:58 guy Exp $ (LBL) */ #ifndef pcap_int_h @@ -43,7 +43,7 @@ extern "C" { #include #ifdef WIN32 -#include +#include #endif /* WIN32 */ #ifdef MSDOS @@ -51,6 +51,19 @@ extern "C" { #include #endif +/* + * Swap byte ordering of unsigned long long timestamp on a big endian + * machine. + */ +#define SWAPLL(ull) ((ull & 0xff00000000000000LL) >> 56) | \ + ((ull & 0x00ff000000000000LL) >> 40) | \ + ((ull & 0x0000ff0000000000LL) >> 24) | \ + ((ull & 0x000000ff00000000LL) >> 8) | \ + ((ull & 0x00000000ff000000LL) << 8) | \ + ((ull & 0x0000000000ff0000LL) << 24) | \ + ((ull & 0x000000000000ff00LL) << 40) | \ + ((ull & 0x00000000000000ffLL) << 56) + /* * Savefile */ @@ -88,6 +101,7 @@ struct pcap_md { int ifindex; /* interface index of device we're bound to */ int lo_ifindex; /* interface index of the loopback device */ struct pcap *next; /* list of open promiscuous sock_packet pcaps */ + u_int packets_read; /* count of packets read with recvfrom() */ #endif #ifdef HAVE_DAG_API @@ -110,8 +124,13 @@ struct pcap_md { /* * Ultrix, DEC OSF/1^H^H^H^H^H^H^H^H^HDigital UNIX^H^H^H^H^H^H^H^H^H^H^H^H - * Tru64 UNIX, and NetBSD pad to make everything line up on a nice boundary. + * Tru64 UNIX, and some versions of NetBSD pad FDDI packets to make everything + * line up on a nice boundary. */ +#ifdef __NetBSD__ +#include /* needed to declare __NetBSD_Version__ */ +#endif + #if defined(ultrix) || defined(__osf__) || (defined(__NetBSD__) && __NetBSD_Version__ > 106000000) #define PCAP_FDDIPAD 3 #endif @@ -188,9 +207,13 @@ struct pcap { }; /* - * This is a timeval as stored in disk in a dumpfile. + * This is a timeval as stored in a savefile. * It has to use the same types everywhere, independent of the actual - * `struct timeval' + * `struct timeval'; `struct timeval' has 32-bit tv_sec values on some + * platforms and 64-bit tv_sec values on other platforms, and writing + * out native `struct timeval' values would mean files could only be + * read on systems with the same tv_sec size as the system on which + * the file was written. */ struct pcap_timeval { @@ -199,7 +222,7 @@ struct pcap_timeval { }; /* - * How a `pcap_pkthdr' is actually stored in the dumpfile. + * This is a `pcap_pkthdr' as actually stored in a savefile. * * Do not change the format of this structure, in any way (this includes * changes that only affect the length of fields in this structure), @@ -231,7 +254,7 @@ struct pcap_sf_pkthdr { }; /* - * How a `pcap_pkthdr' is actually stored in dumpfiles written + * How a `pcap_pkthdr' is actually stored in savefiles written * by some patched versions of libpcap (e.g. the ones in Red * Hat Linux 6.1 and 6.2). * diff --git a/libpcap/pcap-linux.c b/libpcap/pcap-linux.c index b8ed1f345..e9db010d3 100644 --- a/libpcap/pcap-linux.c +++ b/libpcap/pcap-linux.c @@ -27,7 +27,7 @@ #ifndef lint static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/libpcap/pcap-linux.c,v 1.110.2.6 2005/08/16 04:25:26 guy Exp $ (LBL)"; + "@(#) $Header: /tcpdump/master/libpcap/pcap-linux.c,v 1.110.2.14 2006/10/12 17:26:58 guy Exp $ (LBL)"; #endif /* @@ -394,7 +394,16 @@ pcap_open_live(const char *device, int snaplen, int promisc, int to_ms, * * We can safely pass "recvfrom()" a byte count * based on the snapshot length. + * + * If we're in cooked mode, make the snapshot length + * large enough to hold a "cooked mode" header plus + * 1 byte of packet data (so we don't pass a byte + * count of 0 to "recvfrom()"). */ + if (handle->md.cooked) { + if (handle->snapshot < SLL_HDR_LEN + 1) + handle->snapshot = SLL_HDR_LEN + 1; + } handle->bufsize = handle->snapshot; } @@ -517,6 +526,22 @@ pcap_read_packet(pcap_t *handle, pcap_handler callback, u_char *userdata) #ifdef HAVE_PF_PACKET_SOCKETS if (!handle->md.sock_packet) { + /* + * Unfortunately, there is a window between socket() and + * bind() where the kernel may queue packets from any + * interface. If we're bound to a particular interface, + * discard packets not from that interface. + * + * (If socket filters are supported, we could do the + * same thing we do when changing the filter; however, + * that won't handle packet sockets without socket + * filter support, and it's a bit more complicated. + * It would save some instructions per packet, however.) + */ + if (handle->md.ifindex != -1 && + from.sll_ifindex != handle->md.ifindex) + return 0; + /* * Do checks based on packet direction. * We can only do this if we're using PF_PACKET; the @@ -657,7 +682,7 @@ pcap_read_packet(pcap_t *handle, pcap_handler callback, u_char *userdata) if (ioctl(handle->fd, SIOCGSTAMP, &pcap_header.ts) == -1) { snprintf(handle->errbuf, sizeof(handle->errbuf), - "ioctl: %s", pcap_strerror(errno)); + "SIOCGSTAMP: %s", pcap_strerror(errno)); return -1; } pcap_header.caplen = caplen; @@ -695,8 +720,18 @@ pcap_read_packet(pcap_t *handle, pcap_handler callback, u_char *userdata) * here, but it's not clear that always incrementing * the count is more expensive than always testing a flag * in memory. + * + * We keep the count in "md.packets_read", and use that for + * "ps_recv" if we can't get the statistics from the kernel. + * We do that because, if we *can* get the statistics from + * the kernel, we use "md.stat.ps_recv" and "md.stat.ps_drop" + * as running counts, as reading the statistics from the + * kernel resets the kernel statistics, and if we directly + * increment "md.stat.ps_recv" here, that means it will + * count packets *twice* on systems where we can get kernel + * statistics - once here, and once in pcap_stats_linux(). */ - handle->md.stat.ps_recv++; + handle->md.packets_read++; /* Call the user supplied callback function */ callback(userdata, &pcap_header, bp); @@ -770,6 +805,23 @@ pcap_stats_linux(pcap_t *handle, struct pcap_stat *stats) if (getsockopt(handle->fd, SOL_PACKET, PACKET_STATISTICS, &kstats, &len) > -1) { /* + * On systems where the PACKET_STATISTICS "getsockopt()" + * argument is supported on PF_PACKET sockets: + * + * "ps_recv" counts only packets that *passed* the + * filter, not packets that didn't pass the filter. + * This includes packets later dropped because we + * ran out of buffer space. + * + * "ps_drop" counts packets dropped because we ran + * out of buffer space. It doesn't count packets + * dropped by the interface driver. It counts only + * packets that passed the filter. + * + * Both statistics include packets not yet read from + * the kernel by libpcap, and thus not yet seen by + * the application. + * * In "linux/net/packet/af_packet.c", at least in the * 2.4.9 kernel, "tp_packets" is incremented for every * packet that passes the packet filter *and* is @@ -799,6 +851,8 @@ pcap_stats_linux(pcap_t *handle, struct pcap_stat *stats) */ handle->md.stat.ps_recv += kstats.tp_packets; handle->md.stat.ps_drop += kstats.tp_drops; + *stats = handle->md.stat; + return 0; } else { @@ -817,21 +871,6 @@ pcap_stats_linux(pcap_t *handle, struct pcap_stat *stats) } #endif /* - * On systems where the PACKET_STATISTICS "getsockopt()" argument - * is supported on PF_PACKET sockets: - * - * "ps_recv" counts only packets that *passed* the filter, - * not packets that didn't pass the filter. This includes - * packets later dropped because we ran out of buffer space. - * - * "ps_drop" counts packets dropped because we ran out of - * buffer space. It doesn't count packets dropped by the - * interface driver. It counts only packets that passed - * the filter. - * - * Both statistics include packets not yet read from the - * kernel by libpcap, and thus not yet seen by the application. - * * On systems where the PACKET_STATISTICS "getsockopt()" argument * is not supported on PF_PACKET sockets: * @@ -844,8 +883,14 @@ pcap_stats_linux(pcap_t *handle, struct pcap_stat *stats) * * "ps_recv" doesn't include packets not yet read from * the kernel by libpcap. + * + * We maintain the count of packets processed by libpcap in + * "md.packets_read", for reasons described in the comment + * at the end of pcap_read_packet(). We have no idea how many + * packets were dropped. */ - *stats = handle->md.stat; + stats->ps_recv = handle->md.packets_read; + stats->ps_drop = 0; return 0; } @@ -917,6 +962,7 @@ pcap_setfilter_linux(pcap_t *handle, struct bpf_program *filter) * sake of correctness I added this check. */ fprintf(stderr, "Warning: Filter too complex for kernel\n"); + fcode.len = 0; fcode.filter = NULL; can_filter_in_kernel = 0; } else @@ -1315,6 +1361,16 @@ static void map_arphrd_to_dlt(pcap_t *handle, int arptype, int cooked_ok) //handle->md.cooked = 1; break; + /* ARPHRD_LAPD is unofficial and randomly allocated, if reallocation + * is needed, please report it to */ +#ifndef ARPHRD_LAPD +#define ARPHRD_LAPD 8445 +#endif + case ARPHRD_LAPD: + /* Don't expect IP packet out of this interfaces... */ + handle->linktype = DLT_LINUX_LAPD; + break; + default: handle->linktype = -1; break; @@ -1396,6 +1452,7 @@ live_open_new(pcap_t *handle, const char *device, int promisc, if (handle->linktype == -1 || handle->linktype == DLT_LINUX_SLL || handle->linktype == DLT_LINUX_IRDA || + handle->linktype == DLT_LINUX_LAPD || (handle->linktype == DLT_EN10MB && (strncmp("isdn", device, 4) == 0 || strncmp("isdY", device, 4) == 0))) { @@ -1449,7 +1506,8 @@ live_open_new(pcap_t *handle, const char *device, int promisc, } /* IrDA capture is not a real "cooked" capture, * it's IrLAP frames, not IP packets. */ - if (handle->linktype != DLT_LINUX_IRDA) + if (handle->linktype != DLT_LINUX_IRDA && + handle->linktype != DLT_LINUX_LAPD) handle->linktype = DLT_LINUX_SLL; } @@ -1557,7 +1615,7 @@ iface_get_id(int fd, const char *device, char *ebuf) if (ioctl(fd, SIOCGIFINDEX, &ifr) == -1) { snprintf(ebuf, PCAP_ERRBUF_SIZE, - "ioctl: %s", pcap_strerror(errno)); + "SIOCGIFINDEX: %s", pcap_strerror(errno)); return -1; } @@ -1774,7 +1832,7 @@ live_open_old(pcap_t *handle, const char *device, int promisc, strncpy(ifr.ifr_name, device, sizeof(ifr.ifr_name)); if (ioctl(handle->fd, SIOCGIFFLAGS, &ifr) == -1) { snprintf(ebuf, PCAP_ERRBUF_SIZE, - "ioctl: %s", pcap_strerror(errno)); + "SIOCGIFFLAGS: %s", pcap_strerror(errno)); break; } if ((ifr.ifr_flags & IFF_PROMISC) == 0) { @@ -1808,7 +1866,7 @@ live_open_old(pcap_t *handle, const char *device, int promisc, ifr.ifr_flags |= IFF_PROMISC; if (ioctl(handle->fd, SIOCSIFFLAGS, &ifr) == -1) { snprintf(ebuf, PCAP_ERRBUF_SIZE, - "ioctl: %s", + "SIOCSIFFLAGS: %s", pcap_strerror(errno)); break; } @@ -1892,7 +1950,7 @@ iface_get_mtu(int fd, const char *device, char *ebuf) if (ioctl(fd, SIOCGIFMTU, &ifr) == -1) { snprintf(ebuf, PCAP_ERRBUF_SIZE, - "ioctl: %s", pcap_strerror(errno)); + "SIOCGIFMTU: %s", pcap_strerror(errno)); return -1; } @@ -1912,7 +1970,7 @@ iface_get_arptype(int fd, const char *device, char *ebuf) if (ioctl(fd, SIOCGIFHWADDR, &ifr) == -1) { snprintf(ebuf, PCAP_ERRBUF_SIZE, - "ioctl: %s", pcap_strerror(errno)); + "SIOCGIFHWADDR: %s", pcap_strerror(errno)); return -1; } @@ -2149,8 +2207,13 @@ set_kernel_filter(pcap_t *handle, struct sock_fprog *fcode) static int reset_kernel_filter(pcap_t *handle) { - /* setsockopt() barfs unless it get a dummy parameter */ - int dummy; + /* + * setsockopt() barfs unless it get a dummy parameter. + * valgrind whines unless the value is initialized, + * as it has no idea that setsockopt() ignores its + * parameter. + */ + int dummy = 0; return setsockopt(handle->fd, SOL_SOCKET, SO_DETACH_FILTER, &dummy, sizeof(dummy)); diff --git a/libpcap/pcap-win32.c b/libpcap/pcap-win32.c index 1a75d43d5..435da6658 100644 --- a/libpcap/pcap-win32.c +++ b/libpcap/pcap-win32.c @@ -1,6 +1,6 @@ /* - * Copyright (c) 1999 - 2003 - * NetGroup, Politecnico di Torino (Italy) + * Copyright (c) 1999 - 2005 NetGroup, Politecnico di Torino (Italy) + * Copyright (c) 2005 - 2007 CACE Technologies, Davis (California) * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -12,9 +12,10 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Politecnico di Torino nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. + * 3. Neither the name of the Politecnico di Torino, CACE Technologies + * nor the names of its contributors may be used to endorse or promote + * products derived from this software without specific prior written + * permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT @@ -32,11 +33,11 @@ #ifndef lint static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/libpcap/pcap-win32.c,v 1.25.2.3 2005/07/10 17:52:54 risso Exp $ (LBL)"; + "@(#) $Header: /tcpdump/master/libpcap/pcap-win32.c,v 1.25.2.7 2007/06/14 22:07:14 gianluca Exp $ (LBL)"; #endif #include -#include +#include #include #ifdef HAVE_DAG_API #include @@ -486,14 +487,41 @@ pcap_open_live(const char *device, int snaplen, int promisc, int to_ms, p->linktype = DLT_NULL; break; + case NdisMediumBare80211: + p->linktype = DLT_IEEE802_11; + break; + + case NdisMediumRadio80211: + p->linktype = DLT_IEEE802_11_RADIO; + break; + + case NdisMediumPpi: + p->linktype = DLT_PPI; + break; + default: p->linktype = DLT_EN10MB; /*an unknown adapter is assumed to be ethernet*/ break; } - /* Set promisquous mode */ - if (promisc) PacketSetHwFilter(p->adapter,NDIS_PACKET_TYPE_PROMISCUOUS); - else PacketSetHwFilter(p->adapter,NDIS_PACKET_TYPE_ALL_LOCAL); + /* Set promiscuous mode */ + if (promisc) + { + + if (PacketSetHwFilter(p->adapter,NDIS_PACKET_TYPE_PROMISCUOUS) == FALSE) + { + snprintf(ebuf, PCAP_ERRBUF_SIZE, "failed to set hardware filter to promiscuous mode"); + goto bad; + } + } + else + { + if (PacketSetHwFilter(p->adapter,NDIS_PACKET_TYPE_ALL_LOCAL) == FALSE) + { + snprintf(ebuf, PCAP_ERRBUF_SIZE, "failed to set hardware filter to non-promiscuous mode"); + goto bad; + } + } /* Set the buffer size */ p->bufsize = PcapBufSize; diff --git a/libpcap/pcap.3 b/libpcap/pcap.3 index 727a53eee..94b1f6a55 100644 --- a/libpcap/pcap.3 +++ b/libpcap/pcap.3 @@ -1,4 +1,4 @@ -.\" @(#) $Header: /tcpdump/master/libpcap/pcap.3,v 1.64.2.8 2005/09/07 08:29:17 guy Exp $ +.\" @(#) $Header: /tcpdump/master/libpcap/pcap.3,v 1.64.2.11 2007/06/11 09:52:05 guy Exp $ .\" .\" Copyright (c) 1994, 1996, 1997 .\" The Regents of the University of California. All rights reserved. @@ -77,7 +77,7 @@ u_char *sp) .ft B int pcap_compile(pcap_t *p, struct bpf_program *fp, .ti +8 -char *str, int optimize, bpf_u_int32 netmask) +const char *str, int optimize, bpf_u_int32 netmask) int pcap_setfilter(pcap_t *p, struct bpf_program *fp) void pcap_freecode(struct bpf_program *) int pcap_setdirection(pcap_t *p, pcap_direction_t d) @@ -116,7 +116,7 @@ int pcap_fileno(pcap_t *p) int pcap_get_selectable_fd(pcap_t *p); void pcap_perror(pcap_t *p, char *prefix) char *pcap_geterr(pcap_t *p) -char *pcap_strerror(int error) +const char *pcap_strerror(int error) const char *pcap_lib_version(void) .ft .LP @@ -1079,6 +1079,11 @@ and type bytes. Linux-IrDA packets, with a .B DLT_LINUX_SLL header followed by the IrLAP header. +.TP 5 +.B DLT_LINUX_LAPD +LAPD (Q.921) frames, with a +.B DLT_LINUX_SLL +header captured via vISDN. .RE .PP .B pcap_list_datalinks() @@ -1140,12 +1145,13 @@ or NULL, if a network device was opened with .BR pcap_open_live() . .PP .B pcap_stats() -returns 0 and fills in a +returns 0 and fills in the .B pcap_stat -struct. The values represent packet statistics from the start of the -run to the time of the call. If there is an error or the underlying -packet capture doesn't support packet statistics, \-1 is returned and -the error text can be obtained with +structure pointed to by its second argument. The values represent +packet statistics from the start of the run to the time of the call. If +there is an error or the underlying packet capture doesn't support +packet statistics, \-1 is returned and the error text can be obtained +with .B pcap_perror() or .BR pcap_geterr() . diff --git a/libpcap/pcap.c b/libpcap/pcap.c index c89cbc115..05ba1418c 100644 --- a/libpcap/pcap.c +++ b/libpcap/pcap.c @@ -33,7 +33,7 @@ #ifndef lint static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/libpcap/pcap.c,v 1.88.2.8 2005/08/13 22:29:46 hannes Exp $ (LBL)"; + "@(#) $Header: /tcpdump/master/libpcap/pcap.c,v 1.88.2.17 2007/06/22 06:43:58 guy Exp $ (LBL)"; #endif #ifdef HAVE_CONFIG_H @@ -354,30 +354,40 @@ static struct dlt_choice dlt_choices[] = { DLT_CHOICE(DLT_ARCNET_LINUX, "Linux ARCNET"), DLT_CHOICE(DLT_DOCSIS, "DOCSIS"), DLT_CHOICE(DLT_LINUX_IRDA, "Linux IrDA"), + DLT_CHOICE(DLT_LINUX_LAPD, "Linux vISDN LAPD"), DLT_CHOICE(DLT_IEEE802_11_RADIO_AVS, "802.11 plus AVS radio information header"), DLT_CHOICE(DLT_SYMANTEC_FIREWALL, "Symantec Firewall"), DLT_CHOICE(DLT_JUNIPER_ATM1, "Juniper ATM1 PIC"), DLT_CHOICE(DLT_JUNIPER_ATM2, "Juniper ATM2 PIC"), DLT_CHOICE(DLT_JUNIPER_MLPPP, "Juniper Multi-Link PPP"), - DLT_CHOICE(DLT_PPP_PPPD, "PPP for pppd, with direction flag"), - DLT_CHOICE(DLT_JUNIPER_PPPOE, "Juniper PPPoE"), - DLT_CHOICE(DLT_JUNIPER_PPPOE_ATM, "Juniper PPPoE/ATM"), - DLT_CHOICE(DLT_GPRS_LLC, "GPRS LLC"), - DLT_CHOICE(DLT_GPF_T, "GPF-T"), - DLT_CHOICE(DLT_GPF_F, "GPF-F"), - DLT_CHOICE(DLT_JUNIPER_PIC_PEER, "Juniper PIC Peer"), - DLT_CHOICE(DLT_JUNIPER_MLFR, "Juniper Multi-Link Frame Relay"), + DLT_CHOICE(DLT_PPP_PPPD, "PPP for pppd, with direction flag"), + DLT_CHOICE(DLT_JUNIPER_PPPOE, "Juniper PPPoE"), + DLT_CHOICE(DLT_JUNIPER_PPPOE_ATM, "Juniper PPPoE/ATM"), + DLT_CHOICE(DLT_GPRS_LLC, "GPRS LLC"), + DLT_CHOICE(DLT_GPF_T, "GPF-T"), + DLT_CHOICE(DLT_GPF_F, "GPF-F"), + DLT_CHOICE(DLT_JUNIPER_PIC_PEER, "Juniper PIC Peer"), + DLT_CHOICE(DLT_JUNIPER_MLFR, "Juniper Multi-Link Frame Relay"), DLT_CHOICE(DLT_ERF_ETH, "Ethernet with Endace ERF header"), DLT_CHOICE(DLT_ERF_POS, "Packet-over-SONET with Endace ERF header"), DLT_CHOICE(DLT_JUNIPER_GGSN, "Juniper GGSN PIC"), DLT_CHOICE(DLT_JUNIPER_ES, "Juniper Encryption Services PIC"), DLT_CHOICE(DLT_JUNIPER_MONITOR, "Juniper Passive Monitor PIC"), DLT_CHOICE(DLT_JUNIPER_SERVICES, "Juniper Advanced Services PIC"), - DLT_CHOICE(DLT_JUNIPER_MFR, "Juniper FRF.16 Frame Relay"), - DLT_CHOICE(DLT_JUNIPER_ETHER, "Juniper Ethernet"), - DLT_CHOICE(DLT_JUNIPER_PPP, "Juniper PPP"), - DLT_CHOICE(DLT_JUNIPER_FRELAY, "Juniper Frame Relay"), - DLT_CHOICE(DLT_JUNIPER_CHDLC, "Juniper C-HDLC"), + DLT_CHOICE(DLT_JUNIPER_MFR, "Juniper FRF.16 Frame Relay"), + DLT_CHOICE(DLT_JUNIPER_ETHER, "Juniper Ethernet"), + DLT_CHOICE(DLT_JUNIPER_PPP, "Juniper PPP"), + DLT_CHOICE(DLT_JUNIPER_FRELAY, "Juniper Frame Relay"), + DLT_CHOICE(DLT_JUNIPER_CHDLC, "Juniper C-HDLC"), + DLT_CHOICE(DLT_MFR, "FRF.16 Frame Relay"), + DLT_CHOICE(DLT_JUNIPER_VP, "Juniper Voice PIC"), + DLT_CHOICE(DLT_MTP2, "SS7 MTP2"), + DLT_CHOICE(DLT_A429, "Arinc 429"), + DLT_CHOICE(DLT_A653_ICM, "Arinc 653 Interpartition Communication"), + DLT_CHOICE(DLT_USB, "USB"), + DLT_CHOICE(DLT_BLUETOOTH_HCI_H4, "Bluetooth HCI UART transport layer"), + DLT_CHOICE(DLT_CAN20B, "Controller Area Network (CAN) v. 2.0B"), + DLT_CHOICE(DLT_MTP2_WITH_PHDR, "SS7 MTP2 with Pseudo-header"), DLT_CHOICE_SENTINEL }; @@ -457,8 +467,8 @@ int pcap_strcasecmp(const char *s1, const char *s2) { register const u_char *cm = charmap, - *us1 = (u_char *)s1, - *us2 = (u_char *)s2; + *us1 = (const u_char *)s1, + *us2 = (const u_char *)s2; while (cm[*us1] == cm[*us2++]) if (*us1++ == '\0') @@ -671,7 +681,7 @@ pcap_win32strerror(void) /* * Not all systems have strerror(). */ -char * +const char * pcap_strerror(int errnum) { #ifdef HAVE_STRERROR @@ -807,7 +817,7 @@ pcap_close(pcap_t *p) #ifdef HAVE_VERSION_H #include "version.h" #else -static const char pcap_version_string[] = "libpcap version 0.9[.x]"; +static const char pcap_version_string[] = "libpcap version 0.9.7"; #endif #ifdef WIN32 @@ -816,7 +826,7 @@ static const char pcap_version_string[] = "libpcap version 0.9[.x]"; * version numbers when building WinPcap. (It'd be nice to do so for * the packet.dll version number as well.) */ -static const char wpcap_version_string[] = "3.1"; +static const char wpcap_version_string[] = "4.0"; static const char pcap_version_string_fmt[] = "WinPcap version %s, based on %s"; static const char pcap_version_string_packet_dll_fmt[] = diff --git a/libpcap/pcap.h b/libpcap/pcap.h index 32eeaae3c..9c8767e25 100644 --- a/libpcap/pcap.h +++ b/libpcap/pcap.h @@ -31,7 +31,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * @(#) $Header: /tcpdump/master/libpcap/pcap.h,v 1.52.2.5 2005/07/07 02:04:36 guy Exp $ (LBL) + * @(#) $Header: /tcpdump/master/libpcap/pcap.h,v 1.52.2.7 2007/06/11 09:52:05 guy Exp $ (LBL) */ #ifndef lib_pcap_h @@ -127,9 +127,16 @@ typedef enum { } pcap_direction_t; /* - * Each packet in the dump file is prepended with this generic header. - * This gets around the problem of different headers for different - * packet interfaces. + * Generic per-packet information, as supplied by libpcap. + * + * The time stamp can and should be a "struct timeval", regardless of + * whether your system supports 32-bit tv_sec in "struct timeval", + * 64-bit tv_sec in "struct timeval", or both if it supports both 32-bit + * and 64-bit applications. The on-disk format of savefiles uses 32-bit + * tv_sec (and tv_usec); this structure is irrelevant to that. 32-bit + * and 64-bit versions of libpcap, even if they're on the same platform, + * should supply the appropriate version of "struct timeval", even if + * that's not what the underlying packet capture mechanism supplies. */ struct pcap_pkthdr { struct timeval ts; /* time stamp */ @@ -230,12 +237,12 @@ int pcap_setnonblock(pcap_t *, int, char *); void pcap_perror(pcap_t *, char *); int pcap_inject(pcap_t *, const void *, size_t); int pcap_sendpacket(pcap_t *, const u_char *, int); -char *pcap_strerror(int); +const char *pcap_strerror(int); char *pcap_geterr(pcap_t *); -int pcap_compile(pcap_t *, struct bpf_program *, char *, int, +int pcap_compile(pcap_t *, struct bpf_program *, const char *, int, bpf_u_int32); int pcap_compile_nopcap(int, int, struct bpf_program *, - char *, int, bpf_u_int32); + const char *, int, bpf_u_int32); void pcap_freecode(struct bpf_program *); int pcap_datalink(pcap_t *); int pcap_list_datalinks(pcap_t *, int **); diff --git a/libpcap/savefile.c b/libpcap/savefile.c index 52302c914..b8658502c 100644 --- a/libpcap/savefile.c +++ b/libpcap/savefile.c @@ -30,7 +30,7 @@ #ifndef lint static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/libpcap/savefile.c,v 1.126.2.13 2005/08/29 21:05:45 guy Exp $ (LBL)"; + "@(#) $Header: /tcpdump/master/libpcap/savefile.c,v 1.126.2.27 2007/07/19 06:20:53 guy Exp $ (LBL)"; #endif #ifdef HAVE_CONFIG_H @@ -430,6 +430,107 @@ static const char rcsid[] _U_ = #define LINKTYPE_JUNIPER_FRELAY 180 #define LINKTYPE_JUNIPER_CHDLC 181 +/* + * Multi Link Frame Relay (FRF.16) + */ +#define LINKTYPE_MFR 182 + +/* + * Juniper-private data link type, as per request from + * Hannes Gredler . + * The DLT_ is used for internal communication with a + * voice Adapter Card (PIC) + */ +#define LINKTYPE_JUNIPER_VP 183 + +/* + * Arinc 429 frames. + * DLT_ requested by Gianluca Varenni . + * Every frame contains a 32bit A429 label. + * More documentation on Arinc 429 can be found at + * http://www.condoreng.com/support/downloads/tutorials/ARINCTutorial.pdf + */ +#define LINKTYPE_A429 184 + +/* + * Arinc 653 Interpartition Communication messages. + * DLT_ requested by Gianluca Varenni . + * Please refer to the A653-1 standard for more information. + */ +#define LINKTYPE_A653_ICM 185 + +/* + * USB packets, beginning with a USB setup header; requested by + * Paolo Abeni . + */ +#define LINKTYPE_USB 186 + +/* + * Bluetooth HCI UART transport layer (part H:4); requested by + * Paolo Abeni. + */ +#define LINKTYPE_BLUETOOTH_HCI_H4 187 + +/* + * IEEE 802.16 MAC Common Part Sublayer; requested by Maria Cruz + * . + */ +#define LINKTYPE_IEEE802_16_MAC_CPS 188 + +/* + * USB packets, beginning with a Linux USB header; requested by + * Paolo Abeni . + */ +#define LINKTYPE_USB_LINUX 189 + +/* + * Controller Area Network (CAN) v. 2.0B packets. + * DLT_ requested by Gianluca Varenni . + * Used to dump CAN packets coming from a CAN Vector board. + * More documentation on the CAN v2.0B frames can be found at + * http://www.can-cia.org/downloads/?269 + */ +#define LINKTYPE_CAN20B 190 + +/* + * IEEE 802.15.4, with address fields padded, as is done by Linux + * drivers; requested by Juergen Schimmer. + */ +#define LINKTYPE_IEEE802_15_4_LINUX 191 + +/* + * Per Packet Information encapsulated packets. + * LINKTYPE_ requested by Gianluca Varenni . + */ +#define LINKTYPE_PPI 192 + +/* + * Header for 802.16 MAC Common Part Sublayer plus a radiotap radio header; + * requested by Charles Clancy. + */ +#define LINKTYPE_IEEE802_16_MAC_CPS_RADIO 193 + +/* + * Juniper-private data link type, as per request from + * Hannes Gredler . + * The DLT_ is used for internal communication with a + * integrated service module (ISM). + */ +#define LINKTYPE_JUNIPER_ISM 194 + +/* + * IEEE 802.15.4, exactly as it appears in the spec (no padding, no + * nothing); requested by Mikko Saarnivala . + */ +#define LINKTYPE_IEEE802_15_4 195 + +/* + * Various link-layer types, with a pseudo-header, for SITA + * (http://www.sita.aero/); requested by Fulko Hew (fulko.hew@gmail.com). + */ +#define LINKTYPE_SITA 196 + + static struct linktype_map { int dlt; int linktype; @@ -635,6 +736,50 @@ static struct linktype_map { { DLT_JUNIPER_FRELAY, LINKTYPE_JUNIPER_FRELAY }, { DLT_JUNIPER_CHDLC, LINKTYPE_JUNIPER_CHDLC }, + /* Multi Link Frame Relay (FRF.16) */ + { DLT_MFR, LINKTYPE_MFR }, + + /* Juniper Voice PIC */ + { DLT_JUNIPER_VP, LINKTYPE_JUNIPER_VP }, + + /* Controller Area Network (CAN) v2.0B */ + { DLT_A429, LINKTYPE_A429 }, + + /* Arinc 653 Interpartition Communication messages */ + { DLT_A653_ICM, LINKTYPE_A653_ICM }, + + /* USB */ + { DLT_USB, LINKTYPE_USB }, + + /* Bluetooth HCI UART transport layer */ + { DLT_BLUETOOTH_HCI_H4, LINKTYPE_BLUETOOTH_HCI_H4 }, + + /* IEEE 802.16 MAC Common Part Sublayer */ + { DLT_IEEE802_16_MAC_CPS, LINKTYPE_IEEE802_16_MAC_CPS }, + + /* USB with Linux header */ + { DLT_USB_LINUX, LINKTYPE_USB_LINUX }, + + /* Controller Area Network (CAN) v2.0B */ + { DLT_CAN20B, LINKTYPE_CAN20B }, + + /* IEEE 802.15.4 with address fields padded */ + { DLT_IEEE802_15_4_LINUX, LINKTYPE_IEEE802_15_4_LINUX }, + + /* Per Packet Information encapsulated packets */ + { DLT_PPI, LINKTYPE_PPI }, + + /* IEEE 802.16 MAC Common Part Sublayer plus radiotap header */ + { DLT_IEEE802_16_MAC_CPS_RADIO, LINKTYPE_IEEE802_16_MAC_CPS_RADIO }, + + /* Juniper Voice ISM */ + { DLT_JUNIPER_ISM, LINKTYPE_JUNIPER_ISM }, + + /* IEEE 802.15.4 exactly as it appears in the spec */ + { DLT_IEEE802_15_4, LINKTYPE_IEEE802_15_4 }, + + /* Various link-layer types for SITA */ + { DLT_SITA, LINKTYPE_SITA }, { -1, -1 } }; @@ -870,6 +1015,28 @@ pcap_fopen_offline(FILE *fp, char *errbuf) p->tzoff = hdr.thiszone; p->snapshot = hdr.snaplen; p->linktype = linktype_to_dlt(hdr.linktype); + if (magic == KUZNETZOV_TCPDUMP_MAGIC && p->linktype == DLT_EN10MB) { + /* + * This capture might have been done in raw mode or cooked + * mode. + * + * If it was done in cooked mode, p->snapshot was passed + * to recvfrom() as the buffer size, meaning that the + * most packet data that would be copied would be + * p->snapshot. However, a faked Ethernet header would + * then have been added to it, so the most data that would + * be in a packet in the file would be p->snapshot + 14. + * + * We can't easily tell whether the capture was done in + * raw mode or cooked mode, so we'll assume it was + * cooked mode, and add 14 to the snapshot length. That + * means that, for a raw capture, the snapshot length will + * be misleading if you use it to figure out why a capture + * doesn't have all the packet data, but there's not much + * we can do to avoid that. + */ + p->snapshot += 14; + } p->sf.rfile = fp; #ifndef WIN32 p->bufsize = hdr.snaplen; @@ -1177,7 +1344,7 @@ pcap_dump(u_char *user, const struct pcap_pkthdr *h, const u_char *sp) sf_hdr.len = h->len; /* XXX we should check the return status */ (void)fwrite(&sf_hdr, sizeof(sf_hdr), 1, f); - (void)fwrite((char *)sp, h->caplen, 1, f); + (void)fwrite(sp, h->caplen, 1, f); } static pcap_dumper_t * diff --git a/libpcap/scanner.c b/libpcap/scanner.c index 1b3dd5fe1..79c46e616 100644 --- a/libpcap/scanner.c +++ b/libpcap/scanner.c @@ -1,31 +1,92 @@ -/* A lexical scanner generated by flex*/ -/* Scanner skeleton version: - * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $ - */ +#line 3 "" + +#define YY_INT_ALIGNED short int + +/* A lexical scanner generated by flex */ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 5 +#define YY_FLEX_SUBMINOR_VERSION 33 +#if YY_FLEX_SUBMINOR_VERSION > 0 +#define FLEX_BETA +#endif +/* First, we deal with platform-specific or compiler-specific issues. */ + +/* begin standard C headers. */ #include -#include - - -/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */ -#ifdef c_plusplus -#ifndef __cplusplus -#define __cplusplus -#endif -#endif - - -#ifdef __cplusplus - +#include +#include #include -/* Use prototypes in function declarations. */ -#define YY_USE_PROTOS +/* end standard C headers. */ + +/* flex integer type definitions */ + +#ifndef FLEXINT_H +#define FLEXINT_H + +/* C99 systems have . Non-C99 systems may or may not. */ + +#if __STDC_VERSION__ >= 199901L + +/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, + * if you want the limit (max/min) macros for int types. + */ +#ifndef __STDC_LIMIT_MACROS +#define __STDC_LIMIT_MACROS 1 +#endif + +#include +typedef int8_t flex_int8_t; +typedef uint8_t flex_uint8_t; +typedef int16_t flex_int16_t; +typedef uint16_t flex_uint16_t; +typedef int32_t flex_int32_t; +typedef uint32_t flex_uint32_t; +#else +typedef signed char flex_int8_t; +typedef short int flex_int16_t; +typedef int flex_int32_t; +typedef unsigned char flex_uint8_t; +typedef unsigned short int flex_uint16_t; +typedef unsigned int flex_uint32_t; +#endif /* ! C99 */ + +/* Limits of integral types. */ +#ifndef INT8_MIN +#define INT8_MIN (-128) +#endif +#ifndef INT16_MIN +#define INT16_MIN (-32767-1) +#endif +#ifndef INT32_MIN +#define INT32_MIN (-2147483647-1) +#endif +#ifndef INT8_MAX +#define INT8_MAX (127) +#endif +#ifndef INT16_MAX +#define INT16_MAX (32767) +#endif +#ifndef INT32_MAX +#define INT32_MAX (2147483647) +#endif +#ifndef UINT8_MAX +#define UINT8_MAX (255U) +#endif +#ifndef UINT16_MAX +#define UINT16_MAX (65535U) +#endif +#ifndef UINT32_MAX +#define UINT32_MAX (4294967295U) +#endif + +#endif /* ! FLEXINT_H */ + +#ifdef __cplusplus /* The "const" storage-class-modifier is valid. */ #define YY_USE_CONST @@ -34,34 +95,17 @@ #if __STDC__ -#define YY_USE_PROTOS #define YY_USE_CONST #endif /* __STDC__ */ #endif /* ! __cplusplus */ -#ifdef __TURBOC__ - #pragma warn -rch - #pragma warn -use -#include -#include -#define YY_USE_CONST -#define YY_USE_PROTOS -#endif - #ifdef YY_USE_CONST #define yyconst const #else #define yyconst #endif - -#ifdef YY_USE_PROTOS -#define YY_PROTO(proto) proto -#else -#define YY_PROTO(proto) () -#endif - /* Returned upon end-of-file. */ #define YY_NULL 0 @@ -76,80 +120,75 @@ * but we do it the disgusting crufty way forced on us by the ()-less * definition of BEGIN. */ -#define BEGIN yy_start = 1 + 2 * +#define BEGIN (yy_start) = 1 + 2 * /* Translate the current start state into a value that can be later handed * to BEGIN to return to the state. The YYSTATE alias is for lex * compatibility. */ -#define YY_START ((yy_start - 1) / 2) +#define YY_START (((yy_start) - 1) / 2) #define YYSTATE YY_START /* Action number for EOF rule of a given start state. */ #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) /* Special action meaning "start processing a new file". */ -#define YY_NEW_FILE yyrestart( yyin ) +#define YY_NEW_FILE pcap_restart(pcap_in ) #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ +#ifndef YY_BUF_SIZE #define YY_BUF_SIZE 16384 +#endif +/* The state buf must be large enough to hold one state per character in the main buffer. + */ +#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) + +#ifndef YY_TYPEDEF_YY_BUFFER_STATE +#define YY_TYPEDEF_YY_BUFFER_STATE typedef struct yy_buffer_state *YY_BUFFER_STATE; +#endif -extern int yyleng; -extern FILE *yyin, *yyout; +extern int pcap_leng; + +extern FILE *pcap_in, *pcap_out; #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 -/* The funky do-while in the following #define is used to turn the definition - * int a single C statement (which needs a semi-colon terminator). This - * avoids problems with code like: - * - * if ( condition_holds ) - * yyless( 5 ); - * else - * do_something_else(); - * - * Prior to using the do-while the compiler would get upset at the - * "else" because it interpreted the "if" statement as being all - * done when it reached the ';' after the yyless() call. - */ - -/* Return all but the first 'n' matched characters back to the input stream. */ - + #define YY_LESS_LINENO(n) + +/* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ do \ { \ - /* Undo effects of setting up yytext. */ \ - *yy_cp = yy_hold_char; \ + /* Undo effects of setting up pcap_text. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + *yy_cp = (yy_hold_char); \ YY_RESTORE_YY_MORE_OFFSET \ - yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ + (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ + YY_DO_BEFORE_ACTION; /* set up pcap_text again */ \ } \ while ( 0 ) -#define unput(c) yyunput( c, yytext_ptr ) - -/* Some routines like yy_flex_realloc() are emitted as static but are - not called by all lexers. This generates warnings in some compilers, - notably GCC. Arrange to suppress these. */ -#ifdef __GNUC__ -#define YY_MAY_BE_UNUSED __attribute__((unused)) -#else -#define YY_MAY_BE_UNUSED -#endif +#define unput(c) yyunput( c, (yytext_ptr) ) /* The following is because we cannot portably get our hands on size_t * (without autoconf's help, which isn't available because we want * flex-generated scanners to compile on their own). */ + +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T typedef unsigned int yy_size_t; +#endif - +#ifndef YY_STRUCT_YY_BUFFER_STATE +#define YY_STRUCT_YY_BUFFER_STATE struct yy_buffer_state { FILE *yy_input_file; @@ -186,12 +225,16 @@ struct yy_buffer_state */ int yy_at_bol; + int yy_bs_lineno; /**< The line count. */ + int yy_bs_column; /**< The column count. */ + /* Whether to try to fill the input buffer when we reach the * end of it. */ int yy_fill_buffer; int yy_buffer_status; + #define YY_BUFFER_NEW 0 #define YY_BUFFER_NORMAL 1 /* When an EOF's been seen but there's still some text to process @@ -201,249 +244,285 @@ struct yy_buffer_state * possible backing-up. * * When we actually see the EOF, we change the status to "new" - * (via yyrestart()), so that the user can continue scanning by - * just pointing yyin at a new input file. + * (via pcap_restart()), so that the user can continue scanning by + * just pointing pcap_in at a new input file. */ #define YY_BUFFER_EOF_PENDING 2 - }; -static YY_BUFFER_STATE yy_current_buffer = 0; + }; +#endif /* !YY_STRUCT_YY_BUFFER_STATE */ + +/* Stack of input buffers. */ +static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ +static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ +static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ /* We provide macros for accessing buffer states in case in the * future we want to put the buffer states in a more general * "scanner state". + * + * Returns the top of the stack, or NULL. */ -#define YY_CURRENT_BUFFER yy_current_buffer +#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ + ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ + : NULL) +/* Same as previous macro, but useful when we know that the buffer stack is not + * NULL or when we need an lvalue. For internal use only. + */ +#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] -/* yy_hold_char holds the character lost when yytext is formed. */ +/* yy_hold_char holds the character lost when pcap_text is formed. */ static char yy_hold_char; - static int yy_n_chars; /* number of characters read into yy_ch_buf */ - - -int yyleng; +int pcap_leng; /* Points to current character in buffer. */ static char *yy_c_buf_p = (char *) 0; -static int yy_init = 1; /* whether we need to initialize */ +static int yy_init = 0; /* whether we need to initialize */ static int yy_start = 0; /* start state number */ -/* Flag which is used to allow yywrap()'s to do buffer switches - * instead of setting up a fresh yyin. A bit of a hack ... +/* Flag which is used to allow pcap_wrap()'s to do buffer switches + * instead of setting up a fresh pcap_in. A bit of a hack ... */ static int yy_did_buffer_switch_on_eof; -void yyrestart YY_PROTO(( FILE *input_file )); +void pcap_restart (FILE *input_file ); +void pcap__switch_to_buffer (YY_BUFFER_STATE new_buffer ); +YY_BUFFER_STATE pcap__create_buffer (FILE *file,int size ); +void pcap__delete_buffer (YY_BUFFER_STATE b ); +void pcap__flush_buffer (YY_BUFFER_STATE b ); +void pcap_push_buffer_state (YY_BUFFER_STATE new_buffer ); +void pcap_pop_buffer_state (void ); -void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer )); -void yy_load_buffer_state YY_PROTO(( void )); -YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size )); -void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b )); -void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file )); -void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b )); -#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer ) +static void pcap_ensure_buffer_stack (void ); +static void pcap__load_buffer_state (void ); +static void pcap__init_buffer (YY_BUFFER_STATE b,FILE *file ); -YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size )); -YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str )); -YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len )); +#define YY_FLUSH_BUFFER pcap__flush_buffer(YY_CURRENT_BUFFER ) -static void *yy_flex_alloc YY_PROTO(( yy_size_t )); -static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )) YY_MAY_BE_UNUSED; -static void yy_flex_free YY_PROTO(( void * )); +YY_BUFFER_STATE pcap__scan_buffer (char *base,yy_size_t size ); +YY_BUFFER_STATE pcap__scan_string (yyconst char *yy_str ); +YY_BUFFER_STATE pcap__scan_bytes (yyconst char *bytes,int len ); -#define yy_new_buffer yy_create_buffer +void *pcap_alloc (yy_size_t ); +void *pcap_realloc (void *,yy_size_t ); +void pcap_free (void * ); + +#define yy_new_buffer pcap__create_buffer #define yy_set_interactive(is_interactive) \ { \ - if ( ! yy_current_buffer ) \ - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ - yy_current_buffer->yy_is_interactive = is_interactive; \ + if ( ! YY_CURRENT_BUFFER ){ \ + pcap_ensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + pcap__create_buffer(pcap_in,YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ } #define yy_set_bol(at_bol) \ { \ - if ( ! yy_current_buffer ) \ - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ - yy_current_buffer->yy_at_bol = at_bol; \ + if ( ! YY_CURRENT_BUFFER ){\ + pcap_ensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + pcap__create_buffer(pcap_in,YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ } -#define YY_AT_BOL() (yy_current_buffer->yy_at_bol) +#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) + +/* Begin user sect3 */ typedef unsigned char YY_CHAR; -FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; -typedef int yy_state_type; -extern char *yytext; -#define yytext_ptr yytext -static yy_state_type yy_get_previous_state YY_PROTO(( void )); -static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state )); -static int yy_get_next_buffer YY_PROTO(( void )); -static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); +FILE *pcap_in = (FILE *) 0, *pcap_out = (FILE *) 0; + +typedef int yy_state_type; + +extern int pcap_lineno; + +int pcap_lineno = 1; + +extern char *pcap_text; +#define yytext_ptr pcap_text + +static yy_state_type yy_get_previous_state (void ); +static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); +static int yy_get_next_buffer (void ); +static void yy_fatal_error (yyconst char msg[] ); /* Done after the current pattern has been matched and before the - * corresponding action - sets up yytext. + * corresponding action - sets up pcap_text. */ #define YY_DO_BEFORE_ACTION \ - yytext_ptr = yy_bp; \ - yyleng = (int) (yy_cp - yy_bp); \ - yy_hold_char = *yy_cp; \ + (yytext_ptr) = yy_bp; \ + pcap_leng = (size_t) (yy_cp - yy_bp); \ + (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ - yy_c_buf_p = yy_cp; + (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 133 -#define YY_END_OF_BUFFER 134 -static yyconst short int yy_accept[1322] = +#define YY_NUM_RULES 137 +#define YY_END_OF_BUFFER 138 +/* This struct is not used in this scanner, + but its presence is necessary. */ +struct yy_trans_info + { + flex_int32_t yy_verify; + flex_int32_t yy_nxt; + }; +static yyconst flex_int16_t yy_accept[1330] = { 0, - 0, 0, 134, 131, 91, 91, 91, 92, 131, 92, - 92, 92, 132, 100, 100, 92, 92, 92, 92, 129, - 129, 131, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 92, 131, 95, 99, 57, 0, 129, 100, - 0, 129, 129, 129, 103, 97, 94, 96, 93, 98, - 130, 130, 129, 129, 19, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 7, - 129, 33, 34, 129, 129, 129, 129, 129, 129, 129, + 0, 0, 138, 135, 95, 95, 95, 96, 135, 96, + 96, 96, 136, 104, 104, 96, 96, 96, 96, 133, + 133, 135, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 96, 135, 99, 103, 57, 0, 133, 104, + 0, 133, 133, 133, 107, 101, 98, 100, 97, 102, + 134, 134, 133, 133, 19, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 7, 133, 33, 34, 133, 133, 133, 133, 133, 133, - 129, 129, 129, 129, 129, 129, 81, 129, 58, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 75, 129, 129, 129, 129, 129, 129, 129, 4, 129, - 129, 129, 129, 129, 129, 58, 99, 101, 101, 100, - 129, 0, 103, 100, 103, 103, 103, 129, 129, 57, - 5, 129, 70, 129, 129, 129, 129, 129, 129, 89, - 1, 0, 129, 20, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 35, 129, 129, 17, 42, 0, 129, - 28, 129, 24, 60, 129, 129, 68, 36, 129, 129, - 129, 129, 129, 45, 59, 71, 88, 129, 14, 129, + 133, 133, 133, 133, 133, 133, 133, 133, 81, 133, + 58, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 75, 133, 133, 133, 133, 133, 133, 133, + 4, 133, 133, 133, 133, 133, 133, 58, 103, 105, + 105, 104, 133, 0, 107, 104, 107, 107, 107, 133, + 133, 57, 5, 133, 70, 133, 133, 133, 133, 133, + 133, 93, 1, 0, 133, 20, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 35, 133, 133, 17, + 42, 0, 133, 28, 133, 24, 60, 133, 133, 68, + 36, 133, 89, 133, 133, 133, 133, 90, 133, 45, - 3, 129, 129, 129, 129, 129, 83, 129, 129, 25, - 129, 87, 129, 90, 37, 2, 129, 41, 129, 9, - 10, 78, 129, 77, 129, 129, 129, 129, 100, 0, - 129, 0, 104, 103, 103, 0, 103, 0, 103, 0, - 103, 0, 22, 129, 129, 129, 54, 40, 129, 38, - 129, 129, 29, 129, 129, 129, 44, 11, 129, 12, - 13, 129, 129, 129, 31, 67, 129, 52, 3, 46, - 129, 129, 129, 64, 129, 129, 129, 129, 47, 129, - 129, 39, 129, 6, 129, 82, 129, 8, 84, 129, - 0, 129, 63, 15, 101, 101, 101, 100, 0, 103, + 59, 71, 92, 133, 14, 133, 3, 133, 133, 133, + 133, 133, 83, 133, 133, 25, 133, 91, 133, 94, + 37, 2, 133, 41, 133, 9, 10, 78, 133, 77, + 133, 133, 133, 133, 104, 0, 133, 0, 108, 107, + 107, 0, 107, 0, 107, 0, 107, 0, 22, 133, + 133, 133, 54, 40, 133, 38, 133, 133, 29, 133, + 87, 133, 133, 44, 11, 133, 12, 13, 133, 133, + 133, 31, 67, 133, 52, 3, 88, 46, 133, 133, + 133, 64, 133, 133, 133, 133, 47, 133, 133, 39, + 133, 6, 133, 82, 133, 8, 84, 133, 0, 133, - 0, 0, 103, 0, 103, 104, 103, 0, 0, 0, - 0, 103, 103, 103, 103, 103, 0, 129, 21, 129, - 129, 129, 30, 129, 129, 0, 18, 129, 129, 129, - 76, 129, 32, 129, 69, 27, 26, 129, 129, 72, - 129, 129, 129, 49, 16, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 0, 0, - 103, 103, 103, 0, 0, 104, 103, 103, 104, 103, - 0, 0, 103, 103, 103, 103, 103, 0, 0, 0, - 0, 103, 103, 0, 103, 0, 103, 0, 86, 129, - 129, 23, 129, 129, 129, 129, 129, 129, 129, 129, + 63, 15, 105, 105, 105, 104, 0, 107, 0, 0, + 107, 0, 107, 108, 107, 0, 0, 0, 0, 107, + 107, 107, 107, 107, 0, 133, 21, 133, 133, 133, + 30, 133, 133, 0, 18, 133, 133, 133, 76, 133, + 32, 133, 69, 27, 26, 133, 133, 72, 133, 133, + 133, 49, 16, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 0, 0, 107, 107, + 107, 0, 0, 108, 107, 107, 108, 107, 0, 0, + 107, 107, 107, 107, 107, 0, 0, 0, 0, 107, + 107, 0, 107, 0, 107, 0, 86, 133, 133, 23, - 129, 129, 129, 129, 129, 60, 129, 129, 129, 129, - 129, 129, 129, 65, 66, 129, 85, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 101, 101, 101, - 0, 103, 103, 0, 103, 0, 0, 103, 0, 103, - 104, 103, 0, 0, 0, 103, 103, 0, 103, 104, - 103, 0, 0, 0, 0, 0, 0, 0, 103, 103, - 103, 103, 103, 0, 129, 129, 51, 53, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 61, 129, 129, 43, 73, 74, 129, 129, 129, 129, - 127, 123, 129, 125, 124, 128, 129, 129, 0, 0, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 60, 133, 133, 133, 133, 133, 133, + 133, 65, 66, 133, 85, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 105, 105, 105, 0, 107, + 107, 0, 107, 0, 0, 107, 0, 107, 108, 107, + 0, 0, 0, 107, 107, 0, 107, 108, 107, 0, + 0, 0, 0, 0, 0, 0, 107, 107, 107, 107, + 107, 0, 133, 133, 51, 53, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 61, 133, + 133, 43, 73, 74, 133, 133, 133, 133, 131, 127, - 103, 103, 103, 103, 103, 103, 0, 0, 104, 103, - 103, 103, 0, 0, 103, 103, 103, 103, 103, 0, - 0, 0, 0, 0, 0, 0, 103, 103, 103, 103, - 103, 0, 0, 0, 0, 0, 103, 103, 0, 103, - 0, 103, 0, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 106, 105, 129, 129, 62, - 129, 129, 129, 126, 122, 101, 0, 103, 103, 0, - 103, 103, 0, 103, 0, 0, 103, 0, 103, 104, - 103, 0, 0, 0, 103, 103, 0, 103, 104, 103, - 0, 0, 0, 0, 0, 103, 103, 0, 103, 104, + 133, 129, 128, 132, 133, 133, 0, 0, 107, 107, + 107, 107, 107, 107, 0, 0, 108, 107, 107, 107, + 0, 0, 107, 107, 107, 107, 107, 0, 0, 0, + 0, 0, 0, 0, 107, 107, 107, 107, 107, 0, + 0, 0, 0, 0, 107, 107, 0, 107, 0, 107, + 0, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 110, 109, 133, 133, 62, 133, 133, + 133, 130, 126, 105, 0, 107, 107, 0, 107, 107, + 0, 107, 0, 0, 107, 0, 107, 108, 107, 0, + 0, 0, 107, 107, 0, 107, 108, 107, 0, 0, - 103, 0, 103, 103, 0, 0, 0, 0, 0, 0, - 0, 103, 103, 103, 103, 103, 0, 55, 129, 111, - 118, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 56, 48, 129, 129, 0, 0, 103, 103, 103, 103, - 103, 103, 103, 103, 103, 0, 0, 104, 103, 103, - 103, 0, 0, 103, 103, 103, 103, 103, 0, 0, - 0, 0, 0, 0, 0, 103, 103, 103, 103, 103, - 0, 103, 103, 0, 0, 0, 0, 0, 0, 0, - 103, 103, 103, 103, 103, 0, 0, 0, 0, 0, - 0, 103, 103, 0, 103, 0, 103, 0, 79, 129, + 0, 0, 0, 107, 107, 0, 107, 108, 107, 0, + 107, 107, 0, 0, 0, 0, 0, 0, 0, 107, + 107, 107, 107, 107, 0, 55, 133, 115, 122, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 56, 48, + 133, 133, 0, 0, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 0, 0, 108, 107, 107, 107, 0, + 0, 107, 107, 107, 107, 107, 0, 0, 0, 0, + 0, 0, 0, 107, 107, 107, 107, 107, 0, 107, + 107, 0, 0, 0, 0, 0, 0, 0, 107, 107, + 107, 107, 107, 0, 0, 0, 0, 0, 0, 107, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 50, 0, 103, 103, 0, 103, 103, 0, 103, 103, - 0, 103, 0, 102, 103, 0, 103, 104, 103, 0, - 0, 0, 103, 103, 0, 103, 104, 103, 0, 0, - 0, 0, 0, 103, 103, 0, 103, 104, 103, 0, - 0, 0, 0, 0, 0, 103, 103, 0, 103, 104, - 103, 0, 103, 103, 103, 0, 0, 0, 0, 0, - 0, 0, 103, 103, 103, 103, 103, 0, 129, 129, - 129, 129, 129, 129, 129, 129, 116, 129, 80, 0, - 0, 103, 103, 103, 103, 103, 103, 103, 103, 103, + 107, 0, 107, 0, 107, 0, 79, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 50, 0, + 107, 107, 0, 107, 107, 0, 107, 107, 0, 107, + 0, 106, 107, 0, 107, 108, 107, 0, 0, 0, + 107, 107, 0, 107, 108, 107, 0, 0, 0, 0, + 0, 107, 107, 0, 107, 108, 107, 0, 0, 0, + 0, 0, 0, 107, 107, 0, 107, 108, 107, 0, + 107, 107, 107, 0, 0, 0, 0, 0, 0, 0, + 107, 107, 107, 107, 107, 0, 133, 133, 133, 133, + 133, 133, 133, 133, 120, 133, 80, 0, 0, 107, - 103, 103, 103, 0, 102, 104, 103, 103, 103, 0, - 0, 103, 103, 103, 103, 103, 0, 0, 0, 0, - 0, 0, 0, 103, 103, 103, 103, 103, 0, 103, - 103, 0, 0, 0, 0, 0, 0, 0, 103, 103, - 103, 103, 103, 0, 103, 103, 103, 0, 0, 0, - 0, 0, 0, 0, 103, 103, 103, 103, 103, 0, - 0, 0, 0, 0, 0, 103, 103, 0, 103, 0, - 103, 0, 129, 129, 129, 120, 129, 129, 129, 129, - 129, 129, 129, 108, 0, 103, 103, 0, 103, 103, - 0, 103, 103, 0, 103, 103, 0, 103, 0, 0, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 0, 106, 108, 107, 107, 107, 0, 0, 107, + 107, 107, 107, 107, 0, 0, 0, 0, 0, 0, + 0, 107, 107, 107, 107, 107, 0, 107, 107, 0, + 0, 0, 0, 0, 0, 0, 107, 107, 107, 107, + 107, 0, 107, 107, 107, 0, 0, 0, 0, 0, + 0, 0, 107, 107, 107, 107, 107, 0, 0, 0, + 0, 0, 0, 107, 107, 0, 107, 0, 107, 0, + 133, 133, 133, 124, 133, 133, 133, 133, 133, 133, + 133, 112, 0, 107, 107, 0, 107, 107, 0, 107, - 0, 103, 0, 0, 103, 104, 103, 0, 0, 0, - 103, 103, 0, 103, 104, 103, 0, 0, 0, 0, - 0, 103, 103, 0, 103, 104, 103, 0, 0, 0, - 0, 0, 0, 103, 103, 0, 103, 104, 103, 0, - 0, 0, 0, 0, 0, 103, 103, 0, 103, 104, - 103, 0, 103, 103, 103, 0, 0, 0, 0, 0, - 0, 0, 103, 103, 103, 103, 103, 0, 129, 129, - 129, 129, 110, 129, 129, 129, 114, 129, 0, 0, - 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, - 103, 103, 103, 103, 103, 0, 0, 0, 104, 0, + 107, 0, 107, 107, 0, 107, 0, 0, 0, 107, + 0, 0, 107, 108, 107, 0, 0, 0, 107, 107, + 0, 107, 108, 107, 0, 0, 0, 0, 0, 107, + 107, 0, 107, 108, 107, 0, 0, 0, 0, 0, + 0, 107, 107, 0, 107, 108, 107, 0, 0, 0, + 0, 0, 0, 107, 107, 0, 107, 108, 107, 0, + 107, 107, 107, 0, 0, 0, 0, 0, 0, 0, + 107, 107, 107, 107, 107, 0, 133, 133, 133, 133, + 114, 133, 133, 133, 118, 133, 0, 0, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, - 0, 103, 0, 0, 103, 103, 103, 0, 0, 0, - 0, 0, 0, 0, 103, 103, 103, 0, 103, 103, - 0, 0, 0, 0, 0, 0, 0, 103, 103, 103, - 0, 103, 103, 103, 0, 0, 0, 0, 0, 0, - 0, 103, 103, 103, 0, 103, 103, 103, 0, 0, - 0, 0, 0, 0, 0, 103, 103, 103, 0, 0, - 0, 0, 0, 0, 103, 103, 0, 103, 0, 103, - 0, 107, 119, 121, 115, 129, 129, 129, 129, 0, - 0, 103, 0, 103, 0, 103, 103, 0, 103, 103, - 0, 103, 103, 0, 103, 103, 0, 103, 0, 0, + 107, 107, 107, 0, 0, 0, 108, 0, 0, 107, + 0, 0, 107, 107, 107, 0, 0, 0, 0, 0, + 0, 0, 107, 107, 107, 0, 107, 107, 0, 0, + 0, 0, 0, 0, 0, 107, 107, 107, 0, 107, + 107, 107, 0, 0, 0, 0, 0, 0, 0, 107, + 107, 107, 0, 107, 107, 107, 0, 0, 0, 0, + 0, 0, 0, 107, 107, 107, 0, 0, 0, 0, + 0, 0, 107, 107, 0, 107, 0, 107, 0, 111, + 123, 125, 119, 133, 133, 133, 133, 0, 0, 107, + 0, 107, 0, 107, 107, 0, 107, 107, 0, 107, - 0, 0, 103, 103, 0, 103, 0, 0, 103, 103, - 103, 0, 0, 0, 0, 103, 103, 103, 0, 0, - 0, 0, 0, 103, 103, 103, 0, 0, 0, 0, - 0, 103, 103, 103, 0, 0, 0, 0, 0, 103, - 103, 103, 103, 103, 103, 0, 0, 0, 0, 0, - 0, 0, 103, 103, 103, 0, 129, 129, 129, 129, - 0, 0, 0, 103, 103, 103, 103, 103, 103, 0, - 0, 0, 0, 103, 103, 0, 0, 0, 0, 103, - 103, 103, 0, 0, 0, 0, 0, 103, 103, 103, - 103, 0, 0, 0, 0, 0, 103, 103, 103, 103, + 107, 0, 107, 107, 0, 107, 0, 0, 0, 0, + 107, 107, 0, 107, 0, 0, 107, 107, 107, 0, + 0, 0, 0, 107, 107, 107, 0, 0, 0, 0, + 0, 107, 107, 107, 0, 0, 0, 0, 0, 107, + 107, 107, 0, 0, 0, 0, 0, 107, 107, 107, + 107, 107, 107, 0, 0, 0, 0, 0, 0, 0, + 107, 107, 107, 0, 133, 133, 133, 133, 0, 0, + 0, 107, 107, 107, 107, 107, 107, 0, 0, 0, + 0, 107, 107, 0, 0, 0, 0, 107, 107, 107, + 0, 0, 0, 0, 0, 107, 107, 107, 107, 0, - 0, 0, 0, 0, 0, 103, 103, 103, 103, 0, - 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, - 103, 103, 103, 129, 129, 129, 117, 103, 103, 103, - 103, 103, 103, 103, 103, 0, 0, 0, 0, 103, - 103, 0, 0, 103, 0, 0, 0, 103, 0, 0, - 0, 103, 0, 0, 0, 103, 0, 0, 0, 103, - 103, 103, 103, 0, 0, 0, 0, 0, 103, 112, - 129, 109, 103, 0, 0, 103, 103, 0, 103, 103, - 103, 0, 103, 103, 103, 0, 103, 103, 103, 0, - 103, 103, 103, 0, 0, 0, 0, 103, 113, 103, + 0, 0, 0, 0, 107, 107, 107, 107, 0, 0, + 0, 0, 0, 107, 107, 107, 107, 0, 0, 0, + 0, 0, 107, 0, 0, 0, 0, 0, 107, 107, + 107, 133, 133, 133, 121, 107, 107, 107, 107, 107, + 107, 107, 107, 0, 0, 0, 0, 107, 107, 0, + 0, 107, 0, 0, 0, 107, 0, 0, 0, 107, + 0, 0, 0, 107, 0, 0, 0, 107, 107, 107, + 107, 0, 0, 0, 0, 0, 107, 116, 133, 113, + 107, 0, 0, 107, 107, 0, 107, 107, 107, 0, + 107, 107, 107, 0, 107, 107, 107, 0, 107, 107, - 103, 0, 0, 0, 0, 0, 0, 103, 103, 103, - 0, 0, 103, 103, 103, 103, 103, 0, 103, 103, - 0 + 107, 0, 0, 0, 0, 107, 117, 107, 107, 0, + 0, 0, 0, 0, 0, 107, 107, 107, 0, 0, + 107, 107, 107, 107, 107, 0, 107, 107, 0 } ; -static yyconst int yy_ec[256] = +static yyconst flex_int32_t yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, @@ -475,7 +554,7 @@ static yyconst int yy_ec[256] = 1, 1, 1, 1, 1 } ; -static yyconst int yy_meta[53] = +static yyconst flex_int32_t yy_meta[53] = { 0, 1, 2, 2, 1, 2, 1, 3, 2, 1, 4, 5, 6, 6, 6, 6, 6, 6, 7, 3, 3, @@ -485,206 +564,207 @@ static yyconst int yy_meta[53] = 4, 3 } ; -static yyconst short int yy_base[1695] = +static yyconst flex_int16_t yy_base[1703] = { 0, - 0, 0, 3429, 52, 6592, 6592, 53, 3407, 59, 3418, - 6592, 63, 6592, 80, 49, 131, 55, 3395, 62, 147, - 186, 147, 106, 36, 129, 134, 55, 3383, 110, 3371, - 190, 193, 140, 101, 149, 198, 205, 148, 125, 3362, - 211, 3354, 3339, 250, 6592, 0, 6592, 0, 248, 266, - 3371, 258, 0, 288, 321, 6592, 6592, 6592, 6592, 6592, - 305, 0, 344, 40, 0, 3356, 3344, 3357, 183, 3329, - 3323, 3328, 3327, 3326, 192, 3334, 3317, 248, 3327, 213, - 3306, 3319, 3285, 3290, 3288, 100, 3291, 3285, 3294, 38, - 305, 0, 0, 165, 135, 3282, 3277, 3264, 3260, 3258, + 0, 0, 3454, 52, 6570, 6570, 53, 3419, 59, 3431, + 6570, 63, 6570, 80, 49, 131, 55, 3417, 62, 147, + 186, 147, 106, 36, 129, 134, 55, 102, 111, 3395, + 190, 193, 140, 113, 149, 198, 205, 148, 139, 3404, + 211, 3395, 3379, 250, 6570, 0, 6570, 0, 248, 266, + 3403, 258, 0, 288, 321, 6570, 6570, 6570, 6570, 6570, + 305, 0, 344, 40, 0, 3389, 3376, 3371, 183, 3357, + 3351, 3355, 3353, 3352, 192, 3361, 3330, 248, 3340, 213, + 3329, 3327, 3340, 3325, 3330, 3328, 103, 3323, 3318, 3307, + 38, 305, 0, 0, 165, 135, 3295, 3304, 244, 3287, - 3261, 3263, 3262, 3253, 3243, 3249, 0, 3237, 0, 3220, - 3226, 3217, 3218, 3218, 3204, 282, 3215, 3198, 3209, 3202, - 220, 3197, 326, 3194, 302, 3184, 3196, 3162, 0, 3160, - 3164, 3170, 3161, 3152, 3153, 6592, 6592, 378, 159, 417, - 352, 3162, 439, 3168, 462, 243, 3160, 3133, 3138, 0, - 0, 3135, 361, 3135, 3110, 3099, 3100, 3096, 502, 0, - 0, 3100, 3090, 0, 3102, 107, 3092, 3095, 3056, 3059, - 3072, 3056, 3053, 0, 3058, 3043, 0, 0, 3026, 3016, - 0, 3028, 0, 3024, 3011, 3018, 0, 0, 3017, 3016, - 339, 2998, 2976, 2992, 0, 2987, 0, 2989, 0, 2970, + 3284, 3287, 3290, 3266, 3274, 3265, 3264, 3270, 0, 3277, + 0, 3260, 3266, 3251, 3252, 3232, 3232, 282, 3243, 3223, + 3234, 3227, 220, 3209, 326, 3207, 302, 3206, 3218, 3204, + 0, 3202, 3206, 3204, 3195, 3166, 3180, 6570, 6570, 378, + 243, 417, 352, 3188, 439, 3193, 462, 320, 3185, 3160, + 3151, 0, 0, 3148, 361, 3157, 3152, 3139, 3140, 3137, + 502, 0, 0, 3133, 3103, 0, 3115, 272, 3099, 3112, + 3114, 3095, 3098, 3102, 3087, 3066, 0, 3071, 3065, 0, + 0, 3068, 3056, 0, 3068, 0, 3056, 3023, 3030, 0, + 0, 3019, 0, 3027, 3034, 352, 3016, 0, 3014, 3021, - 2974, 2968, 2962, 2967, 2940, 2936, 0, 2934, 2946, 0, - 2934, 0, 2933, 0, 0, 0, 2930, 0, 2908, 275, - 0, 0, 2911, 0, 2908, 2909, 384, 531, 554, 2930, - 2928, 2927, 2926, 562, 262, 2877, 2876, 391, 602, 624, - 398, 0, 0, 2852, 2855, 2860, 0, 0, 2857, 0, - 2856, 2842, 0, 2829, 2823, 2825, 0, 479, 2831, 0, - 0, 2839, 2820, 2821, 0, 0, 2819, 0, 0, 0, - 2795, 2786, 2793, 0, 2786, 2789, 2803, 2777, 2773, 2771, - 2761, 0, 2760, 0, 2759, 0, 145, 0, 0, 2752, - 455, 2759, 0, 0, 647, 392, 2785, 2777, 2737, 686, + 0, 3016, 0, 2999, 0, 2981, 2985, 2978, 2980, 2985, + 2978, 2965, 0, 2963, 2956, 0, 2945, 0, 2944, 0, + 0, 0, 2940, 0, 2938, 370, 0, 0, 2941, 0, + 2938, 2918, 392, 531, 554, 2939, 2938, 2937, 2936, 562, + 360, 2934, 2933, 399, 602, 624, 406, 0, 0, 2909, + 2864, 2869, 0, 0, 2867, 0, 2866, 2852, 0, 2851, + 0, 2845, 2847, 0, 479, 2840, 0, 0, 2848, 2830, + 2831, 0, 0, 2829, 0, 0, 0, 0, 2843, 2834, + 2841, 0, 2795, 2798, 2813, 2787, 2783, 2793, 2783, 0, + 2782, 0, 2768, 0, 247, 0, 0, 2761, 455, 2769, - 2736, 2735, 708, 405, 731, 753, 515, 0, 2734, 412, - 522, 776, 585, 799, 413, 2733, 2738, 2708, 0, 2717, - 2703, 2686, 0, 2703, 2698, 818, 0, 2688, 2676, 2694, - 0, 2685, 0, 2656, 2649, 0, 0, 2659, 2641, 393, - 2640, 2657, 395, 2654, 0, 2643, 2622, 2636, 2629, 2636, - 2629, 2616, 2617, 2610, 2596, 2611, 491, 854, 2620, 2619, - 877, 435, 2618, 2616, 2615, 2614, 917, 474, 2593, 2592, - 499, 592, 957, 661, 980, 531, 2591, 2597, 2589, 653, - 0, 368, 2587, 667, 1020, 1042, 674, 0, 0, 2576, - 2557, 0, 2551, 2545, 2558, 2543, 2558, 2557, 479, 2542, + 0, 0, 647, 374, 2795, 2787, 2785, 686, 2784, 2783, + 708, 491, 731, 753, 515, 0, 2743, 375, 522, 776, + 585, 799, 376, 2742, 2748, 2718, 0, 2727, 2725, 2708, + 0, 2725, 2707, 818, 0, 2697, 2686, 2704, 0, 2695, + 0, 2698, 2691, 0, 0, 2701, 2650, 395, 2649, 2667, + 356, 2664, 0, 2653, 2644, 2658, 2651, 2645, 2638, 2626, + 2627, 2620, 2625, 2640, 591, 854, 2649, 2628, 877, 412, + 2627, 2626, 2625, 2624, 917, 413, 2622, 2621, 474, 661, + 957, 668, 980, 414, 2620, 2606, 2598, 653, 0, 447, + 2597, 674, 1020, 1042, 822, 0, 0, 2586, 2567, 0, - 505, 2542, 2550, 2516, 2526, 0, 2516, 2527, 2517, 2522, - 2521, 2497, 2496, 0, 0, 2500, 0, 2495, 2485, 2498, - 2492, 2466, 2460, 2458, 2463, 2467, 2466, 1064, 532, 2488, - 2467, 1103, 2466, 1125, 2465, 2464, 2460, 1147, 821, 1170, - 1192, 828, 0, 899, 0, 369, 2459, 905, 1215, 1237, - 940, 0, 599, 947, 2451, 1003, 681, 1010, 1260, 1078, - 1283, 533, 2443, 2449, 2414, 2419, 0, 0, 2421, 2423, - 2409, 2395, 2407, 2389, 2387, 2379, 2369, 2370, 2380, 2378, - 0, 2338, 2332, 0, 0, 0, 2345, 2337, 2327, 2314, - 0, 0, 2317, 0, 0, 0, 2304, 1322, 2329, 2319, + 2560, 2566, 2579, 2564, 2567, 2566, 469, 2552, 475, 2552, + 2560, 2547, 2557, 0, 2547, 2536, 2527, 2532, 2531, 2519, + 2518, 0, 0, 2522, 0, 2504, 2496, 2509, 2503, 2497, + 2491, 2489, 2472, 2477, 2476, 1064, 499, 2498, 2489, 1103, + 2488, 1125, 2487, 2473, 2472, 1147, 828, 1170, 1192, 900, + 0, 906, 0, 448, 2471, 939, 1215, 1237, 946, 0, + 598, 1003, 2477, 1010, 599, 1078, 1260, 1085, 1283, 531, + 2466, 2472, 2423, 2428, 0, 0, 2431, 2433, 2419, 2418, + 2430, 2413, 2398, 2405, 2396, 2396, 2392, 2389, 0, 2380, + 2373, 0, 0, 0, 2385, 2350, 2355, 2342, 0, 0, - 1345, 561, 2297, 1385, 597, 2296, 2295, 2293, 2290, 1425, - 598, 2289, 682, 1085, 1465, 1092, 1488, 601, 2274, 2280, - 683, 1306, 2278, 1313, 685, 1368, 1528, 1375, 1551, 704, - 2270, 2275, 1070, 0, 1407, 0, 447, 2267, 1413, 1591, - 1613, 1448, 0, 2238, 2229, 2211, 2208, 2213, 2220, 2210, - 2183, 2182, 2175, 2195, 2190, 0, 0, 2189, 2143, 0, - 2156, 2151, 2138, 0, 0, 0, 2165, 1635, 1658, 1680, - 1455, 1703, 1725, 1511, 2164, 2163, 1747, 1517, 1770, 1792, - 1574, 0, 1580, 0, 540, 2153, 1814, 1821, 1843, 1866, - 0, 1872, 0, 1878, 0, 632, 2152, 1884, 1891, 1913, + 2343, 0, 0, 0, 2332, 1322, 2343, 2342, 1345, 532, + 2341, 1385, 533, 2340, 2337, 2335, 2325, 1425, 561, 2324, + 681, 1092, 1465, 1306, 1488, 597, 2303, 2309, 682, 1313, + 2308, 1368, 683, 1375, 1528, 1408, 1551, 601, 2299, 2303, + 1070, 0, 1414, 0, 540, 2295, 1447, 1591, 1613, 1454, + 0, 2252, 2252, 2254, 2251, 2255, 2263, 2254, 2234, 2214, + 2207, 2228, 2222, 0, 0, 2220, 2205, 0, 2203, 2198, + 2185, 0, 0, 0, 2213, 1635, 1658, 1680, 1511, 1703, + 1725, 1518, 2211, 2210, 1747, 1573, 1770, 1792, 1580, 0, + 1814, 0, 632, 2209, 1820, 1827, 1849, 1872, 0, 1878, - 1936, 0, 705, 1942, 2138, 848, 1949, 2137, 1956, 850, - 1963, 1970, 1993, 2000, 726, 2129, 2134, 297, 700, 955, - 956, 1018, 2009, 1019, 746, 318, 414, 2010, 454, 747, - 433, 617, 1103, 2013, 2124, 2123, 2042, 772, 2113, 2082, - 775, 2091, 2122, 776, 2090, 2089, 2087, 2085, 2162, 796, - 2084, 1099, 2030, 2202, 2065, 2225, 823, 2083, 2080, 1100, - 2072, 2079, 2105, 1321, 2112, 2265, 2145, 2288, 827, 2051, - 2057, 828, 2151, 2052, 1382, 2185, 2051, 2192, 1524, 2248, - 2328, 2255, 2351, 829, 2043, 2027, 0, 2310, 0, 2316, - 0, 693, 2017, 2373, 2391, 2413, 2380, 0, 618, 770, + 0, 1884, 0, 693, 2177, 1890, 1897, 1919, 1942, 0, + 685, 1948, 2183, 848, 1955, 2178, 1962, 850, 1969, 1976, + 1999, 2006, 704, 2170, 2176, 297, 700, 685, 955, 956, + 2015, 1018, 745, 318, 746, 2016, 617, 769, 433, 686, + 1103, 2019, 2137, 2136, 2048, 728, 2135, 2088, 750, 2130, + 2128, 796, 2129, 2097, 2093, 2091, 2168, 798, 2090, 914, + 2036, 2208, 2071, 2231, 801, 2089, 2064, 1099, 2078, 2063, + 2111, 1100, 2118, 2271, 2151, 2294, 802, 2055, 2058, 823, + 2157, 2022, 1321, 2191, 2020, 2198, 1382, 2254, 2334, 2261, + 2357, 829, 1985, 1991, 0, 2316, 0, 2322, 0, 739, - 848, 974, 1102, 1033, 1321, 1034, 1141, 1589, 913, 1463, - 685, 2009, 2435, 2458, 2480, 2503, 2510, 2532, 2555, 2562, - 2584, 2607, 2007, 2003, 2613, 2635, 2642, 2664, 2687, 0, - 2693, 0, 740, 1979, 2699, 2706, 2728, 2751, 0, 2757, - 0, 2763, 0, 761, 1978, 2769, 2776, 2798, 2821, 0, - 0, 2827, 0, 2833, 0, 837, 1977, 2839, 2846, 2868, - 2891, 0, 0, 953, 2897, 1983, 1587, 2904, 1982, 2911, - 1629, 2918, 2925, 2948, 2955, 957, 1973, 1979, 1590, 2389, - 2390, 1464, 1118, 1526, 2024, 1162, 2200, 1207, 791, 1971, - 1921, 2995, 1017, 1916, 3035, 1102, 1900, 3075, 1143, 1899, + 1983, 2379, 2397, 2419, 2386, 0, 770, 792, 848, 974, + 1019, 1033, 1102, 1141, 1162, 1589, 1118, 1462, 791, 1982, + 2441, 2464, 2486, 2509, 2516, 2538, 2561, 2568, 2590, 2613, + 1981, 1979, 2619, 2641, 2648, 2670, 2693, 0, 2699, 0, + 740, 1978, 2705, 2712, 2734, 2757, 0, 2763, 0, 2769, + 0, 885, 1977, 2775, 2782, 2804, 2827, 0, 0, 2833, + 0, 2839, 0, 886, 1927, 2845, 2852, 2874, 2897, 0, + 0, 831, 2903, 1931, 1587, 2910, 1929, 2917, 1629, 2924, + 2931, 2954, 2961, 953, 1906, 1909, 1590, 2395, 2396, 1321, + 1185, 1464, 1527, 1164, 1463, 1117, 916, 1855, 1852, 3001, - 3115, 1146, 1851, 1850, 1849, 3154, 3177, 1147, 1830, 1674, - 2978, 3217, 2985, 3240, 1166, 1826, 1786, 2015, 3018, 1784, - 3025, 2119, 3058, 3280, 3065, 3303, 1188, 1776, 1741, 1189, - 3097, 1739, 2324, 3104, 1737, 3138, 2387, 3145, 3343, 3200, - 3366, 1191, 1688, 1643, 0, 1211, 3206, 1623, 2429, 3263, - 1607, 3270, 3072, 3326, 3406, 3333, 3429, 1212, 1597, 1603, - 0, 3388, 0, 3394, 0, 885, 1558, 3451, 3469, 3491, - 3458, 0, 3499, 3500, 3501, 915, 3502, 2263, 1164, 3504, - 1384, 1253, 1254, 1230, 1552, 3534, 3557, 3579, 3602, 3609, - 3631, 3654, 3661, 3683, 3706, 3713, 3735, 3758, 1533, 3765, + 957, 1833, 3041, 1016, 1797, 3081, 1017, 1776, 3121, 1143, + 1775, 1752, 1733, 3160, 3183, 1147, 1730, 1674, 2984, 3223, + 2991, 3246, 1166, 1689, 1671, 2021, 3024, 1651, 3031, 2125, + 3064, 3286, 3071, 3309, 1189, 1636, 1623, 1210, 3103, 1607, + 2330, 3110, 1604, 3144, 2393, 3151, 3349, 3206, 3372, 1211, + 1596, 1565, 0, 1212, 3212, 1560, 2435, 3269, 1544, 3276, + 3078, 3332, 3412, 3339, 3435, 1214, 1531, 1536, 0, 3394, + 0, 3400, 0, 926, 1497, 3457, 3475, 3497, 3464, 0, + 2030, 3505, 3506, 1230, 3490, 1526, 1253, 3508, 1696, 1275, + 1276, 1231, 1495, 3538, 3561, 3583, 3525, 3606, 3628, 3651, - 1259, 1531, 1529, 3787, 3805, 1519, 3794, 0, 3827, 0, - 886, 1495, 3833, 3840, 1489, 3863, 0, 3869, 0, 3875, - 0, 926, 1474, 3881, 3888, 1468, 3911, 0, 0, 3917, - 0, 3923, 0, 1029, 1466, 3929, 3936, 1430, 3959, 0, - 0, 3965, 0, 3971, 0, 1200, 1428, 3977, 3984, 1392, - 4007, 0, 0, 1316, 4013, 1393, 3153, 4020, 1359, 4027, - 3213, 4034, 4041, 4064, 4071, 1318, 1331, 1332, 1650, 1672, - 1695, 1275, 1337, 1718, 3506, 1545, 1423, 3515, 1323, 4110, - 4133, 1322, 1290, 4173, 1384, 1288, 4213, 1461, 1269, 4253, - 1464, 1261, 4293, 1465, 1242, 1240, 4093, 4333, 1238, 4100, + 3658, 3680, 3703, 3710, 3732, 3755, 1468, 3762, 1259, 1466, + 1430, 3784, 3802, 1428, 3791, 0, 3824, 0, 1200, 1427, + 3830, 3837, 1426, 3860, 0, 3866, 0, 3872, 0, 1329, + 1392, 3878, 3885, 1390, 3908, 0, 0, 3914, 0, 3920, + 0, 1331, 1352, 3926, 3933, 1348, 3956, 0, 0, 3962, + 0, 3968, 0, 1393, 1346, 3974, 3981, 1325, 4004, 0, + 0, 1322, 4010, 1330, 3159, 4017, 1299, 4024, 3219, 4031, + 4038, 4061, 4068, 1344, 1263, 1268, 1650, 1695, 1717, 1423, + 1277, 1651, 4077, 1718, 1424, 3538, 1238, 4107, 4130, 1461, + 1224, 4170, 1464, 1201, 4210, 1524, 1199, 4250, 1527, 1152, - 0, 1201, 3402, 4156, 4356, 4163, 1148, 1135, 3465, 4196, - 1116, 4203, 3530, 4236, 4379, 4243, 1104, 1110, 1528, 4275, - 1058, 4109, 4282, 1057, 4316, 4250, 4323, 4402, 4425, 1021, - 994, 0, 1586, 4431, 969, 4330, 4438, 967, 4445, 4452, - 4453, 4492, 4466, 958, 927, 0, 1588, 4472, 925, 4487, - 4479, 915, 4515, 4488, 4528, 4535, 4558, 906, 891, 0, - 4564, 0, 4570, 0, 1292, 863, 4576, 4583, 0, 4606, - 0, 1629, 1651, 1673, 1716, 1717, 2471, 4597, 4598, 4627, - 1609, 0, 838, 4667, 0, 4615, 4690, 0, 4650, 4713, - 0, 4657, 4736, 0, 4759, 4766, 0, 4789, 4664, 4796, + 4290, 1528, 1148, 1108, 4093, 4330, 1104, 4153, 0, 1103, + 3408, 4160, 4353, 4193, 1051, 1057, 3471, 4200, 1052, 4233, + 3472, 4240, 4376, 4273, 1029, 1033, 1586, 4279, 1028, 3534, + 4313, 994, 4320, 3535, 4399, 4406, 4429, 962, 967, 0, + 1588, 4435, 965, 3577, 4442, 931, 4449, 4078, 4456, 4463, + 4486, 922, 925, 0, 1609, 4492, 913, 4103, 4499, 891, + 4506, 4106, 4513, 4520, 4543, 860, 866, 0, 4549, 0, + 4555, 0, 1394, 838, 4561, 4568, 0, 4591, 0, 1629, + 1673, 1739, 1762, 1763, 2477, 4582, 4583, 4612, 1631, 0, + 785, 4652, 0, 4600, 4675, 0, 4635, 4698, 0, 4642, - 4803, 4826, 806, 801, 792, 777, 4832, 0, 1394, 734, - 695, 4838, 0, 4844, 0, 1433, 624, 611, 0, 4850, - 0, 4856, 0, 1434, 608, 571, 0, 4862, 0, 4868, - 0, 1644, 570, 569, 0, 4874, 0, 4880, 0, 1756, - 536, 534, 0, 1634, 4886, 529, 4893, 4894, 511, 4907, - 4901, 4915, 4941, 4922, 0, 510, 2201, 1741, 1763, 1762, - 4964, 483, 4933, 0, 0, 0, 0, 0, 0, 4986, - 0, 1800, 469, 448, 0, 4980, 4994, 416, 5001, 0, - 1657, 5007, 374, 5014, 5020, 373, 5028, 0, 0, 1679, - 5034, 371, 5041, 5042, 370, 5055, 0, 0, 1680, 5061, + 4721, 0, 4744, 4751, 0, 4774, 4247, 4781, 4788, 4811, + 777, 624, 618, 610, 4817, 0, 1756, 608, 571, 4823, + 0, 4829, 0, 1800, 570, 569, 0, 4835, 0, 4841, + 0, 1801, 536, 534, 0, 4847, 0, 4853, 0, 1835, + 532, 523, 0, 4859, 0, 4865, 0, 1836, 522, 504, + 0, 1634, 4871, 510, 4327, 4878, 476, 4885, 4649, 4892, + 4899, 4922, 0, 471, 2206, 1786, 1842, 2086, 4929, 463, + 4952, 0, 0, 0, 0, 0, 0, 4958, 0, 1857, + 426, 424, 0, 4965, 4966, 430, 4979, 0, 1679, 4985, + 386, 4992, 4993, 374, 5006, 0, 0, 1680, 5012, 371, - 333, 5068, 5069, 329, 5082, 0, 0, 1746, 5088, 318, - 5095, 5096, 281, 5109, 0, 0, 5115, 0, 5121, 0, - 1801, 273, 0, 2324, 2523, 1835, 1836, 0, 6592, 0, - 0, 0, 0, 0, 0, 5128, 5142, 278, 5149, 0, - 6592, 5134, 0, 6592, 0, 5155, 0, 6592, 0, 5167, - 0, 6592, 0, 5173, 0, 6592, 0, 5179, 0, 6592, - 0, 1767, 5185, 276, 5192, 5193, 236, 5206, 0, 1837, - 2326, 1905, 0, 5212, 0, 1791, 5218, 235, 0, 1792, - 5224, 201, 0, 1816, 5231, 199, 0, 1886, 5237, 134, - 0, 1887, 5243, 95, 0, 5249, 0, 6592, 1906, 1888, + 5019, 5020, 370, 5033, 0, 0, 1702, 5039, 368, 5046, + 5047, 329, 5060, 0, 0, 1747, 5066, 318, 5073, 5074, + 274, 5087, 0, 0, 5093, 0, 5099, 0, 1905, 229, + 0, 2269, 2529, 1911, 1912, 0, 6570, 0, 0, 0, + 0, 0, 0, 5106, 5120, 235, 5127, 0, 6570, 5112, + 0, 6570, 0, 5133, 0, 6570, 0, 5145, 0, 6570, + 0, 5151, 0, 6570, 0, 5157, 0, 6570, 0, 1767, + 5163, 201, 5170, 5171, 199, 5184, 0, 2017, 2330, 2087, + 0, 5190, 0, 1824, 5196, 198, 0, 1826, 5202, 179, + 0, 1893, 5209, 133, 0, 1894, 5215, 132, 0, 2017, - 5255, 94, 0, 0, 0, 0, 0, 0, 1890, 5261, - 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 6592, 5278, 5286, 5290, 5293, 5296, 5299, 5302, 5305, 5308, - 5311, 5314, 5317, 5320, 5323, 5326, 5329, 5332, 5336, 5340, - 5343, 5346, 5349, 5352, 5355, 5359, 5363, 5366, 5370, 5372, - 5375, 5378, 5381, 5384, 5387, 5391, 5393, 5397, 5402, 5406, - 5409, 5412, 5415, 5418, 5421, 5424, 5427, 5431, 5435, 5439, - 5444, 5448, 5451, 5454, 5458, 5460, 5463, 5466, 5469, 5472, - 5475, 5479, 5481, 5484, 5487, 5491, 5493, 5496, 5501, 5506, - 5510, 5514, 5518, 5523, 5527, 5530, 5533, 5536, 5539, 5542, + 5221, 95, 0, 5227, 0, 6570, 2166, 2127, 5233, 94, + 0, 0, 0, 0, 0, 0, 2167, 5239, 65, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 6570, 5256, + 5264, 5268, 5271, 5274, 5277, 5280, 5283, 5286, 5289, 5292, + 5295, 5298, 5301, 5304, 5307, 5310, 5314, 5318, 5321, 5324, + 5327, 5330, 5333, 5337, 5341, 5344, 5348, 5350, 5353, 5356, + 5359, 5362, 5365, 5369, 5371, 5375, 5380, 5384, 5387, 5390, + 5393, 5396, 5399, 5402, 5405, 5409, 5413, 5417, 5422, 5426, + 5429, 5432, 5436, 5438, 5441, 5444, 5447, 5450, 5453, 5457, + 5459, 5462, 5465, 5469, 5471, 5474, 5479, 5484, 5488, 5492, - 5545, 5548, 5552, 5556, 5560, 5564, 5569, 5573, 5577, 5581, - 5584, 5589, 5593, 5598, 5602, 5606, 5610, 5613, 5616, 5619, - 5623, 5625, 5630, 5634, 5637, 5640, 5643, 5646, 5650, 5652, - 5655, 5658, 5662, 5664, 5667, 5670, 5673, 5677, 5679, 5682, - 5685, 5690, 5694, 5699, 5703, 5707, 5711, 5716, 5720, 5723, - 5726, 5729, 5732, 5735, 5738, 5741, 5745, 5749, 5753, 5757, - 5762, 5766, 5770, 5774, 5777, 5782, 5786, 5791, 5795, 5799, - 5803, 5806, 5809, 5814, 5818, 5823, 5827, 5831, 5835, 5838, - 5841, 5844, 5848, 5850, 5855, 5859, 5862, 5865, 5868, 5871, - 5874, 5877, 5881, 5883, 5886, 5889, 5892, 5896, 5898, 5901, + 5496, 5501, 5505, 5508, 5511, 5514, 5517, 5520, 5523, 5526, + 5530, 5534, 5538, 5542, 5547, 5551, 5555, 5559, 5562, 5567, + 5571, 5576, 5580, 5584, 5588, 5591, 5594, 5597, 5601, 5603, + 5608, 5612, 5615, 5618, 5621, 5624, 5628, 5630, 5633, 5636, + 5640, 5642, 5645, 5648, 5651, 5655, 5657, 5660, 5663, 5668, + 5672, 5677, 5681, 5685, 5689, 5694, 5698, 5701, 5704, 5707, + 5710, 5713, 5716, 5719, 5723, 5727, 5731, 5735, 5740, 5744, + 5748, 5752, 5755, 5760, 5764, 5769, 5773, 5777, 5781, 5784, + 5787, 5792, 5796, 5801, 5805, 5809, 5813, 5816, 5819, 5822, + 5826, 5828, 5833, 5837, 5840, 5843, 5846, 5849, 5852, 5855, - 5904, 5907, 5910, 5914, 5916, 5919, 5922, 5925, 5928, 5932, - 5934, 5937, 5940, 5943, 5948, 5952, 5957, 5961, 5965, 5969, - 5974, 5978, 5981, 5984, 5987, 5990, 5993, 5996, 5999, 6002, - 6006, 6010, 6014, 6018, 6023, 6027, 6031, 6035, 6038, 6043, - 6047, 6052, 6056, 6060, 6064, 6067, 6070, 6075, 6079, 6084, - 6088, 6092, 6096, 6099, 6102, 6107, 6111, 6116, 6120, 6124, - 6128, 6131, 6134, 6137, 6141, 6143, 6146, 6151, 6155, 6158, - 6161, 6164, 6167, 6170, 6173, 6177, 6181, 6184, 6188, 6191, - 6194, 6198, 6200, 6203, 6206, 6210, 6212, 6215, 6218, 6221, - 6225, 6227, 6230, 6233, 6236, 6240, 6242, 6245, 6248, 6251, + 5859, 5861, 5864, 5867, 5870, 5874, 5876, 5879, 5882, 5885, + 5888, 5892, 5894, 5897, 5900, 5903, 5906, 5910, 5912, 5915, + 5918, 5921, 5926, 5930, 5935, 5939, 5943, 5947, 5952, 5956, + 5959, 5962, 5965, 5968, 5971, 5974, 5977, 5980, 5984, 5988, + 5992, 5996, 6001, 6005, 6009, 6013, 6016, 6021, 6025, 6030, + 6034, 6038, 6042, 6045, 6048, 6053, 6057, 6062, 6066, 6070, + 6074, 6077, 6080, 6085, 6089, 6094, 6098, 6102, 6106, 6109, + 6112, 6115, 6119, 6121, 6124, 6129, 6133, 6136, 6139, 6142, + 6145, 6148, 6151, 6155, 6159, 6162, 6166, 6169, 6172, 6176, + 6178, 6181, 6184, 6188, 6190, 6193, 6196, 6199, 6203, 6205, - 6255, 6257, 6260, 6263, 6268, 6272, 6277, 6281, 6285, 6289, - 6294, 6298, 6301, 6304, 6307, 6310, 6313, 6316, 6319, 6323, - 6325, 6328, 6332, 6337, 6340, 6343, 6348, 6352, 6357, 6360, - 6363, 6366, 6371, 6375, 6380, 6383, 6386, 6389, 6394, 6398, - 6403, 6406, 6409, 6412, 6417, 6421, 6426, 6429, 6432, 6435, - 6438, 6442, 6444, 6449, 6453, 6456, 6459, 6462, 6465, 6468, - 6471, 6475, 6480, 6483, 6486, 6489, 6492, 6495, 6498, 6501, - 6504, 6507, 6510, 6513, 6518, 6522, 6525, 6528, 6531, 6535, - 6539, 6543, 6547, 6551, 6554, 6557, 6561, 6564, 6567, 6570, - 6573, 6576, 6580, 6583 + 6208, 6211, 6214, 6218, 6220, 6223, 6226, 6229, 6233, 6235, + 6238, 6241, 6246, 6250, 6255, 6259, 6263, 6267, 6272, 6276, + 6279, 6282, 6285, 6288, 6291, 6294, 6297, 6301, 6303, 6306, + 6310, 6315, 6318, 6321, 6326, 6330, 6335, 6338, 6341, 6344, + 6349, 6353, 6358, 6361, 6364, 6367, 6372, 6376, 6381, 6384, + 6387, 6390, 6395, 6399, 6404, 6407, 6410, 6413, 6416, 6420, + 6422, 6427, 6431, 6434, 6437, 6440, 6443, 6446, 6449, 6453, + 6458, 6461, 6464, 6467, 6470, 6473, 6476, 6479, 6482, 6485, + 6488, 6491, 6496, 6500, 6503, 6506, 6509, 6513, 6517, 6521, + 6525, 6529, 6532, 6535, 6539, 6542, 6545, 6548, 6551, 6554, + 6558, 6561 } ; -static yyconst short int yy_def[1695] = +static yyconst flex_int16_t yy_def[1703] = { 0, - 1321, 1, 1321, 1321, 1321, 1321, 1321, 1321, 1322, 1321, - 1321, 1321, 1321, 1321, 14, 1321, 1321, 1321, 1321, 14, - 20, 1323, 20, 20, 20, 20, 20, 20, 21, 21, + 1329, 1, 1329, 1329, 1329, 1329, 1329, 1329, 1330, 1329, + 1329, 1329, 1329, 1329, 14, 1329, 1329, 1329, 1329, 14, + 20, 1331, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 1321, 1321, 1321, 1324, 1321, 21, 21, 20, - 1325, 50, 21, 21, 1321, 1321, 1321, 1321, 1321, 1321, - 1323, 1323, 50, 63, 21, 21, 21, 21, 63, 21, + 21, 21, 1329, 1329, 1329, 1332, 1329, 21, 21, 20, + 1333, 50, 21, 21, 1329, 1329, 1329, 1329, 1329, 1329, + 1331, 1331, 50, 63, 21, 21, 21, 21, 63, 21, 21, 21, 21, 21, 63, 21, 21, 21, 21, 63, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, @@ -692,1654 +772,1654 @@ static yyconst short int yy_def[1695] = 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 1321, 1321, 21, 138, 50, - 140, 1326, 1321, 54, 1321, 145, 1327, 21, 21, 21, - 21, 21, 140, 21, 21, 21, 21, 21, 140, 21, - 21, 21, 21, 21, 21, 159, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 1329, 1329, 21, + 140, 50, 142, 1334, 1329, 54, 1329, 147, 1335, 21, + 21, 21, 21, 21, 142, 21, 21, 21, 21, 21, + 142, 21, 21, 21, 21, 21, 21, 161, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 1328, - 21, 1329, 1330, 1321, 234, 1331, 1332, 1321, 1321, 1321, - 239, 1333, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 1336, 21, 1337, 1338, 1329, + 240, 1339, 1340, 1329, 1329, 1329, 245, 1341, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 295, 228, 229, 1334, 1321, - 1335, 1336, 1321, 1321, 1321, 1321, 305, 1337, 1338, 1339, - 1321, 1321, 312, 1321, 314, 1340, 1333, 21, 21, 21, + 21, 21, 21, 303, 234, 235, 1342, 1329, 1343, 1344, + 1329, 1329, 1329, 1329, 313, 1345, 1346, 1347, 1329, 1329, + 320, 1329, 322, 1348, 1341, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 1329, 1341, - 1321, 361, 1342, 1321, 1343, 1344, 1321, 367, 1331, 1345, - 1346, 1321, 1321, 373, 1321, 375, 1347, 1337, 1321, 1321, - 1348, 1349, 1321, 1321, 1321, 1321, 385, 1350, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 1337, 1349, 1329, 369, + 1350, 1329, 1351, 1352, 1329, 375, 1339, 1353, 1354, 1329, + 1329, 381, 1329, 383, 1355, 1345, 1329, 1329, 1356, 1357, + 1329, 1329, 1329, 1329, 393, 1358, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 428, 358, - 1351, 1321, 305, 1321, 307, 1352, 1353, 1321, 1321, 1321, - 1321, 440, 1354, 1321, 1355, 1356, 1321, 1321, 1321, 1321, - 449, 1357, 1358, 1321, 1348, 1321, 1359, 1321, 1321, 459, - 1321, 461, 1360, 1350, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 436, 366, 1359, 1329, + 313, 1329, 315, 1360, 1361, 1329, 1329, 1329, 1329, 448, + 1362, 1329, 1363, 1364, 1329, 1329, 1329, 1329, 457, 1365, + 1366, 1329, 1356, 1329, 1367, 1329, 1329, 467, 1329, 469, + 1368, 1358, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 1361, 1362, - 1321, 501, 1363, 1321, 504, 1364, 1321, 1365, 1366, 1321, - 510, 1367, 1368, 1321, 1321, 515, 1321, 517, 1369, 1354, - 1370, 1321, 1355, 1321, 1371, 1321, 1321, 527, 1321, 529, - 1372, 1357, 1321, 1373, 1321, 1374, 1375, 1321, 1321, 1321, - 1321, 540, 1376, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 1369, 1370, 1329, 509, + 1371, 1329, 512, 1372, 1329, 1373, 1374, 1329, 518, 1375, + 1376, 1329, 1329, 523, 1329, 525, 1377, 1362, 1378, 1329, + 1363, 1329, 1379, 1329, 1329, 535, 1329, 537, 1380, 1365, + 1329, 1381, 1329, 1382, 1383, 1329, 1329, 1329, 1329, 548, + 1384, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 498, 1377, 1321, 1321, 1321, - 569, 1321, 1321, 572, 1378, 1379, 1321, 1321, 1321, 1321, - 579, 1380, 1321, 1381, 1382, 1321, 1321, 1321, 1321, 588, - 1383, 1321, 1384, 1321, 1385, 1386, 1321, 1321, 1321, 1321, + 21, 21, 21, 506, 1385, 1329, 1329, 1329, 577, 1329, + 1329, 580, 1386, 1387, 1329, 1329, 1329, 1329, 587, 1388, + 1329, 1389, 1390, 1329, 1329, 1329, 1329, 596, 1391, 1329, - 599, 1387, 1388, 1321, 1373, 1389, 1321, 1390, 1321, 1391, - 1321, 1321, 612, 1321, 614, 1392, 1393, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1395, 1396, 1321, 637, 1397, 1321, - 640, 1398, 1321, 643, 1399, 1321, 1400, 1401, 1321, 649, - 1402, 1403, 1321, 1321, 654, 1321, 656, 1404, 1405, 1406, - 1321, 1407, 1321, 1408, 1321, 1321, 666, 1321, 668, 1409, - 1410, 1411, 1321, 1412, 1413, 1321, 1414, 1321, 1415, 1321, - 1321, 681, 1321, 683, 1416, 1417, 1418, 1321, 1419, 1321, - 1420, 1421, 1321, 1321, 1321, 1321, 695, 1422, 1423, 1423, + 1392, 1329, 1393, 1394, 1329, 1329, 1329, 1329, 607, 1395, + 1396, 1329, 1381, 1397, 1329, 1398, 1329, 1399, 1329, 1329, + 620, 1329, 622, 1400, 1401, 1402, 1402, 1402, 1402, 1402, + 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, + 1402, 1402, 1403, 1404, 1329, 645, 1405, 1329, 648, 1406, + 1329, 651, 1407, 1329, 1408, 1409, 1329, 657, 1410, 1411, + 1329, 1329, 662, 1329, 664, 1412, 1413, 1414, 1329, 1415, + 1329, 1416, 1329, 1329, 674, 1329, 676, 1417, 1418, 1419, + 1329, 1420, 1421, 1329, 1422, 1329, 1423, 1329, 1329, 689, + 1329, 691, 1424, 1425, 1426, 1329, 1427, 1329, 1428, 1429, - 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, - 1423, 1424, 1321, 1321, 1321, 714, 1321, 1321, 717, 1321, - 1321, 720, 1425, 1426, 1321, 1321, 1321, 1321, 727, 1427, - 1321, 1428, 1429, 1321, 1321, 1321, 1321, 736, 1430, 1321, - 1431, 1321, 1432, 1433, 1321, 1321, 1321, 1321, 747, 1434, - 1435, 1321, 1436, 1321, 1437, 1438, 1321, 1321, 1321, 1321, - 759, 1439, 1440, 1441, 1321, 1442, 1443, 1321, 1444, 1321, - 1445, 1321, 1321, 773, 1321, 775, 1446, 1447, 1448, 1448, - 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1449, - 1450, 1321, 792, 1451, 1321, 795, 1452, 1321, 798, 1453, + 1329, 1329, 1329, 1329, 703, 1430, 1431, 1431, 1431, 1431, + 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1432, + 1329, 1329, 1329, 722, 1329, 1329, 725, 1329, 1329, 728, + 1433, 1434, 1329, 1329, 1329, 1329, 735, 1435, 1329, 1436, + 1437, 1329, 1329, 1329, 1329, 744, 1438, 1329, 1439, 1329, + 1440, 1441, 1329, 1329, 1329, 1329, 755, 1442, 1443, 1329, + 1444, 1329, 1445, 1446, 1329, 1329, 1329, 1329, 767, 1447, + 1448, 1449, 1329, 1450, 1451, 1329, 1452, 1329, 1453, 1329, + 1329, 781, 1329, 783, 1454, 1455, 1456, 1456, 1456, 1456, + 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1457, 1458, 1329, - 1321, 801, 1454, 1321, 1455, 1321, 1321, 807, 1456, 1457, - 1321, 1321, 812, 1321, 814, 1458, 1459, 1460, 1321, 1461, - 1321, 1462, 1321, 1321, 824, 1321, 826, 1463, 1464, 1465, - 1321, 1466, 1467, 1321, 1468, 1321, 1469, 1321, 1321, 839, - 1321, 841, 1470, 1471, 1472, 1473, 1321, 1474, 1475, 1321, - 1476, 1321, 1477, 1321, 1321, 855, 1321, 857, 1478, 1479, - 1480, 1321, 1481, 1321, 1482, 1483, 1321, 1321, 1321, 1321, - 869, 1484, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, - 1485, 1485, 1485, 1485, 1486, 1321, 1321, 1321, 887, 1321, - 1321, 890, 1321, 1321, 893, 1321, 1321, 896, 1487, 1321, + 800, 1459, 1329, 803, 1460, 1329, 806, 1461, 1329, 809, + 1462, 1329, 1463, 1329, 1329, 815, 1464, 1465, 1329, 1329, + 820, 1329, 822, 1466, 1467, 1468, 1329, 1469, 1329, 1470, + 1329, 1329, 832, 1329, 834, 1471, 1472, 1473, 1329, 1474, + 1475, 1329, 1476, 1329, 1477, 1329, 1329, 847, 1329, 849, + 1478, 1479, 1480, 1481, 1329, 1482, 1483, 1329, 1484, 1329, + 1485, 1329, 1329, 863, 1329, 865, 1486, 1487, 1488, 1329, + 1489, 1329, 1490, 1491, 1329, 1329, 1329, 1329, 877, 1492, + 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, + 1493, 1493, 1494, 1329, 1329, 1329, 895, 1329, 1329, 898, - 900, 1488, 1489, 1321, 1321, 1490, 905, 1491, 1321, 1492, - 1493, 1321, 1321, 1321, 1494, 914, 1495, 1321, 1496, 1321, - 1497, 1498, 1321, 1321, 1321, 1499, 925, 1500, 1501, 1321, - 1502, 1321, 1503, 1504, 1321, 1321, 1321, 1505, 937, 1506, - 1507, 1321, 1508, 1321, 1509, 1510, 1321, 1321, 1321, 1511, - 949, 1512, 1513, 1514, 1321, 1515, 1516, 1321, 1517, 1321, - 1518, 1321, 1321, 963, 1321, 965, 1519, 1520, 1521, 1521, - 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1522, 1321, - 1321, 981, 1523, 1321, 984, 1524, 1321, 987, 1525, 1321, - 990, 1526, 1321, 993, 1527, 1321, 1321, 1321, 1528, 998, + 1329, 1329, 901, 1329, 1329, 904, 1495, 1329, 908, 1496, + 1497, 1329, 1329, 1498, 913, 1499, 1329, 1500, 1501, 1329, + 1329, 1329, 1502, 922, 1503, 1329, 1504, 1329, 1505, 1506, + 1329, 1329, 1329, 1507, 933, 1508, 1509, 1329, 1510, 1329, + 1511, 1512, 1329, 1329, 1329, 1513, 945, 1514, 1515, 1329, + 1516, 1329, 1517, 1518, 1329, 1329, 1329, 1519, 957, 1520, + 1521, 1522, 1329, 1523, 1524, 1329, 1525, 1329, 1526, 1329, + 1329, 971, 1329, 973, 1527, 1528, 1529, 1529, 1529, 1529, + 1529, 1529, 1529, 1529, 1529, 1529, 1530, 1329, 1329, 989, + 1531, 1329, 992, 1532, 1329, 995, 1533, 1329, 998, 1534, - 1529, 1530, 1531, 1321, 1321, 1005, 1532, 1533, 1534, 1321, - 1535, 1321, 1536, 1321, 1321, 1015, 1537, 1538, 1539, 1321, - 1540, 1541, 1321, 1542, 1321, 1543, 1321, 1321, 1028, 1544, - 1545, 1546, 1547, 1321, 1548, 1549, 1321, 1550, 1321, 1551, - 1321, 1321, 1042, 1552, 1553, 1554, 1555, 1321, 1556, 1557, - 1321, 1558, 1321, 1559, 1321, 1321, 1056, 1560, 1561, 1562, - 1321, 1563, 1321, 1564, 1565, 1321, 1321, 1321, 1566, 1068, - 1567, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1321, - 1080, 1569, 1570, 1321, 1571, 1084, 1321, 1572, 1087, 1321, - 1573, 1090, 1321, 1574, 1093, 1321, 1575, 1096, 1576, 1321, + 1329, 1001, 1535, 1329, 1329, 1329, 1536, 1006, 1537, 1538, + 1539, 1329, 1329, 1013, 1540, 1541, 1542, 1329, 1543, 1329, + 1544, 1329, 1329, 1023, 1545, 1546, 1547, 1329, 1548, 1549, + 1329, 1550, 1329, 1551, 1329, 1329, 1036, 1552, 1553, 1554, + 1555, 1329, 1556, 1557, 1329, 1558, 1329, 1559, 1329, 1329, + 1050, 1560, 1561, 1562, 1563, 1329, 1564, 1565, 1329, 1566, + 1329, 1567, 1329, 1329, 1064, 1568, 1569, 1570, 1329, 1571, + 1329, 1572, 1573, 1329, 1329, 1329, 1574, 1076, 1575, 1576, + 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1329, 1088, 1577, + 1578, 1329, 1579, 1092, 1329, 1580, 1095, 1329, 1581, 1098, - 1321, 1101, 1577, 1578, 1579, 1580, 1321, 1581, 1582, 1321, - 1583, 1321, 1584, 1321, 1585, 1586, 1321, 1587, 1588, 1321, - 1589, 1321, 1590, 1591, 1321, 1592, 1593, 1321, 1594, 1321, - 1595, 1596, 1321, 1597, 1598, 1321, 1599, 1321, 1600, 1601, - 1321, 1602, 1603, 1604, 1321, 1605, 1606, 1321, 1607, 1321, - 1608, 1321, 1321, 1153, 1609, 1610, 1611, 1611, 1611, 1611, - 1321, 1612, 1161, 1613, 1614, 1615, 1616, 1617, 1618, 1321, - 1619, 1620, 1321, 1621, 1622, 1623, 1321, 1624, 1321, 1625, - 1626, 1321, 1627, 1628, 1321, 1629, 1321, 1630, 1631, 1632, - 1321, 1633, 1634, 1321, 1635, 1321, 1636, 1637, 1638, 1321, + 1329, 1582, 1101, 1329, 1583, 1104, 1584, 1329, 1329, 1109, + 1585, 1586, 1587, 1588, 1329, 1589, 1590, 1329, 1591, 1329, + 1592, 1329, 1593, 1594, 1329, 1595, 1596, 1329, 1597, 1329, + 1598, 1599, 1329, 1600, 1601, 1329, 1602, 1329, 1603, 1604, + 1329, 1605, 1606, 1329, 1607, 1329, 1608, 1609, 1329, 1610, + 1611, 1612, 1329, 1613, 1614, 1329, 1615, 1329, 1616, 1329, + 1329, 1161, 1617, 1618, 1619, 1619, 1619, 1619, 1329, 1620, + 1169, 1621, 1622, 1623, 1624, 1625, 1626, 1329, 1627, 1628, + 1329, 1629, 1630, 1631, 1329, 1632, 1329, 1633, 1634, 1329, + 1635, 1636, 1329, 1637, 1329, 1638, 1639, 1640, 1329, 1641, - 1639, 1640, 1321, 1641, 1321, 1642, 1643, 1644, 1321, 1645, - 1646, 1321, 1647, 1321, 1648, 1649, 1321, 1650, 1321, 1651, - 1652, 1321, 1653, 1654, 1654, 1654, 1654, 1655, 1321, 1656, - 1657, 1658, 1659, 1660, 1661, 1662, 1321, 1663, 1321, 1664, - 1321, 1321, 1665, 1321, 1666, 1321, 1667, 1321, 1668, 1321, - 1669, 1321, 1670, 1321, 1671, 1321, 1672, 1321, 1673, 1321, - 1649, 1674, 1321, 1650, 1675, 1321, 1651, 1321, 1676, 1654, - 1654, 1654, 1677, 1321, 1678, 1679, 1321, 1665, 1666, 1680, - 1321, 1667, 1668, 1681, 1321, 1669, 1670, 1682, 1321, 1671, - 1672, 1683, 1321, 1673, 1684, 1321, 1685, 1321, 1654, 1686, + 1642, 1329, 1643, 1329, 1644, 1645, 1646, 1329, 1647, 1648, + 1329, 1649, 1329, 1650, 1651, 1652, 1329, 1653, 1654, 1329, + 1655, 1329, 1656, 1657, 1329, 1658, 1329, 1659, 1660, 1329, + 1661, 1662, 1662, 1662, 1662, 1663, 1329, 1664, 1665, 1666, + 1667, 1668, 1669, 1670, 1329, 1671, 1329, 1672, 1329, 1329, + 1673, 1329, 1674, 1329, 1675, 1329, 1676, 1329, 1677, 1329, + 1678, 1329, 1679, 1329, 1680, 1329, 1681, 1329, 1657, 1682, + 1329, 1658, 1683, 1329, 1659, 1329, 1684, 1662, 1662, 1662, + 1685, 1329, 1686, 1687, 1329, 1673, 1674, 1688, 1329, 1675, + 1676, 1689, 1329, 1677, 1678, 1690, 1329, 1679, 1680, 1691, - 1321, 1678, 1687, 1688, 1689, 1690, 1691, 1684, 1692, 1321, - 1685, 1693, 1687, 1688, 1689, 1690, 1691, 1694, 1693, 1694, - 0, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, + 1329, 1681, 1692, 1329, 1693, 1329, 1662, 1694, 1329, 1686, + 1695, 1696, 1697, 1698, 1699, 1692, 1700, 1329, 1693, 1701, + 1695, 1696, 1697, 1698, 1699, 1702, 1701, 1702, 0, 1329, + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321 + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + 1329, 1329 } ; -static yyconst short int yy_nxt[6645] = +static yyconst flex_int16_t yy_nxt[6623] = { 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 11, 13, 14, 15, 15, 15, 15, 15, 16, 17, 18, 19, 20, 21, 21, 11, 22, 13, 23, 24, 25, 26, 27, 28, 29, 30, 31, 21, 32, 33, 34, 35, 36, 21, 37, 38, 39, 40, 41, 42, 21, - 21, 43, 44, 44, 177, 44, 44, 44, 44, 44, + 21, 43, 44, 44, 180, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 69, 44, 44, 44, 44, - 44, 44, 53, 56, 57, 1296, 44, 44, 44, 70, - 44, 59, 60, 53, 44, 149, 71, 178, 44, 48, + 44, 44, 53, 56, 57, 1304, 44, 44, 44, 70, + 44, 59, 60, 53, 44, 151, 71, 181, 44, 48, 49, 50, 50, 50, 50, 50, 50, 51, 53, 78, - 79, 52, 53, 54, 1274, 1258, 48, 52, 52, 52, + 79, 52, 53, 54, 1282, 1266, 48, 52, 52, 52, 52, 52, 52, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 54, - 53, 44, 104, 63, 44, 64, 44, 81, 172, 44, - 65, 105, 129, 173, 1254, 66, 53, 61, 55, 67, - 61, 68, 61, 82, 128, 61, 44, 53, 52, 52, - 52, 52, 52, 52, 61, 75, 72, 99, 129, 73, - 53, 100, 61, 74, 184, 76, 106, 121, 77, 185, - 101, 102, 53, 122, 347, 123, 103, 124, 107, 348, - 108, 125, 109, 126, 127, 110, 53, 53, 53, 53, - - 53, 53, 53, 1321, 182, 92, 93, 53, 53, 1250, - 183, 1246, 153, 53, 53, 53, 53, 53, 53, 84, - 94, 159, 85, 86, 95, 87, 53, 88, 96, 89, - 97, 90, 116, 111, 91, 53, 117, 98, 112, 113, - 131, 114, 115, 166, 118, 1242, 1219, 210, 132, 119, - 44, 120, 133, 44, 134, 44, 53, 162, 44, 138, - 139, 139, 139, 139, 139, 211, 1321, 44, 53, 141, - 141, 141, 141, 141, 141, 44, 49, 140, 140, 140, - 140, 140, 140, 163, 291, 1321, 1217, 141, 1170, 164, - 1069, 1138, 1321, 141, 141, 141, 141, 141, 141, 144, - - 144, 144, 144, 144, 144, 61, 48, 292, 61, 144, - 61, 1321, 204, 61, 179, 144, 144, 144, 144, 144, - 144, 44, 61, 48, 44, 205, 44, 48, 1136, 44, - 61, 216, 145, 146, 146, 146, 146, 146, 44, 1130, - 180, 217, 147, 1128, 48, 181, 44, 706, 147, 147, - 147, 147, 147, 147, 53, 141, 141, 141, 141, 141, - 141, 213, 53, 231, 231, 231, 231, 231, 231, 272, - 214, 53, 231, 231, 231, 231, 231, 231, 238, 304, - 1122, 1120, 273, 1114, 1112, 240, 434, 148, 227, 139, - 139, 139, 139, 139, 139, 295, 296, 296, 296, 296, - - 296, 228, 310, 311, 311, 311, 311, 311, 1321, 313, - 313, 313, 313, 313, 313, 53, 371, 372, 372, 372, - 372, 372, 380, 48, 410, 414, 1107, 228, 229, 229, - 229, 229, 229, 229, 230, 381, 1321, 411, 231, 415, - 48, 53, 48, 707, 231, 231, 231, 231, 231, 231, - 234, 235, 235, 235, 235, 235, 236, 384, 1321, 48, - 237, 381, 1321, 48, 386, 369, 237, 237, 237, 237, - 237, 237, 238, 239, 239, 239, 239, 239, 239, 240, - 48, 709, 350, 241, 1321, 242, 1162, 351, 326, 241, - 241, 241, 241, 241, 241, 327, 352, 1321, 353, 354, - - 1229, 355, 428, 429, 429, 429, 429, 429, 328, 444, - 473, 242, 53, 231, 231, 231, 231, 231, 231, 474, - 1067, 1063, 445, 1321, 329, 1321, 374, 374, 374, 374, - 374, 374, 380, 311, 311, 311, 311, 311, 311, 1061, - 476, 251, 297, 297, 297, 297, 297, 297, 445, 477, - 439, 369, 297, 1097, 1321, 53, 1321, 570, 297, 297, - 297, 297, 297, 297, 49, 298, 298, 298, 298, 298, - 298, 230, 304, 305, 305, 305, 305, 305, 305, 306, - 1321, 53, 1321, 307, 1321, 308, 369, 1094, 369, 307, - 307, 307, 307, 307, 307, 1321, 383, 383, 383, 383, - - 383, 383, 444, 372, 372, 372, 372, 372, 372, 533, - 1321, 308, 238, 312, 312, 312, 312, 312, 312, 240, - 1321, 1321, 534, 313, 1321, 1091, 48, 48, 369, 313, - 313, 313, 313, 313, 313, 314, 315, 315, 315, 315, - 315, 1088, 448, 48, 48, 316, 1321, 1321, 534, 573, - 1321, 316, 316, 316, 316, 316, 316, 357, 296, 296, - 296, 296, 296, 296, 453, 454, 454, 454, 454, 454, - 358, 1321, 447, 447, 447, 447, 447, 447, 457, 458, - 458, 458, 458, 458, 1321, 460, 460, 460, 460, 460, - 460, 535, 583, 592, 48, 594, 358, 361, 362, 362, - - 362, 362, 362, 539, 536, 584, 593, 363, 595, 48, - 541, 48, 369, 363, 363, 363, 363, 363, 363, 367, - 368, 368, 368, 368, 368, 369, 48, 1321, 687, 370, - 536, 584, 593, 699, 595, 370, 370, 370, 370, 370, - 370, 304, 373, 373, 373, 373, 373, 373, 306, 1321, - 578, 1085, 374, 1321, 687, 48, 48, 715, 374, 374, - 374, 374, 374, 374, 375, 376, 376, 376, 376, 376, - 369, 587, 48, 48, 377, 1321, 710, 705, 718, 48, - 377, 377, 377, 377, 377, 377, 238, 382, 382, 382, - 382, 382, 382, 240, 369, 1321, 48, 383, 1321, 1321, - - 48, 779, 997, 383, 383, 383, 383, 383, 383, 384, - 385, 385, 385, 385, 385, 385, 386, 48, 369, 1321, - 387, 1321, 388, 369, 1321, 1321, 387, 387, 387, 387, - 387, 387, 513, 514, 514, 514, 514, 514, 1321, 516, - 516, 516, 516, 516, 516, 1321, 1321, 598, 388, 395, - 1321, 751, 1321, 396, 721, 1162, 397, 48, 688, 398, - 690, 399, 400, 401, 402, 430, 430, 430, 430, 430, - 430, 689, 1321, 691, 48, 430, 1321, 751, 1321, 780, - 870, 430, 430, 430, 430, 430, 430, 304, 433, 433, - 433, 433, 433, 433, 434, 694, 726, 689, 435, 691, - - 308, 948, 696, 888, 435, 435, 435, 435, 435, 435, - 521, 522, 522, 522, 522, 522, 525, 526, 526, 526, - 526, 526, 48, 369, 48, 944, 308, 439, 440, 440, - 440, 440, 440, 440, 441, 942, 735, 936, 442, 48, - 443, 48, 788, 891, 442, 442, 442, 442, 442, 442, - 1321, 528, 528, 528, 528, 528, 528, 533, 454, 454, - 454, 454, 454, 454, 48, 48, 443, 304, 446, 446, - 446, 446, 446, 446, 434, 369, 861, 932, 447, 930, - 1321, 48, 48, 48, 447, 447, 447, 447, 447, 447, - 448, 449, 449, 449, 449, 449, 449, 450, 700, 701, - - 48, 451, 861, 452, 924, 781, 1321, 451, 451, 451, - 451, 451, 451, 238, 456, 456, 456, 456, 456, 456, - 535, 458, 458, 458, 458, 458, 458, 48, 48, 452, - 384, 459, 459, 459, 459, 459, 459, 386, 369, 746, - 1321, 460, 48, 48, 48, 48, 894, 460, 460, 460, - 460, 460, 460, 461, 462, 462, 462, 462, 462, 48, - 48, 702, 704, 463, 783, 785, 1321, 920, 918, 463, - 463, 463, 463, 463, 463, 429, 429, 429, 429, 429, - 429, 603, 604, 604, 604, 604, 604, 498, 1321, 538, - 538, 538, 538, 538, 538, 583, 514, 514, 514, 514, - - 514, 514, 1321, 586, 586, 586, 586, 586, 586, 731, - 740, 48, 48, 498, 501, 502, 502, 502, 502, 502, - 913, 369, 732, 741, 503, 1321, 909, 48, 48, 48, - 503, 503, 503, 503, 503, 503, 504, 505, 505, 505, - 505, 505, 711, 782, 48, 904, 506, 878, 732, 741, - 48, 1321, 506, 506, 506, 506, 506, 506, 510, 511, - 511, 511, 511, 511, 369, 369, 1321, 48, 512, 1321, - 1321, 48, 786, 48, 512, 512, 512, 512, 512, 512, - 439, 515, 515, 515, 515, 515, 515, 441, 48, 1321, - 48, 516, 1321, 882, 974, 1321, 1321, 516, 516, 516, - - 516, 516, 516, 517, 518, 518, 518, 518, 518, 369, - 758, 1321, 929, 519, 1321, 1321, 48, 897, 369, 519, - 519, 519, 519, 519, 519, 448, 527, 527, 527, 527, - 527, 527, 450, 48, 941, 1321, 528, 1321, 929, 48, - 1321, 884, 528, 528, 528, 528, 528, 528, 529, 530, - 530, 530, 530, 530, 369, 1104, 48, 980, 531, 1097, - 941, 1321, 48, 48, 531, 531, 531, 531, 531, 531, - 384, 537, 537, 537, 537, 537, 537, 386, 1094, 48, - 48, 538, 1321, 977, 48, 978, 1091, 538, 538, 538, - 538, 538, 538, 539, 540, 540, 540, 540, 540, 540, - - 541, 48, 868, 1075, 542, 1088, 543, 1085, 1321, 870, - 542, 542, 542, 542, 542, 542, 592, 522, 522, 522, - 522, 522, 522, 304, 524, 524, 524, 524, 524, 524, - 48, 742, 543, 566, 566, 566, 566, 566, 566, 1060, - 980, 1321, 868, 566, 743, 1321, 48, 48, 1069, 566, - 566, 566, 566, 566, 566, 439, 569, 569, 569, 569, - 569, 569, 570, 48, 784, 1060, 571, 1321, 443, 864, - 743, 1321, 571, 571, 571, 571, 571, 571, 594, 526, - 526, 526, 526, 526, 526, 1321, 597, 597, 597, 597, - 597, 597, 752, 48, 443, 448, 572, 572, 572, 572, - - 572, 572, 573, 862, 904, 753, 574, 1321, 452, 369, - 48, 1085, 574, 574, 574, 574, 574, 574, 606, 607, - 607, 607, 607, 607, 610, 611, 611, 611, 611, 611, - 976, 753, 48, 1321, 452, 578, 579, 579, 579, 579, - 579, 579, 580, 913, 924, 897, 581, 369, 582, 48, - 1088, 1091, 581, 581, 581, 581, 581, 581, 1321, 613, - 613, 613, 613, 613, 613, 1321, 516, 516, 516, 516, - 516, 516, 48, 48, 582, 439, 585, 585, 585, 585, - 585, 585, 570, 894, 1321, 369, 586, 1321, 1321, 48, - 48, 891, 586, 586, 586, 586, 586, 586, 587, 588, - - 588, 588, 588, 588, 588, 589, 369, 877, 789, 590, - 1321, 591, 888, 1321, 1321, 590, 590, 590, 590, 590, - 590, 1321, 528, 528, 528, 528, 528, 528, 652, 653, - 653, 653, 653, 653, 754, 48, 369, 591, 448, 596, - 596, 596, 596, 596, 596, 573, 999, 755, 369, 597, - 980, 1119, 48, 879, 48, 597, 597, 597, 597, 597, - 597, 598, 599, 599, 599, 599, 599, 599, 600, 980, - 880, 48, 601, 755, 602, 696, 1078, 1119, 601, 601, - 601, 601, 601, 601, 1321, 655, 655, 655, 655, 655, - 655, 660, 661, 661, 661, 661, 661, 862, 48, 48, - - 602, 539, 612, 612, 612, 612, 612, 612, 541, 1127, - 863, 1135, 613, 758, 950, 48, 48, 754, 613, 613, - 613, 613, 613, 613, 614, 615, 615, 615, 615, 615, - 787, 873, 1321, 752, 616, 1127, 863, 1135, 48, 864, - 616, 616, 616, 616, 616, 616, 637, 638, 638, 638, - 638, 638, 865, 746, 936, 48, 639, 1216, 1321, 48, - 48, 1094, 639, 639, 639, 639, 639, 639, 439, 515, - 515, 515, 515, 515, 515, 570, 48, 48, 865, 516, - 1245, 48, 48, 1216, 909, 516, 516, 516, 516, 516, - 516, 640, 641, 641, 641, 641, 641, 910, 48, 48, - - 1072, 642, 1249, 1253, 48, 938, 1245, 642, 642, 642, - 642, 642, 642, 448, 527, 527, 527, 527, 527, 527, - 573, 48, 1073, 910, 528, 48, 48, 48, 1249, 1253, - 528, 528, 528, 528, 528, 528, 643, 644, 644, 644, - 644, 644, 48, 48, 48, 1074, 645, 742, 1157, 740, - 48, 735, 645, 645, 645, 645, 645, 645, 649, 650, - 650, 650, 650, 650, 369, 1076, 948, 48, 651, 1257, - 1225, 48, 48, 1097, 651, 651, 651, 651, 651, 651, - 578, 654, 654, 654, 654, 654, 654, 580, 48, 48, - 1295, 655, 1226, 926, 731, 1257, 726, 655, 655, 655, - - 655, 655, 655, 656, 657, 657, 657, 657, 657, 369, - 997, 1067, 1227, 658, 1303, 1304, 1295, 1162, 1069, 658, - 658, 658, 658, 658, 658, 664, 665, 665, 665, 665, - 665, 587, 666, 666, 666, 666, 666, 666, 589, 1305, - 1303, 1304, 667, 915, 48, 48, 48, 906, 667, 667, - 667, 667, 667, 667, 668, 669, 669, 669, 669, 669, - 369, 48, 48, 48, 670, 1305, 806, 791, 897, 1272, - 670, 670, 670, 670, 670, 670, 1321, 667, 667, 667, - 667, 667, 667, 672, 673, 673, 673, 673, 673, 675, - 676, 676, 676, 676, 676, 679, 680, 680, 680, 680, - - 680, 598, 681, 681, 681, 681, 681, 681, 600, 1306, - 1307, 1312, 682, 1318, 48, 48, 894, 891, 682, 682, - 682, 682, 682, 682, 683, 684, 684, 684, 684, 684, - 369, 48, 48, 888, 685, 1306, 1307, 1312, 886, 1318, - 685, 685, 685, 685, 685, 685, 1321, 682, 682, 682, - 682, 682, 682, 604, 604, 604, 604, 604, 604, 688, - 607, 607, 607, 607, 607, 607, 384, 609, 609, 609, - 609, 609, 609, 690, 611, 611, 611, 611, 611, 611, - 539, 692, 692, 692, 692, 692, 692, 541, 791, 694, - 870, 693, 690, 688, 721, 718, 715, 693, 693, 693, - - 693, 693, 693, 1321, 693, 693, 693, 693, 693, 693, - 694, 695, 695, 695, 695, 695, 695, 696, 48, 48, - 806, 697, 48, 698, 791, 918, 791, 697, 697, 697, - 697, 697, 697, 48, 541, 48, 48, 598, 919, 48, - 731, 653, 653, 653, 653, 653, 653, 703, 708, 698, - 48, 289, 578, 714, 714, 714, 714, 714, 714, 715, - 760, 594, 592, 716, 919, 582, 881, 587, 748, 716, - 716, 716, 716, 716, 716, 1321, 734, 734, 734, 734, - 734, 734, 740, 661, 661, 661, 661, 661, 661, 583, - 578, 582, 587, 717, 717, 717, 717, 717, 717, 718, - - 737, 728, 725, 719, 648, 591, 636, 721, 718, 719, - 719, 719, 719, 719, 719, 439, 663, 663, 663, 663, - 663, 663, 742, 665, 665, 665, 665, 665, 665, 920, - 715, 591, 598, 720, 720, 720, 720, 720, 720, 721, - 713, 636, 921, 722, 539, 602, 696, 535, 533, 722, - 722, 722, 722, 722, 722, 1321, 745, 745, 745, 745, - 745, 745, 673, 673, 673, 673, 673, 673, 921, 573, - 570, 602, 726, 727, 727, 727, 727, 727, 727, 728, - 648, 636, 636, 729, 634, 730, 633, 632, 631, 729, - 729, 729, 729, 729, 729, 752, 676, 676, 676, 676, - - 676, 676, 448, 678, 678, 678, 678, 678, 678, 48, - 48, 730, 578, 733, 733, 733, 733, 733, 733, 715, - 630, 629, 628, 734, 627, 626, 48, 48, 625, 734, - 734, 734, 734, 734, 734, 735, 736, 736, 736, 736, - 736, 736, 737, 883, 1224, 624, 738, 623, 739, 622, - 621, 620, 738, 738, 738, 738, 738, 738, 754, 680, - 680, 680, 680, 680, 680, 1321, 757, 757, 757, 757, - 757, 757, 48, 619, 739, 587, 744, 744, 744, 744, - 744, 744, 718, 618, 386, 448, 745, 600, 444, 48, - 439, 589, 745, 745, 745, 745, 745, 745, 746, 747, - - 747, 747, 747, 747, 747, 748, 580, 577, 973, 749, - 509, 750, 500, 573, 570, 749, 749, 749, 749, 749, - 749, 764, 765, 765, 765, 765, 765, 767, 768, 768, - 768, 768, 768, 48, 930, 48, 568, 750, 598, 756, - 756, 756, 756, 756, 756, 721, 500, 931, 565, 757, - 48, 564, 48, 563, 562, 757, 757, 757, 757, 757, - 757, 758, 759, 759, 759, 759, 759, 759, 760, 1270, - 561, 1299, 761, 931, 762, 560, 559, 558, 761, 761, - 761, 761, 761, 761, 771, 772, 772, 772, 772, 772, - 1321, 774, 774, 774, 774, 774, 774, 932, 48, 48, - - 762, 694, 773, 773, 773, 773, 773, 773, 696, 557, - 933, 556, 774, 555, 554, 48, 48, 553, 774, 774, - 774, 774, 774, 774, 775, 776, 776, 776, 776, 776, - 874, 875, 876, 552, 777, 551, 933, 550, 549, 942, - 777, 777, 777, 777, 777, 777, 792, 793, 793, 793, - 793, 793, 943, 548, 547, 546, 794, 545, 544, 384, - 541, 380, 794, 794, 794, 794, 794, 794, 578, 654, - 654, 654, 654, 654, 654, 715, 434, 509, 943, 655, - 48, 500, 434, 434, 500, 655, 655, 655, 655, 655, - 655, 795, 796, 796, 796, 796, 796, 48, 357, 497, - - 496, 797, 495, 494, 493, 492, 1158, 797, 797, 797, - 797, 797, 797, 1321, 655, 655, 655, 655, 655, 655, - 587, 666, 666, 666, 666, 666, 666, 718, 491, 490, - 286, 667, 48, 207, 489, 488, 487, 667, 667, 667, - 667, 667, 667, 798, 799, 799, 799, 799, 799, 48, - 486, 485, 484, 800, 483, 482, 481, 480, 1271, 800, - 800, 800, 800, 800, 800, 1321, 667, 667, 667, 667, - 667, 667, 598, 681, 681, 681, 681, 681, 681, 721, - 479, 478, 475, 682, 472, 471, 470, 469, 468, 682, - 682, 682, 682, 682, 682, 801, 802, 802, 802, 802, - - 802, 467, 466, 465, 240, 803, 369, 304, 450, 441, - 369, 803, 803, 803, 803, 803, 803, 1321, 682, 682, - 682, 682, 682, 682, 807, 808, 808, 808, 808, 808, - 369, 438, 366, 360, 809, 434, 432, 360, 427, 426, - 809, 809, 809, 809, 809, 809, 810, 811, 811, 811, - 811, 811, 726, 812, 812, 812, 812, 812, 812, 728, - 425, 424, 423, 813, 422, 421, 420, 419, 418, 813, - 813, 813, 813, 813, 813, 814, 815, 815, 815, 815, - 815, 369, 417, 416, 413, 816, 412, 409, 408, 407, - 406, 816, 816, 816, 816, 816, 816, 1321, 813, 813, - - 813, 813, 813, 813, 818, 819, 819, 819, 819, 819, - 822, 823, 823, 823, 823, 823, 735, 824, 824, 824, - 824, 824, 824, 737, 405, 107, 404, 825, 403, 394, - 393, 392, 391, 825, 825, 825, 825, 825, 825, 826, - 827, 827, 827, 827, 827, 369, 390, 389, 238, 828, - 386, 369, 366, 360, 360, 828, 828, 828, 828, 828, - 828, 1321, 825, 825, 825, 825, 825, 825, 830, 831, - 831, 831, 831, 831, 833, 834, 834, 834, 834, 834, - 837, 838, 838, 838, 838, 838, 746, 839, 839, 839, - 839, 839, 839, 748, 1321, 227, 356, 840, 349, 346, - - 345, 344, 343, 840, 840, 840, 840, 840, 840, 841, - 842, 842, 842, 842, 842, 369, 342, 341, 340, 843, - 339, 338, 337, 336, 335, 843, 843, 843, 843, 843, - 843, 1321, 840, 840, 840, 840, 840, 840, 846, 847, - 847, 847, 847, 847, 849, 850, 850, 850, 850, 850, - 853, 854, 854, 854, 854, 854, 758, 855, 855, 855, - 855, 855, 855, 760, 334, 333, 332, 856, 331, 330, - 325, 324, 269, 856, 856, 856, 856, 856, 856, 857, - 858, 858, 858, 858, 858, 369, 323, 322, 321, 859, - 320, 319, 318, 306, 236, 859, 859, 859, 859, 859, - - 859, 1321, 856, 856, 856, 856, 856, 856, 765, 765, - 765, 765, 765, 765, 862, 768, 768, 768, 768, 768, - 768, 539, 770, 770, 770, 770, 770, 770, 864, 772, - 772, 772, 772, 772, 772, 694, 866, 866, 866, 866, - 866, 866, 696, 303, 233, 230, 867, 300, 129, 294, - 293, 290, 867, 867, 867, 867, 867, 867, 1321, 867, - 867, 867, 867, 867, 867, 868, 869, 869, 869, 869, - 869, 869, 870, 289, 269, 288, 871, 287, 872, 286, - 285, 284, 871, 871, 871, 871, 871, 871, 909, 811, - 811, 811, 811, 811, 811, 1321, 912, 912, 912, 912, - - 912, 912, 283, 282, 872, 726, 887, 887, 887, 887, - 887, 887, 888, 281, 280, 279, 889, 278, 730, 277, - 276, 275, 889, 889, 889, 889, 889, 889, 918, 819, - 819, 819, 819, 819, 819, 578, 821, 821, 821, 821, - 821, 821, 274, 271, 730, 735, 890, 890, 890, 890, - 890, 890, 891, 270, 269, 268, 892, 267, 739, 266, - 265, 264, 892, 892, 892, 892, 892, 892, 920, 823, - 823, 823, 823, 823, 823, 1321, 923, 923, 923, 923, - 923, 923, 944, 263, 739, 746, 893, 893, 893, 893, - 893, 893, 894, 262, 261, 945, 895, 260, 750, 259, - - 258, 257, 895, 895, 895, 895, 895, 895, 831, 831, - 831, 831, 831, 831, 930, 834, 834, 834, 834, 834, - 834, 945, 256, 255, 750, 758, 896, 896, 896, 896, - 896, 896, 897, 254, 253, 252, 898, 250, 762, 249, - 248, 247, 898, 898, 898, 898, 898, 898, 587, 836, - 836, 836, 836, 836, 836, 932, 838, 838, 838, 838, - 838, 838, 246, 1061, 762, 900, 901, 901, 901, 901, - 901, 902, 245, 244, 243, 903, 1062, 240, 49, 233, - 226, 903, 903, 903, 903, 903, 903, 904, 905, 905, - 905, 905, 905, 905, 906, 225, 224, 223, 907, 222, - - 908, 221, 1062, 220, 907, 907, 907, 907, 907, 907, - 1321, 935, 935, 935, 935, 935, 935, 847, 847, 847, - 847, 847, 847, 1063, 219, 218, 908, 726, 911, 911, - 911, 911, 911, 911, 888, 215, 1064, 212, 912, 209, - 208, 207, 206, 203, 912, 912, 912, 912, 912, 912, - 913, 914, 914, 914, 914, 914, 914, 915, 202, 201, - 200, 916, 1064, 917, 199, 198, 197, 916, 916, 916, - 916, 916, 916, 942, 850, 850, 850, 850, 850, 850, - 598, 852, 852, 852, 852, 852, 852, 196, 195, 917, - 735, 922, 922, 922, 922, 922, 922, 891, 194, 193, - - 192, 923, 191, 190, 189, 188, 187, 923, 923, 923, - 923, 923, 923, 924, 925, 925, 925, 925, 925, 925, - 926, 186, 176, 175, 927, 174, 928, 171, 170, 169, - 927, 927, 927, 927, 927, 927, 944, 854, 854, 854, - 854, 854, 854, 1321, 947, 947, 947, 947, 947, 947, - 168, 167, 928, 746, 934, 934, 934, 934, 934, 934, - 894, 165, 161, 160, 935, 158, 157, 156, 155, 154, - 935, 935, 935, 935, 935, 935, 936, 937, 937, 937, - 937, 937, 937, 938, 152, 151, 150, 939, 143, 940, - 136, 135, 130, 939, 939, 939, 939, 939, 939, 954, - - 955, 955, 955, 955, 955, 957, 958, 958, 958, 958, - 958, 83, 1107, 80, 58, 940, 758, 946, 946, 946, - 946, 946, 946, 897, 47, 1108, 45, 947, 1321, 1321, - 1321, 1321, 1321, 947, 947, 947, 947, 947, 947, 948, - 949, 949, 949, 949, 949, 949, 950, 1321, 1321, 1321, - 951, 1108, 952, 1321, 1321, 1321, 951, 951, 951, 951, - 951, 951, 961, 962, 962, 962, 962, 962, 1321, 964, - 964, 964, 964, 964, 964, 1112, 1321, 1321, 952, 868, - 963, 963, 963, 963, 963, 963, 870, 1321, 1113, 1321, - 964, 1321, 1321, 1321, 1321, 1321, 964, 964, 964, 964, - - 964, 964, 965, 966, 966, 966, 966, 966, 48, 48, - 48, 48, 967, 48, 1113, 48, 1321, 1321, 967, 967, - 967, 967, 967, 967, 48, 48, 48, 48, 48, 1321, - 48, 1321, 48, 1321, 1321, 1321, 969, 970, 971, 1321, - 1114, 48, 972, 1077, 975, 981, 982, 982, 982, 982, - 982, 1321, 1321, 1115, 1321, 983, 1079, 1321, 1321, 1321, - 1321, 983, 983, 983, 983, 983, 983, 726, 812, 812, - 812, 812, 812, 812, 888, 1321, 1321, 1321, 813, 1115, - 1321, 1321, 1321, 1321, 813, 813, 813, 813, 813, 813, - 984, 985, 985, 985, 985, 985, 1321, 1321, 1321, 1321, - - 986, 1321, 1321, 1321, 1321, 1321, 986, 986, 986, 986, - 986, 986, 1321, 813, 813, 813, 813, 813, 813, 735, - 824, 824, 824, 824, 824, 824, 891, 1321, 1321, 1321, - 825, 1321, 1321, 1321, 1321, 1321, 825, 825, 825, 825, - 825, 825, 987, 988, 988, 988, 988, 988, 1321, 1321, - 1321, 1321, 989, 1321, 1321, 1321, 1321, 1321, 989, 989, - 989, 989, 989, 989, 1321, 825, 825, 825, 825, 825, - 825, 746, 839, 839, 839, 839, 839, 839, 894, 1321, - 1321, 1321, 840, 1321, 1321, 1321, 1321, 1321, 840, 840, - 840, 840, 840, 840, 990, 991, 991, 991, 991, 991, - - 1321, 1321, 1321, 1321, 992, 1321, 1321, 1321, 1321, 1321, - 992, 992, 992, 992, 992, 992, 1321, 840, 840, 840, - 840, 840, 840, 758, 855, 855, 855, 855, 855, 855, - 897, 1321, 1321, 1321, 856, 1321, 1321, 1321, 1321, 1321, - 856, 856, 856, 856, 856, 856, 993, 994, 994, 994, - 994, 994, 1321, 1321, 1321, 1321, 995, 1321, 1321, 1321, - 1321, 1321, 995, 995, 995, 995, 995, 995, 1321, 856, - 856, 856, 856, 856, 856, 997, 998, 998, 998, 998, - 998, 998, 999, 1321, 1321, 1321, 1000, 1321, 1001, 1321, - 1321, 1321, 1000, 1000, 1000, 1000, 1000, 1000, 1003, 1004, - - 1004, 1004, 1004, 1004, 1321, 1006, 1006, 1006, 1006, 1006, - 1006, 1321, 1321, 1321, 1001, 904, 1005, 1005, 1005, 1005, - 1005, 1005, 906, 1321, 1321, 1321, 1006, 1321, 1321, 1321, - 1321, 1321, 1006, 1006, 1006, 1006, 1006, 1006, 1009, 1010, - 1010, 1010, 1010, 1010, 1013, 1014, 1014, 1014, 1014, 1014, - 913, 1015, 1015, 1015, 1015, 1015, 1015, 915, 1321, 1321, - 1321, 1016, 1321, 1321, 1321, 1321, 1321, 1016, 1016, 1016, - 1016, 1016, 1016, 1321, 1016, 1016, 1016, 1016, 1016, 1016, - 1019, 1020, 1020, 1020, 1020, 1020, 1022, 1023, 1023, 1023, - 1023, 1023, 1026, 1027, 1027, 1027, 1027, 1027, 924, 1028, - - 1028, 1028, 1028, 1028, 1028, 926, 1321, 1321, 1321, 1029, - 1321, 1321, 1321, 1321, 1321, 1029, 1029, 1029, 1029, 1029, - 1029, 1321, 1029, 1029, 1029, 1029, 1029, 1029, 1033, 1034, - 1034, 1034, 1034, 1034, 1036, 1037, 1037, 1037, 1037, 1037, - 1040, 1041, 1041, 1041, 1041, 1041, 936, 1042, 1042, 1042, - 1042, 1042, 1042, 938, 1321, 1321, 1321, 1043, 1321, 1321, - 1321, 1321, 1321, 1043, 1043, 1043, 1043, 1043, 1043, 1321, - 1043, 1043, 1043, 1043, 1043, 1043, 1047, 1048, 1048, 1048, - 1048, 1048, 1050, 1051, 1051, 1051, 1051, 1051, 1054, 1055, - 1055, 1055, 1055, 1055, 948, 1056, 1056, 1056, 1056, 1056, - - 1056, 950, 1321, 1321, 1321, 1057, 1321, 1321, 1321, 1321, - 1321, 1057, 1057, 1057, 1057, 1057, 1057, 1321, 1057, 1057, - 1057, 1057, 1057, 1057, 955, 955, 955, 955, 955, 955, - 1061, 958, 958, 958, 958, 958, 958, 694, 960, 960, - 960, 960, 960, 960, 1063, 962, 962, 962, 962, 962, - 962, 868, 1065, 1065, 1065, 1065, 1065, 1065, 870, 1321, - 1321, 1321, 1066, 1321, 1321, 1321, 1321, 1321, 1066, 1066, - 1066, 1066, 1066, 1066, 1321, 1066, 1066, 1066, 1066, 1066, - 1066, 1067, 1068, 1068, 1068, 1068, 1068, 1068, 1069, 1321, - 1321, 1321, 1070, 1321, 1071, 1321, 1321, 1321, 1070, 1070, - - 1070, 1070, 1070, 1070, 1099, 1100, 1100, 1100, 1100, 1100, - 1321, 1102, 1102, 1102, 1102, 1102, 1102, 1321, 1321, 1120, - 1071, 1080, 1081, 1081, 1081, 1081, 1081, 1082, 1321, 1321, - 1321, 1083, 1121, 1321, 1321, 1321, 1321, 1083, 1083, 1083, - 1083, 1083, 1083, 904, 1084, 1084, 1084, 1084, 1084, 1084, - 1085, 1321, 1321, 1321, 1086, 1321, 908, 1321, 1121, 1321, - 1086, 1086, 1086, 1086, 1086, 1086, 1107, 1004, 1004, 1004, - 1004, 1004, 1004, 1321, 1110, 1110, 1110, 1110, 1110, 1110, - 1321, 1321, 908, 913, 1087, 1087, 1087, 1087, 1087, 1087, - 1088, 1321, 1321, 1321, 1089, 1321, 917, 1321, 1321, 1321, - - 1089, 1089, 1089, 1089, 1089, 1089, 1112, 1010, 1010, 1010, - 1010, 1010, 1010, 726, 1012, 1012, 1012, 1012, 1012, 1012, - 1321, 1321, 917, 924, 1090, 1090, 1090, 1090, 1090, 1090, - 1091, 1321, 1321, 1321, 1092, 1321, 928, 1321, 1321, 1321, - 1092, 1092, 1092, 1092, 1092, 1092, 1114, 1014, 1014, 1014, - 1014, 1014, 1014, 1321, 1117, 1117, 1117, 1117, 1117, 1117, - 1122, 1321, 928, 936, 1093, 1093, 1093, 1093, 1093, 1093, - 1094, 1321, 1321, 1123, 1095, 1321, 940, 1321, 1321, 1321, - 1095, 1095, 1095, 1095, 1095, 1095, 1020, 1020, 1020, 1020, - 1020, 1020, 1120, 1023, 1023, 1023, 1023, 1023, 1023, 1123, - - 1321, 1321, 940, 948, 1096, 1096, 1096, 1096, 1096, 1096, - 1097, 1321, 1321, 1321, 1098, 1321, 952, 1321, 1321, 1321, - 1098, 1098, 1098, 1098, 1098, 1098, 735, 1025, 1025, 1025, - 1025, 1025, 1025, 1122, 1027, 1027, 1027, 1027, 1027, 1027, - 1128, 1321, 952, 997, 1101, 1101, 1101, 1101, 1101, 1101, - 999, 1321, 1321, 1129, 1102, 1321, 1321, 1321, 1321, 1321, - 1102, 1102, 1102, 1102, 1102, 1102, 904, 1109, 1109, 1109, - 1109, 1109, 1109, 1085, 1321, 1321, 1321, 1110, 1321, 1129, - 1321, 1321, 1321, 1110, 1110, 1110, 1110, 1110, 1110, 913, - 1116, 1116, 1116, 1116, 1116, 1116, 1088, 1321, 1321, 1321, - - 1117, 1321, 1321, 1321, 1321, 1321, 1117, 1117, 1117, 1117, - 1117, 1117, 924, 1124, 1124, 1124, 1124, 1124, 1124, 1091, - 1321, 1321, 1321, 1125, 1321, 1321, 1321, 1321, 1321, 1125, - 1125, 1125, 1125, 1125, 1125, 1321, 1125, 1125, 1125, 1125, - 1125, 1125, 1034, 1034, 1034, 1034, 1034, 1034, 1128, 1037, - 1037, 1037, 1037, 1037, 1037, 746, 1039, 1039, 1039, 1039, - 1039, 1039, 1130, 1130, 1041, 1041, 1041, 1041, 1041, 1041, - 1321, 1321, 1321, 1321, 1321, 1131, 1321, 1133, 1133, 1133, - 1133, 1133, 1133, 1048, 1048, 1048, 1048, 1048, 1048, 1136, - 1051, 1051, 1051, 1051, 1051, 1051, 1321, 1136, 1138, 1321, - - 1321, 1131, 936, 1132, 1132, 1132, 1132, 1132, 1132, 1094, - 1137, 1139, 1321, 1133, 1321, 1321, 1321, 1321, 1321, 1133, - 1133, 1133, 1133, 1133, 1133, 758, 1053, 1053, 1053, 1053, - 1053, 1053, 1321, 1321, 1321, 1321, 1137, 1139, 1138, 1055, - 1055, 1055, 1055, 1055, 1055, 948, 1140, 1140, 1140, 1140, - 1140, 1140, 1097, 1321, 1321, 1321, 1141, 1321, 1321, 1321, - 1321, 1321, 1141, 1141, 1141, 1141, 1141, 1141, 1321, 1141, - 1141, 1141, 1141, 1141, 1141, 1144, 1145, 1145, 1145, 1145, - 1145, 1147, 1148, 1148, 1148, 1148, 1148, 1151, 1152, 1152, - 1152, 1152, 1152, 1067, 1153, 1153, 1153, 1153, 1153, 1153, - - 1069, 1321, 1321, 1321, 1154, 1321, 48, 48, 1321, 1321, - 1154, 1154, 1154, 1154, 1154, 1154, 1321, 1154, 1154, 1154, - 1154, 1154, 1154, 48, 48, 1321, 1006, 1006, 1006, 1006, - 1006, 1006, 1321, 1321, 1321, 1160, 1159, 997, 1161, 1161, - 1161, 1161, 1161, 1161, 1162, 1321, 1321, 1321, 1163, 1321, - 1001, 1321, 1321, 1321, 1163, 1163, 1163, 1163, 1163, 1163, - 1321, 1016, 1016, 1016, 1016, 1016, 1016, 1321, 1029, 1029, - 1029, 1029, 1029, 1029, 1170, 1321, 1001, 904, 1005, 1005, - 1005, 1005, 1005, 1005, 1085, 1321, 1321, 1171, 1006, 1321, - 1321, 1321, 1321, 1321, 1006, 1006, 1006, 1006, 1006, 1006, - - 913, 1015, 1015, 1015, 1015, 1015, 1015, 1088, 1321, 1321, - 1321, 1016, 1321, 1171, 1321, 1321, 1321, 1016, 1016, 1016, - 1016, 1016, 1016, 924, 1028, 1028, 1028, 1028, 1028, 1028, - 1091, 1321, 1321, 1321, 1029, 1321, 1321, 1321, 1321, 1321, - 1029, 1029, 1029, 1029, 1029, 1029, 936, 1042, 1042, 1042, - 1042, 1042, 1042, 1094, 1321, 1321, 1321, 1043, 1321, 1321, - 1321, 1321, 1321, 1043, 1043, 1043, 1043, 1043, 1043, 1321, - 1043, 1043, 1043, 1043, 1043, 1043, 948, 1056, 1056, 1056, - 1056, 1056, 1056, 1097, 1321, 1321, 1321, 1057, 1321, 1321, - 1321, 1321, 1321, 1057, 1057, 1057, 1057, 1057, 1057, 1321, - - 1057, 1057, 1057, 1057, 1057, 1057, 1170, 1100, 1100, 1100, - 1100, 1100, 1100, 997, 1172, 1172, 1172, 1172, 1172, 1172, - 1162, 1321, 1321, 1321, 1173, 1321, 1321, 1321, 1321, 1321, - 1173, 1173, 1173, 1173, 1173, 1173, 1321, 1173, 1173, 1173, - 1173, 1173, 1173, 1176, 1177, 1177, 1177, 1177, 1177, 1181, - 1182, 1182, 1182, 1182, 1182, 1184, 1185, 1185, 1185, 1185, - 1185, 1190, 1191, 1191, 1191, 1191, 1191, 1193, 1194, 1194, - 1194, 1194, 1194, 1199, 1200, 1200, 1200, 1200, 1200, 1202, - 1203, 1203, 1203, 1203, 1203, 1208, 1209, 1209, 1209, 1209, - 1209, 1211, 1212, 1212, 1212, 1212, 1212, 1145, 1145, 1145, - - 1145, 1145, 1145, 1217, 1217, 1148, 1148, 1148, 1148, 1148, - 1148, 1219, 1321, 1321, 1321, 1321, 1218, 868, 1150, 1150, - 1150, 1150, 1150, 1150, 1220, 1219, 1152, 1152, 1152, 1152, - 1152, 1152, 1321, 1222, 1222, 1222, 1222, 1222, 1222, 1321, - 1321, 1321, 1218, 1321, 1102, 1102, 1102, 1102, 1102, 1102, - 1220, 1067, 1221, 1221, 1221, 1221, 1221, 1221, 1069, 1321, - 1321, 1321, 1222, 1321, 1321, 1321, 1321, 1321, 1222, 1222, - 1222, 1222, 1222, 1222, 997, 1101, 1101, 1101, 1101, 1101, - 1101, 1162, 1321, 1321, 1321, 1102, 1321, 1321, 1321, 1321, - 1242, 1102, 1102, 1102, 1102, 1102, 1102, 1236, 1237, 1237, - - 1237, 1237, 1237, 1243, 1242, 1177, 1177, 1177, 1177, 1177, - 1177, 904, 1179, 1179, 1179, 1179, 1179, 1179, 1182, 1182, - 1182, 1182, 1182, 1182, 1246, 1321, 1321, 1321, 1321, 1243, - 1246, 1185, 1185, 1185, 1185, 1185, 1185, 1247, 913, 1187, - 1187, 1187, 1187, 1187, 1187, 1191, 1191, 1191, 1191, 1191, - 1191, 1250, 1250, 1194, 1194, 1194, 1194, 1194, 1194, 1321, - 1321, 1321, 1321, 1247, 1251, 924, 1196, 1196, 1196, 1196, - 1196, 1196, 1200, 1200, 1200, 1200, 1200, 1200, 1254, 1254, - 1203, 1203, 1203, 1203, 1203, 1203, 1321, 1321, 1321, 1321, - 1251, 1255, 936, 1205, 1205, 1205, 1205, 1205, 1205, 1209, - - 1209, 1209, 1209, 1209, 1209, 1258, 1258, 1212, 1212, 1212, - 1212, 1212, 1212, 1321, 1321, 1321, 1321, 1255, 1259, 948, - 1214, 1214, 1214, 1214, 1214, 1214, 1262, 1263, 1263, 1263, - 1263, 1263, 1265, 1266, 1266, 1266, 1266, 1266, 1274, 1321, - 1321, 1321, 1321, 1321, 1259, 1276, 1277, 1277, 1277, 1277, - 1277, 1275, 1274, 1237, 1237, 1237, 1237, 1237, 1237, 997, - 1239, 1239, 1239, 1239, 1239, 1239, 1280, 1281, 1281, 1281, - 1281, 1281, 1321, 1321, 1321, 1321, 1321, 1275, 1284, 1285, - 1285, 1285, 1285, 1285, 1288, 1289, 1289, 1289, 1289, 1289, - 1292, 1293, 1293, 1293, 1293, 1293, 1263, 1263, 1263, 1263, - - 1263, 1263, 1296, 1296, 1266, 1266, 1266, 1266, 1266, 1266, - 1321, 1321, 1321, 1321, 1321, 1297, 1067, 1268, 1268, 1268, - 1268, 1268, 1268, 1300, 1301, 1301, 1301, 1301, 1301, 1277, - 1277, 1277, 1277, 1277, 1277, 1281, 1281, 1281, 1281, 1281, - 1281, 1297, 1285, 1285, 1285, 1285, 1285, 1285, 1289, 1289, - 1289, 1289, 1289, 1289, 1293, 1293, 1293, 1293, 1293, 1293, - 1309, 1310, 1310, 1310, 1310, 1310, 1301, 1301, 1301, 1301, - 1301, 1301, 1310, 1310, 1310, 1310, 1310, 1310, 46, 1321, - 1321, 1321, 1321, 46, 46, 46, 62, 1321, 62, 62, - 62, 62, 62, 62, 62, 137, 1321, 137, 142, 142, - - 142, 232, 232, 232, 241, 241, 241, 299, 299, 299, - 301, 301, 301, 302, 302, 302, 309, 309, 309, 307, - 307, 307, 317, 1321, 317, 359, 359, 359, 364, 364, - 364, 365, 365, 365, 378, 1321, 378, 379, 379, 379, - 311, 311, 1321, 1321, 311, 387, 387, 387, 431, 431, - 431, 435, 435, 435, 436, 436, 436, 437, 437, 437, - 442, 442, 442, 372, 372, 1321, 1321, 372, 451, 451, - 451, 455, 1321, 455, 456, 456, 456, 464, 1321, 464, - 499, 499, 499, 507, 507, 507, 508, 508, 508, 520, - 1321, 520, 523, 1321, 523, 524, 524, 524, 532, 1321, - - 532, 454, 454, 1321, 1321, 454, 458, 458, 1321, 1321, - 458, 542, 542, 542, 436, 436, 436, 567, 567, 567, - 571, 571, 571, 574, 574, 574, 575, 575, 575, 576, - 576, 576, 581, 581, 581, 514, 514, 1321, 1321, 514, - 590, 590, 590, 522, 522, 1321, 1321, 522, 526, 526, - 1321, 1321, 526, 601, 601, 601, 605, 1321, 605, 608, - 1321, 608, 609, 609, 609, 617, 1321, 617, 635, 635, - 635, 646, 646, 646, 647, 647, 647, 659, 1321, 659, - 662, 1321, 662, 663, 663, 663, 671, 1321, 671, 674, - 1321, 674, 677, 1321, 677, 678, 678, 678, 686, 1321, - - 686, 604, 1321, 1321, 604, 607, 607, 1321, 1321, 607, - 608, 608, 1321, 608, 611, 611, 1321, 1321, 611, 697, - 697, 697, 617, 617, 1321, 617, 53, 53, 53, 1321, - 53, 53, 575, 575, 575, 712, 712, 712, 716, 716, - 716, 719, 719, 719, 722, 722, 722, 723, 723, 723, - 724, 724, 724, 729, 729, 729, 653, 653, 1321, 1321, - 653, 738, 738, 738, 659, 659, 1321, 659, 661, 661, - 1321, 1321, 661, 662, 662, 1321, 662, 665, 665, 1321, - 1321, 665, 749, 749, 749, 671, 671, 1321, 671, 673, - 1321, 1321, 673, 674, 674, 1321, 674, 676, 676, 1321, - - 1321, 676, 677, 677, 1321, 677, 680, 680, 1321, 1321, - 680, 761, 761, 761, 686, 686, 1321, 686, 763, 1321, - 763, 766, 1321, 766, 769, 1321, 769, 770, 770, 770, - 778, 1321, 778, 53, 53, 53, 1321, 53, 53, 790, - 790, 790, 804, 804, 804, 805, 805, 805, 817, 1321, - 817, 820, 1321, 820, 821, 821, 821, 829, 1321, 829, - 832, 1321, 832, 835, 1321, 835, 836, 836, 836, 844, - 1321, 844, 845, 1321, 845, 848, 1321, 848, 851, 1321, - 851, 852, 852, 852, 860, 1321, 860, 763, 1321, 763, - 765, 1321, 1321, 765, 766, 766, 1321, 766, 768, 768, - - 1321, 1321, 768, 769, 769, 1321, 769, 772, 772, 1321, - 1321, 772, 871, 871, 871, 778, 778, 1321, 778, 53, - 53, 53, 1321, 53, 53, 723, 723, 723, 885, 885, - 885, 889, 889, 889, 892, 892, 892, 895, 895, 895, - 898, 898, 898, 899, 899, 899, 907, 907, 907, 811, - 811, 1321, 1321, 811, 916, 916, 916, 817, 817, 1321, - 817, 819, 819, 1321, 1321, 819, 820, 820, 1321, 820, - 823, 823, 1321, 1321, 823, 927, 927, 927, 829, 829, - 1321, 829, 831, 1321, 1321, 831, 832, 832, 1321, 832, - 834, 834, 1321, 1321, 834, 835, 835, 1321, 835, 838, - - 838, 1321, 1321, 838, 939, 939, 939, 844, 844, 1321, - 844, 845, 1321, 845, 847, 1321, 1321, 847, 848, 848, - 1321, 848, 850, 850, 1321, 1321, 850, 851, 851, 1321, - 851, 854, 854, 1321, 1321, 854, 951, 951, 951, 860, - 860, 1321, 860, 953, 1321, 953, 956, 1321, 956, 959, - 1321, 959, 960, 960, 960, 968, 1321, 968, 53, 53, - 53, 1321, 53, 53, 979, 979, 979, 996, 996, 996, - 1002, 1002, 1002, 1000, 1000, 1000, 1007, 1007, 1007, 1008, - 1321, 1008, 1011, 1321, 1011, 1012, 1012, 1012, 1017, 1017, - 1017, 1018, 1321, 1018, 1021, 1321, 1021, 1024, 1321, 1024, - - 1025, 1025, 1025, 1030, 1030, 1030, 1031, 1321, 1031, 1032, - 1321, 1032, 1035, 1321, 1035, 1038, 1321, 1038, 1039, 1039, - 1039, 1044, 1044, 1044, 1045, 1321, 1045, 1046, 1321, 1046, - 1049, 1321, 1049, 1052, 1321, 1052, 1053, 1053, 1053, 1058, - 1058, 1058, 1059, 1321, 1059, 953, 1321, 953, 955, 1321, - 1321, 955, 956, 956, 1321, 956, 958, 958, 1321, 1321, - 958, 959, 959, 1321, 959, 962, 962, 1321, 1321, 962, - 1070, 1070, 1070, 968, 968, 1321, 968, 53, 53, 53, - 1321, 53, 53, 899, 899, 899, 1086, 1086, 1086, 1089, - 1089, 1089, 1092, 1092, 1092, 1095, 1095, 1095, 1098, 1098, - - 1098, 1103, 1103, 1103, 1105, 1321, 1105, 1106, 1106, 1106, - 1004, 1004, 1321, 1321, 1004, 1111, 1111, 1111, 1008, 1008, - 1321, 1008, 1010, 1010, 1321, 1321, 1010, 1011, 1011, 1321, - 1011, 1014, 1014, 1321, 1321, 1014, 1118, 1118, 1118, 1018, - 1018, 1321, 1018, 1020, 1321, 1321, 1020, 1021, 1021, 1321, - 1021, 1023, 1023, 1321, 1321, 1023, 1024, 1024, 1321, 1024, - 1027, 1027, 1321, 1321, 1027, 1126, 1126, 1126, 1031, 1031, - 1321, 1031, 1032, 1321, 1032, 1034, 1321, 1321, 1034, 1035, - 1035, 1321, 1035, 1037, 1037, 1321, 1321, 1037, 1038, 1038, - 1321, 1038, 1041, 1041, 1321, 1321, 1041, 1134, 1134, 1134, - - 1045, 1045, 1321, 1045, 1046, 1321, 1046, 1048, 1321, 1321, - 1048, 1049, 1049, 1321, 1049, 1051, 1051, 1321, 1321, 1051, - 1052, 1052, 1321, 1052, 1055, 1055, 1321, 1321, 1055, 1142, - 1142, 1142, 1059, 1059, 1321, 1059, 1143, 1321, 1143, 1146, - 1321, 1146, 1149, 1321, 1149, 1150, 1150, 1150, 1155, 1321, - 1155, 1156, 1321, 1156, 53, 53, 53, 1321, 53, 53, - 1164, 1321, 1164, 1163, 1163, 1163, 1165, 1321, 1165, 1166, - 1321, 1166, 1167, 1321, 1167, 1168, 1321, 1168, 1169, 1321, - 1169, 1100, 1100, 1321, 1321, 1100, 1174, 1174, 1174, 309, - 309, 309, 1105, 1105, 1321, 1105, 1175, 1175, 1175, 1178, - - 1321, 1178, 1179, 1179, 1179, 1180, 1180, 1180, 1183, 1321, - 1183, 1186, 1321, 1186, 1187, 1187, 1187, 1188, 1188, 1188, - 1189, 1321, 1189, 1192, 1321, 1192, 1195, 1321, 1195, 1196, - 1196, 1196, 1197, 1197, 1197, 1198, 1321, 1198, 1201, 1321, - 1201, 1204, 1321, 1204, 1205, 1205, 1205, 1206, 1206, 1206, - 1207, 1321, 1207, 1210, 1321, 1210, 1213, 1321, 1213, 1214, - 1214, 1214, 1215, 1215, 1215, 1143, 1321, 1143, 1145, 1321, - 1321, 1145, 1146, 1146, 1321, 1146, 1148, 1148, 1321, 1321, - 1148, 1149, 1149, 1321, 1149, 1152, 1152, 1321, 1321, 1152, - 1223, 1321, 1223, 1156, 1156, 1321, 1156, 53, 53, 53, - - 1321, 53, 53, 1228, 1228, 1228, 1230, 1321, 1230, 1231, - 1321, 1231, 1232, 1321, 1232, 1233, 1321, 1233, 1234, 1321, - 1234, 1235, 1321, 1235, 1238, 1321, 1238, 1239, 1239, 1239, - 1240, 1240, 1240, 1241, 1321, 1241, 1177, 1177, 1321, 1321, - 1177, 1178, 1178, 1321, 1178, 1244, 1321, 1244, 1182, 1321, - 1321, 1182, 1183, 1183, 1321, 1183, 1185, 1185, 1321, 1321, - 1185, 1186, 1186, 1321, 1186, 1248, 1321, 1248, 1189, 1321, - 1189, 1191, 1321, 1321, 1191, 1192, 1192, 1321, 1192, 1194, - 1194, 1321, 1321, 1194, 1195, 1195, 1321, 1195, 1252, 1321, - 1252, 1198, 1321, 1198, 1200, 1321, 1321, 1200, 1201, 1201, - - 1321, 1201, 1203, 1203, 1321, 1321, 1203, 1204, 1204, 1321, - 1204, 1256, 1321, 1256, 1207, 1321, 1207, 1209, 1321, 1321, - 1209, 1210, 1210, 1321, 1210, 1212, 1212, 1321, 1321, 1212, - 1213, 1213, 1321, 1213, 1260, 1321, 1260, 1261, 1321, 1261, - 1264, 1321, 1264, 1267, 1321, 1267, 1268, 1268, 1268, 1269, - 1321, 1269, 53, 53, 53, 1321, 53, 53, 1273, 1321, - 1273, 1175, 1321, 1175, 1180, 1321, 1180, 1188, 1321, 1188, - 1197, 1321, 1197, 1206, 1321, 1206, 1215, 1321, 1215, 1237, - 1237, 1321, 1321, 1237, 1238, 1238, 1321, 1238, 1229, 1321, - 1229, 1278, 1321, 1278, 1279, 1321, 1279, 1282, 1321, 1282, - - 1283, 1321, 1283, 1286, 1321, 1286, 1287, 1321, 1287, 1290, - 1321, 1290, 1291, 1321, 1291, 1294, 1321, 1294, 1263, 1321, - 1321, 1263, 1266, 1266, 1321, 1321, 1266, 1298, 1321, 1298, - 1240, 1321, 1240, 1302, 1321, 1302, 1277, 1321, 1321, 1277, - 1281, 1321, 1321, 1281, 1285, 1321, 1321, 1285, 1289, 1321, - 1321, 1289, 1293, 1321, 1321, 1293, 1308, 1321, 1308, 1311, - 1321, 1311, 1301, 1321, 1321, 1301, 1313, 1321, 1313, 1314, - 1321, 1314, 1315, 1321, 1315, 1316, 1321, 1316, 1317, 1321, - 1317, 1310, 1321, 1321, 1310, 1319, 1321, 1319, 1320, 1321, - 1320, 3, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321 + 53, 44, 80, 63, 44, 64, 44, 81, 82, 44, + 65, 175, 1262, 1258, 106, 66, 176, 61, 55, 67, + 61, 68, 61, 107, 83, 61, 44, 53, 52, 52, + 52, 52, 52, 52, 61, 75, 72, 100, 130, 73, + 53, 101, 61, 74, 187, 76, 108, 123, 77, 188, + 102, 103, 131, 124, 104, 125, 105, 126, 109, 1254, + 110, 127, 111, 128, 129, 112, 53, 53, 53, 53, + + 53, 53, 53, 1329, 185, 93, 94, 53, 1250, 1227, + 186, 1225, 155, 53, 53, 53, 53, 53, 53, 85, + 95, 161, 86, 87, 96, 88, 53, 89, 97, 90, + 98, 91, 118, 113, 92, 53, 119, 99, 114, 115, + 133, 116, 117, 168, 120, 1178, 1077, 216, 134, 121, + 44, 122, 135, 44, 136, 44, 53, 164, 44, 140, + 141, 141, 141, 141, 141, 217, 53, 44, 53, 143, + 143, 143, 143, 143, 143, 44, 49, 142, 142, 142, + 142, 142, 142, 165, 1146, 191, 355, 143, 192, 166, + 193, 356, 53, 143, 143, 143, 143, 143, 143, 146, + + 146, 146, 146, 146, 146, 61, 48, 131, 61, 146, + 61, 53, 210, 61, 182, 146, 146, 146, 146, 146, + 146, 44, 61, 48, 44, 211, 44, 48, 1144, 44, + 61, 222, 147, 148, 148, 148, 148, 148, 44, 1138, + 183, 223, 149, 1329, 48, 184, 44, 714, 149, 149, + 149, 149, 149, 149, 53, 143, 143, 143, 143, 143, + 143, 219, 53, 237, 237, 237, 237, 237, 237, 1329, + 220, 53, 237, 237, 237, 237, 237, 237, 1136, 299, + 1130, 1128, 280, 1329, 1122, 388, 422, 150, 233, 141, + 141, 141, 141, 141, 141, 281, 1120, 53, 389, 1329, + + 423, 234, 300, 303, 304, 304, 304, 304, 304, 1329, + 318, 319, 319, 319, 319, 319, 1329, 321, 321, 321, + 321, 321, 321, 53, 389, 1329, 418, 234, 235, 235, + 235, 235, 235, 235, 236, 1329, 1329, 1329, 237, 419, + 1115, 377, 48, 1170, 237, 237, 237, 237, 237, 237, + 240, 241, 241, 241, 241, 241, 242, 244, 312, 48, + 243, 1329, 1329, 1329, 246, 442, 243, 243, 243, 243, + 243, 243, 244, 245, 245, 245, 245, 245, 245, 246, + 1237, 1075, 358, 247, 452, 248, 1071, 359, 334, 247, + 247, 247, 247, 247, 247, 335, 360, 453, 361, 362, + + 481, 363, 379, 380, 380, 380, 380, 380, 336, 482, + 484, 248, 53, 237, 237, 237, 237, 237, 237, 485, + 1069, 377, 53, 453, 337, 1329, 382, 382, 382, 382, + 382, 382, 388, 319, 319, 319, 319, 319, 319, 1105, + 377, 257, 305, 305, 305, 305, 305, 305, 53, 1102, + 392, 377, 305, 1099, 1329, 1329, 1329, 394, 305, 305, + 305, 305, 305, 305, 49, 306, 306, 306, 306, 306, + 306, 236, 312, 313, 313, 313, 313, 313, 313, 314, + 1329, 1329, 1329, 315, 1329, 316, 377, 1096, 377, 315, + 315, 315, 315, 315, 315, 1329, 391, 391, 391, 391, + + 391, 391, 436, 437, 437, 437, 437, 437, 541, 543, + 1329, 316, 244, 320, 320, 320, 320, 320, 320, 246, + 1329, 542, 544, 321, 1329, 1093, 48, 377, 1005, 321, + 321, 321, 321, 321, 321, 322, 323, 323, 323, 323, + 323, 377, 447, 48, 717, 324, 1329, 542, 544, 578, + 1329, 324, 324, 324, 324, 324, 324, 365, 304, 304, + 304, 304, 304, 304, 461, 462, 462, 462, 462, 462, + 366, 452, 380, 380, 380, 380, 380, 380, 1329, 455, + 455, 455, 455, 455, 455, 465, 466, 466, 466, 466, + 466, 591, 600, 602, 48, 48, 366, 369, 370, 370, + + 370, 370, 370, 456, 592, 601, 603, 371, 695, 48, + 581, 48, 48, 371, 371, 371, 371, 371, 371, 375, + 376, 376, 376, 376, 376, 377, 48, 1329, 708, 378, + 592, 601, 603, 707, 695, 378, 378, 378, 378, 378, + 378, 312, 381, 381, 381, 381, 381, 381, 314, 547, + 586, 1329, 382, 1329, 48, 48, 549, 723, 382, 382, + 382, 382, 382, 382, 383, 384, 384, 384, 384, 384, + 377, 48, 48, 1329, 385, 715, 713, 1329, 48, 48, + 385, 385, 385, 385, 385, 385, 244, 390, 390, 390, + 390, 390, 390, 246, 377, 48, 48, 391, 718, 1329, + + 48, 48, 1170, 391, 391, 391, 391, 391, 391, 392, + 393, 393, 393, 393, 393, 393, 394, 48, 48, 1329, + 395, 1329, 396, 787, 1329, 1329, 395, 395, 395, 395, + 395, 395, 1329, 468, 468, 468, 468, 468, 468, 521, + 522, 522, 522, 522, 522, 1329, 759, 1329, 396, 403, + 1329, 1329, 1329, 404, 869, 878, 405, 48, 696, 406, + 698, 407, 408, 409, 410, 438, 438, 438, 438, 438, + 438, 697, 759, 699, 48, 438, 956, 377, 1329, 788, + 869, 438, 438, 438, 438, 438, 438, 312, 441, 441, + 441, 441, 441, 441, 442, 595, 606, 697, 443, 699, + + 316, 952, 726, 729, 443, 443, 443, 443, 443, 443, + 1329, 524, 524, 524, 524, 524, 524, 529, 530, 530, + 530, 530, 530, 950, 739, 48, 316, 447, 448, 448, + 448, 448, 448, 448, 449, 944, 702, 740, 450, 377, + 451, 940, 48, 704, 450, 450, 450, 450, 450, 450, + 533, 534, 534, 534, 534, 534, 1329, 536, 536, 536, + 536, 536, 536, 740, 48, 48, 451, 312, 454, 454, + 454, 454, 454, 454, 442, 938, 1329, 932, 455, 377, + 1329, 48, 48, 48, 455, 455, 455, 455, 455, 455, + 456, 457, 457, 457, 457, 457, 457, 458, 709, 710, + + 48, 459, 1329, 460, 928, 789, 1329, 459, 459, 459, + 459, 459, 459, 541, 462, 462, 462, 462, 462, 462, + 244, 464, 464, 464, 464, 464, 464, 48, 48, 460, + 392, 467, 467, 467, 467, 467, 467, 394, 926, 1329, + 1329, 468, 48, 921, 48, 48, 377, 468, 468, 468, + 468, 468, 468, 469, 470, 470, 470, 470, 470, 48, + 790, 712, 917, 471, 791, 1329, 1329, 912, 377, 471, + 471, 471, 471, 471, 471, 437, 437, 437, 437, 437, + 437, 611, 612, 612, 612, 612, 612, 506, 543, 466, + 466, 466, 466, 466, 466, 1329, 546, 546, 546, 546, + + 546, 546, 591, 522, 522, 522, 522, 522, 522, 748, + 750, 48, 48, 506, 509, 510, 510, 510, 510, 510, + 377, 1112, 749, 751, 511, 988, 48, 48, 48, 48, + 511, 511, 511, 511, 511, 511, 512, 513, 513, 513, + 513, 513, 719, 48, 48, 792, 514, 796, 749, 751, + 48, 892, 514, 514, 514, 514, 514, 514, 518, 519, + 519, 519, 519, 519, 377, 1105, 1329, 48, 520, 1102, + 1329, 48, 793, 48, 520, 520, 520, 520, 520, 520, + 447, 523, 523, 523, 523, 523, 523, 449, 48, 1329, + 48, 524, 1329, 794, 48, 890, 1329, 524, 524, 524, + + 524, 524, 524, 525, 526, 526, 526, 526, 526, 377, + 734, 48, 1329, 527, 886, 1329, 1099, 896, 1096, 527, + 527, 527, 527, 527, 527, 456, 535, 535, 535, 535, + 535, 535, 458, 937, 1329, 949, 536, 1329, 1329, 48, + 48, 1093, 536, 536, 536, 536, 536, 536, 537, 538, + 538, 538, 538, 538, 377, 988, 48, 48, 539, 937, + 1329, 949, 48, 1329, 539, 539, 539, 539, 539, 539, + 392, 545, 545, 545, 545, 545, 545, 394, 876, 48, + 1077, 546, 1329, 982, 48, 48, 48, 546, 546, 546, + 546, 546, 546, 547, 548, 548, 548, 548, 548, 548, + + 549, 48, 48, 48, 550, 985, 551, 986, 1329, 872, + 550, 550, 550, 550, 550, 550, 1329, 594, 594, 594, + 594, 594, 594, 600, 530, 530, 530, 530, 530, 530, + 48, 760, 551, 574, 574, 574, 574, 574, 574, 743, + 870, 754, 377, 574, 761, 1068, 899, 48, 902, 574, + 574, 574, 574, 574, 574, 447, 577, 577, 577, 577, + 577, 577, 578, 905, 885, 377, 579, 1329, 451, 902, + 761, 1068, 579, 579, 579, 579, 579, 579, 312, 532, + 532, 532, 532, 532, 532, 602, 534, 534, 534, 534, + 534, 534, 762, 1329, 451, 456, 580, 580, 580, 580, + + 580, 580, 581, 766, 876, 763, 582, 377, 460, 899, + 905, 878, 582, 582, 582, 582, 582, 582, 1329, 605, + 605, 605, 605, 605, 605, 614, 615, 615, 615, 615, + 615, 763, 48, 48, 460, 586, 587, 587, 587, 587, + 587, 587, 588, 377, 896, 377, 589, 1007, 590, 48, + 48, 1083, 589, 589, 589, 589, 589, 589, 618, 619, + 619, 619, 619, 619, 1329, 621, 621, 621, 621, 621, + 621, 48, 48, 48, 590, 447, 593, 593, 593, 593, + 593, 593, 578, 377, 1329, 988, 594, 1329, 48, 48, + 48, 887, 594, 594, 594, 594, 594, 594, 595, 596, + + 596, 596, 596, 596, 596, 597, 891, 797, 888, 598, + 1329, 599, 988, 1329, 704, 598, 598, 598, 598, 598, + 598, 1329, 524, 524, 524, 524, 524, 524, 1329, 536, + 536, 536, 536, 536, 536, 48, 48, 599, 456, 604, + 604, 604, 604, 604, 604, 581, 766, 1329, 958, 605, + 1329, 1329, 48, 48, 762, 605, 605, 605, 605, 605, + 605, 606, 607, 607, 607, 607, 607, 607, 608, 889, + 760, 981, 609, 1329, 610, 754, 1329, 1329, 609, 609, + 609, 609, 609, 609, 660, 661, 661, 661, 661, 661, + 1329, 663, 663, 663, 663, 663, 663, 870, 48, 48, + + 610, 547, 620, 620, 620, 620, 620, 620, 549, 1127, + 871, 1135, 621, 946, 750, 48, 48, 748, 621, 621, + 621, 621, 621, 621, 622, 623, 623, 623, 623, 623, + 795, 881, 1143, 743, 624, 1127, 871, 1135, 48, 872, + 624, 624, 624, 624, 624, 624, 645, 646, 646, 646, + 646, 646, 873, 934, 1329, 48, 647, 1224, 1143, 48, + 48, 739, 647, 647, 647, 647, 647, 647, 447, 523, + 523, 523, 523, 523, 523, 578, 48, 48, 873, 524, + 1329, 734, 48, 1224, 917, 524, 524, 524, 524, 524, + 524, 648, 649, 649, 649, 649, 649, 918, 1084, 48, + + 1080, 650, 1253, 1257, 48, 48, 923, 650, 650, 650, + 650, 650, 650, 456, 535, 535, 535, 535, 535, 535, + 581, 48, 48, 918, 536, 1261, 48, 48, 1253, 1257, + 536, 536, 536, 536, 536, 536, 651, 652, 652, 652, + 652, 652, 984, 48, 48, 1081, 653, 914, 48, 1086, + 814, 1261, 653, 653, 653, 653, 653, 653, 657, 658, + 658, 658, 658, 658, 377, 48, 912, 1082, 659, 799, + 1265, 48, 48, 1093, 659, 659, 659, 659, 659, 659, + 586, 662, 662, 662, 662, 662, 662, 588, 48, 48, + 1303, 663, 905, 902, 1165, 48, 1265, 663, 663, 663, + + 663, 663, 663, 664, 665, 665, 665, 665, 665, 377, + 921, 932, 48, 666, 899, 1233, 1303, 1096, 1099, 666, + 666, 666, 666, 666, 666, 668, 669, 669, 669, 669, + 669, 672, 673, 673, 673, 673, 673, 595, 674, 674, + 674, 674, 674, 674, 597, 944, 956, 1311, 675, 1312, + 896, 48, 1102, 1105, 675, 675, 675, 675, 675, 675, + 676, 677, 677, 677, 677, 677, 377, 1005, 48, 894, + 678, 1234, 799, 1311, 1170, 1312, 678, 678, 678, 678, + 678, 678, 1329, 675, 675, 675, 675, 675, 675, 680, + 681, 681, 681, 681, 681, 683, 684, 684, 684, 684, + + 684, 687, 688, 688, 688, 688, 688, 606, 689, 689, + 689, 689, 689, 689, 608, 1075, 1313, 1314, 690, 702, + 48, 48, 1077, 878, 690, 690, 690, 690, 690, 690, + 691, 692, 692, 692, 692, 692, 377, 48, 48, 698, + 693, 696, 1313, 1314, 729, 1280, 693, 693, 693, 693, + 693, 693, 1329, 690, 690, 690, 690, 690, 690, 612, + 612, 612, 612, 612, 612, 696, 615, 615, 615, 615, + 615, 615, 392, 617, 617, 617, 617, 617, 617, 698, + 619, 619, 619, 619, 619, 619, 547, 700, 700, 700, + 700, 700, 700, 549, 726, 723, 814, 701, 799, 799, + + 549, 606, 768, 701, 701, 701, 701, 701, 701, 1329, + 701, 701, 701, 701, 701, 701, 702, 703, 703, 703, + 703, 703, 703, 704, 48, 48, 48, 705, 48, 706, + 602, 926, 600, 705, 705, 705, 705, 705, 705, 48, + 1315, 48, 48, 48, 927, 48, 739, 661, 661, 661, + 661, 661, 661, 711, 716, 706, 48, 297, 586, 722, + 722, 722, 722, 722, 722, 723, 1315, 977, 595, 724, + 927, 590, 756, 591, 586, 724, 724, 724, 724, 724, + 724, 1329, 742, 742, 742, 742, 742, 742, 748, 669, + 669, 669, 669, 669, 669, 48, 48, 590, 595, 725, + + 725, 725, 725, 725, 725, 726, 745, 736, 733, 727, + 656, 599, 48, 48, 644, 727, 727, 727, 727, 727, + 727, 447, 671, 671, 671, 671, 671, 671, 750, 673, + 673, 673, 673, 673, 673, 928, 1235, 599, 606, 728, + 728, 728, 728, 728, 728, 729, 729, 726, 929, 730, + 1320, 610, 723, 721, 644, 730, 730, 730, 730, 730, + 730, 1329, 753, 753, 753, 753, 753, 753, 681, 681, + 681, 681, 681, 681, 929, 48, 1320, 610, 734, 735, + 735, 735, 735, 735, 735, 736, 547, 704, 543, 737, + 1326, 738, 48, 541, 581, 737, 737, 737, 737, 737, + + 737, 760, 684, 684, 684, 684, 684, 684, 456, 686, + 686, 686, 686, 686, 686, 48, 1326, 738, 586, 741, + 741, 741, 741, 741, 741, 723, 578, 656, 644, 742, + 644, 642, 48, 641, 640, 742, 742, 742, 742, 742, + 742, 743, 744, 744, 744, 744, 744, 744, 745, 1232, + 639, 638, 746, 637, 747, 636, 635, 634, 746, 746, + 746, 746, 746, 746, 762, 688, 688, 688, 688, 688, + 688, 1329, 765, 765, 765, 765, 765, 765, 48, 633, + 747, 595, 752, 752, 752, 752, 752, 752, 726, 632, + 631, 630, 753, 629, 628, 48, 627, 626, 753, 753, + + 753, 753, 753, 753, 754, 755, 755, 755, 755, 755, + 755, 756, 394, 456, 1278, 757, 608, 758, 452, 447, + 597, 757, 757, 757, 757, 757, 757, 772, 773, 773, + 773, 773, 773, 775, 776, 776, 776, 776, 776, 48, + 938, 588, 585, 758, 606, 764, 764, 764, 764, 764, + 764, 729, 517, 939, 508, 765, 48, 581, 578, 576, + 508, 765, 765, 765, 765, 765, 765, 766, 767, 767, + 767, 767, 767, 767, 768, 1307, 573, 572, 769, 939, + 770, 571, 570, 569, 769, 769, 769, 769, 769, 769, + 779, 780, 780, 780, 780, 780, 1329, 782, 782, 782, + + 782, 782, 782, 940, 48, 48, 770, 702, 781, 781, + 781, 781, 781, 781, 704, 568, 941, 567, 782, 566, + 565, 48, 48, 564, 782, 782, 782, 782, 782, 782, + 783, 784, 784, 784, 784, 784, 882, 883, 884, 563, + 785, 562, 941, 561, 560, 950, 785, 785, 785, 785, + 785, 785, 800, 801, 801, 801, 801, 801, 951, 559, + 558, 557, 802, 556, 555, 554, 553, 552, 802, 802, + 802, 802, 802, 802, 586, 662, 662, 662, 662, 662, + 662, 723, 392, 549, 951, 663, 48, 388, 442, 517, + 508, 663, 663, 663, 663, 663, 663, 803, 804, 804, + + 804, 804, 804, 48, 442, 442, 508, 805, 365, 505, + 504, 503, 1166, 805, 805, 805, 805, 805, 805, 1329, + 663, 663, 663, 663, 663, 663, 595, 674, 674, 674, + 674, 674, 674, 726, 502, 501, 500, 675, 48, 499, + 498, 294, 213, 675, 675, 675, 675, 675, 675, 806, + 807, 807, 807, 807, 807, 48, 497, 496, 495, 808, + 494, 493, 492, 491, 1279, 808, 808, 808, 808, 808, + 808, 1329, 675, 675, 675, 675, 675, 675, 606, 689, + 689, 689, 689, 689, 689, 729, 490, 489, 488, 690, + 487, 486, 483, 480, 479, 690, 690, 690, 690, 690, + + 690, 809, 810, 810, 810, 810, 810, 478, 477, 476, + 475, 811, 474, 473, 246, 377, 312, 811, 811, 811, + 811, 811, 811, 1329, 690, 690, 690, 690, 690, 690, + 815, 816, 816, 816, 816, 816, 377, 458, 449, 377, + 817, 446, 374, 368, 442, 440, 817, 817, 817, 817, + 817, 817, 818, 819, 819, 819, 819, 819, 734, 820, + 820, 820, 820, 820, 820, 736, 368, 435, 434, 821, + 433, 432, 431, 430, 429, 821, 821, 821, 821, 821, + 821, 822, 823, 823, 823, 823, 823, 377, 428, 427, + 426, 824, 425, 424, 421, 420, 417, 824, 824, 824, + + 824, 824, 824, 1329, 821, 821, 821, 821, 821, 821, + 826, 827, 827, 827, 827, 827, 830, 831, 831, 831, + 831, 831, 743, 832, 832, 832, 832, 832, 832, 745, + 416, 415, 414, 833, 413, 109, 412, 411, 402, 833, + 833, 833, 833, 833, 833, 834, 835, 835, 835, 835, + 835, 377, 401, 400, 399, 836, 398, 397, 244, 394, + 377, 836, 836, 836, 836, 836, 836, 1329, 833, 833, + 833, 833, 833, 833, 838, 839, 839, 839, 839, 839, + 841, 842, 842, 842, 842, 842, 845, 846, 846, 846, + 846, 846, 754, 847, 847, 847, 847, 847, 847, 756, + + 374, 368, 368, 848, 1329, 233, 364, 357, 354, 848, + 848, 848, 848, 848, 848, 849, 850, 850, 850, 850, + 850, 377, 353, 352, 351, 851, 350, 349, 348, 347, + 346, 851, 851, 851, 851, 851, 851, 1329, 848, 848, + 848, 848, 848, 848, 854, 855, 855, 855, 855, 855, + 857, 858, 858, 858, 858, 858, 861, 862, 862, 862, + 862, 862, 766, 863, 863, 863, 863, 863, 863, 768, + 345, 344, 343, 864, 342, 341, 340, 339, 338, 864, + 864, 864, 864, 864, 864, 865, 866, 866, 866, 866, + 866, 377, 333, 332, 276, 867, 331, 330, 329, 328, + + 327, 867, 867, 867, 867, 867, 867, 1329, 864, 864, + 864, 864, 864, 864, 773, 773, 773, 773, 773, 773, + 870, 776, 776, 776, 776, 776, 776, 547, 778, 778, + 778, 778, 778, 778, 872, 780, 780, 780, 780, 780, + 780, 702, 874, 874, 874, 874, 874, 874, 704, 326, + 314, 242, 875, 311, 239, 236, 308, 131, 875, 875, + 875, 875, 875, 875, 1329, 875, 875, 875, 875, 875, + 875, 876, 877, 877, 877, 877, 877, 877, 878, 302, + 301, 298, 879, 297, 880, 276, 296, 295, 879, 879, + 879, 879, 879, 879, 917, 819, 819, 819, 819, 819, + + 819, 1329, 920, 920, 920, 920, 920, 920, 294, 293, + 880, 734, 895, 895, 895, 895, 895, 895, 896, 292, + 291, 290, 897, 289, 738, 288, 287, 286, 897, 897, + 897, 897, 897, 897, 926, 827, 827, 827, 827, 827, + 827, 586, 829, 829, 829, 829, 829, 829, 285, 284, + 738, 743, 898, 898, 898, 898, 898, 898, 899, 283, + 282, 279, 900, 278, 747, 277, 276, 275, 900, 900, + 900, 900, 900, 900, 928, 831, 831, 831, 831, 831, + 831, 1329, 931, 931, 931, 931, 931, 931, 952, 274, + 747, 754, 901, 901, 901, 901, 901, 901, 902, 273, + + 272, 953, 903, 271, 758, 270, 269, 268, 903, 903, + 903, 903, 903, 903, 839, 839, 839, 839, 839, 839, + 938, 842, 842, 842, 842, 842, 842, 953, 267, 266, + 758, 766, 904, 904, 904, 904, 904, 904, 905, 265, + 264, 263, 906, 262, 770, 261, 260, 259, 906, 906, + 906, 906, 906, 906, 595, 844, 844, 844, 844, 844, + 844, 940, 846, 846, 846, 846, 846, 846, 258, 1069, + 770, 908, 909, 909, 909, 909, 909, 910, 256, 255, + 254, 911, 1070, 253, 252, 251, 250, 911, 911, 911, + 911, 911, 911, 912, 913, 913, 913, 913, 913, 913, + + 914, 249, 246, 49, 915, 239, 916, 232, 1070, 231, + 915, 915, 915, 915, 915, 915, 1329, 943, 943, 943, + 943, 943, 943, 855, 855, 855, 855, 855, 855, 1071, + 230, 229, 916, 734, 919, 919, 919, 919, 919, 919, + 896, 228, 1072, 227, 920, 226, 225, 224, 221, 218, + 920, 920, 920, 920, 920, 920, 921, 922, 922, 922, + 922, 922, 922, 923, 215, 214, 213, 924, 1072, 925, + 212, 209, 208, 924, 924, 924, 924, 924, 924, 950, + 858, 858, 858, 858, 858, 858, 606, 860, 860, 860, + 860, 860, 860, 207, 206, 925, 743, 930, 930, 930, + + 930, 930, 930, 899, 205, 204, 203, 931, 202, 201, + 200, 199, 198, 931, 931, 931, 931, 931, 931, 932, + 933, 933, 933, 933, 933, 933, 934, 197, 196, 195, + 935, 194, 936, 190, 189, 179, 935, 935, 935, 935, + 935, 935, 952, 862, 862, 862, 862, 862, 862, 1329, + 955, 955, 955, 955, 955, 955, 178, 177, 936, 754, + 942, 942, 942, 942, 942, 942, 902, 174, 173, 172, + 943, 171, 170, 169, 167, 163, 943, 943, 943, 943, + 943, 943, 944, 945, 945, 945, 945, 945, 945, 946, + 162, 160, 159, 947, 158, 948, 157, 156, 154, 947, + + 947, 947, 947, 947, 947, 962, 963, 963, 963, 963, + 963, 965, 966, 966, 966, 966, 966, 153, 1115, 152, + 145, 948, 766, 954, 954, 954, 954, 954, 954, 905, + 138, 1116, 137, 955, 132, 84, 58, 47, 45, 955, + 955, 955, 955, 955, 955, 956, 957, 957, 957, 957, + 957, 957, 958, 1329, 1329, 1329, 959, 1116, 960, 1329, + 1329, 1329, 959, 959, 959, 959, 959, 959, 969, 970, + 970, 970, 970, 970, 1329, 972, 972, 972, 972, 972, + 972, 1120, 1122, 1329, 960, 876, 971, 971, 971, 971, + 971, 971, 878, 1329, 1121, 1123, 972, 1329, 1329, 48, + + 1329, 1329, 972, 972, 972, 972, 972, 972, 973, 974, + 974, 974, 974, 974, 48, 48, 48, 48, 975, 1329, + 1121, 1123, 1329, 1329, 975, 975, 975, 975, 975, 975, + 980, 48, 48, 1329, 48, 1329, 821, 821, 821, 821, + 821, 821, 978, 979, 1128, 1130, 1329, 48, 983, 989, + 990, 990, 990, 990, 990, 1329, 1329, 1129, 1131, 991, + 1329, 1329, 1329, 1329, 48, 991, 991, 991, 991, 991, + 991, 734, 820, 820, 820, 820, 820, 820, 896, 1087, + 1329, 1329, 821, 1129, 1131, 1329, 1329, 1136, 821, 821, + 821, 821, 821, 821, 992, 993, 993, 993, 993, 993, + + 1137, 1329, 1329, 1329, 994, 1329, 1329, 1329, 1329, 1329, + 994, 994, 994, 994, 994, 994, 743, 832, 832, 832, + 832, 832, 832, 899, 1329, 1329, 1137, 833, 1329, 1329, + 1329, 1329, 1329, 833, 833, 833, 833, 833, 833, 995, + 996, 996, 996, 996, 996, 1329, 1329, 1329, 1329, 997, + 1329, 1329, 1329, 1329, 1329, 997, 997, 997, 997, 997, + 997, 1329, 833, 833, 833, 833, 833, 833, 754, 847, + 847, 847, 847, 847, 847, 902, 1329, 1329, 1329, 848, + 1329, 1329, 1329, 1329, 1329, 848, 848, 848, 848, 848, + 848, 998, 999, 999, 999, 999, 999, 1329, 1329, 1329, + + 1329, 1000, 1329, 1329, 1329, 1329, 1329, 1000, 1000, 1000, + 1000, 1000, 1000, 1329, 848, 848, 848, 848, 848, 848, + 766, 863, 863, 863, 863, 863, 863, 905, 1329, 1329, + 1329, 864, 1329, 1329, 1329, 1329, 1329, 864, 864, 864, + 864, 864, 864, 1001, 1002, 1002, 1002, 1002, 1002, 1329, + 1329, 1329, 1329, 1003, 1329, 1329, 1329, 1329, 1329, 1003, + 1003, 1003, 1003, 1003, 1003, 1329, 864, 864, 864, 864, + 864, 864, 1005, 1006, 1006, 1006, 1006, 1006, 1006, 1007, + 1329, 1329, 1329, 1008, 1329, 1009, 1329, 1329, 1329, 1008, + 1008, 1008, 1008, 1008, 1008, 1011, 1012, 1012, 1012, 1012, + + 1012, 1329, 1014, 1014, 1014, 1014, 1014, 1014, 1329, 1329, + 1329, 1009, 912, 1013, 1013, 1013, 1013, 1013, 1013, 914, + 1329, 1329, 1329, 1014, 1329, 1329, 1329, 1329, 1329, 1014, + 1014, 1014, 1014, 1014, 1014, 1017, 1018, 1018, 1018, 1018, + 1018, 1021, 1022, 1022, 1022, 1022, 1022, 921, 1023, 1023, + 1023, 1023, 1023, 1023, 923, 1329, 1329, 1329, 1024, 1329, + 1329, 1329, 1329, 1329, 1024, 1024, 1024, 1024, 1024, 1024, + 1329, 1024, 1024, 1024, 1024, 1024, 1024, 1027, 1028, 1028, + 1028, 1028, 1028, 1030, 1031, 1031, 1031, 1031, 1031, 1034, + 1035, 1035, 1035, 1035, 1035, 932, 1036, 1036, 1036, 1036, + + 1036, 1036, 934, 1329, 1329, 1329, 1037, 1329, 1329, 1329, + 1329, 1329, 1037, 1037, 1037, 1037, 1037, 1037, 1329, 1037, + 1037, 1037, 1037, 1037, 1037, 1041, 1042, 1042, 1042, 1042, + 1042, 1044, 1045, 1045, 1045, 1045, 1045, 1048, 1049, 1049, + 1049, 1049, 1049, 944, 1050, 1050, 1050, 1050, 1050, 1050, + 946, 1329, 1329, 1329, 1051, 1329, 1329, 1329, 1329, 1329, + 1051, 1051, 1051, 1051, 1051, 1051, 1329, 1051, 1051, 1051, + 1051, 1051, 1051, 1055, 1056, 1056, 1056, 1056, 1056, 1058, + 1059, 1059, 1059, 1059, 1059, 1062, 1063, 1063, 1063, 1063, + 1063, 956, 1064, 1064, 1064, 1064, 1064, 1064, 958, 1329, + + 1329, 1329, 1065, 1329, 1329, 1329, 1329, 1329, 1065, 1065, + 1065, 1065, 1065, 1065, 1329, 1065, 1065, 1065, 1065, 1065, + 1065, 963, 963, 963, 963, 963, 963, 1069, 966, 966, + 966, 966, 966, 966, 702, 968, 968, 968, 968, 968, + 968, 1071, 970, 970, 970, 970, 970, 970, 876, 1073, + 1073, 1073, 1073, 1073, 1073, 878, 1329, 1329, 1329, 1074, + 1329, 1329, 1329, 1329, 1329, 1074, 1074, 1074, 1074, 1074, + 1074, 1329, 1074, 1074, 1074, 1074, 1074, 1074, 1075, 1076, + 1076, 1076, 1076, 1076, 1076, 1077, 48, 1329, 1138, 1078, + 1329, 1079, 1329, 1329, 1329, 1078, 1078, 1078, 1078, 1078, + + 1078, 1139, 1329, 48, 1107, 1108, 1108, 1108, 1108, 1108, + 1329, 1329, 1329, 1144, 1085, 1329, 1146, 1079, 1088, 1089, + 1089, 1089, 1089, 1089, 1090, 1329, 1145, 1139, 1091, 1147, + 1329, 1329, 1329, 1329, 1091, 1091, 1091, 1091, 1091, 1091, + 912, 1092, 1092, 1092, 1092, 1092, 1092, 1093, 1329, 1329, + 1329, 1094, 1145, 916, 1329, 1147, 1329, 1094, 1094, 1094, + 1094, 1094, 1094, 1329, 1110, 1110, 1110, 1110, 1110, 1110, + 1115, 1012, 1012, 1012, 1012, 1012, 1012, 1329, 1329, 916, + 921, 1095, 1095, 1095, 1095, 1095, 1095, 1096, 1329, 1329, + 1329, 1097, 1329, 925, 1329, 1329, 1329, 1097, 1097, 1097, + + 1097, 1097, 1097, 1329, 1118, 1118, 1118, 1118, 1118, 1118, + 1120, 1018, 1018, 1018, 1018, 1018, 1018, 1329, 1329, 925, + 932, 1098, 1098, 1098, 1098, 1098, 1098, 1099, 1329, 1329, + 1329, 1100, 1329, 936, 1329, 1329, 1329, 1100, 1100, 1100, + 1100, 1100, 1100, 734, 1020, 1020, 1020, 1020, 1020, 1020, + 1122, 1022, 1022, 1022, 1022, 1022, 1022, 1178, 1329, 936, + 944, 1101, 1101, 1101, 1101, 1101, 1101, 1102, 1329, 1329, + 1179, 1103, 1329, 948, 1329, 1329, 1329, 1103, 1103, 1103, + 1103, 1103, 1103, 1329, 1125, 1125, 1125, 1125, 1125, 1125, + 1028, 1028, 1028, 1028, 1028, 1028, 1179, 1329, 1329, 948, + + 956, 1104, 1104, 1104, 1104, 1104, 1104, 1105, 1329, 1329, + 1329, 1106, 1329, 960, 1329, 1329, 1329, 1106, 1106, 1106, + 1106, 1106, 1106, 1128, 1031, 1031, 1031, 1031, 1031, 1031, + 743, 1033, 1033, 1033, 1033, 1033, 1033, 1225, 1329, 960, + 1005, 1109, 1109, 1109, 1109, 1109, 1109, 1007, 1329, 1329, + 1226, 1110, 1329, 1329, 1329, 1329, 1329, 1110, 1110, 1110, + 1110, 1110, 1110, 912, 1117, 1117, 1117, 1117, 1117, 1117, + 1093, 1329, 1329, 1329, 1118, 1329, 1226, 1329, 1329, 1329, + 1118, 1118, 1118, 1118, 1118, 1118, 921, 1124, 1124, 1124, + 1124, 1124, 1124, 1096, 1329, 1329, 1329, 1125, 1329, 1329, + + 1329, 1329, 1329, 1125, 1125, 1125, 1125, 1125, 1125, 1130, + 1035, 1035, 1035, 1035, 1035, 1035, 932, 1132, 1132, 1132, + 1132, 1132, 1132, 1099, 1329, 1329, 1329, 1133, 1329, 1329, + 1329, 1329, 1329, 1133, 1133, 1133, 1133, 1133, 1133, 1329, + 1133, 1133, 1133, 1133, 1133, 1133, 1042, 1042, 1042, 1042, + 1042, 1042, 1136, 1045, 1045, 1045, 1045, 1045, 1045, 754, + 1047, 1047, 1047, 1047, 1047, 1047, 1138, 1049, 1049, 1049, + 1049, 1049, 1049, 944, 1140, 1140, 1140, 1140, 1140, 1140, + 1102, 1329, 1329, 1329, 1141, 1329, 1329, 1329, 1329, 1329, + 1141, 1141, 1141, 1141, 1141, 1141, 1329, 1141, 1141, 1141, + + 1141, 1141, 1141, 1056, 1056, 1056, 1056, 1056, 1056, 1144, + 1059, 1059, 1059, 1059, 1059, 1059, 766, 1061, 1061, 1061, + 1061, 1061, 1061, 1146, 1063, 1063, 1063, 1063, 1063, 1063, + 956, 1148, 1148, 1148, 1148, 1148, 1148, 1105, 1329, 1329, + 1329, 1149, 1329, 1329, 1329, 1329, 1329, 1149, 1149, 1149, + 1149, 1149, 1149, 1329, 1149, 1149, 1149, 1149, 1149, 1149, + 1152, 1153, 1153, 1153, 1153, 1153, 1155, 1156, 1156, 1156, + 1156, 1156, 1159, 1160, 1160, 1160, 1160, 1160, 1075, 1161, + 1161, 1161, 1161, 1161, 1161, 1077, 1329, 1329, 1329, 1162, + 1329, 48, 48, 1329, 1329, 1162, 1162, 1162, 1162, 1162, + + 1162, 1329, 1162, 1162, 1162, 1162, 1162, 1162, 48, 48, + 1329, 1014, 1014, 1014, 1014, 1014, 1014, 1329, 1329, 1329, + 1168, 1167, 1005, 1169, 1169, 1169, 1169, 1169, 1169, 1170, + 1329, 1329, 1329, 1171, 1329, 1009, 1329, 1329, 1329, 1171, + 1171, 1171, 1171, 1171, 1171, 1329, 1024, 1024, 1024, 1024, + 1024, 1024, 1329, 1037, 1037, 1037, 1037, 1037, 1037, 1227, + 1329, 1009, 912, 1013, 1013, 1013, 1013, 1013, 1013, 1093, + 1329, 1329, 1228, 1014, 1329, 1329, 1329, 1329, 1329, 1014, + 1014, 1014, 1014, 1014, 1014, 921, 1023, 1023, 1023, 1023, + 1023, 1023, 1096, 1329, 1329, 1329, 1024, 1329, 1228, 1329, + + 1329, 1329, 1024, 1024, 1024, 1024, 1024, 1024, 932, 1036, + 1036, 1036, 1036, 1036, 1036, 1099, 1329, 1329, 1329, 1037, + 1329, 1329, 1329, 1329, 1329, 1037, 1037, 1037, 1037, 1037, + 1037, 944, 1050, 1050, 1050, 1050, 1050, 1050, 1102, 1329, + 1329, 1329, 1051, 1329, 1329, 1329, 1329, 1329, 1051, 1051, + 1051, 1051, 1051, 1051, 1329, 1051, 1051, 1051, 1051, 1051, + 1051, 956, 1064, 1064, 1064, 1064, 1064, 1064, 1105, 1329, + 1329, 1329, 1065, 1329, 1329, 1329, 1329, 1329, 1065, 1065, + 1065, 1065, 1065, 1065, 1329, 1065, 1065, 1065, 1065, 1065, + 1065, 1178, 1108, 1108, 1108, 1108, 1108, 1108, 1005, 1180, + + 1180, 1180, 1180, 1180, 1180, 1170, 1329, 1329, 1329, 1181, + 1329, 1329, 1329, 1329, 1329, 1181, 1181, 1181, 1181, 1181, + 1181, 1329, 1181, 1181, 1181, 1181, 1181, 1181, 1184, 1185, + 1185, 1185, 1185, 1185, 1189, 1190, 1190, 1190, 1190, 1190, + 1192, 1193, 1193, 1193, 1193, 1193, 1198, 1199, 1199, 1199, + 1199, 1199, 1201, 1202, 1202, 1202, 1202, 1202, 1207, 1208, + 1208, 1208, 1208, 1208, 1210, 1211, 1211, 1211, 1211, 1211, + 1216, 1217, 1217, 1217, 1217, 1217, 1219, 1220, 1220, 1220, + 1220, 1220, 1153, 1153, 1153, 1153, 1153, 1153, 1225, 1156, + 1156, 1156, 1156, 1156, 1156, 876, 1158, 1158, 1158, 1158, + + 1158, 1158, 1227, 1160, 1160, 1160, 1160, 1160, 1160, 1075, + 1229, 1229, 1229, 1229, 1229, 1229, 1077, 1329, 1329, 1329, + 1230, 1329, 1329, 1329, 1329, 1329, 1230, 1230, 1230, 1230, + 1230, 1230, 1329, 1230, 1230, 1230, 1230, 1230, 1230, 1005, + 1109, 1109, 1109, 1109, 1109, 1109, 1170, 1329, 1329, 1329, + 1110, 1329, 1329, 1329, 1329, 1329, 1110, 1110, 1110, 1110, + 1110, 1110, 1329, 1110, 1110, 1110, 1110, 1110, 1110, 1244, + 1245, 1245, 1245, 1245, 1245, 1250, 1250, 1185, 1185, 1185, + 1185, 1185, 1185, 1329, 1329, 1329, 1329, 1329, 1251, 912, + 1187, 1187, 1187, 1187, 1187, 1187, 1190, 1190, 1190, 1190, + + 1190, 1190, 1254, 1254, 1193, 1193, 1193, 1193, 1193, 1193, + 1329, 1329, 1329, 1329, 1251, 1255, 921, 1195, 1195, 1195, + 1195, 1195, 1195, 1199, 1199, 1199, 1199, 1199, 1199, 1258, + 1258, 1202, 1202, 1202, 1202, 1202, 1202, 1329, 1329, 1329, + 1329, 1255, 1259, 932, 1204, 1204, 1204, 1204, 1204, 1204, + 1208, 1208, 1208, 1208, 1208, 1208, 1262, 1262, 1211, 1211, + 1211, 1211, 1211, 1211, 1329, 1329, 1329, 1329, 1259, 1263, + 944, 1213, 1213, 1213, 1213, 1213, 1213, 1217, 1217, 1217, + 1217, 1217, 1217, 1266, 1266, 1220, 1220, 1220, 1220, 1220, + 1220, 1329, 1329, 1329, 1329, 1263, 1267, 956, 1222, 1222, + + 1222, 1222, 1222, 1222, 1270, 1271, 1271, 1271, 1271, 1271, + 1273, 1274, 1274, 1274, 1274, 1274, 1282, 1329, 1329, 1329, + 1329, 1329, 1267, 1284, 1285, 1285, 1285, 1285, 1285, 1283, + 1282, 1245, 1245, 1245, 1245, 1245, 1245, 1005, 1247, 1247, + 1247, 1247, 1247, 1247, 1288, 1289, 1289, 1289, 1289, 1289, + 1329, 1329, 1329, 1329, 1329, 1283, 1292, 1293, 1293, 1293, + 1293, 1293, 1296, 1297, 1297, 1297, 1297, 1297, 1300, 1301, + 1301, 1301, 1301, 1301, 1271, 1271, 1271, 1271, 1271, 1271, + 1304, 1304, 1274, 1274, 1274, 1274, 1274, 1274, 1329, 1329, + 1329, 1329, 1329, 1305, 1075, 1276, 1276, 1276, 1276, 1276, + + 1276, 1308, 1309, 1309, 1309, 1309, 1309, 1285, 1285, 1285, + 1285, 1285, 1285, 1289, 1289, 1289, 1289, 1289, 1289, 1305, + 1293, 1293, 1293, 1293, 1293, 1293, 1297, 1297, 1297, 1297, + 1297, 1297, 1301, 1301, 1301, 1301, 1301, 1301, 1317, 1318, + 1318, 1318, 1318, 1318, 1309, 1309, 1309, 1309, 1309, 1309, + 1318, 1318, 1318, 1318, 1318, 1318, 46, 1329, 1329, 1329, + 1329, 46, 46, 46, 62, 1329, 62, 62, 62, 62, + 62, 62, 62, 139, 1329, 139, 144, 144, 144, 238, + 238, 238, 247, 247, 247, 307, 307, 307, 309, 309, + 309, 310, 310, 310, 317, 317, 317, 315, 315, 315, + + 325, 1329, 325, 367, 367, 367, 372, 372, 372, 373, + 373, 373, 386, 1329, 386, 387, 387, 387, 319, 319, + 1329, 1329, 319, 395, 395, 395, 439, 439, 439, 443, + 443, 443, 444, 444, 444, 445, 445, 445, 450, 450, + 450, 380, 380, 1329, 1329, 380, 459, 459, 459, 463, + 1329, 463, 464, 464, 464, 472, 1329, 472, 507, 507, + 507, 515, 515, 515, 516, 516, 516, 528, 1329, 528, + 531, 1329, 531, 532, 532, 532, 540, 1329, 540, 462, + 462, 1329, 1329, 462, 466, 466, 1329, 1329, 466, 550, + 550, 550, 444, 444, 444, 575, 575, 575, 579, 579, + + 579, 582, 582, 582, 583, 583, 583, 584, 584, 584, + 589, 589, 589, 522, 522, 1329, 1329, 522, 598, 598, + 598, 530, 530, 1329, 1329, 530, 534, 534, 1329, 1329, + 534, 609, 609, 609, 613, 1329, 613, 616, 1329, 616, + 617, 617, 617, 625, 1329, 625, 643, 643, 643, 654, + 654, 654, 655, 655, 655, 667, 1329, 667, 670, 1329, + 670, 671, 671, 671, 679, 1329, 679, 682, 1329, 682, + 685, 1329, 685, 686, 686, 686, 694, 1329, 694, 612, + 1329, 1329, 612, 615, 615, 1329, 1329, 615, 616, 616, + 1329, 616, 619, 619, 1329, 1329, 619, 705, 705, 705, + + 625, 625, 1329, 625, 53, 53, 53, 1329, 53, 53, + 583, 583, 583, 720, 720, 720, 724, 724, 724, 727, + 727, 727, 730, 730, 730, 731, 731, 731, 732, 732, + 732, 737, 737, 737, 661, 661, 1329, 1329, 661, 746, + 746, 746, 667, 667, 1329, 667, 669, 669, 1329, 1329, + 669, 670, 670, 1329, 670, 673, 673, 1329, 1329, 673, + 757, 757, 757, 679, 679, 1329, 679, 681, 1329, 1329, + 681, 682, 682, 1329, 682, 684, 684, 1329, 1329, 684, + 685, 685, 1329, 685, 688, 688, 1329, 1329, 688, 769, + 769, 769, 694, 694, 1329, 694, 771, 1329, 771, 774, + + 1329, 774, 777, 1329, 777, 778, 778, 778, 786, 1329, + 786, 53, 53, 53, 1329, 53, 53, 798, 798, 798, + 812, 812, 812, 813, 813, 813, 825, 1329, 825, 828, + 1329, 828, 829, 829, 829, 837, 1329, 837, 840, 1329, + 840, 843, 1329, 843, 844, 844, 844, 852, 1329, 852, + 853, 1329, 853, 856, 1329, 856, 859, 1329, 859, 860, + 860, 860, 868, 1329, 868, 771, 1329, 771, 773, 1329, + 1329, 773, 774, 774, 1329, 774, 776, 776, 1329, 1329, + 776, 777, 777, 1329, 777, 780, 780, 1329, 1329, 780, + 879, 879, 879, 786, 786, 1329, 786, 53, 53, 53, + + 1329, 53, 53, 731, 731, 731, 893, 893, 893, 897, + 897, 897, 900, 900, 900, 903, 903, 903, 906, 906, + 906, 907, 907, 907, 915, 915, 915, 819, 819, 1329, + 1329, 819, 924, 924, 924, 825, 825, 1329, 825, 827, + 827, 1329, 1329, 827, 828, 828, 1329, 828, 831, 831, + 1329, 1329, 831, 935, 935, 935, 837, 837, 1329, 837, + 839, 1329, 1329, 839, 840, 840, 1329, 840, 842, 842, + 1329, 1329, 842, 843, 843, 1329, 843, 846, 846, 1329, + 1329, 846, 947, 947, 947, 852, 852, 1329, 852, 853, + 1329, 853, 855, 1329, 1329, 855, 856, 856, 1329, 856, + + 858, 858, 1329, 1329, 858, 859, 859, 1329, 859, 862, + 862, 1329, 1329, 862, 959, 959, 959, 868, 868, 1329, + 868, 961, 1329, 961, 964, 1329, 964, 967, 1329, 967, + 968, 968, 968, 976, 1329, 976, 53, 53, 53, 1329, + 53, 53, 987, 987, 987, 1004, 1004, 1004, 1010, 1010, + 1010, 1008, 1008, 1008, 1015, 1015, 1015, 1016, 1329, 1016, + 1019, 1329, 1019, 1020, 1020, 1020, 1025, 1025, 1025, 1026, + 1329, 1026, 1029, 1329, 1029, 1032, 1329, 1032, 1033, 1033, + 1033, 1038, 1038, 1038, 1039, 1329, 1039, 1040, 1329, 1040, + 1043, 1329, 1043, 1046, 1329, 1046, 1047, 1047, 1047, 1052, + + 1052, 1052, 1053, 1329, 1053, 1054, 1329, 1054, 1057, 1329, + 1057, 1060, 1329, 1060, 1061, 1061, 1061, 1066, 1066, 1066, + 1067, 1329, 1067, 961, 1329, 961, 963, 1329, 1329, 963, + 964, 964, 1329, 964, 966, 966, 1329, 1329, 966, 967, + 967, 1329, 967, 970, 970, 1329, 1329, 970, 1078, 1078, + 1078, 976, 976, 1329, 976, 53, 53, 53, 1329, 53, + 53, 907, 907, 907, 1094, 1094, 1094, 1097, 1097, 1097, + 1100, 1100, 1100, 1103, 1103, 1103, 1106, 1106, 1106, 1111, + 1111, 1111, 1113, 1329, 1113, 1114, 1114, 1114, 1012, 1012, + 1329, 1329, 1012, 1119, 1119, 1119, 1016, 1016, 1329, 1016, + + 1018, 1018, 1329, 1329, 1018, 1019, 1019, 1329, 1019, 1022, + 1022, 1329, 1329, 1022, 1126, 1126, 1126, 1026, 1026, 1329, + 1026, 1028, 1329, 1329, 1028, 1029, 1029, 1329, 1029, 1031, + 1031, 1329, 1329, 1031, 1032, 1032, 1329, 1032, 1035, 1035, + 1329, 1329, 1035, 1134, 1134, 1134, 1039, 1039, 1329, 1039, + 1040, 1329, 1040, 1042, 1329, 1329, 1042, 1043, 1043, 1329, + 1043, 1045, 1045, 1329, 1329, 1045, 1046, 1046, 1329, 1046, + 1049, 1049, 1329, 1329, 1049, 1142, 1142, 1142, 1053, 1053, + 1329, 1053, 1054, 1329, 1054, 1056, 1329, 1329, 1056, 1057, + 1057, 1329, 1057, 1059, 1059, 1329, 1329, 1059, 1060, 1060, + + 1329, 1060, 1063, 1063, 1329, 1329, 1063, 1150, 1150, 1150, + 1067, 1067, 1329, 1067, 1151, 1329, 1151, 1154, 1329, 1154, + 1157, 1329, 1157, 1158, 1158, 1158, 1163, 1329, 1163, 1164, + 1329, 1164, 53, 53, 53, 1329, 53, 53, 1172, 1329, + 1172, 1171, 1171, 1171, 1173, 1329, 1173, 1174, 1329, 1174, + 1175, 1329, 1175, 1176, 1329, 1176, 1177, 1329, 1177, 1108, + 1108, 1329, 1329, 1108, 1182, 1182, 1182, 317, 317, 317, + 1113, 1113, 1329, 1113, 1183, 1183, 1183, 1186, 1329, 1186, + 1187, 1187, 1187, 1188, 1188, 1188, 1191, 1329, 1191, 1194, + 1329, 1194, 1195, 1195, 1195, 1196, 1196, 1196, 1197, 1329, + + 1197, 1200, 1329, 1200, 1203, 1329, 1203, 1204, 1204, 1204, + 1205, 1205, 1205, 1206, 1329, 1206, 1209, 1329, 1209, 1212, + 1329, 1212, 1213, 1213, 1213, 1214, 1214, 1214, 1215, 1329, + 1215, 1218, 1329, 1218, 1221, 1329, 1221, 1222, 1222, 1222, + 1223, 1223, 1223, 1151, 1329, 1151, 1153, 1329, 1329, 1153, + 1154, 1154, 1329, 1154, 1156, 1156, 1329, 1329, 1156, 1157, + 1157, 1329, 1157, 1160, 1160, 1329, 1329, 1160, 1231, 1329, + 1231, 1164, 1164, 1329, 1164, 53, 53, 53, 1329, 53, + 53, 1236, 1236, 1236, 1238, 1329, 1238, 1239, 1329, 1239, + 1240, 1329, 1240, 1241, 1329, 1241, 1242, 1329, 1242, 1243, + + 1329, 1243, 1246, 1329, 1246, 1247, 1247, 1247, 1248, 1248, + 1248, 1249, 1329, 1249, 1185, 1185, 1329, 1329, 1185, 1186, + 1186, 1329, 1186, 1252, 1329, 1252, 1190, 1329, 1329, 1190, + 1191, 1191, 1329, 1191, 1193, 1193, 1329, 1329, 1193, 1194, + 1194, 1329, 1194, 1256, 1329, 1256, 1197, 1329, 1197, 1199, + 1329, 1329, 1199, 1200, 1200, 1329, 1200, 1202, 1202, 1329, + 1329, 1202, 1203, 1203, 1329, 1203, 1260, 1329, 1260, 1206, + 1329, 1206, 1208, 1329, 1329, 1208, 1209, 1209, 1329, 1209, + 1211, 1211, 1329, 1329, 1211, 1212, 1212, 1329, 1212, 1264, + 1329, 1264, 1215, 1329, 1215, 1217, 1329, 1329, 1217, 1218, + + 1218, 1329, 1218, 1220, 1220, 1329, 1329, 1220, 1221, 1221, + 1329, 1221, 1268, 1329, 1268, 1269, 1329, 1269, 1272, 1329, + 1272, 1275, 1329, 1275, 1276, 1276, 1276, 1277, 1329, 1277, + 53, 53, 53, 1329, 53, 53, 1281, 1329, 1281, 1183, + 1329, 1183, 1188, 1329, 1188, 1196, 1329, 1196, 1205, 1329, + 1205, 1214, 1329, 1214, 1223, 1329, 1223, 1245, 1245, 1329, + 1329, 1245, 1246, 1246, 1329, 1246, 1237, 1329, 1237, 1286, + 1329, 1286, 1287, 1329, 1287, 1290, 1329, 1290, 1291, 1329, + 1291, 1294, 1329, 1294, 1295, 1329, 1295, 1298, 1329, 1298, + 1299, 1329, 1299, 1302, 1329, 1302, 1271, 1329, 1329, 1271, + + 1274, 1274, 1329, 1329, 1274, 1306, 1329, 1306, 1248, 1329, + 1248, 1310, 1329, 1310, 1285, 1329, 1329, 1285, 1289, 1329, + 1329, 1289, 1293, 1329, 1329, 1293, 1297, 1329, 1329, 1297, + 1301, 1329, 1329, 1301, 1316, 1329, 1316, 1319, 1329, 1319, + 1309, 1329, 1329, 1309, 1321, 1329, 1321, 1322, 1329, 1322, + 1323, 1329, 1323, 1324, 1329, 1324, 1325, 1329, 1325, 1318, + 1329, 1329, 1318, 1327, 1329, 1327, 1328, 1329, 1328, 3, + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + 1329, 1329 } ; -static yyconst short int yy_chk[6645] = +static yyconst flex_int16_t yy_chk[6623] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 4, 7, 90, 4, 7, 4, 7, 9, + 1, 1, 4, 7, 91, 4, 7, 4, 7, 9, 4, 7, 9, 12, 9, 24, 12, 9, 12, 4, - 7, 12, 15, 17, 17, 1311, 9, 4, 7, 24, - 12, 19, 19, 64, 9, 64, 24, 90, 12, 14, + 7, 12, 15, 17, 17, 1319, 9, 4, 7, 24, + 12, 19, 19, 64, 9, 64, 24, 91, 12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 27, - 27, 14, 14, 14, 1302, 1294, 14, 14, 14, 14, + 27, 14, 14, 14, 1310, 1302, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 16, 34, 23, 16, 23, 16, 29, 86, 16, - 23, 34, 166, 86, 1290, 23, 166, 22, 16, 23, - 22, 23, 22, 29, 39, 22, 16, 20, 20, 20, + 14, 16, 28, 23, 16, 23, 16, 28, 29, 16, + 23, 87, 1298, 1294, 34, 23, 87, 22, 16, 23, + 22, 23, 22, 34, 29, 22, 16, 20, 20, 20, 20, 20, 20, 20, 22, 26, 25, 33, 39, 25, - 20, 33, 22, 25, 95, 26, 35, 38, 26, 95, - 33, 33, 139, 38, 287, 38, 33, 38, 35, 287, + 20, 33, 22, 25, 96, 26, 35, 38, 26, 96, + 33, 33, 39, 38, 33, 38, 33, 38, 35, 1290, 35, 38, 35, 38, 38, 35, 20, 21, 21, 21, - 21, 21, 21, 21, 94, 32, 32, 21, 139, 1286, - 94, 1282, 69, 21, 21, 21, 21, 21, 21, 31, + 21, 21, 21, 21, 95, 32, 32, 21, 1286, 1275, + 95, 1272, 69, 21, 21, 21, 21, 21, 21, 31, 32, 75, 31, 31, 32, 31, 69, 31, 32, 31, 32, 31, 37, 36, 31, 75, 37, 32, 36, 36, - 41, 36, 36, 80, 37, 1278, 1267, 121, 41, 37, + 41, 36, 36, 80, 37, 1246, 1230, 123, 41, 37, 44, 37, 41, 44, 41, 44, 80, 78, 44, 49, - 49, 49, 49, 49, 49, 121, 146, 44, 52, 52, + 49, 49, 49, 49, 49, 123, 141, 44, 52, 52, 52, 52, 52, 52, 52, 44, 50, 50, 50, 50, - 50, 50, 50, 78, 220, 235, 1264, 50, 1238, 78, - 1222, 1213, 146, 50, 50, 50, 50, 50, 50, 54, + 50, 50, 50, 78, 1221, 99, 295, 50, 99, 78, + 99, 295, 141, 50, 50, 50, 50, 50, 50, 54, - 54, 54, 54, 54, 54, 61, 618, 220, 61, 54, - 61, 235, 116, 61, 91, 54, 54, 54, 54, 54, - 54, 55, 61, 618, 55, 116, 55, 626, 1210, 55, - 61, 125, 55, 55, 55, 55, 55, 55, 55, 1204, - 91, 125, 55, 1201, 626, 91, 55, 626, 55, 55, + 54, 54, 54, 54, 54, 61, 626, 168, 61, 54, + 61, 168, 118, 61, 92, 54, 54, 54, 54, 54, + 54, 55, 61, 626, 55, 118, 55, 634, 1218, 55, + 61, 127, 55, 55, 55, 55, 55, 55, 55, 1212, + 92, 127, 55, 148, 634, 92, 55, 634, 55, 55, 55, 55, 55, 55, 63, 63, 63, 63, 63, 63, - 63, 123, 141, 141, 141, 141, 141, 141, 141, 191, - 123, 153, 153, 153, 153, 153, 153, 153, 382, 446, - 1195, 1192, 191, 1186, 1183, 382, 446, 63, 138, 138, - 138, 138, 138, 138, 138, 227, 227, 227, 227, 227, + 63, 125, 143, 143, 143, 143, 143, 143, 143, 148, + 125, 155, 155, 155, 155, 155, 155, 155, 1209, 226, + 1203, 1200, 196, 241, 1194, 318, 351, 63, 140, 140, + 140, 140, 140, 140, 140, 196, 1191, 304, 318, 323, - 227, 138, 238, 238, 238, 238, 238, 238, 241, 241, - 241, 241, 241, 241, 241, 296, 304, 304, 304, 304, - 304, 304, 310, 627, 340, 343, 1178, 138, 140, 140, - 140, 140, 140, 140, 140, 310, 315, 340, 140, 343, - 627, 296, 631, 627, 140, 140, 140, 140, 140, 140, - 143, 143, 143, 143, 143, 143, 143, 537, 362, 631, - 143, 310, 315, 629, 537, 1174, 143, 143, 143, 143, - 143, 143, 145, 145, 145, 145, 145, 145, 145, 145, - 629, 629, 291, 145, 362, 145, 1173, 291, 258, 145, - 145, 145, 145, 145, 145, 258, 291, 368, 291, 291, + 351, 140, 226, 233, 233, 233, 233, 233, 233, 241, + 244, 244, 244, 244, 244, 244, 247, 247, 247, 247, + 247, 247, 247, 304, 318, 323, 348, 140, 142, 142, + 142, 142, 142, 142, 142, 370, 376, 384, 142, 348, + 1186, 1182, 639, 1181, 142, 142, 142, 142, 142, 142, + 145, 145, 145, 145, 145, 145, 145, 390, 454, 639, + 145, 370, 376, 384, 390, 454, 145, 145, 145, 145, + 145, 145, 147, 147, 147, 147, 147, 147, 147, 147, + 1170, 1164, 299, 147, 379, 147, 1157, 299, 265, 147, + 147, 147, 147, 147, 147, 265, 299, 379, 299, 299, - 1162, 291, 357, 357, 357, 357, 357, 357, 258, 371, - 399, 145, 159, 159, 159, 159, 159, 159, 159, 399, - 1156, 1149, 371, 368, 258, 307, 307, 307, 307, 307, - 307, 307, 311, 311, 311, 311, 311, 311, 311, 1146, - 401, 159, 228, 228, 228, 228, 228, 228, 371, 401, - 585, 1142, 228, 1141, 376, 429, 462, 585, 228, 228, - 228, 228, 228, 228, 229, 229, 229, 229, 229, 229, - 229, 229, 234, 234, 234, 234, 234, 234, 234, 234, - 376, 429, 462, 234, 502, 234, 1134, 1133, 1126, 234, - 234, 234, 234, 234, 234, 313, 313, 313, 313, 313, + 407, 299, 312, 312, 312, 312, 312, 312, 265, 407, + 409, 147, 161, 161, 161, 161, 161, 161, 161, 409, + 1154, 1150, 437, 379, 265, 315, 315, 315, 315, 315, + 315, 315, 319, 319, 319, 319, 319, 319, 319, 1149, + 1142, 161, 234, 234, 234, 234, 234, 234, 437, 1141, + 545, 1134, 234, 1133, 470, 510, 513, 545, 234, 234, + 234, 234, 234, 234, 235, 235, 235, 235, 235, 235, + 235, 235, 240, 240, 240, 240, 240, 240, 240, 240, + 470, 510, 513, 240, 519, 240, 1126, 1125, 1119, 240, + 240, 240, 240, 240, 240, 321, 321, 321, 321, 321, - 313, 313, 372, 372, 372, 372, 372, 372, 372, 453, - 502, 234, 239, 239, 239, 239, 239, 239, 239, 239, - 505, 511, 453, 239, 518, 1125, 632, 699, 1118, 239, - 239, 239, 239, 239, 239, 240, 240, 240, 240, 240, - 240, 1117, 596, 632, 699, 240, 505, 511, 453, 596, - 518, 240, 240, 240, 240, 240, 240, 295, 295, 295, - 295, 295, 295, 295, 380, 380, 380, 380, 380, 380, - 295, 374, 374, 374, 374, 374, 374, 374, 384, 384, - 384, 384, 384, 384, 387, 387, 387, 387, 387, 387, - 387, 457, 513, 521, 711, 525, 295, 300, 300, 300, + 321, 321, 365, 365, 365, 365, 365, 365, 461, 465, + 519, 240, 245, 245, 245, 245, 245, 245, 245, 245, + 526, 461, 465, 245, 538, 1118, 637, 1114, 1113, 245, + 245, 245, 245, 245, 245, 246, 246, 246, 246, 246, + 246, 1112, 593, 637, 637, 246, 526, 461, 465, 593, + 538, 246, 246, 246, 246, 246, 246, 303, 303, 303, + 303, 303, 303, 303, 388, 388, 388, 388, 388, 388, + 303, 380, 380, 380, 380, 380, 380, 380, 382, 382, + 382, 382, 382, 382, 382, 392, 392, 392, 392, 392, + 392, 521, 529, 533, 628, 640, 303, 308, 308, 308, - 300, 300, 300, 692, 457, 513, 521, 300, 525, 619, - 692, 711, 1111, 300, 300, 300, 300, 300, 300, 303, - 303, 303, 303, 303, 303, 303, 619, 530, 603, 303, - 457, 513, 521, 619, 525, 303, 303, 303, 303, 303, - 303, 305, 305, 305, 305, 305, 305, 305, 305, 615, - 733, 1110, 305, 530, 603, 625, 630, 733, 305, 305, - 305, 305, 305, 305, 306, 306, 306, 306, 306, 306, - 306, 744, 625, 630, 306, 615, 630, 625, 744, 700, - 306, 306, 306, 306, 306, 306, 312, 312, 312, 312, - 312, 312, 312, 312, 1106, 638, 700, 312, 641, 644, + 308, 308, 308, 604, 521, 529, 533, 308, 611, 627, + 604, 628, 640, 308, 308, 308, 308, 308, 308, 311, + 311, 311, 311, 311, 311, 311, 627, 623, 628, 311, + 521, 529, 533, 627, 611, 311, 311, 311, 311, 311, + 311, 313, 313, 313, 313, 313, 313, 313, 313, 700, + 741, 646, 313, 623, 633, 635, 700, 741, 313, 313, + 313, 313, 313, 313, 314, 314, 314, 314, 314, 314, + 314, 633, 635, 649, 314, 635, 633, 646, 638, 707, + 314, 314, 314, 314, 314, 314, 320, 320, 320, 320, + 320, 320, 320, 320, 1111, 638, 707, 320, 638, 649, - 789, 700, 1105, 312, 312, 312, 312, 312, 312, 314, - 314, 314, 314, 314, 314, 314, 314, 789, 1104, 650, - 314, 638, 314, 1103, 641, 644, 314, 314, 314, 314, - 314, 314, 439, 439, 439, 439, 439, 439, 442, 442, - 442, 442, 442, 442, 442, 650, 657, 756, 314, 326, - 669, 672, 684, 326, 756, 1083, 326, 701, 606, 326, - 610, 326, 326, 326, 326, 358, 358, 358, 358, 358, - 358, 606, 657, 610, 701, 358, 669, 672, 684, 701, - 1066, 358, 358, 358, 358, 358, 358, 361, 361, 361, - 361, 361, 361, 361, 361, 866, 911, 606, 361, 610, + 719, 708, 1091, 320, 320, 320, 320, 320, 320, 322, + 322, 322, 322, 322, 322, 322, 322, 719, 708, 652, + 322, 658, 322, 708, 665, 677, 322, 322, 322, 322, + 322, 322, 395, 395, 395, 395, 395, 395, 395, 447, + 447, 447, 447, 447, 447, 652, 680, 658, 322, 334, + 665, 677, 692, 334, 772, 1074, 334, 709, 614, 334, + 618, 334, 334, 334, 334, 366, 366, 366, 366, 366, + 366, 614, 680, 618, 709, 366, 1067, 1066, 692, 709, + 772, 366, 366, 366, 366, 366, 366, 369, 369, 369, + 369, 369, 369, 369, 369, 752, 764, 614, 369, 618, - 361, 1059, 866, 911, 361, 361, 361, 361, 361, 361, - 444, 444, 444, 444, 444, 444, 448, 448, 448, 448, - 448, 448, 709, 1058, 876, 1052, 361, 367, 367, 367, - 367, 367, 367, 367, 367, 1049, 922, 1045, 367, 709, - 367, 876, 709, 922, 367, 367, 367, 367, 367, 367, - 451, 451, 451, 451, 451, 451, 451, 454, 454, 454, - 454, 454, 454, 454, 620, 621, 367, 373, 373, 373, - 373, 373, 373, 373, 373, 1044, 764, 1038, 373, 1035, - 776, 620, 621, 702, 373, 373, 373, 373, 373, 373, - 375, 375, 375, 375, 375, 375, 375, 375, 620, 621, + 369, 1060, 752, 764, 369, 369, 369, 369, 369, 369, + 450, 450, 450, 450, 450, 450, 450, 452, 452, 452, + 452, 452, 452, 1057, 660, 797, 369, 375, 375, 375, + 375, 375, 375, 375, 375, 1053, 874, 660, 375, 1052, + 375, 1046, 797, 874, 375, 375, 375, 375, 375, 375, + 456, 456, 456, 456, 456, 456, 459, 459, 459, 459, + 459, 459, 459, 660, 629, 630, 375, 381, 381, 381, + 381, 381, 381, 381, 381, 1043, 784, 1039, 381, 1038, + 801, 629, 630, 710, 381, 381, 381, 381, 381, 381, + 383, 383, 383, 383, 383, 383, 383, 383, 629, 630, - 702, 375, 764, 375, 1031, 702, 776, 375, 375, 375, - 375, 375, 375, 456, 456, 456, 456, 456, 456, 456, - 458, 458, 458, 458, 458, 458, 458, 622, 624, 375, - 385, 385, 385, 385, 385, 385, 385, 385, 1030, 934, - 793, 385, 704, 706, 622, 624, 934, 385, 385, 385, - 385, 385, 385, 386, 386, 386, 386, 386, 386, 704, - 706, 622, 624, 386, 704, 706, 793, 1024, 1021, 386, - 386, 386, 386, 386, 386, 428, 428, 428, 428, 428, - 428, 533, 533, 533, 533, 533, 533, 428, 460, 460, - 460, 460, 460, 460, 460, 514, 514, 514, 514, 514, + 710, 383, 784, 383, 1032, 710, 801, 383, 383, 383, + 383, 383, 383, 462, 462, 462, 462, 462, 462, 462, + 464, 464, 464, 464, 464, 464, 464, 632, 711, 383, + 393, 393, 393, 393, 393, 393, 393, 393, 1029, 804, + 807, 393, 712, 1026, 632, 711, 1025, 393, 393, 393, + 393, 393, 393, 394, 394, 394, 394, 394, 394, 712, + 711, 632, 1019, 394, 712, 804, 807, 1016, 1015, 394, + 394, 394, 394, 394, 394, 436, 436, 436, 436, 436, + 436, 541, 541, 541, 541, 541, 541, 436, 466, 466, + 466, 466, 466, 466, 466, 468, 468, 468, 468, 468, - 514, 514, 516, 516, 516, 516, 516, 516, 516, 652, - 660, 703, 633, 428, 432, 432, 432, 432, 432, 432, - 1018, 1017, 652, 660, 432, 796, 1011, 783, 703, 633, - 432, 432, 432, 432, 432, 432, 434, 434, 434, 434, - 434, 434, 633, 703, 783, 1008, 434, 783, 652, 660, - 707, 796, 434, 434, 434, 434, 434, 434, 438, 438, - 438, 438, 438, 438, 438, 1007, 799, 707, 438, 802, - 808, 786, 707, 879, 438, 438, 438, 438, 438, 438, - 440, 440, 440, 440, 440, 440, 440, 440, 786, 815, - 879, 440, 799, 786, 879, 802, 808, 440, 440, 440, + 468, 468, 522, 522, 522, 522, 522, 522, 522, 668, + 672, 713, 641, 436, 440, 440, 440, 440, 440, 440, + 1010, 1007, 668, 672, 440, 1004, 796, 717, 713, 641, + 440, 440, 440, 440, 440, 440, 442, 442, 442, 442, + 442, 442, 641, 796, 717, 713, 442, 717, 668, 672, + 714, 796, 442, 442, 442, 442, 442, 442, 446, 446, + 446, 446, 446, 446, 446, 1003, 810, 714, 446, 1000, + 816, 715, 714, 794, 446, 446, 446, 446, 446, 446, + 448, 448, 448, 448, 448, 448, 448, 448, 715, 823, + 794, 448, 810, 715, 791, 794, 816, 448, 448, 448, - 440, 440, 440, 441, 441, 441, 441, 441, 441, 441, - 946, 827, 830, 441, 842, 815, 788, 946, 1002, 441, - 441, 441, 441, 441, 441, 449, 449, 449, 449, 449, - 449, 449, 449, 788, 846, 858, 449, 827, 830, 884, - 842, 788, 449, 449, 449, 449, 449, 449, 450, 450, - 450, 450, 450, 450, 450, 999, 884, 996, 450, 995, - 846, 858, 882, 883, 450, 450, 450, 450, 450, 450, - 459, 459, 459, 459, 459, 459, 459, 459, 992, 882, - 883, 459, 901, 882, 972, 883, 989, 459, 459, 459, - 459, 459, 459, 461, 461, 461, 461, 461, 461, 461, + 448, 448, 448, 449, 449, 449, 449, 449, 449, 449, + 919, 791, 835, 449, 791, 823, 997, 919, 994, 449, + 449, 449, 449, 449, 449, 457, 457, 457, 457, 457, + 457, 457, 457, 838, 850, 854, 457, 866, 835, 884, + 892, 991, 457, 457, 457, 457, 457, 457, 458, 458, + 458, 458, 458, 458, 458, 987, 884, 892, 458, 838, + 850, 854, 887, 866, 458, 458, 458, 458, 458, 458, + 467, 467, 467, 467, 467, 467, 467, 467, 976, 887, + 975, 467, 909, 887, 890, 891, 981, 467, 467, 467, + 467, 467, 467, 469, 469, 469, 469, 469, 469, 469, - 461, 972, 1065, 972, 461, 986, 461, 983, 901, 1065, - 461, 461, 461, 461, 461, 461, 522, 522, 522, 522, - 522, 522, 522, 524, 524, 524, 524, 524, 524, 524, - 705, 664, 461, 498, 498, 498, 498, 498, 498, 954, - 979, 966, 968, 498, 664, 982, 973, 705, 967, 498, - 498, 498, 498, 498, 498, 501, 501, 501, 501, 501, - 501, 501, 501, 973, 705, 954, 501, 966, 501, 959, - 664, 982, 501, 501, 501, 501, 501, 501, 526, 526, - 526, 526, 526, 526, 526, 528, 528, 528, 528, 528, - 528, 528, 675, 881, 501, 504, 504, 504, 504, 504, + 469, 890, 891, 981, 469, 890, 469, 891, 909, 967, + 469, 469, 469, 469, 469, 469, 524, 524, 524, 524, + 524, 524, 524, 530, 530, 530, 530, 530, 530, 530, + 790, 683, 469, 506, 506, 506, 506, 506, 506, 930, + 964, 942, 958, 506, 683, 962, 930, 790, 942, 506, + 506, 506, 506, 506, 506, 509, 509, 509, 509, 509, + 509, 509, 509, 955, 790, 946, 509, 974, 509, 943, + 683, 962, 509, 509, 509, 509, 509, 509, 532, 532, + 532, 532, 532, 532, 532, 534, 534, 534, 534, 534, + 534, 534, 687, 974, 509, 512, 512, 512, 512, 512, - 504, 504, 504, 956, 1109, 675, 504, 985, 504, 950, - 881, 1109, 504, 504, 504, 504, 504, 504, 535, 535, - 535, 535, 535, 535, 539, 539, 539, 539, 539, 539, - 881, 675, 977, 985, 504, 510, 510, 510, 510, 510, - 510, 510, 510, 1116, 1124, 947, 510, 938, 510, 977, - 1116, 1124, 510, 510, 510, 510, 510, 510, 542, 542, - 542, 542, 542, 542, 542, 571, 571, 571, 571, 571, - 571, 571, 710, 782, 510, 515, 515, 515, 515, 515, - 515, 515, 515, 935, 988, 926, 515, 991, 994, 710, - 782, 923, 515, 515, 515, 515, 515, 515, 517, 517, + 512, 512, 512, 954, 1073, 687, 512, 934, 512, 931, + 954, 1073, 512, 512, 512, 512, 512, 512, 536, 536, + 536, 536, 536, 536, 536, 543, 543, 543, 543, 543, + 543, 687, 980, 985, 512, 518, 518, 518, 518, 518, + 518, 518, 518, 923, 920, 914, 518, 911, 518, 980, + 985, 980, 518, 518, 518, 518, 518, 518, 547, 547, + 547, 547, 547, 547, 550, 550, 550, 550, 550, 550, + 550, 718, 795, 792, 518, 523, 523, 523, 523, 523, + 523, 523, 523, 910, 990, 907, 523, 993, 718, 795, + 792, 792, 523, 523, 523, 523, 523, 523, 525, 525, - 517, 517, 517, 517, 517, 517, 915, 782, 710, 517, - 988, 517, 912, 991, 994, 517, 517, 517, 517, 517, - 517, 574, 574, 574, 574, 574, 574, 574, 578, 578, - 578, 578, 578, 578, 679, 784, 906, 517, 527, 527, - 527, 527, 527, 527, 527, 527, 903, 679, 902, 527, - 899, 1019, 784, 784, 976, 527, 527, 527, 527, 527, - 527, 529, 529, 529, 529, 529, 529, 529, 529, 885, - 784, 976, 529, 679, 529, 867, 976, 1019, 529, 529, - 529, 529, 529, 529, 581, 581, 581, 581, 581, 581, - 581, 583, 583, 583, 583, 583, 583, 767, 708, 779, + 525, 525, 525, 525, 525, 525, 795, 718, 792, 525, + 990, 525, 893, 993, 875, 525, 525, 525, 525, 525, + 525, 579, 579, 579, 579, 579, 579, 579, 582, 582, + 582, 582, 582, 582, 582, 886, 793, 525, 535, 535, + 535, 535, 535, 535, 535, 535, 868, 996, 867, 535, + 999, 1002, 886, 793, 859, 535, 535, 535, 535, 535, + 535, 537, 537, 537, 537, 537, 537, 537, 537, 793, + 856, 886, 537, 996, 537, 852, 999, 1002, 537, 537, + 537, 537, 537, 537, 586, 586, 586, 586, 586, 586, + 589, 589, 589, 589, 589, 589, 589, 775, 716, 787, - 529, 540, 540, 540, 540, 540, 540, 540, 540, 1033, - 767, 1047, 540, 860, 859, 708, 779, 851, 540, 540, - 540, 540, 540, 540, 541, 541, 541, 541, 541, 541, - 708, 779, 1081, 848, 541, 1033, 767, 1047, 1072, 771, - 541, 541, 541, 541, 541, 541, 568, 568, 568, 568, - 568, 568, 771, 844, 1132, 1072, 568, 1144, 1081, 969, - 1073, 1132, 568, 568, 568, 568, 568, 568, 569, 569, - 569, 569, 569, 569, 569, 569, 969, 1073, 771, 569, - 1181, 970, 1074, 1144, 810, 569, 569, 569, 569, 569, - 569, 570, 570, 570, 570, 570, 570, 810, 970, 1074, + 537, 548, 548, 548, 548, 548, 548, 548, 548, 1027, + 775, 1041, 548, 851, 843, 716, 787, 840, 548, 548, + 548, 548, 548, 548, 549, 549, 549, 549, 549, 549, + 716, 787, 1055, 837, 549, 1027, 775, 1041, 1080, 779, + 549, 549, 549, 549, 549, 549, 576, 576, 576, 576, + 576, 576, 779, 836, 1089, 1080, 576, 1152, 1055, 977, + 982, 828, 576, 576, 576, 576, 576, 576, 577, 577, + 577, 577, 577, 577, 577, 577, 977, 982, 779, 577, + 1089, 825, 1081, 1152, 818, 577, 577, 577, 577, 577, + 577, 578, 578, 578, 578, 578, 578, 818, 982, 1081, - 969, 570, 1190, 1199, 971, 843, 1181, 570, 570, 570, - 570, 570, 570, 572, 572, 572, 572, 572, 572, 572, - 572, 971, 970, 810, 572, 1075, 1076, 974, 1190, 1199, - 572, 572, 572, 572, 572, 572, 573, 573, 573, 573, - 573, 573, 1075, 1076, 974, 971, 573, 835, 1076, 832, - 1158, 829, 573, 573, 573, 573, 573, 573, 577, 577, - 577, 577, 577, 577, 577, 974, 1140, 1158, 577, 1208, - 1158, 1160, 1159, 1140, 577, 577, 577, 577, 577, 577, - 579, 579, 579, 579, 579, 579, 579, 579, 1160, 1159, - 1262, 579, 1159, 828, 820, 1208, 817, 579, 579, 579, + 977, 578, 1189, 1198, 978, 889, 824, 578, 578, 578, + 578, 578, 578, 580, 580, 580, 580, 580, 580, 580, + 580, 978, 889, 818, 580, 1207, 979, 984, 1189, 1198, + 580, 580, 580, 580, 580, 580, 581, 581, 581, 581, + 581, 581, 889, 979, 984, 978, 581, 817, 1082, 984, + 813, 1207, 581, 581, 581, 581, 581, 581, 585, 585, + 585, 585, 585, 585, 585, 1082, 1117, 979, 585, 812, + 1216, 1083, 1084, 1117, 585, 585, 585, 585, 585, 585, + 587, 587, 587, 587, 587, 587, 587, 587, 1083, 1084, + 1270, 587, 811, 808, 1084, 1166, 1216, 587, 587, 587, - 579, 579, 579, 580, 580, 580, 580, 580, 580, 580, - 1172, 1221, 1160, 580, 1276, 1280, 1262, 1172, 1221, 580, - 580, 580, 580, 580, 580, 587, 587, 587, 587, 587, - 587, 588, 588, 588, 588, 588, 588, 588, 588, 1284, - 1276, 1280, 588, 816, 1226, 1227, 1270, 809, 588, 588, - 588, 588, 588, 588, 589, 589, 589, 589, 589, 589, - 589, 1226, 1227, 1270, 589, 1284, 805, 804, 803, 1226, - 589, 589, 589, 589, 589, 589, 590, 590, 590, 590, - 590, 590, 590, 592, 592, 592, 592, 592, 592, 594, - 594, 594, 594, 594, 594, 598, 598, 598, 598, 598, + 587, 587, 587, 588, 588, 588, 588, 588, 588, 588, + 1124, 1132, 1166, 588, 805, 1166, 1270, 1124, 1132, 588, + 588, 588, 588, 588, 588, 591, 591, 591, 591, 591, + 591, 595, 595, 595, 595, 595, 595, 596, 596, 596, + 596, 596, 596, 596, 596, 1140, 1148, 1284, 596, 1288, + 802, 1167, 1140, 1148, 596, 596, 596, 596, 596, 596, + 597, 597, 597, 597, 597, 597, 597, 1180, 1167, 799, + 597, 1167, 798, 1284, 1180, 1288, 597, 597, 597, 597, + 597, 597, 598, 598, 598, 598, 598, 598, 598, 600, + 600, 600, 600, 600, 600, 602, 602, 602, 602, 602, - 598, 599, 599, 599, 599, 599, 599, 599, 599, 1288, - 1292, 1300, 599, 1309, 1272, 1299, 800, 797, 599, 599, - 599, 599, 599, 599, 600, 600, 600, 600, 600, 600, - 600, 1272, 1299, 794, 600, 1288, 1292, 1300, 791, 1309, - 600, 600, 600, 600, 600, 600, 601, 601, 601, 601, - 601, 601, 601, 604, 604, 604, 604, 604, 604, 607, - 607, 607, 607, 607, 607, 607, 609, 609, 609, 609, - 609, 609, 609, 611, 611, 611, 611, 611, 611, 611, - 612, 612, 612, 612, 612, 612, 612, 612, 790, 778, - 777, 612, 769, 766, 757, 745, 734, 612, 612, 612, + 602, 606, 606, 606, 606, 606, 606, 607, 607, 607, + 607, 607, 607, 607, 607, 1229, 1292, 1296, 607, 786, + 1234, 1235, 1229, 785, 607, 607, 607, 607, 607, 607, + 608, 608, 608, 608, 608, 608, 608, 1234, 1235, 777, + 608, 774, 1292, 1296, 765, 1234, 608, 608, 608, 608, + 608, 608, 609, 609, 609, 609, 609, 609, 609, 612, + 612, 612, 612, 612, 612, 615, 615, 615, 615, 615, + 615, 615, 617, 617, 617, 617, 617, 617, 617, 619, + 619, 619, 619, 619, 619, 619, 620, 620, 620, 620, + 620, 620, 620, 620, 753, 742, 732, 620, 731, 720, - 612, 612, 612, 613, 613, 613, 613, 613, 613, 613, - 614, 614, 614, 614, 614, 614, 614, 614, 623, 628, - 724, 614, 634, 614, 723, 818, 712, 614, 614, 614, - 614, 614, 614, 785, 693, 623, 628, 686, 818, 634, - 653, 653, 653, 653, 653, 653, 653, 623, 628, 614, - 785, 634, 637, 637, 637, 637, 637, 637, 637, 637, - 685, 677, 674, 637, 818, 637, 785, 671, 670, 637, - 637, 637, 637, 637, 637, 655, 655, 655, 655, 655, - 655, 655, 661, 661, 661, 661, 661, 661, 661, 662, - 659, 637, 640, 640, 640, 640, 640, 640, 640, 640, + 701, 694, 693, 620, 620, 620, 620, 620, 620, 621, + 621, 621, 621, 621, 621, 621, 622, 622, 622, 622, + 622, 622, 622, 622, 631, 636, 1278, 622, 642, 622, + 685, 826, 682, 622, 622, 622, 622, 622, 622, 881, + 1300, 631, 636, 1278, 826, 642, 661, 661, 661, 661, + 661, 661, 661, 631, 636, 622, 881, 642, 645, 645, + 645, 645, 645, 645, 645, 645, 1300, 881, 679, 645, + 826, 645, 678, 670, 667, 645, 645, 645, 645, 645, + 645, 663, 663, 663, 663, 663, 663, 663, 669, 669, + 669, 669, 669, 669, 669, 1168, 1280, 645, 648, 648, - 658, 651, 648, 640, 647, 640, 646, 645, 642, 640, - 640, 640, 640, 640, 640, 663, 663, 663, 663, 663, - 663, 663, 665, 665, 665, 665, 665, 665, 665, 822, - 639, 640, 643, 643, 643, 643, 643, 643, 643, 643, - 636, 635, 822, 643, 617, 643, 616, 608, 605, 643, - 643, 643, 643, 643, 643, 667, 667, 667, 667, 667, - 667, 667, 673, 673, 673, 673, 673, 673, 822, 597, - 586, 643, 649, 649, 649, 649, 649, 649, 649, 649, - 576, 575, 567, 649, 563, 649, 562, 561, 559, 649, - 649, 649, 649, 649, 649, 676, 676, 676, 676, 676, + 648, 648, 648, 648, 648, 648, 666, 659, 656, 648, + 655, 648, 1168, 1280, 654, 648, 648, 648, 648, 648, + 648, 671, 671, 671, 671, 671, 671, 671, 673, 673, + 673, 673, 673, 673, 673, 830, 1168, 648, 651, 651, + 651, 651, 651, 651, 651, 651, 653, 650, 830, 651, + 1308, 651, 647, 644, 643, 651, 651, 651, 651, 651, + 651, 675, 675, 675, 675, 675, 675, 675, 681, 681, + 681, 681, 681, 681, 830, 1307, 1308, 651, 657, 657, + 657, 657, 657, 657, 657, 657, 625, 624, 616, 657, + 1317, 657, 1307, 613, 605, 657, 657, 657, 657, 657, - 676, 676, 678, 678, 678, 678, 678, 678, 678, 787, - 1157, 649, 654, 654, 654, 654, 654, 654, 654, 654, - 558, 555, 554, 654, 553, 552, 787, 1157, 551, 654, - 654, 654, 654, 654, 654, 656, 656, 656, 656, 656, - 656, 656, 656, 787, 1157, 550, 656, 549, 656, 548, - 547, 546, 656, 656, 656, 656, 656, 656, 680, 680, - 680, 680, 680, 680, 680, 682, 682, 682, 682, 682, - 682, 682, 878, 545, 656, 666, 666, 666, 666, 666, - 666, 666, 666, 544, 538, 532, 666, 531, 523, 878, - 520, 519, 666, 666, 666, 666, 666, 666, 668, 668, + 657, 684, 684, 684, 684, 684, 684, 684, 686, 686, + 686, 686, 686, 686, 686, 1165, 1317, 657, 662, 662, + 662, 662, 662, 662, 662, 662, 594, 584, 583, 662, + 575, 571, 1165, 570, 569, 662, 662, 662, 662, 662, + 662, 664, 664, 664, 664, 664, 664, 664, 664, 1165, + 567, 566, 664, 563, 664, 562, 561, 560, 664, 664, + 664, 664, 664, 664, 688, 688, 688, 688, 688, 688, + 688, 690, 690, 690, 690, 690, 690, 690, 1232, 559, + 664, 674, 674, 674, 674, 674, 674, 674, 674, 558, + 557, 556, 674, 555, 554, 1232, 553, 552, 674, 674, - 668, 668, 668, 668, 668, 668, 512, 509, 878, 668, - 508, 668, 507, 506, 503, 668, 668, 668, 668, 668, - 668, 688, 688, 688, 688, 688, 688, 690, 690, 690, - 690, 690, 690, 1224, 833, 1271, 500, 668, 681, 681, - 681, 681, 681, 681, 681, 681, 499, 833, 497, 681, - 1224, 493, 1271, 490, 489, 681, 681, 681, 681, 681, - 681, 683, 683, 683, 683, 683, 683, 683, 683, 1224, - 488, 1271, 683, 833, 683, 487, 483, 482, 683, 683, - 683, 683, 683, 683, 694, 694, 694, 694, 694, 694, - 697, 697, 697, 697, 697, 697, 697, 837, 780, 781, + 674, 674, 674, 674, 676, 676, 676, 676, 676, 676, + 676, 676, 546, 540, 1232, 676, 539, 676, 531, 528, + 527, 676, 676, 676, 676, 676, 676, 696, 696, 696, + 696, 696, 696, 698, 698, 698, 698, 698, 698, 1279, + 841, 520, 517, 676, 689, 689, 689, 689, 689, 689, + 689, 689, 516, 841, 515, 689, 1279, 514, 511, 508, + 507, 689, 689, 689, 689, 689, 689, 691, 691, 691, + 691, 691, 691, 691, 691, 1279, 505, 501, 691, 841, + 691, 498, 497, 496, 691, 691, 691, 691, 691, 691, + 702, 702, 702, 702, 702, 702, 705, 705, 705, 705, - 683, 695, 695, 695, 695, 695, 695, 695, 695, 480, - 837, 479, 695, 478, 477, 780, 781, 476, 695, 695, - 695, 695, 695, 695, 696, 696, 696, 696, 696, 696, - 780, 781, 781, 475, 696, 474, 837, 473, 472, 849, - 696, 696, 696, 696, 696, 696, 713, 713, 713, 713, - 713, 713, 849, 471, 470, 469, 713, 466, 465, 464, - 463, 455, 713, 713, 713, 713, 713, 713, 714, 714, - 714, 714, 714, 714, 714, 714, 447, 437, 849, 714, - 1077, 436, 435, 433, 431, 714, 714, 714, 714, 714, - 714, 715, 715, 715, 715, 715, 715, 1077, 430, 427, + 705, 705, 705, 845, 788, 789, 691, 703, 703, 703, + 703, 703, 703, 703, 703, 495, 845, 491, 703, 490, + 488, 788, 789, 487, 703, 703, 703, 703, 703, 703, + 704, 704, 704, 704, 704, 704, 788, 789, 789, 486, + 704, 485, 845, 484, 483, 857, 704, 704, 704, 704, + 704, 704, 721, 721, 721, 721, 721, 721, 857, 482, + 481, 480, 721, 479, 478, 477, 474, 473, 721, 721, + 721, 721, 721, 721, 722, 722, 722, 722, 722, 722, + 722, 722, 472, 471, 857, 722, 1085, 463, 455, 445, + 444, 722, 722, 722, 722, 722, 722, 723, 723, 723, - 426, 715, 425, 424, 423, 422, 1077, 715, 715, 715, - 715, 715, 715, 716, 716, 716, 716, 716, 716, 716, - 717, 717, 717, 717, 717, 717, 717, 717, 421, 420, - 419, 717, 1225, 418, 416, 413, 412, 717, 717, 717, - 717, 717, 717, 718, 718, 718, 718, 718, 718, 1225, - 411, 410, 409, 718, 408, 407, 405, 404, 1225, 718, - 718, 718, 718, 718, 718, 719, 719, 719, 719, 719, - 719, 719, 720, 720, 720, 720, 720, 720, 720, 720, - 403, 402, 400, 720, 398, 397, 396, 395, 394, 720, - 720, 720, 720, 720, 720, 721, 721, 721, 721, 721, + 723, 723, 723, 1085, 443, 441, 439, 723, 438, 435, + 434, 433, 1085, 723, 723, 723, 723, 723, 723, 724, + 724, 724, 724, 724, 724, 724, 725, 725, 725, 725, + 725, 725, 725, 725, 432, 431, 430, 725, 1233, 429, + 428, 427, 426, 725, 725, 725, 725, 725, 725, 726, + 726, 726, 726, 726, 726, 1233, 424, 421, 420, 726, + 419, 418, 417, 416, 1233, 726, 726, 726, 726, 726, + 726, 727, 727, 727, 727, 727, 727, 727, 728, 728, + 728, 728, 728, 728, 728, 728, 415, 413, 412, 728, + 411, 410, 408, 406, 405, 728, 728, 728, 728, 728, - 721, 393, 391, 390, 383, 721, 379, 378, 377, 370, - 369, 721, 721, 721, 721, 721, 721, 722, 722, 722, - 722, 722, 722, 722, 725, 725, 725, 725, 725, 725, - 725, 366, 365, 364, 725, 363, 360, 359, 356, 355, - 725, 725, 725, 725, 725, 725, 726, 726, 726, 726, - 726, 726, 727, 727, 727, 727, 727, 727, 727, 727, - 354, 353, 352, 727, 351, 350, 349, 348, 347, 727, - 727, 727, 727, 727, 727, 728, 728, 728, 728, 728, - 728, 728, 346, 344, 342, 728, 341, 339, 338, 335, - 334, 728, 728, 728, 728, 728, 728, 729, 729, 729, + 728, 729, 729, 729, 729, 729, 729, 404, 403, 402, + 401, 729, 399, 398, 391, 387, 386, 729, 729, 729, + 729, 729, 729, 730, 730, 730, 730, 730, 730, 730, + 733, 733, 733, 733, 733, 733, 733, 385, 378, 377, + 733, 374, 373, 372, 371, 368, 733, 733, 733, 733, + 733, 733, 734, 734, 734, 734, 734, 734, 735, 735, + 735, 735, 735, 735, 735, 735, 367, 364, 363, 735, + 362, 361, 360, 359, 358, 735, 735, 735, 735, 735, + 735, 736, 736, 736, 736, 736, 736, 736, 357, 356, + 355, 736, 354, 352, 350, 349, 347, 736, 736, 736, - 729, 729, 729, 729, 731, 731, 731, 731, 731, 731, - 735, 735, 735, 735, 735, 735, 736, 736, 736, 736, - 736, 736, 736, 736, 332, 330, 329, 736, 328, 325, - 324, 322, 321, 736, 736, 736, 736, 736, 736, 737, - 737, 737, 737, 737, 737, 737, 320, 318, 317, 737, - 316, 309, 302, 301, 299, 737, 737, 737, 737, 737, - 737, 738, 738, 738, 738, 738, 738, 738, 740, 740, - 740, 740, 740, 740, 742, 742, 742, 742, 742, 742, - 746, 746, 746, 746, 746, 746, 747, 747, 747, 747, - 747, 747, 747, 747, 298, 297, 292, 747, 290, 285, + 736, 736, 736, 737, 737, 737, 737, 737, 737, 737, + 739, 739, 739, 739, 739, 739, 743, 743, 743, 743, + 743, 743, 744, 744, 744, 744, 744, 744, 744, 744, + 346, 343, 342, 744, 340, 338, 337, 336, 333, 744, + 744, 744, 744, 744, 744, 745, 745, 745, 745, 745, + 745, 745, 332, 330, 329, 745, 328, 326, 325, 324, + 317, 745, 745, 745, 745, 745, 745, 746, 746, 746, + 746, 746, 746, 746, 748, 748, 748, 748, 748, 748, + 750, 750, 750, 750, 750, 750, 754, 754, 754, 754, + 754, 754, 755, 755, 755, 755, 755, 755, 755, 755, - 283, 281, 280, 747, 747, 747, 747, 747, 747, 748, - 748, 748, 748, 748, 748, 748, 279, 278, 277, 748, - 276, 275, 273, 272, 271, 748, 748, 748, 748, 748, - 748, 749, 749, 749, 749, 749, 749, 749, 752, 752, - 752, 752, 752, 752, 754, 754, 754, 754, 754, 754, - 758, 758, 758, 758, 758, 758, 759, 759, 759, 759, - 759, 759, 759, 759, 267, 264, 263, 759, 262, 259, - 256, 255, 254, 759, 759, 759, 759, 759, 759, 760, - 760, 760, 760, 760, 760, 760, 252, 251, 249, 760, - 246, 245, 244, 237, 236, 760, 760, 760, 760, 760, + 310, 309, 307, 755, 306, 305, 300, 298, 293, 755, + 755, 755, 755, 755, 755, 756, 756, 756, 756, 756, + 756, 756, 291, 289, 288, 756, 287, 286, 285, 284, + 283, 756, 756, 756, 756, 756, 756, 757, 757, 757, + 757, 757, 757, 757, 760, 760, 760, 760, 760, 760, + 762, 762, 762, 762, 762, 762, 766, 766, 766, 766, + 766, 766, 767, 767, 767, 767, 767, 767, 767, 767, + 281, 280, 279, 767, 274, 271, 270, 269, 266, 767, + 767, 767, 767, 767, 767, 768, 768, 768, 768, 768, + 768, 768, 263, 262, 260, 768, 258, 257, 255, 252, - 760, 761, 761, 761, 761, 761, 761, 761, 765, 765, - 765, 765, 765, 765, 768, 768, 768, 768, 768, 768, - 768, 770, 770, 770, 770, 770, 770, 770, 772, 772, - 772, 772, 772, 772, 772, 773, 773, 773, 773, 773, - 773, 773, 773, 233, 232, 231, 773, 230, 226, 225, - 223, 219, 773, 773, 773, 773, 773, 773, 774, 774, - 774, 774, 774, 774, 774, 775, 775, 775, 775, 775, - 775, 775, 775, 217, 213, 211, 775, 209, 775, 208, - 206, 205, 775, 775, 775, 775, 775, 775, 811, 811, - 811, 811, 811, 811, 811, 813, 813, 813, 813, 813, + 251, 768, 768, 768, 768, 768, 768, 769, 769, 769, + 769, 769, 769, 769, 773, 773, 773, 773, 773, 773, + 776, 776, 776, 776, 776, 776, 776, 778, 778, 778, + 778, 778, 778, 778, 780, 780, 780, 780, 780, 780, + 780, 781, 781, 781, 781, 781, 781, 781, 781, 250, + 243, 242, 781, 239, 238, 237, 236, 232, 781, 781, + 781, 781, 781, 781, 782, 782, 782, 782, 782, 782, + 782, 783, 783, 783, 783, 783, 783, 783, 783, 231, + 229, 225, 783, 223, 783, 219, 217, 215, 783, 783, + 783, 783, 783, 783, 819, 819, 819, 819, 819, 819, - 813, 813, 204, 203, 775, 792, 792, 792, 792, 792, - 792, 792, 792, 202, 201, 200, 792, 198, 792, 196, - 194, 193, 792, 792, 792, 792, 792, 792, 819, 819, - 819, 819, 819, 819, 819, 821, 821, 821, 821, 821, - 821, 821, 192, 190, 792, 795, 795, 795, 795, 795, - 795, 795, 795, 189, 186, 185, 795, 184, 795, 182, - 180, 179, 795, 795, 795, 795, 795, 795, 823, 823, - 823, 823, 823, 823, 823, 825, 825, 825, 825, 825, - 825, 825, 853, 176, 795, 798, 798, 798, 798, 798, - 798, 798, 798, 175, 173, 853, 798, 172, 798, 171, + 819, 821, 821, 821, 821, 821, 821, 821, 214, 212, + 783, 800, 800, 800, 800, 800, 800, 800, 800, 211, + 210, 209, 800, 208, 800, 207, 206, 204, 800, 800, + 800, 800, 800, 800, 827, 827, 827, 827, 827, 827, + 827, 829, 829, 829, 829, 829, 829, 829, 202, 200, + 800, 803, 803, 803, 803, 803, 803, 803, 803, 199, + 197, 195, 803, 194, 803, 192, 189, 188, 803, 803, + 803, 803, 803, 803, 831, 831, 831, 831, 831, 831, + 831, 833, 833, 833, 833, 833, 833, 833, 861, 187, + 803, 806, 806, 806, 806, 806, 806, 806, 806, 185, - 170, 169, 798, 798, 798, 798, 798, 798, 831, 831, - 831, 831, 831, 831, 834, 834, 834, 834, 834, 834, - 834, 853, 168, 167, 798, 801, 801, 801, 801, 801, - 801, 801, 801, 165, 163, 162, 801, 158, 801, 157, - 156, 155, 801, 801, 801, 801, 801, 801, 836, 836, - 836, 836, 836, 836, 836, 838, 838, 838, 838, 838, - 838, 838, 154, 957, 801, 806, 806, 806, 806, 806, - 806, 806, 152, 149, 148, 806, 957, 147, 144, 142, - 135, 806, 806, 806, 806, 806, 806, 807, 807, 807, - 807, 807, 807, 807, 807, 134, 133, 132, 807, 131, + 183, 861, 806, 182, 806, 179, 178, 176, 806, 806, + 806, 806, 806, 806, 839, 839, 839, 839, 839, 839, + 842, 842, 842, 842, 842, 842, 842, 861, 175, 174, + 806, 809, 809, 809, 809, 809, 809, 809, 809, 173, + 172, 171, 809, 170, 809, 169, 167, 165, 809, 809, + 809, 809, 809, 809, 844, 844, 844, 844, 844, 844, + 844, 846, 846, 846, 846, 846, 846, 846, 164, 965, + 809, 814, 814, 814, 814, 814, 814, 814, 160, 159, + 158, 814, 965, 157, 156, 154, 151, 814, 814, 814, + 814, 814, 814, 815, 815, 815, 815, 815, 815, 815, - 807, 130, 957, 128, 807, 807, 807, 807, 807, 807, - 840, 840, 840, 840, 840, 840, 840, 847, 847, 847, - 847, 847, 847, 961, 127, 126, 807, 812, 812, 812, - 812, 812, 812, 812, 812, 124, 961, 122, 812, 120, - 119, 118, 117, 115, 812, 812, 812, 812, 812, 812, - 814, 814, 814, 814, 814, 814, 814, 814, 114, 113, - 112, 814, 961, 814, 111, 110, 108, 814, 814, 814, - 814, 814, 814, 850, 850, 850, 850, 850, 850, 850, - 852, 852, 852, 852, 852, 852, 852, 106, 105, 814, - 824, 824, 824, 824, 824, 824, 824, 824, 104, 103, + 815, 150, 149, 146, 815, 144, 815, 137, 965, 136, + 815, 815, 815, 815, 815, 815, 848, 848, 848, 848, + 848, 848, 848, 855, 855, 855, 855, 855, 855, 969, + 135, 134, 815, 820, 820, 820, 820, 820, 820, 820, + 820, 133, 969, 132, 820, 130, 129, 128, 126, 124, + 820, 820, 820, 820, 820, 820, 822, 822, 822, 822, + 822, 822, 822, 822, 122, 121, 120, 822, 969, 822, + 119, 117, 116, 822, 822, 822, 822, 822, 822, 858, + 858, 858, 858, 858, 858, 858, 860, 860, 860, 860, + 860, 860, 860, 115, 114, 822, 832, 832, 832, 832, - 102, 824, 101, 100, 99, 98, 97, 824, 824, 824, - 824, 824, 824, 826, 826, 826, 826, 826, 826, 826, - 826, 96, 89, 88, 826, 87, 826, 85, 84, 83, - 826, 826, 826, 826, 826, 826, 854, 854, 854, 854, - 854, 854, 854, 856, 856, 856, 856, 856, 856, 856, - 82, 81, 826, 839, 839, 839, 839, 839, 839, 839, - 839, 79, 77, 76, 839, 74, 73, 72, 71, 70, - 839, 839, 839, 839, 839, 839, 841, 841, 841, 841, - 841, 841, 841, 841, 68, 67, 66, 841, 51, 841, - 43, 42, 40, 841, 841, 841, 841, 841, 841, 862, + 832, 832, 832, 832, 113, 112, 110, 832, 108, 107, + 106, 105, 104, 832, 832, 832, 832, 832, 832, 834, + 834, 834, 834, 834, 834, 834, 834, 103, 102, 101, + 834, 100, 834, 98, 97, 90, 834, 834, 834, 834, + 834, 834, 862, 862, 862, 862, 862, 862, 862, 864, + 864, 864, 864, 864, 864, 864, 89, 88, 834, 847, + 847, 847, 847, 847, 847, 847, 847, 86, 85, 84, + 847, 83, 82, 81, 79, 77, 847, 847, 847, 847, + 847, 847, 849, 849, 849, 849, 849, 849, 849, 849, + 76, 74, 73, 849, 72, 849, 71, 70, 68, 849, - 862, 862, 862, 862, 862, 864, 864, 864, 864, 864, - 864, 30, 1003, 28, 18, 841, 855, 855, 855, 855, - 855, 855, 855, 855, 10, 1003, 8, 855, 3, 0, - 0, 0, 0, 855, 855, 855, 855, 855, 855, 857, - 857, 857, 857, 857, 857, 857, 857, 0, 0, 0, - 857, 1003, 857, 0, 0, 0, 857, 857, 857, 857, - 857, 857, 868, 868, 868, 868, 868, 868, 871, 871, - 871, 871, 871, 871, 871, 1009, 0, 0, 857, 869, - 869, 869, 869, 869, 869, 869, 869, 0, 1009, 0, - 869, 0, 0, 0, 0, 0, 869, 869, 869, 869, + 849, 849, 849, 849, 849, 870, 870, 870, 870, 870, + 870, 872, 872, 872, 872, 872, 872, 67, 1011, 66, + 51, 849, 863, 863, 863, 863, 863, 863, 863, 863, + 43, 1011, 42, 863, 40, 30, 18, 10, 8, 863, + 863, 863, 863, 863, 863, 865, 865, 865, 865, 865, + 865, 865, 865, 3, 0, 0, 865, 1011, 865, 0, + 0, 0, 865, 865, 865, 865, 865, 865, 876, 876, + 876, 876, 876, 876, 879, 879, 879, 879, 879, 879, + 879, 1017, 1021, 0, 865, 877, 877, 877, 877, 877, + 877, 877, 877, 0, 1017, 1021, 877, 0, 0, 885, - 869, 869, 870, 870, 870, 870, 870, 870, 873, 874, - 875, 877, 870, 880, 1009, 975, 0, 0, 870, 870, - 870, 870, 870, 870, 978, 873, 874, 875, 877, 0, - 880, 0, 975, 0, 0, 0, 873, 874, 875, 0, - 1013, 978, 877, 975, 880, 886, 886, 886, 886, 886, - 886, 0, 0, 1013, 0, 886, 978, 0, 0, 0, - 0, 886, 886, 886, 886, 886, 886, 887, 887, 887, - 887, 887, 887, 887, 887, 0, 0, 0, 887, 1013, - 0, 0, 0, 0, 887, 887, 887, 887, 887, 887, - 888, 888, 888, 888, 888, 888, 0, 0, 0, 0, + 0, 0, 877, 877, 877, 877, 877, 877, 878, 878, + 878, 878, 878, 878, 882, 883, 885, 888, 878, 0, + 1017, 1021, 0, 0, 878, 878, 878, 878, 878, 878, + 885, 882, 883, 0, 888, 897, 897, 897, 897, 897, + 897, 897, 882, 883, 1030, 1034, 0, 986, 888, 894, + 894, 894, 894, 894, 894, 0, 0, 1030, 1034, 894, + 0, 0, 0, 0, 986, 894, 894, 894, 894, 894, + 894, 895, 895, 895, 895, 895, 895, 895, 895, 986, + 0, 0, 895, 1030, 1034, 0, 0, 1044, 895, 895, + 895, 895, 895, 895, 896, 896, 896, 896, 896, 896, - 888, 0, 0, 0, 0, 0, 888, 888, 888, 888, - 888, 888, 889, 889, 889, 889, 889, 889, 889, 890, - 890, 890, 890, 890, 890, 890, 890, 0, 0, 0, - 890, 0, 0, 0, 0, 0, 890, 890, 890, 890, - 890, 890, 891, 891, 891, 891, 891, 891, 0, 0, - 0, 0, 891, 0, 0, 0, 0, 0, 891, 891, - 891, 891, 891, 891, 892, 892, 892, 892, 892, 892, - 892, 893, 893, 893, 893, 893, 893, 893, 893, 0, - 0, 0, 893, 0, 0, 0, 0, 0, 893, 893, - 893, 893, 893, 893, 894, 894, 894, 894, 894, 894, + 1044, 0, 0, 0, 896, 0, 0, 0, 0, 0, + 896, 896, 896, 896, 896, 896, 898, 898, 898, 898, + 898, 898, 898, 898, 0, 0, 1044, 898, 0, 0, + 0, 0, 0, 898, 898, 898, 898, 898, 898, 899, + 899, 899, 899, 899, 899, 0, 0, 0, 0, 899, + 0, 0, 0, 0, 0, 899, 899, 899, 899, 899, + 899, 900, 900, 900, 900, 900, 900, 900, 901, 901, + 901, 901, 901, 901, 901, 901, 0, 0, 0, 901, + 0, 0, 0, 0, 0, 901, 901, 901, 901, 901, + 901, 902, 902, 902, 902, 902, 902, 0, 0, 0, - 0, 0, 0, 0, 894, 0, 0, 0, 0, 0, - 894, 894, 894, 894, 894, 894, 895, 895, 895, 895, - 895, 895, 895, 896, 896, 896, 896, 896, 896, 896, - 896, 0, 0, 0, 896, 0, 0, 0, 0, 0, - 896, 896, 896, 896, 896, 896, 897, 897, 897, 897, - 897, 897, 0, 0, 0, 0, 897, 0, 0, 0, - 0, 0, 897, 897, 897, 897, 897, 897, 898, 898, - 898, 898, 898, 898, 898, 900, 900, 900, 900, 900, - 900, 900, 900, 0, 0, 0, 900, 0, 900, 0, - 0, 0, 900, 900, 900, 900, 900, 900, 904, 904, + 0, 902, 0, 0, 0, 0, 0, 902, 902, 902, + 902, 902, 902, 903, 903, 903, 903, 903, 903, 903, + 904, 904, 904, 904, 904, 904, 904, 904, 0, 0, + 0, 904, 0, 0, 0, 0, 0, 904, 904, 904, + 904, 904, 904, 905, 905, 905, 905, 905, 905, 0, + 0, 0, 0, 905, 0, 0, 0, 0, 0, 905, + 905, 905, 905, 905, 905, 906, 906, 906, 906, 906, + 906, 906, 908, 908, 908, 908, 908, 908, 908, 908, + 0, 0, 0, 908, 0, 908, 0, 0, 0, 908, + 908, 908, 908, 908, 908, 912, 912, 912, 912, 912, - 904, 904, 904, 904, 907, 907, 907, 907, 907, 907, - 907, 0, 0, 0, 900, 905, 905, 905, 905, 905, - 905, 905, 905, 0, 0, 0, 905, 0, 0, 0, - 0, 0, 905, 905, 905, 905, 905, 905, 909, 909, - 909, 909, 909, 909, 913, 913, 913, 913, 913, 913, - 914, 914, 914, 914, 914, 914, 914, 914, 0, 0, - 0, 914, 0, 0, 0, 0, 0, 914, 914, 914, - 914, 914, 914, 916, 916, 916, 916, 916, 916, 916, - 918, 918, 918, 918, 918, 918, 920, 920, 920, 920, - 920, 920, 924, 924, 924, 924, 924, 924, 925, 925, + 912, 915, 915, 915, 915, 915, 915, 915, 0, 0, + 0, 908, 913, 913, 913, 913, 913, 913, 913, 913, + 0, 0, 0, 913, 0, 0, 0, 0, 0, 913, + 913, 913, 913, 913, 913, 917, 917, 917, 917, 917, + 917, 921, 921, 921, 921, 921, 921, 922, 922, 922, + 922, 922, 922, 922, 922, 0, 0, 0, 922, 0, + 0, 0, 0, 0, 922, 922, 922, 922, 922, 922, + 924, 924, 924, 924, 924, 924, 924, 926, 926, 926, + 926, 926, 926, 928, 928, 928, 928, 928, 928, 932, + 932, 932, 932, 932, 932, 933, 933, 933, 933, 933, - 925, 925, 925, 925, 925, 925, 0, 0, 0, 925, - 0, 0, 0, 0, 0, 925, 925, 925, 925, 925, - 925, 927, 927, 927, 927, 927, 927, 927, 930, 930, - 930, 930, 930, 930, 932, 932, 932, 932, 932, 932, - 936, 936, 936, 936, 936, 936, 937, 937, 937, 937, - 937, 937, 937, 937, 0, 0, 0, 937, 0, 0, - 0, 0, 0, 937, 937, 937, 937, 937, 937, 939, - 939, 939, 939, 939, 939, 939, 942, 942, 942, 942, - 942, 942, 944, 944, 944, 944, 944, 944, 948, 948, - 948, 948, 948, 948, 949, 949, 949, 949, 949, 949, + 933, 933, 933, 0, 0, 0, 933, 0, 0, 0, + 0, 0, 933, 933, 933, 933, 933, 933, 935, 935, + 935, 935, 935, 935, 935, 938, 938, 938, 938, 938, + 938, 940, 940, 940, 940, 940, 940, 944, 944, 944, + 944, 944, 944, 945, 945, 945, 945, 945, 945, 945, + 945, 0, 0, 0, 945, 0, 0, 0, 0, 0, + 945, 945, 945, 945, 945, 945, 947, 947, 947, 947, + 947, 947, 947, 950, 950, 950, 950, 950, 950, 952, + 952, 952, 952, 952, 952, 956, 956, 956, 956, 956, + 956, 957, 957, 957, 957, 957, 957, 957, 957, 0, - 949, 949, 0, 0, 0, 949, 0, 0, 0, 0, - 0, 949, 949, 949, 949, 949, 949, 951, 951, 951, - 951, 951, 951, 951, 955, 955, 955, 955, 955, 955, - 958, 958, 958, 958, 958, 958, 958, 960, 960, 960, - 960, 960, 960, 960, 962, 962, 962, 962, 962, 962, - 962, 963, 963, 963, 963, 963, 963, 963, 963, 0, - 0, 0, 963, 0, 0, 0, 0, 0, 963, 963, - 963, 963, 963, 963, 964, 964, 964, 964, 964, 964, - 964, 965, 965, 965, 965, 965, 965, 965, 965, 0, - 0, 0, 965, 0, 965, 0, 0, 0, 965, 965, + 0, 0, 957, 0, 0, 0, 0, 0, 957, 957, + 957, 957, 957, 957, 959, 959, 959, 959, 959, 959, + 959, 963, 963, 963, 963, 963, 963, 966, 966, 966, + 966, 966, 966, 966, 968, 968, 968, 968, 968, 968, + 968, 970, 970, 970, 970, 970, 970, 970, 971, 971, + 971, 971, 971, 971, 971, 971, 0, 0, 0, 971, + 0, 0, 0, 0, 0, 971, 971, 971, 971, 971, + 971, 972, 972, 972, 972, 972, 972, 972, 973, 973, + 973, 973, 973, 973, 973, 973, 983, 0, 1048, 973, + 0, 973, 0, 0, 0, 973, 973, 973, 973, 973, - 965, 965, 965, 965, 997, 997, 997, 997, 997, 997, - 1000, 1000, 1000, 1000, 1000, 1000, 1000, 0, 0, 1022, - 965, 980, 980, 980, 980, 980, 980, 980, 0, 0, - 0, 980, 1022, 0, 0, 0, 0, 980, 980, 980, - 980, 980, 980, 981, 981, 981, 981, 981, 981, 981, - 981, 0, 0, 0, 981, 0, 981, 0, 1022, 0, - 981, 981, 981, 981, 981, 981, 1004, 1004, 1004, 1004, - 1004, 1004, 1004, 1006, 1006, 1006, 1006, 1006, 1006, 1006, - 0, 0, 981, 984, 984, 984, 984, 984, 984, 984, - 984, 0, 0, 0, 984, 0, 984, 0, 0, 0, + 973, 1048, 0, 983, 1005, 1005, 1005, 1005, 1005, 1005, + 0, 0, 0, 1058, 983, 0, 1062, 973, 988, 988, + 988, 988, 988, 988, 988, 0, 1058, 1048, 988, 1062, + 0, 0, 0, 0, 988, 988, 988, 988, 988, 988, + 989, 989, 989, 989, 989, 989, 989, 989, 0, 0, + 0, 989, 1058, 989, 0, 1062, 0, 989, 989, 989, + 989, 989, 989, 1008, 1008, 1008, 1008, 1008, 1008, 1008, + 1012, 1012, 1012, 1012, 1012, 1012, 1012, 0, 0, 989, + 992, 992, 992, 992, 992, 992, 992, 992, 0, 0, + 0, 992, 0, 992, 0, 0, 0, 992, 992, 992, - 984, 984, 984, 984, 984, 984, 1010, 1010, 1010, 1010, - 1010, 1010, 1010, 1012, 1012, 1012, 1012, 1012, 1012, 1012, - 0, 0, 984, 987, 987, 987, 987, 987, 987, 987, - 987, 0, 0, 0, 987, 0, 987, 0, 0, 0, - 987, 987, 987, 987, 987, 987, 1014, 1014, 1014, 1014, - 1014, 1014, 1014, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1026, 0, 987, 990, 990, 990, 990, 990, 990, 990, - 990, 0, 0, 1026, 990, 0, 990, 0, 0, 0, - 990, 990, 990, 990, 990, 990, 1020, 1020, 1020, 1020, - 1020, 1020, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1026, + 992, 992, 992, 1014, 1014, 1014, 1014, 1014, 1014, 1014, + 1018, 1018, 1018, 1018, 1018, 1018, 1018, 0, 0, 992, + 995, 995, 995, 995, 995, 995, 995, 995, 0, 0, + 0, 995, 0, 995, 0, 0, 0, 995, 995, 995, + 995, 995, 995, 1020, 1020, 1020, 1020, 1020, 1020, 1020, + 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1107, 0, 995, + 998, 998, 998, 998, 998, 998, 998, 998, 0, 0, + 1107, 998, 0, 998, 0, 0, 0, 998, 998, 998, + 998, 998, 998, 1024, 1024, 1024, 1024, 1024, 1024, 1024, + 1028, 1028, 1028, 1028, 1028, 1028, 1107, 0, 0, 998, - 0, 0, 990, 993, 993, 993, 993, 993, 993, 993, - 993, 0, 0, 0, 993, 0, 993, 0, 0, 0, - 993, 993, 993, 993, 993, 993, 1025, 1025, 1025, 1025, - 1025, 1025, 1025, 1027, 1027, 1027, 1027, 1027, 1027, 1027, - 1036, 0, 993, 998, 998, 998, 998, 998, 998, 998, - 998, 0, 0, 1036, 998, 0, 0, 0, 0, 0, - 998, 998, 998, 998, 998, 998, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 0, 0, 0, 1005, 0, 1036, - 0, 0, 0, 1005, 1005, 1005, 1005, 1005, 1005, 1015, - 1015, 1015, 1015, 1015, 1015, 1015, 1015, 0, 0, 0, + 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 0, 0, + 0, 1001, 0, 1001, 0, 0, 0, 1001, 1001, 1001, + 1001, 1001, 1001, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1155, 0, 1001, + 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 0, 0, + 1155, 1006, 0, 0, 0, 0, 0, 1006, 1006, 1006, + 1006, 1006, 1006, 1013, 1013, 1013, 1013, 1013, 1013, 1013, + 1013, 0, 0, 0, 1013, 0, 1155, 0, 0, 0, + 1013, 1013, 1013, 1013, 1013, 1013, 1023, 1023, 1023, 1023, + 1023, 1023, 1023, 1023, 0, 0, 0, 1023, 0, 0, - 1015, 0, 0, 0, 0, 0, 1015, 1015, 1015, 1015, - 1015, 1015, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, - 0, 0, 0, 1028, 0, 0, 0, 0, 0, 1028, - 1028, 1028, 1028, 1028, 1028, 1029, 1029, 1029, 1029, 1029, - 1029, 1029, 1034, 1034, 1034, 1034, 1034, 1034, 1037, 1037, - 1037, 1037, 1037, 1037, 1037, 1039, 1039, 1039, 1039, 1039, - 1039, 1039, 1040, 1041, 1041, 1041, 1041, 1041, 1041, 1041, - 0, 0, 0, 0, 0, 1040, 1043, 1043, 1043, 1043, - 1043, 1043, 1043, 1048, 1048, 1048, 1048, 1048, 1048, 1051, - 1051, 1051, 1051, 1051, 1051, 1051, 0, 1050, 1054, 0, + 0, 0, 0, 1023, 1023, 1023, 1023, 1023, 1023, 1035, + 1035, 1035, 1035, 1035, 1035, 1035, 1036, 1036, 1036, 1036, + 1036, 1036, 1036, 1036, 0, 0, 0, 1036, 0, 0, + 0, 0, 0, 1036, 1036, 1036, 1036, 1036, 1036, 1037, + 1037, 1037, 1037, 1037, 1037, 1037, 1042, 1042, 1042, 1042, + 1042, 1042, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1047, + 1047, 1047, 1047, 1047, 1047, 1047, 1049, 1049, 1049, 1049, + 1049, 1049, 1049, 1050, 1050, 1050, 1050, 1050, 1050, 1050, + 1050, 0, 0, 0, 1050, 0, 0, 0, 0, 0, + 1050, 1050, 1050, 1050, 1050, 1050, 1051, 1051, 1051, 1051, - 0, 1040, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, - 1050, 1054, 0, 1042, 0, 0, 0, 0, 0, 1042, - 1042, 1042, 1042, 1042, 1042, 1053, 1053, 1053, 1053, 1053, - 1053, 1053, 0, 0, 0, 0, 1050, 1054, 1055, 1055, - 1055, 1055, 1055, 1055, 1055, 1056, 1056, 1056, 1056, 1056, - 1056, 1056, 1056, 0, 0, 0, 1056, 0, 0, 0, - 0, 0, 1056, 1056, 1056, 1056, 1056, 1056, 1057, 1057, - 1057, 1057, 1057, 1057, 1057, 1061, 1061, 1061, 1061, 1061, - 1061, 1063, 1063, 1063, 1063, 1063, 1063, 1067, 1067, 1067, - 1067, 1067, 1067, 1068, 1068, 1068, 1068, 1068, 1068, 1068, + 1051, 1051, 1051, 1056, 1056, 1056, 1056, 1056, 1056, 1059, + 1059, 1059, 1059, 1059, 1059, 1059, 1061, 1061, 1061, 1061, + 1061, 1061, 1061, 1063, 1063, 1063, 1063, 1063, 1063, 1063, + 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 0, 0, + 0, 1064, 0, 0, 0, 0, 0, 1064, 1064, 1064, + 1064, 1064, 1064, 1065, 1065, 1065, 1065, 1065, 1065, 1065, + 1069, 1069, 1069, 1069, 1069, 1069, 1071, 1071, 1071, 1071, + 1071, 1071, 1075, 1075, 1075, 1075, 1075, 1075, 1076, 1076, + 1076, 1076, 1076, 1076, 1076, 1076, 0, 0, 0, 1076, + 0, 1086, 1087, 0, 0, 1076, 1076, 1076, 1076, 1076, - 1068, 0, 0, 0, 1068, 0, 1078, 1079, 0, 0, - 1068, 1068, 1068, 1068, 1068, 1068, 1070, 1070, 1070, 1070, - 1070, 1070, 1070, 1078, 1079, 1086, 1086, 1086, 1086, 1086, - 1086, 1086, 0, 0, 0, 1079, 1078, 1080, 1080, 1080, - 1080, 1080, 1080, 1080, 1080, 0, 0, 0, 1080, 0, - 1080, 0, 0, 0, 1080, 1080, 1080, 1080, 1080, 1080, - 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1092, 1092, 1092, - 1092, 1092, 1092, 1092, 1099, 0, 1080, 1084, 1084, 1084, - 1084, 1084, 1084, 1084, 1084, 0, 0, 1099, 1084, 0, - 0, 0, 0, 0, 1084, 1084, 1084, 1084, 1084, 1084, + 1076, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1086, 1087, + 1094, 1094, 1094, 1094, 1094, 1094, 1094, 0, 0, 0, + 1087, 1086, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, + 0, 0, 0, 1088, 0, 1088, 0, 0, 0, 1088, + 1088, 1088, 1088, 1088, 1088, 1097, 1097, 1097, 1097, 1097, + 1097, 1097, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1159, + 0, 1088, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, + 0, 0, 1159, 1092, 0, 0, 0, 0, 0, 1092, + 1092, 1092, 1092, 1092, 1092, 1095, 1095, 1095, 1095, 1095, + 1095, 1095, 1095, 0, 0, 0, 1095, 0, 1159, 0, - 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 0, 0, - 0, 1087, 0, 1099, 0, 0, 0, 1087, 1087, 1087, - 1087, 1087, 1087, 1090, 1090, 1090, 1090, 1090, 1090, 1090, - 1090, 0, 0, 0, 1090, 0, 0, 0, 0, 0, - 1090, 1090, 1090, 1090, 1090, 1090, 1093, 1093, 1093, 1093, - 1093, 1093, 1093, 1093, 0, 0, 0, 1093, 0, 0, - 0, 0, 0, 1093, 1093, 1093, 1093, 1093, 1093, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1096, 1096, 1096, 1096, - 1096, 1096, 1096, 1096, 0, 0, 0, 1096, 0, 0, - 0, 0, 0, 1096, 1096, 1096, 1096, 1096, 1096, 1098, + 0, 0, 1095, 1095, 1095, 1095, 1095, 1095, 1098, 1098, + 1098, 1098, 1098, 1098, 1098, 1098, 0, 0, 0, 1098, + 0, 0, 0, 0, 0, 1098, 1098, 1098, 1098, 1098, + 1098, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 0, + 0, 0, 1101, 0, 0, 0, 0, 0, 1101, 1101, + 1101, 1101, 1101, 1101, 1103, 1103, 1103, 1103, 1103, 1103, + 1103, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 0, + 0, 0, 1104, 0, 0, 0, 0, 0, 1104, 1104, + 1104, 1104, 1104, 1104, 1106, 1106, 1106, 1106, 1106, 1106, + 1106, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1109, 1109, - 1098, 1098, 1098, 1098, 1098, 1098, 1100, 1100, 1100, 1100, - 1100, 1100, 1100, 1101, 1101, 1101, 1101, 1101, 1101, 1101, - 1101, 0, 0, 0, 1101, 0, 0, 0, 0, 0, - 1101, 1101, 1101, 1101, 1101, 1101, 1102, 1102, 1102, 1102, - 1102, 1102, 1102, 1107, 1107, 1107, 1107, 1107, 1107, 1112, - 1112, 1112, 1112, 1112, 1112, 1114, 1114, 1114, 1114, 1114, - 1114, 1120, 1120, 1120, 1120, 1120, 1120, 1122, 1122, 1122, - 1122, 1122, 1122, 1128, 1128, 1128, 1128, 1128, 1128, 1130, - 1130, 1130, 1130, 1130, 1130, 1136, 1136, 1136, 1136, 1136, - 1136, 1138, 1138, 1138, 1138, 1138, 1138, 1145, 1145, 1145, + 1109, 1109, 1109, 1109, 1109, 1109, 0, 0, 0, 1109, + 0, 0, 0, 0, 0, 1109, 1109, 1109, 1109, 1109, + 1109, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1115, 1115, + 1115, 1115, 1115, 1115, 1120, 1120, 1120, 1120, 1120, 1120, + 1122, 1122, 1122, 1122, 1122, 1122, 1128, 1128, 1128, 1128, + 1128, 1128, 1130, 1130, 1130, 1130, 1130, 1130, 1136, 1136, + 1136, 1136, 1136, 1136, 1138, 1138, 1138, 1138, 1138, 1138, + 1144, 1144, 1144, 1144, 1144, 1144, 1146, 1146, 1146, 1146, + 1146, 1146, 1153, 1153, 1153, 1153, 1153, 1153, 1156, 1156, + 1156, 1156, 1156, 1156, 1156, 1158, 1158, 1158, 1158, 1158, - 1145, 1145, 1145, 1147, 1148, 1148, 1148, 1148, 1148, 1148, - 1148, 1151, 0, 0, 0, 0, 1147, 1150, 1150, 1150, - 1150, 1150, 1150, 1150, 1151, 1152, 1152, 1152, 1152, 1152, - 1152, 1152, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 0, - 0, 0, 1147, 1163, 1163, 1163, 1163, 1163, 1163, 1163, - 1151, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 0, - 0, 0, 1153, 0, 0, 0, 0, 0, 1153, 1153, - 1153, 1153, 1153, 1153, 1161, 1161, 1161, 1161, 1161, 1161, - 1161, 1161, 0, 0, 0, 1161, 0, 0, 0, 0, - 1176, 1161, 1161, 1161, 1161, 1161, 1161, 1170, 1170, 1170, + 1158, 1158, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1161, + 1161, 1161, 1161, 1161, 1161, 1161, 1161, 0, 0, 0, + 1161, 0, 0, 0, 0, 0, 1161, 1161, 1161, 1161, + 1161, 1161, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1169, + 1169, 1169, 1169, 1169, 1169, 1169, 1169, 0, 0, 0, + 1169, 0, 0, 0, 0, 0, 1169, 1169, 1169, 1169, + 1169, 1169, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1178, + 1178, 1178, 1178, 1178, 1178, 1184, 1185, 1185, 1185, 1185, + 1185, 1185, 1185, 0, 0, 0, 0, 0, 1184, 1187, + 1187, 1187, 1187, 1187, 1187, 1187, 1190, 1190, 1190, 1190, - 1170, 1170, 1170, 1176, 1177, 1177, 1177, 1177, 1177, 1177, - 1177, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1182, 1182, - 1182, 1182, 1182, 1182, 1184, 0, 0, 0, 0, 1176, - 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1184, 1187, 1187, - 1187, 1187, 1187, 1187, 1187, 1191, 1191, 1191, 1191, 1191, - 1191, 1193, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 0, - 0, 0, 0, 1184, 1193, 1196, 1196, 1196, 1196, 1196, - 1196, 1196, 1200, 1200, 1200, 1200, 1200, 1200, 1202, 1203, - 1203, 1203, 1203, 1203, 1203, 1203, 0, 0, 0, 0, - 1193, 1202, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1209, + 1190, 1190, 1192, 1193, 1193, 1193, 1193, 1193, 1193, 1193, + 0, 0, 0, 0, 1184, 1192, 1195, 1195, 1195, 1195, + 1195, 1195, 1195, 1199, 1199, 1199, 1199, 1199, 1199, 1201, + 1202, 1202, 1202, 1202, 1202, 1202, 1202, 0, 0, 0, + 0, 1192, 1201, 1204, 1204, 1204, 1204, 1204, 1204, 1204, + 1208, 1208, 1208, 1208, 1208, 1208, 1210, 1211, 1211, 1211, + 1211, 1211, 1211, 1211, 0, 0, 0, 0, 1201, 1210, + 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1217, 1217, 1217, + 1217, 1217, 1217, 1219, 1220, 1220, 1220, 1220, 1220, 1220, + 1220, 0, 0, 0, 0, 1210, 1219, 1222, 1222, 1222, - 1209, 1209, 1209, 1209, 1209, 1211, 1212, 1212, 1212, 1212, - 1212, 1212, 1212, 0, 0, 0, 0, 1202, 1211, 1214, - 1214, 1214, 1214, 1214, 1214, 1214, 1217, 1217, 1217, 1217, - 1217, 1217, 1219, 1219, 1219, 1219, 1219, 1219, 1236, 0, - 0, 0, 0, 0, 1211, 1242, 1242, 1242, 1242, 1242, - 1242, 1236, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1239, - 1239, 1239, 1239, 1239, 1239, 1239, 1246, 1246, 1246, 1246, - 1246, 1246, 0, 0, 0, 0, 0, 1236, 1250, 1250, - 1250, 1250, 1250, 1250, 1254, 1254, 1254, 1254, 1254, 1254, - 1258, 1258, 1258, 1258, 1258, 1258, 1263, 1263, 1263, 1263, + 1222, 1222, 1222, 1222, 1225, 1225, 1225, 1225, 1225, 1225, + 1227, 1227, 1227, 1227, 1227, 1227, 1244, 0, 0, 0, + 0, 0, 1219, 1250, 1250, 1250, 1250, 1250, 1250, 1244, + 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1247, 1247, 1247, + 1247, 1247, 1247, 1247, 1254, 1254, 1254, 1254, 1254, 1254, + 0, 0, 0, 0, 0, 1244, 1258, 1258, 1258, 1258, + 1258, 1258, 1262, 1262, 1262, 1262, 1262, 1262, 1266, 1266, + 1266, 1266, 1266, 1266, 1271, 1271, 1271, 1271, 1271, 1271, + 1273, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 0, 0, + 0, 0, 0, 1273, 1276, 1276, 1276, 1276, 1276, 1276, - 1263, 1263, 1265, 1266, 1266, 1266, 1266, 1266, 1266, 1266, - 0, 0, 0, 0, 0, 1265, 1268, 1268, 1268, 1268, - 1268, 1268, 1268, 1274, 1274, 1274, 1274, 1274, 1274, 1277, - 1277, 1277, 1277, 1277, 1277, 1281, 1281, 1281, 1281, 1281, - 1281, 1265, 1285, 1285, 1285, 1285, 1285, 1285, 1289, 1289, - 1289, 1289, 1289, 1289, 1293, 1293, 1293, 1293, 1293, 1293, - 1296, 1296, 1296, 1296, 1296, 1296, 1301, 1301, 1301, 1301, - 1301, 1301, 1310, 1310, 1310, 1310, 1310, 1310, 1322, 0, - 0, 0, 0, 1322, 1322, 1322, 1323, 0, 1323, 1323, - 1323, 1323, 1323, 1323, 1323, 1324, 0, 1324, 1325, 1325, + 1276, 1282, 1282, 1282, 1282, 1282, 1282, 1285, 1285, 1285, + 1285, 1285, 1285, 1289, 1289, 1289, 1289, 1289, 1289, 1273, + 1293, 1293, 1293, 1293, 1293, 1293, 1297, 1297, 1297, 1297, + 1297, 1297, 1301, 1301, 1301, 1301, 1301, 1301, 1304, 1304, + 1304, 1304, 1304, 1304, 1309, 1309, 1309, 1309, 1309, 1309, + 1318, 1318, 1318, 1318, 1318, 1318, 1330, 0, 0, 0, + 0, 1330, 1330, 1330, 1331, 0, 1331, 1331, 1331, 1331, + 1331, 1331, 1331, 1332, 0, 1332, 1333, 1333, 1333, 1334, + 1334, 1334, 1335, 1335, 1335, 1336, 1336, 1336, 1337, 1337, + 1337, 1338, 1338, 1338, 1339, 1339, 1339, 1340, 1340, 1340, - 1325, 1326, 1326, 1326, 1327, 1327, 1327, 1328, 1328, 1328, - 1329, 1329, 1329, 1330, 1330, 1330, 1331, 1331, 1331, 1332, - 1332, 1332, 1333, 0, 1333, 1334, 1334, 1334, 1335, 1335, - 1335, 1336, 1336, 1336, 1337, 0, 1337, 1338, 1338, 1338, - 1339, 1339, 0, 0, 1339, 1340, 1340, 1340, 1341, 1341, - 1341, 1342, 1342, 1342, 1343, 1343, 1343, 1344, 1344, 1344, - 1345, 1345, 1345, 1346, 1346, 0, 0, 1346, 1347, 1347, - 1347, 1348, 0, 1348, 1349, 1349, 1349, 1350, 0, 1350, - 1351, 1351, 1351, 1352, 1352, 1352, 1353, 1353, 1353, 1354, - 0, 1354, 1355, 0, 1355, 1356, 1356, 1356, 1357, 0, + 1341, 0, 1341, 1342, 1342, 1342, 1343, 1343, 1343, 1344, + 1344, 1344, 1345, 0, 1345, 1346, 1346, 1346, 1347, 1347, + 0, 0, 1347, 1348, 1348, 1348, 1349, 1349, 1349, 1350, + 1350, 1350, 1351, 1351, 1351, 1352, 1352, 1352, 1353, 1353, + 1353, 1354, 1354, 0, 0, 1354, 1355, 1355, 1355, 1356, + 0, 1356, 1357, 1357, 1357, 1358, 0, 1358, 1359, 1359, + 1359, 1360, 1360, 1360, 1361, 1361, 1361, 1362, 0, 1362, + 1363, 0, 1363, 1364, 1364, 1364, 1365, 0, 1365, 1366, + 1366, 0, 0, 1366, 1367, 1367, 0, 0, 1367, 1368, + 1368, 1368, 1369, 1369, 1369, 1370, 1370, 1370, 1371, 1371, - 1357, 1358, 1358, 0, 0, 1358, 1359, 1359, 0, 0, - 1359, 1360, 1360, 1360, 1361, 1361, 1361, 1362, 1362, 1362, - 1363, 1363, 1363, 1364, 1364, 1364, 1365, 1365, 1365, 1366, - 1366, 1366, 1367, 1367, 1367, 1368, 1368, 0, 0, 1368, - 1369, 1369, 1369, 1370, 1370, 0, 0, 1370, 1371, 1371, - 0, 0, 1371, 1372, 1372, 1372, 1373, 0, 1373, 1374, - 0, 1374, 1375, 1375, 1375, 1376, 0, 1376, 1377, 1377, - 1377, 1378, 1378, 1378, 1379, 1379, 1379, 1380, 0, 1380, - 1381, 0, 1381, 1382, 1382, 1382, 1383, 0, 1383, 1384, - 0, 1384, 1385, 0, 1385, 1386, 1386, 1386, 1387, 0, + 1371, 1372, 1372, 1372, 1373, 1373, 1373, 1374, 1374, 1374, + 1375, 1375, 1375, 1376, 1376, 0, 0, 1376, 1377, 1377, + 1377, 1378, 1378, 0, 0, 1378, 1379, 1379, 0, 0, + 1379, 1380, 1380, 1380, 1381, 0, 1381, 1382, 0, 1382, + 1383, 1383, 1383, 1384, 0, 1384, 1385, 1385, 1385, 1386, + 1386, 1386, 1387, 1387, 1387, 1388, 0, 1388, 1389, 0, + 1389, 1390, 1390, 1390, 1391, 0, 1391, 1392, 0, 1392, + 1393, 0, 1393, 1394, 1394, 1394, 1395, 0, 1395, 1396, + 0, 0, 1396, 1397, 1397, 0, 0, 1397, 1398, 1398, + 0, 1398, 1399, 1399, 0, 0, 1399, 1400, 1400, 1400, - 1387, 1388, 0, 0, 1388, 1389, 1389, 0, 0, 1389, - 1390, 1390, 0, 1390, 1391, 1391, 0, 0, 1391, 1392, - 1392, 1392, 1393, 1393, 0, 1393, 1394, 1394, 1394, 0, - 1394, 1394, 1395, 1395, 1395, 1396, 1396, 1396, 1397, 1397, - 1397, 1398, 1398, 1398, 1399, 1399, 1399, 1400, 1400, 1400, - 1401, 1401, 1401, 1402, 1402, 1402, 1403, 1403, 0, 0, - 1403, 1404, 1404, 1404, 1405, 1405, 0, 1405, 1406, 1406, - 0, 0, 1406, 1407, 1407, 0, 1407, 1408, 1408, 0, - 0, 1408, 1409, 1409, 1409, 1410, 1410, 0, 1410, 1411, - 0, 0, 1411, 1412, 1412, 0, 1412, 1413, 1413, 0, + 1401, 1401, 0, 1401, 1402, 1402, 1402, 0, 1402, 1402, + 1403, 1403, 1403, 1404, 1404, 1404, 1405, 1405, 1405, 1406, + 1406, 1406, 1407, 1407, 1407, 1408, 1408, 1408, 1409, 1409, + 1409, 1410, 1410, 1410, 1411, 1411, 0, 0, 1411, 1412, + 1412, 1412, 1413, 1413, 0, 1413, 1414, 1414, 0, 0, + 1414, 1415, 1415, 0, 1415, 1416, 1416, 0, 0, 1416, + 1417, 1417, 1417, 1418, 1418, 0, 1418, 1419, 0, 0, + 1419, 1420, 1420, 0, 1420, 1421, 1421, 0, 0, 1421, + 1422, 1422, 0, 1422, 1423, 1423, 0, 0, 1423, 1424, + 1424, 1424, 1425, 1425, 0, 1425, 1426, 0, 1426, 1427, - 0, 1413, 1414, 1414, 0, 1414, 1415, 1415, 0, 0, - 1415, 1416, 1416, 1416, 1417, 1417, 0, 1417, 1418, 0, - 1418, 1419, 0, 1419, 1420, 0, 1420, 1421, 1421, 1421, - 1422, 0, 1422, 1423, 1423, 1423, 0, 1423, 1423, 1424, - 1424, 1424, 1425, 1425, 1425, 1426, 1426, 1426, 1427, 0, - 1427, 1428, 0, 1428, 1429, 1429, 1429, 1430, 0, 1430, - 1431, 0, 1431, 1432, 0, 1432, 1433, 1433, 1433, 1434, - 0, 1434, 1435, 0, 1435, 1436, 0, 1436, 1437, 0, - 1437, 1438, 1438, 1438, 1439, 0, 1439, 1440, 0, 1440, - 1441, 0, 0, 1441, 1442, 1442, 0, 1442, 1443, 1443, + 0, 1427, 1428, 0, 1428, 1429, 1429, 1429, 1430, 0, + 1430, 1431, 1431, 1431, 0, 1431, 1431, 1432, 1432, 1432, + 1433, 1433, 1433, 1434, 1434, 1434, 1435, 0, 1435, 1436, + 0, 1436, 1437, 1437, 1437, 1438, 0, 1438, 1439, 0, + 1439, 1440, 0, 1440, 1441, 1441, 1441, 1442, 0, 1442, + 1443, 0, 1443, 1444, 0, 1444, 1445, 0, 1445, 1446, + 1446, 1446, 1447, 0, 1447, 1448, 0, 1448, 1449, 0, + 0, 1449, 1450, 1450, 0, 1450, 1451, 1451, 0, 0, + 1451, 1452, 1452, 0, 1452, 1453, 1453, 0, 0, 1453, + 1454, 1454, 1454, 1455, 1455, 0, 1455, 1456, 1456, 1456, - 0, 0, 1443, 1444, 1444, 0, 1444, 1445, 1445, 0, - 0, 1445, 1446, 1446, 1446, 1447, 1447, 0, 1447, 1448, - 1448, 1448, 0, 1448, 1448, 1449, 1449, 1449, 1450, 1450, - 1450, 1451, 1451, 1451, 1452, 1452, 1452, 1453, 1453, 1453, - 1454, 1454, 1454, 1455, 1455, 1455, 1456, 1456, 1456, 1457, - 1457, 0, 0, 1457, 1458, 1458, 1458, 1459, 1459, 0, - 1459, 1460, 1460, 0, 0, 1460, 1461, 1461, 0, 1461, - 1462, 1462, 0, 0, 1462, 1463, 1463, 1463, 1464, 1464, - 0, 1464, 1465, 0, 0, 1465, 1466, 1466, 0, 1466, - 1467, 1467, 0, 0, 1467, 1468, 1468, 0, 1468, 1469, + 0, 1456, 1456, 1457, 1457, 1457, 1458, 1458, 1458, 1459, + 1459, 1459, 1460, 1460, 1460, 1461, 1461, 1461, 1462, 1462, + 1462, 1463, 1463, 1463, 1464, 1464, 1464, 1465, 1465, 0, + 0, 1465, 1466, 1466, 1466, 1467, 1467, 0, 1467, 1468, + 1468, 0, 0, 1468, 1469, 1469, 0, 1469, 1470, 1470, + 0, 0, 1470, 1471, 1471, 1471, 1472, 1472, 0, 1472, + 1473, 0, 0, 1473, 1474, 1474, 0, 1474, 1475, 1475, + 0, 0, 1475, 1476, 1476, 0, 1476, 1477, 1477, 0, + 0, 1477, 1478, 1478, 1478, 1479, 1479, 0, 1479, 1480, + 0, 1480, 1481, 0, 0, 1481, 1482, 1482, 0, 1482, - 1469, 0, 0, 1469, 1470, 1470, 1470, 1471, 1471, 0, - 1471, 1472, 0, 1472, 1473, 0, 0, 1473, 1474, 1474, - 0, 1474, 1475, 1475, 0, 0, 1475, 1476, 1476, 0, - 1476, 1477, 1477, 0, 0, 1477, 1478, 1478, 1478, 1479, - 1479, 0, 1479, 1480, 0, 1480, 1481, 0, 1481, 1482, - 0, 1482, 1483, 1483, 1483, 1484, 0, 1484, 1485, 1485, - 1485, 0, 1485, 1485, 1486, 1486, 1486, 1487, 1487, 1487, - 1488, 1488, 1488, 1489, 1489, 1489, 1490, 1490, 1490, 1491, - 0, 1491, 1492, 0, 1492, 1493, 1493, 1493, 1494, 1494, - 1494, 1495, 0, 1495, 1496, 0, 1496, 1497, 0, 1497, + 1483, 1483, 0, 0, 1483, 1484, 1484, 0, 1484, 1485, + 1485, 0, 0, 1485, 1486, 1486, 1486, 1487, 1487, 0, + 1487, 1488, 0, 1488, 1489, 0, 1489, 1490, 0, 1490, + 1491, 1491, 1491, 1492, 0, 1492, 1493, 1493, 1493, 0, + 1493, 1493, 1494, 1494, 1494, 1495, 1495, 1495, 1496, 1496, + 1496, 1497, 1497, 1497, 1498, 1498, 1498, 1499, 0, 1499, + 1500, 0, 1500, 1501, 1501, 1501, 1502, 1502, 1502, 1503, + 0, 1503, 1504, 0, 1504, 1505, 0, 1505, 1506, 1506, + 1506, 1507, 1507, 1507, 1508, 0, 1508, 1509, 0, 1509, + 1510, 0, 1510, 1511, 0, 1511, 1512, 1512, 1512, 1513, - 1498, 1498, 1498, 1499, 1499, 1499, 1500, 0, 1500, 1501, - 0, 1501, 1502, 0, 1502, 1503, 0, 1503, 1504, 1504, - 1504, 1505, 1505, 1505, 1506, 0, 1506, 1507, 0, 1507, - 1508, 0, 1508, 1509, 0, 1509, 1510, 1510, 1510, 1511, - 1511, 1511, 1512, 0, 1512, 1513, 0, 1513, 1514, 0, - 0, 1514, 1515, 1515, 0, 1515, 1516, 1516, 0, 0, - 1516, 1517, 1517, 0, 1517, 1518, 1518, 0, 0, 1518, - 1519, 1519, 1519, 1520, 1520, 0, 1520, 1521, 1521, 1521, - 0, 1521, 1521, 1522, 1522, 1522, 1523, 1523, 1523, 1524, - 1524, 1524, 1525, 1525, 1525, 1526, 1526, 1526, 1527, 1527, + 1513, 1513, 1514, 0, 1514, 1515, 0, 1515, 1516, 0, + 1516, 1517, 0, 1517, 1518, 1518, 1518, 1519, 1519, 1519, + 1520, 0, 1520, 1521, 0, 1521, 1522, 0, 0, 1522, + 1523, 1523, 0, 1523, 1524, 1524, 0, 0, 1524, 1525, + 1525, 0, 1525, 1526, 1526, 0, 0, 1526, 1527, 1527, + 1527, 1528, 1528, 0, 1528, 1529, 1529, 1529, 0, 1529, + 1529, 1530, 1530, 1530, 1531, 1531, 1531, 1532, 1532, 1532, + 1533, 1533, 1533, 1534, 1534, 1534, 1535, 1535, 1535, 1536, + 1536, 1536, 1537, 0, 1537, 1538, 1538, 1538, 1539, 1539, + 0, 0, 1539, 1540, 1540, 1540, 1541, 1541, 0, 1541, - 1527, 1528, 1528, 1528, 1529, 0, 1529, 1530, 1530, 1530, - 1531, 1531, 0, 0, 1531, 1532, 1532, 1532, 1533, 1533, - 0, 1533, 1534, 1534, 0, 0, 1534, 1535, 1535, 0, - 1535, 1536, 1536, 0, 0, 1536, 1537, 1537, 1537, 1538, - 1538, 0, 1538, 1539, 0, 0, 1539, 1540, 1540, 0, - 1540, 1541, 1541, 0, 0, 1541, 1542, 1542, 0, 1542, - 1543, 1543, 0, 0, 1543, 1544, 1544, 1544, 1545, 1545, - 0, 1545, 1546, 0, 1546, 1547, 0, 0, 1547, 1548, - 1548, 0, 1548, 1549, 1549, 0, 0, 1549, 1550, 1550, - 0, 1550, 1551, 1551, 0, 0, 1551, 1552, 1552, 1552, + 1542, 1542, 0, 0, 1542, 1543, 1543, 0, 1543, 1544, + 1544, 0, 0, 1544, 1545, 1545, 1545, 1546, 1546, 0, + 1546, 1547, 0, 0, 1547, 1548, 1548, 0, 1548, 1549, + 1549, 0, 0, 1549, 1550, 1550, 0, 1550, 1551, 1551, + 0, 0, 1551, 1552, 1552, 1552, 1553, 1553, 0, 1553, + 1554, 0, 1554, 1555, 0, 0, 1555, 1556, 1556, 0, + 1556, 1557, 1557, 0, 0, 1557, 1558, 1558, 0, 1558, + 1559, 1559, 0, 0, 1559, 1560, 1560, 1560, 1561, 1561, + 0, 1561, 1562, 0, 1562, 1563, 0, 0, 1563, 1564, + 1564, 0, 1564, 1565, 1565, 0, 0, 1565, 1566, 1566, - 1553, 1553, 0, 1553, 1554, 0, 1554, 1555, 0, 0, - 1555, 1556, 1556, 0, 1556, 1557, 1557, 0, 0, 1557, - 1558, 1558, 0, 1558, 1559, 1559, 0, 0, 1559, 1560, - 1560, 1560, 1561, 1561, 0, 1561, 1562, 0, 1562, 1563, - 0, 1563, 1564, 0, 1564, 1565, 1565, 1565, 1566, 0, - 1566, 1567, 0, 1567, 1568, 1568, 1568, 0, 1568, 1568, - 1569, 0, 1569, 1570, 1570, 1570, 1571, 0, 1571, 1572, - 0, 1572, 1573, 0, 1573, 1574, 0, 1574, 1575, 0, - 1575, 1576, 1576, 0, 0, 1576, 1577, 1577, 1577, 1578, - 1578, 1578, 1579, 1579, 0, 1579, 1580, 1580, 1580, 1581, + 0, 1566, 1567, 1567, 0, 0, 1567, 1568, 1568, 1568, + 1569, 1569, 0, 1569, 1570, 0, 1570, 1571, 0, 1571, + 1572, 0, 1572, 1573, 1573, 1573, 1574, 0, 1574, 1575, + 0, 1575, 1576, 1576, 1576, 0, 1576, 1576, 1577, 0, + 1577, 1578, 1578, 1578, 1579, 0, 1579, 1580, 0, 1580, + 1581, 0, 1581, 1582, 0, 1582, 1583, 0, 1583, 1584, + 1584, 0, 0, 1584, 1585, 1585, 1585, 1586, 1586, 1586, + 1587, 1587, 0, 1587, 1588, 1588, 1588, 1589, 0, 1589, + 1590, 1590, 1590, 1591, 1591, 1591, 1592, 0, 1592, 1593, + 0, 1593, 1594, 1594, 1594, 1595, 1595, 1595, 1596, 0, - 0, 1581, 1582, 1582, 1582, 1583, 1583, 1583, 1584, 0, - 1584, 1585, 0, 1585, 1586, 1586, 1586, 1587, 1587, 1587, - 1588, 0, 1588, 1589, 0, 1589, 1590, 0, 1590, 1591, - 1591, 1591, 1592, 1592, 1592, 1593, 0, 1593, 1594, 0, - 1594, 1595, 0, 1595, 1596, 1596, 1596, 1597, 1597, 1597, - 1598, 0, 1598, 1599, 0, 1599, 1600, 0, 1600, 1601, - 1601, 1601, 1602, 1602, 1602, 1603, 0, 1603, 1604, 0, - 0, 1604, 1605, 1605, 0, 1605, 1606, 1606, 0, 0, - 1606, 1607, 1607, 0, 1607, 1608, 1608, 0, 0, 1608, - 1609, 0, 1609, 1610, 1610, 0, 1610, 1611, 1611, 1611, + 1596, 1597, 0, 1597, 1598, 0, 1598, 1599, 1599, 1599, + 1600, 1600, 1600, 1601, 0, 1601, 1602, 0, 1602, 1603, + 0, 1603, 1604, 1604, 1604, 1605, 1605, 1605, 1606, 0, + 1606, 1607, 0, 1607, 1608, 0, 1608, 1609, 1609, 1609, + 1610, 1610, 1610, 1611, 0, 1611, 1612, 0, 0, 1612, + 1613, 1613, 0, 1613, 1614, 1614, 0, 0, 1614, 1615, + 1615, 0, 1615, 1616, 1616, 0, 0, 1616, 1617, 0, + 1617, 1618, 1618, 0, 1618, 1619, 1619, 1619, 0, 1619, + 1619, 1620, 1620, 1620, 1621, 0, 1621, 1622, 0, 1622, + 1623, 0, 1623, 1624, 0, 1624, 1625, 0, 1625, 1626, - 0, 1611, 1611, 1612, 1612, 1612, 1613, 0, 1613, 1614, - 0, 1614, 1615, 0, 1615, 1616, 0, 1616, 1617, 0, - 1617, 1618, 0, 1618, 1619, 0, 1619, 1620, 1620, 1620, - 1621, 1621, 1621, 1622, 0, 1622, 1623, 1623, 0, 0, - 1623, 1624, 1624, 0, 1624, 1625, 0, 1625, 1626, 0, - 0, 1626, 1627, 1627, 0, 1627, 1628, 1628, 0, 0, - 1628, 1629, 1629, 0, 1629, 1630, 0, 1630, 1631, 0, - 1631, 1632, 0, 0, 1632, 1633, 1633, 0, 1633, 1634, - 1634, 0, 0, 1634, 1635, 1635, 0, 1635, 1636, 0, - 1636, 1637, 0, 1637, 1638, 0, 0, 1638, 1639, 1639, + 0, 1626, 1627, 0, 1627, 1628, 1628, 1628, 1629, 1629, + 1629, 1630, 0, 1630, 1631, 1631, 0, 0, 1631, 1632, + 1632, 0, 1632, 1633, 0, 1633, 1634, 0, 0, 1634, + 1635, 1635, 0, 1635, 1636, 1636, 0, 0, 1636, 1637, + 1637, 0, 1637, 1638, 0, 1638, 1639, 0, 1639, 1640, + 0, 0, 1640, 1641, 1641, 0, 1641, 1642, 1642, 0, + 0, 1642, 1643, 1643, 0, 1643, 1644, 0, 1644, 1645, + 0, 1645, 1646, 0, 0, 1646, 1647, 1647, 0, 1647, + 1648, 1648, 0, 0, 1648, 1649, 1649, 0, 1649, 1650, + 0, 1650, 1651, 0, 1651, 1652, 0, 0, 1652, 1653, - 0, 1639, 1640, 1640, 0, 0, 1640, 1641, 1641, 0, - 1641, 1642, 0, 1642, 1643, 0, 1643, 1644, 0, 0, - 1644, 1645, 1645, 0, 1645, 1646, 1646, 0, 0, 1646, - 1647, 1647, 0, 1647, 1648, 0, 1648, 1649, 0, 1649, - 1650, 0, 1650, 1651, 0, 1651, 1652, 1652, 1652, 1653, - 0, 1653, 1654, 1654, 1654, 0, 1654, 1654, 1655, 0, - 1655, 1656, 0, 1656, 1657, 0, 1657, 1658, 0, 1658, - 1659, 0, 1659, 1660, 0, 1660, 1661, 0, 1661, 1662, - 1662, 0, 0, 1662, 1663, 1663, 0, 1663, 1664, 0, - 1664, 1665, 0, 1665, 1666, 0, 1666, 1667, 0, 1667, + 1653, 0, 1653, 1654, 1654, 0, 0, 1654, 1655, 1655, + 0, 1655, 1656, 0, 1656, 1657, 0, 1657, 1658, 0, + 1658, 1659, 0, 1659, 1660, 1660, 1660, 1661, 0, 1661, + 1662, 1662, 1662, 0, 1662, 1662, 1663, 0, 1663, 1664, + 0, 1664, 1665, 0, 1665, 1666, 0, 1666, 1667, 0, + 1667, 1668, 0, 1668, 1669, 0, 1669, 1670, 1670, 0, + 0, 1670, 1671, 1671, 0, 1671, 1672, 0, 1672, 1673, + 0, 1673, 1674, 0, 1674, 1675, 0, 1675, 1676, 0, + 1676, 1677, 0, 1677, 1678, 0, 1678, 1679, 0, 1679, + 1680, 0, 1680, 1681, 0, 1681, 1682, 0, 0, 1682, - 1668, 0, 1668, 1669, 0, 1669, 1670, 0, 1670, 1671, - 0, 1671, 1672, 0, 1672, 1673, 0, 1673, 1674, 0, - 0, 1674, 1675, 1675, 0, 0, 1675, 1676, 0, 1676, - 1677, 0, 1677, 1678, 0, 1678, 1679, 0, 0, 1679, - 1680, 0, 0, 1680, 1681, 0, 0, 1681, 1682, 0, - 0, 1682, 1683, 0, 0, 1683, 1684, 0, 1684, 1685, - 0, 1685, 1686, 0, 0, 1686, 1687, 0, 1687, 1688, - 0, 1688, 1689, 0, 1689, 1690, 0, 1690, 1691, 0, - 1691, 1692, 0, 0, 1692, 1693, 0, 1693, 1694, 0, - 1694, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, + 1683, 1683, 0, 0, 1683, 1684, 0, 1684, 1685, 0, + 1685, 1686, 0, 1686, 1687, 0, 0, 1687, 1688, 0, + 0, 1688, 1689, 0, 0, 1689, 1690, 0, 0, 1690, + 1691, 0, 0, 1691, 1692, 0, 1692, 1693, 0, 1693, + 1694, 0, 0, 1694, 1695, 0, 1695, 1696, 0, 1696, + 1697, 0, 1697, 1698, 0, 1698, 1699, 0, 1699, 1700, + 0, 0, 1700, 1701, 0, 1701, 1702, 0, 1702, 1329, + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321 + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + 1329, 1329 } ; static yy_state_type yy_last_accepting_state; static char *yy_last_accepting_cpos; +extern int pcap__flex_debug; +int pcap__flex_debug = 0; + /* The intent behind this definition is that it'll catch * any uses of REJECT which flex missed. */ @@ -2347,9 +2427,8 @@ static char *yy_last_accepting_cpos; #define yymore() yymore_used_but_not_detected #define YY_MORE_ADJ 0 #define YY_RESTORE_YY_MORE_OFFSET -char *yytext; +char *pcap_text; #line 1 "scanner.l" -#define INITIAL 0 #line 2 "scanner.l" /* * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997 @@ -2374,7 +2453,7 @@ char *yytext; #ifndef lint static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/libpcap/scanner.l,v 1.99.2.4 2005/09/05 09:08:07 guy Exp $ (LBL)"; + "@(#) $Header: /tcpdump/master/libpcap/scanner.l,v 1.99.2.9 2007/06/11 09:52:05 guy Exp $ (LBL)"; #endif #ifdef HAVE_CONFIG_H @@ -2427,6 +2506,23 @@ static char *in_buffer; #define yylval pcap_lval extern YYSTYPE yylval; +#line 2510 "" + +#define INITIAL 0 + +#ifndef YY_NO_UNISTD_H +/* Special case for "unistd.h", since it is non-ANSI. We include it way + * down here because we want the user's section 1 to have been scanned first. + * The user has a chance to override it with an option. + */ +#include +#endif + +#ifndef YY_EXTRA_TYPE +#define YY_EXTRA_TYPE void * +#endif + +static int yy_init_globals (void ); /* Macros after this point can all be overridden by user definitions in * section 1. @@ -2434,65 +2530,30 @@ extern YYSTYPE yylval; #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus -extern "C" int yywrap YY_PROTO(( void )); +extern "C" int pcap_wrap (void ); #else -extern int yywrap YY_PROTO(( void )); +extern int pcap_wrap (void ); #endif #endif -#ifndef YY_NO_UNPUT -static void yyunput YY_PROTO(( int c, char *buf_ptr )); -#endif - + static void yyunput (int c,char *buf_ptr ); + #ifndef yytext_ptr -static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int )); +static void yy_flex_strncpy (char *,yyconst char *,int ); #endif #ifdef YY_NEED_STRLEN -static int yy_flex_strlen YY_PROTO(( yyconst char * )); +static int yy_flex_strlen (yyconst char * ); #endif #ifndef YY_NO_INPUT + #ifdef __cplusplus -static int yyinput YY_PROTO(( void )); +static int yyinput (void ); #else -static int input YY_PROTO(( void )); -#endif +static int input (void ); #endif -#if YY_STACK_USED -static int yy_start_stack_ptr = 0; -static int yy_start_stack_depth = 0; -static int *yy_start_stack = 0; -#ifndef YY_NO_PUSH_STATE -static void yy_push_state YY_PROTO(( int new_state )); -#endif -#ifndef YY_NO_POP_STATE -static void yy_pop_state YY_PROTO(( void )); -#endif -#ifndef YY_NO_TOP_STATE -static int yy_top_state YY_PROTO(( void )); -#endif - -#else -#define YY_NO_PUSH_STATE 1 -#define YY_NO_POP_STATE 1 -#define YY_NO_TOP_STATE 1 -#endif - -#ifdef YY_MALLOC_DECL -YY_MALLOC_DECL -#else -#if __STDC__ -#ifndef __cplusplus -#include -#endif -#else -/* Just try to get by without declaring the routines. This will fail - * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int) - * or sizeof(void*) != sizeof(int). - */ -#endif #endif /* Amount of stuff to slurp up with each read. */ @@ -2501,12 +2562,11 @@ YY_MALLOC_DECL #endif /* Copy whatever the last rule matched to the standard output. */ - #ifndef ECHO /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ -#define ECHO (void) fwrite( yytext, yyleng, 1, yyout ) +#define ECHO (void) fwrite( pcap_text, pcap_leng, 1, pcap_out ) #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, @@ -2514,21 +2574,35 @@ YY_MALLOC_DECL */ #ifndef YY_INPUT #define YY_INPUT(buf,result,max_size) \ - if ( yy_current_buffer->yy_is_interactive ) \ + if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ - int c = '*', n; \ + int c = '*'; \ + size_t n; \ for ( n = 0; n < max_size && \ - (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ + (c = getc( pcap_in )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ if ( c == '\n' ) \ buf[n++] = (char) c; \ - if ( c == EOF && ferror( yyin ) ) \ + if ( c == EOF && ferror( pcap_in ) ) \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ result = n; \ } \ - else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \ - && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); + else \ + { \ + errno=0; \ + while ( (result = fread(buf, 1, max_size, pcap_in))==0 && ferror(pcap_in)) \ + { \ + if( errno != EINTR) \ + { \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + break; \ + } \ + errno=0; \ + clearerr(pcap_in); \ + } \ + }\ +\ + #endif /* No semi-colon after return; correct usage is to write "yyterminate();" - @@ -2549,14 +2623,20 @@ YY_MALLOC_DECL #define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) #endif +/* end tables serialization structures and prototypes */ + /* Default declaration of generated scanner - a define so the user can * easily add parameters. */ #ifndef YY_DECL -#define YY_DECL int yylex YY_PROTO(( void )) -#endif +#define YY_DECL_IS_OURS 1 -/* Code executed at the beginning of each rule, after yytext and yyleng +extern int pcap_lex (void); + +#define YY_DECL int pcap_lex (void) +#endif /* !YY_DECL */ + +/* Code executed at the beginning of each rule, after pcap_text and pcap_leng * have been set up. */ #ifndef YY_USER_ACTION @@ -2571,94 +2651,97 @@ YY_MALLOC_DECL #define YY_RULE_SETUP \ YY_USER_ACTION +/** The main scanner function which does all the work. + */ YY_DECL - { +{ register yy_state_type yy_current_state; - register char *yy_cp = NULL, *yy_bp = NULL; + register char *yy_cp, *yy_bp; register int yy_act; - + #line 169 "scanner.l" +#line 2665 "" - if ( yy_init ) + if ( !(yy_init) ) { - yy_init = 0; + (yy_init) = 1; #ifdef YY_USER_INIT YY_USER_INIT; #endif - if ( ! yy_start ) - yy_start = 1; /* first start state */ + if ( ! (yy_start) ) + (yy_start) = 1; /* first start state */ - if ( ! yyin ) - yyin = stdin; + if ( ! pcap_in ) + pcap_in = stdin; - if ( ! yyout ) - yyout = stdout; + if ( ! pcap_out ) + pcap_out = stdout; - if ( ! yy_current_buffer ) - yy_current_buffer = - yy_create_buffer( yyin, YY_BUF_SIZE ); + if ( ! YY_CURRENT_BUFFER ) { + pcap_ensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + pcap__create_buffer(pcap_in,YY_BUF_SIZE ); + } - yy_load_buffer_state(); + pcap__load_buffer_state( ); } while ( 1 ) /* loops until end-of-file is reached */ { - yy_cp = yy_c_buf_p; + yy_cp = (yy_c_buf_p); - /* Support of yytext. */ - *yy_cp = yy_hold_char; + /* Support of pcap_text. */ + *yy_cp = (yy_hold_char); /* yy_bp points to the position in yy_ch_buf of the start of * the current run. */ yy_bp = yy_cp; - yy_current_state = yy_start; + yy_current_state = (yy_start); yy_match: do { register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; if ( yy_accept[yy_current_state] ) { - yy_last_accepting_state = yy_current_state; - yy_last_accepting_cpos = yy_cp; + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 1322 ) + if ( yy_current_state >= 1330 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 6592 ); + while ( yy_base[yy_current_state] != 6570 ); yy_find_action: yy_act = yy_accept[yy_current_state]; if ( yy_act == 0 ) { /* have to back up */ - yy_cp = yy_last_accepting_cpos; - yy_current_state = yy_last_accepting_state; + yy_cp = (yy_last_accepting_cpos); + yy_current_state = (yy_last_accepting_state); yy_act = yy_accept[yy_current_state]; } YY_DO_BEFORE_ACTION; - do_action: /* This label is used only to access EOF actions. */ - switch ( yy_act ) { /* beginning of action switch */ case 0: /* must back up */ /* undo the effects of YY_DO_BEFORE_ACTION */ - *yy_cp = yy_hold_char; - yy_cp = yy_last_accepting_cpos; - yy_current_state = yy_last_accepting_state; + *yy_cp = (yy_hold_char); + yy_cp = (yy_last_accepting_cpos); + yy_current_state = (yy_last_accepting_state); goto yy_find_action; case 1: @@ -2748,7 +2831,7 @@ YY_RULE_SETUP #ifdef INET6 return IPV6; #else - bpf_error("%s not supported", yytext); + bpf_error("%s not supported", pcap_text); #endif } YY_BREAK @@ -2759,7 +2842,7 @@ YY_RULE_SETUP #ifdef INET6 return ICMPV6; #else - bpf_error("%s not supported", yytext); + bpf_error("%s not supported", pcap_text); #endif } YY_BREAK @@ -2923,7 +3006,7 @@ YY_RULE_SETUP #line 240 "scanner.l" { #ifdef NO_PROTOCHAIN - bpf_error("%s not supported", yytext); + bpf_error("%s not supported", pcap_text); #else return PROTOCHAIN; #endif @@ -3112,283 +3195,305 @@ return PF_ACTION; case 87: YY_RULE_SETUP #line 291 "scanner.l" -return SIO; +return FISU; YY_BREAK case 88: YY_RULE_SETUP #line 292 "scanner.l" -return OPC; +return LSSU; YY_BREAK case 89: YY_RULE_SETUP #line 293 "scanner.l" -return DPC; +return LSSU; YY_BREAK case 90: YY_RULE_SETUP #line 294 "scanner.l" -return SLS; +return MSU; YY_BREAK case 91: YY_RULE_SETUP -#line 296 "scanner.l" -; +#line 295 "scanner.l" +return SIO; YY_BREAK case 92: YY_RULE_SETUP -#line 297 "scanner.l" -return yytext[0]; +#line 296 "scanner.l" +return OPC; YY_BREAK case 93: YY_RULE_SETUP -#line 298 "scanner.l" -return GEQ; +#line 297 "scanner.l" +return DPC; YY_BREAK case 94: YY_RULE_SETUP -#line 299 "scanner.l" -return LEQ; +#line 298 "scanner.l" +return SLS; YY_BREAK case 95: +/* rule 95 can match eol */ YY_RULE_SETUP #line 300 "scanner.l" -return NEQ; +; YY_BREAK case 96: YY_RULE_SETUP #line 301 "scanner.l" -return '='; +return pcap_text[0]; YY_BREAK case 97: YY_RULE_SETUP #line 302 "scanner.l" -return LSH; +return GEQ; YY_BREAK case 98: YY_RULE_SETUP #line 303 "scanner.l" -return RSH; +return LEQ; YY_BREAK case 99: YY_RULE_SETUP #line 304 "scanner.l" -{ yylval.e = pcap_ether_aton(((char *)yytext)+1); - return AID; } +return NEQ; YY_BREAK case 100: YY_RULE_SETUP -#line 306 "scanner.l" -{ yylval.i = stoi((char *)yytext); return NUM; } +#line 305 "scanner.l" +return '='; YY_BREAK case 101: YY_RULE_SETUP -#line 307 "scanner.l" -{ - yylval.s = sdup((char *)yytext); return HID; } +#line 306 "scanner.l" +return LSH; YY_BREAK case 102: YY_RULE_SETUP -#line 309 "scanner.l" -{ yylval.e = pcap_ether_aton((char *)yytext); - return EID; } +#line 307 "scanner.l" +return RSH; YY_BREAK case 103: YY_RULE_SETUP +#line 308 "scanner.l" +{ yylval.e = pcap_ether_aton(((char *)pcap_text)+1); + return AID; } + YY_BREAK +case 104: +YY_RULE_SETUP +#line 310 "scanner.l" +{ yylval.i = stoi((char *)pcap_text); return NUM; } + YY_BREAK +case 105: +YY_RULE_SETUP #line 311 "scanner.l" +{ + yylval.s = sdup((char *)pcap_text); return HID; } + YY_BREAK +case 106: +YY_RULE_SETUP +#line 313 "scanner.l" +{ yylval.e = pcap_ether_aton((char *)pcap_text); + return EID; } + YY_BREAK +case 107: +YY_RULE_SETUP +#line 315 "scanner.l" { #ifdef INET6 struct addrinfo hints, *res; memset(&hints, 0, sizeof(hints)); hints.ai_family = AF_INET6; hints.ai_flags = AI_NUMERICHOST; - if (getaddrinfo(yytext, NULL, &hints, &res)) - bpf_error("bogus IPv6 address %s", yytext); + if (getaddrinfo(pcap_text, NULL, &hints, &res)) + bpf_error("bogus IPv6 address %s", pcap_text); else { - yylval.s = sdup((char *)yytext); return HID6; + yylval.s = sdup((char *)pcap_text); return HID6; } #else - bpf_error("IPv6 address %s not supported", yytext); + bpf_error("IPv6 address %s not supported", pcap_text); #endif /*INET6*/ } YY_BREAK -case 104: -YY_RULE_SETUP -#line 326 "scanner.l" -{ bpf_error("bogus ethernet address %s", yytext); } - YY_BREAK -case 105: -YY_RULE_SETUP -#line 327 "scanner.l" -{ yylval.i = 0; return NUM; } - YY_BREAK -case 106: -YY_RULE_SETUP -#line 328 "scanner.l" -{ yylval.i = 1; return NUM; } - YY_BREAK -case 107: -YY_RULE_SETUP -#line 329 "scanner.l" -{ yylval.i = 0; return NUM; } - YY_BREAK case 108: YY_RULE_SETUP #line 330 "scanner.l" -{ yylval.i = 3; return NUM; } +{ bpf_error("bogus ethernet address %s", pcap_text); } YY_BREAK case 109: YY_RULE_SETUP #line 331 "scanner.l" -{ yylval.i = 4; return NUM; } +{ yylval.i = 0; return NUM; } YY_BREAK case 110: YY_RULE_SETUP #line 332 "scanner.l" -{ yylval.i = 5; return NUM; } +{ yylval.i = 1; return NUM; } YY_BREAK case 111: YY_RULE_SETUP #line 333 "scanner.l" -{ yylval.i = 8; return NUM; } +{ yylval.i = 0; return NUM; } YY_BREAK case 112: YY_RULE_SETUP #line 334 "scanner.l" -{ yylval.i = 9; return NUM; } +{ yylval.i = 3; return NUM; } YY_BREAK case 113: YY_RULE_SETUP #line 335 "scanner.l" -{ yylval.i = 10; return NUM; } +{ yylval.i = 4; return NUM; } YY_BREAK case 114: YY_RULE_SETUP #line 336 "scanner.l" -{ yylval.i = 11; return NUM; } +{ yylval.i = 5; return NUM; } YY_BREAK case 115: YY_RULE_SETUP #line 337 "scanner.l" -{ yylval.i = 12; return NUM; } +{ yylval.i = 8; return NUM; } YY_BREAK case 116: YY_RULE_SETUP #line 338 "scanner.l" -{ yylval.i = 13; return NUM; } +{ yylval.i = 9; return NUM; } YY_BREAK case 117: YY_RULE_SETUP #line 339 "scanner.l" -{ yylval.i = 14; return NUM; } +{ yylval.i = 10; return NUM; } YY_BREAK case 118: YY_RULE_SETUP #line 340 "scanner.l" -{ yylval.i = 15; return NUM; } +{ yylval.i = 11; return NUM; } YY_BREAK case 119: YY_RULE_SETUP #line 341 "scanner.l" -{ yylval.i = 16; return NUM; } +{ yylval.i = 12; return NUM; } YY_BREAK case 120: YY_RULE_SETUP #line 342 "scanner.l" -{ yylval.i = 17; return NUM; } +{ yylval.i = 13; return NUM; } YY_BREAK case 121: YY_RULE_SETUP #line 343 "scanner.l" -{ yylval.i = 18; return NUM; } +{ yylval.i = 14; return NUM; } YY_BREAK case 122: YY_RULE_SETUP #line 344 "scanner.l" -{ yylval.i = 13; return NUM; } +{ yylval.i = 15; return NUM; } YY_BREAK case 123: YY_RULE_SETUP #line 345 "scanner.l" -{ yylval.i = 0x01; return NUM; } +{ yylval.i = 16; return NUM; } YY_BREAK case 124: YY_RULE_SETUP #line 346 "scanner.l" -{ yylval.i = 0x02; return NUM; } +{ yylval.i = 17; return NUM; } YY_BREAK case 125: YY_RULE_SETUP #line 347 "scanner.l" -{ yylval.i = 0x04; return NUM; } +{ yylval.i = 18; return NUM; } YY_BREAK case 126: YY_RULE_SETUP #line 348 "scanner.l" -{ yylval.i = 0x08; return NUM; } +{ yylval.i = 13; return NUM; } YY_BREAK case 127: YY_RULE_SETUP #line 349 "scanner.l" -{ yylval.i = 0x10; return NUM; } +{ yylval.i = 0x01; return NUM; } YY_BREAK case 128: YY_RULE_SETUP #line 350 "scanner.l" -{ yylval.i = 0x20; return NUM; } +{ yylval.i = 0x02; return NUM; } YY_BREAK case 129: YY_RULE_SETUP #line 351 "scanner.l" -{ - yylval.s = sdup((char *)yytext); return ID; } +{ yylval.i = 0x04; return NUM; } YY_BREAK case 130: YY_RULE_SETUP -#line 353 "scanner.l" -{ yylval.s = sdup((char *)yytext + 1); return ID; } +#line 352 "scanner.l" +{ yylval.i = 0x08; return NUM; } YY_BREAK case 131: YY_RULE_SETUP -#line 354 "scanner.l" -{ - bpf_error("illegal token: %s", yytext); } +#line 353 "scanner.l" +{ yylval.i = 0x10; return NUM; } YY_BREAK case 132: YY_RULE_SETUP -#line 356 "scanner.l" -{ bpf_error("illegal char '%c'", *yytext); } +#line 354 "scanner.l" +{ yylval.i = 0x20; return NUM; } YY_BREAK case 133: YY_RULE_SETUP +#line 355 "scanner.l" +{ + yylval.s = sdup((char *)pcap_text); return ID; } + YY_BREAK +case 134: +YY_RULE_SETUP #line 357 "scanner.l" +{ yylval.s = sdup((char *)pcap_text + 1); return ID; } + YY_BREAK +case 135: +YY_RULE_SETUP +#line 358 "scanner.l" +{ + bpf_error("illegal token: %s", pcap_text); } + YY_BREAK +case 136: +YY_RULE_SETUP +#line 360 "scanner.l" +{ bpf_error("illegal char '%c'", *pcap_text); } + YY_BREAK +case 137: +YY_RULE_SETUP +#line 361 "scanner.l" ECHO; YY_BREAK +#line 3471 "" case YY_STATE_EOF(INITIAL): yyterminate(); case YY_END_OF_BUFFER: { /* Amount of text matched not including the EOB char. */ - int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1; + int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; /* Undo the effects of YY_DO_BEFORE_ACTION. */ - *yy_cp = yy_hold_char; + *yy_cp = (yy_hold_char); YY_RESTORE_YY_MORE_OFFSET - if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW ) + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) { /* We're scanning a new file or input source. It's * possible that this happened because the user - * just pointed yyin at a new source and called - * yylex(). If so, then we have to assure - * consistency between yy_current_buffer and our + * just pointed pcap_in at a new source and called + * pcap_lex(). If so, then we have to assure + * consistency between YY_CURRENT_BUFFER and our * globals. Here is the right place to do so, because * this is the first action (other than possibly a * back-up) that will match for the new input source. */ - yy_n_chars = yy_current_buffer->yy_n_chars; - yy_current_buffer->yy_input_file = yyin; - yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL; + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + YY_CURRENT_BUFFER_LVALUE->yy_input_file = pcap_in; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; } /* Note that here we test for yy_c_buf_p "<=" to the position @@ -3398,13 +3503,13 @@ case YY_STATE_EOF(INITIAL): * end-of-buffer state). Contrast this with the test * in input(). */ - if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] ) + if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) { /* This was really a NUL. */ yy_state_type yy_next_state; - yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text; + (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; - yy_current_state = yy_get_previous_state(); + yy_current_state = yy_get_previous_state( ); /* Okay, we're now positioned to make the NUL * transition. We couldn't have @@ -3417,41 +3522,41 @@ case YY_STATE_EOF(INITIAL): yy_next_state = yy_try_NUL_trans( yy_current_state ); - yy_bp = yytext_ptr + YY_MORE_ADJ; + yy_bp = (yytext_ptr) + YY_MORE_ADJ; if ( yy_next_state ) { /* Consume the NUL. */ - yy_cp = ++yy_c_buf_p; + yy_cp = ++(yy_c_buf_p); yy_current_state = yy_next_state; goto yy_match; } else { - yy_cp = yy_c_buf_p; + yy_cp = (yy_c_buf_p); goto yy_find_action; } } - else switch ( yy_get_next_buffer() ) + else switch ( yy_get_next_buffer( ) ) { case EOB_ACT_END_OF_FILE: { - yy_did_buffer_switch_on_eof = 0; + (yy_did_buffer_switch_on_eof) = 0; - if ( yywrap() ) + if ( pcap_wrap( ) ) { /* Note: because we've taken care in * yy_get_next_buffer() to have set up - * yytext, we can now set up + * pcap_text, we can now set up * yy_c_buf_p so that if some total * hoser (like flex itself) wants to * call the scanner after we return the * YY_NULL, it'll still work - another * YY_NULL will get returned. */ - yy_c_buf_p = yytext_ptr + YY_MORE_ADJ; + (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; yy_act = YY_STATE_EOF(YY_START); goto do_action; @@ -3459,30 +3564,30 @@ case YY_STATE_EOF(INITIAL): else { - if ( ! yy_did_buffer_switch_on_eof ) + if ( ! (yy_did_buffer_switch_on_eof) ) YY_NEW_FILE; } break; } case EOB_ACT_CONTINUE_SCAN: - yy_c_buf_p = - yytext_ptr + yy_amount_of_matched_text; + (yy_c_buf_p) = + (yytext_ptr) + yy_amount_of_matched_text; - yy_current_state = yy_get_previous_state(); + yy_current_state = yy_get_previous_state( ); - yy_cp = yy_c_buf_p; - yy_bp = yytext_ptr + YY_MORE_ADJ; + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; goto yy_match; case EOB_ACT_LAST_MATCH: - yy_c_buf_p = - &yy_current_buffer->yy_ch_buf[yy_n_chars]; + (yy_c_buf_p) = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; - yy_current_state = yy_get_previous_state(); + yy_current_state = yy_get_previous_state( ); - yy_cp = yy_c_buf_p; - yy_bp = yytext_ptr + YY_MORE_ADJ; + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; goto yy_find_action; } break; @@ -3493,8 +3598,7 @@ case YY_STATE_EOF(INITIAL): "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ - } /* end of yylex */ - +} /* end of pcap_lex */ /* yy_get_next_buffer - try to read in a new buffer * @@ -3503,21 +3607,20 @@ case YY_STATE_EOF(INITIAL): * EOB_ACT_CONTINUE_SCAN - continue scanning from current position * EOB_ACT_END_OF_FILE - end of file */ - -static int yy_get_next_buffer() - { - register char *dest = yy_current_buffer->yy_ch_buf; - register char *source = yytext_ptr; +static int yy_get_next_buffer (void) +{ + register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + register char *source = (yytext_ptr); register int number_to_move, i; int ret_val; - if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] ) + if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) YY_FATAL_ERROR( "fatal flex scanner internal error--end of buffer missed" ); - if ( yy_current_buffer->yy_fill_buffer == 0 ) + if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) { /* Don't try to fill the buffer, so this is an EOF. */ - if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 ) + if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) { /* We matched a single character, the EOB, so * treat this as a final EOF. @@ -3537,34 +3640,30 @@ static int yy_get_next_buffer() /* Try to read more data. */ /* First move last chars to start of buffer. */ - number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1; + number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); - if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING ) + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) /* don't do the read, it's not guaranteed to return an EOF, * just force an EOF */ - yy_current_buffer->yy_n_chars = yy_n_chars = 0; + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; else { - int num_to_read = - yy_current_buffer->yy_buf_size - number_to_move - 1; + int num_to_read = + YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) { /* Not enough room in the buffer - grow it. */ -#ifdef YY_USES_REJECT - YY_FATAL_ERROR( -"input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); -#else /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = yy_current_buffer; + YY_BUFFER_STATE b = YY_CURRENT_BUFFER; int yy_c_buf_p_offset = - (int) (yy_c_buf_p - b->yy_ch_buf); + (int) ((yy_c_buf_p) - b->yy_ch_buf); if ( b->yy_is_our_buffer ) { @@ -3577,8 +3676,7 @@ static int yy_get_next_buffer() b->yy_ch_buf = (char *) /* Include room in for 2 EOB chars. */ - yy_flex_realloc( (void *) b->yy_ch_buf, - b->yy_buf_size + 2 ); + pcap_realloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); } else /* Can't grow it, we don't own it. */ @@ -3588,35 +3686,35 @@ static int yy_get_next_buffer() YY_FATAL_ERROR( "fatal error - scanner input buffer overflow" ); - yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; + (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; - num_to_read = yy_current_buffer->yy_buf_size - + num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; -#endif + } if ( num_to_read > YY_READ_BUF_SIZE ) num_to_read = YY_READ_BUF_SIZE; /* Read in more data. */ - YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]), - yy_n_chars, num_to_read ); + YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), + (yy_n_chars), (size_t) num_to_read ); - yy_current_buffer->yy_n_chars = yy_n_chars; + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } - if ( yy_n_chars == 0 ) + if ( (yy_n_chars) == 0 ) { if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; - yyrestart( yyin ); + pcap_restart(pcap_in ); } else { ret_val = EOB_ACT_LAST_MATCH; - yy_current_buffer->yy_buffer_status = + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_EOF_PENDING; } } @@ -3624,153 +3722,137 @@ static int yy_get_next_buffer() else ret_val = EOB_ACT_CONTINUE_SCAN; - yy_n_chars += number_to_move; - yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR; - yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; + (yy_n_chars) += number_to_move; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; - yytext_ptr = &yy_current_buffer->yy_ch_buf[0]; + (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; return ret_val; - } - +} /* yy_get_previous_state - get the state just before the EOB char was reached */ -static yy_state_type yy_get_previous_state() - { + static yy_state_type yy_get_previous_state (void) +{ register yy_state_type yy_current_state; register char *yy_cp; + + yy_current_state = (yy_start); - yy_current_state = yy_start; - - for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp ) + for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) { register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); if ( yy_accept[yy_current_state] ) { - yy_last_accepting_state = yy_current_state; - yy_last_accepting_cpos = yy_cp; + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 1322 ) + if ( yy_current_state >= 1330 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; } return yy_current_state; - } - +} /* yy_try_NUL_trans - try to make a transition on the NUL character * * synopsis * next_state = yy_try_NUL_trans( current_state ); */ - -#ifdef YY_USE_PROTOS -static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state ) -#else -static yy_state_type yy_try_NUL_trans( yy_current_state ) -yy_state_type yy_current_state; -#endif - { + static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) +{ register int yy_is_jam; - register char *yy_cp = yy_c_buf_p; + register char *yy_cp = (yy_c_buf_p); register YY_CHAR yy_c = 1; if ( yy_accept[yy_current_state] ) { - yy_last_accepting_state = yy_current_state; - yy_last_accepting_cpos = yy_cp; + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 1322 ) + if ( yy_current_state >= 1330 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 1321); + yy_is_jam = (yy_current_state == 1329); return yy_is_jam ? 0 : yy_current_state; - } +} + static void yyunput (int c, register char * yy_bp ) +{ + register char *yy_cp; + + yy_cp = (yy_c_buf_p); -#ifndef YY_NO_UNPUT -#ifdef YY_USE_PROTOS -static void yyunput( int c, register char *yy_bp ) -#else -static void yyunput( c, yy_bp ) -int c; -register char *yy_bp; -#endif - { - register char *yy_cp = yy_c_buf_p; + /* undo effects of setting up pcap_text */ + *yy_cp = (yy_hold_char); - /* undo effects of setting up yytext */ - *yy_cp = yy_hold_char; - - if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) + if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) { /* need to shift things up to make room */ /* +2 for EOB chars. */ - register int number_to_move = yy_n_chars + 2; - register char *dest = &yy_current_buffer->yy_ch_buf[ - yy_current_buffer->yy_buf_size + 2]; + register int number_to_move = (yy_n_chars) + 2; + register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ + YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; register char *source = - &yy_current_buffer->yy_ch_buf[number_to_move]; + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; - while ( source > yy_current_buffer->yy_ch_buf ) + while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) *--dest = *--source; yy_cp += (int) (dest - source); yy_bp += (int) (dest - source); - yy_current_buffer->yy_n_chars = - yy_n_chars = yy_current_buffer->yy_buf_size; + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size; - if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) + if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) YY_FATAL_ERROR( "flex scanner push-back overflow" ); } *--yy_cp = (char) c; - - yytext_ptr = yy_bp; - yy_hold_char = *yy_cp; - yy_c_buf_p = yy_cp; - } -#endif /* ifndef YY_NO_UNPUT */ - + (yytext_ptr) = yy_bp; + (yy_hold_char) = *yy_cp; + (yy_c_buf_p) = yy_cp; +} #ifndef YY_NO_INPUT #ifdef __cplusplus -static int yyinput() + static int yyinput (void) #else -static int input() + static int input (void) #endif - { + +{ int c; + + *(yy_c_buf_p) = (yy_hold_char); - *yy_c_buf_p = yy_hold_char; - - if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR ) + if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) { /* yy_c_buf_p now points to the character we want to return. * If this occurs *before* the EOB characters, then it's a * valid NUL; if not, then we've hit the end of the buffer. */ - if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] ) + if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) /* This was really a NUL. */ - *yy_c_buf_p = '\0'; + *(yy_c_buf_p) = '\0'; else { /* need more input */ - int offset = yy_c_buf_p - yytext_ptr; - ++yy_c_buf_p; + int offset = (yy_c_buf_p) - (yytext_ptr); + ++(yy_c_buf_p); - switch ( yy_get_next_buffer() ) + switch ( yy_get_next_buffer( ) ) { case EOB_ACT_LAST_MATCH: /* This happens because yy_g_n_b() @@ -3784,16 +3866,16 @@ static int input() */ /* Reset buffer status. */ - yyrestart( yyin ); + pcap_restart(pcap_in ); - /* fall through */ + /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { - if ( yywrap() ) + if ( pcap_wrap( ) ) return EOF; - if ( ! yy_did_buffer_switch_on_eof ) + if ( ! (yy_did_buffer_switch_on_eof) ) YY_NEW_FILE; #ifdef __cplusplus return yyinput(); @@ -3803,167 +3885,169 @@ static int input() } case EOB_ACT_CONTINUE_SCAN: - yy_c_buf_p = yytext_ptr + offset; + (yy_c_buf_p) = (yytext_ptr) + offset; break; } } } - c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */ - *yy_c_buf_p = '\0'; /* preserve yytext */ - yy_hold_char = *++yy_c_buf_p; - + c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ + *(yy_c_buf_p) = '\0'; /* preserve pcap_text */ + (yy_hold_char) = *++(yy_c_buf_p); return c; - } -#endif /* YY_NO_INPUT */ +} +#endif /* ifndef YY_NO_INPUT */ -#ifdef YY_USE_PROTOS -void yyrestart( FILE *input_file ) -#else -void yyrestart( input_file ) -FILE *input_file; -#endif - { - if ( ! yy_current_buffer ) - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); - - yy_init_buffer( yy_current_buffer, input_file ); - yy_load_buffer_state(); +/** Immediately switch to a different input stream. + * @param input_file A readable stream. + * + * @note This function does not reset the start condition to @c INITIAL . + */ + void pcap_restart (FILE * input_file ) +{ + + if ( ! YY_CURRENT_BUFFER ){ + pcap_ensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + pcap__create_buffer(pcap_in,YY_BUF_SIZE ); } + pcap__init_buffer(YY_CURRENT_BUFFER,input_file ); + pcap__load_buffer_state( ); +} -#ifdef YY_USE_PROTOS -void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer ) -#else -void yy_switch_to_buffer( new_buffer ) -YY_BUFFER_STATE new_buffer; -#endif - { - if ( yy_current_buffer == new_buffer ) +/** Switch to a different input buffer. + * @param new_buffer The new input buffer. + * + */ + void pcap__switch_to_buffer (YY_BUFFER_STATE new_buffer ) +{ + + /* TODO. We should be able to replace this entire function body + * with + * pcap_pop_buffer_state(); + * pcap_push_buffer_state(new_buffer); + */ + pcap_ensure_buffer_stack (); + if ( YY_CURRENT_BUFFER == new_buffer ) return; - if ( yy_current_buffer ) + if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ - *yy_c_buf_p = yy_hold_char; - yy_current_buffer->yy_buf_pos = yy_c_buf_p; - yy_current_buffer->yy_n_chars = yy_n_chars; + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } - yy_current_buffer = new_buffer; - yy_load_buffer_state(); + YY_CURRENT_BUFFER_LVALUE = new_buffer; + pcap__load_buffer_state( ); /* We don't actually know whether we did this switch during - * EOF (yywrap()) processing, but the only time this flag - * is looked at is after yywrap() is called, so it's safe + * EOF (pcap_wrap()) processing, but the only time this flag + * is looked at is after pcap_wrap() is called, so it's safe * to go ahead and always set it. */ - yy_did_buffer_switch_on_eof = 1; - } + (yy_did_buffer_switch_on_eof) = 1; +} +static void pcap__load_buffer_state (void) +{ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; + pcap_in = YY_CURRENT_BUFFER_LVALUE->yy_input_file; + (yy_hold_char) = *(yy_c_buf_p); +} -#ifdef YY_USE_PROTOS -void yy_load_buffer_state( void ) -#else -void yy_load_buffer_state() -#endif - { - yy_n_chars = yy_current_buffer->yy_n_chars; - yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos; - yyin = yy_current_buffer->yy_input_file; - yy_hold_char = *yy_c_buf_p; - } - - -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_create_buffer( FILE *file, int size ) -#else -YY_BUFFER_STATE yy_create_buffer( file, size ) -FILE *file; -int size; -#endif - { +/** Allocate and initialize an input buffer state. + * @param file A readable stream. + * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. + * + * @return the allocated buffer state. + */ + YY_BUFFER_STATE pcap__create_buffer (FILE * file, int size ) +{ YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); + + b = (YY_BUFFER_STATE) pcap_alloc(sizeof( struct yy_buffer_state ) ); if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + YY_FATAL_ERROR( "out of dynamic memory in pcap__create_buffer()" ); b->yy_buf_size = size; /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ - b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 ); + b->yy_ch_buf = (char *) pcap_alloc(b->yy_buf_size + 2 ); if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + YY_FATAL_ERROR( "out of dynamic memory in pcap__create_buffer()" ); b->yy_is_our_buffer = 1; - yy_init_buffer( b, file ); + pcap__init_buffer(b,file ); return b; - } +} - -#ifdef YY_USE_PROTOS -void yy_delete_buffer( YY_BUFFER_STATE b ) -#else -void yy_delete_buffer( b ) -YY_BUFFER_STATE b; -#endif - { +/** Destroy the buffer. + * @param b a buffer created with pcap__create_buffer() + * + */ + void pcap__delete_buffer (YY_BUFFER_STATE b ) +{ + if ( ! b ) return; - if ( b == yy_current_buffer ) - yy_current_buffer = (YY_BUFFER_STATE) 0; + if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ + YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; if ( b->yy_is_our_buffer ) - yy_flex_free( (void *) b->yy_ch_buf ); + pcap_free((void *) b->yy_ch_buf ); - yy_flex_free( (void *) b ); - } + pcap_free((void *) b ); +} +#ifndef __cplusplus +extern int isatty (int ); +#endif /* __cplusplus */ + +/* Initializes or reinitializes a buffer. + * This function is sometimes called more than once on the same buffer, + * such as during a pcap_restart() or at EOF. + */ + static void pcap__init_buffer (YY_BUFFER_STATE b, FILE * file ) - -#ifdef YY_USE_PROTOS -void yy_init_buffer( YY_BUFFER_STATE b, FILE *file ) -#else -void yy_init_buffer( b, file ) -YY_BUFFER_STATE b; -FILE *file; -#endif - - - { - yy_flush_buffer( b ); +{ + int oerrno = errno; + + pcap__flush_buffer(b ); b->yy_input_file = file; b->yy_fill_buffer = 1; -#if YY_ALWAYS_INTERACTIVE - b->yy_is_interactive = 1; -#else -#if YY_NEVER_INTERACTIVE - b->yy_is_interactive = 0; -#else - b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; -#endif -#endif - } + /* If b is the current buffer, then pcap__init_buffer was _probably_ + * called from pcap_restart() or through yy_get_next_buffer. + * In that case, we don't want to reset the lineno or column. + */ + if (b != YY_CURRENT_BUFFER){ + b->yy_bs_lineno = 1; + b->yy_bs_column = 0; + } + b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; + + errno = oerrno; +} -#ifdef YY_USE_PROTOS -void yy_flush_buffer( YY_BUFFER_STATE b ) -#else -void yy_flush_buffer( b ) -YY_BUFFER_STATE b; -#endif - - { - if ( ! b ) +/** Discard all buffered characters. On the next scan, YY_INPUT will be called. + * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. + * + */ + void pcap__flush_buffer (YY_BUFFER_STATE b ) +{ + if ( ! b ) return; b->yy_n_chars = 0; @@ -3980,31 +4064,123 @@ YY_BUFFER_STATE b; b->yy_at_bol = 1; b->yy_buffer_status = YY_BUFFER_NEW; - if ( b == yy_current_buffer ) - yy_load_buffer_state(); + if ( b == YY_CURRENT_BUFFER ) + pcap__load_buffer_state( ); +} + +/** Pushes the new state onto the stack. The new state becomes + * the current state. This function will allocate the stack + * if necessary. + * @param new_buffer The new state. + * + */ +void pcap_push_buffer_state (YY_BUFFER_STATE new_buffer ) +{ + if (new_buffer == NULL) + return; + + pcap_ensure_buffer_stack(); + + /* This block is copied from pcap__switch_to_buffer. */ + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + /* Only push if top exists. Otherwise, replace top. */ + if (YY_CURRENT_BUFFER) + (yy_buffer_stack_top)++; + YY_CURRENT_BUFFER_LVALUE = new_buffer; + + /* copied from pcap__switch_to_buffer. */ + pcap__load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; +} + +/** Removes and deletes the top of the stack, if present. + * The next element becomes the new top. + * + */ +void pcap_pop_buffer_state (void) +{ + if (!YY_CURRENT_BUFFER) + return; + + pcap__delete_buffer(YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + if ((yy_buffer_stack_top) > 0) + --(yy_buffer_stack_top); + + if (YY_CURRENT_BUFFER) { + pcap__load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; + } +} + +/* Allocates the stack if it does not exist. + * Guarantees space for at least one push. + */ +static void pcap_ensure_buffer_stack (void) +{ + int num_to_alloc; + + if (!(yy_buffer_stack)) { + + /* First allocation is just for 2 elements, since we don't know if this + * scanner will even need a stack. We use 2 instead of 1 to avoid an + * immediate realloc on the next call. + */ + num_to_alloc = 1; + (yy_buffer_stack) = (struct yy_buffer_state**)pcap_alloc + (num_to_alloc * sizeof(struct yy_buffer_state*) + ); + + memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); + + (yy_buffer_stack_max) = num_to_alloc; + (yy_buffer_stack_top) = 0; + return; } + if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ -#ifndef YY_NO_SCAN_BUFFER -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size ) -#else -YY_BUFFER_STATE yy_scan_buffer( base, size ) -char *base; -yy_size_t size; -#endif - { + /* Increase the buffer to prepare for a possible push. */ + int grow_size = 8 /* arbitrary grow size */; + + num_to_alloc = (yy_buffer_stack_max) + grow_size; + (yy_buffer_stack) = (struct yy_buffer_state**)pcap_realloc + ((yy_buffer_stack), + num_to_alloc * sizeof(struct yy_buffer_state*) + ); + + /* zero only the new slots.*/ + memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); + (yy_buffer_stack_max) = num_to_alloc; + } +} + +/** Setup the input buffer state to scan directly from a user-specified character buffer. + * @param base the character buffer + * @param size the size in bytes of the character buffer + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE pcap__scan_buffer (char * base, yy_size_t size ) +{ YY_BUFFER_STATE b; - + if ( size < 2 || base[size-2] != YY_END_OF_BUFFER_CHAR || base[size-1] != YY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ return 0; - b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); + b = (YY_BUFFER_STATE) pcap_alloc(sizeof( struct yy_buffer_state ) ); if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); + YY_FATAL_ERROR( "out of dynamic memory in pcap__scan_buffer()" ); b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ b->yy_buf_pos = b->yy_ch_buf = base; @@ -4016,58 +4192,53 @@ yy_size_t size; b->yy_fill_buffer = 0; b->yy_buffer_status = YY_BUFFER_NEW; - yy_switch_to_buffer( b ); + pcap__switch_to_buffer(b ); return b; - } -#endif +} +/** Setup the input buffer state to scan a string. The next call to pcap_lex() will + * scan from a @e copy of @a str. + * @param yystr a NUL-terminated string to scan + * + * @return the newly allocated buffer state object. + * @note If you want to scan bytes that may contain NUL values, then use + * pcap__scan_bytes() instead. + */ +YY_BUFFER_STATE pcap__scan_string (yyconst char * yystr ) +{ + + return pcap__scan_bytes(yystr,strlen(yystr) ); +} -#ifndef YY_NO_SCAN_STRING -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str ) -#else -YY_BUFFER_STATE yy_scan_string( yy_str ) -yyconst char *yy_str; -#endif - { - int len; - for ( len = 0; yy_str[len]; ++len ) - ; - - return yy_scan_bytes( yy_str, len ); - } -#endif - - -#ifndef YY_NO_SCAN_BYTES -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len ) -#else -YY_BUFFER_STATE yy_scan_bytes( bytes, len ) -yyconst char *bytes; -int len; -#endif - { +/** Setup the input buffer state to scan the given bytes. The next call to pcap_lex() will + * scan from a @e copy of @a bytes. + * @param bytes the byte buffer to scan + * @param len the number of bytes in the buffer pointed to by @a bytes. + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE pcap__scan_bytes (yyconst char * yybytes, int _yybytes_len ) +{ YY_BUFFER_STATE b; char *buf; yy_size_t n; int i; - + /* Get memory for full buffer, including space for trailing EOB's. */ - n = len + 2; - buf = (char *) yy_flex_alloc( n ); + n = _yybytes_len + 2; + buf = (char *) pcap_alloc(n ); if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); + YY_FATAL_ERROR( "out of dynamic memory in pcap__scan_bytes()" ); - for ( i = 0; i < len; ++i ) - buf[i] = bytes[i]; + for ( i = 0; i < _yybytes_len; ++i ) + buf[i] = yybytes[i]; - buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR; + buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; - b = yy_scan_buffer( buf, n ); + b = pcap__scan_buffer(buf,n ); if ( ! b ) - YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); + YY_FATAL_ERROR( "bad buffer in pcap__scan_bytes()" ); /* It's okay to grow etc. this buffer, and we should throw it * away when we're done. @@ -4075,78 +4246,17 @@ int len; b->yy_is_our_buffer = 1; return b; - } -#endif - - -#ifndef YY_NO_PUSH_STATE -#ifdef YY_USE_PROTOS -static void yy_push_state( int new_state ) -#else -static void yy_push_state( new_state ) -int new_state; -#endif - { - if ( yy_start_stack_ptr >= yy_start_stack_depth ) - { - yy_size_t new_size; - - yy_start_stack_depth += YY_START_STACK_INCR; - new_size = yy_start_stack_depth * sizeof( int ); - - if ( ! yy_start_stack ) - yy_start_stack = (int *) yy_flex_alloc( new_size ); - - else - yy_start_stack = (int *) yy_flex_realloc( - (void *) yy_start_stack, new_size ); - - if ( ! yy_start_stack ) - YY_FATAL_ERROR( - "out of memory expanding start-condition stack" ); - } - - yy_start_stack[yy_start_stack_ptr++] = YY_START; - - BEGIN(new_state); - } -#endif - - -#ifndef YY_NO_POP_STATE -static void yy_pop_state() - { - if ( --yy_start_stack_ptr < 0 ) - YY_FATAL_ERROR( "start-condition stack underflow" ); - - BEGIN(yy_start_stack[yy_start_stack_ptr]); - } -#endif - - -#ifndef YY_NO_TOP_STATE -static int yy_top_state() - { - return yy_start_stack[yy_start_stack_ptr - 1]; - } -#endif +} #ifndef YY_EXIT_FAILURE #define YY_EXIT_FAILURE 2 #endif -#ifdef YY_USE_PROTOS -static void yy_fatal_error( yyconst char msg[] ) -#else -static void yy_fatal_error( msg ) -char msg[]; -#endif - { - (void) fprintf( stderr, "%s\n", msg ); +static void yy_fatal_error (yyconst char* msg ) +{ + (void) fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); - } - - +} /* Redefine yyless() so it works in section 3 code. */ @@ -4154,69 +4264,178 @@ char msg[]; #define yyless(n) \ do \ { \ - /* Undo effects of setting up yytext. */ \ - yytext[yyleng] = yy_hold_char; \ - yy_c_buf_p = yytext + n; \ - yy_hold_char = *yy_c_buf_p; \ - *yy_c_buf_p = '\0'; \ - yyleng = n; \ + /* Undo effects of setting up pcap_text. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + pcap_text[pcap_leng] = (yy_hold_char); \ + (yy_c_buf_p) = pcap_text + yyless_macro_arg; \ + (yy_hold_char) = *(yy_c_buf_p); \ + *(yy_c_buf_p) = '\0'; \ + pcap_leng = yyless_macro_arg; \ } \ while ( 0 ) +/* Accessor methods (get/set functions) to struct members. */ -/* Internal utility routines. */ +/** Get the current line number. + * + */ +int pcap_get_lineno (void) +{ + + return pcap_lineno; +} + +/** Get the input stream. + * + */ +FILE *pcap_get_in (void) +{ + return pcap_in; +} + +/** Get the output stream. + * + */ +FILE *pcap_get_out (void) +{ + return pcap_out; +} + +/** Get the length of the current token. + * + */ +int pcap_get_leng (void) +{ + return pcap_leng; +} + +/** Get the current token. + * + */ + +char *pcap_get_text (void) +{ + return pcap_text; +} + +/** Set the current line number. + * @param line_number + * + */ +void pcap_set_lineno (int line_number ) +{ + + pcap_lineno = line_number; +} + +/** Set the input stream. This does not discard the current + * input buffer. + * @param in_str A readable stream. + * + * @see pcap__switch_to_buffer + */ +void pcap_set_in (FILE * in_str ) +{ + pcap_in = in_str ; +} + +void pcap_set_out (FILE * out_str ) +{ + pcap_out = out_str ; +} + +int pcap_get_debug (void) +{ + return pcap__flex_debug; +} + +void pcap_set_debug (int bdebug ) +{ + pcap__flex_debug = bdebug ; +} + +static int yy_init_globals (void) +{ + /* Initialization is the same as for the non-reentrant scanner. + * This function is called from pcap_lex_destroy(), so don't allocate here. + */ + + (yy_buffer_stack) = 0; + (yy_buffer_stack_top) = 0; + (yy_buffer_stack_max) = 0; + (yy_c_buf_p) = (char *) 0; + (yy_init) = 0; + (yy_start) = 0; + +/* Defined in main.c */ +#ifdef YY_STDINIT + pcap_in = stdin; + pcap_out = stdout; +#else + pcap_in = (FILE *) 0; + pcap_out = (FILE *) 0; +#endif + + /* For future reference: Set errno on error, since we are called by + * pcap_lex_init() + */ + return 0; +} + +/* pcap_lex_destroy is for both reentrant and non-reentrant scanners. */ +int pcap_lex_destroy (void) +{ + + /* Pop the buffer stack, destroying each element. */ + while(YY_CURRENT_BUFFER){ + pcap__delete_buffer(YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + pcap_pop_buffer_state(); + } + + /* Destroy the stack itself. */ + pcap_free((yy_buffer_stack) ); + (yy_buffer_stack) = NULL; + + /* Reset the globals. This is important in a non-reentrant scanner so the next time + * pcap_lex() is called, initialization will occur. */ + yy_init_globals( ); + + return 0; +} + +/* + * Internal utility routines. + */ #ifndef yytext_ptr -#ifdef YY_USE_PROTOS -static void yy_flex_strncpy( char *s1, yyconst char *s2, int n ) -#else -static void yy_flex_strncpy( s1, s2, n ) -char *s1; -yyconst char *s2; -int n; -#endif - { +static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) +{ register int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; - } +} #endif #ifdef YY_NEED_STRLEN -#ifdef YY_USE_PROTOS -static int yy_flex_strlen( yyconst char *s ) -#else -static int yy_flex_strlen( s ) -yyconst char *s; -#endif - { +static int yy_flex_strlen (yyconst char * s ) +{ register int n; for ( n = 0; s[n]; ++n ) ; return n; - } +} #endif - -#ifdef YY_USE_PROTOS -static void *yy_flex_alloc( yy_size_t size ) -#else -static void *yy_flex_alloc( size ) -yy_size_t size; -#endif - { +void *pcap_alloc (yy_size_t size ) +{ return (void *) malloc( size ); - } +} -#ifdef YY_USE_PROTOS -static void *yy_flex_realloc( void *ptr, yy_size_t size ) -#else -static void *yy_flex_realloc( ptr, size ) -void *ptr; -yy_size_t size; -#endif - { +void *pcap_realloc (void * ptr, yy_size_t size ) +{ /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter @@ -4225,33 +4444,24 @@ yy_size_t size; * as though doing an assignment. */ return (void *) realloc( (char *) ptr, size ); - } +} -#ifdef YY_USE_PROTOS -static void yy_flex_free( void *ptr ) -#else -static void yy_flex_free( ptr ) -void *ptr; -#endif - { - free( ptr ); - } +void pcap_free (void * ptr ) +{ + free( (char *) ptr ); /* see pcap_realloc() for (char *) cast */ +} + +#define YYTABLES_NAME "yytables" + +#line 361 "scanner.l" -#if YY_MAIN -int main() - { - yylex(); - return 0; - } -#endif -#line 357 "scanner.l" void lex_init(buf) - char *buf; + const char *buf; { #ifdef FLEX_SCANNER - in_buffer = yy_scan_string(buf); + in_buffer = pcap__scan_string(buf); #else in_buffer = buf; #endif @@ -4265,17 +4475,17 @@ lex_cleanup() { #ifdef FLEX_SCANNER if (in_buffer != NULL) - yy_delete_buffer(in_buffer); + pcap__delete_buffer(in_buffer); in_buffer = NULL; #endif } /* - * Also define a yywrap. Note that if we're using flex, it will + * Also define a pcap_wrap. Note that if we're using flex, it will * define a macro to map this identifier to pcap_wrap. */ int -yywrap() +pcap_wrap() { return 1; } @@ -4319,3 +4529,4 @@ stoi(s) return n; } + diff --git a/libpcap/scanner.l b/libpcap/scanner.l index 72d7dcfb8..01face17d 100644 --- a/libpcap/scanner.l +++ b/libpcap/scanner.l @@ -22,7 +22,7 @@ #ifndef lint static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/libpcap/scanner.l,v 1.99.2.4 2005/09/05 09:08:07 guy Exp $ (LBL)"; + "@(#) $Header: /tcpdump/master/libpcap/scanner.l,v 1.99.2.9 2007/06/11 09:52:05 guy Exp $ (LBL)"; #endif #ifdef HAVE_CONFIG_H @@ -81,11 +81,11 @@ N ([0-9]+|(0X|0x)[0-9A-Fa-f]+) B ([0-9A-Fa-f][0-9A-Fa-f]?) W ([0-9A-Fa-f][0-9A-Fa-f]?[0-9A-Fa-f]?[0-9A-Fa-f]?) -%a 16000 -%o 19000 -%e 6000 -%k 4000 -%p 25000 +%a 18400 +%o 21500 +%e 7600 +%k 4550 +%p 27600 %n 2000 V680 {W}:{W}:{W}:{W}:{W}:{W}:{W}:{W} @@ -288,6 +288,10 @@ srnr|subrulenum return PF_SRNR; reason return PF_REASON; action return PF_ACTION; +fisu return FISU; +lssu return LSSU; +lsu return LSSU; +msu return MSU; sio return SIO; opc return OPC; dpc return DPC; @@ -357,7 +361,7 @@ tcp-urg { yylval.i = 0x20; return NUM; } %% void lex_init(buf) - char *buf; + const char *buf; { #ifdef FLEX_SCANNER in_buffer = yy_scan_string(buf); diff --git a/libpcap/tokdefs.h b/libpcap/tokdefs.h index 9cd7280d6..8eb81b297 100644 --- a/libpcap/tokdefs.h +++ b/libpcap/tokdefs.h @@ -1,106 +1,257 @@ -#ifndef YYERRCODE -#define YYERRCODE 256 -#endif +/* A Bison parser, made by GNU Bison 2.3. */ -#define DST 257 -#define SRC 258 -#define HOST 259 -#define GATEWAY 260 -#define NET 261 -#define NETMASK 262 -#define PORT 263 -#define PORTRANGE 264 -#define LESS 265 -#define GREATER 266 -#define PROTO 267 -#define PROTOCHAIN 268 -#define CBYTE 269 -#define ARP 270 -#define RARP 271 -#define IP 272 -#define SCTP 273 -#define TCP 274 -#define UDP 275 -#define ICMP 276 -#define IGMP 277 -#define IGRP 278 -#define PIM 279 -#define VRRP 280 -#define ATALK 281 -#define AARP 282 -#define DECNET 283 -#define LAT 284 -#define SCA 285 -#define MOPRC 286 -#define MOPDL 287 -#define TK_BROADCAST 288 -#define TK_MULTICAST 289 -#define NUM 290 -#define INBOUND 291 -#define OUTBOUND 292 -#define PF_IFNAME 293 -#define PF_RSET 294 -#define PF_RNR 295 -#define PF_SRNR 296 -#define PF_REASON 297 -#define PF_ACTION 298 -#define LINK 299 -#define GEQ 300 -#define LEQ 301 -#define NEQ 302 -#define ID 303 -#define EID 304 -#define HID 305 -#define HID6 306 -#define AID 307 -#define LSH 308 -#define RSH 309 -#define LEN 310 -#define IPV6 311 -#define ICMPV6 312 -#define AH 313 -#define ESP 314 -#define VLAN 315 -#define MPLS 316 -#define PPPOED 317 -#define PPPOES 318 -#define ISO 319 -#define ESIS 320 -#define CLNP 321 -#define ISIS 322 -#define L1 323 -#define L2 324 -#define IIH 325 -#define LSP 326 -#define SNP 327 -#define CSNP 328 -#define PSNP 329 -#define STP 330 -#define IPX 331 -#define NETBEUI 332 -#define LANE 333 -#define LLC 334 -#define METAC 335 -#define BCC 336 -#define SC 337 -#define ILMIC 338 -#define OAMF4EC 339 -#define OAMF4SC 340 -#define OAM 341 -#define OAMF4 342 -#define CONNECTMSG 343 -#define METACONNECT 344 -#define VPI 345 -#define VCI 346 -#define RADIO 347 -#define SIO 348 -#define OPC 349 -#define DPC 350 -#define SLS 351 -#define OR 352 -#define AND 353 -#define UMINUS 354 -typedef union { +/* Skeleton interface for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + DST = 258, + SRC = 259, + HOST = 260, + GATEWAY = 261, + NET = 262, + NETMASK = 263, + PORT = 264, + PORTRANGE = 265, + LESS = 266, + GREATER = 267, + PROTO = 268, + PROTOCHAIN = 269, + CBYTE = 270, + ARP = 271, + RARP = 272, + IP = 273, + SCTP = 274, + TCP = 275, + UDP = 276, + ICMP = 277, + IGMP = 278, + IGRP = 279, + PIM = 280, + VRRP = 281, + ATALK = 282, + AARP = 283, + DECNET = 284, + LAT = 285, + SCA = 286, + MOPRC = 287, + MOPDL = 288, + TK_BROADCAST = 289, + TK_MULTICAST = 290, + NUM = 291, + INBOUND = 292, + OUTBOUND = 293, + PF_IFNAME = 294, + PF_RSET = 295, + PF_RNR = 296, + PF_SRNR = 297, + PF_REASON = 298, + PF_ACTION = 299, + LINK = 300, + GEQ = 301, + LEQ = 302, + NEQ = 303, + ID = 304, + EID = 305, + HID = 306, + HID6 = 307, + AID = 308, + LSH = 309, + RSH = 310, + LEN = 311, + IPV6 = 312, + ICMPV6 = 313, + AH = 314, + ESP = 315, + VLAN = 316, + MPLS = 317, + PPPOED = 318, + PPPOES = 319, + ISO = 320, + ESIS = 321, + CLNP = 322, + ISIS = 323, + L1 = 324, + L2 = 325, + IIH = 326, + LSP = 327, + SNP = 328, + CSNP = 329, + PSNP = 330, + STP = 331, + IPX = 332, + NETBEUI = 333, + LANE = 334, + LLC = 335, + METAC = 336, + BCC = 337, + SC = 338, + ILMIC = 339, + OAMF4EC = 340, + OAMF4SC = 341, + OAM = 342, + OAMF4 = 343, + CONNECTMSG = 344, + METACONNECT = 345, + VPI = 346, + VCI = 347, + RADIO = 348, + FISU = 349, + LSSU = 350, + MSU = 351, + SIO = 352, + OPC = 353, + DPC = 354, + SLS = 355, + AND = 356, + OR = 357, + UMINUS = 358 + }; +#endif +/* Tokens. */ +#define DST 258 +#define SRC 259 +#define HOST 260 +#define GATEWAY 261 +#define NET 262 +#define NETMASK 263 +#define PORT 264 +#define PORTRANGE 265 +#define LESS 266 +#define GREATER 267 +#define PROTO 268 +#define PROTOCHAIN 269 +#define CBYTE 270 +#define ARP 271 +#define RARP 272 +#define IP 273 +#define SCTP 274 +#define TCP 275 +#define UDP 276 +#define ICMP 277 +#define IGMP 278 +#define IGRP 279 +#define PIM 280 +#define VRRP 281 +#define ATALK 282 +#define AARP 283 +#define DECNET 284 +#define LAT 285 +#define SCA 286 +#define MOPRC 287 +#define MOPDL 288 +#define TK_BROADCAST 289 +#define TK_MULTICAST 290 +#define NUM 291 +#define INBOUND 292 +#define OUTBOUND 293 +#define PF_IFNAME 294 +#define PF_RSET 295 +#define PF_RNR 296 +#define PF_SRNR 297 +#define PF_REASON 298 +#define PF_ACTION 299 +#define LINK 300 +#define GEQ 301 +#define LEQ 302 +#define NEQ 303 +#define ID 304 +#define EID 305 +#define HID 306 +#define HID6 307 +#define AID 308 +#define LSH 309 +#define RSH 310 +#define LEN 311 +#define IPV6 312 +#define ICMPV6 313 +#define AH 314 +#define ESP 315 +#define VLAN 316 +#define MPLS 317 +#define PPPOED 318 +#define PPPOES 319 +#define ISO 320 +#define ESIS 321 +#define CLNP 322 +#define ISIS 323 +#define L1 324 +#define L2 325 +#define IIH 326 +#define LSP 327 +#define SNP 328 +#define CSNP 329 +#define PSNP 330 +#define STP 331 +#define IPX 332 +#define NETBEUI 333 +#define LANE 334 +#define LLC 335 +#define METAC 336 +#define BCC 337 +#define SC 338 +#define ILMIC 339 +#define OAMF4EC 340 +#define OAMF4SC 341 +#define OAM 342 +#define OAMF4 343 +#define CONNECTMSG 344 +#define METACONNECT 345 +#define VPI 346 +#define VCI 347 +#define RADIO 348 +#define FISU 349 +#define LSSU 350 +#define MSU 351 +#define SIO 352 +#define OPC 353 +#define DPC 354 +#define SLS 355 +#define AND 356 +#define OR 357 +#define UMINUS 358 + + + + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +#line 90 "grammar.y" +{ int i; bpf_u_int32 h; u_char *e; @@ -114,5 +265,14 @@ typedef union { struct block *b; } blk; struct block *rblk; -} YYSTYPE; -extern YYSTYPE yylval; +} +/* Line 1489 of yacc.c. */ +#line 271 "y.tab.h" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + +extern YYSTYPE pcap_lval; +