## 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
##
--- /dev/null
+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