]> git.ipfire.org Git - ipfire-2.x.git/commitdiff
Webinterface-Bilder neu gemacht | IPAC-NG-Patches installiert | Berkeley-DB installiert
authorms <ms@ea5c0bd1-69bd-2848-81d8-4f18e57aeed8>
Mon, 6 Mar 2006 14:30:36 +0000 (14:30 +0000)
committerms <ms@ea5c0bd1-69bd-2848-81d8-4f18e57aeed8>
Mon, 6 Mar 2006 14:30:36 +0000 (14:30 +0000)
git-svn-id: http://svn.ipfire.org/svn/ipfire/trunk@77 ea5c0bd1-69bd-2848-81d8-4f18e57aeed8

42 files changed:
doc/packages-list.txt
doc/updated-sources.txt [deleted file]
html/cgi-bin/connections.cgi
html/html/images/background.gif [new file with mode: 0644]
html/html/images/boxbottom1.png
html/html/images/boxbottom2.png
html/html/images/boxbottom3.png
html/html/images/boxleft.png
html/html/images/boxright.png
html/html/images/boxtop1.png
html/html/images/boxtop2.png
html/html/images/boxtop3.png
html/html/images/forward.gif
html/html/images/header.png
html/html/images/header_icons.gif [new file with mode: 0644]
html/html/images/heading-back.gif [new file with mode: 0644]
html/html/images/help.gif [new file with mode: 0644]
html/html/images/logo_ipfire.gif [new file with mode: 0644]
html/html/images/logo_ipfire2.gif [new file with mode: 0644]
html/html/images/logout.gif [new file with mode: 0644]
html/html/images/menu_item.gif [new file with mode: 0644]
html/html/images/menu_left_bottom.gif [new file with mode: 0644]
html/html/images/menu_left_selected.gif [new file with mode: 0644]
html/html/images/menu_left_top.gif [new file with mode: 0644]
html/html/images/menu_top_left.gif [new file with mode: 0644]
html/html/images/menu_top_left_selected.gif [new file with mode: 0644]
html/html/images/menu_top_right.gif [new file with mode: 0644]
html/html/images/menu_top_right_selected.gif [new file with mode: 0644]
html/html/images/sflogo.png [new file with mode: 0644]
html/html/images/stock_down-16.png [new file with mode: 0644]
html/html/images/stock_ok.png [new file with mode: 0644]
html/html/images/stock_stop.png [new file with mode: 0644]
html/html/images/stock_up-16.png [new file with mode: 0644]
html/html/images/table-header.gif [new file with mode: 0644]
lfs/apache
lfs/berkeley-DB
lfs/configroot
lfs/ipac-ng
make.sh
src/ROOTFILES.i386
src/patches/ipac-ng-1.31-fetchcounter.patch [new file with mode: 0644]
src/patches/ipac-ng-1.31-iptables-1.3.1.patch [new file with mode: 0644]

index 5e4e43c2242596a254e5c575fffd790ff56e4062..4b13b1e66c720b0ef811a72f03a65831a017fd0a 100644 (file)
@@ -74,7 +74,7 @@
 * iana-etc-2.00
 * ibod
 * inetutils-1.4.2
-* ipac-ng-1.28
+* ipac-ng-1.31
 * ipaddr-1.2
 * iproute2-2.4.7-now-ss010824
 * iptables-1.3.5
diff --git a/doc/updated-sources.txt b/doc/updated-sources.txt
deleted file mode 100644 (file)
index 65042b7..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-Dateien IPCOP_v1_4_10_FINAL/config/cfgroot/general-functions.pl und ipfire-1.4.11/config/cfgroot/general-functions.pl sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/config/cfgroot/header-menu.pl und ipfire-1.4.11/config/cfgroot/header-menu.pl sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/config/cfgroot/proxy-acl und ipfire-1.4.11/config/cfgroot/proxy-acl sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/config/etc/inittab und ipfire-1.4.11/config/etc/inittab sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/config/kernel/kernel.config.alpha und ipfire-1.4.11/config/kernel/kernel.config.alpha sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/config/kernel/kernel.config.i386 und ipfire-1.4.11/config/kernel/kernel.config.i386 sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/config/kernel/kernel.config.i386.installer und ipfire-1.4.11/config/kernel/kernel.config.i386.installer sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/config/kernel/kernel.config.i386.smp und ipfire-1.4.11/config/kernel/kernel.config.i386.smp sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/config/ssl/openssl.cnf und ipfire-1.4.11/config/ssl/openssl.cnf sind verschieden.
-Nur in ipfire-1.4.11/doc: make.sh-usage.
-Dateien IPCOP_v1_4_10_FINAL/home/httpd/cgi-bin/aliases.cgi und ipfire-1.4.11/html/cgi-bin/aliases.cgi sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/home/httpd/cgi-bin/backup.cgi und ipfire-1.4.11/html/cgi-bin/backup.cgi sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/home/httpd/cgi-bin/credits.cgi und ipfire-1.4.11/html/cgi-bin/credits.cgi sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/home/httpd/cgi-bin/ddns.cgi und ipfire-1.4.11/html/cgi-bin/ddns.cgi sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/home/httpd/cgi-bin/dhcp.cgi und ipfire-1.4.11/html/cgi-bin/dhcp.cgi sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/home/httpd/cgi-bin/logs.cgi/log.dat und ipfire-1.4.11/html/cgi-bin/logs.cgi/log.dat sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/home/httpd/cgi-bin/pppsetup.cgi und ipfire-1.4.11/html/cgi-bin/pppsetup.cgi sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/home/httpd/cgi-bin/proxy.cgi und ipfire-1.4.11/html/cgi-bin/proxy.cgi sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/home/httpd/cgi-bin/shutdown.cgi und ipfire-1.4.11/html/cgi-bin/shutdown.cgi sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/home/httpd/cgi-bin/updates.cgi und ipfire-1.4.11/html/cgi-bin/updates.cgi sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/home/httpd/cgi-bin/vpnmain.cgi und ipfire-1.4.11/html/cgi-bin/vpnmain.cgi sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/langs/bz/install/lang_bz.c und ipfire-1.4.11/langs/bz/install/lang_bz.c sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/langs/cs/install/lang_cs.c und ipfire-1.4.11/langs/cs/install/lang_cs.c sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/langs/da/cgi-bin/da.pl und ipfire-1.4.11/langs/da/cgi-bin/da.pl sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/langs/da/install/lang_da.c und ipfire-1.4.11/langs/da/install/lang_da.c sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/langs/de/cgi-bin/de.pl und ipfire-1.4.11/langs/de/cgi-bin/de.pl sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/langs/de/install/lang_de.c und ipfire-1.4.11/langs/de/install/lang_de.c sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/langs/el/cgi-bin/el.pl und ipfire-1.4.11/langs/el/cgi-bin/el.pl sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/langs/el/install/lang_el.c und ipfire-1.4.11/langs/el/install/lang_el.c sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/langs/en/cgi-bin/en.pl und ipfire-1.4.11/langs/en/cgi-bin/en.pl sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/langs/en/install/lang_en.c und ipfire-1.4.11/langs/en/install/lang_en.c sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/langs/es/cgi-bin/es.pl und ipfire-1.4.11/langs/es/cgi-bin/es.pl sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/langs/es/install/lang_es.c und ipfire-1.4.11/langs/es/install/lang_es.c sind verschieden.
-Nur in ipfire-1.4.11/langs: fa.
-Dateien IPCOP_v1_4_10_FINAL/langs/fi/cgi-bin/fi.pl und ipfire-1.4.11/langs/fi/cgi-bin/fi.pl sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/langs/fi/install/lang_fi.c und ipfire-1.4.11/langs/fi/install/lang_fi.c sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/langs/fr/cgi-bin/fr.pl und ipfire-1.4.11/langs/fr/cgi-bin/fr.pl sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/langs/fr/install/lang_fr.c und ipfire-1.4.11/langs/fr/install/lang_fr.c sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/langs/hu/install/lang_hu.c und ipfire-1.4.11/langs/hu/install/lang_hu.c sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/langs/it/install/lang_it.c und ipfire-1.4.11/langs/it/install/lang_it.c sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/langs/la/install/lang_la.c und ipfire-1.4.11/langs/la/install/lang_la.c sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/langs/list und ipfire-1.4.11/langs/list sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/langs/nl/cgi-bin/nl.pl und ipfire-1.4.11/langs/nl/cgi-bin/nl.pl sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/langs/nl/install/lang_nl.c und ipfire-1.4.11/langs/nl/install/lang_nl.c sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/langs/no/cgi-bin/no.pl und ipfire-1.4.11/langs/no/cgi-bin/no.pl sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/langs/no/install/lang_no.c und ipfire-1.4.11/langs/no/install/lang_no.c sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/langs/pl/install/lang_pl.c und ipfire-1.4.11/langs/pl/install/lang_pl.c sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/langs/pt/install/lang_pt.c und ipfire-1.4.11/langs/pt/install/lang_pt.c sind verschieden.
-Nur in ipfire-1.4.11/langs: sk.
-Dateien IPCOP_v1_4_10_FINAL/langs/so/install/lang_so.c und ipfire-1.4.11/langs/so/install/lang_so.c sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/langs/sv/cgi-bin/sv.pl und ipfire-1.4.11/langs/sv/cgi-bin/sv.pl sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/langs/sv/install/lang_sv.c und ipfire-1.4.11/langs/sv/install/lang_sv.c sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/langs/tr/install/lang_tr.c und ipfire-1.4.11/langs/tr/install/lang_tr.c sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/langs/vi/install/lang_vi.c und ipfire-1.4.11/langs/vi/install/lang_vi.c sind verschieden.
-Nur in ipfire-1.4.11/lfs: as86.
-Dateien IPCOP_v1_4_10_FINAL/lfs/boot.img und ipfire-1.4.11/lfs/boot.img sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/lfs/cdrom und ipfire-1.4.11/lfs/cdrom sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/lfs/Config und ipfire-1.4.11/lfs/Config sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/lfs/configroot und ipfire-1.4.11/lfs/configroot sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/lfs/coreutils und ipfire-1.4.11/lfs/coreutils sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/lfs/driver.img und ipfire-1.4.11/lfs/driver.img sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/lfs/eciadsl und ipfire-1.4.11/lfs/eciadsl sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/lfs/gcc und ipfire-1.4.11/lfs/gcc sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/lfs/hdparm und ipfire-1.4.11/lfs/hdparm sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/lfs/iana-etc und ipfire-1.4.11/lfs/iana-etc sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/lfs/initrd und ipfire-1.4.11/lfs/initrd sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/lfs/installer und ipfire-1.4.11/lfs/installer sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/lfs/ipac-ng und ipfire-1.4.11/lfs/ipac-ng sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/lfs/iptables und ipfire-1.4.11/lfs/iptables sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/lfs/linux und ipfire-1.4.11/lfs/linux sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/lfs/man-pages und ipfire-1.4.11/lfs/man-pages sind verschieden.
-Nur in ipfire-1.4.11/lfs: mbr.
-Nur in ipfire-1.4.11/lfs: ndiswrapper.
-Dateien IPCOP_v1_4_10_FINAL/lfs/openssl und ipfire-1.4.11/lfs/openssl sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/lfs/openswan und ipfire-1.4.11/lfs/openswan sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/lfs/rrdtool und ipfire-1.4.11/lfs/rrdtool sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/lfs/scsi.img und ipfire-1.4.11/lfs/scsi.img sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/lfs/setup und ipfire-1.4.11/lfs/setup sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/lfs/stage2 und ipfire-1.4.11/lfs/stage2 sind verschieden.
-Nur in ipfire-1.4.11/lfs: strip.
-Dateien IPCOP_v1_4_10_FINAL/lfs/tar und ipfire-1.4.11/lfs/tar sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/lfs/tcl und ipfire-1.4.11/lfs/tcl sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/lfs/util-linux und ipfire-1.4.11/lfs/util-linux sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/lfs/vlan und ipfire-1.4.11/lfs/vlan sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/lfs/wireless und ipfire-1.4.11/lfs/wireless sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/make.sh und ipfire-1.4.11/make.sh sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/src/install+setup/install/config.c und ipfire-1.4.11/src/install+setup/install/config.c sind verschieden.
-Nur in ipfire-1.4.11/src/install+setup/install: install2.c.
-Dateien IPCOP_v1_4_10_FINAL/src/install+setup/install/install.h und ipfire-1.4.11/src/install+setup/install/install.h sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/src/install+setup/install/main.c und ipfire-1.4.11/src/install+setup/install/main.c sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/src/install+setup/install/Makefile und ipfire-1.4.11/src/install+setup/install/Makefile sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/src/install+setup/install/nic.c und ipfire-1.4.11/src/install+setup/install/nic.c sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/src/install+setup/install/pcmcia.c und ipfire-1.4.11/src/install+setup/install/pcmcia.c sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/src/install+setup/install/scsi.c und ipfire-1.4.11/src/install+setup/install/scsi.c sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/src/install+setup/install/usb.c und ipfire-1.4.11/src/install+setup/install/usb.c sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/src/install+setup/libsmooth/main.c und ipfire-1.4.11/src/install+setup/libsmooth/main.c sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/src/install+setup/libsmooth/Makefile und ipfire-1.4.11/src/install+setup/libsmooth/Makefile sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/src/install+setup/setup/main.c und ipfire-1.4.11/src/install+setup/setup/main.c sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/src/install+setup/setup/networking.c und ipfire-1.4.11/src/install+setup/setup/networking.c sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/src/misc-progs/ipcopbackup.c und ipfire-1.4.11/src/misc-progs/ipcopbackup.c sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/src/misc-progs/ipcopbkcfg.c und ipfire-1.4.11/src/misc-progs/ipcopbkcfg.c sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/src/misc-progs/ipcoprscfg.c und ipfire-1.4.11/src/misc-progs/ipcoprscfg.c sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/src/misc-progs/Makefile und ipfire-1.4.11/src/misc-progs/Makefile sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/src/misc-progs/setfilters.c und ipfire-1.4.11/src/misc-progs/setfilters.c sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/src/misc-progs/setuid.c und ipfire-1.4.11/src/misc-progs/setuid.c sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/src/misc-progs/setuid.h und ipfire-1.4.11/src/misc-progs/setuid.h sind verschieden.
-Nur in ipfire-1.4.11/src/patches: ipac-ng-1.31-fetchcounter.patch.
-Nur in ipfire-1.4.11/src/patches: ipac-ng-1.31-iptables-1.3.1.patch.
-Nur in ipfire-1.4.11/src/patches: iptables-1.3.4-old-string.patch.
-Nur in ipfire-1.4.11/src/patches: linux-2.4-seg-4.patch.
-Dateien IPCOP_v1_4_10_FINAL/src/patches/patch-o-matic-ng-20040621_nf-log_2.4.29.patch und ipfire-1.4.11/src/patches/patch-o-matic-ng-20040621_nf-log_2.4.29.patch sind verschieden.
-Nur in IPCOP_v1_4_10_FINAL/src/patches: pomng.fix.
-Nur in ipfire-1.4.11/src/patches: pom-ng_proc-net-conntrack-permissions.patch.
-Dateien IPCOP_v1_4_10_FINAL/etc/rc.d/rc.firewall und ipfire-1.4.11/src/rc.d/rc.firewall sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/etc/rc.d/rc.red und ipfire-1.4.11/src/rc.d/rc.red sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/etc/rc.d/rc.sysinit und ipfire-1.4.11/src/rc.d/rc.sysinit sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/etc/rc.d/rc.updatered und ipfire-1.4.11/src/rc.d/rc.updatered sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/src/ROOTFILES.alpha und ipfire-1.4.11/src/ROOTFILES.alpha sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/src/ROOTFILES.i386 und ipfire-1.4.11/src/ROOTFILES.i386 sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/src/scripts/httpscert und ipfire-1.4.11/src/scripts/httpscert sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/src/scripts/makegraphs und ipfire-1.4.11/src/scripts/makegraphs sind verschieden.
-Dateien IPCOP_v1_4_10_FINAL/src/scripts/setddns.pl und ipfire-1.4.11/src/scripts/setddns.pl sind verschieden.
-Nur in ipfire-1.4.11/src/scripts: upgrade.
-Nur in ipfire-1.4.11/updates: 1.4.11.
index 36bbaf0ded2080df6315e27efe2fe4bb81a41071..8384253505690daf2f3d9f453a621bca5a4e60e7 100644 (file)
@@ -4,7 +4,9 @@
 #
 # (c) 2003 Dave Roberts <countzerouk@hotmail.com> - colour coded netfilter/iptables rewrite for 1.3
 #
-# $Id: connections.cgi,v 1.6.2.11 2005/02/24 07:44:35 gespinasse Exp $
+# (c) 2006 Franck - add sorting+filtering capability
+#
+# $Id: connections.cgi,v 1.6.2.12 2006/02/27 19:48:46 franck78 Exp $
 #
 
 # Setup GREEN, ORANGE, IPCOP, VPN CIDR networks, masklengths and colours only once
@@ -39,7 +41,8 @@ my @active = <ACTIVE>;
 close (ACTIVE);
 
 my @vpn = ('none');
-open (ACTIVE, "/proc/net/ipsec_eroute") and @vpn = <ACTIVE>; close (ACTIVE);
+open (ACTIVE, "/proc/net/ipsec_eroute") and @vpn = <ACTIVE>;
+close (ACTIVE);
 
 my $aliasfile = "${General::swroot}/ethernet/aliases";
 open(ALIASES, $aliasfile) or die 'Unable to open aliases file.';
@@ -140,42 +143,37 @@ if (open(IP, "${General::swroot}/red/local-ipaddress")) {
        push(@colour, ${Header::colourfw} );
 }
 
-&Header::showhttpheaders();
-&Header::openpage($Lang::tr{'connections'}, 1, '');
-&Header::openbigbox('100%', 'left');
-&Header::openbox('100%', 'left', $Lang::tr{'connection tracking'});
 
-print <<END
-<table width='60%'>
-<tr><td align='center'><b>$Lang::tr{'legend'} : </b></td>
-     <td align='center' bgcolor='${Header::colourgreen}'><b><font color='#FFFFFF'>$Lang::tr{'lan'}</font></b></td>
-     <td align='center' bgcolor='${Header::colourred}'><b><font color='#FFFFFF'>$Lang::tr{'internet'}</font></b></td>
-     <td align='center' bgcolor='${Header::colourorange}'><b><font color='#FFFFFF'>$Lang::tr{'dmz'}</font></b></td>
-     <td align='center' bgcolor='${Header::colourblue}'><b><font color='#FFFFFF'>$Lang::tr{'wireless'}</font></b></td>
-     <td align='center' bgcolor='${Header::colourfw}'><b><font color='#FFFFFF'>IPCop</font></b></td>
-     <td align='center' bgcolor='${Header::colourvpn}'><b><font color='#FFFFFF'>$Lang::tr{'vpn'}</font></b></td>
-</tr>
-</table>
-<br />
-<table cellpadding='2'>
-<tr><td align='center'><b>$Lang::tr{'protocol'}</b></td>
-    <td align='center'><b>$Lang::tr{'expires'}<br />($Lang::tr{'seconds'})</b></td>
-    <td align='center'><b>$Lang::tr{'connection'}<br />$Lang::tr{'status'}</b></td>
-    <td align='center'><b>$Lang::tr{'original'}<br />$Lang::tr{'source ip and port'}</b></td>
-    <td align='center'><b>$Lang::tr{'original'}<br />$Lang::tr{'dest ip and port'}</b></td>
-    <td align='center'><b>$Lang::tr{'expected'}<br />$Lang::tr{'source ip and port'}</b></td>
-    <td align='center'><b>$Lang::tr{'expected'}<br />$Lang::tr{'dest ip and port'}</b></td>
-    <td align='center'><b>$Lang::tr{'marked'}</b></td>
-    <td align='center'><b>$Lang::tr{'use'}</b></td>
-</tr>
-END
-;
+#Establish simple filtering&sorting boxes on top of table
+
+our %cgiparams;
+&Header::getcgihash(\%cgiparams);
+
+my @list_proto = ($Lang::tr{'all'}, 'icmp', 'udp', 'tcp');
+my @list_state = ($Lang::tr{'all'}, 'SYN_SENT', 'SYN_RECV', 'ESTABLISHED', 'FIN_WAIT',
+                   'CLOSE_WAIT', 'LAST_ACK', 'TIME_WAIT', 'CLOSE', 'LISTEN');
+my @list_mark = ($Lang::tr{'all'}, '[ASSURED]', '[UNREPLIED]');
+my @list_sort = ('orgsip','protocol', 'expires', 'status', 'orgdip', 'orgsp',
+                   'orgdp', 'exsip', 'exdip', 'exsp', 'exdp');
+
+# init or silently correct unknown value...
+if ( ! grep ( /^$cgiparams{'SEE_PROTO'}$/ , @list_proto )) { $cgiparams{'SEE_PROTO'} = $list_proto[0] };
+if ( ! grep ( /^$cgiparams{'SEE_STATE'}$/ , @list_state )) { $cgiparams{'SEE_STATE'} = $list_state[0] };
+if ( ! grep ( /^$cgiparams{'SEE_MARK'}$/  , @list_mark ))  { $cgiparams{'SEE_MARK'}  = $list_mark[0] };
+if ( ! grep ( /^$cgiparams{'SEE_SORT'}$/  , @list_sort ))  { $cgiparams{'SEE_SORT'}  = $list_sort[0] };
+# *.*.*.* or a valid IP
+if ( $cgiparams{'SEE_SRC'}  !~ /^(\*\.\*\.\*\.\*\.|\d+\.\d+\.\d+\.\d+)$/) {  $cgiparams{'SEE_SRC'} = '*.*.*.*' };
+if ( $cgiparams{'SEE_DEST'} !~ /^(\*\.\*\.\*\.\*\.|\d+\.\d+\.\d+\.\d+)$/) {  $cgiparams{'SEE_DEST'} = '*.*.*.*' };
+
+
+our %entries = ();     # will hold the lines analyzed correctly
+my $unknownlines = ''; # should be empty all the time...
+my $index = 0;         # just a counter to make unique entryies in entries
 
-foreach my $line (@active)
-{
+foreach my $line (@active) {
        my $protocol='';
        my $expires='';
-       my $connstatus='';
+       my $status='';
        my $orgsip='';
        my $orgdip='';
        my $orgsp='';
@@ -186,56 +184,93 @@ foreach my $line (@active)
        my $exdp='';
        my $marked='';
        my $use='';
-       my $orgsipcolour='';
-       my $orgdipcolour='';
-       my $exsipcolour='';
-       my $exdipcolour='';
 
        chomp($line);
        my @temp = split(' ',$line);
-       print "<tr bgcolor='${Header::table1colour}'>\n";
+
+       if ($temp[0] eq 'icmp') {
+               $protocol  = $temp[0];
+               $status    = $Lang::tr{'all'};
+               $orgsip   = substr $temp[3], 4;
+               $orgdip   = substr $temp[4], 4;
+               $marked   = $temp[8] eq '[UNREPLIED]' ? '[UNREPLIED]' : ' ';
+       }
+       if ($temp[0] eq 'udp') {
+               $protocol  = $temp[0];
+               $status  = $Lang::tr{'all'};
+               $orgsip = substr $temp[3], 4;
+               $orgdip  = substr $temp[4], 4;
+               $marked   = $temp[7] eq '[UNREPLIED]' ? '[UNREPLIED]' : defined ($temp[12]) ? $temp[11] : ' ';
+       }
+       if ($temp[0] eq 'tcp') {
+               $protocol  = $temp[0];
+               $status  = $temp[3];
+               $orgsip = substr $temp[4], 4;
+               $orgdip   = substr $temp[5], 4;
+               $marked   = $temp[8] eq '[UNREPLIED]' ? '[UNREPLIED]' : defined ($temp[13]) ? $temp[12] : ' ';
+       }
+
+       # filter the line if we found a known proto
+       next if( !(
+                  (($cgiparams{'SEE_PROTO'}  eq $Lang::tr{'all'}) || ($protocol  eq $cgiparams{'SEE_PROTO'} ))
+               && (($cgiparams{'SEE_STATE'}  eq $Lang::tr{'all'}) || ($status    eq $cgiparams{'SEE_STATE'} ))
+               && (($cgiparams{'SEE_MARK'}   eq $Lang::tr{'all'}) || ($marked    eq $cgiparams{'SEE_MARK'}  ))
+               && (($cgiparams{'SEE_SRC'}    eq "*.*.*.*")        || ($orgsip    eq $cgiparams{'SEE_SRC'}   ))
+               && (($cgiparams{'SEE_DEST'}   eq "*.*.*.*")        || ($orgdip    eq $cgiparams{'SEE_DEST'}  ))
+               ));
+
+       if ($temp[0] eq 'icmp') {
+               my $offset = 0;
+               $protocol = $temp[0] . " (" . $temp[1] . ")";
+               $expires = $temp[2];
+               $status = ' ';
+               if ($temp[8] eq '[UNREPLIED]' ) {
+                       $offset = +1;
+               }       
+               $orgsip = substr $temp[3], 4;
+               $orgdip = substr $temp[4], 4;
+               $orgsp = &General::GetIcmpDescription(substr( $temp[5], 5)) . "/" . substr( $temp[6], 5);;
+               $orgdp = 'id=' . substr( $temp[7], 3);
+               $exsip = substr $temp[8 + $offset], 4;
+               $exdip = substr $temp[9 + $offset], 4;
+               $exsp = &General::GetIcmpDescription(substr( $temp[10 + $offset], 5)). "/" . substr( $temp[11 + $offset], 5); 
+               $exdp = 'id=' . substr( $temp[11 + $offset], 5);
+               $marked   = $temp[8] eq '[UNREPLIED]' ? '[UNREPLIED]' : ' ';
+               $use = substr( $temp[13 + $offset], 4 );
+       }
        if ($temp[0] eq 'udp') {
                my $offset = 0;
                $marked = '';
                $protocol = $temp[0] . " (" . $temp[1] . ")";
                $expires = $temp[2];
-               $connstatus = ' ';
+               $status = ' ';
                $orgsip = substr $temp[3], 4;
                $orgdip = substr $temp[4], 4;
                $orgsp = substr $temp[5], 6;
                $orgdp = substr $temp[6], 6;
                if ($temp[7] eq '[UNREPLIED]') {
-                        $marked = $temp[7];
-                        $offset = 1;
-                }
-                else {
-                        $connstatus = ' ';
-                }
-
+                    $offset = 1;
+                   $marked = $temp[7];
+                   $use = substr $temp[12], 4;
+                } else {
+                   if ((substr $temp[11], 0, 3) eq 'use' ) {
+                       $marked = '';
+                       $use = substr $temp[11], 4;
+                   } else {
+                       $marked = $temp[11];
+                       $use = substr $temp[12], 4;
+                   }
+               }
                $exsip = substr $temp[7 + $offset], 4;
                $exdip = substr $temp[8 + $offset], 4;
                $exsp = substr $temp[9 + $offset], 6;
                $exdp = substr $temp[10 + $offset], 6;
-               if ($marked eq '[UNREPLIED]') {
-                       $use = substr $temp[11 + $offset], 4;
-                }
-                else {
-                        $marked = $temp[11 + $offset];
-                       $use = substr $marked, 0, 3;
-                       if ($use eq 'use' ) {
-                               $marked = '';
-                               $use = substr $temp[11 + $offset], 4;
-                       }
-                       else {
-                               $use = substr $temp[12 + $offset], 4;
-                       }
-               }
        }
        if ($temp[0] eq 'tcp') {
                my $offset = 0;
                 $protocol = $temp[0] . " (" . $temp[1] . ")";
                 $expires = $temp[2];
-                $connstatus = $temp[3];
+                $status = $temp[3];
                 $orgsip = substr $temp[4], 4;
                 $orgdip = substr $temp[5], 4;
                 $orgsp = substr $temp[6], 6;
@@ -243,25 +278,22 @@ foreach my $line (@active)
                if ($temp[8] eq '[UNREPLIED]') {
                         $marked = $temp[8];
                         $offset = 1;
-                       $use = substr $temp[13], 4;
-                }
-                else {
+                } else {
                         $marked = $temp[12];
-                       $use = substr $temp[13], 4;
                 }
-               
                $exsip = substr $temp[8 + $offset], 4;
                 $exdip = substr $temp[9 + $offset], 4;
                 $exsp = substr $temp[10 + $offset], 6;
                 $exdp = substr $temp[11 + $offset], 6;
+               $use = substr $temp[13], 4;
         }
        if ($temp[0] eq 'unknown') {
                 my $offset = 0;
                 $protocol = "??? (" . $temp[1] . ")";
                 $protocol = "esp (" . $temp[1] . ")" if ($temp[1] == 50);
-                $protocol = " ah (" . $temp[1] . ")" if ($temp[1] == 51);
+                $protocol = "ah (" . $temp[1] . ")" if ($temp[1] == 51);
                 $expires = $temp[2];
-                $connstatus = ' ';
+                $status = ' ';
                 $orgsip = substr $temp[3], 4;
                 $orgdip = substr $temp[4], 4;
                 $orgsp = ' ';
@@ -288,24 +320,119 @@ foreach my $line (@active)
                $marked = $temp[17];
                $use = $temp[18];
        }
-       $orgsipcolour = &ipcolour($orgsip);
-       $orgdipcolour = &ipcolour($orgdip);
-       $exsipcolour = &ipcolour($exsip);
-       $exdipcolour = &ipcolour($exdip);
+       # Only from this point, lines have the same known format/field
+       # The floating fields [UNREPLIED] [ASSURED] etc are ok.
+
+       # Store the line in a hash array for sorting
+       if ( $protocol ) { # line is decoded ?
+               my @record = (  'index', $index++,
+                           'protocol', $protocol,
+                           'expires',  $expires,
+                           'status',   $status,
+                           'orgsip',   $orgsip,
+                           'orgdip',   $orgdip,
+                           'orgsp',    $orgsp,
+                           'orgdp',    $orgdp,
+                           'exsip',    $exsip,
+                           'exdip',    $exdip,
+                           'exsp',     $exsp,
+                           'exdp',     $exdp,
+                           'marked',   $marked,
+                           'use',      $use);
+               my $record = {};                                # create a reference to empty hash
+               %{$record} = @record;                   # populate that hash with @record
+               $entries{$record->{index}} = $record;   # add this to a hash of hashes      
+       } else { # it was not a known line
+               $unknownlines .= "<tr bgcolor='${Header::table1colour}'>";
+               $unknownlines .= "<td colspan='9'> unknown:$line></td></tr>";
+       }
+}
+
+# Build listbox objects
+my $menu_proto = &make_select ('SEE_PROTO', $cgiparams{'SEE_PROTO'}, @list_proto);
+my $menu_state = &make_select ('SEE_STATE', $cgiparams{'SEE_STATE'}, @list_state);
+my $menu_src   = &make_select ('SEE_SRC',   $cgiparams{'SEE_SRC'},   &get_known_ips('orgsip'));
+my $menu_dest  = &make_select ('SEE_DEST',  $cgiparams{'SEE_DEST'},  &get_known_ips('orgdip'));
+my $menu_mark  = &make_select ('SEE_MARK',  $cgiparams{'SEE_MARK'},  @list_mark);
+my $menu_sort  = &make_select ('SEE_SORT',  $cgiparams{'SEE_SORT'},  @list_sort);
+
+&Header::showhttpheaders();
+&Header::openpage($Lang::tr{'connections'}, 1, '');
+&Header::openbigbox('100%', 'left');
+&Header::openbox('100%', 'left', $Lang::tr{'connection tracking'});
+
+print <<END
+<table width='60%'>
+<tr><td align='center'><b>$Lang::tr{'legend'} : </b></td>
+    <td align='center' bgcolor='${Header::colourgreen}'><b><font color='#FFFFFF'>$Lang::tr{'lan'}</font></b></td>
+    <td align='center' bgcolor='${Header::colourred}'><b><font color='#FFFFFF'>$Lang::tr{'internet'}</font></b></td>
+    <td align='center' bgcolor='${Header::colourorange}'><b><font color='#FFFFFF'>$Lang::tr{'dmz'}</font></b></td>
+    <td align='center' bgcolor='${Header::colourblue}'><b><font color='#FFFFFF'>$Lang::tr{'wireless'}</font></b></td>
+    <td align='center' bgcolor='${Header::colourfw}'><b><font color='#FFFFFF'>IPCop</font></b></td>
+    <td align='center' bgcolor='${Header::colourvpn}'><b><font color='#FFFFFF'>$Lang::tr{'vpn'}</font></b></td>
+</tr>
+</table>
+<br />
+<table cellpadding='2'>
+<tr><td align='center'><b>$Lang::tr{'protocol'}</b></td>
+    <td align='center'><b>$Lang::tr{'expires'}<br />($Lang::tr{'seconds'})</b></td>
+    <td align='center'><b>$Lang::tr{'connection'}<br />$Lang::tr{'status'}</b></td>
+    <td align='center'><b>$Lang::tr{'original'}<br />$Lang::tr{'source ip and port'}</b></td>
+    <td align='center'><b>$Lang::tr{'original'}<br />$Lang::tr{'dest ip and port'}</b></td>
+    <td align='center'><b>$Lang::tr{'expected'}<br />$Lang::tr{'source ip and port'}</b></td>
+    <td align='center'><b>$Lang::tr{'expected'}<br />$Lang::tr{'dest ip and port'}</b></td>
+    <td align='center'><b>$Lang::tr{'marked'}</b></td>
+    <td align='center'><b>$Lang::tr{'use'}</b></td>
+</tr>
+<tr><form method='post' action='$ENV{'SCRIPT_NAME'}'>
+    <td align='center'>$menu_proto</td>
+    <td></td>
+    <td align='center'>$menu_state</td>
+    <td align='center'>$menu_src</td>
+    <td align='center'>$menu_dest</td>
+    <td align='center'colspan='2'>$Lang::tr{'sort ascending'}:$menu_sort </td>
+    <td align='center'>$menu_mark</td>
+    <td align='center'><input type='submit' value='!' /></td>
+    </form>
+</tr>
+END
+;
+
+foreach my $entry (sort sort_entries keys %entries) {
+
+       print "<tr bgcolor='${Header::table1colour}'>";
+       my $orgsipcolour = &ipcolour( $entries{$entry}->{orgsip} );
+       my $orgdipcolour = &ipcolour( $entries{$entry}->{orgdip} );
+       my $exsipcolour  = &ipcolour( $entries{$entry}->{exsip} );
+       my $exdipcolour  = &ipcolour( $entries{$entry}->{exdip} );
        print <<END
-       <td align='center'>$protocol</td>
-       <td align='center'>$expires</td>
-       <td align='center'>$connstatus</td>
-       <td align='center' bgcolor='$orgsipcolour'><a href='/cgi-bin/ipinfo.cgi?ip=$orgsip'><font color='#FFFFFF'>$orgsip</font></a><font color='#FFFFFF'>:$orgsp</font></td>
-       <td align='center' bgcolor='$orgdipcolour'><a href='/cgi-bin/ipinfo.cgi?ip=$orgdip'><font color='#FFFFFF'>$orgdip</font></a><font color='#FFFFFF'>:$orgdp</font></td>
-       <td align='center' bgcolor='$exsipcolour'><a href='/cgi-bin/ipinfo.cgi?ip=$exsip'><font color='#FFFFFF'>$exsip</font></a><font color='#FFFFFF'>:$exsp</font></td>
-       <td align='center' bgcolor='$exdipcolour'><a href='/cgi-bin/ipinfo.cgi?ip=$exdip'><font color='#FFFFFF'>$exdip</font></a><font color='#FFFFFF'>:$exdp</font></td>
-       <td align='center'>$marked</td><td align='center'>$use</td>
+       <td align='center'>$entries{$entry}->{protocol}</td>
+       <td align='center'>$entries{$entry}->{expires}</td>
+       <td align='center'>$entries{$entry}->{status}</td>
+       <td align='center' bgcolor='$orgsipcolour'>
+           <a href='/cgi-bin/ipinfo.cgi?ip=$entries{$entry}->{orgsip}'>
+           <font color='#FFFFFF'>$entries{$entry}->{orgsip}</font>
+           </a><font color='#FFFFFF'>:$entries{$entry}->{orgsp}</font></td>
+       <td align='center' bgcolor='$orgdipcolour'>
+           <a href='/cgi-bin/ipinfo.cgi?ip=$entries{$entry}->{orgdip}'>
+           <font color='#FFFFFF'>$entries{$entry}->{orgdip}</font>
+           </a><font color='#FFFFFF'>:$entries{$entry}->{orgdp}</font></td>
+       <td align='center' bgcolor='$exsipcolour'>
+           <a href='/cgi-bin/ipinfo.cgi?ip=$entries{$entry}->{exsip}'>
+           <font color='#FFFFFF'>$entries{$entry}->{exsip}</font>
+           </a><font color='#FFFFFF'>:$entries{$entry}->{exsp}</font></td>
+       <td align='center' bgcolor='$exdipcolour'>
+           <a href='/cgi-bin/ipinfo.cgi?ip=$entries{$entry}->{exdip}'>
+           <font color='#FFFFFF'>$entries{$entry}->{exdip}</font>
+           </a><font color='#FFFFFF'>:$entries{$entry}->{exdp}</font></td>
+       <td align='center'>$entries{$entry}->{marked}</td>
+       <td align='center'>$entries{$entry}->{use}</td>
        </tr>
 END
-       ;
+;
 }
-print "</table>\n";
+
+print "$unknownlines</table>";
 
 &Header::closebox();
 &Header::closebigbox();
@@ -316,10 +443,9 @@ sub ipcolour($) {
        my $line;
        my $colour = ${Header::colourred};
        my ($ip) = $_[0];
-       my $found = 0;
-       foreach $line (@network)
-       {
-               if (!$found && ipv4_in_network( $network[$id] , $masklen[$id], $ip) ) {
+        my $found = 0;
+        foreach $line (@network) {
+               if (!$found && ipv4_in_network( $network[$id] , $masklen[$id], $ip) ) {
                        $found = 1;
                        $colour = $colour[$id];
                }
@@ -327,3 +453,55 @@ sub ipcolour($) {
        }
        return $colour
 }
+
+# Create a string containing a complete SELECT html object 
+# param1: name
+# param2: current value selected
+# param3: field list
+sub make_select ($,$,$) {
+       my $select_name = shift;
+       my $selected    = shift;
+       my $select = "<select name='$select_name'>";
+
+       foreach my $value (@_) {
+               my $check = $selected eq $value ? "selected='selected'" : '';
+               $select .= "<option $check value='$value'>$value";
+       }
+       $select .= "</select>";
+       return $select;
+}
+
+# Build a list of IP obtained from the %entries hash
+# param1: IP field name
+sub get_known_ips ($) {
+       my $field = shift;
+       my $qs = $cgiparams{'SEE_SORT'};        # switch the sort order
+       $cgiparams{'SEE_SORT'} = $field;
+
+       my @liste=('*.*.*.*');
+       foreach my $entry ( sort sort_entries keys %entries) {
+               push (@liste, $entries{$entry}->{$field}) if (! grep (/^$entries{$entry}->{$field}$/,@liste) );
+       }
+
+       $cgiparams{'SEE_SORT'} = $qs;   #restore sort order
+        return @liste;
+}
+
+# Used to sort the table containing the lines displayed.
+sub sort_entries { #Reverse is not implemented
+        my $qs=$cgiparams{'SEE_SORT'};
+        if ($qs =~ /orgsip|orgdip|exsip|exdip/) {
+               my @a = split(/\./,$entries{$a}->{$qs});
+               my @b = split(/\./,$entries{$b}->{$qs});
+               ($a[0]<=>$b[0]) ||
+               ($a[1]<=>$b[1]) ||
+               ($a[2]<=>$b[2]) ||
+               ($a[3]<=>$b[3]);
+       } elsif ($qs =~ /expire|orgsp|orgdp|exsp|exdp/) {
+               $entries{$a}->{$qs} <=> $entries{$b}->{$qs};
+       } else {
+               $entries{$a}->{$qs} cmp $entries{$b}->{$qs};
+       }
+}
+
+1;
diff --git a/html/html/images/background.gif b/html/html/images/background.gif
new file mode 100644 (file)
index 0000000..a511572
Binary files /dev/null and b/html/html/images/background.gif differ
index ac30c96579d7ff0492462cca7506fb5edf28b199..58d269c3064c24cc664255ef57b9ad1630c3b50a 100644 (file)
Binary files a/html/html/images/boxbottom1.png and b/html/html/images/boxbottom1.png differ
index f8bff5470b70f20931d94243ec0e981512a04b16..139baa5941fb83b633093e218a28b9702d580c9f 100644 (file)
Binary files a/html/html/images/boxbottom2.png and b/html/html/images/boxbottom2.png differ
index 44bebe16f162c72558aae42ffdef687da74df41f..c03dd92bece50ef99b35b40cfcecbd47251803a1 100644 (file)
Binary files a/html/html/images/boxbottom3.png and b/html/html/images/boxbottom3.png differ
index 6ed550ae01daf9a2265cac03c7c0b44870616afc..c238f706997cdb70bcc3f8d8029aa7b7a30d6c0f 100644 (file)
Binary files a/html/html/images/boxleft.png and b/html/html/images/boxleft.png differ
index b2bb53473c4ae0b0a2470feb4d3fa15438150744..73da0250b8c6a3a7c1811f363e567c1fbeb1207e 100644 (file)
Binary files a/html/html/images/boxright.png and b/html/html/images/boxright.png differ
index 1e41b24241b8692996abf76821db23ad852ca5a9..08ab7a3ac2a011b05d901d01d0dbe5dd5d4aaccd 100644 (file)
Binary files a/html/html/images/boxtop1.png and b/html/html/images/boxtop1.png differ
index 01ebb03de27c93349273f86eac112ac6726de18e..a1f3f8e86738011c001dfa63ce1310293ae328ee 100644 (file)
Binary files a/html/html/images/boxtop2.png and b/html/html/images/boxtop2.png differ
index 77374ea6e393c27c7c8f4c302859be6502d1ee69..b279db2961f08d646cbb446990a297a4acfb32b5 100644 (file)
Binary files a/html/html/images/boxtop3.png and b/html/html/images/boxtop3.png differ
index d8e09bff0a4ddffa59ee36876cf61d7cbe9e160b..33d18b57197a951673ace2b3091fd202ba58dd47 100644 (file)
Binary files a/html/html/images/forward.gif and b/html/html/images/forward.gif differ
index bbf8902c9f18446fe0424bf799cd790129ae08bd..64aed7e8da526de3a37c924ff581338702cf108b 100644 (file)
Binary files a/html/html/images/header.png and b/html/html/images/header.png differ
diff --git a/html/html/images/header_icons.gif b/html/html/images/header_icons.gif
new file mode 100644 (file)
index 0000000..a948538
Binary files /dev/null and b/html/html/images/header_icons.gif differ
diff --git a/html/html/images/heading-back.gif b/html/html/images/heading-back.gif
new file mode 100644 (file)
index 0000000..69c4d0e
Binary files /dev/null and b/html/html/images/heading-back.gif differ
diff --git a/html/html/images/help.gif b/html/html/images/help.gif
new file mode 100644 (file)
index 0000000..83a4645
Binary files /dev/null and b/html/html/images/help.gif differ
diff --git a/html/html/images/logo_ipfire.gif b/html/html/images/logo_ipfire.gif
new file mode 100644 (file)
index 0000000..86fdba3
Binary files /dev/null and b/html/html/images/logo_ipfire.gif differ
diff --git a/html/html/images/logo_ipfire2.gif b/html/html/images/logo_ipfire2.gif
new file mode 100644 (file)
index 0000000..8ad1664
Binary files /dev/null and b/html/html/images/logo_ipfire2.gif differ
diff --git a/html/html/images/logout.gif b/html/html/images/logout.gif
new file mode 100644 (file)
index 0000000..8d7b78e
Binary files /dev/null and b/html/html/images/logout.gif differ
diff --git a/html/html/images/menu_item.gif b/html/html/images/menu_item.gif
new file mode 100644 (file)
index 0000000..529f462
Binary files /dev/null and b/html/html/images/menu_item.gif differ
diff --git a/html/html/images/menu_left_bottom.gif b/html/html/images/menu_left_bottom.gif
new file mode 100644 (file)
index 0000000..3c446b7
Binary files /dev/null and b/html/html/images/menu_left_bottom.gif differ
diff --git a/html/html/images/menu_left_selected.gif b/html/html/images/menu_left_selected.gif
new file mode 100644 (file)
index 0000000..8ef8334
Binary files /dev/null and b/html/html/images/menu_left_selected.gif differ
diff --git a/html/html/images/menu_left_top.gif b/html/html/images/menu_left_top.gif
new file mode 100644 (file)
index 0000000..cc33f1a
Binary files /dev/null and b/html/html/images/menu_left_top.gif differ
diff --git a/html/html/images/menu_top_left.gif b/html/html/images/menu_top_left.gif
new file mode 100644 (file)
index 0000000..cd8c23b
Binary files /dev/null and b/html/html/images/menu_top_left.gif differ
diff --git a/html/html/images/menu_top_left_selected.gif b/html/html/images/menu_top_left_selected.gif
new file mode 100644 (file)
index 0000000..3d3ff42
Binary files /dev/null and b/html/html/images/menu_top_left_selected.gif differ
diff --git a/html/html/images/menu_top_right.gif b/html/html/images/menu_top_right.gif
new file mode 100644 (file)
index 0000000..49a97bd
Binary files /dev/null and b/html/html/images/menu_top_right.gif differ
diff --git a/html/html/images/menu_top_right_selected.gif b/html/html/images/menu_top_right_selected.gif
new file mode 100644 (file)
index 0000000..1c93206
Binary files /dev/null and b/html/html/images/menu_top_right_selected.gif differ
diff --git a/html/html/images/sflogo.png b/html/html/images/sflogo.png
new file mode 100644 (file)
index 0000000..503b974
Binary files /dev/null and b/html/html/images/sflogo.png differ
diff --git a/html/html/images/stock_down-16.png b/html/html/images/stock_down-16.png
new file mode 100644 (file)
index 0000000..1b278a5
Binary files /dev/null and b/html/html/images/stock_down-16.png differ
diff --git a/html/html/images/stock_ok.png b/html/html/images/stock_ok.png
new file mode 100644 (file)
index 0000000..d92d88d
Binary files /dev/null and b/html/html/images/stock_ok.png differ
diff --git a/html/html/images/stock_stop.png b/html/html/images/stock_stop.png
new file mode 100644 (file)
index 0000000..89c2124
Binary files /dev/null and b/html/html/images/stock_stop.png differ
diff --git a/html/html/images/stock_up-16.png b/html/html/images/stock_up-16.png
new file mode 100644 (file)
index 0000000..bef7542
Binary files /dev/null and b/html/html/images/stock_up-16.png differ
diff --git a/html/html/images/table-header.gif b/html/html/images/table-header.gif
new file mode 100644 (file)
index 0000000..ac9bde5
Binary files /dev/null and b/html/html/images/table-header.gif differ
index a4a40ba16d1d6d9245ba8392760501077709fda0..346c6b2f8fd20ab17ac94d8630015ec63474f1db 100644 (file)
@@ -120,7 +120,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
 
        # Copy all html/cgi-bin files
        cp -aR $(DIR_SRC)/html/* /home/httpd
-       -find /home/httpd -name CVS -exec rm -rf {} \;
+       -find /home/httpd -name .svn -exec rm -rf {} \;
        cp $(DIR_DL)/sflogo.png /home/httpd/html/images/
 
        # Change CONFIG_ROOT in cgi-scripts
index 376423f19a71cd7e20c6476e390ff4aae7271dc0..431184f3404e83e857cf04b83b120757c38ae2c9 100644 (file)
@@ -78,7 +78,7 @@ $(subst %,%_MD5,$(objects)) :
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
        @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
-       cd $(DIR_APP)/build_unix && ../dist/configure --prefix=/usr/local/db-4.4
+       cd $(DIR_APP)/build_unix && ../dist/configure --prefix=/usr
        cd $(DIR_APP)/build_unix && make
        cd $(DIR_APP)/build_unix && make install
        @rm -rf $(DIR_APP)
index f6351f13c47b46ec93b017713147a87898729826..9fa12d3a1d393c3e1e9847454d14715e34b8fdb4 100644 (file)
@@ -58,7 +58,7 @@ $(TARGET) :
        # Create all directories
        for i in addon-lang alcatelusb auth backup backup/sets ca certs cnx_pci crls ddns dhcp dhcpc dmzholes \
            eagle-usb eciadsl ethernet isdn key langs logging main modem optionsfw patches portfw \
-           ppp private proxy red remote shaping snort time vpn wireless xtaccess ; do \
+           ppp private proxy red remote shaping snort time uplinks vpn wireless xtaccess ; do \
                mkdir -p $(CONFIG_ROOT)/$$i; \
        done
 
index abb037dbd2d39dc535b59d985c7510a3ef18f724..6754995cf99373da37a125c6d17f1f5192d61727 100644 (file)
@@ -22,7 +22,7 @@
 # ??-12-2003 Mark Wormgoor < mark@wormgoor.com>                               #
 #          - Modified Makefile for IPCop build                                #
 #                                                                             #
-# $Id: ipac-ng,v 1.5.2.5 2005/02/05 15:38:15 gespinasse Exp $
+# $Id: ipac-ng,v 1.5.2.6 2006/01/14 16:41:15 gespinasse Exp $
 #                                                                             #
 ###############################################################################
 
 
 include Config
 
-VER        = 1.28
+VER        = 1.31
 
 THISAPP    = ipac-ng-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
 DL_FROM    = $(URL_SFNET)/ipac-ng
-DIR_APP    = $(DIR_SRC)/ipac-ng-1.28
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 
 ###############################################################################
@@ -48,7 +48,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = fc3c701ec20baa36a2865860f97fd03b
+$(DL_FILE)_MD5 = 0c010550adfc140bb3990eb02f1604d0
 
 install : $(TARGET)
 
@@ -78,6 +78,8 @@ $(subst %,%_MD5,$(objects)) :
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
        @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/$(THISAPP)-iptables-1.3.1.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/$(THISAPP)-fetchcounter.patch
        cd $(DIR_APP) && sed -i -e 's%/var/lib/ipac%/var/log/ip-acct%g' configure
        cd $(DIR_APP) && chmod 755 configure
        cd $(DIR_APP) && ./configure --prefix=/usr --disable-nls --enable-default-storage=gdbm
diff --git a/make.sh b/make.sh
index d825ef6cc51ea900a7119fef6a8ab08fc9b6e3ff..c72ff8c030f90f3aacde70a2f1d5e3e0ef1f87d6 100644 (file)
--- a/make.sh
+++ b/make.sh
@@ -693,7 +693,7 @@ buildpackages() {
        cd $BASEDIR
   fi
 
-  # Create update for this version
+ Create update for this version
 #  echo "`date -u '+%b %e %T'`: Building update $VERSION tgz" | tee -a $LOGFILE
 #  tar -cz -C $BASEDIR/build --files-from=$BASEDIR/updates/$VERSION/ROOTFILES.$MACHINE-$VERSION -f $BASEDIR/updates/$VERSION/patch.tar.gz --exclude='#*'; 
 #  chmod 755 $BASEDIR/updates/$VERSION/setup
index 9e25ead26665debd38acbe9801f36c69c5b4b1a7..4764565b57a3265018b1f097192cee621c64fd4d 100644 (file)
@@ -24626,6 +24626,5325 @@ usr/bin/stund
 ## XAMPP
 ##
 opt/lampp
+#opt/lampp/
+#opt/lampp/lib/
+#opt/lampp/lib/libgdbm.a
+#opt/lampp/lib/libform.a
+#opt/lampp/lib/libfreetype.la
+#opt/lampp/lib/libintl.a
+#opt/lampp/lib/libsqlite.a
+#opt/lampp/lib/libapr-0.la
+#opt/lampp/lib/libapr-1.la
+#opt/lampp/lib/libmenu.a
+#opt/lampp/lib/libsybdb.la
+#opt/lampp/lib/libc-client.a
+opt/lampp/lib/mysql/
+opt/lampp/lib/mysql/libheap.a
+opt/lampp/lib/mysql/libmysqlclient_r.a
+opt/lampp/lib/mysql/libmysqlclient.a
+opt/lampp/lib/mysql/libmysys.a
+opt/lampp/lib/mysql/libmysqlclient.la
+opt/lampp/lib/mysql/libmyisam.a
+opt/lampp/lib/mysql/libmystrings.a
+opt/lampp/lib/mysql/libmysqlclient_r.la
+opt/lampp/lib/mysql/libmyisammrg.a
+opt/lampp/lib/mysql/libvio.a
+#opt/lampp/lib/mysql/libdbug.a
+#opt/lampp/lib/libexpat.a
+#opt/lampp/lib/libexslt.a
+#opt/lampp/lib/libapreq2.a
+#opt/lampp/lib/libgdbm.la
+#opt/lampp/lib/libtds.la
+#opt/lampp/lib/libsybdb.a
+#opt/lampp/lib/libzzip.la
+#opt/lampp/lib/libxml2.a
+#opt/lampp/lib/libct.a
+#opt/lampp/lib/libgd.a
+#opt/lampp/lib/libxslt.a
+#opt/lampp/lib/libzzip.a
+#opt/lampp/lib/libaprutil-0.la
+#opt/lampp/lib/libaprutil-1.la
+#opt/lampp/lib/libldap_r.la
+#opt/lampp/lib/libpanel.a
+#opt/lampp/lib/libapr-0.a
+#opt/lampp/lib/libapr-1.a
+#opt/lampp/lib/libgettextlib.la
+#opt/lampp/lib/libzzipwrap.a
+#opt/lampp/lib/libgettextsrc.la
+#opt/lampp/lib/libz.a
+#opt/lampp/lib/libintl.la
+#opt/lampp/lib/libpng12.a
+#opt/lampp/lib/libsablot.a
+#opt/lampp/lib/libmenu_g.a
+#opt/lampp/lib/libtdssrv.la
+#opt/lampp/lib/libpanel_g.a
+#opt/lampp/lib/libexslt.la
+#opt/lampp/lib/libcrypto.a
+#opt/lampp/lib/libapreq2.la
+#opt/lampp/lib/libncurses++.a
+#opt/lampp/lib/libaprutil-0.a
+#opt/lampp/lib/libaprutil-1.a
+#opt/lampp/lib/libxml2.la
+#opt/lampp/lib/libncurses_g.a
+#opt/lampp/lib/libsablot.la
+#opt/lampp/lib/libapr.a
+#opt/lampp/lib/libbz2.a
+#opt/lampp/lib/libct.la
+#opt/lampp/lib/libcurl.la
+#opt/lampp/lib/libpng.a
+#opt/lampp/lib/libtds.a
+#opt/lampp/lib/libssl.a
+#opt/lampp/lib/libxslt.la
+#opt/lampp/lib/libsqlite.la
+#opt/lampp/lib/liblber.la
+#opt/lampp/lib/libtdssrv.a
+#opt/lampp/lib/libldap.la
+#opt/lampp/lib/libncurses.a
+#opt/lampp/lib/libzzipwrap.la
+#opt/lampp/lib/libfreetype.a
+#opt/lampp/lib/libmhash.la
+#opt/lampp/lib/libaprutil.a
+#opt/lampp/lib/libmcrypt.la
+#opt/lampp/lib/libcurl.a
+#opt/lampp/lib/libform_g.a
+#opt/lampp/man/
+#opt/lampp/man/man1/
+#opt/lampp/man/man1/ldapadd.1
+#opt/lampp/man/man1/ca.1
+#opt/lampp/man/man1/ec.1
+#opt/lampp/man/man1/dbish.1
+#opt/lampp/man/man1/ud.1
+#opt/lampp/man/man1/safe_mysqld.1
+#opt/lampp/man/man1/perl570delta.1
+#opt/lampp/man/man1/rdjpgcom.1
+#opt/lampp/man/man1/mysql_fix_privilege_tables.1
+#opt/lampp/man/man1/bzcmp.1
+#opt/lampp/man/man1/perlartistic.1
+#opt/lampp/man/man1/perllocale.1
+#opt/lampp/man/man1/bzegrep.1
+#opt/lampp/man/man1/bzip2.1
+#opt/lampp/man/man1/htdigest.1
+#opt/lampp/man/man1/mysqladmin.1
+#opt/lampp/man/man1/HEAD.1
+#opt/lampp/man/man1/ftptop.1
+#opt/lampp/man/man1/perlmodstyle.1
+#opt/lampp/man/man1/ftpwho.1
+#opt/lampp/man/man1/perl561delta.1
+#opt/lampp/man/man1/perlembed.1
+#opt/lampp/man/man1/xsltproc.1
+#opt/lampp/man/man1/perlmacos.1
+#opt/lampp/man/man1/perlnewmod.1
+#opt/lampp/man/man1/crl2pkcs7.1
+#opt/lampp/man/man1/ftpcount.1
+#opt/lampp/man/man1/msgmerge.1
+#opt/lampp/man/man1/ldapmodify.1
+#opt/lampp/man/man1/gettextize.1
+#opt/lampp/man/man1/ldapmodrdn.1
+#opt/lampp/man/man1/GET.1
+#opt/lampp/man/man1/curl-config.1
+#opt/lampp/man/man1/mysqld_multi.1
+#opt/lampp/man/man1/perlthrtut.1
+#opt/lampp/man/man1/a2p.1
+#opt/lampp/man/man1/djpeg.1
+#opt/lampp/man/man1/crl.1
+#opt/lampp/man/man1/dsa.1
+#opt/lampp/man/man1/enc.1
+#opt/lampp/man/man1/tiffmedian.1
+#opt/lampp/man/man1/perldbmfilter.1
+#opt/lampp/man/man1/tiff2rgba.1
+#opt/lampp/man/man1/md2.1
+#opt/lampp/man/man1/md4.1
+#opt/lampp/man/man1/md5.1
+#opt/lampp/man/man1/captoinfo.1.gz
+#opt/lampp/man/man1/s2p.1
+#opt/lampp/man/man1/php.1
+#opt/lampp/man/man1/req.1
+#opt/lampp/man/man1/sha.1
+#opt/lampp/man/man1/rsa.1
+#opt/lampp/man/man1/ldappasswd.1
+#opt/lampp/man/man1/perlothrtut.1
+#opt/lampp/man/man1/infotocap.1.gz
+#opt/lampp/man/man1/perlpodspec.1
+#opt/lampp/man/man1/tiff2bw.1
+#opt/lampp/man/man1/POST.1
+#opt/lampp/man/man1/tiff2ps.1
+#opt/lampp/man/man1/perl586delta.1
+#opt/lampp/man/man1/bzfgrep.1
+#opt/lampp/man/man1/ripemd160.1
+#opt/lampp/man/man1/errstr.1
+#opt/lampp/man/man1/perl581delta.1
+#opt/lampp/man/man1/pod2html.1
+#opt/lampp/man/man1/dprofpp.1
+#opt/lampp/man/man1/msgfilter.1
+#opt/lampp/man/man1/mysqlaccess.1
+#opt/lampp/man/man1/perlcygwin.1
+#opt/lampp/man/man1/perlstyle.1
+#opt/lampp/man/man1/perl572delta.1
+#opt/lampp/man/man1/perlfreebsd.1
+#opt/lampp/man/man1/tiffcmp.1
+#opt/lampp/man/man1/replace.1
+#opt/lampp/man/man1/perlrequick.1
+#opt/lampp/man/man1/perlnumber.1
+#opt/lampp/man/man1/pstruct.1
+#opt/lampp/man/man1/splain.1
+#opt/lampp/man/man1/perlmpeix.1
+#opt/lampp/man/man1/perlopenbsd.1
+#opt/lampp/man/man1/asn1parse.1
+#opt/lampp/man/man1/tset.1.gz
+#opt/lampp/man/man1/ldapwhoami.1
+#opt/lampp/man/man1/find2perl.1
+#opt/lampp/man/man1/perlopentut.1
+#opt/lampp/man/man1/msql2mysql.1
+#opt/lampp/man/man1/perltootc.1
+#opt/lampp/man/man1/ldapsearch.1
+#opt/lampp/man/man1/perl5004delta.1
+#opt/lampp/man/man1/fax2ps.1
+#opt/lampp/man/man1/defncopy.1
+#opt/lampp/man/man1/isamchk.1
+#opt/lampp/man/man1/xmlcatalog.1
+#opt/lampp/man/man1/enc2xs.1
+#opt/lampp/man/man1/perlapio.1
+#opt/lampp/man/man1/perlbeos.1
+#opt/lampp/man/man1/perltru64.1
+#opt/lampp/man/man1/htpasswd.1
+#opt/lampp/man/man1/wrjpgcom.1
+#opt/lampp/man/man1/isamlog.1
+#opt/lampp/man/man1/perlnetware.1
+#opt/lampp/man/man1/perlcall.1
+#opt/lampp/man/man1/perlreftut.1
+#opt/lampp/man/man1/perlintern.1
+#opt/lampp/man/man1/piconv.1
+#opt/lampp/man/man1/sess_id.1
+#opt/lampp/man/man1/perlbook.1
+#opt/lampp/man/man1/perlboot.1
+#opt/lampp/man/man1/pod2text.1
+#opt/lampp/man/man1/libnetcfg.1
+#opt/lampp/man/man1/msgcomm.1
+#opt/lampp/man/man1/perlclib.1
+#opt/lampp/man/man1/msgconv.1
+#opt/lampp/man/man1/perldata.1
+#opt/lampp/man/man1/smime.1
+#opt/lampp/man/man1/php-config.1
+#opt/lampp/man/man1/perldgux.1
+#opt/lampp/man/man1/perldiag.1
+#opt/lampp/man/man1/phpize.1
+#opt/lampp/man/man1/msgunfmt.1
+#opt/lampp/man/man1/bzdiff.1
+#opt/lampp/man/man1/ldapdelete.1
+#opt/lampp/man/man1/perlfaq1.1
+#opt/lampp/man/man1/perlfaq2.1
+#opt/lampp/man/man1/perlfaq3.1
+#opt/lampp/man/man1/perlfaq4.1
+#opt/lampp/man/man1/perlfaq5.1
+#opt/lampp/man/man1/perlfaq6.1
+#opt/lampp/man/man1/perlfaq7.1
+#opt/lampp/man/man1/perlfaq8.1
+#opt/lampp/man/man1/perlfaq9.1
+#opt/lampp/man/man1/s_server.1
+#opt/lampp/man/man1/perlepoc.1
+#opt/lampp/man/man1/lwp-request.1
+#opt/lampp/man/man1/pal2rgb.1
+#opt/lampp/man/man1/ppm2tiff.1
+#opt/lampp/man/man1/mysqlmanager.1
+#opt/lampp/man/man1/mysqlcheck.1
+#opt/lampp/man/man1/msgexec.1
+#opt/lampp/man/man1/speed.1
+#opt/lampp/man/man1/perl583delta.1
+#opt/lampp/man/man1/spkac.1
+#opt/lampp/man/man1/c2ph.1
+#opt/lampp/man/man1/perlfork.1
+#opt/lampp/man/man1/perlform.1
+#opt/lampp/man/man1/passwd.1
+#opt/lampp/man/man1/perlaix.1
+#opt/lampp/man/man1/perlfunc.1
+#opt/lampp/man/man1/perlapi.1
+#opt/lampp/man/man1/perlhack.1
+#opt/lampp/man/man1/perlbot.1
+#opt/lampp/man/man1/perlbug.1
+#opt/lampp/man/man1/perldoc.1
+#opt/lampp/man/man1/perldos.1
+#opt/lampp/man/man1/perldsc.1
+#opt/lampp/man/man1/msggrep.1
+#opt/lampp/man/man1/perlfaq.1
+#opt/lampp/man/man1/perlgpl.1
+#opt/lampp/man/man1/perliol.1
+#opt/lampp/man/man1/perlipc.1
+#opt/lampp/man/man1/perlivp.1
+#opt/lampp/man/man1/perlhist.1
+#opt/lampp/man/man1/bzgrep.1
+#opt/lampp/man/man1/perllol.1
+#opt/lampp/man/man1/lwp-rget.1
+#opt/lampp/man/man1/perlguts.1
+#opt/lampp/man/man1/perlmod.1
+#opt/lampp/man/man1/perlobj.1
+#opt/lampp/man/man1/perlos2.1
+#opt/lampp/man/man1/gendsa.1
+#opt/lampp/man/man1/perlpod.1
+#opt/lampp/man/man1/perlqnx.1
+#opt/lampp/man/man1/perlref.1
+#opt/lampp/man/man1/perlsec.1
+#opt/lampp/man/man1/perlhpux.1
+#opt/lampp/man/man1/perlrun.1
+#opt/lampp/man/man1/perltie.1
+#opt/lampp/man/man1/perlsub.1
+#opt/lampp/man/man1/perltoc.1
+#opt/lampp/man/man1/perlsyn.1
+#opt/lampp/man/man1/perlvar.1
+#opt/lampp/man/man1/perluts.1
+#opt/lampp/man/man1/perlvms.1
+#opt/lampp/man/man1/perlvos.1
+#opt/lampp/man/man1/msginit.1
+#opt/lampp/man/man1/perlhurd.1
+#opt/lampp/man/man1/genrsa.1
+#opt/lampp/man/man1/mysqlman.1
+#opt/lampp/man/man1/perlirix.1
+#opt/lampp/man/man1/ngettext.1
+#opt/lampp/man/man1/ecparam.1
+#opt/lampp/man/man1/pod2latex.1
+#opt/lampp/man/man1/dbiprof.1
+#opt/lampp/man/man1/webalizer.1
+#opt/lampp/man/man1/h2ph.1
+#opt/lampp/man/man1/h2xs.1
+#opt/lampp/man/man1/bzless.1
+#opt/lampp/man/man1/cpan.1
+#opt/lampp/man/man1/dgst.1
+#opt/lampp/man/man1/curl.1
+#opt/lampp/man/man1/perlmint.1
+#opt/lampp/man/man1/perlamiga.1
+#opt/lampp/man/man1/bzmore.1
+#opt/lampp/man/man1/freebcp.1
+#opt/lampp/man/man1/tiffdump.1
+#opt/lampp/man/man1/bsqldb.1
+#opt/lampp/man/man1/infocmp.1.gz
+#opt/lampp/man/man1/perlport.1
+#opt/lampp/man/man1/perlos390.1
+#opt/lampp/man/man1/perlos400.1
+#opt/lampp/man/man1/sgi2tiff.1
+#opt/lampp/man/man1/myisamchk.1
+#opt/lampp/man/man1/verify.1
+#opt/lampp/man/man1/toe.1.gz
+#opt/lampp/man/man1/perlvmesa.1
+#opt/lampp/man/man1/myisamlog.1
+#opt/lampp/man/man1/lwp-mirror.1
+#opt/lampp/man/man1/msgen.1
+#opt/lampp/man/man1/openssl.1
+#opt/lampp/man/man1/mysql_zap.1
+#opt/lampp/man/man1/tiffdither.1
+#opt/lampp/man/man1/tiffinfo.1
+#opt/lampp/man/man1/perlpacktut.1
+#opt/lampp/man/man1/reset.1.gz
+#opt/lampp/man/man1/pod2man.1
+#opt/lampp/man/man1/perltodo.1
+#opt/lampp/man/man1/perltooc.1
+#opt/lampp/man/man1/perltoot.1
+#opt/lampp/man/man1/perltrap.1
+#opt/lampp/man/man1/perlmodinstall.1
+#opt/lampp/man/man1/perl585delta.1
+#opt/lampp/man/man1/mdc2.1
+#opt/lampp/man/man1/msguniq.1
+#opt/lampp/man/man1/gettext.1
+#opt/lampp/man/man1/perlutil.1
+#opt/lampp/man/man1/tiffsplit.1
+#opt/lampp/man/man1/s_client.1
+#opt/lampp/man/man1/ocsp.1
+#opt/lampp/man/man1/ldapcompare.1
+#opt/lampp/man/man1/nseq.1
+#opt/lampp/man/man1/mysqld_safe.1
+#opt/lampp/man/man1/mysqldump.1
+#opt/lampp/man/man1/mysqlimport.1
+#opt/lampp/man/man1/perl571delta.1
+#opt/lampp/man/man1/perlmacosx.1
+#opt/lampp/man/man1/perl.1
+#opt/lampp/man/man1/pkcs12.1
+#opt/lampp/man/man1/thumbnail.1
+#opt/lampp/man/man1/perlwin32.1
+#opt/lampp/man/man1/tic.1.gz
+#opt/lampp/man/man1/psed.1
+#opt/lampp/man/man1/mysql.1
+#opt/lampp/man/man1/rand.1
+#opt/lampp/man/man1/perlplan9.1
+#opt/lampp/man/man1/dsaparam.1
+#opt/lampp/man/man1/x509.1
+#opt/lampp/man/man1/perlmodlib.1
+#opt/lampp/man/man1/sha1.1
+#opt/lampp/man/man1/clear.1.gz
+#opt/lampp/man/man1/tack.1
+#opt/lampp/man/man1/perlintro.1
+#opt/lampp/man/man1/dbmmanage.1
+#opt/lampp/man/man1/rgb2ycbcr.1
+#opt/lampp/man/man1/tsql.1
+#opt/lampp/man/man1/CA.pl.1
+#opt/lampp/man/man1/perlcheat.1
+#opt/lampp/man/man1/perlmachten.1
+#opt/lampp/man/man1/perlfilter.1
+#opt/lampp/man/man1/perl56delta.1
+#opt/lampp/man/man1/tiffcp.1
+#opt/lampp/man/man1/tiffgt.1
+#opt/lampp/man/man1/tiffsv.1
+#opt/lampp/man/man1/autopoint.1
+#opt/lampp/man/man1/podselect.1
+#opt/lampp/man/man1/jpegtran.1
+#opt/lampp/man/man1/perl587delta.1
+#opt/lampp/man/man1/perllexwarn.1
+#opt/lampp/man/man1/perl582delta.1
+#opt/lampp/man/man1/xsubpp.1
+#opt/lampp/man/man1/mysqlshow.1
+#opt/lampp/man/man1/perlsolaris.1
+#opt/lampp/man/man1/perlapollo.1
+#opt/lampp/man/man1/perldebug.1
+#opt/lampp/man/man1/gif2tiff.1
+#opt/lampp/man/man1/tput.1.gz
+#opt/lampp/man/man1/perl573delta.1
+#opt/lampp/man/man1/mysqlhotcopy.1
+#opt/lampp/man/man1/perldelta.1
+#opt/lampp/man/man1/perldebtut.1
+#opt/lampp/man/man1/htdbm.1
+#opt/lampp/man/man1/mysqlbinlog.1
+#opt/lampp/man/man1/pl2pm.1
+#opt/lampp/man/man1/perldebguts.1
+#opt/lampp/man/man1/mysql_config.1
+#opt/lampp/man/man1/xmllint.1
+#opt/lampp/man/man1/dhparam.1
+#opt/lampp/man/man1/fax2tiff.1
+#opt/lampp/man/man1/perlreref.1
+#opt/lampp/man/man1/perlretut.1
+#opt/lampp/man/man1/pkcs7.1
+#opt/lampp/man/man1/pkcs8.1
+#opt/lampp/man/man1/s_time.1
+#opt/lampp/man/man1/lwp-download.1
+#opt/lampp/man/man1/perl5005delta.1
+#opt/lampp/man/man1/dbiproxy.1
+#opt/lampp/man/man1/version.1
+#opt/lampp/man/man1/showtable.1
+#opt/lampp/man/man1/podchecker.1
+#opt/lampp/man/man1/xml2-config.1
+#opt/lampp/man/man1/perlunicode.1
+#opt/lampp/man/man1/perlxstut.1
+#opt/lampp/man/man1/perl58delta.1
+#opt/lampp/man/man1/msgattrib.1
+#opt/lampp/man/man1/myisampack.1
+#opt/lampp/man/man1/sabcmd.1
+#opt/lampp/man/man1/ras2tiff.1
+#opt/lampp/man/man1/msgcat.1
+#opt/lampp/man/man1/perlcompile.1
+#opt/lampp/man/man1/msgcmp.1
+#opt/lampp/man/man1/perlbs2000.1
+#opt/lampp/man/man1/msgfmt.1
+#opt/lampp/man/man1/perlcc.1
+#opt/lampp/man/man1/perlce.1
+#opt/lampp/man/man1/perlcn.1
+#opt/lampp/man/man1/perljp.1
+#opt/lampp/man/man1/perlko.1
+#opt/lampp/man/man1/perlop.1
+#opt/lampp/man/man1/perlre.1
+#opt/lampp/man/man1/perltw.1
+#opt/lampp/man/man1/perlxs.1
+#opt/lampp/man/man1/perror.1
+#opt/lampp/man/man1/ciphers.1
+#opt/lampp/man/man1/pod2usage.1
+#opt/lampp/man/man1/rsautl.1
+#opt/lampp/man/man1/perlebcdic.1
+#opt/lampp/man/man1/perl584delta.1
+#opt/lampp/man/man1/cjpeg.1
+#opt/lampp/man/man1/mysql.server.1
+#opt/lampp/man/man1/prove.1
+#opt/lampp/man/man1/mysqld.1
+#opt/lampp/man/man1/perluniintro.1
+#opt/lampp/man/man1/xgettext.1
+#opt/lampp/man/man3/
+#opt/lampp/man/man3/EVP_PKEY_assign_RSA.3
+#opt/lampp/man/man3/wvline.3ncurses.gz
+#opt/lampp/man/man3/B.3
+#opt/lampp/man/man3/bkgrndset.3ncurses.gz
+#opt/lampp/man/man3/O.3
+#opt/lampp/man/man3/vw_printw.3ncurses.gz
+#opt/lampp/man/man3/set_fieldtype_choice.3form.gz
+#opt/lampp/man/man3/SSL_use_certificate_file.3
+#opt/lampp/man/man3/wnoutrefresh.3ncurses.gz
+#opt/lampp/man/man3/EVP_EncryptInit.3
+#opt/lampp/man/man3/ERR_PACK.3
+#opt/lampp/man/man3/field_index.3form.gz
+#opt/lampp/man/man3/mvwaddch.3ncurses.gz
+#opt/lampp/man/man3/EVP_SignUpdate.3
+#opt/lampp/man/man3/d2i_X509_NAME.3
+#opt/lampp/man/man3/sigtrap.3
+#opt/lampp/man/man3/ldap_ufn_timeout.3
+#opt/lampp/man/man3/menu_driver.3menu.gz
+#opt/lampp/man/man3/SSL_CTX_set_mode.3
+#opt/lampp/man/man3/mvin_wchnstr.3ncurses.gz
+#opt/lampp/man/man3/pad.3ncurses.gz
+#opt/lampp/man/man3/lh_node_stats.3
+#opt/lampp/man/man3/RAND_SSLeay.3
+#opt/lampp/man/man3/mod_perl.3
+#opt/lampp/man/man3/RSA_new.3
+#opt/lampp/man/man3/SSL_CTX_ctrl.3
+#opt/lampp/man/man3/TIFFCheckTile.3t
+#opt/lampp/man/man3/DB.3
+#opt/lampp/man/man3/set_menu_spacing.3menu.gz
+#opt/lampp/man/man3/IO.3
+#opt/lampp/man/man3/TIFFmemcmp.3t
+#opt/lampp/man/man3/clear.3ncurses.gz
+#opt/lampp/man/man3/has_ic.3ncurses.gz
+#opt/lampp/man/man3/BN_sub_word.3
+#opt/lampp/man/man3/Net::libnetFAQ.3
+#opt/lampp/man/man3/wclear.3ncurses.gz
+#opt/lampp/man/man3/ldap_parse_result.3
+#opt/lampp/man/man3/scrollok.3ncurses.gz
+#opt/lampp/man/man3/SSL_want.3
+#opt/lampp/man/man3/BIO_get_retry_reason.3
+#opt/lampp/man/man3/bn.3
+#opt/lampp/man/man3/dh.3
+#opt/lampp/man/man3/ldap_dn2str.3
+#opt/lampp/man/man3/X509_NAME_ENTRY_get_object.3
+#opt/lampp/man/man3/if.3
+#opt/lampp/man/man3/libcurl-tutorial.3
+#opt/lampp/man/man3/cldap_close.3
+#opt/lampp/man/man3/ldap_dn2ufn.3
+#opt/lampp/man/man3/re.3
+#opt/lampp/man/man3/TIFFmemcpy.3t
+#opt/lampp/man/man3/ui.3
+#opt/lampp/man/man3/qiflush.3ncurses.gz
+#opt/lampp/man/man3/Encode::JP::JIS7.3
+#opt/lampp/man/man3/ldap_sasl_bind_s.3
+#opt/lampp/man/man3/DES_ofb_encrypt.3
+#opt/lampp/man/man3/Apache::RequestRec.3
+#opt/lampp/man/man3/EVP_MD_CTX_copy_ex EVP_MD_CTX_copy.3
+#opt/lampp/man/man3/Apache2::HookRun.3
+#opt/lampp/man/man3/pos_menu_cursor.3menu.gz
+#opt/lampp/man/man3/Carp.3
+#opt/lampp/man/man3/APR::Request::Parser.3
+#opt/lampp/man/man3/BIO_get_conn_ip.3
+#opt/lampp/man/man3/TIFFVGetField.3t
+#opt/lampp/man/man3/DES_quad_cksum.3
+#opt/lampp/man/man3/SelectSaver.3
+#opt/lampp/man/man3/SSL_pending.3
+#opt/lampp/man/man3/MDC2_Init.3
+#opt/lampp/man/man3/SSL_get_options.3
+#opt/lampp/man/man3/XS::Typemap.3
+#opt/lampp/man/man3/opts.3menu.gz
+#opt/lampp/man/man3/ncurses.3ncurses.gz
+#opt/lampp/man/man3/DES_cfb_encrypt.3
+#opt/lampp/man/man3/ldap_set_cache_options.3
+#opt/lampp/man/man3/newterm.3ncurses.gz
+#opt/lampp/man/man3/i2d_PKCS8PrivateKey_nid_bio.3
+#opt/lampp/man/man3/IO::Select.3
+#opt/lampp/man/man3/SSL_want_read.3
+#opt/lampp/man/man3/Apache::TestConfig.3
+#opt/lampp/man/man3/Text::Tabs.3
+#opt/lampp/man/man3/SSL_get_error.3
+#opt/lampp/man/man3/ldap_result.3
+#opt/lampp/man/man3/BIO_do_accept.3
+#opt/lampp/man/man3/encoding.3
+#opt/lampp/man/man3/form_userptr.3form.gz
+#opt/lampp/man/man3/update_panels.3curses.gz
+#opt/lampp/man/man3/MD5_Update.3
+#opt/lampp/man/man3/URI::Split.3
+#opt/lampp/man/man3/slk_attr_off.3ncurses.gz
+#opt/lampp/man/man3/X509_NAME_add_entry_by_NID.3
+#opt/lampp/man/man3/X509_NAME_add_entry_by_OBJ.3
+#opt/lampp/man/man3/can_change_color.3ncurses.gz
+#opt/lampp/man/man3/OBJ_nid2ln.3
+#opt/lampp/man/man3/ERR_GET_LIB.3
+#opt/lampp/man/man3/OBJ_nid2sn.3
+#opt/lampp/man/man3/TIFFRGBAImageEnd.3t
+#opt/lampp/man/man3/ldap_abandon.3
+#opt/lampp/man/man3/BIO_s_accept.3
+#opt/lampp/man/man3/SSL_CTX_set_verify_depth.3
+#opt/lampp/man/man3/new_field.3form.gz
+#opt/lampp/man/man3/savetty.3ncurses.gz
+#opt/lampp/man/man3/ExtUtils::Liblist.3
+#opt/lampp/man/man3/BF_options.3
+#opt/lampp/man/man3/curl_easy_strerror.3
+#opt/lampp/man/man3/ERR_free_strings.3
+#opt/lampp/man/man3/SSL_CTX_get_verify_callback.3
+#opt/lampp/man/man3/ldap_entry2html_search.3
+#opt/lampp/man/man3/winchnstr.3ncurses.gz
+#opt/lampp/man/man3/DES_crypt.3
+#opt/lampp/man/man3/DH_set_ex_data.3
+#opt/lampp/man/man3/BIO_get_accept_port.3
+#opt/lampp/man/man3/bytes.3
+#opt/lampp/man/man3/BIO_new_buffer_ssl_connect.3
+#opt/lampp/man/man3/d2i_PKCS8PrivateKey.3
+#opt/lampp/man/man3/BIO_get_write_buf_size.3
+#opt/lampp/man/man3/wtimeout.3ncurses.gz
+#opt/lampp/man/man3/mitem_value.3menu.gz
+#opt/lampp/man/man3/ModPerl::RegistryLoader.3
+#opt/lampp/man/man3/DES_string_to_2keys.3
+#opt/lampp/man/man3/subwin.3ncurses.gz
+#opt/lampp/man/man3/Search::Dict.3
+#opt/lampp/man/man3/touchwin.3ncurses.gz
+#opt/lampp/man/man3/ASN1_OBJECT_new.3
+#opt/lampp/man/man3/wsetscrreg.3ncurses.gz
+#opt/lampp/man/man3/DBI::Const::GetInfoReturn.3
+#opt/lampp/man/man3/vline_set.3ncurses.gz
+#opt/lampp/man/man3/SSL_CTX_free.3
+#opt/lampp/man/man3/File::DosGlob.3
+#opt/lampp/man/man3/menu.3menu.gz
+#opt/lampp/man/man3/vwprintw.3ncurses.gz
+#opt/lampp/man/man3/mvwinchstr.3ncurses.gz
+#opt/lampp/man/man3/hide_panel.3curses.gz
+#opt/lampp/man/man3/TIFFRGBAImageGet.3t
+#opt/lampp/man/man3/d2i_PKCS8PrivateKey_fp.3
+#opt/lampp/man/man3/cursor.3form.gz
+#opt/lampp/man/man3/extensions.3ncurses.gz
+#opt/lampp/man/man3/BIO_set_callback_arg.3
+#opt/lampp/man/man3/getpary.3ncurses.gz
+#opt/lampp/man/man3/DES_ede3_cbcm_encrypt.3
+#opt/lampp/man/man3/diagnostics.3
+#opt/lampp/man/man3/SSL_get_accept_state.3
+#opt/lampp/man/man3/File::Copy.3
+#opt/lampp/man/man3/ModPerl::PerlRun.3
+#opt/lampp/man/man3/winsertln.3ncurses.gz
+#opt/lampp/man/man3/HMAC.3
+#opt/lampp/man/man3/set_menu_items.3menu.gz
+#opt/lampp/man/man3/BN_BLINDING_convert.3
+#opt/lampp/man/man3/mvgetn_wstr.3ncurses.gz
+#opt/lampp/man/man3/form_field_validation.3form.gz
+#opt/lampp/man/man3/delscreen.3ncurses.gz
+#opt/lampp/man/man3/MIME::QuotedPrint.3
+#opt/lampp/man/man3/BIO_set_ssl.3
+#opt/lampp/man/man3/is_wintouched.3ncurses.gz
+#opt/lampp/man/man3/SSL_CTX_set_default_passwd_cb.3
+#opt/lampp/man/man3/SSL_CTX_sess_timeouts.3
+#opt/lampp/man/man3/SSL_has_matching_session_id.3
+#opt/lampp/man/man3/SSL_CTX_sess_cb_hits.3
+#opt/lampp/man/man3/mousemask.3ncurses.gz
+#opt/lampp/man/man3/curl_share_strerror.3
+#opt/lampp/man/man3/EVP_DigestInit_ex.3
+#opt/lampp/man/man3/Term::Complete.3
+#opt/lampp/man/man3/reset_shell_mode.3ncurses.gz
+#opt/lampp/man/man3/vid_puts.3ncurses.gz
+#opt/lampp/man/man3/HTTP::Response.3
+#opt/lampp/man/man3/tputs.3ncurses.gz
+#opt/lampp/man/man3/new_menu.3menu.gz
+#opt/lampp/man/man3/ldap_next_entry.3
+#opt/lampp/man/man3/ldap_modrdn2_s.3
+#opt/lampp/man/man3/lwptut.3
+#opt/lampp/man/man3/flash.3ncurses.gz
+#opt/lampp/man/man3/erasechar.3ncurses.gz
+#opt/lampp/man/man3/slk_attr_set.3ncurses.gz
+#opt/lampp/man/man3/curs_set.3ncurses.gz
+#opt/lampp/man/man3/DBM_Filter::int32.3
+#opt/lampp/man/man3/bn_sqr_comba4.3
+#opt/lampp/man/man3/bn_sqr_comba8.3
+#opt/lampp/man/man3/Math::BigInt::Trace.3
+#opt/lampp/man/man3/delwin.3ncurses.gz
+#opt/lampp/man/man3/BIO_rw_filename.3
+#opt/lampp/man/man3/UI_ctrl.3
+#opt/lampp/man/man3/ldap_sort_entries.3
+#opt/lampp/man/man3/echo_wchar.3ncurses.gz
+#opt/lampp/man/man3/Time::gmtime.3
+#opt/lampp/man/man3/i2d_DHparams.3
+#opt/lampp/man/man3/menu_win.3menu.gz
+#opt/lampp/man/man3/APR::Bucket.3
+#opt/lampp/man/man3/ber_put_string.3
+#opt/lampp/man/man3/lh_doall_arg.3
+#opt/lampp/man/man3/mitem_current.3menu.gz
+#opt/lampp/man/man3/ldap_dn2dcedn.3
+#opt/lampp/man/man3/ldap_free_templates.3
+#opt/lampp/man/man3/mod_perl2.3
+#opt/lampp/man/man3/printw.3ncurses.gz
+#opt/lampp/man/man3/ldap_msgtype.3
+#opt/lampp/man/man3/SSL_CIPHER_description.3
+#opt/lampp/man/man3/ldap_vals2text.3
+#opt/lampp/man/man3/BN_is_bit_set.3
+#opt/lampp/man/man3/ASN1_STRING_cmp.3
+#opt/lampp/man/man3/mvwadd_wchnstr.3ncurses.gz
+#opt/lampp/man/man3/ldap_parse_extended_result.3
+#opt/lampp/man/man3/crypto.3
+#opt/lampp/man/man3/ASN1_STRING_dup.3
+#opt/lampp/man/man3/DHparams_print.3
+#opt/lampp/man/man3/IPC::Semaphore.3
+#opt/lampp/man/man3/EVP_PKEY_free.3
+#opt/lampp/man/man3/BIO_find_type.3
+#opt/lampp/man/man3/Pod::Plainer.3
+#opt/lampp/man/man3/X509_NAME_add_entry_by_txt.3
+#opt/lampp/man/man3/killchar.3ncurses.gz
+#opt/lampp/man/man3/BIO_write.3
+#opt/lampp/man/man3/UI_construct_prompt UI_add_user_data.3
+#opt/lampp/man/man3/Encode.3
+#opt/lampp/man/man3/ModPerl::RegistryBB.3
+#opt/lampp/man/man3/EVP_CIPHER_CTX_key_length.3
+#opt/lampp/man/man3/ldap_explode_dns.3
+#opt/lampp/man/man3/SSL_CTX_sess_connect.3
+#opt/lampp/man/man3/set_form_page.3form.gz
+#opt/lampp/man/man3/ASN1_STRING_type.3
+#opt/lampp/man/man3/curl_easy_setopt.3
+#opt/lampp/man/man3/ldap_ufn_search_c.3
+#opt/lampp/man/man3/ldap_free_searchprefs.3
+#opt/lampp/man/man3/ldap_ufn_search_s.3
+#opt/lampp/man/man3/BN_BLINDING_invert_ex.3
+#opt/lampp/man/man3/wprintw.3ncurses.gz
+#opt/lampp/man/man3/keybound.3ncurses.gz
+#opt/lampp/man/man3/File::Find.3
+#opt/lampp/man/man3/wins_wch.3ncurses.gz
+#opt/lampp/man/man3/HMAC_Final.3
+#opt/lampp/man/man3/Text::Wrap.3
+#opt/lampp/man/man3/TIFFReadDirectory.3t
+#opt/lampp/man/man3/bkgd.3ncurses.gz
+#opt/lampp/man/man3/Test::Harness::Point.3
+#opt/lampp/man/man3/APR.3
+#opt/lampp/man/man3/BN_BLINDING_new.3
+#opt/lampp/man/man3/mvwscanw.3ncurses.gz
+#opt/lampp/man/man3/ASN1_STRING_new.3
+#opt/lampp/man/man3/CGI.3
+#opt/lampp/man/man3/SSL_CTX_sess_misses.3
+#opt/lampp/man/man3/regex.3
+#opt/lampp/man/man3/DBI.3
+#opt/lampp/man/man3/DSA_get_ex_new_index.3
+#opt/lampp/man/man3/OPENSSL_no_config.3
+#opt/lampp/man/man3/APR::Table.3
+#opt/lampp/man/man3/BIO_ptr_ctrl.3
+#opt/lampp/man/man3/overwrite.3ncurses.gz
+#opt/lampp/man/man3/set_menu_win.3menu.gz
+#opt/lampp/man/man3/SSL_set_verify_result.3
+#opt/lampp/man/man3/lh_retrieve.3
+#opt/lampp/man/man3/TIFFReadRawStrip.3t
+#opt/lampp/man/man3/EVP_DigestInit.3
+#opt/lampp/man/man3/mitem_visible.3menu.gz
+#opt/lampp/man/man3/RSA_set_method.3
+#opt/lampp/man/man3/mvwaddnstr.3ncurses.gz
+#opt/lampp/man/man3/EVP_MD_CTX_md.3
+#opt/lampp/man/man3/i2d_PKCS8PrivateKey_nid_fp.3
+#opt/lampp/man/man3/deleteln.3ncurses.gz
+#opt/lampp/man/man3/ERR_reason_error_string.3
+#opt/lampp/man/man3/unpost_form.3form.gz
+#opt/lampp/man/man3/SMIME_read_PKCS7.3
+#opt/lampp/man/man3/SSL_get_info_callback.3
+#opt/lampp/man/man3/Cwd.3
+#opt/lampp/man/man3/CGI::Carp.3
+#opt/lampp/man/man3/ASN1_STRING_set.3
+#opt/lampp/man/man3/panel_hidden.3curses.gz
+#opt/lampp/man/man3/syncok.3ncurses.gz
+#opt/lampp/man/man3/_tracef.3ncurses.gz
+#opt/lampp/man/man3/File::Spec::Unix.3
+#opt/lampp/man/man3/Env.3
+#opt/lampp/man/man3/Sys::Syslog.3
+#opt/lampp/man/man3/BIO_should_write.3
+#opt/lampp/man/man3/Memoize::ExpireFile.3
+#opt/lampp/man/man3/Pod::ParseLink.3
+#opt/lampp/man/man3/ldap_explode_rdn.3
+#opt/lampp/man/man3/getsyx.3ncurses.gz
+#opt/lampp/man/man3/BN_mask_bits.3
+#opt/lampp/man/man3/DBI::Profile.3
+#opt/lampp/man/man3/Encode::CN::HZ.3
+#opt/lampp/man/man3/ldap_modrdn2.3
+#opt/lampp/man/man3/ldap_modrdn2_s
+#opt/lampp/man/man3/field_back.3form.gz
+#opt/lampp/man/man3/set_form_opts.3form.gz
+#opt/lampp/man/man3/MD2.3
+#opt/lampp/man/man3/Tie::IxHash.3
+#opt/lampp/man/man3/MD4.3
+#opt/lampp/man/man3/MD5.3
+#opt/lampp/man/man3/curl_multi_fdset.3
+#opt/lampp/man/man3/menu_userptr.3menu.gz
+#opt/lampp/man/man3/File::Glob.3
+#opt/lampp/man/man3/ldap_modrdn_s.3
+#opt/lampp/man/man3/LWP.3
+#opt/lampp/man/man3/SSL_CIPHER_get_bits.3
+#opt/lampp/man/man3/ExtUtils::Command.3
+#opt/lampp/man/man3/RAND_write_file.3
+#opt/lampp/man/man3/UI_free.3
+#opt/lampp/man/man3/wresize.3ncurses.gz
+#opt/lampp/man/man3/mvaddchstr.3ncurses.gz
+#opt/lampp/man/man3/TIFFNumberOfStrips.3t
+#opt/lampp/man/man3/ungetmouse.3ncurses.gz
+#opt/lampp/man/man3/PEM.3
+#opt/lampp/man/man3/hook.3menu.gz
+#opt/lampp/man/man3/menu_request_name.3menu.gz
+#opt/lampp/man/man3/DES_ncbc_encrypt.3
+#opt/lampp/man/man3/ODBM_File.3
+#opt/lampp/man/man3/B::Concise.3
+#opt/lampp/man/man3/RC4.3
+#opt/lampp/man/man3/ldap_translate_to_t61.3
+#opt/lampp/man/man3/ldap_next_tmplcol.3
+#opt/lampp/man/man3/Net::servent.3
+#opt/lampp/man/man3/SSL_get_msg_callback_arg.3
+#opt/lampp/man/man3/MDC2.3
+#opt/lampp/man/man3/ungetch.3ncurses.gz
+#opt/lampp/man/man3/RSA_generate_key.3
+#opt/lampp/man/man3/SSL.3
+#opt/lampp/man/man3/items.3menu.gz
+#opt/lampp/man/man3/SSL_COMP_add_compression_method.3
+#opt/lampp/man/man3/unget_wch.3ncurses.gz
+#opt/lampp/man/man3/curl_formadd.3
+#opt/lampp/man/man3/URI.3
+#opt/lampp/man/man3/add_wchstr.3ncurses.gz
+#opt/lampp/man/man3/item_visible.3menu.gz
+#opt/lampp/man/man3/init_color.3ncurses.gz
+#opt/lampp/man/man3/des_read_2passwords.3
+#opt/lampp/man/man3/nocbreak.3ncurses.gz
+#opt/lampp/man/man3/B::Disassembler.3
+#opt/lampp/man/man3/mvhline_set.3ncurses.gz
+#opt/lampp/man/man3/field_fore.3form.gz
+#opt/lampp/man/man3/ldap_url_search_st.3
+#opt/lampp/man/man3/post.3menu.gz
+#opt/lampp/man/man3/EVP_CIPHER_block_size.3
+#opt/lampp/man/man3/curl_multi_strerror.3
+#opt/lampp/man/man3/ldap_oc2template.3
+#opt/lampp/man/man3/slk_attr_on.3ncurses.gz
+#opt/lampp/man/man3/MD2_Final.3
+#opt/lampp/man/man3/CRYPTO_set_id_callback.3
+#opt/lampp/man/man3/Encode::PerlIO.3
+#opt/lampp/man/man3/BIO_get_conn_int_port.3
+#opt/lampp/man/man3/DH_new_method.3
+#opt/lampp/man/man3/BN_BLINDING_update.3
+#opt/lampp/man/man3/HTML::HeadParser.3
+#opt/lampp/man/man3/curses_version.3ncurses.gz
+#opt/lampp/man/man3/ldap_next_tmplrow.3
+#opt/lampp/man/man3/page.3form.gz
+#opt/lampp/man/man3/BN_mod_word.3
+#opt/lampp/man/man3/cldap_search_s.3
+#opt/lampp/man/man3/TIFFWriteTile.3t
+#opt/lampp/man/man3/NEXT.3
+#opt/lampp/man/man3/inopts.3ncurses.gz
+#opt/lampp/man/man3/Digest::MD5.3
+#opt/lampp/man/man3/File::Compare.3
+#opt/lampp/man/man3/BIO_read_filename.3
+#opt/lampp/man/man3/libtiff.3t
+#opt/lampp/man/man3/Apache2::Module.3
+#opt/lampp/man/man3/bindtextdomain.3
+#opt/lampp/man/man3/bio.3
+#opt/lampp/man/man3/SSL_get_current_cipher.3
+#opt/lampp/man/man3/meta.3ncurses.gz
+#opt/lampp/man/man3/ldap_dn2ad_canonical.3
+#opt/lampp/man/man3/Test::Harness.3
+#opt/lampp/man/man3/EVP_MD_CTX_copy.3
+#opt/lampp/man/man3/ExtUtils::MM.3
+#opt/lampp/man/man3/ExtUtils::MY.3
+#opt/lampp/man/man3/des.3
+#opt/lampp/man/man3/ldap_init_searchprefs_buf.3
+#opt/lampp/man/man3/bn_print.3
+#opt/lampp/man/man3/item_opts_on.3menu.gz
+#opt/lampp/man/man3/dsa.3
+#opt/lampp/man/man3/CGI::Fast.3
+#opt/lampp/man/man3/err.3
+#opt/lampp/man/man3/ber_get_boolean.3
+#opt/lampp/man/man3/evp.3
+#opt/lampp/man/man3/SSL_want_nothing.3
+#opt/lampp/man/man3/DES_ede2_cbc_encrypt.3
+#opt/lampp/man/man3/BIO_append_filename.3
+#opt/lampp/man/man3/WWW::RobotRules.3
+#opt/lampp/man/man3/TIFFWriteEncodedStrip.3t
+#opt/lampp/man/man3/DES_set_key_unchecked.3
+#opt/lampp/man/man3/APR::Request::Cookie.3
+#opt/lampp/man/man3/Bundle::Apache2.3
+#opt/lampp/man/man3/kernel.3ncurses.gz
+#opt/lampp/man/man3/BIO_get_ssl.3
+#opt/lampp/man/man3/lib.3
+#opt/lampp/man/man3/md5.3
+#opt/lampp/man/man3/DSA_print_fp.3
+#opt/lampp/man/man3/ber_next_element.3
+#opt/lampp/man/man3/mvwinnwstr.3ncurses.gz
+#opt/lampp/man/man3/opts.3form.gz
+#opt/lampp/man/man3/IPC::Msg.3
+#opt/lampp/man/man3/wadd_wchnstr.3ncurses.gz
+#opt/lampp/man/man3/new_page.3form.gz
+#opt/lampp/man/man3/lber-types.3
+#opt/lampp/man/man3/form_new.3form.gz
+#opt/lampp/man/man3/curl_global_init.3
+#opt/lampp/man/man3/Hash::Util.3
+#opt/lampp/man/man3/ops.3
+#opt/lampp/man/man3/pem.3
+#opt/lampp/man/man3/nodelay.3ncurses.gz
+#opt/lampp/man/man3/APR::Error.3
+#opt/lampp/man/man3/rc4.3
+#opt/lampp/man/man3/BIO_set_conn_port.3
+#opt/lampp/man/man3/RAND_screen.3
+#opt/lampp/man/man3/SSL_set_quiet_shutdown.3
+#opt/lampp/man/man3/RSA_sign.3
+#opt/lampp/man/man3/menu_opts.3menu.gz
+#opt/lampp/man/man3/SSL_get_verify_callback.3
+#opt/lampp/man/man3/ber_alloc_t.3
+#opt/lampp/man/man3/sha.3
+#opt/lampp/man/man3/rsa.3
+#opt/lampp/man/man3/BIO_make_bio_pair.3
+#opt/lampp/man/man3/RSA_size.3
+#opt/lampp/man/man3/ssl.3
+#opt/lampp/man/man3/TIFFPrintDirectory.3t
+#opt/lampp/man/man3/Attribute::Handlers::demo::Demo.3
+#opt/lampp/man/man3/DSA_print.3
+#opt/lampp/man/man3/set_field_type.3form.gz
+#opt/lampp/man/man3/BIO_set_ssl_mode.3
+#opt/lampp/man/man3/BN_copy.3
+#opt/lampp/man/man3/mvvline.3ncurses.gz
+#opt/lampp/man/man3/attr_get.3ncurses.gz
+#opt/lampp/man/man3/DH_get_ex_data.3
+#opt/lampp/man/man3/SSL_get_default_timeout.3
+#opt/lampp/man/man3/DHparams_print_fp.3
+#opt/lampp/man/man3/DSA_set_method.3
+#opt/lampp/man/man3/use_default_colors.3ncurses.gz
+#opt/lampp/man/man3/use_extended_names.3ncurses.gz
+#opt/lampp/man/man3/libexslt.3
+#opt/lampp/man/man3/SSL_CTX_get_max_cert_list.3
+#opt/lampp/man/man3/ldap_kerberos_bind_s.3
+#opt/lampp/man/man3/win_wchstr.3ncurses.gz
+#opt/lampp/man/man3/ber_flush.3
+#opt/lampp/man/man3/i2d_X509_CRL_fp.3
+#opt/lampp/man/man3/ldap_unbind_ext_s.3
+#opt/lampp/man/man3/SSL_use_RSAPrivateKey_ASN1.3
+#opt/lampp/man/man3/APR::Date.3
+#opt/lampp/man/man3/APR::Status.3
+#opt/lampp/man/man3/SSL_SESSION_free.3
+#opt/lampp/man/man3/ldap_syntax2name.3
+#opt/lampp/man/man3/ecdsa.3
+#opt/lampp/man/man3/UI_add_input_boolean.3
+#opt/lampp/man/man3/baudrate.3ncurses.gz
+#opt/lampp/man/man3/ldap_matchingrule_free.3
+#opt/lampp/man/man3/BN_clear_bit.3
+#opt/lampp/man/man3/wdeleteln.3ncurses.gz
+#opt/lampp/man/man3/ERR_print_errors_fp.3
+#opt/lampp/man/man3/set_new_page.3form.gz
+#opt/lampp/man/man3/APR::Request::Error.3
+#opt/lampp/man/man3/BN_mod_inverse.3
+#opt/lampp/man/man3/URI::Escape.3
+#opt/lampp/man/man3/TIFFDefaultTileSize.3t
+#opt/lampp/man/man3/Encode::Unicode.3
+#opt/lampp/man/man3/Term::ReadKey.3
+#opt/lampp/man/man3/RSA_set_default_method.3
+#opt/lampp/man/man3/Config.3
+#opt/lampp/man/man3/APR::Finfo.3
+#opt/lampp/man/man3/ERR_peek_last_error_line_data.3
+#opt/lampp/man/man3/menu_name.3menu.gz
+#opt/lampp/man/man3/ldap_schema.3
+#opt/lampp/man/man3/TIFFCurrentStrip.3t
+#opt/lampp/man/man3/X509_NAME_print.3
+#opt/lampp/man/man3/d2i_SSL_SESSION.3
+#opt/lampp/man/man3/TIFFComputeStrip.3t
+#opt/lampp/man/man3/ExtUtils::XSBuilder.3
+#opt/lampp/man/man3/SSL_new.3
+#opt/lampp/man/man3/TIFFmemory.3t
+#opt/lampp/man/man3/curl_multi_cleanup.3
+#opt/lampp/man/man3/DH_generate_parameters.3
+#opt/lampp/man/man3/menu_spacing.3menu.gz
+#opt/lampp/man/man3/SSL_rstate_string_long.3
+#opt/lampp/man/man3/SSL_get_ssl_method.3
+#opt/lampp/man/man3/ERR_load_crypto_strings.3
+#opt/lampp/man/man3/has_key.3ncurses.gz
+#opt/lampp/man/man3/Archive::Tar::File.3
+#opt/lampp/man/man3/wsyncdown.3ncurses.gz
+#opt/lampp/man/man3/wborder_set.3ncurses.gz
+#opt/lampp/man/man3/ldap_modify.3
+#opt/lampp/man/man3/ldap_search_s.3
+#opt/lampp/man/man3/form_field_info.3form.gz
+#opt/lampp/man/man3/I18N::LangTags::Detect.3
+#opt/lampp/man/man3/ripoffline.3ncurses.gz
+#opt/lampp/man/man3/Apache2::Filter.3
+#opt/lampp/man/man3/DES_ecb_encrypt.3
+#opt/lampp/man/man3/_nc_tracebits.3ncurses.gz
+#opt/lampp/man/man3/TIFFVStripSize.3t
+#opt/lampp/man/man3/warnings.3
+#opt/lampp/man/man3/Text::Balanced.3
+#opt/lampp/man/man3/ModPerl::Util.3
+#opt/lampp/man/man3/set_menu_grey.3menu.gz
+#opt/lampp/man/man3/bn_expand2.3
+#opt/lampp/man/man3/touchline.3ncurses.gz
+#opt/lampp/man/man3/Pod::Perldoc::ToNroff.3
+#opt/lampp/man/man3/TIFFReverseBits.3t
+#opt/lampp/man/man3/SSL_SESSION_get_time.3
+#opt/lampp/man/man3/EVP_get_cipherbyname.3
+#opt/lampp/man/man3/ldap_first_attribute.3
+#opt/lampp/man/man3/SSL_CTX_set_ex_data.3
+#opt/lampp/man/man3/ldap_build_filter.3
+#opt/lampp/man/man3/TIFFComputeTile.3t
+#opt/lampp/man/man3/bn_sub_words.3
+#opt/lampp/man/man3/mvwinsch.3ncurses.gz
+#opt/lampp/man/man3/menu_requestname.3menu.gz
+#opt/lampp/man/man3/DBM_Filter::encode.3
+#opt/lampp/man/man3/scale_menu.3menu.gz
+#opt/lampp/man/man3/Apache2::Access.3
+#opt/lampp/man/man3/flushinp.3ncurses.gz
+#opt/lampp/man/man3/RAND_set_rand_method.3
+#opt/lampp/man/man3/ldap_modrdn.3
+#opt/lampp/man/man3/ldap_modrdn_s
+#opt/lampp/man/man3/set_menu_mark.3menu.gz
+#opt/lampp/man/man3/RSA_padding_add_none.3
+#opt/lampp/man/man3/RSA_padding_check_SSLv23.3
+#opt/lampp/man/man3/BIO_reset.3
+#opt/lampp/man/man3/SSL_CTX_set_tmp_dh_callback.3
+#opt/lampp/man/man3/DH_set_default_method.3
+#opt/lampp/man/man3/SHA1.3
+#opt/lampp/man/man3/Apache::TestUtil.3
+#opt/lampp/man/man3/IO::File.3
+#opt/lampp/man/man3/curl_version_info.3
+#opt/lampp/man/man3/Apache2::MPM.3
+#opt/lampp/man/man3/EVP_PKEY_new.3
+#opt/lampp/man/man3/BN_free.3
+#opt/lampp/man/man3/set_field_status.3form.gz
+#opt/lampp/man/man3/BF_ecb_encrypt.3
+#opt/lampp/man/man3/ldap_8859_to_t61.3
+#opt/lampp/man/man3/SSL_CTX_add_client_CA.3
+#opt/lampp/man/man3/TIFFSwabShort.3t
+#opt/lampp/man/man3/free_menu.3menu.gz
+#opt/lampp/man/man3/Net::FTP::A.3
+#opt/lampp/man/man3/Net::FTP::E.3
+#opt/lampp/man/man3/Net::FTP::I.3
+#opt/lampp/man/man3/Net::FTP::L.3
+#opt/lampp/man/man3/Apache2::Log.3
+#opt/lampp/man/man3/mvaddnwstr.3ncurses.gz
+#opt/lampp/man/man3/panel_below.3curses.gz
+#opt/lampp/man/man3/mvadd_wchstr.3ncurses.gz
+#opt/lampp/man/man3/DBI::PurePerl.3
+#opt/lampp/man/man3/DSA_do_verify.3
+#opt/lampp/man/man3/curl_share_init.3
+#opt/lampp/man/man3/SSL_want_write.3
+#opt/lampp/man/man3/DH_OpenSSL.3
+#opt/lampp/man/man3/SSL_CTX_use_certificate.3
+#opt/lampp/man/man3/GDBM_File.3
+#opt/lampp/man/man3/format.3menu.gz
+#opt/lampp/man/man3/ldap_first_reference.3
+#opt/lampp/man/man3/Win32.3
+#opt/lampp/man/man3/Apache2::URI.3
+#opt/lampp/man/man3/User::grent.3
+#opt/lampp/man/man3/move.3ncurses.gz
+#opt/lampp/man/man3/ASN1_STRING_length.3
+#opt/lampp/man/man3/getyx.3ncurses.gz
+#opt/lampp/man/man3/Bundle::DBI.3
+#opt/lampp/man/man3/File::Path.3
+#opt/lampp/man/man3/EVP_MD_CTX_init.3
+#opt/lampp/man/man3/TIFFOpen.3t
+#opt/lampp/man/man3/BN_RECP_CTX_new.3
+#opt/lampp/man/man3/wgetbkgrnd.3ncurses.gz
+#opt/lampp/man/man3/set_form_init.3form.gz
+#opt/lampp/man/man3/setterm.3ncurses.gz
+#opt/lampp/man/man3/SSL_alert_desc_string_long.3
+#opt/lampp/man/man3/mvwgetnstr.3ncurses.gz
+#opt/lampp/man/man3/ber_put_int.3
+#opt/lampp/man/man3/TIFFmemset.3t
+#opt/lampp/man/man3/BIO_should_retry.3
+#opt/lampp/man/man3/Net::HTTP::NB.3
+#opt/lampp/man/man3/ldap_unbind_s.3
+#opt/lampp/man/man3/BN_RECP_CTX_free.3
+#opt/lampp/man/man3/getch.3ncurses.gz
+#opt/lampp/man/man3/lh_delete.3
+#opt/lampp/man/man3/keyname.3ncurses.gz
+#opt/lampp/man/man3/wgetch.3ncurses.gz
+#opt/lampp/man/man3/APR::URI.3
+#opt/lampp/man/man3/del_panel.3curses.gz
+#opt/lampp/man/man3/RSA_padding_add_PKCS1_OAEP.3
+#opt/lampp/man/man3/BN_RECP_CTX_set.3
+#opt/lampp/man/man3/PerlIO::scalar.3
+#opt/lampp/man/man3/bottom_panel.3curses.gz
+#opt/lampp/man/man3/SSL_CTX_set_default_passwd_cb_userdata.3
+#opt/lampp/man/man3/Getopt::Long.3
+#opt/lampp/man/man3/endwin.3ncurses.gz
+#opt/lampp/man/man3/des_read_pw.3
+#opt/lampp/man/man3/d2i_X509_fp.3
+#opt/lampp/man/man3/HTML::Tagset.3
+#opt/lampp/man/man3/Bundle::LWP.3
+#opt/lampp/man/man3/lh_stats_bio.3
+#opt/lampp/man/man3/ldap_next_searchobj.3
+#opt/lampp/man/man3/ber_put_seq.3
+#opt/lampp/man/man3/ber_put_set.3
+#opt/lampp/man/man3/SSL_CTX_use_PrivateKey_file.3
+#opt/lampp/man/man3/ERR_pop_to_mark.3
+#opt/lampp/man/man3/OBJ_txt2nid.3
+#opt/lampp/man/man3/panel.3curses.gz
+#opt/lampp/man/man3/OBJ_txt2obj.3
+#opt/lampp/man/man3/RSA_padding_add_PKCS1_type_1.3
+#opt/lampp/man/man3/RSA_padding_add_PKCS1_type_2.3
+#opt/lampp/man/man3/BF_ofb64_encrypt.3
+#opt/lampp/man/man3/Encode::MIME::Header.3
+#opt/lampp/man/man3/hook.3form.gz
+#opt/lampp/man/man3/ber_put_ostring.3
+#opt/lampp/man/man3/AutoSplit.3
+#opt/lampp/man/man3/wattr_get.3ncurses.gz
+#opt/lampp/man/man3/EVP_MD_CTX_block_size.3
+#opt/lampp/man/man3/UI_construct_prompt.3
+#opt/lampp/man/man3/mvwinchnstr.3ncurses.gz
+#opt/lampp/man/man3/ldap_init_templates_buf.3
+#opt/lampp/man/man3/BN_MONT_CTX_copy.3
+#opt/lampp/man/man3/Safe.3
+#opt/lampp/man/man3/ldap_str2attributetype.3
+#opt/lampp/man/man3/init_pair.3ncurses.gz
+#opt/lampp/man/man3/BIO_get_bind_mode.3
+#opt/lampp/man/man3/CRYPTO_lock.3
+#opt/lampp/man/man3/SSL_CTX_use_certificate_ASN1.3
+#opt/lampp/man/man3/BN_bn2bin.3
+#opt/lampp/man/man3/SSL_CTX_sess_set_get_cb.3
+#opt/lampp/man/man3/BIO_f_base64.3
+#opt/lampp/man/man3/X509_NAME_get_index_by_NID.3
+#opt/lampp/man/man3/X509_NAME_get_index_by_OBJ.3
+#opt/lampp/man/man3/BIO_set_cipher.3
+#opt/lampp/man/man3/APR::ThreadMutex.3
+#opt/lampp/man/man3/Win32::DBIODBC.3
+#opt/lampp/man/man3/menu_hook.3menu.gz
+#opt/lampp/man/man3/Devel::PPPort.3
+#opt/lampp/man/man3/APR::Request::Hook.3
+#opt/lampp/man/man3/BN_bn2dec.3
+#opt/lampp/man/man3/SSL_CTX_flush_sessions.3
+#opt/lampp/man/man3/SSL_get_ex_new_index.3
+#opt/lampp/man/man3/BN_init.3
+#opt/lampp/man/man3/mvvline_set.3ncurses.gz
+#opt/lampp/man/man3/ERR_print_errors.3
+#opt/lampp/man/man3/BIO_set_write_buf_size.3
+#opt/lampp/man/man3/ERR_put_error.3
+#opt/lampp/man/man3/Pod::Find.3
+#opt/lampp/man/man3/CGI::Switch.3
+#opt/lampp/man/man3/post.3form.gz
+#opt/lampp/man/man3/termname.3ncurses.gz
+#opt/lampp/man/man3/Benchmark.3
+#opt/lampp/man/man3/SSL_shutdown.3
+#opt/lampp/man/man3/BN_bn2hex.3
+#opt/lampp/man/man3/SSL_get_client_CA_list.3
+#opt/lampp/man/man3/BIO_s_bio.3
+#opt/lampp/man/man3/post_form.3form.gz
+#opt/lampp/man/man3/menu_cursor.3menu.gz
+#opt/lampp/man/man3/SSL_accept.3
+#opt/lampp/man/man3/Test::Harness::TAP.3
+#opt/lampp/man/man3/BN_bin2bn.3
+#opt/lampp/man/man3/SSL_CTX_set_options.3
+#opt/lampp/man/man3/tparm.3ncurses.gz
+#opt/lampp/man/man3/SSL_set_tmp_rsa.3
+#opt/lampp/man/man3/ExtUtils::MM_DOS.3
+#opt/lampp/man/man3/ExtUtils::MM_Any.3
+#opt/lampp/man/man3/lhash.3
+#opt/lampp/man/man3/menu_post.3menu.gz
+#opt/lampp/man/man3/SSL_CTX_get_session_cache_mode.3
+#opt/lampp/man/man3/SSL_CTX_set_info_callback.3
+#opt/lampp/man/man3/longname.3ncurses.gz
+#opt/lampp/man/man3/BN_bn2mpi.3
+#opt/lampp/man/man3/form_win.3form.gz
+#opt/lampp/man/man3/TIFFGetField.3t
+#opt/lampp/man/man3/BN_div_recp.3
+#opt/lampp/man/man3/CGI::Apache.3
+#opt/lampp/man/man3/ldap_attributetype2name.3
+#opt/lampp/man/man3/BIO_shutdown_wr.3
+#opt/lampp/man/man3/i2d_X509_REQ_bio.3
+#opt/lampp/man/man3/ExtUtils::testlib.3
+#opt/lampp/man/man3/BIO_set_conn_hostname.3
+#opt/lampp/man/man3/delch.3ncurses.gz
+#opt/lampp/man/man3/Test.3
+#opt/lampp/man/man3/OBJ_cmp.3
+#opt/lampp/man/man3/BN_RECP_CTX_init.3
+#opt/lampp/man/man3/APR::IpSubnet.3
+#opt/lampp/man/man3/wdelch.3ncurses.gz
+#opt/lampp/man/man3/EVP_MD_CTX_cleanup.3
+#opt/lampp/man/man3/SSL_CIPHER_get_name.3
+#opt/lampp/man/man3/SSL_get_peer_cert_chain.3
+#opt/lampp/man/man3/mvwin_wchstr.3ncurses.gz
+#opt/lampp/man/man3/OBJ_sn2nid.3
+#opt/lampp/man/man3/mvwadd_wch.3ncurses.gz
+#opt/lampp/man/man3/OBJ_dup.3
+#opt/lampp/man/man3/BIO_s_mem.3
+#opt/lampp/man/man3/mvwaddwstr.3ncurses.gz
+#opt/lampp/man/man3/EVP_CipherInit.3
+#opt/lampp/man/man3/SSL_SESSION_set_time.3
+#opt/lampp/man/man3/panel_window.3curses.gz
+#opt/lampp/man/man3/has_il.3ncurses.gz
+#opt/lampp/man/man3/newpad.3ncurses.gz
+#opt/lampp/man/man3/idcok.3ncurses.gz
+#opt/lampp/man/man3/Encode::Encoder.3
+#opt/lampp/man/man3/File::CheckTree.3
+#opt/lampp/man/man3/EVP_PKEY_assign_EC_KEY.3
+#opt/lampp/man/man3/ERR_remove_state.3
+#opt/lampp/man/man3/mvinchstr.3ncurses.gz
+#opt/lampp/man/man3/ExtUtils::MM_NW5.3
+#opt/lampp/man/man3/HTTP::Cookies::Microsoft.3
+#opt/lampp/man/man3/ExtUtils::MM_OS2.3
+#opt/lampp/man/man3/MD4_Final.3
+#opt/lampp/man/man3/Apache2::Upload.3
+#opt/lampp/man/man3/EVP_OpenInit.3
+#opt/lampp/man/man3/Apache2::ServerUtil.3
+#opt/lampp/man/man3/BIO_ssl_shutdown.3
+#opt/lampp/man/man3/libxslt.3
+#opt/lampp/man/man3/LWP::MediaTypes.3
+#opt/lampp/man/man3/BN_lshift1.3
+#opt/lampp/man/man3/Tie::File.3
+#opt/lampp/man/man3/set_top_row.3menu.gz
+#opt/lampp/man/man3/resetty.3ncurses.gz
+#opt/lampp/man/man3/TIFFRegisterCODEC.3t
+#opt/lampp/man/man3/instr.3ncurses.gz
+#opt/lampp/man/man3/initscr.3ncurses.gz
+#opt/lampp/man/man3/TIFFClientOpen.3t
+#opt/lampp/man/man3/ldap_delete_s.3
+#opt/lampp/man/man3/winstr.3ncurses.gz
+#opt/lampp/man/man3/BIO_get_write_guarantee.3
+#opt/lampp/man/man3/move_field.3form.gz
+#opt/lampp/man/man3/setscrreg.3ncurses.gz
+#opt/lampp/man/man3/ERR_get_next_error_library.3
+#opt/lampp/man/man3/File::Spec.3
+#opt/lampp/man/man3/ExtUtils::MM_VMS.3
+#opt/lampp/man/man3/ERR_GET_FUNC.3
+#opt/lampp/man/man3/SSL_set_session_id_context.3
+#opt/lampp/man/man3/Symbol.3
+#opt/lampp/man/man3/DBI::ProxyServer.3
+#opt/lampp/man/man3/File::Temp.3
+#opt/lampp/man/man3/SSL_get_version.3
+#opt/lampp/man/man3/set_form_win.3form.gz
+#opt/lampp/man/man3/EVP_MD_CTX_create.3
+#opt/lampp/man/man3/EVP_CipherFinal.3
+#opt/lampp/man/man3/BN_MONT_CTX_free.3
+#opt/lampp/man/man3/DBM_Filter::compress.3
+#opt/lampp/man/man3/ber_put_enum.3
+#opt/lampp/man/man3/box.3ncurses.gz
+#opt/lampp/man/man3/ldap_t61_to_8859.3
+#opt/lampp/man/man3/BIO_set_mem_buf.3
+#opt/lampp/man/man3/bn_mul_recursive.3
+#opt/lampp/man/man3/TIFFcodec.3t
+#opt/lampp/man/man3/_tracemouse.3ncurses.gz
+#opt/lampp/man/man3/Tie::Array.3
+#opt/lampp/man/man3/EVP_PKEY_type.3
+#opt/lampp/man/man3/EVP_CIPHER_CTX_ctrl.3
+#opt/lampp/man/man3/ASN1_STRING_print_ex_fp.3
+#opt/lampp/man/man3/ASN1_generate_v3.3
+#opt/lampp/man/man3/Pod::Html.3
+#opt/lampp/man/man3/TIFFWriteEncodedTile.3t
+#opt/lampp/man/man3/DES_enc_read.3
+#opt/lampp/man/man3/SSL_CTX_set_generate_session_id.3
+#opt/lampp/man/man3/MDC2_Update.3
+#opt/lampp/man/man3/SSL_CTX_sessions.3
+#opt/lampp/man/man3/Tie::Hash.3
+#opt/lampp/man/man3/tigetstr.3ncurses.gz
+#opt/lampp/man/man3/Memoize::ExpireTest.3
+#opt/lampp/man/man3/Apache::Reload.3
+#opt/lampp/man/man3/free_fieldtype.3form.gz
+#opt/lampp/man/man3/Apache2::Request.3
+#opt/lampp/man/man3/ByteLoader.3
+#opt/lampp/man/man3/File::Spec::Win32.3
+#opt/lampp/man/man3/ldap_init_searchprefs.3
+#opt/lampp/man/man3/Unicode::UCD.3
+#opt/lampp/man/man3/MD2_Update.3
+#opt/lampp/man/man3/fields.3
+#opt/lampp/man/man3/DH_compute_key.3
+#opt/lampp/man/man3/RSA_public_encrypt.3
+#opt/lampp/man/man3/wredrawln.3ncurses.gz
+#opt/lampp/man/man3/Sys::Hostname.3
+#opt/lampp/man/man3/ExtUtils::MakeMaker::bytes.3
+#opt/lampp/man/man3/RSA_get_method.3
+#opt/lampp/man/man3/DBD::Sponge.3
+#opt/lampp/man/man3/ldap_compare_s.3
+#opt/lampp/man/man3/field_userptr.3form.gz
+#opt/lampp/man/man3/attroff.3ncurses.gz
+#opt/lampp/man/man3/Apache::TestRun.3
+#opt/lampp/man/man3/addch.3ncurses.gz
+#opt/lampp/man/man3/DES_ofb64_encrypt.3
+#opt/lampp/man/man3/COLOR_PAIR.3ncurses.gz
+#opt/lampp/man/man3/waddch.3ncurses.gz
+#opt/lampp/man/man3/ldap_add_ext_s.3
+#opt/lampp/man/man3/form_field_userptr.3form.gz
+#opt/lampp/man/man3/BN_nnmod.3
+#opt/lampp/man/man3/bn_mul_part_recursive.3
+#opt/lampp/man/man3/UI_new.3
+#opt/lampp/man/man3/TIFFWriteScanline.3t
+#opt/lampp/man/man3/B::Debug.3
+#opt/lampp/man/man3/TIFFIsMSB2LSB.3t
+#opt/lampp/man/man3/Apache2::Cookie.3
+#opt/lampp/man/man3/CGI::Push.3
+#opt/lampp/man/man3/TIFFReadEncodedTile.3t
+#opt/lampp/man/man3/item_opts.3menu.gz
+#opt/lampp/man/man3/Bundle::CPAN.3
+#opt/lampp/man/man3/ERR_get_error_line.3
+#opt/lampp/man/man3/Term::Cap.3
+#opt/lampp/man/man3/SSLeay.3
+#opt/lampp/man/man3/Net::netent.3
+#opt/lampp/man/man3/menu_back.3menu.gz
+#opt/lampp/man/man3/d2i_X509_ALGOR.3
+#opt/lampp/man/man3/SSL_state_string_long.3
+#opt/lampp/man/man3/DES_ede3_cbc_encrypt.3
+#opt/lampp/man/man3/form.3form.gz
+#opt/lampp/man/man3/BN_from_montgomery.3
+#opt/lampp/man/man3/Apache::Log.3
+#opt/lampp/man/man3/EVP_MAX_MD_SIZE.3
+#opt/lampp/man/man3/BIO_get_mem_data.3
+#opt/lampp/man/man3/IO::String.3
+#opt/lampp/man/man3/XSLoader.3
+#opt/lampp/man/man3/SSL_CTX_need_tmp_rsa.3
+#opt/lampp/man/man3/RAND_event.3
+#opt/lampp/man/man3/tgoto.3ncurses.gz
+#opt/lampp/man/man3/Apache2::SizeLimit.3
+#opt/lampp/man/man3/mvaddnstr.3ncurses.gz
+#opt/lampp/man/man3/Time::HiRes.3
+#opt/lampp/man/man3/Apache::TestRunPerl.3
+#opt/lampp/man/man3/curl_global_init_mem.3
+#opt/lampp/man/man3/SSL_CTX_use_RSAPrivateKey_file.3
+#opt/lampp/man/man3/SSL_library_init.3
+#opt/lampp/man/man3/has_colors.3ncurses.gz
+#opt/lampp/man/man3/BN_MONT_CTX_init.3
+#opt/lampp/man/man3/Exporter::Heavy.3
+#opt/lampp/man/man3/EVP_SealInit.3
+#opt/lampp/man/man3/SSL_CTX_get_ex_data.3
+#opt/lampp/man/man3/HTTP::Cookies::Netscape.3
+#opt/lampp/man/man3/menu_value.3menu.gz
+#opt/lampp/man/man3/bn_internal.3
+#opt/lampp/man/man3/ldap_url_parse.3
+#opt/lampp/man/man3/BIO_do_connect.3
+#opt/lampp/man/man3/SSL_set_tmp_dh_callback.3
+#opt/lampp/man/man3/EVP_CIPHER_CTX_nid.3
+#opt/lampp/man/man3/BF_cfb64_encrypt.3
+#opt/lampp/man/man3/cbreak.3ncurses.gz
+#opt/lampp/man/man3/default_colors.3ncurses.gz
+#opt/lampp/man/man3/item_name.3menu.gz
+#opt/lampp/man/man3/menu_fore.3menu.gz
+#opt/lampp/man/man3/TIFFReadEncodedStrip.3t
+#opt/lampp/man/man3/curl_multi_remove_handle.3
+#opt/lampp/man/man3/leaveok.3ncurses.gz
+#opt/lampp/man/man3/new_form.3form.gz
+#opt/lampp/man/man3/curl_formfree.3
+#opt/lampp/man/man3/Apache2::PerlSections.3
+#opt/lampp/man/man3/ldap_count_entries.3
+#opt/lampp/man/man3/mvinnstr.3ncurses.gz
+#opt/lampp/man/man3/EVP_CIPHER_mode.3
+#opt/lampp/man/man3/B::Asmdata.3
+#opt/lampp/man/man3/ldap_result2error.3
+#opt/lampp/man/man3/UI_OpenSSL.3
+#opt/lampp/man/man3/bn_mul_comba4.3
+#opt/lampp/man/man3/bn_mul_comba8.3
+#opt/lampp/man/man3/DES_xcbc_encrypt.3
+#opt/lampp/man/man3/SSL_CTX_use_PrivateKey.3
+#opt/lampp/man/man3/Pod::Text::Termcap.3
+#opt/lampp/man/man3/URI::Heuristic.3
+#opt/lampp/man/man3/Apache2::Util.3
+#opt/lampp/man/man3/ModPerl::RegistryPrefork.3
+#opt/lampp/man/man3/EVP_DecryptInit_ex.3
+#opt/lampp/man/man3/BIO_new_socket.3
+#opt/lampp/man/man3/SSL_get_ciphers.3
+#opt/lampp/man/man3/BIO_ctrl_wpending.3
+#opt/lampp/man/man3/termcap.3ncurses.gz
+#opt/lampp/man/man3/attrset.3ncurses.gz
+#opt/lampp/man/man3/ExtUtils::MakeMaker::Tutorial.3
+#opt/lampp/man/man3/BF_cbc_encrypt.3
+#opt/lampp/man/man3/Attribute::Handlers.3
+#opt/lampp/man/man3/RSA_print_fp.3
+#opt/lampp/man/man3/BN_div_word.3
+#opt/lampp/man/man3/TIFFFlushData.3t
+#opt/lampp/man/man3/tigetnum.3ncurses.gz
+#opt/lampp/man/man3/SSL_set_verify_depth.3
+#opt/lampp/man/man3/BIO_free_all.3
+#opt/lampp/man/man3/ExtUtils::Constant::Base.3
+#opt/lampp/man/man3/SSL_get_fd.3
+#opt/lampp/man/man3/EVP_DecryptFinal_ex.3
+#opt/lampp/man/man3/OBJ_nid2obj.3
+#opt/lampp/man/man3/IO::Pipe.3
+#opt/lampp/man/man3/PKCS7_sign.3
+#opt/lampp/man/man3/replace_panel.3curses.gz
+#opt/lampp/man/man3/EVP_CIPHER_CTX_flags.3
+#opt/lampp/man/man3/DBI::ProfileDumper::Apache.3
+#opt/lampp/man/man3/Pod::LaTeX.3
+#opt/lampp/man/man3/menu_request_by_name.3menu.gz
+#opt/lampp/man/man3/mvcur.3ncurses.gz
+#opt/lampp/man/man3/Apache2::RequestUtil.3
+#opt/lampp/man/man3/libcurl-errors.3
+#opt/lampp/man/man3/DSA_SIG_free.3
+#opt/lampp/man/man3/_tracechtype.3ncurses.gz
+#opt/lampp/man/man3/Apache2::Directive.3
+#opt/lampp/man/man3/EVP_OpenFinal.3
+#opt/lampp/man/man3/erasewchar.3ncurses.gz
+#opt/lampp/man/man3/ExtUtils::MM_Cygwin.3
+#opt/lampp/man/man3/SSL_use_PrivateKey_file.3
+#opt/lampp/man/man3/IO::Poll.3
+#opt/lampp/man/man3/BN_rand.3
+#opt/lampp/man/man3/APR::Pool.3
+#opt/lampp/man/man3/UI_new_method.3
+#opt/lampp/man/man3/SSL_CTX_sess_number.3
+#opt/lampp/man/man3/_tracedump.3ncurses.gz
+#opt/lampp/man/man3/get_wstr.3ncurses.gz
+#opt/lampp/man/man3/EVP_MD_CTX_size.3
+#opt/lampp/man/man3/RSA_print.3
+#opt/lampp/man/man3/panel_above.3curses.gz
+#opt/lampp/man/man3/menu_sub.3menu.gz
+#opt/lampp/man/man3/TIFFSwabArrayOfShort.3t
+#opt/lampp/man/man3/dngettext.3
+#opt/lampp/man/man3/set_field_just.3form.gz
+#opt/lampp/man/man3/CRYPTO_get_new_dynlockid.3
+#opt/lampp/man/man3/BUF_MEM_new.3
+#opt/lampp/man/man3/standend.3ncurses.gz
+#opt/lampp/man/man3/RSA_public_decrypt.3
+#opt/lampp/man/man3/SSL_write.3
+#opt/lampp/man/man3/form_fields.3form.gz
+#opt/lampp/man/man3/SSL_clear.3
+#opt/lampp/man/man3/BN_rshift.3
+#opt/lampp/man/man3/EVP_CIPHER_param_to_asn1.3
+#opt/lampp/man/man3/HTTP::Headers.3
+#opt/lampp/man/man3/ldap_set_rebind_proc.3
+#opt/lampp/man/man3/I18N::LangTags.3
+#opt/lampp/man/man3/I18N::Collate.3
+#opt/lampp/man/man3/d2i_DSA_PUBKEY.3
+#opt/lampp/man/man3/_tracechar.3ncurses.gz
+#opt/lampp/man/man3/DBD::Proxy.3
+#opt/lampp/man/man3/ldap_get_dn.3
+#opt/lampp/man/man3/bn_set_max.3
+#opt/lampp/man/man3/ld_errno.3
+#opt/lampp/man/man3/ldap_abandon_ext.3
+#opt/lampp/man/man3/EVP_CIPHER_CTX_init.3
+#opt/lampp/man/man3/bn_set_low.3
+#opt/lampp/man/man3/DSA_do_sign.3
+#opt/lampp/man/man3/tigetflag.3ncurses.gz
+#opt/lampp/man/man3/ber_get_int.3
+#opt/lampp/man/man3/attr.3ncurses.gz
+#opt/lampp/man/man3/BIO_new_mem_buf.3
+#opt/lampp/man/man3/RSA_padding_check_PKCS1_OAEP.3
+#opt/lampp/man/man3/EVP_md_null.3
+#opt/lampp/man/man3/Apache::Test.3
+#opt/lampp/man/man3/ldap_search_ext_s.3
+#opt/lampp/man/man3/Opcode.3
+#opt/lampp/man/man3/SSL_alert_type_string.3
+#opt/lampp/man/man3/mvinnwstr.3ncurses.gz
+#opt/lampp/man/man3/d2i_X509_CRL.3
+#opt/lampp/man/man3/ber_bvarray_free.3
+#opt/lampp/man/man3/CGI::Util.3
+#opt/lampp/man/man3/wins_nwstr.3ncurses.gz
+#opt/lampp/man/man3/current_field.3form.gz
+#opt/lampp/man/man3/BN_BLINDING_create_param.3
+#opt/lampp/man/man3/APR::Base64.3
+#opt/lampp/man/man3/ModPerl::BuildMM.3
+#opt/lampp/man/man3/EVP_PKEY_get1_DSA.3
+#opt/lampp/man/man3/X509_new.3
+#opt/lampp/man/man3/SSL_CTX_get_options.3
+#opt/lampp/man/man3/dupwin.3ncurses.gz
+#opt/lampp/man/man3/Encode::JP::H2Z.3
+#opt/lampp/man/man3/set_menu_sub.3menu.gz
+#opt/lampp/man/man3/BIO_s_connect.3
+#opt/lampp/man/man3/HTTP::Status.3
+#opt/lampp/man/man3/threads.3
+#opt/lampp/man/man3/ldap_is_dns_dn.3
+#opt/lampp/man/man3/i2d_X509_ALGOR.3
+#opt/lampp/man/man3/BIO_f_ssl.3
+#opt/lampp/man/man3/ASN1_STRING_type_new.3
+#opt/lampp/man/man3/HTML::TokeParser.3
+#opt/lampp/man/man3/ModPerl::Const.3
+#opt/lampp/man/man3/field_status.3form.gz
+#opt/lampp/man/man3/IO::Socket.3
+#opt/lampp/man/man3/assume_default_colors.3ncurses.gz
+#opt/lampp/man/man3/wenclose.3ncurses.gz
+#opt/lampp/man/man3/APR::UUID.3
+#opt/lampp/man/man3/ldap_error.3
+#opt/lampp/man/man3/TIFFSwabArrayOfLong.3t
+#opt/lampp/man/man3/slk_attron.3ncurses.gz
+#opt/lampp/man/man3/NDBM_File.3
+#opt/lampp/man/man3/mvwget_wch.3ncurses.gz
+#opt/lampp/man/man3/SSL_CTX_get_verify_mode.3
+#opt/lampp/man/man3/BUF_strdup.3
+#opt/lampp/man/man3/EVP_MD_CTX_type.3
+#opt/lampp/man/man3/d2i_X509_REQ.3
+#opt/lampp/man/man3/ASN1_OBJECT_free.3
+#opt/lampp/man/man3/mvgetch.3ncurses.gz
+#opt/lampp/man/man3/BN_mod_mul_reciprocal.3
+#opt/lampp/man/man3/set_current_item.3menu.gz
+#opt/lampp/man/man3/Net::Domain.3
+#opt/lampp/man/man3/d2i_X509_SIG.3
+#opt/lampp/man/man3/SSL_CTX_sess_get_cache_size.3
+#opt/lampp/man/man3/DES_cfb64_encrypt.3
+#opt/lampp/man/man3/border.3ncurses.gz
+#opt/lampp/man/man3/ldap_friendly.3
+#opt/lampp/man/man3/scanw.3ncurses.gz
+#opt/lampp/man/man3/RSA_get_ex_new_index.3
+#opt/lampp/man/man3/wscanw.3ncurses.gz
+#opt/lampp/man/man3/APR::String.3
+#opt/lampp/man/man3/TIFFRGBAImageOK.3t
+#opt/lampp/man/man3/ExtUtils::Packlist.3
+#opt/lampp/man/man3/form_request_by_name.3form.gz
+#opt/lampp/man/man3/BN_hex2bn.3
+#opt/lampp/man/man3/ExtUtils::MakeMaker.3
+#opt/lampp/man/man3/BN_swap.3
+#opt/lampp/man/man3/ldap_simple_bind.3
+#opt/lampp/man/man3/set_max_field.3form.gz
+#opt/lampp/man/man3/EVP_PKEY_get1_RSA.3
+#opt/lampp/man/man3/I18N::LangTags::List.3
+#opt/lampp/man/man3/Archive::Tar.3
+#opt/lampp/man/man3/OPENSSL_config.3
+#opt/lampp/man/man3/OpenSSL_add_all_ciphers.3
+#opt/lampp/man/man3/lber-memory.3
+#opt/lampp/man/man3/SSL_CTX_set_cipher_list.3
+#opt/lampp/man/man3/d2i_RSA_PUBKEY.3
+#opt/lampp/man/man3/BN_ucmp.3
+#opt/lampp/man/man3/ldap_count_values.3
+#opt/lampp/man/man3/bn_sqr_words.3
+#opt/lampp/man/man3/clrtoeol.3ncurses.gz
+#opt/lampp/man/man3/wborder.3ncurses.gz
+#opt/lampp/man/man3/in_wchstr.3ncurses.gz
+#opt/lampp/man/man3/File::Spec::Cygwin.3
+#opt/lampp/man/man3/ldap_search.3
+#opt/lampp/man/man3/set_menu_opts.3menu.gz
+#opt/lampp/man/man3/APR::OS.3
+#opt/lampp/man/man3/SSL_SESSION_get_timeout.3
+#opt/lampp/man/man3/SSL_set_tmp_dh.3
+#opt/lampp/man/man3/RAND_add.3
+#opt/lampp/man/man3/wattroff.3ncurses.gz
+#opt/lampp/man/man3/BIO_ctrl_pending.3
+#opt/lampp/man/man3/vidattr.3ncurses.gz
+#opt/lampp/man/man3/scr_set.3ncurses.gz
+#opt/lampp/man/man3/PKCS7_verify.3
+#opt/lampp/man/man3/DES_pcbc_encrypt.3
+#opt/lampp/man/man3/inchstr.3ncurses.gz
+#opt/lampp/man/man3/i2d_X509_REQ_fp.3
+#opt/lampp/man/man3/ldap_syntax2str.3
+#opt/lampp/man/man3/slk.3ncurses.gz
+#opt/lampp/man/man3/ber_bvarray_add.3
+#opt/lampp/man/man3/DH_set_method.3
+#opt/lampp/man/man3/mhash.3
+#opt/lampp/man/man3/termattrs.3ncurses.gz
+#opt/lampp/man/man3/RAND_egd.3
+#opt/lampp/man/man3/SSL_remove_session.3
+#opt/lampp/man/man3/form_opts_on.3form.gz
+#opt/lampp/man/man3/ModPerl::PerlRunPrefork.3
+#opt/lampp/man/man3/SSL_get_max_cert_list.3
+#opt/lampp/man/man3/RSA_null_method.3
+#opt/lampp/man/man3/i2d_DSA_SIG.3
+#opt/lampp/man/man3/LWP::ConnCache.3
+#opt/lampp/man/man3/ber_get_stringa.3
+#opt/lampp/man/man3/ber_get_stringb.3
+#opt/lampp/man/man3/d2i_X509_bio.3
+#opt/lampp/man/man3/MD5_Init.3
+#opt/lampp/man/man3/SHA1_Update.3
+#opt/lampp/man/man3/APR::PerlIO.3
+#opt/lampp/man/man3/TIFFsize.3t
+#opt/lampp/man/man3/BIO_get_info_callback.3
+#opt/lampp/man/man3/BN_MONT_CTX_new.3
+#opt/lampp/man/man3/TIFFVTileSize.3t
+#opt/lampp/man/man3/ber_put_null.3
+#opt/lampp/man/man3/attributes.3
+#opt/lampp/man/man3/SSL_CTX_set_msg_callback_arg.3
+#opt/lampp/man/man3/EVP_CIPHER_CTX_mode.3
+#opt/lampp/man/man3/_traceattr.3ncurses.gz
+#opt/lampp/man/man3/SSL_CTX_get_quiet_shutdown.3
+#opt/lampp/man/man3/RSA_check_key.3
+#opt/lampp/man/man3/box_set.3ncurses.gz
+#opt/lampp/man/man3/DBI::ProfileDumper.3
+#opt/lampp/man/man3/APR::BucketAlloc.3
+#opt/lampp/man/man3/ldap_translate_from_t61.3
+#opt/lampp/man/man3/BN_MONT_CTX_set.3
+#opt/lampp/man/man3/ins_wstr.3ncurses.gz
+#opt/lampp/man/man3/mvdelch.3ncurses.gz
+#opt/lampp/man/man3/BN_BLINDING_set_flags.3
+#opt/lampp/man/man3/BIO_get_mem_ptr.3
+#opt/lampp/man/man3/wget_wstr.3ncurses.gz
+#opt/lampp/man/man3/APR::Util.3
+#opt/lampp/man/man3/BN_mul_word.3
+#opt/lampp/man/man3/bn_sqr_recursive.3
+#opt/lampp/man/man3/_traceattr2.3ncurses.gz
+#opt/lampp/man/man3/ExtUtils::Constant::XS.3
+#opt/lampp/man/man3/BIO_get_retry_BIO.3
+#opt/lampp/man/man3/B::Lint.3
+#opt/lampp/man/man3/EVP_dss1.3
+#opt/lampp/man/man3/bn_wexpand.3
+#opt/lampp/man/man3/lh_doall.3
+#opt/lampp/man/man3/wstandend.3ncurses.gz
+#opt/lampp/man/man3/ExtUtils::MakeMaker::vmsish.3
+#opt/lampp/man/man3/i2d_DSA_PUBKEY.3
+#opt/lampp/man/man3/SSL_use_certificate.3
+#opt/lampp/man/man3/Test::Simple.3
+#opt/lampp/man/man3/DBI::DBD.3
+#opt/lampp/man/man3/new.3menu.gz
+#opt/lampp/man/man3/EVP_ripemd160.3
+#opt/lampp/man/man3/ldap_errlist.3
+#opt/lampp/man/man3/List::Util.3
+#opt/lampp/man/man3/mvaddstr.3ncurses.gz
+#opt/lampp/man/man3/DBI::FAQ.3
+#opt/lampp/man/man3/set_form_fields.3form.gz
+#opt/lampp/man/man3/mvinstr.3ncurses.gz
+#opt/lampp/man/man3/Pod::Text.3
+#opt/lampp/man/man3/set_item_value.3menu.gz
+#opt/lampp/man/man3/Pod::PlainText.3
+#opt/lampp/man/man3/curl_version.3
+#opt/lampp/man/man3/ldap_objectclass_free.3
+#opt/lampp/man/man3/ldap_set_string_translators.3
+#opt/lampp/man/man3/Test::Builder.3
+#opt/lampp/man/man3/HTML::PullParser.3
+#opt/lampp/man/man3/File::Basename.3
+#opt/lampp/man/man3/mvgetnstr.3ncurses.gz
+#opt/lampp/man/man3/wattrset.3ncurses.gz
+#opt/lampp/man/man3/ExtUtils::Miniperl.3
+#opt/lampp/man/man3/MIME::Base64.3
+#opt/lampp/man/man3/form_data.3form.gz
+#opt/lampp/man/man3/d2i_X509.3
+#opt/lampp/man/man3/CRYPTO_set_dynlock_lock_callback.3
+#opt/lampp/man/man3/RAND_status.3
+#opt/lampp/man/man3/menu_current.3menu.gz
+#opt/lampp/man/man3/ModPerl::Registry.3
+#opt/lampp/man/man3/EVP_CIPHER_type.3
+#opt/lampp/man/man3/EVP_CIPHER_iv_length.3
+#opt/lampp/man/man3/SSL_CTX_sess_get_get_cb.3
+#opt/lampp/man/man3/EVP_CIPHER_flags.3
+#opt/lampp/man/man3/EVP_SealUpdate.3
+#opt/lampp/man/man3/EVP_PKEY_set1_DSA.3
+#opt/lampp/man/man3/wtouchln.3ncurses.gz
+#opt/lampp/man/man3/mvwhline.3ncurses.gz
+#opt/lampp/man/man3/BIO_set_close.3
+#opt/lampp/man/man3/pechochar.3ncurses.gz
+#opt/lampp/man/man3/DSA_free.3
+#opt/lampp/man/man3/TIFFbuffer.3t
+#opt/lampp/man/man3/ExtUtils::Installed.3
+#opt/lampp/man/man3/curl_escape.3
+#opt/lampp/man/man3/SSL_set_generate_session_id.3
+#opt/lampp/man/man3/ber_first_element.3
+#opt/lampp/man/man3/B::Stackobj.3
+#opt/lampp/man/man3/ngettext.3
+#opt/lampp/man/man3/base.3
+#opt/lampp/man/man3/DBD::DBM.3
+#opt/lampp/man/man3/winch.3ncurses.gz
+#opt/lampp/man/man3/RIPEMD160_Update.3
+#opt/lampp/man/man3/SSL_CTX_check_private_key.3
+#opt/lampp/man/man3/SSL_CTX_use_RSAPrivateKey.3
+#opt/lampp/man/man3/SSL_CTX_sess_accept_good.3
+#opt/lampp/man/man3/getbkgrnd.3ncurses.gz
+#opt/lampp/man/man3/ldap_disptmpl.3
+#opt/lampp/man/man3/Apache::ServerUtil.3
+#opt/lampp/man/man3/SSL_set_client_CA_list.3
+#opt/lampp/man/man3/addnstr.3ncurses.gz
+#opt/lampp/man/man3/TIFFReadTile.3t
+#opt/lampp/man/man3/TIFFReadRGBATile.3t
+#opt/lampp/man/man3/pair_content.3ncurses.gz
+#opt/lampp/man/man3/engine.3
+#opt/lampp/man/man3/Text::ParseWords.3
+#opt/lampp/man/man3/SSL_alert_type_string_long.3
+#opt/lampp/man/man3/refresh.3ncurses.gz
+#opt/lampp/man/man3/Memoize::NDBM_File.3
+#opt/lampp/man/man3/is_linetouched.3ncurses.gz
+#opt/lampp/man/man3/ldap_sort_strcasecmp.3
+#opt/lampp/man/man3/SSL_add_session.3
+#opt/lampp/man/man3/BN_is_word.3
+#opt/lampp/man/man3/EVP_EncryptFinal_ex.3
+#opt/lampp/man/man3/BN_value_one.3
+#opt/lampp/man/man3/Encode::Guess.3
+#opt/lampp/man/man3/charnames.3
+#opt/lampp/man/man3/Bundle::DBD::mysql.3
+#opt/lampp/man/man3/BIO_get_md_ctx.3
+#opt/lampp/man/man3/ldap_simple_bind_s.3
+#opt/lampp/man/man3/cldap_setretryinfo.3
+#opt/lampp/man/man3/scale_form.3form.gz
+#opt/lampp/man/man3/BN_CTX_start.3
+#opt/lampp/man/man3/form_field_just.3form.gz
+#opt/lampp/man/man3/EVP_PKEY_set1_RSA.3
+#opt/lampp/man/man3/menu_visible.3menu.gz
+#opt/lampp/man/man3/blib.3
+#opt/lampp/man/man3/APR::Socket.3
+#opt/lampp/man/man3/curl_multi_perform.3
+#opt/lampp/man/man3/curl_multi_add_handle.3
+#opt/lampp/man/man3/mvaddch.3ncurses.gz
+#opt/lampp/man/man3/EVP_CipherFinal_ex.3
+#opt/lampp/man/man3/TIFFSwabLong.3t
+#opt/lampp/man/man3/mvwins_nwstr.3ncurses.gz
+#opt/lampp/man/man3/RSA_verify_ASN1_OCTET_STRING.3
+#opt/lampp/man/man3/Apache::Build.3
+#opt/lampp/man/man3/i2d_RSA_PUBKEY.3
+#opt/lampp/man/man3/bn_check_top.3
+#opt/lampp/man/man3/UI_dup_input_string.3
+#opt/lampp/man/man3/waddchnstr.3ncurses.gz
+#opt/lampp/man/man3/SSL_set_shutdown.3
+#opt/lampp/man/man3/curl_slist_free_all.3
+#opt/lampp/man/man3/BN_zero.3
+#opt/lampp/man/man3/Archive::Tar::Win32.3
+#opt/lampp/man/man3/nl.3ncurses.gz
+#opt/lampp/man/man3/English.3
+#opt/lampp/man/man3/TIFFRewriteDirectory.3t
+#opt/lampp/man/man3/ERR_peek_error.3
+#opt/lampp/man/man3/DES_ecb3_encrypt.3
+#opt/lampp/man/man3/free_form.3form.gz
+#opt/lampp/man/man3/ASN1_STRING_length_set.3
+#opt/lampp/man/man3/SSL_CTX_sess_set_new_cb.3
+#opt/lampp/man/man3/Encode::Alias.3
+#opt/lampp/man/man3/EVP_SignInit.3
+#opt/lampp/man/man3/field_opts_off.3form.gz
+#opt/lampp/man/man3/CRYPTO_set_ex_data.3
+#opt/lampp/man/man3/wclrtoeol.3ncurses.gz
+#opt/lampp/man/man3/set_field_userptr.3form.gz
+#opt/lampp/man/man3/ldap_next_disptmpl.3
+#opt/lampp/man/man3/File::Spec::Mac.3
+#opt/lampp/man/man3/File::Spec::OS2.3
+#opt/lampp/man/man3/mvinsstr.3ncurses.gz
+#opt/lampp/man/man3/PerlIO::encoding.3
+#opt/lampp/man/man3/Thread.3
+#opt/lampp/man/man3/Memoize::Storable.3
+#opt/lampp/man/man3/SMIME_write_PKCS7.3
+#opt/lampp/man/man3/RSA_padding_check_PKCS1_type_1.3
+#opt/lampp/man/man3/RSA_padding_check_PKCS1_type_2.3
+#opt/lampp/man/man3/term_attrs.3ncurses.gz
+#opt/lampp/man/man3/SSL_CTX_get_cert_store.3
+#opt/lampp/man/man3/set_fieldtype_arg.3form.gz
+#opt/lampp/man/man3/pattern.3menu.gz
+#opt/lampp/man/man3/Math::BigInt.3
+#opt/lampp/man/man3/SSL_set_verify.3
+#opt/lampp/man/man3/Tie::Scalar.3
+#opt/lampp/man/man3/d2i_509_CRL_fp.3
+#opt/lampp/man/man3/insdelln.3ncurses.gz
+#opt/lampp/man/man3/ldap_delete.3
+#opt/lampp/man/man3/wcolor_set.3ncurses.gz
+#opt/lampp/man/man3/constant.3
+#opt/lampp/man/man3/link_field.3form.gz
+#opt/lampp/man/man3/HMAC_cleanup.3
+#opt/lampp/man/man3/RSA_private_encrypt.3
+#opt/lampp/man/man3/RSA_sign_ASN1_OCTET_STRING.3
+#opt/lampp/man/man3/EVP_SignFinal.3
+#opt/lampp/man/man3/mvadd_wch.3ncurses.gz
+#opt/lampp/man/man3/HTTP::Headers::Util.3
+#opt/lampp/man/man3/File::Spec::VMS.3
+#opt/lampp/man/man3/TIFFNumberOfTiles.3t
+#opt/lampp/man/man3/mvaddwstr.3ncurses.gz
+#opt/lampp/man/man3/Locale::Maketext::TPJ13.3
+#opt/lampp/man/man3/ldap_disable_cache.3
+#opt/lampp/man/man3/menu_opts_on.3menu.gz
+#opt/lampp/man/man3/Net::SSLeay::Handle.3
+#opt/lampp/man/man3/Test::Tutorial.3
+#opt/lampp/man/man3/IO::Zlib.3
+#opt/lampp/man/man3/B::CC.3
+#opt/lampp/man/man3/RAND_seed.3
+#opt/lampp/man/man3/UI_dup_verify_string.3
+#opt/lampp/man/man3/Math::BigRat.3
+#opt/lampp/man/man3/ldap_add_ext.3
+#opt/lampp/man/man3/ldap_friendly_name.3
+#opt/lampp/man/man3/BN_is_zero.3
+#opt/lampp/man/man3/SSLeay_add_ssl_algorithms.3
+#opt/lampp/man/man3/BIO_get_fd.3
+#opt/lampp/man/man3/BIO_get_fp.3
+#opt/lampp/man/man3/X509_NAME_print_ex.3
+#opt/lampp/man/man3/BIO_get_md.3
+#opt/lampp/man/man3/Apache2::Process.3
+#opt/lampp/man/man3/RC4_set_key.3
+#opt/lampp/man/man3/mvwin_wchnstr.3ncurses.gz
+#opt/lampp/man/man3/ldap_modrdn2
+#opt/lampp/man/man3/overlay.3ncurses.gz
+#opt/lampp/man/man3/insch.3ncurses.gz
+#opt/lampp/man/man3/EVP_get_cipherbynid.3
+#opt/lampp/man/man3/EVP_get_cipherbyobj.3
+#opt/lampp/man/man3/untouchwin.3ncurses.gz
+#opt/lampp/man/man3/SSL_alert_desc_string.3
+#opt/lampp/man/man3/winsch.3ncurses.gz
+#opt/lampp/man/man3/BIO_ctrl.3
+#opt/lampp/man/man3/X509_NAME_ENTRY_create_by_NID.3
+#opt/lampp/man/man3/ldap_get_values.3
+#opt/lampp/man/man3/mvin_wch.3ncurses.gz
+#opt/lampp/man/man3/util.3ncurses.gz
+#opt/lampp/man/man3/SSL_CTX_set_ssl_version.3
+#opt/lampp/man/man3/X509_NAME_ENTRY_create_by_OBJ.3
+#opt/lampp/man/man3/BIO_get_conn_port.3
+#opt/lampp/man/man3/Apache2::SubRequest.3
+#opt/lampp/man/man3/SSL_CTX_sess_accept_renegotiate.3
+#opt/lampp/man/man3/mvinwstr.3ncurses.gz
+#opt/lampp/man/man3/slk_noutrefresh.3ncurses.gz
+#opt/lampp/man/man3/wins_wstr.3ncurses.gz
+#opt/lampp/man/man3/SSL_set_info_callback.3
+#opt/lampp/man/man3/BIO_callback_ctrl.3
+#opt/lampp/man/man3/win_wchnstr.3ncurses.gz
+#opt/lampp/man/man3/lwpcook.3
+#opt/lampp/man/man3/des_read_password.3
+#opt/lampp/man/man3/mvwinnstr.3ncurses.gz
+#opt/lampp/man/man3/ldap_err2string.3
+#opt/lampp/man/man3/DES_ede2_ofb64_encrypt.3
+#opt/lampp/man/man3/SSL_get_SSL_CTX.3
+#opt/lampp/man/man3/CGI::Cookie.3
+#opt/lampp/man/man3/SSL_use_certificate_ASN1.3
+#opt/lampp/man/man3/bn_mul_high.3
+#opt/lampp/man/man3/URI::data.3
+#opt/lampp/man/man3/innwstr.3ncurses.gz
+#opt/lampp/man/man3/SSL_get_peer_certificate.3
+#opt/lampp/man/man3/winchstr.3ncurses.gz
+#opt/lampp/man/man3/move_panel.3curses.gz
+#opt/lampp/man/man3/vidputs.3ncurses.gz
+#opt/lampp/man/man3/DSA_verify.3
+#opt/lampp/man/man3/def_prog_mode.3ncurses.gz
+#opt/lampp/man/man3/ERR_func_error_string.3
+#opt/lampp/man/man3/BIO_f_md.3
+#opt/lampp/man/man3/SSL_SESSION_get_ex_new_index.3
+#opt/lampp/man/man3/LWP::Protocol.3
+#opt/lampp/man/man3/wsyncup.3ncurses.gz
+#opt/lampp/man/man3/APR::Request.3
+#opt/lampp/man/man3/EVP_DigestFinal_ex.3
+#opt/lampp/man/man3/BN_set_bit.3
+#opt/lampp/man/man3/mvwinsnstr.3ncurses.gz
+#opt/lampp/man/man3/Locale::Script.3
+#opt/lampp/man/man3/ldap_ufn_setfilter.3
+#opt/lampp/man/man3/set_menu_init.3menu.gz
+#opt/lampp/man/man3/EVP_dss.3
+#opt/lampp/man/man3/noecho.3ncurses.gz
+#opt/lampp/man/man3/EVP_PKEY_set1_DH.3
+#opt/lampp/man/man3/DES_cbc_cksum.3
+#opt/lampp/man/man3/i2d_X509_CRL.3
+#opt/lampp/man/man3/ERR_get_error_line_data.3
+#opt/lampp/man/man3/DSA_set_ex_data.3
+#opt/lampp/man/man3/setsyx.3ncurses.gz
+#opt/lampp/man/man3/gdbm.3
+#opt/lampp/man/man3/SSL_CTX_sess_hits.3
+#opt/lampp/man/man3/subpad.3ncurses.gz
+#opt/lampp/man/man3/set_form_term.3form.gz
+#opt/lampp/man/man3/SSL_CTX_set_msg_callback.3
+#opt/lampp/man/man3/define_key.3ncurses.gz
+#opt/lampp/man/man3/CPAN::WAIT.3
+#opt/lampp/man/man3/RSA_padding_add_SSLv23.3
+#opt/lampp/man/man3/EVP_md2.3
+#opt/lampp/man/man3/EVP_md5.3
+#opt/lampp/man/man3/Tie::Memoize.3
+#opt/lampp/man/man3/menu_items.3menu.gz
+#opt/lampp/man/man3/tgetstr.3ncurses.gz
+#opt/lampp/man/man3/d2i_X509_CRL_bio.3
+#opt/lampp/man/man3/d2i_DSAPublicKey.3
+#opt/lampp/man/man3/Class::ISA.3
+#opt/lampp/man/man3/SSLeay_version.3
+#opt/lampp/man/man3/BIO_set_conn_int_port.3
+#opt/lampp/man/man3/killwchar.3ncurses.gz
+#opt/lampp/man/man3/ldap_value_free_len.3
+#opt/lampp/man/man3/TIFFWriteBufferSetup.3t
+#opt/lampp/man/man3/EVP_CIPHER_CTX_type.3
+#opt/lampp/man/man3/BIO_set_callback.3
+#opt/lampp/man/man3/attron.3ncurses.gz
+#opt/lampp/man/man3/Apache2::Status.3
+#opt/lampp/man/man3/set_field_opts.3form.gz
+#opt/lampp/man/man3/wscrl.3ncurses.gz
+#opt/lampp/man/man3/new_item.3menu.gz
+#opt/lampp/man/man3/blowfish.3
+#opt/lampp/man/man3/Apache2::CmdParms.3
+#opt/lampp/man/man3/BIO_gets.3
+#opt/lampp/man/man3/EVP_sha.3
+#opt/lampp/man/man3/BIO_free.3
+#opt/lampp/man/man3/EVP_CIPHER_CTX_set_key_length.3
+#opt/lampp/man/man3/Test::Harness::Iterator.3
+#opt/lampp/man/man3/bn_cmp_words.3
+#opt/lampp/man/man3/EVP_mdc2.3
+#opt/lampp/man/man3/i2d_X509_REQ.3
+#opt/lampp/man/man3/slk_restore.3ncurses.gz
+#opt/lampp/man/man3/i2d_X509_SIG.3
+#opt/lampp/man/man3/EVP_EncryptInit_ex.3
+#opt/lampp/man/man3/BIO_write_filename.3
+#opt/lampp/man/man3/win.3menu.gz
+#opt/lampp/man/man3/form_sub.3form.gz
+#opt/lampp/man/man3/wattron.3ncurses.gz
+#opt/lampp/man/man3/DBI::Const::GetInfo::ANSI.3
+#opt/lampp/man/man3/immedok.3ncurses.gz
+#opt/lampp/man/man3/menu_format.3menu.gz
+#opt/lampp/man/man3/Text::Soundex.3
+#opt/lampp/man/man3/BIO_set_accept_bios.3
+#opt/lampp/man/man3/RSA_private_decrypt.3
+#opt/lampp/man/man3/curl_unescape.3
+#opt/lampp/man/man3/RAND_get_rand_method.3
+#opt/lampp/man/man3/free_field.3form.gz
+#opt/lampp/man/man3/URI::file.3
+#opt/lampp/man/man3/new_fieldtype.3form.gz
+#opt/lampp/man/man3/reset_prog_mode.3ncurses.gz
+#opt/lampp/man/man3/field_attributes.3form.gz
+#opt/lampp/man/man3/RSA_verify.3
+#opt/lampp/man/man3/hmac.3
+#opt/lampp/man/man3/SSL_CTX_set_tmp_rsa_callback.3
+#opt/lampp/man/man3/set_current_field.3form.gz
+#opt/lampp/man/man3/TIFFReadBufferSetup.3t
+#opt/lampp/man/man3/mvwchgat.3ncurses.gz
+#opt/lampp/man/man3/delay_output.3ncurses.gz
+#opt/lampp/man/man3/SSL_add_client_CA.3
+#opt/lampp/man/man3/TIFFtile.3t
+#opt/lampp/man/man3/d2i_PKCS8PrivateKey_bio.3
+#opt/lampp/man/man3/set_item_opts.3menu.gz
+#opt/lampp/man/man3/SSL_want_x509_lookup.3
+#opt/lampp/man/man3/X509_NAME_ENTRY_create_by_txt.3
+#opt/lampp/man/man3/SSL_CTX_callback_ctrl.3
+#opt/lampp/man/man3/BIO_pending.3
+#opt/lampp/man/man3/B::Showlex.3
+#opt/lampp/man/man3/ldap_url_search.3
+#opt/lampp/man/man3/Encode::CN.3
+#opt/lampp/man/man3/set_menu_back.3menu.gz
+#opt/lampp/man/man3/winsdelln.3ncurses.gz
+#opt/lampp/man/man3/beep.3ncurses.gz
+#opt/lampp/man/man3/Encode::JP.3
+#opt/lampp/man/man3/Encode::KR.3
+#opt/lampp/man/man3/DES_set_odd_parity.3
+#opt/lampp/man/man3/ldap_msgid.3
+#opt/lampp/man/man3/CRYPTO_destroy_dynlockid.3
+#opt/lampp/man/man3/mvscanw.3ncurses.gz
+#opt/lampp/man/man3/Encode::TW.3
+#opt/lampp/man/man3/requestname.3menu.gz
+#opt/lampp/man/man3/mvinchnstr.3ncurses.gz
+#opt/lampp/man/man3/field_info.3form.gz
+#opt/lampp/man/man3/waddnstr.3ncurses.gz
+#opt/lampp/man/man3/SSL_set_bio.3
+#opt/lampp/man/man3/curl_easy_cleanup.3
+#opt/lampp/man/man3/Memoize.3
+#opt/lampp/man/man3/EVP_EncryptFinal.3
+#opt/lampp/man/man3/del_curterm.3ncurses.gz
+#opt/lampp/man/man3/ASN1_generate_nconf.3
+#opt/lampp/man/man3/is_term_resized.3ncurses.gz
+#opt/lampp/man/man3/ERR_clear_error.3
+#opt/lampp/man/man3/curl_share_cleanup.3
+#opt/lampp/man/man3/wrefresh.3ncurses.gz
+#opt/lampp/man/man3/Pod::ParseUtils.3
+#opt/lampp/man/man3/i2d_X509_bio.3
+#opt/lampp/man/man3/new.3form.gz
+#opt/lampp/man/man3/mvinch.3ncurses.gz
+#opt/lampp/man/man3/TIFFFindCODEC.3t
+#opt/lampp/man/man3/show_panel.3curses.gz
+#opt/lampp/man/man3/BIO_set_nbio.3
+#opt/lampp/man/man3/set_form_sub.3form.gz
+#opt/lampp/man/man3/DSAparams_print.3
+#opt/lampp/man/man3/current_item.3menu.gz
+#opt/lampp/man/man3/curl_share_setopt.3
+#opt/lampp/man/man3/mvwaddchnstr.3ncurses.gz
+#opt/lampp/man/man3/Storable.3
+#opt/lampp/man/man3/BIO_flush.3
+#opt/lampp/man/man3/SSL_get_ex_data_X509_STORE_CTX_idx.3
+#opt/lampp/man/man3/ldap_init_templates.3
+#opt/lampp/man/man3/SSL_CTX_sess_connect_renegotiate.3
+#opt/lampp/man/man3/bn_mul_add_words.3
+#opt/lampp/man/man3/SSL_CTX_set_max_cert_list.3
+#opt/lampp/man/man3/use_env.3ncurses.gz
+#opt/lampp/man/man3/UI_dup_info_string.3
+#opt/lampp/man/man3/addchstr.3ncurses.gz
+#opt/lampp/man/man3/set_menu_fore.3menu.gz
+#opt/lampp/man/man3/SelfLoader.3
+#opt/lampp/man/man3/APR::Request::Param.3
+#opt/lampp/man/man3/ldap_setfilteraffixes.3
+#opt/lampp/man/man3/keypad.3ncurses.gz
+#opt/lampp/man/man3/EVP_DecryptFinal.3
+#opt/lampp/man/man3/Math::Complex.3
+#opt/lampp/man/man3/ldap_tmplattrs.3
+#opt/lampp/man/man3/ber_get_bitstring.3
+#opt/lampp/man/man3/vw_scanw.3ncurses.gz
+#opt/lampp/man/man3/ber_printf.3
+#opt/lampp/man/man3/getbegx.3ncurses.gz
+#opt/lampp/man/man3/ldap_getfirstfilter.3
+#opt/lampp/man/man3/tgetnum.3ncurses.gz
+#opt/lampp/man/man3/TIFFReadRGBAImage.3t
+#opt/lampp/man/man3/ldap_objectclass2str.3
+#opt/lampp/man/man3/TIFFswab.3t
+#opt/lampp/man/man3/BIO_ctrl_reset_read_request.3
+#opt/lampp/man/man3/ExtUtils::MM_Win32.3
+#opt/lampp/man/man3/SSL_CTX_load_verify_locations.3
+#opt/lampp/man/man3/ldap_first_entry.3
+#opt/lampp/man/man3/ExtUtils::MM_Win95.3
+#opt/lampp/man/man3/getnstr.3ncurses.gz
+#opt/lampp/man/man3/TIFFCurrentTile.3t
+#opt/lampp/man/man3/Term::ANSIColor.3
+#opt/lampp/man/man3/TIFFrealloc.3t
+#opt/lampp/man/man3/BIO_new_ssl.3
+#opt/lampp/man/man3/ModPerl::MM.3
+#opt/lampp/man/man3/curl_strequal.3
+#opt/lampp/man/man3/Roadmap.3
+#opt/lampp/man/man3/pnoutrefresh.3ncurses.gz
+#opt/lampp/man/man3/i2d_X509_NAME.3
+#opt/lampp/man/man3/Pod::Parser.3
+#opt/lampp/man/man3/BN_add.3
+#opt/lampp/man/man3/Pod::InputObjects.3
+#opt/lampp/man/man3/BN_cmp.3
+#opt/lampp/man/man3/EVP_CIPHER_CTX_iv_length.3
+#opt/lampp/man/man3/filter.3ncurses.gz
+#opt/lampp/man/man3/BN_div.3
+#opt/lampp/man/man3/echo.3ncurses.gz
+#opt/lampp/man/man3/new_panel.3curses.gz
+#opt/lampp/man/man3/CONF_modules_unload.3
+#opt/lampp/man/man3/ModPerl::MethodLookup.3
+#opt/lampp/man/man3/form_driver.3form.gz
+#opt/lampp/man/man3/BN_dup.3
+#opt/lampp/man/man3/link_fieldtype.3form.gz
+#opt/lampp/man/man3/ldap.3
+#opt/lampp/man/man3/BN_gcd.3
+#opt/lampp/man/man3/BN_exp.3
+#opt/lampp/man/man3/TIFFFlush.3t
+#opt/lampp/man/man3/DES_ede2_cfb64_encrypt.3
+#opt/lampp/man/man3/ERR_peek_error_line_data.3
+#opt/lampp/man/man3/less.3
+#opt/lampp/man/man3/filetest.3
+#opt/lampp/man/man3/ldap_scherr2str.3
+#opt/lampp/man/man3/CRYPTO_get_ex_data.3
+#opt/lampp/man/man3/SHA1_Init.3
+#opt/lampp/man/man3/TIFFGetMode.3t
+#opt/lampp/man/man3/Apache::TestMB.3
+#opt/lampp/man/man3/Apache::TestMM.3
+#opt/lampp/man/man3/BIO_set_mem_eof_return.3
+#opt/lampp/man/man3/BN_mod.3
+#opt/lampp/man/man3/mvin_wchstr.3ncurses.gz
+#opt/lampp/man/man3/BN_new.3
+#opt/lampp/man/man3/BN_mul.3
+#opt/lampp/man/man3/getcurx.3ncurses.gz
+#opt/lampp/man/man3/BN_one.3
+#opt/lampp/man/man3/RSA_PKCS1_SSLeay.3
+#opt/lampp/man/man3/Net::Telnet.3
+#opt/lampp/man/man3/Pod::Man.3
+#opt/lampp/man/man3/halfdelay.3ncurses.gz
+#opt/lampp/man/man3/pos_form_cursor.3form.gz
+#opt/lampp/man/man3/mdc2.3
+#opt/lampp/man/man3/slk_label.3ncurses.gz
+#opt/lampp/man/man3/ldap_uncache_request.3
+#opt/lampp/man/man3/Apache2::compat.3
+#opt/lampp/man/man3/ins_nwstr.3ncurses.gz
+#opt/lampp/man/man3/SSL_get_verify_mode.3
+#opt/lampp/man/man3/EVP_PKEY_get1_DH.3
+#opt/lampp/man/man3/mvget_wch.3ncurses.gz
+#opt/lampp/man/man3/mcprint.3ncurses.gz
+#opt/lampp/man/man3/EVP_CIPHER_CTX_set_padding.3
+#opt/lampp/man/man3/BN_sqr.3
+#opt/lampp/man/man3/SSL_CTX_set_tmp_rsa.3
+#opt/lampp/man/man3/BN_sub.3
+#opt/lampp/man/man3/mvwaddstr.3ncurses.gz
+#opt/lampp/man/man3/EVP_CIPHER_key_length.3
+#opt/lampp/man/man3/B::Xref.3
+#opt/lampp/man/man3/DSAparams_print_fp.3
+#opt/lampp/man/man3/TIFFFileName.3t
+#opt/lampp/man/man3/winnwstr.3ncurses.gz
+#opt/lampp/man/man3/HTTP::Daemon.3
+#opt/lampp/man/man3/getparyx.3ncurses.gz
+#opt/lampp/man/man3/ber_start_set.3
+#opt/lampp/man/man3/X509_NAME_ENTRY_get_data.3
+#opt/lampp/man/man3/ldap_add_s.3
+#opt/lampp/man/man3/EVP_VerifyInit.3
+#opt/lampp/man/man3/TIFFLastDirectory.3t
+#opt/lampp/man/man3/UI_add_input_string.3
+#opt/lampp/man/man3/Apache::TestRequest.3
+#opt/lampp/man/man3/gettext.3
+#opt/lampp/man/man3/bn_mul_words.3
+#opt/lampp/man/man3/AnyDBM_File.3
+#opt/lampp/man/man3/mvwinch.3ncurses.gz
+#opt/lampp/man/man3/prefresh.3ncurses.gz
+#opt/lampp/man/man3/ldap_parse_reference.3
+#opt/lampp/man/man3/curl_easy_reset.3
+#opt/lampp/man/man3/SSL_set_cipher_list.3
+#opt/lampp/man/man3/DSA_sign.3
+#opt/lampp/man/man3/SSL_set_session.3
+#opt/lampp/man/man3/OBJ_obj2nid.3
+#opt/lampp/man/man3/User::pwent.3
+#opt/lampp/man/man3/ldap_str2objectclass.3
+#opt/lampp/man/man3/B::Bytecode.3
+#opt/lampp/man/man3/DSA_size.3
+#opt/lampp/man/man3/ldap_next_attribute.3
+#opt/lampp/man/man3/add_wch.3ncurses.gz
+#opt/lampp/man/man3/URI::ldap.3
+#opt/lampp/man/man3/addwstr.3ncurses.gz
+#opt/lampp/man/man3/Test::Harness::Straps.3
+#opt/lampp/man/man3/set_menu_format.3menu.gz
+#opt/lampp/man/man3/TIFFfree.3t
+#opt/lampp/man/man3/BN_CTX_free.3
+#opt/lampp/man/man3/Apache2::FilterRec.3
+#opt/lampp/man/man3/PKCS12_parse.3
+#opt/lampp/man/man3/libcurl-easy.3
+#opt/lampp/man/man3/SSL_set_fd.3
+#opt/lampp/man/man3/SSL_CTX_set_quiet_shutdown.3
+#opt/lampp/man/man3/EVP_sha1.3
+#opt/lampp/man/man3/TIFFmalloc.3t
+#opt/lampp/man/man3/dup_field.3form.gz
+#opt/lampp/man/man3/Carp::Heavy.3
+#opt/lampp/man/man3/form_new_page.3form.gz
+#opt/lampp/man/man3/OBJ_obj2txt.3
+#opt/lampp/man/man3/BN_CTX_end.3
+#opt/lampp/man/man3/mvwget_wstr.3ncurses.gz
+#opt/lampp/man/man3/Net::HTTP.3
+#opt/lampp/man/man3/File::Listing.3
+#opt/lampp/man/man3/BF_set_key.3
+#opt/lampp/man/man3/BN_CTX_get.3
+#opt/lampp/man/man3/lh_insert.3
+#opt/lampp/man/man3/i2d_ASN1_OBJECT.3
+#opt/lampp/man/man3/innstr.3ncurses.gz
+#opt/lampp/man/man3/BIO_next.3
+#opt/lampp/man/man3/SSL_need_tmp_rsa.3
+#opt/lampp/man/man3/field_type.3form.gz
+#opt/lampp/man/man3/MD2_Init.3
+#opt/lampp/man/man3/HTTP::Cookies.3
+#opt/lampp/man/man3/SSL_set_ssl_method.3
+#opt/lampp/man/man3/dcgettext.3
+#opt/lampp/man/man3/menu_attributes.3menu.gz
+#opt/lampp/man/man3/UI_set_method.3
+#opt/lampp/man/man3/Apache2::Resource.3
+#opt/lampp/man/man3/BN_get_word.3
+#opt/lampp/man/man3/menu_opts_off.3menu.gz
+#opt/lampp/man/man3/set_item_userptr.3menu.gz
+#opt/lampp/man/man3/EVP_MD_block_size.3
+#opt/lampp/man/man3/ExtUtils::MakeMaker::FAQ.3
+#opt/lampp/man/man3/URI::WithBase.3
+#opt/lampp/man/man3/form_field_opts.3form.gz
+#opt/lampp/man/man3/OpenSSL_add_all_digests.3
+#opt/lampp/man/man3/form_opts_off.3form.gz
+#opt/lampp/man/man3/BN_CTX_new.3
+#opt/lampp/man/man3/Shell.3
+#opt/lampp/man/man3/BIO_set_ssl_renegotiate_timeout.3
+#opt/lampp/man/man3/ldap_next_reference.3
+#opt/lampp/man/man3/mvgetstr.3ncurses.gz
+#opt/lampp/man/man3/lh_node_usage_stats_bio.3
+#opt/lampp/man/man3/winnstr.3ncurses.gz
+#opt/lampp/man/man3/TIFFSetWarningHandler.3t
+#opt/lampp/man/man3/field_arg.3form.gz
+#opt/lampp/man/man3/waddchstr.3ncurses.gz
+#opt/lampp/man/man3/ber_bvecadd.3
+#opt/lampp/man/man3/DSA_get_ex_data.3
+#opt/lampp/man/man3/field_pad.3form.gz
+#opt/lampp/man/man3/EVP_CIPHER_CTX_cipher.3
+#opt/lampp/man/man3/mvwinsstr.3ncurses.gz
+#opt/lampp/man/man3/ldap_getfilter_free.3
+#opt/lampp/man/man3/libpngpf.3
+#opt/lampp/man/man3/border_set.3ncurses.gz
+#opt/lampp/man/man3/set_field_init.3form.gz
+#opt/lampp/man/man3/open.3
+#opt/lampp/man/man3/ldap_count_references.3
+#opt/lampp/man/man3/Test::Harness::Assert.3
+#opt/lampp/man/man3/HTML::Entities.3
+#opt/lampp/man/man3/lh_error.3
+#opt/lampp/man/man3/EVP_CIPHER_CTX_block_size.3
+#opt/lampp/man/man3/BIO_destroy_bio_pair.3
+#opt/lampp/man/man3/BN_mod_add.3
+#opt/lampp/man/man3/SSL_CTX_get_client_cert_cb.3
+#opt/lampp/man/man3/TIFFTileSize.3t
+#opt/lampp/man/man3/BN_pseudo_rand.3
+#opt/lampp/man/man3/ExtUtils::Constant::Utils.3
+#opt/lampp/man/man3/Apache2::porting.3
+#opt/lampp/man/man3/getmaxx.3ncurses.gz
+#opt/lampp/man/man3/EVP_CIPHER_CTX_set_app_data.3
+#opt/lampp/man/man3/dcngettext.3
+#opt/lampp/man/man3/BN_mod_exp.3
+#opt/lampp/man/man3/DES_is_weak_key.3
+#opt/lampp/man/man3/ldap_compare_ext.3
+#opt/lampp/man/man3/DBM_Filter.3
+#opt/lampp/man/man3/Pod::Perldoc::ToText.3
+#opt/lampp/man/man3/BN_CTX_init.3
+#opt/lampp/man/man3/mvinsch.3ncurses.gz
+#opt/lampp/man/man3/BIO_s_socket.3
+#opt/lampp/man/man3/EVP_OpenUpdate.3
+#opt/lampp/man/man3/ldap_syntax_free.3
+#opt/lampp/man/man3/getbkgd.3ncurses.gz
+#opt/lampp/man/man3/i2d_RSAPrivateKey.3
+#opt/lampp/man/man3/SSL_SESSION_set_ex_data.3
+#opt/lampp/man/man3/Locale::Language.3
+#opt/lampp/man/man3/wecho_wchar.3ncurses.gz
+#opt/lampp/man/man3/wbkgd.3ncurses.gz
+#opt/lampp/man/man3/ber_bvfree.3
+#opt/lampp/man/man3/win.3form.gz
+#opt/lampp/man/man3/set_item_init.3menu.gz
+#opt/lampp/man/man3/SSL_CTX_get_verify_depth.3
+#opt/lampp/man/man3/Thread::Queue.3
+#opt/lampp/man/man3/PerlIO.3
+#opt/lampp/man/man3/EVP_BytesToKey.3
+#opt/lampp/man/man3/Time::localtime.3
+#opt/lampp/man/man3/TIFFReadRawTile.3t
+#opt/lampp/man/man3/SSL_connect.3
+#opt/lampp/man/man3/i2d_DSAPrivateKey.3
+#opt/lampp/man/man3/BN_mod_mul.3
+#opt/lampp/man/man3/mvwin_wch.3ncurses.gz
+#opt/lampp/man/man3/d2i_X509_REQ_fp.3
+#opt/lampp/man/man3/Fatal.3
+#opt/lampp/man/man3/I18N::Langinfo.3
+#opt/lampp/man/man3/mvwinwstr.3ncurses.gz
+#opt/lampp/man/man3/ldap_first_message.3
+#opt/lampp/man/man3/addnwstr.3ncurses.gz
+#opt/lampp/man/man3/BN_BLINDING_set_thread_id.3
+#opt/lampp/man/man3/BN_print.3
+#opt/lampp/man/man3/Devel::SelfStubber.3
+#opt/lampp/man/man3/X509_NAME_get_entry.3
+#opt/lampp/man/man3/BIO_get_cipher_status.3
+#opt/lampp/man/man3/rand.3
+#opt/lampp/man/man3/OBJ_cleanup.3
+#opt/lampp/man/man3/bn_mul_low_normal.3
+#opt/lampp/man/man3/B::Terse.3
+#opt/lampp/man/man3/lh_new.3
+#opt/lampp/man/man3/SSL_CTX_sess_get_new_cb.3
+#opt/lampp/man/man3/free_item.3menu.gz
+#opt/lampp/man/man3/BN_mod_sqr.3
+#opt/lampp/man/man3/wgetn_wstr.3ncurses.gz
+#opt/lampp/man/man3/TIFFquery.3t
+#opt/lampp/man/man3/BN_mod_sub.3
+#opt/lampp/man/man3/attr_on.3ncurses.gz
+#opt/lampp/man/man3/ldap_explode_dn.3
+#opt/lampp/man/man3/IO::Socket::INET.3
+#opt/lampp/man/man3/SSL_load_error_strings.3
+#opt/lampp/man/man3/libcurl-share.3
+#opt/lampp/man/man3/X509_NAME_ENTRY_set_data.3
+#opt/lampp/man/man3/APR::Request::CGI.3
+#opt/lampp/man/man3/BIO_push.3
+#opt/lampp/man/man3/scroll.3ncurses.gz
+#opt/lampp/man/man3/BIO_puts.3
+#opt/lampp/man/man3/mvwins_wch.3ncurses.gz
+#opt/lampp/man/man3/field_opts_on.3form.gz
+#opt/lampp/man/man3/wgetnstr.3ncurses.gz
+#opt/lampp/man/man3/SSL_CTX_new.3
+#opt/lampp/man/man3/requestname.3form.gz
+#opt/lampp/man/man3/SSL_CIPHER_get_version.3
+#opt/lampp/man/man3/Math::BigInt::CalcEmu.3
+#opt/lampp/man/man3/ldap_kerberos_bind1.3
+#opt/lampp/man/man3/ldap_kerberos_bind2.3
+#opt/lampp/man/man3/set_term.3ncurses.gz
+#opt/lampp/man/man3/BIO_ctrl_get_write_guarantee.3
+#opt/lampp/man/man3/buffer.3
+#opt/lampp/man/man3/BIO_read.3
+#opt/lampp/man/man3/BIO_get_callback_arg.3
+#opt/lampp/man/man3/set_field_back.3form.gz
+#opt/lampp/man/man3/getmaxyx.3ncurses.gz
+#opt/lampp/man/man3/ExtUtils::Command::MM.3
+#opt/lampp/man/man3/Encode::Config.3
+#opt/lampp/man/man3/IPC::Open2.3
+#opt/lampp/man/man3/IPC::Open3.3
+#opt/lampp/man/man3/BUF_MEM_free.3
+#opt/lampp/man/man3/BN_clear.3
+#opt/lampp/man/man3/SSL_CTX_sess_set_remove_cb.3
+#opt/lampp/man/man3/ERR_load_strings.3
+#opt/lampp/man/man3/Fcntl.3
+#opt/lampp/man/man3/TIFFStripSize.3t
+#opt/lampp/man/man3/TIFFScanlineSize.3t
+#opt/lampp/man/man3/BIO_s_fd.3
+#opt/lampp/man/man3/TIFFDefaultStripSize.3t
+#opt/lampp/man/man3/CRYPTO_num_locks.3
+#opt/lampp/man/man3/x509.3
+#opt/lampp/man/man3/getcchar.3ncurses.gz
+#opt/lampp/man/man3/Math::BigFloat.3
+#opt/lampp/man/man3/Bundle::ApacheTest.3
+#opt/lampp/man/man3/BN_lshift.3
+#opt/lampp/man/man3/ldap_dcedn2dn.3
+#opt/lampp/man/man3/bn_div_words.3
+#opt/lampp/man/man3/Tie::Handle.3
+#opt/lampp/man/man3/DBD::mysql.3
+#opt/lampp/man/man3/Apache2::SubProcess.3
+#opt/lampp/man/man3/ldap_value_free.3
+#opt/lampp/man/man3/SSL_check_private_key.3
+#opt/lampp/man/man3/LWP::MemberMixin.3
+#opt/lampp/man/man3/SSL_use_RSAPrivateKey.3
+#opt/lampp/man/man3/print.3ncurses.gz
+#opt/lampp/man/man3/DynaLoader.3
+#opt/lampp/man/man3/data_ahead.3form.gz
+#opt/lampp/man/man3/mvwins_wstr.3ncurses.gz
+#opt/lampp/man/man3/Getopt::Std.3
+#opt/lampp/man/man3/EVP_DigestUpdate.3
+#opt/lampp/man/man3/BIO_seek.3
+#opt/lampp/man/man3/SSL_CTX_set_session_cache_mode.3
+#opt/lampp/man/man3/ERR_set_mark.3
+#opt/lampp/man/man3/lh_stats.3
+#opt/lampp/man/man3/UI_dup_input_boolean.3
+#opt/lampp/man/man3/set_panel_userptr.3curses.gz
+#opt/lampp/man/man3/ldap_attributetype2str.3
+#opt/lampp/man/man3/form_field_new.3form.gz
+#opt/lampp/man/man3/TIFFReadScanline.3t
+#opt/lampp/man/man3/CGI::Pretty.3
+#opt/lampp/man/man3/set_field_fore.3form.gz
+#opt/lampp/man/man3/mvwadd_wchstr.3ncurses.gz
+#opt/lampp/man/man3/slk_init.3ncurses.gz
+#opt/lampp/man/man3/addchnstr.3ncurses.gz
+#opt/lampp/man/man3/BN_set_word.3
+#opt/lampp/man/man3/setupterm.3ncurses.gz
+#opt/lampp/man/man3/BUF_MEM_grow.3
+#opt/lampp/man/man3/Apache::TestReport.3
+#opt/lampp/man/man3/IPC::SysV.3
+#opt/lampp/man/man3/Net::NNTP.3
+#opt/lampp/man/man3/sort.3
+#opt/lampp/man/man3/X509_NAME_entry_count.3
+#opt/lampp/man/man3/mitem_new.3menu.gz
+#opt/lampp/man/man3/getmouse.3ncurses.gz
+#opt/lampp/man/man3/UNIVERSAL.3
+#opt/lampp/man/man3/ExtUtils::MM_BeOS.3
+#opt/lampp/man/man3/ldap_str2syntax.3
+#opt/lampp/man/man3/EVP_PKEY_set1_EC_KEY.3
+#opt/lampp/man/man3/ldap_enable_cache.3
+#opt/lampp/man/man3/ber_str2bv.3
+#opt/lampp/man/man3/mvderwin.3ncurses.gz
+#opt/lampp/man/man3/wadd_wchstr.3ncurses.gz
+#opt/lampp/man/man3/B::Stash.3
+#opt/lampp/man/man3/Apache2::Response.3
+#opt/lampp/man/man3/SSL_rstate_string.3
+#opt/lampp/man/man3/subs.3
+#opt/lampp/man/man3/ERR_get_error.3
+#opt/lampp/man/man3/BIO_s_file.3
+#opt/lampp/man/man3/UI_get0_result.3
+#opt/lampp/man/man3/HTTP::Request.3
+#opt/lampp/man/man3/color_set.3ncurses.gz
+#opt/lampp/man/man3/BIO_tell.3
+#opt/lampp/man/man3/ASN1_STRING_print_ex.3
+#opt/lampp/man/man3/i2d_X509.3
+#opt/lampp/man/man3/SSL_use_RSAPrivateKey_file.3
+#opt/lampp/man/man3/bn_mul_low_recursive.3
+#opt/lampp/man/man3/Socket.3
+#opt/lampp/man/man3/RAND_pseudo_bytes.3
+#opt/lampp/man/man3/SSL_CTX_get_client_CA_list.3
+#opt/lampp/man/man3/Encode::EBCDIC.3
+#opt/lampp/man/man3/d2i_RSAPublicKey.3
+#opt/lampp/man/man3/Pod::Perldoc::ToMan.3
+#opt/lampp/man/man3/Pod::Text::Overstrike.3
+#opt/lampp/man/man3/_tracechtype2.3ncurses.gz
+#opt/lampp/man/man3/BIO_new_fd.3
+#opt/lampp/man/man3/BIO_new_fp.3
+#opt/lampp/man/man3/curl_slist_append.3
+#opt/lampp/man/man3/userptr.3menu.gz
+#opt/lampp/man/man3/ripemd.3
+#opt/lampp/man/man3/DBI::Const::GetInfo::ODBC.3
+#opt/lampp/man/man3/Data::Dumper.3
+#opt/lampp/man/man3/SSL_CTX_set_tmp_dh.3
+#opt/lampp/man/man3/wadd_wch.3ncurses.gz
+#opt/lampp/man/man3/SSL_CTX_sess_cache_full.3
+#opt/lampp/man/man3/Class::Struct.3
+#opt/lampp/man/man3/getwin.3ncurses.gz
+#opt/lampp/man/man3/waddwstr.3ncurses.gz
+#opt/lampp/man/man3/dynamic_field_info.3form.gz
+#opt/lampp/man/man3/HMAC_Init.3
+#opt/lampp/man/man3/Pod::Perldoc::ToPod.3
+#opt/lampp/man/man3/def_shell_mode.3ncurses.gz
+#opt/lampp/man/man3/idlok.3ncurses.gz
+#opt/lampp/man/man3/d2i_Netscape_RSA.3
+#opt/lampp/man/man3/ber_bvdup.3
+#opt/lampp/man/man3/DH_check.3
+#opt/lampp/man/man3/bkgdset.3ncurses.gz
+#opt/lampp/man/man3/Pod::Perldoc::ToRtf.3
+#opt/lampp/man/man3/TIFFClose.3t
+#opt/lampp/man/man3/File::stat.3
+#opt/lampp/man/man3/TIFFUnRegisterCODEC.3t
+#opt/lampp/man/man3/resizeterm.3ncurses.gz
+#opt/lampp/man/man3/curl_strnequal.3
+#opt/lampp/man/man3/FileCache.3
+#opt/lampp/man/man3/vars.3
+#opt/lampp/man/man3/BIO_set_ssl_renegotiate_bytes.3
+#opt/lampp/man/man3/driver.3menu.gz
+#opt/lampp/man/man3/File::Spec::Functions.3
+#opt/lampp/man/man3/B::Bblock.3
+#opt/lampp/man/man3/DES_random_key.3
+#opt/lampp/man/man3/BN_BLINDING_get_flags.3
+#opt/lampp/man/man3/EVP_CipherInit_ex.3
+#opt/lampp/man/man3/data.3form.gz
+#opt/lampp/man/man3/ldap_compare.3
+#opt/lampp/man/man3/locale.3
+#opt/lampp/man/man3/ldap_kerberos_bind1_s.3
+#opt/lampp/man/man3/mvwin.3ncurses.gz
+#opt/lampp/man/man3/Net::POP3.3
+#opt/lampp/man/man3/ldap_kerberos_bind2_s.3
+#opt/lampp/man/man3/field_new.3form.gz
+#opt/lampp/man/man3/X509_NAME_print_ex_fp.3
+#opt/lampp/man/man3/Pod::Perldoc::ToXml.3
+#opt/lampp/man/man3/ldap_matchingrule2name.3
+#opt/lampp/man/man3/mvinsnstr.3ncurses.gz
+#opt/lampp/man/man3/DBI::DBD::Metadata.3
+#opt/lampp/man/man3/putp.3ncurses.gz
+#opt/lampp/man/man3/vmsish.3
+#opt/lampp/man/man3/BIO_get_cipher_ctx.3
+#opt/lampp/man/man3/addstr.3ncurses.gz
+#opt/lampp/man/man3/DSA_OpenSSL.3
+#opt/lampp/man/man3/utf8.3
+#opt/lampp/man/man3/HTML::Form.3
+#opt/lampp/man/man3/SSL_CTX_use_PrivateKey_ASN1.3
+#opt/lampp/man/man3/mouse.3ncurses.gz
+#opt/lampp/man/man3/set_menu_pattern.3menu.gz
+#opt/lampp/man/man3/ber_peek_tag.3
+#opt/lampp/man/man3/color_content.3ncurses.gz
+#opt/lampp/man/man3/whline_set.3ncurses.gz
+#opt/lampp/man/man3/PerlIO::via::QuotedPrint.3
+#opt/lampp/man/man3/ldap_flush_cache.3
+#opt/lampp/man/man3/Pod::Checker.3
+#opt/lampp/man/man3/SSL_get_session.3
+#opt/lampp/man/man3/hline.3ncurses.gz
+#opt/lampp/man/man3/Test::More.3
+#opt/lampp/man/man3/doupdate.3ncurses.gz
+#opt/lampp/man/man3/whline.3ncurses.gz
+#opt/lampp/man/man3/get_wch.3ncurses.gz
+#opt/lampp/man/man3/DSA_get_default_method.3
+#opt/lampp/man/man3/BN_dec2bn.3
+#opt/lampp/man/man3/waddnwstr.3ncurses.gz
+#opt/lampp/man/man3/ldap_bind.3
+#opt/lampp/man/man3/ber_bvstr.3
+#opt/lampp/man/man3/curl_free.3
+#opt/lampp/man/man3/waddstr.3ncurses.gz
+#opt/lampp/man/man3/BIO_set_accept_port.3
+#opt/lampp/man/man3/SSL_get_verify_result.3
+#opt/lampp/man/man3/DES_ecb2_encrypt.3
+#opt/lampp/man/man3/Compress::Zlib.3
+#opt/lampp/man/man3/ldap_attributetype_free.3
+#opt/lampp/man/man3/Digest::base.3
+#opt/lampp/man/man3/BIO_get_close.3
+#opt/lampp/man/man3/TIFFWriteRawStrip.3t
+#opt/lampp/man/man3/BF_encrypt.3
+#opt/lampp/man/man3/bn_sqr_normal.3
+#opt/lampp/man/man3/Errno.3
+#opt/lampp/man/man3/mvwvline.3ncurses.gz
+#opt/lampp/man/man3/DBM_Filter::null.3
+#opt/lampp/man/man3/Encode::Supported.3
+#opt/lampp/man/man3/ldap_str2dn.3
+#opt/lampp/man/man3/panel_userptr.3curses.gz
+#opt/lampp/man/man3/OPENSSL_Applink.3
+#opt/lampp/man/man3/EVP_MD_pkey_type.3
+#opt/lampp/man/man3/BIO_new_bio_pair.3
+#opt/lampp/man/man3/curl_formparse.3
+#opt/lampp/man/man3/SSL_set_connect_state.3
+#opt/lampp/man/man3/item_count.3menu.gz
+#opt/lampp/man/man3/EVP_get_digestbynid.3
+#opt/lampp/man/man3/EVP_MD_size.3
+#opt/lampp/man/man3/item_description.3menu.gz
+#opt/lampp/man/man3/EVP_get_digestbyobj.3
+#opt/lampp/man/man3/BIO_get_read_request.3
+#opt/lampp/man/man3/TIFFRGBAImageBegin.3t
+#opt/lampp/man/man3/attributes.3menu.gz
+#opt/lampp/man/man3/ERR_error_string.3
+#opt/lampp/man/man3/LWP::Debug.3
+#opt/lampp/man/man3/Net::Netrc.3
+#opt/lampp/man/man3/LWP::Authen::Ntlm.3
+#opt/lampp/man/man3/SSL_do_handshake.3
+#opt/lampp/man/man3/TIFFVSetField.3t
+#opt/lampp/man/man3/BIO_set_fd.3
+#opt/lampp/man/man3/BIO_set_fp.3
+#opt/lampp/man/man3/EVP_DecryptInit.3
+#opt/lampp/man/man3/BIO_set_md.3
+#opt/lampp/man/man3/CRYPTO_set_dynlock_create_callback.3
+#opt/lampp/man/man3/mvwgetn_wstr.3ncurses.gz
+#opt/lampp/man/man3/Net::Ping.3
+#opt/lampp/man/man3/DB_File.3
+#opt/lampp/man/man3/warnings::register.3
+#opt/lampp/man/man3/form_field_attributes.3form.gz
+#opt/lampp/man/man3/UI_add_info_string.3
+#opt/lampp/man/man3/BIO_ctrl_get_read_request.3
+#opt/lampp/man/man3/ERR_lib_error_string.3
+#opt/lampp/man/man3/Net::SMTP.3
+#opt/lampp/man/man3/UI_get_default_method.3
+#opt/lampp/man/man3/ldap_unbind_ext.3
+#opt/lampp/man/man3/ExtUtils::Mkbootstrap.3
+#opt/lampp/man/man3/insstr.3ncurses.gz
+#opt/lampp/man/man3/HTTP::Request::Common.3
+#opt/lampp/man/man3/ldap_url_search_s.3
+#opt/lampp/man/man3/TIFFIsUpSampled.3t
+#opt/lampp/man/man3/ldap_free_urldesc.3
+#opt/lampp/man/man3/mouse_trafo.3ncurses.gz
+#opt/lampp/man/man3/wattr_on.3ncurses.gz
+#opt/lampp/man/man3/Encode::Unicode::UTF7.3
+#opt/lampp/man/man3/WWW::RobotRules::AnyDBM_File.3
+#opt/lampp/man/man3/IO::Dir.3
+#opt/lampp/man/man3/bn_set_high.3
+#opt/lampp/man/man3/ExtUtils::Manifest.3
+#opt/lampp/man/man3/Unicode::Normalize.3
+#opt/lampp/man/man3/bn_expand.3
+#opt/lampp/man/man3/BIO_should_read.3
+#opt/lampp/man/man3/Apache2::ServerRec.3
+#opt/lampp/man/man3/lh_node_stats_bio.3
+#opt/lampp/man/man3/winsstr.3ncurses.gz
+#opt/lampp/man/man3/TIFFRGBAImage.3t
+#opt/lampp/man/man3/ExtUtils::Embed.3
+#opt/lampp/man/man3/Exporter.3
+#opt/lampp/man/man3/SSL_SESSION_get_ex_data.3
+#opt/lampp/man/man3/Locale::Currency.3
+#opt/lampp/man/man3/OpenSSL_add_ssl_algorithms.3
+#opt/lampp/man/man3/curl_mprintf.3
+#opt/lampp/man/man3/SSL_get_shutdown.3
+#opt/lampp/man/man3/SSL_CTX_use_certificate_file.3
+#opt/lampp/man/man3/DH_free.3
+#opt/lampp/man/man3/Encode::Symbol.3
+#opt/lampp/man/man3/wmove.3ncurses.gz
+#opt/lampp/man/man3/mitem_userptr.3menu.gz
+#opt/lampp/man/man3/curl_multi_info_read.3
+#opt/lampp/man/man3/bkgrnd.3ncurses.gz
+#opt/lampp/man/man3/EVP_CIPHER_asn1_to_param.3
+#opt/lampp/man/man3/EVP_MD_type.3
+#opt/lampp/man/man3/i2d_X509_CRL_bio.3
+#opt/lampp/man/man3/i2d_DSAPublicKey.3
+#opt/lampp/man/man3/BN_is_odd.3
+#opt/lampp/man/man3/SSL_get_cipher.3
+#opt/lampp/man/man3/DirHandle.3
+#opt/lampp/man/man3/FileHandle.3
+#opt/lampp/man/man3/EVP_CIPHER_nid.3
+#opt/lampp/man/man3/MDC2_Final.3
+#opt/lampp/man/man3/BN_is_one.3
+#opt/lampp/man/man3/in_wch.3ncurses.gz
+#opt/lampp/man/man3/APR::BucketType.3
+#opt/lampp/man/man3/SSL_CTX_set_verify.3
+#opt/lampp/man/man3/TIFFCurrentRow.3t
+#opt/lampp/man/man3/inwstr.3ncurses.gz
+#opt/lampp/man/man3/tgetent.3ncurses.gz
+#opt/lampp/man/man3/spacing.3menu.gz
+#opt/lampp/man/man3/i2d_PKCS8PrivateKey_bio.3
+#opt/lampp/man/man3/ldap_entry2html.3
+#opt/lampp/man/man3/noraw.3ncurses.gz
+#opt/lampp/man/man3/slk_attroff.3ncurses.gz
+#opt/lampp/man/man3/wbkgrnd.3ncurses.gz
+#opt/lampp/man/man3/SSL_CTX_add_extra_chain_cert.3
+#opt/lampp/man/man3/Apache::TestSmoke.3
+#opt/lampp/man/man3/slk_color.3ncurses.gz
+#opt/lampp/man/man3/ber_get_enum.3
+#opt/lampp/man/man3/win_wch.3ncurses.gz
+#opt/lampp/man/man3/Filter::Simple.3
+#opt/lampp/man/man3/CPAN::Nox.3
+#opt/lampp/man/man3/ldap_delete_ext.3
+#opt/lampp/man/man3/mvins_nwstr.3ncurses.gz
+#opt/lampp/man/man3/BN_rshift1.3
+#opt/lampp/man/man3/SHA1_Final.3
+#opt/lampp/man/man3/HTML::LinkExtor.3
+#opt/lampp/man/man3/winwstr.3ncurses.gz
+#opt/lampp/man/man3/BN_mpi2bn.3
+#opt/lampp/man/man3/LWP::UserAgent.3
+#opt/lampp/man/man3/top_panel.3curses.gz
+#opt/lampp/man/man3/set_field_buffer.3form.gz
+#opt/lampp/man/man3/ldap_ufn_setprefix.3
+#opt/lampp/man/man3/SSL_ctrl.3
+#opt/lampp/man/man3/LWP::Simple.3
+#opt/lampp/man/man3/napms.3ncurses.gz
+#opt/lampp/man/man3/SSL_set_tmp_rsa_callback.3
+#opt/lampp/man/man3/BIO_eof.3
+#opt/lampp/man/man3/mvwgetstr.3ncurses.gz
+#opt/lampp/man/man3/SSL_set_max_cert_list.3
+#opt/lampp/man/man3/Apache2::Build.3
+#opt/lampp/man/man3/item_userptr.3menu.gz
+#opt/lampp/man/man3/echochar.3ncurses.gz
+#opt/lampp/man/man3/BF_decrypt.3
+#opt/lampp/man/man3/SSL_CTX_add_session.3
+#opt/lampp/man/man3/lber-encode.3
+#opt/lampp/man/man3/Digest::file.3
+#opt/lampp/man/man3/i2d_X509_fp.3
+#opt/lampp/man/man3/BN_generate_prime.3
+#opt/lampp/man/man3/BIO_set_info_callback.3
+#opt/lampp/man/man3/PerlIO::via.3
+#opt/lampp/man/man3/color.3ncurses.gz
+#opt/lampp/man/man3/BN_BLINDING_convert_ex.3
+#opt/lampp/man/man3/X509_NAME_add_entry.3
+#opt/lampp/man/man3/Scalar::Util.3
+#opt/lampp/man/man3/set_menu_term.3menu.gz
+#opt/lampp/man/man3/wbkgrndset.3ncurses.gz
+#opt/lampp/man/man3/putwin.3ncurses.gz
+#opt/lampp/man/man3/MD4_Update.3
+#opt/lampp/man/man3/Attribute::Handlers::demo::MyClass.3
+#opt/lampp/man/man3/mcrypt.3
+#opt/lampp/man/man3/autouse.3
+#opt/lampp/man/man3/ldap_next_message.3
+#opt/lampp/man/man3/BIO_new.3
+#opt/lampp/man/man3/notimeout.3ncurses.gz
+#opt/lampp/man/man3/ERR_load_UI_strings.3
+#opt/lampp/man/man3/SSL_get_cipher_bits.3
+#opt/lampp/man/man3/SSL_CTX_use_RSAPrivateKey_ASN1.3
+#opt/lampp/man/man3/wcursyncup.3ncurses.gz
+#opt/lampp/man/man3/Time::tm.3
+#opt/lampp/man/man3/BIO_pop.3
+#opt/lampp/man/man3/clrtobot.3ncurses.gz
+#opt/lampp/man/man3/BIO_vfree.3
+#opt/lampp/man/man3/Net::Time.3
+#opt/lampp/man/man3/RSA_set_ex_data.3
+#opt/lampp/man/man3/RSA_flags.3
+#opt/lampp/man/man3/curl_multi_init.3
+#opt/lampp/man/man3/Encode::CJKConstants.3
+#opt/lampp/man/man3/BIO_set.3
+#opt/lampp/man/man3/field_just.3form.gz
+#opt/lampp/man/man3/TIFFSetDirectory.3t
+#opt/lampp/man/man3/redrawwin.3ncurses.gz
+#opt/lampp/man/man3/IO::Seekable.3
+#opt/lampp/man/man3/DES_ede3_ofb64_encrypt.3
+#opt/lampp/man/man3/CPAN::Admin.3
+#opt/lampp/man/man3/wbkgdset.3ncurses.gz
+#opt/lampp/man/man3/mvprintw.3ncurses.gz
+#opt/lampp/man/man3/form_fieldtype.3form.gz
+#opt/lampp/man/man3/SSL_set_msg_callback.3
+#opt/lampp/man/man3/Locale::Maketext.3
+#opt/lampp/man/man3/ldap_count_messages.3
+#opt/lampp/man/man3/Net::Config.3
+#opt/lampp/man/man3/EVP_PKEY_get1_EC_KEY.3
+#opt/lampp/man/man3/ldap_count_values_len.3
+#opt/lampp/man/man3/threads::shared.3
+#opt/lampp/man/man3/attr_off.3ncurses.gz
+#opt/lampp/man/man3/mvwhline_set.3ncurses.gz
+#opt/lampp/man/man3/restartterm.3ncurses.gz
+#opt/lampp/man/man3/UI_get_method.3
+#opt/lampp/man/man3/getbegyx.3ncurses.gz
+#opt/lampp/man/man3/MD4_Init.3
+#opt/lampp/man/man3/form_cursor.3form.gz
+#opt/lampp/man/man3/DBD::File.3
+#opt/lampp/man/man3/SSL_CTX_sess_set_cache_size.3
+#opt/lampp/man/man3/i2d_PKCS8PrivateKey_fp.3
+#opt/lampp/man/man3/SSL_flush_sessions.3
+#opt/lampp/man/man3/getbegy.3ncurses.gz
+#opt/lampp/man/man3/EVP_EncryptUpdate.3
+#opt/lampp/man/man3/newwin.3ncurses.gz
+#opt/lampp/man/man3/curl_easy_perform.3
+#opt/lampp/man/man3/BIO_s_null.3
+#opt/lampp/man/man3/ERR_GET_REASON.3
+#opt/lampp/man/man3/Encode::Byte.3
+#opt/lampp/man/man3/ExtUtils::XSBuilder::PODTemplate.3
+#opt/lampp/man/man3/slk_attrset.3ncurses.gz
+#opt/lampp/man/man3/tgetflag.3ncurses.gz
+#opt/lampp/man/man3/cldap_open.3
+#opt/lampp/man/man3/Attribute::Handlers::demo::Descriptions.3
+#opt/lampp/man/man3/form_field.3form.gz
+#opt/lampp/man/man3/Encode::Encoding.3
+#opt/lampp/man/man3/slk_attr.3ncurses.gz
+#opt/lampp/man/man3/APR::Brigade.3
+#opt/lampp/man/man3/getparx.3ncurses.gz
+#opt/lampp/man/man3/X509_NAME_get_text_by_NID.3
+#opt/lampp/man/man3/Digest.3
+#opt/lampp/man/man3/mvwaddchstr.3ncurses.gz
+#opt/lampp/man/man3/X509_NAME_get_text_by_OBJ.3
+#opt/lampp/man/man3/BN_BLINDING_invert.3
+#opt/lampp/man/man3/IO::Handle.3
+#opt/lampp/man/man3/TIFFError.3t
+#opt/lampp/man/man3/clearok.3ncurses.gz
+#opt/lampp/man/man3/standout.3ncurses.gz
+#opt/lampp/man/man3/chgat.3ncurses.gz
+#opt/lampp/man/man3/ldap_init_getfilter.3
+#opt/lampp/man/man3/IO::Socket::UNIX.3
+#opt/lampp/man/man3/SSL_free.3
+#opt/lampp/man/man3/userptr.3form.gz
+#opt/lampp/man/man3/wchgat.3ncurses.gz
+#opt/lampp/man/man3/wget_wch.3ncurses.gz
+#opt/lampp/man/man3/DBM_Filter::utf8.3
+#opt/lampp/man/man3/ldap_init.3
+#opt/lampp/man/man3/BIO_get_callback.3
+#opt/lampp/man/man3/curl_getenv.3
+#opt/lampp/man/man3/RSA_blinding_off.3
+#opt/lampp/man/man3/ldap_sort_values.3
+#opt/lampp/man/man3/ldap_entry2text_search.3
+#opt/lampp/man/man3/DSA_sign_setup.3
+#opt/lampp/man/man3/APR::Const.3
+#opt/lampp/man/man3/UI_dup_error_string.3
+#opt/lampp/man/man3/driver.3form.gz
+#opt/lampp/man/man3/Devel::Peek.3
+#opt/lampp/man/man3/X509_NAME_oneline.3
+#opt/lampp/man/man3/PKCS7_encrypt.3
+#opt/lampp/man/man3/POSIX.3
+#opt/lampp/man/man3/BIO_debug_callback.3
+#opt/lampp/man/man3/SSL_use_PrivateKey_ASN1.3
+#opt/lampp/man/man3/SSL_CTX_set_client_cert_cb.3
+#opt/lampp/man/man3/ldap_perror.3
+#opt/lampp/man/man3/Parse::RecDescent.3
+#opt/lampp/man/man3/ldap_first_searchobj.3
+#opt/lampp/man/man3/X509_NAME_ENTRY_set_object.3
+#opt/lampp/man/man3/field_count.3form.gz
+#opt/lampp/man/man3/DBI::W32ODBC.3
+#opt/lampp/man/man3/ldap_charset.3
+#opt/lampp/man/man3/wvline_set.3ncurses.gz
+#opt/lampp/man/man3/ERR_add_error_data.3
+#opt/lampp/man/man3/getcury.3ncurses.gz
+#opt/lampp/man/man3/form_requestname.3form.gz
+#opt/lampp/man/man3/fieldtype.3form.gz
+#opt/lampp/man/man3/SSL_CTX_set_timeout.3
+#opt/lampp/man/man3/field.3form.gz
+#opt/lampp/man/man3/BIO_ssl_copy_session_id.3
+#opt/lampp/man/man3/TIFFSetSubDirectory.3t
+#opt/lampp/man/man3/ldap_str2matchingrule.3
+#opt/lampp/man/man3/SSL_CTX_remove_session.3
+#opt/lampp/man/man3/MD5_Final.3
+#opt/lampp/man/man3/SSL_CTX_sess_accept.3
+#opt/lampp/man/man3/ldap_modify_s.3
+#opt/lampp/man/man3/CONF_modules_free.3
+#opt/lampp/man/man3/ber_bvecfree.3
+#opt/lampp/man/man3/curl_easy_duphandle.3
+#opt/lampp/man/man3/RSA_new_method.3
+#opt/lampp/man/man3/ldap_init_getfilter_buf.3
+#opt/lampp/man/man3/BN_is_prime.3
+#opt/lampp/man/man3/attrs.3
+#opt/lampp/man/man3/SSL_get_cipher_version.3
+#opt/lampp/man/man3/insnstr.3ncurses.gz
+#opt/lampp/man/man3/Pod::Select.3
+#opt/lampp/man/man3/attr_set.3ncurses.gz
+#opt/lampp/man/man3/SSL_load_client_CA_file.3
+#opt/lampp/man/man3/libpng.3
+#opt/lampp/man/man3/ldap_free_friendlymap.3
+#opt/lampp/man/man3/ldap_cache.3
+#opt/lampp/man/man3/mark.3menu.gz
+#opt/lampp/man/man3/d2i_DSA_SIG.3
+#opt/lampp/man/man3/X509_NAME_delete_entry.3
+#opt/lampp/man/man3/terminfo.3ncurses.gz
+#opt/lampp/man/man3/outopts.3ncurses.gz
+#opt/lampp/man/man3/ldap_delete_ext_s.3
+#opt/lampp/man/man3/Apache::SubProcess.3
+#opt/lampp/man/man3/scr_init.3ncurses.gz
+#opt/lampp/man/man3/trace.3ncurses.gz
+#opt/lampp/man/man3/BN_is_prime_fasttest.3
+#opt/lampp/man/man3/ui_compat.3
+#opt/lampp/man/man3/field_validation.3form.gz
+#opt/lampp/man/man3/libxml.3
+#opt/lampp/man/man3/bn_fix_top.3
+#opt/lampp/man/man3/ldap_is_ldap_url.3
+#opt/lampp/man/man3/ASN1_STRING_data.3
+#opt/lampp/man/man3/Apache2::RequestRec.3
+#opt/lampp/man/man3/wechochar.3ncurses.gz
+#opt/lampp/man/man3/DBI::Const::GetInfoType.3
+#opt/lampp/man/man3/unpost_menu.3menu.gz
+#opt/lampp/man/man3/d2i_RSAPrivateKey.3
+#opt/lampp/man/man3/DH_get_ex_new_index.3
+#opt/lampp/man/man3/Apache2::Const.3
+#opt/lampp/man/man3/form_field_buffer.3form.gz
+#opt/lampp/man/man3/Pod::Perldoc::ToChecker.3
+#opt/lampp/man/man3/SSL_session_reused.3
+#opt/lampp/man/man3/set_field_pad.3form.gz
+#opt/lampp/man/man3/ldap_search_ext.3
+#opt/lampp/man/man3/des_read_pw_string.3
+#opt/lampp/man/man3/OBJ_create.3
+#opt/lampp/man/man3/ExtUtils::Constant.3
+#opt/lampp/man/man3/HTTP::Date.3
+#opt/lampp/man/man3/Data::ShowTable.3
+#opt/lampp/man/man3/d2i_ASN1_OBJECT.3
+#opt/lampp/man/man3/SSL_callback_ctrl.3
+#opt/lampp/man/man3/TIFFFdOpen.3t
+#opt/lampp/man/man3/d2i_DSAPrivateKey.3
+#opt/lampp/man/man3/window.3ncurses.gz
+#opt/lampp/man/man3/form_page.3form.gz
+#opt/lampp/man/man3/Net::hostent.3
+#opt/lampp/man/man3/SSL_set_ex_data.3
+#opt/lampp/man/man3/ldap_getfilter.3
+#opt/lampp/man/man3/Memoize::AnyDBM_File.3
+#opt/lampp/man/man3/bind_textdomain_codeset.3
+#opt/lampp/man/man3/TIFFstrip.3t
+#opt/lampp/man/man3/mitem_opts.3menu.gz
+#opt/lampp/man/man3/setcchar.3ncurses.gz
+#opt/lampp/man/man3/noqiflush.3ncurses.gz
+#opt/lampp/man/man3/wclrtobot.3ncurses.gz
+#opt/lampp/man/man3/mvins_wch.3ncurses.gz
+#opt/lampp/man/man3/bn_dump.3
+#opt/lampp/man/man3/TIFFIsTiled.3t
+#opt/lampp/man/man3/Term::ReadLine.3
+#opt/lampp/man/man3/DBD::mysql::INSTALL.3
+#opt/lampp/man/man3/intrflush.3ncurses.gz
+#opt/lampp/man/man3/BIO_set_nbio_accept.3
+#opt/lampp/man/man3/ModPerl::RegistryCooker.3
+#opt/lampp/man/man3/mvaddchnstr.3ncurses.gz
+#opt/lampp/man/man3/Apache2::Reload.3
+#opt/lampp/man/man3/X509_free.3
+#opt/lampp/man/man3/EVP_SealFinal.3
+#opt/lampp/man/man3/set_form_userptr.3form.gz
+#opt/lampp/man/man3/RIPEMD160_Final.3
+#opt/lampp/man/man3/SSL_CTX_get_info_callback.3
+#opt/lampp/man/man3/mvhline.3ncurses.gz
+#opt/lampp/man/man3/Net::protoent.3
+#opt/lampp/man/man3/getn_wstr.3ncurses.gz
+#opt/lampp/man/man3/wattr_off.3ncurses.gz
+#opt/lampp/man/man3/BN_print_fp.3
+#opt/lampp/man/man3/ldap_get_values_len.3
+#opt/lampp/man/man3/ldap_bind_s.3
+#opt/lampp/man/man3/item_value.3menu.gz
+#opt/lampp/man/man3/BIO_get_conn_hostname.3
+#opt/lampp/man/man3/EVP_CIPHER_CTX_cleanup.3
+#opt/lampp/man/man3/Apache2::Connection.3
+#opt/lampp/man/man3/form_opts.3form.gz
+#opt/lampp/man/man3/typeahead.3ncurses.gz
+#opt/lampp/man/man3/scr_restore.3ncurses.gz
+#opt/lampp/man/man3/ldap_first_disptmpl.3
+#opt/lampp/man/man3/menu_pattern.3menu.gz
+#opt/lampp/man/man3/DH_generate_key.3
+#opt/lampp/man/man3/lber-decode.3
+#opt/lampp/man/man3/mitem_name.3menu.gz
+#opt/lampp/man/man3/ERR_error_string_n.3
+#opt/lampp/man/man3/PKCS7_decrypt.3
+#opt/lampp/man/man3/BN_to_montgomery.3
+#opt/lampp/man/man3/DES_ede3_cfb64_encrypt.3
+#opt/lampp/man/man3/ber_get_next.3
+#opt/lampp/man/man3/TIFFReadRGBAStrip.3t
+#opt/lampp/man/man3/BN_clear_free.3
+#opt/lampp/man/man3/wstandout.3ncurses.gz
+#opt/lampp/man/man3/getmaxy.3ncurses.gz
+#opt/lampp/man/man3/SSL_CTX_set_client_CA_list.3
+#opt/lampp/man/man3/Locale::Country.3
+#opt/lampp/man/man3/form_request_name.3form.gz
+#opt/lampp/man/man3/BN_mod_mul_montgomery.3
+#opt/lampp/man/man3/ExtUtils::xsbuilder.osc2002.3
+#opt/lampp/man/man3/DBI::Shell.3
+#opt/lampp/man/man3/BN_BLINDING_free.3
+#opt/lampp/man/man3/SSL_CTX_set_cert_store.3
+#opt/lampp/man/man3/bn_add_words.3
+#opt/lampp/man/man3/ldap_msgfree.3
+#opt/lampp/man/man3/BN_num_bytes.3
+#opt/lampp/man/man3/curl_getdate.3
+#opt/lampp/man/man3/inch.3ncurses.gz
+#opt/lampp/man/man3/SSL_use_PrivateKey.3
+#opt/lampp/man/man3/BIO_wpending.3
+#opt/lampp/man/man3/LWP::RobotUA.3
+#opt/lampp/man/man3/UI_process.3
+#opt/lampp/man/man3/TIFFCurrentDirectory.3t
+#opt/lampp/man/man3/ldap_unbind.3
+#opt/lampp/man/man3/menu_pad.3menu.gz
+#opt/lampp/man/man3/HMAC_Update.3
+#opt/lampp/man/man3/File::Spec::Epoc.3
+#opt/lampp/man/man3/SSL_CTX_set_session_id_context.3
+#opt/lampp/man/man3/ASN1_STRING_free.3
+#opt/lampp/man/man3/ExtUtils::Install.3
+#opt/lampp/man/man3/ldap_open.3
+#opt/lampp/man/man3/ldap_matchingrule2str.3
+#opt/lampp/man/man3/Pod::Text::Color.3
+#opt/lampp/man/man3/BN_add_word.3
+#opt/lampp/man/man3/DSA_new_method.3
+#opt/lampp/man/man3/SSL_state_string.3
+#opt/lampp/man/man3/ber_get_null.3
+#opt/lampp/man/man3/RSA_blinding_on.3
+#opt/lampp/man/man3/APR::SockAddr.3
+#opt/lampp/man/man3/Apache2::RequestIO.3
+#opt/lampp/man/man3/getstr.3ncurses.gz
+#opt/lampp/man/man3/FindBin.3
+#opt/lampp/man/man3/SSL_CTX_use_certificate_chain_file.3
+#opt/lampp/man/man3/DH_new.3
+#opt/lampp/man/man3/top_row.3menu.gz
+#opt/lampp/man/man3/Tie::RefHash.3
+#opt/lampp/man/man3/integer.3
+#opt/lampp/man/man3/RAND_cleanup.3
+#opt/lampp/man/man3/AutoLoader.3
+#opt/lampp/man/man3/slk_touch.3ncurses.gz
+#opt/lampp/man/man3/ldap_parse_sasl_bind_result.3
+#opt/lampp/man/man3/ldap_mods_free.3
+#opt/lampp/man/man3/DES_set_key.3
+#opt/lampp/man/man3/mvwaddnwstr.3ncurses.gz
+#opt/lampp/man/man3/DSA_generate_key.3
+#opt/lampp/man/man3/keyok.3ncurses.gz
+#opt/lampp/man/man3/erase.3ncurses.gz
+#opt/lampp/man/man3/Encode::KR::2022_KR.3
+#opt/lampp/man/man3/OPENSSL_VERSION_NUMBER.3
+#opt/lampp/man/man3/ldap_modify_ext.3
+#opt/lampp/man/man3/werase.3ncurses.gz
+#opt/lampp/man/man3/mvget_wstr.3ncurses.gz
+#opt/lampp/man/man3/BIO_set_conn_ip.3
+#opt/lampp/man/man3/CONF_modules_load.3
+#opt/lampp/man/man3/wattr_set.3ncurses.gz
+#opt/lampp/man/man3/Pod::Usage.3
+#opt/lampp/man/man3/URI::QueryParam.3
+#opt/lampp/man/man3/wgetstr.3ncurses.gz
+#opt/lampp/man/man3/DSA_set_default_method.3
+#opt/lampp/man/man3/ldap_entry2text.3
+#opt/lampp/man/man3/set_field_term.3form.gz
+#opt/lampp/man/man3/EVP_CipherUpdate.3
+#opt/lampp/man/man3/RSA_get_ex_data.3
+#opt/lampp/man/man3/SSL_set_options.3
+#opt/lampp/man/man3/item_index.3menu.gz
+#opt/lampp/man/man3/BIO_set_bind_mode.3
+#opt/lampp/man/man3/scr_dump.3ncurses.gz
+#opt/lampp/man/man3/TIFFWarning.3t
+#opt/lampp/man/man3/BIO_new_file.3
+#opt/lampp/man/man3/ber_bvstrdup.3
+#opt/lampp/man/man3/ExtUtils::MM_UWIN.3
+#opt/lampp/man/man3/set_menu_pad.3menu.gz
+#opt/lampp/man/man3/lh_node_usage_stats.3
+#opt/lampp/man/man3/overload.3
+#opt/lampp/man/man3/touch.3ncurses.gz
+#opt/lampp/man/man3/ERR_peek_error_line.3
+#opt/lampp/man/man3/OPENSSL_ia32cap.3
+#opt/lampp/man/man3/ldap_getnextfilter.3
+#opt/lampp/man/man3/mvwvline_set.3ncurses.gz
+#opt/lampp/man/man3/slk_refresh.3ncurses.gz
+#opt/lampp/man/man3/EVP_VerifyFinal.3
+#opt/lampp/man/man3/ber_scanf.3
+#opt/lampp/man/man3/DBI::ProfileData.3
+#opt/lampp/man/man3/in_wchnstr.3ncurses.gz
+#opt/lampp/man/man3/curl_easy_getinfo.3
+#opt/lampp/man/man3/OpenSSL_add_all_algorithms.3
+#opt/lampp/man/man3/SSL_get_cipher_list.3
+#opt/lampp/man/man3/DH_size.3
+#opt/lampp/man/man3/vwscanw.3ncurses.gz
+#opt/lampp/man/man3/SDBM_File.3
+#opt/lampp/man/man3/ldap_ufn_search_ct.3
+#opt/lampp/man/man3/slk_set.3ncurses.gz
+#opt/lampp/man/man3/UI_add_user_data.3
+#opt/lampp/man/man3/mouseinterval.3ncurses.gz
+#opt/lampp/man/man3/RSA_padding_check_none.3
+#opt/lampp/man/man3/set_curterm.3ncurses.gz
+#opt/lampp/man/man3/bigint.3
+#opt/lampp/man/man3/CONF_modules_load_file.3
+#opt/lampp/man/man3/Net::SSLeay.3
+#opt/lampp/man/man3/strict.3
+#opt/lampp/man/man3/set_item_term.3menu.gz
+#opt/lampp/man/man3/RAND_bytes.3
+#opt/lampp/man/man3/SSL_get_mode.3
+#opt/lampp/man/man3/i2d_SSL_SESSION.3
+#opt/lampp/man/man3/Locale::Constants.3
+#opt/lampp/man/man3/ERR_peek_last_error.3
+#opt/lampp/man/man3/bignum.3
+#opt/lampp/man/man3/hline_set.3ncurses.gz
+#opt/lampp/man/man3/winsnstr.3ncurses.gz
+#opt/lampp/man/man3/DSA_dup_DH.3
+#opt/lampp/man/man3/bigrat.3
+#opt/lampp/man/man3/TIFFTileRowSize.3t
+#opt/lampp/man/man3/SSL_get_verify_depth.3
+#opt/lampp/man/man3/BIO_get_num_renegotiates.3
+#opt/lampp/man/man3/TIFFFileno.3t
+#opt/lampp/man/man3/EVP_CIPHER_CTX_get_app_data.3
+#opt/lampp/man/man3/cursor.3menu.gz
+#opt/lampp/man/man3/ExtUtils::Mksymlists.3
+#opt/lampp/man/man3/d2i_DHparams.3
+#opt/lampp/man/man3/ber_free.3
+#opt/lampp/man/man3/HTTP::Negotiate.3
+#opt/lampp/man/man3/mvwgetch.3ncurses.gz
+#opt/lampp/man/man3/Apache2::Command.3
+#opt/lampp/man/man3/SSL_get_cipher_name.3
+#opt/lampp/man/man3/UI_set_default_method.3
+#opt/lampp/man/man3/wmouse_trafo.3ncurses.gz
+#opt/lampp/man/man3/URI::URL.3
+#opt/lampp/man/man3/Apache::TestRunPHP.3
+#opt/lampp/man/man3/OPENSSL_load_builtin_modules.3
+#opt/lampp/man/man3/ldap_vals2html.3
+#opt/lampp/man/man3/set_menu_userptr.3menu.gz
+#opt/lampp/man/man3/DES_fcrypt.3
+#opt/lampp/man/man3/DBI::SQL::Nano.3
+#opt/lampp/man/man3/BIO_f_null.3
+#opt/lampp/man/man3/field_buffer.3form.gz
+#opt/lampp/man/man3/EVP_MD_CTX_destroy.3
+#opt/lampp/man/man3/i2d_RSAPublicKey.3
+#opt/lampp/man/man3/TIFFWriteDirectory.3t
+#opt/lampp/man/man3/UI_get0_user_data.3
+#opt/lampp/man/man3/SSL_CTX_get_ex_new_index.3
+#opt/lampp/man/man3/ExtUtils::MM_Unix.3
+#opt/lampp/man/man3/ldap_searchprefs.3
+#opt/lampp/man/man3/SSL_CTX_get_mode.3
+#opt/lampp/man/man3/dgettext.3
+#opt/lampp/man/man3/ModPerl::Code.3
+#opt/lampp/man/man3/SSL_CTX_get_timeout.3
+#opt/lampp/man/man3/RIPEMD160_Init.3
+#opt/lampp/man/man3/Switch.3
+#opt/lampp/man/man3/timeout.3ncurses.gz
+#opt/lampp/man/man3/ldap_sort.3
+#opt/lampp/man/man3/Math::BigFloat::Trace.3
+#opt/lampp/man/man3/ldap_modify_ext_s.3
+#opt/lampp/man/man3/Math::BigInt::Calc.3
+#opt/lampp/man/man3/curl_easy_init.3
+#opt/lampp/man/man3/i2d_Netscape_RSA.3
+#opt/lampp/man/man3/DES_string_to_key.3
+#opt/lampp/man/man3/EVP_MD_CTX_copy_ex.3
+#opt/lampp/man/man3/PKCS12_create.3
+#opt/lampp/man/man3/ldap_enable_translation.3
+#opt/lampp/man/man3/Devel::DProf.3
+#opt/lampp/man/man3/mvadd_wchnstr.3ncurses.gz
+#opt/lampp/man/man3/DSA_SIG_new.3
+#opt/lampp/man/man3/Math::Trig.3
+#opt/lampp/man/man3/Net::FTP::dataconn.3
+#opt/lampp/man/man3/DES_key_sched.3
+#opt/lampp/man/man3/SSL_read.3
+#opt/lampp/man/man3/CPAN::FirstTime.3
+#opt/lampp/man/man3/EVP_get_digestbyname.3
+#opt/lampp/man/man3/Memoize::Expire.3
+#opt/lampp/man/man3/DES_enc_write.3
+#opt/lampp/man/man3/UI_add_error_string.3
+#opt/lampp/man/man3/form_hook.3form.gz
+#opt/lampp/man/man3/raw.3ncurses.gz
+#opt/lampp/man/man3/start_color.3ncurses.gz
+#opt/lampp/man/man3/ModPerl::Global.3
+#opt/lampp/man/man3/B::C.3
+#opt/lampp/man/man3/libcurl-multi.3
+#opt/lampp/man/man3/ERR_peek_last_error_line.3
+#opt/lampp/man/man3/add_wchnstr.3ncurses.gz
+#opt/lampp/man/man3/XS::APItest.3
+#opt/lampp/man/man3/mvwprintw.3ncurses.gz
+#opt/lampp/man/man3/ldap_objectclass2name.3
+#opt/lampp/man/man3/CRYPTO_set_dynlock_destroy_callback.3
+#opt/lampp/man/man3/menu_grey.3menu.gz
+#opt/lampp/man/man3/TIFFSetField.3t
+#opt/lampp/man/man3/field_opts.3form.gz
+#opt/lampp/man/man3/SSL_get_quiet_shutdown.3
+#opt/lampp/man/man3/Unicode::Collate.3
+#opt/lampp/man/man3/DSA_new.3
+#opt/lampp/man/man3/APR::Request::Apache2.3
+#opt/lampp/man/man3/BIO_retry_type.3
+#opt/lampp/man/man3/BIO_int_ctrl.3
+#opt/lampp/man/man3/RAND_load_file.3
+#opt/lampp/man/man3/Apache::TestTrace.3
+#opt/lampp/man/man3/BIO_f_cipher.3
+#opt/lampp/man/man3/menu_mark.3menu.gz
+#opt/lampp/man/man3/derwin.3ncurses.gz
+#opt/lampp/man/man3/Net::Cmd.3
+#opt/lampp/man/man3/mvchgat.3ncurses.gz
+#opt/lampp/man/man3/Net::FTP.3
+#opt/lampp/man/man3/ExtUtils::Liblist::Kid.3
+#opt/lampp/man/man3/form_post.3form.gz
+#opt/lampp/man/man3/EVP_DecryptUpdate.3
+#opt/lampp/man/man3/scrl.3ncurses.gz
+#opt/lampp/man/man3/ldap_compare_ext_s.3
+#opt/lampp/man/man3/Dumpvalue.3
+#opt/lampp/man/man3/UI_add_verify_string.3
+#opt/lampp/man/man3/BN_BLINDING_get_thread_id.3
+#opt/lampp/man/man3/ldap_destroy_cache.3
+#opt/lampp/man/man3/ldap_first_tmplcol.3
+#opt/lampp/man/man3/vid_attr.3ncurses.gz
+#opt/lampp/man/man3/SSL_CTX_set_cert_verify_callback.3
+#opt/lampp/man/man3/mvwdelch.3ncurses.gz
+#opt/lampp/man/man3/TIFFWriteRawTile.3t
+#opt/lampp/man/man3/resize_term.3ncurses.gz
+#opt/lampp/man/man3/inchnstr.3ncurses.gz
+#opt/lampp/man/man3/mvins_wstr.3ncurses.gz
+#opt/lampp/man/man3/BIO_new_ssl_connect.3
+#opt/lampp/man/man3/TIFFIsByteSwapped.3t
+#opt/lampp/man/man3/Filter::Util::Call.3
+#opt/lampp/man/man3/bn_mul_normal.3
+#opt/lampp/man/man3/CRYPTO_set_locking_callback.3
+#opt/lampp/man/man3/BN_num_bits.3
+#opt/lampp/man/man3/SSL_get_ex_data.3
+#opt/lampp/man/man3/copywin.3ncurses.gz
+#opt/lampp/man/man3/OBJ_ln2nid.3
+#opt/lampp/man/man3/Mysql.3
+#opt/lampp/man/man3/menu_new.3menu.gz
+#opt/lampp/man/man3/ldap_add.3
+#opt/lampp/man/man3/Pod::Perldoc::ToTk.3
+#opt/lampp/man/man3/SSL_get_rbio.3
+#opt/lampp/man/man3/RSA_get_default_method.3
+#opt/lampp/man/man3/ExtUtils::MM_MacOS.3
+#opt/lampp/man/man3/RIPEMD160.3
+#opt/lampp/man/man3/TIFFSetErrorHandler.3t
+#opt/lampp/man/man3/Text::Abbrev.3
+#opt/lampp/man/man3/curl_global_cleanup.3
+#opt/lampp/man/man3/ldap_sasl_bind.3
+#opt/lampp/man/man3/HTML::Parser.3
+#opt/lampp/man/man3/nonl.3ncurses.gz
+#opt/lampp/man/man3/lh_free.3
+#opt/lampp/man/man3/BIO_should_io_special.3
+#opt/lampp/man/man3/DSA_generate_parameters.3
+#opt/lampp/man/man3/mvwinstr.3ncurses.gz
+#opt/lampp/man/man3/BIO_f_buffer.3
+#opt/lampp/man/man3/ModPerl::CScan.3
+#opt/lampp/man/man3/PAIR_NUMBER.3ncurses.gz
+#opt/lampp/man/man3/B::Assembler.3
+#opt/lampp/man/man3/unctrl.3ncurses.gz
+#opt/lampp/man/man3/DES_set_key_checked.3
+#opt/lampp/man/man3/SSL_CTX_sess_get_remove_cb.3
+#opt/lampp/man/man3/ber_dupbv.3
+#opt/lampp/man/man3/ldap_first_tmplrow.3
+#opt/lampp/man/man3/textdomain.3
+#opt/lampp/man/man3/RAND_file_name.3
+#opt/lampp/man/man3/Time::Local.3
+#opt/lampp/man/man3/ber_skip_tag.3
+#opt/lampp/man/man3/insertln.3ncurses.gz
+#opt/lampp/man/man3/EVP_PKEY_assign_DSA.3
+#opt/lampp/man/man3/Tie::SubstrHash.3
+#opt/lampp/man/man3/Memoize::SDBM_File.3
+#opt/lampp/man/man3/libcurl.3
+#opt/lampp/man/man3/SSL_set_mode.3
+#opt/lampp/man/man3/Thread::Semaphore.3
+#opt/lampp/man/man3/ins_wch.3ncurses.gz
+#opt/lampp/man/man3/ldap_search_st.3
+#opt/lampp/man/man3/B::Deparse.3
+#opt/lampp/man/man3/wunctrl.3ncurses.gz
+#opt/lampp/man/man3/EVP_VerifyUpdate.3
+#opt/lampp/man/man3/HTML::Filter.3
+#opt/lampp/man/man3/RSA_free.3
+#opt/lampp/man/man3/post_menu.3menu.gz
+#opt/lampp/man/man3/isendwin.3ncurses.gz
+#opt/lampp/man/man3/ldap_uncache_entry.3
+#opt/lampp/man/man3/ModPerl::Config.3
+#opt/lampp/man/man3/cldap.3
+#opt/lampp/man/man3/CPAN.3
+#opt/lampp/man/man3/BN_num_bits_word.3
+#opt/lampp/man/man3/item_opts_off.3menu.gz
+#opt/lampp/man/man3/d2i_X509_REQ_bio.3
+#opt/lampp/man/man3/DBI::Format.3
+#opt/lampp/man/man3/ldap_ufn.3
+#opt/lampp/man/man3/slk_clear.3ncurses.gz
+#opt/lampp/man/man3/Apache::compat.3
+#opt/lampp/man/man3/SSL_CTX_sess_connect_good.3
+#opt/lampp/man/man3/ldap_url.3
+#opt/lampp/man/man3/LWP::DebugFile.3
+#opt/lampp/man/man3/HTTP::Message.3
+#opt/lampp/man/man3/EVP_PKEY_assign_DH.3
+#opt/lampp/man/man3/data_behind.3form.gz
+#opt/lampp/man/man3/key_name.3ncurses.gz
+#opt/lampp/man/man3/DH_get_default_method.3
+#opt/lampp/man/man3/vline.3ncurses.gz
+#opt/lampp/man/man5/
+#opt/lampp/man/man5/slapo-retcode.5
+#opt/lampp/man/man5/ldapfilter.conf.5
+#opt/lampp/man/man5/slapd.plugin.5
+#opt/lampp/man/man5/slapd-monitor.5
+#opt/lampp/man/man5/png.5
+#opt/lampp/man/man5/slapo-syncprov.5
+#opt/lampp/man/man5/slapo-lastmod.5
+#opt/lampp/man/man5/slapo-dynlist.5
+#opt/lampp/man/man5/slapd.replog.5
+#opt/lampp/man/man5/slapo-refint.5
+#opt/lampp/man/man5/slapo-auditlog.5
+#opt/lampp/man/man5/slapd-ldap.5
+#opt/lampp/man/man5/slapd-ldbm.5
+#opt/lampp/man/man5/slapd-ldif.5
+#opt/lampp/man/man5/slapd-meta.5
+#opt/lampp/man/man5/slapo-rwm.5
+#opt/lampp/man/man5/ldapfriendly.5
+#opt/lampp/man/man5/slapd.conf.5
+#opt/lampp/man/man5/slapd-null.5
+#opt/lampp/man/man5/slapd-perl.5
+#opt/lampp/man/man5/slapo-unique.5
+#opt/lampp/man/man5/ldaptemplates.conf.5
+#opt/lampp/man/man5/config.5
+#opt/lampp/man/man5/slapd-relay.5
+#opt/lampp/man/man5/x509v3_config.5
+#opt/lampp/man/man5/slapd.access.5
+#opt/lampp/man/man5/ldif.5
+#opt/lampp/man/man5/slapd-dnssrv.5
+#opt/lampp/man/man5/ldap.conf.5
+#opt/lampp/man/man5/slapo-chain.5
+#opt/lampp/man/man5/term.5.gz
+#opt/lampp/man/man5/ud.conf.5
+#opt/lampp/man/man5/slapo-translucent.5
+#opt/lampp/man/man5/slapd-shell.5
+#opt/lampp/man/man5/slapo-pcache.5
+#opt/lampp/man/man5/slapo-accesslog.5
+#opt/lampp/man/man5/xferlog.5
+#opt/lampp/man/man5/slapd-bdb.5
+#opt/lampp/man/man5/slapd-hdb.5
+#opt/lampp/man/man5/slapd-tcl.5
+#opt/lampp/man/man5/slapd-sql.5
+#opt/lampp/man/man5/ldapsearchprefs.conf.5
+#opt/lampp/man/man5/terminfo.5.gz
+#opt/lampp/man/man5/slapo-ppolicy.5
+#opt/lampp/man/man5/slapo-valsort.5
+#opt/lampp/man/man5/slapd-passwd.5
+#opt/lampp/man/man7/
+#opt/lampp/man/man7/of.7
+#opt/lampp/man/man7/DES.7
+#opt/lampp/man/man7/des_modes.7
+#opt/lampp/man/man7/term.7.gz
+#opt/lampp/man/man7/Modes_of_DES.7
+#opt/lampp/man/man7/Modes of DES.7
+#opt/lampp/man/man7/Modes.7
+#opt/lampp/man/man8/
+#opt/lampp/man/man8/ab.8
+#opt/lampp/man/man8/ldif2index.8
+#opt/lampp/man/man8/in.xfingerd.8
+#opt/lampp/man/man8/rcpt500.8
+#opt/lampp/man/man8/ldbmcat.8
+#opt/lampp/man/man8/apachectl.8
+#opt/lampp/man/man8/ldapd.8
+#opt/lampp/man/man8/ftpdctl.8
+#opt/lampp/man/man8/slappasswd.8
+#opt/lampp/man/man8/fax500.8
+#opt/lampp/man/man8/slapd.8
+#opt/lampp/man/man8/slapindex.8
+#opt/lampp/man/man8/chlog2replog.8
+#opt/lampp/man/man8/slapauth.8
+#opt/lampp/man/man8/go500gw.8
+#opt/lampp/man/man8/apxs.8
+#opt/lampp/man/man8/rotatelogs.8
+#opt/lampp/man/man8/ldif2id2entry.8
+#opt/lampp/man/man8/ftpshut.8
+#opt/lampp/man/man8/slapdn.8
+#opt/lampp/man/man8/go500.8
+#opt/lampp/man/man8/ldif.8
+#opt/lampp/man/man8/slaptest.8
+#opt/lampp/man/man8/centipede.8
+#opt/lampp/man/man8/proftpd.8
+#opt/lampp/man/man8/ldif2ldbm.8
+#opt/lampp/man/man8/ldif2id2children.8
+#opt/lampp/man/man8/logresolve.8
+#opt/lampp/man/man8/slurpd.8
+#opt/lampp/man/man8/mail500.8
+#opt/lampp/man/man8/httpd.8
+#opt/lampp/man/man8/slapacl.8
+#opt/lampp/man/man8/slapadd.8
+#opt/lampp/man/man8/slapcat.8
+#opt/lampp/man/man8/suexec.8
+#opt/lampp/man/man8/edb2ldif.8
+#opt/lampp/info/
+#opt/lampp/info/mysql.info
+#opt/lampp/build/
+#opt/lampp/build/apr_rules.mk
+#opt/lampp/build/libtool
+#opt/lampp/build/make_var_export.awk
+#opt/lampp/build/config_vars.mk
+#opt/lampp/build/special.mk
+#opt/lampp/build/rules.mk
+#opt/lampp/build/program.mk
+#opt/lampp/build/instdso.sh
+#opt/lampp/build/ltlib.mk
+#opt/lampp/build/config.nice
+#opt/lampp/build/mkdir.sh
+#opt/lampp/build/library.mk
+#opt/lampp/build/make_exports.awk
+#opt/lampp/share/
+#opt/lampp/share/doc/
+#opt/lampp/share/doc/freetds-0.63/
+#opt/lampp/share/doc/freetds-0.63/images/
+#opt/lampp/share/doc/freetds-0.63/images/note.gif
+#opt/lampp/share/doc/freetds-0.63/images/important.gif
+#opt/lampp/share/doc/freetds-0.63/images/tip.gif
+#opt/lampp/share/doc/freetds-0.63/reference/
+#opt/lampp/share/doc/freetds-0.63/reference/a00377.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00378.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00064.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00379.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00310.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00380.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00194.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00381.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00382.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00255.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00383.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00197.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00384.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00198.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00385.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00386.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00387.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00388.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00389.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00075.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00391.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00393.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00394.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00395.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00081.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00396.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00082.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00397.html
+#opt/lampp/share/doc/freetds-0.63/reference/doxygen.css
+#opt/lampp/share/doc/freetds-0.63/reference/doxygen.png
+#opt/lampp/share/doc/freetds-0.63/reference/a00083.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00398.html
+#opt/lampp/share/doc/freetds-0.63/reference/functions.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00399.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00085.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00087.html
+#opt/lampp/share/doc/freetds-0.63/reference/index.html
+#opt/lampp/share/doc/freetds-0.63/reference/globals.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00336.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00337.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00338.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00339.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00340.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00213.html
+#opt/lampp/share/doc/freetds-0.63/reference/files.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00341.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00342.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00156.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00343.html
+#opt/lampp/share/doc/freetds-0.63/reference/pages.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00344.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00217.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00345.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00159.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00346.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00347.html
+#opt/lampp/share/doc/freetds-0.63/reference/todo.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00348.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00349.html
+#opt/lampp/share/doc/freetds-0.63/reference/bug.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00350.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00351.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00352.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00353.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00354.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00356.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00358.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00359.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00232.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00360.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00361.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00362.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00363.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00364.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00365.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00366.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00367.html
+#opt/lampp/share/doc/freetds-0.63/reference/annotated.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00368.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00369.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00370.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00371.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00372.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00373.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00374.html
+#opt/lampp/share/doc/freetds-0.63/reference/modules.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00375.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00307.html
+#opt/lampp/share/doc/freetds-0.63/reference/a00376.html
+#opt/lampp/share/doc/freetds-0.63/userguide/
+#opt/lampp/share/doc/freetds-0.63/userguide/unicodeutf.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/packages.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/freetdshistory.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/freetdsconf.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/confirminstall.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/odbcombo.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/odbcinionly.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/iso8859.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/acknowledgments.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/sybsql.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/install.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/aboutunicode.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/interfacesfile.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/software.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/stunnel.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/contributors.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/unicodegoodbad.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/interfacesformat.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/nonwestern.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/tdspool.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/choosingtdsprotocol.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/interfacespurpose.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/tdshistory.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/what.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/gfdl-1.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/gfdl-2.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/gfdl-3.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/gfdl-4.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/gfdl-5.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/gfdl-6.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/gfdl-7.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/gfdl-8.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/gfdl-9.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/index.html
+#opt/lampp/share/doc/freetds-0.63/userguide/config.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/gfdl.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/odbc.api.summary.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/contrib.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/dblib.api.summary.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/odbcdiagnose.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/envvar.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/advocacy.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/locales.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/programming.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/askingforhelp.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/python.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/index.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/osissues.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/dsnless.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/configs.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/about.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/build.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/samplecode.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/prepodbc.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/interfaceslocation.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/gfdl-10.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/unicode.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/gfdl-11.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/mailinglist.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/serverthere.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/pagenodata.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/troubleshooting.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/projects.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/php.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/apireference.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/unicodefreetds.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/appendmode.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/domains.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/perl.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/seemtooslow.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/ctlib.api.summary.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/odbcconnattr.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/help.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/logging.htm
+#opt/lampp/share/doc/freetds-0.63/userguide/configurations.htm
+#opt/lampp/share/doc/freetds-0.62.4/
+#opt/lampp/share/doc/freetds-0.62.4/images/
+#opt/lampp/share/doc/freetds-0.62.4/images/note.gif
+#opt/lampp/share/doc/freetds-0.62.4/images/important.gif
+#opt/lampp/share/doc/freetds-0.62.4/images/tip.gif
+#opt/lampp/share/doc/freetds-0.62.4/reference/
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00309.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00310.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00065.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00311.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00066.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00312.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00067.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00313.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00068.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00314.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00315.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00129.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00317.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00072.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00319.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00132.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00320.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00321.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00322.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00323.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00324.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00325.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00326.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00327.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00328.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/doxygen.css
+#opt/lampp/share/doc/freetds-0.62.4/reference/doxygen.png
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00200.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00329.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00270.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/functions.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00330.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00331.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00273.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00332.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/index.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00333.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/globals.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00334.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00335.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00336.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00337.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00338.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00339.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00340.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/files.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00341.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00342.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00343.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/pages.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00344.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00345.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00346.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00347.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/todo.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00348.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/bug.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00350.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00164.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00223.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00352.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00353.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00167.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00354.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00168.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00355.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00297.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00356.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00298.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00357.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00299.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00358.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00048.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/annotated.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00181.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00300.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00301.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00302.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00185.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00303.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00304.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00059.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00305.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00306.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/modules.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00307.html
+#opt/lampp/share/doc/freetds-0.62.4/reference/a00308.html
+#opt/lampp/share/doc/freetds-0.62.4/userguide/
+#opt/lampp/share/doc/freetds-0.62.4/userguide/unicodeutf.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/packages.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/freetdshistory.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/freetdsconf.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/confirminstall.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/odbcombo.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/odbcinionly.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/iso8859.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/acknowledgments.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/sybsql.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/install.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/aboutunicode.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/interfacesfile.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/software.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/stunnel.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/contributors.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/unicodegoodbad.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/interfacesformat.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/nonwestern.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/tdspool.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/choosingtdsprotocol.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/interfacespurpose.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/tdshistory.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/what.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/gfdl-1.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/gfdl-2.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/gfdl-3.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/gfdl-4.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/gfdl-5.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/gfdl-6.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/gfdl-7.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/gfdl-8.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/gfdl-9.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/index.html
+#opt/lampp/share/doc/freetds-0.62.4/userguide/config.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/gfdl.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/odbc.api.summary.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/contrib.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/dblib.api.summary.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/odbcdiagnose.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/envvar.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/advocacy.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/locales.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/programming.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/askingforhelp.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/python.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/index.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/osissues.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/dsnless.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/configs.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/about.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/build.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/samplecode.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/prepodbc.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/interfaceslocation.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/gfdl-10.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/unicode.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/gfdl-11.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/mailinglist.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/serverthere.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/pagenodata.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/troubleshooting.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/projects.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/php.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/apireference.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/unicodefreetds.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/appendmode.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/domains.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/perl.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/seemtooslow.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/ctlib.api.summary.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/odbcconnattr.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/help.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/logging.htm
+#opt/lampp/share/doc/freetds-0.62.4/userguide/configurations.htm
+#opt/lampp/share/doc/libxslt-1.1.8/
+#opt/lampp/share/doc/libxslt-1.1.8/html/
+#opt/lampp/share/doc/libxslt-1.1.8/html/html/
+#opt/lampp/share/doc/libxslt-1.1.8/html/html/libxslt-transform.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/html/libxslt-extensions.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/html/libxslt-attributes.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/html/libxslt-templates.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/html/right.png
+#opt/lampp/share/doc/libxslt-1.1.8/html/html/left.png
+#opt/lampp/share/doc/libxslt-1.1.8/html/html/index.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/html/home.png
+#opt/lampp/share/doc/libxslt-1.1.8/html/html/libxslt-functions.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/html/libxslt-preproc.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/html/libxslt-lib.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/html/libxslt-numbersInternals.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/html/libxslt-extra.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/html/libxslt-documents.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/html/libxslt-variables.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/html/book1.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/html/up.png
+#opt/lampp/share/doc/libxslt-1.1.8/html/html/libxslt-keys.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/html/libxslt-xsltexports.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/html/libxslt-xslt.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/html/libxslt-imports.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/html/libxslt-namespaces.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/html/libxslt-pattern.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/html/libxslt-security.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/html/libxslt-xsltInternals.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/html/libxslt-xsltutils.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/EXSLT/
+#opt/lampp/share/doc/libxslt-1.1.8/html/EXSLT/exslt.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/templates.gif
+#opt/lampp/share/doc/libxslt-1.1.8/html/APIchunk0.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/APIchunk1.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/APIchunk2.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/APIchunk3.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/APIchunk4.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/xsltproc.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/APIchunk5.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/APIchunk6.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/APIfunctions.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/internals.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/APIchunk7.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/stylesheet.gif
+#opt/lampp/share/doc/libxslt-1.1.8/html/APIchunk8.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/APIchunk9.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/python.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/Libxslt-Logo-90x34.gif
+#opt/lampp/share/doc/libxslt-1.1.8/html/docs.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/index.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/bugs.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/object.gif
+#opt/lampp/share/doc/libxslt-1.1.8/html/smallfootonly.gif
+#opt/lampp/share/doc/libxslt-1.1.8/html/contexts.gif
+#opt/lampp/share/doc/libxslt-1.1.8/html/downloads.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/xslt.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/contribs.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/processing.gif
+#opt/lampp/share/doc/libxslt-1.1.8/html/tutorial/
+#opt/lampp/share/doc/libxslt-1.1.8/html/tutorial/libxslt_tutorial.c
+#opt/lampp/share/doc/libxslt-1.1.8/html/tutorial/libxslttutorial.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/tutorial/libxslttutorial.xml
+#opt/lampp/share/doc/libxslt-1.1.8/html/Libxslt-Logo-180x168.gif
+#opt/lampp/share/doc/libxslt-1.1.8/html/extensions.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/APIconstructors.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/redhat.gif
+#opt/lampp/share/doc/libxslt-1.1.8/html/intro.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/FAQ.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/APIfiles.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/help.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/xsltproc2.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/node.gif
+#opt/lampp/share/doc/libxslt-1.1.8/html/API.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/news.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/docbook.html
+#opt/lampp/share/doc/libxslt-1.1.8/html/APIsymbols.html
+#opt/lampp/share/doc/libxml2-2.6.11/
+#opt/lampp/share/doc/libxml2-2.6.11/html/
+#opt/lampp/share/doc/libxml2-2.6.11/html/Libxml2-Logo-90x34.gif
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-HTMLtree.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-xmlwriter.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-xpathInternals.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-chvalid.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-parser.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-valid.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-uri.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-xmlautomata.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/right.png
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-hash.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-nanoftp.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-SAX2.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/left.png
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-xmlstring.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-globals.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-HTMLparser.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/index.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-tree.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-xmlunicode.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-xmlerror.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-lib.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-c14n.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-catalog.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-xmlexports.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-SAX.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-xpath.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-parserInternals.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-xinclude.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/home.png
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-xmlschemas.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-xmlversion.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-list.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-relaxng.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-xmlIO.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-pattern.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-DOCBparser.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-xmlregexp.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-dict.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-xmlmemory.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/book1.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/up.png
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-threads.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-nanohttp.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-schemasInternals.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-xpointer.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-debugXML.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-xmlsave.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-xmlschemastypes.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-entities.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-xmlreader.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-encoding.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-xlink.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/DOM.gif
+#opt/lampp/share/doc/libxml2-2.6.11/html/encoding.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/xpath1.c
+#opt/lampp/share/doc/libxml2-2.6.11/html/xpath2.c
+#opt/lampp/share/doc/libxml2-2.6.11/html/io1.c
+#opt/lampp/share/doc/libxml2-2.6.11/html/io2.c
+#opt/lampp/share/doc/libxml2-2.6.11/html/w3c.png
+#opt/lampp/share/doc/libxml2-2.6.11/html/testWriter.c
+#opt/lampp/share/doc/libxml2-2.6.11/html/writer.xml
+#opt/lampp/share/doc/libxml2-2.6.11/html/parse1.c
+#opt/lampp/share/doc/libxml2-2.6.11/html/parse2.c
+#opt/lampp/share/doc/libxml2-2.6.11/html/parse3.c
+#opt/lampp/share/doc/libxml2-2.6.11/html/parse4.c
+#opt/lampp/share/doc/libxml2-2.6.11/html/structure.gif
+#opt/lampp/share/doc/libxml2-2.6.11/html/Libxml2-Logo-180x168.gif
+#opt/lampp/share/doc/libxml2-2.6.11/html/smallfootonly.gif
+#opt/lampp/share/doc/libxml2-2.6.11/html/tree1.res
+#opt/lampp/share/doc/libxml2-2.6.11/html/tree2.res
+#opt/lampp/share/doc/libxml2-2.6.11/html/tree1.c
+#opt/lampp/share/doc/libxml2-2.6.11/html/tree2.c
+#opt/lampp/share/doc/libxml2-2.6.11/html/examples.xml
+#opt/lampp/share/doc/libxml2-2.6.11/html/examples.xsl
+#opt/lampp/share/doc/libxml2-2.6.11/html/tst.xml
+#opt/lampp/share/doc/libxml2-2.6.11/html/xpath1.res
+#opt/lampp/share/doc/libxml2-2.6.11/html/xpath2.res
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/ar01s02.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/ar01s03.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/apa.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/ar01s04.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/apb.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/includexpath.c
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/ar01s05.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/apc.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/ar01s06.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/apd.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/ar01s07.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/ape.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/ar01s08.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/apf.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/ar01s09.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/apg.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/aph.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/ix01.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/api.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/index.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/includeconvert.c
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/xmltutorial.pdf
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/warning.png
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/toc-blank.png
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/blank.png
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/note.png
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/toc-plus.png
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/callouts/
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/callouts/1.png
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/callouts/2.png
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/callouts/3.png
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/callouts/4.png
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/callouts/5.png
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/callouts/6.png
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/callouts/7.png
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/callouts/8.png
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/callouts/9.png
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/callouts/10.png
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/important.png
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/tip.png
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/home.png
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/toc-minus.png
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/prev.png
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/up.png
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/next.png
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/draft.png
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/caution.png
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/includekeyword.c
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/includegetattribute.c
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/includeaddkeyword.c
+#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/includeaddattribute.c
+#opt/lampp/share/doc/libxml2-2.6.11/html/xml.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/libxml.gif
+#opt/lampp/share/doc/libxml2-2.6.11/html/redhat.gif
+#opt/lampp/share/doc/libxml2-2.6.11/html/FAQ.html
+#opt/lampp/share/doc/libxml2-2.6.11/html/io1.res
+#opt/lampp/share/doc/libxml2-2.6.11/html/io2.res
+#opt/lampp/share/doc/libxml2-2.6.11/html/test1.xml
+#opt/lampp/share/doc/libxml2-2.6.11/html/test2.xml
+#opt/lampp/share/doc/libxml2-2.6.11/html/test3.xml
+#opt/lampp/share/doc/libxml2-2.6.11/html/reader1.c
+#opt/lampp/share/doc/libxml2-2.6.11/html/reader2.c
+#opt/lampp/share/doc/libxml2-2.6.11/html/reader3.c
+#opt/lampp/share/doc/libxml2-2.6.11/html/reader1.res
+#opt/lampp/share/doc/libxml2-2.6.11/html/reader3.res
+#opt/lampp/share/doc/libxml2-2.6.11/Copyright
+#opt/lampp/share/doc/libxml2-2.6.11/examples/
+#opt/lampp/share/doc/libxml2-2.6.11/examples/testXPath.c
+#opt/lampp/share/doc/libxml2-2.6.11/examples/testHTML.c
+#opt/lampp/share/doc/libxml2-2.6.11/examples/xmllint.c
+#opt/lampp/share/doc/libxml2-2.6.11/examples/testSAX.c
+#opt/lampp/modules/
+#opt/lampp/modules/mod_file_cache.la
+#opt/lampp/modules/mod_setenvif.la
+#opt/lampp/modules/mod_cern_meta.la
+#opt/lampp/modules/mod_case_filter.la
+#opt/lampp/modules/mod_expires.la
+#opt/lampp/modules/mod_authn_default.a
+#opt/lampp/modules/mod_authn_file.la
+#opt/lampp/modules/mod_disk_cache.la
+#opt/lampp/modules/mod_dav_fs.a
+#opt/lampp/modules/mod_ident.a
+#opt/lampp/modules/mod_authz_user.a
+#opt/lampp/modules/mod_deflate.la
+#opt/lampp/modules/mod_proxy_ftp.la
+#opt/lampp/modules/mod_proxy_http.a
+#opt/lampp/modules/mod_autoindex.a
+#opt/lampp/modules/mod_asis.la
+#opt/lampp/modules/mod_authz_groupfile.a
+#opt/lampp/modules/mod_rewrite.a
+#opt/lampp/modules/mod_negotiation.la
+#opt/lampp/modules/mod_mem_cache.a
+#opt/lampp/modules/mod_apreq2.la
+#opt/lampp/modules/mod_file_cache.a
+#opt/lampp/modules/mod_disk_cache.a
+#opt/lampp/modules/mod_usertrack.a
+#opt/lampp/modules/mod_proxy_balancer.a
+#opt/lampp/modules/mod_cache.a
+#opt/lampp/modules/mod_authn_default.la
+#opt/lampp/modules/mod_usertrack.la
+#opt/lampp/modules/mod_imagemap.a
+#opt/lampp/modules/mod_info.la
+#opt/lampp/modules/mod_bucketeer.a
+#opt/lampp/modules/mod_authz_dbm.a
+#opt/lampp/modules/mod_proxy_balancer.la
+#opt/lampp/modules/mod_cache.la
+#opt/lampp/modules/mod_dumpio.la
+#opt/lampp/modules/mod_cgid.la
+#opt/lampp/modules/mod_dav_fs.la
+#opt/lampp/modules/mod_ident.la
+#opt/lampp/modules/mod_authz_user.la
+#opt/lampp/modules/mod_proxy.a
+#opt/lampp/modules/mod_include.a
+#opt/lampp/modules/mod_case_filter_in.a
+#opt/lampp/modules/mod_filter.a
+#opt/lampp/modules/mod_proxy_connect.la
+#opt/lampp/modules/mod_cern_meta.a
+#opt/lampp/modules/mod_negotiation.a
+#opt/lampp/modules/mod_vhost_alias.a
+#opt/lampp/modules/mod_authz_host.la
+#opt/lampp/modules/mod_vhost_alias.la
+#opt/lampp/modules/mod_actions.la
+#opt/lampp/modules/mod_cgi.a
+#opt/lampp/modules/mod_dbd.a
+#opt/lampp/modules/mod_dav.a
+#opt/lampp/modules/mod_dir.a
+#opt/lampp/modules/mod_env.a
+#opt/lampp/modules/mod_authn_anon.la
+#opt/lampp/modules/mod_apreq2.a
+#opt/lampp/modules/mod_log_config.la
+#opt/lampp/modules/mod_authn_dbd.a
+#opt/lampp/modules/mod_authn_dbm.a
+#opt/lampp/modules/mod_authz_owner.a
+#opt/lampp/modules/mod_unique_id.a
+#opt/lampp/modules/mod_echo.la
+#opt/lampp/modules/mod_charset_lite.la
+#opt/lampp/modules/mod_ldap.la
+#opt/lampp/modules/mod_setenvif.a
+#opt/lampp/modules/mod_case_filter.a
+#opt/lampp/modules/mod_deflate.a
+#opt/lampp/modules/mod_authn_anon.a
+#opt/lampp/modules/mod_authn_dbd.la
+#opt/lampp/modules/mod_mime_magic.la
+#opt/lampp/modules/mod_authn_dbm.la
+#opt/lampp/modules/mod_example.la
+#opt/lampp/modules/mod_status.la
+#opt/lampp/modules/libphp4.la
+#opt/lampp/modules/libphp5.la
+#opt/lampp/modules/mod_authn_file.a
+#opt/lampp/modules/mod_ext_filter.la
+#opt/lampp/modules/mod_actions.a
+#opt/lampp/modules/mod_mime_magic.a
+#opt/lampp/modules/mod_status.a
+#opt/lampp/modules/mod_logio.a
+#opt/lampp/modules/mod_proxy_http.la
+#opt/lampp/modules/mod_speling.a
+#opt/lampp/modules/mod_userdir.a
+#opt/lampp/modules/mod_imagemap.la
+#opt/lampp/modules/mod_authz_owner.la
+#opt/lampp/modules/mod_logio.la
+#opt/lampp/modules/mod_alias.la
+#opt/lampp/modules/mod_mime.la
+#opt/lampp/modules/mod_auth_digest.la
+#opt/lampp/modules/mod_speling.la
+#opt/lampp/modules/mod_auth_basic.la
+#opt/lampp/modules/mod_autoindex.la
+#opt/lampp/modules/mod_userdir.la
+#opt/lampp/modules/mod_unique_id.la
+#opt/lampp/modules/mod_proxy.la
+#opt/lampp/modules/mod_authz_groupfile.la
+#opt/lampp/modules/mod_authz_default.a
+#opt/lampp/modules/mod_bucketeer.la
+#opt/lampp/modules/mod_suexec.la
+#opt/lampp/modules/mod_proxy_connect.a
+#opt/lampp/modules/mod_example.a
+#opt/lampp/modules/mod_authz_dbm.la
+#opt/lampp/modules/mod_ext_filter.a
+#opt/lampp/modules/mod_suexec.a
+#opt/lampp/modules/mod_asis.a
+#opt/lampp/modules/mod_rewrite.la
+#opt/lampp/modules/mod_cgi.la
+#opt/lampp/modules/mod_dumpio.a
+#opt/lampp/modules/mod_cgid.a
+#opt/lampp/modules/mod_include.la
+#opt/lampp/modules/mod_dbd.la
+#opt/lampp/modules/mod_dav.la
+#opt/lampp/modules/mod_authz_host.a
+#opt/lampp/modules/mod_dir.la
+#opt/lampp/modules/mod_log_config.a
+#opt/lampp/modules/mod_echo.a
+#opt/lampp/modules/mod_env.la
+#opt/lampp/modules/mod_auth_digest.a
+#opt/lampp/modules/mod_auth_basic.a
+#opt/lampp/modules/mod_headers.a
+#opt/lampp/modules/mod_proxy_ajp.a
+#opt/lampp/modules/mod_mem_cache.la
+#opt/lampp/modules/mod_expires.a
+#opt/lampp/modules/mod_proxy_ftp.a
+#opt/lampp/modules/mod_info.a
+#opt/lampp/modules/mod_headers.la
+#opt/lampp/modules/mod_authz_default.la
+#opt/lampp/modules/mod_case_filter_in.la
+#opt/lampp/modules/mod_charset_lite.a
+#opt/lampp/modules/mod_proxy_ajp.la
+#opt/lampp/modules/mod_ldap.a
+#opt/lampp/modules/mod_filter.la
+#opt/lampp/modules/mod_alias.a
+#opt/lampp/modules/mod_mime.a
+#opt/lampp/manual/
+#opt/lampp/manual/faq/
+#opt/lampp/manual/faq/support.html.en
+#opt/lampp/manual/faq/all_in_one.html.ko.euc-kr
+#opt/lampp/manual/faq/all_in_one.html.ja.euc-jp
+#opt/lampp/manual/faq/all_in_one.html.en
+#opt/lampp/manual/faq/support.html
+#opt/lampp/manual/faq/error.html.ko.euc-kr
+#opt/lampp/manual/faq/index.html
+#opt/lampp/manual/faq/error.html.ja.euc-jp
+#opt/lampp/manual/faq/all_in_one.html
+#opt/lampp/manual/faq/background.html
+#opt/lampp/manual/faq/index.html.ko.euc-kr
+#opt/lampp/manual/faq/background.html.en
+#opt/lampp/manual/faq/support.html.ko.euc-kr
+#opt/lampp/manual/faq/index.html.ja.euc-jp
+#opt/lampp/manual/faq/index.html.en
+#opt/lampp/manual/faq/support.html.ja.euc-jp
+#opt/lampp/manual/faq/error.html
+#opt/lampp/manual/faq/error.html.en
+#opt/lampp/manual/mod/
+#opt/lampp/manual/mod/mod_autoindex.html.ko.euc-kr
+#opt/lampp/manual/mod/mod_authn_file.html.en
+#opt/lampp/manual/mod/mod_isapi.html.en
+#opt/lampp/manual/mod/mod_dbd.html.en
+#opt/lampp/manual/mod/module-dict.html.ko.euc-kr
+#opt/lampp/manual/mod/mod_authz_host.html
+#opt/lampp/manual/mod/mod_authn_default.html.ja.euc-jp
+#opt/lampp/manual/mod/mod_authn_alias.html
+#opt/lampp/manual/mod/mod_proxy.html.en
+#opt/lampp/manual/mod/prefork.html
+#opt/lampp/manual/mod/mod_auth_basic.html
+#opt/lampp/manual/mod/mod_ext_filter.html.ja.euc-jp
+#opt/lampp/manual/mod/beos.html.de
+#opt/lampp/manual/mod/beos.html.en
+#opt/lampp/manual/mod/beos.html.es
+#opt/lampp/manual/mod/mod_suexec.html.en
+#opt/lampp/manual/mod/mod_so.html.ko.euc-kr
+#opt/lampp/manual/mod/mod_cgi.html
+#opt/lampp/manual/mod/mod_env.html.en
+#opt/lampp/manual/mod/mod_authnz_ldap.html
+#opt/lampp/manual/mod/mod_dir.html
+#opt/lampp/manual/mod/mod_authn_anon.html
+#opt/lampp/manual/mod/mod_autoindex.html.ja.euc-jp
+#opt/lampp/manual/mod/mod_authz_dbm.html.ko.euc-kr
+#opt/lampp/manual/mod/mod_log_config.html.en
+#opt/lampp/manual/mod/mod_proxy_balancer.html.ja.euc-jp
+#opt/lampp/manual/mod/mod_autoindex.html.en
+#opt/lampp/manual/mod/mod_cern_meta.html.en
+#opt/lampp/manual/mod/mod_imagemap.html.ko.euc-kr
+#opt/lampp/manual/mod/mod_dav.html.ko.euc-kr
+#opt/lampp/manual/mod/mod_dav.html.en
+#opt/lampp/manual/mod/mod_echo.html
+#opt/lampp/manual/mod/module-dict.html.ja.euc-jp
+#opt/lampp/manual/mod/mod_cache.html
+#opt/lampp/manual/mod/mod_headers.html
+#opt/lampp/manual/mod/worker.html
+#opt/lampp/manual/mod/mod_log_forensic.html.ja.euc-jp
+#opt/lampp/manual/mod/mod_actions.html.ko.euc-kr
+#opt/lampp/manual/mod/mod_ldap.html.en
+#opt/lampp/manual/mod/mod_dumpio.html.ja.euc-jp
+#opt/lampp/manual/mod/mod_setenvif.html.ko.euc-kr
+#opt/lampp/manual/mod/mod_authz_groupfile.html.ko.euc-kr
+#opt/lampp/manual/mod/mpmt_os2.html
+#opt/lampp/manual/mod/mod_so.html.ja.euc-jp
+#opt/lampp/manual/mod/mod_negotiation.html.en
+#opt/lampp/manual/mod/mod_deflate.html
+#opt/lampp/manual/mod/mod_authz_default.html
+#opt/lampp/manual/mod/mod_dav.html.ja.euc-jp
+#opt/lampp/manual/mod/mod_cache.html.en
+#opt/lampp/manual/mod/mod_imagemap.html
+#opt/lampp/manual/mod/mod_actions.html.ja.euc-jp
+#opt/lampp/manual/mod/mod_filter.html.en
+#opt/lampp/manual/mod/mod_proxy_balancer.html.en
+#opt/lampp/manual/mod/mod_unique_id.html.en
+#opt/lampp/manual/mod/mod_setenvif.html.ja.euc-jp
+#opt/lampp/manual/mod/mod_authz_groupfile.html.ja.euc-jp
+#opt/lampp/manual/mod/mod_ext_filter.html.en
+#opt/lampp/manual/mod/mod_cern_meta.html.ko.euc-kr
+#opt/lampp/manual/mod/mod_authz_default.html.en
+#opt/lampp/manual/mod/mod_authz_owner.html
+#opt/lampp/manual/mod/mod_dav_lock.html
+#opt/lampp/manual/mod/mod_example.html.ko.euc-kr
+#opt/lampp/manual/mod/mod_disk_cache.html.en
+#opt/lampp/manual/mod/mod_expires.html
+#opt/lampp/manual/mod/mod_dav_fs.html.ko.euc-kr
+#opt/lampp/manual/mod/mod_suexec.html
+#opt/lampp/manual/mod/directives.html
+#opt/lampp/manual/mod/mod_dav_fs.html
+#opt/lampp/manual/mod/mod_expires.html.en
+#opt/lampp/manual/mod/mpm_common.html
+#opt/lampp/manual/mod/mod_authn_file.html.ko.euc-kr
+#opt/lampp/manual/mod/mod_file_cache.html.ko.euc-kr
+#opt/lampp/manual/mod/prefork.html.ja.euc-jp
+#opt/lampp/manual/mod/core.html.de
+#opt/lampp/manual/mod/core.html.en
+#opt/lampp/manual/mod/mod_example.html.en
+#opt/lampp/manual/mod/mod_include.html
+#opt/lampp/manual/mod/mod_dav_fs.html.ja.euc-jp
+#opt/lampp/manual/mod/mod_userdir.html
+#opt/lampp/manual/mod/mod_userdir.html.ko.euc-kr
+#opt/lampp/manual/mod/directive-dict.html
+#opt/lampp/manual/mod/mod_deflate.html.ko.euc-kr
+#opt/lampp/manual/mod/mod_so.html.en
+#opt/lampp/manual/mod/worker.html.ja.euc-jp
+#opt/lampp/manual/mod/mod_cgid.html
+#opt/lampp/manual/mod/mod_example.html
+#opt/lampp/manual/mod/mod_headers.html.ko.euc-kr
+#opt/lampp/manual/mod/mod_cache.html.ko.euc-kr
+#opt/lampp/manual/mod/mod_authn_file.html.ja.euc-jp
+#opt/lampp/manual/mod/index.html
+#opt/lampp/manual/mod/mod_cgi.html.ko.euc-kr
+#opt/lampp/manual/mod/mod_proxy_ftp.html
+#opt/lampp/manual/mod/mod_cgi.html.en
+#opt/lampp/manual/mod/mod_authz_owner.html.ko.euc-kr
+#opt/lampp/manual/mod/mod_authn_file.html
+#opt/lampp/manual/mod/mod_authz_default.html.ko.euc-kr
+#opt/lampp/manual/mod/mod_cgid.html.ko.euc-kr
+#opt/lampp/manual/mod/mod_cgid.html.en
+#opt/lampp/manual/mod/mod_disk_cache.html
+#opt/lampp/manual/mod/mod_file_cache.html
+#opt/lampp/manual/mod/mod_charset_lite.html
+#opt/lampp/manual/mod/mod_userdir.html.ja.euc-jp
+#opt/lampp/manual/mod/mod_info.html.ko.euc-kr
+#opt/lampp/manual/mod/quickreference.html.de
+#opt/lampp/manual/mod/quickreference.html.en
+#opt/lampp/manual/mod/quickreference.html.es
+#opt/lampp/manual/mod/mod_deflate.html.ja.euc-jp
+#opt/lampp/manual/mod/mod_log_forensic.html
+#opt/lampp/manual/mod/directive-dict.html.ko.euc-kr
+#opt/lampp/manual/mod/mod_alias.html.ko.euc-kr
+#opt/lampp/manual/mod/mod_headers.html.ja.euc-jp
+#opt/lampp/manual/mod/mod_cache.html.ja.euc-jp
+#opt/lampp/manual/mod/index.html.ko.euc-kr
+#opt/lampp/manual/mod/mod_cgi.html.ja.euc-jp
+#opt/lampp/manual/mod/mod_actions.html.de
+#opt/lampp/manual/mod/mod_actions.html.en
+#opt/lampp/manual/mod/mod_proxy_http.html.en
+#opt/lampp/manual/mod/mod_authz_owner.html.ja.euc-jp
+#opt/lampp/manual/mod/mpm_netware.html.en
+#opt/lampp/manual/mod/mod_env.html
+#opt/lampp/manual/mod/mod_authz_default.html.ja.euc-jp
+#opt/lampp/manual/mod/directives.html.de
+#opt/lampp/manual/mod/directives.html.en
+#opt/lampp/manual/mod/directives.html.es
+#opt/lampp/manual/mod/mod_cgid.html.ja.euc-jp
+#opt/lampp/manual/mod/mod_speling.html.ko.euc-kr
+#opt/lampp/manual/mod/mod_file_cache.html.en
+#opt/lampp/manual/mod/mod_authn_default.html
+#opt/lampp/manual/mod/mod_auth_basic.html.ko.euc-kr
+#opt/lampp/manual/mod/core.html.ja.euc-jp
+#opt/lampp/manual/mod/mod_info.html.ja.euc-jp
+#opt/lampp/manual/mod/directive-dict.html.ja.euc-jp
+#opt/lampp/manual/mod/mod_asis.html.en
+#opt/lampp/manual/mod/mod_alias.html.ja.euc-jp
+#opt/lampp/manual/mod/mpm_winnt.html
+#opt/lampp/manual/mod/mod_auth_basic.html.en
+#opt/lampp/manual/mod/mpm_netware.html
+#opt/lampp/manual/mod/index.html.ja.euc-jp
+#opt/lampp/manual/mod/mod_ssl.html
+#opt/lampp/manual/mod/mod_proxy_http.html
+#opt/lampp/manual/mod/mod_env.html.ko.euc-kr
+#opt/lampp/manual/mod/mod_speling.html.ja.euc-jp
+#opt/lampp/manual/mod/mod_authz_groupfile.html.en
+#opt/lampp/manual/mod/mod_filter.html
+#opt/lampp/manual/mod/mod_asis.html.ko.euc-kr
+#opt/lampp/manual/mod/mod_headers.html.en
+#opt/lampp/manual/mod/mod_authn_default.html.en
+#opt/lampp/manual/mod/worker.html.de
+#opt/lampp/manual/mod/worker.html.en
+#opt/lampp/manual/mod/mod_dav_lock.html.en
+#opt/lampp/manual/mod/mod_auth_basic.html.ja.euc-jp
+#opt/lampp/manual/mod/mod_dir.html.ko.euc-kr
+#opt/lampp/manual/mod/index.html.de
+#opt/lampp/manual/mod/index.html.en
+#opt/lampp/manual/mod/index.html.es
+#opt/lampp/manual/mod/mod_deflate.html.en
+#opt/lampp/manual/mod/mod_proxy_ajp.html.en
+#opt/lampp/manual/mod/mod_expires.html.ko.euc-kr
+#opt/lampp/manual/mod/mod_unique_id.html.ko.euc-kr
+#opt/lampp/manual/mod/mod_so.html
+#opt/lampp/manual/mod/quickreference.html.ko.euc-kr
+#opt/lampp/manual/mod/mod_ident.html
+#opt/lampp/manual/mod/mod_mime.html.en
+#opt/lampp/manual/mod/mod_log_config.html
+#opt/lampp/manual/mod/mod_ident.html.en
+#opt/lampp/manual/mod/mod_env.html.ja.euc-jp
+#opt/lampp/manual/mod/mod_logio.html.ko.euc-kr
+#opt/lampp/manual/mod/mod_negotiation.html.ja.euc-jp
+#opt/lampp/manual/mod/mod_status.html.ko.euc-kr
+#opt/lampp/manual/mod/mod_alias.html
+#opt/lampp/manual/mod/event.html.en
+#opt/lampp/manual/mod/mod_asis.html.ja.euc-jp
+#opt/lampp/manual/mod/mod_mime_magic.html.en
+#opt/lampp/manual/mod/mod_authz_host.html.ko.euc-kr
+#opt/lampp/manual/mod/mod_vhost_alias.html.en
+#opt/lampp/manual/mod/mod_dir.html.ja.euc-jp
+#opt/lampp/manual/mod/mod_expires.html.ja.euc-jp
+#opt/lampp/manual/mod/mod_unique_id.html.ja.euc-jp
+#opt/lampp/manual/mod/mod_setenvif.html
+#opt/lampp/manual/mod/quickreference.html.ja.euc-jp
+#opt/lampp/manual/mod/mod_info.html
+#opt/lampp/manual/mod/mod_status.html.en
+#opt/lampp/manual/mod/mod_alias.html.en
+#opt/lampp/manual/mod/mpm_common.html.ja.euc-jp
+#opt/lampp/manual/mod/mod_ext_filter.html
+#opt/lampp/manual/mod/mod_ldap.html
+#opt/lampp/manual/mod/mod_echo.html.en
+#opt/lampp/manual/mod/mod_logio.html.ja.euc-jp
+#opt/lampp/manual/mod/mod_status.html.ja.euc-jp
+#opt/lampp/manual/mod/mod_setenvif.html.en
+#opt/lampp/manual/mod/mod_asis.html
+#opt/lampp/manual/mod/mod_vhost_alias.html
+#opt/lampp/manual/mod/mod_authz_host.html.ja.euc-jp
+#opt/lampp/manual/mod/mod_echo.html.ko.euc-kr
+#opt/lampp/manual/mod/module-dict.html.en
+#opt/lampp/manual/mod/mod_rewrite.html.en
+#opt/lampp/manual/mod/mod_authn_anon.html.ko.euc-kr
+#opt/lampp/manual/mod/mod_proxy.html.ja.euc-jp
+#opt/lampp/manual/mod/core.html
+#opt/lampp/manual/mod/mpm_winnt.html.de
+#opt/lampp/manual/mod/mpm_winnt.html.en
+#opt/lampp/manual/mod/mod_dav_lock.html.ja.euc-jp
+#opt/lampp/manual/mod/mod_info.html.en
+#opt/lampp/manual/mod/mpm_common.html.de
+#opt/lampp/manual/mod/mpm_common.html.en
+#opt/lampp/manual/mod/mod_authn_dbd.html
+#opt/lampp/manual/mod/mod_mime_magic.html
+#opt/lampp/manual/mod/mod_proxy_balancer.html
+#opt/lampp/manual/mod/mod_echo.html.ja.euc-jp
+#opt/lampp/manual/mod/mod_log_forensic.html.en
+#opt/lampp/manual/mod/quickreference.html
+#opt/lampp/manual/mod/mod_authz_dbm.html.en
+#opt/lampp/manual/mod/mod_authz_groupfile.html
+#opt/lampp/manual/mod/mod_authn_anon.html.ja.euc-jp
+#opt/lampp/manual/mod/mod_rewrite.html
+#opt/lampp/manual/mod/mod_disk_cache.html.ko.euc-kr
+#opt/lampp/manual/mod/module-dict.html
+#opt/lampp/manual/mod/mod_authn_dbd.html.en
+#opt/lampp/manual/mod/mod_ssl.html.en
+#opt/lampp/manual/mod/mod_authz_host.html.en
+#opt/lampp/manual/mod/mod_authnz_ldap.html.en
+#opt/lampp/manual/mod/mod_charset_lite.html.ko.euc-kr
+#opt/lampp/manual/mod/mod_unique_id.html
+#opt/lampp/manual/mod/mod_authz_user.html.ko.euc-kr
+#opt/lampp/manual/mod/mod_dir.html.en
+#opt/lampp/manual/mod/mod_proxy_ftp.html.en
+#opt/lampp/manual/mod/mod_charset_lite.html.en
+#opt/lampp/manual/mod/mod_mem_cache.html
+#opt/lampp/manual/mod/mod_mime.html
+#opt/lampp/manual/mod/mod_negotiation.html
+#opt/lampp/manual/mod/mpm_winnt.html.ja.euc-jp
+#opt/lampp/manual/mod/mod_authz_user.html.en
+#opt/lampp/manual/mod/mod_include.html.en
+#opt/lampp/manual/mod/mod_auth_digest.html
+#opt/lampp/manual/mod/mod_log_config.html.ko.euc-kr
+#opt/lampp/manual/mod/mod_proxy_connect.html.en
+#opt/lampp/manual/mod/mod_dumpio.html
+#opt/lampp/manual/mod/mod_disk_cache.html.ja.euc-jp
+#opt/lampp/manual/mod/event.html
+#opt/lampp/manual/mod/mod_actions.html
+#opt/lampp/manual/mod/directives.html.ko.euc-kr
+#opt/lampp/manual/mod/mod_authn_dbm.html
+#opt/lampp/manual/mod/mod_dbd.html
+#opt/lampp/manual/mod/mod_suexec.html.ko.euc-kr
+#opt/lampp/manual/mod/mpmt_os2.html.en
+#opt/lampp/manual/mod/mod_logio.html.en
+#opt/lampp/manual/mod/mod_speling.html.en
+#opt/lampp/manual/mod/mod_authn_dbm.html.ko.euc-kr
+#opt/lampp/manual/mod/mod_authz_user.html.ja.euc-jp
+#opt/lampp/manual/mod/mod_nw_ssl.html
+#opt/lampp/manual/mod/mod_version.html.ko.euc-kr
+#opt/lampp/manual/mod/mod_status.html
+#opt/lampp/manual/mod/mod_authn_dbm.html.en
+#opt/lampp/manual/mod/mod_auth_digest.html.en
+#opt/lampp/manual/mod/mod_nw_ssl.html.en
+#opt/lampp/manual/mod/mod_log_config.html.ja.euc-jp
+#opt/lampp/manual/mod/mod_dav_fs.html.en
+#opt/lampp/manual/mod/prefork.html.de
+#opt/lampp/manual/mod/prefork.html.en
+#opt/lampp/manual/mod/mod_imagemap.html.en
+#opt/lampp/manual/mod/mod_proxy_ajp.html
+#opt/lampp/manual/mod/mod_mem_cache.html.ko.euc-kr
+#opt/lampp/manual/mod/beos.html.ko.euc-kr
+#opt/lampp/manual/mod/beos.html
+#opt/lampp/manual/mod/mod_ident.html.ko.euc-kr
+#opt/lampp/manual/mod/mod_authz_user.html
+#opt/lampp/manual/mod/mod_mime.html.ja.euc-jp
+#opt/lampp/manual/mod/mod_authz_owner.html.en
+#opt/lampp/manual/mod/mod_authz_dbm.html
+#opt/lampp/manual/mod/mod_proxy.html
+#opt/lampp/manual/mod/mod_usertrack.html.en
+#opt/lampp/manual/mod/directives.html.ja.euc-jp
+#opt/lampp/manual/mod/mod_suexec.html.ja.euc-jp
+#opt/lampp/manual/mod/mod_version.html
+#opt/lampp/manual/mod/mod_isapi.html
+#opt/lampp/manual/mod/directive-dict.html.en
+#opt/lampp/manual/mod/mod_speling.html
+#opt/lampp/manual/mod/mod_authn_dbm.html.ja.euc-jp
+#opt/lampp/manual/mod/mod_dumpio.html.en
+#opt/lampp/manual/mod/mod_authn_default.html.ko.euc-kr
+#opt/lampp/manual/mod/mod_authn_alias.html.en
+#opt/lampp/manual/mod/mod_proxy_connect.html
+#opt/lampp/manual/mod/mod_logio.html
+#opt/lampp/manual/mod/mod_mem_cache.html.en
+#opt/lampp/manual/mod/mod_dav.html
+#opt/lampp/manual/mod/mod_userdir.html.en
+#opt/lampp/manual/mod/mod_version.html.ja.euc-jp
+#opt/lampp/manual/mod/mod_ext_filter.html.ko.euc-kr
+#opt/lampp/manual/mod/mod_cern_meta.html
+#opt/lampp/manual/mod/mod_usertrack.html
+#opt/lampp/manual/mod/mod_proxy_ajp.html.ja.euc-jp
+#opt/lampp/manual/mod/mod_auth_digest.html.ko.euc-kr
+#opt/lampp/manual/mod/mod_authn_anon.html.en
+#opt/lampp/manual/mod/mod_autoindex.html
+#opt/lampp/manual/mod/mod_isapi.html.ko.euc-kr
+#opt/lampp/manual/mod/mod_include.html.ja.euc-jp
+#opt/lampp/manual/mod/mod_mem_cache.html.ja.euc-jp
+#opt/lampp/manual/mod/mod_version.html.en
+#opt/lampp/manual/ssl/
+#opt/lampp/manual/ssl/ssl_faq.html
+#opt/lampp/manual/ssl/ssl_faq.html.en
+#opt/lampp/manual/ssl/ssl_intro.html.en
+#opt/lampp/manual/ssl/ssl_howto.html
+#opt/lampp/manual/ssl/index.html
+#opt/lampp/manual/ssl/ssl_intro.html.ja.euc-jp
+#opt/lampp/manual/ssl/index.html.ja.euc-jp
+#opt/lampp/manual/ssl/index.html.en
+#opt/lampp/manual/ssl/ssl_howto.html.en
+#opt/lampp/manual/ssl/ssl_intro.html
+#opt/lampp/manual/ssl/ssl_compat.html
+#opt/lampp/manual/ssl/ssl_compat.html.en
+#opt/lampp/manual/server-wide.html
+#opt/lampp/manual/upgrading.html.ko.euc-kr
+#opt/lampp/manual/filter.html.en
+#opt/lampp/manual/filter.html.es
+#opt/lampp/manual/filter.html.fr
+#opt/lampp/manual/misc/
+#opt/lampp/manual/misc/perf-tuning.html.en
+#opt/lampp/manual/misc/rewriteguide.html.en
+#opt/lampp/manual/misc/security_tips.html.ko.euc-kr
+#opt/lampp/manual/misc/perf-tuning.html.ko.euc-kr
+#opt/lampp/manual/misc/relevant_standards.html.ko.euc-kr
+#opt/lampp/manual/misc/security_tips.html
+#opt/lampp/manual/misc/index.html
+#opt/lampp/manual/misc/index.html.ko.euc-kr
+#opt/lampp/manual/misc/index.html.en
+#opt/lampp/manual/misc/relevant_standards.html
+#opt/lampp/manual/misc/perf-tuning.html
+#opt/lampp/manual/misc/relevant_standards.html.en
+#opt/lampp/manual/misc/rewriteguide.html
+#opt/lampp/manual/misc/security_tips.html.en
+#opt/lampp/manual/misc/rewriteguide.html.ko.euc-kr
+#opt/lampp/manual/new_features_2_2.html.pt-br
+#opt/lampp/manual/handler.html.en
+#opt/lampp/manual/handler.html.es
+#opt/lampp/manual/suexec.html.ja.euc-jp
+#opt/lampp/manual/upgrading.html.pt-br
+#opt/lampp/manual/new_features_2_0.html.ko.euc-kr
+#opt/lampp/manual/license.html
+#opt/lampp/manual/stopping.html.ko.euc-kr
+#opt/lampp/manual/upgrading.html.ja.euc-jp
+#opt/lampp/manual/rewrite/
+#opt/lampp/manual/rewrite/rewrite_intro.html
+#opt/lampp/manual/rewrite/rewrite_guide.html.en
+#opt/lampp/manual/rewrite/rewrite_guide_advanced.html.en
+#opt/lampp/manual/rewrite/index.html
+#opt/lampp/manual/rewrite/rewrite_guide_advanced.html
+#opt/lampp/manual/rewrite/rewrite_intro.html.en
+#opt/lampp/manual/rewrite/index.html.en
+#opt/lampp/manual/rewrite/rewrite_tech.html.en
+#opt/lampp/manual/rewrite/rewrite_tech.html
+#opt/lampp/manual/rewrite/rewrite_guide.html
+#opt/lampp/manual/new_features_2_0.html.ja.euc-jp
+#opt/lampp/manual/mpm.html.ko.euc-kr
+#opt/lampp/manual/custom-error.html
+#opt/lampp/manual/LICENSE
+#opt/lampp/manual/stopping.html.ja.euc-jp
+#opt/lampp/manual/configuring.html.de
+#opt/lampp/manual/configuring.html.en
+#opt/lampp/manual/new_features_2_2.html.en
+#opt/lampp/manual/caching.html
+#opt/lampp/manual/bind.html.de
+#opt/lampp/manual/bind.html.en
+#opt/lampp/manual/bind.html.fr
+#opt/lampp/manual/howto/
+#opt/lampp/manual/howto/cgi.html.en
+#opt/lampp/manual/howto/ssi.html.ja.euc-jp
+#opt/lampp/manual/howto/cgi.html
+#opt/lampp/manual/howto/cgi.html.ko.euc-kr
+#opt/lampp/manual/howto/auth.html.ko.euc-kr
+#opt/lampp/manual/howto/index.html
+#opt/lampp/manual/howto/cgi.html.ja.euc-jp
+#opt/lampp/manual/howto/auth.html.ja.euc-jp
+#opt/lampp/manual/howto/public_html.html.ko.euc-kr
+#opt/lampp/manual/howto/index.html.ko.euc-kr
+#opt/lampp/manual/howto/htaccess.html
+#opt/lampp/manual/howto/public_html.html.ja.euc-jp
+#opt/lampp/manual/howto/htaccess.html.ko.euc-kr
+#opt/lampp/manual/howto/index.html.ja.euc-jp
+#opt/lampp/manual/howto/public_html.html.en
+#opt/lampp/manual/howto/htaccess.html.en
+#opt/lampp/manual/howto/index.html.en
+#opt/lampp/manual/howto/htaccess.html.ja.euc-jp
+#opt/lampp/manual/howto/auth.html.en
+#opt/lampp/manual/howto/ssi.html
+#opt/lampp/manual/howto/auth.html
+#opt/lampp/manual/howto/htaccess.html.pt-br
+#opt/lampp/manual/howto/public_html.html
+#opt/lampp/manual/howto/ssi.html.en
+#opt/lampp/manual/howto/ssi.html.ko.euc-kr
+#opt/lampp/manual/style/
+#opt/lampp/manual/style/css/
+#opt/lampp/manual/style/css/manual.css
+#opt/lampp/manual/style/css/manual-print.css
+#opt/lampp/manual/style/css/manual-chm.css
+#opt/lampp/manual/style/css/manual-zip.css
+#opt/lampp/manual/style/css/manual-loose-100pc.css
+#opt/lampp/manual/style/css/manual-zip-100pc.css
+#opt/lampp/manual/style/xsl/
+#opt/lampp/manual/style/xsl/util/
+#opt/lampp/manual/style/xsl/util/modtrans.xsl
+#opt/lampp/manual/style/xsl/quickreference.xsl
+#opt/lampp/manual/style/xsl/sitemap.xsl
+#opt/lampp/manual/style/xsl/indexpage.xsl
+#opt/lampp/manual/style/xsl/faq.xsl
+#opt/lampp/manual/style/xsl/maf.xsl
+#opt/lampp/manual/style/xsl/manualpage.xsl
+#opt/lampp/manual/style/xsl/nroff.xsl
+#opt/lampp/manual/style/xsl/directiveindex.xsl
+#opt/lampp/manual/style/xsl/hhc.xsl
+#opt/lampp/manual/style/xsl/hhp.xsl
+#opt/lampp/manual/style/xsl/moduleindex.xsl
+#opt/lampp/manual/style/xsl/typemap.xsl
+#opt/lampp/manual/style/xsl/language.xsl
+#opt/lampp/manual/style/xsl/synopsis.xsl
+#opt/lampp/manual/style/xsl/convmap.xsl
+#opt/lampp/manual/style/xsl/common.xsl
+#opt/lampp/manual/style/lang/
+#opt/lampp/manual/style/manual.de.xsl
+#opt/lampp/manual/style/manual.en.xsl
+#opt/lampp/manual/style/manual.es.xsl
+#opt/lampp/manual/style/manual.fr.xsl
+#opt/lampp/manual/style/latex/
+#opt/lampp/manual/style/latex/quickreference.xsl
+#opt/lampp/manual/style/latex/html.xsl
+#opt/lampp/manual/style/latex/atbeginend.sty
+#opt/lampp/manual/style/latex/faq.xsl
+#opt/lampp/manual/style/latex/manualpage.xsl
+#opt/lampp/manual/style/latex/directiveindex.xsl
+#opt/lampp/manual/style/latex/moduleindex.xsl
+#opt/lampp/manual/style/latex/synopsis.xsl
+#opt/lampp/manual/style/latex/latex.xsl
+#opt/lampp/manual/style/latex/common.xsl
+#opt/lampp/manual/style/manual.ja.xsl
+#opt/lampp/manual/style/manual.ko.xsl
+#opt/lampp/manual/style/sitemap.dtd
+#opt/lampp/manual/style/manual.ru.xsl
+#opt/lampp/manual/style/faq.dtd
+#opt/lampp/manual/style/build.properties
+#opt/lampp/manual/style/version.ent
+#opt/lampp/manual/style/manualpage.dtd
+#opt/lampp/manual/style/modulesynopsis.dtd
+#opt/lampp/manual/style/manual.pt-br.xsl
+#opt/lampp/manual/style/lang.dtd
+#opt/lampp/manual/style/common.dtd
+#opt/lampp/manual/logs.html.ko.euc-kr
+#opt/lampp/manual/filter.html
+#opt/lampp/manual/dns-caveats.html
+#opt/lampp/manual/mpm.html.ja.euc-jp
+#opt/lampp/manual/dso.html.en
+#opt/lampp/manual/content-negotiation.html
+#opt/lampp/manual/logs.html.ja.euc-jp
+#opt/lampp/manual/handler.html.ko.euc-kr
+#opt/lampp/manual/install.html.ko.euc-kr
+#opt/lampp/manual/sections.html
+#opt/lampp/manual/install.html.de
+#opt/lampp/manual/install.html.en
+#opt/lampp/manual/install.html.es
+#opt/lampp/manual/install.html.fr
+#opt/lampp/manual/index.html
+#opt/lampp/manual/stopping.html.de
+#opt/lampp/manual/stopping.html.en
+#opt/lampp/manual/stopping.html.es
+#opt/lampp/manual/install.html
+#opt/lampp/manual/handler.html.ja.euc-jp
+#opt/lampp/manual/sections.html.en
+#opt/lampp/manual/logs.html
+#opt/lampp/manual/install.html.ja.euc-jp
+#opt/lampp/manual/index.html.ko.euc-kr
+#opt/lampp/manual/urlmapping.html.ko.euc-kr
+#opt/lampp/manual/env.html.ko.euc-kr
+#opt/lampp/manual/dns-caveats.html.ko.euc-kr
+#opt/lampp/manual/filter.html.ko.euc-kr
+#opt/lampp/manual/glossary.html.de
+#opt/lampp/manual/glossary.html.en
+#opt/lampp/manual/glossary.html.es
+#opt/lampp/manual/index.html.ja.euc-jp
+#opt/lampp/manual/urlmapping.html.ja.euc-jp
+#opt/lampp/manual/mpm.html
+#opt/lampp/manual/sitemap.html
+#opt/lampp/manual/env.html.ja.euc-jp
+#opt/lampp/manual/images/
+#opt/lampp/manual/images/favicon.ico
+#opt/lampp/manual/images/caching_fig1.gif
+#opt/lampp/manual/images/caching_fig1.png
+#opt/lampp/manual/images/down.gif
+#opt/lampp/manual/images/right.gif
+#opt/lampp/manual/images/feather.gif
+#opt/lampp/manual/images/feather.png
+#opt/lampp/manual/images/left.gif
+#opt/lampp/manual/images/mod_filter_new.gif
+#opt/lampp/manual/images/mod_filter_new.png
+#opt/lampp/manual/images/sub.gif
+#opt/lampp/manual/images/home.gif
+#opt/lampp/manual/images/custom_errordocs.png
+#opt/lampp/manual/images/pixel.gif
+#opt/lampp/manual/images/index.gif
+#opt/lampp/manual/images/mod_filter_old.gif
+#opt/lampp/manual/images/filter_arch.png
+#opt/lampp/manual/images/up.gif
+#opt/lampp/manual/images/apache_header.gif
+#opt/lampp/manual/images/mod_rewrite_fig1.gif
+#opt/lampp/manual/images/mod_rewrite_fig1.png
+#opt/lampp/manual/images/mod_rewrite_fig2.gif
+#opt/lampp/manual/images/mod_rewrite_fig2.png
+#opt/lampp/manual/images/ssl_intro_fig1.gif
+#opt/lampp/manual/images/ssl_intro_fig1.png
+#opt/lampp/manual/images/ssl_intro_fig2.gif
+#opt/lampp/manual/images/ssl_intro_fig2.png
+#opt/lampp/manual/images/ssl_intro_fig3.gif
+#opt/lampp/manual/images/ssl_intro_fig3.png
+#opt/lampp/manual/license.html.en
+#opt/lampp/manual/custom-error.html.en
+#opt/lampp/manual/custom-error.html.es
+#opt/lampp/manual/dns-caveats.html.ja.euc-jp
+#opt/lampp/manual/index.html.de
+#opt/lampp/manual/index.html.en
+#opt/lampp/manual/index.html.es
+#opt/lampp/manual/index.html.fr
+#opt/lampp/manual/bind.html.ko.euc-kr
+#opt/lampp/manual/filter.html.ja.euc-jp
+#opt/lampp/manual/new_features_2_2.html.ko.euc-kr
+#opt/lampp/manual/index.html.pt-br
+#opt/lampp/manual/env.html
+#opt/lampp/manual/new_features_2_0.html
+#opt/lampp/manual/invoking.html.de
+#opt/lampp/manual/invoking.html.en
+#opt/lampp/manual/invoking.html.es
+#opt/lampp/manual/logs.html.en
+#opt/lampp/manual/new_features_2_2.html
+#opt/lampp/manual/sitemap.html.de
+#opt/lampp/manual/sitemap.html.en
+#opt/lampp/manual/sitemap.html.es
+#opt/lampp/manual/configuring.html.ko.euc-kr
+#opt/lampp/manual/dso.html
+#opt/lampp/manual/content-negotiation.html.ko.euc-kr
+#opt/lampp/manual/urlmapping.html
+#opt/lampp/manual/bind.html.ja.euc-jp
+#opt/lampp/manual/caching.html.en
+#opt/lampp/manual/urlmapping.html.en
+#opt/lampp/manual/content-negotiation.html.en
+#opt/lampp/manual/configuring.html.ja.euc-jp
+#opt/lampp/manual/content-negotiation.html.ja.euc-jp
+#opt/lampp/manual/stopping.html
+#opt/lampp/manual/vhosts/
+#opt/lampp/manual/vhosts/examples.html
+#opt/lampp/manual/vhosts/ip-based.html
+#opt/lampp/manual/vhosts/name-based.html.ko.euc-kr
+#opt/lampp/manual/vhosts/fd-limits.html.ko.euc-kr
+#opt/lampp/manual/vhosts/index.html
+#opt/lampp/manual/vhosts/mass.html
+#opt/lampp/manual/vhosts/name-based.html.ja.euc-jp
+#opt/lampp/manual/vhosts/fd-limits.html.ja.euc-jp
+#opt/lampp/manual/vhosts/details.html
+#opt/lampp/manual/vhosts/fd-limits.html
+#opt/lampp/manual/vhosts/mass.html.en
+#opt/lampp/manual/vhosts/name-based.html
+#opt/lampp/manual/vhosts/ip-based.html.en
+#opt/lampp/manual/vhosts/ip-based.html.fr
+#opt/lampp/manual/vhosts/index.html.ko.euc-kr
+#opt/lampp/manual/vhosts/examples.html.ko.euc-kr
+#opt/lampp/manual/vhosts/details.html.ko.euc-kr
+#opt/lampp/manual/vhosts/index.html.ja.euc-jp
+#opt/lampp/manual/vhosts/details.html.en
+#opt/lampp/manual/vhosts/details.html.fr
+#opt/lampp/manual/vhosts/name-based.html.de
+#opt/lampp/manual/vhosts/name-based.html.en
+#opt/lampp/manual/vhosts/name-based.html.fr
+#opt/lampp/manual/vhosts/examples.html.ja.euc-jp
+#opt/lampp/manual/vhosts/index.html.de
+#opt/lampp/manual/vhosts/index.html.en
+#opt/lampp/manual/vhosts/index.html.fr
+#opt/lampp/manual/vhosts/mass.html.ko.euc-kr
+#opt/lampp/manual/vhosts/fd-limits.html.en
+#opt/lampp/manual/vhosts/fd-limits.html.fr
+#opt/lampp/manual/vhosts/ip-based.html.ko.euc-kr
+#opt/lampp/manual/vhosts/ip-based.html.ja.euc-jp
+#opt/lampp/manual/vhosts/examples.html.en
+#opt/lampp/manual/vhosts/examples.html.fr
+#opt/lampp/manual/dns-caveats.html.en
+#opt/lampp/manual/env.html.en
+#opt/lampp/manual/upgrading.html
+#opt/lampp/manual/platform/
+#opt/lampp/manual/platform/netware.html
+#opt/lampp/manual/platform/perf-hp.html.ko.euc-kr
+#opt/lampp/manual/platform/ebcdic.html.en
+#opt/lampp/manual/platform/windows.html
+#opt/lampp/manual/platform/ebcdic.html
+#opt/lampp/manual/platform/index.html
+#opt/lampp/manual/platform/ebcdic.html.ko.euc-kr
+#opt/lampp/manual/platform/windows.html.ko.euc-kr
+#opt/lampp/manual/platform/index.html.ko.euc-kr
+#opt/lampp/manual/platform/win_compiling.html.en
+#opt/lampp/manual/platform/windows.html.en
+#opt/lampp/manual/platform/win_compiling.html.ko.euc-kr
+#opt/lampp/manual/platform/index.html.en
+#opt/lampp/manual/platform/win_compiling.html
+#opt/lampp/manual/platform/netware.html.en
+#opt/lampp/manual/platform/perf-hp.html
+#opt/lampp/manual/platform/perf-hp.html.en
+#opt/lampp/manual/platform/netware.html.ko.euc-kr
+#opt/lampp/manual/glossary.html.ko.euc-kr
+#opt/lampp/manual/upgrading.html.de
+#opt/lampp/manual/upgrading.html.en
+#opt/lampp/manual/upgrading.html.fr
+#opt/lampp/manual/new_features_2_0.html.pt-br
+#opt/lampp/manual/server-wide.html.ko.euc-kr
+#opt/lampp/manual/programs/
+#opt/lampp/manual/programs/htdbm.html
+#opt/lampp/manual/programs/configure.html
+#opt/lampp/manual/programs/rotatelogs.html
+#opt/lampp/manual/programs/configure.html.ko.euc-kr
+#opt/lampp/manual/programs/httxt2dbm.html
+#opt/lampp/manual/programs/dbmmanage.html.ko.euc-kr
+#opt/lampp/manual/programs/logresolve.html
+#opt/lampp/manual/programs/apachectl.html
+#opt/lampp/manual/programs/apxs.html.ko.euc-kr
+#opt/lampp/manual/programs/apxs.html.en
+#opt/lampp/manual/programs/htdigest.html.en
+#opt/lampp/manual/programs/htdbm.html.en
+#opt/lampp/manual/programs/apxs.html
+#opt/lampp/manual/programs/index.html
+#opt/lampp/manual/programs/ab.html.en
+#opt/lampp/manual/programs/htdigest.html.ko.euc-kr
+#opt/lampp/manual/programs/dbmmanage.html.en
+#opt/lampp/manual/programs/htdigest.html
+#opt/lampp/manual/programs/index.html.ko.euc-kr
+#opt/lampp/manual/programs/httpd.html.en
+#opt/lampp/manual/programs/httxt2dbm.html.en
+#opt/lampp/manual/programs/ab.html
+#opt/lampp/manual/programs/configure.html.en
+#opt/lampp/manual/programs/index.html.en
+#opt/lampp/manual/programs/index.html.es
+#opt/lampp/manual/programs/apachectl.html.en
+#opt/lampp/manual/programs/httpd.html
+#opt/lampp/manual/programs/rotatelogs.html.ko.euc-kr
+#opt/lampp/manual/programs/logresolve.html.en
+#opt/lampp/manual/programs/other.html
+#opt/lampp/manual/programs/other.html.en
+#opt/lampp/manual/programs/htpasswd.html.en
+#opt/lampp/manual/programs/ab.html.ko.euc-kr
+#opt/lampp/manual/programs/httpd.html.ko.euc-kr
+#opt/lampp/manual/programs/htcacheclean.html.en
+#opt/lampp/manual/programs/htpasswd.html.ko.euc-kr
+#opt/lampp/manual/programs/logresolve.html.ko.euc-kr
+#opt/lampp/manual/programs/suexec.html.en
+#opt/lampp/manual/programs/htpasswd.html
+#opt/lampp/manual/programs/suexec.html
+#opt/lampp/manual/programs/other.html.ko.euc-kr
+#opt/lampp/manual/programs/dbmmanage.html
+#opt/lampp/manual/programs/htcacheclean.html
+#opt/lampp/manual/programs/apachectl.html.ko.euc-kr
+#opt/lampp/manual/programs/suexec.html.ko.euc-kr
+#opt/lampp/manual/programs/rotatelogs.html.en
+#opt/lampp/manual/programs/htcacheclean.html.ko.euc-kr
+#opt/lampp/manual/handler.html
+#opt/lampp/manual/server-wide.html.en
+#opt/lampp/manual/upgrading.html.ru.koi8-r
+#opt/lampp/manual/invoking.html.ko.euc-kr
+#opt/lampp/manual/convenience.map
+#opt/lampp/manual/server-wide.html.ja.euc-jp
+#opt/lampp/manual/suexec.html.en
+#opt/lampp/manual/new_features_2_0.html.ru.koi8-r
+#opt/lampp/manual/custom-error.html.ko.euc-kr
+#opt/lampp/manual/sections.html.ko.euc-kr
+#opt/lampp/manual/dso.html.ko.euc-kr
+#opt/lampp/manual/suexec.html
+#opt/lampp/manual/sitemap.html.ko.euc-kr
+#opt/lampp/manual/invoking.html.ja.euc-jp
+#opt/lampp/manual/invoking.html
+#opt/lampp/manual/configuring.html
+#opt/lampp/manual/custom-error.html.ja.euc-jp
+#opt/lampp/manual/glossary.html
+#opt/lampp/manual/suexec.html.ko.euc-kr
+#opt/lampp/manual/sections.html.ja.euc-jp
+#opt/lampp/manual/bind.html
+#opt/lampp/manual/developer/
+#opt/lampp/manual/developer/thread_safety.html.en
+#opt/lampp/manual/developer/API.html.en
+#opt/lampp/manual/developer/hooks.html
+#opt/lampp/manual/developer/filters.html.en
+#opt/lampp/manual/developer/debugging.html.en
+#opt/lampp/manual/developer/hooks.html.en
+#opt/lampp/manual/developer/modules.html.ja.euc-jp
+#opt/lampp/manual/developer/index.html
+#opt/lampp/manual/developer/documenting.html
+#opt/lampp/manual/developer/thread_safety.html
+#opt/lampp/manual/developer/debugging.html
+#opt/lampp/manual/developer/index.html.en
+#opt/lampp/manual/developer/documenting.html.en
+#opt/lampp/manual/developer/modules.html.en
+#opt/lampp/manual/developer/request.html
+#opt/lampp/manual/developer/filters.html
+#opt/lampp/manual/developer/API.html
+#opt/lampp/manual/developer/request.html.en
+#opt/lampp/manual/developer/modules.html
+#opt/lampp/manual/mpm.html.de
+#opt/lampp/manual/mpm.html.en
+#opt/lampp/manual/mpm.html.es
+#opt/lampp/manual/dso.html.ja.euc-jp
+#opt/lampp/manual/sitemap.html.ja.euc-jp
+#opt/lampp/manual/new_features_2_0.html.de
+#opt/lampp/manual/new_features_2_0.html.en
+#opt/lampp/manual/new_features_2_0.html.fr
+#opt/lampp/include/
+#opt/lampp/include/apr_general.h
+#opt/lampp/include/php/
+#opt/lampp/include/php/ext/
+#opt/lampp/include/php/ext/gd/
+#opt/lampp/include/php/ext/gd/libgd/
+#opt/lampp/include/php/ext/gd/libgd/gd.h
+#opt/lampp/include/php/ext/gd/libgd/gdcache.h
+#opt/lampp/include/php/ext/gd/libgd/gdhelpers.h
+#opt/lampp/include/php/ext/gd/libgd/gd_io.h
+#opt/lampp/include/php/ext/gd/libgd/jisx0208.h
+#opt/lampp/include/php/ext/gd/libgd/wbmp.h
+#opt/lampp/include/php/ext/gd/libgd/gdfontmb.h
+#opt/lampp/include/php/ext/gd/libgd/gdfontg.h
+#opt/lampp/include/php/ext/gd/libgd/gdfontl.h
+#opt/lampp/include/php/ext/gd/libgd/gdfonts.h
+#opt/lampp/include/php/ext/gd/libgd/gdfontt.h
+#opt/lampp/include/php/ext/gd/gdcache.h
+#opt/lampp/include/php/ext/gd/php_gd.h
+#opt/lampp/include/php/ext/gd/gdttf.h
+#opt/lampp/include/php/ext/dom/
+#opt/lampp/include/php/ext/dom/xml_common.h
+#opt/lampp/include/php/ext/pdo/
+#opt/lampp/include/php/ext/pdo/php_pdo.h
+#opt/lampp/include/php/ext/pdo/php_pdo_driver.h
+#opt/lampp/include/php/ext/xml/
+#opt/lampp/include/php/ext/xml/expat_compat.h
+#opt/lampp/include/php/ext/xml/php_xml.h
+#opt/lampp/include/php/ext/date/
+#opt/lampp/include/php/ext/date/lib/
+#opt/lampp/include/php/ext/date/lib/timelib.h
+#opt/lampp/include/php/ext/date/lib/timelib_structs.h
+#opt/lampp/include/php/ext/date/lib/timelib_config.h
+#opt/lampp/include/php/ext/date/php_date.h
+#opt/lampp/include/php/ext/pcre/
+#opt/lampp/include/php/ext/pcre/php_pcre.h
+#opt/lampp/include/php/ext/pcre/pcrelib/
+#opt/lampp/include/php/ext/pcre/pcrelib/internal.h
+#opt/lampp/include/php/ext/pcre/pcrelib/pcreposix.h
+#opt/lampp/include/php/ext/pcre/pcrelib/pcrecpp.h
+#opt/lampp/include/php/ext/pcre/pcrelib/ucp.h
+#opt/lampp/include/php/ext/pcre/pcrelib/pcre_stringpiece.h
+#opt/lampp/include/php/ext/pcre/pcrelib/pcre_internal.h
+#opt/lampp/include/php/ext/pcre/pcrelib/pcre.h
+#opt/lampp/include/php/ext/pcre/pcrelib/pcre_scanner.h
+#opt/lampp/include/php/ext/pcre/pcrelib/ucpinternal.h
+#opt/lampp/include/php/ext/iconv/
+#opt/lampp/include/php/ext/iconv/php_have_iconv.h
+#opt/lampp/include/php/ext/iconv/php_have_bsd_iconv.h
+#opt/lampp/include/php/ext/iconv/php_have_glibc_iconv.h
+#opt/lampp/include/php/ext/iconv/php_iconv.h
+#opt/lampp/include/php/ext/iconv/php_php_iconv_impl.h
+#opt/lampp/include/php/ext/iconv/php_have_libiconv.h
+#opt/lampp/include/php/ext/iconv/php_iconv_supports_errno.h
+#opt/lampp/include/php/ext/iconv/php_php_iconv_h_path.h
+#opt/lampp/include/php/ext/session/
+#opt/lampp/include/php/ext/session/mod_user.h
+#opt/lampp/include/php/ext/session/php_session.h
+#opt/lampp/include/php/ext/session/mod_files.h
+#opt/lampp/include/php/ext/libxml/
+#opt/lampp/include/php/ext/libxml/php_libxml.h
+#opt/lampp/include/php/ext/mbstring/
+#opt/lampp/include/php/ext/mbstring/libmbfl/
+#opt/lampp/include/php/ext/mbstring/libmbfl/config.h
+#opt/lampp/include/php/ext/sqlite/
+#opt/lampp/include/php/ext/sqlite/libsqlite/
+#opt/lampp/include/php/ext/sqlite/libsqlite/src/
+#opt/lampp/include/php/ext/sqlite/libsqlite/src/sqlite.h
+#opt/lampp/include/php/ext/standard/
+#opt/lampp/include/php/ext/standard/php_ftok.h
+#opt/lampp/include/php/ext/standard/dl.h
+#opt/lampp/include/php/ext/standard/php_http.h
+#opt/lampp/include/php/ext/standard/php_iptc.h
+#opt/lampp/include/php/ext/standard/crc32.h
+#opt/lampp/include/php/ext/standard/php_link.h
+#opt/lampp/include/php/ext/standard/php_mail.h
+#opt/lampp/include/php/ext/standard/php_math.h
+#opt/lampp/include/php/ext/standard/url_scanner_ex.h
+#opt/lampp/include/php/ext/standard/uniqid.h
+#opt/lampp/include/php/ext/standard/quot_print.h
+#opt/lampp/include/php/ext/standard/css.h
+#opt/lampp/include/php/ext/standard/dns.h
+#opt/lampp/include/php/ext/standard/php_rand.h
+#opt/lampp/include/php/ext/standard/md5.h
+#opt/lampp/include/php/ext/standard/reg.h
+#opt/lampp/include/php/ext/standard/url.h
+#opt/lampp/include/php/ext/standard/basic_functions.h
+#opt/lampp/include/php/ext/standard/flock_compat.h
+#opt/lampp/include/php/ext/standard/php_type.h
+#opt/lampp/include/php/ext/standard/scanf.h
+#opt/lampp/include/php/ext/standard/php_versioning.h
+#opt/lampp/include/php/ext/standard/php_ext_syslog.h
+#opt/lampp/include/php/ext/standard/php_sunfuncs.h
+#opt/lampp/include/php/ext/standard/php_browscap.h
+#opt/lampp/include/php/ext/standard/php_array.h
+#opt/lampp/include/php/ext/standard/php_uuencode.h
+#opt/lampp/include/php/ext/standard/proc_open.h
+#opt/lampp/include/php/ext/standard/php_image.h
+#opt/lampp/include/php/ext/standard/php_metaphone.h
+#opt/lampp/include/php/ext/standard/datetime.h
+#opt/lampp/include/php/ext/standard/cyr_convert.h
+#opt/lampp/include/php/ext/standard/credits_ext.h
+#opt/lampp/include/php/ext/standard/pageinfo.h
+#opt/lampp/include/php/ext/standard/php_smart_str.h
+#opt/lampp/include/php/ext/standard/file.h
+#opt/lampp/include/php/ext/standard/php_string.h
+#opt/lampp/include/php/ext/standard/exec.h
+#opt/lampp/include/php/ext/standard/php_assert.h
+#opt/lampp/include/php/ext/standard/head.h
+#opt/lampp/include/php/ext/standard/html.h
+#opt/lampp/include/php/ext/standard/fsock.h
+#opt/lampp/include/php/ext/standard/info.h
+#opt/lampp/include/php/ext/standard/microtime.h
+#opt/lampp/include/php/ext/standard/php_crypt.h
+#opt/lampp/include/php/ext/standard/pack.h
+#opt/lampp/include/php/ext/standard/sha1.h
+#opt/lampp/include/php/ext/standard/php_filestat.h
+#opt/lampp/include/php/ext/standard/php_dir.h
+#opt/lampp/include/php/ext/standard/php_lcg.h
+#opt/lampp/include/php/ext/standard/php_var.h
+#opt/lampp/include/php/ext/standard/url_scanner.h
+#opt/lampp/include/php/ext/standard/streamsfuncs.h
+#opt/lampp/include/php/ext/standard/credits.h
+#opt/lampp/include/php/ext/standard/php_smart_str_public.h
+#opt/lampp/include/php/ext/standard/php_incomplete_class.h
+#opt/lampp/include/php/ext/standard/php_standard.h
+#opt/lampp/include/php/ext/standard/base64.h
+#opt/lampp/include/php/ext/standard/credits_sapi.h
+#opt/lampp/include/php/ext/standard/php_fopen_wrappers.h
+#opt/lampp/include/php/TSRM/
+#opt/lampp/include/php/TSRM/tsrm_nw.h
+#opt/lampp/include/php/TSRM/TSRM.h
+#opt/lampp/include/php/TSRM/tsrm_win32.h
+#opt/lampp/include/php/TSRM/tsrm_config.w32.h
+#opt/lampp/include/php/TSRM/tsrm_virtual_cwd.h
+#opt/lampp/include/php/TSRM/tsrm_strtok_r.h
+#opt/lampp/include/php/TSRM/acconfig.h
+#opt/lampp/include/php/TSRM/tsrm_config.h
+#opt/lampp/include/php/TSRM/readdir.h
+#opt/lampp/include/php/TSRM/tsrm_config_common.h
+#opt/lampp/include/php/Zend/
+#opt/lampp/include/php/Zend/zend_operators.h
+#opt/lampp/include/php/Zend/zend_constants.h
+#opt/lampp/include/php/Zend/zend_errors.h
+#opt/lampp/include/php/Zend/zend_API.h
+#opt/lampp/include/php/Zend/zend_objects_API.h
+#opt/lampp/include/php/Zend/zend_static_allocator.h
+#opt/lampp/include/php/Zend/zend_ini.h
+#opt/lampp/include/php/Zend/zend_ptr_stack.h
+#opt/lampp/include/php/Zend/zend_execute.h
+#opt/lampp/include/php/Zend/zend_qsort.h
+#opt/lampp/include/php/Zend/zend_ini_scanner.h
+#opt/lampp/include/php/Zend/FlexLexer.h
+#opt/lampp/include/php/Zend/zend_vm_def.h
+#opt/lampp/include/php/Zend/zend_language_parser.h
+#opt/lampp/include/php/Zend/zend_hash.h
+#opt/lampp/include/php/Zend/zend_modules.h
+#opt/lampp/include/php/Zend/zend_config.h
+#opt/lampp/include/php/Zend/zend_objects.h
+#opt/lampp/include/php/Zend/zend_object_handlers.h
+#opt/lampp/include/php/Zend/zend_mm.h
+#opt/lampp/include/php/Zend/zend_vm.h
+#opt/lampp/include/php/Zend/zend_llist.h
+#opt/lampp/include/php/Zend/zend_list.h
+#opt/lampp/include/php/Zend/zend_interfaces.h
+#opt/lampp/include/php/Zend/zend_ini_parser.h
+#opt/lampp/include/php/Zend/zend_vm_opcodes.h
+#opt/lampp/include/php/Zend/zend_globals.h
+#opt/lampp/include/php/Zend/zend_stack.h
+#opt/lampp/include/php/Zend/zend_config.w32.h
+#opt/lampp/include/php/Zend/zend_highlight.h
+#opt/lampp/include/php/Zend/zend_iterators.h
+#opt/lampp/include/php/Zend/zend_config.nw.h
+#opt/lampp/include/php/Zend/zend_indent.h
+#opt/lampp/include/php/Zend/zend_globals_macros.h
+#opt/lampp/include/php/Zend/zend_dynamic_array.h
+#opt/lampp/include/php/Zend/zend_vm_execute.h
+#opt/lampp/include/php/Zend/zend_types.h
+#opt/lampp/include/php/Zend/zend_extensions.h
+#opt/lampp/include/php/Zend/zend.h
+#opt/lampp/include/php/Zend/zend_alloc.h
+#opt/lampp/include/php/Zend/zend_stream.h
+#opt/lampp/include/php/Zend/zend_builtin_functions.h
+#opt/lampp/include/php/Zend/zend_strtod.h
+#opt/lampp/include/php/Zend/zend_language_scanner.h
+#opt/lampp/include/php/Zend/zend_exceptions.h
+#opt/lampp/include/php/Zend/zend_reflection_api.h
+#opt/lampp/include/php/Zend/zend_multibyte.h
+#opt/lampp/include/php/Zend/zend_fast_cache.h
+#opt/lampp/include/php/Zend/zend_compile.h
+#opt/lampp/include/php/Zend/acconfig.h
+#opt/lampp/include/php/Zend/zend_multiply.h
+#opt/lampp/include/php/Zend/zend_istdiostream.h
+#opt/lampp/include/php/Zend/zend_variables.h
+#opt/lampp/include/php/Zend/zend_ts_hash.h
+#opt/lampp/include/php/main/
+#opt/lampp/include/php/main/php_compat.h
+#opt/lampp/include/php/main/php_config.h
+#opt/lampp/include/php/main/php_open_temporary_file.h
+#opt/lampp/include/php/main/php_globals.h
+#opt/lampp/include/php/main/php_main.h
+#opt/lampp/include/php/main/rfc1867.h
+#opt/lampp/include/php/main/php3_compat.h
+#opt/lampp/include/php/main/php.h
+#opt/lampp/include/php/main/php_output.h
+#opt/lampp/include/php/main/php_version.h
+#opt/lampp/include/php/main/SAPI.h
+#opt/lampp/include/php/main/spprintf.h
+#opt/lampp/include/php/main/php_syslog.h
+#opt/lampp/include/php/main/fopen_wrappers.h
+#opt/lampp/include/php/main/php_variables.h
+#opt/lampp/include/php/main/safe_mode.h
+#opt/lampp/include/php/main/logos.h
+#opt/lampp/include/php/main/php_streams.h
+#opt/lampp/include/php/main/config.w32.h
+#opt/lampp/include/php/main/win95nt.h
+#opt/lampp/include/php/main/streams/
+#opt/lampp/include/php/main/streams/php_streams_int.h
+#opt/lampp/include/php/main/streams/php_stream_userspace.h
+#opt/lampp/include/php/main/streams/php_stream_context.h
+#opt/lampp/include/php/main/streams/php_stream_filter_api.h
+#opt/lampp/include/php/main/streams/php_stream_mmap.h
+#opt/lampp/include/php/main/streams/php_stream_transport.h
+#opt/lampp/include/php/main/streams/php_stream_plain_wrapper.h
+#opt/lampp/include/php/main/php_reentrancy.h
+#opt/lampp/include/php/main/php_content_types.h
+#opt/lampp/include/php/main/php_regex.h
+#opt/lampp/include/php/main/php_ini.h
+#opt/lampp/include/php/main/php_scandir.h
+#opt/lampp/include/php/main/php_logos.h
+#opt/lampp/include/php/main/php_network.h
+#opt/lampp/include/php/main/php_ticks.h
+#opt/lampp/include/php/main/build-defs.h
+#opt/lampp/include/php/main/php_memory_streams.h
+#opt/lampp/include/php/main/snprintf.h
+#opt/lampp/include/php/regex/
+#opt/lampp/include/php/regex/cname.h
+#opt/lampp/include/php/regex/regex_extra.h
+#opt/lampp/include/php/regex/regex.h
+#opt/lampp/include/php/regex/cclass.h
+#opt/lampp/include/php/regex/utils.h
+#opt/lampp/include/php/regex/regex2.h
+#opt/lampp/include/php/include/
+#opt/lampp/include/mod_perl.h
+#opt/lampp/include/curl/
+#opt/lampp/include/curl/mprintf.h
+#opt/lampp/include/curl/stdcheaders.h
+#opt/lampp/include/curl/curl.h
+#opt/lampp/include/curl/easy.h
+#opt/lampp/include/curl/multi.h
+#opt/lampp/include/curl/curlver.h
+#opt/lampp/include/curl/types.h
+#opt/lampp/include/gd.h
+#opt/lampp/include/apr_support.h
+#opt/lampp/include/os.h
+#opt/lampp/include/dblib.h
+#opt/lampp/include/zzip/
+#opt/lampp/include/zzip/lib.h
+#opt/lampp/include/zzip/format.h
+#opt/lampp/include/zzip/_msvc.h
+#opt/lampp/include/zzip/conf.h
+#opt/lampp/include/zzip/file.h
+#opt/lampp/include/zzip/wrap.h
+#opt/lampp/include/zzip/stdint.h
+#opt/lampp/include/zzip/zzip.h
+#opt/lampp/include/zzip/_config.h
+#opt/lampp/include/zzip/plugin.h
+#opt/lampp/include/apu_want.h
+#opt/lampp/include/apr_global_mutex.h
+#opt/lampp/include/pcreposix.h
+#opt/lampp/include/apr_hash.h
+#opt/lampp/include/modperl_xs_typedefs.h
+#opt/lampp/include/bzlib.h
+#opt/lampp/include/ap_compat.h
+#opt/lampp/include/ap_config.h
+#opt/lampp/include/libintl.h
+#opt/lampp/include/pngconf.h
+#opt/lampp/include/apr_allocator.h
+#opt/lampp/include/syberror.h
+#opt/lampp/include/apr_ldap.h
+#opt/lampp/include/ap_config_layout.h
+#opt/lampp/include/ctlib.h
+#opt/lampp/include/modperl_callback.h
+#opt/lampp/include/apr_mmap.h
+#opt/lampp/include/srchpref.h
+#opt/lampp/include/modperl_io_apache.h
+#opt/lampp/include/ap_config_auto.h
+#opt/lampp/include/apr.h
+#opt/lampp/include/apu.h
+#opt/lampp/include/apr_strmatch.h
+#opt/lampp/include/modperl_common_log.h
+#opt/lampp/include/cxx_except.h
+#opt/lampp/include/mpm.h
+#opt/lampp/include/mysql/
+#opt/lampp/include/mysql/sql_state.h
+#opt/lampp/include/mysql/my_global.h
+#opt/lampp/include/mysql/my_config.h
+#opt/lampp/include/mysql/my_getopt.h
+#opt/lampp/include/mysql/errmsg.h
+#opt/lampp/include/mysql/sslopt-case.h
+#opt/lampp/include/mysql/mysql_embed.h
+#opt/lampp/include/mysql/typelib.h
+#opt/lampp/include/mysql/my_semaphore.h
+#opt/lampp/include/mysql/my_pthread.h
+#opt/lampp/include/mysql/sslopt-vars.h
+#opt/lampp/include/mysql/mysql_com.h
+#opt/lampp/include/mysql/readline.h
+#opt/lampp/include/mysql/mysql.h
+#opt/lampp/include/mysql/raid.h
+#opt/lampp/include/mysql/my_dir.h
+#opt/lampp/include/mysql/my_no_pthread.h
+#opt/lampp/include/mysql/my_net.h
+#opt/lampp/include/mysql/my_sys.h
+#opt/lampp/include/mysql/my_xml.h
+#opt/lampp/include/mysql/my_dbug.h
+#opt/lampp/include/mysql/sql_common.h
+#opt/lampp/include/mysql/sslopt-longopts.h
+#opt/lampp/include/mysql/keycache.h
+#opt/lampp/include/mysql/m_ctype.h
+#opt/lampp/include/mysql/mysqld_ername.h
+#opt/lampp/include/mysql/my_list.h
+#opt/lampp/include/mysql/mysql_version.h
+#opt/lampp/include/mysql/mysqld_error.h
+#opt/lampp/include/mysql/mysql_time.h
+#opt/lampp/include/mysql/my_alloc.h
+#opt/lampp/include/mysql/m_string.h
+#opt/lampp/include/png.h
+#opt/lampp/include/tds.h
+#opt/lampp/include/apr_poll.h
+#opt/lampp/include/apr_ldap_init.h
+#opt/lampp/include/apr_reslist.h
+#opt/lampp/include/apr_errno.h
+#opt/lampp/include/ldap_schema.h
+#opt/lampp/include/apr_ring.h
+#opt/lampp/include/apr_random.h
+#opt/lampp/include/ap_provider.h
+#opt/lampp/include/apr_sdbm.h
+#opt/lampp/include/apr_getopt.h
+#opt/lampp/include/apr_sha1.h
+#opt/lampp/include/cspublic.h
+#opt/lampp/include/mpm_common.h
+#opt/lampp/include/apr_time.h
+#opt/lampp/include/modperl_svptr_table.h
+#opt/lampp/include/tdssrv.h
+#opt/lampp/include/tdsver.h
+#opt/lampp/include/apr_tables.h
+#opt/lampp/include/sybfront.h
+#opt/lampp/include/apr_user.h
+#opt/lampp/include/modperl_perl_unembed.h
+#opt/lampp/include/apr_uuid.h
+#opt/lampp/include/apr_want.h
+#opt/lampp/include/ap_regex.h
+#opt/lampp/include/modperl_apache_compat.h
+#opt/lampp/include/zconf.h
+#opt/lampp/include/ap_mmn.h
+#opt/lampp/include/ap_mpm.h
+#opt/lampp/include/mod_proxy.h
+#opt/lampp/include/modperl_module.h
+#opt/lampp/include/gdcache.h
+#opt/lampp/include/tdsodbc.h
+#opt/lampp/include/mod_include.h
+#opt/lampp/include/libxml2/
+#opt/lampp/include/libxml2/libxml/
+#opt/lampp/include/libxml2/libxml/encoding.h
+#opt/lampp/include/libxml2/libxml/xmlregexp.h
+#opt/lampp/include/libxml2/libxml/xmlmemory.h
+#opt/lampp/include/libxml2/libxml/xlink.h
+#opt/lampp/include/libxml2/libxml/xmlIO.h
+#opt/lampp/include/libxml2/libxml/xpath.h
+#opt/lampp/include/libxml2/libxml/SAX.h
+#opt/lampp/include/libxml2/libxml/chvalid.h
+#opt/lampp/include/libxml2/libxml/uri.h
+#opt/lampp/include/libxml2/libxml/SAX2.h
+#opt/lampp/include/libxml2/libxml/nanoftp.h
+#opt/lampp/include/libxml2/libxml/schemasInternals.h
+#opt/lampp/include/libxml2/libxml/threads.h
+#opt/lampp/include/libxml2/libxml/parser.h
+#opt/lampp/include/libxml2/libxml/c14n.h
+#opt/lampp/include/libxml2/libxml/xmlerror.h
+#opt/lampp/include/libxml2/libxml/pattern.h
+#opt/lampp/include/libxml2/libxml/xmlwin32version.h
+#opt/lampp/include/libxml2/libxml/DOCBparser.h
+#opt/lampp/include/libxml2/libxml/dict.h
+#opt/lampp/include/libxml2/libxml/xmlautomata.h
+#opt/lampp/include/libxml2/libxml/xmlschemastypes.h
+#opt/lampp/include/libxml2/libxml/xpointer.h
+#opt/lampp/include/libxml2/libxml/hash.h
+#opt/lampp/include/libxml2/libxml/nanohttp.h
+#opt/lampp/include/libxml2/libxml/relaxng.h
+#opt/lampp/include/libxml2/libxml/xpathInternals.h
+#opt/lampp/include/libxml2/libxml/xmlversion.h
+#opt/lampp/include/libxml2/libxml/list.h
+#opt/lampp/include/libxml2/libxml/HTMLtree.h
+#opt/lampp/include/libxml2/libxml/parserInternals.h
+#opt/lampp/include/libxml2/libxml/entities.h
+#opt/lampp/include/libxml2/libxml/HTMLparser.h
+#opt/lampp/include/libxml2/libxml/valid.h
+#opt/lampp/include/libxml2/libxml/catalog.h
+#opt/lampp/include/libxml2/libxml/tree.h
+#opt/lampp/include/libxml2/libxml/globals.h
+#opt/lampp/include/libxml2/libxml/xmlunicode.h
+#opt/lampp/include/libxml2/libxml/xmlexports.h
+#opt/lampp/include/libxml2/libxml/xmlsave.h
+#opt/lampp/include/libxml2/libxml/xinclude.h
+#opt/lampp/include/libxml2/libxml/xmlreader.h
+#opt/lampp/include/libxml2/libxml/debugXML.h
+#opt/lampp/include/libxml2/libxml/xmlwriter.h
+#opt/lampp/include/libxml2/libxml/xmlstring.h
+#opt/lampp/include/libxml2/libxml/xmlschemas.h
+#opt/lampp/include/libxslt/
+#opt/lampp/include/libxslt/functions.h
+#opt/lampp/include/libxslt/xsltutils.h
+#opt/lampp/include/libxslt/attributes.h
+#opt/lampp/include/libxslt/pattern.h
+#opt/lampp/include/libxslt/templates.h
+#opt/lampp/include/libxslt/preproc.h
+#opt/lampp/include/libxslt/extra.h
+#opt/lampp/include/libxslt/namespaces.h
+#opt/lampp/include/libxslt/security.h
+#opt/lampp/include/libxslt/keys.h
+#opt/lampp/include/libxslt/extensions.h
+#opt/lampp/include/libxslt/xsltInternals.h
+#opt/lampp/include/libxslt/transform.h
+#opt/lampp/include/libxslt/xslt.h
+#opt/lampp/include/libxslt/documents.h
+#opt/lampp/include/libxslt/numbersInternals.h
+#opt/lampp/include/libxslt/xsltexports.h
+#opt/lampp/include/libxslt/imports.h
+#opt/lampp/include/libxslt/variables.h
+#opt/lampp/include/libxslt/xsltconfig.h
+#opt/lampp/include/tds_configs.h
+#opt/lampp/include/apr_dbd.h
+#opt/lampp/include/apr_dbm.h
+#opt/lampp/include/jerror.h
+#opt/lampp/include/util_charset.h
+#opt/lampp/include/apr_dso.h
+#opt/lampp/include/apr_env.h
+#opt/lampp/include/jconfig.h
+#opt/lampp/include/apr_lib.h
+#opt/lampp/include/modperl_error.h
+#opt/lampp/include/apr_md4.h
+#opt/lampp/include/apr_md5.h
+#opt/lampp/include/apr_buckets.h
+#opt/lampp/include/apr_rmm.h
+#opt/lampp/include/apr_shm.h
+#opt/lampp/include/apr_uri.h
+#opt/lampp/include/bkpublic.h
+#opt/lampp/include/apr_xml.h
+#opt/lampp/include/modperl_common_types.h
+#opt/lampp/include/lber_types.h
+#opt/lampp/include/apr_ldap_url.h
+#opt/lampp/include/modperl_filter.h
+#opt/lampp/include/jmorecfg.h
+#opt/lampp/include/modperl_flags.h
+#opt/lampp/include/mod_cgi.h
+#opt/lampp/include/mod_dbd.h
+#opt/lampp/include/mod_dav.h
+#opt/lampp/include/modperl_global.h
+#opt/lampp/include/tdsutil.h
+#opt/lampp/include/modperl_perl_includes.h
+#opt/lampp/include/mod_ssl.h
+#opt/lampp/include/http_protocol.h
+#opt/lampp/include/apr_version.h
+#opt/lampp/include/zzip-io.h
+#opt/lampp/include/mhash.h
+#opt/lampp/include/modperl_perl_global.h
+#opt/lampp/include/modperl_config.h
+#opt/lampp/include/sqldb.h
+#opt/lampp/include/sqlite.h
+#opt/lampp/include/ldap_features.h
+#opt/lampp/include/apr_thread_rwlock.h
+#opt/lampp/include/modperl_apr_perlio.h
+#opt/lampp/include/apreq2/
+#opt/lampp/include/apreq2/apreq_module.h
+#opt/lampp/include/apreq2/apreq_params.h
+#opt/lampp/include/apreq2/apreq_parser.h
+#opt/lampp/include/apreq2/apreq_cookie.h
+#opt/lampp/include/apreq2/apreq_env.h
+#opt/lampp/include/apreq2/apreq_error.h
+#opt/lampp/include/apreq2/apreq.h
+#opt/lampp/include/apreq2/apreq_version.h
+#opt/lampp/include/apreq2/apreq_module_apache2.h
+#opt/lampp/include/apreq2/apreq_util.h
+#opt/lampp/include/apreq2/apreq_param.h
+#opt/lampp/include/modperl_common_includes.h
+#opt/lampp/include/apr_network_io.h
+#opt/lampp/include/modperl_trace.h
+#opt/lampp/include/util_ldap.h
+#opt/lampp/include/expat.h
+#opt/lampp/include/apr_portable.h
+#opt/lampp/include/gd_io.h
+#opt/lampp/include/zziplib.h
+#opt/lampp/include/modperl_directives.h
+#opt/lampp/include/sxpath.h
+#opt/lampp/include/common.h
+#opt/lampp/include/util_filter.h
+#opt/lampp/include/http_config.h
+#opt/lampp/include/zutil.h
+#opt/lampp/include/freebcp.h
+#opt/lampp/include/modperl_perl_pp.h
+#opt/lampp/include/apr_thread_cond.h
+#opt/lampp/include/ncurses/
+#opt/lampp/include/ncurses/cursesapp.h
+#opt/lampp/include/ncurses/unctrl.h
+#opt/lampp/include/ncurses/eti.h
+#opt/lampp/include/ncurses/curses.h
+#opt/lampp/include/ncurses/etip.h
+#opt/lampp/include/ncurses/form.h
+#opt/lampp/include/ncurses/ncurses.h
+#opt/lampp/include/ncurses/menu.h
+#opt/lampp/include/ncurses/cursesf.h
+#opt/lampp/include/ncurses/cursesm.h
+#opt/lampp/include/ncurses/cursesp.h
+#opt/lampp/include/ncurses/cursesw.h
+#opt/lampp/include/ncurses/term.h
+#opt/lampp/include/ncurses/cursslk.h
+#opt/lampp/include/ncurses/termcap.h
+#opt/lampp/include/ncurses/panel.h
+#opt/lampp/include/ncurses/ncurses_dll.h
+#opt/lampp/include/sybdb.h
+#opt/lampp/include/gdbm.h
+#opt/lampp/include/apr_file_io.h
+#opt/lampp/include/freetype2/
+#opt/lampp/include/freetype2/freetype/
+#opt/lampp/include/freetype2/freetype/ftsynth.h
+#opt/lampp/include/freetype2/freetype/ftsysio.h
+#opt/lampp/include/freetype2/freetype/ftwinfnt.h
+#opt/lampp/include/freetype2/freetype/t1tables.h
+#opt/lampp/include/freetype2/freetype/ftglyph.h
+#opt/lampp/include/freetype2/freetype/ftsysmem.h
+#opt/lampp/include/freetype2/freetype/ftsystem.h
+#opt/lampp/include/freetype2/freetype/ftchapters.h
+#opt/lampp/include/freetype2/freetype/ftxf86.h
+#opt/lampp/include/freetype2/freetype/cache/
+#opt/lampp/include/freetype2/freetype/cache/ftcimage.h
+#opt/lampp/include/freetype2/freetype/cache/ftcsbits.h
+#opt/lampp/include/freetype2/freetype/cache/ftccmap.h
+#opt/lampp/include/freetype2/freetype/cache/ftcmanag.h
+#opt/lampp/include/freetype2/freetype/cache/ftlru.h
+#opt/lampp/include/freetype2/freetype/cache/ftcglyph.h
+#opt/lampp/include/freetype2/freetype/cache/ftccache.h
+#opt/lampp/include/freetype2/freetype/fttypes.h
+#opt/lampp/include/freetype2/freetype/ttunpat.h
+#opt/lampp/include/freetype2/freetype/ftincrem.h
+#opt/lampp/include/freetype2/freetype/ftsnames.h
+#opt/lampp/include/freetype2/freetype/ftcache.h
+#opt/lampp/include/freetype2/freetype/ftstroke.h
+#opt/lampp/include/freetype2/freetype/ftimage.h
+#opt/lampp/include/freetype2/freetype/ftoutln.h
+#opt/lampp/include/freetype2/freetype/config/
+#opt/lampp/include/freetype2/freetype/config/ftstdlib.h
+#opt/lampp/include/freetype2/freetype/config/ftheader.h
+#opt/lampp/include/freetype2/freetype/config/ftoption.h
+#opt/lampp/include/freetype2/freetype/config/ftmodule.h
+#opt/lampp/include/freetype2/freetype/config/ftconfig.h
+#opt/lampp/include/freetype2/freetype/ftmm.h
+#opt/lampp/include/freetype2/freetype/ftrender.h
+#opt/lampp/include/freetype2/freetype/ftbdf.h
+#opt/lampp/include/freetype2/freetype/tttags.h
+#opt/lampp/include/freetype2/freetype/tttables.h
+#opt/lampp/include/freetype2/freetype/fttrigon.h
+#opt/lampp/include/freetype2/freetype/ftmac.h
+#opt/lampp/include/freetype2/freetype/ftpfr.h
+#opt/lampp/include/freetype2/freetype/fterrdef.h
+#opt/lampp/include/freetype2/freetype/fterrors.h
+#opt/lampp/include/freetype2/freetype/freetype.h
+#opt/lampp/include/freetype2/freetype/ftmodapi.h
+#opt/lampp/include/freetype2/freetype/ftmoderr.h
+#opt/lampp/include/freetype2/freetype/ftmodule.h
+#opt/lampp/include/freetype2/freetype/ftsizes.h
+#opt/lampp/include/freetype2/freetype/ftbbox.h
+#opt/lampp/include/freetype2/freetype/ftgzip.h
+#opt/lampp/include/freetype2/freetype/ftlist.h
+#opt/lampp/include/freetype2/freetype/internal/
+#opt/lampp/include/freetype2/freetype/internal/ftobjs.h
+#opt/lampp/include/freetype2/freetype/internal/internal.h
+#opt/lampp/include/freetype2/freetype/internal/fttrace.h
+#opt/lampp/include/freetype2/freetype/internal/ftserv.h
+#opt/lampp/include/freetype2/freetype/internal/psnames.h
+#opt/lampp/include/freetype2/freetype/internal/svgldict.h
+#opt/lampp/include/freetype2/freetype/internal/tttypes.h
+#opt/lampp/include/freetype2/freetype/internal/svsfnt.h
+#opt/lampp/include/freetype2/freetype/internal/svpostnm.h
+#opt/lampp/include/freetype2/freetype/internal/ftstream.h
+#opt/lampp/include/freetype2/freetype/internal/pshints.h
+#opt/lampp/include/freetype2/freetype/internal/pcftypes.h
+#opt/lampp/include/freetype2/freetype/internal/autohint.h
+#opt/lampp/include/freetype2/freetype/internal/ftmemory.h
+#opt/lampp/include/freetype2/freetype/internal/svbdf.h
+#opt/lampp/include/freetype2/freetype/internal/svpfr.h
+#opt/lampp/include/freetype2/freetype/internal/ftextend.h
+#opt/lampp/include/freetype2/freetype/internal/svwinfnt.h
+#opt/lampp/include/freetype2/freetype/internal/ftdebug.h
+#opt/lampp/include/freetype2/freetype/internal/fnttypes.h
+#opt/lampp/include/freetype2/freetype/internal/sfnt.h
+#opt/lampp/include/freetype2/freetype/internal/svpscmap.h
+#opt/lampp/include/freetype2/freetype/internal/svmm.h
+#opt/lampp/include/freetype2/freetype/internal/svpsinfo.h
+#opt/lampp/include/freetype2/freetype/internal/t1types.h
+#opt/lampp/include/freetype2/freetype/internal/cfftypes.h
+#opt/lampp/include/freetype2/freetype/internal/ftcalc.h
+#opt/lampp/include/freetype2/freetype/internal/psglobal.h
+#opt/lampp/include/freetype2/freetype/internal/ftgloadr.h
+#opt/lampp/include/freetype2/freetype/internal/ftdriver.h
+#opt/lampp/include/freetype2/freetype/internal/svxf86nm.h
+#opt/lampp/include/freetype2/freetype/internal/psaux.h
+#opt/lampp/include/freetype2/freetype/ttnameid.h
+#opt/lampp/include/http_request.h
+#opt/lampp/include/util_script.h
+#opt/lampp/include/mpm_default.h
+#opt/lampp/include/modperl_bucket.h
+#opt/lampp/include/modperl_apr_includes.h
+#opt/lampp/include/apr_proc_mutex.h
+#opt/lampp/include/modperl_types.h
+#opt/lampp/include/apr_hooks.h
+#opt/lampp/include/lber.h
+#opt/lampp/include/apr_file_info.h
+#opt/lampp/include/util_time.h
+#opt/lampp/include/ldap.h
+#opt/lampp/include/ft2build.h
+#opt/lampp/include/ap_regkey.h
+#opt/lampp/include/libpng
+#opt/lampp/include/http_connection.h
+#opt/lampp/include/mingpp.h
+#opt/lampp/include/ming.h
+#opt/lampp/include/apr_base64.h
+#opt/lampp/include/apr_optional.h
+#opt/lampp/include/proto-lber.h
+#opt/lampp/include/mod_status.h
+#opt/lampp/include/apu_version.h
+#opt/lampp/include/jpeglib.h
+#opt/lampp/include/apr_ldap_option.h
+#opt/lampp/include/apr_strings.h
+#opt/lampp/include/apr_fnmatch.h
+#opt/lampp/include/pcre.h
+#opt/lampp/include/http_log.h
+#opt/lampp/include/ap_listen.h
+#opt/lampp/include/jisx0208.h
+#opt/lampp/include/apr_inherit.h
+#opt/lampp/include/unixd.h
+#opt/lampp/include/sqlfront.h
+#opt/lampp/include/sdom.h
+#opt/lampp/include/apr_anylock.h
+#opt/lampp/include/apr_thread_proc.h
+#opt/lampp/include/modperl_common_util.h
+#opt/lampp/include/modperl_hooks.h
+#opt/lampp/include/scoreboard.h
+#opt/lampp/include/util_md5.h
+#opt/lampp/include/util_xml.h
+#opt/lampp/include/wbmp.h
+#opt/lampp/include/apr_atomic.h
+#opt/lampp/include/c-client/
+#opt/lampp/include/c-client/fs.h
+#opt/lampp/include/c-client/nl.h
+#opt/lampp/include/c-client/rfc822.h
+#opt/lampp/include/c-client/env.h
+#opt/lampp/include/c-client/ftl.h
+#opt/lampp/include/c-client/tcp.h
+#opt/lampp/include/c-client/env_unix.h
+#opt/lampp/include/c-client/mail.h
+#opt/lampp/include/c-client/misc.h
+#opt/lampp/include/c-client/nntp.h
+#opt/lampp/include/c-client/imap4r1.h
+#opt/lampp/include/c-client/smtp.h
+#opt/lampp/include/c-client/linkage.h
+#opt/lampp/include/c-client/osdep.h
+#opt/lampp/include/c-client/c-client.h
+#opt/lampp/include/util_ebcdic.h
+#opt/lampp/include/http_vhost.h
+#opt/lampp/include/apr_pools.h
+#opt/lampp/include/http_core.h
+#opt/lampp/include/modperl_largefiles.h
+#opt/lampp/include/modperl_constants.h
+#opt/lampp/include/tds_sysdep_public.h
+#opt/lampp/include/ctpublic.h
+#opt/lampp/include/zlib.h
+#opt/lampp/include/modperl_options.h
+#opt/lampp/include/cxx_common.h
+#opt/lampp/include/modperl_handler.h
+#opt/lampp/include/zzip.h
+#opt/lampp/include/mcrypt.h
+#opt/lampp/include/gdfontmb.h
+#opt/lampp/include/modperl_gtop.h
+#opt/lampp/include/openssl/
+#opt/lampp/include/openssl/opensslv.h
+#opt/lampp/include/openssl/bn.h
+#opt/lampp/include/openssl/dh.h
+#opt/lampp/include/openssl/ec.h
+#opt/lampp/include/openssl/ui.h
+#opt/lampp/include/openssl/crypto.h
+#opt/lampp/include/openssl/txt_db.h
+#opt/lampp/include/openssl/e_os2.h
+#opt/lampp/include/openssl/aes.h
+#opt/lampp/include/openssl/bio.h
+#opt/lampp/include/openssl/des.h
+#opt/lampp/include/openssl/dsa.h
+#opt/lampp/include/openssl/dso.h
+#opt/lampp/include/openssl/err.h
+#opt/lampp/include/openssl/evp.h
+#opt/lampp/include/openssl/fips_rand.h
+#opt/lampp/include/openssl/md2.h
+#opt/lampp/include/openssl/md4.h
+#opt/lampp/include/openssl/md5.h
+#opt/lampp/include/openssl/pem.h
+#opt/lampp/include/openssl/rc2.h
+#opt/lampp/include/openssl/rc4.h
+#opt/lampp/include/openssl/rc5.h
+#opt/lampp/include/openssl/sha.h
+#opt/lampp/include/openssl/rsa.h
+#opt/lampp/include/openssl/ssl.h
+#opt/lampp/include/openssl/ecdsa.h
+#opt/lampp/include/openssl/pq_compat.h
+#opt/lampp/include/openssl/lhash.h
+#opt/lampp/include/openssl/dtls1.h
+#opt/lampp/include/openssl/conf_api.h
+#opt/lampp/include/openssl/tmdiff.h
+#opt/lampp/include/openssl/safestack.h
+#opt/lampp/include/openssl/ssl23.h
+#opt/lampp/include/openssl/stack.h
+#opt/lampp/include/openssl/engine.h
+#opt/lampp/include/openssl/asn1.h
+#opt/lampp/include/openssl/cast.h
+#opt/lampp/include/openssl/store.h
+#opt/lampp/include/openssl/asn1_mac.h
+#opt/lampp/include/openssl/comp.h
+#opt/lampp/include/openssl/conf.h
+#opt/lampp/include/openssl/e_os.h
+#opt/lampp/include/openssl/des_old.h
+#opt/lampp/include/openssl/ecdh.h
+#opt/lampp/include/openssl/x509_vfy.h
+#opt/lampp/include/openssl/fips.h
+#opt/lampp/include/openssl/blowfish.h
+#opt/lampp/include/openssl/hmac.h
+#opt/lampp/include/openssl/idea.h
+#opt/lampp/include/openssl/kssl.h
+#opt/lampp/include/openssl/mdc2.h
+#opt/lampp/include/openssl/ocsp.h
+#opt/lampp/include/openssl/obj_mac.h
+#opt/lampp/include/openssl/pem2.h
+#opt/lampp/include/openssl/pkcs12.h
+#opt/lampp/include/openssl/ossl_typ.h
+#opt/lampp/include/openssl/ebcdic.h
+#opt/lampp/include/openssl/rand.h
+#opt/lampp/include/openssl/buffer.h
+#opt/lampp/include/openssl/x509.h
+#opt/lampp/include/openssl/ssl2.h
+#opt/lampp/include/openssl/ssl3.h
+#opt/lampp/include/openssl/objects.h
+#opt/lampp/include/openssl/tls1.h
+#opt/lampp/include/openssl/ripemd.h
+#opt/lampp/include/openssl/pqueue.h
+#opt/lampp/include/openssl/krb5_asn.h
+#opt/lampp/include/openssl/x509v3.h
+#opt/lampp/include/openssl/asn1t.h
+#opt/lampp/include/openssl/ui_compat.h
+#opt/lampp/include/openssl/symhacks.h
+#opt/lampp/include/openssl/pkcs7.h
+#opt/lampp/include/openssl/opensslconf.h
+#opt/lampp/include/tdsconvert.h
+#opt/lampp/include/slapi-plugin.h
+#opt/lampp/include/modperl_tipool.h
+#opt/lampp/include/modperl_io.h
+#opt/lampp/include/libexslt/
+#opt/lampp/include/libexslt/exslt.h
+#opt/lampp/include/libexslt/exsltconfig.h
+#opt/lampp/include/libexslt/exsltexports.h
+#opt/lampp/include/mod_auth.h
+#opt/lampp/include/libpng12/
+#opt/lampp/include/libpng12/pngconf.h
+#opt/lampp/include/libpng12/png.h
+#opt/lampp/include/modperl_apache_includes.h
+#opt/lampp/include/apr_xlate.h
+#opt/lampp/include/httpd.h
+#opt/lampp/include/shandler.h
+#opt/lampp/include/http_main.h
+#opt/lampp/include/mod_core.h
+#opt/lampp/include/cstypes.h
+#opt/lampp/include/mod_log_config.h
+#opt/lampp/include/apr_signal.h
+#opt/lampp/include/modperl_xs_util.h
+#opt/lampp/include/modperl_xs_sv_convert.h
+#opt/lampp/include/ldap_cdefs.h
+#opt/lampp/include/modperl_perl.h
+#opt/lampp/include/gdfontg.h
+#opt/lampp/include/gdfontl.h
+#opt/lampp/include/gdfonts.h
+#opt/lampp/include/gdfontt.h
+#opt/lampp/include/ap_release.h
+#opt/lampp/include/apr_optional_hooks.h
+#opt/lampp/include/modperl_interp.h
+#opt/lampp/include/apr_thread_mutex.h
+#opt/lampp/include/sabcfg.h
+#opt/lampp/include/sabdbg.h
+#opt/lampp/include/modperl_time.h
+#opt/lampp/include/apr_queue.h
+#opt/lampp/include/sablot.h
+#opt/lampp/include/modperl_debug.h
+#opt/lampp/include/modperl_const.h
+#opt/lampp/include/modperl_apr_compat.h
+#opt/lampp/include/disptmpl.h
+#opt/lampp/include/modperl_util.h
+#opt/lampp/include/ldap_utf8.h
+#opt/lampp/include/modperl_cgi.h
+#opt/lampp/include/util_cfgtree.h
+#opt/lampp/include/modperl_cmd.h
+#opt/lampp/include/modperl_env.h
+#opt/lampp/include/apr_date.h
+#opt/lampp/include/modperl_log.h
+#opt/lampp/include/modperl_mgv.h
+#opt/lampp/include/modperl_pcw.h
+#opt/lampp/include/modperl_sys.h
 ##
 ## PARPORT & PRINTER modules
 ##
diff --git a/src/patches/ipac-ng-1.31-fetchcounter.patch b/src/patches/ipac-ng-1.31-fetchcounter.patch
new file mode 100644 (file)
index 0000000..eb6c073
--- /dev/null
@@ -0,0 +1,11 @@
+diff -ruw ipac-ng-1.31_iptables-1.3.1/agents/iptables/iptables.c ipac-ng-1.31/agents/iptables/iptables.c
+--- ipac-ng-1.31_iptables-1.3.1/agents/iptables/iptables.c     2005-05-02 12:00:48.000000000 +0200
++++ ipac-ng-1.31/agents/iptables/iptables.c    2005-05-11 22:15:59.558139120 +0200
+@@ -1144,6 +1144,7 @@
+               rule = new_rule();
+               chain = new_rule();
++              chain->pkts = 1;
+               strncpy(rule->name, cp+1, MAX_RULE_NAME_LENGTH);
+               strncpy(chain->name, nextline->line, cp-nextline->line);
diff --git a/src/patches/ipac-ng-1.31-iptables-1.3.1.patch b/src/patches/ipac-ng-1.31-iptables-1.3.1.patch
new file mode 100644 (file)
index 0000000..a0225dd
--- /dev/null
@@ -0,0 +1,4826 @@
+diff -Nur ipac-ng-1.31.orig/agents/iptables/iptables.c ipac-ng-1.31/agents/iptables/iptables.c
+--- ipac-ng-1.31.orig/agents/iptables/iptables.c       2004-06-27 22:08:54.000000000 +0000
++++ ipac-ng-1.31/agents/iptables/iptables.c    2006-01-11 21:49:40.000000000 +0000
+@@ -62,10 +62,6 @@
+ #define FALSE 0
+ #endif
+-#ifndef IPT_LIB_DIR
+-#define IPT_LIB_DIR "/lib/iptables"
+-#endif
+-
+ #define FMT_NUMERIC   0x0001
+ #define FMT_NOCOUNTS  0x0002
+ #define FMT_KILOMEGAGIGA 0x0004
+@@ -91,7 +87,6 @@
+ static struct option *opts = original_opts;
+ static unsigned int global_option_offset = 0;
+-extern char *authhost;
+ /* - T.Mohan 5/7/2001
+  * interface structure to pass to append rule
+@@ -106,6 +101,14 @@
+ typedef struct iface_struct s_iface;
++struct iptables_rule_match
++{
++      struct iptables_rule_match *next;
++
++      struct iptables_match *match;
++};
++
++
+ /* Include file for additions: new matches and targets. */
+ struct iptables_match
+ {
+@@ -113,6 +116,9 @@
+       ipt_chainlabel name;
++      /* Revision of match (0 by default). */
++      u_int8_t revision;
++
+       const char *version;
+       /* Size of match data. */
+@@ -152,7 +158,6 @@
+       unsigned int option_offset;
+       struct ipt_entry_match *m;
+       unsigned int mflags;
+-      unsigned int used;
+ };
+ struct iptables_target
+@@ -161,6 +166,9 @@
+       ipt_chainlabel name;
++      /* Revision of target (0 by default). */
++      u_int8_t revision;
++
+       const char *version;
+       /* Size of target data. */
+@@ -202,6 +210,7 @@
+       unsigned int used;
+ };
++
+ enum ipt_tryload {
+       DONT_LOAD,
+       TRY_LOAD,
+@@ -246,6 +255,9 @@
+  * compiler warning.
+  */
++char *lib_dir = "/lib/iptables";
++
++
+ void
+ exit_error(enum exittype status, char *msg, ...)
+ {
+@@ -367,7 +379,7 @@
+  * iptables-1.2.2  file:iptables.c 
+  */
+-void
++static void
+ parse_interface(const char *arg, char *vianame, unsigned char *mask)
+ {
+       int vialen = strlen(arg);
+@@ -382,23 +394,25 @@
+                          " (%i)", arg, IFNAMSIZ-1);
+       strcpy(vianame, arg);
+-      if (vialen == 0)
++      if ((vialen == 0) || (vialen == 1 && vianame[0] == '+'))
+               memset(mask, 0, IFNAMSIZ);
+       else if (vianame[vialen - 1] == '+') {
+               memset(mask, 0xFF, vialen - 1);
+               memset(mask + vialen - 1, 0, IFNAMSIZ - vialen + 1);
++              /* Don't remove `+' here! -HW */
+       } else {
+               /* Include nul-terminator in match */
+               memset(mask, 0xFF, vialen + 1);
+               memset(mask + vialen + 1, 0, IFNAMSIZ - vialen - 1);
+-      }
+       for (i = 0; vianame[i]; i++) {
+               if (!isalnum(vianame[i])
+                     && vianame[i] != '_'
+-                  && vianame[i] != '+'
+                     && vianame[i] != '.') {
+-                      exit_error(PARAMETER_PROBLEM, "Warning: weird character in interface"
+-                             " `%s' (No aliases, :, ! or *).\n", vianame);
++                              printf("Warning: wierd character in interface"
++                                     " `%s' (No aliases, :, ! or *).\n",
++                                     vianame);
++                              break;
++                      }
+               }
+       }
+ }
+@@ -429,20 +443,27 @@
+ }
+ int
+-check_inverse(const char option[], int *invert)
++check_inverse(const char option[], int *invert, int *optind, int argc)
+ {
+       if (option && strcmp(option, "!") == 0) {
+               if (*invert)
+                       exit_error(PARAMETER_PROBLEM,
+                                  "Multiple `!' flags not allowed");
+-
+               *invert = TRUE;
++              if (optind) {
++                      *optind = *optind+1;
++                      if (argc && *optind > argc)
++                              exit_error(PARAMETER_PROBLEM,
++                                         "no argument following `!'");
++              }
++
+               return TRUE;
+       }
+       return FALSE;
+ }
+ // ---------------------------------------------------------------------
++/* code copied from iptables 1.3.1                                     */
+ // ---------------------------------------------------------------------
+ static char *
+@@ -509,7 +530,7 @@
+       return addr_to_dotted(addr);
+ }
+-static char *
++char *
+ mask_to_dotted(const struct in_addr *mask)
+ {
+       int i;
+@@ -535,22 +556,19 @@
+       return buf;
+ }
++
+ static struct ipt_entry *
+ generate_entry(const struct ipt_entry *fw,
+-             struct iptables_match *matches,
++             struct iptables_rule_match *matches,
+              struct ipt_entry_target *target)
+ {
+       unsigned int size;
+-      struct iptables_match *m;
++      struct iptables_rule_match *matchp;
+       struct ipt_entry *e;
+       size = sizeof(struct ipt_entry);
+-      for (m = matches; m; m = m->next) {
+-              if (!m->used)
+-                      continue;
+-
+-              size += m->m->u.match_size;
+-      }
++      for (matchp = matches; matchp; matchp = matchp->next)
++              size += matchp->match->m->u.match_size;
+       e = xmalloc(size + target->u.target_size);
+       *e = *fw;
+@@ -558,12 +576,9 @@
+       e->next_offset = size + target->u.target_size;
+       size = 0;
+-      for (m = matches; m; m = m->next) {
+-              if (!m->used)
+-                      continue;
+-
+-              memcpy(e->elems + size, m->m, m->m->u.match_size);
+-              size += m->m->u.match_size;
++      for (matchp = matches; matchp; matchp = matchp->next) {
++              memcpy(e->elems + size, matchp->match->m, matchp->match->m->u.match_size);
++              size += matchp->match->m->u.match_size;
+       }
+       memcpy(e->elems + size, target, target->u.target_size);
+@@ -575,15 +590,17 @@
+       int procfile;
+       char *ret;
++#define PROCFILE_BUFSIZ       1024
+       procfile = open(PROC_SYS_MODPROBE, O_RDONLY);
+       if (procfile < 0)
+               return NULL;
+-      ret = malloc(1024);
++      ret = (char *) malloc(PROCFILE_BUFSIZ);
+       if (ret) {
+-              switch (read(procfile, ret, 1024)) {
++              memset(ret, 0, PROCFILE_BUFSIZ);
++              switch (read(procfile, ret, PROCFILE_BUFSIZ)) {
+               case -1: goto fail;
+-              case 1024: goto fail; /* Partial read.  Wierd */
++              case PROCFILE_BUFSIZ: goto fail; /* Partial read.  Wierd */
+               }
+               if (ret[strlen(ret)-1]=='\n') 
+                       ret[strlen(ret)-1]=0;
+@@ -618,22 +635,22 @@
+       }
+       if (!ptr && tryload != DONT_LOAD) {
+-              char path[sizeof(IPT_LIB_DIR) + sizeof("/libipt_.so")
++              char path[strlen(lib_dir) + sizeof("/libipt_.so")
+                        + strlen(name)];
+-              sprintf(path, IPT_LIB_DIR "/libipt_%s.so", name);
++              sprintf(path, "%s/libipt_%s.so", lib_dir, name);
+               if (dlopen(path, RTLD_NOW)) {
+                       /* Found library.  If it didn't register itself,
+                          maybe they specified match as a target. */
+                       ptr = find_target(name, DONT_LOAD);
+                       if (!ptr) {
+-                              fprintf(stderr, "Couldn't load target `%s'\n",
++                              exit_error(PARAMETER_PROBLEM,
++                                         "Couldn't load target `%s'\n",
+                                          name);
+-                              exit(1);
+                       }
+               } else if (tryload == LOAD_MUST_SUCCEED) {
+-                      fprintf(stderr, "Couldn't load target `%s':%s\n",
++                      exit_error(PARAMETER_PROBLEM,
++                                 "Couldn't load target `%s':%s\n",
+                                  name, dlerror());
+-                      exit(1);
+                       }
+       }
+@@ -647,8 +664,9 @@
+ {
+       char *buf = NULL;
+       char *argv[3];
++      int status;
+-//     If they don't explicitly set it, read out of kernel 
++      /* If they don't explicitly set it, read out of kernel */
+       if (!modprobe) {
+               buf = get_modprobe();
+               if (!buf)
+@@ -664,16 +682,18 @@
+               execv(argv[0], argv);
+ //             not usually reached 
+-              exit(0);
++              exit(1);
+       case -1:
+               return -1;
+       default: // parent 
+-              wait(NULL);
++              wait(&status);
+       }
+       free(buf);
++      if (WIFEXITED(status) && WEXITSTATUS(status) == 0)
+       return 0;
++      return -1;
+ }
+ void
+@@ -687,7 +707,7 @@
+       if (me->size != IPT_ALIGN(me->size)) {
+               fprintf(stderr, "%s: target `%s' has invalid size %u.\n",
+-                      "fddfgdsse", me->name, me->size);
++                      "fddfgdsse", me->name, (unsigned int)me->size);
+               exit(1);
+       }
+@@ -698,20 +718,17 @@
+       me->tflags = 0;
+ }
+-unsigned char * make_delete_mask(struct ipt_entry *fw)
++static unsigned char *
++make_delete_mask(struct ipt_entry *fw, struct iptables_rule_match *matches)
+ {
+       /* Establish mask for comparison */
+       unsigned int size;
+-      struct iptables_match *m;
++      struct iptables_rule_match *matchp;
+       unsigned char *mask, *mptr;
+       size = sizeof(struct ipt_entry);
+-      for (m = iptables_matches; m; m = m->next) {
+-              if (!m->used)
+-                      continue;
+-
+-              size += IPT_ALIGN(sizeof(struct ipt_entry_match)) + m->size;
+-      }
++      for (matchp = matches; matchp; matchp = matchp->next)
++              size += IPT_ALIGN(sizeof(struct ipt_entry_match)) + matchp->match->size;
+       mask = xcalloc(1, size
+                        + IPT_ALIGN(sizeof(struct ipt_entry_target))
+@@ -720,14 +737,11 @@
+       memset(mask, 0xFF, sizeof(struct ipt_entry));
+       mptr = mask + sizeof(struct ipt_entry);
+-      for (m = iptables_matches; m; m = m->next) {
+-              if (!m->used)
+-                      continue;
+-
++      for (matchp = matches; matchp; matchp = matchp->next) {
+               memset(mptr, 0xFF,
+                      IPT_ALIGN(sizeof(struct ipt_entry_match))
+-                     + m->userspacesize);
+-              mptr += IPT_ALIGN(sizeof(struct ipt_entry_match)) + m->size;
++                     + matchp->match->userspacesize);
++              mptr += IPT_ALIGN(sizeof(struct ipt_entry_match)) + matchp->match->size;
+       }
+       memset(mptr, 0xFF,
+@@ -738,7 +752,7 @@
+ }
+ struct iptables_match *
+-find_match(const char *name, enum ipt_tryload tryload)
++find_match(const char *name, enum ipt_tryload tryload, struct iptables_rule_match **matches)
+ {
+       struct iptables_match *ptr;
+     
+@@ -748,28 +762,37 @@
+       }
+       if (!ptr && tryload != DONT_LOAD) {
+-              char path[sizeof(IPT_LIB_DIR) + sizeof("/libipt_.so")
++              char path[strlen(lib_dir) + sizeof("/libipt_.so")
+                        + strlen(name)];
+-              sprintf(path, IPT_LIB_DIR "/libipt_%s.so", name);
++              sprintf(path, "%s/libipt_%s.so", lib_dir, name);
+               if (dlopen(path, RTLD_NOW)) {
+                       /* Found library.  If it didn't register itself,
+                          maybe they specified target as match. */
+-                      ptr = find_match(name, DONT_LOAD);
++                      ptr = find_match(name, DONT_LOAD, NULL);
+                       if (!ptr) {
+-                              fprintf(stderr, "Couldn't load match `%s'\n",
++                              exit_error(PARAMETER_PROBLEM,
++                                         "Couldn't load match `%s'\n",
+                                          name);
+-                              exit(1);
+                       }
+               } else if (tryload == LOAD_MUST_SUCCEED) {
+-                      fprintf(stderr, "Couldn't load match `%s':%s\n",
++                      exit_error(PARAMETER_PROBLEM,
++                                 "Couldn't load match `%s':%s\n",
+                                  name, dlerror());
+-                      exit(1);
+               }
+       }
+-      if (ptr)
+-              ptr->used = 1;
++      if (ptr && matches) {
++              struct iptables_rule_match **i;
++              struct iptables_rule_match *newentry;
++
++              newentry = xmalloc(sizeof(struct iptables_rule_match));
++
++              for (i = matches; *i; i = &(*i)->next);
++              newentry->match = ptr;
++              newentry->next = NULL;
++              *i = newentry;
++      }
+       return ptr;
+ }
+@@ -779,7 +802,7 @@
+ {
+       struct iptables_match **i;
+-      if (find_match(me->name, DONT_LOAD)) {
++      if (find_match(me->name, DONT_LOAD, NULL)) {
+               fprintf(stderr, "%s: match `%s' already registered.\n",
+                       "fetchipac??", me->name);
+               exit(1);
+@@ -787,7 +810,7 @@
+       if (me->size != IPT_ALIGN(me->size)) {
+               fprintf(stderr, "%s: match `%s' has invalid size %u.\n",
+-                      "fetchipac??", me->name, me->size);
++                      "fetchipac??", me->name, (unsigned int)me->size);
+               exit(1);
+       }
+@@ -801,16 +824,21 @@
+ }
++/* Christophe Burki wants `-p 6' to imply `-m tcp'.  */
+ static struct iptables_match *
+-find_proto(const char *pname, enum ipt_tryload tryload, int nolookup)
++find_proto(const char *pname, enum ipt_tryload tryload, int nolookup, struct iptables_rule_match **matches)
+ {
+-      int proto;
++      unsigned int proto;
+-      proto = string_to_number(pname, 0, 255);
+-      if (proto != -1)
+-              return find_match(proto_to_name(proto, nolookup), tryload);
++      if ((proto = string_to_number(pname, 0, 255)) != -1) {
++              char *protoname = proto_to_name(proto, nolookup);
+-      return find_match(pname, tryload);
++              if (protoname)
++                      return find_match(protoname, tryload, matches);
++      } else
++              return find_match(pname, tryload, matches);
++
++      return NULL;
+ }
+ static void
+@@ -823,15 +851,19 @@
+                               number = (number + 500) / 1000;
+                               if (number > 9999) {
+                                       number = (number + 500) / 1000;
+-                                      printf(FMT("%4lluG ","%lluG "),number);
++                                      if (number > 9999) {
++                                              number = (number + 500) / 1000;
++                                              printf(FMT("%4lluT ","%lluT "), (unsigned long long)number);
+                               }
+-                              else printf(FMT("%4lluM ","%lluM "), number);
++                                      else printf(FMT("%4lluG ","%lluG "), (unsigned long long)number);
++                              }
++                              else printf(FMT("%4lluM ","%lluM "), (unsigned long long)number);
+                       } else
+-                              printf(FMT("%4lluK ","%lluK "), number);
++                              printf(FMT("%4lluK ","%lluK "), (unsigned long long)number);
+               } else
+-                      printf(FMT("%5llu ","%llu "), number);
++                      printf(FMT("%5llu ","%llu "), (unsigned long long)number);
+       } else
+-              printf(FMT("%8llu ","%llu "), number);
++              printf(FMT("%8llu ","%llu "), (unsigned long long)number);
+ }
+ static int
+@@ -839,7 +871,7 @@
+           const struct ipt_ip *ip,
+           int numeric)
+ {
+-      struct iptables_match *match = find_match(m->u.user.name, TRY_LOAD);
++      struct iptables_match *match = find_match(m->u.user.name, TRY_LOAD, NULL);
+       if (match) {
+               if (match->print)
+@@ -867,9 +899,6 @@
+       u_int8_t flags;
+       char buf[BUFSIZ];
+-      /* User creates a chain called "REJECT": this overrides the
+-         `REJECT' target module.  Keep feeding them rope until the
+-         revolution... Bwahahahahah */
+       if (!iptc_is_chain(targname, handle))
+               target = find_target(targname, TRY_LOAD);
+       else
+@@ -917,10 +946,6 @@
+               if (fw->ip.iniface[0] != '\0') {
+                       strcat(iface, fw->ip.iniface);
+-                      /* If it doesn't compare the nul-term, it's a
+-                         wildcard. */
+-                      if (fw->ip.iniface_mask[strlen(fw->ip.iniface)] == 0)
+-                              strcat(iface, "+");
+               }
+               else if (format & FMT_NUMERIC) strcat(iface, "*");
+               else strcat(iface, "any");
+@@ -934,10 +959,6 @@
+               if (fw->ip.outiface[0] != '\0') {
+                       strcat(iface, fw->ip.outiface);
+-                      /* If it doesn't compare the nul-term, it's a
+-                         wildcard. */
+-                      if (fw->ip.outiface_mask[strlen(fw->ip.outiface)] == 0)
+-                              strcat(iface, "+");
+               }
+               else if (format & FMT_NUMERIC) strcat(iface, "*");
+               else strcat(iface, "any");
+@@ -979,7 +1000,7 @@
+                       target->print(&fw->ip, t, format & FMT_NUMERIC);
+       } else if (t->u.target_size != sizeof(*t))
+               printf("[%u bytes of unknown target data] ",
+-                     t->u.target_size - sizeof(*t));
++                     (unsigned int)(t->u.target_size - sizeof(*t)));
+       if (!(format & FMT_NONEWLINE))
+               fputc('\n', stdout);
+@@ -996,6 +1017,15 @@
+ }
++static void set_revision(char *name, u_int8_t revision)
++{
++      /* Old kernel sources don't have ".revision" field,
++         but we stole a byte from name. */
++      name[IPT_FUNCTION_MAXNAMELEN - 2] = '\0';
++      name[IPT_FUNCTION_MAXNAMELEN - 1] = revision;
++}
++
++
+ // ---------------------------------------------------------------------
+@@ -1129,8 +1159,7 @@
+                       chain->pkts++;
+                       continue;
+               }
+-
+-              counters = iptc_read_counter(chain->name, chain->pkts, &handle);
++              counters = iptc_read_counter(chain->name, chain->pkts, &handle);  // ???? why chain->pkts
+               if (counters) {
+                       iptc_zero_counter(chain->name, chain->pkts, &handle);
+                       chain->pkts++;
+@@ -1192,7 +1221,7 @@
+  * 
+  */
+ static int
+-prepare_entry (raw_rule_type *d, struct ipt_entry **e)
++prepare_entry (raw_rule_type *d, struct ipt_entry **e, struct iptables_rule_match **matches)
+ {
+       struct ipt_entry fw;
+       unsigned int naddrs = 0;
+@@ -1200,10 +1229,14 @@
+       struct iptables_match *m;
+       struct iptables_target *target = NULL;
+       struct iptables_target *t;
++
++      struct iptables_rule_match *matchp;
++
+       size_t size;
+       int inverse;
+       int c,argc;
+       int invert = 0;
++      int proto_used = 0;
+       bzero(&fw, sizeof(fw));
+@@ -1233,7 +1266,6 @@
+       for (m = iptables_matches; m; m = m->next) {
+               m->mflags = 0;
+-              m->used = 0;
+       }
+       for (t = iptables_targets; t; t = t->next) {
+@@ -1279,6 +1311,8 @@
+       target->t = xcalloc(1, size);
+       target->t->u.target_size = size;
+       strcpy(target->t->u.user.name, d->target);
++      set_revision(target->t->u.user.name, target->revision);
++      if (target->init != NULL)
+       target->init(target->t, &fw.nfcache);
+       if(check_inverse_type(d->protocol))
+@@ -1290,7 +1324,7 @@
+       }
+       if (d->protocol[0] != '\0' && d->protocol[0] != 'i') {
+-              m = find_proto(d->protocol, LOAD_MUST_SUCCEED, 0);
++              m = find_proto(d->protocol, LOAD_MUST_SUCCEED, 0, matches);
+               size = IPT_ALIGN(sizeof(struct ipt_entry_match)) + m->size;
+               m->m = xcalloc(size, 1);
+               m->m->u.match_size = size;
+@@ -1338,7 +1372,7 @@
+               while ((c = getopt_long(argc, d->extension,"-m:", opts, NULL))!= -1) {
+                       switch  (c) {
+                               case 'm':
+-                                      m = find_match(optarg, LOAD_MUST_SUCCEED);
++                                      m = find_match(optarg, LOAD_MUST_SUCCEED, matches);
+                                       size = IPT_ALIGN(sizeof(struct ipt_entry_match)) + m->size;
+                                       m->m = xcalloc(1, size);
+                                       m->m->u.match_size = size;
+@@ -1361,32 +1395,80 @@
+                                       exit(1);
+                               default: 
+-                                      for (m = iptables_matches; m; m = m->next) {
+-                                              if (!m->used)
+-                                                      continue;
+-                                              if (m->parse(c - m->option_offset,
++
++                                      /* FIXME: This scheme doesn't allow two of the same
++                                         matches --RR */
++                                      if (!target
++                                          || !(target->parse(c - target->option_offset,
++                                                             d->extension, invert,
++                                                             &target->tflags,
++                                                             &fw, &target->t))) {
++                                              for (matchp = *matches; matchp; matchp = matchp->next) {
++                                                      if (matchp->match->parse(c - matchp->match->option_offset,
+                                                               d->extension, invert,
+-                                                              &m->mflags,
+-                                                              &fw, &fw.nfcache, &m->m))
++                                                                               &matchp->match->mflags,
++                                                                               &fw,
++                                                                               &fw.nfcache,
++                                                                               &matchp->match->m))
+                                                       break;
+                                       }
+-                                      break;
++
++                                              if (m == NULL
++                                                  && d->protocol
++                                                  && (!find_proto(d->protocol, DONT_LOAD,
++                                                                  0, NULL) 
++                                                      || (find_proto(d->protocol, DONT_LOAD,
++                                                                     0, NULL)
++                                                          && (proto_used == 0))
++                                                          )
++                                                  && (m = find_proto(d->protocol, TRY_LOAD,
++                                                                     0, matches))) {
++                                                      /* Try loading protocol */
++                                                      size_t size;
++                                                      
++                                                      proto_used = 1;
++
++                                                      size = IPT_ALIGN(sizeof(struct ipt_entry_match))
++                                                              + m->size;
++
++                                                      m->m = xcalloc(1, size);
++                                                      m->m->u.match_size = size;
++                                                      strcpy(m->m->u.user.name, m->name);
++                                                      set_revision(m->m->u.user.name,
++                                                                   m->revision);
++                                                      if (m->init != NULL)
++                                                              m->init(m->m, &fw.nfcache);
++
++                                                      opts = merge_options(opts,
++                                                                           m->extra_opts, &m->option_offset);
++                                                      
++                                                      optind--;
++                                                      continue;
++                                              }
++
++                                              m = matchp ? matchp->match : NULL;
++                                              if (!m)
++                                                      exit_error(PARAMETER_PROBLEM,
++                                                                 "Unknown arg `%s'",
++                                                                 d->extension);
+                       }
+               }
+       }
+-      for (m = iptables_matches; m; m = m->next) {
+-              if (!m->used)
+-                      continue;
+-              m->final_check(m->mflags);
+       }
++      for (matchp = *matches; matchp; matchp = matchp->next)
++              matchp->match->final_check(matchp->match->mflags);
++
++      if (target)
+       target->final_check(target->tflags);
+-      *e = generate_entry(&fw, iptables_matches, target->t);
++
++      *e = generate_entry(&fw, *matches, target->t);
++      free(target->t);
++
+       if (!handle) if (!(handle = iptc_init("filter")))
+                           exit_error(PARAMETER_PROBLEM, 
+                               "iptables: %s\n", iptc_strerror(errno));
+-                      
+       return 0;
+ }
+@@ -1399,9 +1481,11 @@
+ insert_rule(raw_rule_type *d, int rule_num)
+ {
+       struct ipt_entry *e = NULL;
++      struct iptables_rule_match *matches = NULL;
++
+       int ret=1;
+-      if (prepare_entry(d, &e)!=0)
++      if (prepare_entry(d, &e, &matches)!=0)
+               return (1);
+       if (verbose>1) {
+               printf("Inserting rule\n");
+@@ -1412,28 +1496,6 @@
+       return ret;
+ }
+-/*
+- * Try to atomically replace rule in kernel return 0 in case all right, 1 otherwice
+- */
+-static int
+-//replace_rule (char *chain, char *saddr, char *sport, char *daddr, char *dport,
+-//            char *proto, char *targ, int rule_num, char *iface)
+-replace_rule (raw_rule_type *d, int rule_num)
+-{
+-      struct ipt_entry *e = NULL;
+-      int ret=1;
+-
+-      if (prepare_entry(d, &e)!=0)
+-              return (1);
+-
+-      if (verbose>1) {
+-              printf("Replacing rule %d in '%s'\n", rule_num, d->dest);
+-              print_firewall_line(e, handle);
+-      }
+-      ret &= iptc_replace_entry(d->dest, e, rule_num, &handle);
+-      free(e);
+-      return ret;
+-}
+ /*
+  * Try to append rule into kernel return 0 in case all right, 1 otherwice
+@@ -1449,8 +1511,9 @@
+ append_rule (raw_rule_type *d)
+ {
+       struct ipt_entry *e = NULL;
++      struct iptables_rule_match *matches = NULL;
+       
+-      if (prepare_entry(d, &e)!=0)
++      if (prepare_entry(d, &e, &matches)!=0)
+               return (1);
+       
+       if (verbose>1) {
+@@ -1472,9 +1535,11 @@
+ {
+       struct ipt_entry *e = NULL;
+       unsigned char *mask = NULL;
++      struct iptables_rule_match *matches = NULL;
++
+       int ret=1;
+-      if (prepare_entry(d, &e)!=0)
++      if (prepare_entry(d, &e, &matches)!=0)
+               return (1);
+       if (verbose>1) {
+@@ -1482,26 +1547,12 @@
+               print_firewall_line(e, handle);
+       }
+-      mask = make_delete_mask(e);
++      mask = make_delete_mask(e, matches);
+       ret &= iptc_delete_entry(d->dest, e, mask, &handle);
+       free(e);
+       return ret;
+ }
+-static int
+-delete_num_rule (char *chain, int num)
+-{
+-      struct ipt_entry *e = NULL;
+-      unsigned char *mask = NULL;
+-      int ret = 1;
+-
+-      mask = make_delete_mask(e);
+-      ret &= iptc_delete_num_entry(chain, num, &handle);
+-      free(e);
+-      return ret;
+-}
+-
+-
+ /** Setup chains if they doesn't exist 
+  *
+@@ -1588,11 +1639,9 @@
+       if (!handle)
+               handle = iptc_init("filter");
+-      if (!handle) {
+-//            try to insmod the module if iptc_init failed
+-              iptables_insmod("ip_tables", modprobe);
++      /* try to insmod the module if iptc_init failed */
++      if (!handle && iptables_insmod("ip_tables", modprobe) != -1)
+               handle = iptc_init("filter");
+-      }
+       if (!handle) {
+               fprintf(stderr, "ipac-ng: can't initialize iptables table `filter'\n"
+@@ -1617,7 +1666,6 @@
+ setup_rules(void)
+ {
+       raw_rule_type *d, *d1;
+-      char targ[MAX_RULE_NAME_LENGTH+2];
+       char chain[MAX_RULE_NAME_LENGTH+2];
+       FILE *frunfile;
+diff -Nur ipac-ng-1.31.orig/agents/iptables/libip4tc.c ipac-ng-1.31/agents/iptables/libip4tc.c
+--- ipac-ng-1.31.orig/agents/iptables/libip4tc.c       2003-07-06 10:33:23.000000000 +0000
++++ ipac-ng-1.31/agents/iptables/libip4tc.c    2006-01-11 21:51:46.000000000 +0000
+@@ -16,6 +16,7 @@
+ #include <errno.h>
+ #include <stdlib.h>
+ #include <stdio.h>
++#include <unistd.h>
+ #ifdef DEBUG_CONNTRACK
+ #define inline
+@@ -90,6 +91,7 @@
+ #define TC_SET_POLICY         iptc_set_policy
+ #define TC_GET_RAW_SOCKET     iptc_get_raw_socket
+ #define TC_INIT                       iptc_init
++#define TC_FREE                       iptc_free
+ #define TC_COMMIT             iptc_commit
+ #define TC_STRERROR           iptc_strerror
+@@ -121,121 +123,49 @@
+ #define IP_PARTS(n) IP_PARTS_NATIVE(ntohl(n))
+-int
+-dump_entry(STRUCT_ENTRY *e, const TC_HANDLE_T handle)
+-{
+-      size_t i;
+-      STRUCT_ENTRY_TARGET *t;
+-
+-      printf("Entry %u (%lu):\n", entry2index(handle, e),
+-             entry2offset(handle, e));
+-      printf("SRC IP: %u.%u.%u.%u/%u.%u.%u.%u\n",
+-             IP_PARTS(e->ip.src.s_addr),IP_PARTS(e->ip.smsk.s_addr));
+-      printf("DST IP: %u.%u.%u.%u/%u.%u.%u.%u\n",
+-             IP_PARTS(e->ip.dst.s_addr),IP_PARTS(e->ip.dmsk.s_addr));
+-      printf("Interface: `%s'/", e->ip.iniface);
+-      for (i = 0; i < IFNAMSIZ; i++)
+-              printf("%c", e->ip.iniface_mask[i] ? 'X' : '.');
+-      printf("to `%s'/", e->ip.outiface);
+-      for (i = 0; i < IFNAMSIZ; i++)
+-              printf("%c", e->ip.outiface_mask[i] ? 'X' : '.');
+-      printf("\nProtocol: %u\n", e->ip.proto);
+-      printf("Flags: %02X\n", e->ip.flags);
+-      printf("Invflags: %02X\n", e->ip.invflags);
+-      printf("Counters: %llu packets, %llu bytes\n",
+-             e->counters.pcnt, e->counters.bcnt);
+-      printf("Cache: %08X ", e->nfcache);
+-      if (e->nfcache & NFC_ALTERED) printf("ALTERED ");
+-      if (e->nfcache & NFC_UNKNOWN) printf("UNKNOWN ");
+-      if (e->nfcache & NFC_IP_SRC) printf("IP_SRC ");
+-      if (e->nfcache & NFC_IP_DST) printf("IP_DST ");
+-      if (e->nfcache & NFC_IP_IF_IN) printf("IP_IF_IN ");
+-      if (e->nfcache & NFC_IP_IF_OUT) printf("IP_IF_OUT ");
+-      if (e->nfcache & NFC_IP_TOS) printf("IP_TOS ");
+-      if (e->nfcache & NFC_IP_PROTO) printf("IP_PROTO ");
+-      if (e->nfcache & NFC_IP_OPTIONS) printf("IP_OPTIONS ");
+-      if (e->nfcache & NFC_IP_TCPFLAGS) printf("IP_TCPFLAGS ");
+-      if (e->nfcache & NFC_IP_SRC_PT) printf("IP_SRC_PT ");
+-      if (e->nfcache & NFC_IP_DST_PT) printf("IP_DST_PT ");
+-      if (e->nfcache & NFC_IP_PROTO_UNKNOWN) printf("IP_PROTO_UNKNOWN ");
+-      printf("\n");
+-
+-      IPT_MATCH_ITERATE(e, print_match);
+-
+-      t = GET_TARGET(e);
+-      printf("Target name: `%s' [%u]\n", t->u.user.name, t->u.target_size);
+-      if (strcmp(t->u.user.name, STANDARD_TARGET) == 0) {
+-              int pos = *(int *)t->data;
+-              if (pos < 0)
+-                      printf("verdict=%s\n",
+-                             pos == -NF_ACCEPT-1 ? "NF_ACCEPT"
+-                             : pos == -NF_DROP-1 ? "NF_DROP"
+-                             : pos == -NF_QUEUE-1 ? "NF_QUEUE"
+-                             : pos == RETURN ? "RETURN"
+-                             : "UNKNOWN");
+-              else
+-                      printf("verdict=%u\n", pos);
+-      } else if (strcmp(t->u.user.name, IPT_ERROR_TARGET) == 0)
+-              printf("error=`%s'\n", t->data);
+-
+-      printf("\n");
+-      return 0;
+-}
+-static int
++static unsigned char *
+ is_same(const STRUCT_ENTRY *a, const STRUCT_ENTRY *b, unsigned char *matchmask)
+ {
+       unsigned int i;
+-      STRUCT_ENTRY_TARGET *ta, *tb;
+       unsigned char *mptr;
+       /* Always compare head structures: ignore mask here. */
+       if (a->ip.src.s_addr != b->ip.src.s_addr
+           || a->ip.dst.s_addr != b->ip.dst.s_addr
+           || a->ip.smsk.s_addr != b->ip.smsk.s_addr
+-          || a->ip.smsk.s_addr != b->ip.smsk.s_addr
++          || a->ip.dmsk.s_addr != b->ip.dmsk.s_addr
+           || a->ip.proto != b->ip.proto
+           || a->ip.flags != b->ip.flags
+           || a->ip.invflags != b->ip.invflags)
+-              return 0;
++              return NULL;
+       for (i = 0; i < IFNAMSIZ; i++) {
+               if (a->ip.iniface_mask[i] != b->ip.iniface_mask[i])
+-                      return 0;
++                      return NULL;
+               if ((a->ip.iniface[i] & a->ip.iniface_mask[i])
+                   != (b->ip.iniface[i] & b->ip.iniface_mask[i]))
+-                      return 0;
++                      return NULL;
+               if (a->ip.outiface_mask[i] != b->ip.outiface_mask[i])
+-                      return 0;
++                      return NULL;
+               if ((a->ip.outiface[i] & a->ip.outiface_mask[i])
+                   != (b->ip.outiface[i] & b->ip.outiface_mask[i]))
+-                      return 0;
++                      return NULL;
+       }
+       if (a->nfcache != b->nfcache
+           || a->target_offset != b->target_offset
+           || a->next_offset != b->next_offset)
+-              return 0;
++              return NULL;
+       mptr = matchmask + sizeof(STRUCT_ENTRY);
+       if (IPT_MATCH_ITERATE(a, match_different, a->elems, b->elems, &mptr))
+-              return 0;
++              return NULL;
+-      ta = GET_TARGET((STRUCT_ENTRY *)a);
+-      tb = GET_TARGET((STRUCT_ENTRY *)b);
+-      if (ta->u.target_size != tb->u.target_size)
+-              return 0;
+-      if (strcmp(ta->u.user.name, tb->u.user.name) != 0)
+-              return 0;
+-
+-      mptr += sizeof(*ta);
+-      if (target_different(ta->data, tb->data,
+-                           ta->u.target_size - sizeof(*ta), mptr))
+-              return 0;
+-
+-      return 1;
++      return mptr;
+ }
++#if 0
+ /***************************** DEBUGGING ********************************/
+ static inline int
+ unconditional(const struct ipt_ip *ip)
+@@ -290,20 +220,20 @@
+               assert(t->verdict == -NF_DROP-1
+                      || t->verdict == -NF_ACCEPT-1
+                      || t->verdict == RETURN
+-                     || t->verdict < (int)h->entries.size);
++                     || t->verdict < (int)h->entries->size);
+               if (t->verdict >= 0) {
+                       STRUCT_ENTRY *te = get_entry(h, t->verdict);
+                       int idx;
+-                      idx = entry2index(h, te);
++                      idx = iptcb_entry2index(h, te);
+                       assert(strcmp(GET_TARGET(te)->u.user.name,
+                                     IPT_ERROR_TARGET)
+                              != 0);
+                       assert(te != e);
+                       /* Prior node must be error node, or this node. */
+-                      assert(t->verdict == entry2offset(h, e)+e->next_offset
++                      assert(t->verdict == iptcb_entry2offset(h, e)+e->next_offset
+                              || strcmp(GET_TARGET(index2entry(h, idx-1))
+                                        ->u.user.name, IPT_ERROR_TARGET)
+                              == 0);
+@@ -335,7 +265,7 @@
+       return 0;
+ }
+-#ifndef NDEBUG
++#ifdef IPTC_DEBUG
+ /* Do every conceivable sanity check on the handle */
+ static void
+ do_check(TC_HANDLE_T h, unsigned int line)
+@@ -364,35 +294,90 @@
+               user_offset = h->info.hook_entry[NF_IP_LOCAL_OUT];
+       } else if (strcmp(h->info.name, "nat") == 0) {
+-              assert(h->info.valid_hooks
++              assert((h->info.valid_hooks
+                      == (1 << NF_IP_PRE_ROUTING
+                          | 1 << NF_IP_POST_ROUTING
+-                         | 1 << NF_IP_LOCAL_OUT));
++                          | 1 << NF_IP_LOCAL_OUT)) ||
++                     (h->info.valid_hooks
++                      == (1 << NF_IP_PRE_ROUTING
++                          | 1 << NF_IP_LOCAL_IN
++                          | 1 << NF_IP_POST_ROUTING
++                          | 1 << NF_IP_LOCAL_OUT)));
+               assert(h->info.hook_entry[NF_IP_PRE_ROUTING] == 0);
+               n = get_chain_end(h, 0);
++
+               n += get_entry(h, n)->next_offset;
+               assert(h->info.hook_entry[NF_IP_POST_ROUTING] == n);
+-
+               n = get_chain_end(h, n);
++
+               n += get_entry(h, n)->next_offset;
+               assert(h->info.hook_entry[NF_IP_LOCAL_OUT] == n);
+-
+               user_offset = h->info.hook_entry[NF_IP_LOCAL_OUT];
++
++              if (h->info.valid_hooks & (1 << NF_IP_LOCAL_IN)) {
++                      n = get_chain_end(h, n);
++                      n += get_entry(h, n)->next_offset;
++                      assert(h->info.hook_entry[NF_IP_LOCAL_IN] == n);
++                      user_offset = h->info.hook_entry[NF_IP_LOCAL_IN];
++              }
++
+       } else if (strcmp(h->info.name, "mangle") == 0) {
++              /* This code is getting ugly because linux < 2.4.18-pre6 had
++               * two mangle hooks, linux >= 2.4.18-pre6 has five mangle hooks
++               * */
++              assert((h->info.valid_hooks
++                      == (1 << NF_IP_PRE_ROUTING
++                          | 1 << NF_IP_LOCAL_OUT)) || 
++                     (h->info.valid_hooks
++                      == (1 << NF_IP_PRE_ROUTING
++                          | 1 << NF_IP_LOCAL_IN
++                          | 1 << NF_IP_FORWARD
++                          | 1 << NF_IP_LOCAL_OUT
++                          | 1 << NF_IP_POST_ROUTING)));
++
++              /* Hooks should be first five */
++              assert(h->info.hook_entry[NF_IP_PRE_ROUTING] == 0);
++
++              n = get_chain_end(h, 0);
++
++              if (h->info.valid_hooks & (1 << NF_IP_LOCAL_IN)) {
++                      n += get_entry(h, n)->next_offset;
++                      assert(h->info.hook_entry[NF_IP_LOCAL_IN] == n);
++                      n = get_chain_end(h, n);
++              }
++
++              if (h->info.valid_hooks & (1 << NF_IP_FORWARD)) {
++                      n += get_entry(h, n)->next_offset;
++                      assert(h->info.hook_entry[NF_IP_FORWARD] == n);
++                      n = get_chain_end(h, n);
++              }
++
++              n += get_entry(h, n)->next_offset;
++              assert(h->info.hook_entry[NF_IP_LOCAL_OUT] == n);
++              user_offset = h->info.hook_entry[NF_IP_LOCAL_OUT];
++
++              if (h->info.valid_hooks & (1 << NF_IP_POST_ROUTING)) {
++                      n = get_chain_end(h, n);
++                      n += get_entry(h, n)->next_offset;
++                      assert(h->info.hook_entry[NF_IP_POST_ROUTING] == n);
++                      user_offset = h->info.hook_entry[NF_IP_POST_ROUTING];
++              }
++      } else if (strcmp(h->info.name, "raw") == 0) {
+               assert(h->info.valid_hooks
+                      == (1 << NF_IP_PRE_ROUTING
+                          | 1 << NF_IP_LOCAL_OUT));
+-              /* Hooks should be first two */
++              /* Hooks should be first three */
+               assert(h->info.hook_entry[NF_IP_PRE_ROUTING] == 0);
+-              n = get_chain_end(h, 0);
++              n = get_chain_end(h, n);
+               n += get_entry(h, n)->next_offset;
+               assert(h->info.hook_entry[NF_IP_LOCAL_OUT] == n);
+               user_offset = h->info.hook_entry[NF_IP_LOCAL_OUT];
++
+ #ifdef NF_IP_DROPPING
+       } else if (strcmp(h->info.name, "drop") == 0) {
+               assert(h->info.valid_hooks == (1 << NF_IP_DROPPING));
+@@ -425,8 +410,8 @@
+               assert(unconditional(&e->ip));
+               assert(e->target_offset == sizeof(*e));
+               t = (STRUCT_STANDARD_TARGET *)GET_TARGET(e);
+-              assert(t->target.u.target_size == IPT_ALIGN(sizeof(*t)));
+-              assert(e->next_offset == sizeof(*e) + IPT_ALIGN(sizeof(*t)));
++              assert(t->target.u.target_size == ALIGN(sizeof(*t)));
++              assert(e->next_offset == sizeof(*e) + ALIGN(sizeof(*t)));
+               assert(strcmp(t->target.u.user.name, STANDARD_TARGET)==0);
+               assert(t->verdict == -NF_DROP-1 || t->verdict == -NF_ACCEPT-1);
+@@ -458,6 +443,8 @@
+       /* Final entry must be error node */
+       assert(strcmp(GET_TARGET(index2entry(h, h->new_number-1))
+                     ->u.user.name,
+-                    IPT_ERROR_TARGET) == 0);
++                    ERROR_TARGET) == 0);
+ }
+-#endif /*NDEBUG*/
++#endif /*IPTC_DEBUG*/
++
++#endif
+diff -Nur ipac-ng-1.31.orig/agents/iptables/libiptc.c ipac-ng-1.31/agents/iptables/libiptc.c
+--- ipac-ng-1.31.orig/agents/iptables/libiptc.c        2003-07-06 11:34:52.000000000 +0000
++++ ipac-ng-1.31/agents/iptables/libiptc.c     2006-01-10 21:01:39.000000000 +0000
+@@ -9,21 +9,43 @@
+  */
+ /* (C)1999 Paul ``Rusty'' Russell - Placed under the GNU GPL (See
+-   COPYING for details). */
++ * COPYING for details). 
++ * (C) 2000-2004 by the Netfilter Core Team <coreteam@netfilter.org>
++ *
++ * 2003-Jun-20: Harald Welte <laforge@netfilter.org>:
++ *    - Reimplementation of chain cache to use offsets instead of entries
++ * 2003-Jun-23: Harald Welte <laforge@netfilter.org>:
++ *    - performance optimization, sponsored by Astaro AG (http://www.astaro.com/)
++ *      don't rebuild the chain cache after every operation, instead fix it
++ *      up after a ruleset change.  
++ * 2004-Aug-18: Harald Welte <laforge@netfilter.org>:
++ *    - futher performance work: total reimplementation of libiptc.
++ *    - libiptc now has a real internal (linked-list) represntation of the
++ *      ruleset and a parser/compiler from/to this internal representation
++ *    - again sponsored by Astaro AG (http://www.astaro.com/)
++ */
++#include <sys/types.h>
++#include <sys/socket.h>
+-#ifndef IPT_LIB_DIR
+-#define IPT_LIB_DIR "/lib/iptables"
++#include "linux_list.h"
++
++//#define IPTC_DEBUG2 1
++
++#ifdef IPTC_DEBUG2
++#include <fcntl.h>
++#define DEBUGP(x, args...)    fprintf(stderr, "%s: " x, __FUNCTION__, ## args)
++#define DEBUGP_C(x, args...)  fprintf(stderr, x, ## args)
++#else
++#define DEBUGP(x, args...)
++#define DEBUGP_C(x, args...)
+ #endif
+-#ifndef __OPTIMIZE__
+-STRUCT_ENTRY_TARGET *
+-GET_TARGET(STRUCT_ENTRY *e)
+-{
+-      return (void *)e + e->target_offset;
+-}
++#ifndef IPT_LIB_DIR
++#define IPT_LIB_DIR "/usr/local/lib/iptables"
+ #endif
+ static int sockfd = -1;
++static int sockfd_use = 0;
+ static void *iptc_fn = NULL;
+ static const char *hooknames[]
+@@ -37,6 +59,16 @@
+ #endif
+ };
++/* Convenience structures */
++struct ipt_error_target
++{
++      STRUCT_ENTRY_TARGET t;
++      char error[TABLE_MAXNAMELEN];
++};
++
++struct chain_head;
++struct rule_head;
++
+ struct counter_map
+ {
+       enum {
+@@ -48,59 +80,95 @@
+       unsigned int mappos;
+ };
+-/* Convenience structures */
+-struct ipt_error_target
++enum iptcc_rule_type {
++      IPTCC_R_STANDARD,               /* standard target (ACCEPT, ...) */
++      IPTCC_R_MODULE,                 /* extension module (SNAT, ...) */
++      IPTCC_R_FALLTHROUGH,            /* fallthrough rule */
++      IPTCC_R_JUMP,                   /* jump to other chain */
++};
++
++struct rule_head
+ {
+-      STRUCT_ENTRY_TARGET t;
+-      char error[TABLE_MAXNAMELEN];
++      struct list_head list;
++      struct chain_head *chain;
++      struct counter_map counter_map;
++
++      unsigned int index;             /* index (needed for counter_map) */
++      unsigned int offset;            /* offset in rule blob */
++
++      enum iptcc_rule_type type;
++      struct chain_head *jump;        /* jump target, if IPTCC_R_JUMP */
++
++      unsigned int size;              /* size of entry data */
++      STRUCT_ENTRY entry[0];
+ };
+-struct chain_cache
++struct chain_head
+ {
++      struct list_head list;
+       char name[TABLE_MAXNAMELEN];
+-      /* This is the first rule in chain. */
+-      STRUCT_ENTRY *start;
+-      /* Last rule in chain */
+-      STRUCT_ENTRY *end;
++      unsigned int hooknum;           /* hook number+1 if builtin */
++      unsigned int references;        /* how many jumps reference us */
++      int verdict;                    /* verdict if builtin */
++
++      STRUCT_COUNTERS counters;       /* per-chain counters */
++      struct counter_map counter_map;
++
++      unsigned int num_rules;         /* number of rules in list */
++      struct list_head rules;         /* list of rules */
++
++      unsigned int index;             /* index (needed for jump resolval) */
++      unsigned int head_offset;       /* offset in rule blob */
++      unsigned int foot_index;        /* index (needed for counter_map) */
++      unsigned int foot_offset;       /* offset in rule blob */
+ };
+ STRUCT_TC_HANDLE
+ {
+-      /* Have changes been made? */
+-      int changed;
+-      /* Size in here reflects original state. */
+-      STRUCT_GETINFO info;
++      int changed;                     /* Have changes been made? */
++
++      struct list_head chains;
++
++      struct chain_head *chain_iterator_cur;
++      struct rule_head *rule_iterator_cur;
+-      struct counter_map *counter_map;
+-      /* Array of hook names */
+-      const char **hooknames;
+-
+-      /* Cached position of chain heads (NULL = no cache). */
+-      unsigned int cache_num_chains;
+-      unsigned int cache_num_builtins;
+-      struct chain_cache *cache_chain_heads;
+-
+-      /* Chain iterator: current chain cache entry. */
+-      struct chain_cache *cache_chain_iteration;
+-
+-      /* Rule iterator: terminal rule */
+-      STRUCT_ENTRY *cache_rule_end;
+-
+-      /* Number in here reflects current state. */
+-      unsigned int new_number;
+-      STRUCT_GET_ENTRIES entries;
++      STRUCT_GETINFO info;
++      STRUCT_GET_ENTRIES *entries;
+ };
++/* allocate a new chain head for the cache */
++static struct chain_head *iptcc_alloc_chain_head(const char *name, int hooknum)
++{
++      struct chain_head *c = malloc(sizeof(*c));
++      if (!c)
++              return NULL;
++      memset(c, 0, sizeof(*c));
++
++      strncpy(c->name, name, TABLE_MAXNAMELEN);
++      c->hooknum = hooknum;
++      INIT_LIST_HEAD(&c->rules);
++
++      return c;
++}
++
++/* allocate and initialize a new rule for the cache */
++static struct rule_head *iptcc_alloc_rule(struct chain_head *c, unsigned int size)
++{
++      struct rule_head *r = malloc(sizeof(*r)+size);
++      if (!r)
++              return NULL;
++      memset(r, 0, sizeof(*r));
++
++      r->chain = c;
++      r->size = size;
++
++      return r;
++}
++
++/* notify us that the ruleset has been modified by the user */
+ static void
+ set_changed(TC_HANDLE_T h)
+ {
+-      if (h->cache_chain_heads) {
+-              free(h->cache_chain_heads);
+-              h->cache_chain_heads = NULL;
+-              h->cache_num_chains = 0;
+-              h->cache_chain_iteration = NULL;
+-              h->cache_rule_end = NULL;
+-      }
+       h->changed = 1;
+ }
+@@ -111,8 +179,13 @@
+ #define CHECK(h)
+ #endif
++
++/**********************************************************************
++ * iptc blob utility functions (iptcb_*)
++ **********************************************************************/
++
+ static inline int
+-get_number(const STRUCT_ENTRY *i,
++iptcb_get_number(const STRUCT_ENTRY *i,
+          const STRUCT_ENTRY *seek,
+          unsigned int *pos)
+ {
+@@ -122,22 +195,8 @@
+       return 0;
+ }
+-static unsigned int
+-entry2index(const TC_HANDLE_T h, const STRUCT_ENTRY *seek)
+-{
+-      unsigned int pos = 0;
+-
+-      if (ENTRY_ITERATE(h->entries.entrytable, h->entries.size,
+-                        get_number, seek, &pos) == 0) {
+-              fprintf(stderr, "ERROR: offset %i not an entry!\n",
+-                      (char *)seek - (char *)h->entries.entrytable);
+-              abort();
+-      }
+-      return pos;
+-}
+-
+ static inline int
+-get_entry_n(STRUCT_ENTRY *i,
++iptcb_get_entry_n(STRUCT_ENTRY *i,
+           unsigned int number,
+           unsigned int *pos,
+           STRUCT_ENTRY **pe)
+@@ -150,51 +209,556 @@
+       return 0;
+ }
+-static STRUCT_ENTRY *
+-index2entry(TC_HANDLE_T h, unsigned int index)
++static inline STRUCT_ENTRY *
++iptcb_get_entry(TC_HANDLE_T h, unsigned int offset)
+ {
+-      unsigned int pos = 0;
+-      STRUCT_ENTRY *ret = NULL;
++      return (STRUCT_ENTRY *)((char *)h->entries->entrytable + offset);
++}
+-      ENTRY_ITERATE(h->entries.entrytable, h->entries.size,
+-                    get_entry_n, index, &pos, &ret);
++static unsigned int
++iptcb_entry2index(const TC_HANDLE_T h, const STRUCT_ENTRY *seek)
++{
++      unsigned int pos = 0;
+-      return ret;
++      if (ENTRY_ITERATE(h->entries->entrytable, h->entries->size,
++                        iptcb_get_number, seek, &pos) == 0) {
++              fprintf(stderr, "ERROR: offset %u not an entry!\n",
++                      (unsigned int)((char *)seek - (char *)h->entries->entrytable));
++              abort();
++      }
++      return pos;
+ }
+ static inline STRUCT_ENTRY *
+-get_entry(TC_HANDLE_T h, unsigned int offset)
++iptcb_offset2entry(TC_HANDLE_T h, unsigned int offset)
+ {
+-      return (STRUCT_ENTRY *)((char *)h->entries.entrytable + offset);
++      return (STRUCT_ENTRY *) ((void *)h->entries->entrytable+offset);
+ }
++
+ static inline unsigned long
+-entry2offset(const TC_HANDLE_T h, const STRUCT_ENTRY *e)
++iptcb_entry2offset(const TC_HANDLE_T h, const STRUCT_ENTRY *e)
+ {
+-      return (char *)e - (char *)h->entries.entrytable;
++      return (void *)e - (void *)h->entries->entrytable;
+ }
+-static unsigned long
+-index2offset(TC_HANDLE_T h, unsigned int index)
++static inline unsigned int
++iptcb_offset2index(const TC_HANDLE_T h, unsigned int offset)
+ {
+-      return entry2offset(h, index2entry(h, index));
++      return iptcb_entry2index(h, iptcb_offset2entry(h, offset));
+ }
+-static const char *
+-get_errorlabel(TC_HANDLE_T h, unsigned int offset)
++/* Returns 0 if not hook entry, else hooknumber + 1 */
++static inline unsigned int
++iptcb_ent_is_hook_entry(STRUCT_ENTRY *e, TC_HANDLE_T h)
+ {
+-      STRUCT_ENTRY *e;
++      unsigned int i;
+-      e = get_entry(h, offset);
+-      if (strcmp(GET_TARGET(e)->u.user.name, ERROR_TARGET) != 0) {
+-              fprintf(stderr, "ERROR: offset %u not an error node!\n",
+-                      offset);
+-              abort();
++      for (i = 0; i < NUMHOOKS; i++) {
++              if ((h->info.valid_hooks & (1 << i))
++                  && iptcb_get_entry(h, h->info.hook_entry[i]) == e)
++                      return i+1;
++      }
++      return 0;
++}
++
++
++/**********************************************************************
++ * iptc cache utility functions (iptcc_*)
++ **********************************************************************/
++
++/* Is the given chain builtin (1) or user-defined (0) */
++static unsigned int iptcc_is_builtin(struct chain_head *c)
++{
++      return (c->hooknum ? 1 : 0);
++}
++
++/* Get a specific rule within a chain */
++static struct rule_head *iptcc_get_rule_num(struct chain_head *c,
++                                          unsigned int rulenum)
++{
++      struct rule_head *r;
++      unsigned int num = 0;
++
++      list_for_each_entry(r, &c->rules, list) {
++              num++;
++              if (num == rulenum)
++                      return r;
++      }
++      return NULL;
++}
++
++/* Get a specific rule within a chain backwards */
++static struct rule_head *iptcc_get_rule_num_reverse(struct chain_head *c,
++                                          unsigned int rulenum)
++{
++      struct rule_head *r;
++      unsigned int num = 0;
++
++      list_for_each_entry_reverse(r, &c->rules, list) {
++              num++;
++              if (num == rulenum)
++                      return r;
++      }
++      return NULL;
++}
++
++/* Returns chain head if found, otherwise NULL. */
++static struct chain_head *
++iptcc_find_chain_by_offset(TC_HANDLE_T handle, unsigned int offset)
++{
++      struct list_head *pos;
++
++      if (list_empty(&handle->chains))
++              return NULL;
++
++      list_for_each(pos, &handle->chains) {
++              struct chain_head *c = list_entry(pos, struct chain_head, list);
++              if (offset >= c->head_offset && offset <= c->foot_offset)
++                      return c;
++      }
++
++      return NULL;
++}
++/* Returns chain head if found, otherwise NULL. */
++static struct chain_head *
++iptcc_find_label(const char *name, TC_HANDLE_T handle)
++{
++      struct list_head *pos;
++
++      if (list_empty(&handle->chains))
++              return NULL;
++
++      list_for_each(pos, &handle->chains) {
++              struct chain_head *c = list_entry(pos, struct chain_head, list);
++              if (!strcmp(c->name, name))
++                      return c;
++      }
++
++      return NULL;
++}
++
++/* called when rule is to be removed from cache */
++static void iptcc_delete_rule(struct rule_head *r)
++{
++      DEBUGP("deleting rule %p (offset %u)\n", r, r->offset);
++      /* clean up reference count of called chain */
++      if (r->type == IPTCC_R_JUMP
++          && r->jump)
++              r->jump->references--;
++
++      list_del(&r->list);
++      free(r);
++}
++
++
++/**********************************************************************
++ * RULESET PARSER (blob -> cache)
++ **********************************************************************/
++
++/* Delete policy rule of previous chain, since cache doesn't contain
++ * chain policy rules.
++ * WARNING: This function has ugly design and relies on a lot of context, only
++ * to be called from specific places within the parser */
++static int __iptcc_p_del_policy(TC_HANDLE_T h, unsigned int num)
++{
++      if (h->chain_iterator_cur) {
++              /* policy rule is last rule */
++              struct rule_head *pr = (struct rule_head *)
++                      h->chain_iterator_cur->rules.prev;
++
++              /* save verdict */
++              h->chain_iterator_cur->verdict = 
++                      *(int *)GET_TARGET(pr->entry)->data;
++
++              /* save counter and counter_map information */
++              h->chain_iterator_cur->counter_map.maptype = 
++                                              COUNTER_MAP_NORMAL_MAP;
++              h->chain_iterator_cur->counter_map.mappos = num-1;
++              memcpy(&h->chain_iterator_cur->counters, &pr->entry->counters, 
++                      sizeof(h->chain_iterator_cur->counters));
++
++              /* foot_offset points to verdict rule */
++              h->chain_iterator_cur->foot_index = num;
++              h->chain_iterator_cur->foot_offset = pr->offset;
++
++              /* delete rule from cache */
++              iptcc_delete_rule(pr);
++              h->chain_iterator_cur->num_rules--;
++
++              return 1;
++      }
++      return 0;
++}
++
++/* alphabetically insert a chain into the list */
++static inline void iptc_insert_chain(TC_HANDLE_T h, struct chain_head *c)
++{
++      struct chain_head *tmp;
++
++      /* sort only user defined chains */
++      if (!c->hooknum) {
++              list_for_each_entry(tmp, &h->chains, list) {
++                      if (strcmp(c->name, tmp->name) <= 0) {
++                              list_add(&c->list, tmp->list.prev);
++                              return;
++                      }
++              }
++      }
++
++      /* survived till end of list: add at tail */
++      list_add_tail(&c->list, &h->chains);
++}
++
++/* Another ugly helper function split out of cache_add_entry to make it less
++ * spaghetti code */
++static void __iptcc_p_add_chain(TC_HANDLE_T h, struct chain_head *c,
++                              unsigned int offset, unsigned int *num)
++{
++      __iptcc_p_del_policy(h, *num);
++
++      c->head_offset = offset;
++      c->index = *num;
++
++      iptc_insert_chain(h, c);
++      
++      h->chain_iterator_cur = c;
++}
++
++/* main parser function: add an entry from the blob to the cache */
++static int cache_add_entry(STRUCT_ENTRY *e, 
++                         TC_HANDLE_T h, 
++                         STRUCT_ENTRY **prev,
++                         unsigned int *num)
++{
++      unsigned int builtin;
++      unsigned int offset = (char *)e - (char *)h->entries->entrytable;
++
++      DEBUGP("entering...");
++
++      /* Last entry ("policy rule"). End it.*/
++      if (iptcb_entry2offset(h,e) + e->next_offset == h->entries->size) {
++              /* This is the ERROR node at the end of the chain */
++              DEBUGP_C("%u:%u: end of table:\n", *num, offset);
++
++              __iptcc_p_del_policy(h, *num);
++
++              h->chain_iterator_cur = NULL;
++              goto out_inc;
++      }
++
++      /* We know this is the start of a new chain if it's an ERROR
++       * target, or a hook entry point */
++
++      if (strcmp(GET_TARGET(e)->u.user.name, ERROR_TARGET) == 0) {
++              struct chain_head *c = 
++                      iptcc_alloc_chain_head((const char *)GET_TARGET(e)->data, 0);
++              DEBUGP_C("%u:%u:new userdefined chain %s: %p\n", *num, offset, 
++                      (char *)c->name, c);
++              if (!c) {
++                      errno = -ENOMEM;
++                      return -1;
++              }
++
++              __iptcc_p_add_chain(h, c, offset, num);
++
++      } else if ((builtin = iptcb_ent_is_hook_entry(e, h)) != 0) {
++              struct chain_head *c =
++                      iptcc_alloc_chain_head((char *)hooknames[builtin-1], 
++                                              builtin);
++              DEBUGP_C("%u:%u new builtin chain: %p (rules=%p)\n", 
++                      *num, offset, c, &c->rules);
++              if (!c) {
++                      errno = -ENOMEM;
++                      return -1;
++              }
++
++              c->hooknum = builtin;
++
++              __iptcc_p_add_chain(h, c, offset, num);
++
++              /* FIXME: this is ugly. */
++              goto new_rule;
++      } else {
++              /* has to be normal rule */
++              struct rule_head *r;
++new_rule:
++
++              if (!(r = iptcc_alloc_rule(h->chain_iterator_cur, 
++                                         e->next_offset))) {
++                      errno = ENOMEM;
++                      return -1;
++              }
++              DEBUGP_C("%u:%u normal rule: %p: ", *num, offset, r);
++
++              r->index = *num;
++              r->offset = offset;
++              memcpy(r->entry, e, e->next_offset);
++              r->counter_map.maptype = COUNTER_MAP_NORMAL_MAP;
++              r->counter_map.mappos = r->index;
++
++              /* handling of jumps, etc. */
++              if (!strcmp(GET_TARGET(e)->u.user.name, STANDARD_TARGET)) {
++                      STRUCT_STANDARD_TARGET *t;
++
++                      t = (STRUCT_STANDARD_TARGET *)GET_TARGET(e);
++                      if (t->target.u.target_size
++                          != ALIGN(sizeof(STRUCT_STANDARD_TARGET))) {
++                              errno = EINVAL;
++                              return -1;
++                      }
++
++                      if (t->verdict < 0) {
++                              DEBUGP_C("standard, verdict=%d\n", t->verdict);
++                              r->type = IPTCC_R_STANDARD;
++                      } else if (t->verdict == r->offset+e->next_offset) {
++                              DEBUGP_C("fallthrough\n");
++                              r->type = IPTCC_R_FALLTHROUGH;
++                      } else {
++                              DEBUGP_C("jump, target=%u\n", t->verdict);
++                              r->type = IPTCC_R_JUMP;
++                              /* Jump target fixup has to be deferred
++                               * until second pass, since we migh not
++                               * yet have parsed the target */
++                      }
++              } else {
++                      DEBUGP_C("module, target=%s\n", GET_TARGET(e)->u.user.name);
++                      r->type = IPTCC_R_MODULE;
++              }
++
++              list_add_tail(&r->list, &h->chain_iterator_cur->rules);
++              h->chain_iterator_cur->num_rules++;
++      }
++out_inc:
++      (*num)++;
++      return 0;
++}
++
++
++/* parse an iptables blob into it's pieces */
++static int parse_table(TC_HANDLE_T h)
++{
++      STRUCT_ENTRY *prev;
++      unsigned int num = 0;
++      struct chain_head *c;
++
++      /* First pass: over ruleset blob */
++      ENTRY_ITERATE(h->entries->entrytable, h->entries->size,
++                      cache_add_entry, h, &prev, &num);
++
++      /* Second pass: fixup parsed data from first pass */
++      list_for_each_entry(c, &h->chains, list) {
++              struct rule_head *r;
++              list_for_each_entry(r, &c->rules, list) {
++                      struct chain_head *c;
++                      STRUCT_STANDARD_TARGET *t;
++
++                      if (r->type != IPTCC_R_JUMP)
++                              continue;
++
++                      t = (STRUCT_STANDARD_TARGET *)GET_TARGET(r->entry);
++                      c = iptcc_find_chain_by_offset(h, t->verdict);
++                      if (!c)
++                              return -1;
++                      r->jump = c;
++                      c->references++;
++              }
++      }
++
++      /* FIXME: sort chains */
++
++      return 1;
++}
++
++
++/**********************************************************************
++ * RULESET COMPILATION (cache -> blob)
++ **********************************************************************/
++
++/* Convenience structures */
++struct iptcb_chain_start{
++      STRUCT_ENTRY e;
++      struct ipt_error_target name;
++};
++#define IPTCB_CHAIN_START_SIZE        (sizeof(STRUCT_ENTRY) +                 \
++                               ALIGN(sizeof(struct ipt_error_target)))
++
++struct iptcb_chain_foot {
++      STRUCT_ENTRY e;
++      STRUCT_STANDARD_TARGET target;
++};
++#define IPTCB_CHAIN_FOOT_SIZE (sizeof(STRUCT_ENTRY) +                 \
++                               ALIGN(sizeof(STRUCT_STANDARD_TARGET)))
++
++struct iptcb_chain_error {
++      STRUCT_ENTRY entry;
++      struct ipt_error_target target;
++};
++#define IPTCB_CHAIN_ERROR_SIZE        (sizeof(STRUCT_ENTRY) +                 \
++                               ALIGN(sizeof(struct ipt_error_target)))
++
++
++
++/* compile rule from cache into blob */
++static inline int iptcc_compile_rule (TC_HANDLE_T h, STRUCT_REPLACE *repl, struct rule_head *r)
++{
++      /* handle jumps */
++      if (r->type == IPTCC_R_JUMP) {
++              STRUCT_STANDARD_TARGET *t;
++              t = (STRUCT_STANDARD_TARGET *)GET_TARGET(r->entry);
++              /* memset for memcmp convenience on delete/replace */
++              memset(t->target.u.user.name, 0, FUNCTION_MAXNAMELEN);
++              strcpy(t->target.u.user.name, STANDARD_TARGET);
++              /* Jumps can only happen to builtin chains, so we
++               * can safely assume that they always have a header */
++              t->verdict = r->jump->head_offset + IPTCB_CHAIN_START_SIZE;
++      } else if (r->type == IPTCC_R_FALLTHROUGH) {
++              STRUCT_STANDARD_TARGET *t;
++              t = (STRUCT_STANDARD_TARGET *)GET_TARGET(r->entry);
++              t->verdict = r->offset + r->size;
++      }
++      
++      /* copy entry from cache to blob */
++      memcpy((char *)repl->entries+r->offset, r->entry, r->size);
++
++      return 1;
++}
++
++/* compile chain from cache into blob */
++static int iptcc_compile_chain(TC_HANDLE_T h, STRUCT_REPLACE *repl, struct chain_head *c)
++{
++      int ret;
++      struct rule_head *r;
++      struct iptcb_chain_start *head;
++      struct iptcb_chain_foot *foot;
++
++      /* only user-defined chains have heaer */
++      if (!iptcc_is_builtin(c)) {
++              /* put chain header in place */
++              head = (void *)repl->entries + c->head_offset;
++              head->e.target_offset = sizeof(STRUCT_ENTRY);
++              head->e.next_offset = IPTCB_CHAIN_START_SIZE;
++              strcpy(head->name.t.u.user.name, ERROR_TARGET);
++              head->name.t.u.target_size = 
++                              ALIGN(sizeof(struct ipt_error_target));
++              strcpy(head->name.error, c->name);
++      } else {
++              repl->hook_entry[c->hooknum-1] = c->head_offset;        
++              repl->underflow[c->hooknum-1] = c->foot_offset;
++      }
++
++      /* iterate over rules */
++      list_for_each_entry(r, &c->rules, list) {
++              ret = iptcc_compile_rule(h, repl, r);
++              if (ret < 0)
++                      return ret;
++      }
++
++      /* put chain footer in place */
++      foot = (void *)repl->entries + c->foot_offset;
++      foot->e.target_offset = sizeof(STRUCT_ENTRY);
++      foot->e.next_offset = IPTCB_CHAIN_FOOT_SIZE;
++      strcpy(foot->target.target.u.user.name, STANDARD_TARGET);
++      foot->target.target.u.target_size =
++                              ALIGN(sizeof(STRUCT_STANDARD_TARGET));
++      /* builtin targets have verdict, others return */
++      if (iptcc_is_builtin(c))
++              foot->target.verdict = c->verdict;
++      else
++              foot->target.verdict = RETURN;
++      /* set policy-counters */
++      memcpy(&foot->e.counters, &c->counters, sizeof(STRUCT_COUNTERS));
++
++      return 0;
++}
++
++/* calculate offset and number for every rule in the cache */
++static int iptcc_compile_chain_offsets(TC_HANDLE_T h, struct chain_head *c,
++                                     int *offset, int *num)
++{
++      struct rule_head *r;
++
++      c->head_offset = *offset;
++      DEBUGP("%s: chain_head %u, offset=%u\n", c->name, *num, *offset);
++
++      if (!iptcc_is_builtin(c))  {
++              /* Chain has header */
++              *offset += sizeof(STRUCT_ENTRY) 
++                           + ALIGN(sizeof(struct ipt_error_target));
++              (*num)++;
++      }
++
++      list_for_each_entry(r, &c->rules, list) {
++              DEBUGP("rule %u, offset=%u, index=%u\n", *num, *offset, *num);
++              r->offset = *offset;
++              r->index = *num;
++              *offset += r->size;
++              (*num)++;
++      }
++
++      DEBUGP("%s; chain_foot %u, offset=%u, index=%u\n", c->name, *num, 
++              *offset, *num);
++      c->foot_offset = *offset;
++      c->foot_index = *num;
++      *offset += sizeof(STRUCT_ENTRY)
++                 + ALIGN(sizeof(STRUCT_STANDARD_TARGET));
++      (*num)++;
++
++      return 1;
++}
++
++/* put the pieces back together again */
++static int iptcc_compile_table_prep(TC_HANDLE_T h, unsigned int *size)
++{
++      struct chain_head *c;
++      unsigned int offset = 0, num = 0;
++      int ret = 0;
++
++      /* First pass: calculate offset for every rule */
++      list_for_each_entry(c, &h->chains, list) {
++              ret = iptcc_compile_chain_offsets(h, c, &offset, &num);
++              if (ret < 0)
++                      return ret;
+       }
+-      return (const char *)GET_TARGET(e)->data;
++      /* Append one error rule at end of chain */
++      num++;
++      offset += sizeof(STRUCT_ENTRY)
++                + ALIGN(sizeof(struct ipt_error_target));
++
++      /* ruleset size is now in offset */
++      *size = offset;
++      return num;
+ }
++static int iptcc_compile_table(TC_HANDLE_T h, STRUCT_REPLACE *repl)
++{
++      struct chain_head *c;
++      struct iptcb_chain_error *error;
++
++      /* Second pass: copy from cache to offsets, fill in jumps */
++      list_for_each_entry(c, &h->chains, list) {
++              int ret = iptcc_compile_chain(h, repl, c);
++              if (ret < 0)
++                      return ret;
++      }
++
++      /* Append error rule at end of chain */
++      error = (void *)repl->entries + repl->size - IPTCB_CHAIN_ERROR_SIZE;
++      error->entry.target_offset = sizeof(STRUCT_ENTRY);
++      error->entry.next_offset = IPTCB_CHAIN_ERROR_SIZE;
++      error->target.t.u.user.target_size = 
++              ALIGN(sizeof(struct ipt_error_target));
++      strcpy((char *)&error->target.t.u.user.name, ERROR_TARGET);
++      strcpy((char *)&error->target.error, "ERROR");
++
++      return 1;
++}
++
++/**********************************************************************
++ * EXTERNAL API (operates on cache only)
++ **********************************************************************/
++
+ /* Allocate handle of given size */
+ static TC_HANDLE_T
+ alloc_handle(const char *tablename, unsigned int size, unsigned int num_rules)
+@@ -202,94 +766,139 @@
+       size_t len;
+       TC_HANDLE_T h;
+-      len = sizeof(STRUCT_TC_HANDLE)
+-              + size
+-              + num_rules * sizeof(struct counter_map);
++      len = sizeof(STRUCT_TC_HANDLE) + size;
+-      if ((h = malloc(len)) == NULL) {
++      h = malloc(sizeof(STRUCT_TC_HANDLE));
++      if (!h) {
+               errno = ENOMEM;
+               return NULL;
+       }
+-
+-      h->changed = 0;
+-      h->cache_num_chains = 0;
+-      h->cache_chain_heads = NULL;
+-      h->counter_map = (void *)h
+-              + sizeof(STRUCT_TC_HANDLE)
+-              + size;
++      memset(h, 0, sizeof(*h));
++      INIT_LIST_HEAD(&h->chains);
+       strcpy(h->info.name, tablename);
+-      strcpy(h->entries.name, tablename);
++
++      h->entries = malloc(sizeof(STRUCT_GET_ENTRIES) + size);
++      if (!h->entries)
++              goto out_free_handle;
++
++      strcpy(h->entries->name, tablename);
++      h->entries->size = size;
+       return h;
++
++out_free_handle:
++      free(h);
++
++      return NULL;
+ }
++
+ TC_HANDLE_T
+ TC_INIT(const char *tablename)
+ {
+       TC_HANDLE_T h;
+       STRUCT_GETINFO info;
+-      unsigned int i;
+       int tmp;
+       socklen_t s;
+       iptc_fn = TC_INIT;
+-      if (sockfd != -1)
+-              close(sockfd);
++      if (strlen(tablename) >= TABLE_MAXNAMELEN) {
++              errno = EINVAL;
++              return NULL;
++      }
++      if (sockfd_use == 0) {
+       sockfd = socket(TC_AF, SOCK_RAW, IPPROTO_RAW);
+       if (sockfd < 0)
+               return NULL;
++      }
++      sockfd_use++;
+       s = sizeof(info);
+-      if (strlen(tablename) >= TABLE_MAXNAMELEN) {
+-              errno = EINVAL;
+-              return NULL;
+-      }
++
+       strcpy(info.name, tablename);
+-      if (getsockopt(sockfd, TC_IPPROTO, SO_GET_INFO, &info, &s) < 0)
++      if (getsockopt(sockfd, TC_IPPROTO, SO_GET_INFO, &info, &s) < 0) {
++              if (--sockfd_use == 0) {
++                      close(sockfd);
++                      sockfd = -1;
++              }
+               return NULL;
++      }
+-      if ((h = alloc_handle(info.name, info.size, info.num_entries))
+-          == NULL)
+-              return NULL;
++      DEBUGP("valid_hooks=0x%08x, num_entries=%u, size=%u\n",
++              info.valid_hooks, info.num_entries, info.size);
+-/* Too hard --RR */
+-#if 0
+-      sprintf(pathname, "%s/%s", IPT_LIB_DIR, info.name);
+-      dynlib = dlopen(pathname, RTLD_NOW);
+-      if (!dynlib) {
+-              errno = ENOENT;
+-              return NULL;
++      if ((h = alloc_handle(info.name, info.size, info.num_entries))
++          == NULL) {
++              if (--sockfd_use == 0) {
++                      close(sockfd);
++                      sockfd = -1;
+       }
+-      h->hooknames = dlsym(dynlib, "hooknames");
+-      if (!h->hooknames) {
+-              errno = ENOENT;
+               return NULL;
+       }
+-#else
+-      h->hooknames = hooknames;
+-#endif
+       /* Initialize current state */
+       h->info = info;
+-      h->new_number = h->info.num_entries;
+-      for (i = 0; i < h->info.num_entries; i++)
+-              h->counter_map[i]
+-                      = ((struct counter_map){COUNTER_MAP_NORMAL_MAP, i});
+-      h->entries.size = h->info.size;
++      h->entries->size = h->info.size;
+       tmp = sizeof(STRUCT_GET_ENTRIES) + h->info.size;
+-      if (getsockopt(sockfd, TC_IPPROTO, SO_GET_ENTRIES, &h->entries,
+-                     &tmp) < 0) {
+-              free(h);
+-              return NULL;
++      if (getsockopt(sockfd, TC_IPPROTO, SO_GET_ENTRIES, h->entries,
++                     &tmp) < 0)
++              goto error;
++
++#ifdef IPTC_DEBUG2
++      {
++              int fd = open("/tmp/libiptc-so_get_entries.blob", 
++                              O_CREAT|O_WRONLY);
++              if (fd >= 0) {
++                      write(fd, h->entries, tmp);
++                      close(fd);
++      }
+       }
++#endif
++
++      if (parse_table(h) < 0)
++              goto error;
+       CHECK(h);
+       return h;
++error:
++      if (--sockfd_use == 0) {
++              close(sockfd);
++              sockfd = -1;
++      }
++      TC_FREE(&h);
++      return NULL;
++}
++
++void
++TC_FREE(TC_HANDLE_T *h)
++{
++      struct chain_head *c, *tmp;
++
++      iptc_fn = TC_FREE;
++      if (--sockfd_use == 0) {
++              close(sockfd);
++              sockfd = -1;
++      }
++
++      list_for_each_entry_safe(c, tmp, &(*h)->chains, list) {
++              struct rule_head *r, *rtmp;
++
++              list_for_each_entry_safe(r, rtmp, &c->rules, list) {
++                      free(r);
++              }
++
++              free(c);
++      }
++
++      free((*h)->entries);
++      free(*h);
++
++      *h = NULL;
+ }
+ static inline int
+@@ -304,11 +913,11 @@
+ void
+ TC_DUMP_ENTRIES(const TC_HANDLE_T handle)
+ {
++      iptc_fn = TC_DUMP_ENTRIES;
+       CHECK(handle);
+-
+-      printf("libiptc v%s.  %u entries, %u bytes.\n",
+-             NETFILTER_VERSION,
+-             handle->new_number, handle->entries.size);
++#if 0
++      printf("libiptc v%s. %u bytes.\n",
++             IPTABLES_VERSION, handle->entries->size);
+       printf("Table `%s'\n", handle->info.name);
+       printf("Hooks: pre/in/fwd/out/post = %u/%u/%u/%u/%u\n",
+              handle->info.hook_entry[HOOK_PRE_ROUTING],
+@@ -323,516 +932,277 @@
+              handle->info.underflow[HOOK_LOCAL_OUT],
+              handle->info.underflow[HOOK_POST_ROUTING]);
+-      ENTRY_ITERATE(handle->entries.entrytable, handle->entries.size,
++      ENTRY_ITERATE(handle->entries->entrytable, handle->entries->size,
+                     dump_entry, handle);
+-}
+-
+-/* Returns 0 if not hook entry, else hooknumber + 1 */
+-static inline unsigned int
+-is_hook_entry(STRUCT_ENTRY *e, TC_HANDLE_T h)
+-{
+-      unsigned int i;
+-
+-      for (i = 0; i < NUMHOOKS; i++) {
+-              if ((h->info.valid_hooks & (1 << i))
+-                  && get_entry(h, h->info.hook_entry[i]) == e)
+-                      return i+1;
+-      }
+-      return 0;
+-}
+-
+-static inline int
+-add_chain(STRUCT_ENTRY *e, TC_HANDLE_T h, STRUCT_ENTRY **prev)
+-{
+-      unsigned int builtin;
+-
+-      /* Last entry.  End it. */
+-      if (entry2offset(h, e) + e->next_offset == h->entries.size) {
+-              /* This is the ERROR node at end of the table */
+-              h->cache_chain_heads[h->cache_num_chains-1].end = *prev;
+-              return 0;
+-      }
+-
+-      /* We know this is the start of a new chain if it's an ERROR
+-         target, or a hook entry point */
+-      if (strcmp(GET_TARGET(e)->u.user.name, ERROR_TARGET) == 0) {
+-              /* prev was last entry in previous chain */
+-              h->cache_chain_heads[h->cache_num_chains-1].end
+-                      = *prev;
+-
+-              strcpy(h->cache_chain_heads[h->cache_num_chains].name,
+-                     (const char *)GET_TARGET(e)->data);
+-              h->cache_chain_heads[h->cache_num_chains].start
+-                      = (void *)e + e->next_offset;
+-              h->cache_num_chains++;
+-      } else if ((builtin = is_hook_entry(e, h)) != 0) {
+-              if (h->cache_num_chains > 0)
+-                      /* prev was last entry in previous chain */
+-                      h->cache_chain_heads[h->cache_num_chains-1].end
+-                              = *prev;
+-
+-              strcpy(h->cache_chain_heads[h->cache_num_chains].name,
+-                     h->hooknames[builtin-1]);
+-              h->cache_chain_heads[h->cache_num_chains].start
+-                      = (void *)e;
+-              h->cache_num_chains++;
+-      }
+-
+-      *prev = e;
+-      return 0;
+-}
+-
+-static int alphasort(const void *a, const void *b)
+-{
+-      return strcmp(((struct chain_cache *)a)->name,
+-                    ((struct chain_cache *)b)->name);
+-}
+-
+-static int populate_cache(TC_HANDLE_T h)
+-{
+-      unsigned int i;
+-      STRUCT_ENTRY *prev;
+-
+-      /* # chains < # rules / 2 + num builtins - 1 */
+-      h->cache_chain_heads = malloc((h->new_number / 2 + 4)
+-                                    * sizeof(struct chain_cache));
+-      if (!h->cache_chain_heads) {
+-              errno = ENOMEM;
+-              return 0;
+-      }
+-
+-      h->cache_num_chains = 0;
+-      h->cache_num_builtins = 0;
+-
+-      /* Count builtins */
+-      for (i = 0; i < NUMHOOKS; i++) {
+-              if (h->info.valid_hooks & (1 << i))
+-                      h->cache_num_builtins++;
+-      }
+-
+-      prev = NULL;
+-      ENTRY_ITERATE(h->entries.entrytable, h->entries.size,
+-                    add_chain, h, &prev);
+-
+-      qsort(h->cache_chain_heads + h->cache_num_builtins,
+-            h->cache_num_chains - h->cache_num_builtins,
+-            sizeof(struct chain_cache), alphasort);
+-
+-      return 1;
+-}
+-
+-/* Returns cache ptr if found, otherwise NULL. */
+-static struct chain_cache *
+-find_label(const char *name, TC_HANDLE_T handle)
+-{
+-      unsigned int i;
+-
+-      if (handle->cache_chain_heads == NULL
+-          && !populate_cache(handle))
+-              return NULL;
+-
+-      /* FIXME: Linear search through builtins, then binary --RR */
+-      for (i = 0; i < handle->cache_num_chains; i++) {
+-              if (strcmp(handle->cache_chain_heads[i].name, name) == 0)
+-                      return &handle->cache_chain_heads[i];
+-      }
+-
+-      return NULL;
++#endif
+ }
+ /* Does this chain exist? */
+ int TC_IS_CHAIN(const char *chain, const TC_HANDLE_T handle)
+ {
+-      return find_label(chain, handle) != NULL;
++      iptc_fn = TC_IS_CHAIN;
++      return iptcc_find_label(chain, handle) != NULL;
+ }
+-/* Returns the position of the final (ie. unconditional) element. */
+-static unsigned int
+-get_chain_end(const TC_HANDLE_T handle, unsigned int start)
++static void iptcc_chain_iterator_advance(TC_HANDLE_T handle)
+ {
+-      unsigned int last_off, off;
+-      STRUCT_ENTRY *e;
+-
+-      last_off = start;
+-      e = get_entry(handle, start);
+-
+-      /* Terminate when we meet a error label or a hook entry. */
+-      for (off = start + e->next_offset;
+-           off < handle->entries.size;
+-           last_off = off, off += e->next_offset) {
+-              STRUCT_ENTRY_TARGET *t;
+-              unsigned int i;
+-
+-              e = get_entry(handle, off);
+-
+-              /* We hit an entry point. */
+-              for (i = 0; i < NUMHOOKS; i++) {
+-                      if ((handle->info.valid_hooks & (1 << i))
+-                          && off == handle->info.hook_entry[i])
+-                              return last_off;
+-              }
++      struct chain_head *c = handle->chain_iterator_cur;
+-              /* We hit a user chain label */
+-              t = GET_TARGET(e);
+-              if (strcmp(t->u.user.name, ERROR_TARGET) == 0)
+-                      return last_off;
+-      }
+-      /* SHOULD NEVER HAPPEN */
+-      fprintf(stderr, "ERROR: Off end (%u) of chain from %u!\n",
+-              handle->entries.size, off);
+-      abort();
++      if (c->list.next == &handle->chains)
++              handle->chain_iterator_cur = NULL;
++      else
++              handle->chain_iterator_cur = 
++                      list_entry(c->list.next, struct chain_head, list);
+ }
+ /* Iterator functions to run through the chains. */
+ const char *
+ TC_FIRST_CHAIN(TC_HANDLE_T *handle)
+ {
+-      if ((*handle)->cache_chain_heads == NULL
+-          && !populate_cache(*handle))
++      struct chain_head *c = list_entry((*handle)->chains.next,
++                                        struct chain_head, list);
++
++      iptc_fn = TC_FIRST_CHAIN;
++
++
++      if (list_empty(&(*handle)->chains)) {
++              DEBUGP(": no chains\n");
+               return NULL;
++      }
+-      (*handle)->cache_chain_iteration
+-              = &(*handle)->cache_chain_heads[0];
++      (*handle)->chain_iterator_cur = c;
++      iptcc_chain_iterator_advance(*handle);
+-      return (*handle)->cache_chain_iteration->name;
++      DEBUGP(": returning `%s'\n", c->name);
++      return c->name;
+ }
+ /* Iterator functions to run through the chains.  Returns NULL at end. */
+ const char *
+ TC_NEXT_CHAIN(TC_HANDLE_T *handle)
+ {
+-      (*handle)->cache_chain_iteration++;
++      struct chain_head *c = (*handle)->chain_iterator_cur;
+-      if ((*handle)->cache_chain_iteration - (*handle)->cache_chain_heads
+-          == (*handle)->cache_num_chains)
++      iptc_fn = TC_NEXT_CHAIN;
++
++      if (!c) {
++              DEBUGP(": no more chains\n");
+               return NULL;
++      }
+-      return (*handle)->cache_chain_iteration->name;
++      iptcc_chain_iterator_advance(*handle);
++
++      DEBUGP(": returning `%s'\n", c->name);
++      return c->name;
+ }
+ /* Get first rule in the given chain: NULL for empty chain. */
+ const STRUCT_ENTRY *
+ TC_FIRST_RULE(const char *chain, TC_HANDLE_T *handle)
+ {
+-      struct chain_cache *c;
++      struct chain_head *c;
++      struct rule_head *r;
++
++      iptc_fn = TC_FIRST_RULE;
++
++      DEBUGP("first rule(%s): ", chain);
+-      c = find_label(chain, *handle);
++      c = iptcc_find_label(chain, *handle);
+       if (!c) {
+               errno = ENOENT;
+               return NULL;
+       }
+       /* Empty chain: single return/policy rule */
+-      if (c->start == c->end)
++      if (list_empty(&c->rules)) {
++              DEBUGP_C("no rules, returning NULL\n");
+               return NULL;
++      }
++
++      r = list_entry(c->rules.next, struct rule_head, list);
++      (*handle)->rule_iterator_cur = r;
++      DEBUGP_C("%p\n", r);
+-      (*handle)->cache_rule_end = c->end;
+-      return c->start;
++      return r->entry;
+ }
+ /* Returns NULL when rules run out. */
+ const STRUCT_ENTRY *
+ TC_NEXT_RULE(const STRUCT_ENTRY *prev, TC_HANDLE_T *handle)
+ {
+-      if ((void *)prev + prev->next_offset
+-          == (void *)(*handle)->cache_rule_end)
++      struct rule_head *r;
++
++      iptc_fn = TC_NEXT_RULE;
++      DEBUGP("rule_iterator_cur=%p...", (*handle)->rule_iterator_cur);
++
++      if (!(*handle)->rule_iterator_cur) {
++              DEBUGP_C("returning NULL\n");
++              return NULL;
++      }
++      
++      r = list_entry((*handle)->rule_iterator_cur->list.next, 
++                      struct rule_head, list);
++
++      iptc_fn = TC_NEXT_RULE;
++
++      DEBUGP_C("next=%p, head=%p...", &r->list, 
++              &(*handle)->rule_iterator_cur->chain->rules);
++
++      if (&r->list == &(*handle)->rule_iterator_cur->chain->rules) {
++              (*handle)->rule_iterator_cur = NULL;
++              DEBUGP_C("finished, returning NULL\n");
+               return NULL;
++      }
++
++      (*handle)->rule_iterator_cur = r;
+-      return (void *)prev + prev->next_offset;
++      /* NOTE: prev is without any influence ! */
++      DEBUGP_C("returning rule %p\n", r);
++      return r->entry;
+ }
+-#if 0
+ /* How many rules in this chain? */
+ unsigned int
+ TC_NUM_RULES(const char *chain, TC_HANDLE_T *handle)
+ {
+-      unsigned int off = 0;
+-      STRUCT_ENTRY *start, *end;
+-
++      struct chain_head *c;
++      iptc_fn = TC_NUM_RULES;
+       CHECK(*handle);
+-      if (!find_label(&off, chain, *handle)) {
++
++      c = iptcc_find_label(chain, *handle);
++      if (!c) {
+               errno = ENOENT;
+               return (unsigned int)-1;
+       }
+-      start = get_entry(*handle, off);
+-      end = get_entry(*handle, get_chain_end(*handle, off));
+-
+-      return entry2index(*handle, end) - entry2index(*handle, start);
++      return c->num_rules;
+ }
+-/* Get n'th rule in this chain. */
+ const STRUCT_ENTRY *TC_GET_RULE(const char *chain,
+                               unsigned int n,
+                               TC_HANDLE_T *handle)
+ {
+-      unsigned int pos = 0, chainindex;
++      struct chain_head *c;
++      struct rule_head *r;
++      
++      iptc_fn = TC_GET_RULE;
+       CHECK(*handle);
+-      if (!find_label(&pos, chain, *handle)) {
++
++      c = iptcc_find_label(chain, *handle);
++      if (!c) {
+               errno = ENOENT;
+               return NULL;
+       }
+-      chainindex = entry2index(*handle, get_entry(*handle, pos));
+-
+-      return index2entry(*handle, chainindex + n);
++      r = iptcc_get_rule_num(c, n);
++      if (!r)
++              return NULL;
++      return r->entry;
+ }
+-#endif
+-static const char *
+-target_name(TC_HANDLE_T handle, const STRUCT_ENTRY *ce)
++/* Returns a pointer to the target name of this position. */
++const char *standard_target_map(int verdict)
+ {
+-      int spos;
+-      unsigned int labelidx;
+-      STRUCT_ENTRY *jumpto;
+-
+-      /* To avoid const warnings */
+-      STRUCT_ENTRY *e = (STRUCT_ENTRY *)ce;
+-
+-      if (strcmp(GET_TARGET(e)->u.user.name, STANDARD_TARGET) != 0)
+-              return GET_TARGET(e)->u.user.name;
+-
+-      /* Standard target: evaluate */
+-      spos = *(int *)GET_TARGET(e)->data;
+-      if (spos < 0) {
+-              if (spos == RETURN)
++      switch (verdict) {
++              case RETURN:
+                       return LABEL_RETURN;
+-              else if (spos == -NF_ACCEPT-1)
++                      break;
++              case -NF_ACCEPT-1:
+                       return LABEL_ACCEPT;
+-              else if (spos == -NF_DROP-1)
++                      break;
++              case -NF_DROP-1:
+                       return LABEL_DROP;
+-              else if (spos == -NF_QUEUE-1)
++                      break;
++              case -NF_QUEUE-1:
+                       return LABEL_QUEUE;
+-
+-              fprintf(stderr, "ERROR: off %lu/%u not a valid target (%i)\n",
+-                      entry2offset(handle, e), handle->entries.size,
+-                      spos);
++                      break;
++              default:
++                      fprintf(stderr, "ERROR: %d not a valid target)\n",
++                              verdict);
+               abort();
++                      break;
+       }
+-
+-      jumpto = get_entry(handle, spos);
+-
+-      /* Fall through rule */
+-      if (jumpto == (void *)e + e->next_offset)
+-              return "";
+-
+-      /* Must point to head of a chain: ie. after error rule */
+-      labelidx = entry2index(handle, jumpto) - 1;
+-      return get_errorlabel(handle, index2offset(handle, labelidx));
++      /* not reached */
++      return NULL;
+ }
+ /* Returns a pointer to the target name of this position. */
+-const char *TC_GET_TARGET(const STRUCT_ENTRY *e,
++const char *TC_GET_TARGET(const STRUCT_ENTRY *ce,
+                         TC_HANDLE_T *handle)
+ {
+-      return target_name(*handle, e);
++      STRUCT_ENTRY *e = (STRUCT_ENTRY *)ce;
++      struct rule_head *r = container_of(e, struct rule_head, entry[0]);
++
++      iptc_fn = TC_GET_TARGET;
++
++      switch(r->type) {
++              int spos;
++              case IPTCC_R_FALLTHROUGH:
++                      return "";
++                      break;
++              case IPTCC_R_JUMP:
++                      DEBUGP("r=%p, jump=%p, name=`%s'\n", r, r->jump, r->jump->name);
++                      return r->jump->name;
++                      break;
++              case IPTCC_R_STANDARD:
++                      spos = *(int *)GET_TARGET(e)->data;
++                      DEBUGP("r=%p, spos=%d'\n", r, spos);
++                      return standard_target_map(spos);
++                      break;
++              case IPTCC_R_MODULE:
++                      return GET_TARGET(e)->u.user.name;
++                      break;
++}
++              return NULL;
+ }
+-
+ /* Is this a built-in chain?  Actually returns hook + 1. */
+ int
+ TC_BUILTIN(const char *chain, const TC_HANDLE_T handle)
+ {
+-      unsigned int i;
++      struct chain_head *c;
+-      for (i = 0; i < NUMHOOKS; i++) {
+-              if ((handle->info.valid_hooks & (1 << i))
+-                  && handle->hooknames[i]
+-                  && strcmp(handle->hooknames[i], chain) == 0)
+-                      return i+1;
+-      }
++      iptc_fn = TC_BUILTIN;
++
++      c = iptcc_find_label(chain, handle);
++      if (!c) {
++              errno = ENOENT;
+       return 0;
+ }
++      return iptcc_is_builtin(c);
++}
++
+ /* Get the policy of a given built-in chain */
+ const char *
+ TC_GET_POLICY(const char *chain,
+             STRUCT_COUNTERS *counters,
+-            TC_HANDLE_T *handle)
+-{
+-      unsigned int start;
+-      STRUCT_ENTRY *e;
+-      int hook;
+-
+-      hook = TC_BUILTIN(chain, *handle);
+-      if (hook != 0)
+-              start = (*handle)->info.hook_entry[hook-1];
+-      else
+-              return NULL;
+-
+-      e = get_entry(*handle, get_chain_end(*handle, start));
+-      *counters = e->counters;
+-
+-      return target_name(*handle, e);
+-}
+-
+-static int
+-correct_verdict(STRUCT_ENTRY *e,
+-              char *base,
+-              unsigned int offset, int delta_offset)
+-{
+-      STRUCT_STANDARD_TARGET *t = (void *)GET_TARGET(e);
+-      unsigned int curr = (char *)e - base;
+-
+-      /* Trap: insert of fall-through rule.  Don't change fall-through
+-         verdict to jump-over-next-rule. */
+-      if (strcmp(t->target.u.user.name, STANDARD_TARGET) == 0
+-          && t->verdict > (int)offset
+-          && !(curr == offset &&
+-               t->verdict == curr + e->next_offset)) {
+-              t->verdict += delta_offset;
+-      }
+-
+-      return 0;
+-}
+-
+-/* Adjusts standard verdict jump positions after an insertion/deletion. */
+-static int
+-set_verdict(unsigned int offset, int delta_offset, TC_HANDLE_T *handle)
+-{
+-      ENTRY_ITERATE((*handle)->entries.entrytable,
+-                    (*handle)->entries.size,
+-                    correct_verdict, (char *)(*handle)->entries.entrytable,
+-                    offset, delta_offset);
+-
+-      set_changed(*handle);
+-      return 1;
+-}
+-
+-/* If prepend is set, then we are prepending to a chain: if the
+- * insertion position is an entry point, keep the entry point. */
+-static int
+-insert_rules(unsigned int num_rules, unsigned int rules_size,
+-           const STRUCT_ENTRY *insert,
+-           unsigned int offset, unsigned int num_rules_offset,
+-           int prepend,
+            TC_HANDLE_T *handle)
+ {
+-      TC_HANDLE_T newh;
+-      STRUCT_GETINFO newinfo;
+-      unsigned int i;
+-
+-      if (offset >= (*handle)->entries.size) {
+-              errno = EINVAL;
+-              return 0;
+-      }
++      struct chain_head *c;
+-      newinfo = (*handle)->info;
+-
+-      /* Fix up entry points. */
+-      for (i = 0; i < NUMHOOKS; i++) {
+-              /* Entry points to START of chain, so keep same if
+-                   inserting on at that point. */
+-              if ((*handle)->info.hook_entry[i] > offset)
+-                      newinfo.hook_entry[i] += rules_size;
+-
+-              /* Underflow always points to END of chain (policy),
+-                 so if something is inserted at same point, it
+-                 should be advanced. */
+-              if ((*handle)->info.underflow[i] >= offset)
+-                      newinfo.underflow[i] += rules_size;
+-      }
+-
+-      newh = alloc_handle((*handle)->info.name,
+-                          (*handle)->entries.size + rules_size,
+-                          (*handle)->new_number + num_rules);
+-      if (!newh)
+-              return 0;
+-      newh->info = newinfo;
+-
+-      /* Copy pre... */
+-      memcpy(newh->entries.entrytable, (*handle)->entries.entrytable,offset);
+-      /* ... Insert new ... */
+-      memcpy((char *)newh->entries.entrytable + offset, insert, rules_size);
+-      /* ... copy post */
+-      memcpy((char *)newh->entries.entrytable + offset + rules_size,
+-             (char *)(*handle)->entries.entrytable + offset,
+-             (*handle)->entries.size - offset);
+-
+-      /* Move counter map. */
+-      /* Copy pre... */
+-      memcpy(newh->counter_map, (*handle)->counter_map,
+-             sizeof(struct counter_map) * num_rules_offset);
+-      /* ... copy post */
+-      memcpy(newh->counter_map + num_rules_offset + num_rules,
+-             (*handle)->counter_map + num_rules_offset,
+-             sizeof(struct counter_map) * ((*handle)->new_number
+-                                           - num_rules_offset));
+-      /* Set intermediates to no counter copy */
+-      for (i = 0; i < num_rules; i++)
+-              newh->counter_map[num_rules_offset+i]
+-                      = ((struct counter_map){ COUNTER_MAP_SET, 0 });
+-
+-      newh->new_number = (*handle)->new_number + num_rules;
+-      newh->entries.size = (*handle)->entries.size + rules_size;
+-      newh->hooknames = (*handle)->hooknames;
+-
+-      if ((*handle)->cache_chain_heads)
+-              free((*handle)->cache_chain_heads);
+-      free(*handle);
+-      *handle = newh;
+-
+-      return set_verdict(offset, rules_size, handle);
+-}
+-
+-static int
+-delete_rules(unsigned int num_rules, unsigned int rules_size,
+-           unsigned int offset, unsigned int num_rules_offset,
+-           TC_HANDLE_T *handle)
+-{
+-      unsigned int i;
++      iptc_fn = TC_GET_POLICY;
+-      if (offset + rules_size > (*handle)->entries.size) {
+-              errno = EINVAL;
+-              return 0;
+-      }
++      DEBUGP("called for chain %s\n", chain);
+-      /* Fix up entry points. */
+-      for (i = 0; i < NUMHOOKS; i++) {
+-              /* In practice, we never delete up to a hook entry,
+-                 since the built-in chains are always first,
+-                 so these two are never equal */
+-              if ((*handle)->info.hook_entry[i] >= offset + rules_size)
+-                      (*handle)->info.hook_entry[i] -= rules_size;
+-              else if ((*handle)->info.hook_entry[i] > offset) {
+-                      fprintf(stderr, "ERROR: Deleting entry %u %u %u\n",
+-                              i, (*handle)->info.hook_entry[i], offset);
+-                      abort();
++      c = iptcc_find_label(chain, *handle);
++      if (!c) {
++              errno = ENOENT;
++              return NULL;
+               }
+-              /* Underflow points to policy (terminal) rule in
+-                   built-in, so sequality is valid here (when deleting
+-                   the last rule). */
+-              if ((*handle)->info.underflow[i] >= offset + rules_size)
+-                      (*handle)->info.underflow[i] -= rules_size;
+-              else if ((*handle)->info.underflow[i] > offset) {
+-                      fprintf(stderr, "ERROR: Deleting uflow %u %u %u\n",
+-                              i, (*handle)->info.underflow[i], offset);
+-                      abort();
+-              }
+-      }
++      if (!iptcc_is_builtin(c))
++              return NULL;
+-      /* Move the rules down. */
+-      memmove((char *)(*handle)->entries.entrytable + offset,
+-              (char *)(*handle)->entries.entrytable + offset + rules_size,
+-              (*handle)->entries.size - (offset + rules_size));
+-
+-      /* Move the counter map down. */
+-      memmove(&(*handle)->counter_map[num_rules_offset],
+-              &(*handle)->counter_map[num_rules_offset + num_rules],
+-              sizeof(struct counter_map)
+-              * ((*handle)->new_number - (num_rules + num_rules_offset)));
+-
+-      /* Fix numbers */
+-      (*handle)->new_number -= num_rules;
+-      (*handle)->entries.size -= rules_size;
++      *counters = c->counters;
+-      return set_verdict(offset, -(int)rules_size, handle);
++      return standard_target_map(c->verdict);
+ }
+ static int
+-standard_map(STRUCT_ENTRY *e, int verdict)
++iptcc_standard_map(struct rule_head *r, int verdict)
+ {
++      STRUCT_ENTRY *e = r->entry;
+       STRUCT_STANDARD_TARGET *t;
+       t = (STRUCT_STANDARD_TARGET *)GET_TARGET(e);
+@@ -847,64 +1217,62 @@
+       strcpy(t->target.u.user.name, STANDARD_TARGET);
+       t->verdict = verdict;
++      r->type = IPTCC_R_STANDARD;
++
+       return 1;
+ }
+ static int
+-map_target(const TC_HANDLE_T handle,
+-         STRUCT_ENTRY *e,
+-         unsigned int offset,
+-         STRUCT_ENTRY_TARGET *old)
++iptcc_map_target(const TC_HANDLE_T handle,
++         struct rule_head *r)
+ {
++      STRUCT_ENTRY *e = r->entry;
+       STRUCT_ENTRY_TARGET *t = GET_TARGET(e);
+-      /* Save old target (except data, which we don't change, except for
+-         standard case, where we don't care). */
+-      *old = *t;
+-
+       /* Maybe it's empty (=> fall through) */
+-      if (strcmp(t->u.user.name, "") == 0)
+-              return standard_map(e, offset + e->next_offset);
++      if (strcmp(t->u.user.name, "") == 0) {
++              r->type = IPTCC_R_FALLTHROUGH;
++              return 1;
++      }
+       /* Maybe it's a standard target name... */
+       else if (strcmp(t->u.user.name, LABEL_ACCEPT) == 0)
+-              return standard_map(e, -NF_ACCEPT - 1);
++              return iptcc_standard_map(r, -NF_ACCEPT - 1);
+       else if (strcmp(t->u.user.name, LABEL_DROP) == 0)
+-              return standard_map(e, -NF_DROP - 1);
++              return iptcc_standard_map(r, -NF_DROP - 1);
+       else if (strcmp(t->u.user.name, LABEL_QUEUE) == 0)
+-              return standard_map(e, -NF_QUEUE - 1);
++              return iptcc_standard_map(r, -NF_QUEUE - 1);
+       else if (strcmp(t->u.user.name, LABEL_RETURN) == 0)
+-              return standard_map(e, RETURN);
++              return iptcc_standard_map(r, RETURN);
+       else if (TC_BUILTIN(t->u.user.name, handle)) {
+               /* Can't jump to builtins. */
+               errno = EINVAL;
+               return 0;
+       } else {
+               /* Maybe it's an existing chain name. */
+-              struct chain_cache *c;
++              struct chain_head *c;
++              DEBUGP("trying to find chain `%s': ", t->u.user.name);
+-              c = find_label(t->u.user.name, handle);
+-              if (c)
+-                      return standard_map(e, entry2offset(handle, c->start));
++              c = iptcc_find_label(t->u.user.name, handle);
++              if (c) {
++                      DEBUGP_C("found!\n");
++                      r->type = IPTCC_R_JUMP;
++                      r->jump = c;
++                      c->references++;
++      return 1;
++}
++              DEBUGP_C("not found :(\n");
+       }
+       /* Must be a module?  If not, kernel will reject... */
+-      /* memset to all 0 for your memcmp convenience. */
++      /* memset to all 0 for your memcmp convenience: don't clear version */
+       memset(t->u.user.name + strlen(t->u.user.name),
+              0,
+-             FUNCTION_MAXNAMELEN - strlen(t->u.user.name));
++             FUNCTION_MAXNAMELEN - 1 - strlen(t->u.user.name));
++      r->type = IPTCC_R_MODULE;
++      set_changed(handle);
+       return 1;
+ }
+-static void
+-unmap_target(STRUCT_ENTRY *e, STRUCT_ENTRY_TARGET *old)
+-{
+-      STRUCT_ENTRY_TARGET *t = GET_TARGET(e);
+-
+-      /* Save old target (except data, which we don't change, except for
+-         standard case, where we don't care). */
+-      *t = *old;
+-}
+-
+ /* Insert the entry `fw' in chain `chain' into position `rulenum'. */
+ int
+ TC_INSERT_ENTRY(const IPT_CHAINLABEL chain,
+@@ -912,36 +1280,56 @@
+               unsigned int rulenum,
+               TC_HANDLE_T *handle)
+ {
+-      unsigned int chainindex, offset;
+-      STRUCT_ENTRY_TARGET old;
+-      struct chain_cache *c;
+-      STRUCT_ENTRY *tmp;
+-      int ret;
++      struct chain_head *c;
++      struct rule_head *r;
++      struct list_head *prev;
+       iptc_fn = TC_INSERT_ENTRY;
+-      if (!(c = find_label(chain, *handle))) {
++
++      if (!(c = iptcc_find_label(chain, *handle))) {
+               errno = ENOENT;
+               return 0;
+       }
+-      chainindex = entry2index(*handle, c->start);
+-
+-      tmp = index2entry(*handle, chainindex + rulenum);
+-      if (!tmp || tmp > c->end) {
++      /* first rulenum index = 0
++         first c->num_rules index = 1 */
++      if (rulenum > c->num_rules) {
+               errno = E2BIG;
+               return 0;
+       }
+-      offset = index2offset(*handle, chainindex + rulenum);
+-      /* Mapping target actually alters entry, but that's
+-           transparent to the caller. */
+-      if (!map_target(*handle, (STRUCT_ENTRY *)e, offset, &old))
++      /* If we are inserting at the end just take advantage of the
++         double linked list, insert will happen before the entry
++         prev points to. */
++      if (rulenum == c->num_rules) {
++              prev = &c->rules;
++      } else if (rulenum + 1 <= c->num_rules/2) {
++              r = iptcc_get_rule_num(c, rulenum + 1);
++              prev = &r->list;
++      } else {
++              r = iptcc_get_rule_num_reverse(c, c->num_rules - rulenum);
++              prev = &r->list;
++      }
++
++      if (!(r = iptcc_alloc_rule(c, e->next_offset))) {
++              errno = ENOMEM;
++              return 0;
++      }
++
++      memcpy(r->entry, e, e->next_offset);
++      r->counter_map.maptype = COUNTER_MAP_SET;
++
++      if (!iptcc_map_target(*handle, r)) {
++              free(r);
+               return 0;
++      }
++
++      list_add_tail(&r->list, prev);
++      c->num_rules++;
++
++      set_changed(*handle);
+-      ret = insert_rules(1, e->next_offset, e, offset,
+-                         chainindex + rulenum, rulenum == 0, handle);
+-      unmap_target((STRUCT_ENTRY *)e, &old);
+-      return ret;
++      return 1;
+ }
+ /* Atomically replace rule `rulenum' in `chain' with `fw'. */
+@@ -951,40 +1339,47 @@
+                unsigned int rulenum,
+                TC_HANDLE_T *handle)
+ {
+-      unsigned int chainindex, offset;
+-      STRUCT_ENTRY_TARGET old;
+-      struct chain_cache *c;
+-      STRUCT_ENTRY *tmp;
+-      int ret;
++      struct chain_head *c;
++      struct rule_head *r, *old;
+       iptc_fn = TC_REPLACE_ENTRY;
+-      if (!(c = find_label(chain, *handle))) {
++      if (!(c = iptcc_find_label(chain, *handle))) {
+               errno = ENOENT;
+               return 0;
+       }
+-      chainindex = entry2index(*handle, c->start);
+-
+-      tmp = index2entry(*handle, chainindex + rulenum);
+-      if (!tmp || tmp >= c->end) {
++      if (rulenum >= c->num_rules) {
+               errno = E2BIG;
+               return 0;
+       }
+-      offset = index2offset(*handle, chainindex + rulenum);
+-      /* Replace = delete and insert. */
+-      if (!delete_rules(1, get_entry(*handle, offset)->next_offset,
+-                        offset, chainindex + rulenum, handle))
++      /* Take advantage of the double linked list if possible. */
++      if (rulenum + 1 <= c->num_rules/2) {
++              old = iptcc_get_rule_num(c, rulenum + 1);
++      } else {
++              old = iptcc_get_rule_num_reverse(c, c->num_rules - rulenum);
++      }
++
++      if (!(r = iptcc_alloc_rule(c, e->next_offset))) {
++              errno = ENOMEM;
+               return 0;
++      }
+-      if (!map_target(*handle, (STRUCT_ENTRY *)e, offset, &old))
++      memcpy(r->entry, e, e->next_offset);
++      r->counter_map.maptype = COUNTER_MAP_SET;
++
++      if (!iptcc_map_target(*handle, r)) {
++              free(r);
+               return 0;
++      }
++
++      list_add(&r->list, &old->list);
++      iptcc_delete_rule(old);
++
++      set_changed(*handle);
+-      ret = insert_rules(1, e->next_offset, e, offset,
+-                         chainindex + rulenum, 1, handle);
+-      unmap_target((STRUCT_ENTRY *)e, &old);
+-      return ret;
++      return 1;
+ }
+ /* Append entry `fw' to chain `chain'.  Equivalent to insert with
+@@ -994,26 +1389,37 @@
+               const STRUCT_ENTRY *e,
+               TC_HANDLE_T *handle)
+ {
+-      struct chain_cache *c;
+-      STRUCT_ENTRY_TARGET old;
+-      int ret;
++      struct chain_head *c;
++      struct rule_head *r;
+       iptc_fn = TC_APPEND_ENTRY;
+-      if (!(c = find_label(chain, *handle))) {
++      if (!(c = iptcc_find_label(chain, *handle))) {
++              DEBUGP("unable to find chain `%s'\n", chain);
+               errno = ENOENT;
+               return 0;
+       }
+-      if (!map_target(*handle, (STRUCT_ENTRY *)e,
+-                      entry2offset(*handle, c->end), &old))
++      if (!(r = iptcc_alloc_rule(c, e->next_offset))) {
++              DEBUGP("unable to allocate rule for chain `%s'\n", chain);
++              errno = ENOMEM;
++              return 0;
++      }
++
++      memcpy(r->entry, e, e->next_offset);
++      r->counter_map.maptype = COUNTER_MAP_SET;
++
++      if (!iptcc_map_target(*handle, r)) {
++              DEBUGP("unable to map target of rule for chain `%s'\n", chain);
++              free(r);
+               return 0;
++      }
++
++      list_add_tail(&r->list, &c->rules);
++      c->num_rules++;
++
++      set_changed(*handle);
+-      ret = insert_rules(1, e->next_offset, e,
+-                         entry2offset(*handle, c->end),
+-                         entry2index(*handle, c->end),
+-                         0, handle);
+-      unmap_target((STRUCT_ENTRY *)e, &old);
+-      return ret;
++      return 1;
+ }
+ static inline int
+@@ -1044,20 +1450,42 @@
+ }
+ static inline int
+-target_different(const unsigned char *a_targdata,
+-               const unsigned char *b_targdata,
+-               unsigned int tdatasize,
+-               const unsigned char *mask)
++target_same(struct rule_head *a, struct rule_head *b,const unsigned char *mask)
+ {
+       unsigned int i;
+-      for (i = 0; i < tdatasize; i++)
+-              if (((a_targdata[i] ^ b_targdata[i]) & mask[i]) != 0)
++      STRUCT_ENTRY_TARGET *ta, *tb;
++
++      if (a->type != b->type)
++              return 0;
++
++      ta = GET_TARGET(a->entry);
++      tb = GET_TARGET(b->entry);
++
++      switch (a->type) {
++      case IPTCC_R_FALLTHROUGH:
+                       return 1;
++      case IPTCC_R_JUMP:
++              return a->jump == b->jump;
++      case IPTCC_R_STANDARD:
++              return ((STRUCT_STANDARD_TARGET *)ta)->verdict
++                      == ((STRUCT_STANDARD_TARGET *)tb)->verdict;
++      case IPTCC_R_MODULE:
++              if (ta->u.target_size != tb->u.target_size)
++                      return 0;
++              if (strcmp(ta->u.user.name, tb->u.user.name) != 0)
++                      return 0;
++              for (i = 0; i < ta->u.target_size - sizeof(*ta); i++)
++                      if (((ta->data[i] ^ tb->data[i]) & mask[i]) != 0)
+       return 0;
++              return 1;
++      default:
++              fprintf(stderr, "ERROR: bad type %i\n", a->type);
++              abort();
++      }
+ }
+-static int
++static unsigned char *
+ is_same(const STRUCT_ENTRY *a,
+       const STRUCT_ENTRY *b,
+       unsigned char *matchmask);
+@@ -1069,88 +1497,106 @@
+               unsigned char *matchmask,
+               TC_HANDLE_T *handle)
+ {
+-      unsigned int offset;
+-      struct chain_cache *c;
+-      STRUCT_ENTRY *e, *fw;
++      struct chain_head *c;
++      struct rule_head *r, *i;
+       iptc_fn = TC_DELETE_ENTRY;
+-      if (!(c = find_label(chain, *handle))) {
++      if (!(c = iptcc_find_label(chain, *handle))) {
+               errno = ENOENT;
+               return 0;
+       }
+-      fw = malloc(origfw->next_offset);
+-      if (fw == NULL) {
++      /* Create a rule_head from origfw. */
++      r = iptcc_alloc_rule(c, origfw->next_offset);
++      if (!r) {
+               errno = ENOMEM;
+               return 0;
+       }
+-      for (offset = entry2offset(*handle, c->start);
+-           offset < entry2offset(*handle, c->end);
+-           offset += e->next_offset) {
+-              STRUCT_ENTRY_TARGET discard;
+-
+-              memcpy(fw, origfw, origfw->next_offset);
+-
+-              /* FIXME: handle this in is_same --RR */
+-              if (!map_target(*handle, fw, offset, &discard)) {
+-                      free(fw);
++      memcpy(r->entry, origfw, origfw->next_offset);
++      r->counter_map.maptype = COUNTER_MAP_NOMAP;
++      if (!iptcc_map_target(*handle, r)) {
++              DEBUGP("unable to map target of rule for chain `%s'\n", chain);
++              free(r);
+                       return 0;
+               }
+-              e = get_entry(*handle, offset);
+-#if 0
+-              printf("Deleting:\n");
+-              dump_entry(newe);
+-#endif
+-              if (is_same(e, fw, matchmask)) {
+-                      int ret;
+-                      ret = delete_rules(1, e->next_offset,
+-                                         offset, entry2index(*handle, e),
+-                                         handle);
+-                      free(fw);
+-                      return ret;
++      list_for_each_entry(i, &c->rules, list) {
++              unsigned char *mask;
++
++              mask = is_same(r->entry, i->entry, matchmask);
++              if (!mask)
++                      continue;
++
++              if (!target_same(r, i, mask))
++                      continue;
++
++              /* If we are about to delete the rule that is the
++               * current iterator, move rule iterator back.  next
++               * pointer will then point to real next node */
++              if (i == (*handle)->rule_iterator_cur) {
++                      (*handle)->rule_iterator_cur = 
++                              list_entry((*handle)->rule_iterator_cur->list.prev,
++                                         struct rule_head, list);
+               }
++
++              c->num_rules--;
++              iptcc_delete_rule(i);
++
++              set_changed(*handle);
++              free(r);
++              return 1;
+       }
+-      free(fw);
++      free(r);
+       errno = ENOENT;
+       return 0;
+ }
++
+ /* Delete the rule in position `rulenum' in `chain'. */
+ int
+ TC_DELETE_NUM_ENTRY(const IPT_CHAINLABEL chain,
+                   unsigned int rulenum,
+                   TC_HANDLE_T *handle)
+ {
+-      unsigned int index;
+-      int ret;
+-      STRUCT_ENTRY *e;
+-      struct chain_cache *c;
++      struct chain_head *c;
++      struct rule_head *r;
+       iptc_fn = TC_DELETE_NUM_ENTRY;
+-      if (!(c = find_label(chain, *handle))) {
++
++      if (!(c = iptcc_find_label(chain, *handle))) {
+               errno = ENOENT;
+               return 0;
+       }
+-      index = entry2index(*handle, c->start) + rulenum;
+-
+-      if (index >= entry2index(*handle, c->end)) {
++      if (rulenum >= c->num_rules) {
+               errno = E2BIG;
+               return 0;
+       }
+-      e = index2entry(*handle, index);
+-      if (e == NULL) {
+-              errno = EINVAL;
+-              return 0;
++      /* Take advantage of the double linked list if possible. */
++      if (rulenum + 1 <= c->num_rules/2) {
++              r = iptcc_get_rule_num(c, rulenum + 1);
++      } else {
++              r = iptcc_get_rule_num_reverse(c, c->num_rules - rulenum);
++      }
++
++      /* If we are about to delete the rule that is the current
++       * iterator, move rule iterator back.  next pointer will then
++       * point to real next node */
++      if (r == (*handle)->rule_iterator_cur) {
++              (*handle)->rule_iterator_cur = 
++                      list_entry((*handle)->rule_iterator_cur->list.prev,
++                                 struct rule_head, list);
+       }
+-      ret = delete_rules(1, e->next_offset, entry2offset(*handle, e),
+-                         index, handle);
+-      return ret;
++      c->num_rules--;
++      iptcc_delete_rule(r);
++
++      set_changed(*handle);
++
++      return 1;
+ }
+ /* Check the packet `fw' on chain `chain'.  Returns the verdict, or
+@@ -1160,6 +1606,7 @@
+               STRUCT_ENTRY *entry,
+               TC_HANDLE_T *handle)
+ {
++      iptc_fn = TC_CHECK_PACKET;
+       errno = ENOSYS;
+       return NULL;
+ }
+@@ -1168,44 +1615,44 @@
+ int
+ TC_FLUSH_ENTRIES(const IPT_CHAINLABEL chain, TC_HANDLE_T *handle)
+ {
+-      unsigned int startindex, endindex;
+-      struct chain_cache *c;
+-      int ret;
++      struct chain_head *c;
++      struct rule_head *r, *tmp;
+       iptc_fn = TC_FLUSH_ENTRIES;
+-      if (!(c = find_label(chain, *handle))) {
++      if (!(c = iptcc_find_label(chain, *handle))) {
+               errno = ENOENT;
+               return 0;
+       }
+-      startindex = entry2index(*handle, c->start);
+-      endindex = entry2index(*handle, c->end);
+-      ret = delete_rules(endindex - startindex,
+-                         (char *)c->end - (char *)c->start,
+-                         entry2offset(*handle, c->start), startindex,
+-                         handle);
+-      return ret;
++      list_for_each_entry_safe(r, tmp, &c->rules, list) {
++              iptcc_delete_rule(r);
++      }
++
++      c->num_rules = 0;
++
++      set_changed(*handle);
++
++      return 1;
+ }
+ /* Zeroes the counters in a chain. */
+ int
+ TC_ZERO_ENTRIES(const IPT_CHAINLABEL chain, TC_HANDLE_T *handle)
+ {
+-      unsigned int i, end;
+-      struct chain_cache *c;
++      struct chain_head *c;
++      struct rule_head *r;
+-      if (!(c = find_label(chain, *handle))) {
++      iptc_fn = TC_ZERO_ENTRIES;
++      if (!(c = iptcc_find_label(chain, *handle))) {
+               errno = ENOENT;
+               return 0;
+       }
+-      i = entry2index(*handle, c->start);
+-      end = entry2index(*handle, c->end);
+-
+-      for (; i <= end; i++) {
+-              if ((*handle)->counter_map[i].maptype ==COUNTER_MAP_NORMAL_MAP)
+-                      (*handle)->counter_map[i].maptype = COUNTER_MAP_ZEROED;
++      list_for_each_entry(r, &c->rules, list) {
++              if (r->counter_map.maptype == COUNTER_MAP_NORMAL_MAP)
++                      r->counter_map.maptype = COUNTER_MAP_ZEROED;
+       }
++
+       set_changed(*handle);
+       return 1;
+@@ -1216,29 +1663,23 @@
+               unsigned int rulenum,
+               TC_HANDLE_T *handle)
+ {
+-      STRUCT_ENTRY *e;
+-      struct chain_cache *c;
+-      unsigned int chainindex, end;
++      struct chain_head *c;
++      struct rule_head *r;
+       iptc_fn = TC_READ_COUNTER;
+       CHECK(*handle);
+-      if (!(c = find_label(chain, *handle))) {
++      if (!(c = iptcc_find_label(chain, *handle))) {
+               errno = ENOENT;
+               return NULL;
+       }
+-      chainindex = entry2index(*handle, c->start);
+-      end = entry2index(*handle, c->end);
+-
+-      if (chainindex + rulenum > end) {
++      if (!(r = iptcc_get_rule_num(c, rulenum))) {
+               errno = E2BIG;
+               return NULL;
+       }
+-      e = index2entry(*handle, chainindex + rulenum);
+-
+-      return &e->counters;
++      return &r->entry[0].counters;
+ }
+ int
+@@ -1246,33 +1687,24 @@
+               unsigned int rulenum,
+               TC_HANDLE_T *handle)
+ {
+-      STRUCT_ENTRY *e;
+-      struct chain_cache *c;
+-      unsigned int chainindex, end;
++      struct chain_head *c;
++      struct rule_head *r;
+       
+       iptc_fn = TC_ZERO_COUNTER;
+       CHECK(*handle);
+-      if (!(c = find_label(chain, *handle))) {
++      if (!(c = iptcc_find_label(chain, *handle))) {
+               errno = ENOENT;
+               return 0;
+       }
+-      chainindex = entry2index(*handle, c->start);
+-      end = entry2index(*handle, c->end);
+-
+-      if (chainindex + rulenum > end) {
++      if (!(r = iptcc_get_rule_num(c, rulenum))) {
+               errno = E2BIG;
+               return 0;
+       }
+-      e = index2entry(*handle, chainindex + rulenum);
+-
+-//    if ((*handle)->counter_map[chainindex + rulenum].maptype
+-//                    == COUNTER_MAP_NORMAL_MAP) {
+-              (*handle)->counter_map[chainindex + rulenum].maptype
+-                       = COUNTER_MAP_ZEROED;
+-//    }
++      if (r->counter_map.maptype == COUNTER_MAP_NORMAL_MAP)
++              r->counter_map.maptype = COUNTER_MAP_ZEROED;
+       set_changed(*handle);
+@@ -1285,30 +1717,25 @@
+              STRUCT_COUNTERS *counters,
+              TC_HANDLE_T *handle)
+ {
++      struct chain_head *c;
++      struct rule_head *r;
+       STRUCT_ENTRY *e;
+-      struct chain_cache *c;
+-      unsigned int chainindex, end;
+       iptc_fn = TC_SET_COUNTER;
+       CHECK(*handle);
+-      if (!(c = find_label(chain, *handle))) {
++      if (!(c = iptcc_find_label(chain, *handle))) {
+               errno = ENOENT;
+               return 0;
+       }
+-      chainindex = entry2index(*handle, c->start);
+-      end = entry2index(*handle, c->end);
+-
+-      if (chainindex + rulenum > end) {
++      if (!(r = iptcc_get_rule_num(c, rulenum))) {
+               errno = E2BIG;
+               return 0;
+       }
+-      e = index2entry(*handle, chainindex + rulenum);
+-
+-      (*handle)->counter_map[chainindex + rulenum].maptype
+-              = COUNTER_MAP_SET;
++      e = r->entry;
++      r->counter_map.maptype = COUNTER_MAP_SET;
+       memcpy(&e->counters, counters, sizeof(STRUCT_COUNTERS));
+@@ -1323,71 +1750,42 @@
+ int
+ TC_CREATE_CHAIN(const IPT_CHAINLABEL chain, TC_HANDLE_T *handle)
+ {
+-      int ret;
+-      struct {
+-              STRUCT_ENTRY head;
+-              struct ipt_error_target name;
+-              STRUCT_ENTRY ret;
+-              STRUCT_STANDARD_TARGET target;
+-      } newc;
++      static struct chain_head *c;
+       iptc_fn = TC_CREATE_CHAIN;
+       /* find_label doesn't cover built-in targets: DROP, ACCEPT,
+            QUEUE, RETURN. */
+-      if (find_label(chain, *handle)
++      if (iptcc_find_label(chain, *handle)
+           || strcmp(chain, LABEL_DROP) == 0
+           || strcmp(chain, LABEL_ACCEPT) == 0
+           || strcmp(chain, LABEL_QUEUE) == 0
+           || strcmp(chain, LABEL_RETURN) == 0) {
++              DEBUGP("Chain `%s' already exists\n", chain);
+               errno = EEXIST;
+               return 0;
+       }
+       if (strlen(chain)+1 > sizeof(IPT_CHAINLABEL)) {
++              DEBUGP("Chain name `%s' too long\n", chain);
+               errno = EINVAL;
+               return 0;
+       }
+-      memset(&newc, 0, sizeof(newc));
+-      newc.head.target_offset = sizeof(STRUCT_ENTRY);
+-      newc.head.next_offset
+-              = sizeof(STRUCT_ENTRY)
+-              + ALIGN(sizeof(struct ipt_error_target));
+-      strcpy(newc.name.t.u.user.name, ERROR_TARGET);
+-      newc.name.t.u.target_size = ALIGN(sizeof(struct ipt_error_target));
+-      strcpy(newc.name.error, chain);
+-
+-      newc.ret.target_offset = sizeof(STRUCT_ENTRY);
+-      newc.ret.next_offset
+-              = sizeof(STRUCT_ENTRY)
+-              + ALIGN(sizeof(STRUCT_STANDARD_TARGET));
+-      strcpy(newc.target.target.u.user.name, STANDARD_TARGET);
+-      newc.target.target.u.target_size
+-              = ALIGN(sizeof(STRUCT_STANDARD_TARGET));
+-      newc.target.verdict = RETURN;
+-
+-      /* Add just before terminal entry */
+-      ret = insert_rules(2, sizeof(newc), &newc.head,
+-                         index2offset(*handle, (*handle)->new_number - 1),
+-                         (*handle)->new_number - 1,
+-                         0, handle);
+-      return ret;
+-}
++      c = iptcc_alloc_chain_head(chain, 0);
++      if (!c) {
++              DEBUGP("Cannot allocate memory for chain `%s'\n", chain);
++              errno = ENOMEM;
++              return 0;
+-static int
+-count_ref(STRUCT_ENTRY *e, unsigned int offset, unsigned int *ref)
+-{
+-      STRUCT_STANDARD_TARGET *t;
++      }
+-      if (strcmp(GET_TARGET(e)->u.user.name, STANDARD_TARGET) == 0) {
+-              t = (STRUCT_STANDARD_TARGET *)GET_TARGET(e);
++      DEBUGP("Creating chain `%s'\n", chain);
++      list_add_tail(&c->list, &(*handle)->chains);
+-              if (t->verdict == offset)
+-                      (*ref)++;
+-      }
++      set_changed(*handle);
+-      return 0;
++      return 1;
+ }
+ /* Get the number of references to this chain. */
+@@ -1395,17 +1793,16 @@
+ TC_GET_REFERENCES(unsigned int *ref, const IPT_CHAINLABEL chain,
+                 TC_HANDLE_T *handle)
+ {
+-      struct chain_cache *c;
++      struct chain_head *c;
+-      if (!(c = find_label(chain, *handle))) {
++      iptc_fn = TC_GET_REFERENCES;
++      if (!(c = iptcc_find_label(chain, *handle))) {
+               errno = ENOENT;
+               return 0;
+       }
+-      *ref = 0;
+-      ENTRY_ITERATE((*handle)->entries.entrytable,
+-                    (*handle)->entries.size,
+-                    count_ref, entry2offset(*handle, c->start), ref);
++      *ref = c->references;
++
+       return 1;
+ }
+@@ -1413,45 +1810,53 @@
+ int
+ TC_DELETE_CHAIN(const IPT_CHAINLABEL chain, TC_HANDLE_T *handle)
+ {
+-      unsigned int labelidx, labeloff;
+       unsigned int references;
+-      struct chain_cache *c;
+-      int ret;
+-
+-      if (!TC_GET_REFERENCES(&references, chain, handle))
+-              return 0;
++      struct chain_head *c;
+       iptc_fn = TC_DELETE_CHAIN;
++      if (!(c = iptcc_find_label(chain, *handle))) {
++              DEBUGP("cannot find chain `%s'\n", chain);
++              errno = ENOENT;
++              return 0;
++      }
++
+       if (TC_BUILTIN(chain, *handle)) {
++              DEBUGP("cannot remove builtin chain `%s'\n", chain);
+               errno = EINVAL;
+               return 0;
+       }
+-      if (references > 0) {
+-              errno = EMLINK;
++      if (!TC_GET_REFERENCES(&references, chain, handle)) {
++              DEBUGP("cannot get references on chain `%s'\n", chain);
+               return 0;
+       }
+-      if (!(c = find_label(chain, *handle))) {
+-              errno = ENOENT;
++      if (references > 0) {
++              DEBUGP("chain `%s' still has references\n", chain);
++              errno = EMLINK;
+               return 0;
+       }
+-      if ((void *)c->start != c->end) {
++      if (c->num_rules) {
++              DEBUGP("chain `%s' is not empty\n", chain);
+               errno = ENOTEMPTY;
+               return 0;
+       }
+-      /* Need label index: preceeds chain start */
+-      labelidx = entry2index(*handle, c->start) - 1;
+-      labeloff = index2offset(*handle, labelidx);
+-
+-      ret = delete_rules(2,
+-                         get_entry(*handle, labeloff)->next_offset
+-                         + c->start->next_offset,
+-                         labeloff, labelidx, handle);
+-      return ret;
++      /* If we are about to delete the chain that is the current
++       * iterator, move chain iterator firward. */
++      if (c == (*handle)->chain_iterator_cur)
++              iptcc_chain_iterator_advance(*handle);
++
++      list_del(&c->list);
++      free(c);
++
++      DEBUGP("chain `%s' deleted\n", chain);
++
++      set_changed(*handle);
++
++      return 1;
+ }
+ /* Renames a chain. */
+@@ -1459,15 +1864,12 @@
+                   const IPT_CHAINLABEL newname,
+                   TC_HANDLE_T *handle)
+ {
+-      unsigned int labeloff, labelidx;
+-      struct chain_cache *c;
+-      struct ipt_error_target *t;
+-
++      struct chain_head *c;
+       iptc_fn = TC_RENAME_CHAIN;
+       /* find_label doesn't cover built-in targets: DROP, ACCEPT,
+            QUEUE, RETURN. */
+-      if (find_label(newname, *handle)
++      if (iptcc_find_label(newname, *handle)
+           || strcmp(newname, LABEL_DROP) == 0
+           || strcmp(newname, LABEL_ACCEPT) == 0
+           || strcmp(newname, LABEL_QUEUE) == 0
+@@ -1476,7 +1878,7 @@
+               return 0;
+       }
+-      if (!(c = find_label(oldname, *handle))
++      if (!(c = iptcc_find_label(oldname, *handle))
+           || TC_BUILTIN(oldname, *handle)) {
+               errno = ENOENT;
+               return 0;
+@@ -1487,15 +1889,8 @@
+               return 0;
+       }
+-      /* Need label index: preceeds chain start */
+-      labelidx = entry2index(*handle, c->start) - 1;
+-      labeloff = index2offset(*handle, labelidx);
++      strncpy(c->name, newname, sizeof(IPT_CHAINLABEL));
+-      t = (struct ipt_error_target *)
+-              GET_TARGET(get_entry(*handle, labeloff));
+-
+-      memset(t->error, 0, sizeof(t->error));
+-      strcpy(t->error, newname);
+       set_changed(*handle);
+       return 1;
+@@ -1508,51 +1903,37 @@
+             STRUCT_COUNTERS *counters,
+             TC_HANDLE_T *handle)
+ {
+-      unsigned int hook;
+-      unsigned int policyoff, ctrindex;
+-      STRUCT_ENTRY *e;
+-      STRUCT_STANDARD_TARGET *t;
++      struct chain_head *c;
+       iptc_fn = TC_SET_POLICY;
+-      /* Figure out which chain. */
+-      hook = TC_BUILTIN(chain, *handle);
+-      if (hook == 0) {
++
++      if (!(c = iptcc_find_label(chain, *handle))) {
++              DEBUGP("cannot find chain `%s'\n", chain);
+               errno = ENOENT;
+               return 0;
+-      } else
+-              hook--;
++      }
+-      policyoff = get_chain_end(*handle, (*handle)->info.hook_entry[hook]);
+-      if (policyoff != (*handle)->info.underflow[hook]) {
+-              printf("ERROR: Policy for `%s' offset %u != underflow %u\n",
+-                     chain, policyoff, (*handle)->info.underflow[hook]);
++      if (!iptcc_is_builtin(c)) {
++              DEBUGP("cannot set policy of userdefinedchain `%s'\n", chain);
++              errno = ENOENT;
+               return 0;
+       }
+-      e = get_entry(*handle, policyoff);
+-      t = (STRUCT_STANDARD_TARGET *)GET_TARGET(e);
+-
+       if (strcmp(policy, LABEL_ACCEPT) == 0)
+-              t->verdict = -NF_ACCEPT - 1;
++              c->verdict = -NF_ACCEPT - 1;
+       else if (strcmp(policy, LABEL_DROP) == 0)
+-              t->verdict = -NF_DROP - 1;
++              c->verdict = -NF_DROP - 1;
+       else {
+               errno = EINVAL;
+               return 0;
+       }
+-      ctrindex = entry2index(*handle, e);
+-
+       if (counters) {
+               /* set byte and packet counters */
+-              memcpy(&e->counters, counters, sizeof(STRUCT_COUNTERS));
+-
+-              (*handle)->counter_map[ctrindex].maptype
+-                      = COUNTER_MAP_SET;
+-
++              memcpy(&c->counters, counters, sizeof(STRUCT_COUNTERS));
++              c->counter_map.maptype = COUNTER_MAP_SET;
+       } else {
+-              (*handle)->counter_map[ctrindex]
+-                      = ((struct counter_map){ COUNTER_MAP_NOMAP, 0 });
++              c->counter_map.maptype = COUNTER_MAP_NOMAP;
+       }
+       set_changed(*handle);
+@@ -1575,31 +1956,100 @@
+       answer->bcnt = a->bcnt - b->bcnt;
+ }
++
++static void counters_nomap(STRUCT_COUNTERS_INFO *newcounters,
++                         unsigned int index)
++{
++      newcounters->counters[index] = ((STRUCT_COUNTERS) { 0, 0});
++      DEBUGP_C("NOMAP => zero\n");
++}
++
++static void counters_normal_map(STRUCT_COUNTERS_INFO *newcounters,
++                              STRUCT_REPLACE *repl,
++                              unsigned int index,
++                              unsigned int mappos)
++{
++      /* Original read: X.
++       * Atomic read on replacement: X + Y.
++       * Currently in kernel: Z.
++       * Want in kernel: X + Y + Z.
++       * => Add in X + Y
++       * => Add in replacement read.
++       */
++      newcounters->counters[index] = repl->counters[mappos];
++      DEBUGP_C("NORMAL_MAP => mappos %u \n", mappos);
++}
++
++static void counters_map_zeroed(STRUCT_COUNTERS_INFO *newcounters,
++                              STRUCT_REPLACE *repl,
++                              unsigned int index,
++                              unsigned int mappos,
++                              STRUCT_COUNTERS *counters)
++{
++      /* Original read: X.
++       * Atomic read on replacement: X + Y.
++       * Currently in kernel: Z.
++       * Want in kernel: Y + Z.
++       * => Add in Y.
++       * => Add in (replacement read - original read).
++       */
++      subtract_counters(&newcounters->counters[index],
++                        &repl->counters[mappos],
++                        counters);
++      DEBUGP_C("ZEROED => mappos %u\n", mappos);
++}
++
++static void counters_map_set(STRUCT_COUNTERS_INFO *newcounters,
++                           unsigned int index,
++                           STRUCT_COUNTERS *counters)
++{
++      /* Want to set counter (iptables-restore) */
++
++      memcpy(&newcounters->counters[index], counters,
++              sizeof(STRUCT_COUNTERS));
++
++      DEBUGP_C("SET\n");
++}
++
++
+ int
+ TC_COMMIT(TC_HANDLE_T *handle)
+ {
+       /* Replace, then map back the counters. */
+       STRUCT_REPLACE *repl;
+       STRUCT_COUNTERS_INFO *newcounters;
+-      unsigned int i;
+-      size_t counterlen
+-              = sizeof(STRUCT_COUNTERS_INFO)
+-              + sizeof(STRUCT_COUNTERS) * (*handle)->new_number;
++      struct chain_head *c;
++      int ret;
++      size_t counterlen;
++      int new_number;
++      unsigned int new_size;
++      iptc_fn = TC_COMMIT;
+       CHECK(*handle);
+-#if 0
+-      TC_DUMP_ENTRIES(*handle);
+-#endif
+       /* Don't commit if nothing changed. */
+       if (!(*handle)->changed)
+               goto finished;
+-      repl = malloc(sizeof(*repl) + (*handle)->entries.size);
++      new_number = iptcc_compile_table_prep(*handle, &new_size);
++      if (new_number < 0) {
++              errno = ENOMEM;
++              return 0;
++      }
++
++      repl = malloc(sizeof(*repl) + new_size);
+       if (!repl) {
+               errno = ENOMEM;
+               return 0;
+       }
++      memset(repl, 0, sizeof(*repl) + new_size);
++
++#if 0
++      TC_DUMP_ENTRIES(*handle);
++#endif
++
++      counterlen = sizeof(STRUCT_COUNTERS_INFO)
++                      + sizeof(STRUCT_COUNTERS) * new_number;
+       /* These are the old counters we will get from kernel */
+       repl->counters = malloc(sizeof(STRUCT_COUNTERS)
+@@ -1609,7 +2059,6 @@
+               errno = ENOMEM;
+               return 0;
+       }
+-
+       /* These are the counters we're going to put back, later. */
+       newcounters = malloc(counterlen);
+       if (!newcounters) {
+@@ -1618,21 +2067,40 @@
+               errno = ENOMEM;
+               return 0;
+       }
++      memset(newcounters, 0, counterlen);
+       strcpy(repl->name, (*handle)->info.name);
+-      repl->num_entries = (*handle)->new_number;
+-      repl->size = (*handle)->entries.size;
+-      memcpy(repl->hook_entry, (*handle)->info.hook_entry,
+-             sizeof(repl->hook_entry));
+-      memcpy(repl->underflow, (*handle)->info.underflow,
+-             sizeof(repl->underflow));
++      repl->num_entries = new_number;
++      repl->size = new_size;
++
+       repl->num_counters = (*handle)->info.num_entries;
+       repl->valid_hooks = (*handle)->info.valid_hooks;
+-      memcpy(repl->entries, (*handle)->entries.entrytable,
+-             (*handle)->entries.size);
++
++      DEBUGP("num_entries=%u, size=%u, num_counters=%u\n",
++              repl->num_entries, repl->size, repl->num_counters);
++
++      ret = iptcc_compile_table(*handle, repl);
++      if (ret < 0) {
++              errno = ret;
++              free(repl->counters);
++              free(repl);
++              return 0;
++      }
++
++
++#ifdef IPTC_DEBUG2
++      {
++              int fd = open("/tmp/libiptc-so_set_replace.blob", 
++                              O_CREAT|O_WRONLY);
++              if (fd >= 0) {
++                      write(fd, repl, sizeof(*repl) + repl->size);
++                      close(fd);
++              }
++      }
++#endif
+       if (setsockopt(sockfd, TC_IPPROTO, SO_SET_REPLACE, repl,
+-                     sizeof(*repl) + (*handle)->entries.size) < 0) {
++                     sizeof(*repl) + repl->size) < 0) {
+               free(repl->counters);
+               free(repl);
+               free(newcounters);
+@@ -1641,49 +2109,64 @@
+       /* Put counters back. */
+       strcpy(newcounters->name, (*handle)->info.name);
+-      newcounters->num_counters = (*handle)->new_number;
+-      for (i = 0; i < (*handle)->new_number; i++) {
+-              unsigned int mappos = (*handle)->counter_map[i].mappos;
+-              switch ((*handle)->counter_map[i].maptype) {
++      newcounters->num_counters = new_number;
++
++      list_for_each_entry(c, &(*handle)->chains, list) {
++              struct rule_head *r;
++
++              /* Builtin chains have their own counters */
++              if (iptcc_is_builtin(c)) {
++                      DEBUGP("counter for chain-index %u: ", c->foot_index);
++                      switch(c->counter_map.maptype) {
++                      case COUNTER_MAP_NOMAP:
++                              counters_nomap(newcounters, c->foot_index);
++                              break;
++                      case COUNTER_MAP_NORMAL_MAP:
++                              counters_normal_map(newcounters, repl,
++                                                  c->foot_index, 
++                                                  c->counter_map.mappos);
++                              break;
++                      case COUNTER_MAP_ZEROED:
++                              counters_map_zeroed(newcounters, repl,
++                                                  c->foot_index, 
++                                                  c->counter_map.mappos,
++                                                  &c->counters);
++                              break;
++                      case COUNTER_MAP_SET:
++                              counters_map_set(newcounters, c->foot_index,
++                                               &c->counters);
++                              break;
++                      }
++              }
++
++              list_for_each_entry(r, &c->rules, list) {
++                      DEBUGP("counter for index %u: ", r->index);
++                      switch (r->counter_map.maptype) {
+               case COUNTER_MAP_NOMAP:
+-                      newcounters->counters[i]
+-                              = ((STRUCT_COUNTERS){ 0, 0 });
++                              counters_nomap(newcounters, r->index);
+                       break;
+               case COUNTER_MAP_NORMAL_MAP:
+-                      /* Original read: X.
+-                       * Atomic read on replacement: X + Y.
+-                       * Currently in kernel: Z.
+-                       * Want in kernel: X + Y + Z.
+-                       * => Add in X + Y
+-                       * => Add in replacement read.
+-                       */
+-                      newcounters->counters[i] = repl->counters[mappos];
++                              counters_normal_map(newcounters, repl,
++                                                  r->index, 
++                                                  r->counter_map.mappos);
+                       break;
+               case COUNTER_MAP_ZEROED:
+-                      /* Original read: X.
+-                       * Atomic read on replacement: X + Y.
+-                       * Currently in kernel: Z.
+-                       * Want in kernel: Y + Z.
+-                       * => Add in Y.
+-                       * => Add in (replacement read - original read).
+-                       */
+-                      subtract_counters(&newcounters->counters[i],
+-                                        &repl->counters[mappos],
+-                                        &index2entry(*handle, i)->counters);
++                              counters_map_zeroed(newcounters, repl,
++                                                  r->index,
++                                                  r->counter_map.mappos,
++                                                  &r->entry->counters);
+                       break;
+               case COUNTER_MAP_SET:
+-                      /* Want to set counter (iptables-restore) */
+-
+-                      memcpy(&newcounters->counters[i],
+-                             &index2entry(*handle, i)->counters,
+-                             sizeof(STRUCT_COUNTERS));
+-
++                              counters_map_set(newcounters, r->index,
++                                               &r->entry->counters);
+                       break;
+               }
+       }
++      }
++
+ #ifdef KERNEL_64_USERSPACE_32
+       {
+@@ -1696,10 +2179,21 @@
+                               "counters alignment incorrect! Mail rusty!\n");
+                       abort();
+               }
+-              *kernptr = &newcounters->counters;
++              *kernptr = newcounters->counters;
+       }
+ #endif /* KERNEL_64_USERSPACE_32 */
++#ifdef IPTC_DEBUG2
++      {
++              int fd = open("/tmp/libiptc-so_set_add_counters.blob", 
++                              O_CREAT|O_WRONLY);
++              if (fd >= 0) {
++                      write(fd, newcounters, counterlen);
++                      close(fd);
++              }
++      }
++#endif
++
+       if (setsockopt(sockfd, TC_IPPROTO, SO_SET_ADD_COUNTERS,
+                      newcounters, counterlen) < 0) {
+               free(repl->counters);
+@@ -1713,10 +2207,7 @@
+       free(newcounters);
+  finished:
+-      if ((*handle)->cache_chain_heads)
+-              free((*handle)->cache_chain_heads);
+-      free(*handle);
+-      *handle = NULL;
++      TC_FREE(handle);
+       return 1;
+ }
+diff -Nur ipac-ng-1.31.orig/agents/iptables/libiptc.h ipac-ng-1.31/agents/iptables/libiptc.h
+--- ipac-ng-1.31.orig/agents/iptables/libiptc.h        2003-07-06 10:33:17.000000000 +0000
++++ ipac-ng-1.31/agents/iptables/libiptc.h     2006-01-10 21:01:39.000000000 +0000
+@@ -1,7 +1,3 @@
+-#ifndef NETFILTER_VERSION
+-#define NETFILTER_VERSION "1.2.5"
+-#endif
+-                                 
+ #ifndef _LIBIPTC_H
+ #define _LIBIPTC_H
+ /* Library which manipulates filtering rules. */
+@@ -38,6 +34,9 @@
+ /* Take a snapshot of the rules.  Returns NULL on error. */
+ iptc_handle_t iptc_init(const char *tablename);
++/* Cleanup after iptc_init(). */
++void iptc_free(iptc_handle_t *h);
++
+ /* Iterator functions to run through the chains.  Returns NULL at end. */
+ const char *iptc_first_chain(iptc_handle_t *handle);
+ const char *iptc_next_chain(iptc_handle_t *handle);
+diff -Nur ipac-ng-1.31.orig/agents/iptables/linux_list.h ipac-ng-1.31/agents/iptables/linux_list.h
+--- ipac-ng-1.31.orig/agents/iptables/linux_list.h     1970-01-01 00:00:00.000000000 +0000
++++ ipac-ng-1.31/agents/iptables/linux_list.h  2006-01-10 21:01:39.000000000 +0000
+@@ -0,0 +1,723 @@
++#ifndef _LINUX_LIST_H
++#define _LINUX_LIST_H
++
++#undef offsetof
++#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
++
++/**
++ * container_of - cast a member of a structure out to the containing structure
++ *
++ * @ptr:      the pointer to the member.
++ * @type:     the type of the container struct this is embedded in.
++ * @member:   the name of the member within the struct.
++ *
++ */
++#define container_of(ptr, type, member) ({                    \
++        const typeof( ((type *)0)->member ) *__mptr = (ptr);  \
++        (type *)( (char *)__mptr - offsetof(type,member) );})
++
++/*
++ * Check at compile time that something is of a particular type.
++ * Always evaluates to 1 so you may use it easily in comparisons.
++ */
++#define typecheck(type,x) \
++({    type __dummy; \
++      typeof(x) __dummy2; \
++      (void)(&__dummy == &__dummy2); \
++      1; \
++})
++
++#define prefetch(x)           1
++
++/* empty define to make this work in userspace -HW */
++#define smp_wmb()
++
++/*
++ * These are non-NULL pointers that will result in page faults
++ * under normal circumstances, used to verify that nobody uses
++ * non-initialized list entries.
++ */
++#define LIST_POISON1  ((void *) 0x00100100)
++#define LIST_POISON2  ((void *) 0x00200200)
++
++/*
++ * Simple doubly linked list implementation.
++ *
++ * Some of the internal functions ("__xxx") are useful when
++ * manipulating whole lists rather than single entries, as
++ * sometimes we already know the next/prev entries and we can
++ * generate better code by using them directly rather than
++ * using the generic single-entry routines.
++ */
++
++struct list_head {
++      struct list_head *next, *prev;
++};
++
++#define LIST_HEAD_INIT(name) { &(name), &(name) }
++
++#define LIST_HEAD(name) \
++      struct list_head name = LIST_HEAD_INIT(name)
++
++#define INIT_LIST_HEAD(ptr) do { \
++      (ptr)->next = (ptr); (ptr)->prev = (ptr); \
++} while (0)
++
++/*
++ * Insert a new entry between two known consecutive entries.
++ *
++ * This is only for internal list manipulation where we know
++ * the prev/next entries already!
++ */
++static inline void __list_add(struct list_head *new,
++                            struct list_head *prev,
++                            struct list_head *next)
++{
++      next->prev = new;
++      new->next = next;
++      new->prev = prev;
++      prev->next = new;
++}
++
++/**
++ * list_add - add a new entry
++ * @new: new entry to be added
++ * @head: list head to add it after
++ *
++ * Insert a new entry after the specified head.
++ * This is good for implementing stacks.
++ */
++static inline void list_add(struct list_head *new, struct list_head *head)
++{
++      __list_add(new, head, head->next);
++}
++
++/**
++ * list_add_tail - add a new entry
++ * @new: new entry to be added
++ * @head: list head to add it before
++ *
++ * Insert a new entry before the specified head.
++ * This is useful for implementing queues.
++ */
++static inline void list_add_tail(struct list_head *new, struct list_head *head)
++{
++      __list_add(new, head->prev, head);
++}
++
++/*
++ * Insert a new entry between two known consecutive entries.
++ *
++ * This is only for internal list manipulation where we know
++ * the prev/next entries already!
++ */
++static inline void __list_add_rcu(struct list_head * new,
++              struct list_head * prev, struct list_head * next)
++{
++      new->next = next;
++      new->prev = prev;
++      smp_wmb();
++      next->prev = new;
++      prev->next = new;
++}
++
++/**
++ * list_add_rcu - add a new entry to rcu-protected list
++ * @new: new entry to be added
++ * @head: list head to add it after
++ *
++ * Insert a new entry after the specified head.
++ * This is good for implementing stacks.
++ *
++ * The caller must take whatever precautions are necessary
++ * (such as holding appropriate locks) to avoid racing
++ * with another list-mutation primitive, such as list_add_rcu()
++ * or list_del_rcu(), running on this same list.
++ * However, it is perfectly legal to run concurrently with
++ * the _rcu list-traversal primitives, such as
++ * list_for_each_entry_rcu().
++ */
++static inline void list_add_rcu(struct list_head *new, struct list_head *head)
++{
++      __list_add_rcu(new, head, head->next);
++}
++
++/**
++ * list_add_tail_rcu - add a new entry to rcu-protected list
++ * @new: new entry to be added
++ * @head: list head to add it before
++ *
++ * Insert a new entry before the specified head.
++ * This is useful for implementing queues.
++ *
++ * The caller must take whatever precautions are necessary
++ * (such as holding appropriate locks) to avoid racing
++ * with another list-mutation primitive, such as list_add_tail_rcu()
++ * or list_del_rcu(), running on this same list.
++ * However, it is perfectly legal to run concurrently with
++ * the _rcu list-traversal primitives, such as
++ * list_for_each_entry_rcu().
++ */
++static inline void list_add_tail_rcu(struct list_head *new,
++                                      struct list_head *head)
++{
++      __list_add_rcu(new, head->prev, head);
++}
++
++/*
++ * Delete a list entry by making the prev/next entries
++ * point to each other.
++ *
++ * This is only for internal list manipulation where we know
++ * the prev/next entries already!
++ */
++static inline void __list_del(struct list_head * prev, struct list_head * next)
++{
++      next->prev = prev;
++      prev->next = next;
++}
++
++/**
++ * list_del - deletes entry from list.
++ * @entry: the element to delete from the list.
++ * Note: list_empty on entry does not return true after this, the entry is
++ * in an undefined state.
++ */
++static inline void list_del(struct list_head *entry)
++{
++      __list_del(entry->prev, entry->next);
++      entry->next = LIST_POISON1;
++      entry->prev = LIST_POISON2;
++}
++
++/**
++ * list_del_rcu - deletes entry from list without re-initialization
++ * @entry: the element to delete from the list.
++ *
++ * Note: list_empty on entry does not return true after this,
++ * the entry is in an undefined state. It is useful for RCU based
++ * lockfree traversal.
++ *
++ * In particular, it means that we can not poison the forward
++ * pointers that may still be used for walking the list.
++ *
++ * The caller must take whatever precautions are necessary
++ * (such as holding appropriate locks) to avoid racing
++ * with another list-mutation primitive, such as list_del_rcu()
++ * or list_add_rcu(), running on this same list.
++ * However, it is perfectly legal to run concurrently with
++ * the _rcu list-traversal primitives, such as
++ * list_for_each_entry_rcu().
++ *
++ * Note that the caller is not permitted to immediately free
++ * the newly deleted entry.  Instead, either synchronize_kernel()
++ * or call_rcu() must be used to defer freeing until an RCU
++ * grace period has elapsed.
++ */
++static inline void list_del_rcu(struct list_head *entry)
++{
++      __list_del(entry->prev, entry->next);
++      entry->prev = LIST_POISON2;
++}
++
++/**
++ * list_del_init - deletes entry from list and reinitialize it.
++ * @entry: the element to delete from the list.
++ */
++static inline void list_del_init(struct list_head *entry)
++{
++      __list_del(entry->prev, entry->next);
++      INIT_LIST_HEAD(entry);
++}
++
++/**
++ * list_move - delete from one list and add as another's head
++ * @list: the entry to move
++ * @head: the head that will precede our entry
++ */
++static inline void list_move(struct list_head *list, struct list_head *head)
++{
++        __list_del(list->prev, list->next);
++        list_add(list, head);
++}
++
++/**
++ * list_move_tail - delete from one list and add as another's tail
++ * @list: the entry to move
++ * @head: the head that will follow our entry
++ */
++static inline void list_move_tail(struct list_head *list,
++                                struct list_head *head)
++{
++        __list_del(list->prev, list->next);
++        list_add_tail(list, head);
++}
++
++/**
++ * list_empty - tests whether a list is empty
++ * @head: the list to test.
++ */
++static inline int list_empty(const struct list_head *head)
++{
++      return head->next == head;
++}
++
++/**
++ * list_empty_careful - tests whether a list is
++ * empty _and_ checks that no other CPU might be
++ * in the process of still modifying either member
++ *
++ * NOTE: using list_empty_careful() without synchronization
++ * can only be safe if the only activity that can happen
++ * to the list entry is list_del_init(). Eg. it cannot be used
++ * if another CPU could re-list_add() it.
++ *
++ * @head: the list to test.
++ */
++static inline int list_empty_careful(const struct list_head *head)
++{
++      struct list_head *next = head->next;
++      return (next == head) && (next == head->prev);
++}
++
++static inline void __list_splice(struct list_head *list,
++                               struct list_head *head)
++{
++      struct list_head *first = list->next;
++      struct list_head *last = list->prev;
++      struct list_head *at = head->next;
++
++      first->prev = head;
++      head->next = first;
++
++      last->next = at;
++      at->prev = last;
++}
++
++/**
++ * list_splice - join two lists
++ * @list: the new list to add.
++ * @head: the place to add it in the first list.
++ */
++static inline void list_splice(struct list_head *list, struct list_head *head)
++{
++      if (!list_empty(list))
++              __list_splice(list, head);
++}
++
++/**
++ * list_splice_init - join two lists and reinitialise the emptied list.
++ * @list: the new list to add.
++ * @head: the place to add it in the first list.
++ *
++ * The list at @list is reinitialised
++ */
++static inline void list_splice_init(struct list_head *list,
++                                  struct list_head *head)
++{
++      if (!list_empty(list)) {
++              __list_splice(list, head);
++              INIT_LIST_HEAD(list);
++      }
++}
++
++/**
++ * list_entry - get the struct for this entry
++ * @ptr:      the &struct list_head pointer.
++ * @type:     the type of the struct this is embedded in.
++ * @member:   the name of the list_struct within the struct.
++ */
++#define list_entry(ptr, type, member) \
++      container_of(ptr, type, member)
++
++/**
++ * list_for_each      -       iterate over a list
++ * @pos:      the &struct list_head to use as a loop counter.
++ * @head:     the head for your list.
++ */
++#define list_for_each(pos, head) \
++      for (pos = (head)->next, prefetch(pos->next); pos != (head); \
++              pos = pos->next, prefetch(pos->next))
++
++/**
++ * __list_for_each    -       iterate over a list
++ * @pos:      the &struct list_head to use as a loop counter.
++ * @head:     the head for your list.
++ *
++ * This variant differs from list_for_each() in that it's the
++ * simplest possible list iteration code, no prefetching is done.
++ * Use this for code that knows the list to be very short (empty
++ * or 1 entry) most of the time.
++ */
++#define __list_for_each(pos, head) \
++      for (pos = (head)->next; pos != (head); pos = pos->next)
++
++/**
++ * list_for_each_prev -       iterate over a list backwards
++ * @pos:      the &struct list_head to use as a loop counter.
++ * @head:     the head for your list.
++ */
++#define list_for_each_prev(pos, head) \
++      for (pos = (head)->prev, prefetch(pos->prev); pos != (head); \
++              pos = pos->prev, prefetch(pos->prev))
++
++/**
++ * list_for_each_safe -       iterate over a list safe against removal of list entry
++ * @pos:      the &struct list_head to use as a loop counter.
++ * @n:                another &struct list_head to use as temporary storage
++ * @head:     the head for your list.
++ */
++#define list_for_each_safe(pos, n, head) \
++      for (pos = (head)->next, n = pos->next; pos != (head); \
++              pos = n, n = pos->next)
++
++/**
++ * list_for_each_entry        -       iterate over list of given type
++ * @pos:      the type * to use as a loop counter.
++ * @head:     the head for your list.
++ * @member:   the name of the list_struct within the struct.
++ */
++#define list_for_each_entry(pos, head, member)                                \
++      for (pos = list_entry((head)->next, typeof(*pos), member),      \
++                   prefetch(pos->member.next);                        \
++           &pos->member != (head);                                    \
++           pos = list_entry(pos->member.next, typeof(*pos), member),  \
++                   prefetch(pos->member.next))
++
++/**
++ * list_for_each_entry_reverse - iterate backwards over list of given type.
++ * @pos:      the type * to use as a loop counter.
++ * @head:     the head for your list.
++ * @member:   the name of the list_struct within the struct.
++ */
++#define list_for_each_entry_reverse(pos, head, member)                        \
++      for (pos = list_entry((head)->prev, typeof(*pos), member),      \
++                   prefetch(pos->member.prev);                        \
++           &pos->member != (head);                                    \
++           pos = list_entry(pos->member.prev, typeof(*pos), member),  \
++                   prefetch(pos->member.prev))
++
++/**
++ * list_prepare_entry - prepare a pos entry for use as a start point in
++ *                    list_for_each_entry_continue
++ * @pos:      the type * to use as a start point
++ * @head:     the head of the list
++ * @member:   the name of the list_struct within the struct.
++ */
++#define list_prepare_entry(pos, head, member) \
++      ((pos) ? : list_entry(head, typeof(*pos), member))
++
++/**
++ * list_for_each_entry_continue -     iterate over list of given type
++ *                    continuing after existing point
++ * @pos:      the type * to use as a loop counter.
++ * @head:     the head for your list.
++ * @member:   the name of the list_struct within the struct.
++ */
++#define list_for_each_entry_continue(pos, head, member)               \
++      for (pos = list_entry(pos->member.next, typeof(*pos), member),  \
++                   prefetch(pos->member.next);                        \
++           &pos->member != (head);                                    \
++           pos = list_entry(pos->member.next, typeof(*pos), member),  \
++                   prefetch(pos->member.next))
++
++/**
++ * list_for_each_entry_safe - iterate over list of given type safe against removal of list entry
++ * @pos:      the type * to use as a loop counter.
++ * @n:                another type * to use as temporary storage
++ * @head:     the head for your list.
++ * @member:   the name of the list_struct within the struct.
++ */
++#define list_for_each_entry_safe(pos, n, head, member)                        \
++      for (pos = list_entry((head)->next, typeof(*pos), member),      \
++              n = list_entry(pos->member.next, typeof(*pos), member); \
++           &pos->member != (head);                                    \
++           pos = n, n = list_entry(n->member.next, typeof(*n), member))
++
++/**
++ * list_for_each_rcu  -       iterate over an rcu-protected list
++ * @pos:      the &struct list_head to use as a loop counter.
++ * @head:     the head for your list.
++ *
++ * This list-traversal primitive may safely run concurrently with
++ * the _rcu list-mutation primitives such as list_add_rcu()
++ * as long as the traversal is guarded by rcu_read_lock().
++ */
++#define list_for_each_rcu(pos, head) \
++      for (pos = (head)->next, prefetch(pos->next); pos != (head); \
++              pos = pos->next, ({ smp_read_barrier_depends(); 0;}), prefetch(pos->next))
++
++#define __list_for_each_rcu(pos, head) \
++      for (pos = (head)->next; pos != (head); \
++              pos = pos->next, ({ smp_read_barrier_depends(); 0;}))
++
++/**
++ * list_for_each_safe_rcu     -       iterate over an rcu-protected list safe
++ *                                    against removal of list entry
++ * @pos:      the &struct list_head to use as a loop counter.
++ * @n:                another &struct list_head to use as temporary storage
++ * @head:     the head for your list.
++ *
++ * This list-traversal primitive may safely run concurrently with
++ * the _rcu list-mutation primitives such as list_add_rcu()
++ * as long as the traversal is guarded by rcu_read_lock().
++ */
++#define list_for_each_safe_rcu(pos, n, head) \
++      for (pos = (head)->next, n = pos->next; pos != (head); \
++              pos = n, ({ smp_read_barrier_depends(); 0;}), n = pos->next)
++
++/**
++ * list_for_each_entry_rcu    -       iterate over rcu list of given type
++ * @pos:      the type * to use as a loop counter.
++ * @head:     the head for your list.
++ * @member:   the name of the list_struct within the struct.
++ *
++ * This list-traversal primitive may safely run concurrently with
++ * the _rcu list-mutation primitives such as list_add_rcu()
++ * as long as the traversal is guarded by rcu_read_lock().
++ */
++#define list_for_each_entry_rcu(pos, head, member)                    \
++      for (pos = list_entry((head)->next, typeof(*pos), member),      \
++                   prefetch(pos->member.next);                        \
++           &pos->member != (head);                                    \
++           pos = list_entry(pos->member.next, typeof(*pos), member),  \
++                   ({ smp_read_barrier_depends(); 0;}),               \
++                   prefetch(pos->member.next))
++
++
++/**
++ * list_for_each_continue_rcu -       iterate over an rcu-protected list
++ *                    continuing after existing point.
++ * @pos:      the &struct list_head to use as a loop counter.
++ * @head:     the head for your list.
++ *
++ * This list-traversal primitive may safely run concurrently with
++ * the _rcu list-mutation primitives such as list_add_rcu()
++ * as long as the traversal is guarded by rcu_read_lock().
++ */
++#define list_for_each_continue_rcu(pos, head) \
++      for ((pos) = (pos)->next, prefetch((pos)->next); (pos) != (head); \
++              (pos) = (pos)->next, ({ smp_read_barrier_depends(); 0;}), prefetch((pos)->next))
++
++/*
++ * Double linked lists with a single pointer list head.
++ * Mostly useful for hash tables where the two pointer list head is
++ * too wasteful.
++ * You lose the ability to access the tail in O(1).
++ */
++
++struct hlist_head {
++      struct hlist_node *first;
++};
++
++struct hlist_node {
++      struct hlist_node *next, **pprev;
++};
++
++#define HLIST_HEAD_INIT { .first = NULL }
++#define HLIST_HEAD(name) struct hlist_head name = {  .first = NULL }
++#define INIT_HLIST_HEAD(ptr) ((ptr)->first = NULL)
++#define INIT_HLIST_NODE(ptr) ((ptr)->next = NULL, (ptr)->pprev = NULL)
++
++static inline int hlist_unhashed(const struct hlist_node *h)
++{
++      return !h->pprev;
++}
++
++static inline int hlist_empty(const struct hlist_head *h)
++{
++      return !h->first;
++}
++
++static inline void __hlist_del(struct hlist_node *n)
++{
++      struct hlist_node *next = n->next;
++      struct hlist_node **pprev = n->pprev;
++      *pprev = next;
++      if (next)
++              next->pprev = pprev;
++}
++
++static inline void hlist_del(struct hlist_node *n)
++{
++      __hlist_del(n);
++      n->next = LIST_POISON1;
++      n->pprev = LIST_POISON2;
++}
++
++/**
++ * hlist_del_rcu - deletes entry from hash list without re-initialization
++ * @n: the element to delete from the hash list.
++ *
++ * Note: list_unhashed() on entry does not return true after this,
++ * the entry is in an undefined state. It is useful for RCU based
++ * lockfree traversal.
++ *
++ * In particular, it means that we can not poison the forward
++ * pointers that may still be used for walking the hash list.
++ *
++ * The caller must take whatever precautions are necessary
++ * (such as holding appropriate locks) to avoid racing
++ * with another list-mutation primitive, such as hlist_add_head_rcu()
++ * or hlist_del_rcu(), running on this same list.
++ * However, it is perfectly legal to run concurrently with
++ * the _rcu list-traversal primitives, such as
++ * hlist_for_each_entry().
++ */
++static inline void hlist_del_rcu(struct hlist_node *n)
++{
++      __hlist_del(n);
++      n->pprev = LIST_POISON2;
++}
++
++static inline void hlist_del_init(struct hlist_node *n)
++{
++      if (n->pprev)  {
++              __hlist_del(n);
++              INIT_HLIST_NODE(n);
++      }
++}
++
++#define hlist_del_rcu_init hlist_del_init
++
++static inline void hlist_add_head(struct hlist_node *n, struct hlist_head *h)
++{
++      struct hlist_node *first = h->first;
++      n->next = first;
++      if (first)
++              first->pprev = &n->next;
++      h->first = n;
++      n->pprev = &h->first;
++}
++
++
++/**
++ * hlist_add_head_rcu - adds the specified element to the specified hlist,
++ * while permitting racing traversals.
++ * @n: the element to add to the hash list.
++ * @h: the list to add to.
++ *
++ * The caller must take whatever precautions are necessary
++ * (such as holding appropriate locks) to avoid racing
++ * with another list-mutation primitive, such as hlist_add_head_rcu()
++ * or hlist_del_rcu(), running on this same list.
++ * However, it is perfectly legal to run concurrently with
++ * the _rcu list-traversal primitives, such as
++ * hlist_for_each_entry(), but only if smp_read_barrier_depends()
++ * is used to prevent memory-consistency problems on Alpha CPUs.
++ * Regardless of the type of CPU, the list-traversal primitive
++ * must be guarded by rcu_read_lock().
++ *
++ * OK, so why don't we have an hlist_for_each_entry_rcu()???
++ */
++static inline void hlist_add_head_rcu(struct hlist_node *n,
++                                      struct hlist_head *h)
++{
++      struct hlist_node *first = h->first;
++      n->next = first;
++      n->pprev = &h->first;
++      smp_wmb();
++      if (first)
++              first->pprev = &n->next;
++      h->first = n;
++}
++
++/* next must be != NULL */
++static inline void hlist_add_before(struct hlist_node *n,
++                                      struct hlist_node *next)
++{
++      n->pprev = next->pprev;
++      n->next = next;
++      next->pprev = &n->next;
++      *(n->pprev) = n;
++}
++
++static inline void hlist_add_after(struct hlist_node *n,
++                                      struct hlist_node *next)
++{
++      next->next = n->next;
++      n->next = next;
++      next->pprev = &n->next;
++
++      if(next->next)
++              next->next->pprev  = &next->next;
++}
++
++#define hlist_entry(ptr, type, member) container_of(ptr,type,member)
++
++#define hlist_for_each(pos, head) \
++      for (pos = (head)->first; pos && ({ prefetch(pos->next); 1; }); \
++           pos = pos->next)
++
++#define hlist_for_each_safe(pos, n, head) \
++      for (pos = (head)->first; pos && ({ n = pos->next; 1; }); \
++           pos = n)
++
++/**
++ * hlist_for_each_entry       - iterate over list of given type
++ * @tpos:     the type * to use as a loop counter.
++ * @pos:      the &struct hlist_node to use as a loop counter.
++ * @head:     the head for your list.
++ * @member:   the name of the hlist_node within the struct.
++ */
++#define hlist_for_each_entry(tpos, pos, head, member)                  \
++      for (pos = (head)->first;                                        \
++           pos && ({ prefetch(pos->next); 1;}) &&                      \
++              ({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \
++           pos = pos->next)
++
++/**
++ * hlist_for_each_entry_continue - iterate over a hlist continuing after existing point
++ * @tpos:     the type * to use as a loop counter.
++ * @pos:      the &struct hlist_node to use as a loop counter.
++ * @member:   the name of the hlist_node within the struct.
++ */
++#define hlist_for_each_entry_continue(tpos, pos, member)               \
++      for (pos = (pos)->next;                                          \
++           pos && ({ prefetch(pos->next); 1;}) &&                      \
++              ({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \
++           pos = pos->next)
++
++/**
++ * hlist_for_each_entry_from - iterate over a hlist continuing from existing point
++ * @tpos:     the type * to use as a loop counter.
++ * @pos:      the &struct hlist_node to use as a loop counter.
++ * @member:   the name of the hlist_node within the struct.
++ */
++#define hlist_for_each_entry_from(tpos, pos, member)                   \
++      for (; pos && ({ prefetch(pos->next); 1;}) &&                    \
++              ({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \
++           pos = pos->next)
++
++/**
++ * hlist_for_each_entry_safe - iterate over list of given type safe against removal of list entry
++ * @tpos:     the type * to use as a loop counter.
++ * @pos:      the &struct hlist_node to use as a loop counter.
++ * @n:                another &struct hlist_node to use as temporary storage
++ * @head:     the head for your list.
++ * @member:   the name of the hlist_node within the struct.
++ */
++#define hlist_for_each_entry_safe(tpos, pos, n, head, member)                  \
++      for (pos = (head)->first;                                        \
++           pos && ({ n = pos->next; 1; }) &&                           \
++              ({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \
++           pos = n)
++
++/**
++ * hlist_for_each_entry_rcu - iterate over rcu list of given type
++ * @pos:      the type * to use as a loop counter.
++ * @pos:      the &struct hlist_node to use as a loop counter.
++ * @head:     the head for your list.
++ * @member:   the name of the hlist_node within the struct.
++ *
++ * This list-traversal primitive may safely run concurrently with
++ * the _rcu list-mutation primitives such as hlist_add_rcu()
++ * as long as the traversal is guarded by rcu_read_lock().
++ */
++#define hlist_for_each_entry_rcu(tpos, pos, head, member)              \
++      for (pos = (head)->first;                                        \
++           pos && ({ prefetch(pos->next); 1;}) &&                      \
++              ({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \
++           pos = pos->next, ({ smp_read_barrier_depends(); 0; }) )
++
++#endif