From 12d2a22363d57987d67bb75b261cb4bd26c7274a Mon Sep 17 00:00:00 2001 From: oetiker Date: Sun, 25 Feb 2001 22:30:32 +0000 Subject: [PATCH] Initial revision git-svn-id: svn://svn.oetiker.ch/rrdtool/trunk@9 a5681a0c-68f1-0310-ab6d-d61299d08faa --- contrib/README | 6 + contrib/add_ds/README | 32 + contrib/add_ds/add_ds.pl | 113 + contrib/add_ds/batch.pl | 95 + contrib/killspike/README | 19 + contrib/killspike/killspike.pl | 137 + contrib/killspike/killspike.pl.in | 137 + contrib/log2rrd/README | 62 + contrib/log2rrd/log2rrd.pl | 231 ++ contrib/log2rrd/log2rrd.pl.in | 231 ++ contrib/php3/INSTALL | 16 + contrib/php3/Makefile | 72 + contrib/php3/README | 43 + contrib/php3/USAGE | 156 + contrib/php3/VERSION | 1 + contrib/php3/examples/rrd_create.php | 27 + contrib/php3/examples/rrd_fetch.php | 51 + contrib/php3/examples/rrd_graph.php | 43 + contrib/php3/examples/rrd_last.php | 22 + contrib/php3/examples/rrd_update.php | 19 + contrib/php3/php3_rrdtool.c | 416 +++ contrib/php3/php3_rrdtool.h | 31 + contrib/php4/.cvsignore | 7 + contrib/php4/INSTALL | 79 + contrib/php4/Makefile.in | 8 + contrib/php4/README | 71 + contrib/php4/USAGE | 166 + contrib/php4/acinclude.m4 | 876 +++++ contrib/php4/aclocal.m4 | 1295 ++++++++ contrib/php4/build/dynlib.mk | 5 + contrib/php4/build/fastgen.sh | 58 + contrib/php4/build/library.mk | 30 + contrib/php4/build/ltlib.mk | 31 + contrib/php4/build/program.mk | 30 + contrib/php4/build/rules.mk | 116 + contrib/php4/build/shtool | 716 +++++ contrib/php4/config.guess | 1087 +++++++ contrib/php4/config.m4 | 24 + contrib/php4/config.sub | 1215 +++++++ contrib/php4/configure | 2281 +++++++++++++ contrib/php4/configure.in | 86 + contrib/php4/dynlib.m4 | 64 + contrib/php4/examples/rrd_create.php | 31 + contrib/php4/examples/rrd_fetch.php | 55 + contrib/php4/examples/rrd_graph.php | 47 + contrib/php4/examples/rrd_last.php | 26 + contrib/php4/examples/rrd_update.php | 23 + contrib/php4/install-sh | 0 contrib/php4/ltconfig | 3031 ++++++++++++++++++ contrib/php4/ltmain.sh | 4088 ++++++++++++++++++++++++ contrib/php4/missing | 0 contrib/php4/mkinstalldirs | 0 contrib/php4/php_config.h.in | 11 + contrib/php4/php_rrdtool.h | 46 + contrib/php4/rrdtool.c | 475 +++ contrib/rrd-file-icon/README | 19 + contrib/rrd-file-icon/rrd.png | Bin 0 -> 355 bytes contrib/rrdexplorer/README.txt | 29 + contrib/rrdexplorer/map.cgi | 121 + contrib/rrdexplorer/png.cgi | 56 + contrib/rrdfetchnames/README | 13 + contrib/rrdfetchnames/rrdfetchnames.pl | 30 + contrib/rrdlastds/README | 29 + contrib/rrdlastds/rrdlastds.pl | 192 ++ contrib/rrdproc/README | 30 + contrib/rrdproc/rrdproc.c | 249 ++ contrib/rrdview/README | 63 + contrib/rrdview/rrdview.cgi | 412 +++ contrib/snmpstats/README | 43 + contrib/snmpstats/SNMPstats.pl | 363 +++ contrib/trytime/.deps/trytime.P | 52 + contrib/trytime/Makefile | 381 +++ contrib/trytime/Makefile.am | 8 + contrib/trytime/Makefile.in | 381 +++ contrib/trytime/README | 85 + contrib/trytime/trytime.c | 105 + website/.img/.imgdot-1x1-transp.gif | Bin 0 -> 43 bytes website/.pics/CAIDAlogo.120.gif | Bin 0 -> 6802 bytes website/.pics/CAIDAlogo.120.png | Bin 0 -> 16404 bytes website/.pics/CAIDAlogo.gif | Bin 0 -> 13754 bytes website/.pics/CAIDAlogo.png | Bin 0 -> 12701 bytes website/.pics/CAIDAlogo.spons.png | Bin 0 -> 22192 bytes website/.pics/CAIDAlogo.xpm | 381 +++ website/.pics/CAIDAlogo2.gif | Bin 0 -> 4542 bytes website/.pics/CAIDAlogo_small.gif | Bin 0 -> 10753 bytes website/.pics/b.gif | Bin 0 -> 43 bytes website/.pics/b.png | Bin 0 -> 93 bytes website/.pics/background.xcf | Bin 0 -> 44799 bytes website/.pics/bbo.gif | Bin 0 -> 186 bytes website/.pics/bbo.png | Bin 0 -> 166 bytes website/.pics/bco.gif | Bin 0 -> 724 bytes website/.pics/bco.png | Bin 0 -> 405 bytes website/.pics/border.gif | Bin 0 -> 232 bytes website/.pics/bro.gif | Bin 0 -> 184 bytes website/.pics/bro.png | Bin 0 -> 150 bytes website/.pics/ecke.gif | Bin 0 -> 735 bytes website/.pics/logo-apache.gif | Bin 0 -> 3358 bytes website/.pics/logo-apache.small.gif | Bin 0 -> 3358 bytes website/.pics/logo-extra.gif | Bin 0 -> 10104 bytes website/.pics/logo-linux.gif | Bin 0 -> 4100 bytes website/.pics/logo-wml.gif | Bin 0 -> 1594 bytes website/.pics/rrddemo.gif | Bin 0 -> 10698 bytes website/.pics/rrdlogdemo.gif | Bin 0 -> 10619 bytes website/.pics/rrdtool.gif | Bin 0 -> 1934 bytes website/.pics/rrdtool.xar | Bin 0 -> 5342 bytes website/.pics/unten.gif | Bin 0 -> 418 bytes website/.ttf/futurab.ttf | Bin 0 -> 38867 bytes website/.ttf/futurabc.ttf | Bin 0 -> 39442 bytes website/.ttf/futurabi.ttf | Bin 0 -> 39435 bytes website/.ttf/futurah.ttf | Bin 0 -> 38978 bytes website/.ttf/futurahi.ttf | Bin 0 -> 39555 bytes website/.ttf/futurak.ttf | Bin 0 -> 33285 bytes website/.ttf/futural.ttf | Bin 0 -> 37428 bytes website/.ttf/futuralc.ttf | Bin 0 -> 35699 bytes website/.ttf/futurali.ttf | Bin 0 -> 38050 bytes website/.ttf/futuram.ttf | Bin 0 -> 38764 bytes website/.ttf/futuramc.ttf | Bin 0 -> 36329 bytes website/.ttf/futurami.ttf | Bin 0 -> 39169 bytes website/.ttf/futuran.ttf | Bin 0 -> 37682 bytes website/.ttf/futurani.ttf | Bin 0 -> 38671 bytes website/.ttf/futuraxk.ttf | Bin 0 -> 40024 bytes website/.ttf/futurbci.ttf | Bin 0 -> 41161 bytes website/.ttf/futurlci.ttf | Bin 0 -> 38190 bytes website/.ttf/futurmci.ttf | Bin 0 -> 29261 bytes website/.ttf/futurxkc.ttf | Bin 0 -> 40985 bytes website/.ttf/futurxki.ttf | Bin 0 -> 40452 bytes website/.ttf/futuxkci.ttf | Bin 0 -> 41643 bytes website/.ttf/trebuc.ttf | Bin 0 -> 57412 bytes website/.ttf/trebucbd.ttf | Bin 0 -> 56545 bytes website/.ttf/trebucbi.ttf | Bin 0 -> 55802 bytes website/.ttf/trebucit.ttf | Bin 0 -> 62455 bytes website/.ttf/zinjaron.ttf | Bin 0 -> 107471 bytes website/.wml/navbar.inc | 69 + website/.wml/nestednavbar.inc | 62 + website/.wml/template.inc | 88 + website/.wml/tobis.inc | 153 + website/.wmlrc | 4 + website/compiling.wml | 70 + website/contributors.wml | 10 + website/developers.wml | 27 + website/download.wml | 32 + website/frontends/bigsister.wml | 63 + website/frontends/bronc.wml | 21 + website/frontends/cricket.wml | 17 + website/frontends/flowscan.wml | 52 + website/frontends/fwgold.wml | 78 + website/frontends/hoth.wml | 18 + website/frontends/index.wml | 34 + website/frontends/nmis.wml | 97 + website/frontends/nrg.wml | 15 + website/frontends/ntop.wml | 28 + website/frontends/orca.wml | 10 + website/frontends/remstats.wml | 12 + website/frontends/rrgrapher.wml | 70 + website/frontends/slamon.wml | 26 + website/gallery/alex-01.bash | 138 + website/gallery/alex-01.png | Bin 0 -> 7815 bytes website/gallery/alex-01.wml | 32 + website/gallery/bkw-01.gif | Bin 0 -> 76068 bytes website/gallery/bkw-01.pl | 434 +++ website/gallery/bkw-01.wml | 21 + website/gallery/blair-01-a.png | Bin 0 -> 8888 bytes website/gallery/blair-01-b.png | Bin 0 -> 9375 bytes website/gallery/blair-01-c.png | Bin 0 -> 8692 bytes website/gallery/blair-01-d.png | Bin 0 -> 8632 bytes website/gallery/blair-01-e.png | Bin 0 -> 7219 bytes website/gallery/blair-01-f.png | Bin 0 -> 22570 bytes website/gallery/blair-01.wml | 62 + website/gallery/chris-01.wml | 42 + website/gallery/chris-01temp.png | Bin 0 -> 7377 bytes website/gallery/chris-01wind.png | Bin 0 -> 7873 bytes website/gallery/colleen-01.gif | Bin 0 -> 18398 bytes website/gallery/colleen-01.wml | 20 + website/gallery/edvard-01.png | Bin 0 -> 12940 bytes website/gallery/edvard-01.wml | 10 + website/gallery/index.wml | 26 + website/gallery/jeff-01.png | Bin 0 -> 11212 bytes website/gallery/jeff-01.wml | 20 + website/gallery/neal-01.png | Bin 0 -> 73474 bytes website/gallery/neal-01.wml | 18 + website/gallery/simon-01.png | Bin 0 -> 28936 bytes website/gallery/simon-01.wml | 17 + website/gallery/steve-01.gif | Bin 0 -> 17152 bytes website/gallery/steve-01.wml | 14 + website/index.wml | 61 + website/license.wml | 53 + website/mailinglists.wml | 38 + website/manual/bin_dec_hex.wml | 6 + website/manual/cdeftutorial.wml | 6 + website/manual/index.wml | 6 + website/manual/rpntutorial.wml | 7 + website/manual/rrdcgi.wml | 6 + website/manual/rrdcreate.wml | 6 + website/manual/rrddump.wml | 6 + website/manual/rrdfetch.wml | 6 + website/manual/rrdgraph.wml | 6 + website/manual/rrdinfo.wml | 6 + website/manual/rrdlast.wml | 7 + website/manual/rrdresize.wml | 6 + website/manual/rrdrestore.wml | 6 + website/manual/rrdtune.wml | 6 + website/manual/rrdtutorial.es.wml | 6 + website/manual/rrdtutorial.wml | 6 + website/manual/rrdupdate.wml | 6 + website/news.wml | 19 + website/perlbind/RRDp.wml | 6 + website/perlbind/RRDs.wml | 6 + website/perlbind/index.wml | 17 + website/rrdcgi.wml | 6 + website/screen.wml | 18 + website/site-sync | 2 + website/tutorial/bin_dec_hex.wml | 6 + website/tutorial/cdeftutorial.wml | 6 + website/tutorial/index.wml | 18 + website/tutorial/rpntutorial.wml | 7 + website/tutorial/rrdtutorial.es.wml | 6 + website/tutorial/rrdtutorial.ps | 1717 ++++++++++ website/tutorial/rrdtutorial.wml | 6 + 218 files changed, 25086 insertions(+) create mode 100644 contrib/README create mode 100644 contrib/add_ds/README create mode 100755 contrib/add_ds/add_ds.pl create mode 100755 contrib/add_ds/batch.pl create mode 100644 contrib/killspike/README create mode 100755 contrib/killspike/killspike.pl create mode 100755 contrib/killspike/killspike.pl.in create mode 100644 contrib/log2rrd/README create mode 100755 contrib/log2rrd/log2rrd.pl create mode 100755 contrib/log2rrd/log2rrd.pl.in create mode 100644 contrib/php3/INSTALL create mode 100644 contrib/php3/Makefile create mode 100644 contrib/php3/README create mode 100644 contrib/php3/USAGE create mode 100644 contrib/php3/VERSION create mode 100644 contrib/php3/examples/rrd_create.php create mode 100644 contrib/php3/examples/rrd_fetch.php create mode 100644 contrib/php3/examples/rrd_graph.php create mode 100644 contrib/php3/examples/rrd_last.php create mode 100644 contrib/php3/examples/rrd_update.php create mode 100644 contrib/php3/php3_rrdtool.c create mode 100644 contrib/php3/php3_rrdtool.h create mode 100644 contrib/php4/.cvsignore create mode 100644 contrib/php4/INSTALL create mode 100644 contrib/php4/Makefile.in create mode 100644 contrib/php4/README create mode 100644 contrib/php4/USAGE create mode 100644 contrib/php4/acinclude.m4 create mode 100644 contrib/php4/aclocal.m4 create mode 100644 contrib/php4/build/dynlib.mk create mode 100755 contrib/php4/build/fastgen.sh create mode 100644 contrib/php4/build/library.mk create mode 100644 contrib/php4/build/ltlib.mk create mode 100644 contrib/php4/build/program.mk create mode 100644 contrib/php4/build/rules.mk create mode 100755 contrib/php4/build/shtool create mode 100755 contrib/php4/config.guess create mode 100644 contrib/php4/config.m4 create mode 100755 contrib/php4/config.sub create mode 100755 contrib/php4/configure create mode 100644 contrib/php4/configure.in create mode 100644 contrib/php4/dynlib.m4 create mode 100644 contrib/php4/examples/rrd_create.php create mode 100644 contrib/php4/examples/rrd_fetch.php create mode 100644 contrib/php4/examples/rrd_graph.php create mode 100644 contrib/php4/examples/rrd_last.php create mode 100644 contrib/php4/examples/rrd_update.php create mode 100644 contrib/php4/install-sh create mode 100755 contrib/php4/ltconfig create mode 100644 contrib/php4/ltmain.sh create mode 100644 contrib/php4/missing create mode 100644 contrib/php4/mkinstalldirs create mode 100644 contrib/php4/php_config.h.in create mode 100644 contrib/php4/php_rrdtool.h create mode 100644 contrib/php4/rrdtool.c create mode 100644 contrib/rrd-file-icon/README create mode 100644 contrib/rrd-file-icon/rrd.png create mode 100644 contrib/rrdexplorer/README.txt create mode 100644 contrib/rrdexplorer/map.cgi create mode 100644 contrib/rrdexplorer/png.cgi create mode 100644 contrib/rrdfetchnames/README create mode 100755 contrib/rrdfetchnames/rrdfetchnames.pl create mode 100644 contrib/rrdlastds/README create mode 100755 contrib/rrdlastds/rrdlastds.pl create mode 100644 contrib/rrdproc/README create mode 100644 contrib/rrdproc/rrdproc.c create mode 100644 contrib/rrdview/README create mode 100644 contrib/rrdview/rrdview.cgi create mode 100644 contrib/snmpstats/README create mode 100755 contrib/snmpstats/SNMPstats.pl create mode 100644 contrib/trytime/.deps/trytime.P create mode 100644 contrib/trytime/Makefile create mode 100644 contrib/trytime/Makefile.am create mode 100644 contrib/trytime/Makefile.in create mode 100644 contrib/trytime/README create mode 100644 contrib/trytime/trytime.c create mode 100644 website/.img/.imgdot-1x1-transp.gif create mode 100644 website/.pics/CAIDAlogo.120.gif create mode 100644 website/.pics/CAIDAlogo.120.png create mode 100644 website/.pics/CAIDAlogo.gif create mode 100644 website/.pics/CAIDAlogo.png create mode 100644 website/.pics/CAIDAlogo.spons.png create mode 100644 website/.pics/CAIDAlogo.xpm create mode 100644 website/.pics/CAIDAlogo2.gif create mode 100644 website/.pics/CAIDAlogo_small.gif create mode 100644 website/.pics/b.gif create mode 100644 website/.pics/b.png create mode 100644 website/.pics/background.xcf create mode 100644 website/.pics/bbo.gif create mode 100644 website/.pics/bbo.png create mode 100644 website/.pics/bco.gif create mode 100644 website/.pics/bco.png create mode 100644 website/.pics/border.gif create mode 100644 website/.pics/bro.gif create mode 100644 website/.pics/bro.png create mode 100644 website/.pics/ecke.gif create mode 100644 website/.pics/logo-apache.gif create mode 100644 website/.pics/logo-apache.small.gif create mode 100755 website/.pics/logo-extra.gif create mode 100644 website/.pics/logo-linux.gif create mode 100644 website/.pics/logo-wml.gif create mode 100644 website/.pics/rrddemo.gif create mode 100644 website/.pics/rrdlogdemo.gif create mode 100644 website/.pics/rrdtool.gif create mode 100644 website/.pics/rrdtool.xar create mode 100644 website/.pics/unten.gif create mode 100644 website/.ttf/futurab.ttf create mode 100644 website/.ttf/futurabc.ttf create mode 100644 website/.ttf/futurabi.ttf create mode 100644 website/.ttf/futurah.ttf create mode 100644 website/.ttf/futurahi.ttf create mode 100644 website/.ttf/futurak.ttf create mode 100644 website/.ttf/futural.ttf create mode 100644 website/.ttf/futuralc.ttf create mode 100644 website/.ttf/futurali.ttf create mode 100644 website/.ttf/futuram.ttf create mode 100644 website/.ttf/futuramc.ttf create mode 100644 website/.ttf/futurami.ttf create mode 100644 website/.ttf/futuran.ttf create mode 100644 website/.ttf/futurani.ttf create mode 100644 website/.ttf/futuraxk.ttf create mode 100644 website/.ttf/futurbci.ttf create mode 100644 website/.ttf/futurlci.ttf create mode 100644 website/.ttf/futurmci.ttf create mode 100644 website/.ttf/futurxkc.ttf create mode 100644 website/.ttf/futurxki.ttf create mode 100644 website/.ttf/futuxkci.ttf create mode 100644 website/.ttf/trebuc.ttf create mode 100644 website/.ttf/trebucbd.ttf create mode 100644 website/.ttf/trebucbi.ttf create mode 100644 website/.ttf/trebucit.ttf create mode 100644 website/.ttf/zinjaron.ttf create mode 100644 website/.wml/navbar.inc create mode 100644 website/.wml/nestednavbar.inc create mode 100644 website/.wml/template.inc create mode 100644 website/.wml/tobis.inc create mode 100644 website/.wmlrc create mode 100644 website/compiling.wml create mode 100644 website/contributors.wml create mode 100644 website/developers.wml create mode 100644 website/download.wml create mode 100644 website/frontends/bigsister.wml create mode 100644 website/frontends/bronc.wml create mode 100644 website/frontends/cricket.wml create mode 100644 website/frontends/flowscan.wml create mode 100644 website/frontends/fwgold.wml create mode 100644 website/frontends/hoth.wml create mode 100644 website/frontends/index.wml create mode 100644 website/frontends/nmis.wml create mode 100644 website/frontends/nrg.wml create mode 100644 website/frontends/ntop.wml create mode 100644 website/frontends/orca.wml create mode 100644 website/frontends/remstats.wml create mode 100644 website/frontends/rrgrapher.wml create mode 100644 website/frontends/slamon.wml create mode 100644 website/gallery/alex-01.bash create mode 100644 website/gallery/alex-01.png create mode 100644 website/gallery/alex-01.wml create mode 100644 website/gallery/bkw-01.gif create mode 100644 website/gallery/bkw-01.pl create mode 100644 website/gallery/bkw-01.wml create mode 100644 website/gallery/blair-01-a.png create mode 100644 website/gallery/blair-01-b.png create mode 100644 website/gallery/blair-01-c.png create mode 100644 website/gallery/blair-01-d.png create mode 100644 website/gallery/blair-01-e.png create mode 100644 website/gallery/blair-01-f.png create mode 100644 website/gallery/blair-01.wml create mode 100644 website/gallery/chris-01.wml create mode 100644 website/gallery/chris-01temp.png create mode 100644 website/gallery/chris-01wind.png create mode 100644 website/gallery/colleen-01.gif create mode 100644 website/gallery/colleen-01.wml create mode 100644 website/gallery/edvard-01.png create mode 100644 website/gallery/edvard-01.wml create mode 100644 website/gallery/index.wml create mode 100644 website/gallery/jeff-01.png create mode 100644 website/gallery/jeff-01.wml create mode 100644 website/gallery/neal-01.png create mode 100644 website/gallery/neal-01.wml create mode 100644 website/gallery/simon-01.png create mode 100644 website/gallery/simon-01.wml create mode 100644 website/gallery/steve-01.gif create mode 100644 website/gallery/steve-01.wml create mode 100644 website/index.wml create mode 100644 website/license.wml create mode 100644 website/mailinglists.wml create mode 100644 website/manual/bin_dec_hex.wml create mode 100644 website/manual/cdeftutorial.wml create mode 100644 website/manual/index.wml create mode 100644 website/manual/rpntutorial.wml create mode 100644 website/manual/rrdcgi.wml create mode 100644 website/manual/rrdcreate.wml create mode 100644 website/manual/rrddump.wml create mode 100644 website/manual/rrdfetch.wml create mode 100644 website/manual/rrdgraph.wml create mode 100644 website/manual/rrdinfo.wml create mode 100644 website/manual/rrdlast.wml create mode 100644 website/manual/rrdresize.wml create mode 100644 website/manual/rrdrestore.wml create mode 100644 website/manual/rrdtune.wml create mode 100644 website/manual/rrdtutorial.es.wml create mode 100644 website/manual/rrdtutorial.wml create mode 100644 website/manual/rrdupdate.wml create mode 100644 website/news.wml create mode 100644 website/perlbind/RRDp.wml create mode 100644 website/perlbind/RRDs.wml create mode 100644 website/perlbind/index.wml create mode 100644 website/rrdcgi.wml create mode 100644 website/screen.wml create mode 100755 website/site-sync create mode 100644 website/tutorial/bin_dec_hex.wml create mode 100644 website/tutorial/cdeftutorial.wml create mode 100644 website/tutorial/index.wml create mode 100644 website/tutorial/rpntutorial.wml create mode 100644 website/tutorial/rrdtutorial.es.wml create mode 100644 website/tutorial/rrdtutorial.ps create mode 100644 website/tutorial/rrdtutorial.wml diff --git a/contrib/README b/contrib/README new file mode 100644 index 00000000..606633f9 --- /dev/null +++ b/contrib/README @@ -0,0 +1,6 @@ +This directory should contain YOUR scripts ... please sent them to me ... + +each script should come with an appropriate README file ... + +cheers +Tobi diff --git a/contrib/add_ds/README b/contrib/add_ds/README new file mode 100644 index 00000000..28e3e12f --- /dev/null +++ b/contrib/add_ds/README @@ -0,0 +1,32 @@ +# README +# From: Selena Brewington + +The two scripts included in here are for taking an existing RRD, +dumping out its XML contents, mucking with the XML to add an +arbitrary number of datasources, and then creating a new RRD with +the new XML information. 'add_ds.pl' is what is doing all the +work. 'batch.pl' does the legwork of running rrdtool and +moving around the output from the various commands. + +Easiest way to use these: +* Put batch.pl and add_ds.pl in the same directory as the RRDs +you want to modify and run: + + $ ls -1 | ./batch.pl <# new datasources you want to add> + +You'll end up with an 'xml' directory where all the xml files +and your new RRDs are available. Copy the new RRDs back over +the old RRDs once you've convinced yourself that the new RRDs +have been formed correctly (try using the rrd-dump tool that is +in the cricket/utils directory, for example). + +I put some options that you can configure at the top of the +batch.pl script. Also, add_ds.pl has a bunch of stuff you can +modify at the command line or, again, change inside the script +itself - warning: it's not fancy. Try: ./add_ds.pl -h + +batch.pl has an 'overwrite' option that can be invoked, but I +highly recommend that you check that this script does what you want, +the way you want it, before you go and trample all over your +existing RRDs. + diff --git a/contrib/add_ds/add_ds.pl b/contrib/add_ds/add_ds.pl new file mode 100755 index 00000000..2c870a7e --- /dev/null +++ b/contrib/add_ds/add_ds.pl @@ -0,0 +1,113 @@ +#! /usr/bin/perl + +# add_ds.pl, program to add datasources to an existing RRD +# +# Copyright (C) 2000 Selena M. Brewington +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +use strict; + +my $ds = shift || die "need number of additional datasources desired"; +if ($ds eq '-h') { + &Usage; + exit 0; +} + +my $default_val = shift || 'NaN'; +my $type = shift || 'COUNTER'; +my $heartbeat = shift || '1800'; +my $rrdmin = shift || 'NaN'; +my $rrdmax = shift || 'NaN'; + +my $cdp_prep_end = ''; + +my $row_end = ''; +my $name = ''; +my $name_end = ''; + +my $field = ' ' . $default_val . ' '; + +my $found_ds = 0; +my $num_sources = 0; +my $last; +my $fields = " "; +my $datasource; +my $x; + +while () { + + if (($_ =~ s/$row_end$/$fields$row_end/) && $found_ds) { + # need to hit types first, if we don't, we're screwed + print $_; + + } elsif (/$cdp_prep_end/) { + print "\t\t\t NaN 0 \n" x $ds; + print $_; + + } elsif (/$name_end$/) { + ($datasource) = /$name (\w+)/; + $found_ds++; + print $_; + + } elsif (/Round Robin Archives/) { + # print out additional datasource definitions + + ($num_sources) = ($datasource =~ /(\d+)/); + + for ($x = $num_sources+1; $x < $num_sources+$ds+1; $x++) { + + $fields .= $field; + + print "\n\t\n"; + print "\t\t ds$x <\/name>\n"; + print "\t\t $type <\/type>\n"; + print "\t\t $heartbeat <\/minimal_heartbeat>\n"; + print "\t\t $rrdmin <\/min>\n"; + print "\t\t $rrdmax <\/max>\n\n"; + print "\t\t\n"; + print "\t\t NaN <\/last_ds>\n"; + print "\t\t NaN <\/value>\n"; + print "\t\t NaN <\/unknown_sec>\n"; + print "\t<\/ds>\n\n"; + + } + + print $_; + } else { + print $_; + } + + $last = $_; +} + + + + +sub Usage { + + print "add-ds.pl [default_val] [type] [heartbeat] [rrdmin] [rrdmax] < file.xml\n"; + print "\t\tnumber of additional datasources\n"; + print "\t[default_val]\tdefault value to be entered in add'l fields\n"; + print "\t[type]\ttype of datasource (i.e. COUNTER, GAUGE...)\n"; + print "\t[heatbeat]\tlength of time in seconds before RRD thinks your DS is dead\n"; + print "\t[rrdmin]\tminimum value allowed for each datasource\n"; + print "\t[rrdmax]\tmax value allowed for each datasource\n\n"; + print "\tOptions are read in order, so if you want to change the\n"; + print "\tdefault heartbeat, you need to specify the default_val and\n"; + print "\ttype as well, etc.\n"; + print "\n\tOutput goes to STDOUT.\n"; +} + diff --git a/contrib/add_ds/batch.pl b/contrib/add_ds/batch.pl new file mode 100755 index 00000000..5fa6a337 --- /dev/null +++ b/contrib/add_ds/batch.pl @@ -0,0 +1,95 @@ +#! /usr/sepp/bin/perl + +# batch.pl, simple program to help add datasources to an existing RRD +# goes with add_ds.pl +# +# Copyright (C) 2000 Selena M. Brewington +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +# for use with add_ds.pl script to add datasources to an RRD +# +# usage: ls -1 | ./batch.pl [-o] <# ds to add> +# +# -o will let you overwrite your rrds. i don't recommend using this +# switch the first time you run this program. If something +# gets messed up, the original xml files will be in the xml +# directory and you can run 'rrdtool restore' on all of them +# uncomment the commented out lines below to make this work. +# +# also, you can change the name of the directory the XML is +# getting dumped to, where your rrdtool binary is located, +# and where add_ds.pl is located. the variables are listed +# below. +# +# This script could theoretically take fully-qualified pathnames +# as input from STDIN rather than the output from ls -1. +# + +use strict; + +########### USER CONFIGURABLE SECTION ####################### + +my $newdir = "xml"; +my $rrdtool = "/usr/local/rrdtool-1.0.30/bin/rrdtool"; +my $add_ds = "./add_ds.pl"; # path to add_ds.pl script + +########### END CONFIGURE SECTION ########################### + + +my $ds = shift || die 'need number of datasources to add'; + +my $overwrite = 0; + +if ($ds eq '-o') { + $overwrite = 1; + $ds = shift || die 'need number of datasources to add'; +} + +if (! (-x $newdir)) { + `mkdir xml` || die "can't make directory xml"; +} + +while () { + + next if (! /rrd/); + chop; + my $file = $_; + + $_ =~ s/rrd$/xml/; + + open(FILE, ">$newdir/$_"); + + my @output = `$rrdtool dump $file`; + print FILE @output; + + close(FILE); + + open (FILE, ">$newdir/$_.2"); + + my @new = `cat $newdir/$_ | $add_ds $ds`; + + print FILE @new; + + close (FILE); + + system("$rrdtool restore $newdir/$_.2 $newdir/$file") == 0 + or die "rrdtool restore failed for $file"; + + if ($overwrite == 1) { + system("mv $newdir/$file $file") == 0 + or die "can't overwrite $file"; + } +} diff --git a/contrib/killspike/README b/contrib/killspike/README new file mode 100644 index 00000000..9b979a96 --- /dev/null +++ b/contrib/killspike/README @@ -0,0 +1,19 @@ +From: Bert Driehuis +Date: Fri, 14 Jan 2000 03:41:07 +0100 (CET) + +This script will read an XML file produced by + + rrdtool dump foo.rrd >in.xml + +and look at the $maxspike highest samples per datasource. It then finds the +records with the most hits and ditches the data. The resulting file can be +read back into the RRD database with the command + + rrdtool restore out.xml foo.rrd + +The whole idea is to find and eradicate "spikes" caused by erroneous +readings affecting entire records. + +This tool is not for the faint of heart, will require tweaking per case +(even though that should just be picking values for cutoff and to a lesser +extent, maxspike). It will cause data loss, for obvious reasons. diff --git a/contrib/killspike/killspike.pl b/contrib/killspike/killspike.pl new file mode 100755 index 00000000..4642b3c0 --- /dev/null +++ b/contrib/killspike/killspike.pl @@ -0,0 +1,137 @@ +#! /usr/sepp/bin/perl -w + +# $Id$ +# $Source$ + +# This script will read an XML file produced by +# rrdtool dump foo.rrd >in.xml +# and look at the $maxspike highest samples per datasource. It then finds +# the records with the most hits and ditches the data. The resulting file +# can be read back into the RRD database with the command +# rrdtool restore out.xml foo.rrd +# +# The whole idea is to find and eradicate "spikes" caused by erroneous +# readings affecting entire records. +# +# This tool is not for the faint of heart, will require tweaking per case +# (even though that should just be picking values for cutoff and to a lesser +# extent, maxspike). It will cause data loss, for obvious reasons. +# +# THIS SOFTWARE IS DISTRIBUTED IN THE HOPE THAT IT IS USEFUL, AND COMES WITH +# NO WARRANTY. USE AT YOUR OWN RISK! +# +# Bert Driehuis + +use strict; + +my $maxspike = 25; # How many top samples to consider per datasource +my $cutoff = 20; # How many records to ditch +my $debug = 1; +my $file = "in.xml"; +my $outfile = "out.xml"; + +my $nds = 0; +my @dsl = (); +my @dsi = (); +my @topindx = (); +my @botindx = (); +my @dsname = (); +my $i; +my $j; + +# Count the number of data sources +open(IN, $file) || die; +while() { + if (/\s*(\w+)\s*/) { + $dsname[$nds] = $1; + $nds++; + } +} +close IN; + +print "Found $nds datasources\n" if $debug; + +# Set up the list of lists for the datasource data +for ($i = 0; $i < $nds; $i++) { + my @dsdata = (); + push @dsl, \@dsdata; + my @dsindex = (); + push @dsi, \@dsindex; + my @top = (); + push @topindx, \@top; + my @bot = (); + push @botindx, \@bot; +} + +# Slurp all datasource fields into the @dsl Lol +my $recno = -1; +open(IN, $file) || die; +while() { + next if !//; + $recno++; + my @data = split(/ /); + die "Malformed input" if $data[5] ne ""; + die "Malformed record" if $data[5 + ($nds * 2)] ne "\n"; + for ($i = 0; $i < $nds; $i++) { + my $sample = $data[($i * 2) + 6]; + #print "$sample\n"; + push @{$dsl[$i]}, $sample; + } +} +close IN; + +# Set up a LoL with indexes, and ditch the values that represent NaN's +for ($i = 0; $i < $nds; $i++) { + @{$dsi[$i]} = grep { ${$dsl[$i]}[$_] ne "NaN" } (0..$recno); + print "$dsname[$i] has $#{$dsi[$i]} valid samples\n" if $debug; +} + +sub sortit { + ${$dsl[$i]}[$a] <=> ${$dsl[$i]}[$b]; +} +my %indexes; +for ($i = 0; $i < $nds; $i++) { + next if ($#{$dsi[$i]} < $maxspike); + @{$dsi[$i]} = sort sortit @{$dsi[$i]}; + @{$botindx[$i]} = @{$dsi[$i]}; + @{$topindx[$i]} = splice(@{$botindx[$i]}, -$maxspike); + print "$dsname[$i] top $maxspike: ".join(' ', @{$topindx[$i]})."\n"; + for($j = 0; $j < $maxspike; $j++) { + $indexes{${$topindx[$i]}[$j]} = 0 if + !defined($indexes{${$topindx[$i]}[$j]}); + $indexes{${$topindx[$i]}[$j]}++; + printf "%1.1e ", ${$dsl[$i]}[${$topindx[$i]}[$j]]; + } + print "\n"; +} + +# Report on the hit rate of the records to be dumped, and a few for +# reference. +$j = 0; +my %ditch; +foreach $i (sort {$indexes{$b} <=> $indexes{$a}} keys %indexes) { + print "Record index $i: $indexes{$i} hits\n"; + $ditch{$i} = 1 if $j < $cutoff; + print "----------\n" if $j + 1 == $cutoff; + last if $j++ > $maxspike; +} + +# Okay, so we start ditching the records. You can always re-run the script +# if the results don't suit you after adjusting $cutoff or $maxspike. +$recno = -1; +open(IN, $file) || die; +open(OUT, ">$outfile") || die; +while() { + print OUT if !//; + next if !//; + $recno++; + print OUT if !defined($ditch{$recno}); + next if !defined($ditch{$recno}); + my @data = split(/ /); + for ($i = 0; $i < $nds; $i++) { + $data[($i * 2) + 6] = "NaN"; + } + print OUT join(' ', @data); +} +close IN; +close OUT; diff --git a/contrib/killspike/killspike.pl.in b/contrib/killspike/killspike.pl.in new file mode 100755 index 00000000..1248920e --- /dev/null +++ b/contrib/killspike/killspike.pl.in @@ -0,0 +1,137 @@ +#! @PERL@ -w + +# $Id$ +# $Source$ + +# This script will read an XML file produced by +# rrdtool dump foo.rrd >in.xml +# and look at the $maxspike highest samples per datasource. It then finds +# the records with the most hits and ditches the data. The resulting file +# can be read back into the RRD database with the command +# rrdtool restore out.xml foo.rrd +# +# The whole idea is to find and eradicate "spikes" caused by erroneous +# readings affecting entire records. +# +# This tool is not for the faint of heart, will require tweaking per case +# (even though that should just be picking values for cutoff and to a lesser +# extent, maxspike). It will cause data loss, for obvious reasons. +# +# THIS SOFTWARE IS DISTRIBUTED IN THE HOPE THAT IT IS USEFUL, AND COMES WITH +# NO WARRANTY. USE AT YOUR OWN RISK! +# +# Bert Driehuis + +use strict; + +my $maxspike = 25; # How many top samples to consider per datasource +my $cutoff = 20; # How many records to ditch +my $debug = 1; +my $file = "in.xml"; +my $outfile = "out.xml"; + +my $nds = 0; +my @dsl = (); +my @dsi = (); +my @topindx = (); +my @botindx = (); +my @dsname = (); +my $i; +my $j; + +# Count the number of data sources +open(IN, $file) || die; +while() { + if (/\s*(\w+)\s*/) { + $dsname[$nds] = $1; + $nds++; + } +} +close IN; + +print "Found $nds datasources\n" if $debug; + +# Set up the list of lists for the datasource data +for ($i = 0; $i < $nds; $i++) { + my @dsdata = (); + push @dsl, \@dsdata; + my @dsindex = (); + push @dsi, \@dsindex; + my @top = (); + push @topindx, \@top; + my @bot = (); + push @botindx, \@bot; +} + +# Slurp all datasource fields into the @dsl Lol +my $recno = -1; +open(IN, $file) || die; +while() { + next if !//; + $recno++; + my @data = split(/ /); + die "Malformed input" if $data[5] ne ""; + die "Malformed record" if $data[5 + ($nds * 2)] ne "\n"; + for ($i = 0; $i < $nds; $i++) { + my $sample = $data[($i * 2) + 6]; + #print "$sample\n"; + push @{$dsl[$i]}, $sample; + } +} +close IN; + +# Set up a LoL with indexes, and ditch the values that represent NaN's +for ($i = 0; $i < $nds; $i++) { + @{$dsi[$i]} = grep { ${$dsl[$i]}[$_] ne "NaN" } (0..$recno); + print "$dsname[$i] has $#{$dsi[$i]} valid samples\n" if $debug; +} + +sub sortit { + ${$dsl[$i]}[$a] <=> ${$dsl[$i]}[$b]; +} +my %indexes; +for ($i = 0; $i < $nds; $i++) { + next if ($#{$dsi[$i]} < $maxspike); + @{$dsi[$i]} = sort sortit @{$dsi[$i]}; + @{$botindx[$i]} = @{$dsi[$i]}; + @{$topindx[$i]} = splice(@{$botindx[$i]}, -$maxspike); + print "$dsname[$i] top $maxspike: ".join(' ', @{$topindx[$i]})."\n"; + for($j = 0; $j < $maxspike; $j++) { + $indexes{${$topindx[$i]}[$j]} = 0 if + !defined($indexes{${$topindx[$i]}[$j]}); + $indexes{${$topindx[$i]}[$j]}++; + printf "%1.1e ", ${$dsl[$i]}[${$topindx[$i]}[$j]]; + } + print "\n"; +} + +# Report on the hit rate of the records to be dumped, and a few for +# reference. +$j = 0; +my %ditch; +foreach $i (sort {$indexes{$b} <=> $indexes{$a}} keys %indexes) { + print "Record index $i: $indexes{$i} hits\n"; + $ditch{$i} = 1 if $j < $cutoff; + print "----------\n" if $j + 1 == $cutoff; + last if $j++ > $maxspike; +} + +# Okay, so we start ditching the records. You can always re-run the script +# if the results don't suit you after adjusting $cutoff or $maxspike. +$recno = -1; +open(IN, $file) || die; +open(OUT, ">$outfile") || die; +while() { + print OUT if !//; + next if !//; + $recno++; + print OUT if !defined($ditch{$recno}); + next if !defined($ditch{$recno}); + my @data = split(/ /); + for ($i = 0; $i < $nds; $i++) { + $data[($i * 2) + 6] = "NaN"; + } + print OUT join(' ', @data); +} +close IN; +close OUT; diff --git a/contrib/log2rrd/README b/contrib/log2rrd/README new file mode 100644 index 00000000..6322c949 --- /dev/null +++ b/contrib/log2rrd/README @@ -0,0 +1,62 @@ + log2rrd + +Usage: + +log2rrd.pl {mrtg logfile} {destination directory} + +Log2rrd is a simple tool for converting MRTG logfiles into round robin +database (RRD) files. The original version was written last year by +Wrolf Courtney and Russ Wright +with an early test version of RRDTOOL (mrtg-19980526.08). This +version has been modified to work with the current shared-perl release +of RRD (RRDs). + +This script only moves the input/output data averages and does not +make any effort to retain the maximum data rate info that is present +in the mrtg logfiles. This means that when you request maximum values +for a given time range from your new rrd archive, it will only show +you the averaged max values and not the original data peaks that +occured in the averaged time period. This may or may not be a problem +at your site. + +The conversion script expects 2 arguments - the mrtg logfile to read +and the path for the resulting rrd file. The script will attempt to +isolate the filename from any path specified for the mrtg input +logfile to create the rrd output file name with the specified +destination directory. If no destination directory name is included, +the rrd file will be written in the connected directory. + +Note that the resulting rrd DS type is GAUGE. With a DS type of +counter, rrdupdate will attempt to interpret input data as a counter +value and make a new data average for the specified time interval. +In this case, we need to trick rrdcreate/rrdupdate into letting us +input the data values directly because mrtg had already consolidated +the counter data. The script contains lines of code that can be +uncommented to allow log2rrd to automatically call rrdtune to change +the resulting file to use the COUNTER data type after the mrtg +logfiles have been read in. Since not all mrtg data files are counter +data, I leave this option up to the user as to whether to convert +later by hand with rrdtune or let log2rrd perform the task. + +Considerations for filenames and converting large numbers of files: + +At my own site, I have over 40 Cisco 75xx routers with lots of +interfaces being monitored per router plus about 60 Cisco 5300 +terminal servers. Running log2rrd for each interface individually +would be a very painful process. Since I am in the process of moving +all of my mrtg datasets over to Cricket, I hacked a separate version +of log2rrd that had more specific file name conversion code to match +my Cricket target names. This version of log2rrd was called up by +another script that looped through an entire mrtg workdir and +converted all logfiles present in that directory. This code was far +too specific to my site's version of mrtg logfile names and desired +Cricket target info to be included here. It would not be a difficult +task to wrap this log2rrd script in a similar fashion tailored to your +own needs. If you have 100's or 1000's of logfiles to move, the +effort is well worthwhile. + +Alan Lichty +Internetworking Planner +Electric Lightwave, Inc. +(360)816-4167 + diff --git a/contrib/log2rrd/log2rrd.pl b/contrib/log2rrd/log2rrd.pl new file mode 100755 index 00000000..3a6237ed --- /dev/null +++ b/contrib/log2rrd/log2rrd.pl @@ -0,0 +1,231 @@ +#! /usr/sepp/bin/perl +# +# Log 2 RRD. This script translates a MRTG 2.x log file +# into a RRD archive. The original version was written by +# Wrolf Courtney and +# Russ Wright with an early test version +# of RRDTOOL (mrtg-19980526.08) and has been modified to match +# the parameters of rrdtool version 99.23 by Alan Lichty at +# Electric Lightwave, Inc. . +# +# this script optimized for being called up by another script +# that cycles through a list of routers and invokes this for each +# interface. It can be run just as easily from a command line for +# small numbers of logfiles. +# +# The RRD we create looks like the following: Note +# that we have to use type GAUGE in order to have RRDTOOL +# populate the new rr archive correctly. Otherwise RRDTOOL will try +# to interpet the data as new octet counts instead of existing +# data rate averages. +# +# DS:GAUGE:86400:U:U # in counter +# DS:GAUGE:86400:U:U # out counter +# RRA:AVERAGE:0.5:1:600 # 5 minute samples +# RRA:MAX:0.5:1:600 # 5 minute samples +# RRA:AVERAGE:0.5:6:600 # 30 minute samples +# RRA:MAX:0.5:6:600 # 30 minute samples +# RRA:AVERAGE:0.5:24:600 # 2 hour samples +# RRA:MAX:0.5:24:600 # 2 hour samples +# RRA:AVERAGE:0.5:288:732 # 1 day samples +# RRA:MAX:0.5:288:732 # 1 day samples +# +# + +use English; +use strict; + +require "ctime.pl"; + +use RRDs; + +my $DEBUG=0; + +&main; + +sub main { + + my($inBytes, $outBytes); + my($lastRunDate, $firstRunDate); + my($i, $dataFile, $firstRun); + my($oldestRun, $lastRun); + my($curTime, $oldestTime, $totRec); + my($avgIn, $avgOut, $maxIn, $maxOut); + my(@lines, @finalRecs); + my($RRD, $START, $destDir, $dsType); + +# +# get the logfile name to process +# the default is to strip out the .log extension and create +# a new file with the extension .rrd +# + + $dataFile=$ARGV[0]; + + $destDir = $ARGV[1]; + +# +# strip off .log from file name - complain and die if no .log +# in the filename +# + + if ($dataFile =~ /(.*)\.log$/) { + $RRD = "$1"; + } + + if ($RRD eq "") { + printf("Usage: log2rrd [log file] [destination dir]\n"); + exit; + } + +# +# strip out path info (if present) to get at just the filename +# + + if ($RRD =~ /(.*)\/(.*)$/){ + $RRD = "$2"; + } + +# +# add the destination path (if present) and .rrd suffix +# + + if ($destDir){ + $RRD = "$destDir/$RRD.rrd"; + + }else{ + $RRD = "$RRD.rrd"; + } + + open(IN,"$dataFile") || die ("Couldn't open $dataFile"); + +# +# Get first line - has most current sample +# + + $_ = ; + chop; + ($lastRun, $inBytes, $outBytes) = split; + $lastRunDate = &ctime($lastRun); + chop $lastRunDate; + + $firstRun = $lastRun; + $i=2; + +# +# start w/line 2 and read them into the lines array +# (2nd line is in position 2) +# + while () { + chop; + $lines[$i++] = $_; + ($curTime) = split; + if ($curTime < $firstRun) { + $firstRun = $curTime; + } + } + close(IN); + +# +# Let's say source start time is 5 minutes before 1st sample +# + + $START=$firstRun - 300; + print STDERR "\$START = $START\n" if $DEBUG>1; + + $firstRunDate = &ctime($firstRun); + chop $firstRunDate; + + printf("Data from $firstRunDate\n to $lastRunDate\n") if $DEBUG>0; + + $oldestTime=$lastRun; +# +# OK- sort through the data and put it in a new array. +# This gives us a chance to find errors in the log files and +# handles any overlap of data (there shouldn't be any) +# +# NOTE: We start w/ record # 3, not #2 since #2 could be partial +# + + for ($i=3; $i <= 2533; $i++) { + + ($curTime, $avgIn, $avgOut, $maxIn, $maxOut) = split(/\s+/, $lines[$i]); + + if ($curTime < $oldestTime) { + +# +# only add data if older than anything already in array +# this should always be true, just checking +# + + $oldestTime = $curTime; + $finalRecs[$totRec++]=$lines[$i]; + } + } + + + PopulateRRD($totRec, $RRD, $START, \@finalRecs); + +# +# if you know that most of your MRTG logfiles are using +# counter data, uncomment the following lines to automatically +# run rrdtune and change the data type. +# +# my(@tuneparams) = ("$RRD", "-d", "ds0:COUNTER", "-d", "ds1:COUNTER"); +# RRDs::tune(@tuneparams); + + +} + +sub PopulateRRD { + + my($totRec, $RRD, $START, $finalRecs) = @_; + my($i, $curTime, $avgIn, $avgOut, $maxIn, $maxOut); + my($saveReal, $line); + my($createret, $updret); + + print "* Creating RRD $RRD\n\n" if $DEBUG>0; + +# +# We'll create RRAs for both AVG and MAX. MAX isn't currently filled but +# may be later +# + + RRDs::create ("$RRD", "-b", $START, "-s", 300, + "DS:ds0:GAUGE:86400:U:U", + "DS:ds1:GAUGE:86400:U:U", + "RRA:AVERAGE:0.5:1:600", + "RRA:MAX:0.5:1:600", + "RRA:AVERAGE:0.5:6:600", + "RRA:MAX:0.5:6:600", + "RRA:AVERAGE:0.5:24:600", + "RRA:MAX:0.5:24:600", + "RRA:AVERAGE:0.5:288:600", + "RRA:MAX:0.5:288:600"); + + if (my $error = RRDs::error()) { + print "Cannot create $RRD: $error\n"; + } + + + print "* Adding entries to $RRD\n\n" if $DEBUG>0; + + for ($i=$totRec - 1; $i >= 0; $i--) { + + ($curTime, $avgIn, $avgOut, $maxIn, $maxOut) = split(/\s+/, @$finalRecs[$i]); + + RRDs::update ("$RRD", "$curTime:$avgIn:$avgOut"); + + if (my $error = RRDs::error()) { + print "Cannot update $RRD: $error\n"; + } + + +# NOTE: Need to add checking on RRDread and include the Max values +# print status every now and then +# print $i if $i % 25 && $DEBUG>0; +# print "$i\n"; + + } + +} diff --git a/contrib/log2rrd/log2rrd.pl.in b/contrib/log2rrd/log2rrd.pl.in new file mode 100755 index 00000000..fcd562df --- /dev/null +++ b/contrib/log2rrd/log2rrd.pl.in @@ -0,0 +1,231 @@ +#! @PERL@ +# +# Log 2 RRD. This script translates a MRTG 2.x log file +# into a RRD archive. The original version was written by +# Wrolf Courtney and +# Russ Wright with an early test version +# of RRDTOOL (mrtg-19980526.08) and has been modified to match +# the parameters of rrdtool version 99.23 by Alan Lichty at +# Electric Lightwave, Inc. . +# +# this script optimized for being called up by another script +# that cycles through a list of routers and invokes this for each +# interface. It can be run just as easily from a command line for +# small numbers of logfiles. +# +# The RRD we create looks like the following: Note +# that we have to use type GAUGE in order to have RRDTOOL +# populate the new rr archive correctly. Otherwise RRDTOOL will try +# to interpet the data as new octet counts instead of existing +# data rate averages. +# +# DS:GAUGE:86400:U:U # in counter +# DS:GAUGE:86400:U:U # out counter +# RRA:AVERAGE:0.5:1:600 # 5 minute samples +# RRA:MAX:0.5:1:600 # 5 minute samples +# RRA:AVERAGE:0.5:6:600 # 30 minute samples +# RRA:MAX:0.5:6:600 # 30 minute samples +# RRA:AVERAGE:0.5:24:600 # 2 hour samples +# RRA:MAX:0.5:24:600 # 2 hour samples +# RRA:AVERAGE:0.5:288:732 # 1 day samples +# RRA:MAX:0.5:288:732 # 1 day samples +# +# + +use English; +use strict; + +require "ctime.pl"; + +use RRDs; + +my $DEBUG=0; + +&main; + +sub main { + + my($inBytes, $outBytes); + my($lastRunDate, $firstRunDate); + my($i, $dataFile, $firstRun); + my($oldestRun, $lastRun); + my($curTime, $oldestTime, $totRec); + my($avgIn, $avgOut, $maxIn, $maxOut); + my(@lines, @finalRecs); + my($RRD, $START, $destDir, $dsType); + +# +# get the logfile name to process +# the default is to strip out the .log extension and create +# a new file with the extension .rrd +# + + $dataFile=$ARGV[0]; + + $destDir = $ARGV[1]; + +# +# strip off .log from file name - complain and die if no .log +# in the filename +# + + if ($dataFile =~ /(.*)\.log$/) { + $RRD = "$1"; + } + + if ($RRD eq "") { + printf("Usage: log2rrd [log file] [destination dir]\n"); + exit; + } + +# +# strip out path info (if present) to get at just the filename +# + + if ($RRD =~ /(.*)\/(.*)$/){ + $RRD = "$2"; + } + +# +# add the destination path (if present) and .rrd suffix +# + + if ($destDir){ + $RRD = "$destDir/$RRD.rrd"; + + }else{ + $RRD = "$RRD.rrd"; + } + + open(IN,"$dataFile") || die ("Couldn't open $dataFile"); + +# +# Get first line - has most current sample +# + + $_ = ; + chop; + ($lastRun, $inBytes, $outBytes) = split; + $lastRunDate = &ctime($lastRun); + chop $lastRunDate; + + $firstRun = $lastRun; + $i=2; + +# +# start w/line 2 and read them into the lines array +# (2nd line is in position 2) +# + while () { + chop; + $lines[$i++] = $_; + ($curTime) = split; + if ($curTime < $firstRun) { + $firstRun = $curTime; + } + } + close(IN); + +# +# Let's say source start time is 5 minutes before 1st sample +# + + $START=$firstRun - 300; + print STDERR "\$START = $START\n" if $DEBUG>1; + + $firstRunDate = &ctime($firstRun); + chop $firstRunDate; + + printf("Data from $firstRunDate\n to $lastRunDate\n") if $DEBUG>0; + + $oldestTime=$lastRun; +# +# OK- sort through the data and put it in a new array. +# This gives us a chance to find errors in the log files and +# handles any overlap of data (there shouldn't be any) +# +# NOTE: We start w/ record # 3, not #2 since #2 could be partial +# + + for ($i=3; $i <= 2533; $i++) { + + ($curTime, $avgIn, $avgOut, $maxIn, $maxOut) = split(/\s+/, $lines[$i]); + + if ($curTime < $oldestTime) { + +# +# only add data if older than anything already in array +# this should always be true, just checking +# + + $oldestTime = $curTime; + $finalRecs[$totRec++]=$lines[$i]; + } + } + + + PopulateRRD($totRec, $RRD, $START, \@finalRecs); + +# +# if you know that most of your MRTG logfiles are using +# counter data, uncomment the following lines to automatically +# run rrdtune and change the data type. +# +# my(@tuneparams) = ("$RRD", "-d", "ds0:COUNTER", "-d", "ds1:COUNTER"); +# RRDs::tune(@tuneparams); + + +} + +sub PopulateRRD { + + my($totRec, $RRD, $START, $finalRecs) = @_; + my($i, $curTime, $avgIn, $avgOut, $maxIn, $maxOut); + my($saveReal, $line); + my($createret, $updret); + + print "* Creating RRD $RRD\n\n" if $DEBUG>0; + +# +# We'll create RRAs for both AVG and MAX. MAX isn't currently filled but +# may be later +# + + RRDs::create ("$RRD", "-b", $START, "-s", 300, + "DS:ds0:GAUGE:86400:U:U", + "DS:ds1:GAUGE:86400:U:U", + "RRA:AVERAGE:0.5:1:600", + "RRA:MAX:0.5:1:600", + "RRA:AVERAGE:0.5:6:600", + "RRA:MAX:0.5:6:600", + "RRA:AVERAGE:0.5:24:600", + "RRA:MAX:0.5:24:600", + "RRA:AVERAGE:0.5:288:600", + "RRA:MAX:0.5:288:600"); + + if (my $error = RRDs::error()) { + print "Cannot create $RRD: $error\n"; + } + + + print "* Adding entries to $RRD\n\n" if $DEBUG>0; + + for ($i=$totRec - 1; $i >= 0; $i--) { + + ($curTime, $avgIn, $avgOut, $maxIn, $maxOut) = split(/\s+/, @$finalRecs[$i]); + + RRDs::update ("$RRD", "$curTime:$avgIn:$avgOut"); + + if (my $error = RRDs::error()) { + print "Cannot update $RRD: $error\n"; + } + + +# NOTE: Need to add checking on RRDread and include the Max values +# print status every now and then +# print $i if $i % 25 && $DEBUG>0; +# print "$i\n"; + + } + +} diff --git a/contrib/php3/INSTALL b/contrib/php3/INSTALL new file mode 100644 index 00000000..25903fdc --- /dev/null +++ b/contrib/php3/INSTALL @@ -0,0 +1,16 @@ +Installation: + + You'll want to have the following sources available somewhere: + php + rrdtool + apache (if you built php as a DSO) + + Edit the *INCLUDE and *LIB variables in the Makefile to indicate +the correct locations for your files. + + After php3_rrdtool.so builds correctly, copy this file to wherever +you'd like. Possibly APACHE_ROOT/libexec/ . + + + +After you install, you should probably read README and API. diff --git a/contrib/php3/Makefile b/contrib/php3/Makefile new file mode 100644 index 00000000..f65f282b --- /dev/null +++ b/contrib/php3/Makefile @@ -0,0 +1,72 @@ +# code by Joey Miller +# +# +# BEFORE COMPILING YOU MUST SET THE VARIABLES BELOW +# TO INDICATE THE CORRECT DIRECTORIES!!!!!!!!!!!!!!!!!!!!! +# +# +# USE AT YOUR OWN RISK! +# + +## begin configurable vars + +## PHPINCLUDE -- the directory where php is untarred +## +PHPINCLUDE = -I/usr/home/joeym/apache_build/php-3.0.14 + +## PHPLIBS -- the directory where you can find some of the PHP objects +## and compiled libs (the directory where php is untarred, and +## has already been compiled! +## +PHPLIBS = /usr/home/joeym/apache_build/php-3.0.14 + +## RRDINCLUDE, GDINCLUDE -- where to find some of the header +## files needed by rrdtool and it's libs +## +RRDINCLUDE = -I/usr/home/joeym/newshit/rrdtool-1.0.10/src +GDINCLUDE = -I/usr/home/joeym/newshit/rrdtool-1.0.10/gd1.3 + +## RRDLIB -- where to find librrd.a (usually /usr/local/rrdtool-1.0.10/lib) +RRDLIB = /usr/local/rrdtool-1.0.10/lib + +# +# if php is compiled as an apache module +# +APACHEINC = -I/var/www/include + + + +###### end primary config vars .. change the vars below only +###### if you need to +###### + + + + +CFLAGS = -O -fpic +CC = gcc + +CXX = g++ +CXXFLAGS= $(CFLAGS) + +LD = cc +LDFLAGS = -shared + +RM = /bin/rm + +OBJS = php3_rrdtool.o +CFLAGS := $(CFLAGS) -I../lib $(PHPINCLUDE) $(APACHEINC) $(RRDINCLUDE) $(GDINCLUDE) +CXXFLAGS:= $(CXXFLAGS) -I../lib $(PHPINCLUDE) $(APACHEINC) $(RRDINCLUDE) $(GDINCLUDE) +LIBS := -L$(RRDLIB) -L$(PHPLIBS) -lrrd + +all: php3_rrdtool.so + +php3_rrdtool.so: $(OBJS) + $(LD) $(LDFLAGS) $(OBJS) -o $@ $(LIBS) + +clean: + $(RM) *.o + $(RM) *.so + +veryclean: clean + $(RM) *~ diff --git a/contrib/php3/README b/contrib/php3/README new file mode 100644 index 00000000..e13ba464 --- /dev/null +++ b/contrib/php3/README @@ -0,0 +1,43 @@ + +PHP bindings for RRD Tool. + + Contained herein are bindings to allow you to interface +php scripts with RRD tool directly via RRD tool's 'librrd' library, +thus avoiding the need to use system() calls to the rrdtool binary. + + RRD Tool is an AMAZING package of tools to faciliate +the easy storage, retrieval, and graphing of statistics (usually +but not limited to bit/byte counts from routers, switches, and +hubs). It was written by the author of MRTG, Tobias Oetiker +(oetiker@ee.ethz.ch). The primary web site for RRD Tool is: +http://www.caida.org/Tools/RRDtool + + +Reason I wrote this: Wanted to use PHP to create fairly real-time / +dynamic web pages w/ RRD tool, but the only way was to use system() +and popen() with PHP, since there was no direct interface to RRD +Tool from PHP. The fork()ing would have been slow and tedious +so that was pretty much out of the question. I could have used the +Perl library (RRDs) to interface ePerl, or mod_perl, or even +'rrdcgi', but I didn't really want to. I wanted to use PHP and +there was nothing to change my mind. + + +You are free to redistribute the source provided my name is +kept at the top of the source files as credit for the original +author. I make no warranties to the usability of this software, +nor I am responsible if your machine explodes (although it +shouldn't). + + +BUGS: + There might be some. Let me know: joeym@inficad.com. +Patches to fix bugs you find are more welcome than simple +reports of bugs (I don't have a lot of time to maintain +this code). + + +http://netmon.inficad.com/php3_rrdtool/ + +Joey Miller, , SkyLynx / Inficad Communications, +2/12/2000 diff --git a/contrib/php3/USAGE b/contrib/php3/USAGE new file mode 100644 index 00000000..11f3f771 --- /dev/null +++ b/contrib/php3/USAGE @@ -0,0 +1,156 @@ +-------------------------------------------------- +Usage: + + + To use the 'php3_rrdtool.so' module, you need to load it in your +PHP script before you call any of the rrd_* functions. + +This can be achieved with a simple command: + + + +After this is loaded, you have access to all the rrd_* commands +contained in 'php3_rrdtool.so'. + + + +API: + +-------------------------------------------------------------------- +string rrd_error() + + rrd_error takes no arguments. + + Use this function to retrieve the error message from +the last rrd_* function that was called and failed. + + If an error was set, a string will be returned. + + If no error was set, a blank string will be returned. + + + + +-------------------------------------------------------------------- +int rrd_last(string filename) + + rrd_last takes only one argument, a filename of an RRD +file. + + If rrd_last is successful in obtaining the last modifiation +time of the file, a date will be returned in the form of the +number of seconds from the unix epoch (Jan 1, 1970, 00:00:00). +You can then use any of php's excellent time functions on this +value. + + If rrd_last is not sucessful, a value of 0 will be returned, +and the internal rrd error will be set. You can access this error +message via the rrd_error() function (if one was set). + + +-------------------------------------------------------------------- +int rrd_update(string filename, string options) + + rrd_update takes 2 arguments, a filename of an RRD file +and a string with options to fill the RRD file with. + + It has been designed to work similary to the rrd_update +call in the RRDs perl library. + +Example: $result = rrd_update("/some.rrd", "N:123:9873:235"); + + If rrd_update is successful, 1 is returned. + + If rrd_update is not successful, 0 is returned, and an +error message should be obtainable by called 'rrd_error()'. + + +-------------------------------------------------------------------- +int rrd_create(string filename, array options, int num_of_elements) + + rrd_create takes 3 arguments, a filename of an RRD file to +create, an array of options (exactly like you would pass in the RRDs +perl library, or on the command line to 'rrdtool'), and the last +argument is the number of elements in the array of options. This +can be obtained by simply calling " count($opt_array) ". See the +example scripts for a more clear example. + + If rrd_update is successful, 1 is returned. + + If rrd_update is not successful, 0 is returned, and an +error message should be obtainable by called 'rrd_error()'. + + + +-------------------------------------------------------------------- +mixed rrd_graph(string filename, array options, int num_of_elements) + + rrd_graph takes 3 arguments, a filename of an RRD file, +an array of options (exactly like you would pass in the RRDs perl +library, or on the command line to 'rrdtool'), and the last argument +is the number of elements in the array of options. This can be +obtained by simply calling " count($opt_array) ". See the example +scripts for a more clear example. + + + If rrd_graph is successful, an array is returned. The +array is an associate array with 3 values: + +$array[xsize] - The size of the image along the X axis. +$array[ysize] - The size of the image along the Y axis. +$array[calcpr] - This is actually another array, that will contain + the results of any PRINT statements. + + + If rrd_graph is not successful, a 0 is returned. + +IMPORTANT NOTE: In order for php not to complain about mis-using +the return value, it is important that you check the type of the +return value. use the " is_array() " function to check if the +returned value is an array (in which case rrd_graph was successful), +or not an array (meaning rrd_graph was NOT successful). See the +examples for an illustration of this. + + +-------------------------------------------------------------------- +mixed rrd_fetch(string filename, array options, int num_of_elements) + + rrd_fetch takes 3 arguments, a filename of an RRD file, +an array of options (exactly like you would pass in the RRDs perl +library, or on the command line to 'rrdtool'), and the last argument +is the number of elements in the array of options. This can be +obtained by simply calling " count($opt_array) ". See the example +scripts for a more clear example. + + + If rrd_fetch is successful, an array is returned. The +array is an associate array with 5 values: + +$array[start] - This is the start time of the data returned + (unix epoch timestamp format) +$array[end] - This is the end time of the data returned + (unix epoch timestamp format) +$array[step] - This is the step interval of the data returned, + in number of seconds. +$array[ds_cnt] - This is the number of DS's returned from the + RRD file. +$array[ds_namv] - This is an array with the names of the DS's + returned from the RRD file. +$array[data] - This is an array with all the values fetch'd + from the rrd file by rrd_fetch. + +(This is very similar to the way rrd_fetch() in the RRDs +perl library works, as well as the C function rrd_fetch()). + + If rrd_fetch is not successful, a 0 is returned. + +IMPORTANT NOTE: In order for php not to complain about mis-using +the return value, it is important that you check the type of the +return value. use the " is_array() " function to check if the +returned value is an array (in which case rrd_fetch was successful), +or not an array (meaning rrd_fetch was NOT successful). See the +examples for an illustration of this. + + +-------------------------------------------------------------------- + diff --git a/contrib/php3/VERSION b/contrib/php3/VERSION new file mode 100644 index 00000000..ac39a106 --- /dev/null +++ b/contrib/php3/VERSION @@ -0,0 +1 @@ +0.9.0 diff --git a/contrib/php3/examples/rrd_create.php b/contrib/php3/examples/rrd_create.php new file mode 100644 index 00000000..71672429 --- /dev/null +++ b/contrib/php3/examples/rrd_create.php @@ -0,0 +1,27 @@ + diff --git a/contrib/php3/examples/rrd_fetch.php b/contrib/php3/examples/rrd_fetch.php new file mode 100644 index 00000000..84a34bcf --- /dev/null +++ b/contrib/php3/examples/rrd_fetch.php @@ -0,0 +1,51 @@ + diff --git a/contrib/php3/examples/rrd_graph.php b/contrib/php3/examples/rrd_graph.php new file mode 100644 index 00000000..3ce80946 --- /dev/null +++ b/contrib/php3/examples/rrd_graph.php @@ -0,0 +1,43 @@ + diff --git a/contrib/php3/examples/rrd_last.php b/contrib/php3/examples/rrd_last.php new file mode 100644 index 00000000..928a17bf --- /dev/null +++ b/contrib/php3/examples/rrd_last.php @@ -0,0 +1,22 @@ + diff --git a/contrib/php3/examples/rrd_update.php b/contrib/php3/examples/rrd_update.php new file mode 100644 index 00000000..dce3a971 --- /dev/null +++ b/contrib/php3/examples/rrd_update.php @@ -0,0 +1,19 @@ + diff --git a/contrib/php3/php3_rrdtool.c b/contrib/php3/php3_rrdtool.c new file mode 100644 index 00000000..cf2a8671 --- /dev/null +++ b/contrib/php3/php3_rrdtool.c @@ -0,0 +1,416 @@ +/* + * + * php3_rrdtool.c + * + * PHP interface to RRD Tool. + * + * + * Joey Miller, + * SkyLynx / Inficad Communications + * 2/12/2000 + * + * + * See README, INSTALL, and USAGE files for more details. + * + */ + +#include "dl/phpdl.h" +#include "rrd_tool.h" +#include "php3_rrdtool.h" + + +/* {{{ proto string rrd_error(void) + Get the error message set by the last rrd tool function call */ + +void php3_rrd_error(INTERNAL_FUNCTION_PARAMETERS) +{ + char *msg; + + if ( rrd_test_error() ) + { + msg = rrd_get_error(); + + RETVAL_STRING(msg, 1); + rrd_clear_error(); + } + else + return; +} +/* }}} */ + + + +/* {{{ proto void rrd_clear_error(void) + Clear the error set by the last rrd tool function call */ + +void php3_rrd_clear_error(INTERNAL_FUNCTION_PARAMETERS) +{ + if ( rrd_test_error() ) + rrd_clear_error(); + + return; +} +/* }}} */ + + + +/* {{{ proto int rrd_update(string file, string opt) + Update an RRD file with values specified */ + +void php3_rrd_update(INTERNAL_FUNCTION_PARAMETERS) +{ + pval *file, *opt; + char **argv; + + if ( rrd_test_error() ) + rrd_clear_error(); + + if ( ARG_COUNT(ht) == 2 && + getParameters(ht, 2, &file, &opt) == SUCCESS ) + { + convert_to_string(file); + convert_to_string(opt); + + argv = (char **) emalloc(4 * sizeof(char *)); + + argv[0] = "dummy"; + argv[1] = estrdup("update"); + argv[2] = estrdup(file->value.str.val); + argv[3] = estrdup(opt->value.str.val); + + optind = 0; opterr = 0; + if ( rrd_update(3, &argv[1]) != -1 ) + { + RETVAL_TRUE; + } + else + { + RETVAL_FALSE; + } + efree(argv[1]); efree(argv[2]); efree(argv[3]); + efree(argv); + } + else + { + WRONG_PARAM_COUNT; + } + return; +} +/* }}} */ + + + +/* {{{ proto int rrd_last(string file) + Gets last update time of an RRD file */ + +void php3_rrd_last(INTERNAL_FUNCTION_PARAMETERS) +{ + pval *file; + unsigned long retval; + + char **argv = (char **) emalloc(3 * sizeof(char *)); + + if ( rrd_test_error() ) + rrd_clear_error(); + + if (getParameters(ht, 1, &file) == SUCCESS) + { + convert_to_string(file); + + argv[0] = "dummy"; + argv[1] = estrdup("last"); + argv[2] = estrdup(file->value.str.val); + + optind = 0; opterr = 0; + retval = rrd_last(2, &argv[1]); + + efree(argv[1]); efree(argv[2]); + efree(argv); + RETVAL_LONG(retval); + } + else + { + WRONG_PARAM_COUNT; + } + return; +} +/* }}} */ + + +/* {{{ proto int rrd_create(string file, array args_arr, int argc) + Create an RRD file with the options passed (passed via array) */ + +void php3_rrd_create(INTERNAL_FUNCTION_PARAMETERS) +{ + pval *file, *args_arr, *p_argc; + pval *entry; + char **argv; + int argc, i; + + if ( rrd_test_error() ) + rrd_clear_error(); + + if ( ARG_COUNT(ht) == 3 && getParameters(ht, 3, &file, &args_arr, &p_argc) == SUCCESS ) + { + if ( args_arr->type != IS_ARRAY ) + { + php3_error(E_WARNING, "2nd Variable passed to rrd_create is not an array!\n"); + RETURN_FALSE; + } + + convert_to_long(p_argc); + convert_to_string(file); + + argc = p_argc->value.lval + 3; + argv = (char **) emalloc(argc * sizeof(char *)); + + argv[0] = "dummy"; + argv[1] = estrdup("create"); + argv[2] = estrdup(file->value.str.val); + + for (i = 3; i < argc; i++) + { + if ( _php3_hash_get_current_data(args_arr->value.ht, (void **) &entry) == FAILURE ) + continue; + + if ( entry->type != IS_STRING ) + convert_to_string(entry); + + argv[i] = estrdup(entry->value.str.val); + + if ( i < argc ) + _php3_hash_move_forward(args_arr->value.ht); + } + + optind = 0; opterr = 0; + + if ( rrd_create(argc-1, &argv[1]) != -1 ) + { + RETVAL_TRUE; + } + else + { + RETVAL_FALSE; + } + for (i = 1; i < argc; i++) + efree(argv[i]); + + efree(argv); + } + else + { + WRONG_PARAM_COUNT; + } + return; +} +/* }}} */ + + + +/* {{{ proto mixed rrd_graph(string file, array args_arr, int argc) + Creates a graph based on options passed via an array */ + +void php3_rrd_graph(INTERNAL_FUNCTION_PARAMETERS) +{ + pval *file, *args_arr, *p_argc; + pval *entry, p_calcpr; + int i, xsize, ysize, argc; + char **argv, **calcpr; + + if ( rrd_test_error() ) + rrd_clear_error(); + + if ( ARG_COUNT(ht) == 3 && + getParameters(ht, 3, &file, &args_arr, &p_argc) == SUCCESS) + { + if ( args_arr->type != IS_ARRAY ) + { + php3_error(E_WARNING, "2nd Variable passed to rrd_graph is not an array!\n"); + RETURN_FALSE; + } + + convert_to_long(p_argc); + convert_to_string(file); + + argc = p_argc->value.lval + 3; + argv = (char **) emalloc(argc * sizeof(char *)); + + argv[0] = "dummy"; + argv[1] = estrdup("graph"); + argv[2] = estrdup(file->value.str.val); + + for (i = 3; i < argc; i++) + { + if ( _php3_hash_get_current_data(args_arr->value.ht, (void **) &entry) == FAILURE + || entry->type != IS_STRING ) + { + continue; + } + argv[i] = estrdup(entry->value.str.val); + + if ( i < argc ) + _php3_hash_move_forward(args_arr->value.ht); + } + + optind = 0; opterr = 0; + if ( rrd_graph(argc-1, &argv[1], &calcpr, &xsize, &ysize) != -1 ) + { + array_init(return_value); + add_assoc_long(return_value, "xsize", xsize); + add_assoc_long(return_value, "ysize", ysize); + + array_init(&p_calcpr); + + if (calcpr) + { + for (i = 0; calcpr[i]; i++) + { + add_next_index_string(&p_calcpr, calcpr[i], 1); + free(calcpr[i]); + } + free(calcpr); + } + _php3_hash_update(return_value->value.ht, "calcpr", sizeof("calcpr"), + &p_calcpr, sizeof(pval), NULL); + } + else + { + RETVAL_FALSE; + } + for (i = 1; i < argc; i++) + efree(argv[i]); + + efree(argv); + } + else + { + WRONG_PARAM_COUNT; + } + return; +} +/* }}} */ + + + +/* {{{ proto mixed rrd_fetch(string file, array args_arr, int p_argc) + Fetch info from an RRD file */ + +void php3_rrd_fetch(INTERNAL_FUNCTION_PARAMETERS) +{ + pval *file, *args_arr, *p_argc; + pval *entry; + pval *p_start, *p_end, *p_step, *p_ds_cnt, p_ds_namv, p_data; + int i, argc; + time_t start, end; + unsigned long step, ds_cnt; + char **argv, **ds_namv; + rrd_value_t *data, *datap; + + if ( rrd_test_error() ) + rrd_clear_error(); + + if ( ARG_COUNT(ht) == 3 && + getParameters(ht, 3, &file, &args_arr, &p_argc) == SUCCESS) + { + if ( args_arr->type != IS_ARRAY ) + { + php3_error(E_WARNING, "2nd Variable passed to rrd_fetch is not an array!\n"); + RETURN_FALSE; + } + + convert_to_long(p_argc); + convert_to_string(file); + + argc = p_argc->value.lval + 3; + argv = (char **) emalloc(argc * sizeof(char *)); + + argv[0] = "dummy"; + argv[1] = estrdup("fetch"); + argv[2] = estrdup(file->value.str.val); + + for (i = 3; i < argc; i++) + { + if ( _php3_hash_get_current_data(args_arr->value.ht, (void **) &entry) == FAILURE + || entry->type != IS_STRING ) + { + continue; + } + argv[i] = estrdup(entry->value.str.val); + + if ( i < argc ) + _php3_hash_move_forward(args_arr->value.ht); + } + + optind = 0; opterr = 0; + + if ( rrd_fetch(argc-1, &argv[1], &start,&end,&step,&ds_cnt,&ds_namv,&data) != -1 ) + { + array_init(return_value); + add_assoc_long(return_value, "start", start); + add_assoc_long(return_value, "end", end); + add_assoc_long(return_value, "step", step); + add_assoc_long(return_value, "ds_cnt", ds_cnt); + + array_init(&p_ds_namv); + array_init(&p_data); + + if (ds_namv) + { + for (i = 0; i < ds_cnt; i++) + { + add_next_index_string(&p_ds_namv, ds_namv[i], 1); + free(ds_namv[i]); + } + free(ds_namv); + } + + if (data) + { + datap = data; + + for (i = start; i <= end; i += step) + add_next_index_double(&p_data, *(datap++)); + + free(data); + } + + _php3_hash_update(return_value->value.ht, "ds_namv", sizeof("ds_namv"), + &p_ds_namv, sizeof(pval), NULL); + _php3_hash_update(return_value->value.ht, "data", sizeof("data"), + &p_data, sizeof(pval), NULL); + } + else + { + RETVAL_FALSE; + } + for (i = 1; i < argc; i++) + efree(argv[i]); + + efree(argv); + } + else + { + WRONG_PARAM_COUNT; + } + return; +} +/* }}} */ + + +function_entry rrdtool_functions[] = { + {"rrd_error", php3_rrd_error, NULL}, + {"rrd_clear_error", php3_rrd_clear_error, NULL}, + {"rrd_graph", php3_rrd_graph, NULL}, + {"rrd_last", php3_rrd_last, NULL}, + {"rrd_fetch", php3_rrd_fetch, NULL}, + {"rrd_update", php3_rrd_update, NULL}, + {"rrd_create", php3_rrd_create, NULL}, + {NULL, NULL, NULL} +}; + + +php3_module_entry rrdtool_module_entry = { + "RRDTool", rrdtool_functions, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, NULL +}; + +php3_module_entry *get_module(void) { return &rrdtool_module_entry; } diff --git a/contrib/php3/php3_rrdtool.h b/contrib/php3/php3_rrdtool.h new file mode 100644 index 00000000..b81520b7 --- /dev/null +++ b/contrib/php3/php3_rrdtool.h @@ -0,0 +1,31 @@ +#ifndef _PHP3_RRDTOOL_H +#define _PHP3_RRDTOOL_H + +#if COMPILE_DL +#undef HAVE_RRDTOOL +#define HAVE_RRDTOOL 1 +#endif +#ifndef DLEXPORT +#define DLEXPORT +#endif + +#if HAVE_RRDTOOL + +extern php3_module_entry rrdtool_module_entry; +#define snmp_module_ptr &rrdtool_module_entry + +extern DLEXPORT void php3_rrd_error(INTERNAL_FUNCTION_PARAMETERS); +extern DLEXPORT void php3_rrd_clear_error(INTERNAL_FUNCTION_PARAMETERS); +extern DLEXPORT void php3_rrd_update(INTERNAL_FUNCTION_PARAMETERS); +extern DLEXPORT void php3_rrd_last(INTERNAL_FUNCTION_PARAMETERS); +extern DLEXPORT void php3_rrd_create(INTERNAL_FUNCTION_PARAMETERS); +extern DLEXPORT void php3_rrd_graph(INTERNAL_FUNCTION_PARAMETERS); +extern DLEXPORT void php3_rrd_fetch(INTERNAL_FUNCTION_PARAMETERS); + +#else + +#define rrdtool_module_ptr NULL + +#endif /* HAVE_RRDTOOL */ + +#endif /* _PHP3_RRDTOOL_H */ diff --git a/contrib/php4/.cvsignore b/contrib/php4/.cvsignore new file mode 100644 index 00000000..4dffc4d8 --- /dev/null +++ b/contrib/php4/.cvsignore @@ -0,0 +1,7 @@ +.deps +Makefile +*.o +*.lo +*.la +.libs +libs.mk diff --git a/contrib/php4/INSTALL b/contrib/php4/INSTALL new file mode 100644 index 00000000..09143b40 --- /dev/null +++ b/contrib/php4/INSTALL @@ -0,0 +1,79 @@ +$Id$ + +* Installing rrdtool module as a self-contained extension: + +There are two ways to install the rrdtool module for php4/zend. +The first involves simply compiling the rrdtool module as a +'self-contained extension'. This is similar to the previous +rrdtool module for php3 in that to use the rrd_* functions you +must first load the module in each script that will use the +rrd_* functions with a dl() call. See the USAGE file for +more info on this. + +To install as a self-contained extension: + + 1. Install rrdtool. (Tested with rrdtool-1.0.25) + Make sure you build shared and static libraries, if + your system lets you. + + rrdtool% ./configure --enable-shared + + 2. Make sure Apache is installed. + + 3. Make sure PHP4 is installed (tested with php-4.0.1pl2) + + 4. Now we can build the rrdtool module. + + rrdtool-module% ./configure --with-rrdtool=/usr/local/rrdtool \ + --with-php-config=/usr/local/bin/php-config + + 'php-config' is usually installed in /usr/local/bin, and is often + readable/executable only by root, so you will have to run the + configure script as root. + + rrdtool-module% make + rrdtool-module% make install + + This should build and install 'rrdtool.so' into the correct + directory on your system. + + Now you can access the rrd_* functions from your php4 scripts + by first calling " dl("rrdtool.so"); ". See the README and USAGE + for more info on the rrd_* functions. + + +* Installing the rrdtool module as an embedded extension + +Installing rrdtool module as an embedded extension provides all of +your php4 scripts access to the rrd_* functions without having to +load any shared libs with the dl() function of php. + +In order to install the rrdtool module as an embedded extension +you will need to have autoconf/automake and friends installed. + + 1. make sure you have the php4 sources untarred somewhere, lets + call it /src/php-4.0.1pl2/ + + 2. create a home for our embedded extension in the php4 source + tree. + + % mkdir /src/php-4.0.1pl2/ext/rrdtool + + 3. from the rrdtool module directory, do: + + % cp config.m4 Makefile.in php_rrdtool.h rrdtool.c \ + /src/php-4.0.1pl2/ext/rrdtool/ + + 4. Now we must recreate the configure scripts, etc for php4. + + % cd /src/php-4.0.1pl2 + % ./buildconf + + 5. If all goes well, you should be ready to run configure for + php4. Make sure you include "--with-rrdtool" in the options + to configure. + + 6. make, make install. and you're ready to go. + + +- Joe Miller, , 7/19/2000 diff --git a/contrib/php4/Makefile.in b/contrib/php4/Makefile.in new file mode 100644 index 00000000..ccdadcae --- /dev/null +++ b/contrib/php4/Makefile.in @@ -0,0 +1,8 @@ +# $Id$ + +LTLIBRARY_NAME = librrdtool.la +LTLIBRARY_SOURCES = rrdtool.c +LTLIBRARY_SHARED_NAME = rrdtool.la +LTLIBRARY_SHARED_LIBADD = $(RRDTOOL_SHARED_LIBADD) + +include $(top_srcdir)/build/dynlib.mk diff --git a/contrib/php4/README b/contrib/php4/README new file mode 100644 index 00000000..c6655164 --- /dev/null +++ b/contrib/php4/README @@ -0,0 +1,71 @@ +$Id$ + +UPDATES for php4: + + This version of the module will only build for php4/zend. It will +not build for php3. Get php3_rrdtool from the rrdtool distribution +if you need the rrd_* functions in php3. + + The module now contains two ways to install. The first is as +a self-contained extension (much like the php3_rrdtool module), +and the second is as a php4 embedded extension. See the INSTALL +file for instructions on how to install in both ways. + + Also fixed some of the scripts in the 'examples' directory. +A few of them were checking the return value for -1 on some +of the rrd_* function calls. Most calls will return 0 or 1 to +indicate failure or success, not -1. Sorry about that. + + + +------------------------------------ + +PHP bindings for RRD Tool. + + Contained herein are bindings to allow you to interface +php scripts with RRD tool directly via RRD tool's 'librrd' library, +thus avoiding the need to use system() calls to the rrdtool binary. + + RRD Tool is an AMAZING package of tools to faciliate +the easy storage, retrieval, and graphing of statistics (usually +but not limited to bit/byte counts from routers, switches, and +hubs). It was written by the author of MRTG, Tobias Oetiker +(oetiker@ee.ethz.ch). The primary web site for RRD Tool is: +http://www.caida.org/Tools/RRDtool + + +Reason I wrote this: Wanted to use PHP to create fairly real-time / +dynamic web pages w/ RRD tool, but the only way was to use system() +and popen() with PHP, since there was no direct interface to RRD +Tool from PHP. The fork()ing would have been slow and tedious +so that was pretty much out of the question. I could have used the +Perl library (RRDs) to interface ePerl, or mod_perl, or even +'rrdcgi', but I didn't really want to. I wanted to use PHP and +there was nothing to change my mind. + + +You are free to redistribute the source provided my name is +kept at the top of the source files as credit for the original +author. I make no warranties to the usability of this software, +nor I am responsible if your machine explodes (although it +shouldn't). + + +BUGS: + There might be some. Let me know: joeym@inficad.com. +Patches to fix bugs you find are more welcome than simple +reports of bugs (I don't have a lot of time to maintain +this code). + + You must include OS, apache version, and method of use +(embedded or self-contained extension) in bug reports. This +info is important. Also, give as much detail and examples +as possible so I can figure out what is wrong =) + +THANKS: + I'd like to thank Jeroen Roodnat for generously helping +debug the PHP4/Zend version of this module. + + +Joe Miller, ,, +2/12/2000 (updated: 8/28/2000) diff --git a/contrib/php4/USAGE b/contrib/php4/USAGE new file mode 100644 index 00000000..5495805b --- /dev/null +++ b/contrib/php4/USAGE @@ -0,0 +1,166 @@ +$Id$ + +-------------------------------------------------- +Usage: + + Loading the rrdtool module is a little bit different with +PHP4/Zend. If you build the rrdtool module into PHP4 at compile +time (see INSTALL file), then there is nothing you need to do +in your scripts to use the rrd_* functions. + + + + However, if you build the rrdtool module as a 'self-contained' +module (see INSTALL file), you will need to load it for each +php script you intend to use. To do this, you will need a line +such as this in your script: + + + +Note that in PHP4/Zend, you cannot specify the directory where +the module lives. It restricts the search to a specifc directory +which is defined at compile time. 'make install' will place +this file in the appropriate location. + + + +API: + +-------------------------------------------------------------------- +string rrd_error() + + rrd_error takes no arguments. + + Use this function to retrieve the error message from +the last rrd_* function that was called and failed. + + If an error was set, a string will be returned. + + If no error was set, a blank string will be returned. + + + + +-------------------------------------------------------------------- +int rrd_last(string filename) + + rrd_last takes only one argument, a filename of an RRD +file. + + If rrd_last is successful in obtaining the last modifiation +time of the file, a date will be returned in the form of the +number of seconds from the unix epoch (Jan 1, 1970, 00:00:00). +You can then use any of php's excellent time functions on this +value. + + If rrd_last is not sucessful, a value of 0 will be returned, +and the internal rrd error will be set. You can access this error +message via the rrd_error() function (if one was set). + + +-------------------------------------------------------------------- +int rrd_update(string filename, string options) + + rrd_update takes 2 arguments, a filename of an RRD file +and a string with options to fill the RRD file with. + + It has been designed to work similary to the rrd_update +call in the RRDs perl library. + +Example: $result = rrd_update("/some.rrd", "N:123:9873:235"); + + If rrd_update is successful, 1 is returned. + + If rrd_update is not successful, 0 is returned, and an +error message should be obtainable by called 'rrd_error()'. + + +-------------------------------------------------------------------- +int rrd_create(string filename, array options, int num_of_elements) + + rrd_create takes 3 arguments, a filename of an RRD file to +create, an array of options (exactly like you would pass in the RRDs +perl library, or on the command line to 'rrdtool'), and the last +argument is the number of elements in the array of options. This +can be obtained by simply calling " count($opt_array) ". See the +example scripts for a more clear example. + + If rrd_update is successful, 1 is returned. + + If rrd_update is not successful, 0 is returned, and an +error message should be obtainable by called 'rrd_error()'. + + + +-------------------------------------------------------------------- +mixed rrd_graph(string filename, array options, int num_of_elements) + + rrd_graph takes 3 arguments, a filename of an RRD file, +an array of options (exactly like you would pass in the RRDs perl +library, or on the command line to 'rrdtool'), and the last argument +is the number of elements in the array of options. This can be +obtained by simply calling " count($opt_array) ". See the example +scripts for a more clear example. + + + If rrd_graph is successful, an array is returned. The +array is an associate array with 3 values: + +$array[xsize] - The size of the image along the X axis. +$array[ysize] - The size of the image along the Y axis. +$array[calcpr] - This is actually another array, that will contain + the results of any PRINT statements. + + + If rrd_graph is not successful, a 0 is returned. + +IMPORTANT NOTE: In order for php not to complain about mis-using +the return value, it is important that you check the type of the +return value. use the " is_array() " function to check if the +returned value is an array (in which case rrd_graph was successful), +or not an array (meaning rrd_graph was NOT successful). See the +examples for an illustration of this. + + +-------------------------------------------------------------------- +mixed rrd_fetch(string filename, array options, int num_of_elements) + + rrd_fetch takes 3 arguments, a filename of an RRD file, +an array of options (exactly like you would pass in the RRDs perl +library, or on the command line to 'rrdtool'), and the last argument +is the number of elements in the array of options. This can be +obtained by simply calling " count($opt_array) ". See the example +scripts for a more clear example. + + + If rrd_fetch is successful, an array is returned. The +array is an associate array with 5 values: + +$array[start] - This is the start time of the data returned + (unix epoch timestamp format) +$array[end] - This is the end time of the data returned + (unix epoch timestamp format) +$array[step] - This is the step interval of the data returned, + in number of seconds. +$array[ds_cnt] - This is the number of DS's returned from the + RRD file. +$array[ds_namv] - This is an array with the names of the DS's + returned from the RRD file. +$array[data] - This is an array with all the values fetch'd + from the rrd file by rrd_fetch. + +(This is very similar to the way rrd_fetch() in the RRDs +perl library works, as well as the C function rrd_fetch()). + + If rrd_fetch is not successful, a 0 is returned. + +IMPORTANT NOTE: In order for php not to complain about mis-using +the return value, it is important that you check the type of the +return value. use the " is_array() " function to check if the +returned value is an array (in which case rrd_fetch was successful), +or not an array (meaning rrd_fetch was NOT successful). See the +examples for an illustration of this. + + +-------------------------------------------------------------------- + diff --git a/contrib/php4/acinclude.m4 b/contrib/php4/acinclude.m4 new file mode 100644 index 00000000..0daebf6d --- /dev/null +++ b/contrib/php4/acinclude.m4 @@ -0,0 +1,876 @@ +dnl $Id$ +dnl +dnl This file contains local autoconf functions. + +sinclude(dynlib.m4) + +dnl PHP_EVAL_LIBLINE(LINE, SHARED-LIBADD) +dnl +dnl Use this macro, if you need to add libraries and or library search +dnl paths to the PHP build system which are only given in compiler +dnl notation. +dnl +AC_DEFUN(PHP_EVAL_LIBLINE,[ + for ac_i in $1; do + case "$ac_i" in + -l*) + ac_ii=`echo $ac_i|cut -c 3-` + AC_ADD_LIBRARY($ac_ii,,$2) + ;; + -L*) + ac_ii=`echo $ac_i|cut -c 3-` + AC_ADD_LIBPATH($ac_ii,$2) + ;; + esac + done +]) + +dnl PHP_EVAL_INCLINE(LINE) +dnl +dnl Use this macro, if you need to add header search paths to the PHP +dnl build system which are only given in compiler notation. +dnl +AC_DEFUN(PHP_EVAL_INCLINE,[ + for ac_i in $1; do + case "$ac_i" in + -I*) + ac_ii=`echo $ac_i|cut -c 3-` + AC_ADD_INCLUDE($ac_ii) + ;; + esac + done +]) + +AC_DEFUN(PHP_READDIR_R_TYPE,[ + dnl HAVE_READDIR_R is also defined by libmysql + AC_CHECK_FUNC(readdir_r,ac_cv_func_readdir_r=yes,ac_cv_func_readdir=no) + if test "$ac_cv_func_readdir_r" = "yes"; then + AC_CACHE_CHECK(for type of readdir_r, ac_cv_what_readdir_r,[ + AC_TRY_RUN([ +#define _REENTRANT +#include +#include + +main() { + DIR *dir; + struct dirent entry, *pentry; + + dir = opendir("/"); + if (!dir) + exit(1); + if (readdir_r(dir, &entry, &pentry) == 0) + exit(0); + exit(1); +} + ],[ + ac_cv_what_readdir_r=POSIX + ],[ + AC_TRY_CPP([ +#define _REENTRANT +#include +#include +int readdir_r(DIR *, struct dirent *); + ],[ + ac_cv_what_readdir_r=old-style + ],[ + ac_cv_what_readdir_r=none + ]) + ],[ + ac_cv_what_readdir_r=none + ]) + ]) + case "$ac_cv_what_readdir_r" in + POSIX) + AC_DEFINE(HAVE_POSIX_READDIR_R,1,[whether you have POSIX readdir_r]);; + old-style) + AC_DEFINE(HAVE_OLD_READDIR_R,1,[whether you have old-style readdir_r]);; + esac + fi +]) + +AC_DEFUN(PHP_SHLIB_SUFFIX_NAME,[ + PHP_SUBST(SHLIB_SUFFIX_NAME) + SHLIB_SUFFIX_NAME=so + case "$host_alias" in + *hpux*) + SHLIB_SUFFIX_NAME=sl + ;; + esac +]) + +AC_DEFUN(PHP_DEBUG_MACRO,[ + DEBUG_LOG="$1" + cat >$1 <conftest.$ac_ext <>$1 2>&1 + rm -fr conftest* +]) + +AC_DEFUN(PHP_MISSING_TIME_R_DECL,[ + AC_MSG_CHECKING(for missing declarations of reentrant functions) + AC_TRY_COMPILE([#include ],[struct tm *(*func)() = localtime_r],[ + : + ],[ + AC_DEFINE(MISSING_LOCALTIME_R_DECL,1,[Whether localtime_r is declared]) + ]) + AC_TRY_COMPILE([#include ],[struct tm *(*func)() = gmtime_r],[ + : + ],[ + AC_DEFINE(MISSING_GMTIME_R_DECL,1,[Whether gmtime_r is declared]) + ]) + AC_TRY_COMPILE([#include ],[char *(*func)() = asctime_r],[ + : + ],[ + AC_DEFINE(MISSING_ASCTIME_R_DECL,1,[Whether asctime_r is declared]) + ]) + AC_TRY_COMPILE([#include ],[char *(*func)() = ctime_r],[ + : + ],[ + AC_DEFINE(MISSING_CTIME_R_DECL,1,[Whether ctime_r is declared]) + ]) + AC_TRY_COMPILE([#include ],[char *(*func)() = strtok_r],[ + : + ],[ + AC_DEFINE(MISSING_STRTOK_R_DECL,1,[Whether strtok_r is declared]) + ]) + AC_MSG_RESULT(done) +]) + +dnl +dnl PHP_LIBGCC_LIBPATH(gcc) +dnl Stores the location of libgcc in libgcc_libpath +dnl +AC_DEFUN(PHP_LIBGCC_LIBPATH,[ + changequote({,}) + libgcc_libpath="`$1 --print-libgcc-file-name|sed 's%/*[^/][^/]*$%%'`" + changequote([,]) +]) + +AC_DEFUN(PHP_ARG_ANALYZE,[ +case "[$]$1" in +shared,*) + ext_output="yes, shared" + ext_shared=yes + $1=`echo $ac_n "[$]$1$ac_c"|sed s/^shared,//` + ;; +shared) + ext_output="yes, shared" + ext_shared=yes + $1=yes + ;; +no) + ext_output="no" + ext_shared=no + ;; +*) + ext_output="yes" + ext_shared=no + ;; +esac + +if test "$php_always_shared" = "yes"; then + ext_output="yes, shared" + ext_shared=yes + test "[$]$1" = "no" && $1=yes +fi + +AC_MSG_RESULT($ext_output) +]) + +dnl +dnl PHP_ARG_WITH(arg-name, check message, help text[, default-val]) +dnl Sets PHP_ARG_NAME either to the user value or to the default value. +dnl default-val defaults to no. +dnl +AC_DEFUN(PHP_ARG_WITH,[ +PHP_REAL_ARG_WITH([$1],[$2],[$3],[$4],PHP_[]translit($1,a-z-,A-Z_)) +]) + +AC_DEFUN(PHP_REAL_ARG_WITH,[ +AC_MSG_CHECKING($2) +AC_ARG_WITH($1,[$3],$5=[$]withval,$5=ifelse($4,,no,$4)) +PHP_ARG_ANALYZE($5) +]) + +dnl +dnl PHP_ARG_ENABLE(arg-name, check message, help text[, default-val]) +dnl Sets PHP_ARG_NAME either to the user value or to the default value. +dnl default-val defaults to no. +dnl +AC_DEFUN(PHP_ARG_ENABLE,[ +PHP_REAL_ARG_ENABLE([$1],[$2],[$3],[$4],PHP_[]translit($1,a-z-,A-Z_)) +]) + +AC_DEFUN(PHP_REAL_ARG_ENABLE,[ +AC_MSG_CHECKING($2) +AC_ARG_ENABLE($1,[$3],$5=[$]enableval,$5=ifelse($4,,no,$4)) +PHP_ARG_ANALYZE($5) +]) + +AC_DEFUN(PHP_MODULE_PTR,[ + EXTRA_MODULE_PTRS="$EXTRA_MODULE_PTRS $1," +]) + +AC_DEFUN(PHP_CONFIG_NICE,[ + rm -f $1 + cat >$1<> $1 + done + echo '"[$]@"' >> $1 + chmod +x $1 +]) + +AC_DEFUN(PHP_TIME_R_TYPE,[ +AC_CACHE_CHECK(for type of reentrant time-related functions, ac_cv_time_r_type,[ +AC_TRY_RUN([ +#include +#include + +main() { +char buf[27]; +struct tm t; +time_t old = 0; +int r, s; + +s = gmtime_r(&old, &t); +r = (int) asctime_r(&t, buf, 26); +if (r == s && s == 0) exit(0); +exit(1); +} +],[ + ac_cv_time_r_type=hpux +],[ + ac_cv_time_r_type=POSIX +],[ + ac_cv_time_r_type=POSIX +]) +]) +if test "$ac_cv_time_r_type" = "hpux"; then + AC_DEFINE(PHP_HPUX_TIME_R,1,[Whether you have HP-UX 10.x]) +fi +]) + +AC_DEFUN(PHP_SUBST,[ + PHP_VAR_SUBST="$PHP_VAR_SUBST $1" + AC_SUBST($1) +]) + +AC_DEFUN(PHP_FAST_OUTPUT,[ + PHP_FAST_OUTPUT_FILES="$PHP_FAST_OUTPUT_FILES $1" +]) + +AC_DEFUN(PHP_MKDIR_P_CHECK,[ + AC_CACHE_CHECK(for working mkdir -p, ac_cv_mkdir_p,[ + test -d conftestdir && rm -rf conftestdir + mkdir -p conftestdir/somedir >/dev/null 2>&1 + if test -d conftestdir/somedir; then + ac_cv_mkdir_p=yes + else + ac_cv_mkdir_p=no + fi + rm -rf conftestdir + ]) +]) + +AC_DEFUN(PHP_GEN_CONFIG_VARS,[ + PHP_MKDIR_P_CHECK + echo creating config_vars.mk + > config_vars.mk + for i in $PHP_VAR_SUBST; do + eval echo "$i = \$$i" >> config_vars.mk + done +]) + +AC_DEFUN(PHP_GEN_MAKEFILES,[ + $SHELL $srcdir/build/fastgen.sh $srcdir $ac_cv_mkdir_p $PHP_FAST_OUTPUT_FILES +]) + +AC_DEFUN(PHP_TM_GMTOFF,[ +AC_CACHE_CHECK([for tm_gmtoff in struct tm], ac_cv_struct_tm_gmtoff, +[AC_TRY_COMPILE([#include +#include <$ac_cv_struct_tm>], [struct tm tm; tm.tm_gmtoff;], + ac_cv_struct_tm_gmtoff=yes, ac_cv_struct_tm_gmtoff=no)]) + +if test "$ac_cv_struct_tm_gmtoff" = yes; then + AC_DEFINE(HAVE_TM_GMTOFF,1,[whether you have tm_gmtoff in struct tm]) +fi +]) + +dnl PHP_CONFIGURE_PART(MESSAGE) +dnl Idea borrowed from mm +AC_DEFUN(PHP_CONFIGURE_PART,[ + AC_MSG_RESULT() + AC_MSG_RESULT(${T_MD}$1${T_ME}) +]) + +AC_DEFUN(PHP_PROG_SENDMAIL,[ +AC_PATH_PROG(PROG_SENDMAIL, sendmail, /usr/lib/sendmail, $PATH:/usr/bin:/usr/sbin:/usr/etc:/etc:/usr/ucblib) +if test -n "$PROG_SENDMAIL"; then + AC_DEFINE(HAVE_SENDMAIL,1,[whether you have sendmail]) +fi +]) + +AC_DEFUN(PHP_RUNPATH_SWITCH,[ +dnl check for -R, etc. switch +AC_MSG_CHECKING(if compiler supports -R) +AC_CACHE_VAL(php_cv_cc_dashr,[ + SAVE_LIBS="${LIBS}" + LIBS="-R /usr/lib ${LIBS}" + AC_TRY_LINK([], [], php_cv_cc_dashr=yes, php_cv_cc_dashr=no) + LIBS="${SAVE_LIBS}"]) +AC_MSG_RESULT($php_cv_cc_dashr) +if test $php_cv_cc_dashr = "yes"; then + ld_runpath_switch="-R" +else + AC_MSG_CHECKING([if compiler supports -Wl,-rpath,]) + AC_CACHE_VAL(php_cv_cc_rpath,[ + SAVE_LIBS="${LIBS}" + LIBS="-Wl,-rpath,/usr/lib ${LIBS}" + AC_TRY_LINK([], [], php_cv_cc_rpath=yes, php_cv_cc_rpath=no) + LIBS="${SAVE_LIBS}"]) + AC_MSG_RESULT($php_cv_cc_rpath) + if test $php_cv_cc_rpath = "yes"; then + ld_runpath_switch="-Wl,-rpath," + else + dnl something innocuous + ld_runpath_switch="-L" + fi +fi +]) + +AC_DEFUN(PHP_STRUCT_FLOCK,[ +AC_CACHE_CHECK(for struct flock,ac_cv_struct_flock, + AC_TRY_COMPILE([ +#include +#include + ], + [struct flock x;], + [ + ac_cv_struct_flock=yes + ],[ + ac_cv_struct_flock=no + ]) +) +if test "$ac_cv_struct_flock" = "yes" ; then + AC_DEFINE(HAVE_STRUCT_FLOCK, 1,[whether you have struct flock]) +fi +]) + +AC_DEFUN(PHP_SOCKLEN_T,[ +AC_CACHE_CHECK(for socklen_t,ac_cv_socklen_t, + AC_TRY_COMPILE([ +#include +#include +],[ +socklen_t x; +],[ + ac_cv_socklen_t=yes +],[ + ac_cv_socklen_t=no +])) +if test "$ac_cv_socklen_t" = "yes"; then + AC_DEFINE(HAVE_SOCKLEN_T, 1, [Whether you have socklen_t]) +fi +]) + +dnl +dnl PHP_SET_SYM_FILE(path) +dnl +dnl set the path of the file which contains the symbol export list +dnl +AC_DEFUN(PHP_SET_SYM_FILE, +[ + PHP_SYM_FILE="$1" +]) + +dnl +dnl PHP_BUILD_THREAD_SAFE +dnl +AC_DEFUN(PHP_BUILD_THREAD_SAFE,[ + enable_experimental_zts=yes + if test "$pthreads_working" != "yes"; then + AC_MSG_ERROR(ZTS currently requires working POSIX threads. Your system does not support this.) + fi +]) + +dnl +dnl PHP_BUILD_SHARED +dnl +AC_DEFUN(PHP_BUILD_SHARED,[ + php_build_target=shared +]) + +dnl +dnl PHP_BUILD_STATIC +dnl +AC_DEFUN(PHP_BUILD_STATIC,[ + php_build_target=static +]) + +dnl +dnl PHP_BUILD_PROGRAM +dnl +AC_DEFUN(PHP_BUILD_PROGRAM,[ + php_build_target=program +]) + +dnl +dnl AC_PHP_ONCE(namespace, variable, code) +dnl +dnl execute code, if variable is not set in namespace +dnl +AC_DEFUN(AC_PHP_ONCE,[ + changequote({,}) + unique=`echo $2|sed 's/[^a-zA-Z0-9]/_/g'` + changequote([,]) + cmd="echo $ac_n \"\$$1$unique$ac_c\"" + if test -n "$unique" && test "`eval $cmd`" = "" ; then + eval "$1$unique=set" + $3 + fi +]) + +dnl +dnl AC_EXPAND_PATH(path, variable) +dnl +dnl expands path to an absolute path and assigns it to variable +dnl +AC_DEFUN(AC_EXPAND_PATH,[ + if test -z "$1" || echo "$1" | grep '^/' >/dev/null ; then + $2="$1" + else + changequote({,}) + ep_dir="`echo $1|sed 's%/*[^/][^/]*$%%'`" + changequote([,]) + ep_realdir="`(cd \"$ep_dir\" && pwd)`" + $2="$ep_realdir/`basename \"$1\"`" + fi +]) + +dnl +dnl AC_ADD_LIBPATH(path[, shared-libadd]) +dnl +dnl add a library to linkpath/runpath +dnl +AC_DEFUN(AC_ADD_LIBPATH,[ + if test "$1" != "/usr/lib"; then + AC_EXPAND_PATH($1, ai_p) + if test "$ext_shared" = "yes" && test -n "$2"; then + $2="-R$1 -L$1 [$]$2" + else + AC_PHP_ONCE(LIBPATH, $ai_p, [ + test -n "$ld_runpath_switch" && LDFLAGS="$LDFLAGS $ld_runpath_switch$ai_p" + LDFLAGS="$LDFLAGS -L$ai_p" + PHP_RPATHS="$PHP_RPATHS $ai_p" + ]) + fi + fi +]) + +dnl +dnl AC_BUILD_RPATH() +dnl +dnl builds RPATH from PHP_RPATHS +dnl +AC_DEFUN(AC_BUILD_RPATH,[ + if test "$PHP_RPATH" = "yes" && test -n "$PHP_RPATHS"; then + OLD_RPATHS="$PHP_RPATHS" + PHP_RPATHS="" + for i in $OLD_RPATHS; do + PHP_LDFLAGS="$PHP_LDFLAGS -L$i" + PHP_RPATHS="$PHP_RPATHS -R $i" + NATIVE_RPATHS="$NATIVE_RPATHS ${ld_runpath_switch}$i" + done + fi +]) + +dnl +dnl AC_ADD_INCLUDE(path) +dnl +dnl add a include path +dnl +AC_DEFUN(AC_ADD_INCLUDE,[ + if test "$1" != "/usr/include"; then + AC_EXPAND_PATH($1, ai_p) + AC_PHP_ONCE(INCLUDEPATH, $ai_p, [ + INCLUDES="$INCLUDES -I$ai_p" + ]) + fi +]) + +AC_DEFUN(PHP_X_ADD_LIBRARY,[ + ifelse($2,,$3="-l$1 [$]$3", $3="[$]$3 -l$1") +]) + +dnl +dnl AC_ADD_LIBRARY(library[, append[, shared-libadd]]) +dnl +dnl add a library to the link line +dnl +AC_DEFUN(AC_ADD_LIBRARY,[ + case "$1" in + c|c_r|pthread*) ;; + *) +ifelse($3,,[ + AC_PHP_ONCE(LIBRARY, $1, [ + PHP_X_ADD_LIBRARY($1,$2,LIBS) + ]) +],[ + if test "$ext_shared" = "yes"; then + PHP_X_ADD_LIBRARY($1,$2,$3) + else + AC_ADD_LIBRARY($1,$2) + fi +]) + ;; + esac +]) + +dnl +dnl AC_ADD_LIBRARY_DEFER(library[, append]) +dnl +dnl add a library to the link line (deferred) +AC_DEFUN(AC_ADD_LIBRARY_DEFER,[ + AC_PHP_ONCE(LIBRARY, $1, [ + ifelse($#, 1, DLIBS="-l$1 $DLIBS", DLIBS="$DLIBS -l$1") + ]) +]) + +dnl +dnl AC_ADD_LIBRARY_WITH_PATH(library, path[, shared-libadd]) +dnl +dnl add a library to the link line and path to linkpath/runpath. +dnl if shared-libadd is not empty and $ext_shared is yes, +dnl shared-libadd will be assigned the library information +dnl +AC_DEFUN(AC_ADD_LIBRARY_WITH_PATH,[ +ifelse($3,,[ + if test -n "$2"; then + AC_ADD_LIBPATH($2) + fi + AC_ADD_LIBRARY($1) +],[ + if test "$ext_shared" = "yes"; then + $3="-l$1 [$]$3" + if test -n "$2"; then + AC_ADD_LIBPATH($2,$3) + fi + else + AC_ADD_LIBRARY_WITH_PATH($1,$2) + fi +]) +]) + +dnl +dnl AC_ADD_LIBRARY_DEFER_WITH_PATH(library, path) +dnl +dnl add a library to the link line (deferred) +dnl and path to linkpath/runpath (not deferred) +dnl +AC_DEFUN(AC_ADD_LIBRARY_DEFER_WITH_PATH,[ + AC_ADD_LIBPATH($2) + AC_ADD_LIBRARY_DEFER($1) +]) + +AC_DEFUN(AM_SET_LIBTOOL_VARIABLE,[ + LIBTOOL='$(SHELL) $(top_builddir)/libtool $1' +]) + +dnl +dnl Check for cc option +dnl +AC_DEFUN(AC_CHECK_CC_OPTION,[ + echo "main(){return 0;}" > conftest.$ac_ext + opt="$1" + changequote({,}) + var=`echo $opt|sed 's/[^a-zA-Z0-9]/_/g'` + changequote([,]) + AC_MSG_CHECKING([if compiler supports -$1 really]) + ac_php_compile="${CC-cc} -$opt -o conftest $CFLAGS $CPPFLAGS conftest.$ac_ext 2>&1" + if eval $ac_php_compile 2>&1 | egrep "$opt" > /dev/null 2>&1 ; then + eval php_cc_$var=no + AC_MSG_RESULT(no) + else + if eval ./conftest 2>/dev/null ; then + eval php_cc_$var=yes + AC_MSG_RESULT(yes) + else + eval php_cc_$var=no + AC_MSG_RESULT(no) + fi + fi +]) + +AC_DEFUN(PHP_REGEX,[ + +if test "$REGEX_TYPE" = "php"; then + REGEX_LIB=regex/libregex.la + REGEX_DIR=regex + AC_DEFINE(HSREGEX,1,[ ]) + AC_DEFINE(REGEX,1,[ ]) + PHP_FAST_OUTPUT(regex/Makefile) +elif test "$REGEX_TYPE" = "system"; then + AC_DEFINE(REGEX,0,[ ]) +fi + +AC_MSG_CHECKING(which regex library to use) +AC_MSG_RESULT($REGEX_TYPE) + +PHP_SUBST(REGEX_DIR) +PHP_SUBST(REGEX_LIB) +PHP_SUBST(HSREGEX) +]) + +dnl +dnl See if we have broken header files like SunOS has. +dnl +AC_DEFUN(AC_MISSING_FCLOSE_DECL,[ + AC_MSG_CHECKING([for fclose declaration]) + AC_TRY_COMPILE([#include ],[int (*func)() = fclose],[ + AC_DEFINE(MISSING_FCLOSE_DECL,0,[ ]) + AC_MSG_RESULT(ok) + ],[ + AC_DEFINE(MISSING_FCLOSE_DECL,1,[ ]) + AC_MSG_RESULT(missing) + ]) +]) + +dnl +dnl Check for broken sprintf() +dnl +AC_DEFUN(AC_BROKEN_SPRINTF,[ + AC_CACHE_CHECK(whether sprintf is broken, ac_cv_broken_sprintf,[ + AC_TRY_RUN([main() {char buf[20];exit(sprintf(buf,"testing 123")!=11); }],[ + ac_cv_broken_sprintf=no + ],[ + ac_cv_broken_sprintf=yes + ],[ + ac_cv_broken_sprintf=no + ]) + ]) + if test "$ac_cv_broken_sprintf" = "yes"; then + AC_DEFINE(PHP_BROKEN_SPRINTF, 1, [ ]) + else + AC_DEFINE(PHP_BROKEN_SPRINTF, 0, [ ]) + fi +]) + +dnl +dnl PHP_EXTENSION(extname [, shared]) +dnl +dnl Includes an extension in the build. +dnl +dnl "extname" is the name of the ext/ subdir where the extension resides +dnl "shared" can be set to "shared" or "yes" to build the extension as +dnl a dynamically loadable library. +dnl +AC_DEFUN(PHP_EXTENSION,[ + EXT_SUBDIRS="$EXT_SUBDIRS $1" + + if test -d "$abs_srcdir/ext/$1"; then +dnl ---------------------------------------------- Internal Module + ext_builddir="ext/$1" + ext_srcdir="$abs_srcdir/ext/$1" + else +dnl ---------------------------------------------- External Module + ext_builddir="." + ext_srcdir="$abs_srcdir" + fi + + if test "$2" != "shared" && test "$2" != "yes"; then +dnl ---------------------------------------------- Static module + LIB_BUILD($ext_builddir) + EXT_LTLIBS="$EXT_LTLIBS $ext_builddir/lib$1.la" + EXT_STATIC="$EXT_STATIC $1" + else +dnl ---------------------------------------------- Shared module + LIB_BUILD($ext_builddir,yes) + AC_DEFINE_UNQUOTED([COMPILE_DL_]translit($1,a-z-,A-Z_), 1, Whether to build $1 as dynamic module) + fi + + PHP_FAST_OUTPUT($ext_builddir/Makefile) +]) + +PHP_SUBST(EXT_SUBDIRS) +PHP_SUBST(EXT_STATIC) +PHP_SUBST(EXT_SHARED) +PHP_SUBST(EXT_LIBS) +PHP_SUBST(EXT_LTLIBS) + +dnl +dnl Solaris requires main code to be position independent in order +dnl to let shared objects find symbols. Weird. Ugly. +dnl +dnl Must be run after all --with-NN options that let the user +dnl choose dynamic extensions, and after the gcc test. +dnl +AC_DEFUN(PHP_SOLARIS_PIC_WEIRDNESS,[ + AC_MSG_CHECKING(whether -fPIC is required) + if test "$EXT_SHARED" != ""; then + os=`uname -sr 2>/dev/null` + case "$os" in + "SunOS 5.6"|"SunOS 5.7") + case "$CC" in + gcc*|egcs*) CFLAGS="$CFLAGS -fPIC";; + *) CFLAGS="$CFLAGS -fpic";; + esac + AC_MSG_RESULT(yes);; + *) + AC_MSG_RESULT(no);; + esac + else + AC_MSG_RESULT(no) + fi +]) + +dnl +dnl Checks whether $withval is "shared" or starts with "shared,XXX" +dnl and sets $shared to "yes" or "no", and removes "shared,?" stuff +dnl from $withval. +dnl +AC_DEFUN(PHP_WITH_SHARED,[ + case $withval in + shared) + shared=yes + withval=yes + ;; + shared,*) + shared=yes + withval=`echo $withval | sed -e 's/^shared,//'` + ;; + *) + shared=no + ;; + esac + if test -n "$php_always_shared"; then + shared=yes + fi +]) + +dnl The problem is that the default compilation flags in Solaris 2.6 won't +dnl let programs access large files; you need to tell the compiler that +dnl you actually want your programs to work on large files. For more +dnl details about this brain damage please see: +dnl http://www.sas.com/standards/large.file/x_open.20Mar96.html + +dnl Written by Paul Eggert . + +AC_DEFUN(AC_SYS_LFS, +[dnl + # If available, prefer support for large files unless the user specified + # one of the CPPFLAGS, LDFLAGS, or LIBS variables. + AC_MSG_CHECKING(whether large file support needs explicit enabling) + ac_getconfs='' + ac_result=yes + ac_set='' + ac_shellvars='CPPFLAGS LDFLAGS LIBS' + for ac_shellvar in $ac_shellvars; do + case $ac_shellvar in + CPPFLAGS) ac_lfsvar=LFS_CFLAGS ;; + *) ac_lfsvar=LFS_$ac_shellvar ;; + esac + eval test '"${'$ac_shellvar'+set}"' = set && ac_set=$ac_shellvar + (getconf $ac_lfsvar) >/dev/null 2>&1 || { ac_result=no; break; } + ac_getconf=`getconf $ac_lfsvar` + ac_getconfs=$ac_getconfs$ac_getconf + eval ac_test_$ac_shellvar=\$ac_getconf + done + case "$ac_result$ac_getconfs" in + yes) ac_result=no ;; + esac + case "$ac_result$ac_set" in + yes?*) ac_result="yes, but $ac_set is already set, so use its settings" + esac + AC_MSG_RESULT($ac_result) + case $ac_result in + yes) + for ac_shellvar in $ac_shellvars; do + eval $ac_shellvar=\$ac_test_$ac_shellvar + done ;; + esac +]) + +AC_DEFUN(AC_SOCKADDR_SA_LEN,[ + AC_CACHE_CHECK([for field sa_len in struct sockaddr],ac_cv_sockaddr_sa_len,[ + AC_TRY_COMPILE([#include +#include ], + [struct sockaddr s; s.sa_len;], + [ac_cv_sockaddr_sa_len=yes + AC_DEFINE(HAVE_SOCKADDR_SA_LEN,1,[ ])], + [ac_cv_sockaddr_sa_len=no]) + ]) +]) + + +dnl ## PHP_AC_OUTPUT(file) +dnl ## adds "file" to the list of files generated by AC_OUTPUT +dnl ## This macro can be used several times. +AC_DEFUN(PHP_OUTPUT,[ + PHP_OUTPUT_FILES="$PHP_OUTPUT_FILES $1" +]) + +AC_DEFUN(PHP_DECLARED_TIMEZONE,[ + AC_CACHE_CHECK(for declared timezone, ac_cv_declared_timezone,[ + AC_TRY_COMPILE([ +#include +#include +#ifdef HAVE_SYS_TIME_H +#include +#endif +],[ + time_t foo = (time_t) timezone; +],[ + ac_cv_declared_timezone=yes +],[ + ac_cv_declared_timezone=no +])]) + if test "$ac_cv_declared_timezone" = "yes"; then + AC_DEFINE(HAVE_DECLARED_TIMEZONE, 1, [Whether system headers declare timezone]) + fi +]) + +AC_DEFUN(PHP_EBCDIC,[ + AC_CACHE_CHECK([whether system uses EBCDIC],ac_cv_ebcdic,[ + AC_TRY_RUN( [ +int main(void) { + return (unsigned char)'A' != (unsigned char)0xC1; +} +],[ + ac_cv_ebcdic="yes" +],[ + ac_cv_ebcdic="no" +],[ + ac_cv_ebcdic="no" +])]) + if test "$ac_cv_ebcdic" = "yes"; then + AC_DEFINE(CHARSET_EBCDIC,1, [Define if system uses EBCDIC]) + fi +]) + diff --git a/contrib/php4/aclocal.m4 b/contrib/php4/aclocal.m4 new file mode 100644 index 00000000..d15ac250 --- /dev/null +++ b/contrib/php4/aclocal.m4 @@ -0,0 +1,1295 @@ +dnl aclocal.m4 generated automatically by aclocal 1.4 + +dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl This program is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without +dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A +dnl PARTICULAR PURPOSE. + +dnl $Id$ +dnl +dnl This file contains local autoconf functions. + +sinclude(dynlib.m4) + +dnl PHP_EVAL_LIBLINE(LINE, SHARED-LIBADD) +dnl +dnl Use this macro, if you need to add libraries and or library search +dnl paths to the PHP build system which are only given in compiler +dnl notation. +dnl +AC_DEFUN(PHP_EVAL_LIBLINE,[ + for ac_i in $1; do + case "$ac_i" in + -l*) + ac_ii=`echo $ac_i|cut -c 3-` + AC_ADD_LIBRARY($ac_ii,,$2) + ;; + -L*) + ac_ii=`echo $ac_i|cut -c 3-` + AC_ADD_LIBPATH($ac_ii,$2) + ;; + esac + done +]) + +dnl PHP_EVAL_INCLINE(LINE) +dnl +dnl Use this macro, if you need to add header search paths to the PHP +dnl build system which are only given in compiler notation. +dnl +AC_DEFUN(PHP_EVAL_INCLINE,[ + for ac_i in $1; do + case "$ac_i" in + -I*) + ac_ii=`echo $ac_i|cut -c 3-` + AC_ADD_INCLUDE($ac_ii) + ;; + esac + done +]) + +AC_DEFUN(PHP_READDIR_R_TYPE,[ + dnl HAVE_READDIR_R is also defined by libmysql + AC_CHECK_FUNC(readdir_r,ac_cv_func_readdir_r=yes,ac_cv_func_readdir=no) + if test "$ac_cv_func_readdir_r" = "yes"; then + AC_CACHE_CHECK(for type of readdir_r, ac_cv_what_readdir_r,[ + AC_TRY_RUN([ +#define _REENTRANT +#include +#include + +main() { + DIR *dir; + struct dirent entry, *pentry; + + dir = opendir("/"); + if (!dir) + exit(1); + if (readdir_r(dir, &entry, &pentry) == 0) + exit(0); + exit(1); +} + ],[ + ac_cv_what_readdir_r=POSIX + ],[ + AC_TRY_CPP([ +#define _REENTRANT +#include +#include +int readdir_r(DIR *, struct dirent *); + ],[ + ac_cv_what_readdir_r=old-style + ],[ + ac_cv_what_readdir_r=none + ]) + ],[ + ac_cv_what_readdir_r=none + ]) + ]) + case "$ac_cv_what_readdir_r" in + POSIX) + AC_DEFINE(HAVE_POSIX_READDIR_R,1,[whether you have POSIX readdir_r]);; + old-style) + AC_DEFINE(HAVE_OLD_READDIR_R,1,[whether you have old-style readdir_r]);; + esac + fi +]) + +AC_DEFUN(PHP_SHLIB_SUFFIX_NAME,[ + PHP_SUBST(SHLIB_SUFFIX_NAME) + SHLIB_SUFFIX_NAME=so + case "$host_alias" in + *hpux*) + SHLIB_SUFFIX_NAME=sl + ;; + esac +]) + +AC_DEFUN(PHP_DEBUG_MACRO,[ + DEBUG_LOG="$1" + cat >$1 <conftest.$ac_ext <>$1 2>&1 + rm -fr conftest* +]) + +AC_DEFUN(PHP_MISSING_TIME_R_DECL,[ + AC_MSG_CHECKING(for missing declarations of reentrant functions) + AC_TRY_COMPILE([#include ],[struct tm *(*func)() = localtime_r],[ + : + ],[ + AC_DEFINE(MISSING_LOCALTIME_R_DECL,1,[Whether localtime_r is declared]) + ]) + AC_TRY_COMPILE([#include ],[struct tm *(*func)() = gmtime_r],[ + : + ],[ + AC_DEFINE(MISSING_GMTIME_R_DECL,1,[Whether gmtime_r is declared]) + ]) + AC_TRY_COMPILE([#include ],[char *(*func)() = asctime_r],[ + : + ],[ + AC_DEFINE(MISSING_ASCTIME_R_DECL,1,[Whether asctime_r is declared]) + ]) + AC_TRY_COMPILE([#include ],[char *(*func)() = ctime_r],[ + : + ],[ + AC_DEFINE(MISSING_CTIME_R_DECL,1,[Whether ctime_r is declared]) + ]) + AC_TRY_COMPILE([#include ],[char *(*func)() = strtok_r],[ + : + ],[ + AC_DEFINE(MISSING_STRTOK_R_DECL,1,[Whether strtok_r is declared]) + ]) + AC_MSG_RESULT(done) +]) + +dnl +dnl PHP_LIBGCC_LIBPATH(gcc) +dnl Stores the location of libgcc in libgcc_libpath +dnl +AC_DEFUN(PHP_LIBGCC_LIBPATH,[ + changequote({,}) + libgcc_libpath="`$1 --print-libgcc-file-name|sed 's%/*[^/][^/]*$%%'`" + changequote([,]) +]) + +AC_DEFUN(PHP_ARG_ANALYZE,[ +case "[$]$1" in +shared,*) + ext_output="yes, shared" + ext_shared=yes + $1=`echo $ac_n "[$]$1$ac_c"|sed s/^shared,//` + ;; +shared) + ext_output="yes, shared" + ext_shared=yes + $1=yes + ;; +no) + ext_output="no" + ext_shared=no + ;; +*) + ext_output="yes" + ext_shared=no + ;; +esac + +if test "$php_always_shared" = "yes"; then + ext_output="yes, shared" + ext_shared=yes + test "[$]$1" = "no" && $1=yes +fi + +AC_MSG_RESULT($ext_output) +]) + +dnl +dnl PHP_ARG_WITH(arg-name, check message, help text[, default-val]) +dnl Sets PHP_ARG_NAME either to the user value or to the default value. +dnl default-val defaults to no. +dnl +AC_DEFUN(PHP_ARG_WITH,[ +PHP_REAL_ARG_WITH([$1],[$2],[$3],[$4],PHP_[]translit($1,a-z-,A-Z_)) +]) + +AC_DEFUN(PHP_REAL_ARG_WITH,[ +AC_MSG_CHECKING($2) +AC_ARG_WITH($1,[$3],$5=[$]withval,$5=ifelse($4,,no,$4)) +PHP_ARG_ANALYZE($5) +]) + +dnl +dnl PHP_ARG_ENABLE(arg-name, check message, help text[, default-val]) +dnl Sets PHP_ARG_NAME either to the user value or to the default value. +dnl default-val defaults to no. +dnl +AC_DEFUN(PHP_ARG_ENABLE,[ +PHP_REAL_ARG_ENABLE([$1],[$2],[$3],[$4],PHP_[]translit($1,a-z-,A-Z_)) +]) + +AC_DEFUN(PHP_REAL_ARG_ENABLE,[ +AC_MSG_CHECKING($2) +AC_ARG_ENABLE($1,[$3],$5=[$]enableval,$5=ifelse($4,,no,$4)) +PHP_ARG_ANALYZE($5) +]) + +AC_DEFUN(PHP_MODULE_PTR,[ + EXTRA_MODULE_PTRS="$EXTRA_MODULE_PTRS $1," +]) + +AC_DEFUN(PHP_CONFIG_NICE,[ + rm -f $1 + cat >$1<> $1 + done + echo '"[$]@"' >> $1 + chmod +x $1 +]) + +AC_DEFUN(PHP_TIME_R_TYPE,[ +AC_CACHE_CHECK(for type of reentrant time-related functions, ac_cv_time_r_type,[ +AC_TRY_RUN([ +#include +#include + +main() { +char buf[27]; +struct tm t; +time_t old = 0; +int r, s; + +s = gmtime_r(&old, &t); +r = (int) asctime_r(&t, buf, 26); +if (r == s && s == 0) exit(0); +exit(1); +} +],[ + ac_cv_time_r_type=hpux +],[ + ac_cv_time_r_type=POSIX +],[ + ac_cv_time_r_type=POSIX +]) +]) +if test "$ac_cv_time_r_type" = "hpux"; then + AC_DEFINE(PHP_HPUX_TIME_R,1,[Whether you have HP-UX 10.x]) +fi +]) + +AC_DEFUN(PHP_SUBST,[ + PHP_VAR_SUBST="$PHP_VAR_SUBST $1" + AC_SUBST($1) +]) + +AC_DEFUN(PHP_FAST_OUTPUT,[ + PHP_FAST_OUTPUT_FILES="$PHP_FAST_OUTPUT_FILES $1" +]) + +AC_DEFUN(PHP_MKDIR_P_CHECK,[ + AC_CACHE_CHECK(for working mkdir -p, ac_cv_mkdir_p,[ + test -d conftestdir && rm -rf conftestdir + mkdir -p conftestdir/somedir >/dev/null 2>&1 + if test -d conftestdir/somedir; then + ac_cv_mkdir_p=yes + else + ac_cv_mkdir_p=no + fi + rm -rf conftestdir + ]) +]) + +AC_DEFUN(PHP_GEN_CONFIG_VARS,[ + PHP_MKDIR_P_CHECK + echo creating config_vars.mk + > config_vars.mk + for i in $PHP_VAR_SUBST; do + eval echo "$i = \$$i" >> config_vars.mk + done +]) + +AC_DEFUN(PHP_GEN_MAKEFILES,[ + $SHELL $srcdir/build/fastgen.sh $srcdir $ac_cv_mkdir_p $PHP_FAST_OUTPUT_FILES +]) + +AC_DEFUN(PHP_TM_GMTOFF,[ +AC_CACHE_CHECK([for tm_gmtoff in struct tm], ac_cv_struct_tm_gmtoff, +[AC_TRY_COMPILE([#include +#include <$ac_cv_struct_tm>], [struct tm tm; tm.tm_gmtoff;], + ac_cv_struct_tm_gmtoff=yes, ac_cv_struct_tm_gmtoff=no)]) + +if test "$ac_cv_struct_tm_gmtoff" = yes; then + AC_DEFINE(HAVE_TM_GMTOFF,1,[whether you have tm_gmtoff in struct tm]) +fi +]) + +dnl PHP_CONFIGURE_PART(MESSAGE) +dnl Idea borrowed from mm +AC_DEFUN(PHP_CONFIGURE_PART,[ + AC_MSG_RESULT() + AC_MSG_RESULT(${T_MD}$1${T_ME}) +]) + +AC_DEFUN(PHP_PROG_SENDMAIL,[ +AC_PATH_PROG(PROG_SENDMAIL, sendmail, /usr/lib/sendmail, $PATH:/usr/bin:/usr/sbin:/usr/etc:/etc:/usr/ucblib) +if test -n "$PROG_SENDMAIL"; then + AC_DEFINE(HAVE_SENDMAIL,1,[whether you have sendmail]) +fi +]) + +AC_DEFUN(PHP_RUNPATH_SWITCH,[ +dnl check for -R, etc. switch +AC_MSG_CHECKING(if compiler supports -R) +AC_CACHE_VAL(php_cv_cc_dashr,[ + SAVE_LIBS="${LIBS}" + LIBS="-R /usr/lib ${LIBS}" + AC_TRY_LINK([], [], php_cv_cc_dashr=yes, php_cv_cc_dashr=no) + LIBS="${SAVE_LIBS}"]) +AC_MSG_RESULT($php_cv_cc_dashr) +if test $php_cv_cc_dashr = "yes"; then + ld_runpath_switch="-R" +else + AC_MSG_CHECKING([if compiler supports -Wl,-rpath,]) + AC_CACHE_VAL(php_cv_cc_rpath,[ + SAVE_LIBS="${LIBS}" + LIBS="-Wl,-rpath,/usr/lib ${LIBS}" + AC_TRY_LINK([], [], php_cv_cc_rpath=yes, php_cv_cc_rpath=no) + LIBS="${SAVE_LIBS}"]) + AC_MSG_RESULT($php_cv_cc_rpath) + if test $php_cv_cc_rpath = "yes"; then + ld_runpath_switch="-Wl,-rpath," + else + dnl something innocuous + ld_runpath_switch="-L" + fi +fi +]) + +AC_DEFUN(PHP_STRUCT_FLOCK,[ +AC_CACHE_CHECK(for struct flock,ac_cv_struct_flock, + AC_TRY_COMPILE([ +#include +#include + ], + [struct flock x;], + [ + ac_cv_struct_flock=yes + ],[ + ac_cv_struct_flock=no + ]) +) +if test "$ac_cv_struct_flock" = "yes" ; then + AC_DEFINE(HAVE_STRUCT_FLOCK, 1,[whether you have struct flock]) +fi +]) + +AC_DEFUN(PHP_SOCKLEN_T,[ +AC_CACHE_CHECK(for socklen_t,ac_cv_socklen_t, + AC_TRY_COMPILE([ +#include +#include +],[ +socklen_t x; +],[ + ac_cv_socklen_t=yes +],[ + ac_cv_socklen_t=no +])) +if test "$ac_cv_socklen_t" = "yes"; then + AC_DEFINE(HAVE_SOCKLEN_T, 1, [Whether you have socklen_t]) +fi +]) + +dnl +dnl PHP_SET_SYM_FILE(path) +dnl +dnl set the path of the file which contains the symbol export list +dnl +AC_DEFUN(PHP_SET_SYM_FILE, +[ + PHP_SYM_FILE="$1" +]) + +dnl +dnl PHP_BUILD_THREAD_SAFE +dnl +AC_DEFUN(PHP_BUILD_THREAD_SAFE,[ + enable_experimental_zts=yes + if test "$pthreads_working" != "yes"; then + AC_MSG_ERROR(ZTS currently requires working POSIX threads. Your system does not support this.) + fi +]) + +dnl +dnl PHP_BUILD_SHARED +dnl +AC_DEFUN(PHP_BUILD_SHARED,[ + php_build_target=shared +]) + +dnl +dnl PHP_BUILD_STATIC +dnl +AC_DEFUN(PHP_BUILD_STATIC,[ + php_build_target=static +]) + +dnl +dnl PHP_BUILD_PROGRAM +dnl +AC_DEFUN(PHP_BUILD_PROGRAM,[ + php_build_target=program +]) + +dnl +dnl AC_PHP_ONCE(namespace, variable, code) +dnl +dnl execute code, if variable is not set in namespace +dnl +AC_DEFUN(AC_PHP_ONCE,[ + changequote({,}) + unique=`echo $2|sed 's/[^a-zA-Z0-9]/_/g'` + changequote([,]) + cmd="echo $ac_n \"\$$1$unique$ac_c\"" + if test -n "$unique" && test "`eval $cmd`" = "" ; then + eval "$1$unique=set" + $3 + fi +]) + +dnl +dnl AC_EXPAND_PATH(path, variable) +dnl +dnl expands path to an absolute path and assigns it to variable +dnl +AC_DEFUN(AC_EXPAND_PATH,[ + if test -z "$1" || echo "$1" | grep '^/' >/dev/null ; then + $2="$1" + else + changequote({,}) + ep_dir="`echo $1|sed 's%/*[^/][^/]*$%%'`" + changequote([,]) + ep_realdir="`(cd \"$ep_dir\" && pwd)`" + $2="$ep_realdir/`basename \"$1\"`" + fi +]) + +dnl +dnl AC_ADD_LIBPATH(path[, shared-libadd]) +dnl +dnl add a library to linkpath/runpath +dnl +AC_DEFUN(AC_ADD_LIBPATH,[ + if test "$1" != "/usr/lib"; then + AC_EXPAND_PATH($1, ai_p) + if test "$ext_shared" = "yes" && test -n "$2"; then + $2="-R$1 -L$1 [$]$2" + else + AC_PHP_ONCE(LIBPATH, $ai_p, [ + test -n "$ld_runpath_switch" && LDFLAGS="$LDFLAGS $ld_runpath_switch$ai_p" + LDFLAGS="$LDFLAGS -L$ai_p" + PHP_RPATHS="$PHP_RPATHS $ai_p" + ]) + fi + fi +]) + +dnl +dnl AC_BUILD_RPATH() +dnl +dnl builds RPATH from PHP_RPATHS +dnl +AC_DEFUN(AC_BUILD_RPATH,[ + if test "$PHP_RPATH" = "yes" && test -n "$PHP_RPATHS"; then + OLD_RPATHS="$PHP_RPATHS" + PHP_RPATHS="" + for i in $OLD_RPATHS; do + PHP_LDFLAGS="$PHP_LDFLAGS -L$i" + PHP_RPATHS="$PHP_RPATHS -R $i" + NATIVE_RPATHS="$NATIVE_RPATHS ${ld_runpath_switch}$i" + done + fi +]) + +dnl +dnl AC_ADD_INCLUDE(path) +dnl +dnl add a include path +dnl +AC_DEFUN(AC_ADD_INCLUDE,[ + if test "$1" != "/usr/include"; then + AC_EXPAND_PATH($1, ai_p) + AC_PHP_ONCE(INCLUDEPATH, $ai_p, [ + INCLUDES="$INCLUDES -I$ai_p" + ]) + fi +]) + +AC_DEFUN(PHP_X_ADD_LIBRARY,[ + ifelse($2,,$3="-l$1 [$]$3", $3="[$]$3 -l$1") +]) + +dnl +dnl AC_ADD_LIBRARY(library[, append[, shared-libadd]]) +dnl +dnl add a library to the link line +dnl +AC_DEFUN(AC_ADD_LIBRARY,[ + case "$1" in + c|c_r|pthread*) ;; + *) +ifelse($3,,[ + AC_PHP_ONCE(LIBRARY, $1, [ + PHP_X_ADD_LIBRARY($1,$2,LIBS) + ]) +],[ + if test "$ext_shared" = "yes"; then + PHP_X_ADD_LIBRARY($1,$2,$3) + else + AC_ADD_LIBRARY($1,$2) + fi +]) + ;; + esac +]) + +dnl +dnl AC_ADD_LIBRARY_DEFER(library[, append]) +dnl +dnl add a library to the link line (deferred) +AC_DEFUN(AC_ADD_LIBRARY_DEFER,[ + AC_PHP_ONCE(LIBRARY, $1, [ + ifelse($#, 1, DLIBS="-l$1 $DLIBS", DLIBS="$DLIBS -l$1") + ]) +]) + +dnl +dnl AC_ADD_LIBRARY_WITH_PATH(library, path[, shared-libadd]) +dnl +dnl add a library to the link line and path to linkpath/runpath. +dnl if shared-libadd is not empty and $ext_shared is yes, +dnl shared-libadd will be assigned the library information +dnl +AC_DEFUN(AC_ADD_LIBRARY_WITH_PATH,[ +ifelse($3,,[ + if test -n "$2"; then + AC_ADD_LIBPATH($2) + fi + AC_ADD_LIBRARY($1) +],[ + if test "$ext_shared" = "yes"; then + $3="-l$1 [$]$3" + if test -n "$2"; then + AC_ADD_LIBPATH($2,$3) + fi + else + AC_ADD_LIBRARY_WITH_PATH($1,$2) + fi +]) +]) + +dnl +dnl AC_ADD_LIBRARY_DEFER_WITH_PATH(library, path) +dnl +dnl add a library to the link line (deferred) +dnl and path to linkpath/runpath (not deferred) +dnl +AC_DEFUN(AC_ADD_LIBRARY_DEFER_WITH_PATH,[ + AC_ADD_LIBPATH($2) + AC_ADD_LIBRARY_DEFER($1) +]) + +AC_DEFUN(AM_SET_LIBTOOL_VARIABLE,[ + LIBTOOL='$(SHELL) $(top_builddir)/libtool $1' +]) + +dnl +dnl Check for cc option +dnl +AC_DEFUN(AC_CHECK_CC_OPTION,[ + echo "main(){return 0;}" > conftest.$ac_ext + opt="$1" + changequote({,}) + var=`echo $opt|sed 's/[^a-zA-Z0-9]/_/g'` + changequote([,]) + AC_MSG_CHECKING([if compiler supports -$1 really]) + ac_php_compile="${CC-cc} -$opt -o conftest $CFLAGS $CPPFLAGS conftest.$ac_ext 2>&1" + if eval $ac_php_compile 2>&1 | egrep "$opt" > /dev/null 2>&1 ; then + eval php_cc_$var=no + AC_MSG_RESULT(no) + else + if eval ./conftest 2>/dev/null ; then + eval php_cc_$var=yes + AC_MSG_RESULT(yes) + else + eval php_cc_$var=no + AC_MSG_RESULT(no) + fi + fi +]) + +AC_DEFUN(PHP_REGEX,[ + +if test "$REGEX_TYPE" = "php"; then + REGEX_LIB=regex/libregex.la + REGEX_DIR=regex + AC_DEFINE(HSREGEX,1,[ ]) + AC_DEFINE(REGEX,1,[ ]) + PHP_FAST_OUTPUT(regex/Makefile) +elif test "$REGEX_TYPE" = "system"; then + AC_DEFINE(REGEX,0,[ ]) +fi + +AC_MSG_CHECKING(which regex library to use) +AC_MSG_RESULT($REGEX_TYPE) + +PHP_SUBST(REGEX_DIR) +PHP_SUBST(REGEX_LIB) +PHP_SUBST(HSREGEX) +]) + +dnl +dnl See if we have broken header files like SunOS has. +dnl +AC_DEFUN(AC_MISSING_FCLOSE_DECL,[ + AC_MSG_CHECKING([for fclose declaration]) + AC_TRY_COMPILE([#include ],[int (*func)() = fclose],[ + AC_DEFINE(MISSING_FCLOSE_DECL,0,[ ]) + AC_MSG_RESULT(ok) + ],[ + AC_DEFINE(MISSING_FCLOSE_DECL,1,[ ]) + AC_MSG_RESULT(missing) + ]) +]) + +dnl +dnl Check for broken sprintf() +dnl +AC_DEFUN(AC_BROKEN_SPRINTF,[ + AC_CACHE_CHECK(whether sprintf is broken, ac_cv_broken_sprintf,[ + AC_TRY_RUN([main() {char buf[20];exit(sprintf(buf,"testing 123")!=11); }],[ + ac_cv_broken_sprintf=no + ],[ + ac_cv_broken_sprintf=yes + ],[ + ac_cv_broken_sprintf=no + ]) + ]) + if test "$ac_cv_broken_sprintf" = "yes"; then + AC_DEFINE(PHP_BROKEN_SPRINTF, 1, [ ]) + else + AC_DEFINE(PHP_BROKEN_SPRINTF, 0, [ ]) + fi +]) + +dnl +dnl PHP_EXTENSION(extname [, shared]) +dnl +dnl Includes an extension in the build. +dnl +dnl "extname" is the name of the ext/ subdir where the extension resides +dnl "shared" can be set to "shared" or "yes" to build the extension as +dnl a dynamically loadable library. +dnl +AC_DEFUN(PHP_EXTENSION,[ + EXT_SUBDIRS="$EXT_SUBDIRS $1" + + if test -d "$abs_srcdir/ext/$1"; then +dnl ---------------------------------------------- Internal Module + ext_builddir="ext/$1" + ext_srcdir="$abs_srcdir/ext/$1" + else +dnl ---------------------------------------------- External Module + ext_builddir="." + ext_srcdir="$abs_srcdir" + fi + + if test "$2" != "shared" && test "$2" != "yes"; then +dnl ---------------------------------------------- Static module + LIB_BUILD($ext_builddir) + EXT_LTLIBS="$EXT_LTLIBS $ext_builddir/lib$1.la" + EXT_STATIC="$EXT_STATIC $1" + else +dnl ---------------------------------------------- Shared module + LIB_BUILD($ext_builddir,yes) + AC_DEFINE_UNQUOTED([COMPILE_DL_]translit($1,a-z-,A-Z_), 1, Whether to build $1 as dynamic module) + fi + + PHP_FAST_OUTPUT($ext_builddir/Makefile) +]) + +PHP_SUBST(EXT_SUBDIRS) +PHP_SUBST(EXT_STATIC) +PHP_SUBST(EXT_SHARED) +PHP_SUBST(EXT_LIBS) +PHP_SUBST(EXT_LTLIBS) + +dnl +dnl Solaris requires main code to be position independent in order +dnl to let shared objects find symbols. Weird. Ugly. +dnl +dnl Must be run after all --with-NN options that let the user +dnl choose dynamic extensions, and after the gcc test. +dnl +AC_DEFUN(PHP_SOLARIS_PIC_WEIRDNESS,[ + AC_MSG_CHECKING(whether -fPIC is required) + if test "$EXT_SHARED" != ""; then + os=`uname -sr 2>/dev/null` + case "$os" in + "SunOS 5.6"|"SunOS 5.7") + case "$CC" in + gcc*|egcs*) CFLAGS="$CFLAGS -fPIC";; + *) CFLAGS="$CFLAGS -fpic";; + esac + AC_MSG_RESULT(yes);; + *) + AC_MSG_RESULT(no);; + esac + else + AC_MSG_RESULT(no) + fi +]) + +dnl +dnl Checks whether $withval is "shared" or starts with "shared,XXX" +dnl and sets $shared to "yes" or "no", and removes "shared,?" stuff +dnl from $withval. +dnl +AC_DEFUN(PHP_WITH_SHARED,[ + case $withval in + shared) + shared=yes + withval=yes + ;; + shared,*) + shared=yes + withval=`echo $withval | sed -e 's/^shared,//'` + ;; + *) + shared=no + ;; + esac + if test -n "$php_always_shared"; then + shared=yes + fi +]) + +dnl The problem is that the default compilation flags in Solaris 2.6 won't +dnl let programs access large files; you need to tell the compiler that +dnl you actually want your programs to work on large files. For more +dnl details about this brain damage please see: +dnl http://www.sas.com/standards/large.file/x_open.20Mar96.html + +dnl Written by Paul Eggert . + +AC_DEFUN(AC_SYS_LFS, +[dnl + # If available, prefer support for large files unless the user specified + # one of the CPPFLAGS, LDFLAGS, or LIBS variables. + AC_MSG_CHECKING(whether large file support needs explicit enabling) + ac_getconfs='' + ac_result=yes + ac_set='' + ac_shellvars='CPPFLAGS LDFLAGS LIBS' + for ac_shellvar in $ac_shellvars; do + case $ac_shellvar in + CPPFLAGS) ac_lfsvar=LFS_CFLAGS ;; + *) ac_lfsvar=LFS_$ac_shellvar ;; + esac + eval test '"${'$ac_shellvar'+set}"' = set && ac_set=$ac_shellvar + (getconf $ac_lfsvar) >/dev/null 2>&1 || { ac_result=no; break; } + ac_getconf=`getconf $ac_lfsvar` + ac_getconfs=$ac_getconfs$ac_getconf + eval ac_test_$ac_shellvar=\$ac_getconf + done + case "$ac_result$ac_getconfs" in + yes) ac_result=no ;; + esac + case "$ac_result$ac_set" in + yes?*) ac_result="yes, but $ac_set is already set, so use its settings" + esac + AC_MSG_RESULT($ac_result) + case $ac_result in + yes) + for ac_shellvar in $ac_shellvars; do + eval $ac_shellvar=\$ac_test_$ac_shellvar + done ;; + esac +]) + +AC_DEFUN(AC_SOCKADDR_SA_LEN,[ + AC_CACHE_CHECK([for field sa_len in struct sockaddr],ac_cv_sockaddr_sa_len,[ + AC_TRY_COMPILE([#include +#include ], + [struct sockaddr s; s.sa_len;], + [ac_cv_sockaddr_sa_len=yes + AC_DEFINE(HAVE_SOCKADDR_SA_LEN,1,[ ])], + [ac_cv_sockaddr_sa_len=no]) + ]) +]) + + +dnl ## PHP_AC_OUTPUT(file) +dnl ## adds "file" to the list of files generated by AC_OUTPUT +dnl ## This macro can be used several times. +AC_DEFUN(PHP_OUTPUT,[ + PHP_OUTPUT_FILES="$PHP_OUTPUT_FILES $1" +]) + +AC_DEFUN(PHP_DECLARED_TIMEZONE,[ + AC_CACHE_CHECK(for declared timezone, ac_cv_declared_timezone,[ + AC_TRY_COMPILE([ +#include +#include +#ifdef HAVE_SYS_TIME_H +#include +#endif +],[ + time_t foo = (time_t) timezone; +],[ + ac_cv_declared_timezone=yes +],[ + ac_cv_declared_timezone=no +])]) + if test "$ac_cv_declared_timezone" = "yes"; then + AC_DEFINE(HAVE_DECLARED_TIMEZONE, 1, [Whether system headers declare timezone]) + fi +]) + +AC_DEFUN(PHP_EBCDIC,[ + AC_CACHE_CHECK([whether system uses EBCDIC],ac_cv_ebcdic,[ + AC_TRY_RUN( [ +int main(void) { + return (unsigned char)'A' != (unsigned char)0xC1; +} +],[ + ac_cv_ebcdic="yes" +],[ + ac_cv_ebcdic="no" +],[ + ac_cv_ebcdic="no" +])]) + if test "$ac_cv_ebcdic" = "yes"; then + AC_DEFINE(CHARSET_EBCDIC,1, [Define if system uses EBCDIC]) + fi +]) + + + +# serial 40 AC_PROG_LIBTOOL +AC_DEFUN(AC_PROG_LIBTOOL, +[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl + +# Save cache, so that ltconfig can load it +AC_CACHE_SAVE + +# Actually configure libtool. ac_aux_dir is where install-sh is found. +CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \ +LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \ +LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" \ +DLLTOOL="$DLLTOOL" AS="$AS" OBJDUMP="$OBJDUMP" \ +${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig --no-reexec \ +$libtool_flags --no-verify $ac_aux_dir/ltmain.sh $host \ +|| AC_MSG_ERROR([libtool configure failed]) + +# Reload cache, that may have been modified by ltconfig +AC_CACHE_LOAD + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ac_aux_dir/ltconfig $ac_aux_dir/ltmain.sh" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +# Redirect the config.log output again, so that the ltconfig log is not +# clobbered by the next message. +exec 5>>./config.log +]) + +AC_DEFUN(AC_LIBTOOL_SETUP, +[AC_PREREQ(2.13)dnl +AC_REQUIRE([AC_ENABLE_SHARED])dnl +AC_REQUIRE([AC_ENABLE_STATIC])dnl +AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([AC_PROG_RANLIB])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_LD])dnl +AC_REQUIRE([AC_PROG_NM])dnl +AC_REQUIRE([AC_PROG_LN_S])dnl +dnl + +# Check for any special flags to pass to ltconfig. +libtool_flags="--cache-file=$cache_file" +test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared" +test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static" +test "$enable_fast_install" = no && libtool_flags="$libtool_flags --disable-fast-install" +test "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc" +test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld" +ifdef([AC_PROVIDE_AC_LIBTOOL_DLOPEN], +[libtool_flags="$libtool_flags --enable-dlopen"]) +ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL], +[libtool_flags="$libtool_flags --enable-win32-dll"]) +AC_ARG_ENABLE(libtool-lock, + [ --disable-libtool-lock avoid locking (might break parallel builds)]) +test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock" +test x"$silent" = xyes && libtool_flags="$libtool_flags --silent" + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case "$host" in +*-*-irix6*) + # Find out which ABI we are using. + echo '[#]line __oline__ "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case "`/usr/bin/file conftest.o`" in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])]) + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; + +ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL], +[*-*-cygwin* | *-*-mingw*) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; +]) +esac +]) + +# AC_LIBTOOL_DLOPEN - enable checks for dlopen support +AC_DEFUN(AC_LIBTOOL_DLOPEN, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])]) + +# AC_LIBTOOL_WIN32_DLL - declare package support for building win32 dll's +AC_DEFUN(AC_LIBTOOL_WIN32_DLL, [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])]) + +# AC_ENABLE_SHARED - implement the --enable-shared flag +# Usage: AC_ENABLE_SHARED[(DEFAULT)] +# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to +# `yes'. +AC_DEFUN(AC_ENABLE_SHARED, [dnl +define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE(shared, +changequote(<<, >>)dnl +<< --enable-shared[=PKGS] build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT], +changequote([, ])dnl +[p=${PACKAGE-default} +case "$enableval" in +yes) enable_shared=yes ;; +no) enable_shared=no ;; +*) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac], +enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl +]) + +# AC_DISABLE_SHARED - set the default shared flag to --disable-shared +AC_DEFUN(AC_DISABLE_SHARED, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_SHARED(no)]) + +# AC_ENABLE_STATIC - implement the --enable-static flag +# Usage: AC_ENABLE_STATIC[(DEFAULT)] +# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to +# `yes'. +AC_DEFUN(AC_ENABLE_STATIC, [dnl +define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE(static, +changequote(<<, >>)dnl +<< --enable-static[=PKGS] build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT], +changequote([, ])dnl +[p=${PACKAGE-default} +case "$enableval" in +yes) enable_static=yes ;; +no) enable_static=no ;; +*) + enable_static=no + # Look at the argument we got. We use all the common list separators. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac], +enable_static=AC_ENABLE_STATIC_DEFAULT)dnl +]) + +# AC_DISABLE_STATIC - set the default static flag to --disable-static +AC_DEFUN(AC_DISABLE_STATIC, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_STATIC(no)]) + + +# AC_ENABLE_FAST_INSTALL - implement the --enable-fast-install flag +# Usage: AC_ENABLE_FAST_INSTALL[(DEFAULT)] +# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to +# `yes'. +AC_DEFUN(AC_ENABLE_FAST_INSTALL, [dnl +define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE(fast-install, +changequote(<<, >>)dnl +<< --enable-fast-install[=PKGS] optimize for fast installation [default=>>AC_ENABLE_FAST_INSTALL_DEFAULT], +changequote([, ])dnl +[p=${PACKAGE-default} +case "$enableval" in +yes) enable_fast_install=yes ;; +no) enable_fast_install=no ;; +*) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac], +enable_fast_install=AC_ENABLE_FAST_INSTALL_DEFAULT)dnl +]) + +# AC_ENABLE_FAST_INSTALL - set the default to --disable-fast-install +AC_DEFUN(AC_DISABLE_FAST_INSTALL, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_FAST_INSTALL(no)]) + +# AC_PROG_LD - find the path to the GNU or non-GNU linker +AC_DEFUN(AC_PROG_LD, +[AC_ARG_WITH(gnu-ld, +[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], +test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +ac_prog=ld +if test "$ac_cv_prog_gcc" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by GCC]) + ac_prog=`($CC -print-prog-name=ld) 2>&5` + case "$ac_prog" in + # Accept absolute paths. +changequote(,)dnl + [\\/]* | [A-Za-z]:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' +changequote([,])dnl + # Canonicalize the path of ld + ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(ac_cv_path_LD, +[if test -z "$LD"; then + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + ac_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + if "$ac_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then + test "$with_gnu_ld" != no && break + else + test "$with_gnu_ld" != yes && break + fi + fi + done + IFS="$ac_save_ifs" +else + ac_cv_path_LD="$LD" # Let the user override the test with a path. +fi]) +LD="$ac_cv_path_LD" +if test -n "$LD"; then + AC_MSG_RESULT($LD) +else + AC_MSG_RESULT(no) +fi +test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) +AC_SUBST(LD) +AC_PROG_LD_GNU +]) + +AC_DEFUN(AC_PROG_LD_GNU, +[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], ac_cv_prog_gnu_ld, +[# I'd rather use --version here, but apparently some GNU ld's only accept -v. +if $LD -v 2>&1 &5; then + ac_cv_prog_gnu_ld=yes +else + ac_cv_prog_gnu_ld=no +fi]) +]) + +# AC_PROG_NM - find the path to a BSD-compatible name lister +AC_DEFUN(AC_PROG_NM, +[AC_MSG_CHECKING([for BSD-compatible nm]) +AC_CACHE_VAL(ac_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + ac_cv_path_NM="$NM" +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" + for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/nm || test -f $ac_dir/nm$ac_exeext ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then + ac_cv_path_NM="$ac_dir/nm -B" + break + elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then + ac_cv_path_NM="$ac_dir/nm -p" + break + else + ac_cv_path_NM=${ac_cv_path_NM="$ac_dir/nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + fi + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_NM" && ac_cv_path_NM=nm +fi]) +NM="$ac_cv_path_NM" +AC_MSG_RESULT([$NM]) +AC_SUBST(NM) +]) + +# AC_CHECK_LIBM - check for math library +AC_DEFUN(AC_CHECK_LIBM, +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case "$host" in +*-*-beos* | *-*-cygwin*) + # These system don't have libm + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") + AC_CHECK_LIB(m, main, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, main, LIBM="-lm") + ;; +esac +]) + +# AC_LIBLTDL_CONVENIENCE[(dir)] - sets LIBLTDL to the link flags for +# the libltdl convenience library, adds --enable-ltdl-convenience to +# the configure arguments. Note that LIBLTDL is not AC_SUBSTed, nor +# is AC_CONFIG_SUBDIRS called. If DIR is not provided, it is assumed +# to be `${top_builddir}/libltdl'. Make sure you start DIR with +# '${top_builddir}/' (note the single quotes!) if your package is not +# flat, and, if you're not using automake, define top_builddir as +# appropriate in the Makefiles. +AC_DEFUN(AC_LIBLTDL_CONVENIENCE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + case "$enable_ltdl_convenience" in + no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; + "") enable_ltdl_convenience=yes + ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; + esac + LIBLTDL=ifelse($#,1,$1,['${top_builddir}/libltdl'])/libltdlc.la + INCLTDL=ifelse($#,1,-I$1,['-I${top_builddir}/libltdl']) +]) + +# AC_LIBLTDL_INSTALLABLE[(dir)] - sets LIBLTDL to the link flags for +# the libltdl installable library, and adds --enable-ltdl-install to +# the configure arguments. Note that LIBLTDL is not AC_SUBSTed, nor +# is AC_CONFIG_SUBDIRS called. If DIR is not provided, it is assumed +# to be `${top_builddir}/libltdl'. Make sure you start DIR with +# '${top_builddir}/' (note the single quotes!) if your package is not +# flat, and, if you're not using automake, define top_builddir as +# appropriate in the Makefiles. +# In the future, this macro may have to be called after AC_PROG_LIBTOOL. +AC_DEFUN(AC_LIBLTDL_INSTALLABLE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + AC_CHECK_LIB(ltdl, main, + [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], + [if test x"$enable_ltdl_install" = xno; then + AC_MSG_WARN([libltdl not installed, but installation disabled]) + else + enable_ltdl_install=yes + fi + ]) + if test x"$enable_ltdl_install" = x"yes"; then + ac_configure_args="$ac_configure_args --enable-ltdl-install" + LIBLTDL=ifelse($#,1,$1,['${top_builddir}/libltdl'])/libltdl.la + INCLTDL=ifelse($#,1,-I$1,['-I${top_builddir}/libltdl']) + else + ac_configure_args="$ac_configure_args --enable-ltdl-install=no" + LIBLTDL="-lltdl" + INCLTDL= + fi +]) + +dnl old names +AC_DEFUN(AM_PROG_LIBTOOL, [indir([AC_PROG_LIBTOOL])])dnl +AC_DEFUN(AM_ENABLE_SHARED, [indir([AC_ENABLE_SHARED], $@)])dnl +AC_DEFUN(AM_ENABLE_STATIC, [indir([AC_ENABLE_STATIC], $@)])dnl +AC_DEFUN(AM_DISABLE_SHARED, [indir([AC_DISABLE_SHARED], $@)])dnl +AC_DEFUN(AM_DISABLE_STATIC, [indir([AC_DISABLE_STATIC], $@)])dnl +AC_DEFUN(AM_PROG_LD, [indir([AC_PROG_LD])])dnl +AC_DEFUN(AM_PROG_NM, [indir([AC_PROG_NM])])dnl + +dnl This is just to silence aclocal about the macro not being used +ifelse([AC_DISABLE_FAST_INSTALL])dnl + diff --git a/contrib/php4/build/dynlib.mk b/contrib/php4/build/dynlib.mk new file mode 100644 index 00000000..d7e695cf --- /dev/null +++ b/contrib/php4/build/dynlib.mk @@ -0,0 +1,5 @@ +all: all-recursive + +include $(builddir)/libs.mk + +include $(top_srcdir)/build/rules.mk diff --git a/contrib/php4/build/fastgen.sh b/contrib/php4/build/fastgen.sh new file mode 100755 index 00000000..81e85684 --- /dev/null +++ b/contrib/php4/build/fastgen.sh @@ -0,0 +1,58 @@ +#! /bin/sh +# +# Copyright (c) 1999, 2000 Sascha Schumann. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY SASCHA SCHUMANN ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, +# OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +############################################################################## +# $Id$ +# + +srcdir=$1 +shift + +mkdir_p=$1 +shift + +top_srcdir=`(cd $srcdir; pwd)` +top_builddir=`pwd` + +if test "$mkdir_p" = "yes"; then + mkdir_p="mkdir -p" +else + mkdir_p="$top_srcdir/helpers/mkdir.sh" +fi + +for makefile in $@; do + echo "creating $makefile" + dir=`echo $makefile|sed 's%/*[^/][^/]*$%%'` + $mkdir_p "$dir/" + + cat - $top_srcdir/$makefile.in <$makefile +top_srcdir = $top_srcdir +top_builddir = $top_builddir +srcdir = $top_srcdir/$dir +builddir = $top_builddir/$dir +VPATH = $top_srcdir/$dir +EOF + + test -z "$dir" || touch $dir/.deps +done diff --git a/contrib/php4/build/library.mk b/contrib/php4/build/library.mk new file mode 100644 index 00000000..8950e944 --- /dev/null +++ b/contrib/php4/build/library.mk @@ -0,0 +1,30 @@ +# Copyright (c) 1999, 2000 Sascha Schumann. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY SASCHA SCHUMANN ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, +# OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +############################################################################## +# $Id$ +# + +LTLIBRARY_OBJECTS = $(LTLIBRARY_SOURCES:.c=.lo) + +$(LTLIBRARY_NAME): $(LTLIBRARY_OBJECTS) $(LTLIBRARY_DEPENDENCIES) + $(LINK) $(LTLIBRARY_LDFLAGS) $(LTLIBRARY_OBJECTS) $(LTLIBRARY_LIBADD) diff --git a/contrib/php4/build/ltlib.mk b/contrib/php4/build/ltlib.mk new file mode 100644 index 00000000..9538be9c --- /dev/null +++ b/contrib/php4/build/ltlib.mk @@ -0,0 +1,31 @@ +# Copyright (c) 1999 Sascha Schumann. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY SASCHA SCHUMANN ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, +# OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +############################################################################## +# $Id$ +# + +targets = $(LTLIBRARY_NAME) + +include $(top_srcdir)/build/rules.mk +include $(top_srcdir)/build/library.mk + diff --git a/contrib/php4/build/program.mk b/contrib/php4/build/program.mk new file mode 100644 index 00000000..f0377af8 --- /dev/null +++ b/contrib/php4/build/program.mk @@ -0,0 +1,30 @@ +# Copyright (c) 1999, 2000 Sascha Schumann. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY SASCHA SCHUMANN ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, +# OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +############################################################################## +# $Id$ +# + +PROGRAM_OBJECTS = $(PROGRAM_SOURCES:.c=.lo) + +$(PROGRAM_NAME): $(PROGRAM_DEPENDENCIES) $(PROGRAM_OBJECTS) + $(LINK) $(PROGRAM_LDFLAGS) $(PROGRAM_OBJECTS) $(PROGRAM_LDADD) diff --git a/contrib/php4/build/rules.mk b/contrib/php4/build/rules.mk new file mode 100644 index 00000000..11c749c1 --- /dev/null +++ b/contrib/php4/build/rules.mk @@ -0,0 +1,116 @@ +# Copyright (c) 1999, 2000 Sascha Schumann. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY SASCHA SCHUMANN ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, +# OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +############################################################################## +# $Id$ +# + +include $(top_builddir)/config_vars.mk + +COMPILE = $(CC) $(DEFS) $(INCLUDES) $(EXTRA_INCLUDES) $(CPPFLAGS) $(CFLAGS) $(EXTRA_CFLAGS) +LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(EXTRA_INCLUDES) $(CPPFLAGS) $(CFLAGS) $(EXTRA_CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --mode=link $(CCLD) $(CFLAGS) $(EXTRA_CFLAGS) $(LDFLAGS) -o $@ +mkinstalldirs = $(top_srcdir)/build/shtool mkdir -f -p +INSTALL = $(top_srcdir)/build/shtool install -c +INSTALL_DATA = $(INSTALL) -m 644 +SHARED_COMPILE = $(SHARED_LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(EXTRA_INCLUDES) $(CPPFLAGS) $(CFLAGS) $(EXTRA_CFLAGS) -c $< && touch $@ +DEFS = -DHAVE_CONFIG_H -I. -I$(srcdir) -I$(top_builddir) -I$(top_builddir)/main + +moduledir = $(EXTENSION_DIR) + +.SUFFIXES: +.SUFFIXES: .slo .c .lo .o .s .y .l + +.c.o: + $(COMPILE) -c $< + +.s.o: + $(COMPILE) -c $< + +.c.lo: + $(PHP_COMPILE) + +.s.lo: + $(PHP_COMPILE) + +.c.slo: + $(SHARED_COMPILE) + +.y.c: + $(YACC) $(YFLAGS) $< && mv y.tab.c $*.c + if test -f y.tab.h; then \ + if cmp -s y.tab.h $*.h; then rm -f y.tab.h; else mv y.tab.h $*.h; fi; \ + else :; fi + +.l.c: + $(LEX) $(LFLAGS) $< && mv $(LEX_OUTPUT_ROOT).c $@ + +install_targets = install-modules + +all: all-recursive +install: install-recursive + +distclean-recursive depend-recursive clean-recursive all-recursive install-recursive: + @otarget=`echo $@|sed s/-recursive//`; \ + list='$(SUBDIRS)'; for i in $$list; do \ + target="$$otarget"; \ + echo "Making $$target in $$i"; \ + if test "$$i" = "."; then \ + ok=yes; \ + target="$$target-p"; \ + fi; \ + (cd $$i && $(MAKE) $$target) || exit 1; \ + done; \ + if test "$$otarget" = "all" && test -z '$(targets)'; then ok=yes; fi; \ + if test "$$ok" != "yes"; then $(MAKE) "$$otarget-p" || exit 1; fi + +all-p: $(targets) +install-p: $(targets) $(install_targets) +distclean-p depend-p clean-p: + +depend: depend-recursive + test "`echo *.c`" = '*.c' || perl $(top_srcdir)/build/mkdep.perl $(CPP) $(INCLUDES) $(EXTRA_INCLUDES) *.c > $(builddir)/.deps + +clean: clean-recursive clean-x + +clean-x: + rm -f $(targets) *.lo *.slo *.la *.o $(CLEANFILES) + rm -rf .libs + +distclean: distclean-recursive clean-x + rm -f config.cache config.log config.status config_vars.mk libtool \ + php_config.h stamp-h Makefile build-defs.h php4.spec libphp4.module + +install-modules: + @test -d modules && \ + $(mkinstalldirs) $(moduledir) && \ + echo "installing shared modules into $(moduledir)" && \ + rm -f modules/*.la && \ + cp modules/* $(moduledir) || true + +include $(builddir)/.deps + +.PHONY: all-recursive clean-recursive install-recursive \ +$(install_targets) install all clean depend depend-recursive shared \ +distclean-recursive distclean clean-x all-p install-p distclean-p \ +depend-p clean-p diff --git a/contrib/php4/build/shtool b/contrib/php4/build/shtool new file mode 100755 index 00000000..4c1a7396 --- /dev/null +++ b/contrib/php4/build/shtool @@ -0,0 +1,716 @@ +#!/bin/sh +## +## GNU shtool -- The GNU Portable Shell Tool +## Copyright (c) 1994-2000 Ralf S. Engelschall +## +## See http://www.gnu.org/software/shtool/ for more information. +## See ftp://ftp.gnu.org/gnu/shtool/ for latest version. +## +## Version 1.4.9 (16-Apr-2000) +## Ingredients: 3/17 available modules +## + +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2 of the License, or +## (at your option) any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program; if not, write to the Free Software +## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, +## USA, or contact Ralf S. Engelschall . +## +## Notice: Given that you include this file verbatim into your own +## source tree, you are justified in saying that it remains separate +## from your package, and that this way you are simply just using GNU +## shtool. So, in this situation, there is no requirement that your +## package itself is licensed under the GNU General Public License in +## order to take advantage of GNU shtool. +## + +## +## Usage: shtool [] [ [] []] +## +## Available commands: +## echo Print string with optional construct expansion +## install Install a program, script or datafile +## mkdir Make one or more directories +## +## Not available commands (because module was not built-in): +## mdate Pretty-print modification time of a file or dir +## table Pretty-print a field-separated list as a table +## prop Display progress with a running propeller +## move Move files with simultaneous substitution +## mkln Make link with calculation of relative paths +## mkshadow Make a shadow tree through symbolic links +## fixperm Fix file permissions inside a source tree +## tarball Roll distribution tarballs +## guessos Simple operating system guesser +## arx Extended archive command +## slo Separate linker options by library class +## scpp Sharing C Pre-Processor +## version Generate and maintain a version information file +## path Deal with program paths +## + +if [ $# -eq 0 ]; then + echo "$0:Error: invalid command line" 1>&2 + echo "$0:Hint: run \`$0 -h' for usage" 1>&2 + exit 1 +fi +if [ ".$1" = ".-h" -o ".$1" = ".--help" ]; then + echo "This is GNU shtool, version 1.4.9 (16-Apr-2000)" + echo "Copyright (c) 1994-2000 Ralf S. Engelschall " + echo "Report bugs to " + echo '' + echo "Usage: shtool [] [ [] []]" + echo '' + echo 'Available global :' + echo ' -v, --version display shtool version information' + echo ' -h, --help display shtool usage help page (this one)' + echo ' -d, --debug display shell trace information' + echo '' + echo 'Available [] []:' + echo ' echo [-n] [-e] [ ...]' + echo ' install [-v] [-t] [-c] [-C] [-s] [-m] [-o] [-g]' + echo ' [-e] ' + echo ' mkdir [-t] [-f] [-p] [-m] [ ...]' + echo '' + echo 'Not available (because module was not built-in):' + echo ' mdate [-n] [-z] [-s] [-d] [-f] [-o] ' + echo ' table [-F] [-w] [-c] [-s] ...' + echo ' prop [-p]' + echo ' move [-v] [-t] [-e] [-p] ' + echo ' mkln [-t] [-f] [-s] [ ...] ' + echo ' mkshadow [-v] [-t] [-a] ' + echo ' fixperm [-v] [-t] [ ...]' + echo ' tarball [-t] [-v] [-o ] [-c ] [-d ] [-u' + echo ' ] [-g ] [-e ] [ ...]' + echo ' guessos ' + echo ' arx [-t] [-C] [ ...]' + echo ' slo [-p] -- -L -l [-L -l ...]' + echo ' scpp [-v] [-p] [-f] [-o] [-t] [-M]' + echo ' [-D] [-C] [ ...]' + echo ' version [-l] [-n] [-p] [-s] [-i]' + echo ' [-d] ' + echo ' path [-s] [-r] [-d] [-b] [-m] [-p] [ ...]' + echo '' + exit 0 +fi +if [ ".$1" = ".-v" -o ".$1" = ."--version" ]; then + echo "GNU shtool 1.4.9 (16-Apr-2000)" + exit 0 +fi +if [ ".$1" = ".-d" -o ".$1" = ."--debug" ]; then + shift + set -x +fi +name=`echo "$0" | sed -e 's;.*/\([^/]*\)$;\1;' -e 's;-sh$;;' -e 's;\.sh$;;'` +case "$name" in + echo|install|mkdir ) + # implicit tool command selection + tool="$name" + ;; + * ) + # explicit tool command selection + tool="$1" + shift + ;; +esac +arg_spec="" +opt_spec="" +gen_tmpfile=no + +## +## DISPATCH INTO SCRIPT PROLOG +## + +case $tool in + echo ) + str_tool="echo" + str_usage="[-n] [-e] [ ...]" + arg_spec="0+" + opt_spec="n.e." + opt_n=no + opt_e=no + ;; + install ) + str_tool="install" + str_usage="[-v] [-t] [-c] [-C] [-s] [-m] [-o] [-g] [-e] " + arg_spec="2=" + opt_spec="v.t.c.C.s.m:o:g:e:" + opt_v=no + opt_t=no + opt_c=no + opt_C=no + opt_s=no + opt_m="" + opt_o="" + opt_g="" + opt_e="" + ;; + mkdir ) + str_tool="mkdir" + str_usage="[-t] [-f] [-p] [-m] [ ...]" + arg_spec="1+" + opt_spec="t.f.p.m:" + opt_t=no + opt_f=no + opt_p=no + opt_m="" + ;; + -* ) + echo "$0:Error: unknown option \`$tool'" 2>&1 + echo "$0:Hint: run \`$0 -h' for usage" 2>&1 + exit 1 + ;; + * ) + echo "$0:Error: unknown command \`$tool'" 2>&1 + echo "$0:Hint: run \`$0 -h' for usage" 2>&1 + exit 1 + ;; +esac + +## +## COMMON UTILITY CODE +## + +# determine name of tool +if [ ".$tool" != . ]; then + # used inside shtool script + toolcmd="$0 $tool" + toolcmdhelp="shtool $tool" + msgprefix="shtool:$tool" +else + # used as standalone script + toolcmd="$0" + toolcmdhelp="sh $0" + msgprefix="$str_tool" +fi + +# parse argument specification string +eval `echo $arg_spec |\ + sed -e 's/^\([0-9]*\)\([+=]\)/arg_NUMS=\1; arg_MODE=\2/'` + +# parse option specification string +eval `echo h.$opt_spec |\ + sed -e 's/\([a-zA-Z0-9]\)\([.:+]\)/opt_MODE_\1=\2;/g'` + +# interate over argument line +opt_PREV='' +while [ $# -gt 0 ]; do + # special option stops processing + if [ ".$1" = ".--" ]; then + shift + break + fi + + # determine option and argument + opt_ARG_OK=no + if [ ".$opt_PREV" != . ]; then + # merge previous seen option with argument + opt_OPT="$opt_PREV" + opt_ARG="$1" + opt_ARG_OK=yes + opt_PREV='' + else + # split argument into option and argument + case "$1" in + -[a-zA-Z0-9]*) + eval `echo "x$1" |\ + sed -e 's/^x-\([a-zA-Z0-9]\)/opt_OPT="\1";/' \ + -e 's/";\(.*\)$/"; opt_ARG="\1"/'` + ;; + -[a-zA-Z0-9]) + opt_OPT=`echo "x$1" | cut -c3-` + opt_ARG='' + ;; + *) + break + ;; + esac + fi + + # eat up option + shift + + # determine whether option needs an argument + eval "opt_MODE=\$opt_MODE_${opt_OPT}" + if [ ".$opt_ARG" = . -a ".$opt_ARG_OK" != .yes ]; then + if [ ".$opt_MODE" = ".:" -o ".$opt_MODE" = ".+" ]; then + opt_PREV="$opt_OPT" + continue + fi + fi + + # process option + case $opt_MODE in + '.' ) + # boolean option + eval "opt_${opt_OPT}=yes" + ;; + ':' ) + # option with argument (multiple occurances override) + eval "opt_${opt_OPT}=\"\$opt_ARG\"" + ;; + '+' ) + # option with argument (multiple occurances append) + eval "opt_${opt_OPT}=\"\$opt_${opt_OPT} \$opt_ARG\"" + ;; + * ) + echo "$msgprefix:Error: unknown option: \`-$opt_OPT'" 1>&2 + echo "$msgprefix:Hint: run \`$toolcmdhelp -h' or \`man shtool' for details" 1>&2 + exit 1 + ;; + esac +done +if [ ".$opt_PREV" != . ]; then + echo "$msgprefix:Error: missing argument to option \`-$opt_PREV'" 1>&2 + echo "$msgprefix:Hint: run \`$toolcmdhelp -h' or \`man shtool' for details" 1>&2 + exit 1 +fi + +# process help option +if [ ".$opt_h" = .yes ]; then + echo "Usage: $toolcmdhelp $str_usage" + exit 0 +fi + +# complain about incorrect number of arguments +case $arg_MODE in + '=' ) + if [ $# -ne $arg_NUMS ]; then + echo "$msgprefix:Error: invalid number of arguments (exactly $arg_NUMS expected)" 1>&2 + echo "$msgprefix:Hint: run \`$toolcmd -h' or \`man shtool' for details" 1>&2 + exit 1 + fi + ;; + '+' ) + if [ $# -lt $arg_NUMS ]; then + echo "$msgprefix:Error: invalid number of arguments (at least $arg_NUMS expected)" 1>&2 + echo "$msgprefix:Hint: run \`$toolcmd -h' or \`man shtool' for details" 1>&2 + exit 1 + fi + ;; +esac + +# establish a temporary file on request +if [ ".$gen_tmpfile" = .yes ]; then + if [ ".$TMPDIR" != . ]; then + tmpdir="$TMPDIR" + elif [ ".$TEMPDIR" != . ]; then + tmpdir="$TEMPDIR" + else + tmpdir="/tmp" + fi + tmpfile="$tmpdir/.shtool.$$" + rm -f $tmpfile >/dev/null 2>&1 + touch $tmpfile +fi + +## +## DISPATCH INTO SCRIPT BODY +## + +case $tool in + +echo ) + ## + ## echo -- Print string with optional construct expansion + ## Copyright (c) 1998-2000 Ralf S. Engelschall + ## Originally written for WML as buildinfo + ## + + text="$*" + + # check for broken escape sequence expansion + seo='' + bytes=`echo '\1' | wc -c | awk '{ printf("%s", $1); }'` + if [ ".$bytes" != .3 ]; then + bytes=`echo -E '\1' | wc -c | awk '{ printf("%s", $1); }'` + if [ ".$bytes" = .3 ]; then + seo='-E' + fi + fi + + # check for existing -n option (to suppress newline) + minusn='' + bytes=`echo -n 123 2>/dev/null | wc -c | awk '{ printf("%s", $1); }'` + if [ ".$bytes" = .3 ]; then + minusn='-n' + fi + + # determine terminal bold sequence + term_bold='' + term_norm='' + if [ ".$opt_e" = .yes -a ".`echo $text | egrep '%[Bb]'`" != . ]; then + case $TERM in + # for the most important terminal types we directly know the sequences + xterm|xterm*|vt220|vt220*) + term_bold=`awk 'BEGIN { printf("%c%c%c%c", 27, 91, 49, 109); }' /dev/null` + term_norm=`awk 'BEGIN { printf("%c%c%c", 27, 91, 109); }' /dev/null` + ;; + vt100|vt100*) + term_bold=`awk 'BEGIN { printf("%c%c%c%c%c%c", 27, 91, 49, 109, 0, 0); }' /dev/null` + term_norm=`awk 'BEGIN { printf("%c%c%c%c%c", 27, 91, 109, 0, 0); }' /dev/null` + ;; + # for all others, we try to use a possibly existing `tput' or `tcout' utility + * ) + paths=`echo $PATH | sed -e 's/:/ /g'` + for tool in tput tcout; do + for dir in $paths; do + if [ -r "$dir/$tool" ]; then + for seq in bold md smso; do # 'smso' is last + bold="`$dir/$tool $seq 2>/dev/null`" + if [ ".$bold" != . ]; then + term_bold="$bold" + break + fi + done + if [ ".$term_bold" != . ]; then + for seq in sgr0 me rmso reset; do # 'reset' is last + norm="`$dir/$tool $seq 2>/dev/null`" + if [ ".$norm" != . ]; then + term_norm="$norm" + break + fi + done + fi + break + fi + done + if [ ".$term_bold" != . -a ".$term_norm" != . ]; then + break; + fi + done + ;; + esac + if [ ".$term_bold" = . -o ".$term_norm" = . ]; then + echo "$msgprefix:Warning: unable to determine terminal sequence for bold mode" 1>&2 + fi + fi + + # determine user name + username='' + if [ ".$opt_e" = .yes -a ".`echo $text | egrep '%[uU]'`" != . ]; then + username="$LOGNAME" + if [ ".$username" = . ]; then + username="$USER" + if [ ".$username" = . ]; then + username="`(whoami) 2>/dev/null |\ + awk '{ printf("%s", $1); }'`" + if [ ".$username" = . ]; then + username="`(who am i) 2>/dev/null |\ + awk '{ printf("%s", $1); }'`" + if [ ".$username" = . ]; then + username='unknown' + fi + fi + fi + fi + fi + + # determine user id + userid='' + if [ ".$opt_e" = .yes -a ".`echo $text | egrep '%U'`" != . ]; then + userid="`(id -u) 2>/dev/null`" + if [ ".$userid" = . ]; then + str="`(id) 2>/dev/null`" + if [ ".`echo $str | grep '^uid[ ]*=[ ]*[0-9]*('`" != . ]; then + userid=`echo $str | sed -e 's/^uid[ ]*=[ ]*//' -e 's/(.*//'` + fi + if [ ".$userid" = . ]; then + userid=`egrep "^${username}:" /etc/passwd 2>/dev/null | \ + sed -e 's/[^:]*:[^:]*://' -e 's/:.*$//'` + if [ ".$userid" = . ]; then + userid=`(ypcat passwd) 2>/dev/null | + egrep "^${username}:" | \ + sed -e 's/[^:]*:[^:]*://' -e 's/:.*$//'` + if [ ".$userid" = . ]; then + userid='?' + fi + fi + fi + fi + fi + + # determine host name + hostname='' + if [ ".$opt_e" = .yes -a ".`echo $text | egrep '%h'`" != . ]; then + hostname="`(uname -n) 2>/dev/null |\ + awk '{ printf("%s", $1); }'`" + if [ ".$hostname" = . ]; then + hostname="`(hostname) 2>/dev/null |\ + awk '{ printf("%s", $1); }'`" + if [ ".$hostname" = . ]; then + hostname='unknown' + fi + fi + case $hostname in + *.* ) + domainname=".`echo $hostname | cut -d. -f2-`" + hostname="`echo $hostname | cut -d. -f1`" + ;; + esac + fi + + # determine domain name + domainname='' + if [ ".$opt_e" = .yes -a ".`echo $text | egrep '%d'`" != . ]; then + if [ ".$domainname" = . ]; then + if [ -f /etc/resolv.conf ]; then + domainname="`egrep '^[ ]*domain' /etc/resolv.conf | head -1 |\ + sed -e 's/.*domain//' \ + -e 's/^[ ]*//' -e 's/^ *//' -e 's/^ *//' \ + -e 's/^\.//' -e 's/^/./' |\ + awk '{ printf("%s", $1); }'`" + if [ ".$domainname" = . ]; then + domainname="`egrep '^[ ]*search' /etc/resolv.conf | head -1 |\ + sed -e 's/.*search//' \ + -e 's/^[ ]*//' -e 's/^ *//' -e 's/^ *//' \ + -e 's/ .*//' -e 's/ .*//' \ + -e 's/^\.//' -e 's/^/./' |\ + awk '{ printf("%s", $1); }'`" + fi + fi + fi + fi + + # determine current time + time_day='' + time_month='' + time_year='' + time_monthname='' + if [ ".$opt_e" = .yes -a ".`echo $text | egrep '%[DMYm]'`" != . ]; then + time_day=`date '+%d'` + time_month=`date '+%m'` + time_year=`date '+%Y' 2>/dev/null` + if [ ".$time_year" = . ]; then + time_year=`date '+%y'` + case $time_year in + [5-9][0-9]) time_year="19$time_year" ;; + [0-4][0-9]) time_year="20$time_year" ;; + esac + fi + case $time_month in + 1|01) time_monthname='Jan' ;; + 2|02) time_monthname='Feb' ;; + 3|03) time_monthname='Mar' ;; + 4|04) time_monthname='Apr' ;; + 5|05) time_monthname='May' ;; + 6|06) time_monthname='Jun' ;; + 7|07) time_monthname='Jul' ;; + 8|08) time_monthname='Aug' ;; + 9|09) time_monthname='Sep' ;; + 10) time_monthname='Oct' ;; + 11) time_monthname='Nov' ;; + 12) time_monthname='Dec' ;; + esac + fi + + # expand special ``%x'' constructs + if [ ".$opt_e" = .yes ]; then + text=`echo $seo "$text" |\ + sed -e "s/%B/${term_bold}/g" \ + -e "s/%b/${term_norm}/g" \ + -e "s/%u/${username}/g" \ + -e "s/%U/${userid}/g" \ + -e "s/%h/${hostname}/g" \ + -e "s/%d/${domainname}/g" \ + -e "s/%D/${time_day}/g" \ + -e "s/%M/${time_month}/g" \ + -e "s/%Y/${time_year}/g" \ + -e "s/%m/${time_monthname}/g" 2>/dev/null` + fi + + # create output + if [ .$opt_n = .no ]; then + echo $seo "$text" + else + # the harder part: echo -n is best, because + # awk may complain about some \xx sequences. + if [ ".$minusn" != . ]; then + echo $seo $minusn "$text" + else + echo dummy | awk '{ printf("%s", TEXT); }' TEXT="$text" + fi + fi + ;; + +install ) + ## + ## install -- Install a program, script or datafile + ## Copyright (c) 1997-2000 Ralf S. Engelschall + ## Originally written for shtool + ## + + src="$1" + dst="$2" + + # If destination is a directory, append the input filename + if [ -d $dst ]; then + dst=`echo "$dst" | sed -e 's:/$::'` + dstfile=`echo "$src" | sed -e 's;.*/\([^/]*\)$;\1;'` + dst="$dst/$dstfile" + fi + + # Add a possible extension to src and dst + if [ ".$opt_e" != . ]; then + src="$src$opt_e" + dst="$dst$opt_e" + fi + + # Check for correct arguments + if [ ".$src" = ".$dst" ]; then + echo "$msgprefix:Error: source and destination are the same" 1>&2 + exit 1 + fi + + # Make a temp file name in the destination directory + dstdir=`echo $dst | sed -e 's;[^/]*$;;' -e 's;\(.\)/$;\1;' -e 's;^$;.;'` + dsttmp="$dstdir/#INST@$$#" + + # Verbosity + if [ ".$opt_v" = .yes ]; then + echo "$src -> $dst" 1>&2 + fi + + # Copy or move the file name to the temp name + # (because we might be not allowed to change the source) + if [ ".$opt_C" = .yes ]; then + opt_c=yes + fi + if [ ".$opt_c" = .yes ]; then + if [ ".$opt_t" = .yes ]; then + echo "cp $src $dsttmp" 1>&2 + fi + cp $src $dsttmp || exit $? + else + if [ ".$opt_t" = .yes ]; then + echo "mv $src $dsttmp" 1>&2 + fi + mv $src $dsttmp || exit $? + fi + + # Adjust the target file + # (we do chmod last to preserve setuid bits) + if [ ".$opt_s" = .yes ]; then + if [ ".$opt_t" = .yes ]; then + echo "strip $dsttmp" 1>&2 + fi + strip $dsttmp || exit $? + fi + if [ ".$opt_o" != . ]; then + if [ ".$opt_t" = .yes ]; then + echo "chown $opt_o $dsttmp" 1>&2 + fi + chown $opt_o $dsttmp || exit $? + fi + if [ ".$opt_g" != . ]; then + if [ ".$opt_t" = .yes ]; then + echo "chgrp $opt_g $dsttmp" 1>&2 + fi + chgrp $opt_g $dsttmp || exit $? + fi + if [ ".$opt_m" != . ]; then + if [ ".$opt_t" = .yes ]; then + echo "chmod $opt_m $dsttmp" 1>&2 + fi + chmod $opt_m $dsttmp || exit $? + fi + + # Determine whether to do a quick install + # (has to be done _after_ the strip was already done) + quick=no + if [ ".$opt_C" = .yes ]; then + if [ -r $dst ]; then + if cmp -s $src $dst; then + quick=yes + fi + fi + fi + + # Finally install the file to the real destination + if [ $quick = yes ]; then + if [ ".$opt_t" = .yes ]; then + echo "rm -f $dsttmp" 1>&2 + fi + rm -f $dsttmp + else + if [ ".$opt_t" = .yes ]; then + echo "rm -f $dst && mv $dsttmp $dst" 1>&2 + fi + rm -f $dst && mv $dsttmp $dst + fi + ;; + +mkdir ) + ## + ## mkdir -- Make one or more directories + ## Copyright (c) 1996-2000 Ralf S. Engelschall + ## Originally written for public domain by Noah Friedman + ## Cleaned up and enhanced for shtool + ## + + errstatus=0 + for p in ${1+"$@"}; do + # if the directory already exists... + if [ -d "$p" ]; then + if [ ".$opt_f" = .no ] && [ ".$opt_p" = .no ]; then + echo "$msgprefix:Error: directory already exists: $p" 1>&2 + errstatus=1 + break + else + continue + fi + fi + # if the directory has to be created... + if [ ".$opt_p" = .no ]; then + if [ ".$opt_t" = .yes ]; then + echo "mkdir $p" 1>&2 + fi + mkdir $p || errstatus=$? + else + # the smart situation + set fnord `echo ":$p" |\ + sed -e 's/^:\//%/' \ + -e 's/^://' \ + -e 's/\// /g' \ + -e 's/^%/\//'` + shift + pathcomp='' + for d in ${1+"$@"}; do + pathcomp="$pathcomp$d" + case "$pathcomp" in + -* ) pathcomp="./$pathcomp" ;; + esac + if [ ! -d "$pathcomp" ]; then + if [ ".$opt_t" = .yes ]; then + echo "mkdir $pathcomp" 1>&2 + fi + mkdir $pathcomp || errstatus=$? + if [ ".$opt_m" != . ]; then + if [ ".$opt_t" = .yes ]; then + echo "chmod $opt_m $pathcomp" 1>&2 + fi + chmod $opt_m $pathcomp || errstatus=$? + fi + fi + pathcomp="$pathcomp/" + done + fi + done + exit $errstatus + ;; + +esac + +exit 0 + +##EOF## diff --git a/contrib/php4/config.guess b/contrib/php4/config.guess new file mode 100755 index 00000000..6cb567b8 --- /dev/null +++ b/contrib/php4/config.guess @@ -0,0 +1,1087 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999 +# Free Software Foundation, Inc. +# +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Written by Per Bothner . +# The master version of this file is at the FSF in /home/gd/gnu/lib. +# Please send patches to the Autoconf mailing list . +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# The plan is that this can be called by configure scripts if you +# don't specify an explicit system type (host/target name). +# +# Only a few systems have been added to this list; please add others +# (but try to keep the structure clean). +# + +# Use $HOST_CC if defined. $CC may point to a cross-compiler +if test x"$CC_FOR_BUILD" = x; then + if test x"$HOST_CC" != x; then + CC_FOR_BUILD="$HOST_CC" + else + if test x"$CC" != x; then + CC_FOR_BUILD="$CC" + else + CC_FOR_BUILD=cc + fi + fi +fi + + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 8/24/94.) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +dummy=dummy-$$ +trap 'rm -f $dummy.c $dummy.o $dummy; exit 1' 1 2 15 + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + alpha:OSF1:*:*) + if test $UNAME_RELEASE = "V4.0"; then + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + fi + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + cat <$dummy.s + .globl main + .ent main +main: + .frame \$30,0,\$26,0 + .prologue 0 + .long 0x47e03d80 # implver $0 + lda \$2,259 + .long 0x47e20c21 # amask $2,$1 + srl \$1,8,\$2 + sll \$2,2,\$2 + sll \$0,3,\$0 + addl \$1,\$0,\$0 + addl \$2,\$0,\$0 + ret \$31,(\$26),1 + .end main +EOF + $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null + if test "$?" = 0 ; then + ./$dummy + case "$?" in + 7) + UNAME_MACHINE="alpha" + ;; + 15) + UNAME_MACHINE="alphaev5" + ;; + 14) + UNAME_MACHINE="alphaev56" + ;; + 10) + UNAME_MACHINE="alphapca56" + ;; + 16) + UNAME_MACHINE="alphaev6" + ;; + esac + fi + rm -f $dummy.s $dummy + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit 0 ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit 0 ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit 0 ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-cbm-sysv4 + exit 0;; + amiga:NetBSD:*:*) + echo m68k-cbm-netbsd${UNAME_RELEASE} + exit 0 ;; + amiga:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit 0 ;; + arc64:OpenBSD:*:*) + echo mips64el-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + arc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + hkmips:OpenBSD:*:*) + echo mips-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + pmax:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sgi:OpenBSD:*:*) + echo mips-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + wgrisc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit 0;; + arm32:NetBSD:*:*) + echo arm-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + exit 0 ;; + SR2?01:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit 0;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit 0 ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit 0 ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + i86pc:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit 0 ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit 0 ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit 0 ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit 0 ;; + atari*:NetBSD:*:*) + echo m68k-atari-netbsd${UNAME_RELEASE} + exit 0 ;; + atari*:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit 0 ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit 0 ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit 0 ;; + sun3*:NetBSD:*:*) + echo m68k-sun-netbsd${UNAME_RELEASE} + exit 0 ;; + sun3*:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mac68k:NetBSD:*:*) + echo m68k-apple-netbsd${UNAME_RELEASE} + exit 0 ;; + mac68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme88k:OpenBSD:*:*) + echo m88k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit 0 ;; + macppc:NetBSD:*:*) + echo powerpc-apple-netbsd${UNAME_RELEASE} + exit 0 ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit 0 ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit 0 ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD $dummy.c -o $dummy \ + && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ + && rm $dummy.c $dummy && exit 0 + rm -f $dummy.c $dummy + echo mips-mips-riscos${UNAME_RELEASE} + exit 0 ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit 0 ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit 0 ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit 0 ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit 0 ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 -o $UNAME_PROCESSOR = mc88110 ] ; then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \ + -o ${TARGET_BINARY_INTERFACE}x = x ] ; then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else echo i586-dg-dgux${UNAME_RELEASE} + fi + exit 0 ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit 0 ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit 0 ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit 0 ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit 0 ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit 0 ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i?86:AIX:*:*) + echo i386-ibm-aix + exit 0 ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0 + rm -f $dummy.c $dummy + echo rs6000-ibm-aix3.2.5 + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit 0 ;; + *:AIX:*:4) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'` + if /usr/sbin/lsattr -EHl ${IBM_CPU_ID} | grep POWER >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=4.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit 0 ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit 0 ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC NetBSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit 0 ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit 0 ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit 0 ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit 0 ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit 0 ;; + 9000/[34678]??:HP-UX:*:*) + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + sed 's/^ //' << EOF >$dummy.c + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + ($CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy` + rm -f $dummy.c $dummy + esac + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit 0 ;; + 3050*:HI-UX:*:*) + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0 + rm -f $dummy.c $dummy + echo unknown-hitachi-hiuxwe2 + exit 0 ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit 0 ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit 0 ;; + *9??*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit 0 ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit 0 ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit 0 ;; + i?86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit 0 ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit 0 ;; + hppa*:OpenBSD:*:*) + echo hppa-unknown-openbsd + exit 0 ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit 0 ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit 0 ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit 0 ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit 0 ;; + CRAY*X-MP:*:*:*) + echo xmp-cray-unicos + exit 0 ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} + exit 0 ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ + exit 0 ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} + exit 0 ;; + CRAY*T3E:*:*:*) + echo t3e-cray-unicosmk${UNAME_RELEASE} + exit 0 ;; + CRAY-2:*:*:*) + echo cray2-cray-unicos + exit 0 ;; + F300:UNIX_System_V:*:*) + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "f300-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit 0 ;; + F301:UNIX_System_V:*:*) + echo f301-fujitsu-uxpv`echo $UNAME_RELEASE | sed 's/ .*//'` + exit 0 ;; + hp3[0-9][05]:NetBSD:*:*) + echo m68k-hp-netbsd${UNAME_RELEASE} + exit 0 ;; + hp300:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + i?86:BSD/386:*:* | i?86:BSD/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit 0 ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:FreeBSD:*:*) + if test -x /usr/bin/objformat; then + if test "elf" = "`/usr/bin/objformat`"; then + echo ${UNAME_MACHINE}-unknown-freebsdelf`echo ${UNAME_RELEASE}|sed -e 's/[-_].*//'` + exit 0 + fi + fi + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit 0 ;; + *:NetBSD:*:*) + echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + exit 0 ;; + *:OpenBSD:*:*) + echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + exit 0 ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit 0 ;; + i*:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit 0 ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i386-pc-interix + exit 0 ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit 0 ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit 0 ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + *:GNU:*:*) + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit 0 ;; + *:Linux:*:*) + # uname on the ARM produces all sorts of strangeness, and we need to + # filter it out. + case "$UNAME_MACHINE" in + armv*) UNAME_MACHINE=$UNAME_MACHINE ;; + arm* | sa110*) UNAME_MACHINE="arm" ;; + esac + + # The BFD linker knows what the default object file format is, so + # first see if it will tell us. cd to the root directory to prevent + # problems with other programs or directories called `ld' in the path. + ld_help_string=`cd /; ld --help 2>&1` + ld_supported_emulations=`echo $ld_help_string \ + | sed -ne '/supported emulations:/!d + s/[ ][ ]*/ /g + s/.*supported emulations: *// + s/ .*// + p'` + case "$ld_supported_emulations" in + i?86linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" ; exit 0 ;; + i?86coff) echo "${UNAME_MACHINE}-pc-linux-gnucoff" ; exit 0 ;; + sparclinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;; + armlinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;; + m68klinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;; + elf32ppc) + # Determine Lib Version + cat >$dummy.c < +#if defined(__GLIBC__) +extern char __libc_version[]; +extern char __libc_release[]; +#endif +main(argc, argv) + int argc; + char *argv[]; +{ +#if defined(__GLIBC__) + printf("%s %s\n", __libc_version, __libc_release); +#else + printf("unkown\n"); +#endif + return 0; +} +EOF + LIBC="" + $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null + if test "$?" = 0 ; then + ./$dummy | grep 1\.99 > /dev/null + if test "$?" = 0 ; then + LIBC="libc1" + fi + fi + rm -f $dummy.c $dummy + echo powerpc-unknown-linux-gnu${LIBC} ; exit 0 ;; + esac + + if test "${UNAME_MACHINE}" = "alpha" ; then + sed 's/^ //' <$dummy.s + .globl main + .ent main + main: + .frame \$30,0,\$26,0 + .prologue 0 + .long 0x47e03d80 # implver $0 + lda \$2,259 + .long 0x47e20c21 # amask $2,$1 + srl \$1,8,\$2 + sll \$2,2,\$2 + sll \$0,3,\$0 + addl \$1,\$0,\$0 + addl \$2,\$0,\$0 + ret \$31,(\$26),1 + .end main +EOF + LIBC="" + $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null + if test "$?" = 0 ; then + ./$dummy + case "$?" in + 7) + UNAME_MACHINE="alpha" + ;; + 15) + UNAME_MACHINE="alphaev5" + ;; + 14) + UNAME_MACHINE="alphaev56" + ;; + 10) + UNAME_MACHINE="alphapca56" + ;; + 16) + UNAME_MACHINE="alphaev6" + ;; + esac + + objdump --private-headers $dummy | \ + grep ld.so.1 > /dev/null + if test "$?" = 0 ; then + LIBC="libc1" + fi + fi + rm -f $dummy.s $dummy + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} ; exit 0 + elif test "${UNAME_MACHINE}" = "mips" ; then + cat >$dummy.c </dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0 + rm -f $dummy.c $dummy + else + # Either a pre-BFD a.out linker (linux-gnuoldld) + # or one that does not give us useful --help. + # GCC wants to distinguish between linux-gnuoldld and linux-gnuaout. + # If ld does not provide *any* "supported emulations:" + # that means it is gnuoldld. + echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations:" + test $? != 0 && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0 + + case "${UNAME_MACHINE}" in + i?86) + VENDOR=pc; + ;; + *) + VENDOR=unknown; + ;; + esac + # Determine whether the default compiler is a.out or elf + cat >$dummy.c < +#ifdef __cplusplus + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif +#ifdef __ELF__ +# ifdef __GLIBC__ +# if __GLIBC__ >= 2 + printf ("%s-${VENDOR}-linux-gnu\n", argv[1]); +# else + printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]); +# endif +# else + printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]); +# endif +#else + printf ("%s-${VENDOR}-linux-gnuaout\n", argv[1]); +#endif + return 0; +} +EOF + $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0 + rm -f $dummy.c $dummy + fi ;; +# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions +# are messed up and put the nodename in both sysname and nodename. + i?86:DYNIX/ptx:4*:*) + echo i386-sequent-sysv4 + exit 0 ;; + i?86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit 0 ;; + i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*) + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE} + fi + exit 0 ;; + i?86:*:5:7*) + UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')` + (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) && UNAME_MACHINE=i586 + (/bin/uname -X|egrep '^Machine.*Pent.*II' >/dev/null) && UNAME_MACHINE=i686 + (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) && UNAME_MACHINE=i585 + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}${UNAME_VERSION}-sysv${UNAME_RELEASE} + exit 0 ;; + i?86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')` + (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|egrep '^Machine.*Pent ?II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit 0 ;; + pc:*:*:*) + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i386. + echo i386-pc-msdosdjgpp + exit 0 ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit 0 ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit 0 ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit 0 ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit 0 ;; + M68*:*:R3V[567]*:*) + test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; + 3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4.3${OS_REL} && exit 0 + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4 && exit 0 ;; + m68*:LynxOS:2.*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit 0 ;; + i?86:LynxOS:2.*:* | i?86:LynxOS:3.[01]*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + rs6000:LynxOS:2.*:* | PowerPC:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit 0 ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit 0 ;; + PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit 0 ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit 0 ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit 0 ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit 0 ;; + news*:NEWS-OS:*:6*) + echo mips-sony-newsos6 + exit 0 ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit 0 ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit 0 ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit 0 ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit 0 ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit 0 ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit 0 ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +cat >$dummy.c < +# include +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +#if !defined (ultrix) + printf ("vax-dec-bsd\n"); exit (0); +#else + printf ("vax-dec-ultrix\n"); exit (0); +#endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm $dummy.c $dummy && exit 0 +rm -f $dummy.c $dummy + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit 0 ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + c34*) + echo c34-convex-bsd + exit 0 ;; + c38*) + echo c38-convex-bsd + exit 0 ;; + c4*) + echo c4-convex-bsd + exit 0 ;; + esac +fi + +#echo '(Unable to guess system type)' 1>&2 + +exit 1 diff --git a/contrib/php4/config.m4 b/contrib/php4/config.m4 new file mode 100644 index 00000000..b8acde79 --- /dev/null +++ b/contrib/php4/config.m4 @@ -0,0 +1,24 @@ +dnl $Id$ + +PHP_ARG_WITH(rrdtool, for RRDTool support, +[ --with-rrdtool[=DIR] Include RRDTool support. DIR is the rrdtool + install directory.]) + +if test "$PHP_RRDTOOL" != "no"; then + for i in /usr/local /usr /opt/rrdtool /usr/local/rrdtool $PHP_RRDTOOL; do + if test -f $i/include/rrd.h; then + RRDTOOL_DIR=$i + fi + done + + if test -z "$RRDTOOL_DIR"; then + AC_MSG_ERROR(Please reinstall rrdtool, or specify a directory - I cannot find rrd.h) + fi + AC_ADD_INCLUDE($RRDTOOL_DIR/include) + AC_ADD_LIBRARY_WITH_PATH(rrd, $RRDTOOL_DIR/lib, RRDTOOL_SHARED_LIBADD) + PHP_SUBST(RRDTOOL_SHARED_LIBADD) + + AC_DEFINE(HAVE_RRDTOOL,1,[ ]) + + PHP_EXTENSION(rrdtool, $ext_shared) +fi diff --git a/contrib/php4/config.sub b/contrib/php4/config.sub new file mode 100755 index 00000000..2436b453 --- /dev/null +++ b/contrib/php4/config.sub @@ -0,0 +1,1215 @@ +#! /bin/sh +# Configuration validation subroutine script, version 1.1. +# Copyright (C) 1991, 92-97, 1998, 1999 Free Software Foundation, Inc. +# This file is (in principle) common to ALL GNU software. +# The presence of a machine in this file suggests that SOME GNU software +# can handle that machine. It does not imply ALL GNU software can. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +if [ x$1 = x ] +then + echo Configuration name missing. 1>&2 + echo "Usage: $0 CPU-MFR-OPSYS" 1>&2 + echo "or $0 ALIAS" 1>&2 + echo where ALIAS is a recognized configuration type. 1>&2 + exit 1 +fi + +# First pass through any local machine types. +case $1 in + *local*) + echo $1 + exit 0 + ;; + *) + ;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + linux-gnu*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple) + os= + basic_machine=$1 + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=vxworks + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + tahoe | i860 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \ + | arme[lb] | pyramid | mn10200 | mn10300 | tron | a29k \ + | 580 | i960 | h8300 \ + | hppa | hppa1.0 | hppa1.1 | hppa2.0 | hppa2.0w | hppa2.0n \ + | alpha | alphaev[4-7] | alphaev56 | alphapca5[67] \ + | we32k | ns16k | clipper | i370 | sh | powerpc | powerpcle \ + | 1750a | dsp16xx | pdp11 | mips16 | mips64 | mipsel | mips64el \ + | mips64orion | mips64orionel | mipstx39 | mipstx39el \ + | mips64vr4300 | mips64vr4300el | mips64vr4100 | mips64vr4100el \ + | mips64vr5000 | miprs64vr5000el \ + | sparc | sparclet | sparclite | sparc64 | sparcv9 | v850 | c4x \ + | thumb | d10v) + basic_machine=$basic_machine-unknown + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | z8k | v70 | h8500 | w65) + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i[34567]86) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + vax-* | tahoe-* | i[34567]86-* | i860-* | m32r-* | m68k-* | m68000-* \ + | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | arm-* | c[123]* \ + | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \ + | power-* | none-* | 580-* | cray2-* | h8300-* | h8500-* | i960-* \ + | xmp-* | ymp-* \ + | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* | hppa2.0w-* | hppa2.0n-* \ + | alpha-* | alphaev[4-7]-* | alphaev56-* | alphapca5[67]-* \ + | we32k-* | cydra-* | ns16k-* | pn-* | np1-* | xps100-* \ + | clipper-* | orion-* \ + | sparclite-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \ + | sparc64-* | sparcv9-* | sparc86x-* | mips16-* | mips64-* | mipsel-* \ + | mips64el-* | mips64orion-* | mips64orionel-* \ + | mips64vr4100-* | mips64vr4100el-* | mips64vr4300-* | mips64vr4300el-* \ + | mipstx39-* | mipstx39el-* \ + | f301-* | armv*-* | t3e-* \ + | m88110-* | m680[01234]0-* | m683?2-* | m68360-* | z8k-* | d10v-* \ + | thumb-* | v850-* | d30v-* | tic30-* | c30-* ) + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-cbm + ;; + amigaos | amigados) + basic_machine=m68k-cbm + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-cbm + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | ymp) + basic_machine=ymp-cray + os=-unicos + ;; + cray2) + basic_machine=cray2-cray + os=-unicos + ;; + [ctj]90-cray) + basic_machine=c90-cray + os=-unicos + ;; + crds | unos) + basic_machine=m68k-crds + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + os=-mvs + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i[34567]86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i[34567]86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i[34567]86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i[34567]86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + i386-go32 | go32) + basic_machine=i386-unknown + os=-go32 + ;; + i386-mingw32 | mingw32) + basic_machine=i386-unknown + os=-mingw32 + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | *MiNT) + basic_machine=m68k-atari + os=-mint + ;; + mipsel*-linux*) + basic_machine=mipsel-unknown + os=-linux-gnu + ;; + mips*-linux*) + basic_machine=mips-unknown + os=-linux-gnu + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + msdos) + basic_machine=i386-unknown + os=-msdos + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-corel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + np1) + basic_machine=np1-gould + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pentium | p5 | k5 | k6 | nexen) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86) + basic_machine=i686-pc + ;; + pentiumii | pentium2) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexen-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=rs6000-ibm + ;; + ppc) basic_machine=powerpc-unknown + ;; + ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sparclite-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=t3e-cray + os=-unicos + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xmp) + basic_machine=xmp-cray + os=-unicos + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + mips) + if [ x$os = x-linux-gnu ]; then + basic_machine=mips-unknown + else + basic_machine=mips-mips + fi + ;; + romp) + basic_machine=romp-ibm + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sparc | sparcv9) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + c4x*) + basic_machine=c4x-none + os=-coff + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ + | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -rhapsody* | -openstep* | -oskit*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ + | -macos* | -mpw* | -magic* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -ns2 ) + os=-nextstep2 + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -*MiNT) + os=-mint + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + *-acorn) + os=-riscix1.2 + ;; + arm*-corel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + m68*-cisco) + os=-aout + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-ibm) + os=-aix + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f301-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -vxsim* | -vxworks*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -*MiNT) + vendor=atari + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os diff --git a/contrib/php4/configure b/contrib/php4/configure new file mode 100755 index 00000000..aa90df09 --- /dev/null +++ b/contrib/php4/configure @@ -0,0 +1,2281 @@ +#! /bin/sh + + + + + PHP_VAR_SUBST="$PHP_VAR_SUBST EXT_STATIC" + + + + PHP_VAR_SUBST="$PHP_VAR_SUBST EXT_SHARED" + + + + PHP_VAR_SUBST="$PHP_VAR_SUBST EXT_LIBS" + + + + PHP_VAR_SUBST="$PHP_VAR_SUBST EXT_LTLIBS" + + + + + + + + + + + + + + + + + + + + + + +# serial 40 AC_PROG_LIBTOOL + + + + +# AC_LIBTOOL_DLOPEN - enable checks for dlopen support + + +# AC_LIBTOOL_WIN32_DLL - declare package support for building win32 dll's + + +# AC_ENABLE_SHARED - implement the --enable-shared flag +# Usage: AC_ENABLE_SHARED[(DEFAULT)] +# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to +# `yes'. + + +# AC_DISABLE_SHARED - set the default shared flag to --disable-shared + + +# AC_ENABLE_STATIC - implement the --enable-static flag +# Usage: AC_ENABLE_STATIC[(DEFAULT)] +# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to +# `yes'. + + +# AC_DISABLE_STATIC - set the default static flag to --disable-static + + + +# AC_ENABLE_FAST_INSTALL - implement the --enable-fast-install flag +# Usage: AC_ENABLE_FAST_INSTALL[(DEFAULT)] +# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to +# `yes'. + + +# AC_ENABLE_FAST_INSTALL - set the default to --disable-fast-install + + +# AC_PROG_LD - find the path to the GNU or non-GNU linker + + + + +# AC_PROG_NM - find the path to a BSD-compatible name lister + + +# AC_CHECK_LIBM - check for math library + + +# AC_LIBLTDL_CONVENIENCE[(dir)] - sets LIBLTDL to the link flags for +# the libltdl convenience library, adds --enable-ltdl-convenience to +# the configure arguments. Note that LIBLTDL is not AC_SUBSTed, nor +# is AC_CONFIG_SUBDIRS called. If DIR is not provided, it is assumed +# to be `${top_builddir}/libltdl'. Make sure you start DIR with +# '${top_builddir}/' (note the single quotes!) if your package is not +# flat, and, if you're not using automake, define top_builddir as +# appropriate in the Makefiles. + + +# AC_LIBLTDL_INSTALLABLE[(dir)] - sets LIBLTDL to the link flags for +# the libltdl installable library, and adds --enable-ltdl-install to +# the configure arguments. Note that LIBLTDL is not AC_SUBSTed, nor +# is AC_CONFIG_SUBDIRS called. If DIR is not provided, it is assumed +# to be `${top_builddir}/libltdl'. Make sure you start DIR with +# '${top_builddir}/' (note the single quotes!) if your package is not +# flat, and, if you're not using automake, define top_builddir as +# appropriate in the Makefiles. +# In the future, this macro may have to be called after AC_PROG_LIBTOOL. + + + + +# Guess values for system-dependent variables and create Makefiles. +# Generated automatically using autoconf version 2.13 +# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. + +# Defaults: +ac_help= +ac_default_prefix=/usr/local +# Any additions from configure.in: +ac_help="$ac_help + --with-php-config=[PATH]" +ac_default_prefix= +ac_help="$ac_help + --with-rrdtool[=DIR] Include RRDTool support. DIR is the rrdtool + install directory." +ac_help="$ac_help + --enable-shared[=PKGS] build shared libraries [default=yes]" +ac_help="$ac_help + --enable-static[=PKGS] build static libraries [default=yes]" +ac_help="$ac_help + --enable-fast-install[=PKGS] optimize for fast installation [default=yes]" +ac_help="$ac_help + --with-gnu-ld assume the C compiler uses GNU ld [default=no]" +ac_help="$ac_help + --disable-libtool-lock avoid locking (might break parallel builds)" + +# Initialize some variables set by options. +# The variables have the same names as the options, with +# dashes changed to underlines. +build=NONE +cache_file=./config.cache +exec_prefix=NONE +host=NONE +no_create= +nonopt=NONE +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +target=NONE +verbose= +x_includes=NONE +x_libraries=NONE +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +# Initialize some other variables. +subdirs= +MFLAGS= MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} +# Maximum number of lines to put in a shell here document. +ac_max_here_lines=12 + +ac_prev= +for ac_option +do + + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + case "$ac_option" in + -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; + *) ac_optarg= ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case "$ac_option" in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir="$ac_optarg" ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build="$ac_optarg" ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file="$ac_optarg" ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir="$ac_optarg" ;; + + -disable-* | --disable-*) + ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then + { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } + fi + ac_feature=`echo $ac_feature| sed 's/-/_/g'` + eval "enable_${ac_feature}=no" ;; + + -enable-* | --enable-*) + ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then + { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } + fi + ac_feature=`echo $ac_feature| sed 's/-/_/g'` + case "$ac_option" in + *=*) ;; + *) ac_optarg=yes ;; + esac + eval "enable_${ac_feature}='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix="$ac_optarg" ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he) + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat << EOF +Usage: configure [options] [host] +Options: [defaults in brackets after descriptions] +Configuration: + --cache-file=FILE cache test results in FILE + --help print this message + --no-create do not create output files + --quiet, --silent do not print \`checking...' messages + --version print the version of autoconf that created configure +Directory and file names: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [same as prefix] + --bindir=DIR user executables in DIR [EPREFIX/bin] + --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] + --libexecdir=DIR program executables in DIR [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data in DIR + [PREFIX/share] + --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data in DIR + [PREFIX/com] + --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] + --libdir=DIR object code libraries in DIR [EPREFIX/lib] + --includedir=DIR C header files in DIR [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] + --infodir=DIR info documentation in DIR [PREFIX/info] + --mandir=DIR man documentation in DIR [PREFIX/man] + --srcdir=DIR find the sources in DIR [configure dir or ..] + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM + run sed PROGRAM on installed program names +EOF + cat << EOF +Host type: + --build=BUILD configure for building on BUILD [BUILD=HOST] + --host=HOST configure for HOST [guessed] + --target=TARGET configure for TARGET [TARGET=HOST] +Features and packages: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --x-includes=DIR X include files are in DIR + --x-libraries=DIR X library files are in DIR +EOF + if test -n "$ac_help"; then + echo "--enable and --with options recognized:$ac_help" + fi + exit 0 ;; + + -host | --host | --hos | --ho) + ac_prev=host ;; + -host=* | --host=* | --hos=* | --ho=*) + host="$ac_optarg" ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir="$ac_optarg" ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir="$ac_optarg" ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir="$ac_optarg" ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir="$ac_optarg" ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir="$ac_optarg" ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir="$ac_optarg" ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir="$ac_optarg" ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix="$ac_optarg" ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix="$ac_optarg" ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix="$ac_optarg" ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name="$ac_optarg" ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir="$ac_optarg" ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir="$ac_optarg" ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site="$ac_optarg" ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir="$ac_optarg" ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir="$ac_optarg" ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target="$ac_optarg" ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers) + echo "configure generated by autoconf version 2.13" + exit 0 ;; + + -with-* | --with-*) + ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then + { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } + fi + ac_package=`echo $ac_package| sed 's/-/_/g'` + case "$ac_option" in + *=*) ;; + *) ac_optarg=yes ;; + esac + eval "with_${ac_package}='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`echo $ac_option|sed -e 's/-*without-//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then + { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } + fi + ac_package=`echo $ac_package| sed 's/-/_/g'` + eval "with_${ac_package}=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes="$ac_optarg" ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries="$ac_optarg" ;; + + -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } + ;; + + *) + if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then + echo "configure: warning: $ac_option: invalid host type" 1>&2 + fi + if test "x$nonopt" != xNONE; then + { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } + fi + nonopt="$ac_option" + ;; + + esac +done + +if test -n "$ac_prev"; then + { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } +fi + +trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 + +# File descriptor usage: +# 0 standard input +# 1 file creation +# 2 errors and warnings +# 3 some systems may open it to /dev/tty +# 4 used on the Kubota Titan +# 6 checking for... messages and results +# 5 compiler messages saved in config.log +if test "$silent" = yes; then + exec 6>/dev/null +else + exec 6>&1 +fi +exec 5>./config.log + +echo "\ +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. +" 1>&5 + +# Strip out --no-create and --no-recursion so they do not pile up. +# Also quote any args containing shell metacharacters. +ac_configure_args= +for ac_arg +do + case "$ac_arg" in + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c) ;; + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) + ac_configure_args="$ac_configure_args '$ac_arg'" ;; + *) ac_configure_args="$ac_configure_args $ac_arg" ;; + esac +done + +# NLS nuisances. +# Only set these to C if already set. These must not be set unconditionally +# because not all systems understand e.g. LANG=C (notably SCO). +# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'! +# Non-C LC_CTYPE values break the ctype check. +if test "${LANG+set}" = set; then LANG=C; export LANG; fi +if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi +if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi +if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo > confdefs.h + +# A filename unique to this package, relative to the directory that +# configure is in, which we can look for to find out if srcdir is correct. +ac_unique_file=Makefile.in + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_prog=$0 + ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` + test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. + srcdir=$ac_confdir + if test ! -r $srcdir/$ac_unique_file; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r $srcdir/$ac_unique_file; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } + else + { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } + fi +fi +srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` + +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + echo "loading site script $ac_site_file" + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + echo "loading cache $cache_file" + . $cache_file +else + echo "creating cache $cache_file" + > $cache_file +fi + +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cc_cross + +ac_exeext= +ac_objext=o +if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then + # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. + if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then + ac_n= ac_c=' +' ac_t=' ' + else + ac_n=-n ac_c= ac_t= + fi +else + ac_n= ac_c='\c' ac_t= +fi + + + + + +abs_srcdir=`(cd $srcdir && pwd)` + +php_always_shared=yes + +# Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:662: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_CC="gcc" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +CC="$ac_cv_prog_CC" +if test -n "$CC"; then + echo "$ac_t""$CC" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:692: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_prog_rejected=no + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + break + fi + done + IFS="$ac_save_ifs" +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# -gt 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + set dummy "$ac_dir/$ac_word" "$@" + shift + ac_cv_prog_CC="$@" + fi +fi +fi +fi +CC="$ac_cv_prog_CC" +if test -n "$CC"; then + echo "$ac_t""$CC" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + if test -z "$CC"; then + case "`uname -s`" in + *win32* | *WIN32*) + # Extract the first word of "cl", so it can be a program name with args. +set dummy cl; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:743: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_CC="cl" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +CC="$ac_cv_prog_CC" +if test -n "$CC"; then + echo "$ac_t""$CC" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + ;; + esac + fi + test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; } +fi + +echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 +echo "configure:775: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 + +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cc_cross + +cat > conftest.$ac_ext << EOF + +#line 786 "configure" +#include "confdefs.h" + +main(){return(0);} +EOF +if { (eval echo configure:791: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + ac_cv_prog_cc_works=yes + # If we can't run a trivial program, we are probably using a cross compiler. + if (./conftest; exit) 2>/dev/null; then + ac_cv_prog_cc_cross=no + else + ac_cv_prog_cc_cross=yes + fi +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_cv_prog_cc_works=no +fi +rm -fr conftest* +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cc_cross + +echo "$ac_t""$ac_cv_prog_cc_works" 1>&6 +if test $ac_cv_prog_cc_works = no; then + { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } +fi +echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 +echo "configure:817: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 +cross_compiling=$ac_cv_prog_cc_cross + +echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 +echo "configure:822: checking whether we are using GNU C" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then + ac_cv_prog_gcc=yes +else + ac_cv_prog_gcc=no +fi +fi + +echo "$ac_t""$ac_cv_prog_gcc" 1>&6 + +if test $ac_cv_prog_gcc = yes; then + GCC=yes +else + GCC= +fi + +ac_test_CFLAGS="${CFLAGS+set}" +ac_save_CFLAGS="$CFLAGS" +CFLAGS= +echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 +echo "configure:850: checking whether ${CC-cc} accepts -g" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + echo 'void f(){}' > conftest.c +if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then + ac_cv_prog_cc_g=yes +else + ac_cv_prog_cc_g=no +fi +rm -f conftest* + +fi + +echo "$ac_t""$ac_cv_prog_cc_g" 1>&6 +if test "$ac_test_CFLAGS" = set; then + CFLAGS="$ac_save_CFLAGS" +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi + +if test "x$CC" != xcc; then + echo $ac_n "checking whether $CC and cc understand -c and -o together""... $ac_c" 1>&6 +echo "configure:883: checking whether $CC and cc understand -c and -o together" >&5 +else + echo $ac_n "checking whether cc understands -c and -o together""... $ac_c" 1>&6 +echo "configure:886: checking whether cc understands -c and -o together" >&5 +fi +set dummy $CC; ac_cc="`echo $2 | + sed -e 's/[^a-zA-Z0-9_]/_/g' -e 's/^[0-9]/_/'`" +if eval "test \"`echo '$''{'ac_cv_prog_cc_${ac_cc}_c_o'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + echo 'foo(){}' > conftest.c +# Make sure it works both with $CC and with simple cc. +# We do the test twice because some compilers refuse to overwrite an +# existing .o file with -o, though they will create one. +ac_try='${CC-cc} -c conftest.c -o conftest.o 1>&5' +if { (eval echo configure:898: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } && + test -f conftest.o && { (eval echo configure:899: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; +then + eval ac_cv_prog_cc_${ac_cc}_c_o=yes + if test "x$CC" != xcc; then + # Test first that cc exists at all. + if { ac_try='cc -c conftest.c 1>&5'; { (eval echo configure:904: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then + ac_try='cc -c conftest.c -o conftest.o 1>&5' + if { (eval echo configure:906: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } && + test -f conftest.o && { (eval echo configure:907: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; + then + # cc works too. + : + else + # cc exists but doesn't like -o. + eval ac_cv_prog_cc_${ac_cc}_c_o=no + fi + fi + fi +else + eval ac_cv_prog_cc_${ac_cc}_c_o=no +fi +rm -f conftest* + +fi +if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = yes"; then + echo "$ac_t""yes" 1>&6 +else + echo "$ac_t""no" 1>&6 + cat >> confdefs.h <<\EOF +#define NO_MINUS_C_MINUS_O 1 +EOF + +fi + + + + # Check whether --with-php-config or --without-php-config was given. +if test "${with_php_config+set}" = set; then + withval="$with_php_config" + + PHP_CONFIG=$withval + +else + + PHP_CONFIG=php-config + +fi + + + prefix=`$PHP_CONFIG --prefix 2>/dev/null` + INCLUDES=`$PHP_CONFIG --includes 2>/dev/null` + EXTENSION_DIR=`$PHP_CONFIG --extension-dir` + + if test -z "$prefix"; then + { echo "configure: error: Cannot find php-config. Please use --with-php-config=PATH" 1>&2; exit 1; } + fi + echo $ac_n "checking for PHP prefix""... $ac_c" 1>&6 +echo "configure:956: checking for PHP prefix" >&5 + echo "$ac_t""$prefix" 1>&6 + echo $ac_n "checking for PHP includes""... $ac_c" 1>&6 +echo "configure:959: checking for PHP includes" >&5 + echo "$ac_t""$INCLUDES" 1>&6 + echo $ac_n "checking for PHP extension directory""... $ac_c" 1>&6 +echo "configure:962: checking for PHP extension directory" >&5 + echo "$ac_t""$EXTENSION_DIR" 1>&6 + + + + + + + +echo $ac_n "checking for RRDTool support""... $ac_c" 1>&6 +echo "configure:972: checking for RRDTool support" >&5 +# Check whether --with-rrdtool or --without-rrdtool was given. +if test "${with_rrdtool+set}" = set; then + withval="$with_rrdtool" + PHP_RRDTOOL=$withval +else + PHP_RRDTOOL=no +fi + + +case "$PHP_RRDTOOL" in +shared,*) + ext_output="yes, shared" + ext_shared=yes + PHP_RRDTOOL=`echo $ac_n "$PHP_RRDTOOL$ac_c"|sed s/^shared,//` + ;; +shared) + ext_output="yes, shared" + ext_shared=yes + PHP_RRDTOOL=yes + ;; +no) + ext_output="no" + ext_shared=no + ;; +*) + ext_output="yes" + ext_shared=no + ;; +esac + +if test "$php_always_shared" = "yes"; then + ext_output="yes, shared" + ext_shared=yes + test "$PHP_RRDTOOL" = "no" && PHP_RRDTOOL=yes +fi + +echo "$ac_t""$ext_output" 1>&6 + + + + +if test "$PHP_RRDTOOL" != "no"; then + for i in /usr/local /usr /opt/rrdtool /usr/local/rrdtool $PHP_RRDTOOL; do + if test -f $i/include/rrd.h; then + RRDTOOL_DIR=$i + fi + done + + if test -z "$RRDTOOL_DIR"; then + { echo "configure: error: Please reinstall rrdtool" 1>&2; exit 1; } + fi + + if test "$RRDTOOL_DIR/include" != "/usr/include"; then + + if test -z "$RRDTOOL_DIR/include" || echo "$RRDTOOL_DIR/include" | grep '^/' >/dev/null ; then + ai_p="$RRDTOOL_DIR/include" + else + + ep_dir="`echo $RRDTOOL_DIR/include|sed 's%/*[^/][^/]*$%%'`" + + ep_realdir="`(cd \"$ep_dir\" && pwd)`" + ai_p="$ep_realdir/`basename \"$RRDTOOL_DIR/include\"`" + fi + + + + unique=`echo $ai_p|sed 's/[^a-zA-Z0-9]/_/g'` + + cmd="echo $ac_n \"\$INCLUDEPATH$unique$ac_c\"" + if test -n "$unique" && test "`eval $cmd`" = "" ; then + eval "INCLUDEPATH$unique=set" + + INCLUDES="$INCLUDES -I$ai_p" + + fi + + fi + + + + if test "$ext_shared" = "yes"; then + RRDTOOL_SHARED_LIBADD="-lrrd $RRDTOOL_SHARED_LIBADD" + if test -n "$RRDTOOL_DIR/lib"; then + + if test "$RRDTOOL_DIR/lib" != "/usr/lib"; then + + if test -z "$RRDTOOL_DIR/lib" || echo "$RRDTOOL_DIR/lib" | grep '^/' >/dev/null ; then + ai_p="$RRDTOOL_DIR/lib" + else + + ep_dir="`echo $RRDTOOL_DIR/lib|sed 's%/*[^/][^/]*$%%'`" + + ep_realdir="`(cd \"$ep_dir\" && pwd)`" + ai_p="$ep_realdir/`basename \"$RRDTOOL_DIR/lib\"`" + fi + + if test "$ext_shared" = "yes" && test -n "RRDTOOL_SHARED_LIBADD"; then + RRDTOOL_SHARED_LIBADD="-R$RRDTOOL_DIR/lib -L$RRDTOOL_DIR/lib $RRDTOOL_SHARED_LIBADD" + else + + + unique=`echo $ai_p|sed 's/[^a-zA-Z0-9]/_/g'` + + cmd="echo $ac_n \"\$LIBPATH$unique$ac_c\"" + if test -n "$unique" && test "`eval $cmd`" = "" ; then + eval "LIBPATH$unique=set" + + test -n "$ld_runpath_switch" && LDFLAGS="$LDFLAGS $ld_runpath_switch$ai_p" + LDFLAGS="$LDFLAGS -L$ai_p" + PHP_RPATHS="$PHP_RPATHS $ai_p" + + fi + + fi + fi + + fi + else + + + if test -n "$RRDTOOL_DIR/lib"; then + + if test "$RRDTOOL_DIR/lib" != "/usr/lib"; then + + if test -z "$RRDTOOL_DIR/lib" || echo "$RRDTOOL_DIR/lib" | grep '^/' >/dev/null ; then + ai_p="$RRDTOOL_DIR/lib" + else + + ep_dir="`echo $RRDTOOL_DIR/lib|sed 's%/*[^/][^/]*$%%'`" + + ep_realdir="`(cd \"$ep_dir\" && pwd)`" + ai_p="$ep_realdir/`basename \"$RRDTOOL_DIR/lib\"`" + fi + + if test "$ext_shared" = "yes" && test -n ""; then + ="-R$RRDTOOL_DIR/lib -L$RRDTOOL_DIR/lib $" + else + + + unique=`echo $ai_p|sed 's/[^a-zA-Z0-9]/_/g'` + + cmd="echo $ac_n \"\$LIBPATH$unique$ac_c\"" + if test -n "$unique" && test "`eval $cmd`" = "" ; then + eval "LIBPATH$unique=set" + + test -n "$ld_runpath_switch" && LDFLAGS="$LDFLAGS $ld_runpath_switch$ai_p" + LDFLAGS="$LDFLAGS -L$ai_p" + PHP_RPATHS="$PHP_RPATHS $ai_p" + + fi + + fi + fi + + fi + + case "rrd" in + c|c_r|pthread*) ;; + *) + + + + unique=`echo rrd|sed 's/[^a-zA-Z0-9]/_/g'` + + cmd="echo $ac_n \"\$LIBRARY$unique$ac_c\"" + if test -n "$unique" && test "`eval $cmd`" = "" ; then + eval "LIBRARY$unique=set" + + + LIBS="-lrrd $LIBS" + + + fi + + + ;; + esac + + + + fi + + + + PHP_VAR_SUBST="$PHP_VAR_SUBST RRDTOOL_SHARED_LIBADD" + + + + cat >> confdefs.h <<\EOF +#define HAVE_RRDTOOL 1 +EOF + + + + EXT_SUBDIRS="$EXT_SUBDIRS rrdtool" + + if test -d "$abs_srcdir/ext/rrdtool"; then + ext_builddir="ext/rrdtool" + ext_srcdir="$abs_srcdir/ext/rrdtool" + else + ext_builddir="." + ext_srcdir="$abs_srcdir" + fi + + if test "$ext_shared" != "shared" && test "$ext_shared" != "yes"; then + + lib_makefile="$ext_builddir/libs.mk" + lib_target="" + + $php_shtool mkdir -p $ext_builddir + cat >$lib_makefile<>$lib_makefile<>$lib_makefile<>$lib_makefile<>$lib_makefile<$lib_makefile<>$lib_makefile<>$lib_makefile<>$lib_makefile<>$lib_makefile<> confdefs.h <&2; exit 1; } +fi +ac_config_guess=$ac_aux_dir/config.guess +ac_config_sub=$ac_aux_dir/config.sub +ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. + +# Check whether --enable-shared or --disable-shared was given. +if test "${enable_shared+set}" = set; then + enableval="$enable_shared" + p=${PACKAGE-default} +case "$enableval" in +yes) enable_shared=yes ;; +no) enable_shared=no ;; +*) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac +else + enable_shared=yes +fi + +# Check whether --enable-static or --disable-static was given. +if test "${enable_static+set}" = set; then + enableval="$enable_static" + p=${PACKAGE-default} +case "$enableval" in +yes) enable_static=yes ;; +no) enable_static=no ;; +*) + enable_static=no + # Look at the argument we got. We use all the common list separators. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac +else + enable_static=yes +fi + +# Check whether --enable-fast-install or --disable-fast-install was given. +if test "${enable_fast_install+set}" = set; then + enableval="$enable_fast_install" + p=${PACKAGE-default} +case "$enableval" in +yes) enable_fast_install=yes ;; +no) enable_fast_install=no ;; +*) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac +else + enable_fast_install=yes +fi + + +# Make sure we can run config.sub. +if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then : +else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; } +fi + +echo $ac_n "checking host system type""... $ac_c" 1>&6 +echo "configure:1390: checking host system type" >&5 + +host_alias=$host +case "$host_alias" in +NONE) + case $nonopt in + NONE) + if host_alias=`${CONFIG_SHELL-/bin/sh} $ac_config_guess`; then : + else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; } + fi ;; + *) host_alias=$nonopt ;; + esac ;; +esac + +host=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $host_alias` +host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` +echo "$ac_t""$host" 1>&6 + +echo $ac_n "checking build system type""... $ac_c" 1>&6 +echo "configure:1411: checking build system type" >&5 + +build_alias=$build +case "$build_alias" in +NONE) + case $nonopt in + NONE) build_alias=$host_alias ;; + *) build_alias=$nonopt ;; + esac ;; +esac + +build=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $build_alias` +build_cpu=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +build_vendor=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +build_os=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` +echo "$ac_t""$build" 1>&6 + +# Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1431: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_RANLIB="ranlib" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":" +fi +fi +RANLIB="$ac_cv_prog_RANLIB" +if test -n "$RANLIB"; then + echo "$ac_t""$RANLIB" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +# Check whether --with-gnu-ld or --without-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then + withval="$with_gnu_ld" + test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test "$ac_cv_prog_gcc" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6 +echo "configure:1470: checking for ld used by GCC" >&5 + ac_prog=`($CC -print-prog-name=ld) 2>&5` + case "$ac_prog" in + # Accept absolute paths. + [\\/]* | [A-Za-z]:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the path of ld + ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + echo $ac_n "checking for GNU ld""... $ac_c" 1>&6 +echo "configure:1494: checking for GNU ld" >&5 +else + echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 +echo "configure:1497: checking for non-GNU ld" >&5 +fi +if eval "test \"`echo '$''{'ac_cv_path_LD'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -z "$LD"; then + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + ac_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + if "$ac_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then + test "$with_gnu_ld" != no && break + else + test "$with_gnu_ld" != yes && break + fi + fi + done + IFS="$ac_save_ifs" +else + ac_cv_path_LD="$LD" # Let the user override the test with a path. +fi +fi + +LD="$ac_cv_path_LD" +if test -n "$LD"; then + echo "$ac_t""$LD" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi +test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; } + +echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6 +echo "configure:1533: checking if the linker ($LD) is GNU ld" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_gnu_ld'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + # I'd rather use --version here, but apparently some GNU ld's only accept -v. +if $LD -v 2>&1 &5; then + ac_cv_prog_gnu_ld=yes +else + ac_cv_prog_gnu_ld=no +fi +fi + +echo "$ac_t""$ac_cv_prog_gnu_ld" 1>&6 + + +echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6 +echo "configure:1549: checking for BSD-compatible nm" >&5 +if eval "test \"`echo '$''{'ac_cv_path_NM'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$NM"; then + # Let the user override the test. + ac_cv_path_NM="$NM" +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" + for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/nm || test -f $ac_dir/nm$ac_exeext ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then + ac_cv_path_NM="$ac_dir/nm -B" + break + elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then + ac_cv_path_NM="$ac_dir/nm -p" + break + else + ac_cv_path_NM=${ac_cv_path_NM="$ac_dir/nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + fi + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_NM" && ac_cv_path_NM=nm +fi +fi + +NM="$ac_cv_path_NM" +echo "$ac_t""$NM" 1>&6 + + +echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 +echo "configure:1586: checking whether ln -s works" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + rm -f conftestdata +if ln -s X conftestdata 2>/dev/null +then + rm -f conftestdata + ac_cv_prog_LN_S="ln -s" +else + ac_cv_prog_LN_S=ln +fi +fi +LN_S="$ac_cv_prog_LN_S" +if test "$ac_cv_prog_LN_S" = "ln -s"; then + echo "$ac_t""yes" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + +# Check for any special flags to pass to ltconfig. +libtool_flags="--cache-file=$cache_file" +test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared" +test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static" +test "$enable_fast_install" = no && libtool_flags="$libtool_flags --disable-fast-install" +test "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc" +test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld" + + +# Check whether --enable-libtool-lock or --disable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then + enableval="$enable_libtool_lock" + : +fi + +test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock" +test x"$silent" = xyes && libtool_flags="$libtool_flags --silent" + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case "$host" in +*-*-irix6*) + # Find out which ABI we are using. + echo '#line 1630 "configure"' > conftest.$ac_ext + if { (eval echo configure:1631: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + case "`/usr/bin/file conftest.o`" in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6 +echo "configure:1652: checking whether the C compiler needs -belf" >&5 +if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + lt_cv_cc_needs_belf=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + lt_cv_cc_needs_belf=no +fi +rm -f conftest* +fi + +echo "$ac_t""$lt_cv_cc_needs_belf" 1>&6 + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; + + +esac + + +# Save cache, so that ltconfig can load it +cat > confcache <<\EOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs. It is not useful on other systems. +# If it contains results you don't want to keep, you may remove or edit it. +# +# By default, configure uses ./config.cache as the cache file, +# creating it if it does not exist already. You can give configure +# the --cache-file=FILE option to use a different cache file; that is +# what configure does when it calls configure scripts in +# subdirectories, so they share the cache. +# Giving --cache-file=/dev/null disables caching, for debugging configure. +# config.status only pays attention to the cache file if you give it the +# --recheck option to rerun configure. +# +EOF +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, don't put newlines in cache variables' values. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +(set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote substitution + # turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + -e "s/'/'\\\\''/g" \ + -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' + ;; + esac >> confcache +if cmp -s $cache_file confcache; then + : +else + if test -w $cache_file; then + echo "updating cache $cache_file" + cat confcache > $cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + + +# Actually configure libtool. ac_aux_dir is where install-sh is found. +CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \ +LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \ +LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" \ +DLLTOOL="$DLLTOOL" AS="$AS" OBJDUMP="$OBJDUMP" \ +${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig --no-reexec \ +$libtool_flags --no-verify $ac_aux_dir/ltmain.sh $host \ +|| { echo "configure: error: libtool configure failed" 1>&2; exit 1; } + +# Reload cache, that may have been modified by ltconfig +if test -r "$cache_file"; then + echo "loading cache $cache_file" + . $cache_file +else + echo "creating cache $cache_file" + > $cache_file +fi + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ac_aux_dir/ltconfig $ac_aux_dir/ltmain.sh" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + +# Redirect the config.log output again, so that the ltconfig log is not +# clobbered by the next message. +exec 5>>./config.log + + +SHARED_LIBTOOL='$(LIBTOOL)' +PHP_COMPILE='$(LIBTOOL) --mode=compile $(COMPILE) -c $<' +phplibdir="`pwd`/modules" + +test "$prefix" = "NONE" && prefix="/usr/local" +test "$exec_prefix" = "NONE" && exec_prefix='$(prefix)' + + + PHP_VAR_SUBST="$PHP_VAR_SUBST prefix" + + + + PHP_VAR_SUBST="$PHP_VAR_SUBST exec_prefix" + + + + PHP_VAR_SUBST="$PHP_VAR_SUBST libdir" + + + + PHP_VAR_SUBST="$PHP_VAR_SUBST prefix" + + + + PHP_VAR_SUBST="$PHP_VAR_SUBST phplibdir" + + + + + PHP_VAR_SUBST="$PHP_VAR_SUBST PHP_COMPILE" + + + + PHP_VAR_SUBST="$PHP_VAR_SUBST CC" + + + + PHP_VAR_SUBST="$PHP_VAR_SUBST CFLAGS" + + + + PHP_VAR_SUBST="$PHP_VAR_SUBST CPP" + + + + PHP_VAR_SUBST="$PHP_VAR_SUBST CPPFLAGS" + + + + PHP_VAR_SUBST="$PHP_VAR_SUBST CXX" + + + + PHP_VAR_SUBST="$PHP_VAR_SUBST DEFS" + + + + PHP_VAR_SUBST="$PHP_VAR_SUBST EXTENSION_DIR" + + + + PHP_VAR_SUBST="$PHP_VAR_SUBST EXTRA_LDFLAGS" + + + + PHP_VAR_SUBST="$PHP_VAR_SUBST EXTRA_LIBS" + + + + PHP_VAR_SUBST="$PHP_VAR_SUBST INCLUDES" + + + + PHP_VAR_SUBST="$PHP_VAR_SUBST LEX" + + + + PHP_VAR_SUBST="$PHP_VAR_SUBST LEX_OUTPUT_ROOT" + + + + PHP_VAR_SUBST="$PHP_VAR_SUBST LFLAGS" + + + + PHP_VAR_SUBST="$PHP_VAR_SUBST SHARED_LIBTOOL" + + + + PHP_VAR_SUBST="$PHP_VAR_SUBST LIBTOOL" + + + + PHP_VAR_SUBST="$PHP_VAR_SUBST SHELL" + + + + + PHP_FAST_OUTPUT_FILES="$PHP_FAST_OUTPUT_FILES Makefile" + + + + + echo $ac_n "checking for working mkdir -p""... $ac_c" 1>&6 +echo "configure:1870: checking for working mkdir -p" >&5 +if eval "test \"`echo '$''{'ac_cv_mkdir_p'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + test -d conftestdir && rm -rf conftestdir + mkdir -p conftestdir/somedir >/dev/null 2>&1 + if test -d conftestdir/somedir; then + ac_cv_mkdir_p=yes + else + ac_cv_mkdir_p=no + fi + rm -rf conftestdir + +fi + +echo "$ac_t""$ac_cv_mkdir_p" 1>&6 + + echo creating config_vars.mk + > config_vars.mk + for i in $PHP_VAR_SUBST; do + eval echo "$i = \$$i" >> config_vars.mk + done + + + $SHELL $srcdir/build/fastgen.sh $srcdir $ac_cv_mkdir_p $PHP_FAST_OUTPUT_FILES + + +test -d modules || mkdir modules +touch .deps + + + +trap '' 1 2 15 +cat > confcache <<\EOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs. It is not useful on other systems. +# If it contains results you don't want to keep, you may remove or edit it. +# +# By default, configure uses ./config.cache as the cache file, +# creating it if it does not exist already. You can give configure +# the --cache-file=FILE option to use a different cache file; that is +# what configure does when it calls configure scripts in +# subdirectories, so they share the cache. +# Giving --cache-file=/dev/null disables caching, for debugging configure. +# config.status only pays attention to the cache file if you give it the +# --recheck option to rerun configure. +# +EOF +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, don't put newlines in cache variables' values. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +(set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote substitution + # turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + -e "s/'/'\\\\''/g" \ + -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' + ;; + esac >> confcache +if cmp -s $cache_file confcache; then + : +else + if test -w $cache_file; then + echo "updating cache $cache_file" + cat confcache > $cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# Any assignment to VPATH causes Sun make to only execute +# the first set of double-colon rules, so remove it if not needed. +# If there is a colon in the path, we need to keep it. +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' +fi + +trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 + +DEFS=-DHAVE_CONFIG_H + +# Without the "./", some shells look in PATH for config.status. +: ${CONFIG_STATUS=./config.status} + +echo creating $CONFIG_STATUS +rm -f $CONFIG_STATUS +cat > $CONFIG_STATUS </dev/null | sed 1q`: +# +# $0 $ac_configure_args +# +# Compiler output produced by configure, useful for debugging +# configure, is in ./config.log if it exists. + +ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" +for ac_option +do + case "\$ac_option" in + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" + exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; + -version | --version | --versio | --versi | --vers | --ver | --ve | --v) + echo "$CONFIG_STATUS generated by autoconf version 2.13" + exit 0 ;; + -help | --help | --hel | --he | --h) + echo "\$ac_cs_usage"; exit 0 ;; + *) echo "\$ac_cs_usage"; exit 1 ;; + esac +done + +ac_given_srcdir=$srcdir + +trap 'rm -fr `echo " php_config.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 +EOF +cat >> $CONFIG_STATUS < conftest.subs <<\\CEOF +$ac_vpsub +$extrasub +s%@EXT_SUBDIRS@%$EXT_SUBDIRS%g +s%@EXT_STATIC@%$EXT_STATIC%g +s%@EXT_SHARED@%$EXT_SHARED%g +s%@EXT_LIBS@%$EXT_LIBS%g +s%@EXT_LTLIBS@%$EXT_LTLIBS%g +s%@SHELL@%$SHELL%g +s%@CFLAGS@%$CFLAGS%g +s%@CPPFLAGS@%$CPPFLAGS%g +s%@CXXFLAGS@%$CXXFLAGS%g +s%@FFLAGS@%$FFLAGS%g +s%@DEFS@%$DEFS%g +s%@LDFLAGS@%$LDFLAGS%g +s%@LIBS@%$LIBS%g +s%@exec_prefix@%$exec_prefix%g +s%@prefix@%$prefix%g +s%@program_transform_name@%$program_transform_name%g +s%@bindir@%$bindir%g +s%@sbindir@%$sbindir%g +s%@libexecdir@%$libexecdir%g +s%@datadir@%$datadir%g +s%@sysconfdir@%$sysconfdir%g +s%@sharedstatedir@%$sharedstatedir%g +s%@localstatedir@%$localstatedir%g +s%@libdir@%$libdir%g +s%@includedir@%$includedir%g +s%@oldincludedir@%$oldincludedir%g +s%@infodir@%$infodir%g +s%@mandir@%$mandir%g +s%@CC@%$CC%g +s%@RRDTOOL_SHARED_LIBADD@%$RRDTOOL_SHARED_LIBADD%g +s%@host@%$host%g +s%@host_alias@%$host_alias%g +s%@host_cpu@%$host_cpu%g +s%@host_vendor@%$host_vendor%g +s%@host_os@%$host_os%g +s%@build@%$build%g +s%@build_alias@%$build_alias%g +s%@build_cpu@%$build_cpu%g +s%@build_vendor@%$build_vendor%g +s%@build_os@%$build_os%g +s%@RANLIB@%$RANLIB%g +s%@LD@%$LD%g +s%@NM@%$NM%g +s%@LN_S@%$LN_S%g +s%@LIBTOOL@%$LIBTOOL%g +s%@phplibdir@%$phplibdir%g +s%@PHP_COMPILE@%$PHP_COMPILE%g +s%@CPP@%$CPP%g +s%@CXX@%$CXX%g +s%@EXTENSION_DIR@%$EXTENSION_DIR%g +s%@EXTRA_LDFLAGS@%$EXTRA_LDFLAGS%g +s%@EXTRA_LIBS@%$EXTRA_LIBS%g +s%@INCLUDES@%$INCLUDES%g +s%@LEX@%$LEX%g +s%@LEX_OUTPUT_ROOT@%$LEX_OUTPUT_ROOT%g +s%@LFLAGS@%$LFLAGS%g +s%@SHARED_LIBTOOL@%$SHARED_LIBTOOL%g + +CEOF +EOF + +cat >> $CONFIG_STATUS <<\EOF + +# Split the substitutions into bite-sized pieces for seds with +# small command number limits, like on Digital OSF/1 and HP-UX. +ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. +ac_file=1 # Number of current file. +ac_beg=1 # First line for current file. +ac_end=$ac_max_sed_cmds # Line after last line for current file. +ac_more_lines=: +ac_sed_cmds="" +while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file + else + sed "${ac_end}q" conftest.subs > conftest.s$ac_file + fi + if test ! -s conftest.s$ac_file; then + ac_more_lines=false + rm -f conftest.s$ac_file + else + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f conftest.s$ac_file" + else + ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" + fi + ac_file=`expr $ac_file + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_cmds` + fi +done +if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat +fi +EOF + +cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF +for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case "$ac_file" in + *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` + ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + *) ac_file_in="${ac_file}.in" ;; + esac + + # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. + + # Remove last slash and all that follows it. Not all systems have dirname. + ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` + if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then + # The file is in a subdirectory. + test ! -d "$ac_dir" && mkdir "$ac_dir" + ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" + # A "../" for each directory in $ac_dir_suffix. + ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` + else + ac_dir_suffix= ac_dots= + fi + + case "$ac_given_srcdir" in + .) srcdir=. + if test -z "$ac_dots"; then top_srcdir=. + else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; + /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; + *) # Relative path. + srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" + top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + + + echo creating "$ac_file" + rm -f "$ac_file" + configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." + case "$ac_file" in + *Makefile*) ac_comsub="1i\\ +# $configure_input" ;; + *) ac_comsub= ;; + esac + + ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` + sed -e "$ac_comsub +s%@configure_input@%$configure_input%g +s%@srcdir@%$srcdir%g +s%@top_srcdir@%$top_srcdir%g +" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file +fi; done +rm -f conftest.s* + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s%^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='\([ ][ ]*\)[^ ]*%\1#\2' +ac_dC='\3' +ac_dD='%g' +# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE". +ac_uA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='\([ ]\)%\1#\2define\3' +ac_uC=' ' +ac_uD='\4%g' +# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_eA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_eB='$%\1#\2define\3' +ac_eC=' ' +ac_eD='%g' + +if test "${CONFIG_HEADERS+set}" != set; then +EOF +cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF +fi +for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case "$ac_file" in + *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` + ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + *) ac_file_in="${ac_file}.in" ;; + esac + + echo creating $ac_file + + rm -f conftest.frag conftest.in conftest.out + ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` + cat $ac_file_inputs > conftest.in + +EOF + +# Transform confdefs.h into a sed script conftest.vals that substitutes +# the proper values into config.h.in to produce config.h. And first: +# Protect against being on the right side of a sed subst in config.status. +# Protect against being in an unquoted here document in config.status. +rm -f conftest.vals +cat > conftest.hdr <<\EOF +s/[\\&%]/\\&/g +s%[\\$`]%\\&%g +s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp +s%ac_d%ac_u%gp +s%ac_u%ac_e%gp +EOF +sed -n -f conftest.hdr confdefs.h > conftest.vals +rm -f conftest.hdr + +# This sed command replaces #undef with comments. This is necessary, for +# example, in the case of _POSIX_SOURCE, which is predefined and required +# on some systems where configure will not decide to define it. +cat >> conftest.vals <<\EOF +s%^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */% +EOF + +# Break up conftest.vals because some shells have a limit on +# the size of here documents, and old seds have small limits too. + +rm -f conftest.tail +while : +do + ac_lines=`grep -c . conftest.vals` + # grep -c gives empty output for an empty file on some AIX systems. + if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi + # Write a limited-size here document to conftest.frag. + echo ' cat > conftest.frag <> $CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS + echo 'CEOF + sed -f conftest.frag conftest.in > conftest.out + rm -f conftest.in + mv conftest.out conftest.in +' >> $CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail + rm -f conftest.vals + mv conftest.tail conftest.vals +done +rm -f conftest.vals + +cat >> $CONFIG_STATUS <<\EOF + rm -f conftest.frag conftest.h + echo "/* $ac_file. Generated automatically by configure. */" > conftest.h + cat conftest.in >> conftest.h + rm -f conftest.in + if cmp -s $ac_file conftest.h 2>/dev/null; then + echo "$ac_file is unchanged" + rm -f conftest.h + else + # Remove last slash and all that follows it. Not all systems have dirname. + ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` + if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then + # The file is in a subdirectory. + test ! -d "$ac_dir" && mkdir "$ac_dir" + fi + rm -f $ac_file + mv conftest.h $ac_file + fi +fi; done + +EOF +cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF + +exit 0 +EOF +chmod +x $CONFIG_STATUS +rm -fr confdefs* $ac_clean_files +test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 + diff --git a/contrib/php4/configure.in b/contrib/php4/configure.in new file mode 100644 index 00000000..bf0553ad --- /dev/null +++ b/contrib/php4/configure.in @@ -0,0 +1,86 @@ + +AC_INIT(Makefile.in) + +AC_DEFUN(PHP_WITH_PHP_CONFIG,[ + AC_ARG_WITH(php-config, +[ --with-php-config=[PATH]],[ + PHP_CONFIG=$withval +],[ + PHP_CONFIG=php-config +]) + + prefix=`$PHP_CONFIG --prefix 2>/dev/null` + INCLUDES=`$PHP_CONFIG --includes 2>/dev/null` + EXTENSION_DIR=`$PHP_CONFIG --extension-dir` + + if test -z "$prefix"; then + AC_MSG_ERROR(Cannot find php-config. Please use --with-php-config=[PATH]) + fi + AC_MSG_CHECKING(for PHP prefix) + AC_MSG_RESULT($prefix) + AC_MSG_CHECKING(for PHP includes) + AC_MSG_RESULT($INCLUDES) + AC_MSG_CHECKING(for PHP extension directory) + AC_MSG_RESULT($EXTENSION_DIR) +]) + +abs_srcdir=`(cd $srcdir && pwd)` + +php_always_shared=yes + +AC_PROG_CC +AC_PROG_CC_C_O + +PHP_WITH_PHP_CONFIG + +AC_PREFIX_DEFAULT() + +sinclude(config.m4) + +enable_static=no +enable_shared=yes + +AC_PROG_LIBTOOL + +SHARED_LIBTOOL='$(LIBTOOL)' +PHP_COMPILE='$(LIBTOOL) --mode=compile $(COMPILE) -c $<' +phplibdir="`pwd`/modules" + +test "$prefix" = "NONE" && prefix="/usr/local" +test "$exec_prefix" = "NONE" && exec_prefix='$(prefix)' + +PHP_SUBST(prefix) +PHP_SUBST(exec_prefix) +PHP_SUBST(libdir) +PHP_SUBST(prefix) +PHP_SUBST(phplibdir) + +PHP_SUBST(PHP_COMPILE) +PHP_SUBST(CC) +PHP_SUBST(CFLAGS) +PHP_SUBST(CPP) +PHP_SUBST(CPPFLAGS) +PHP_SUBST(CXX) +PHP_SUBST(DEFS) +PHP_SUBST(EXTENSION_DIR) +PHP_SUBST(EXTRA_LDFLAGS) +PHP_SUBST(EXTRA_LIBS) +PHP_SUBST(INCLUDES) +PHP_SUBST(LEX) +PHP_SUBST(LEX_OUTPUT_ROOT) +PHP_SUBST(LFLAGS) +PHP_SUBST(SHARED_LIBTOOL) +PHP_SUBST(LIBTOOL) +PHP_SUBST(SHELL) + +PHP_FAST_OUTPUT(Makefile) + +PHP_GEN_CONFIG_VARS +PHP_GEN_MAKEFILES + +test -d modules || mkdir modules +touch .deps + +AC_CONFIG_HEADER(php_config.h) + +AC_OUTPUT() diff --git a/contrib/php4/dynlib.m4 b/contrib/php4/dynlib.m4 new file mode 100644 index 00000000..77c607c2 --- /dev/null +++ b/contrib/php4/dynlib.m4 @@ -0,0 +1,64 @@ + + + +AC_DEFUN(LIB_SHARED_CONVENIENCE,[ + lib_target="\$(LTLIBRARY_NAME)" + cat >>$1<>$1<>$1<$lib_makefile<>$lib_makefile< diff --git a/contrib/php4/examples/rrd_fetch.php b/contrib/php4/examples/rrd_fetch.php new file mode 100644 index 00000000..470fb9f8 --- /dev/null +++ b/contrib/php4/examples/rrd_fetch.php @@ -0,0 +1,55 @@ + diff --git a/contrib/php4/examples/rrd_graph.php b/contrib/php4/examples/rrd_graph.php new file mode 100644 index 00000000..a0041b6d --- /dev/null +++ b/contrib/php4/examples/rrd_graph.php @@ -0,0 +1,47 @@ + diff --git a/contrib/php4/examples/rrd_last.php b/contrib/php4/examples/rrd_last.php new file mode 100644 index 00000000..1dbfad0b --- /dev/null +++ b/contrib/php4/examples/rrd_last.php @@ -0,0 +1,26 @@ + diff --git a/contrib/php4/examples/rrd_update.php b/contrib/php4/examples/rrd_update.php new file mode 100644 index 00000000..5b4832cd --- /dev/null +++ b/contrib/php4/examples/rrd_update.php @@ -0,0 +1,23 @@ + diff --git a/contrib/php4/install-sh b/contrib/php4/install-sh new file mode 100644 index 00000000..e69de29b diff --git a/contrib/php4/ltconfig b/contrib/php4/ltconfig new file mode 100755 index 00000000..99b6fc8c --- /dev/null +++ b/contrib/php4/ltconfig @@ -0,0 +1,3031 @@ +#! /bin/sh + +# ltconfig - Create a system-specific libtool. +# Copyright (C) 1996-1999 Free Software Foundation, Inc. +# Originally by Gordon Matzigkeit , 1996 +# +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# A lot of this script is taken from autoconf-2.10. + +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} +echo=echo +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then + # Yippee, $echo works! + : +else + # Restart under the correct shell. + exec "$SHELL" "$0" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat </dev/null`} + case X$UNAME in + *-DOS) PATH_SEPARATOR=';' ;; + *) PATH_SEPARATOR=':' ;; + esac +fi + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +if test "${CDPATH+set}" = set; then CDPATH=; export CDPATH; fi + +if test "X${echo_test_string+set}" != "Xset"; then + # find a string as large as possible, as long as the shell can cope with it + for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... + if (echo_test_string="`eval $cmd`") 2>/dev/null && + echo_test_string="`eval $cmd`" && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null; then + break + fi + done +fi + +if test "X`($echo '\t') 2>/dev/null`" != 'X\t' || + test "X`($echo "$echo_test_string") 2>/dev/null`" != X"$echo_test_string"; then + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" + for dir in $PATH /usr/ucb; do + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + test "X`($dir/echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then + echo="$dir/echo" + break + fi + done + IFS="$save_ifs" + + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && + test "X`(print -r "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + echo='print -r' + elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running ltconfig again with it. + ORIGINAL_CONFIG_SHELL="${CONFIG_SHELL-/bin/sh}" + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" --no-reexec ${1+"$@"} + else + # Try using printf. + echo='printf "%s\n"' + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + test "X`($echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then + # Cool, printf works + : + elif test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' && + test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then + CONFIG_SHELL="$ORIGINAL_CONFIG_SHELL" + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + echo="$CONFIG_SHELL $0 --fallback-echo" + elif test "X`("$CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' && + test "X`("$CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then + echo="$CONFIG_SHELL $0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do + if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null; then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "$0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec "${ORIGINAL_CONFIG_SHELL}" "$0" ${1+"$@"} + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + fi + fi +fi + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e s/^X//' +sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# The name of this program. +progname=`$echo "X$0" | $Xsed -e 's%^.*/%%'` + +# Constants: +PROGRAM=ltconfig +PACKAGE=libtool +VERSION=1.3.3-freebsd-ports +TIMESTAMP=" (1.385.2.181 1999/07/02 15:49:11)" +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.c 1>&5' +ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.c $LIBS 1>&5' +rm="rm -f" + +help="Try \`$progname --help' for more information." + +# Global variables: +default_ofile=libtool +can_build_shared=yes +enable_shared=yes +# All known linkers require a `.a' archive for static linking (except M$VC, +# which needs '.lib'). +enable_static=yes +enable_fast_install=yes +install_ltlibs=yes +release_suffix=yes +enable_dlopen=unknown +enable_win32_dll=no +ltmain= +silent= +srcdir= +ac_config_guess= +ac_config_sub= +host= +nonopt= +ofile="$default_ofile" +verify_host=yes +with_gcc=no +with_gnu_ld=no +need_locks=yes +ac_ext=c +objext=o +libext=a +exeext= +cache_file= + +old_AR="$AR" +old_CC="$CC" +old_CFLAGS="$CFLAGS" +old_CPPFLAGS="$CPPFLAGS" +old_LDFLAGS="$LDFLAGS" +old_LD="$LD" +old_LN_S="$LN_S" +old_LIBS="$LIBS" +old_NM="$NM" +old_RANLIB="$RANLIB" +old_DLLTOOL="$DLLTOOL" +old_OBJDUMP="$OBJDUMP" +old_AS="$AS" + +# Parse the command line options. +args= +prev= +for option +do + case "$option" in + -*=*) optarg=`echo "$option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + eval "$prev=\$option" + prev= + continue + fi + + case "$option" in + --help) cat <&2 + echo "$help" 1>&2 + exit 1 + ;; + + *) + if test -z "$ltmain"; then + ltmain="$option" + elif test -z "$host"; then +# This generates an unnecessary warning for sparc-sun-solaris4.1.3_U1 +# if test -n "`echo $option| sed 's/[-a-z0-9.]//g'`"; then +# echo "$progname: warning \`$option' is not a valid host type" 1>&2 +# fi + host="$option" + else + echo "$progname: too many arguments" 1>&2 + echo "$help" 1>&2 + exit 1 + fi ;; + esac +done + +if test -z "$ltmain"; then + echo "$progname: you must specify a LTMAIN file" 1>&2 + echo "$help" 1>&2 + exit 1 +fi + +if test ! -f "$ltmain"; then + echo "$progname: \`$ltmain' does not exist" 1>&2 + echo "$help" 1>&2 + exit 1 +fi + +# Quote any args containing shell metacharacters. +ltconfig_args= +for arg +do + case "$arg" in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) + ltconfig_args="$ltconfig_args '$arg'" ;; + *) ltconfig_args="$ltconfig_args $arg" ;; + esac +done + +# A relevant subset of AC_INIT. + +# File descriptor usage: +# 0 standard input +# 1 file creation +# 2 errors and warnings +# 3 some systems may open it to /dev/tty +# 4 used on the Kubota Titan +# 5 compiler messages saved in config.log +# 6 checking for... messages and results +if test "$silent" = yes; then + exec 6>/dev/null +else + exec 6>&1 +fi +exec 5>>./config.log + +# NLS nuisances. +# Only set LANG and LC_ALL to C if already set. +# These must not be set unconditionally because not all systems understand +# e.g. LANG=C (notably SCO). +if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi +if test "${LANG+set}" = set; then LANG=C; export LANG; fi + +if test -n "$cache_file" && test -r "$cache_file"; then + echo "loading cache $cache_file within ltconfig" + . $cache_file +fi + +if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then + # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. + if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then + ac_n= ac_c=' +' ac_t=' ' + else + ac_n=-n ac_c= ac_t= + fi +else + ac_n= ac_c='\c' ac_t= +fi + +if test -z "$srcdir"; then + # Assume the source directory is the same one as the path to LTMAIN. + srcdir=`$echo "X$ltmain" | $Xsed -e 's%/[^/]*$%%'` + test "$srcdir" = "$ltmain" && srcdir=. +fi + +trap "$rm conftest*; exit 1" 1 2 15 +if test "$verify_host" = yes; then + # Check for config.guess and config.sub. + ac_aux_dir= + for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f $ac_dir/config.guess; then + ac_aux_dir=$ac_dir + break + fi + done + if test -z "$ac_aux_dir"; then + echo "$progname: cannot find config.guess in $srcdir $srcdir/.. $srcdir/../.." 1>&2 + echo "$help" 1>&2 + exit 1 + fi + ac_config_guess=$ac_aux_dir/config.guess + ac_config_sub=$ac_aux_dir/config.sub + + # Make sure we can run config.sub. + if $SHELL $ac_config_sub sun4 >/dev/null 2>&1; then : + else + echo "$progname: cannot run $ac_config_sub" 1>&2 + echo "$help" 1>&2 + exit 1 + fi + + echo $ac_n "checking host system type""... $ac_c" 1>&6 + + host_alias=$host + case "$host_alias" in + "") + if host_alias=`$SHELL $ac_config_guess`; then : + else + echo "$progname: cannot guess host type; you must specify one" 1>&2 + echo "$help" 1>&2 + exit 1 + fi ;; + esac + host=`$SHELL $ac_config_sub $host_alias` + echo "$ac_t$host" 1>&6 + + # Make sure the host verified. + test -z "$host" && exit 1 + +elif test -z "$host"; then + echo "$progname: you must specify a host type if you use \`--no-verify'" 1>&2 + echo "$help" 1>&2 + exit 1 +else + host_alias=$host +fi + +# Transform linux* to *-*-linux-gnu*, to support old configure scripts. +case "$host_os" in +linux-gnu*) ;; +linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` +esac + +host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + +case "$host_os" in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "${COLLECT_NAMES+set}" != set; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR cru $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +# Set a sane default for `AR'. +test -z "$AR" && AR=ar + +# Set a sane default for `OBJDUMP'. +test -z "$OBJDUMP" && OBJDUMP=objdump + +# If RANLIB is not set, then run the test. +if test "${RANLIB+set}" != "set"; then + result=no + + echo $ac_n "checking for ranlib... $ac_c" 1>&6 + IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" + for dir in $PATH; do + test -z "$dir" && dir=. + if test -f $dir/ranlib || test -f $dir/ranlib$ac_exeext; then + RANLIB="ranlib" + result="ranlib" + break + fi + done + IFS="$save_ifs" + + echo "$ac_t$result" 1>&6 +fi + +if test -n "$RANLIB"; then + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" + old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" +fi + +# Set sane defaults for `DLLTOOL', `OBJDUMP', and `AS', used on cygwin. +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$OBJDUMP" && OBJDUMP=objdump +test -z "$AS" && AS=as + +# Check to see if we are using GCC. +if test "$with_gcc" != yes || test -z "$CC"; then + # If CC is not set, then try to find GCC or a usable CC. + if test -z "$CC"; then + echo $ac_n "checking for gcc... $ac_c" 1>&6 + IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" + for dir in $PATH; do + test -z "$dir" && dir=. + if test -f $dir/gcc || test -f $dir/gcc$ac_exeext; then + CC="gcc" + break + fi + done + IFS="$save_ifs" + + if test -n "$CC"; then + echo "$ac_t$CC" 1>&6 + else + echo "$ac_t"no 1>&6 + fi + fi + + # Not "gcc", so try "cc", rejecting "/usr/ucb/cc". + if test -z "$CC"; then + echo $ac_n "checking for cc... $ac_c" 1>&6 + IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" + cc_rejected=no + for dir in $PATH; do + test -z "$dir" && dir=. + if test -f $dir/cc || test -f $dir/cc$ac_exeext; then + if test "$dir/cc" = "/usr/ucb/cc"; then + cc_rejected=yes + continue + fi + CC="cc" + break + fi + done + IFS="$save_ifs" + if test $cc_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $CC + shift + if test $# -gt 0; then + # We chose a different compiler from the bogus one. + # However, it has the same name, so the bogon will be chosen + # first if we set CC to just the name; use the full file name. + shift + set dummy "$dir/cc" "$@" + shift + CC="$@" + fi + fi + + if test -n "$CC"; then + echo "$ac_t$CC" 1>&6 + else + echo "$ac_t"no 1>&6 + fi + + if test -z "$CC"; then + echo "$progname: error: no acceptable cc found in \$PATH" 1>&2 + exit 1 + fi + fi + + # Now see if the compiler is really GCC. + with_gcc=no + echo $ac_n "checking whether we are using GNU C... $ac_c" 1>&6 + echo "$progname:581: checking whether we are using GNU C" >&5 + + $rm conftest.c + cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then + with_gcc=yes + fi + $rm conftest.c + echo "$ac_t$with_gcc" 1>&6 +fi + +# Allow CC to be a program name with arguments. +set dummy $CC +compiler="$2" + +echo $ac_n "checking for object suffix... $ac_c" 1>&6 +$rm conftest* +echo 'int i = 1;' > conftest.c +echo "$progname:603: checking for object suffix" >& 5 +if { (eval echo $progname:604: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; }; then + # Append any warnings to the config.log. + cat conftest.err 1>&5 + + for ac_file in conftest.*; do + case $ac_file in + *.c) ;; + *) objext=`echo $ac_file | sed -e s/conftest.//` ;; + esac + done +else + cat conftest.err 1>&5 + echo "$progname: failed program was:" >&5 + cat conftest.c >&5 +fi +$rm conftest* +echo "$ac_t$objext" 1>&6 + +echo $ac_n "checking for executable suffix... $ac_c" 1>&6 +if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_cv_exeext="no" + $rm conftest* + echo 'main () { return 0; }' > conftest.c + echo "$progname:629: checking for executable suffix" >& 5 + if { (eval echo $progname:630: \"$ac_link\") 1>&5; (eval $ac_link) 2>conftest.err; }; then + # Append any warnings to the config.log. + cat conftest.err 1>&5 + + for ac_file in conftest.*; do + case $ac_file in + *.c | *.err | *.$objext ) ;; + *) ac_cv_exeext=.`echo $ac_file | sed -e s/conftest.//` ;; + esac + done + else + cat conftest.err 1>&5 + echo "$progname: failed program was:" >&5 + cat conftest.c >&5 + fi + $rm conftest* +fi +if test "X$ac_cv_exeext" = Xno; then + exeext="" +else + exeext="$ac_cv_exeext" +fi +echo "$ac_t$ac_cv_exeext" 1>&6 + +echo $ac_n "checking for $compiler option to produce PIC... $ac_c" 1>&6 +pic_flag= +special_shlib_compile_flags= +wl= +link_static_flag= +no_builtin_flag= + +if test "$with_gcc" = yes; then + wl='-Wl,' + link_static_flag='-static' + + case "$host_os" in + beos* | irix5* | irix6* | osf3* | osf4*) + # PIC is the default for these OSes. + ;; + aix*) + # Below there is a dirty hack to force normal static linking with -ldl + # The problem is because libdl dynamically linked with both libc and + # libC (AIX C++ library), which obviously doesn't included in libraries + # list by gcc. This cause undefined symbols with -static flags. + # This hack allows C programs to be linked with "-static -ldl", but + # we not sure about C++ programs. + link_static_flag="$link_static_flag ${wl}-lC" + ;; + cygwin* | mingw* | os2*) + # We can build DLLs from non-PIC. + ;; + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + pic_flag='-m68020 -resident32 -malways-restore-a4' + ;; + sysv4*MP*) + if test -d /usr/nec; then + pic_flag=-Kconform_pic + fi + ;; + *) + pic_flag='-fPIC' + ;; + esac +else + # PORTME Check for PIC flags for the system compiler. + case "$host_os" in + aix3* | aix4*) + # All AIX code is PIC. + link_static_flag='-bnso -bI:/lib/syscalls.exp' + ;; + + hpux9* | hpux10* | hpux11*) + # Is there a better link_static_flag that works with the bundled CC? + wl='-Wl,' + link_static_flag="${wl}-a ${wl}archive" + pic_flag='+Z' + ;; + + irix5* | irix6*) + wl='-Wl,' + link_static_flag='-non_shared' + # PIC (with -KPIC) is the default. + ;; + + cygwin* | mingw* | os2*) + # We can build DLLs from non-PIC. + ;; + + osf3* | osf4*) + # All OSF/1 code is PIC. + wl='-Wl,' + link_static_flag='-non_shared' + ;; + + sco3.2v5*) + pic_flag='-Kpic' + link_static_flag='-dn' + special_shlib_compile_flags='-belf' + ;; + + solaris*) + pic_flag='-KPIC' + link_static_flag='-Bstatic' + wl='-Wl,' + ;; + + sunos4*) + pic_flag='-PIC' + link_static_flag='-Bstatic' + wl='-Qoption ld ' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + pic_flag='-KPIC' + link_static_flag='-Bstatic' + wl='-Wl,' + ;; + + uts4*) + pic_flag='-pic' + link_static_flag='-Bstatic' + ;; + sysv4*MP*) + if test -d /usr/nec ;then + pic_flag='-Kconform_pic' + link_static_flag='-Bstatic' + fi + ;; + *) + can_build_shared=no + ;; + esac +fi + +if test -n "$pic_flag"; then + echo "$ac_t$pic_flag" 1>&6 + + # Check to make sure the pic_flag actually works. + echo $ac_n "checking if $compiler PIC flag $pic_flag works... $ac_c" 1>&6 + $rm conftest* + echo "int some_variable = 0;" > conftest.c + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $pic_flag -DPIC" + echo "$progname:776: checking if $compiler PIC flag $pic_flag works" >&5 + if { (eval echo $progname:777: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.$objext; then + # Append any warnings to the config.log. + cat conftest.err 1>&5 + + case "$host_os" in + hpux9* | hpux10* | hpux11*) + # On HP-UX, both CC and GCC only warn that PIC is supported... then they + # create non-PIC objects. So, if there were any warnings, we assume that + # PIC is not supported. + if test -s conftest.err; then + echo "$ac_t"no 1>&6 + can_build_shared=no + pic_flag= + else + echo "$ac_t"yes 1>&6 + pic_flag=" $pic_flag" + fi + ;; + *) + echo "$ac_t"yes 1>&6 + pic_flag=" $pic_flag" + ;; + esac + else + # Append any errors to the config.log. + cat conftest.err 1>&5 + can_build_shared=no + pic_flag= + echo "$ac_t"no 1>&6 + fi + CFLAGS="$save_CFLAGS" + $rm conftest* +else + echo "$ac_t"none 1>&6 +fi + +# Check to see if options -o and -c are simultaneously supported by compiler +echo $ac_n "checking if $compiler supports -c -o file.o... $ac_c" 1>&6 +$rm -r conftest 2>/dev/null +mkdir conftest +cd conftest +$rm conftest* +echo "int some_variable = 0;" > conftest.c +mkdir out +# According to Tom Tromey, Ian Lance Taylor reported there are C compilers +# that will create temporary files in the current directory regardless of +# the output directory. Thus, making CWD read-only will cause this test +# to fail, enabling locking or at least warning the user not to do parallel +# builds. +chmod -w . +save_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS -o out/conftest2.o" +echo "$progname:829: checking if $compiler supports -c -o file.o" >&5 +if { (eval echo $progname:830: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.o; then + + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s out/conftest.err; then + echo "$ac_t"no 1>&6 + compiler_c_o=no + else + echo "$ac_t"yes 1>&6 + compiler_c_o=yes + fi +else + # Append any errors to the config.log. + cat out/conftest.err 1>&5 + compiler_c_o=no + echo "$ac_t"no 1>&6 +fi +CFLAGS="$save_CFLAGS" +chmod u+w . +$rm conftest* out/* +rmdir out +cd .. +rmdir conftest +$rm -r conftest 2>/dev/null + +if test x"$compiler_c_o" = x"yes"; then + # Check to see if we can write to a .lo + echo $ac_n "checking if $compiler supports -c -o file.lo... $ac_c" 1>&6 + $rm conftest* + echo "int some_variable = 0;" > conftest.c + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -c -o conftest.lo" + echo "$progname:862: checking if $compiler supports -c -o file.lo" >&5 +if { (eval echo $progname:863: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.lo; then + + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + echo "$ac_t"no 1>&6 + compiler_o_lo=no + else + echo "$ac_t"yes 1>&6 + compiler_o_lo=yes + fi + else + # Append any errors to the config.log. + cat conftest.err 1>&5 + compiler_o_lo=no + echo "$ac_t"no 1>&6 + fi + CFLAGS="$save_CFLAGS" + $rm conftest* +else + compiler_o_lo=no +fi + +# Check to see if we can do hard links to lock some files if needed +hard_links="nottested" +if test "$compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + echo $ac_n "checking if we can lock with hard links... $ac_c" 1>&6 + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + echo "$ac_t$hard_links" 1>&6 + $rm conftest* + if test "$hard_links" = no; then + echo "*** WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2 + need_locks=warn + fi +else + need_locks=no +fi + +if test "$with_gcc" = yes; then + # Check to see if options -fno-rtti -fno-exceptions are supported by compiler + echo $ac_n "checking if $compiler supports -fno-rtti -fno-exceptions ... $ac_c" 1>&6 + $rm conftest* + echo "int some_variable = 0;" > conftest.c + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.c" + echo "$progname:914: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 + if { (eval echo $progname:915: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.o; then + + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + echo "$ac_t"no 1>&6 + compiler_rtti_exceptions=no + else + echo "$ac_t"yes 1>&6 + compiler_rtti_exceptions=yes + fi + else + # Append any errors to the config.log. + cat conftest.err 1>&5 + compiler_rtti_exceptions=no + echo "$ac_t"no 1>&6 + fi + CFLAGS="$save_CFLAGS" + $rm conftest* + + if test "$compiler_rtti_exceptions" = "yes"; then + no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions' + else + no_builtin_flag=' -fno-builtin' + fi + +fi + +# Check for any special shared library compilation flags. +if test -n "$special_shlib_compile_flags"; then + echo "$progname: warning: \`$CC' requires \`$special_shlib_compile_flags' to build shared libraries" 1>&2 + if echo "$old_CC $old_CFLAGS " | egrep -e "[ ]$special_shlib_compile_flags[ ]" >/dev/null; then : + else + echo "$progname: add \`$special_shlib_compile_flags' to the CC or CFLAGS env variable and reconfigure" 1>&2 + can_build_shared=no + fi +fi + +echo $ac_n "checking if $compiler static flag $link_static_flag works... $ac_c" 1>&6 +$rm conftest* +echo 'main(){return(0);}' > conftest.c +save_LDFLAGS="$LDFLAGS" +LDFLAGS="$LDFLAGS $link_static_flag" +echo "$progname:958: checking if $compiler static flag $link_static_flag works" >&5 +if { (eval echo $progname:959: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + echo "$ac_t$link_static_flag" 1>&6 +else + echo "$ac_t"none 1>&6 + link_static_flag= +fi +LDFLAGS="$save_LDFLAGS" +$rm conftest* + +if test -z "$LN_S"; then + # Check to see if we can use ln -s, or we need hard links. + echo $ac_n "checking whether ln -s works... $ac_c" 1>&6 + $rm conftest.dat + if ln -s X conftest.dat 2>/dev/null; then + $rm conftest.dat + LN_S="ln -sf" + else + LN_S=ln + fi + if test "$LN_S" = "ln -sf"; then + echo "$ac_t"yes 1>&6 + else + echo "$ac_t"no 1>&6 + fi +fi + +# Make sure LD is an absolute path. +if test -z "$LD"; then + ac_prog=ld + if test "$with_gcc" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + echo $ac_n "checking for ld used by GCC... $ac_c" 1>&6 + echo "$progname:991: checking for ld used by GCC" >&5 + ac_prog=`($CC -print-prog-name=ld) 2>&5` + case "$ac_prog" in + # Accept absolute paths. + [\\/]* | [A-Za-z]:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the path of ld + ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we are not using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac + elif test "$with_gnu_ld" = yes; then + echo $ac_n "checking for GNU ld... $ac_c" 1>&6 + echo "$progname:1015: checking for GNU ld" >&5 + else + echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 + echo "$progname:1018: checking for non-GNU ld" >&5 + fi + + if test -z "$LD"; then + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + if "$LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then + test "$with_gnu_ld" != no && break + else + test "$with_gnu_ld" != yes && break + fi + fi + done + IFS="$ac_save_ifs" + fi + + if test -n "$LD"; then + echo "$ac_t$LD" 1>&6 + else + echo "$ac_t"no 1>&6 + fi + + if test -z "$LD"; then + echo "$progname: error: no acceptable ld found in \$PATH" 1>&2 + exit 1 + fi +fi + +# Check to see if it really is or is not GNU ld. +echo $ac_n "checking if the linker ($LD) is GNU ld... $ac_c" 1>&6 +# I'd rather use --version here, but apparently some GNU ld's only accept -v. +if $LD -v 2>&1 &5; then + with_gnu_ld=yes +else + with_gnu_ld=no +fi +echo "$ac_t$with_gnu_ld" 1>&6 + +# See if the linker supports building shared libraries. +echo $ac_n "checking whether the linker ($LD) supports shared libraries... $ac_c" 1>&6 + +allow_undefined_flag= +no_undefined_flag= +need_lib_prefix=unknown +need_version=unknown +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +archive_cmds= +archive_expsym_cmds= +old_archive_from_new_cmds= +export_dynamic_flag_spec= +whole_archive_flag_spec= +thread_safe_flag_spec= +hardcode_libdir_flag_spec= +hardcode_libdir_separator= +hardcode_direct=no +hardcode_minus_L=no +hardcode_shlibpath_var=unsupported +runpath_var= +always_export_symbols=no +export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols' +# include_expsyms should be a list of space-separated symbols to be *always* +# included in the symbol list +include_expsyms= +# exclude_expsyms can be an egrep regular expression of symbols to exclude +# it will be wrapped by ` (' and `)$', so one must not match beginning or +# end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', +# as well as any symbol that contains `d'. +exclude_expsyms="_GLOBAL_OFFSET_TABLE_" +# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out +# platforms (ab)use it in PIC code, but their linkers get confused if +# the symbol is explicitly referenced. Since portable code cannot +# rely on this symbol name, it's probably fine to never include it in +# preloaded symbol tables. + +case "$host_os" in +cygwin* | mingw*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$with_gcc" != yes; then + with_gnu_ld=no + fi + ;; + +esac + +ld_shlibs=yes +if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # See if GNU ld supports shared libraries. + case "$host_os" in + aix3* | aix4*) + # On AIX, the GNU linker is very broken + ld_shlibs=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + ;; + + amigaos*) + archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can use + # them. + ld_shlibs=no + ;; + + beos*) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw*) + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + allow_undefined_flag=unsupported + always_export_symbols=yes + + # Extract the symbol export list from an `--export-all' def file, + # then regenerate the def file from the symbol export list, so that + # the compiled dll only exports the symbol export list. + export_symbols_cmds='test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~ + test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~ + $DLLTOOL --export-all --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --output-def $objdir/$soname-def $objdir/$soname-ltdll.$objext $libobjs $convenience~ + sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]* ; *//" < $objdir/$soname-def > $export_symbols' + + archive_expsym_cmds='echo EXPORTS > $objdir/$soname-def~ + _lt_hint=1; + for symbol in `cat $export_symbols`; do + echo " \$symbol @ \$_lt_hint ; " >> $objdir/$soname-def; + _lt_hint=`expr 1 + \$_lt_hint`; + done~ + test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~ + test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~ + $CC -Wl,--base-file,$objdir/$soname-base -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~ + $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~ + $CC -Wl,--base-file,$objdir/$soname-base $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~ + $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~ + $CC $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts' + + old_archive_from_new_cmds='$DLLTOOL --as=$AS --dllname $soname --def $objdir/$soname-def --output-lib $objdir/$libname.a' + ;; + + netbsd*) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + archive_cmds='$LD -Bshareable $libobjs $deplibs $linkopts -o $lib' + # can we support soname and/or expsyms with a.out? -oliva + fi + ;; + + solaris*) + if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linkopts' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $compile_rpath $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $compile_rpath $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test "$ld_shlibs" = yes; then + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + case $host_os in + cygwin* | mingw*) + # dlltool doesn't understand --whole-archive et. al. + whole_archive_flag_spec= + ;; + *) + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + ;; + esac + fi +else + # PORTME fill in a description of your system's linker (not GNU ld) + case "$host_os" in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $objdir/$soname $libobjs $deplibs $linkopts -bE:$export_symbols -T512 -H512 -bM:SRE~$AR cru $lib $objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$with_gcc" = yes && test -z "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix4*) + hardcode_libdir_flag_spec='${wl}-b ${wl}nolibpath ${wl}-b ${wl}libpath:$libdir:/usr/lib:/lib' + hardcode_libdir_separator=':' + if test "$with_gcc" = yes; then + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct=yes + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + shared_flag='-shared' + else + shared_flag='${wl}-bM:SRE' + hardcode_direct=yes + fi + allow_undefined_flag=' ${wl}-berok' + archive_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bexpall ${wl}-bnoentry${allow_undefined_flag}' + archive_expsym_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}' + case "$host_os" in aix4.[01]|aix4.[01].*) + # According to Greg Wooledge, -bexpall is only supported from AIX 4.2 on + always_export_symbols=yes ;; + esac + ;; + + amigaos*) + archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # see comment about different semantics on the GNU ld section + ld_shlibs=no + ;; + + cygwin* | mingw*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $linkopts `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib /OUT:$oldlib$oldobjs' + fix_srcfile_path='`cygpath -w $srcfile`' + ;; + + freebsd1*) + ld_shlibs=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + hpux9* | hpux10* | hpux11*) + case "$host_os" in + hpux9*) archive_cmds='$rm $objdir/$soname~$LD -b +b $install_libdir -o $objdir/$soname $libobjs $deplibs $linkopts~test $objdir/$soname = $lib || mv $objdir/$soname $lib' ;; + *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linkopts' ;; + esac + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_minus_L=yes # Not in the search PATH, but as the default + # location of the library. + export_dynamic_flag_spec='${wl}-E' + ;; + + irix5* | irix6*) + if test "$with_gcc" = yes; then + archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + else + archive_cmds='$LD -shared $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linkopts' # ELF + fi + hardcode_libdir_flag_spec='${wl}-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + openbsd*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $objdir/$libname.def~$echo DATA >> $objdir/$libname.def~$echo " SINGLE NONSHARED" >> $objdir/$libname.def~$echo EXPORTS >> $objdir/$libname.def~emxexp $libobjs >> $objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $linkopts $objdir/$libname.def' + old_archive_from_new_cmds='emximp -o $objdir/$libname.a $objdir/$libname.def' + ;; + + osf3* | osf4*) + if test "$with_gcc" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + sco3.2v5*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ;; + + solaris*) + no_undefined_flag=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linkopts' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linkopts~$rm $lib.exp' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case "$host_os" in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; + esac + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linkopts' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + # archive_cmds='$LD -G -z text -h $soname -o $lib$libobjs$deplibs' + archive_cmds='$LD -G -h $soname -o $lib$libobjs$deplibs' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + *) + ld_shlibs=no + ;; + esac +fi +echo "$ac_t$ld_shlibs" 1>&6 +test "$ld_shlibs" = no && can_build_shared=no + +if test -z "$NM"; then + echo $ac_n "checking for BSD-compatible nm... $ac_c" 1>&6 + case "$NM" in + [\\/]* | [A-Za-z]:[\\/]*) ;; # Let the user override the test with a path. + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" + for ac_dir in $PATH /usr/ucb /usr/ccs/bin /bin; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/nm || test -f $ac_dir/nm$ac_exeext; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then + NM="$ac_dir/nm -B" + break + elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then + NM="$ac_dir/nm -p" + break + else + NM=${NM="$ac_dir/nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + fi + fi + done + IFS="$ac_save_ifs" + test -z "$NM" && NM=nm + ;; + esac + echo "$ac_t$NM" 1>&6 +fi + +# Check for command to grab the raw symbol name followed by C symbol from nm. +echo $ac_n "checking command to parse $NM output... $ac_c" 1>&6 + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Transform the above into a raw symbol and a C symbol. +symxfrm='\1 \2\3 \3' + +# Transform an extracted symbol line into a proper C declaration +global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" + +# Define system-specific variables. +case "$host_os" in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw*) + symcode='[ABCDGISTW]' + ;; +hpux*) # Its linker distinguishes data from code symbols + global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^. .* \(.*\)$/extern char \1;/p'" + ;; +irix*) + symcode='[BCDEGRST]' + ;; +solaris*) + symcode='[BDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then + symcode='[ABCDGISTW]' +fi + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # Write the raw and C identifiers. + global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode\)[ ][ ]*\($ac_symprfx\)$sympat$/$symxfrm/p'" + + # Check to see that the pipe works correctly. + pipe_works=no + $rm conftest* + cat > conftest.c <&5 + if { (eval echo $progname:1593: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.$objext; then + # Now try to grab the symbols. + nlist=conftest.nm + if { echo "$progname:1596: eval \"$NM conftest.$objext | $global_symbol_pipe > $nlist\"" >&5; eval "$NM conftest.$objext | $global_symbol_pipe > $nlist 2>&5"; } && test -s "$nlist"; then + + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if egrep ' nm_test_var$' "$nlist" >/dev/null; then + if egrep ' nm_test_func$' "$nlist" >/dev/null; then + cat < conftest.c +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + eval "$global_symbol_to_cdecl"' < "$nlist" >> conftest.c' + + cat <> conftest.c +#if defined (__STDC__) && __STDC__ +# define lt_ptr_t void * +#else +# define lt_ptr_t char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr_t address; +} +lt_preloaded_symbols[] = +{ +EOF + sed 's/^. \(.*\) \(.*\)$/ {"\2", (lt_ptr_t) \&\2},/' < "$nlist" >> conftest.c + cat <<\EOF >> conftest.c + {0, (lt_ptr_t) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.$objext conftstm.$objext + save_LIBS="$LIBS" + save_CFLAGS="$CFLAGS" + LIBS="conftstm.$objext" + CFLAGS="$CFLAGS$no_builtin_flag" + if { (eval echo $progname:1648: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + pipe_works=yes + else + echo "$progname: failed program was:" >&5 + cat conftest.c >&5 + fi + LIBS="$save_LIBS" + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.c >&5 + fi + $rm conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + global_symbol_pipe= + fi +done +if test "$pipe_works" = yes; then + echo "${ac_t}ok" 1>&6 +else + echo "${ac_t}failed" 1>&6 +fi + +if test -z "$global_symbol_pipe"; then + global_symbol_to_cdecl= +fi + +# Check hardcoding attributes. +echo $ac_n "checking how to hardcode library paths into programs... $ac_c" 1>&6 +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || \ + test -n "$runpath_var"; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$hardcode_shlibpath_var" != no && + test "$hardcode_minus_L" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +echo "$ac_t$hardcode_action" 1>&6 + + +reload_flag= +reload_cmds='$LD$reload_flag -o $output$reload_objs' +echo $ac_n "checking for $LD option to reload object files... $ac_c" 1>&6 +# PORTME Some linkers may need a different reload flag. +reload_flag='-r' +echo "$ac_t$reload_flag" 1>&6 +test -n "$reload_flag" && reload_flag=" $reload_flag" + +# PORTME Fill in your ld.so characteristics +library_names_spec= +libname_spec='lib$name' +soname_spec= +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +sys_lib_search_path_spec="/lib /usr/lib" +file_magic_cmd= +file_magic_test_file= +deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [regex]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given egrep regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. +echo $ac_n "checking dynamic linker characteristics... $ac_c" 1>&6 +case "$host_os" in +aix3*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}.so$major' + ;; + +aix4*) + version_type=linux + # AIX has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + # We preserve .a as extension for shared libraries though AIX4.2 + # and later linker supports .so + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.a' + shlibpath_var=LIBPATH + deplibs_check_method=pass_all + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}.so' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + deplibs_check_method=pass_all + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + +bsdi4*) + version_type=linux + library_names_spec='${libname}.so$major ${libname}.so' + soname_spec='${libname}.so' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + file_magic_cmd=/usr/bin/file + file_magic_test_file=/shlib/libc.so + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw*) + version_type=windows + need_version=no + need_lib_prefix=no + if test "$with_gcc" = yes; then + library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.a' + else + library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib' + fi + dynamic_linker='Win32 ld.exe' + deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + file_magic_cmd='${OBJDUMP} -f' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd*) + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + version_type=freebsd-$objformat + case "$version_type" in + freebsd-elf*) + deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object' + ;; + freebsd-*) + deplibs_check_method='file_magic FreeBSD.* shared library' + ;; + esac + file_magic_cmd=/usr/bin/file + file_magic_test_file=`echo /usr/lib/libc.so.*` + if test "$release_suffix" = all; then + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so' + else + library_names_spec='${libname}${release}.so$versuffix ${libname}.so' + fi + need_version=no + need_lib_prefix=no + finish_cmds='/usr/bin/env OBJFORMAT="'"$objformat"'" /sbin/ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + case "$host_os" in + freebsd2* | freebsd3.[01]*) + shlibpath_overrides_runpath=yes + ;; + *) # from 3.2 on + shlibpath_overrides_runpath=no + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + dynamic_linker="$host_os dld.sl" + version_type=sunos + need_lib_prefix=no + need_version=no + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' + soname_spec='${libname}${release}.sl$major' + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +irix5* | irix6*) + version_type=irix + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}.so.$major' + library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major ${libname}${release}.so $libname.so' + case "$host_os" in + irix5*) + libsuff= shlibsuff= + # this will be overridden with pass_all, but let us keep it just in case + deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" + ;; + *) + case "$LD" in # libtool.m4 will add one of these switches to LD + *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + # this will be overridden with pass_all, but let us keep it just in case + deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1" + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + file_magic_cmd=/usr/bin/file + file_magic_test_file=`echo /lib${libsuff}/libc.so*` + deplibs_check_method='pass_all' + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux-gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + file_magic_cmd=/usr/bin/file + file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` + + if test -f /lib/ld.so.1; then + dynamic_linker='GNU ld.so' + else + # Only the GNU ld.so supports shared libraries on MkLinux. + case "$host_cpu" in + powerpc*) dynamic_linker=no ;; + *) dynamic_linker='Linux ld.so' ;; + esac + fi + ;; + +netbsd*) + version_type=sunos + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' + soname_spec='${libname}${release}.so$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + ;; + +openbsd*) + version_type=sunos + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + need_version=no + fi + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + ;; + +os2*) + libname_spec='$name' + need_lib_prefix=no + library_names_spec='$libname.dll $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4*) + version_type=osf + need_version=no + soname_spec='${libname}${release}.so' + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' + shlibpath_var=LD_LIBRARY_PATH + # this will be overridden with pass_all, but let us keep it just in case + deplibs_check_method='file_magic COFF format alpha shared library' + file_magic_cmd=/usr/bin/file + file_magic_test_file=/shlib/libc.so + deplibs_check_method='pass_all' + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}.so$major' + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + deplibs_check_method="file_magic ELF [0-9][0-9]-bit [LM]SB dynamic lib" + file_magic_cmd=/usr/bin/file + file_magic_test_file=/lib/libc.so + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + case "$host_vendor" in + ncr) + deplibs_check_method='pass_all' + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + file_magic_cmd=/usr/bin/file + file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + esac + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' + soname_spec='$libname.so.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +*) + dynamic_linker=no + ;; +esac +echo "$ac_t$dynamic_linker" 1>&6 +test "$dynamic_linker" = no && can_build_shared=no + +# Report the final consequences. +echo "checking if libtool supports shared libraries... $can_build_shared" 1>&6 + +# Only try to build win32 dlls if AC_LIBTOOL_WIN32_DLL was used in +# configure.in, otherwise build static only libraries. +case "$host_os" in +cygwin* | mingw* | os2*) + if test x$can_build_shared = xyes; then + test x$enable_win32_dll = xno && can_build_shared=no + echo "checking if package supports dlls... $can_build_shared" 1>&6 + fi +;; +esac + +if test -n "$file_magic_test_file" && test -n "$file_magic_cmd"; then + case "$deplibs_check_method" in + "file_magic "*) + file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + egrep "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac +fi + +echo $ac_n "checking whether to build shared libraries... $ac_c" 1>&6 +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case "$host_os" in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + +aix4*) + test "$enable_shared" = yes && enable_static=no + ;; +esac + +echo "$ac_t$enable_shared" 1>&6 + +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes + +echo "checking whether to build static libraries... $enable_static" 1>&6 + +if test "$hardcode_action" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +echo $ac_n "checking for objdir... $ac_c" 1>&6 +rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + objdir=_libs +fi +rmdir .libs 2>/dev/null +echo "$ac_t$objdir" 1>&6 + +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else +if eval "test \"`echo '$''{'lt_cv_dlopen'+set}'`\" != set"; then + lt_cv_dlopen=no lt_cv_dlopen_libs= +echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 +echo "$progname:2170: checking for dlopen in -ldl" >&5 +ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-ldl $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + echo "$ac_t""no" 1>&6 +echo $ac_n "checking for dlopen""... $ac_c" 1>&6 +echo "$progname:2207: checking for dlopen" >&5 +if eval "test \"`echo '$''{'ac_cv_func_dlopen'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_dlopen) || defined (__stub___dlopen) +choke me +#else +dlopen(); +#endif + +; return 0; } +EOF +if { (eval echo $progname:2234: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_dlopen=yes" +else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_dlopen=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_func_'dlopen`\" = yes"; then + echo "$ac_t""yes" 1>&6 + lt_cv_dlopen="dlopen" +else + echo "$ac_t""no" 1>&6 +echo $ac_n "checking for dld_link in -ldld""... $ac_c" 1>&6 +echo "$progname:2251: checking for dld_link in -ldld" >&5 +ac_lib_var=`echo dld'_'dld_link | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-ldld $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" +else + echo "$ac_t""no" 1>&6 +echo $ac_n "checking for shl_load""... $ac_c" 1>&6 +echo "$progname:2288: checking for shl_load" >&5 +if eval "test \"`echo '$''{'ac_cv_func_shl_load'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_shl_load) || defined (__stub___shl_load) +choke me +#else +shl_load(); +#endif + +; return 0; } +EOF +if { (eval echo $progname:2315: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_shl_load=yes" +else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_shl_load=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'shl_load`\" = yes"; then + echo "$ac_t""yes" 1>&6 + lt_cv_dlopen="shl_load" +else + echo "$ac_t""no" 1>&6 +echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 +echo "$progname:2333: checking for shl_load in -ldld" >&5 +ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-ldld $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" +else + echo "$ac_t""no" 1>&6 +fi + + +fi + + +fi + + +fi + + +fi + +fi + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + fi + + case "$lt_cv_dlopen" in + dlopen) +for ac_hdr in dlfcn.h; do +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +echo "$progname:2395: checking for $ac_hdr" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +int fnord = 0; +EOF +ac_try="$ac_compile conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo $progname:2405: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi +done + + if test "x$ac_cv_header_dlfcn_h" = xyes; then + CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + fi + eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + LIBS="$lt_cv_dlopen_libs $LIBS" + + echo $ac_n "checking whether a program can dlopen itself""... $ac_c" 1>&6 +echo "$progname:2433: checking whether a program can dlopen itself" >&5 +if test "${lt_cv_dlopen_self+set}" = set; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test "$cross_compiling" = yes; then + lt_cv_dlopen_self=cross + else + cat > conftest.c < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LTDL_GLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LTDL_GLOBAL DL_GLOBAL +# else +# define LTDL_GLOBAL 0 +# endif +#endif + +/* We may have to define LTDL_LAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LTDL_LAZY_OR_NOW +# ifdef RTLD_LAZY +# define LTDL_LAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LTDL_LAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LTDL_LAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LTDL_LAZY_OR_NOW DL_NOW +# else +# define LTDL_LAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +fnord() { int i=42;} +main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW); + if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord"); + if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); } + +EOF +if { (eval echo $progname:2487: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +then + lt_cv_dlopen_self=yes +else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + lt_cv_dlopen_self=no +fi +rm -fr conftest* +fi + +fi + +echo "$ac_t""$lt_cv_dlopen_self" 1>&6 + + if test "$lt_cv_dlopen_self" = yes; then + LDFLAGS="$LDFLAGS $link_static_flag" + echo $ac_n "checking whether a statically linked program can dlopen itself""... $ac_c" 1>&6 +echo "$progname:2506: checking whether a statically linked program can dlopen itself" >&5 +if test "${lt_cv_dlopen_self_static+set}" = set; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test "$cross_compiling" = yes; then + lt_cv_dlopen_self_static=cross + else + cat > conftest.c < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LTDL_GLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LTDL_GLOBAL DL_GLOBAL +# else +# define LTDL_GLOBAL 0 +# endif +#endif + +/* We may have to define LTDL_LAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LTDL_LAZY_OR_NOW +# ifdef RTLD_LAZY +# define LTDL_LAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LTDL_LAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LTDL_LAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LTDL_LAZY_OR_NOW DL_NOW +# else +# define LTDL_LAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +fnord() { int i=42;} +main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW); + if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord"); + if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); } + +EOF +if { (eval echo $progname:2560: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +then + lt_cv_dlopen_self_static=yes +else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + lt_cv_dlopen_self_static=no +fi +rm -fr conftest* +fi + +fi + +echo "$ac_t""$lt_cv_dlopen_self_static" 1>&6 +fi + ;; + esac + + case "$lt_cv_dlopen_self" in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case "$lt_cv_dlopen_self_static" in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + +# Copy echo and quote the copy, instead of the original, because it is +# used later. +ltecho="$echo" +if test "X$ltecho" = "X$CONFIG_SHELL $0 --fallback-echo"; then + ltecho="$CONFIG_SHELL \$0 --fallback-echo" +fi +LTSHELL="$SHELL" + +LTCONFIG_VERSION="$VERSION" + +# Only quote variables if we're using ltmain.sh. +case "$ltmain" in +*.sh) + # Now quote all the things that may contain metacharacters. + for var in ltecho old_CC old_CFLAGS old_CPPFLAGS \ + old_LD old_LDFLAGS old_LIBS \ + old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS \ + AR CC LD LN_S NM LTSHELL LTCONFIG_VERSION \ + reload_flag reload_cmds wl \ + pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ + thread_safe_flag_spec whole_archive_flag_spec libname_spec \ + library_names_spec soname_spec \ + RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ + old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds postuninstall_cmds \ + file_magic_cmd export_symbols_cmds deplibs_check_method allow_undefined_flag no_undefined_flag \ + finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ + hardcode_libdir_flag_spec hardcode_libdir_separator \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do + + case "$var" in + reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case "$ltecho" in + *'\$0 --fallback-echo"') + ltecho=`$echo "X$ltecho" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + + trap "$rm \"$ofile\"; exit 1" 1 2 15 + echo "creating $ofile" + $rm "$ofile" + cat < "$ofile" +#! $SHELL + +# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +# NOTE: Changes made to this file will be lost: look at ltconfig or ltmain.sh. +# +# Copyright (C) 1996-1999 Free Software Foundation, Inc. +# Gordon Matzigkeit , 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="sed -e s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +if test "\${CDPATH+set}" = set; then CDPATH=; export CDPATH; fi + +### BEGIN LIBTOOL CONFIG +EOF + cfgfile="$ofile" + ;; + +*) + # Double-quote the variables that need it (for aesthetics). + for var in old_CC old_CFLAGS old_CPPFLAGS \ + old_LD old_LDFLAGS old_LIBS \ + old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS; do + eval "$var=\\\"\$var\\\"" + done + + # Just create a config file. + cfgfile="$ofile.cfg" + trap "$rm \"$cfgfile\"; exit 1" 1 2 15 + echo "creating $cfgfile" + $rm "$cfgfile" + cat < "$cfgfile" +# `$echo "$cfgfile" | sed 's%^.*/%%'` - Libtool configuration file. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +EOF + ;; +esac + +cat <> "$cfgfile" +# Libtool was configured as follows, on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# +# CC=$old_CC CFLAGS=$old_CFLAGS CPPFLAGS=$old_CPPFLAGS \\ +# LD=$old_LD LDFLAGS=$old_LDFLAGS LIBS=$old_LIBS \\ +# NM=$old_NM RANLIB=$old_RANLIB LN_S=$old_LN_S \\ +# DLLTOOL=$old_DLLTOOL OBJDUMP=$old_OBJDUMP AS=$old_AS \\ +# $0$ltconfig_args +# +# Compiler and other test output produced by $progname, useful for +# debugging $progname, is in ./config.log if it exists. + +# The version of $progname that generated this script. +LTCONFIG_VERSION=$LTCONFIG_VERSION + +# Shell to use when invoking shell scripts. +SHELL=$LTSHELL + +# Whether to waste disk space. +install_ltlibs=$install_ltlibs + +# What to do with -release. +# yes - only for shared archive +# no - ingnore +# all - for all archives +release_suffix=$release_suffix + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host + +# An echo program that does not interpret backslashes. +echo=$ltecho + +# The archiver. +AR=$AR + +# The default C compiler. +CC=$CC + +# The linker used to build libraries. +LD=$LD + +# Whether we need hard or soft links. +LN_S=$LN_S + +# A BSD-compatible nm program. +NM=$NM + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$reload_flag +reload_cmds=$reload_cmds + +# How to pass a linker flag through the compiler. +wl=$wl + +# Object file suffix (normally "o"). +objext="$objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$pic_flag + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$compiler_c_o + +# Can we write directly to a .lo ? +compiler_o_lo=$compiler_o_lo + +# Must we lock files when doing compilation ? +need_locks=$need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$link_static_flag + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$no_builtin_flag + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$whole_archive_flag_spec + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$thread_safe_flag_spec + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$RANLIB +old_archive_cmds=$old_archive_cmds +old_postinstall_cmds=$old_postinstall_cmds +old_postuninstall_cmds=$old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$old_archive_from_new_cmds + +# Commands used to build and install a shared archive. +archive_cmds=$archive_cmds +archive_expsym_cmds=$archive_expsym_cmds +postinstall_cmds=$postinstall_cmds +postuninstall_cmds=$postuninstall_cmds + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$allow_undefined_flag + +# Flag that forces no undefined symbols. +no_undefined_flag=$no_undefined_flag + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$global_symbol_to_cdecl + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$hardcode_libdir_flag_spec + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$hardcode_libdir_separator + +# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$export_symbols_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$include_expsyms + +EOF + +case "$ltmain" in +*.sh) + echo '### END LIBTOOL CONFIG' >> "$ofile" + echo >> "$ofile" + case "$host_os" in + aix3*) + cat <<\EOF >> "$ofile" + +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "${COLLECT_NAMES+set}" != set; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +EOF + ;; + esac + + # Append the ltmain.sh script. + sed '$q' "$ltmain" >> "$ofile" || (rm -f "$ofile"; exit 1) + + chmod +x "$ofile" + ;; + +*) + # Compile the libtool program. + echo "FIXME: would compile $ltmain" + ;; +esac + +test -n "$cache_file" || exit 0 + +# AC_CACHE_SAVE +trap '' 1 2 15 +cat > confcache <<\EOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs. It is not useful on other systems. +# If it contains results you don't want to keep, you may remove or edit it. +# +# By default, configure uses ./config.cache as the cache file, +# creating it if it does not exist already. You can give configure +# the --cache-file=FILE option to use a different cache file; that is +# what configure does when it calls configure scripts in +# subdirectories, so they share the cache. +# Giving --cache-file=/dev/null disables caching, for debugging configure. +# config.status only pays attention to the cache file if you give it the +# --recheck option to rerun configure. +# +EOF +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, don't put newlines in cache variables' values. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +(set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote substitution + # turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + -e "s/'/'\\\\''/g" \ + -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' + ;; + esac >> confcache +if cmp -s $cache_file confcache; then + : +else + if test -w $cache_file; then + echo "updating cache $cache_file" + cat confcache > $cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +exit 0 + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: diff --git a/contrib/php4/ltmain.sh b/contrib/php4/ltmain.sh new file mode 100644 index 00000000..300eaec4 --- /dev/null +++ b/contrib/php4/ltmain.sh @@ -0,0 +1,4088 @@ +# ltmain.sh - Provide generalized library-building support services. +# NOTE: Changing this file will not affect anything until you rerun ltconfig. +# +# Copyright (C) 1996-1999 Free Software Foundation, Inc. +# Originally by Gordon Matzigkeit , 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Check that we have a working $echo. +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then + # Yippee, $echo works! + : +else + # Restart under the correct shell, and then maybe $echo will work. + exec $SHELL "$0" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat <&2 + echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit 1 +fi + +if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then + echo "$modename: not configured to build any kind of library" 1>&2 + echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit 1 +fi + +# Global variables. +mode=$default_mode +nonopt= +prev= +prevopt= +run= +show="$echo" +show_help= +execute_dlfiles= +lo2o="s/\\.lo\$/.${objext}/" +o2lo="s/\\.${objext}\$/.lo/" + +# Parse our command line options once, thoroughly. +while test $# -gt 0 +do + arg="$1" + shift + + case "$arg" in + -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case "$prev" in + execute_dlfiles) + eval "$prev=\"\$$prev \$arg\"" + ;; + *) + eval "$prev=\$arg" + ;; + esac + + prev= + prevopt= + continue + fi + + # Have we seen a non-optional argument yet? + case "$arg" in + --help) + show_help=yes + ;; + + --version) + echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" + exit 0 + ;; + + --config) + sed -e '1,/^### BEGIN LIBTOOL CONFIG/d' -e '/^### END LIBTOOL CONFIG/,$d' $0 + exit 0 + ;; + + --debug) + echo "$progname: enabling shell trace mode" + set -x + ;; + + --dry-run | -n) + run=: + ;; + + --features) + echo "host: $host" + if test "$build_libtool_libs" = yes; then + echo "enable shared libraries" + else + echo "disable shared libraries" + fi + if test "$build_old_libs" = yes; then + echo "enable static libraries" + else + echo "disable static libraries" + fi + exit 0 + ;; + + --finish) mode="finish" ;; + + --mode) prevopt="--mode" prev=mode ;; + --mode=*) mode="$optarg" ;; + + --quiet | --silent) + show=: + ;; + + -dlopen) + prevopt="-dlopen" + prev=execute_dlfiles + ;; + + -*) + $echo "$modename: unrecognized option \`$arg'" 1>&2 + $echo "$help" 1>&2 + exit 1 + ;; + + *) + nonopt="$arg" + break + ;; + esac +done + +if test -n "$prevopt"; then + $echo "$modename: option \`$prevopt' requires an argument" 1>&2 + $echo "$help" 1>&2 + exit 1 +fi + +if test -z "$show_help"; then + + # Infer the operation mode. + if test -z "$mode"; then + case "$nonopt" in + *cc | *++ | gcc* | *-gcc*) + mode=link + for arg + do + case "$arg" in + -c) + mode=compile + break + ;; + esac + done + ;; + *db | *dbx | *strace | *truss) + mode=execute + ;; + *install*|cp|mv) + mode=install + ;; + *rm) + mode=uninstall + ;; + *) + # If we have no mode, but dlfiles were specified, then do execute mode. + test -n "$execute_dlfiles" && mode=execute + + # Just use the default operation mode. + if test -z "$mode"; then + if test -n "$nonopt"; then + $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 + else + $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 + fi + fi + ;; + esac + fi + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$execute_dlfiles" && test "$mode" != execute; then + $echo "$modename: unrecognized option \`-dlopen'" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + # Change the help message to a mode-specific one. + generic_help="$help" + help="Try \`$modename --help --mode=$mode' for more information." + + # These modes are in order of execution frequency so that they run quickly. + case "$mode" in + # libtool compile mode + compile) + modename="$modename: compile" + # Get the compilation command and the source file. + base_compile= + lastarg= + srcfile="$nonopt" + suppress_output= + + user_target=no + for arg + do + # Accept any command-line options. + case "$arg" in + -o) + if test "$user_target" != "no"; then + $echo "$modename: you cannot specify \`-o' more than once" 1>&2 + exit 1 + fi + user_target=next + ;; + + -static) + build_old_libs=yes + continue + ;; + esac + + case "$user_target" in + next) + # The next one is the -o target name + user_target=yes + continue + ;; + yes) + # We got the output file + user_target=set + libobj="$arg" + continue + ;; + esac + + # Accept the current argument as the source file. + lastarg="$srcfile" + srcfile="$arg" + + # Aesthetically quote the previous argument. + + # Backslashify any backslashes, double quotes, and dollar signs. + # These are the only characters that are still specially + # interpreted inside of double-quoted scrings. + lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` + + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly in scan + # sets, so we specify it separately. + case "$lastarg" in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) + lastarg="\"$lastarg\"" + ;; + esac + + # Add the previous argument to base_compile. + if test -z "$base_compile"; then + base_compile="$lastarg" + else + base_compile="$base_compile $lastarg" + fi + done + + case "$user_target" in + set) + ;; + no) + # Get the name of the library object. + libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` + ;; + *) + $echo "$modename: you must specify a target with \`-o'" 1>&2 + exit 1 + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo + xform='[cCFSfmso]' + case "$libobj" in + *.ada) xform=ada ;; + *.adb) xform=adb ;; + *.ads) xform=ads ;; + *.asm) xform=asm ;; + *.c++) xform=c++ ;; + *.cc) xform=cc ;; + *.cpp) xform=cpp ;; + *.cxx) xform=cxx ;; + *.f90) xform=f90 ;; + *.for) xform=for ;; + esac + + libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` + + case "$libobj" in + *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; + *) + $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 + exit 1 + ;; + esac + + if test -z "$base_compile"; then + $echo "$modename: you must specify a compilation command" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + # Delete any leftover library objects. + if test "$build_old_libs" = yes; then + removelist="$obj $libobj" + else + removelist="$libobj" + fi + + $run $rm $removelist + trap "$run $rm $removelist; exit 1" 1 2 15 + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test "$compiler_c_o" = no; then + output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\..*$%%'`.${objext} + lockfile="$output_obj.lock" + removelist="$removelist $output_obj $lockfile" + trap "$run $rm $removelist; exit 1" 1 2 15 + else + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test "$need_locks" = yes; then + until ln "$0" "$lockfile" 2>/dev/null; do + $show "Waiting for $lockfile to be removed" + sleep 2 + done + elif test "$need_locks" = warn; then + if test -f "$lockfile"; then + echo "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit 1 + fi + echo $srcfile > "$lockfile" + fi + + if test -n "$fix_srcfile_path"; then + eval srcfile=\"$fix_srcfile_path\" + fi + + # Only build a PIC object if we are building libtool libraries. + if test "$build_libtool_libs" = yes; then + # Without this assignment, base_compile gets emptied. + fbsd_hideous_sh_bug=$base_compile + + # All platforms use -DPIC, to notify preprocessed assembler code. + command="$base_compile $pic_flag -DPIC $srcfile" + if test "$build_old_libs" = yes; then + lo_libobj="$libobj" + dir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'` + if test "X$dir" = "X$libobj"; then + dir="$objdir" + else + dir="$dir/$objdir" + fi + libobj="$dir/"`$echo "X$libobj" | $Xsed -e 's%^.*/%%'` + + if test -d "$dir"; then + $show "$rm $libobj" + $run $rm $libobj + else + $show "$mkdir $dir" + $run $mkdir $dir + status=$? + if test $status -ne 0 && test ! -d $dir; then + exit $status + fi + fi + fi + if test "$compiler_o_lo" = yes; then + output_obj="$libobj" + command="$command -o $output_obj" + elif test "$compiler_c_o" = yes; then + output_obj="$obj" + command="$command -o $output_obj" + fi + + $run $rm "$output_obj" + $show "$command" + if $run eval "$command"; then : + else + test -n "$output_obj" && $run $rm $removelist + exit 1 + fi + + if test "$need_locks" = warn && + test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then + echo "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit 1 + fi + + # Just move the object if needed, then go on to compile the next one + if test x"$output_obj" != x"$libobj"; then + $show "$mv $output_obj $libobj" + if $run $mv $output_obj $libobj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # If we have no pic_flag, then copy the object into place and finish. + if test -z "$pic_flag" && test "$build_old_libs" = yes; then + # Rename the .lo from within objdir to obj + if test -f $obj; then + $show $rm $obj + $run $rm $obj + fi + + $show "$mv $libobj $obj" + if $run $mv $libobj $obj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + + # Now arrange that obj and lo_libobj become the same file + $show "$LN_S $obj $lo_libobj" + if $run $LN_S $obj $lo_libobj; then + exit 0 + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # Allow error messages only from the first compilation. + suppress_output=' >/dev/null 2>&1' + fi + + # Only build a position-dependent object if we build old libraries. + if test "$build_old_libs" = yes; then + command="$base_compile $srcfile" + if test "$compiler_c_o" = yes; then + command="$command -o $obj" + output_obj="$obj" + fi + + # Suppress compiler output if we already did a PIC compilation. + command="$command$suppress_output" + $run $rm "$output_obj" + $show "$command" + if $run eval "$command"; then : + else + $run $rm $removelist + exit 1 + fi + + if test "$need_locks" = warn && + test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then + echo "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit 1 + fi + + # Just move the object if needed + if test x"$output_obj" != x"$obj"; then + $show "$mv $output_obj $obj" + if $run $mv $output_obj $obj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # Create an invalid libtool object if no PIC, so that we do not + # accidentally link it into a program. + if test "$build_libtool_libs" != yes; then + $show "echo timestamp > $libobj" + $run eval "echo timestamp > \$libobj" || exit $? + else + # Move the .lo from within objdir + $show "$mv $libobj $lo_libobj" + if $run $mv $libobj $lo_libobj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + fi + + # Unlock the critical section if it was locked + if test "$need_locks" != no; then + $rm "$lockfile" + fi + + exit 0 + ;; + + # libtool link mode + link) + modename="$modename: link" + C_compiler="$CC" # save it, to compile generated C sources + CC="$nonopt" + case "$host" in + *-*-cygwin* | *-*-mingw* | *-*-os2*) + # It is impossible to link a dll without this setting, and + # we shouldn't force the makefile maintainer to figure out + # which system we are compiling for in order to pass an extra + # flag for every libtool invokation. + # allow_undefined=no + + # FIXME: Unfortunately, there are problems with the above when trying + # to make a dll which has undefined symbols, in which case not + # even a static library is built. For now, we need to specify + # -no-undefined on the libtool link line when we can be certain + # that all symbols are satisfied, otherwise we get a static library. + allow_undefined=yes + + # This is a source program that is used to create dlls on Windows + # Don't remove nor modify the starting and closing comments +# /* ltdll.c starts here */ +# #define WIN32_LEAN_AND_MEAN +# #include +# #undef WIN32_LEAN_AND_MEAN +# #include +# +# #ifndef __CYGWIN__ +# # ifdef __CYGWIN32__ +# # define __CYGWIN__ __CYGWIN32__ +# # endif +# #endif +# +# #ifdef __cplusplus +# extern "C" { +# #endif +# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); +# #ifdef __cplusplus +# } +# #endif +# +# #ifdef __CYGWIN__ +# #include +# DECLARE_CYGWIN_DLL( DllMain ); +# #endif +# HINSTANCE __hDllInstance_base; +# +# BOOL APIENTRY +# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) +# { +# __hDllInstance_base = hInst; +# return TRUE; +# } +# /* ltdll.c ends here */ + # This is a source program that is used to create import libraries + # on Windows for dlls which lack them. Don't remove nor modify the + # starting and closing comments +# /* impgen.c starts here */ +# /* Copyright (C) 1999 Free Software Foundation, Inc. +# +# This file is part of GNU libtool. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# */ +# +# #include /* for printf() */ +# #include /* for open(), lseek(), read() */ +# #include /* for O_RDONLY, O_BINARY */ +# #include /* for strdup() */ +# +# static unsigned int +# pe_get16 (fd, offset) +# int fd; +# int offset; +# { +# unsigned char b[2]; +# lseek (fd, offset, SEEK_SET); +# read (fd, b, 2); +# return b[0] + (b[1]<<8); +# } +# +# static unsigned int +# pe_get32 (fd, offset) +# int fd; +# int offset; +# { +# unsigned char b[4]; +# lseek (fd, offset, SEEK_SET); +# read (fd, b, 4); +# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); +# } +# +# static unsigned int +# pe_as32 (ptr) +# void *ptr; +# { +# unsigned char *b = ptr; +# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); +# } +# +# int +# main (argc, argv) +# int argc; +# char *argv[]; +# { +# int dll; +# unsigned long pe_header_offset, opthdr_ofs, num_entries, i; +# unsigned long export_rva, export_size, nsections, secptr, expptr; +# unsigned long name_rvas, nexp; +# unsigned char *expdata, *erva; +# char *filename, *dll_name; +# +# filename = argv[1]; +# +# dll = open(filename, O_RDONLY|O_BINARY); +# if (!dll) +# return 1; +# +# dll_name = filename; +# +# for (i=0; filename[i]; i++) +# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':') +# dll_name = filename + i +1; +# +# pe_header_offset = pe_get32 (dll, 0x3c); +# opthdr_ofs = pe_header_offset + 4 + 20; +# num_entries = pe_get32 (dll, opthdr_ofs + 92); +# +# if (num_entries < 1) /* no exports */ +# return 1; +# +# export_rva = pe_get32 (dll, opthdr_ofs + 96); +# export_size = pe_get32 (dll, opthdr_ofs + 100); +# nsections = pe_get16 (dll, pe_header_offset + 4 +2); +# secptr = (pe_header_offset + 4 + 20 + +# pe_get16 (dll, pe_header_offset + 4 + 16)); +# +# expptr = 0; +# for (i = 0; i < nsections; i++) +# { +# char sname[8]; +# unsigned long secptr1 = secptr + 40 * i; +# unsigned long vaddr = pe_get32 (dll, secptr1 + 12); +# unsigned long vsize = pe_get32 (dll, secptr1 + 16); +# unsigned long fptr = pe_get32 (dll, secptr1 + 20); +# lseek(dll, secptr1, SEEK_SET); +# read(dll, sname, 8); +# if (vaddr <= export_rva && vaddr+vsize > export_rva) +# { +# expptr = fptr + (export_rva - vaddr); +# if (export_rva + export_size > vaddr + vsize) +# export_size = vsize - (export_rva - vaddr); +# break; +# } +# } +# +# expdata = (unsigned char*)malloc(export_size); +# lseek (dll, expptr, SEEK_SET); +# read (dll, expdata, export_size); +# erva = expdata - export_rva; +# +# nexp = pe_as32 (expdata+24); +# name_rvas = pe_as32 (expdata+32); +# +# printf ("EXPORTS\n"); +# for (i = 0; i&2 + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + else + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + fi + build_libtool_libs=no + build_old_libs=yes + prefer_static_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test $# -gt 0; do + arg="$1" + shift + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case "$prev" in + output) + compile_command="$compile_command @OUTPUT@" + finalize_command="$finalize_command @OUTPUT@" + ;; + esac + + case "$prev" in + dlfiles|dlprefiles) + if test "$preload" = no; then + # Add the symbol object into the linking commands. + compile_command="$compile_command @SYMFILE@" + finalize_command="$finalize_command @SYMFILE@" + preload=yes + fi + case "$arg" in + *.la | *.lo) ;; # We handle these cases below. + force) + if test "$dlself" = no; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test "$prev" = dlprefiles; then + dlself=yes + elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test "$prev" = dlfiles; then + dlfiles="$dlfiles $arg" + else + dlprefiles="$dlprefiles $arg" + fi + prev= + ;; + esac + ;; + expsyms) + export_symbols="$arg" + if test ! -f "$arg"; then + $echo "$modename: symbol file \`$arg' does not exist" + exit 1 + fi + prev= + continue + ;; + expsyms_regex) + export_symbols_regex="$arg" + prev= + continue + ;; + release) + if test "$release_suffix" = all; then + release="$arg" + elif test "$release_suffix" = yes; then + release="-$arg" + fi + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case "$arg" in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 + exit 1 + ;; + esac + if test "$prev" = rpath; then + case "$rpath " in + *" $arg "*) ;; + *) rpath="$rpath $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) xrpath="$xrpath $arg" ;; + esac + fi + prev= + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi + + prevarg="$arg" + + case "$arg" in + -all-static) + if test -n "$link_static_flag"; then + compile_command="$compile_command $link_static_flag" + finalize_command="$finalize_command $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 + continue + ;; + + -avoid-version) + build_old_libs=no + avoid_version=yes + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + $echo "$modename: not more than one -exported-symbols argument allowed" + exit 1 + fi + if test "X$arg" = "X-export-symbols"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -L*) + dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` + # We need an absolute path. + case "$dir" in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 + $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 + absdir="$dir" + fi + dir="$absdir" + ;; + esac + case " $deplibs " in + *" $arg "*) ;; + *) deplibs="$deplibs $arg";; + esac + case " $lib_search_path " in + *" $dir "*) ;; + *) lib_search_path="$lib_search_path $dir";; + esac + case "$host" in + *-*-cygwin* | *-*-mingw* | *-*-os2*) + dllsearchdir=`cd "$dir" && pwd || echo "$dir"` + case ":$dllsearchpath:" in + ::) dllsearchpath="$dllsearchdir";; + *":$dllsearchdir:"*) ;; + *) dllsearchpath="$dllsearchpath:$dllsearchdir";; + esac + ;; + esac + ;; + + -l*) + if test "$arg" = "-lc"; then + case "$host" in + *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*) + # These systems don't actually have c library (as such) + continue + ;; + esac + elif test "$arg" = "-lm"; then + case "$host" in + *-*-cygwin* | *-*-beos*) + # These systems don't actually have math library (as such) + continue + ;; + esac + fi + deplibs="$deplibs $arg" + ;; + + -?thread) + deplibs="$deplibs $arg" + ;; + + -module) + module=yes + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -o) prev=output ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` + # We need an absolute path. + case "$dir" in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 + exit 1 + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + continue + ;; + + -static) + # If we have no pic_flag, then this is the same as -all-static. + if test -z "$pic_flag" && test -n "$link_static_flag"; then + compile_command="$compile_command $link_static_flag" + finalize_command="$finalize_command $link_static_flag" + fi + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + + # Some other compiler flag. + -* | +*) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case "$arg" in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) + arg="\"$arg\"" + ;; + esac + ;; + + *.o | *.obj | *.a | *.lib) + # A standard object. + libobjs="$libobjs $arg" + ;; + + *.lo) + # A library object. + if test "$prev" = dlfiles; then + dlfiles="$dlfiles $arg" + if test "$build_libtool_libs" = yes && test "$dlopen" = yes; then + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e "$lo2o"` + prev= + fi + libobjs="$libobjs $arg" + ;; + + *.la) + # A libtool-controlled library. + + dlname= + libdir= + library_names= + old_library= + + # Check to see that this really is a libtool archive. + if (sed -e '2q' $arg | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$arg' is not a valid libtool archive" 1>&2 + exit 1 + fi + + # If the library was installed with an old release of libtool, + # it will not redefine variable installed. + installed=yes + + # Read the .la file + # If there is no directory component, then add one. + case "$arg" in + */* | *\\*) . $arg ;; + *) . ./$arg ;; + esac + + # Get the name of the library we link against. + linklib= + for l in $old_library $library_names; do + linklib="$l" + done + + if test -z "$linklib"; then + $echo "$modename: cannot find name of link library for \`$arg'" 1>&2 + exit 1 + fi + + # Find the relevant object directory and library name. + name=`$echo "X$arg" | $Xsed -e 's%^.*/%%' -e 's/\.la$//' -e 's/^lib//'` + + if test "X$installed" = Xyes; then + dir="$libdir" + else + dir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$dir" = "X$arg"; then + dir="$objdir" + else + dir="$dir/$objdir" + fi + fi + + if test -n "$dependency_libs"; then + # Extract -R and -L from dependency_libs + temp_deplibs= + for deplib in $dependency_libs; do + case "$deplib" in + -R*) temp_xrpath=`$echo "X$deplib" | $Xsed -e 's/^-R//'` + case " $rpath $xrpath " in + *" $temp_xrpath "*) ;; + *) xrpath="$xrpath $temp_xrpath";; + esac;; + -L*) case "$compile_command $temp_deplibs " in + *" $deplib "*) ;; + *) temp_deplibs="$temp_deplibs $deplib";; + esac + temp_dir=`$echo "X$deplib" | $Xsed -e 's/^-L//'` + case " $lib_search_path " in + *" $temp_dir "*) ;; + *) lib_search_path="$lib_search_path $temp_dir";; + esac + ;; + *) temp_deplibs="$temp_deplibs $deplib";; + esac + done + dependency_libs="$temp_deplibs" + fi + + if test -z "$libdir"; then + # It is a libtool convenience library, so add in its objects. + convenience="$convenience $dir/$old_library" + old_convenience="$old_convenience $dir/$old_library" + deplibs="$deplibs$dependency_libs" + compile_command="$compile_command $dir/$old_library$dependency_libs" + finalize_command="$finalize_command $dir/$old_library$dependency_libs" + continue + fi + + # This library was specified with -dlopen. + if test "$prev" = dlfiles; then + dlfiles="$dlfiles $arg" + if test -z "$dlname" || test "$dlopen" != yes || test "$build_libtool_libs" = no; then + # If there is no dlname, no dlopen support or we're linking statically, + # we need to preload. + prev=dlprefiles + else + # We should not create a dependency on this library, but we + # may need any libraries it requires. + compile_command="$compile_command$dependency_libs" + finalize_command="$finalize_command$dependency_libs" + prev= + continue + fi + fi + + # The library was specified with -dlpreopen. + if test "$prev" = dlprefiles; then + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + dlprefiles="$dlprefiles $dir/$old_library" + else + dlprefiles="$dlprefiles $dir/$linklib" + fi + prev= + fi + + if test -n "$library_names" && + { test "$prefer_static_libs" = no || test -z "$old_library"; }; then + link_against_libtool_libs="$link_against_libtool_libs $arg" + if test -n "$shlibpath_var"; then + # Make sure the rpath contains only unique directories. + case "$temp_rpath " in + *" $dir "*) ;; + *) temp_rpath="$temp_rpath $dir" ;; + esac + fi + + # We need an absolute path. + case "$dir" in + [\\/] | [A-Za-z]:[\\/]*) absdir="$dir" ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 + $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 + absdir="$dir" + fi + ;; + esac + + # This is the magic to use -rpath. + # Skip directories that are in the system default run-time + # search path, unless they have been requested with -R. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + + lib_linked=yes + case "$hardcode_action" in + immediate | unsupported) + if test "$hardcode_direct" = no; then + compile_command="$compile_command $dir/$linklib" + deplibs="$deplibs $dir/$linklib" + case "$host" in + *-*-cygwin* | *-*-mingw* | *-*-os2*) + dllsearchdir=`cd "$dir" && pwd || echo "$dir"` + if test -n "$dllsearchpath"; then + dllsearchpath="$dllsearchpath:$dllsearchdir" + else + dllsearchpath="$dllsearchdir" + fi + ;; + esac + elif test "$hardcode_minus_L" = no; then + case "$host" in + *-*-sunos*) + compile_shlibpath="$compile_shlibpath$dir:" + ;; + esac + case "$compile_command " in + *" -L$dir "*) ;; + *) compile_command="$compile_command -L$dir";; + esac + compile_command="$compile_command -l$name" + deplibs="$deplibs -L$dir -l$name" + elif test "$hardcode_shlibpath_var" = no; then + case ":$compile_shlibpath:" in + *":$dir:"*) ;; + *) compile_shlibpath="$compile_shlibpath$dir:";; + esac + compile_command="$compile_command -l$name" + deplibs="$deplibs -l$name" + else + lib_linked=no + fi + ;; + + relink) + if test "$hardcode_direct" = yes; then + compile_command="$compile_command $absdir/$linklib" + deplibs="$deplibs $absdir/$linklib" + elif test "$hardcode_minus_L" = yes; then + case "$compile_command " in + *" -L$absdir "*) ;; + *) compile_command="$compile_command -L$absdir";; + esac + compile_command="$compile_command -l$name" + deplibs="$deplibs -L$absdir -l$name" + elif test "$hardcode_shlibpath_var" = yes; then + case ":$compile_shlibpath:" in + *":$absdir:"*) ;; + *) compile_shlibpath="$compile_shlibpath$absdir:";; + esac + compile_command="$compile_command -l$name" + deplibs="$deplibs -l$name" + else + lib_linked=no + fi + ;; + + *) + lib_linked=no + ;; + esac + + if test "$lib_linked" != yes; then + $echo "$modename: configuration error: unsupported hardcode properties" + exit 1 + fi + + # Finalize command for both is simple: just hardcode it. + if test "$hardcode_direct" = yes; then + finalize_command="$finalize_command $libdir/$linklib" + elif test "$hardcode_minus_L" = yes; then + case "$finalize_command " in + *" -L$libdir "*) ;; + *) finalize_command="$finalize_command -L$libdir";; + esac + finalize_command="$finalize_command -l$name" + elif test "$hardcode_shlibpath_var" = yes; then + case ":$finalize_shlibpath:" in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:";; + esac + finalize_command="$finalize_command -l$name" + else + # We cannot seem to hardcode it, guess we'll fake it. + case "$finalize_command " in + *" -L$dir "*) ;; + *) finalize_command="$finalize_command -L$libdir";; + esac + finalize_command="$finalize_command -l$name" + fi + else + # Transform directly to old archives if we don't build new libraries. + if test -n "$pic_flag" && test -z "$old_library"; then + $echo "$modename: cannot find static library for \`$arg'" 1>&2 + exit 1 + fi + + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test "$hardcode_direct" != unsupported; then + test -n "$old_library" && linklib="$old_library" + compile_command="$compile_command $dir/$linklib" + finalize_command="$finalize_command $dir/$linklib" + else + case "$compile_command " in + *" -L$dir "*) ;; + *) compile_command="$compile_command -L$dir";; + esac + compile_command="$compile_command -l$name" + case "$finalize_command " in + *" -L$dir "*) ;; + *) finalize_command="$finalize_command -L$dir";; + esac + finalize_command="$finalize_command -l$name" + fi + fi + + # Add in any libraries that this one depends upon. + compile_command="$compile_command$dependency_libs" + finalize_command="$finalize_command$dependency_libs" + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case "$arg" in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) + arg="\"$arg\"" + ;; + esac + ;; + esac + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + done + + if test -n "$prev"; then + $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + + oldlibs= + # calculate the name of the file, without its directory + outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` + libobjs_save="$libobjs" + + case "$output" in + "") + $echo "$modename: you must specify an output file" 1>&2 + $echo "$help" 1>&2 + exit 1 + ;; + + *.a | *.lib) + if test -n "$link_against_libtool_libs"; then + $echo "$modename: error: cannot link libtool libraries into archives" 1>&2 + exit 1 + fi + + if test -n "$deplibs"; then + $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 + fi + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 + fi + + if test -n "$xrpath"; then + $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for archives" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 + fi + + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 + fi + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs="$output" + ;; + + *.la) + # Make sure we only generate libraries of the form `libNAME.la'. + case "$outputname" in + lib*) + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + eval libname=\"$libname_spec\" + ;; + *) + if test "$module" = no; then + $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + if test "$need_lib_prefix" != no; then + # Add the "lib" prefix for modules if required + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` + eval libname=\"$libname_spec\" + else + libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` + fi + ;; + esac + + output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` + if test "X$output_objdir" = "X$output"; then + output_objdir="$objdir" + else + output_objdir="$output_objdir/$objdir" + fi + + if test -n "$objs"; then + $echo "$modename: cannot build libtool library \`$output' from non-libtool objects:$objs" 2>&1 + exit 1 + fi + + # How the heck are we supposed to write a wrapper for a shared library? + if test -n "$link_against_libtool_libs"; then + $echo "$modename: error: cannot link shared libraries into libtool libraries" 1>&2 + exit 1 + fi + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for libtool libraries" 1>&2 + fi + + set dummy $rpath + if test $# -gt 2; then + $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 + fi + install_libdir="$2" + + oldlibs= + if test -z "$rpath"; then + if test "$build_libtool_libs" = yes; then + # Building a libtool convenience library. + libext=al + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + dependency_libs="$deplibs" + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for convenience libraries" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 + fi + else + + # Parse the version information argument. + IFS="${IFS= }"; save_ifs="$IFS"; IFS=':' + set dummy $vinfo 0 0 0 + IFS="$save_ifs" + + if test -n "$8"; then + $echo "$modename: too many parameters to \`-version-info'" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + current="$2" + revision="$3" + age="$4" + + # Check that each of the things are valid numbers. + case "$current" in + 0 | [1-9] | [1-9][0-9]*) ;; + *) + $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit 1 + ;; + esac + + case "$revision" in + 0 | [1-9] | [1-9][0-9]*) ;; + *) + $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit 1 + ;; + esac + + case "$age" in + 0 | [1-9] | [1-9][0-9]*) ;; + *) + $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit 1 + ;; + esac + + if test $age -gt $current; then + $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit 1 + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case "$version_type" in + none) ;; + + irix) + major=`expr $current - $age + 1` + versuffix="$major.$revision" + verstring="sgi$major.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test $loop != 0; do + iface=`expr $revision - $loop` + loop=`expr $loop - 1` + verstring="sgi$major.$iface:$verstring" + done + ;; + + linux) + major=.`expr $current - $age` + versuffix="$major.$age.$revision" + ;; + + osf) + major=`expr $current - $age` + versuffix=".$current.$age.$revision" + verstring="$current.$age.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$age + while test $loop != 0; do + iface=`expr $current - $loop` + loop=`expr $loop - 1` + verstring="$verstring:${iface}.0" + done + + # Make executables depend on our current version. + verstring="$verstring:${current}.0" + ;; + + sunos) + major=".$current" + versuffix=".$current.$revision" + ;; + + freebsd-aout) + major=".$current" + versuffix=".$current.$revision"; + ;; + + freebsd-elf) + major=".$current" + versuffix=".$current"; + ;; + + windows) + # Like Linux, but with '-' rather than '.', since we only + # want one extension on Windows 95. + major=`expr $current - $age` + versuffix="-$major-$age-$revision" + ;; + + *) + $echo "$modename: unknown library version type \`$version_type'" 1>&2 + echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit 1 + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + verstring="0.0" + if test "$need_version" = no; then + versuffix= + else + versuffix=".0.0" + fi + fi + + # Remove version info from name if versioning should be avoided + if test "$avoid_version" = yes && test "$need_version" = no; then + major= + versuffix= + verstring="" + fi + + # Check to see if the archive will have undefined symbols. + if test "$allow_undefined" = yes; then + if test "$allow_undefined_flag" = unsupported; then + $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 + build_libtool_libs=no + build_old_libs=yes + fi + else + # Don't allow undefined symbols. + allow_undefined_flag="$no_undefined_flag" + fi + + dependency_libs="$deplibs" + case "$host" in + *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*) + # these systems don't actually have a c library (as such)! + ;; + *-*-freebsd*) + # FreeBSD doesn't need this... + ;; + *) + # Add libc to deplibs on all other systems. + deplibs="$deplibs -lc" + ;; + esac + fi + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$compile_rpath " in + *" $libdir "*) ;; + *) compile_rpath="$compile_rpath $libdir" ;; + esac + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath="$rpath" + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath="$rpath" + + # Create the output directory, or remove our outputs if we need to. + if test -d $output_objdir; then + $show "${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*" + $run ${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.* + else + $show "$mkdir $output_objdir" + $run $mkdir $output_objdir + status=$? + if test $status -ne 0 && test ! -d $output_objdir; then + exit $status + fi + fi + + # Now set the variables for building old libraries. + if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then + if test "$release_suffix" = all; then + oldlibs="$oldlibs $output_objdir/$libname$release.$libext" + else + oldlibs="$oldlibs $output_objdir/$libname.$libext" + fi + + # Transform .lo files to .o files. + oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` + fi + + if test "$build_libtool_libs" = yes; then + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release="" + versuffix="" + major="" + newdeplibs= + droppeddeps=no + case "$deplibs_check_method" in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behaviour. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $rm conftest.c + cat > conftest.c </dev/null` + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null \ + | grep " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib="$potent_lib" + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | sed 's/.* -> //'` + case "$potliblink" in + [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; + *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ + | sed 10q \ + | egrep "$file_magic_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + if test -n "$a_deplib" ; then + droppeddeps=yes + echo + echo "*** Warning: This library needs some functionality provided by $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have." + fi + else + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + fi + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs="" + if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ + -e 's/ -[LR][^ ]*//g' -e 's/[ ]//g' | + grep . >/dev/null; then + echo + if test "X$deplibs_check_method" = "Xnone"; then + echo "*** Warning: inter-library dependencies are not supported in this platform." + else + echo "*** Warning: inter-library dependencies are not known to be supported." + fi + echo "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + fi + ;; + esac + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save + + if test "$droppeddeps" = yes; then + if test "$module" = yes; then + echo + echo "*** Warning: libtool could not satisfy all declared inter-library" + echo "*** dependencies of module $libname. Therefore, libtool will create" + echo "*** a static module, that should work as long as the dlopening" + echo "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + if test "$release_suffix" = all; then + oldlibs="$output_objdir/$libname$release.$libext" + else + oldlibs="$output_objdir/$libname.$libext" + fi + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + echo "*** The inter-library dependencies that have been dropped here will be" + echo "*** automatically added whenever a program is linked with this library" + echo "*** or is declared to -dlopen it." + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + + # Test again, we may have decided not to build it any more + if test "$build_libtool_libs" = yes; then + # Get the real and link names of the library. + eval library_names=\"$library_names_spec\" + set dummy $library_names + realname="$2" + shift; shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + + lib="$output_objdir/$realname" + for link + do + linknames="$linknames $link" + done + + # Ensure that we have .o objects for linkers which dislike .lo + # (e.g. aix) incase we are running --disable-static + for obj in $libobjs; do + oldobj=`$echo "X$obj" | $Xsed -e "$lo2o"` + if test ! -f $oldobj; then + $show "${LN_S} $obj $oldobj" + $run ${LN_S} $obj $oldobj || exit $? + fi + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then + $show "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $run $rm $export_symbols + eval cmds=\"$export_symbols_cmds\" + IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + if test -n "$export_symbols_regex"; then + $show "egrep -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" + $run eval 'egrep -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + $show "$mv \"${export_symbols}T\" \"$export_symbols\"" + $run eval '$mv "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' + fi + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + else + gentop="$output_objdir/${outputname}x" + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + $show "mkdir $gentop" + $run mkdir "$gentop" + status=$? + if test $status -ne 0 && test ! -d "$gentop"; then + exit $status + fi + generated="$generated $gentop" + + for xlib in $convenience; do + # Extract the objects. + case "$xlib" in + [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; + *) xabs=`pwd`"/$xlib" ;; + esac + xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` + xdir="$gentop/$xlib" + + $show "${rm}r $xdir" + $run ${rm}r "$xdir" + $show "mkdir $xdir" + $run mkdir "$xdir" + status=$? + if test $status -ne 0 && test ! -d "$xdir"; then + exit $status + fi + $show "(cd $xdir && $AR x $xabs)" + $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? + + libobjs="$libobjs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` + done + fi + fi + + if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + linkopts="$linkopts $flag" + fi + + # Do each of the archive commands. + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval cmds=\"$archive_expsym_cmds\" + else + eval cmds=\"$archive_cmds\" + fi + IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" + $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test "$module" = yes || test "$export_dynamic" = yes; then + # On all known operating systems, these are identical. + dlname="$soname" + fi + fi + ;; + + *.lo | *.o | *.obj) + if test -n "$link_against_libtool_libs"; then + $echo "$modename: error: cannot link libtool libraries into objects" 1>&2 + exit 1 + fi + + if test -n "$deplibs"; then + $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 + fi + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 + fi + + if test -n "$xrpath"; then + $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 + fi + + case "$output" in + *.lo) + if test -n "$objs"; then + $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 + exit 1 + fi + libobj="$output" + obj=`$echo "X$output" | $Xsed -e "$lo2o"` + ;; + *) + libobj= + obj="$output" + ;; + esac + + # Delete the old objects. + $run $rm $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # reload_cmds runs $LD directly, so let us get rid of + # -Wl from whole_archive_flag_spec + wl= + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" + else + gentop="$output_objdir/${obj}x" + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + $show "mkdir $gentop" + $run mkdir "$gentop" + status=$? + if test $status -ne 0 && test ! -d "$gentop"; then + exit $status + fi + generated="$generated $gentop" + + for xlib in $convenience; do + # Extract the objects. + case "$xlib" in + [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; + *) xabs=`pwd`"/$xlib" ;; + esac + xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` + xdir="$gentop/$xlib" + + $show "${rm}r $xdir" + $run ${rm}r "$xdir" + $show "mkdir $xdir" + $run mkdir "$xdir" + status=$? + if test $status -ne 0 && test ! -d "$xdir"; then + exit $status + fi + $show "(cd $xdir && $AR x $xabs)" + $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? + + reload_conv_objs="$reload_objs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` + done + fi + fi + + # Create the old-style object. + reload_objs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" + + output="$obj" + eval cmds=\"$reload_cmds\" + IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + exit 0 + fi + + if test "$build_libtool_libs" != yes; then + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + $show "echo timestamp > $libobj" + $run eval "echo timestamp > $libobj" || exit $? + exit 0 + fi + + if test -n "$pic_flag"; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output="$libobj" + eval cmds=\"$reload_cmds\" + IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + else + # Just create a symlink. + $show $rm $libobj + $run $rm $libobj + $show "$LN_S $obj $libobj" + $run $LN_S $obj $libobj || exit $? + fi + + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + exit 0 + ;; + + # Anything else should be a program. + *) + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 + fi + + if test "$preload" = yes; then + if test "$dlopen" = unknown && test "$dlopen_self" = unknown && + test "$dlopen_self_static" = unknown; then + $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." + fi + fi + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$compile_rpath " in + *" $libdir "*) ;; + *) compile_rpath="$compile_rpath $libdir" ;; + esac + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath="$rpath" + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath="$rpath" + + output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` + if test "X$output_objdir" = "X$output"; then + output_objdir="$objdir" + else + output_objdir="$output_objdir/$objdir" + fi + + # Create the binary in the object directory, then wrap it. + if test ! -d $output_objdir; then + $show "$mkdir $output_objdir" + $run $mkdir $output_objdir + status=$? + if test $status -ne 0 && test ! -d $output_objdir; then + exit $status + fi + fi + + if test -n "$libobjs" && test "$build_old_libs" = yes; then + # Transform all the library objects into standard objects. + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + fi + + dlsyms= + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + dlsyms="${outputname}S.c" + else + $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 + fi + fi + + if test -n "$dlsyms"; then + case "$dlsyms" in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist="$output_objdir/${outputname}.nm" + + $show "$rm $nlist ${nlist}S ${nlist}T" + $run $rm "$nlist" "${nlist}S" "${nlist}T" + + # Parse the name list into a source file. + $show "creating $output_objdir/$dlsyms" + + test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ +/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ +/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +/* Prevent the only kind of declaration conflicts we can make. */ +#define lt_preloaded_symbols some_other_symbol + +/* External symbol declarations for the compiler. */\ +" + + if test "$dlself" = yes; then + $show "generating symbol list for \`$output'" + + test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$echo "X$objs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + for arg in $progfiles; do + $show "extracting global C symbols from \`$arg'" + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $run eval 'egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + if test -n "$export_symbols_regex"; then + $run eval 'egrep -e "$export_symbols_regex" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols="$output_objdir/$output.exp" + $run $rm $export_symbols + $run eval "sed -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + else + $run eval "sed -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"' + $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T' + $run eval 'mv "$nlist"T "$nlist"' + fi + fi + + for arg in $dlprefiles; do + $show "extracting global C symbols from \`$arg'" + name=`echo "$arg" | sed -e 's%^.*/%%'` + $run eval 'echo ": $name " >> "$nlist"' + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + + if test -z "$run"; then + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $mv "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if grep -v "^: " < "$nlist" | sort +2 | uniq > "$nlist"S; then + : + else + grep -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' + else + echo '/* NONE */' >> "$output_objdir/$dlsyms" + fi + + $echo >> "$output_objdir/$dlsyms" "\ + +#undef lt_preloaded_symbols + +#if defined (__STDC__) && __STDC__ +# define lt_ptr_t void * +#else +# define lt_ptr_t char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr_t address; +} +lt_preloaded_symbols[] = +{\ +" + + sed -n -e 's/^: \([^ ]*\) $/ {\"\1\", (lt_ptr_t) 0},/p' \ + -e 's/^. \([^ ]*\) \([^ ]*\)$/ {"\2", (lt_ptr_t) \&\2},/p' \ + < "$nlist" >> "$output_objdir/$dlsyms" + + $echo >> "$output_objdir/$dlsyms" "\ + {0, (lt_ptr_t) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + fi + + pic_flag_for_symtable= + case "$host" in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2*|*-*-freebsd3.0*) + case "$compile_command " in + *" -static "*) ;; + *) pic_flag_for_symtable=" $pic_flag -DPIC -DFREEBSD_WORKAROUND";; + esac + esac + + # Now compile the dynamic symbol file. + $show "(cd $output_objdir && $C_compiler -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" + $run eval '(cd $output_objdir && $C_compiler -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? + + # Clean up the generated files. + $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" + $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" + + # Transform the symbol file into the correct name. + compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + ;; + *) + $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 + exit 1 + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` + fi + + if test -z "$link_against_libtool_libs" || test "$build_libtool_libs" != yes; then + # Replace the output file specification. + compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + link_command="$compile_command$compile_rpath" + + # We have no uninstalled library dependencies, so finalize right now. + $show "$link_command" + $run eval "$link_command" + status=$? + + # Delete the generated files. + if test -n "$dlsyms"; then + $show "$rm $output_objdir/${outputname}S.${objext}" + $run $rm "$output_objdir/${outputname}S.${objext}" + fi + + exit $status + fi + + if test -n "$shlibpath_var"; then + # We should set the shlibpath_var + rpath= + for dir in $temp_rpath; do + case "$dir" in + [\\/]* | [A-Za-z]:[\\/]*) + # Absolute path. + rpath="$rpath$dir:" + ;; + *) + # Relative path: add a thisdir entry. + rpath="$rpath\$thisdir/$dir:" + ;; + esac + done + temp_rpath="$rpath" + fi + + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + rpath="$rpath$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test "$hardcode_action" = relink; then + # Fast installation is not supported + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + + $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 + $echo "$modename: \`$output' will be relinked during installation" 1>&2 + else + if test "$fast_install" != no; then + link_command="$finalize_var$compile_command$finalize_rpath" + if test "$fast_install" = yes; then + relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` + else + # fast_install is set to needless + relink_command= + fi + else + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + fi + fi + + # Replace the output file specification. + link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname + + $show "$link_command" + $run eval "$link_command" || exit $? + + # Now create the wrapper script. + $show "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` + fi + + # Quote $echo for shipping. + if test "X$echo" = "X$SHELL $0 --fallback-echo"; then + case "$0" in + [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";; + *) qecho="$SHELL `pwd`/$0 --fallback-echo";; + esac + qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` + else + qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` + fi + + # Only actually do things if our run command is non-null. + if test -z "$run"; then + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) output=`echo $output|sed 's,.exe$,,'` ;; + esac + $rm $output + trap "$rm $output; exit 1" 1 2 15 + + $echo > $output "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e 1s/^X//' +sed_quote_subst='$sed_quote_subst' + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +if test \"\${CDPATH+set}\" = set; then CDPATH=; export CDPATH; fi + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variable: + link_against_libtool_libs='$link_against_libtool_libs' +else + # When we are sourced in execute mode, \$file and \$echo are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + echo=\"$qecho\" + file=\"\$0\" + # Make sure echo works. + if test \"X\$1\" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift + elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then + # Yippee, \$echo works! + : + else + # Restart under the correct shell, and then maybe \$echo will work. + exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} + fi + fi\ +" + $echo >> $output "\ + + # Find the directory that this script lives in. + thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | sed -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\` + done + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test "$fast_install" = yes; then + echo >> $output "\ + program=lt-'$outputname' + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || \\ + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | sed 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $mkdir \"\$progdir\" + else + $rm \"\$progdir/\$file\" + fi" + + echo >> $output "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if (cd \"\$thisdir\" && eval \$relink_command); then : + else + $rm \"\$progdir/\$file\" + exit 1 + fi + fi + + $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $rm \"\$progdir/\$program\"; + $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $rm \"\$progdir/\$file\" + fi" + else + echo >> $output "\ + program='$outputname$exeext' + progdir=\"\$thisdir/$objdir\" +" + fi + + echo >> $output "\ + + if test -f \"\$progdir/\$program\"; then" + + # Export our shlibpath_var if we have one. + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $echo >> $output "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` + + export $shlibpath_var +" + fi + + # fixup the dll searchpath if we need to. + if test -n "$dllsearchpath"; then + $echo >> $output "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + $echo >> $output "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. +" + case $host in + *-*-cygwin* | *-*-mingw | *-*-os2*) + # win32 systems need to use the prog path for dll + # lookup to work + $echo >> $output "\ + exec \$progdir\\\\\$program \${1+\"\$@\"} +" + ;; + *) + $echo >> $output "\ + # Export the path to the program. + PATH=\"\$progdir:\$PATH\" + export PATH + + exec \$program \${1+\"\$@\"} +" + ;; + esac + $echo >> $output "\ + \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" + exit 1 + fi + else + # The program doesn't exist. + \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2 + \$echo \"This script is just a wrapper for \$program.\" 1>&2 + echo \"See the $PACKAGE documentation for more information.\" 1>&2 + exit 1 + fi +fi\ +" + chmod +x $output + fi + exit 0 + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + if test "$build_libtool_libs" = convenience; then + oldobjs="$libobjs_save" + addlibs="$convenience" + build_libtool_libs=no + else + if test "$build_libtool_libs" = module; then + oldobjs="$libobjs_save" + build_libtool_libs=no + else + oldobjs="$objs "`$echo "X$libobjs_save" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP` + fi + addlibs="$old_convenience" + fi + + if test -n "$addlibs"; then + gentop="$output_objdir/${outputname}x" + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + $show "mkdir $gentop" + $run mkdir "$gentop" + status=$? + if test $status -ne 0 && test ! -d "$gentop"; then + exit $status + fi + generated="$generated $gentop" + + # Add in members from convenience archives. + for xlib in $addlibs; do + # Extract the objects. + case "$xlib" in + [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; + *) xabs=`pwd`"/$xlib" ;; + esac + xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` + xdir="$gentop/$xlib" + + $show "${rm}r $xdir" + $run ${rm}r "$xdir" + $show "mkdir $xdir" + $run mkdir "$xdir" + status=$? + if test $status -ne 0 && test ! -d "$xdir"; then + exit $status + fi + $show "(cd $xdir && $AR x $xabs)" + $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? + + oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP` + done + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then + eval cmds=\"$old_archive_from_new_cmds\" + else + # Ensure that we have .o objects in place incase we decided + # not to build a shared library, and have fallen back to building + # static libs even though --disable-static was passed! + for oldobj in $oldobjs; do + if test ! -f $oldobj; then + obj=`$echo "X$oldobj" | $Xsed -e "$o2lo"` + $show "${LN_S} $obj $oldobj" + $run ${LN_S} $obj $oldobj || exit $? + fi + done + + eval cmds=\"$old_archive_cmds\" + fi + IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + done + + if test -n "$generated"; then + $show "${rm}r$generated" + $run ${rm}r$generated + fi + + # Now create the libtool archive. + case "$output" in + *.la) + old_library= + if test "$release_suffix" = all; then + test "$build_old_libs" = yes && old_library="$libname$release.$libext" + else + test "$build_old_libs" = yes && old_library="$libname.$libext" + fi + $show "creating $output" + + if test -n "$xrpath"; then + temp_xrpath= + for libdir in $xrpath; do + temp_xrpath="$temp_xrpath -R$libdir" + done + dependency_libs="$temp_xrpath $dependency_libs" + fi + + # Only create the output if not a dry run. + if test -z "$run"; then + for installed in no yes; do + if test "$installed" = yes; then + if test -z "$install_libdir"; then + break + fi + output="$output_objdir/$outputname"i + fi + $rm $output + $echo > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$dlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Directory that this library needs to be installed in: +libdir='$install_libdir'\ +" + done + fi + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" + $run eval "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" || exit $? + ;; + esac + exit 0 + ;; + + # libtool install mode + install) + modename="$modename: install" + + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh; then + # Aesthetically quote it. + arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` + case "$arg" in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) + arg="\"$arg\"" + ;; + esac + install_prog="$arg " + arg="$1" + shift + else + install_prog= + arg="$nonopt" + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case "$arg" in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog$arg" + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=no + stripme= + for arg + do + if test -n "$dest"; then + files="$files $dest" + dest="$arg" + continue + fi + + case "$arg" in + -d) isdir=yes ;; + -f) prev="-f" ;; + -g) prev="-g" ;; + -m) prev="-m" ;; + -o) prev="-o" ;; + -s) + stripme=" -s" + continue + ;; + -*) ;; + + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + prev= + else + dest="$arg" + continue + fi + ;; + esac + + # Aesthetically quote the argument. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case "$arg" in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog $arg" + done + + if test -z "$install_prog"; then + $echo "$modename: you must specify an install program" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + if test -n "$prev"; then + $echo "$modename: the \`$prev' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + if test -z "$files"; then + if test -z "$dest"; then + $echo "$modename: no file or destination specified" 1>&2 + else + $echo "$modename: you must specify a destination" 1>&2 + fi + $echo "$help" 1>&2 + exit 1 + fi + + # Strip any trailing slash from the destination. + dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=yes + if test "$isdir" = yes; then + destdir="$dest" + destname= + else + destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` + test "X$destdir" = "X$dest" && destdir=. + destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` + + # Not a directory, so check to see that there is only one file specified. + set dummy $files + if test $# -gt 2; then + $echo "$modename: \`$dest' is not a directory" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + fi + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case "$file" in + *.lo) ;; + *) + $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 + $echo "$help" 1>&2 + exit 1 + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case "$file" in + *.a | *.lib) + # Do the static libraries later. + staticlibs="$staticlibs $file" + ;; + + *.la) + # Check to see that this really is a libtool archive. + if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + library_names= + old_library= + # If there is no directory component, then add one. + case "$file" in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) current_libdirs="$current_libdirs $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) future_libdirs="$future_libdirs $libdir" ;; + esac + fi + + dir="`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/" + test "X$dir" = "X$file/" && dir= + dir="$dir$objdir" + + # See the names of the shared library. + set dummy $library_names + if test -n "$2"; then + realname="$2" + shift + shift + + # Install the shared library and build the symlinks. + $show "$install_prog $dir/$realname $destdir/$realname" + $run eval "$install_prog $dir/$realname $destdir/$realname" || exit $? + + if test $# -gt 0; then + # Delete the old symlinks, and create new ones. + for linkname + do + if test "$linkname" != "$realname"; then + $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" + $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" + fi + done + fi + + # Do each command in the postinstall commands. + lib="$destdir/$realname" + eval cmds=\"$postinstall_cmds\" + IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + # Install the pseudo-library for information purposes. + if test "$install_ltlibs" = yes; then + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + instname="$dir/$name"i + $show "$install_prog $instname $destdir/$name" + $run eval "$install_prog $instname $destdir/$name" || exit $? + fi + + # Maybe install the static library, too. + test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" + fi + + # Deduce the name of the destination old-style object file. + case "$destfile" in + *.lo) + staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` + ;; + *.o | *.obj) + staticdest="$destfile" + destfile= + ;; + *) + $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 + $echo "$help" 1>&2 + exit 1 + ;; + esac + + # Install the libtool object if requested. + if test -n "$destfile"; then + $show "$install_prog $file $destfile" + $run eval "$install_prog $file $destfile" || exit $? + fi + + # Install the old object if enabled. + if test "$build_old_libs" = yes; then + # Deduce the name of the old-style object file. + staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` + + $show "$install_prog $staticobj $staticdest" + $run eval "$install_prog \$staticobj \$staticdest" || exit $? + fi + exit 0 + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" + fi + + # Do a test to see if this is really a libtool program. + if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + link_against_libtool_libs= + relink_command= + + # If there is no directory component, then add one. + case "$file" in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Check the variables that should have been set. + if test -z "$link_against_libtool_libs"; then + $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2 + exit 1 + fi + + finalize=yes + for lib in $link_against_libtool_libs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + # If there is no directory component, then add one. + case "$lib" in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + fi + libfile="$libdir/`$echo "X$lib" | $Xsed -e 's%^.*/%%g'`" + if test -n "$libdir" && test ! -f "$libfile"; then + finalize=no + fi + done + + outputname= + if test "$fast_install" = no && test -n "$relink_command"; then + if test "$finalize" = yes && test -z "$run"; then + tmpdir="/tmp" + test -n "$TMPDIR" && tmpdir="$TMPDIR" + tmpdir="$tmpdir/libtool-$$" + if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then : + else + $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 + continue + fi + outputname="$tmpdir/$file" + # Replace the output file specification. + relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` + + $show "$relink_command" + if $run eval "$relink_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 + ${rm}r "$tmpdir" + continue + fi + file="$outputname" + else + $echo "$modename: warning: cannot relink \`$file'" 1>&2 + fi + else + # Install the binary that we compiled earlier. + file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + $show "$install_prog$stripme $file $destfile" + $run eval "$install_prog\$stripme \$file \$destfile" || exit $? + test -n "$outputname" && ${rm}r "$tmpdir" + ;; + esac + done + + for file in $staticlibs; do + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + + # Set up the ranlib parameters. + oldlib="$destdir/$name" + + $show "$install_prog $file $oldlib" + $run eval "$install_prog \$file \$oldlib" || exit $? + + # Do each command in the postinstall commands. + eval cmds=\"$old_postinstall_cmds\" + IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + done + + if test -n "$future_libdirs"; then + $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 + fi + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + test -n "$run" && current_libdirs=" -n$current_libdirs" + exec $SHELL $0 --finish$current_libdirs + exit 1 + fi + + exit 0 + ;; + + # libtool finish mode + finish) + modename="$modename: finish" + libdirs="$nonopt" + admincmds= + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for dir + do + libdirs="$libdirs $dir" + done + + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + eval cmds=\"$finish_cmds\" + IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || admincmds="$admincmds + $cmd" + done + IFS="$save_ifs" + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $run eval "$cmds" || admincmds="$admincmds + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + test "$show" = : && exit 0 + + echo "----------------------------------------------------------------------" + echo "Libraries have been installed in:" + for libdir in $libdirs; do + echo " $libdir" + done + echo + echo "If you ever happen to want to link against installed libraries" + echo "in a given directory, LIBDIR, you must either use libtool, and" + echo "specify the full pathname of the library, or use \`-LLIBDIR'" + echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + echo " - add LIBDIR to the \`$shlibpath_var' environment variable" + echo " during execution" + fi + if test -n "$runpath_var"; then + echo " - add LIBDIR to the \`$runpath_var' environment variable" + echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + echo " - use the \`$flag' linker flag" + fi + if test -n "$admincmds"; then + echo " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + fi + echo + echo "See any operating system documentation about shared libraries for" + echo "more information, such as the ld(1) and ld.so(8) manual pages." + echo "----------------------------------------------------------------------" + exit 0 + ;; + + # libtool execute mode + execute) + modename="$modename: execute" + + # The first argument is the command name. + cmd="$nonopt" + if test -z "$cmd"; then + $echo "$modename: you must specify a COMMAND" 1>&2 + $echo "$help" + exit 1 + fi + + # Handle -dlopen flags immediately. + for file in $execute_dlfiles; do + if test ! -f "$file"; then + $echo "$modename: \`$file' is not a file" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + dir= + case "$file" in + *.la) + # Check to see that this really is a libtool archive. + if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + # Read the libtool library. + dlname= + library_names= + + # If there is no directory component, then add one. + case "$file" in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" + continue + fi + + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + + if test -f "$dir/$objdir/$dlname"; then + dir="$dir/$objdir" + else + $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 + exit 1 + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + ;; + + *) + $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir="$absdir" + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic="$magic" + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case "$file" in + -*) ;; + *) + # Do a test to see if this is really a libtool program. + if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + # If there is no directory component, then add one. + case "$file" in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Transform arg to wrapped name. + file="$progdir/$program" + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` + args="$args \"$file\"" + done + + if test -z "$run"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + + # Restore saved enviroment variables + if test "${save_LC_ALL+set}" = set; then + LC_ALL="$save_LC_ALL"; export LC_ALL + fi + if test "${save_LANG+set}" = set; then + LANG="$save_LANG"; export LANG + fi + + # Now actually exec the command. + eval "exec \$cmd$args" + + $echo "$modename: cannot exec \$cmd$args" + exit 1 + else + # Display what would be done. + eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" + $echo "export $shlibpath_var" + $echo "$cmd$args" + exit 0 + fi + ;; + + # libtool uninstall mode + uninstall) + modename="$modename: uninstall" + rm="$nonopt" + files= + + for arg + do + case "$arg" in + -*) rm="$rm $arg" ;; + *) files="$files $arg" ;; + esac + done + + if test -z "$rm"; then + $echo "$modename: you must specify an RM program" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + for file in $files; do + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + + rmfiles="$file" + + case "$name" in + *.la) + # Possibly a libtool archive, so verify it. + if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + . $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + rmfiles="$rmfiles $dir/$n" + done + test -n "$old_library" && rmfiles="$rmfiles $dir/$old_library" + + $show "$rm $rmfiles" + $run $rm $rmfiles + + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + eval cmds=\"$postuninstall_cmds\" + IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" + done + IFS="$save_ifs" + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + eval cmds=\"$old_postuninstall_cmds\" + IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" + done + IFS="$save_ifs" + fi + + # FIXME: should reinstall the best remaining shared library. + fi + ;; + + *.lo) + if test "$build_old_libs" = yes; then + oldobj=`$echo "X$name" | $Xsed -e "$lo2o"` + rmfiles="$rmfiles $dir/$oldobj" + fi + $show "$rm $rmfiles" + $run $rm $rmfiles + ;; + + *) + $show "$rm $rmfiles" + $run $rm $rmfiles + ;; + esac + done + exit 0 + ;; + + "") + $echo "$modename: you must specify a MODE" 1>&2 + $echo "$generic_help" 1>&2 + exit 1 + ;; + esac + + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$generic_help" 1>&2 + exit 1 +fi # test -z "$show_help" + +# We need to display help for each of the modes. +case "$mode" in +"") $echo \ +"Usage: $modename [OPTION]... [MODE-ARG]... + +Provide generalized library-building support services. + + --config show all configuration variables + --debug enable verbose shell tracing +-n, --dry-run display commands without modifying any files + --features display basic configuration information and exit + --finish same as \`--mode=finish' + --help display this help message and exit + --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] + --quiet same as \`--silent' + --silent don't print informational messages + --version print version information + +MODE must be one of the following: + + compile compile a source file into a libtool object + execute automatically set library path, then run a program + finish complete the installation of libtool libraries + install install libraries or executables + link create a library or an executable + uninstall remove libraries from an installed directory + +MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for +a more detailed description of MODE." + exit 0 + ;; + +compile) + $echo \ +"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -static always build a \`.o' file suitable for static linking + +COMPILE-COMMAND is a command to be used in creating a \`standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix \`.c' with the +library object suffix, \`.lo'." + ;; + +execute) + $echo \ +"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to \`-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + +finish) + $echo \ +"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the \`--dry-run' option if you just want to see what would be executed." + ;; + +install) + $echo \ +"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the \`install' or \`cp' program. + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + +link) + $echo \ +"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -static do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + +All other options (arguments beginning with \`-') are ignored. + +Every other argument is treated as a filename. Files ending in \`.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in \`.la', then a libtool library is created, +only library objects (\`.lo' files) may be specified, and \`-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created +using \`ar' and \`ranlib', or on Windows using \`lib'. + +If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file +is created, otherwise an executable program is created." + ;; + +uninstall) + $echo \ +"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + +*) + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$help" 1>&2 + exit 1 + ;; +esac + +echo +$echo "Try \`$modename --help' for more information about other modes." + +exit 0 + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: diff --git a/contrib/php4/missing b/contrib/php4/missing new file mode 100644 index 00000000..e69de29b diff --git a/contrib/php4/mkinstalldirs b/contrib/php4/mkinstalldirs new file mode 100644 index 00000000..e69de29b diff --git a/contrib/php4/php_config.h.in b/contrib/php4/php_config.h.in new file mode 100644 index 00000000..9c85e15a --- /dev/null +++ b/contrib/php4/php_config.h.in @@ -0,0 +1,11 @@ +/* php_config.h.in. Generated automatically from configure.in by autoheader. */ + +/* Define if your C compiler doesn't accept -c and -o together. */ +#undef NO_MINUS_C_MINUS_O + +/* */ +#undef HAVE_RRDTOOL + +/* Whether to build rrdtool as dynamic module */ +#undef COMPILE_DL_RRDTOOL + diff --git a/contrib/php4/php_rrdtool.h b/contrib/php4/php_rrdtool.h new file mode 100644 index 00000000..7bc19983 --- /dev/null +++ b/contrib/php4/php_rrdtool.h @@ -0,0 +1,46 @@ +/* + * php_rrdtool.h + * + * php4 rrdtool module. + * + * Joe Miller, ,, 7/19/2000 + * + * $Id$ + * + */ + +#ifndef _PHP4_RRDTOOL_H +#define _PHP4_RRDTOOL_H + +#if COMPILE_DL +#undef HAVE_RRDTOOL +#define HAVE_RRDTOOL 1 +#endif +#ifndef DLEXPORT +#define DLEXPORT +#endif + +#if HAVE_RRDTOOL + +PHP_MINFO_FUNCTION(rrdtool); + +extern zend_module_entry rrdtool_module_entry; +#define rrdtool_module_ptr &rrdtool_module_entry +#define phpext_rrdtool_ptr rrdtool_module_ptr + +PHP_FUNCTION(rrd_error); +PHP_FUNCTION(rrd_clear_error); +PHP_FUNCTION(rrd_update); +PHP_FUNCTION(rrd_last); +PHP_FUNCTION(rrd_create); +PHP_FUNCTION(rrd_graph); +PHP_FUNCTION(rrd_fetch); + +#else + +#define phpext_rrdtool_ptr NULL + + +#endif /* HAVE_RRDTOOL */ + +#endif /* _PHP4_RRDTOOL_H */ diff --git a/contrib/php4/rrdtool.c b/contrib/php4/rrdtool.c new file mode 100644 index 00000000..87b9fd26 --- /dev/null +++ b/contrib/php4/rrdtool.c @@ -0,0 +1,475 @@ +/* + * + * php4_rrdtool.c + * + * PHP interface to RRD Tool. (for php4/zend) + * + * + * Joe Miller, , + * iBIZ Technology Corp, SkyLynx / Inficad Communications + * 2/12/2000 & 7/18/2000 + * + * + * See README, INSTALL, and USAGE files for more details. + * + * $Id$ + * + */ + +#include "php.h" +#include "rrd.h" +#include "php_rrdtool.h" + +#if HAVE_RRDTOOL + +function_entry rrdtool_functions[] = { + PHP_FE(rrd_error, NULL) + PHP_FE(rrd_clear_error, NULL) + PHP_FE(rrd_graph, NULL) + PHP_FE(rrd_last, NULL) + PHP_FE(rrd_fetch, NULL) + PHP_FE(rrd_update, NULL) + PHP_FE(rrd_create, NULL) + {NULL, NULL, NULL} +}; + +zend_module_entry rrdtool_module_entry = { + "RRDTool", + rrdtool_functions, + NULL, + NULL, + NULL, + NULL, + PHP_MINFO(rrdtool), + STANDARD_MODULE_PROPERTIES, +}; + +#ifdef COMPILE_DL_RRDTOOL +ZEND_GET_MODULE(rrdtool) +#endif + +PHP_MINFO_FUNCTION(rrdtool) +{ + php_info_print_table_start(); + php_info_print_table_header(2, "rrdtool support", "enabled"); + php_info_print_table_end(); +} + +//PHP_MINIT_FUNCTION(rrdtool) +//{ +// return SUCCESS; +//} + + +/* {{{ proto string rrd_error(void) + Get the error message set by the last rrd tool function call */ + +PHP_FUNCTION(rrd_error) +{ + char *msg; + + if ( rrd_test_error() ) + { + msg = rrd_get_error(); + + RETVAL_STRING(msg, 1); + rrd_clear_error(); + } + else + return; +} +/* }}} */ + + + +/* {{{ proto void rrd_clear_error(void) + Clear the error set by the last rrd tool function call */ + +PHP_FUNCTION(rrd_clear_error) +{ + if ( rrd_test_error() ) + rrd_clear_error(); + + return; +} +/* }}} */ + + + +/* {{{ proto int rrd_update(string file, string opt) + Update an RRD file with values specified */ + +PHP_FUNCTION(rrd_update) +{ + pval *file, *opt; + char **argv; + + if ( rrd_test_error() ) + rrd_clear_error(); + + if ( ZEND_NUM_ARGS() == 2 && + zend_get_parameters(ht, 2, &file, &opt) == SUCCESS ) + { + convert_to_string(file); + convert_to_string(opt); + + argv = (char **) emalloc(4 * sizeof(char *)); + + argv[0] = "dummy"; + argv[1] = estrdup("update"); + argv[2] = estrdup(file->value.str.val); + argv[3] = estrdup(opt->value.str.val); + + optind = 0; opterr = 0; + if ( rrd_update(3, &argv[1]) != -1 ) + { + RETVAL_TRUE; + } + else + { + RETVAL_FALSE; + } + efree(argv[1]); efree(argv[2]); efree(argv[3]); + efree(argv); + } + else + { + WRONG_PARAM_COUNT; + } + return; +} +/* }}} */ + + + +/* {{{ proto int rrd_last(string file) + Gets last update time of an RRD file */ + +PHP_FUNCTION(rrd_last) +{ + pval *file; + unsigned long retval; + + char **argv = (char **) emalloc(3 * sizeof(char *)); + + if ( rrd_test_error() ) + rrd_clear_error(); + + if (zend_get_parameters(ht, 1, &file) == SUCCESS) + { + convert_to_string(file); + + argv[0] = "dummy"; + argv[1] = estrdup("last"); + argv[2] = estrdup(file->value.str.val); + + optind = 0; opterr = 0; + retval = rrd_last(2, &argv[1]); + + efree(argv[1]); efree(argv[2]); + efree(argv); + RETVAL_LONG(retval); + } + else + { + WRONG_PARAM_COUNT; + } + return; +} +/* }}} */ + + +/* {{{ proto int rrd_create(string file, array args_arr, int argc) + Create an RRD file with the options passed (passed via array) */ + +PHP_FUNCTION(rrd_create) +{ + pval *file, *args, *p_argc; + pval *entry; + char **argv; + HashTable *args_arr; + int argc, i; + + if ( rrd_test_error() ) + rrd_clear_error(); + + if ( ZEND_NUM_ARGS() == 3 && + getParameters(ht, 3, &file, &args, &p_argc) == SUCCESS ) + { + if ( args->type != IS_ARRAY ) + { + php_error(E_WARNING, "2nd Variable passed to rrd_create is not an array!\n"); + RETURN_FALSE; + } + + convert_to_long(p_argc); + convert_to_string(file); + + convert_to_array(args); + args_arr = args->value.ht; + zend_hash_internal_pointer_reset(args_arr); + + argc = p_argc->value.lval + 3; + argv = (char **) emalloc(argc * sizeof(char *)); + + argv[0] = "dummy"; + argv[1] = estrdup("create"); + argv[2] = estrdup(file->value.str.val); + + for (i = 3; i < argc; i++) + { + pval **dataptr; + + if ( zend_hash_get_current_data(args_arr, (void *) &dataptr) == FAILURE ) + continue; + + entry = *dataptr; + + if ( entry->type != IS_STRING ) + convert_to_string(entry); + + argv[i] = estrdup(entry->value.str.val); + + if ( i < argc ) + zend_hash_move_forward(args_arr); + } + + optind = 0; opterr = 0; + + if ( rrd_create(argc-1, &argv[1]) != -1 ) + { + RETVAL_TRUE; + } + else + { + RETVAL_FALSE; + } + for (i = 1; i < argc; i++) + efree(argv[i]); + + efree(argv); + } + else + { + WRONG_PARAM_COUNT; + } + return; +} +/* }}} */ + + + +/* {{{ proto mixed rrd_graph(string file, array args_arr, int argc) + Creates a graph based on options passed via an array */ + +PHP_FUNCTION(rrd_graph) +{ + pval *file, *args, *p_argc; + pval *entry; + zval *p_calcpr; + HashTable *args_arr; + int i, xsize, ysize, argc; + char **argv, **calcpr; + + + if ( rrd_test_error() ) + rrd_clear_error(); + + if ( ZEND_NUM_ARGS() == 3 && + zend_get_parameters(ht, 3, &file, &args, &p_argc) == SUCCESS) + { + if ( args->type != IS_ARRAY ) + { + php_error(E_WARNING, "2nd Variable passed to rrd_graph is not an array!\n"); + RETURN_FALSE; + } + + convert_to_long(p_argc); + convert_to_string(file); + + convert_to_array(args); + args_arr = args->value.ht; + + argc = p_argc->value.lval + 3; + argv = (char **) emalloc(argc * sizeof(char *)); + + argv[0] = "dummy"; + argv[1] = estrdup("graph"); + argv[2] = estrdup(file->value.str.val); + + for (i = 3; i < argc; i++) + { + pval **dataptr; + + if ( zend_hash_get_current_data(args_arr, (void *) &dataptr) == FAILURE ) + continue; + + entry = *dataptr; + + if ( entry->type != IS_STRING ) + convert_to_string(entry); + + argv[i] = estrdup(entry->value.str.val); + + if ( i < argc ) + zend_hash_move_forward(args_arr); + } + + optind = 0; opterr = 0; + if ( rrd_graph(argc-1, &argv[1], &calcpr, &xsize, &ysize) != -1 ) + { + array_init(return_value); + add_assoc_long(return_value, "xsize", xsize); + add_assoc_long(return_value, "ysize", ysize); + + MAKE_STD_ZVAL(p_calcpr); + array_init(p_calcpr); + + if (calcpr) + { + for (i = 0; calcpr[i]; i++) + { + add_next_index_string(p_calcpr, calcpr[i], 1); + free(calcpr[i]); + } + free(calcpr); + } + zend_hash_update(return_value->value.ht, "calcpr", sizeof("calcpr"), + (void *)&p_calcpr, sizeof(zval *), NULL); + } + else + { + RETVAL_FALSE; + } + for (i = 1; i < argc; i++) + efree(argv[i]); + + efree(argv); + } + else + { + WRONG_PARAM_COUNT; + } + return; +} +/* }}} */ + + + +/* {{{ proto mixed rrd_fetch(string file, array args_arr, int p_argc) + Fetch info from an RRD file */ + +PHP_FUNCTION(rrd_fetch) +{ + pval *file, *args, *p_argc; + pval *entry; + pval *p_start, *p_end, *p_step, *p_ds_cnt; + HashTable *args_arr; + zval *p_ds_namv, *p_data; + int i, argc; + time_t start, end; + unsigned long step, ds_cnt; + char **argv, **ds_namv; + rrd_value_t *data, *datap; + + if ( rrd_test_error() ) + rrd_clear_error(); + + if ( ZEND_NUM_ARGS() == 3 && + zend_get_parameters(ht, 3, &file, &args, &p_argc) == SUCCESS) + { + if ( args->type != IS_ARRAY ) + { + php_error(E_WARNING, "2nd Variable passed to rrd_fetch is not an array!\n"); + RETURN_FALSE; + } + + convert_to_long(p_argc); + convert_to_string(file); + + convert_to_array(args); + args_arr = args->value.ht; + + argc = p_argc->value.lval + 3; + argv = (char **) emalloc(argc * sizeof(char *)); + + argv[0] = "dummy"; + argv[1] = estrdup("fetch"); + argv[2] = estrdup(file->value.str.val); + + for (i = 3; i < argc; i++) + { + pval **dataptr; + + if ( zend_hash_get_current_data(args_arr, (void *) &dataptr) == FAILURE ) + continue; + + entry = *dataptr; + + if ( entry->type != IS_STRING ) + convert_to_string(entry); + + argv[i] = estrdup(entry->value.str.val); + + if ( i < argc ) + zend_hash_move_forward(args_arr); + } + + optind = 0; opterr = 0; + + if ( rrd_fetch(argc-1, &argv[1], &start,&end,&step,&ds_cnt,&ds_namv,&data) != -1 ) + { + array_init(return_value); + add_assoc_long(return_value, "start", start); + add_assoc_long(return_value, "end", end); + add_assoc_long(return_value, "step", step); + add_assoc_long(return_value, "ds_cnt", ds_cnt); + + MAKE_STD_ZVAL(p_ds_namv); + MAKE_STD_ZVAL(p_data); + array_init(p_ds_namv); + array_init(p_data); + + if (ds_namv) + { + for (i = 0; i < ds_cnt; i++) + { + add_next_index_string(p_ds_namv, ds_namv[i], 1); + free(ds_namv[i]); + } + free(ds_namv); + } + + if (data) + { + datap = data; + + for (i = start; i <= end; i += step) + add_next_index_double(p_data, *(datap++)); + + free(data); + } + + zend_hash_update(return_value->value.ht, "ds_namv", sizeof("ds_namv"), + (void *)&p_ds_namv, sizeof(zval *), NULL); + zend_hash_update(return_value->value.ht, "data", sizeof("data"), + (void *)&p_data, sizeof(zval *), NULL); + } + else + { + RETVAL_FALSE; + } + for (i = 1; i < argc; i++) + efree(argv[i]); + + efree(argv); + } + else + { + WRONG_PARAM_COUNT; + } + return; +} +/* }}} */ + +#endif /* HAVE_RRDTOOL */ diff --git a/contrib/rrd-file-icon/README b/contrib/rrd-file-icon/README new file mode 100644 index 00000000..cc06f18a --- /dev/null +++ b/contrib/rrd-file-icon/README @@ -0,0 +1,19 @@ +From: "Alex van den Bogaerdt" + +This icon can be used, for instance, by apache httpd. + +(note: path names may differ in your setup) + +Copy the icon to /home/apache/icons/ +Modify /etc/httpd/conf/srm.conf by adding: + + AddIcon /icons/rrd.png .rrd + AddDescription "Round Robin Database" .rrd + +You could even run a script when an rrd file is clicked on: + + AddHandler rrd-handler rrd + Action rrd-handler /cgi-bin/some-general-rrd-script.cgi + + +Alex diff --git a/contrib/rrd-file-icon/rrd.png b/contrib/rrd-file-icon/rrd.png new file mode 100644 index 0000000000000000000000000000000000000000..f05efcdbfc086c8cac8a8563286bb4b0c41924ac GIT binary patch literal 355 zcmeAS@N?&q;$mQ6;PUiv2?Ek0KrF_=1SI{HwF7|^TS<^#FvEWkG>?$31&JhiySo5s zAo%ILyB%Ci68wyJDp2hBT9nv(@M${i&7aJG?XA`#GK)(p9dav+OEQ!7Qj7IcN(=JyO7xQRbHxLGbOVjk z0vnf^o|jls3N+8sG}$c8#5g6%)Y9BE#V{o~Imyz*z|=S~$;d1@*~~<9*?eQ5Ezopr05s-%SpWb4 literal 0 HcmV?d00001 diff --git a/contrib/rrdexplorer/README.txt b/contrib/rrdexplorer/README.txt new file mode 100644 index 00000000..ee94db87 --- /dev/null +++ b/contrib/rrdexplorer/README.txt @@ -0,0 +1,29 @@ +From: "Claus Norrbohm" + +RRD-Explorer (formally known as clickable rrd graphs) is a +general tool for exploring RRD-files. It eliminates the need +for creating individual RRDs cgi-scripts to show your RRD +graphs, just plug these 4 lines into your httpd.conf (thanks +to Alex van den Bogaerdt): + + # rrd files + AddIcon /icons/rrd.png .rrd + AddDescription "Round Robin Database" .rrd + + # rrdtool handler + AddHandler rrd-handler rrd + Action rrd-handler /cgi-bin/map.cgi + +Last line must be modified to match your system... + +If your placed map.cgi & png.cgi - change owner to reflect +your cgi-bin user and make the scripts executable ex.: + + chown root.root map.cgi png.cgi + chmod a+rx map.cgi png.cgi + +Now place your RRD-files in a directory below your "DocumentRoot" +where they can be seen, i.e. "Options Indexes" must be set for +the directory. + +Enjoy, Claus diff --git a/contrib/rrdexplorer/map.cgi b/contrib/rrdexplorer/map.cgi new file mode 100644 index 00000000..f2ced54a --- /dev/null +++ b/contrib/rrdexplorer/map.cgi @@ -0,0 +1,121 @@ +#!/usr/bin/perl +# Explore rrd via clickable graphs by. james@type-this.com (Claus Norrbohm) + +# Basic idea: click high -> zoom out, click low -> zoom in, +# click left -> back history, click right -> forward history + +use CGI::Carp; +use CGI; +use POSIX; +use lib qw( /usr/local/rrdtool/lib/perl ); +use RRDs; + +my $query = new CGI; + +# modify as needed +$hight = 300; # Image size +$width = 600; +$refresh = 3600; +$expiredate = strftime "%a, %e %b %Y %H:%M:%S GMT", gmtime(time); # Format date(now) +$root = $ENV{"DOCUMENT_ROOT"}; # Location of rrd + +print "Content-type: text/html\n"; # Use html +print "Cache-Control: no-cache\n"; # Ensure no cashing of page +print "Expires: $expiredate\n"; # Expire now +print "Refresh: $refresh\n\n"; + +print $query->start_html("Clickable rrd-graph"); # Title of html page + +if ($query->param()) { # the form has already been filled out + + $rrd = $query->param("rrd"); # which rrd file are we tracking + $start = $query->param("start"); # Start time + $end = $query->param("end"); # End time + $x = $query->param("img.x"); # x/y cordinates of click + $y = $query->param("img.y"); + + # see contrib/rrdfetchnames + my ($begin,$step,$name,$data) = RRDs::fetch "$root$rrd","AVERAGE","--start","now","--end","start+1"; + if ( my $ERR = RRDs::error) { + die "ERROR while fetching data from $NAME $ERR\n"; + } + @names = @$name; # list of DS's "@$name" + $j = @names; + $esu = ""; + + for ($i = 0; $i < $j; $i++) { # here we find which DS we are curently tracking + if ($query->param("@names[$i]") == "1") { + @use[$i] = 1; + $esu .= "1"; # DS included + } else { + @use[$i] = 0; + $esu .= "0"; # DS not included + } + } + + $intv = $end - $start; # Last used interval + $zoom = ($hight + 100 - $y) / $hight; # Find zoom factor + 100 because hight is not exact + $center = $start + $intv * $x / $width; # Find time corresponding to click + + $start = int($center - $intv * $zoom); # Calc new start + $end = int($center + $intv * $zoom); # Calc new end + +} else { # first time through, so present clean form + + $rrd = $ENV{"REQUEST_URI"}; # Location of rrd + + $end = time(); # use now for end + $start = $end - 86400; # and go back 24 hours + + # see rrdfetchnames + my ($begin,$step,$name,$data) = RRDs::fetch "$root$rrd","AVERAGE","--start","now","--end","start+1"; + if ( my $ERR = RRDs::error) { + die "ERROR while fetching data from $NAME $ERR\n"; + } + @names = @$name; # list of DS's "@$name" + $j = @names; + $esu = ""; + + for ($i = 0; $i < $j; $i++) { # All DS is included first time + @use[$i] = 1; + $esu .= "1"; + } + +} + +# Create a form with clickable image see page xxx in: Wallace, Shawn P. +# Programming Web Graphics with Perl +# and GNU Software +# O'Reilly UK,1999, UK, Paperback + +print "
\n"; + +print "\n"; +print "\n"; +print ""; +print ""; +print "\n"; +print "\n"; +print "
Click on top to zoom out
Click
left
to
go
back
in
time
\n"; +# png.cgi prints the rrd graph, by printing to std.out (browser) +print "\n"; +print "\n"; +print "\n"; +print "\n"; +print "Click
right
to
go
forward
in
time
Click on bottom to zoom in
\n"; + +print "


\n"; +for ($i = 0; $i < $j; $i++) { # present user with list of DS to select / deselect + if (@use[$i] == 0) { + print "\n"; + } else { + print "\n"; + } +} +print "
Select / Deselect DS: @names[$i] @names[$i]
\n"; + +print "
\n"; + +print "

Created by - Claus Norrbohm - james\@type-this.com

"; + +print $query->end_html(); # lmth .... diff --git a/contrib/rrdexplorer/png.cgi b/contrib/rrdexplorer/png.cgi new file mode 100644 index 00000000..d6e36390 --- /dev/null +++ b/contrib/rrdexplorer/png.cgi @@ -0,0 +1,56 @@ +#!/usr/bin/perl +# Create rrdtool graph ... + +use CGI::Carp; +use CGI; +use POSIX; +use lib qw( /usr/local/rrdtool/lib/perl ); +use RRDs; + +my $query = new CGI; + +# Get params from URL +$rrd = $query->param("rrd"); # RRD absolute path +$start = $query->param("start"); # start time +$end = $query->param("end"); # end time +$hight = $query->param("hight"); # Image sizes +$width = $query->param("width"); +$use = $query->param("use"); # which DS shal I print + +# List of colors for graphs +@color = ("#FF0000","#00FF00","#FFFF00","#0000FF","#FF00FF","#00FFFF","#FFFFFF", + "#800000","#008000","#808000","#000080","#800080","#008080","#808080"); + +# title of graph with start / end time +$title = $rrd.": ".scalar(localtime($start))." / ".scalar(localtime($end)); + +# Formated date(now) +$expiredate = strftime "%a, %e %b %Y %H:%M:%S GMT", gmtime(time); + +print "Content-type: image/png\n"; # Use html +print "Cache-Control: no-cache\n"; # Ensure no cashing of page +print "Expires: $expiredate\n\n"; # Expire now + +$root = $ENV{"DOCUMENT_ROOT"}; +# see rrdfetchnames +($begin,$step,$names,$data) = RRDs::fetch "$root$rrd", "AVERAGE", "--start", "now","--end","start+1"; +if ( my $ERR = RRDs::error) { + die "ERROR while fetching data from $NAME $ERR\n"; +} +@names = @$names; # list of def's "@$name" +$j = @names; # how many DS's + +# Append DEF's see examples/shared-demp.pl +for ($i = 0; $i < $j; $i++) { + $val = substr($use, $i, 1); + if ( $val == "1" ) { + @options = (@options, "DEF:l$i=$root$rrd:@names[$i]:AVERAGE","LINE2:l$i@color[$i]:@names[$i]"); + } +} + +# Draw the graph to std.out ("-") +($avg,$xsize,$ysize) = RRDs::graph "-","--title", "$title","--height","$hight","--width", + "$width","--start",$start,"--end",$end,"-a","PNG",@options; +if ($ERROR = RRDs::error) { + print "ERROR: $ERROR\n"; +} diff --git a/contrib/rrdfetchnames/README b/contrib/rrdfetchnames/README new file mode 100644 index 00000000..bfd234b8 --- /dev/null +++ b/contrib/rrdfetchnames/README @@ -0,0 +1,13 @@ +Is there a program currently to list the available data sources, in a given rrd +file? + +From: Rainer Nagel + +yes ... + +here ... + +rrdfetchnames.pl my.rrd + +have fun + diff --git a/contrib/rrdfetchnames/rrdfetchnames.pl b/contrib/rrdfetchnames/rrdfetchnames.pl new file mode 100755 index 00000000..050a9fc1 --- /dev/null +++ b/contrib/rrdfetchnames/rrdfetchnames.pl @@ -0,0 +1,30 @@ +#!/usr/bin/perl + +use strict; + +#makes things work when run without install +use lib qw( ../../perl-shared/blib/lib ../../perl-shared/blib/arch ); + +#makes programm work AFTER install +use lib qw( /usr/local/rrdtool-1.0.30/lib/perl ../lib/perl ); + +use vars qw(@ISA $loaded); + +use RRDs; + +my $NAME = $ARGV[ 0]; +my $SEPARATOR = " "; +my $CF = "AVERAGE"; + +my ($start,$step,$names,$data) = RRDs::fetch "$NAME", "$CF", "--start", "now","--end","start+1"; + +if ( my $ERR = RRDs::error){ + die "ERROR while fetching data from $NAME $ERR\n"; +} + +print join( $SEPARATOR, @$names), "\n"; + +sub usage{ + print "usage: rrdfetchnames filename"; +}; + diff --git a/contrib/rrdlastds/README b/contrib/rrdlastds/README new file mode 100644 index 00000000..491e466e --- /dev/null +++ b/contrib/rrdlastds/README @@ -0,0 +1,29 @@ +From: steve rader +Date: Mon, 10 Jan 2000 10:40:56 -0600 +Subject: ANNOUNCEMENT: "rrdlastds" (was Re: rrd script assistance) + + % ./rrdlastds + usage: rrdlastds [-v] [-a] [-c num] [-l label] [-s stamp] some.rrd + -v print the start and end times (also --verbose) + -a autoscale DS values (also --autoscale) + -c num convert DS values by "num" (also --conversion) + -l label label DS values with "label" (also --label) + -s stamp report about DS values at the time "stamp" (also --start) + +The nominal usage is: + + % ./rrdlastds some.rrd + Mon Jan 10 10:30:00 2000 146823.19 input 17225.20 output + +To get a verbose, autoscaled report about this time yesterday, +converted to bits and nicely labeled, do: + + % ./rrdlastds -v -a -c 8 -l b/s -s -1day some.rrd + Sun Jan 9 10:30:00 2000 through Sun Jan 9 10:35:00 2000 + average 105.27 kb/s input 17.10 kb/s output + +later +steve +- - - +systems guy +wiscnet.net diff --git a/contrib/rrdlastds/rrdlastds.pl b/contrib/rrdlastds/rrdlastds.pl new file mode 100755 index 00000000..d4ecf1c0 --- /dev/null +++ b/contrib/rrdlastds/rrdlastds.pl @@ -0,0 +1,192 @@ +#! /usr/sepp/bin/perl +# +# rrdlastds - report the latest DS values from the RRA with +# the shortest time resolution +# +# steve rader +# +# Jan 8th, 2000 +# +# $Id$ +# + +#makes things work when run without install +use lib qw( ../../perl-shared/blib/lib ../../perl-shared/blib/arch ); +# this is for after install +use lib qw( /usr/local/rrdtool-1.0.30/lib/perl ../lib/perl ); + +use RRDs; + +%scale_symbols = qw( -18 a -15 f -12 p -9 n -6 u -3 m + 3 k 6 M 9 G 12 T 15 P 18 E ); + +#---------------------------------------- + +while ( $ARGV[0] =~ /^-/ ) { + switch: { + if ( $ARGV[0] eq '--autoscale' || $ARGV[0] =~ /^-a/ ) { + $scale = 1; + last switch; + } + if ( $ARGV[0] eq '--conversion' || $ARGV[0] =~ /^-c/ ) { + shift @ARGV; + $conversion = $ARGV[0]; + if ( $conversion !~ /^\d+$|^\d+\.\d+$|^\.\d+$/ ) { + print "rrdlastds: bad conversion factor \"$conversion\"\n"; + exit 1; + } + last switch; + } + if ( $ARGV[0] eq '--label' || $ARGV[0] =~ /^-l/ ) { + shift @ARGV; + $label = $ARGV[0]; + last switch; + } + if ( $ARGV[0] eq '--start' || $ARGV[0] =~ /^-s/ ) { + shift @ARGV; + $start = $ARGV[0]; + if ( $start =~ /^\d+$/ ) { + $end = $start+1; + } else { + $end = "${start}+1sec"; + } + last switch; + } + if ( $ARGV[0] eq '--verbose' || $ARGV[0] =~ /^-v/ ) { + $verbose = 1; + last switch; + } + if ( $ARGV[0] eq '--debug' || $ARGV[0] =~ /^-d/ ) { + $debug = 1; + last switch; + } + print "rrdlastds: unknown option \"$ARGV[0]\"\n"; + exit 1; + } + shift @ARGV; +} + +if ( $#ARGV != 0 ) { + print <<_EOT_; +usage: rrdlastds [-v] [-a] [-c num] [-l label] [-s stamp] some.rrd + -v print the start and end times (also --verbose) + -a autoscale DS values (also --autoscale) + -c num convert DS values by "num" (also --conversion) + -l label label DS values with "label" (also --label) + -s time report about DS values at the time "time" (also --start) + + The -s option supports the traditional "seconds since the Unix epoch" + and the AT-STYLE time specification (see man rrdfetch) +_EOT_ + exit 1; +} + +if ( ! -f "$ARGV[0]" ) { + print "rrdlastds: can't find \"$ARGV[0]\"\n"; + exit 1; +} + +#---------------------------------------- + +if ( $start ) { + @fetch = ("$ARGV[0]", "-s", "$start", "-e", "$end", "AVERAGE"); +} else { + @fetch = ("$ARGV[0]", "-s", "-1sec", "AVERAGE"); +} +if ( $debug ) { + print "rrdfetch ", join(' ',@fetch), "\n"; +} + +($start,$step,$names,$data) = RRDs::fetch @fetch; + +if ( $error = RRDs::error ) { + print "rrdlastds: rrdtool fetch failed: \"$error\"\n"; + exit 1; +} + +#---------------------------------------- + +if ( $debug ) { + $d_start = $start; + print "Start: ", scalar localtime($d_start), " ($d_start)\n"; + print "Step size: $step seconds\n"; + print "DS names: ", join (", ", @$names)."\n"; + print "Data points: ", $#$data + 1, "\n"; + print "Data:\n"; + foreach $line (@$data) { + print " ", scalar localtime($d_start), " ($d_start) "; + $d_start += $step; + foreach $val (@$line) { + printf "%12.1f ", $val; + } + print "\n"; + } + print "\n"; +} + +#---------------------------------------- + +if ( $verbose ) { + print scalar localtime($start), ' through ', + scalar localtime($start+$step), "\naverage"; +} else { + print scalar localtime($start); +} + +$line = $$data[0]; +for $i (0 .. $#$names) { + if ( $conversion ) { + $$line[$i] = $$line[$i] * $conversion; + } + if ( $scale ) { + ($val, $units) = autoscale($$line[$i]); + } else { + $val = $$line[$i]; + } + printf " %.2f$units$label %s", $val, $$names[$i]; +} +print "\n"; + +exit 0; + +#================================================================== + +sub autoscale { + local($value) = @_; + local($floor, $mag, $index, $symbol, $new_value); + + if ( $value =~ /^\s*[0]+\s*$/ || + $value =~ /^\s*[0]+.[0]+\s*$/ || + $value =~ /^\s*NaN\s*$/ ) { + return $value, ' '; + } + + $floor = &floor($value); + $mag = int($floor/3); + $index = $mag * 3; + $symbol = $scale_symbols{$index}; + $new_value = $value / (10 ** $index); + return $new_value, " $symbol"; +} + +#------------------------------------------------------------------ + +sub floor { + local($value) = @_; + local($i) = 0; + + if ( $value > 1.0 ) { + # scale downward... + while ( $value > 10.0 ) { + $i++; + $value /= 10.0; + } + } else { + while ( $value < 10.0 ) { + $i--; + $value *= 10.0; + } + } + return $i; +} + diff --git a/contrib/rrdproc/README b/contrib/rrdproc/README new file mode 100644 index 00000000..a556f7ed --- /dev/null +++ b/contrib/rrdproc/README @@ -0,0 +1,30 @@ +* rrdproc.c Copyright 1999 Damien Miller +** +** +** This program is a very lightweight collecter for rrdtool. It reads +** and parses /proc/net/dev and sends a rrdtool remote control update +** command to stdout. +** +** rrdproc will sleep a user-defined amount of time between reads from +** /proc/net/dev. This time should match the sample rate you created your +** RRD files with. +** +** Example: +** +** rrdproc --interface=ppp0 \ +** --wait 30 \ +** --filename=/home/djm/traffic-ppp0.rrd | rrdtool - +** +** This will update the RRD file /home/djm/traffic-eth0.rrd with bytes +** received and sent on eth0 every 30 seconds. +** +** rrdproc --interface=eth0 \ +** --wait 300 \ +** --frame \ +** --filename=/home/djm/traffic-eth0.rrd | rrdtool - +** +** Will update /home/djm/traffic-eth0.rrd with counts of framing errors and +** collisions every 5 minutes +** +** rrdproc is licensed under the GNU GPL version 2. Please refer to +** http://www.fsf.org/copyleft/gpl.html for details. diff --git a/contrib/rrdproc/rrdproc.c b/contrib/rrdproc/rrdproc.c new file mode 100644 index 00000000..ab35f40e --- /dev/null +++ b/contrib/rrdproc/rrdproc.c @@ -0,0 +1,249 @@ +/* +** rrdproc.c Copyright 1999 Damien Miller +** +** +** This program is a very lightweight collecter for rrdtool. It reads +** and parses /proc/net/dev and sends a rrdtool remote control update +** command to stdout. +** +** rrdproc will sleep a user-defined amount of time between reads from +** /proc/net/dev. This time should match the sample rate you created your +** RRD files with. +** +** Example: +** +** rrdproc --interface=ppp0 \ +** --wait 30 \ +** --filename=/home/djm/traffic-ppp0.rrd | rrdtool - +** +** This will update the RRD file /home/djm/traffic-eth0.rrd with bytes +** received and sent on eth0 every 30 seconds. +** +** rrdproc --interface=eth0 \ +** --wait 300 \ +** --frame \ +** --filename=/home/djm/traffic-eth0.rrd | rrdtool - +** +** Will update /home/djm/traffic-eth0.rrd with counts of framing errors and +** collisions every 5 minutes +** +** rrdproc is licensed under the GNU GPL version 2. Please refer to +** http://www.fsf.org/copyleft/gpl.html for details. +** +*/ + +#include +#include +#include +#include +#include +#include +#include + +#define PROC_DEV "/proc/net/dev" + +#define DEFAULT_SLEEP_TIME 3 +#define DEFAULT_INTERFACE "eth0" +#define DEFAULT_FILENAME "traffic" + +#define COLUMN_BYTES 0 +#define COLUMN_PACKETS 1 +#define COLUMN_ERRORS 2 +#define COLUMN_DROPPED 3 +#define COLUMN_FIFO 4 +#define COLUMN_FRAME 5 + +void get_stats(FILE *devstats, const char *interface, int start_column); +const char *skip_columns(const char *p, int num_columns); +void help(void); +void version(void); + +static struct option long_options[] = +{ + { "wait", 1, NULL, 'w'}, + { "interface", 1, NULL, 'i'}, + { "filename", 1, NULL, 'f'}, + { "help", 0, NULL, 'h'}, + { "version", 0, NULL, 'v'}, + { "bytes", 0, NULL, 'B'}, + { "packets", 0, NULL, 'P'}, + { "errors", 0, NULL, 'E'}, + { "dropped", 0, NULL, 'D'}, + { "fifo", 0, NULL, 'F'}, + { "frame", 0, NULL, 'R'}, +}; + +int main(int argc, char **argv) +{ + int sleep_time = DEFAULT_SLEEP_TIME; + char *interface = DEFAULT_INTERFACE; + char *filename = DEFAULT_FILENAME; + int start_column = COLUMN_BYTES; + int c; + FILE *devstats; + + extern char *optarg; + + openlog("if-update", LOG_PERROR|LOG_PID, LOG_DAEMON); + + while(1) + { + c = getopt_long(argc, argv, "w:i:f:hvBPEDFRCM", long_options, NULL); + if (c == -1) + break; + + switch(c) + { + case 'w': + sleep_time = atoi(optarg); + break; + case 'i': + interface = strdup(optarg); + break; + case 'f': + filename = strdup(optarg); + break; + case 'h': + help(); + exit(0); + case 'v': + version(); + exit(0); + case 'B': + start_column = COLUMN_BYTES; + break; + case 'P': + start_column = COLUMN_PACKETS; + break; + case 'E': + start_column = COLUMN_ERRORS; + break; + case 'D': + start_column = COLUMN_DROPPED; + break; + case 'F': + start_column = COLUMN_FIFO; + break; + case 'R': + start_column = COLUMN_FRAME; + break; + default: + fprintf(stderr, "Invalid commandline options.\n"); + help(); + exit(1); + } + } + + setlinebuf(stdout); + + while(1) + { + devstats = fopen(PROC_DEV, "r"); + if (devstats == NULL) + { + syslog(LOG_ERR, "Couldn't open proc file \"%s\" for reading: %m", PROC_DEV); + exit(1); + } + printf("update %s N:", filename); + get_stats(devstats, interface, start_column); + sleep(sleep_time); + fclose(devstats); + } + exit(0); +} + +void get_stats(FILE *devstats, const char *interface, int start_column) +{ + char buffer[2048]; + const char *p; + int if_len; + unsigned long long in; + unsigned long long out; + + if_len = strlen(interface); + + while(fgets(buffer, sizeof(buffer), devstats) != NULL) + { + p = buffer; + + /* skip space at start of line */ + while(*p && (*p == ' ')) + p++; + + if (strncmp(p, interface, if_len) == 0) + { + /* Skip to the statistic we wnt to report */ + p = skip_columns(p + if_len + 1, start_column); + + in = strtoull(p, NULL, 10); + + /* Skip from received column to transmit column */ + p = skip_columns(p, 8); + + out = strtoull(p, NULL, 10); + + printf("%Lu:%Lu\n", in, out); + + return; + } + } + + /* Non-fatal error if interface not found */ + syslog(LOG_WARNING, "Couldn't find statistics for interface \"%s\"", interface); + printf("U:U\n"); + return; +} + +void help(void) +{ + fprintf(stderr, "\ +rrdproc - Update rrd file using statistics in /proc\n\ +\n\ +rrdproc will periodically read /proc/net/dev and update an RRD database\n\ +with the numbers that it finds there.\n\ +\n\ +Options:\n\ + --wait, -w [time] Time to wait between statistics updates\n\ + --interface, -i [name] Name of network interface to report on\n\ + --filename, -f [filename] Path of RRD file to update\n\ + --help, -h Display this help\n\ + --version, -v Display version information\n\ + --bytes, -B Report bytes in / out\n\ + --packets, -P Report packets in / out\n\ + --errors, -E Report errors in / out\n\ + --dropped, -D Report dropped packets in / out\n\ + --fifo, -F Report fifo in / out\n\ + --frame, -R Report framing errors / collisions\n\ +"); +} + +void version(void) +{ + fprintf(stderr, "rrdproc v0.0\n"); +} + +const char *skip_columns(const char *p, int num_columns) +{ + int c; + + for(c = 0; c < num_columns; c++) + { + /* Skip numbers */ + while(*p && (*p != ' ')) + p++; + + /* Skip space */ + while(*p && (*p == ' ')) + p++; + + if (!*p) + { + /* Line finished early */ + printf("U:U\n"); + syslog(LOG_WARNING, "Couldn't parse interface statistics"); + return; + } + } + + return(p); +} diff --git a/contrib/rrdview/README b/contrib/rrdview/README new file mode 100644 index 00000000..030780a8 --- /dev/null +++ b/contrib/rrdview/README @@ -0,0 +1,63 @@ +User Contributed Perl Documentation RRDVIEW.CGI(1) + + + +NNNNAAAAMMMMEEEE + rrdview.cgi - Perl CGI software to graph rrd image online + +SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS + Put it on any cgi-bin/ directory, use a browser, click and + fill in an rrd file in the first textfield (replacing + foo.rrd). The file belongs to the web server. + +DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN + Just another rrd viewer. + +TTTTOOOODDDDOOOO + . An upload textfield to allow graphing client rrd files. + . Deal with LAST, MAX, MIN RRA. + + +AAAAUUUUTTTTHHHHOOOORRRR + Gilles LAMIRAL lamiral@mail.dotcom.fr + +SSSSEEEEEEEE AAAALLLLSSSSOOOO + _r_r_d_t_o_o_l(1), _p_e_r_l(1). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +2000-09-23 Last change: perl v5.6.0 1 + + + diff --git a/contrib/rrdview/rrdview.cgi b/contrib/rrdview/rrdview.cgi new file mode 100644 index 00000000..ab05f464 --- /dev/null +++ b/contrib/rrdview/rrdview.cgi @@ -0,0 +1,412 @@ +#!/usr/bin/perl -T -w + +use CGI::Carp qw(fatalsToBrowser carpout); +use Time::Local; +use File::Basename; +use FileHandle; +use POSIX; +use RRDs; + +BEGIN { + carpout(\*STDOUT); +}; + +use strict; + +use vars qw($VERSION); +my $rcs = ' $Id$ ' ; +$rcs =~ m/,v (\d+\.\d+)/; +$VERSION = ($1) ? $1 : "UNKNOWN"; + +my $mod_perl = (exists $ENV{MOD_PERL}) ? 1 : 0; +my $self = basename($0); +my $imgErr; # global is good in that huge case. + +doit(); + +sub doit { + + my $debug = 0; + my $cgi = myCGI->new(); + my $q = $cgi->r(); + my $now = time(); + + my $strftime = '%A %d %B %Y %H:%M:%S %Z'; + + my ($minD,$hourD,$mdayD,$monD,$yearD) = (myLocaltime($now)); + $cgi->paramDefault( + 'minE' => $minD, + 'hourE' => $hourD, + 'mdayE' => $mdayD, + 'monE' => $monD, + 'yearE' => $yearD, + ); + + ($minD,$hourD,$mdayD,$monD,$yearD) = (myLocaltime($now - 86400)); + + $cgi->paramDefault( + 'minS' => $minD, + 'hourS' => $hourD, + 'mdayS' => $mdayD, + 'monS' => $monD, + 'yearS' => $yearD, + ); + + + my ($minS,$hourS,$mdayS,$monS,$yearS) = + ( + $q->param(-Name => 'minS'), + $q->param('hourS'), + $q->param('mdayS'), + $q->param('monS'), + $q->param('yearS'), + ); + + my ($minE,$hourE,$mdayE,$monE,$yearE) = + ( + $q->param('minE'), + $q->param('hourE'), + $q->param('mdayE'), + $q->param('monE'), + $q->param('yearE'), + ); + + my $start = myTimelocal($minS,$hourS,$mdayS,$monS,$yearS); + my $end = myTimelocal($minE,$hourE,$mdayE,$monE,$yearE); + + my $startString = strftime($strftime, localtime($start)); + my $endString = strftime($strftime, localtime($end)); + + $q->param('start', $start); + $q->param('end', $end); + + $cgi->paramDefault( + 'hight' => 150, + 'width' => 600, + 'rrdfile' => 'foo.rrd', + ); + + my $width = $q->param(-Name=>'width'); + my $hight = $q->param(-Name=>'hight'); + my $owner = $q->param(-Name=>'owner') || "No Owner"; + my $title = $q->param(-Name=>'title') || "No Title"; + + my $rrdfile = $q->param("rrdfile"); + + $debug and $cgi->saveparam("/tmp/rrdmon.out"); + my $error = ""; + my $rrdinfo; + my @dsname; + unless (-f $rrdfile) { + $error = "File '$rrdfile' does not exist!
\n"; + }else{ + $rrdinfo = RRDs::info $rrdfile; + if (my $ERR=RRDs::error) { + $error = "" . $ERR . "
\n"; + @dsname = ('RRD ERROR'); + }else{ + foreach my $key (keys %$rrdinfo) { + if ($key =~ m/ds\[(\w+)\]\.value/) { + push(@dsname, $1); + } + } + } + }; + + my $dsname = $q->param("dsname") || $dsname[0] || "unknown"; + + if (defined $q->param(-Name=>'child')) { + # cgi child + imagepage($q, + $cgi, + $debug, + $rrdfile, + $dsname, + $owner, + $hight, + $width, + $start, + $end, + $title, + ); + }else{ + # cgi parent + mainpage($q, + $cgi, + $debug, + $dsname, + \@dsname, + $hight, + $width, + $error, + $startString, + $endString, + ); + } +} + +sub mainpage { + + my $q = shift; + my $cgi = shift; + my $debug = shift; + my $dsname = shift; + my $ldsname = shift; + my $hight = shift; + my $width = shift; + my $error = shift; + my $startString = shift; + my $endString = shift; + + my $queryChild = "child=yes&".$q->query_string(); + my $cgiChild = myCGI->new($queryChild); + # CGI fork ! + print + $q->header(), + #$q->start_html($q->param('owner'). " " . $q->param('title') ), + $q->start_html( + -Title=>"RRDVIEW $VERSION", + -Author=>'lamiral@mail.dotcom.fr', + -Meta=>{'keywords'=>'monitoring rrdtool rrdmon rrdview', + 'copyright'=>'Copyleft GPL'}, + -BGCOLOR=>'lightblue', + ), + ($debug) ? "\n" : "", + ($debug and $mod_perl) ? "mod_perl PID $$
\n" : "", + ($debug and not $mod_perl) ? "PID=$$
\n" : "", + ($debug) ? "$cgi
\n" : "", + ($debug) ? "$q
\n" : "", + ($debug) ? "img=".\$imgErr."
\n" : "", + ($debug) ? "
\n" : "", + $q->startform(-Method=>'GET', + #-Enctype=>'multipart/form-data', + ), + $q->textfield(-Name=>'rrdfile', + -Default=>'Give me a file like foo.rrd', + -Size=>76), + $q->br(),"\n", + $q->popup_menu(-Name=>'dsname', + -Values=>[@$ldsname], + -Default=>$dsname, + ), + $q->textfield(-Name=>'hight', -Size=>length($hight)), "x", + $q->textfield(-Name=>'width', -Size=>length($width)), " ", + $q->br(),"\n", + $q->image_button(-Name=>'Beautiful Image!', + -Src=>"$self?$queryChild", + ), + $q->br(),"\n", + $error, + $q->tt(" From "), + $q->textfield(-Name=>'yearS', -Size=>4), + $q->textfield(-Name=>'monS', -Size=>2), + $q->textfield(-Name=>'mdayS', -Size=>2), + " ", + $q->textfield(-Name=>'hourS', -Size=>2), + $q->textfield(-Name=>'minS', -Size=>2), + " $startString", + $q->br(),"\n", + $q->tt(" To", " " x 2), + $q->textfield(-Name=>'yearE', -Size=>4), + $q->textfield(-Name=>'monE', -Size=>2), + $q->textfield(-Name=>'mdayE', -Size=>2), + " ", + $q->textfield(-Name=>'hourE', -Size=>2), + $q->textfield(-Name=>'minE', -Size=>2), + " $endString", + $q->br(),"\n", + $cgi->paramHidden( + 'title', + 'owner', + ), + $q->endform(), + ($debug) ? $q->dump(): "", + $q->end_html(), + "\n", + ; +} + + +sub imagepage { + + my $q = shift; + my $cgi = shift; + my $debug = shift; + my $rrdfile = shift; + my $dsname = shift; + my $owner = shift; + my $hight = shift; + my $width = shift; + my $start = shift; + my $end = shift; + my $title = shift; + + $debug and $cgi->saveparam("/tmp/png.out"); + + my $output; + RRDs::last($rrdfile); + + print $q->header( + -Type=>'image/png', + -Expires=>'now' + ); + + if($mod_perl) { + #carp("we're running under mod_perl"); + $output = "/tmp/rrdmon.img.$$.png"; + + } + else { + #we're NOT running under mod_perl + $output = "-"; + + } + + RRDs::graph($output,"--title", "$owner", + "--imgformat", "PNG", + "--height","$hight", "--width","$width", + "--start",$start,"--end",$end, + "DEF:value=$rrdfile:$dsname:AVERAGE", + "AREA:value#00FF00:$title", + ); + + + if (my $ERROR = RRDs::error()) { + carp "ERROR: $ERROR\n"; + my $rimgErr = loadImageErrorFromVar(); + print $$rimgErr; + return(); + } + if($mod_perl) { + my $fh = FileHandle->new($output, "r"); + unless (defined($fh)){ + carp("Could not open ",$output,"$!"); + return undef; + } + local $/ = undef; + my $file = <$fh>; + $fh->close(); + print $file; + } +} + + +sub myLocaltime { + my $time = shift; + + my ($min,$hour,$mday,$mon,$year) + = (localtime($time))[1,2,3,4,5]; + + $min = sprintf("%02s", $min); + $hour = sprintf("%02s", $hour); + $mday = sprintf("% 2s", $mday); + $mon = sprintf("% 2s", $mon + 1); + + return($min,$hour,$mday,$mon,$year + 1900); +} + +sub myTimelocal { + my ($min,$hours,$mday,$mon,$year) = @_; + + my $time = timelocal(0,$min,$hours,$mday, + $mon - 1,$year - 1900); + return($time); +} + +sub loadImageErrorFromVar { + unless (defined ($main::imgErr)){ + $main::imgErr = pack "h*", '9805e474d0a0a1a0000000d09484442500000069000000b480000000100cdc1195000000407614d4140010680a138e69f5000080769444144587adde959607357d51e37fdb7291b42b469cb0e51f283c26028d4ce2484034020129430947b0d24c01a30482e4a30c47b480cc00d2d47adcc47843186a094999423818201a10a9408c0d670360a50c18016316b3605cb8c6958d2b4a7fee7df1290b63bcb45818c8fef1947ed5d9bfd937fbb769bf818246801c204819525793f2746a31d92001110e2070a618aa8300032040c2f590000dbc54000d600b06c22b44ca728f88a7c3f2cbc6168a019d9d08910000ee9f02cbf08a1a381ba164f880211ead6a43a63aad41bb5f6df73074502c8d6db0b3a7866400af76c7844999afc9968ea68ecb6810a74481e1b65022af90888e8debf8e2e7abb57fd7a64d8e88e93776d2bd110b830bdb3ae4602edbb24c18fa08ad9e3d662024c322b4d5852152784fa4b901595259e1dca25483ac40f8f7addbb10fb9473d4aaaea475e5d31119444515711654de759be1c5bebe321380e54f3a2f37e92222eb7c37e9d73870de8f320005cad67eadf871f15c8c1a781dadabd237da20006ba4f1bc2b1006ad520e68e08fcea34f8a979b2db63a76690444467b219e378821ebd44ab61a262ad95c12eb7651752e972232aae9a44f0c68c91b46addeb7eaf2a8ede6f49e776e4f6665f0fc7443f015f78e25e70742a6ab4c7261bc7be7873ec0c96dbe7efaa56d4a6f659d4cfada9cefcb74b72cc8d971b5c5c93a7d3a95f72e6d771888826757decebfc0a26caf0ef69014efa9ff5f1379bd527f1c16c246f1d052faee9d3b7e428888b39fa3d5a728dfade7e8fbd4d50662227f9b7bf02cb9fe9c6b566e4c5aa404150418981736182e53af64c7ed25e008fadce2823ec93c1543af88be7a3ad904d8eccf24cfaf6d00fa6ba9a2f6d77faea2fc179f423753d100007524117008d191e404e2a5304d4c9ef3806fdbdcf47979f5d46d9a981768905ea015be025111115bbdf12644443ba068759bff5f5e3a44cbde7e3724c1617941c632750008f1b73414b7397445f9f57ed5f4eacd959a00082199f1ff7e9d65ce1f7b7ec6f73436ecd63d530efae75d5052a7abefbfc8b3a6abc8f9993a6ab2d4f712a6ab4596e7ab42f5ce8a73f7179e1850db55d24a45709eab2f2f5233f8d4e4397e7fa185a852847d7cbff75352f2e4d205fe31462d930b00d5f80a433af8e03d403fb235b76bfc465a0acbda91b70bfeccf02c5c62d177abddeee358f1fb224c34282c353c78d0bcf39e59957fe15758628fe442c34b990f3e75ebae79622968311193555b3dadcebef5cd5397073dacb13b7988486c39797ea988804c88f9eda7648f3d86f385c2827da5d07adb9f2dd397bf8f7cc653dcec292e6d786479d37e40f7b5d989df8ab00cb7fe1eaec1dd4953b1c2d99f57dd38a405d31d69c74cbfb9f2fc5df53000bc0e71d87d0c18ddab23b99d8f1208973fe47ac4c31189cb7dd44e14abc934678f4055aafe97e9eb41b56c108c3ee76c1cf9f728303febb9b3fb3282febf3e2f8fe9987bc3892cb8c3e18247e246444cda36811b2da0b111d923cb11311a8931c7e4377db5c14444a0cb5bcad8560111949d74412238ca019257faae24a0a04037287bdb93a686e5ed29a322e4ed5afa88134444c6deec55de6f57363e98a95d3d34802afcf0ed74741c4df375d5ef06c76991d0aa30e1be7a81db7b607825253533fb000b97e5861ade67228be24583004bd68a60fa39d32a7565af6e4dfebd7d0d954a5f5aef2edbe89bd5fc71a72aaa52a793d4e7af464fa6396983170aec910d57fe5d1d779a98300bee0d09ee4e2e8b975097a3677b97b8f995c33e7fdc77dd62a836663e0c97e77d17b4b7f72c5fbceee117b04a822bce4ea3dcde78c26656e9cb0de131906926f6d63b89babea1cad4dae454693ff5f70557bb16133429273adc8110657cbfbaa15538c46a4fcc173831d46885ead4de7835aad1c0b8d2d957d0b45959ce85a569426f5e696bfe34d625bdbd1cab6acb83a729bf87db424fb2a22620361eab1fe4a572ccccafcf8a3afb30a21744e8b5251c407c7a5bdfc505036c2c2b6cf86d90f0fef35b5a054260292d2f3e28663758488efe030c800619065c4e7ae99dc1f2011194326571aff934e53bbe3aa681a86151aa41798a264407438d44db14b267ed8c9ca8a4516073fe0b53b38b06c4b8903f091182c17bcf6176953ef259cb697c880c898ed9b86aa4efd26bd635341f2b147aa1d22bcf7f5dad2d9394d2b7fda3fc81f4bf5f391b4448693478cc536552f69dc2db71b8da52ed0201c175f0f1c37dc42231febfdd8fe54814f7f986784c43ad5a0c8decfaef6fcec25dee4dd8f4be8188816a77cf175d1f54b77b5acb6f4a6c6c60f022243deadc7e4c2c9f9779edd79a275e0164444695bbdf9d5d94f9ff5f085435cfb82ec0d03625c801692fc882cc62affba5ee8772d78de3938abc57eea11a5de0f2fecb4809ffd52ad1168bf7fafaba6e6ef1b1a07b6d9c08be0c833eb2e97d9153375b37f8e2f494a7eff1d0274ae1ab57db172e9803fe6ccfd406a159bd1a4070cb1f3aa3499df8576ed21b0eb3aeb86c55335debe36ff3785756f3a431984539616c69f11797e48905db4ff2505eb96642a81992f00ab9a028136168f713219a2b26df50a30d8c90aae43626c573d36c866a61cd834d2e95e493b7d71d699caee630480dd50802254143e9abe75aaf6a49034746e42a7e8e8bbd1a238fb9ceeabe012da3b6a496ce3efeef1a1b437442a6f3171539fa52222278bcdf4db09add60419bd4614ce60657c9fa77ea05bec49117eaf277a597afc9939b211113a0438a9bacdaec0f3734acab9ef6e6cda52f0b1bef39a814b2e78a1222218129e9dcdee3cc9ea47c4ec80619bf4443f9374a72be4d20328ba5e8db3519bfa71b44ea345e9bb023cfefa7179c1d16f65940c9b27e58f0f31b82252fca9d9b2973eac53d765ccd696f55eb94171ec1c27d6d46e019248bbc1d50f4eb14d55fd9c68c8f75708e1fc01ee1a6f570ea646006d00ca10857fa1caff107d7f7057eba98065000000009454e444ea240628'; + } + return(\$main::imgErr); +} + + +package myCGI; + +use CGI; + +sub new { + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = {}; + $self->{'CGI'} = CGI->new(shift); + bless ($self, $class); + return $self; +} + +sub r { + my $self = shift; + return($self->{'CGI'}); +} + +sub DESTROY { + my $self = shift; + +} + +sub paramDefault { + my $self = shift; + my %param = @_; + + foreach my $param (keys(%param)) { + unless (defined($self->r->param(-Name=>$param))) { + $self->r->param(-Name=>$param, -Value=>$param{$param}); + } + } + return values(%param); +} + +sub paramHidden { + my $self = shift; + my @hidden = @_; + + my @result; + foreach my $param (@hidden) { + push(@result, $self->r->hidden(-Name=>$param)); + } + return(@result); +} + +sub saveparam { + my $self = shift; + my $savefile = shift; + my $fh = FileHandle->new($savefile, "w"); + defined($fh) || confess("Error opening $savefile (w): $!"); + $self->r->save($fh); + $fh->close(); + chmod 0777, $savefile; +} + + +=head1 NAME + +rrdview.cgi - Perl CGI software to graph rrd image online + +=head1 SYNOPSIS + +Put it on any cgi-bin/ directory, use a browser, click and fill in an +rrd file in the first textfield (replacing foo.rrd). The file belongs +to the web server. + +=head1 DESCRIPTION + +Just another rrd viewer. + +=head1 TODO + + . An upload textfield to allow graphing client rrd files. + . Deal with LAST, MAX, MIN RRA. + +=head1 AUTHOR + +Gilles LAMIRAL +lamiral@mail.dotcom.fr + +=head1 SEE ALSO + +rrdtool(1), perl(1). + +=cut + + + diff --git a/contrib/snmpstats/README b/contrib/snmpstats/README new file mode 100644 index 00000000..509acea2 --- /dev/null +++ b/contrib/snmpstats/README @@ -0,0 +1,43 @@ +SNMPstats.pl is a moderately simple and quick perl SNMP poller for simple +interface traffic and other counters. It's written with flexible and easy +hacking in mind, and is commented appropriately. + +It requires Net::SNMP version 2, available from CPAN. + +For the sake of simplicity, device names, IPs, and SNMP read strings are +hard coded, but this can be easily substituted with something more +dynamic. Structure for the devices hash is: + +$devices{}{'ip_address'} = + {'snmp_read'} = + +SNMP objects are stored in %oids. SNMP objects polled during device sweeps +are stored in @poll_int, using named references to the object names used +as key variables in %oids. + +Interface stats are only collected for interfaces that have an +ifAdminStatus of 1. This cuts down on SNMP load quite a bit, given devices +are properly managed. Your mileage will vary based on device policies. + +RRDs are only created for interfaces with ifAdminStatus of 1. This gives +you some amount of scale control. Interfaces are checked for an existing +RRD on each collection pass, and RRDs created as needed. They are NOT +removed if you admin down an interface, so stale RRD cleanup is your +problem. + +One caveat to note is that RRDs are created with upper limits based on +ifSpeed. For autosensing 10/100 switches, this is a problem. In an effort +to keep this utility simple, I formally declare it to be 'your +problem'. + +This utility runs as a recurring loop, so it's meant to be run in the +background like a daemon. You can strip the while/sleep sets and stuff it +in cron, if you're so inclined. YMMV. + +The script itself is heavily commented, explaining what I do as I go. Be a +good user, read the code before you run it. It's simple and +straightforward, and it's a good idea to understand how it works, +especially if you're a novice user. + +Bill Nash +billn@billn.net / billn@gblx.net diff --git a/contrib/snmpstats/SNMPstats.pl b/contrib/snmpstats/SNMPstats.pl new file mode 100755 index 00000000..9ebf9482 --- /dev/null +++ b/contrib/snmpstats/SNMPstats.pl @@ -0,0 +1,363 @@ +#!/usr/bin/perl -w + +# Q: Who wrote this? +# Bill Nash - billn@billn.net / billn@gblx.net +# +# Q: Why? +# SNMP retrieval and storage of interface utilization, ala MRTG. +# +# Q: Is this a supported utility? +# Barely. That means if there's a serious problem with it, you can email me. I'll take feature requests +# provided they're presented in an intelligent manner. I will NOT write scripts for you. There's a plethora +# of information available to you, stop being lazy and do it yourself. Mostly, I wrote this for myself. I +# released it to the community at large because it's useful. Your mileage may vary. This code carries no +# warranty and I'm not responsible if you do something stupid with it. +# +# Q: Why does the author sound like a grumpy curmudgeon? +# Because I'm releasing a utility to the public, and I detest people. I read the MRTG lists. I know what you +# people are and are not capable of. I could jump up on my soapbox and rant about the general laziness of people, +# but no one will care. The user base at large is full of lazy bastards who just want someone else to create something +# that does exactly what they want, with as little effort required on their part. +# +# Q: Is it safe to ask questions about this utility? +# I will be more than happy to entertain discussions about this utility, provided: +# It's a discussion of perl mechanics, and the person asking the question knows something about Perl. +# It's a discussion of SNMP mechanics, and the person asking the question isn't asking where to find Mibs/objects. +# You're a Playboy Bunny and you'd like to meet me for dinner. +# +# Q: Your code sucks, billn, why does this do [such and such], and why didn't you do condense [this and this]? +# This is intended to be a simple utility. No fancy obsfucation, no serious attention to efficiency. The only real creative +# parts are using ifDescr/ifName as an interface basis (which offsets the nasty ifIndex shift problem by using ifIndex has a +# value of the key, ifDescr/ifName, instead of vice versa. The ifIndex can change all it wants. Don't go saying 'Well, what if +# interface name changes?', because I'll just say "Then it's a new interface. Cope." +# Also, by NOT obfuscating functions and keeping things simple, I'd hope people looking at this script that aren't fully versed +# in the intricacies and foibles of SNMP, PERL and RRD will have an easier time grasping the concepts, and maybe learn a bit from +# this. Much of the code contained in here is interchangable, data sources can be substituted left and right, and I fully expect +# someone to hack this into a shining pearl of relative usefulness on a regular basis. It's not the end all, be all of SNMP pollers, +# but I expect it'll find widespread use. + +$local_dir = "/usr/local/rrdtool-1.0.28"; # Where this script lives +$rrd_store = "$local_dir/rrd"; # Where to keep our rrd datastores + +$debug = 0; + +# This is Net::SNMP-2.00. It's not included with this script. Try CPAN. +use Net::SNMP; + +# RRD Perl module. If you don't have it, why are you here? +use RRDs; + +# This piece can be ripped out and subbed for any number of data storage methods. This is a simple method +# that works for those handling only a few devices. IP addresses are important because I don't use hostname +# matches for the SNMP calls. This eliminates DNS dependancies, but does require you to maintain your code or +# host registries. + +$devices{"Hades"}{'ip_address'} = "10.0.0.254"; # my switch +$devices{"Hades"}{'snmp_read'} = "public"; +$devices{"Bifrost"}{'ip_address'} = "10.0.0.253"; # my router +$devices{"Bifrost"}{'snmp_read'} = "public"; + +# Standard SNMP mib2 jazz. Feel free to edit. YMMV. + +# Variables from the %oids hash we'll be referencing later. It's easier to call them by a name. +# What, you think I'm gonna memorize SNMP oids? =P + +@poll_int = ( + "ifDescr", + "ifOperStatus", + "ifAlias", + "ifInErrors", + "ifInOctets", + "ifOutErrors", + "ifOutOctets", + "ifSpeed" +); + +%oids = ( + sysDescr => "1.3.6.1.2.1.1.1.0", + sysName => "1.3.6.1.2.1.1.5.0", + sysUptime => "1.3.6.1.2.1.1.3.0", + ifNumber => "1.3.6.1.2.1.2.1.0", + #ifDescr => "1.3.6.1.2.1.2.2.1.2", + ifType => "1.3.6.1.2.1.2.2.1.3", + ifSpeed => "1.3.6.1.2.1.2.2.1.5", + ifPhysAddress => "1.3.6.1.2.1.2.2.1.6", + ifAdminStatus => "1.3.6.1.2.1.2.2.1.7", + ifOperStatus => "1.3.6.1.2.1.2.2.1.8", + ifAlias => "1.3.6.1.2.1.31.1.1.1.18", + ifInErrors => "1.3.6.1.2.1.2.2.1.14", + ifInOctets => "1.3.6.1.2.1.2.2.1.10", + ifInUnkProtos => "1.3.6.1.2.1.2.2.1.15", + ifLastChange => "1.3.6.1.2.1.2.2.1.19", + ifDescr => "1.3.6.1.2.1.31.1.1.1.1", # was ifXName, subbed for ifDescr + ifOutDiscards => "1.3.6.1.2.1.2.2.1.19", + ifOutErrors => "1.3.6.1.2.1.2.2.1.20", + ifOutOctets => "1.3.6.1.2.1.2.2.1.16" +); + +while(1) { + $start = time; + + foreach $device_name (keys %devices) { + undef(%ifAdmin); + # Establish an snmp session with the device + my($session, $error) = Net::SNMP->session( + Hostname => $devices{$device_name}{'ip_address'}, + Community => $devices{$device_name}{'snmp_read'}, + Translate => 1, + VerifyIP => 1 + ); + + # This example may seem a bit long and drawn out, but it's better for a clear view of how the procedure works + # It's entirely possible (and more efficient) to restructure this into a tight bundle of reusable code. + if ($session) { + print "$device_name: SNMP Session established ($device_name, $devices{$device_name}{'ip_address'})\n" if ($debug); + + # First step, find all the administratively active interfaces. Typically, this should be the ONLY + # table that takes a walk across all interfaces. If you're doing smart and clean device management, + # all unused/undesignated interfaces should be admin'd down and scrubbed of configs. If you don't + # maintain this kind of device policy, don't cry to me because things take longer than you expect. + + # For the sake of efficiency, I should note here that this set of data doesn't HAVE to be generated with an SNMP poll + # You can have an entirely external management system here that dictates what interfaces are tracked. You can rip this + # chunk out and replace it with something else entirely. + + #print "Retrieving ifAdminStatus table: $oids{'ifAdminStatus'}\n" if ($debug); + $response = $session->get_table($oids{'ifAdminStatus'}); + if($error_message = $session->error) { + if($error_message eq "Requested table is empty" || + $error_message eq "Recieved SNMP noSuchName(2) error-status at error-index 1") {} + else { + print STDERR "ifAdmin table get failed ($device_name: $oids{'ifAdminStatus'}): $error_message\n" + } # end if + next; # Can't get an ifAdminStatus table? No active interfaces or a borked SNMP engine. Next! + } # end if + + %array = %{$response}; + foreach $key (keys %array) { + + $ifIndex = $key; + $ifIndex =~ s/^$oids{'ifAdminStatus'}.//g; + + # Hash the ifAdminStatus data if the status is 1. We aren't going to bother with any + # interfaces that aren't set active. + # For the curious, possible values here are: + # @OperStatus=("null", "Up", "Down", "Looped", "null", "Dormant", "Missing"); + + $ifAdmin{$ifIndex} = $array{$key}; + #print "$device_name: ifIndex $ifIndex, ifAdmin $array{$key} $ifAdmin{$ifIndex}\n" if ($debug); + } #end foreach + + # Cycle through all The admin'd active interfaces, by ifIndex + foreach $ifIndex (keys %ifAdmin) { + undef(@interface_rrd); + next if ($ifAdmin{$ifIndex} != 1); + # Cycle through all the objects we want to track for each interface. This + # is a highly reusable set of code, set up to perform the same task repeatedly for + # (potentially long) lists of variables. + foreach $object (@poll_int) { + # get the numeric oid values from the oids table + $object_id = $oids{$object}; + + # go get the object. + $response = $session->get_request("$object_id.$ifIndex"); + if($error_message = $session->error) { + if($error_message eq "Recieved SNMP noSuchName(2) error-status at error-index 1") { + # It's a common occurence to poll an interface for an object that it + # doesn't support, so we'll just U the object. + $data{$device_name}{$ifIndex}{$object} = "U"; + } #end if + + # Whatever the object was, it didn't want to be 'gotten', so screw it. + print STDERR "Object get failed ($device_name: $object_id.$ifIndex):$error_message\n" if ($debug); + next; + } #end if + + %array = %{$response}; + + # Shucks, got data, get to work. This chunk of code is pretty generic, and you'll + # recognize it from up above. I *could* use a single iteration here, but better save + # in case the snmp engine did something hokey, or we used a table base variable in the get. + # The multilayer hash prolly makes some of you twitch to see, but hey, if you don't like it, + # why are you reading my code to begin with? It works, take a hike. + # Anyway, it's an extensible memory structure that doesn't care what you're stuffing into it. + + foreach $key (keys %array) { + $ifIndex = $key; + $ifIndex =~ s/^$oids{$object}.//g; + + $data{$device_name}{$ifIndex}{$object} = $array{$key}; + #print "$device_name: ifIndex $ifIndex, $object = $data{$device_name}{$ifIndex}{$object}\n"; + } #end foreach + } #end foreach + } #end foreach + + # Alright, so at this point, we should have a full set of data (whatever we requested) for + # each active interface. + # This whole next section is all about what we do with any given piece of data, so if you're doing + # customization beyond what I've included, here's your sandbox, here's your shovel. Go build me a Buick. + + # My primary goal for this utility is low overhead interface utilization tracking for my router and switch. + # In combination with RRDtool's graphing abilities, poof, it's a skimpy but solid (and extensible) replacement + # for MRTG. Don't get me wrong, I like MRTG, but RRDtool a lot easier to do flexible things with. The fact + # that this whole piece is in Perl provides a working template for bigger and crazier things, like using + # a real SQL db for tracking port data, or real time data feeds to Linus knows what. With these things in + # mind, let's start tossing some data. + + # ifSpeed => "1.3.6.1.2.1.2.2.1.5", + # Since we're doing traffic graphing, it's helpful to know the size of the pipe we're tracking. + + # ifOperStatus => "1.3.6.1.2.1.2.2.1.8", + # If the interface is down for some reason, it'd be good to have a way to represent that. + + # ifAlias => "1.3.6.1.2.1.31.1.1.1.18", + # ifAlias is usually a human supplied interface description. + + # ifInErrors => "1.3.6.1.2.1.2.2.1.14", + # ifInOctets => "1.3.6.1.2.1.2.2.1.10", + # ifInUnkProtos => "1.3.6.1.2.1.2.2.1.15", + # ifOutDiscards => "1.3.6.1.2.1.2.2.1.19", + # ifOutErrors => "1.3.6.1.2.1.2.2.1.20", + # ifOutOctets => "1.3.6.1.2.1.2.2.1.16" + # These should be pretty obvious. No, that's not short for Uncle Protos. + + # ifDescr => "1.3.6.1.2.1.2.2.1.2", + # This is usually the name for an interface. Very important variable. + # Since I'm testing with a cisco catalyst, I've switched ifDescr for ifName/ifXName, up top. Less pain. + + # We need a place to store this stuff, so let's check out storage structures + + foreach $device_name (keys %data) { + #print "Generating/feeding data for $device_name\n"; + foreach $ifIndex (keys %{$data{$device_name}}) { + + $ifDescr = $data{$device_name}{$ifIndex}{'ifDescr'}; + if ($ifDescr eq "") { + #print "$device_name ifIndex $ifIndex apparantly has a null ifDescr -> [$ifDescr], skipping\n"; + next; + } # end if + + # If you recognize where I stole these from, you may already know me as '[tHUg]Heartless' + # I prefer the Aug and the TMP, and I fear no AWP. =) + # This set of regexp's is for scrubbing potentially exciting characters from interface names before + # using them as the basis for storing files. Some OS's and file systems may object to some of these + # characters, so, better safe than annoyed. + # You'll note I don't provide facilities for reverting this. I just collect the stuff. Display is your problem. + + $ifDescr =~ s/ /_/g; + $ifDescr =~ s/\=/\[EQUAL\]/g; + $ifDescr =~ s/\,/\[CMA\]/g; + $ifDescr =~ s/;/\[SMICLN\]/g; + $ifDescr =~ s/:/\[CLN\]/g; + $ifDescr =~ s/\"/\[DBLQT\]/g; + $ifDescr =~ s/\'/\[SNGLQT\]/g; + $ifDescr =~ s/\{/\[LB2\]/g; + $ifDescr =~ s/\}/\[RB2\]/g; + $ifDescr =~ s/\+/\[PLS\]/g; + $ifDescr =~ s/\-/\[DSH\]/g; + $ifDescr =~ s/\(/\[LPRN\]/g; + $ifDescr =~ s/\)/\[RPRN\]/g; + $ifDescr =~ s/\*/\[STR\]/g; + $ifDescr =~ s/\&/\[AND\]/g; + $ifDescr =~ s/\|/\[PIPE\]/g; + $ifDescr =~ s/\\/\[BSLSH\]/g; + $ifDescr =~ s/\//\[FSLSH\]/g; + $ifDescr =~ s/\?/\[QUESTN\]/g; + $ifDescr =~ s/\/\[GT\]/g; + $ifDescr =~ s/\./\[DOT\]/g; + $ifDescr =~ s/\!/\[XCLM\]/g; + $ifDescr =~ s/\@/\[AT\]/g; + $ifDescr =~ s/\#/\[PND\]/g; + $ifDescr =~ s/\$/\[DLLR\]/g; + $ifDescr =~ s/\%/\[\PRCNT\]/g; + $ifDescr =~ s/\^/\[CRT\]/g; + + if ( -e "$rrd_store/$device_name-$ifDescr.rrd") { + # Uh, hey, it's there. Don't worry, be happy. + } + else { # Oh, damn, it isn't, better create it. + + # Knowing the speed of the interface, generally reported by SNMP in bits per second, + # we can fairly accurately determine how long it could take that counter to roll over, + # if it's a 32 bit counter. + # So, we'll use that info in creating the interface data. You may recognize these variables + # from the RRD tutorial docs, which were further derived from MRTG. I reuse them both because + # I'm lazy and so people will recognize what to hack on if they've beat up MRTG before. + + if ($speed = $data{$device_name}{$ifIndex}{'ifSpeed'}) { + print "$device_name: Found $speed speed for $ifIndex\n"; + } + else { + $speed = "U"; + } + + @interface_rrd = ( + "DS:InBits:COUNTER:600:0:$speed", + "DS:OutBits:COUNTER:600:0:$speed", + "RRA:AVERAGE:0.5:1:600", + "RRA:AVERAGE:0.5:6:700", + "RRA:AVERAGE:0.5:24:775", + "RRA:AVERAGE:0.5:288:797", + "RRA:MAX:0.5:1:600", + "RRA:MAX:0.5:6:700", + "RRA:MAX:0.5:24:775", + "RRA:MAX:0.5:288:797" + ); + + # I feed the array to the create argument here, so it's easier to alter the rrd + # creation by just changing entries in the array above. Generic and reusable. + + if(RRDs::create ("$rrd_store/$device_name-$ifDescr.rrd", + "--step=300", + @interface_rrd)) { + print "Built RRd for $ifDescr\n"; + } + else { + $ERR=RRDs::error; + print "RRd build for $ifDescr appears to have failed: $ERR\n"; + next; + } + } + + + # Do some calculations. + + $data{$device_name}{$ifIndex}{InBits} = $data{$device_name}{$ifIndex}{ifInOctets} * 8; + $data{$device_name}{$ifIndex}{OutBits} = $data{$device_name}{$ifIndex}{ifOutOctets} * 8; + + # Feed the RRD our data. + + $rrdfeed = join ":", ("N", + $data{$device_name}{$ifIndex}{InBits}, +# $data{$device_name}{$ifIndex}{IfInErrors}, + $data{$device_name}{$ifIndex}{OutBits}, +# $data{$device_name}{$ifIndex}{IfOutErrors}, + ); + + RRDs::update ("$rrd_store/$device_name-$ifDescr.rrd", + "--template", "InBits:OutBits", + "$rrdfeed"); + + if($ERR=RRDs::error) { + print STDERR "$rrd_store/$device_name-$ifDescr.rrd update failed: $ERR\n"; + } + else { + #print "$rrd_store/$device_name-$ifDescr.rrd updated\n" if ($debug); + } + } + } # yeah, it's sloppy, sue me. + } + else { + # Abort abort abort, no go no go. uNF. =) + print STDERR "$device_name: SNMP Session failed: $error\n"; + } + } + + $end = time; + + $duration = $end - $start; + $sleep_period = 300 - $duration; + if($sleep_period > 0) { sleep($sleep_period) } + undef(%data); +} diff --git a/contrib/trytime/.deps/trytime.P b/contrib/trytime/.deps/trytime.P new file mode 100644 index 00000000..d55b82f9 --- /dev/null +++ b/contrib/trytime/.deps/trytime.P @@ -0,0 +1,52 @@ +trytime.o: trytime.c /usr/include/time.h \ + /usr/include/sys/feature_tests.h /usr/include/sys/time.h \ + /usr/include/sys/types.h /usr/include/sys/isa_defs.h \ + /usr/include/sys/machtypes.h /usr/include/sys/int_types.h \ + /usr/include/sys/select.h /usr/include/sys/siginfo.h \ + /usr/include/sys/machsig.h /usr/include/stdio.h \ + /usr/include/sys/va_list.h /usr/include/stdlib.h \ + /usr/include/string.h ../../src/getopt.h ../../src/rrd_tool.h \ + ../../config/config.h \ + /usr/pack/gcc-2.95.2-to/sol26/lib/gcc-lib/sparc-sun-solaris2.6/2.95.2/include/math.h \ + /usr/include/math.h /usr/include/floatingpoint.h \ + /usr/include/sys/ieeefp.h /usr/include/float.h /usr/include/ieeefp.h \ + /usr/include/errno.h /usr/include/sys/errno.h /usr/include/ctype.h \ + /usr/include/sys/param.h /usr/include/sys/unistd.h \ + /usr/include/unistd.h /usr/include/sys/times.h \ + /usr/include/sys/resource.h ../../src/rrd.h ../../src/rrd_format.h \ + ../../gd1.3/gd.h +trytime.c : +/usr/include/time.h : +/usr/include/sys/feature_tests.h : +/usr/include/sys/time.h : +/usr/include/sys/types.h : +/usr/include/sys/isa_defs.h : +/usr/include/sys/machtypes.h : +/usr/include/sys/int_types.h : +/usr/include/sys/select.h : +/usr/include/sys/siginfo.h : +/usr/include/sys/machsig.h : +/usr/include/stdio.h : +/usr/include/sys/va_list.h : +/usr/include/stdlib.h : +/usr/include/string.h : +../../src/getopt.h : +../../src/rrd_tool.h : +../../config/config.h : +/usr/pack/gcc-2.95.2-to/sol26/lib/gcc-lib/sparc-sun-solaris2.6/2.95.2/include/math.h : +/usr/include/math.h : +/usr/include/floatingpoint.h : +/usr/include/sys/ieeefp.h : +/usr/include/float.h : +/usr/include/ieeefp.h : +/usr/include/errno.h : +/usr/include/sys/errno.h : +/usr/include/ctype.h : +/usr/include/sys/param.h : +/usr/include/sys/unistd.h : +/usr/include/unistd.h : +/usr/include/sys/times.h : +/usr/include/sys/resource.h : +../../src/rrd.h : +../../src/rrd_format.h : +../../gd1.3/gd.h : diff --git a/contrib/trytime/Makefile b/contrib/trytime/Makefile new file mode 100644 index 00000000..70e07078 --- /dev/null +++ b/contrib/trytime/Makefile @@ -0,0 +1,381 @@ +# Generated automatically from Makefile.in by configure. +# Makefile.in generated automatically by automake 1.4 from Makefile.am + +# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + +SHELL = /bin/sh + +srcdir = . +top_srcdir = ../.. +prefix = /usr/local/rrdtool-1.0.33 +exec_prefix = ${prefix} + +bindir = ${exec_prefix}/bin +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/info +mandir = ${prefix}/man +includedir = ${prefix}/include +oldincludedir = /usr/include + +DESTDIR = + +pkgdatadir = $(datadir)/rrdtool +pkglibdir = $(libdir)/rrdtool +pkgincludedir = $(includedir)/rrdtool + +top_builddir = ../.. + +ACLOCAL = aclocal +AUTOCONF = autoconf +AUTOMAKE = automake +AUTOHEADER = autoheader + +INSTALL = /usr/sepp/bin/ginstall -c +INSTALL_PROGRAM = ${INSTALL} $(AM_INSTALL_PROGRAM_FLAGS) +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_SCRIPT = ${INSTALL_PROGRAM} +transform = s,x,x, + +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_alias = sparc-sun-solaris2.6 +build_triplet = sparc-sun-solaris2.6 +host_alias = sparc-sun-solaris2.6 +host_triplet = sparc-sun-solaris2.6 +target_alias = sparc-sun-solaris2.6 +target_triplet = sparc-sun-solaris2.6 +CC = gcc +CGI_LIB_DIR = cgilib-0.4 +COMP_PERL = perl_piped perl_shared +CPP = gcc -E +GD_LIB_DIR = gd1.3 +LIBTOOL = $(SHELL) $(top_builddir)/libtool +NROFF = /usr/sepp/bin/gnroff +PERL = /usr/sepp/bin/perl +PERLFLAGS = +PERL_MAKE_OPTIONS = +PNG_LIB_DIR = libpng-1.0.9 +RANLIB = ranlib +SO_EXT = so +TCL_LD_SEARCH_FLAGS = +TCL_PACKAGE_PATH = +TCL_PREFIX = +TCL_SHLIB_CFLAGS = +TCL_SHLIB_LD = +TCL_SHLIB_SUFFIX = +TROFF = /usr/sepp/bin/groff +VERSION = 1.0.33 +ZLIB_LIB_DIR = zlib-1.1.3 + +INCLUDES = -I../../src -I../../gd1.3 +EXTRA_DIST = trytime.c +contribdir = $(prefix)/contrib/trytime +contrib_DATA = README trytime.c +bin_PROGRAMS = trytime +trytime_SOURCES = trytime.c +trytime_LDADD = ../../src/librrd.la +mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs +CONFIG_HEADER = ../../config/config.h +CONFIG_CLEAN_FILES = +PROGRAMS = $(bin_PROGRAMS) + + +DEFS = -DHAVE_CONFIG_H -I. -I$(srcdir) -I../../config +CPPFLAGS = +LDFLAGS = +LIBS = -lm +trytime_OBJECTS = trytime.o +trytime_DEPENDENCIES = ../../src/librrd.la +trytime_LDFLAGS = +CFLAGS = -g -O2 -Wall -pedantic -Wshadow -Wpointer-arith -Wcast-align -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Winline -fPIC +COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ +DATA = $(contrib_DATA) + +DIST_COMMON = README Makefile.am Makefile.in + + +PACKAGE = rrdtool + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = gtar +GZIP_ENV = --best +DEP_FILES = .deps/trytime.P +SOURCES = $(trytime_SOURCES) +OBJECTS = $(trytime_OBJECTS) + +all: all-redirect +.SUFFIXES: +.SUFFIXES: .S .c .lo .o .s +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOMAKE) --foreign contrib/trytime/Makefile + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES) + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + + +mostlyclean-binPROGRAMS: + +clean-binPROGRAMS: + -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) + +distclean-binPROGRAMS: + +maintainer-clean-binPROGRAMS: + +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(bindir) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + if test -f $$p; then \ + echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ + $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ + else :; fi; \ + done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + list='$(bin_PROGRAMS)'; for p in $$list; do \ + rm -f $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ + done + +.s.o: + $(COMPILE) -c $< + +.S.o: + $(COMPILE) -c $< + +mostlyclean-compile: + -rm -f *.o core *.core + +clean-compile: + +distclean-compile: + -rm -f *.tab.c + +maintainer-clean-compile: + +.s.lo: + $(LIBTOOL) --mode=compile $(COMPILE) -c $< + +.S.lo: + $(LIBTOOL) --mode=compile $(COMPILE) -c $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + +maintainer-clean-libtool: + +trytime: $(trytime_OBJECTS) $(trytime_DEPENDENCIES) + @rm -f trytime + $(LINK) $(trytime_LDFLAGS) $(trytime_OBJECTS) $(trytime_LDADD) $(LIBS) + +install-contribDATA: $(contrib_DATA) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(contribdir) + @list='$(contrib_DATA)'; for p in $$list; do \ + if test -f $(srcdir)/$$p; then \ + echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(contribdir)/$$p"; \ + $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(contribdir)/$$p; \ + else if test -f $$p; then \ + echo " $(INSTALL_DATA) $$p $(DESTDIR)$(contribdir)/$$p"; \ + $(INSTALL_DATA) $$p $(DESTDIR)$(contribdir)/$$p; \ + fi; fi; \ + done + +uninstall-contribDATA: + @$(NORMAL_UNINSTALL) + list='$(contrib_DATA)'; for p in $$list; do \ + rm -f $(DESTDIR)$(contribdir)/$$p; \ + done + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + here=`pwd` && cd $(srcdir) \ + && mkid -f$$here/ID $$unique $(LISP) + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ + || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) + +mostlyclean-tags: + +clean-tags: + +distclean-tags: + -rm -f TAGS ID + +maintainer-clean-tags: + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) + +subdir = contrib/trytime + +distdir: $(DISTFILES) + here=`cd $(top_builddir) && pwd`; \ + top_distdir=`cd $(top_distdir) && pwd`; \ + distdir=`cd $(distdir) && pwd`; \ + cd $(top_srcdir) \ + && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --foreign contrib/trytime/Makefile + @for file in $(DISTFILES); do \ + d=$(srcdir); \ + if test -d $$d/$$file; then \ + cp -pr $$d/$$file $(distdir)/$$file; \ + else \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file || :; \ + fi; \ + done + +DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :) + +-include $(DEP_FILES) + +mostlyclean-depend: + +clean-depend: + +distclean-depend: + -rm -rf .deps + +maintainer-clean-depend: + +%.o: %.c + @echo '$(COMPILE) -c $<'; \ + $(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $< + @-cp .deps/$(*F).pp .deps/$(*F).P; \ + tr ' ' '\012' < .deps/$(*F).pp \ + | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ + >> .deps/$(*F).P; \ + rm .deps/$(*F).pp + +%.lo: %.c + @echo '$(LTCOMPILE) -c $<'; \ + $(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $< + @-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \ + < .deps/$(*F).pp > .deps/$(*F).P; \ + tr ' ' '\012' < .deps/$(*F).pp \ + | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ + >> .deps/$(*F).P; \ + rm -f .deps/$(*F).pp +info-am: +info: info-am +dvi-am: +dvi: dvi-am +check-am: all-am +check: check-am +installcheck-am: +installcheck: installcheck-am +install-exec-am: install-binPROGRAMS +install-exec: install-exec-am + +install-data-am: install-contribDATA +install-data: install-data-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +install: install-am +uninstall-am: uninstall-binPROGRAMS uninstall-contribDATA +uninstall: uninstall-am +all-am: Makefile $(PROGRAMS) $(DATA) +all-redirect: all-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install +installdirs: + $(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(contribdir) + + +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + -rm -f config.cache config.log stamp-h stamp-h[0-9]* + +maintainer-clean-generic: +mostlyclean-am: mostlyclean-binPROGRAMS mostlyclean-compile \ + mostlyclean-libtool mostlyclean-tags mostlyclean-depend \ + mostlyclean-generic + +mostlyclean: mostlyclean-am + +clean-am: clean-binPROGRAMS clean-compile clean-libtool clean-tags \ + clean-depend clean-generic mostlyclean-am + +clean: clean-am + +distclean-am: distclean-binPROGRAMS distclean-compile distclean-libtool \ + distclean-tags distclean-depend distclean-generic \ + clean-am + -rm -f libtool + +distclean: distclean-am + +maintainer-clean-am: maintainer-clean-binPROGRAMS \ + maintainer-clean-compile maintainer-clean-libtool \ + maintainer-clean-tags maintainer-clean-depend \ + maintainer-clean-generic distclean-am + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + +maintainer-clean: maintainer-clean-am + +.PHONY: mostlyclean-binPROGRAMS distclean-binPROGRAMS clean-binPROGRAMS \ +maintainer-clean-binPROGRAMS uninstall-binPROGRAMS install-binPROGRAMS \ +mostlyclean-compile distclean-compile clean-compile \ +maintainer-clean-compile mostlyclean-libtool distclean-libtool \ +clean-libtool maintainer-clean-libtool uninstall-contribDATA \ +install-contribDATA tags mostlyclean-tags distclean-tags clean-tags \ +maintainer-clean-tags distdir mostlyclean-depend distclean-depend \ +clean-depend maintainer-clean-depend info-am info dvi-am dvi check \ +check-am installcheck-am installcheck install-exec-am install-exec \ +install-data-am install-data install-am install uninstall-am uninstall \ +all-redirect all-am all installdirs mostlyclean-generic \ +distclean-generic clean-generic maintainer-clean-generic clean \ +mostlyclean distclean maintainer-clean + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/contrib/trytime/Makefile.am b/contrib/trytime/Makefile.am new file mode 100644 index 00000000..514a4435 --- /dev/null +++ b/contrib/trytime/Makefile.am @@ -0,0 +1,8 @@ +## Process this file with automake to produce Makefile.in +INCLUDES = -I../../src -I../../gd1.3 +EXTRA_DIST = trytime.c +contribdir = $(prefix)/contrib/trytime +contrib_DATA = README trytime.c +bin_PROGRAMS = trytime +trytime_SOURCES = trytime.c +trytime_LDADD = ../../src/librrd.la diff --git a/contrib/trytime/Makefile.in b/contrib/trytime/Makefile.in new file mode 100644 index 00000000..540a8168 --- /dev/null +++ b/contrib/trytime/Makefile.in @@ -0,0 +1,381 @@ +# Makefile.in generated automatically by automake 1.4 from Makefile.am + +# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include + +DESTDIR = + +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ + +top_builddir = ../.. + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +transform = @program_transform_name@ + +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_alias = @build_alias@ +build_triplet = @build@ +host_alias = @host_alias@ +host_triplet = @host@ +target_alias = @target_alias@ +target_triplet = @target@ +CC = @CC@ +CGI_LIB_DIR = @CGI_LIB_DIR@ +COMP_PERL = @COMP_PERL@ +CPP = @CPP@ +GD_LIB_DIR = @GD_LIB_DIR@ +LIBTOOL = @LIBTOOL@ +NROFF = @NROFF@ +PERL = @PERL@ +PERLFLAGS = @PERLFLAGS@ +PERL_MAKE_OPTIONS = @PERL_MAKE_OPTIONS@ +PNG_LIB_DIR = @PNG_LIB_DIR@ +RANLIB = @RANLIB@ +SO_EXT = @SO_EXT@ +TCL_LD_SEARCH_FLAGS = @TCL_LD_SEARCH_FLAGS@ +TCL_PACKAGE_PATH = @TCL_PACKAGE_PATH@ +TCL_PREFIX = @TCL_PREFIX@ +TCL_SHLIB_CFLAGS = @TCL_SHLIB_CFLAGS@ +TCL_SHLIB_LD = @TCL_SHLIB_LD@ +TCL_SHLIB_SUFFIX = @TCL_SHLIB_SUFFIX@ +TROFF = @TROFF@ +VERSION = @VERSION@ +ZLIB_LIB_DIR = @ZLIB_LIB_DIR@ + +INCLUDES = -I../../src -I../../gd1.3 +EXTRA_DIST = trytime.c +contribdir = $(prefix)/contrib/trytime +contrib_DATA = README trytime.c +bin_PROGRAMS = trytime +trytime_SOURCES = trytime.c +trytime_LDADD = ../../src/librrd.la +mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs +CONFIG_HEADER = ../../config/config.h +CONFIG_CLEAN_FILES = +PROGRAMS = $(bin_PROGRAMS) + + +DEFS = @DEFS@ -I. -I$(srcdir) -I../../config +CPPFLAGS = @CPPFLAGS@ +LDFLAGS = @LDFLAGS@ +LIBS = @LIBS@ +trytime_OBJECTS = trytime.o +trytime_DEPENDENCIES = ../../src/librrd.la +trytime_LDFLAGS = +CFLAGS = @CFLAGS@ +COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ +DATA = $(contrib_DATA) + +DIST_COMMON = README Makefile.am Makefile.in + + +PACKAGE = @PACKAGE@ + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = gtar +GZIP_ENV = --best +DEP_FILES = .deps/trytime.P +SOURCES = $(trytime_SOURCES) +OBJECTS = $(trytime_OBJECTS) + +all: all-redirect +.SUFFIXES: +.SUFFIXES: .S .c .lo .o .s +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOMAKE) --foreign contrib/trytime/Makefile + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES) + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + + +mostlyclean-binPROGRAMS: + +clean-binPROGRAMS: + -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) + +distclean-binPROGRAMS: + +maintainer-clean-binPROGRAMS: + +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(bindir) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + if test -f $$p; then \ + echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ + $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ + else :; fi; \ + done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + list='$(bin_PROGRAMS)'; for p in $$list; do \ + rm -f $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ + done + +.s.o: + $(COMPILE) -c $< + +.S.o: + $(COMPILE) -c $< + +mostlyclean-compile: + -rm -f *.o core *.core + +clean-compile: + +distclean-compile: + -rm -f *.tab.c + +maintainer-clean-compile: + +.s.lo: + $(LIBTOOL) --mode=compile $(COMPILE) -c $< + +.S.lo: + $(LIBTOOL) --mode=compile $(COMPILE) -c $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + +maintainer-clean-libtool: + +trytime: $(trytime_OBJECTS) $(trytime_DEPENDENCIES) + @rm -f trytime + $(LINK) $(trytime_LDFLAGS) $(trytime_OBJECTS) $(trytime_LDADD) $(LIBS) + +install-contribDATA: $(contrib_DATA) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(contribdir) + @list='$(contrib_DATA)'; for p in $$list; do \ + if test -f $(srcdir)/$$p; then \ + echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(contribdir)/$$p"; \ + $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(contribdir)/$$p; \ + else if test -f $$p; then \ + echo " $(INSTALL_DATA) $$p $(DESTDIR)$(contribdir)/$$p"; \ + $(INSTALL_DATA) $$p $(DESTDIR)$(contribdir)/$$p; \ + fi; fi; \ + done + +uninstall-contribDATA: + @$(NORMAL_UNINSTALL) + list='$(contrib_DATA)'; for p in $$list; do \ + rm -f $(DESTDIR)$(contribdir)/$$p; \ + done + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + here=`pwd` && cd $(srcdir) \ + && mkid -f$$here/ID $$unique $(LISP) + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ + || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) + +mostlyclean-tags: + +clean-tags: + +distclean-tags: + -rm -f TAGS ID + +maintainer-clean-tags: + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) + +subdir = contrib/trytime + +distdir: $(DISTFILES) + here=`cd $(top_builddir) && pwd`; \ + top_distdir=`cd $(top_distdir) && pwd`; \ + distdir=`cd $(distdir) && pwd`; \ + cd $(top_srcdir) \ + && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --foreign contrib/trytime/Makefile + @for file in $(DISTFILES); do \ + d=$(srcdir); \ + if test -d $$d/$$file; then \ + cp -pr $$d/$$file $(distdir)/$$file; \ + else \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file || :; \ + fi; \ + done + +DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :) + +-include $(DEP_FILES) + +mostlyclean-depend: + +clean-depend: + +distclean-depend: + -rm -rf .deps + +maintainer-clean-depend: + +%.o: %.c + @echo '$(COMPILE) -c $<'; \ + $(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $< + @-cp .deps/$(*F).pp .deps/$(*F).P; \ + tr ' ' '\012' < .deps/$(*F).pp \ + | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ + >> .deps/$(*F).P; \ + rm .deps/$(*F).pp + +%.lo: %.c + @echo '$(LTCOMPILE) -c $<'; \ + $(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $< + @-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \ + < .deps/$(*F).pp > .deps/$(*F).P; \ + tr ' ' '\012' < .deps/$(*F).pp \ + | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ + >> .deps/$(*F).P; \ + rm -f .deps/$(*F).pp +info-am: +info: info-am +dvi-am: +dvi: dvi-am +check-am: all-am +check: check-am +installcheck-am: +installcheck: installcheck-am +install-exec-am: install-binPROGRAMS +install-exec: install-exec-am + +install-data-am: install-contribDATA +install-data: install-data-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +install: install-am +uninstall-am: uninstall-binPROGRAMS uninstall-contribDATA +uninstall: uninstall-am +all-am: Makefile $(PROGRAMS) $(DATA) +all-redirect: all-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install +installdirs: + $(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(contribdir) + + +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + -rm -f config.cache config.log stamp-h stamp-h[0-9]* + +maintainer-clean-generic: +mostlyclean-am: mostlyclean-binPROGRAMS mostlyclean-compile \ + mostlyclean-libtool mostlyclean-tags mostlyclean-depend \ + mostlyclean-generic + +mostlyclean: mostlyclean-am + +clean-am: clean-binPROGRAMS clean-compile clean-libtool clean-tags \ + clean-depend clean-generic mostlyclean-am + +clean: clean-am + +distclean-am: distclean-binPROGRAMS distclean-compile distclean-libtool \ + distclean-tags distclean-depend distclean-generic \ + clean-am + -rm -f libtool + +distclean: distclean-am + +maintainer-clean-am: maintainer-clean-binPROGRAMS \ + maintainer-clean-compile maintainer-clean-libtool \ + maintainer-clean-tags maintainer-clean-depend \ + maintainer-clean-generic distclean-am + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + +maintainer-clean: maintainer-clean-am + +.PHONY: mostlyclean-binPROGRAMS distclean-binPROGRAMS clean-binPROGRAMS \ +maintainer-clean-binPROGRAMS uninstall-binPROGRAMS install-binPROGRAMS \ +mostlyclean-compile distclean-compile clean-compile \ +maintainer-clean-compile mostlyclean-libtool distclean-libtool \ +clean-libtool maintainer-clean-libtool uninstall-contribDATA \ +install-contribDATA tags mostlyclean-tags distclean-tags clean-tags \ +maintainer-clean-tags distdir mostlyclean-depend distclean-depend \ +clean-depend maintainer-clean-depend info-am info dvi-am dvi check \ +check-am installcheck-am installcheck install-exec-am install-exec \ +install-data-am install-data install-am install uninstall-am uninstall \ +all-redirect all-am all installdirs mostlyclean-generic \ +distclean-generic clean-generic maintainer-clean-generic clean \ +mostlyclean distclean maintainer-clean + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/contrib/trytime/README b/contrib/trytime/README new file mode 100644 index 00000000..544abf9f --- /dev/null +++ b/contrib/trytime/README @@ -0,0 +1,85 @@ +"trytime" is a small program that allows you to play with at-style +time specifications without actually bothering any of the rrd databases. +It takes either single at-style specification or two of those +(for start and end time, just like rrdtool fetch or graph do) and +reports what it thinks of it. The diagnostic is as close as possible +to that of rrdtool compiled for at-style time specification support. + +To learn what's possible with at-style time specifications, see +the AT-STYLE TIME SPECIFICATION section in the rrdfetch documentation. + +The formal syntax parsed is (this is taken right from the parsetime.c): + +/* + * The BNF-like specification of the time syntax parsed is below: + * + * As usual, [ X ] means that X is optional, { X } means that X may + * be either omitted or specified as many times as needed, + * alternatives are separated by |, brackets are used for grouping. + * (# marks the beginning of comment that extends to the end of line) + * + * TIME-SPECIFICATION ::= TIME-REFERENCE [ OFFSET-SPEC ] | + * OFFSET-SPEC | + * ( START | END ) OFFSET-SPEC + * + * TIME-REFERENCE ::= NOW | TIME-OF-DAY-SPEC [ DAY-SPEC-1 ] | + * [ TIME-OF-DAY-SPEC ] DAY-SPEC-2 + * + * TIME-OF-DAY-SPEC ::= NUMBER [(':'|'.') NUMBER] [am|pm] | # HH:MM HH.MM HH[MM] + * 'noon' | 'midnight' | 'teatime' + * + * DAY-SPEC-1 ::= NUMBER '/' NUMBER '/' NUMBER | # MM/DD/[YY]YY + * NUMBER '.' NUMBER '.' NUMBER | # DD.MM.[YY]YY + * NUMBER # DDMM[YY]YY + * + * DAY-SPEC-2 ::= MONTH-NAME NUMBER [NUMBER] | # Month DD [YY]YY + * 'yesterday' | 'today' | 'tomorrow' | + * DAY-OF-WEEK + * + * + * OFFSET-SPEC ::= '+'|'-' NUMBER TIME-UNIT { ['+'|'-'] NUMBER TIME-UNIT } + * + * TIME-UNIT ::= SECONDS | MINUTES | HOURS | + * DAYS | WEEKS | MONTHS | YEARS + * + * NOW ::= 'now' | 'n' + * + * START ::= 'start' | 's' + * END ::= 'end' | 'e' + * + * SECONDS ::= 'seconds' | 'second' | 'sec' | 's' + * MINUTES ::= 'minutes' | 'minute' | 'min' | 'm' + * HOURS ::= 'hours' | 'hour' | 'hr' | 'h' + * DAYS ::= 'days' | 'day' | 'd' + * WEEKS ::= 'weeks' | 'week' | 'wk' | 'w' + * MONTHS ::= 'months' | 'month' | 'mon' | 'm' + * YEARS ::= 'years' | 'year' | 'yr' | 'y' + * + * MONTH-NAME ::= 'jan' | 'january' | 'feb' | 'february' | 'mar' | 'march' | + * 'apr' | 'april' | 'may' | 'jun' | 'june' | 'jul' | 'july' | + * 'aug' | 'august' | 'sep' | 'september' | 'oct' | 'october' | + * 'nov' | 'november' | 'dec' | 'december' + * + * DAY-OF-WEEK ::= 'sunday' | 'sun' | 'monday' | 'mon' | 'tuesday' | 'tue' | + * 'wednesday' | 'wed' | 'thursday' | 'thu' | 'friday' | 'fri' | + * 'saturday' | 'sat' + * + * + * As you may note, there is an ambiguity with respect to + * the 'm' time unit (which can mean either minutes or months). + * To cope with this, code tries to read users mind :) by applying + * certain heuristics. There are two of them: + * + * 1. If 'm' is used in context of (i.e. right after the) years, + * months, weeks, or days it is assumed to mean months, while + * in the context of hours, minutes, and seconds it means minutes. + * (e.g., in -1y6m or +3w1m 'm' means 'months', while in + * -3h20m or +5s2m 'm' means 'minutes') + * + * 2. Out of context (i.e. right after the '+' or '-' sign) the + * meaning of 'm' is guessed from the number it directly follows. + * Currently, if the number absolute value is below 25 it is assumed + * that 'm' means months, otherwise it is treated as minutes. + * (e.g., -25m == -25 minutes, while +24m == +24 months) + * + */ diff --git a/contrib/trytime/trytime.c b/contrib/trytime/trytime.c new file mode 100644 index 00000000..8e6e260d --- /dev/null +++ b/contrib/trytime/trytime.c @@ -0,0 +1,105 @@ +#include +#include +#include +#include +#include +#include + +#ifndef WANT_AT_STYLE_TIMESPEC +#define WANT_AT_STYLE_TIMESPEC +#endif + +#define BUF_LEN 128 + +static char soption[BUF_LEN]; +static char eoption[BUF_LEN]; + +int main ( int ac, char **av ) +{ + static struct option long_options[] = + { + {"start", required_argument, 0, 's'}, + {"end", required_argument, 0, 'e'}, + {0,0,0,0}}; + int option_index = 0; + int opt; + + time_t start_tmp, end_tmp, Now = time(NULL); + char tim_b[200]; + + struct time_value start_tv, end_tv; + char *parsetime_error = NULL; + + /* default values */ + parsetime("end-24h", &start_tv); + parsetime("now", &end_tv); + + if( ac < 2 ) + { + printf( "usage: %s [--start|-s start] [--end|-e end]\n" + "\n" + "In plain English, this means that to time specification try\n" + "a single time specification (just like in the rrdtool create)\n" + "you can use the first form, while to try two of them at once\n" + "(just like in rrdtool graph or fetch) you need the seconf form\n", + av[0] ); + exit(0); + } + + printf( "The time now is: %s\n", ctime(&Now) ); + + while(1){ + opt = getopt_long(ac, av, "s:e:", long_options, &option_index); + + if (opt == EOF) + break; + + switch(opt) + { + case 's': + strncpy( soption, optarg, BUF_LEN ); + if ((parsetime_error = parsetime(optarg, &start_tv))) { + fprintf( stderr, "ERROR: start time: %s\n", parsetime_error ); + exit(1); + } + + break; + case 'e': + strncpy( eoption, optarg, BUF_LEN ); + if ((parsetime_error = parsetime(optarg, &end_tv))) { + fprintf( stderr, "ERROR: end time: %s\n", parsetime_error ); + exit(1); + } + break; + } + } + + if (proc_start_end(&start_tv,&end_tv,&start_tmp,&end_tmp) == -1){ + printf("ERROR: %s\n",rrd_get_error()); + rrd_clear_error(); + exit(1); + } + + strftime(tim_b,100,"%c %Z",localtime(&start_tmp)); + if( *soption ) + printf( "Start time was specified as: '%s',\n" + "for me this means: %s (or %ld sec since epoch)\n\n", + soption, tim_b, start_tmp ); + else + printf( "Start time was not specified, default value will be used (end-24h)\n" + "for me this means: %s (or %ld sec since epoch)\n\n", + tim_b, start_tmp ); + + strftime(tim_b,100,"%c %Z",localtime(&end_tmp)); + if( *eoption ) + printf( "End time was specified as: '%s',\n" + "for me this means: %s (or %ld sec since epoch)\n", + eoption, tim_b, end_tmp ); + else + printf( "End time was not specified, default value will be used (now)\n" + "for me this means: %s (or %ld sec since epoch)\n\n", + tim_b, end_tmp ); + exit(0); +} + + diff --git a/website/.img/.imgdot-1x1-transp.gif b/website/.img/.imgdot-1x1-transp.gif new file mode 100644 index 0000000000000000000000000000000000000000..5bfd67a2d6f72ac3a55cbfcea5866e841d22f5d9 GIT binary patch literal 43 mcmZ?wbhEHbWMp7uXkdT>#h)yUAf^t80Ld^gF}W}@SOWlZ0R#L1 literal 0 HcmV?d00001 diff --git a/website/.pics/CAIDAlogo.120.gif b/website/.pics/CAIDAlogo.120.gif new file mode 100644 index 0000000000000000000000000000000000000000..a5263b44ab35cafb0fe48f89adf72318f98f820d GIT binary patch literal 6802 zcmYk9dt6NU|HnV)I@6i+ICHvR6sH@N%8BxAx^TLvai5Y)7xomT>zXcT7wb%tWN6SP zgef7k4021D?v^mQZEG!4Y#Z9$VG-JI`}6(p_kO(pdjI))KVI+W>m5BaDo~c32nxaQ zXMn&MK}swwt;RVz5im=Q8BhB9!vQk0;OUm`&Tg=|o28QsF?UD2-AHE{F+LPwL#-x; zIQhD|x_D3Ya`yKNbaxN*_6Z8`4-E+=tmjj33gMOQ4kvgKaUNq92P1PsiLYdqvD3%I zd0C`{!b(q%giyDr=>hXxgLvW_TdQmR8Ik;i%D$H`W$Ko+JEOV+?iYwZ*%W0F(HY+NyM#`3_q1+rNgUO6je-^^L# z5f&LSZ_eE4#gQ?QGZN;;E?f|okdzP=m%b!&Wx|rx32Dn0t^Ou<{kNHsi!$aUrZ4y^ zJ&9i*nX+!?#&z+T87r1&WM!>NEzHfy&du4FSCFS%_szzF+>PtqqZ`rUQhbjFuC24Za(&{Sy;Do7nWJ@hTRZ%?5C7*MyCKuG zI}c`VQ_ra^ODI*(YP_`UTyy5Ooolz3Y}m9pud?FnOWJ}H4az%0RA+na=s#;7Jvo5c zUx3|qz}YIB=y_x|s{KTy5Dv~E}Vm6QAGYBY_Fr?&2GsL-CS zuBq97v3Y;(k-EB*4JS@E>dx1nx_IH@j;F{KR(f;jsEj&pl_hH`}h05{`Si+eJ}b42M1rjd;9*?U!O-le`)al%J~xttpFpy z`+u|lc>;(>!LXU5T&Hc>B)0TQx}mFy@J7bV)qy)}+s$kyWj0rxc`lSYhNW0tezUxD z8(b@M^Z>%GJ-&#(`sLZwx%&d48`Yju^mh)();>lJvAwfYNGTP98+*9|-#0`%%pZ~g z`wx(wWp~UgvN}OEXYOExb;!>xZiUtd9`Om=oqpZZcsmp%njn?{9oInK?i2UD6t$01 z`oWEO5%>67d+k}N#0om-s86ycpzg?S}cs}LRw(^WKmuLPwv@OaSJh{1W^JPb_ z$|?9Um?t@$^e}4>9K!gMBJJaAvW~NWUwr$>^1Flm+Sw#HsISZ`ACCz$e)~mrc6jvD zsf2}dt_3DQEBt(azBP0my<+ujZNt8G-`w7R^fd8TZ{xf8A1lXXf@bHE*}He1{VLaV zDNd5SbPhvc!aDr9-aU6Oq=6 zhoPyfKiGrV82Pw_SAV$9kFSgS?O-n8&y}-X?87^|UWW|q4QUOusRSd%0opab$qKcj zPpY$Vwk3PH->+h>-fC@^?u;eYX?OpzpJn#>y|#0`+TzA^*+qyHr`~TJn0>GJMQw!4 z{ls9cdg_V#qWl?NFY786WxhO8m3HFg(dsp?ULMnyczJ~nJ&EY{yE$kPy}Rqlg1hyj zI-;HOv$U(h7R9?AadfaFg)kdSJImCD>i+wi0gH-!I3d$z;x zd&A^gHu0s-gj<2PWkkU3Im^{x)sxqnz<9o;L~0>^BN_`?DOIdr_s(L{nE3|SnknCK zKKbgH2*NVSusQC0f%A?|BH3IdnJzb(m2yzsGGar~ZN+#~n!vR1jLGC(2w@0V-W%ocfcbMF88`n9i5-O*n zXA}A|kUu@yQrXi1QjhyQMQ?cUDtLSxk1lS0m#4;TfxZNt?ZKmxM+_8h#@rxOR)hyo zqrM)V^cX2�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 I1OS5n5BpO}zyJUM literal 0 HcmV?d00001 diff --git a/website/.pics/CAIDAlogo.120.png b/website/.pics/CAIDAlogo.120.png new file mode 100644 index 0000000000000000000000000000000000000000..2302158f964ed8e0a1d99d29e4848d1dc573f322 GIT binary patch literal 16404 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 literal 0 HcmV?d00001 diff --git a/website/.pics/CAIDAlogo.gif b/website/.pics/CAIDAlogo.gif new file mode 100644 index 0000000000000000000000000000000000000000..84c905156a421dbf9ac2b0af327f11ad208bcabb GIT binary patch literal 13754 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 literal 0 HcmV?d00001 diff --git a/website/.pics/CAIDAlogo.png b/website/.pics/CAIDAlogo.png new file mode 100644 index 0000000000000000000000000000000000000000..b027575d71f35fe1f00dd13dc1c06ec7a66dcfaf GIT binary patch literal 12701 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 W+lrdjFRvZ6H#F6?)ykpP!T$$1?SohV literal 0 HcmV?d00001 diff --git a/website/.pics/CAIDAlogo.xpm b/website/.pics/CAIDAlogo.xpm new file mode 100644 index 00000000..c7557536 --- /dev/null +++ b/website/.pics/CAIDAlogo.xpm @@ -0,0 +1,381 @@ +/* XPM */ +static char * CAIDAlogo_xpm[] = { +"84 122 256 2", +" c None", +". c #020204", +"+ c #1E961C", +"@ c #1E4428", +"# c #620549", +"$ c #212326", +"% c #868483", +"& c #644554", +"* c #9FC391", +"= c #3103A1", +"- c #370318", +"; c #646462", +"> c #87A6A7", +", c #32142B", +"' c #382526", +") c #8C657A", +"! c #393434", +"~ c #8EE2E4", +"{ c #1A7614", +"] c #AB8897", +"^ c #854D5E", +"/ c #66746B", +"( c #32025E", +"_ c #909392", +": c #66545E", +"< c #B2A4AA", +"[ c #434343", +"} c #40553E", +"| c #151616", +"1 c #C7C4C4", +"2 c #361357", +"3 c #65243F", +"4 c #3C2560", +"5 c #403468", +"6 c #D5D4D4", +"7 c #4C0330", +"8 c #B5B4B3", +"9 c #4F344A", +"0 c #4D2442", +"a c #79656E", +"b c #4E1435", +"c c #524446", +"d c #755469", +"e c #9C848F", +"f c #1B0354", +"g c #8C7482", +"h c #08B6C0", +"i c #D2E5DC", +"j c #5F354C", +"k c #F5F5F4", +"l c #767472", +"m c #250313", +"n c #320C28", +"o c #4C878B", +"p c #9A9595", +"q c #351D1F", +"r c #A07582", +"s c #784268", +"t c #645C5F", +"u c #4C0361", +"v c #8E85A2", +"w c #DFD5D7", +"x c #7D7C7C", +"y c #544C51", +"z c #8BB789", +"A c #D2C5C9", +"B c #C5B4BF", +"C c #4C3C47", +"D c #654471", +"E c #9E9C9C", +"F c #8B7C82", +"G c #0A2E94", +"H c #8D8C8B", +"I c #3E2541", +"J c #C7ADBA", +"K c #776C6F", +"L c #4D2B45", +"M c #4C9C9C", +"N c #E8E5E5", +"O c #2D2F2C", +"P c #3D3D3C", +"Q c #6B6C6C", +"R c #8A021C", +"S c #7E3458", +"T c #380338", +"U c #061244", +"V c #A5A4A3", +"W c #B1ADAE", +"X c #210D0F", +"Y c #380C5A", +"Z c #555454", +"` c #5D037F", +" . c #644C5A", +".. c #45444F", +"+. c #3E6561", +"@. c #251323", +"#. c #5F3C57", +"$. c #5C123E", +"%. c #1A2650", +"&. c #CCCCCC", +"*. c #D7DBDB", +"=. c #4A1362", +"-. c #EDECEC", +";. c #4F0D36", +">. c #9A8C93", +",. c #6E8786", +"'. c #3B1C37", +"). c #A9ABAB", +"!. c #3F1434", +"~. c #BCBBBB", +"{. c #7C748A", +"]. c #685C7B", +"^. c #76254E", +"/. c #595B5C", +"(. c #6A547A", +"_. c #AC959E", +":. c #775D72", +"<. c #8F7C9E", +"[. c #0D0C0D", +"}. c #3E344C", +"|. c #FEFEFC", +"1. c #4E7274", +"2. c #2A2727", +"3. c #8F8489", +"4. c #6B6566", +"5. c #4B1D35", +"6. c #564459", +"7. c #807476", +"8. c #23032F", +"9. c #46BE44", +"0. c #16A224", +"a. c #4AD2E4", +"b. c #04CCD0", +"c. c #298527", +"d. c #6AB664", +"e. c #12A6A8", +"f. c #0E6E6C", +"g. c #420695", +"h. c #1A5251", +"i. c #7E9A7C", +"j. c #1A7884", +"k. c #3C8484", +"l. c #123EC4", +"m. c #AEC6BC", +"n. c #3AB8B8", +"o. c #088C94", +"p. c #3E14B0", +"q. c #865D7B", +"r. c #7AC6B4", +"s. c #AEEAAC", +"t. c #8A0E34", +"u. c #249EBC", +"v. c #4A9694", +"w. c #688E70", +"x. c #4C235F", +"y. c #52644C", +"z. c #144464", +"A. c #62CECC", +"B. c #A66A88", +"C. c #A5B4AD", +"D. c #5E0463", +"E. c #22D4D4", +"F. c #1E0AF4", +"G. c #4102CC", +"H. c #231A4C", +"I. c #32523C", +"J. c #2E26C4", +"K. c #4EAAA4", +"L. c #C585A7", +"M. c #349494", +"N. c #6EA7A7", +"O. c #58787C", +"P. c #687694", +"Q. c #9CC3C4", +"R. c #5C2A64", +"S. c #7C3888", +"T. c #2A6464", +"U. c #B3D1D1", +"V. c #2EA7AC", +"W. c #7A2E57", +"X. c #760274", +"Y. c #27035B", +"Z. c #5ABE9C", +"`. c #9C5C7C", +" + c #621B43", +".+ c #4D2C63", +"++ c #A41424", +"@+ c #2A4254", +"#+ c #52366A", +"$+ c #BE9CB0", +"%+ c #8C6C7D", +"&+ c #546C6E", +"*+ c #68DEE0", +"=+ c #254B4A", +"-+ c #501C58", +";+ c #A07B96", +">+ c #497D6C", +",+ c #612C47", +"'+ c #669494", +")+ c #445861", +"!+ c #96B6B4", +"~+ c #4D0493", +"{+ c #3C1E54", +"]+ c #600C37", +"^+ c #647D74", +"/+ c #909C9B", +"(+ c #4E0B5A", +"_+ c #65336B", +":+ c #784B62", +"<+ c #305E40", +"[+ c #327A9C", +"}+ c #9ECECC", +"|+ c #E1E3E3", +"1+ c #372D28", +"2+ c #454B3F", +"3+ c #C5BDBD", +"4+ c #6A4D78", +"5+ c #3C2C42", +"6+ c #484B52", +"7+ c #5A02CC", +"8+ c #260E44", +"9+ c #322694", +"0+ c #72B6B4", +"a+ c #3E6D77", +"b+ c #211D1C", +"c+ c #E0DDDD", +"d+ c #753B57", +"e+ c #BCC5C3", +"f+ c #199194", +"g+ c #629A94", +"h+ c #5A9287", +"i+ c #1D0D4C", +"j+ c #8D8CA1", +"k+ c #AD9CA1", +"l+ c #600B66", +"m+ c #B6EEF4", +"n+ c #749DA4", +"o+ c #264E7C", +"p+ c #924E6C", +"q+ c #272553", +"r+ c #3002E4", +"s+ c #130520", +"t+ c #3E0360", +"u+ c #3E0C30", +"v+ c #1A4E5C", +"w+ c #4C2694", +"x+ c #7C638A", +"y+ c #250C31", +"z+ c #51646E", +"A+ c #7C8587", +"B+ c #75908F", +"C+ c #6E1254", +"D+ c #4E3A94", +"E+ c #D4CDCF", +"F+ c #241870", +"G+ c #90A5A4", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +" . . . . Z E t . . t E p % [.. . | p p Z . . Q t . . V P . b+% % | . . . l p H . . O p p E x . . x E E V ; . l p E K [.. . . . K E p H $ . % Q . [.H c . . ", +" . . . 4.3+; w V . _ 8 t W 1 . [ N E F |+H . V -.. . |.; [.E+x k+-.[.. w 1 l B w [.[ 6 4./.E+H . A _ Z t P . 8 E Z E c+2.. . . ).k+Z E w [.[ N [.l &.| . . ", +" . . . _ x . $ Z . p H . 2.6 | % W . . /.1 . E N H . k /.O 3+. . /.[.b+c+O . | 6 [ P 3+. . E V . 3+Z . . . . 8 ; . . 8 H . . . V Q . [ |+| [.w x B % . . . ", +" . . . Z c+E+H ! . >.V ! _ A . k ; . . | E+$ k+% 3+2.-.t . ~.c+W t . _ B . . . p % ! w p p c+b+. 1 E+&.6 t . 8 ; . . l V . . . < 6 3+c+p . . ; N &.. . . . ", +" . . . | | 2.H 1 . >.c+B E | . N K . . b+E+b+V 7./.E -.t . b+| t E+..x ~.. . . k+x P A t 4.c+! . 1 K | 2.[.. B ; . . F V . . . < % | ! 1 ! . $ E+; . . . . ", +" . . [.E K . P E+. _ % . . . . Q E+| . _ 1 . V % . W -.; 6+8 . . 8 ; . -./.. ..-.2.P e+[.. ~./.. 1 y . . . . W /.. b+6 Q . . . V ; . . 1 Z . | A P . . . . ", +" . . . O E+1 &.% . H H . . . . | E E+A A ! . V F . P |+/.. E A 1 3+| . l A 1 6 l . ..~.| . 8 x . ~.E+1 A V | < E+1 1 H . . . [.k+6 3+A ~.| . | 3+P . . . . ", +" . . . . | 2.b+. . b+b+. . . . . . 2.O | . . $ | . . ! [.. . 2.$ [.. . . $ 2.2.. . [.2.. . b+$ . 2.2.2.O 2.. $ 2.2.b+. . . . . $ 2.2.2.[.. . . O . . . . . ", +" ..[ P [ [ P P P [ P P P P P P P [ P P P P P [ P P P P P [ [ P P P P P P [ P P P P [ P [ [ P P P [ P P P P P [ P P P P P P P P [ P P P P P [ P [ P P P P y ", +" |.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.k w 8 ).t Q l y ; Q Q x V E+-.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.*.V /.! 1+[ [.C c ! | Z 2.t 1+[.c b+! K 8 |+|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.c+E c X !.q ! - 0 [.b+2.! 1+[ 2.2.[.X y }.! b+| $ c W -.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.&...O | [.'.n - '.0 y P [ h.O P B+x =+C /.N.V W / c V l O Z l c+|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.6 c [ q $ W.{+(+7 m & i.} 9 <+w.& Z z.& y 1+@.K Q y.> B+I.x 4.N E Z x k |.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.E / : l W.;.~+9+q+..+.! : [ x y 4 9 L y j & y l Z V y Z )+y.C y /.3+N E l c+|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.E+2+O C ;.7 u {+H.s+2.F k <+C.|.E+n T 3. .9 !.9 L 6+g+,+& g 9 t ^+e+-.).l Q _ b+Q -.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.x K y.1+7 - 8..+X !+ .].: c , .w :.Z Y Z ; H u+-+t+7 x.n L $.q s 7.c ~ |.|.~.K K E : 8 |.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|.|.|.|.|.|.|.*.H Z _ @.q n ! [ Z 2.1 W q.k+a 3.t L {.Z n ! 2.* : F+= t+t+T '.5.n v+Q G+&+1 |.|+E V e+V ..W |.|.|.|.|.|.|.|.|.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|.|.|.|.|.|.H E _ G+^+;.q b+K /.8 ).c+~.D+4+d v z /.& {+#+O b+{.! h.[+= Y.( !.:.,+j.&+Q .4./ % |.|.*.p V 1 ).|+|.|.|.|.|.|.|.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|.|.|.|.|.V 4.H p 2+ .u T ! l ; P a Z P 3.#+L /+{ I.8.8.( 4+]. .7 6.~.4+H.Y..+_+^.C m n b+b+&+[ 1 k |.-.>.l % H N |.|.|.|.|.|.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|.|.|.|.&.3+8 [ y - =.D+K E k *.W |.p E p #.#+`. .Q x+T !.Y !.%.!.q 3 t b.a+T 5+!.t 9 } E ,.*.E+x 3.3.E 8 t [ 6 E N |.|.|.|.|.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|.|.|.E+% E y &+X T j+].~.|.|.W |+|.H |.E+W o.4.C K k+y+5.Y.!.#.# $._.N m.a+ .,+0 F x+ .&.N.*+|.k W |.-.E % K Z ).V |.|.|.|.|.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|.|.&.t H % t %+L g H {+F |.|.p |._ k |._.-.z+2 6.:+J $ ,+u.j., C 7 c > &.d w :+y. .4.& y < < |.|.1 l >.E+|.|.E _ _ 6+N |.|.|.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|.*.l w 6 p >+&.N |.V 3.i+H x x w ~.|.6 1 3+e 8.#+(+:.s+7 g.{+/.c+$.!.7.A+: N >.)+1 ) +.& K I k.H 8 ~.W |.|.|.|.>.-._ x |.|.|.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|.3._ 6 C |.~.J |.V -.N 5 .).C.c E p C 3.(.V y f ( u Y F Y.T H.Q '.#.U K 9 g #.c 8 H r.k+)+o '+&.|.|.V 6 |.|.|.e+K 3+k+V |.|.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.8 6 &.; H |.|.*.< k+|.|.{.5 3.1 E k ~.x %+a ).Z =.t+Y H...f 8+5 C q 7 s+L F C !.>.1 6 N -.l C.O.d.|.|.|.V |.|.|.k Q Z -.V -.|.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.p |.k+; W V *.|+4.7.k+8 4.C q Q ~.~.Q 6.].1 F I R.R.Y..+4+t+Y.)+x.#+^.C }.I O 1+ .K V 8 ~.H F Z ; ).V B C.p -.~.E V 2+-.N ).|.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.V &.|+l Q E % 7.P 6+Q : V *.z+s+p |.|.]. .-.8 !.c+{.#+Y.R..+#+w+9 F+b 3 $.: W d L 6.F F B |.|.).x |+k &.E ; [ 4.l H E Z g |.).c+|.|.|.|.|.|.", +" |.|.|.|.|.|.-.p p / t |+|.|.k W |.&.~.j+].! C 5+~.{.5+V < <.p |.p :.Y Y.4 q t+_+D m y+ +7.k %+c 8 k >.X }.J F t F V V ~.-.k V |.|.|.8 2+Q V _ |.|.|.|.|.|.", +" |.|.|.|.|.|.Q F H % ).|.|.|.8 &.|.|.|.|.c+y ].Q 6+q+q+4+<.a 2.H.{+, t+( {+y -+#+F I 4.:+; .n y+j H F B E+) G+V.3+|.|.|.|.|.W c+|.|.|+W < < 2+8 |.|.|.|.|.", +" |.|.|.|.|.N % W E 1 &.|.|.|.>.|.|.|.|.|.|.C j+<.4 {+v v v (.y F x+J .+=.Y 5 Y f (.}.>.j 1 N 0 u+l W |.|.|.|.x o.H |.|.|.|.|.c+V |.|.|.p |+8 E l |.|.|.|.|.", +" |.|.|.|.|.8 &.8 K 4.8 N |.8 *.|.|.|.|.|.k y 8 G+G p.q+f .d 5+K #+e -+t+t+0 Y.Y.#+b 0 9 B.k+& 8.g d A |.|.%+`.X 3.|.9.i |.|.|.p k k 6 H x y |.E N |.|.|.|.", +" |.|.|.|.|.H |.E k l 1 k+_ C x e+-.|.|.|.6 ; v |.o+f i+i+6.].g >.4 :.x.t+u x.x.;.( 5.Z j .& >.Y ~.7.^ K a.,+k+j V *.c.z |.|+8 ; 4._ E ).V &.6 &.1 |.|.|.|.", +" |.|.|.|.c+).k x c+V |.|.|.E |.1 W H A+V /+H Q ).~.#+#+5 5+8+i+:.: $+%+B.7 Y.[.x.2 s %+x.- 3 .m 7.B j+@+0.: >+o 2+C 6+>.p E N |._ |.|.|.p |.>.k E |.|.|.|.", +" |.|.|.|.k+c+*.1 8 *.k |.~.8 N 1 1 1 V k+y Q P P z+Z 6.C Z ' 6.2.1+].0 d+u+t+$.S.(+0 % e 7 C 6.i+P y 6.Z c.q 2+}.: - e.&+[ + e+-._ -.k |.k+-._ |.p N |.|.|.", +" |.|.|.|._ w H H ; >.E k+Z E V &.E+E+*.|+x |.*.W |.|.< v c+K V v Q ] 4+: T Y T a 8+8.|+|.`.D 6 {+:.9 :.:.).L %+S j ) Q.N w s.&.V % 7._.E ; x Z &.V ).|.|.|.", +" |.|.|.|.! >.Q c+V |.|.|.E |.|.|.|.|.|.|.H |.|.v |.|.|.:. .A+-.g v J g .x.< R.I t+8.$+|.r 0 a+%.C < x+, B+x+$.: ._.|.|.|.|.|.|.N 8 |.|.6 E A x F t |.|.|.", +" |.|.|.|.Q ).t V /.>.E W E |.|.|.|.|.|.|.; |.|._.|.|.|.&.q j+|.-.F <.8 H D _ ;+D x._+{+: 9 `.{+f 6.g 9 d ] F q h A._.|.|.|.|.|.|.|.p 1 _ A+Q ).y ~.F |.|.|.", +" |.|.|.&.1 *.8 |.E |.-.).; x A+7.% _ _ F 1+8 V x x W V ~..+, 3+V j+:.4+:.-+(.x+l+n #..+V 0 9 2+z.g.t+- 9 g b.9 e.*+X _ _ _ H % x x c c+k |+E |.E |.H |.|.|.", +" |.|.|.H |.~.&.k _ |.|.w 3+|.|.|.|.k |.~.P k -.c+F -.*.6 W Z (.8 _.D 4.<.L c y ( T .6.:.p (...H.=.L 6+l i k.Z E.m+' k |.k |.|.|.|.H |.|.-.E |.p k x |.|.|.", +" |.|.|._ |.8 6 k V |.|.&.~.|.|.|.|.|.|.6 O |.|.|.H |.|.|.-.: (.).E+;+<.< E D q.( u 9 & ( |.x #.0 0 V ;+& F _.p Z.r.! |.|.|.|.|.|.|.3.|.|.|.x |.8 |+1 W |.|.", +" |.|.|.% |./+-.*.8 |.|.V c+|.|.|.|.|.|.&.O |.|.|.W 6 |.|.c+E _.) B L._ _.E+W.I 8.-+!.C 8.|.A 5.-+q+A+l .3 F 8 } * ' -.|.|.|.|.|.|.3.|.|.|.x |.8 c+|+W |.|.", +" |.|.|.l |.E |.c+~.|.|.k+k |.|.|.|.|.|.E /.|.|.|.E+W |.|.|+8 < J _.x+< >.c+x.s+X %+( s #.1 k n ;.x n C e |.e+h+P.N ! k |.|.|.|.|.|.c+8 |.|._ |.&.&.-.8 |.|.", +" |.|.-.l ~.: 8 p Q C.8 Z ).).).).).).8 y K 8 ).W p 4.8 )._ x /+].0 4 F 4+W , 8+..-+T R.].(./+, 9 c , q+,.~._ @+; %+@ k+).W ).).).8 _ Q 8 8 K E H l p V |.|.", +" |.|.k x k x *.e+p N -.% *.|+c+c+c+c+-.Q % -.c+|+N K -.N ~.E k g g !.H <.A 9 9 : y+5. +<.L #.{+e $.:.F 4.J 8 i.< z+c.F h+e+,.Q.|+e+e+p |+N % *.W E &.8 |.|.", +" |.|.|.x |._ |.c+8 |.|.V -.|.|.|.|.|.|.~.[ |.|.|.|.A 3+|.*.W |.E q.`.x.w E+p ;+].#+x+^.B 5.!.{.2.].|.c+!+3.4+/ :+F 5+>.k+_.1 e+p 0+< -.|.|.x |.8 &.c+).|.|.", +" |.|.|.F |.V |+-.).|.|.V 1 |.|.|.|.|.|.&.O |.|.|.|.|.>.|.c+8 |.~.%+] - 8 J N <.8+%+<.S.s <.D e 4 &+k _ V.; j : 7.%+L p E+k+k+_.6 |./+|.|.|.l |.8 N c+W |.|.", +" |.|.|._ |.~.6 k p |.|.6 8 |.|.|.|.|.|.6 P |.|.|.|.|._.|.|+~.|.~...#.D x+'.-.x 4+<.{+L T <.j ]..+9 a ;+%+: a .d t L F _.N |.w < k+k.-.|.-.E |.V -.V c+|.|.", +" |.|.|.V -.&.&.|.p |.|.c+1 -.6 6 E+B 8 3.! p H H 3.H .% x ; k+%+j 0 q. .L >...5 }.!.{+7 R.(+C 0 #.'.9 x+5+& #.: O !.+.8 K )+F < -./+|.|.k V |.E |.x |.|.|.", +" |.|.|.|.H w 3.~.} H H K Z E 8 8 8 c+c+&.P -.|.|.|.|.B E+k E |.A L.d %+J 9 J j+;+. 2 I T .+d+L L I I C }.5.L :+9 L 5.- : : Q.C.G+K z.x _ % K 6 F k >.|.|.|.", +" |.|.|.|.O x x E+p k |.|.V |.|.|.|.|.|.|.7.|.|.|.|.|.k >.|.H |.< p+g a e %+k+y <.s+'.{+t+u+u+2 0 =.u+u+, 5.!.'.0 n 7.e k+q.^ %+x g f+|.|.c+E 6 Z Q Z |.|.|.", +" |.|.|.|.Q W Z E l W 6 N H k k |.|.|.|.|._ |.|.|.|.|.|._.|.3.|.>.m r w d v >.a J F+y+( u T (+ +, T n 8.m , d+$+K u+}.%+] %+E+|.|.m.e k e+H % x A+H p |.|.|.", +" |.|.|.|.V k 8 1 _ e+p p t E V H Q E p ).4.W E E E E E K 7.c *.F j ^ _.p t E+c :.Y.( t+g.D.~+D.t+=.D -+T y+- - @.@.E.> H K Z 3.k++.H /+&.V 3+_ |.8 *.|.|.|.", +" |.|.|.|.&.1 N 8 3+c+|.|.-.~.|.|.|.~.~.W H 4._ H 3._ H K c Q H :+!.d a 3+9 E 6.b+I.J.p.g.` (+=.D.Y }.H.m @.;.b n , n.k+g A m._.}+^+|.|.|.V k k+|.E |.|.|.|.", +" |.|.|.|.k % |.e |.e k w 6 P p % A+~.3+6 W 4.k k k |.k k _.8 N e - $+B |.: d 2 ( l.F.r+= ~+g.l+X.D.D.l+# b u+m Z I _ :+e : P q f.T.*.-.-.H k ).c+k+|.|.|.|.", +" |.|.|.|.|.k+k ~._ [ H E &.>.6 |.|.|.|.|.-.; |.|.|.|.|.|.< e+&.r 7 _.,.F 4 T ( G.r+G.G.w+u u l+D.(+.+K 5+#.0 m '.b b+q %+F ] V t 1.Q.).x x % |.W &.|.|.|.|.", +" |.|.|.|.|.*.V V x W 6 |.|.*.).|.|.|.|.|.|.P -.|.|.|.|.|.&.W ~.@.q ) P 0 8.( g.= G.= ~+~+Y Y -+7 # D.=._+%+>.< 3.[.) 3.n+E+A A+/+|.|.|./+3+y &._ |.|.|.|.|.", +" |.|.|.|.|.|./.3+8 6 8 |.|.|./+k |.|.|.|.|.p V |.|.|.|.|.A a x 7 !.q q 8+Y t+t+~+7+~+` u -+# R.;.;.T s+C -+,+B.q.n B.] c+|.|.~.8 |.|.-.p e+*.l ).|.|.|.|.|.", +" |.|.|.|.|.|.3+7.V Z H |.|.|.6 p |.|.-.6 3+Z t V A+x % _ >.F G+L ^.m X T T Y 2 g.~+u ` t+Y 7 n 7 ;.7 #.6.8.: X y 9 C ^.f+o r ^+M |.|.E+>.Z E t k |.|.|.|.|.", +" |.|.|.|.|.|.k V -.V y H 8 w 6 4._ 3.% A E+% _ ~.|.|.|.|.|.3+g +3 }.8.T 4 +=.t+l+t+D.T Y D.'.d+j ]+_+>.C :.#.d !.U.C.>+x : =+N.6 E t 2+&.c+).|.|.|.|.|.|.", +" |.|.|.|.|.|.|.-.W |.l H V 6+a p y V V 8 ~.~.Q H k -.-.-.k e+C R +Q m #.0 .+R.u -+=._+D.- ]+u+P ^.7 T q i+E+F & T t 7.K Q Q < Q t 1 4.6 k _ |.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.< |.~.c H k |.|.~.E+|.N *.6 Q H 3.).V V A+ .5.t.L !.8.4+;..+5.u {+-+(+# T #.]+n - d C+& c L ; : :./+l F y.6 |.|.*.H y |.3+1 |.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.-.)._ x 4.|.|.|.|.% |.|.|.|.8 |+).|+B W 2+K n ++5+5.: 3 L .u+7 0 .+T b 7 m ^.#.u+5.- ]+9 , .j y |.|.>.C '+|.|.|+4.p 3+p |.|.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|.1 x k H |+|.|.|.&.1 k c+1 K Z K % k > a ;+a ++C 9 C m x+_+8.]+0 '.;., 7 u+j :+u+$.%.]. +h M.F m x *.).k k |.|.H e+6 l N |.|.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|.|.% y &.p k |.|.k x x 8 &.&.E |.E |.i.p k+& u+d+3 # !.a ,+5.S L #. +^ - 7 1+:.A+p+,+L n O.c E+t A+V.w.m.|.|.E+V A l 6 |.|.|.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|.|.|._ /+K Q -.V p *.< |+|.|.p k 1 ^+k+J A a r & t n .^.;.T n j l+-+B.j 5.q k+3.a 9 q #.6.p r V Q N * z |+w y l l w |.|.|.|.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|.|.|.k p c+; [ /.p 8 &.8 -.|.&.w |.G+E E+K Q c , 5.u+K c 5+m 7 a 0 m T & ;.m }.t g I 8.{+0 -.k : u.e+p Q Z ! 8 < E |.|.|.|.|.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|.|.|.|.|.x < ..H -.c+).3./.H V 4.8 [ C c V 7.B r 6+q.;+) 5.s+X 3+K 3.I >.B.M.T._.1+q , '.@ >+/.4.C.E+k 1 K 3.V ).|.|.|.|.|.|.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|.|.|.|.|.-.% V % E c+|.|.k y y t ~.e+ .Z t A+:.t q t 7 } - | m a L y L O y.; Z [ /.1+c t n.x < |.|.|.8 /+H p V |.|.|.|.|.|.|.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|.|.|.|.|.|.|.V _ E 8 &.c+8 8 1 E ).Q.*.< F ).e F /+3.^ :.L c d+< #.r F ] |.L.J t |.8 /+O n+1 E W -.p 1 % p 1 |.|.|.|.|.|.|.|.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.1 [ V &.Q w |.|.1 y e+k V 1 /.' C F ;.p %+3.P <+M.! & Z P E F y 3.|.|./+g+|.|.|.V V E+l _ c+|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.k l C 2.2+l |+|.|./ h+n+_ h.=+&.|.v.G+_.< )+_ -.:+:.U.] 3+^+f+&+,._ p |.|.A : 2+1+P < |.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.8 Z 6 1 p Z x /.! K ).C.6 x ,.o ).n+< x J |.v.A+&.^+A+k K.Q : 1+% ; 4.e+e+W a c+|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.-.p Q 8 |+< Z [ _ B p Q l ; [ % /.o P ^+3.+.T.^+l l ; < 8 7.Z Z ~.6 p x ).|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.6 ; ; Q F &.H H &.8 K ).)._ < _ Q k p E % 8 H 7.8 1 Z p ~.l l a E |.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.k &.x X 2.[ Z /.F 1 Z P 1+b+P q Z 2.b+1+! V 8 /.t b+1+1+2.V k |.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.1 V Z . . ! . b+4.$ y O t $ [ Z . O X . b+4.).|+|.|.&.1 k |.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.k 1 V K t K ! P ).; ~.% ! .l x x 3+|+|.|.|.|.|./...*.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.-.N N N -.N -.k |.|.|.|.|.|.|.|.|.|.Z [ c+|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.y P |+|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|...! c+|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|.|.|.|.-.N N k |.|.|.|.|.|.|.|.|.k &.&.&.k |.|.|.|.|.|.|.|+8 &.|.|.|.|.|.|.|.-.).).&.|.|.6+! c+|.|.|.|.|.|.N V H H &.k |.|.|.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|.|.*.&.&.1 &.&.*.|.|.|.|.|.|.-.8 V _ H H p ).k |.|.|.|.|.&.Q V |.|.|.|.|.*.x ; 6+P [ Q N /.O |+|.|.|.|.-.Q O | [.. [.P W |.|.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|.*.6 N |.|.k c+3+6 |.|.|.|.|.1 V 8 |.|.k *.p E -.|.|.|.|.&.K E |.|.|.|.N Q /.H 6 k k ).x 2+! *.|.|.|.|.E P Z 6 -.k 1 O [.V |.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.k w 6 |.|.|.|.|.&.~.k |.|.|.|.|.|.|.|.|.|.|.8 _ 6 |.|.|.|.&.Q V |.|.|.|.8 /.% |.|.|.|.|.G+c P c+|.|.|.|.N |+-.|.|.|.|._ . 6+|.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.-.*.-.|.|.|.|.|.c+~.6 |.|.|.|.|.|.|.|.|.|.|.*._ V |.|.|.|.6 l E |.|.|.|.W /.E |.|.|.|.|.c+..! c+|.|.|.|.|.|.|.|.|.|.|.N . | N |.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.N 6 -.|.|.|.|.|.N ~.6 |.|.|.|.|.|.|.|.|.|.|.|+p ).|.|.|.|.6 / E |.|.|.|.Q Z ~.|.|.|.|.|.|.6+! c+|.|.|.|.|.|.|.|.|.|.|.|.. | -.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.-.&.-.|.|.|.|.|.k |+-.|.|.|.|.|.|.|.|.|.|.|.c+p V |.|.|.|.&.K V |.|.|.|././.k |.|.|.|.|.|.2+! 6 |.|.|.|.|.|.|.|.|.|.|.|.. | N |.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.N 6 -.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.N p ).|.|.|.|.6 l G+|.|.|.|.t /.-.|.|.|.|.|.|.6+P *.|.|.|.|.|.|.|.|.|.|.|.|.. | N |.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|+6 -.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.*.1 /+V |.|.|.|.&.K E |.|.|.|././.-.|.|.|.|.|.|.y O c+|.|.|.|.|.|.|.|.|.|.8 E . | |+|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|+6 -.|.|.|.|.|.|.|.|.|.|.|.|.|.|+8 E _ p _ E /+V |.|.|.|.&.l V |.|.|.|././.-.|.|.|.|.|.|.6+! c+|.|.|.|.|.6 x $ $ b+| b+[.| -.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.-.E+-.|.|.|.|.|.|.|.|.|.|.|.|.6 k+/+W 1 N -.&.p ).|.|.|.|.6 l p |.|.|.|././.-.|.|.|.|.|.|.6+! |+|.|.|.|.).O b+O x ~.&.1 [.| |+|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|+6 -.|.|.|.|.|.|.|.|.|.|.|.N V ).|+|.|.|.|.N p ).|.|.|.|.&./ V |.|.|.|.t /.-.|.|.|.|.|.|.2+! *.|.|.|.k P 2._ |.|.|.|.|.. | -.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|+6 -.|.|.|.|.|.|.|.|.|.|.|.6 V e+|.|.|.|.|.|+E E |.|.|.|.6 l E |.|.|.|././.-.|.|.|.|.|.|...P *.|.|.|.~.O [ |.|.|.|.|.|.. | |+|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|+6 -.|.|.|.|.|.|.|.|.|.|.|.).V N |.|.|.|.|.|+E ).|.|.|.|.&.K G+|.|.|.|.t /.-.|.|.|.|.|.|...! |+|.|.|.l b+% |.|.|.|.|.|.. | N |.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|+6 -.|.|.|.|.|.|.|.|.|.|.|.W V k |.|.|.|.|.c+p ).|.|.|.|.&.l E |.|.|.|././.-.|.|.|.|.|.|.2+P *.|.|.|.x $ E |.|.|.|.|.|.. | N |.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.N E+-.|.|.|.|.|.N 1 6 |.|.|.W V k |.|.|.|.|.|+p V |.|.|.|.6 l E |.|.|.|./.t k |.|.|.|.|.|.6+! *.|.|.|.x b+E |.|.|.|.|.|.. | N |.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.-.*.-.|.|.|.|.|.|+8 c+|.|.|.V V -.|.|.|.|.|.6 /+V |.|.|.|.1 l V |.|.|.|.x /.).|.|.|.|.|.c+[ ! c+|.|.|.l $ _ |.|.|.|.|.N . [.-.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.k 6 *.|.|.|.|.|.6 e+k |.|.|.1 V &.|.|.|.|.|.8 p ).|.|.|.|.&.l /+|.|.|.|.W Z E |.|.|.|.|.E 6+P *.|.|.|.V 2.Z |.|.|.|.|.% [.| -.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|.c+6 k |.|.|.k 1 ~.k |.|.|.|+).V 6 |.|.|.&.E /+).|.|.|.|.&.K V |.|.|.|.*.Q ; ~.|.|.|.6 t 2+O c+|.|.|.*.[ $ l |.|.|.8 O [.| N |.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|.-.6 &.*.*.6 1 1 k |.|.|.|.|.3+V E 8 W V E 1 _ E |.|.|.|.&.Q E |.|.|.|.|.V Z /.% x Q [ /+c O w |.|.|.|./+| b+..y Z | B+. . |+|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|.|.k N 6 6 *.-.|.|.|.|.|.|.|.|.c+3+8 ).&.k k E+6 |.|.|.|.N ~.6 |.|.|.|.|.|.-./+l x V N |.~.G+k |.|.|.|.|.w _ Z [ l e+|.H E k |.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.k |.|.|.|.|.|.|.|.|.|.|.|.|.k k |.|.|.|.|.|.|.|.|.|.|.|.", +" |.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.", +" -.|.k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k *.", +" ", +" ", +" ", +" ", +" "}; diff --git a/website/.pics/CAIDAlogo2.gif b/website/.pics/CAIDAlogo2.gif new file mode 100644 index 0000000000000000000000000000000000000000..fa150a65081b1ea5f8227d77d679e265aaaeec11 GIT binary patch literal 4542 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 JA^^au{{bzidWQf2 literal 0 HcmV?d00001 diff --git a/website/.pics/CAIDAlogo_small.gif b/website/.pics/CAIDAlogo_small.gif new file mode 100644 index 0000000000000000000000000000000000000000..bc158775910956d0f459a11037a921a3841447ab GIT binary patch literal 10753 zcmWleX;f2J*T>Ht6K=9HK!7k`CJm?%Mx&^`%yGU<8Y*hQ0R)Fo5fM>u5+D%)gLS~x z)-b5x7#u1NwPBPh)u0x!)jq)yt@^}?2es0d_rpFP&N^$IbSpoJAl`&M4-LiCx6bd?zj&9_Ip&6A>W}lZ5<9LE~X;JSvtryF?-7 z***Xn7l2Hbh{s2w<7Jpk<`@|y4w*FGDPa8g$bf*!<0s1|Po5MS?1azdA}YrTbH>B* zGAtpCn=~2D3E`-srX+?3&XG!2gQ#VqxomhXJ~?4Bxge65Ki?^76}Dzw#N4@4aupL+ ztAf(9<*0Zb*HMlJB%+h&i-HpZB#8lI%crDCBeGfcdHl${pvXDio{6}8J~4l;-5R+h zF;SL~6q1w_mbZpCKZnT63roriTQ@IJmi2Ym%*4dGsc8%4az)|-Mat}j3m49uJ3n2q zV!`Zn>3Jz>dATcQ&CXURRP)kS&CJe8U%64SYD4ag&=!K_9P=-*&)V;u3qd1WaQb3KW@Jsv+Xf6|U@ zc6p-DMH=l}xT!gRZbi|i()Fvhr{`9)kJ|}qgcEDl3;P_S24!(|+hYodL?ELNG^@sI$db%(6_5Ix2+uPOE^;`d)->+R8xZeN!o$Gf8?q0Lpym#+W z|Ks29zIguRk3astZh7&?(9@@X3=Ivvc>iJe?-#?bKD>Yb{?n&V|Ni^$moH!b`RAXH zA4guledYZT1X7rfqI&=co@ZX8jgQwC@7mLJ7 zKtU|esX!`KGCI$nD<-{5q`kWI(q*q3hIU?OCJI-Bwxq|gYA((z@U|TNkrfKR`ydT@ zxFZU7FKU$e#9wt;h}A+cD03hxq=6?-@4~K~S6}Myan0fFV@XaO8}Ugw)aA79^T_G$ z*pJ3GXVK>Z!Cva=$myF?o=LUWT^BUvbDXcZ=U<;OsuXs!mZ}&G@@b0c3jPot!skVv z^#;()5;7s+l$?&nX6ZEy@6dtU^SwCiz&qcV@ck`)}3K)vs!L` zwPIpw*NhL18*aFKzVp*fN4qBoh}wqfduI&GJ1WDMDwPRQiPN-ZuiR1y!dA#>4d!V5 z1_Y(pZk2Kegqf&lysTkoWJtlAo^fx1v@iN2S3*xu&$@6klvj~Xi=fam^TXZx7gRN~ z_otYrjM~rr)iu8H^?EM$i0hpo{`^wY8P?*LSt`7oO7kbcG$<1$RT^&0=Tppils4NbS#-H%zu-(q5IQNP{K{uT z`%Ob4rGEc#A~FQx_ePg3y5H{g>qt!S-nPmtS**)dTl`lAA(cye+nuxJ9U=8~J0bw3 zwHP%lz~DoUwlZnlk~Q^x5WjX-YDk>^tARFNlhDs|G$qP2ws+8ch-mc8lOt=1J%;oGZw-IL0mMs?sguIbcC0k63XZ$n1p<=!5ynh$nBDCewMk_X zu5`i8rn>NlGD8GvMsOy^WuRtf(fbC>o#72;wJf__77i7!(Bxo-k&aFt?c&Z zh>1zneN8crBZY=gSsSuXloC$ROsY#G0s-bj?cR?VCo3mU%rMiFJwF zC7pq<_g*13&*&FaO8cnhb-P#wcND7hJ~@=b?E!C~Y=sFsx!UXL z8{JoagY&KeG~#up+D}x6rqxnBN?GoSW_e7tE}d3sDD`%KxcyUYm4j;w*yr^4c;+9Y zoZ$Ah>MW_2Q*!ATWsP7KQ-iWR<5lW%{*C=39sXYiW`}^YJ2U1y%4mp>5&hN13ot0X zdX%vJVX0=bzO62{){L54`Rr82euEf@GWvExfE2XKVL@De1!R5NIx&AcrSi^Di(-i{ zsszWteJ2;~y5`)vJt63ph+u^fO9128R+R4^lIHEDq!S%(j7`No;(RunQ2>}_vTq%Y z&vj9OB;;Gt#zq8~!*CsMmbIR5vakT{JMO!rPG{A9PC)zH%Z>iaXMYfPXv6&tXNOea zU&$Y#5=B+GQSE+1rCHNw!+=&ovWWUDw&fo!voWh;t& zU2n=+QT=Vz>rGi+cvd%3MDqm=TJRsG7I0~HR8J-^-`wHx+5r0usoAsjf3itsDO+kq zx zI5J5>lLxp{f4%YR-{3kRrRYo{-@ zedX*K8g+FJP!jK?=HEsK+8%EtS9m2gwY3c=5#xK7iBdr#FPR`y+5^1Fo3`fmMb_hyRdl*s1Jx+w|kz=CS@4Q6>2`{GS?;p&=6uT)l# z3!`Vt!(@u;>rD+)xuG4r0;}x&*{tCC0tOhI#|`UQQ%@cg5TV*tBJZrA{+>hOyP;}P zl3PI>_UHJ--z<=;YUbsFK->t;84mhvfm`krOZ)hLD|ye%vC|58k7?pbg5ZTTIw35g zzmWUMhZEG9kZr=-tn=V}e1SFY^gd2D4Kk$M@kVHJoFGXF8W!R?G@c584qy&N#q!$H zSvkf0zS*RRmZ82AHtH1Yo;Ku~sQZDs>#?DRFldbjAX{rnw82@szYy%HZ=% zh?@nP?8{A5eWNOh%Tt15M)sK2ifw?c#0dr#_Vb_6=xc@}XE@$cu)qYF4M3nm^_52q6J!EhGZ(%8Wrj$ zO&B$Ce+M3JX8b&j#jEfKM#2wp7b+nKv%?`0cr(Z}292hP9i&|X0}?HmBVY@qAXueqV&b2oxEoaLBUWUo1#|&?hSKg$5`LZ`v1t5X72nke ziNwNlE%-m{d9D`Zf@)fd1w-Dj&XXX^!b!AjNmHRqO;GCx4n{(;O4Of%T`UCG29aiN z);Mgk0QMkpxe-h7yopUUbZ73)kTm(#YUHEBQ;MtMF(n&A|C$X0Ns4 zAZNb!V^Fabn`1%j0Zv%Z(`GQo#{Hj?pKS(jRY)4c z`$DocQa;+oz0SnFs)P3KCuVlkaq_YLl;D>p=%$qeZbPS?u?z}ZWUkFILLExs&1iY2 z6gx)qrz!DK2K4~MJsOT;fV~ZhrJ)`g_Msr>Y%Xfxem1~%4EnPLd12(vlS2Oie4rv0 z+mK)z+l_`M((Dv!Wrl$0qPaIM$Po?MW%A#c=EnYM?0^Z=DeRSc(?u(H^ty%HXXAgc z@tr4w=k4BnIbWheze3nwEa(X->0>~@7(j~(UZO-90}hkKVk@Eo@Kz}_R|R=U39bMU z3Jkv+oL(|bHIM81Y^-DpXMq%-2QW=au!V|e4LZLx_&>F9zUd5@BNObX2|70zaOoU> zo|z*T;5|~lN#M5C%#+!;&J-N4M3*TsST%2n2})oPiIx4?iY=BBg^9#jl6_qXh$Q@6 zn|(Hzu#9oNf6x9z61Lg|rPBBUv)ck|ZM_IfrLZKcDT&5itjq$dsXh)O7GbVtY@rFl zm5`eXok?O}TY#?x#*|Q;bQGO3=EhRYQwmKpLiQ8{k%+4bU$Y6#P(t&}@KPh@X^jh` z6Vs&l{vs?%h0U{8O}9X+Y4Bc``&r3DPV>%?iLa&K;Voj*HyObY9-RNp6#@5@i8Bf3 zA0_!;01#V=xdLJ?81o%;iJ1$V2@LS>OOc&s=z}RtW+BgXIrtk4C=#Ri2Hr@{-)T1w7DCM4GTul-<<;*iXY+FJ%>g$aNN! ze;kcBqOk^WmBA&_F(E+o=c71=f^L#?%)q-xZ9Jgj<(fFSl*nbqEmCggs`1kXVVlwp ztAkElTC};2vvieRh5*a6c0c%=GkQsBx6o?0ND5#Y@-;_pQo{ZW%in}bTzy^Z!-y zdI9#>1m&7*vz2(Z37Tw1el(&y8iGkAiykX>37!;5s!g|&_9e?Ir@}584jJK8KBbR>(djp>n@Dm>z z51Ro6pkyO4&1R{iK%5nu+K0#(gr`EMF?RQD2(5%5DHdTy7G45*0;JM5O5C#YCx+}Q zseul@k2#mgE4T$?r0w z7c5{E!#zS{l_va#37IZ{e%(JmoW`eH;N4bEFU@~t;<^in_cZu+_lEO=14kZKAvOF) z67*U4|5~swB$q=H?iBv38T|bS&7^QXWfx*NAXK43KwL5Kex$H^Rlp4!JRlYPE9LB^ z`CrU#bsx9mXQ4*Fn;sTqDMd^-;&U%>m)wQlQ5dc2=a9%-fQ8uLPz%zTy?rr*Hqv;q z03Gglf+>XBz@Ry1=yn6P!R&KYEb7bCAtcAN*g?ITU zj<5df;f&Xhm%N^v^ZLlf_+LMeUE^P+frlyY!XN8i3!#XQCf-F0ooVZBQ(tbQD#I!ql6<^Y~^k@!7&urZbJn$F{2gX zNo~N4?lWK$RM>!&Ls+3)BNXP%k$nyu+*%ym!UZZ$kn+te6I#sn1P0EqksoA&%@omT zMq_QzDVj)Bq0ThHr|>OScDtECNKU2_50l~%0)DFnnrFnH8~I6NKU|05D+TZT592NZ zs9O$hhl5o%K4M|rQbCXsK~%(R6`DrF?nb~E*n?8=a4I~kfJCOLGAkso@VQn{W4iX3 z!58^pglgvO9&Vlz&$IH=N43bT{~&uQ>^Z<{0s9v#E6)5)g^tTMa9>&Bxds?lqQevs zEI?-V_SiFEgB$d%jlCQ27b$re2HswZXd3+LUn95A@Hc3gZ>2OC;W=$!omY^gvH0V6 zZN77a!nmWU>4>=vhnK?CqB14%v!jM4NwPlLbNS3!(Pm}u!Q*xgeoF7UxE=|cP^o~x zYJieIzqh-y@NjHvXvPiiQrF+fi(#KjHZ<8otnHB(|Eh9P#Aluj{`^)g{I)U1$uqBK z4%I$r1|HrOLsC#W>rniXa@tylR9py3tJsi_&L^95K9o#J`E~_>)_=Zs=iBe@DX;K6 zYJVNAfREo{d|Q`$^n|IZCSUJGv-+Ha(HbJ|>j#LD!}gm=xYrsxIIe5{ihQ~3^b^z} zIpt!w?WgPa%q7J2X^#4YeG>z*@NIXQ*+y+~1&^56apNGve|Ef})&EJ|FM%K1&-v(L zIx%R1_wAmNkWuA6`>N(GzV-n+U#0>5?SU{0~1 zsbblc9Thva+^DOsU}J%Y#o@!xj~rZiMQ*IzQg2@EMIE-g%2|4?DTZtRTI#J9`HYxL z`7;b{$O(Hkvpv^fV75OO+4s1m{}UZ!aQ^MPzNUs3edefb1#vCLl7e0x=gpPvqghTl zYg-=f;QJK$=#r*>-4sJ_bokFfJ?9){R7wOB5>x}oVexF%9 zC6nMUABq9F!`sJgM~2&ulx7#-yZS>wVZa~{jnq?GA3asC#-$^5ngzpCo)GZ;dx`E+ zS26kHmV#(x?Ca3<&}pgkQJIJ421GHL!_nFw|6BdSAK7xh`QZWng*mK=t{+^^E`fQ% z@epNiA?=jMzs3Nlma27#UQ%Bg^49Fl8(&Kea!H~nkzl)z)><_iE@u*duG81}5$aEU z&zfEay2*)R)f?6i;Ky&K9^F!aNBSn5Gy}Lvnr4oa;3)aB<15;0z&E?{q$s3 zseNaYStI;LPjW(Bm4|k3p>rM{EX*B@M&wHH%+Gh3LFv`o4KDph z2NJ(azfqpMpT91j_#QpYeJLpQ{2%DXM+a0e+%yOH>30CJ5!#c_0HoC%Jg1HEdCb_E z42;(`k`o*b!6E=4sZ|5fN?0Q4BvSFR#d0;Y(;64DAVmKS+s~!TwWo688&O1KY+#x` zF+5yV4vRWm=Dja-tRLK=6+Lo+_rv;j1EQW%aGGe ziH`UMezNEld7kQ@@ng-7-X{%S3yqZh+Pi!|c^l`oEFr*Ng>P0+c&u#)YN4tLvH>D% z%_7U_AmK)Kc)U_|BQFF<5O_mcBniy}b$H?KHoFT-f!rxoIn(&})XWX(iiN04B6E@bcAs&QTS^JFG5UP(-;2 zi@HRSZR}-aH90qG){JX@hEVqv2_J1B)wXd*)`MRsep?!l3QVIsV@2Kiy;HiUX7rVA zz3k(5k_;5=GPU|uTH)yiCa=?5ojiwumndS7sTjhwr$IzWt^#iNA&p8M+n5}?LUx|N z9K$MTRu$x69#E z%U!eD)Jsdf(-)XxCd^Bg`AqBJB*^cDwbp3^hHOONW9(@{v_87PmpCw#I5o>CE}n#3 zzG6twjWIrL?}v)lPYl5~&dk*S>&3=bI_ILOUq?fjdN&~Lo?&<+3N`{kyfIN27s5?5 zD!mXo+6%4UA&>KAa{)4;M9M+*5b@I&4gV*VUBBlONnX*lT;ELskKgXNr+GWhOP?s% z);d7mXbS8=-?|X8Xzo!Gfoy|2g)|~?m%>6<23;C0Jz6@A!p;N!YT)+q!u}k}xmb8n+Y=+38s@^wRhO`Ng%8UN6!K|!7@cI8c@8tfje1G$EF z{$X>e=ga!zzgWx0C>A1nnaM9|MeJr7b^e`|aHxO+5(@PnB4Mtf&F@oEg^C^L`qrj% zTAkTWqG~m zi50{#U`9_gZ+)#+X4q}7fc> zUarOsAS^JrfrJyECBe_-U!eg+03e{f#=-9#^)T%936sk z%vgk2D;dD1)j;b;ScOV?p=r-oP4N68CIgg0lqQLSeQk(4eQ6x2PRdDO1K3>-xJuZq z3D{d9pu*NS!J$RKR{~fDm}P**H|dJa7+-}K%Cv8@Sl9k`e0PntatQESe-MNalGeof zKXps!uhd2~!>WdCrL#?tml7TW4%{KNH^mU7#zg^pC}1B0fPp4B2e6bH_J}M(0qhK8 z4ubiA&q|h*kxkGR?>!rvV9AJ1)mmHUr{7?&=M}Xix0U^UR97h0zE+iItUnn?l_&R< z&zECTDH7HSmw4;O0f5r5Ck63n%_!aq+$?I(R?RpiAjOQc5~melrcu3E%s@j-K`UCj z>*5x9`MU~_j%n;|77#dcq5o^Gguzel@5;GWmZ4`!ZTPZQR;o-5NiZ)H!!>X2S_ND6Yp{2IhJdX`F}9bw;?L z$F+dg4nVb%_~d3QX*JFN~=)UYhNvFa_{hR;!!lN4(p17H2EE|h{d zk!3+NJIPkQ(x7qO1m!9jXJcu-JCpRjETz3HdE{7he2senQ)0sinXah>4>Yq@ThKxS z>}}DnSC+q1J8xjC;UZ`?8x9}R%$71l6H8L0PNb081G<6%W>39veNO#qF$kpfbscG< zq>i_rbcq)jawg*MTE1z3RcL|(sJ)&;Otu1XrL__xE7Xjw zuxO6z%Nsj%y)|V78~2#03zYo4=!v4*f6`op8S7jV6tYx-1WNGa94J!49DN0VRpTkX zMW~oS8IoMowP>J>5HJr=5Xe4MpSGxpJh9Ds9uH-X{SMYK_|g@4p!GsvQ+c*Hc>
~Cyic>>=u`~J@C*x#vkUo>W_u}vTaD$`YM1oUlt7bw@fObeN8DO5%3xfs)4IChmTZ$~P^;pCo_wN0- zb?Rclogbo*2xI;6?d3aU7LBZ8m28&q2Di+h9_tvhN2@ohbQ{3ZN7E__TSu|kwVCuX zZD`NrM(Li77lYo{JMnCclA^=!>paPa{s}ePXqJC>8t=lzMf$9{vB+Kd-3f=`LcxOu zrrgW(K}3UY>kvSOf;uiQE>sRSHL=#!S|iL@23Yb=n>F(Do(OQNf!QOG)~=aakv+r^ z?2x|S(r=~gH?oh-0VM%7jbiZd?n{=`5+#r|oW%55Y%!&+C@bC&`^^EVA=`~Xl^annG+R*P+O@F*S z{dfzb2}yX?TdUhJ@bud%eDD=3M_Hb!%v5JS(zH4T4rlmGiFM7_NG!nM#Ey6mCJa1T z$=>ZVZ&kCIRglBl0tu&=;L#^)wz12zZDk`zb&Gni-SxSPqmi$NGqO#v&&OkhjE3J2 z?wX!ONEn`k8EMB@9=Fm?FMhDas_I$%?R54Qina1~SzI?3sCn}J$*18xnw;+zuaqDe sQL|in%C^#ed}UtCM@{(0<-mOK*q3F$e|ULk#RGhB?ydi_*&yow09$7}%>V!Z literal 0 HcmV?d00001 diff --git a/website/.pics/b.gif b/website/.pics/b.gif new file mode 100644 index 0000000000000000000000000000000000000000..7288d9662744a653462803a305aeec444d2bc234 GIT binary patch literal 43 ucmZ?wbhEHbWMW`q_`txBGy5z91B2pE7KRiCMg|=q8z{~MB$!$P8LR=nEeALN literal 0 HcmV?d00001 diff --git a/website/.pics/b.png b/website/.pics/b.png new file mode 100644 index 0000000000000000000000000000000000000000..696cfe9e8f0de16eac0227705ee80d3354072cb6 GIT binary patch literal 93 zcmeAS@N?&q;$mQ6;PUiv2?EkgAk4uAB#X9jsQ@XKbVpxD2FA7phA*bY1Now!E{-7; nx027yto>%s3`d3c7%}_>Dq!$*^>bP0l+XkKLGcv+ literal 0 HcmV?d00001 diff --git a/website/.pics/background.xcf b/website/.pics/background.xcf new file mode 100644 index 0000000000000000000000000000000000000000..72d142e000630dc9eca6f3a415166c0a0f27fe9d GIT binary patch literal 44799 zcmeHQeNaaLEDfh0&2AZ`msw}>&&hq3MRaONT3cl2mxutP58`9^766gz9fhmTHR7B zdYC!y-gDmN@!rk3=iU77xj*9KWht}d8)9e0#&aOCx^sHNFA z^r6P2&6HPT(r3N$Mn=pg(qIC}I1mrWBwwAhn(V7XK}{J}pE|7m$gukGHo;(@yWGh82i~~7AQNM-z|D7GK56`#s7a&i9ya4ht`Fo0KUvU#< z5u8(&l$=7R1f_;^c3IMJdT1&0dVg+)wJxXPwJSbV&sv_!*bKsiucR{rI`J}YC&!k}5f zvGSA7lV5!9Qx9prI4Pbi|FlFyYv5Y^M12G=>g(zo3~oas(-_X%^cTLl($U#rWQ^gw zQ1{K%o<8%nuB-IbFlblb+G7)Kz1?2js&6p%3br0ohmkfaf-@-R?C5Q~m|f3P?sU(1 z&jQN*m}i1VF)fEnisB;#gsA#z80+FPkfPz}wnr@xh)n2^ZLfVwj+HGaKw{l)}tIy4gC z%=#58*T;iK?sTsDQB_D0UFa-0s8-EXg=*}_j}{$J<*R0>LdtBVnxh5E50&}ud{r>$ z*3#oeAH277pHfma){j3b*tsQp=YFD+$DFHwln-g74bF=fYWbObh|$)5rKPcsuiJwj|)k><-+IG4A>!KrHR}qzTQs^${w&>Z^Op z?sRG;54RsMDl&&Kbo{qR?CET7GSG%F-l{hkzrFTt zbA7Fz)`#&qVh1YN2kj5HA22-3tfOIO4Mn!Mc*k4p z!eUHx0h_|g6v6PdsE}1dsbUSR9!g#@o$`FwxzH3LIbrScS6<(k$OUtuGA9?edYQOv zbzCBux+li1d`Wz1Wvo|;ja(uwi9`ka0R3QSEWn^C6be4v&L!>Gr-U!%p=u#NPw{3< zPOg$n+m*T5(PDJAU&)FRqq0!JK0rUn^^XM@GX|mleA({3pPtnL5EZHyYATPtz2o>9 z9hs!-&Kv=t=}3iFsW`k<+;v?Jp|KFm15g_cKrIy6-r^l^u?vea(FK62--56c z4E^CoNWDu3*azqbcRv;gx=!%(hZ`OBE*oGUpdZ}*SRlwcfzBUpVAQ)}fPH{|aQ9Aml?pAc4zK!9GAgxZ~9#z|ILm?gs)TxEvMi z5OfOf($V*i1;EY$As+$)30#f}_5u3A9j_Ki*!h^ihymQk`wY+ph@E3T{hhB8q)Gb_ zV822d?A=J_5}Cv>&LvCU?AV-|6dxDM#D;UWq}1e%Z>(7r$wb0F8d*|8^q>E@bjf0R z@dC~szdmxgukJ{QTfcTSGADwn$8h~r4n!4L9sncQ%daImOg-#@l*&B~-RK~o=4{yigcL)1EY z-2#>UgZDBysUD_c^6kpJ_uf``+cEi0<^FxSLAepCp#1Sla79FMG1Ys74EHvp!+51Z zU&BZ6g1(`(t+l1TM#t#Fc$fZSv!l83LUm;YQvo~nE;QDk{i^h%!^LzlX!<(smxp$O zXVO^+R7839P_qgYD8_-*)wp32tKH0ybgSkBpD;l_?=zg%ewaE zVEZz%$(Bdo2FTy|H$*DNEus`tAm2BUjb$TYYvW=z5^B=h2ka_V$>y?|U|+{(LQM(< zVCPvKTfr8CJ&P@dn)IQYOFP8!NZF$n!b=KF{tX#1s<=y>6owLps6_fI}y&sZY z*`b+2R`#}c_w1LpY|qVg9`-cfY0h2y&u9Ew&b^cV(vRD5;dxENiBGbBa8#{2Wo| zWZAav$kUuUPj>Z(77K@umX!aeN=LN06^_btKnK82=jZ9@8t_JvIf|&#cXojr1mGvAG*aLidwdaqRN^({hp`5*e@A{!GXTs9*fy+_8T2`VW6+a ze7*ac$!!8-kh=$3g0a`!ZR!G^ly<+-VH@l-cXxHPwO(#%mW;hF(y*ty%h=j-sj1O` zxBk=gI#9{bl$&+2PS(K+Y(HyeO>8^c%)%#ff1R7}p5b}MJ`uEwbh@1`x62&_wkP`O0qdYuuo1J*WbU{0^!5!53Vz#U z&l9HpYu(q)J$(aUl-f=9Jl@`G?C9(=b(?#^N`9MhgSEN0<#KCVM_0GGZ_q~CN>)Q} zW7DOUR%2Ip4{7YRlCH$t|H*oPD&>I}mLyMm7IsiD5kUFVqxvC9Hx z+hFhYuC|t@i$FZ2^IIJ@h*O=dmm2DL?fL3qR?D@H%T4vXw(8v3A*(Q8F&Qs6UZ|-) zS9#`!wclcD2Rb7iL6U}9&8GHdL#?)|vf?yau^;-;A7B(Z1ndVAjUIr0fcfCfPl53l zqa2Rz2V`_V7%}QWehQ4gIIqU<7dW4kzTMtD6T|PD_h2S=Tl{5fSuI<|Rzk|cX`nqm zHQM^@TDq>czM-kPwZmlYvr1?c4QSPDtp!#~>Ml05v~^wY9kh8-tVy2PRhH`WTE4E~ zQfnt5Rz4gH?3I?Y=c=@PebeQRYnEa53d@t{|);o%jt^BDs8Qyx!q(&JN5(m1LKDAg5v`4a_onp_&Hksfbk#w3g5Fh-x#fU zg4Y>a@dV@l*!sM1eBtMX?`wQtk5U})=edxQB;-BFiyQcCxVV9f8@RY}e?+<4pneR$ znAeE;eE5>am-M}ONn`lM1^s)lppW4U!`ZzEXJgIJZVSIaF?=eJ;KDcA5{3)kqrUJx zN&p)AC;BHQs$s$&#sQ227zZ#8U>v|WfN=oh0LB4~0~iN>cpSh4m9Ylx;r)&c$U7jz zP(U^!+dv@ZqJS(%w=g0-6_`HBOZ|2;q1(vRZ-5owN)jh=%-u>S7l3%~=|B{9#CR){ z-3^{QKlh!N3D3`qM>z7rK@@Zj=E>o@8B&srTBaz5p<#rY7=|zh40FJKiWww^q5m@s zDJBCe#cANDs05x0E$~wqfDE=BNMX%D4l4jjtdn&S%2+aUdXU>9;Ddk<0zN++@ENsn zG!nziNQ^WiG1!d6cry}1&Imhd9}md%JOV3pKnCeRT+>ek;-tQvx;hZU^>7AkKP$GE zBiqlIP1v*NL*RZN=|?2GZp^~MEUf#4mI{NLpMyUzeLn^_3|1Jd?vr43x2d)m+(s|B Z4PQUK>-xk!9{BG|lE8lp`riM*^gq767Cis} literal 0 HcmV?d00001 diff --git a/website/.pics/bbo.gif b/website/.pics/bbo.gif new file mode 100644 index 0000000000000000000000000000000000000000..602239bf7da527c9145db2f3fef85692ae8f8cff GIT binary patch literal 186 zcmV;r07d^tNk%w1VHN-u0P_z3L0)`Td!v1go@SH6YnjVzo6XP9&(+n{+uPgX;^OJ) z>F)0C^Yiof_xJkx`uzO-A^8LVWB?EVEC2ui02Tli000DMu*gZPy*TU5yZ>NV5M*hd zC^4*T>%K!E&vb1EK(6n64+y}Za7Yvwj>x2PX*f8a(5Uo)s9LYsEF!_}dcWX=VoWZZ o&x(b5&2GCFjJSMGuQM9>ynfGbIR1cvf`bkZhKGoWiVqP0J1hcSn*aa+ literal 0 HcmV?d00001 diff --git a/website/.pics/bbo.png b/website/.pics/bbo.png new file mode 100644 index 0000000000000000000000000000000000000000..72d3fede623a09544c4faa23d5436aa0780125e8 GIT binary patch literal 166 zcmeAS@N?&q;$mQ6;PUiv2?Ek$Ak4u8B)zZw&H+*^>5jgR42*3H3|~x(2lC@QT^vIy zZY7_YSv#%K=)e&NLkZKSRc;&p{Quq`q+Iv^m)}Z3`8b;;S30iu=LcoA^zIXCbu*Y} zUq3G>e8a|#TujP0Zr)^X6kM}rP4fW`F)=Z(-h{NYWmh=V)Vw}hGu(YI@VJkQ;ULf^ N22WQ%mvv4FO#quCJVgKi literal 0 HcmV?d00001 diff --git a/website/.pics/bco.gif b/website/.pics/bco.gif new file mode 100644 index 0000000000000000000000000000000000000000..051d81e4a171d1e669c0d8115eeb8e14a0c14818 GIT binary patch literal 724 zcmZ?wbhEHb6k`x$_~y-E9a>-;UThmtVjo@M5L4+GTkRNE;}l=(6kq3^-RGUtA5=Cc zv}#dU_2RIaCDF}mYkTL__03Q2-JLq|K-#2(X_F6SPCK48^HlcC(>b%wD;ITu;PM$x1{=$U|mo8npeEIT~D_5>wy?X81wd>cf z-@JMA_U+qu?%cV1_wN1s_a8od_~_B2$B!RBdGh4x)2Gj$KY#i1<*Qe(UcY|*=FOXT z@7}$C|Ng^=4(_7JzJ34x{l||VKY#xG_3PK~-@pI-`SbVh z-+%x9F$`j$_>+Ypg~5kG2joUjoG`HeYmjPcmXZ+VQPQwRG-^>FhI?%vnBFQe1?GO=k7x$r8toi;D?y zv&d=b_1f(661{p&ScspCNl{DR*xbf(E!Wd$JlveD49eR2CKiue=dykM#>&jdAg`fg zU}{;#GSi&1>0q;*86M#000DMK}|sb0fwM4 z=$2mq00B)&L_t(|+U3-}O2j}A0N|aS*=%uo=m}mYqKKs&h?Q7~K7fL6;T!o(K7e+5 zjiSO4G3O=O8HuUCv%5Gu z8VUzmYhQ?Ur6P_Gb{ek$z#7_ETiM$hZ;nmU7fdOGzB!lPr}691uY00000NkvXXu0mjf7MZ8( literal 0 HcmV?d00001 diff --git a/website/.pics/border.gif b/website/.pics/border.gif new file mode 100644 index 0000000000000000000000000000000000000000..195bc1e5c68a5e983dd8a7d01869cc27f97396c2 GIT binary patch literal 232 zcmVpEA^r|cVPs_>cWHEJAV*0}Pyj3d0000e03HB91d9*^F-S27 zCAC;{PbiLLIZBj;X`Ba|aEw-0wsl{um$PcOxt;LQtFdsep{}^Pxs*HR4+&jPXiZ?U z%DeiGPp(M{4vI-+r}->OYuRY8QN4w`sqnTui_a7HQ(=C0f_a2%c7SDdY=?|zj(#DL il9YprbdrB5b8nTHo|l|_g^8nqh>f6qhO4D)5db?(b77_c literal 0 HcmV?d00001 diff --git a/website/.pics/bro.gif b/website/.pics/bro.gif new file mode 100644 index 0000000000000000000000000000000000000000..d3b1814573cd9b42ea09db93dd4f4e9826503570 GIT binary patch literal 184 zcmV;p07w5vNk%w1VHN-u0P_z3LSKGXe57WR!fTn!Y@5x1kfGJp)!WFMt7 z?(_5W_xJbu`uhC*{Qdp?A^8LVWB?EVEC2ui02Tli000DKkjP1f2%wmQl3GmTJk(@i z8s~u`SyorJbzeBXFgmZcTb?pit%U=oXsp}IxEm^eu_KSTj5d=#3R8$JTDd*14oroP mk>Toj`qX~WW%t^dHNDw&$rj$W&%0_te0e#7cw&Zh5db?RDqN`m literal 0 HcmV?d00001 diff --git a/website/.pics/bro.png b/website/.pics/bro.png new file mode 100644 index 0000000000000000000000000000000000000000..ed09c99a157231332a40d9b2d7f3bd9b11714da0 GIT binary patch literal 150 zcmeAS@N?&q;$mQ6;PUiv2?Ek$Ak4u8B)zZw&H+*^>5jgR42*3H3|~x(2lD+qT^vIy zZY7_YSv!r9`Op9F@4v5qFCS-D_4&uNxeJR{tmc%KmbL~1Z7|^G<~BAq78Vv(R#p~f pKALc)BT(6`SHd*u3dbcz218eVWv88Mo&rr~@O1TaS?83{1OSYvEk^(V literal 0 HcmV?d00001 diff --git a/website/.pics/ecke.gif b/website/.pics/ecke.gif new file mode 100644 index 0000000000000000000000000000000000000000..a74ce3243a7855536121a29e25e75988065a56a5 GIT binary patch literal 735 zcmZ?wbhEHb)L_tHIL5#bRJX&ge6v^KTDR=wPAQA*;^tUIOfw6bVC>zk@7k(uU$1Ui zsccjtuahUOmhtc3zyJUL`;>0*%wOZ0wah7HpL%4z0ABuvn@Z_u!=*}djt0eM zCN62If)mfO4zTcRaji+Xc<3m%gkj2=1s~TrunK7B#C-Vpm{lNDu)4w1i=Hm?#H>H2_f_>Q?{& literal 0 HcmV?d00001 diff --git a/website/.pics/logo-apache.gif b/website/.pics/logo-apache.gif new file mode 100644 index 0000000000000000000000000000000000000000..29956097c9254fa91ebfeabbeeeda95c00088ee0 GIT binary patch literal 3358 zcmeIx`Croa0|)Ro9}p0EAl_hTD42N6yUe2nYD#5F+0x9)`^rqqmG!j^#5+_xvu4Yd znwjR2np4)Z1q( zYs;3?CfYIkKvEnybjE4Be?VAhSV-`msDpDkKM&LEHMnb@qPTAW-?0V`IE+cFgHZi7`?vTB7Z$VCX$ZB4Gq# z4T*t)0c-|fJ+Pu{2m{+Sl*dPsD@+HlEu`6`wYF7X?FfCOd%g3tAGEPjfNl5f(_rAc z2Etz9gJ2N>stxf@r6sZ58 ziN&6OYQVr7?EPop(&+P{+1D-%~6JdL~PKC{15jjFNuG$NkI?8!JIi z3q4^zVl5y0wuro3<^*>^Qw`Lis&7YHQeRdEJT8o1Xv8n0;>VAHig|@C+1@fY$Jx+uk_^; zX*&cD9514Q7KA6VRKE$l${ajQ3)KN!u)Q2>5dr{L`<==oP3ef>pL%JErPhg!xp?TT zKDEv+9C;q3Xnz_I#c{*oWQ1sANAu*3Fe_Zl*LI_NHe2?*;_UGotS}4j$=dFx9ca0& zQf1qjV^dGtd~!9iH&UEUv@qh%&8!@IL^X2Ub2qHkM@wb6@f|M0J&9npg@;P|qxSSg zPu@IGf zQfGUPsa4KhD^b&Tcz095-_yA2rhU`xnqs@v(S}w4^)4%x5D$9rJ$H|Sgd=>fLzLv7 zXS;dRn1=4Gx}95>l&@Jx1Y_mC`xj@G;!Wm>W5H*0;^O9WNtXRMkA6yrA1TtXe2A7A z=7Q0oQ_}PSkwS#Di-s-o18TgXVOlxy^)_QpntYpn^xfk@exlm6d-w@zrOfPvn@2t+ z*ymwArWAl=q<9uOdk{TV_l+qSbaQ~3slgOXh2s88gQ-)&KS$&rt%%O zT@(8_TYja!8{B%SNtnGpRNwDH+zIy8TW-(Uw}M@FEtbic3$f8`%kMuSM=kTHia6G8 z#{3Lxyj`5PVg5nhcZSIiUUW~#6BFi`LpJY6oCoShrJE)PVuHMvL0=K3KWhwa?MGw< zY8>_*7#)6;N?bm*;rM&SIVY(2%`krBm_X>bvEQlC4Q?7QG(VI1dcTj{{vMVlqgN7W z1=LP$512~JBZUq<{b+QfEeOvV5}rZ-f-W2%ASX1XQ*1?-Ek7;wT}ABl0M>1vUh8)p z96Mp__!g&y<1|NJ?s2L+$DB<8hHsPyCS?v3ku~QF^Oxm;dRS{Y$|$~9HDdo1Yv|zM z^}EvW25{rHV0@Q{(Roh{1aXl_Eyk3C&+ph)Axt8+%)B7ShBZl1cc;fv_Zzl_eX2TVNth7ZAEtR6i@_ST2pu z!g;r6n{u3Wj#Bw#jp`3~0#tgiPG+%2+TqpAX6Fd|%#?NcCUwGs9ZX2qmBcDSw_BD} zGSMzVq&982z>gTMm!`}nbSY6*bRMogQOmi&qNEwnNaLI#$1FKMe5SLyH!xrnuTMx~ zB2Q~O2YBYOq|wG9WD$k!Db&Norre||H=|t(#ErZrBzd}hU}MjP(bVuh)5$FCmjVkM zoxMw^ad*EJBmJuP5EVi?F@cM!9P0fQ!X(2Er?}Uy)CWOPjx*&MJr#1q80t&kF3(XMIkWoK%U{#l2-i-9FeDLzpxmZyPsLtg^fCPPboNW{abRVD zv>GSW_Y``!lq^UT4oEM^5F9~1?^~;FflG!hS3JL=aTe)sKf8tyef_!OL93cN7=aXno;C@a^%k3 z$Li}|ZIS*3hgqsn67526EY@AoQF=DQ(Beg6x@Y(Y-HewsGoM{UNquDjIRfN5wWyA% znlCxti!={7Ihd3lu{B#1Ls??vXW(DQel6f%gVP2#JrLvk8~A2Qc0f(vJfW{~Rhrnd J17ZT;^$$B66}12W literal 0 HcmV?d00001 diff --git a/website/.pics/logo-apache.small.gif b/website/.pics/logo-apache.small.gif new file mode 100644 index 0000000000000000000000000000000000000000..29956097c9254fa91ebfeabbeeeda95c00088ee0 GIT binary patch literal 3358 zcmeIx`Croa0|)Ro9}p0EAl_hTD42N6yUe2nYD#5F+0x9)`^rqqmG!j^#5+_xvu4Yd znwjR2np4)Z1q( zYs;3?CfYIkKvEnybjE4Be?VAhSV-`msDpDkKM&LEHMnb@qPTAW-?0V`IE+cFgHZi7`?vTB7Z$VCX$ZB4Gq# z4T*t)0c-|fJ+Pu{2m{+Sl*dPsD@+HlEu`6`wYF7X?FfCOd%g3tAGEPjfNl5f(_rAc z2Etz9gJ2N>stxf@r6sZ58 ziN&6OYQVr7?EPop(&+P{+1D-%~6JdL~PKC{15jjFNuG$NkI?8!JIi z3q4^zVl5y0wuro3<^*>^Qw`Lis&7YHQeRdEJT8o1Xv8n0;>VAHig|@C+1@fY$Jx+uk_^; zX*&cD9514Q7KA6VRKE$l${ajQ3)KN!u)Q2>5dr{L`<==oP3ef>pL%JErPhg!xp?TT zKDEv+9C;q3Xnz_I#c{*oWQ1sANAu*3Fe_Zl*LI_NHe2?*;_UGotS}4j$=dFx9ca0& zQf1qjV^dGtd~!9iH&UEUv@qh%&8!@IL^X2Ub2qHkM@wb6@f|M0J&9npg@;P|qxSSg zPu@IGf zQfGUPsa4KhD^b&Tcz095-_yA2rhU`xnqs@v(S}w4^)4%x5D$9rJ$H|Sgd=>fLzLv7 zXS;dRn1=4Gx}95>l&@Jx1Y_mC`xj@G;!Wm>W5H*0;^O9WNtXRMkA6yrA1TtXe2A7A z=7Q0oQ_}PSkwS#Di-s-o18TgXVOlxy^)_QpntYpn^xfk@exlm6d-w@zrOfPvn@2t+ z*ymwArWAl=q<9uOdk{TV_l+qSbaQ~3slgOXh2s88gQ-)&KS$&rt%%O zT@(8_TYja!8{B%SNtnGpRNwDH+zIy8TW-(Uw}M@FEtbic3$f8`%kMuSM=kTHia6G8 z#{3Lxyj`5PVg5nhcZSIiUUW~#6BFi`LpJY6oCoShrJE)PVuHMvL0=K3KWhwa?MGw< zY8>_*7#)6;N?bm*;rM&SIVY(2%`krBm_X>bvEQlC4Q?7QG(VI1dcTj{{vMVlqgN7W z1=LP$512~JBZUq<{b+QfEeOvV5}rZ-f-W2%ASX1XQ*1?-Ek7;wT}ABl0M>1vUh8)p z96Mp__!g&y<1|NJ?s2L+$DB<8hHsPyCS?v3ku~QF^Oxm;dRS{Y$|$~9HDdo1Yv|zM z^}EvW25{rHV0@Q{(Roh{1aXl_Eyk3C&+ph)Axt8+%)B7ShBZl1cc;fv_Zzl_eX2TVNth7ZAEtR6i@_ST2pu z!g;r6n{u3Wj#Bw#jp`3~0#tgiPG+%2+TqpAX6Fd|%#?NcCUwGs9ZX2qmBcDSw_BD} zGSMzVq&982z>gTMm!`}nbSY6*bRMogQOmi&qNEwnNaLI#$1FKMe5SLyH!xrnuTMx~ zB2Q~O2YBYOq|wG9WD$k!Db&Norre||H=|t(#ErZrBzd}hU}MjP(bVuh)5$FCmjVkM zoxMw^ad*EJBmJuP5EVi?F@cM!9P0fQ!X(2Er?}Uy)CWOPjx*&MJr#1q80t&kF3(XMIkWoK%U{#l2-i-9FeDLzpxmZyPsLtg^fCPPboNW{abRVD zv>GSW_Y``!lq^UT4oEM^5F9~1?^~;FflG!hS3JL=aTe)sKf8tyef_!OL93cN7=aXno;C@a^%k3 z$Li}|ZIS*3hgqsn67526EY@AoQF=DQ(Beg6x@Y(Y-HewsGoM{UNquDjIRfN5wWyA% znlCxti!={7Ihd3lu{B#1Ls??vXW(DQel6f%gVP2#JrLvk8~A2Qc0f(vJfW{~Rhrnd J17ZT;^$$B66}12W literal 0 HcmV?d00001 diff --git a/website/.pics/logo-extra.gif b/website/.pics/logo-extra.gif new file mode 100755 index 0000000000000000000000000000000000000000..9dc25551214de581caac2aa086155c85d98a0350 GIT binary patch literal 10104 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 a;nRta`}f-kv4s_{i2Xm4)-V8o=Klch?5kz~ literal 0 HcmV?d00001 diff --git a/website/.pics/logo-linux.gif b/website/.pics/logo-linux.gif new file mode 100644 index 0000000000000000000000000000000000000000..ad26453dae08504ab0be6e4059e9fae0353fb729 GIT binary patch literal 4100 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 literal 0 HcmV?d00001 diff --git a/website/.pics/rrddemo.gif b/website/.pics/rrddemo.gif new file mode 100644 index 0000000000000000000000000000000000000000..251a858f53c7c0d11013d895181507e6f7e9c8b7 GIT binary patch literal 10698 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 literal 0 HcmV?d00001 diff --git a/website/.pics/rrdlogdemo.gif b/website/.pics/rrdlogdemo.gif new file mode 100644 index 0000000000000000000000000000000000000000..295b588fbc9e68a7f875413f8ade6962cb44e066 GIT binary patch literal 10619 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 Vzc+lxw|vhxeb={rw|58t06VkIl$Zbj literal 0 HcmV?d00001 diff --git a/website/.pics/rrdtool.gif b/website/.pics/rrdtool.gif new file mode 100644 index 0000000000000000000000000000000000000000..cf2b3a80ccda8a2b691eeef6e5f05daca3fe995d GIT binary patch literal 1934 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 pYPTEC-YkGl)M9@ymwvfy0f{1>-H)Y z@h1x-7tjJ7kR>2rGO(>Z&`{u^Bh`PXvB*+EV9L1_C03>p>)Q?=T=lkU|NWKDhNLROrsAyN;#7UDUi%*+AW9F>c z(y7;0|yTs-lu%*_=%IJ zP9IY}cmBe~OP8-)y>|V^&0Dwc+`V`I!NW(7pFDl`{Kd;xuiw0V_x{7jPgflotO1<~ Bovi=> literal 0 HcmV?d00001 diff --git a/website/.ttf/futurab.ttf b/website/.ttf/futurab.ttf new file mode 100644 index 0000000000000000000000000000000000000000..7f0b70079be769bdfd324875b4aec3f9d80e0250 GIT binary patch literal 38867 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�=JQLcQuX`Avj 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 literal 0 HcmV?d00001 diff --git a/website/.ttf/futurabc.ttf b/website/.ttf/futurabc.ttf new file mode 100644 index 0000000000000000000000000000000000000000..3fcd868d2dfeb8ec80b9f0f253add11c085255ea GIT binary patch literal 39442 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 jAxaj^U(kGSL{YV&2wOsc5VnArK~xk7 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

RlMr+G4H$s5*evn>OXtf{OZ;8faL79IXlKfbo z4jFlQ85y~?8)qPlxT4}&d2B{*-}H>Uz8(1aa~s)6-#`#C^Q455Ha;71sT3O`OD>aD zhfNwBBn;E;QefXCcEH9DbaO8%3oA{Cy2SkQI~;Eec{C{_ExV^Z%vfrkGjG|lv?sOx zOPs;+3GvaCelmJOQE_oFd~#mU=bJqEgl$fuBAXN{KVsOB=mb&KLZVDYu@%(}QOMYM zUAw6*t^E93Kb#YS(DSh9l+qXfyTgLV;v-lzyBqgPd8B{EkuS=in+ z>4;?Y8>aAJz?FlE3{@HmNVZEx`SyZ^|E8Tjtk(WY|1FT=dv^%0YR=kyUu#477E^4g zQ22jZyYlcTtE+$CS+hNv$p%TtGGv*_Hko9S$sQnNArKlvfB+#PIK;A8WJgdzS%e5F ziBO72X~3u?0u3}wuvHY8!D=C*2r2}GxZ-Ci($?}=GV}e;nVA&)zW(t&&o_DQc~9

u0`Lh{ujtpp=9Nk`*CK$e`gg%FaEB9m@{m~A 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 WQoww$E63$>VkW&RBSVHng!peU4%o*4 literal 0 HcmV?d00001 diff --git a/website/.ttf/futurahi.ttf b/website/.ttf/futurahi.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f8186ab179b6fb06a0d7326208e7e4abd3062edc GIT binary patch literal 39555 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 literal 0 HcmV?d00001 diff --git a/website/.ttf/futurak.ttf b/website/.ttf/futurak.ttf new file mode 100644 index 0000000000000000000000000000000000000000..0148006cbcf440067b080417290c1d73213dcbbc GIT binary patch literal 33285 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 DKT*lG literal 0 HcmV?d00001 diff --git a/website/.ttf/futuralc.ttf b/website/.ttf/futuralc.ttf new file mode 100644 index 0000000000000000000000000000000000000000..723df72a65acdc87ae30cd3da3735475e4cd279c GIT binary patch literal 35699 zcmdSCd3;nw+CN%#wqDYoUeoF9NvE>`**gm%33L+H5CVhj$^=aWEjU`7=`5Ieyh3zVbtGy-+TYLm(bO9PMuTr z)KgW@R?kySC?Ui|))0{_8aXC8?a}Gu>j-)9d)zGfMUx2-)nxb>{Tysf+f! z`rIpotooD?v2yydrI9x#|G1M7DTNRrscO-z>Zy)J5vcI@c)oGg{JN@WrhiAMJzsA7k~+#tq}gN+GV#;yQYE_0kok(KFW&QujO5X`VN8$%4txR*Hmd zcmUT|=P#T-HU7M5D7fB4M z@Z}{EL{|IqGU-R2@Z}Zaz}q6Bk`8q&B7gAZDG8+ozPv#6w9=OsNfDjx%S$AU9`WU6 zvXr*_@(M{3$_Ljjtz9zJn--KM7SEYAduidq1v6$YsF^vVaN(l5CG1XQYIb%?A`*9G z!JMTvOP9=?S{*rT!Stla$o%>9Bl$BmkxORQ%v`c;=8Pm>i?_~5o{zj;WkTeTnG36D zE?qKbdSqH^>MuVOSx{D8HEYrIrArf+r6y&hMUI;}W5LXt8B^;LB8#RjsGYi`E;7}f zz@TzRruR#6_sd9$TvQzyKWI!@FH%Sr0z-9V37JD?k=bM^i6p5c8-FPz(U)`MUIEIN zk{W!LkeOsEsm8rwWC58@l8}oe`D8x+B74+R!>?xIote114CxF!JDAj>j#}KAit=LQ z3sDQJzYJI1F#PvZ-S;CoybDm%OuWTvo{^H3XG6wzbbr+Nj6Nx==!A9ur9@n9jV`MBT!S^a)u8Mv{k4son zWE-Bw z^Q2gqhLv(dxG3ZaF~ls)z#CsvE7DXtkUGgwf#qw+Sehuf$U3rE0KouElEC`Dn>d7G zA`vSYNRt7bo>WMO` zH4=aX6o5=VDmMwefQ99xUR+J8aLxaeFwN6KvXG58j*)}(GH`v2EElekX_7!M(hyQC z9}yDi*W$(QKgCD}D@G-P^r0JB&6q741{^8x7WS8(Y#wka5noc2m#D!8E;0+_Q>3&kLDN^*Ll6(s#vre*$o_-m?-BDeL`fIWD?ELfr^k5u5>Jov^aY-_ z^7JrI5ApPQo*pE>CDCZ_AirXHksRRp=g5B0W|=(4uUK9r&yql-`*^yS?BUSw<>h<% z*zF;|;n1@Z5#v1277QU*P{Ba#;W<}RK#V->H$Q_cK}2%9%g z@)DL8$qvl5eB9f?@3Fi{w)6aBJl)3AM~Q*>;i*UY)gwH8*mv(?ezk?qibkwU6P|12 z_a5TuW}ZIC(@o?7PIxR|;@~ax2E+LCSjb(621_8@M;swQJ zSX#v2WqA?Yj+IyQcjl9M#E$a${2t4TxFZAJxx9Q1hj%vaiJ-&``!jq{&)_vqC3$?t zPvuWn`k<=hZ%yL&Ch~Lwc!NLcoxrbHUWCl)efJ)IuZ)EA6;;Ns#_+V1r=xjGqj-L# z@12qSs>BCN3BMZQt6>DcDkj4@WX1f7rmgMIxN%&!LV zbRh3jA;&?1@96?og7MGiWgeam;7|AW!P%d~&iW~mTwkrZ{D~ajRSv&mqbWivWU%!0 z^`kGp%JQ|9#jn_m5h3NU=hAuV=B=jjd@4^|q@Lff4xLJt^p3G_s#q4C%F_d4iya>Fpk|3T2VtuiG1@bG0uP5xD$nzp*FMHab zr#23imFF!SHZ#wgc)NPvde`%Nj2?*iu($O@hcX%8?26?@j19|ccr6Ob7!(S>hkU*b zWfE^qfQH0Yo50Ih9-1A`6FOrdKlnDAehk!DR~D;d?QuZw)8t7}xb6e5prl|x&_7;UQ*sM2W`NGu;S5s^jrzOT|aaKWYs}VywE~}4gj6eRcMCpa+_jFyO6Xm0*(?r5O zCP8{qzk@WH^@4`N+F-uWae>v-e!b&tip_0tInn~`{)#IqHX}Xrjr;B!5TBkI8{IcU zK6>lmiS*dm%)ZgF>8N#vxR|~rH*rYAJVu#5Es>`{dIUw3wB}1!FR@Cm=eDP%P>YNI z(YMCFI96`z{6y%*KB%LC5P6?`2z5k|5>I-FA9*HBCp&DWXMzBoWVb|whlPd&2RQ(d z&1x~5jCzBgPTM_f;rhTx^M$jH>{ODR+m?1AH}`5<+9jT*P^aj$;lEpSYLLapW#gYL zr_G6v_>ua*4UVM@GWR+O}iFexh}&nB63>;>ivxoua`9el2u zuUV|w*6eJg_>Z2N+uG9F(yn*3nLEy8TUddEl{m6fvH}9!X_*=6v2py5jbB!V+n(mm zbi45#5a7_n#=4>uyMKU#|FLn_*j*Wl;zAl58@DTIVQ$r?u*jrkPV=MltEUa6QncBB zXi{ZrLE5zJ%GD!hIg;zLQZts%9~u~A9@=kS->*~BHqY!^9-T2Fz%Xmyg5@v7y}U=- zwND!#H6tdfVM_7JVoT)cob>gBSDj3Hb)O{d+~=3$23;G_bxpb~zXM9?0NqZ8MmWZk z9Nv<+E3hSww3v1&Eh+XLsd0PL-Mv$sA*qHmov1bFby}-a+goq-3(-bv(#_YewqFN= zZd|hf5ez{LJ?&}NbFX&bwt6jv^3HmZLen$d-81{w?%SZHO4_`B{qpkqWviFxFJ3%< z-jc=hJAde(ja%8cHE;3a1=ULy&+8D1W^}$R8lQXl*umev{PJ_^&MTjPe&zCKpGhru zZhiB|OPAaK_({ik`LmmGFtU*uT|bCVK;!fSf5{*VJ$dew1iNG<$x1-F)ezA~RFbVq zbBwh)Xh%#_dPZ`Bm>y4bqC4Fl5YLKrVtNX=sE$OLNN6Ts`WLRYwXrF{rU=IY@>mWW zG3GW4pBoG{m>)EgO%Cq_uqkXB05e$*j6PrMS+Q)!cyXk`v#dnpaM7j-lS>B_-jf+P zV)VKxsnb%ja@P*t^5*>NQQ6O|o%`Uu_fmaCMo?)?e$@1hVs-h>{KBzQic=p}FAv;3 zu6Cz8ZB};n=ez4JPT9V5z?!EXTQc?i`Klu#$61;*Bm%}!%IF9=&gqE1M@OF~Pf4I5 z68gr-M>{B+%W~XDHSlz;T1CH5+~BE^9uw7QpC$W@TB4y6@iT&wwWaYTa=jgfJ?c;d zyT28aUdTwd(z!KDYipO*)URBrxZPi=(f|2Tjr%ISlm6r8E&5N?9D<;Ux`#bsJE(uKIJ0IS_!*u1D_>C&1-_pV&2R;B-me*V)>^wO8^ zTdL{SP1VBsxLkxq2Nc*s$~}pGk}Mh&J=l&}FY6Q|H4#md)o9R*ep*?iA`G5>dXrWX z^a`JqmSkk%%7J(`y&P!?7#9s=?rFMjK@Zv)6oMO@i|#AO2ni! z>JN_+M8lOm99t#^z@p*bsf*nGz5VM4J3%bRJm#x_p(dG~huQYt6-k`?@sLW`W$tIDG%hm{=$(O+jXpc&T2 z)s(F6Wsm9oPFzM-OibU*J-0a-?b_T`Aj}0V5=n^1AdtP104a>xMb@GP_+_=UrGPZJ z=*>l)k1m$q`Kg}q>Y-iNgpayu7_irDQkv~MOnU=$fz}`~(4YxK>l_Ha8bOT&i`nW< z10xe?cg7VZ(8lQ#CQY3&X_7i_=d;f?H$VIAPPth9Kz%`dNBx*4(!q2PP3UZ-4YXR_ zsy3)=)opYx`VCt?{T#Cja;(RXv%lYPm+kEIfCe0Lo8BrpB)im_quC|$Q%B%^}%xXf;H7tk&8 zWPCYt^tcI&8#NI+std5Mt{y#NNXa^B>&6X_j~g>-!n2QUdYo>GXjr}Li5DLd>M33O zmo3owL{Vo#jKUl$fE8g!;sy{;8%bF+W& z4t-O&-e6XU#h?Tl9buM0LpYm0KrTn0m!n>9gR}u$gP(A;-jOtbMu25^irtt5D~W5$ zn2|hd>GJv6b5bYLSJfjK5xp(jPM&D?tjs$e8?$HI?jtUjNS3Q9 z7t>KJ;xLlw2{jReo-~6Q1~L$hcD>0U>H_U9F))My=$(u{=pX>I@xF`O$JpFpVYeAR zV*tC#CQcexS}{TG{A81QK7Mra@@=~|ZQnOQIJ4uyr=H!lb^9~l2~wvgD&kMC{_d}z zzkMIovZ=Znzr|o2qJX}S?W-sQgyGB^Oj?&iKHC8 zI^!b|$z-4>COXinkmlajX2sAPzN7cvl;}WF7n&%B#+gDBLtOUIIA=7U-k9NhdUHa_ zrZ+Bu{kwZ9a&gbc(QnUTh7I}~qqJAg$4H0qabcXI!#U|=6oXR_2ETWVdO$3TF4`@8@R1T|)0jz> zW5-lXq~a$J(zMvoiT7^Xy=nVikMRADO;0_$d&k2~S35g|H=-gxKmP9DK7VJG`X4rT zI0F#A#oTcar^likCWgb-9pr^Tljv{P*+9s!lt9J3WZ2e&9rVnDHDtzuHN^Q?gz#-f zTuermD=wq+wcFf+2wvtUe2>;lY^EAaMzbDGnx5AmBrljvX1z`{Sd5GXna$UsTk(a& zTW|N$CoJh6ATaKCjx`;fnf@ZUpzwWWTufHq=(x-d#mf%~#Z;Uo@0Mo3R1oR0$e{B? zR$dg3XsAG9Bn=is8s}11nUqJVon}yZ_pR?F`>iVM9O>0^wY;4EC69j1u%*&<@Jso~{xKiyveXr^I>4CON_niP0k0YNs0p(V=J z66#`{Jali2J}N*bh*1F~&>SBTMGP_ME&DTHVC#Y7l@b06>N(7|l$f5F^$Px+)ZgY> ziU$198lRB`oi;O~Wag0c!t8$ai`J}NTC=g?wp1YOSo-R=$)%->rZjEbdGwptCAAr_ z)~VlWHbQ(a#`ec7Pfp1QQ5;7{7ll`Z=t#aeZgfP*xMKtRg&d0-eXJ`REWv1TgWkb>fd&gHW8heScD+d%e^x?wQvzM^IFXdii1okeWJ%INRO4G%S(!|`WAZ)05)(lfAaHnDqU^{U zwMp-n*EeOhd*(`Yv3h*J`t{PLr|D~SNednPK-i<|YcIT}{;uwc?K7u7Lbv_6i#lho zS%2TM!e>TLo+{GRCn}nnss8ljwHX5fmQQ@*d`;ED17c1?=O@wGri7HZm?Em*PAzoA zlqqY}Lm#NGsw-zsOkA*F(!?5?+P0fUtvLKr`KW1X*Y@YszfH=_9yZhvAPVJE_U&q? zxntFV>h#&_)%R-FZUyFHtP#H9ywpsRJzY7Y`%qF1MF*FlDzXWq13n&j) zfpXhHbJ&6qog#EwMG+yvA@8D9D`@00jX{$2DXVF(joIoE_aG7Toi9-FdR(%_EK#Z4H`Xr!nm2`c@NH=x8#q1+}}KP{GvH89lI#! zbzZA~_>mQz%RAp%vGd6-B02iTL(lt1zVP&0Z-P4&cij-S$tPgw%mO7c>qvm8H-`q8 zn{@%r;tt*3uux*Kr6{RkphRumtb{Rg^BEs2k73ipE0+d1?0kA~AvH4#8ldoS@2T#$ zUqAa!+W20{BjX;~xN2*7RH{{%}O7`bYJ5>htP127|`thw)-~ zyWzuIyvI&jbxpL@tQGWTU`wAyl5~mI+Z@7&CohsL=2%ypS4MULE5R>pT7PK&zMtCO z`_FDU=a%OOI+m{fsZM2tS%=*grv=tRq^@oE(}^24sC&@k&Z9!{&0^ttr@>n% z4MLqFv3j($30_Ymk!gRZq&)?atYsVC;3|pIb(PlRNfU|p_$x$XGGOSM4LdYVW^EEt z(!ojFm^KFv&TT!Q^gdA@wQyr)oDwoHHZNt}^d-GV#XcPpHg2V~`c}!aFx%36WFw86L80$K;oElq{q(hs>KU5TsD8+RMHdHlY6Wie zV>7Q5wK4_FK$?VB2_y!6R4_OAY=ij%Xu>4BpJuE1c>N6g#V9sGpv~gFD6HDp$k0H$ z)u>Yhot`u~0}M{wfV~rQ#1CW*RLx?D>f?i#@Ci~{bb--%}1&pwn^-yIL9cl9Sll6jLYo^4Y zC3=^Q5|S9e2q6A*p~oxxbwf;HfCQgnlZJvGgH2)P)X*YL?+CN0rbay#kPv7w*8r*@ z`)}&kQR}0^zW~)IgP)oHlzMGhr-E@T?z$#Aee$&HE|ojQnjxkbQvdI&+{czyS1+xt zu2!9`$B)18!tvv+P`N)+PvGxE+J_FMLuhZP+-v9p^-*;V{fpX3L+%Huzj5!D z4fV@k`{2|IodbDqpXR-_z(iW^Ns4mWDG{u8(TTxq4sn@4J3{tGyQ0ARoKeK8P(xH- zB_%w=02&evAfUX1hAQA&w{)riRzLN^J?hceE59sYeT4bgrSV1@Fn$ATUl5rod@*!5cs+J z;n-by-7E1j$Dp0@EF0w*^tV{`42d$afIno}7#e+3i5t0?ag&oCsQEp(sSlYNEL4Wh z0Sl{UEIzaQ4~N%3Nb@$Uuir0ccYeQWQ{$@o!@oatMBkYq{LpE{d@h2_*@{`ziwyEa z2L#)C#frK};s|cW{#$eG4%^<|y2vmkKuK|Bhoum6YHvn;u3zPlcm>WjP-7t0$3t&h z748_`G0I+U>b17}%nNZ98A}ILtqTe5Q=MR6IPJ|x`z_8)STtbrvQgWcrv0v|a7Ff4 zIk}J3rj`yBG=ca%a|AtY&6B1|j42Vzz$0yF**=FPS#2WJBZr=Nhp$boJ#88(xbZ?XhcM`#|k}*t|iOYV--D4`{AePPn6LFhyA}Tein_vA#7OpL+vyEW-8nC zdl=zdIO>gMgZ3^FPjvJvY?(W!-A_CLTJ=tClV|kaF&%COCEL$C1t=XP)e~X2njoVp zdfF7A2XQyS+{DqN3i|9WVT$b z{z&~BpE3sNb-@8oY!xmG=hdP96GvpsNT98q?#>|kUflSsxbl2;0O09@o3F43@MtmW z{-Q*iG?D_WiA2s-l4vf`nJ-}KFryi!HDl3fOqq1sFd|r7M)lg}bMJ0c|FJ<>C1!O_ z5q5Q)>DB|5NjJ-{T@HcjJZ8*x#$)%<=Q|m1_;#)J0E4HTxA36g$pfD>24XV zJ}b2-`(Ob=+h`fq|L&I20dO#MVv71!TN}+&8>*EztDzC^7dI$l7&mbl}s){!7_H*eW$njaemx$VWOqq8HUZLL!?pYM4aSYCv!CXvhKjszik3 zHr_N>#+h55T0LqMAf^MQiNXx|6+CPA=pauL>JbMp@rt$927@&O1A1cruutSy)ID?} z_z9zX6UDC}DTiWChUkMtT}y!2V%`yOGWe81DGV}@kOHFE@}VwVW#TQH1>9)DRBM}e z{d03K^=g$CzF&k*2g{kl(vgLQBTEZuWWa=+`xe*S+jngEa(em7^DqAStCw0kGb+;i z{)dMBbR|7~Vn-jqQVUo%!bOw8lI00ET7rqvVj(S#9hQ@Z*F$uM;6lBq_!q#vVju_S zsu{Bg0A0Cqotb@^Z8xTeF-de=xV_I}X6i26{#agG$bovXE_ht_swK7e=8O+oT6*a6 zmDZQO`tytOiOz+o?!T-5R&V~hZ#vs_DC@dTJAj=a($^DC9Fh@6>C=*4YH{dWEIS-0 zgUMk1V2$EGD42U|Q1YPQ~j}K6;KXq@c*|}zw!3_NYv?H{it8#34d2D}2)ZqAr z?N97*_7_hyMn%5;=}WJ~#60W>ptPN0y4bLqyaVM!j@tuzrtdLQum2At#f;v+I#i(E zcZMq5K0cQXRra{xx}HPj&gMhqP8GKP1VL9I1sJRu;y0Mup)h%c=}e*6qt%ElL53FF zj-ZoaCV0*g%@D0Z0>YRviitek`1$zUH3%Ci5c!y~Sa$lh9o-B&FiSA(*y%s%h(W`~ zDfFOPR#ucZLafz1w0P5|$JVdEUr2rW;DMbpoWFUoVL|gNw{G5`#;%)e!CH~*QzAfK zb374xqeij_es39DH2$Q;DxA{18DP`fErbq(Ulua}wnGJE+RIgD3pA^jz1*9zNVjhm z`v%WzU|+X*@z~1HtkA%OfJAJc)rpH|(2T9?wYtp#cF!X9lNlWkvvE=v`xaCpDfJ{8 zE&hRt7K7ah3!vB%Xld!KYY9IYxTAMl)TwBt(CJTH%v(rt6@=s`fi5yDmdaPzl`B_n zFa!IwbC^nu{&Hh!&tVkZzKx9kUU{$~cu{$KTxTvEG;ml!U|GL)i&7XAPTMW6`8RuHfd>P>+$ktr$)jb;V*HP{o{6xVm`#5=j1CragQ8j?BkIfbb#>xJb!_KF z!6kmjRvKlV;N%+W=PEOK9qJz$cw1!#hFvxF^@`E^EMO6@gJ4CGLa33!4vQpcjiM>c zzr_#3b;=oN(gr!q#8?zW97U0=Ca95EoIojHV`GQG!)oA0NDQBy467VOHN4Ad#s5>YYa|4c>n5o~M`Qbvy0jy`lDS}}U~@X;ejj8LC! zY}~Y^@xjJMvElT^kKcUfgY)mI^E$D2-g&b_Re@KuT8G`}%|6!J*ArnhD8b-m;Akfu zJ3`tFr^3L?bcMls;$Oh|8ORZK0~n3;GFZ0e|BIh_`|jgsm^SsJ3kpVq$-Y?UEX%lW zaqYcn_c-fH4}SCQ^NgQ~>q=9SzEl4NcGjnl3IS9gg8@^y52j2{cu=rT4`vURf6~0e z&=!0u>=!xyT@dx8K-9wN%pIQp2H0ys0pt1MuCmnCOKR>-FN?avNNydZ=MsAVL_>bM zl9W<svuDUWP#hik!`1j*Axc;l%&6qs2_bmgpVklkxiSV8u34QJldF z(Z@rQ1JP~wE={a{>}z(j0yY5MiX7A9e9kbpwK(Q7)vd-ABvhspj(c1$Eg$^A+{AIc zW6FBvjM^-V>xv&+k})&>4R`w3fn(NarJ2iz%-$Fjyec}jID6DmNvvKyqV|c{C_wJQ zV&5Zu1F9G8v1&<+qzI?dD#>!W=xygR8>{CdpGAuR`nWV zM5qs2U_!Nc5h`78Pk>giz$?9lX>_MhxxR>@_il}j*(QELr<+?hVEC~9b@dzWUnO4b zT=l?$`40-~I%gl=)pCfn5`<|r8?E$E>Q3EJ>PpGzUsdWvSJ3Kv^)`*(scBgG-3C;? zx!~Ts++7huEeJMO7sVr}IRYl8_^@Dy)#RszcA~eT3*mOS0S3b+X2V_RbhuBg{$zCI zFDi9enan1J!TOn27gk@cx0~fKePw+W75z1u0Q0ov@2{GsF>7@;Va_@L^<&1JXc9LaqQu2}#3p6g= zL_6qb>JM7|uwG&PdsDO8OBHCZ;DNm&3S-ny*tnS0O+qbT(vvvM9`(k+@Wo!)NUT(jw9AGvzg?tdPBG&1s$)_?Av zS-$-*-|t)_R8ZQm^ZTzKhf4O58YUz{iDcXxE@ToJ-|fl9^f9nhA+bUU`w=QQ8?`$) znBmC^?ByTn(ilxaqQ90#5YZ+1g^F5@|9e)=d)oJ{XI<~byxYrVx5ftALN#NJWL&hZ zJR*?eAPo*$jDO%?PYl2(kafL#GZFeD*9zSBC?<(BT(}_oLWM%NnZp3X1-lU-IC-aa zVVW&V(doGRCyiUMU|i+K7@$Kc{(fhJP$8_@`TbwEm(Se&&qKh*qlf>wdsg}5tWQVi zSMp8aYnXpvWFS^QQ?M9jwI1+07koerClid!c>_Q)vCe!NFf*#lodCS1Go~VBFad;7 zTSow(%aU)-Jw1N09%HdVDN@$U>oWQ+0wO~eu+Wxmaq*Y2Z_WC9Pe?5hXjhwAadRm(;B3l zH+^7tHU-7GVuG!@xY!`k5aq-JvZ$LFZJi`eG`JGt`}Be+b%D9YVMTdy%;tS=+w}`q z*=7y)rrFjb@Z7D6$=$w{n0IhY{;w^`b$v&aWM!3WPQ{=z1ureZ{2 zJcI`~R5mnJR<2&%dG2T1mgsx2n#H#T;}Bip?faj)4ibWrZH$6zb^t5!zLLhSTKc80 z}}^dA7vLwC&N8`Vp5$U7~>C=^LA%TQbX5?*0 zJ;K`Qx`C2_yGjauB^Och@LeUJ`bxe;$p)FV(_PyZZ;4kgmDyO2_Omav|=%apUh@RbIa8;-X!r8nm!_O>~iO%ck++N|EqsXM~7roH`j!G=he5-cX#tXaW^uvixf7Ht7Z z)^IVv6&%=iswUFVAIA3fjtlK=5cB~(7grcFJvIJcc{- z$AMwr)>JfJX$Bm}0qKS-D;ggY@S(U)a$+^Y|6Tk8qkFA{CT`0NOMUEX-Jj(tR<_T-LdPNV)>xE(bqPRI~rJc+TcFk5JVHO@p_x-j_d zwTJ;NrccE;<8+as)?uN;Vj~qLNHNTSC^C>qO-ybwUuHIQFxG2~uYP>ZH+o)q(AM2Q zpK}z<`91+1p-qqueIpC2K<%cr_YD~~sbcL$y926Hz);VGDWwAk4<3+LC)NG+^zqkM zKOO1%@aWaA1!2A*yzut^y~+w{_0ucrHgCN(8!|$D*9|3EJ_va{fUpx!MtTxV!WUNZ zg)Z##DGSl!tC4&5VRkYam6=KJc<Ao=kDeY3i=lwq`B2__#+4|s_ef3I}t?#VZnFEU$vMzD&1E34!?YdV}>tH^R zzTE-uqRi^v8en!vhy1_9m6Ywjy!^h09h^B=EKjQ{rK?um-KYd{|aN`|4%Bc15J6MMR}^e*-o|BMm?_(gxUx2Y6h1oxg_I;6Qr7 zB);UQIiQ!1`rDWRNJc2EBE*^vENbFv8fOJi#F!eKWMDBli_V3@8C5D%zZ%yYQ2$aIGLk}+=1!+l9AqsM2?S+G zfq4g!Ox(ZF&}v~mhDN z`ch1l-^cC*ydKDWPi~)t*oa`8UPq*`$X@=EUhEwku5S)zelEd#6Z$0d_IH>g!(IFd zrI*7TrbNK+CBvNJNKN3x`m|RlVbqPImd{7NDSVn~@XUdkbKR5}M#ikzEQsU8O@O}$ zkGOH0KLb>}E`7o9SSP9p-a)NpFvXnONZ*eO2=v zYtK)Hl`jU~&b+NOCYoXksU1|Cw{tt(0HFrA{w~>A$U(!XQQ~oRx4NsGZXZmy{Zb1W z-h$$70U}Bad>vT}=+1w)&?9`H3ANj9{T=lSs|Ty|%IOqZ2^EP#Iw!*SSgQeKv?mc> ziOR<&$wofLp0KvbZZYfqB!k{xr;!kwP7JwL<5K@5ZLUn05(fnFH2A%wK@4Y6v>1Gd zC2(;CAne0rNe~YvXv18JaB_&&8qgLfQ)TM6lw`m2!odw6ez5w$OXo7Epk8heRt^2l zPy`ZH2>UuaknLOt_`0^L<)VsHqxv8SsCQsOsKZ}R<@hL~`93D}AHDwRNB*ABr&oMb zM4-b06S4#!uLMKy1c<#H9(ZA~eQU3f!63R55&(!4O}EPd96xswE?Y6pE-+&hY!pjfEwceooHlchh-8Ur~~QF2WWbV;Me^8ic1o! zGsEImj@xxY{ps}P10V00TCb^`P`hn%#gfN`f96YnQr^8?3*d~XU4Am2y*-Sm$@LsU49MBqNc20v_t5VI>H8j$me%eLdwAdzC) zFfQo2Gf{kA0bm#q-i^!3^Q#M5 z@hJLss`LH+(?WAnWO=?$Grux<$CGq#M}c_CGic*1K%A&HiW_kVS|o|__y^ty|F`u& zx*LXni`SjXGLwB7adsaE!L9R9U^q))254rAhNmgx3f{0%E(=@f*5{Aqmu4l8NYxdl z|Mq21S$2vu$)eTy7o-aX^auL!;H<=q2KCL(?^RJv7?hTh6B1_3qeYmTS;9?vMm~jc z4u$e#(Ff^7bFe`d5T*nfLWm9SDQ7Prb{gY=OxuOCSW|bo%hAOE6ZtL9f`UAH z#ZF9tI;&`a1?B98v)*RU-eo|%OP!PQ`u5Gs&F-iEFmLXxx$~;#&XemmKE8e9gO6<8 zqJDkk#g|$SzjTDn67UJRRsI$xlz|?X3E@||ok5*e@{^fb0t_Tnv6&1JicqJl2sPCi zRs_I&!gLkpJzw-B166hF>5va-9&J*q)VC1* z1J@FfANyc{Bat86cM3?or!cN}Y@{nRGdJCo=nA#vD(-af?3UbgS4;0~r6qv0gn9yY zr1U;ns7tho5!P5Sm*kBw5ciM>l3|@8Dna>$OiIbce!}&u=C>IQXQU>rogbZng#h;> zE=BWR`#KMS<*pHc-H0s*td%?S(5qy6HzU{{8S{y-cRMe6sVgllo;YqyF+%Hp^13hO zxmFBcasPu0GAd$+jZU7Lnl~qT& zr^NI+eX(?Y@5aIt%ivNG7e6CpL*8pE;a3qCKi`SSBaVTy%+V{a%XBIr z-h<^ikwa|4fdYCXfQ9R_phL_z^Jii_Aeo)Db2k)dkoZp83B2#VJ8j(jUMgejU8U0y zwOJ0wqhODoc8Ldwst6_$D6G8yMA=C%%RG#$*SE_T=irPB8e zod+Y-V+%}IXn)6-DK*e)?4$V;`ns~boCKul*`&bz9; z3J9a*IPbu1T#dF$k_s7@IYI}>H^q%mvalWE ziSc&^hewCmaA2#VH;Zvj=YimJ(FYv*1Ijt`0Wsd6ObFA#_XOmYF@O$e%suu$0XOf4 zcOMkt9KJ13i2=*G(SP0JJEC*d4U@*SuEB2TTw2d_uTSvZ!+t5dH~R28dbwy=CszE(D;J#0YJNe9-kRO5hq`^#L``{AVU=vM` z9M%D@*pY)0W|+XAu;81y)M?S}d$Dm_A9>dv9&7{JxwgKOela1jO(-~x2F;nDzNb_^Q< z91JQPV8UUtaQGl2=0Z(m7H99UF@DnxSWKKv%(78$`gqxU0Iaj4{KF5+|DNSWpxydZ zb+}s6onxCrKXqNxXhAXJ&lgeRhw z6|umf;Y(fgtokYsyBwwV`HL?YtFd@YchJzt;TwISm_Lup!gyci_N zc!dV2SRg8C5E&lhE^s3UC4oCJzn>ga=OY2aK$Mqd;h55dye%o>6{$Y41FV z(|1U+R{~A3V2E(I(fLyBW8$v(mC%S;!A=BldqNZzGa=LGHR4{a2G%U^xjprgMPWJ& z*ud=t3AbvP-=L1hVLis#ghrfSa1I~&33Zrn&XVtL0f!{S;6uw$ySfgEWTr2B)QV)DqOa%!oz44zb2UcIvW z3HQOCQ|`UUrqwyUsg7$ESGrmbb z(MMsnbb)SR%b!OXahH(X+a;x-J+vzV$26VeBZOm?=w7lzqJqe#8o*%f0}Ji#DH?2k zeI*Q=*?G*$PfZg@C9RTH$?JgSWb#`6KwvT!>plz{HvYh;2}iKU0sD5$`e;OiS%GH> zxMfF*hEWa7>@smu1@GE$1s83+!HzYJA-z#g7-|SaJ$K$@HL)5w$3k2FWDWXpAD&u` z7GrUx;Ho!aw!?N93A`tBaT{+poBHJfY}+w`#4Brh&!*{?n{mvVCeACPK(OLFa5&3L zJpRUm55D>4gPY#$Jea$7*wFR4=W@;`CMPAG&pFrc{-H%{b3W*Y>*U1q{lw*)-gxr? zJWSt7NlH#;4{R7RY+b)|x!xCY&t-2II%Gq?b2*sr;L>z8=Y|>ijJGlV%y={FF>;tU z?4Fk+uf%Cm*S$QLu{lKGbaP+Y>o&(-tKOSRU&1?asCh20*`06ZwZIVvH4|UWh+g&a zQ_MfkM^WGHdb2p&T*a!r!!A*a6(BVt(1WcqI9_-XgTo#EPI&Z(ycOQ!h&HzxOD>%kU^bM9_HuKPU7Wx5K+BOjO>&%lU_u7rz+;ePG{j&KQCuDc6Iqskj zTi-9mgb409cScN1R;Ht_PHkL#cYp{BLBMG-z7T|84i{lPS%{wCpfNJo6RU;A>@8~` zyeO?Les2aSr;OzFVCLuz-SJftTL+ z1vpvoz%M~}$F;;p`gy|jN{a!+n6wxL>+iKq{wBXl3pNpCTB*UYxXezA$h(YA6spyJ=rn%lU^NcybYq+?9z`KI z?+LP&k6+n(kimCi(=iGe={OeA7xaO*|6d+C$4~VU%J`9W8n_^bVJioR;cymp(8r>* zU?yw9qRen~{TYv9Jdq7YH=hbR4nEbun3eZXyJYWCJ{o2L(YQbbnWGIm_%a6vMh_?R zJh_=IgLb8~37@F-K7G2~F!RePc_cB{sAZo38L$n@8 zVY;;i`dm%1H;6eatwc zC0>aNvPGrp4R97GN<@;mPedy8z3%M>95HJ?eHykjwlUA#gT0XtP@=sDc7cyEg_@r_ z1p5yZRb~a^&J5x}N>4RXdVYph)Co^6Ikq_MH@y-M_VP63S1r8x_P|3iQHS#vv<|D9 zzCt>!m`(S76s!*pUUy#T_~<{c7ZjA2KSZ;(eok!z2ahVtZ>d^*2xI*7{uSQkfXZ;v zw;T692UM?XYR{5Sf3>8Lm4E`(ppI*BaQ6mZor09~^WZD-A`391)P-&IFXUIi*`PZ^ z(3Gf#309zx>*aMCPzY|SU}tnPs^AjYu6oYyqHWuXcJYmM1@v$t>IsrI376s27)r)M zGYx?B5d@CMEHtpmQ2YQ4)e$Q;=z@?pBF~OE59QAp`BO}DWj_wEjvz`Fn{uGXAOjuk z-7>V-ssOWHR2;X5Fq=Qdird+7z|Up-unbFtd5|Cm8UtPWd}~RDEkrj=Z`TIL8s(Dm zGWhOLO;q%l@eGhj?jc*1}y6L|(!hCs?}a-a^F1MJ6F{P2?z1V42V zNH!CM9WxICCMe@@NJizkcxGARqo zN0nFD{EMxYv;=n=MVz`oYosEaG_oHfsv(~I04@=-AFQC%2&gp3G1-vGg(8QK*(%oK z-WF_Y0V)_}ypkLv0!(v*o7YaNVUEmaEY`^K8hLL%M+kcP`w^rxUB}wqke83&fyRV4h-h!d9nyD zj-C{oCId!gOO{>3EF=3Kdu+pj12jkV2#qsVO%o1wKDuc2qRu0AfC^F~t>MAn2w&v2 zORwuS!+fD(Low02W5d`Ue2;ov8*6LpYHI3)cS~lM2w!xT;j2>t{ba82t(uLXl9}i; z<7!{|_+2UspaY)bSQxIa1gDGO9e%0mH;C5>pY}W{nsi>e&bn1m05@9J@ z3&4k{1-1=*1w~+n=y4n{`)MpKX@#EBgt}X?LfDg7L1@JfKghzyHU;Y}4ca#Qak(Uf zsOzzYSi5c5D&nLv8E1!cv6Uas!;T)~he|Mcnz^!IU(!YUguL+J`opdR>W7a#w*SXB z-@CC}xY^lootDviJJgt}Dxpk$PaVe(Bl88HV(h}9Ax`#W;%qv2QsAtl2(ze*XbFvJ z3D^;OQulfvy{H$XOvZSdBrC)$#_OWwc*Rx{r3A_OeK5cD+{~8{->a|sAx^+$LWYI&8!airBPKD$~t+pkE?2Kuutz`kNjg7(a z1ASqx;<>?(jjS9oDZMH!syKPru;MS&>96znR%VzoR& z0xaxfB5=-TS|hUyU~HH)<~=#dPEtHLMh{1Y`01MbwSob^G?QY=vgvOh`ooT#>0b71 z(;V{yA_m)$gL>v8b#Qv?K0oRH4DSI-qS|?*{^9la(qrly>oPK|e;hOGlXJY(aOjr{-#v!k

0kT7$RE^?{#6a^hhIGV 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¥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�*DTDx+iMj2VvIIm%1 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%0A>|?}N{b?0 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

@-maFlA^0qKrV3Edh=rr(aYE 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 literal 0 HcmV?d00001 diff --git a/website/.ttf/futurani.ttf b/website/.ttf/futurani.ttf new file mode 100644 index 0000000000000000000000000000000000000000..0e67d78c0237c58132725ef4159b74d42e3b9cb8 GIT binary patch literal 38671 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 literal 0 HcmV?d00001 diff --git a/website/.ttf/futuraxk.ttf b/website/.ttf/futuraxk.ttf new file mode 100644 index 0000000000000000000000000000000000000000..b903c64c791299b59643fa4ca9a54c3793602a5e GIT binary patch literal 40024 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 C-`)8D literal 0 HcmV?d00001 diff --git a/website/.ttf/futurlci.ttf b/website/.ttf/futurlci.ttf new file mode 100644 index 0000000000000000000000000000000000000000..0c013eb03ba1aa159d8d20ff18acef977fb37cbf GIT binary patch literal 38190 zcmce<30Rd?7dE`tGoI->oPp^80*Avq3J8d$9C66Z)GX(6&LMNI)U?Q~OwF*eL^Cxr zBQvEkLo1UeH8Z0!qsgeuv@)}tfV2JX{Txtx-|Dsh|E>>1kl{Rguf6sf?t85jBgR+= zyNk(ea<6N1^6nmU<(2qK6W)9F?$qPD1(Ux_W{i5^--RP544<5kceDWizK1dSo{_iR z65n%6-x|hL6TWua=*eRyNX|EhGp5~ze}6XS=9#013^E;L%rtpuZ}OD#J}-#@^#~HoH|kN&G7kxYR07Mn=y=mOc;S+}U7&m6@E%8_0at?1r=gx8Qea0Fa z{l-To1%H)=Vl{XXio(0r{CfBalJJ*!zxWM5=Wx2*p<&?>k)EjNm{zfI@!kYqVp4KS zYFc_mW>$7i>)gEjHU))6ZHwDoc6s{_CH{`3ojP~vdPTP@yIYlxNU(@H>>-zTV zKVaaX!Pnm~WazNrBSwz8arBt6<8B&%^Mr|P(&Q;qr`>YvZPRDWynWW}JMJvIYtG$s z@45HBdH2s>u<(IJ50T9pF?QiU;dGoEe-+6cEuHEmkJ@4=RVBd$e z>?8K^C*oxk=_dRg${di3!tP|}D3`9Khovv$+j$d?OXtqvyYcKve6sVjbkM(B**g!Uj4QAJ~8`uywlnrCU z*$6fgci=`gnvG#&**JC+8_#ZL6WB!dG+WFbVz023kj}$wIa|tBvr4uO+kVX0`V)|u z%9gQJYzcdveZn;MBzu}Y!aKy9%ob7+iWVUVQ;Zr>>c(l+sQ0! z8r#Emv-jBZOx&Xt>;v4jz3f(IWj6LGo6c@yGuZ8HCY#09u-Q1BJ6IXJi`~uUu(|9W z{QkXc9=ng-&lWIoJDy?>u!U?9dyv^-akj91Y$MwQ^}v1npKl-GCqBk|EvsTLH2?Hw z22H}-i|i$~9UsftYwQu@D~zpg{&?|+H!l8%@p(1d$|~44_A36RVZ9EVZZW&Nsk*7* z+yPjvVpBhx!&YjmwVhD*eFPCRZ^Q0lPhE~!;G@rWBW#pr1a*>@Zq~V@&*1%4& z6YLnPXJ4^8wjXQW3n{(>*;Zrql{ljcthLlpY#U@*Z9Zs@GwsHca!pw#lfFhDrgzpe z^b|c#*R%%hn07=vr0vzJv`THYR-u(^leE!Vdo4{%(!5%zW>Sx<2h{`WK6SggMSW4- zsIF62st>6X)KO}0HAl6mnkp%$lw-;frCzC3UQ;$J70N7Sx-wcRRlJG^yE-Eumk-PP zZEF^3KEzr^`qmo4!bX+e9EB= zN`V~WAc=^-l*OTDY1BdzH8`iuh9pWE^M{9px?N63h}~kdTFfS0Qx#bvmiZzysZ;!d z5es~!qx)rLzL?Hfr|V`^v5Wx`#RH8Gmm43dEa?NQsFUMAzLb@jf&Z$c^sLO_Uo@hM z`AT0PIjJC@#zapNs8|}wn|Ux zGQ5giGr${NrFLpNFnai?f!7Z3<@nA<=lG7`*?3UZ-@N+pQGffBYEo&*k^lPTlC#E_ zoUVxCtjrp08{VK(yjbLdE>&`;;p2vN9#)!_*(JV8_LaU!lG^FEPQFeHeE3F{;wz1; zvWg93qmf<4Rr!a<8|$v>7>&=xr&V2}tGW#wSf%<(@e<@K9akm!N~>(?ky)AXUB-6K z%G?HnsGi$VicP)fRGIh~AOC_RFDUg@(eTo)5SahE0agBC1I6>QGV!fW&Q4fvF3ZZy z&dPizE3>33G(C$+!d+SL2ewIP3I6D|lEyTpEliItDcfX~soQj7nq&@Jm zOu@SZ^Hh4~9t&2}RK!Q5mTee36op?CjQF zcfL&dvX6$<*49!{ZC$OJ(@<-xZP?9-;*=xm09!FEeUd-UL~4Q6rkL`>aQ!7E%*13@ zIK6C_6^%R&IU^&ZwV7N6ZF~u`FN*T>!owW0og_{7>J%rF#s4%#m4wSDrLnS>Ne`&r%xdRpD zYkGKo9@d-eld9XT*pO(N_p$H8q!XV}&f`nA-uUB7d|ikVsqVI0?dw<0tgbW{jo+L* zXeMmboA=BvZE+=zj}Qf#4;!!Hfb^r;mHrOl zA=t01n}e_DgaIwk%@%wu${cC4nIj{@!!9xmLAwxEszu?vTNz4IQc_}^k$5P{`MOW` zxy5I0NW({BF-mv7f45jlseZ+dr7=sc-rYTLFjCrEImp`HZVLP%Z9Y?1si!orvoW@@ z_bTq7<5kM4#@1lt{5c8bhkJ}J`5P}vR8El$cLZg_6+9HbN^);-of-Q4Xyg zwWWf>T#F_vt+O(0{ti&XTzuw@i?Lc!_|uXEmq`MXko|Ky3KPd;8V`iITXW8Jme zsrMT3`0TAu>DQmBuhioX?d}se;FaF~wx+_f^o7B4=MZz?4|B<+>LJ-x{Hy(^wC5js zp4YbZ^B*_z?X@(lU0LSX36trn*I&Frp8xw{o9Fk#;@np^_FlbOO0!aSNz+gfb0fOf zi*Wu<#DUrVRF{vS{cZ{)ufuN9A`&dHXR;Cz>V^l?Tx--=rct7CVOx_oUV&?qkwD-! zd);1=z4()t=n}hYBjKLb(_^Gl;oN!M#?|pz{8K*n5U)#vGu>H9(P{k1j?>iTgZAE= z)b3w?ZgXtpPx4;_Cj+bb7kmqU1x}x=N|(l0`N_s^Pt%>$^9^a|?WZYhA*^pP)_pK! z7!0tJrTAMp>}J`m+Y~d|#GMkC$utUAS0lG^d2y9+USfrAf(0#%B9|ONDOwffG;RHy ze_O|QP|j{=_@i%rTe3f}X0gq2wrxYT+D+Tl&~p^sLNC#G@{(OVzD&rh0rqqrWEO%b zI?eBud=3lKy)K)uvLRvxA(HGOTBAkbPQ)4dQUdelmGk47GgOzDl7WTbM(1^qirT>9 z8Ip<{-H)bIys0(+jW0iY<^BAqG`*_JqZ=#6Mwqt$VRHng@I(B>yi&fH&zsb=+f>&0 zR@BsU-$nNGY8QPEk{mvMD7g+?^DmMv*hrF6o+u6dmecsMLB-@Evz1+nk4}OVg`Lyc)NWx*h4> zv2-;5wmXHFPG3dtWh=?whrfUCgpf$LDSga3&NuTSyP_$RC~gGJX*%@%PrQ#qDr;R? z^b);7y&b1MtbAeV+%<3A^c1guW>qEsIPf+e?5QZ`HaFU@Qu0JV=p(6QFlFJSCP=`@m;{bkwdRLM* z$T4chBQM3&1=cJv75`Bw4=}N_!y(>Mx{E$ix*EzMvErsW^*EmEMn;wGPg2O635md; zcwCa~4#5$G%kaYz*=U_9PSq$Ss2}MWt)ZE6eqm9(Gt@#*5^q9^59<>)qyxF!;soHG zrDCZkxmTMW{*GowW!pRRBYfw}Q%w~lTSC>lhm5*+c0tGAZdrLlep8*js>%Db9{6|| zZ{mAL@`XI9rm0x_Y9c?r#yXaIQD1uSahh-XjK9O567kHrgK7@6THGj~KiWxhgxT!S zNeRJ~vTID87h;2JatB>gM(ZT_Xv7S5@+Bmv6yk1qC6nu+UOmQI77gt=N;64L3g_kg zMCG{26Grv8cT{Jmb;hYv&{S!NX}Wqw_#8w|K7Wh`3(nk<%>pUuh8xuG(SQ$-**F91PF@6rIO*u#3lgTNDGASGZs-p~#DLzHpr&wkp2k+tUl$|M=W6gwh<*Jg|C)vUf zR3(sy!eXO6*jjFs$IR4Zi&-U!h}MeGDweWiqUBYVOjVQeg`Oc0g*fx&a3w;=#Z9o2 z9vVv#u@XEN?7YvNm{J6ND@=s8;bu!Ig#|8_q%^!;Fo)z(TT?$;I`8Bv%gEO^J@MX* zxA^iyrMo)vXExQ&e)-ll6!Ii5-_}&2I5KG<^|j38OSNHr>JrAPa}O_Ce{l7f5u2Mf ze#b}gACmcWnv?nY?wfB=ULx;Pl>PaH56N6PA`P3_)Pbqg?c4!V1LDXKpc6^3W}Vpp z|J5F=q!f3c^gPL|6uRN0Vl7fZak@jxE9_|as3fz`R!pg3Zj!7J5X{up%Tt|Nr`D2( zs>39wmPD^u;}uQr3Q45Hu$2fGUWjXzAj}p_TcL}hNZdb&MFhgIc!fA`pYcN%ex}e> zSOmon)h&d`v{3PSms~NXB-!S(Tgva67C74J>+N*8Zq;LaW4ABlJ2g$)Irq$0<=SoD zrG0NHiHo(`=R7bs@O$bVFW<3lj-$ir?>V=Hn2UZHPwx3|y6+>7{>A;d1q>{e3p@%Xnuil^;V^ zLd(w`G!4O>FaygeWL^C2RG-g?YzuO-LM%*kyUcboKF^E`u>&!Ya}gG0lf`C{*QCf{ zYO82zU2X(I_O`h2!Vka^KwPW{@VDe3NpSD*G;<*O_C*13Fthnx6^tB&%`@urRBTDjU}O8lB~AG`a&ofTj6 zW4Sc5mXGHnY|-7GT3D-hdx-i!NWJ;VPrh!9-^y$Fyvl)-DW2MOZ?%W+ptdvUqp#E2 zzfPeK-Te8or}@4UUnMuO{fZL-$J)o=nXe;9BRX#KDs{F}*ql(mjbz(m_y~>E;1$nC zWS>GxU0`1|9k6a`8b3sS3wc2?uh4SwJ9ZZ7cUtT=MlLgLQf&^69O5>WWVZ$)0%IK> zMG-ozI%&E4`6pZZ%F2~9JJ<7o%^{~+5A&Y`9|XP$H2(fO@6I188zecT9m)nJ8#lZU zj6iohAw)bOL>Euc=y?QGDmjJN@dP(>wy{u35!|c80)h6CwN4YStiSEi0o(Z-2nghQ z<@3}%U){CvOk5iIHmO)s;)N-at-yt-P^Tp5HXRwrMV2|J<3t6seBp;4IyKt4t5$C{4#g@e2F9eo8>oYFMUywg^T3=`TXGy7#&M@wFbGd2@kNs)Qysq!q&%`-Szw&(GAoAL05t`kp4vc8pe}qrt zYM>*xgx1oKpI1>=0{BQ0B4)$mt1QkRA$yxMY_mwQ7h#joG((<9DW(Cp-hB9Y8b6v((u02u}B=0a72kBt}bw-BxuG;6{kbefq@{L7JjJ6 zDv593fBlXn?Wv9R%sED*=rL=ck$)HXx!Xvd_Z}a~S9~RT-+APkcUQfn z(M*b4m+|qQTtrutgWFOM8=@gH%<(5l6hcX6tGLn3ZZ_GPu}uwz#5%&{z^!h{xeUm} zE3!c(hXTJqq~uoDG`%gQ-EW#>Ndj_Fb13al89!9kRGVw*e)d;+N)O4GOYfdZYiO#G zODM&#C+GIz+(mSk>(7vqM1~rTm@!`SsG5@;gmlL2gs_1@h`ej9IUE+cm2v(sE4W&P zM&czTnULZRk4S_@NWKIefbjCPKyTh~dk3H?ZEiluE5AK`rmX50#8vTM?AZpa;cQc} z119z9k9cqX=$C*LpR?Pf4C-)DlKMzUQ;*BjeR9dQj@ePw-c!MuljL@1=Wfj)pPLY1{d?tKP;fe5&qQimjF&l{Pgc zE}=z%gOhgcKwLl~d)0Sh&Bk3+3~7=g<1R9}r;!i^;VvU%6_-(}RZcaG;D8yMko4j* zMu_Ml2e+UbZh;LEcM&V~7Z+qE#Cu#8lSzp&E8ZlWQH(dwkU*YA3h|iNqyY`hq;=UL zq$R|g3z5*3=z~sl{w!5^n zh0~wh*um-e`s3ZNdY-xKqkZk9P>tmK7LDD!nzuRNN~W7=+=fqw)O~&IDWoG`@w5C7 zE#a_v&ghzXb^QBR`I{CR+;IB7$p^l$@+JJ6u;rx*ul_WW(v{M?=>{s3GL|;2YK49FVEaz;S=}(kfCM~lrwjw( zpf#-|MGJv?K@|{_8$b#?uF!$tj)PXZ5OGF|ro(0-`fk<>oivZ5V&T?Zon034+_-su z<9D*(ytL}|pAhB`r=?XVrr)`5LEur->b33n*IW5Fyy6(2doQ`pv{u)cMq9w;W929nkD+9LnG}Lfqyd1?1`{j;ir~3&A8LzK4GcC zQ=j*F2>1&B<6j5+k61eNijkTrWDZU4Ibz9>?qfBR`(Bze>be^i4ZYGCIbfRh#n7v- zf9!^`Op7hJuG!~n`$zN{x^P6-_T#%5p8Sl-W6DLo>G3-y9pJhuD_4M(Zb>pl zpjCu`HH`EVp}ITm>|r%JP2T>3{APVqePq+FBSKPDQg?ledK@b?@>Y-lOv_dP`%5i( z>y_~8EiVZ{=|F4ou5XDsyU43C@7eij>hapzK+4{|;wJVxcLs4%^Qv?yxT>yDs+N}! z0j3TLs(_00Io>m;yjo<#39m9~Yg6eFInE;&)gzlOJ$F!#!%d6;q7fJlpuCGRe0fgA z=I1VJlUDo3RSy1}CvgFVfB*W9PAmA4JrntFt3vMYH~5B-yGHjOrX895CfR;2`Nhl! zmzN(U?-O60+R5+Wn-7=+;equx+;U6bo(rd8lPTv8ST@?)gC`z}{H|B`%kA=YJCFaMwi}DF(C_EyM1utoWq6;&n7A6+iJk{&@=X^%pK~6lLFTX0;3gaLp zQb!o)*FUMB%h&N6d56RN7jEHmzLA}d4)m%lOIlVR8Yi`#^GQ@^8uGi`3mP^{xO)4IT!+)WQG=MQcjxLNg3$z~cjM4d@~O5RPq zew?dS0y&H0A8&YyzrY#)k*@xEGymd)@h<}CIZWyA52i`di}Y270uYw*_g61HhgAIF zBeLa_UiZKvjqvt4O25-nP5kKY#?upzjZ5!oqYP=)*a?d_eAaj?FI&&6BDMY7q4IcB z55Rxuz_?QVt$b#f3Q`=JSu!)5BgAGlsY9T_Duo4OIsT=xYO>?}q2e zgvO_brih5ZOiAJKa4ku0D2c3i!`!lKl@bFpMyqUTsC3CTR36SY-iWG%XEkzo$;BWisiCG;0W8c2j8rQgnQmIww%efWv8Y&y}CsHI))Y#as zcfkr!?`BWx1(xh{k&{AWLu{xx0*DhICnK8XiVBf( zN67Gk9HUgfh$2k znOIqf1X2J}HqbI7mJy@?42X^_*6TGJ21dx%1tTK~fj)+fwON?dKCAusFJKq;^SRP~ zKCS)BXI`AwJ}NmOYzIGLbFAi1@q;g5Eswp+f8tN@m)^75Po5e24b7v{$A2aY%sN9T zLNcNmtrFT`Wm*1Y@`=pC3-T4tGss+=r`*jWk*T*NoKQ%ij=?{qRU!(kl$It2#_o`w zNo^{o!!`%!LE?c6T?;;^8lRb=^YIrwM^a3}Zi_Tp9|pgvkrhWIeENk)kXD@*@CP4o zgx6nq^@dXM+EfG$cnB6eUGSz6;mAI`l$I!&qv8b4l|X4sON`YGwN6h9C&jhW3;c#M z4P8L$;1v{%j&KOHMp2Z+yo$@MLX{Cd3XL%EV`R5VskCE6+U%Ej<2LB!IbCU$6q-Kq zE8vvKzyh&+?>!6nliSkT=V#hX%XTbz`ns$FK2jSJc#;3iZ#l;n+Ua)ce;49y>k5je zQxu>pH2y39bkZ9K12Z@B=lIS1ib?!8OEo-JE9%{RI{HE5bTa+k1dCxQOtzq@5Lkf0 z(_D?cv>Xh0nqU$r>;*RFb?XNas{l(WIw>SaaWzs+jW7^e@mWN%jX6qf@N^UyA6SPl zzeU)g2ZV2Kfp}3)?sO}w zYPNv|#;OG7g2+Q6b1y&%8rhqlV-Wjh32?Hp>3q`HH;txOcr`CK{Sw@Ey-6-XfM0rc zqvkn_Jv7{}&S-v;B62f>yQTyMT7uZkMocP`6g=X5FfWo`FTTY~rB!K7r9uvWoHCRf zk{AN^8XLh4&-VK~PFZ%xnIp_rv)M+rIEU4&xFSfFq|Fow#zNrY8RDP>QUp2^S_hXZ zdkbNVe9$<+$i@e+e5S!;O0RyIZs>e+B0pm9kec9fWW03lOrN73Q{s}78?WYvAiaI> zOQR*Pq96GE_+G^S1#X*cky5}->p*bx!=t2#d{>cn;v}>nVbQ~V6^AK5f*(CahfkSnX7)Fk zBEp4c?3a$oQPSm)mhs%_XCrKmg2qPzJp!josnc4-EI_99?TGf>sFeeAp~Obxf`-KU z3|olco@r|=$%qHjjHSQ?07v%%WtW=q7r{HKNQWUYZ@i#R@i7rmzBalYuNu5|;~Kx3 z2lqrJF9nu%Y)rRjTXJjY3F<7hzwL^{{5Ft1A2#SNZ4%w_i`4V#bAbTADV1;KKP(8m zB?EtYk4DY7i4rqsioUX7RWAx)1unv`PCbSKt5clGshBVL*@Y zbNv_a*?d92hGMI|@vWY~4V-1KK5ED@!jPi}6^6)~SgSb5k(Bf_M~GE*XPVQ~;zAuE z7ARn(Zca^+)_5Zo%}#6d9AwUULjPc41s zY2B?0cZqCKo&Py+9MP^@f3rE3yc2HT-LSg*q>h&KsD|Gk{t2|Xc z{m4naS`D$r@vr%(fAF1w9Ny$D=5w9ae0s5*Z(T*t(U`F7C?#;W)T%L>Zk4*w!=KAd z^AKMl_2Tn+MOpSF9KFp%lj$8GnlsH(@Am8SKhTb+MaCUHwV^6 zHh9&;4IXg{V^4hdK*0|1*u?6g&644FO8kYf7PB0wn8T3*MaH@jfC$7wiAyyC5CD|1 z<}iBPr#m!!l~%-}@=h`wkO4Cmxq(d;GN4xmX=LOP;F%GW2!=@ycd5-tRzhNZhhB~I zk5SS7BR_yEaux*W+7~JO_2SLP?*Hi_n_2%9%tG%6n)v$HX7JO~Y4YUzOct8cK$aI? z+)e7Hwf&A#ugX=t{M3WLE-Xx|;(zSDC?J>W}GhokL=c8d%xS|#DBC1{o+ zutvDK$x!U`*_GjU0Go_*D&e{CY6fHj!~%3Kpi#vepNu3!s)gTJ<#6aT9(n5Jk%A$M#OCsQ3c>p!CQ30UPB-k_2a8SQDc z_7{F|fN)NAO$C8p0v{ZEU78_{m#vg}D(wyFGO0rTY{Kuy$ts;g*=C>5wgx^6T+vj? z>x5RrmzhK?5C)VO7;6Yht&Fk|z?4=|Q^zcwK)!1fVc2Nl#tb(v{3DzNB1Z(R%_Sn* zZYpZ3rEYvzts{CaKRC7<-z#_Km6TI!OIxt(S-4^6*@J4_Abv2gbUI~% zlLP7>tWm*AEbvxg=3sS-P(vkHnG({n0OQaQ>YRV?+Ag(|mPUf%VzkA>(=3N8e;)_Ho~Q%`S^aFHx>3Yt zsBBySWapyTOwj4_l)wikq$FGI?>S&g4)8QZ#PkNrq8jyhZE$WERsavuQWI&c0JJ>H z@+t%S0>eD0eP_IDyv=dKQ)ydjtl+RZM>}G?UZmfltB7vMHbK&1Qk&~4MI3|J%LjFi ztE7Y-_2$5o-H`Ycby&k{?BU$}Ca!Pc#n=OwAUTF~5oL802vsxhByPUjtIt2fvP`Ur z(`Diwm7D6-2-JcYJe9;ABSHEE=_Z4x(n;P(-@lhGWtgNh$E=tNdp>&swQMK zNiI?{lTberNp_$gC<{@-&7qcv@K6azj#U(6iBJR47#1L?Y(SkI&uy`OPScd-<)?S9p4v;R|8bji&1j?p19oeo;-(tW^ckFUC^`uW z{aIE@j0P5-m=0>up=PpsLXG+;E3MTNU_VlucOYa4laU`J;9)Hgb^D-P zh`)gei`)j$6o?$DhP1t=dHZR(X3=uz^Y4#-G|}YY4Ybi2=TSo5oA~&Uc9xE-Ui}$G zv2_~)Uu0f+ODVr2@Cm=aX0=i^_3e*F^MzqAi1fM(4gP?JCh%8;o=RAMH%LB)CHq@3 ziXkZ>$^tj2fJHIK*d^CmQz+yeYpmAr%y4grE;TtcJOb5z!5E`Z#CAx?)rc|kM%6r$ z67PIq>eKg`+CBX8+vk|9$L1cS_AjrxORFv0z+bCh&5s^$&}=XBs`0>Srk>eO$@B?n zJzF&42;}L8JPl3oq=!J13MFI!(|{FQ5r=B5P@pqsVq(Zb8$_g>D1Ui^z8i z?Z^Nc4fSZ&4wrT$aE71qnAd->Z+&{Lc97ClebNKBJ$_w* zxRzhn7=(rGYOZb)(;BpHq#leYfW z(aAP}C{tPlYDB}5M2don!Z0UOJZ@m(Ql;HPz_2Ub8iKocAzs83&;q?mP=S+S!+ z$SBj*nPs{LivPUhFm%9eRKkf!M+0IiOd}fd;hiugPi1L;Q2rWDx@uEAZ4z40W zC`9DLFa)JbB014>VYmHiVsR^?7=&>sDOCYJ-dwTz*nVlX80O&iKjNANZLUD~+9 zRJNgse>tAN{|vuL`GBrCL@O52&Ef!1gld?MFqY}}N#x8@#BP-^WT0dRz3sA+gtFsx zx*g_1_-&DX8sD6A_P7PlC~ayu|BQHlM9VXvQx+!O z`@f&i4!X1b;wSu3V=cMp35E={?l2bykb`0D> z-pO~Er28qq>7+E0SMgBOYTh83ZMA0{@_?qEjWgxrO%6ODcwVw7XJ~<2?5N0v%$lod zf^dtxGjKZi`@iR$|1EO~^gD&+`%@AkOp@YGHpiHqW{X8dCq;5x4E!l{*%2bGMKR-f z*Cs+VcxW9eiqkfj(us5PO^ zxLH3j*4vx~1Ov*TO2YYKd5DjKimGYq!9)C) z6OLVLUdsGdEQ9PZpMUw}Cf%y;Ysgj4Of9Up{mxG}%rg~N*6eyV^D1Fb1x2Txf#jf{ zqTpCb4u?UtB*EaAANu{P4c9=r&Wnn}gxfIwgmhQ%*Lh74~2a1g4DSllSmRcaka z`c^JZOSPD9D*NQqrhZa>?Bmo2mv3Wf>bPgmvFCV>-JwkSzCUd-EkR0hihugS+n-yc zk$Mq1-=`O-k3BFC_$;snNcBlss#t>c7B|(a$FW`~%J%^LT_}Q$aNruFSUNQ5woGx* zn&tvnMBzpWERqM&`hg$tCjY4bwu97C0gJ*OE!4E^OPblP8_dy%yT)9oe=VQeMviv> zcFU^4ZJO$>1Ijn3fnBfh+j(-}TldDMj@o{s{B=4_p&LEbH9hGec|U)PKWR8zlnjf| z%ZTUozW3`*=5RT89(jKHX`muvup#Ys&s;yUz?NZGZyrW{ zo9g8^Hn}JA~&^FuqABR4cORGE&o8>xm2l+i*K zYjQ>r10izH)3!dNo0XPLTuHYKaieOt0{gr;Kt!(FfN-5>KW8jN&m5_B&D zubd2MFi|+i$V8_R7NO3;?4~tdcx{Hdfwj?AKmsBL0W>4dvIvzH2BpG8aa2*Eh>B!H zqPP-9(JAbqSDti3EsTIyX6%)6<#P?Kho$&oxq_VC9*?O*MP%d|=K>otLkMgF8hT_3>YiAg!ONIOw3I4uLm? zq;VJFrHc_PfGpRO96>mMEMYbk=4+hg;t0WTQP{4_z-&YXGa?$u0={I_ z`}p1DJ~1Nj1usBHih{@OFMI>$e#5c-%5M#xz#@7z`sPS%Z3=QQ@n9>95?PD|7=UFe z0NsnA^Oo%2EfQ~+nnKY{U-9~K()u{!?t1#upkF%MdnV1Iy;5Ji<{aR@Ie5)DM3@ON zq3EITSe%v+0jgRMnYm(sE=1GI9utav{sjBNq&b`6UQr3{FrHY1AIV2OnF%p_(@}mz zB1JXD-1fxgcKldB(wvT>O{dzE-RUfP^JlRZDUEv4=hUlsF299G2EKS5o1et%_DDt2 zsU3~41RmNU6-rBl&`YuR(O73B%kamAn_XBUa(WA3Ka{4MO)wVL0YDf369X2$Eg5ZB zKD06!X?+xhVS#EliVZBF99}2QzRY3oFz34n{<$=d|3VpkJ4Nob*H#RT~Emhm4^2eBTby8!F4G2k(#U|)gJQ=kqvN@&gl`@s_-I0MmBp#FD1 z!GE_BwCop}7tHJBBn{?XPeMcj^CK$ckv|VYA<>1rK1rxBER9l?+xV6;I*{X4hBVG^ zXh2|jrUvJ{oY!dR^<`;L+E(#q8~XlYK|)rAr#Q7VN^(mZqk-f|Mkk)YkVM4TLAnfO z(2_1gfx`^0R2B_Q5gOt(iG)t6+xmR;=-3-ie>29j z=$Y{mqoeM9c=-L3bj7BOG*wi3rtjTh8^3&}8kh3IvcR~lXV>28x@t?MH2t|f{d~^M zr^|e^z0$m}?v96MTgsl@*KbxJfBnK}tn~=I@f`Gby2VLAg(*#PI#IaEC_}g52$Vh` zT{RRb3OfpiC`uM3bcIAnsMbtG9iw~%Spd8C`IC!Fo_KZI_dL+^8Q!qC!;Y=;Lo~d2 zVxH~DJpQ(=_4s_5pFn>+-t;(oH8e@^#-+u#iU8s+$a{g4 zGDkO`07|oh<~&&Y{TCFzh=ZFOKnhW)bpG?drS@q|_aW~426nw(OBpI{>p8-;pij3! zS|W7w?U!H`D2UjXHa+C9v9EYkxR>|~95yM{Yz~De zqw-Sip}Mh8kkDd>C?YaZs|c|}u|3N}i5Upka)PNuws72kwL9c=q3Ag+ECSeWl>8fe zMa=)V`;%_$J=@&B+tsseSM@M0**xRj$%`w)PyNI0?jL{kfZ;dw>OHpl*#{@RbK9T{g?Id!mq*p8&3c}kXZGtwm=a8~M7c-{ zH!ph$d_c-yF!XXxU0@|}%8Pk=x%Wjadir6geIyz{^ZZF!N!}>MliCW;0D#s)8%9x5 zqDKaK2=!>)qUlELBH+NkU=PVF6aXPif)?f#*$A#?-ak@`m>gjDzPG4!)N6@3`Me?J zi@7-?CJc?~`9G*eOZR2pWREM!S-(B$GF0Cx1_`m#UV}@Vf`%BsC^o$;TN3=E<2?UZ zkeVt|fwt5kLn;uZhGAMRfsX{LVl=Iyg;|L95-G_GR~vP97vJrF$5qOcj0@l81}!@0 z25FgbC zH5o~St7*Mi+g)>kll93MbNkGHSi=g3Dfeoh#a9DL^ z5a3}jQ^JA+EfEKQiTJQ+e7tmw810bd{{|?Q4;okW|LKloByN|yqiPzpnP>gGEd|m0 z;GX(f2L!=;C%56Q^v*Tl+}DrEw1Qa92B+%OMb~4n?^hL1K*hS?~ZFDcT|y| z@2C<^S7_l7OTDqbe2o8r6>69L7dvcY?67@NhR{XbmD{|>j?KFGFZOuh{uTbo2wn27 z`H&vhyYCx-fFo_F^h(bWArFXvBeU1PI^ZG^f(*Q3+BAe9*WEgx+pO`hH-8Q{Q{e? zO`(*VktCXK-7d+pxNV73GdL`%Q;YMxbXmxM8=GCSKt}Ys)7HNm{<^w*bEvk#bLL;k zW8=*|MDW&Y+{M8g8`3nrnMgul>QB0uN{WxQTNQVZPHKgDLZFn;tYEZ)7+&a~7$qZW z`)5`uu#9_F&|Ck5Tsl=3jMQX5kVx=Hu(+oI@TkQ?93V*}dh)C{|c$+FQg5grw8*N9>n*=GR^E>hTkqiIzPU2d2 z;*EEZVo*>2ej}jY=u$QU)(P}()}`&FnF2OWMe7bPB2Fa{Owi?MF#F5RB*gg=jQ!}w z$#`2%Cb8vYn)?8aum2{zIIS)&~|->?|Ek$yfN> z=O+F2-ZJ9OpHw!rNdPoqs9l(r+OoN}!hANzwEw(0_eGiM#gXi#Y?rs>t8gE$T|E*p zT-QOSjJ}t2q>;hQ6>eh+Lb(CmW=uqK1g=Y&XA}kK4B(Nb01pR8BeHJoF7=|06j7D} zddA3qss&NNx6)w|ZVBkjI=>~;5wGX{o7cPVuU^j$+Od2 z$tZR9`Xe#1Oi|oojRu@NOBKC9%_YuYWyAu5y3?}6%V?)ikK2OF9B}^lWn<@cIDNsh zMYAM-Ot{0+{MsIeMHdn<-R>3=Xzn#?e*M2YzUC)7t{&{Z2XV3~aj5h<@{0%i7$+ol zWvQQtOrigkQ*Lc`+$|@dRauT8Psj#6onG^kLkn-lzZ&Q26cglRGCOy9pk~EkhoW5X&k^vQ@Cy`)>9Ou~~Us9Zeq%hGZfg(a* zDiT635<;U^z?f-eqy_)X5*c>;(wL&Ky1w>iZ*j<=GY1*5XzUccV9<1W1*Py`oEU<`f8fQGu62PY;8XsR9Ww`UKZ7X$zqlk}EB;|g z(kU8S&2#^DO)VZ(SOS3xgu(0O`cqougz-b+K&8kc1`&maS%kE#V;Lq3I{ zdic>F_({!H#jAVU`50Q3MZ+oKlfm*CqYY{Gx%K*T6!>>!*ZX^SWRix$0Pkfe=*>kh zc&;TxjKs=F^~GU;l)K21WX30$orgAr7$$Y3Cre~i3v*cH)vhekS|>|+IT=1>jipG{ zWRbBO7uuK(XRv38ctn>hs$ji>+Sh}$6>fThm^7uQ;KGOJ7dqRdK+Y2S1Vno+zJ#F% zx;DwQ{;{=RjZ-aM=Fve9pPsgMMCjVFZ6|m8I{xg++t)N+ws1tuhx4|!eLU5`t0Rpy5Ntcq=sgatNRBA2;*|g5m-l-Lm%PBn@nq=1UXkBTBLt7ggjd8Hu z&O17sJxC-mIVmDs2~K(lAu-)l(GxI43ezb;G#TX*DT!$0!#t$|d>P}E!ch?g`8txI zVqjkrwcLu^H@t7LY?3K<>s{0Tc;0-Xiof&vt9%EPFQj7X&6{tWH4Bph&uEc%Q&>IU zV)wj6?Z0`mi4Qgb{yVliOJDUK&9-KWd+;SD~Me|(u~1+Ux2pZP+s zr?|+hm!G=l7bPIyf=MVsryT3`oX;6LSg+rO|!HJU+O`5G`wMsiZUNT zmWu)>y~t?Q5d%QMIOCg!2FT!g)m* zC@_Ix$jj^?Ysnd+e^yaCcPj1ZFU-lzh_U1)m|rr5Gpz$A&1`6wr=skq3Pn+xEC#B< z7>Fr0qQM?Ll1{X8d*hA%dKJ2hFDB?0I`H!n!Sl=Bya;sALnKMwcm>Qc28MazNPM(r zt~5s4jsom~QW0H=_Freb$z@z^_#oLhA zZl{3_rGsc}n&%TrhKZ)>jLY{))`yZ&8dF> zhw|f(DNS|4Gk}5;!WPp&;t&pAjVYX6(|A^tmF%IEU4`9YB%rnaxr8<;&d;N*&7 zv>g4WXFfn<#xCl=9j6t7AyF&%qQHB6uWHeI@7ZEK$shUR1WL=c-~cz-o~5h5>v;cn zgoO@19Yj5J4VK8OS z;mnTneKc7bK{tGeNf=eA;uf7NAxP~n_qVYz$)reOC?^Kt3&$La3AU2zj%b<4ZcIQk zfEV}WEF2a^)Nkf8xM@u5b)y*sgUEcMCr8W>f{XSR*)Yzs_Jk?0sC=>M#QS8Yv6D;^ zYaHk0bC1>@(&URA|qS+4bT6Lpe*-_izQ4fovSxmjGS9=>k4W^b!to+a2AV!Wo zT?`jJ5AD!Fb8mGYqB0m$7VQsp*)*oO!!SQgxf9J4=hthPRHHH><>C-Sj>uhT95PE`~oViUZvc_@4pL z29%zo7##zc?>2+Km&C*eVGEsJ%z45er&sX!1R45FeF6hoNpnqsJJO_iP2Ej_E5z7` zew<0;9gd4x{FcEFdT+#~qcI6`HSUuYDRdq>MO&xXB)L_hO;m?xrFnp*r`n>-;pV)o z^t9BJ*qA5}nno=wq{J2t`Lr?4Q&bOQO@g%-6B1-}8^HsiOHK18B&NtIl$;_Om3%*^koqxT8H{@1TV&;@peVEMa_oMWl zwEQYw(RkYZ%&nv@TKY(~#c}_<>9_HA0ZcRIXG}}^_~EC23%nRu9yqaT_tIJX*dSWD zVLwff`$_LF-@R%!xtbQAz2dG_7@n0%m&v2inh6&JsH8U`%2w{F0I)X(u zB@ed1h@NlP2sR8{oOxn?XF>|}^97njI#N2tIz1uoy54MQ`Fyt}-R!C)AG9&PeH7 zk129u^Nu5evD%(`hOfBnGWoqe&gx^oB3!%%gci&~d% zaHQRGH7O_M@VT&N!?d-E;2*AbZU_1QO9 zV!&(Er^op7&sOgqv}p!L!k7?!H }?U~P4Hy-y42&XCXtk(hq`EIl@O5bjnOG7O1 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 VZd4i@)BUfYyS=82pGPJo{U50L@y!4L literal 0 HcmV?d00001 diff --git a/website/.ttf/futurmci.ttf b/website/.ttf/futurmci.ttf new file mode 100644 index 0000000000000000000000000000000000000000..8e7a56db5690a6a7e5cdd80856eccd5dca1c293d GIT binary patch literal 29261 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 G@cVD1k5NVd literal 0 HcmV?d00001 diff --git a/website/.ttf/futurxki.ttf b/website/.ttf/futurxki.ttf new file mode 100644 index 0000000000000000000000000000000000000000..a22b489955a140e76e29911ed4a8c6a662f503ce GIT binary patch literal 40452 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 IP7ad&FYWx-vt!u9>EUUV4b%TiSZxA9K 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 PUkkTx9r>rYeCYoVgP*dN literal 0 HcmV?d00001 diff --git a/website/.ttf/trebucbd.ttf b/website/.ttf/trebucbd.ttf new file mode 100644 index 0000000000000000000000000000000000000000..96a3611df35ef17a5c1b5711d96160cbfa7e5e58 GIT binary patch literal 56545 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 BJBR=P literal 0 HcmV?d00001 diff --git a/website/.ttf/trebucit.ttf b/website/.ttf/trebucit.ttf new file mode 100644 index 0000000000000000000000000000000000000000..95e43321fa83324393de94c7d91018c97a3181da GIT binary patch literal 62455 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 YzT*d%CZN{uJa`_Yb*eu&h7$ze15I+(Q2+n{ literal 0 HcmV?d00001 diff --git a/website/.wml/navbar.inc b/website/.wml/navbar.inc new file mode 100644 index 00000000..12524851 --- /dev/null +++ b/website/.wml/navbar.inc @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/website/.wml/nestednavbar.inc b/website/.wml/nestednavbar.inc new file mode 100644 index 00000000..d99feb0d --- /dev/null +++ b/website/.wml/nestednavbar.inc @@ -0,0 +1,62 @@ +## Nested Navigation Bar +## +## Based on original work by Ralf Engelschall and Fritz Zaucker. +## All errors by Tobias Oetiker + +# Extends the original WML Navbar + +#use wml::des::navbar +#use wml::des::space +#use wml::std::tags + +# the container tag for definition of the +# main navbar or a sub navbar + + + + %body +
+
<>
+
<>
+ + > + + %body +
+ + > +> +
+ + + +%1 + + + +# and finally the nested rendering + + + > + +..SUBNAVBAR>>><<.. + + + + + + + diff --git a/website/.wml/template.inc b/website/.wml/template.inc new file mode 100644 index 00000000..c1c4bbe5 --- /dev/null +++ b/website/.wml/template.inc @@ -0,0 +1,88 @@ +#include "$(ROOT)/.wml/nestednavbar.inc" +#include "$(ROOT)/.wml/tobis.inc" +#include "$(ROOT)/.wml/navbar.inc" + + + +# The Template + + + +RRD TOOL -- <></TITLE*> +<STYLE TYPE="text/css"> +<protect> +<!-- +H1, H2, DIV, P, LI, +UL, OL, TABLE, TD, TR {font-family: trebuchet ms, lucida sans, helvetica, sans-serif} +PRE {font-family: courier, courier-new, lucidatypewriter} +--> +</protect> +</STYLE> +</HEAD> +<BODY bgcolor=white + text=#00000 LINK=#0000a0 + VLINK=#0000a0 ALINK=#0000a0 + MARGINWIDTH=0 MARGINHEIGHT=0> +<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0> +<TR><TD width=8 ALIGN=left VALIGN=TOP + BACKGROUND="$(ROOT)/.pics/b.gif" BGCOLOR=#6c9bcd><hspace 8></TD> +<TD width=126 ALIGN=left VALIGN=TOP + BACKGROUND="$(ROOT)/.pics/b.gif" BGCOLOR=#6c9bcd> +<DIV><vspace 10></DIV> +<A HREF="http://ee-staff.ethz.ch/~oetiker/webtools/rrdtool/" +><img border=0 src="$(ROOT)/.pics/rrdtool.gif"></A><hspace 5> +<DIV><vspace 10></DIV> +# Nav Bar +<nnb:render $(section) $(subsection)> +<BR> +<vspace 40><BR> +<small> +Website and<br> +RRD TOOL<br> +created by<br> +<B><A HREF="http://www.caida.org/~tobi">Tobi Oetiker</A></B><BR> +<vspace 10><BR> +For more information<BR> +about CAIDA write to<BR> +<TABLE CELLPADDING=0 CELLSPACING=0 BORDER=0><TR><TD><small>info</small></TD><TD><small>@</small></TD><TD><small>caida.org</small></TD></TR></TABLE><BR> +<vspace 30><BR> +<A HREF="http://www.engelschall.com/sw/wml"><IMG border=0 SRC="$(ROOT)/.pics/logo-wml.gif"></A><BR> +<vspace 10><BR> +</TD> +<TD WIDTH=22 background="$(ROOT)/.pics/bro.gif"><hspace 22></TD><TD><hspace 5></TD> +<TD valign=top align=left> +<vspace 10><BR> +<A HREF="http://www.caida.org"><IMG ALIGN=right border=0 SRC="$(ROOT)/.pics/CAIDAlogo.120.gif"></A> +<<H1>> +<<Body>> +<DIV><vspace 20></DIV> +<HR noshade size=1> +<DIV align=right><FONT color="#bfbfbf"> +<small><script type="text/javascript" language="JavaScript"> +<!-- + document.write("Original location of this page: "); + document.write(document.location); + document.write("<BR>"); +// --> +</script> +This page was updated on, <:print "".localtime(time):></small></font></DIV> +</TD></TR> +<TR><TD colspan=2 background="$(ROOT)/.pics/bbo.gif"><vspace 22></TD><TD><IMG SRC="$(ROOT)/.pics/bco.gif"></TD> +<TD colspan=2></TD></TR> +# The End +</TABLE> +</BODY> + +# All the rest goes into Body +..Body>> + + + + + + + + + + + diff --git a/website/.wml/tobis.inc b/website/.wml/tobis.inc new file mode 100644 index 00000000..8646b688 --- /dev/null +++ b/website/.wml/tobis.inc @@ -0,0 +1,153 @@ +#use wml::des::space +#use wml::std::tags +#use wml::fmt::url +#use wml::std::box + +<define-container TITLE> +..TITLE>>%body<<.. +</define-container> + +<define-container LI> +<LI*>%body</LI*><DIV><vspace 7></DIV> +</define-container> + +<define-container MAGICK> +# <MAGICK ButtonSmall|ButtonLarge|Title|Section optfilename> +<perl> +BEGIN{unshift @INC, "/usr/pack/imagemagick-4.2.9-to/solaris/perl/"}; +use Image::Magick; +my $type = lc("%0"); +my $text = <<'sdosidufgtjseflsdj'; +%body +sdosidufgtjseflsdj +$text =~ s/%/%%/g; + +my $fontpath = "/home/oetiker/data/projects/AABN-rrdtool/website/.ttf"; +my %props = ( + "buttonsmall" =>["trebuc","20","250x34", "+40+0"], + "buttonlarge" =>["trebuc","21","250x38", "+24+3"], + "title" => ["trebucbd","50","940x400", "+0+1"], + "section" => ["trebucbd","32","940x60", "+0+1"] +); + +my %color = ( "back" => "#6c9bcd", + "fore" => "#14195d", + "activ" => "#fdfbcc", + "marker" => "#14195d", + "tfore" => "#14195d", + "tactiv" => "#5786bf", + "tback" => "#ffffff", +); + +my $file = $text; +$file =~ s/\s+|\/|<|>|"|\?/_/g; +$file = "%1" if "%1"; + +if ($type =~ /^button/) { + @filetask = ("$file-sel","$file-std","$file-ovr"); +} else { + @filetask = ($file); +} +foreach $file (@filetask){ + next if -e "$(ROOT)/.img/$file.gif"; + my ($q); + + $q=Image::Magick->new; + $q->Set(size=>$props{$type}[2]); + if ($type =~ /^title/ ||$type =~ /^section/ ){ + $q->ReadImage("xc:$color{tback}"); + $col=$color{tfore}; + } else { + $q->ReadImage("xc:$color{back}"); + $col=$color{fore}; + } + $border=0; + + if ($type =~ /^title/){ + $q->Annotate(text=>$text, + geometry=>"+3+3", + font=>"\@${fontpath}/$props{$type}[0].ttf", + pointsize=>$props{$type}[1], + pen=>$color{tactiv}, + align=>'left'); + $q->Blur(factor=>99); + $q->Blur(factor=>99); + $q->Blur(factor=>99); + $q->Blur(factor=>99); + $q->Blur(factor=>99); + $q->Blur(factor=>99); + $q->Blur(factor=>99); + $q->Blur(factor=>99); + $q->Blur(factor=>99); + $q->Blur(factor=>99); + $q->Blur(factor=>99); + $q->Blur(factor=>99); + $q->Blur(factor=>99); + $q->Blur(factor=>99); + $q->Blur(factor=>99); + } + + if ($type =~ /^button/) { + SWITCH: for ($file) { + /-sel$/ && do { $col = $color{activ}; $border=1; last;}; + /-ovr$/ && do { $col = $color{activ}; + if ($type =~ /small$/) { + $q->Draw(primitive=>'FillPolygon', + pen=>$color{marker}, + points => "10,4 24,14 10,24"); + } else { + $q->Draw(primitive=>'FillPolygon', + pen=>$color{marker}, + points => "0,10 14,20 0,30"); + } + last;}; + /-std$/ && do { $col = $color{fore}; last;}; + } + } + + + $q->Annotate(text=>$text, + geometry=>$props{$type}[3], + font=>"\@${fontpath}/$props{$type}[0].ttf", + pointsize=>$props{$type}[1], + pen=>$col, + align=>'left'); + + $q->Scale(geometry=>"50%"); + $q->Crop(geometry=>"0x0+1+1") unless $type =~ /^button/; + $q->Sharpen(factor=>"30%") if $type =~ /^button/; + $q->Quantize(colors=>15,olorspace=>"RGB", dither=>"true"); + $q->Write(filename=>"gif:$(ROOT)/.img/$file.gif", + colors=>16, + interlace=>"line", + compress=>'lzw'); +} + +print "$(ROOT)/.img/$file.gif" unless "%1"; + +</perl> +</define-container> + +<define-container H1> +..!H1>> +<H1*><IMG SRC="<MAGICK Title>%body</MAGICK>" ALT="<: print qq{%body} :> "></H1*> +<<.. +..!TITLE>><: print qq{%body} :><<.. +</define-container> + +<define-container H2> +<DIV><vspace 6><BR><IMG SRC="<MAGICK Section>%body</MAGICK>" ALT="%body"><BR><vspace 5></DIV> +</define-container> + +#<define-container P> +#<DIV>%body<BR><vspace 4></DIV> +#</define-container> + +<define-container DD> +<DD*>%BODY</DD*><P*> +</define-container> + +<define-container DT> +<DT*><B>%BODY</B></DT*> +</define-container> + diff --git a/website/.wmlrc b/website/.wmlrc new file mode 100644 index 00000000..256eaaa7 --- /dev/null +++ b/website/.wmlrc @@ -0,0 +1,4 @@ +-DROOT~. +-DIMGDOT_BASE~./.img/ +-DLOGO_BASE~./.img/ +-I. diff --git a/website/compiling.wml b/website/compiling.wml new file mode 100644 index 00000000..1f2d1aec --- /dev/null +++ b/website/compiling.wml @@ -0,0 +1,70 @@ +#include "$(ROOT)/.wml/template.inc" section=compiling subsection=none + +<H1>Compiling</H1> + +<P>This is for UNIX! A precompiled NT version of RRDtool is available from +the download area</P> + +<H2>Prerequisits</H2> + +<P>Before you start compiling RRDtool, make sure you have the following +packages installed on your system:</P> + +<UL> +<LI><A HREF="http://www.perl.com">Perl 5.005</A></LI> +<LI><A HREF="ftp://ftp.gnu.org/gnu/make">GNU make</A></LI> +<LI><A HREF="ftp://ftp.gnu.org/gnu/gcc">GNU gcc</A></LI> +</UL> + +<P>If you want to start hacking RRDtool, make sure you also have these:</P> + +<UL> +<LI><A HREF="ftp://ftp.gnu.org/gnu/autoconf">GNU autoconf</A></LI> +<LI><A HREF="ftp://ftp.gnu.org/gnu/automake">GNU automake</A></LI> +<LI><A HREF="ftp://ftp.gnu.org/gnu/libtool">GNU libtool</A></LI> +</UL> + +<H2>Compilation</H2> + +<P>Now you are ready to compile the code:</P> + +<PRE> +sh configure +make +make install +</PRE> + + +<P>This will configure, compile and install RRDtool in +<CODE>/usr/local/rrdtool-VERSION</CODE>.</P> + +<H2>Additional Notes</H2> + +<P>If you prefer to install RRDtool in some other place, use:</P> + +<PRE> +sh configure --prefix=/some/other/RRDtool-dir +</PRE> + +<P> If you prefer to live with shared libraries, make sure you add the +<CODE>--enable-shared</CODE> option to your configure call:</P> + +<PRE> +sh configure --enable-shared +</PRE> + +<P> The configure script will try to find your perl installation. If it does +not find it, you can still build RRDtool but no perl modules will be +generated.</P> + +<P>By default the perl modules will be installed under the RRDtool install +directory. This will require you to use a 'use lib' statement in your +RRDtool perl programs. If you do not care what happens to your site-perl +directory, you can also use:</P> + +<PRE> +make site-perl-install +</PRE> + +<P> will install the perl modules whereever you keep your local perl +modules. Doing this reliefs you from using 'use lib' in your scripts. </P> diff --git a/website/contributors.wml b/website/contributors.wml new file mode 100644 index 00000000..29eedc4e --- /dev/null +++ b/website/contributors.wml @@ -0,0 +1,10 @@ +#include "$(ROOT)/.wml/template.inc" section=contrib subsection=none +#use wml::fmt::verbatim + +<H1>Contributors</H1> + +During the long months of RRDtool development, I received a lot of +support and patches from the people subscribed on the mrtg-developers +mailinglist. + +<: print &wml_fmt_verbatim( {FILE => "$(ROOT)/../CONTRIBUTORS"}); :> diff --git a/website/developers.wml b/website/developers.wml new file mode 100644 index 00000000..15ba5df8 --- /dev/null +++ b/website/developers.wml @@ -0,0 +1,27 @@ +#include "$(ROOT)/.wml/template.inc" section=developers subsection=none + +<H1>Keep in Touch</H1> + +<H2>rrd-developers mailing list</H2> + +<P>If you start hacking rrdtool, make sure you subscribe to the +rrd-developers mailing list by sending a message with the subject +'subscribe' to <A +HREF="mailto:rrd-developers-request@list.ee.ethz.ch?subject=subscribe">rrd-developers-request@list.ee.ethz.ch</A>. On +this list you will find other people who are interested in the guts +of RRDtool.</P> + +<P>There is also an <A HREF="http://www.ee.ethz.ch/~slist/rrd-developers/">archive</A> of past +Traffic on this List</P> + +<H2>Contributing</H2> + +<P>Contributed feature and bug patches are most welcome. But please +send complete patches. A complete patch patches the CODE as well as +the CHANGES, CONTRIBUTORS and the POD files. Please send your Patches +either to the mailing list or directly to the <A +HREF="mailto:oetiker@ee.ethz.ch">Author</A>.</P> + +<P>NOTE: Use GNU '<TT>diff --recursive --unified oldtree newtree</TT>' for generating +your patchfiles</P> + diff --git a/website/download.wml b/website/download.wml new file mode 100644 index 00000000..385e2b39 --- /dev/null +++ b/website/download.wml @@ -0,0 +1,32 @@ +#include "$(ROOT)/.wml/template.inc" section=download subsection=none + +<H1>RRDtool Download</H1> + +You can download RRD tool from several places: + +<H2>Primary Distribution Points</H2> + +<UL> + <LI><A HREF="http://ee-staff.ethz.ch/~oetiker/webtools/rrdtool/pub/?M=D">http://ee-staff.ethz.ch/~oetiker/webtools/rrdtool/pub</A></LI> +# <LI><A HREF="http://www.caida.org/Tools/RRDtool/pub/">http://www.caida.org/Tools/RRDtool/pub/</A></LI> +</UL> + +<H2>Mirror Sites</H2> + +<UL> + <LI><A HREF="ftp://ftp.sunet.se/pub/network/monitoring/rrdtool/">ftp://ftp.sunet.se/pub/network/monitoring/rrdtool/</A> (Johan.Hofvander@sdi.slu.se)</LI> + <LI><A HREF="ftp://ftp.grmbl.com/pub/webtools/rrdtool/">ftp://ftp.grmbl.com/pub/webtools/rrdtool/</A> (Bram Dumolin bram@grmbl.be)</LI> + <LI><A HREF="http://ftp.sunet.se/pub/network/monitoring/rrdtool/">http://ftp.sunet.se/pub/network/monitoring/rrdtool/</A> (Johan.Hofvander@sdi.slu.se)</LI> + <LI><A HREF="ftp://ftp.nutt.net.au/pub/rrdtool/">ftp://ftp.nutt.net.au/pub/rrdtool</A> (mirror@utopia.nutt.net.au)</LI> +</UL> + +<H2>Binary Distributions</H2> + +<UL> + <LI>AIX 4.3.2 by <A HREF="mailto:Ciaran.Deignan@bull.net">Ciaran Deignan</A> -- <A HREF="http://www-frec.bull.com/cgi-bin/list_dir.cgi/download/aix432/">http://www-frec.bull.com/download/aix432/</A></LI> + <LI>Linux x86 RPM by <A HREF="mailto:hgomez@slib.fr">Henri Gomez</A> -- <A HREF="ftp://ftp.falsehope.com/home/gomez/rrdtool/">ftp://ftp.falsehope.com/home/gomez/rrdtool/</A></LI> +</UL> + +If you want to provide a mirror site or are producing binaries for another +platform, please drop a line to <A +HREF="mailto:oetiker@ee.ethz.ch">oetiker@ee.ethz.ch</A>. diff --git a/website/frontends/bigsister.wml b/website/frontends/bigsister.wml new file mode 100644 index 00000000..ca920424 --- /dev/null +++ b/website/frontends/bigsister.wml @@ -0,0 +1,63 @@ +#include "$(ROOT)/.wml/template.inc" section=frontends subsection=bigsister + +<h1>Big Sister</h1> +<p>by Thomas Aeby</p> + +<p> + +The Big Sister system and network monitor concentrates on +detecting failing services and systems, displaying status +overviews and alarming. As a means of providing diagnostic +information to the system administrator Big Sister also +collects trend data and uses RRDTool as a powerful and +easy-to-use utility for storing and visualizing collected +data. + +</p> + +<p> + +Big Sister's features include: + +</p> + +<ul> + +<li> + +detection of service or system failure via an agent + +</li> + +<li> + +alarming + +</li> + +<li> + +display of consolidated and/or detailed status overviews + +</li> + +<li> + +collection and visualization of system performance data via RRDTool + +</li> + +<li> + +interconnection of different Big Sister sites + +</li> + +</ul> + +<p> + +Big Sister is available at +<a href="http://bigsister.graeff.com/">http://bigsister.graeff.com/</a>. + +</p> diff --git a/website/frontends/bronc.wml b/website/frontends/bronc.wml new file mode 100644 index 00000000..41da4bd1 --- /dev/null +++ b/website/frontends/bronc.wml @@ -0,0 +1,21 @@ +#include "$(ROOT)/.wml/template.inc" section=frontends subsection=bronc + +<H1>Bronc</H1> +<P>by Chris Snell</P> + +<P>Bronc aims to be the fastest front-end available for RRDtool. It is +written in Perl, using Mason as a template/component engine and mod_perl +to speed things up. Bronc features...</P> + +<UL> +<LI>a SNMP collector, which queries SNMP-capable devices and stores +measurements in RRDtool databases</LI> + +<LI>on-the-fly graphing using BRONC::Grapher, which runs under mod_perl</LI> + +<LI>a extensible, Perl-based configuration file, which allows for quick +configuration of complex graphs</LI> +</UL> + +<P>Bronc is written by Chris Snell and is available from the <A +HREF="http://bronc.blueaspen.com">Bronc Home Site</A>.</P> diff --git a/website/frontends/cricket.wml b/website/frontends/cricket.wml new file mode 100644 index 00000000..e5b90cc2 --- /dev/null +++ b/website/frontends/cricket.wml @@ -0,0 +1,17 @@ +#include "$(ROOT)/.wml/template.inc" section=frontends subsection=cricket + +<H1>Cricket</H1> +<P>by Jeff R. Allen</P> + +<P>Cricket is the result of work at WebTV to design and implement a completely +different kind of wrapper for RRD. It features:</P> +<UL> +<LI>a hierarchical configuration system, which avoids duplicate info in the + config files</LI> +<LI>full flexibility in RRD structure (arbitrary numbers of DS's and RRA's)</LI> +<LI>a CGI-based graph-on-demand application</LI> +<LI>SNMP- and EXEC-based data gathering</LI> +</UL> + +<P>Available from <A HREF="http://cricket.sourceforge.net"> +Jeff's Cricket Site</A> diff --git a/website/frontends/flowscan.wml b/website/frontends/flowscan.wml new file mode 100644 index 00000000..7806b11a --- /dev/null +++ b/website/frontends/flowscan.wml @@ -0,0 +1,52 @@ +#include "$(ROOT)/.wml/template.inc" section=frontends subsection=flowscan + +<h1>FlowScan</h1> +<p>by Dave Plonka</p> + +<p> +FlowScan is a network analysis and reporting tool that processes flow +files generated by Cflowd, <a href="http://www.caida.org/Tools/Cflowd/">http://www.caida.org/Tools/Cflowd/</a>, +which collects flow data from Cisco routers. +</p> + +<p> +Sample graphs produced using FlowScan can be seen here: +<a href="http://wwwstats.net.wisc.edu">http://wwwstats.net.wisc.edu</a>. +</p> + +<p> +FlowScan's features include: +</p> + +<ul> + +<li> +a "CampusIO" report which allows one to generate graphs showing traffic +by IP protocol, traffic by "well-known" service, and traffic passed +between Autonomous Systems. +</li> + +<li> +a "SubNetIO" report which maintains RRD files containing information +on how many bytes, packets, and flows have been sourced from or destined +for each subnet. +</li> + +<li> +the ability to determine bandwidth usage by "elusive" application protocols +such as "RealMedia" and "Napster" using an adaptive, state-based measurement +technique. See <a href="http://net.doit.wisc.edu/data/Napster/">http://net.doit.wisc.edu/data/Napster/</a> for more details. +</li> + +<li> +a modular report mechanism that enables users to write or customize +reports that can either derived from existing reports or be altogether +new ones. +</li> + +</ul> + +<p> +FlowScan is available at +<a href="http://net.doit.wisc.edu/~plonka/FlowScan/">http://net.doit.wisc.edu/~plonka/FlowScan/</a>. +</p> diff --git a/website/frontends/fwgold.wml b/website/frontends/fwgold.wml new file mode 100644 index 00000000..0ce7a56a --- /dev/null +++ b/website/frontends/fwgold.wml @@ -0,0 +1,78 @@ +#include "$(ROOT)/.wml/template.inc" section=frontends subsection=fwgold + +<h1>FwGold</h1> +<p>by Gianluca Rotoni</p> + +<p> +A tool to graphically display Checkpoint Firewall-1® logging statistical data +</p> + +<p> +Snapshots of graphics produced using FwGold can be seen here: +<a href="http://rotoni.com/FwGold/example.htm">http://rotoni.com/FwGold/example.htm</a>. +</p> + +<p> +FwGold's features include: +</p> + +<ul> + +<LI> +Firewall access statistics logging and graphics +</LI> + +<LI> +Keep graphics of last day, week, month and year statistical data +</LI> + +<LI> +<A HREF="http://ee-staff.ethz.ch/~oetiker/webtools/rrdtool">RRDtool</A> based (stores data into non growing round robin databases) +</LI> + +<LI> +Completely Perl written (uses RRDs perl module) +</LI> + +<LI> +Client/Server structure (the server runs on the fw-1 managment module, the client can be anywhere perhaps where a Web server runs, the communication TCP port is configurable) +</LI> + +<LI> +Both client and server sides don't need to run as 'root' +</LI> + +<LI> +Fully configurable (users can freely define criterias to match when filtering the FW log and which db and graphics to generate, which graphic's format, colors and labels, which file names etc.) +</LI> + +<LI> +Automatic generation of DBs, graphics and html files +</LI> + +<LI> +Automatic prevention of spikes in case of counter resets due to server restarts +</LI> + +<LI> +Automatic detection of missed data +</LI> + +<LI> +Automatic detection of configuration errors +</LI> + +<LI> +Default configuration file to generate common firewall statistics (total connections, connections per protocol, total accepted connections per protocol, etc.) +</LI> + +<LI> +Detailed installation and configuration instructions +</LI> + +</UL> + +<p> +FwGold is available at +<a href="http://rotoni.com/FwGold">http://rotoni.com/FwGold</a>. +</p> diff --git a/website/frontends/hoth.wml b/website/frontends/hoth.wml new file mode 100644 index 00000000..d6068f19 --- /dev/null +++ b/website/frontends/hoth.wml @@ -0,0 +1,18 @@ +#include "$(ROOT)/.wml/template.inc" section=frontends subsection=hoth + +<H1>Hoth</H1> +<P>by Alexander Reelsen</P> + +<P>Hoth is an IP accounting tool exclusively for Linux 2.2, as it relies +on the IPChains firewalling code (it will be ported to 2.4 once the kernel +is stable). Hoth has the ability to account per source/destination IP, +source/destination port, protocol, interface, just like the real ipchains. +Furthermore you can stack every accounted data.</P> + +<P>Hoth consists of an .ini style like config file, scripts for creating +the firewall rules out of the config file and a CGI script to view the accounted +data as graphics, which are created realtime.</P> + +<P>Download from the <A HREF="http://joker.rhwd.de/software/hoth/">Hoth site</A>. + + diff --git a/website/frontends/index.wml b/website/frontends/index.wml new file mode 100644 index 00000000..90d564b8 --- /dev/null +++ b/website/frontends/index.wml @@ -0,0 +1,34 @@ +#include "$(ROOT)/.wml/template.inc" section=frontends subsection=none + +<H1>Frontends</H1> + +<P>Using RRDtool from the command line or through its Perl bindings is +pretty straight forward. But this will not buy you the solution to all your +monitoring needs. RRDtool does not help you to organize your data +acquisition and presentation. This is the point where the front ends come +in. Some of these are tools which relie on rrdtool to functions, others are +tools which can work nicely all on their own, and rrdtool is just an +optional data graphing and logging addon.</P> + +<H2>Availability</H2> + +<P>To my knowledge these are the RRDtool frontends which are publicly +available:</P> + +<UL> +<LI><A HREF="bigsister.html">Tom Aebis's BigSister</A></LI> +<LI><A HREF="cricket.html">Jeff Allen's Cricket</A></LI> +<LI><A HREF="ntop.html">Luca Deri's Ntop</A></LI> +<LI><A HREF="remstats.html">Thomas Erskine's remstats</A></LI> +<LI><A HREF="rrgrapher.html">Dave Plonka's RRGrapher</A></LI> +<LI><A HREF="nrg.html">Steve Rader's NRG</A></LI> +<LI><A HREF="fwgold.html">Gianluca Rotoni's FwGold</A></LI> +<LI><A HREF="hoth.html">Alexander Reelsen's Hoth</A></LI> +<LI><A HREF="nmis.html">Keith Sinclair's NMIS</A></LI> +<LI><A HREF="bronc.html">Chris Snell's Bronc</A></LI> +<LI><A HREF="orca.html">Blair Zajac's Orca</A></LI> + +<LI><A HREF="slamon.html">Frank Harper's SLAMon</A></LI> +</UL> + +<P>If you know others, please let me know. I will add them to the list</P> diff --git a/website/frontends/nmis.wml b/website/frontends/nmis.wml new file mode 100644 index 00000000..55909c3d --- /dev/null +++ b/website/frontends/nmis.wml @@ -0,0 +1,97 @@ +#include "$(ROOT)/.wml/template.inc" section=frontends subsection=nmis + +<h1>NMIS</h1> +<h3>Network Management Information System</h3> +<p>by Keith Sinclair</p> + +<p> +NMIS is a Network Management System which performs multiple functions from the OSI Network Management Functional Areas, mainly Fault and Performance Management. The idea being to make use of all that polling for performance stats and get fault management for free. +</p> + +<p> +Sample pages are available on the NMIS home page. +</p> + +<p> +NMIS features include: +</p> +<ul> +<li> +The entire network is summarised into a single metric, which indicates reachability, availability and health of all network devices being managed by NMIS. +</li> +<li> +Summary page for entire network with reachability, availability, health, response time metrics +</li> +<li> +Summary pages of devices including device information, health graph, and interface summary +</li> +<li> +Color coded events, status for at a glance interpretation. +</li> +<li> +Graphing of Interface, CPU, Memory stats for Cisco Routers and Switches. +</li> +<li> +Graphs can be drilled into. +</li> +<li> +Graphs produced on the fly. +</li> +<li> +Graphs can have varying lengths from 2hours to 1 year +</li> +<li> +Interface statistics are returned in Utilisation not just bits per second +</li> +<li> +Response time graphed and metrics for health and availability generated from statistics collected +</li> +<li> +Integrated Fault and Performance Management +</li> +<li> +Threshold engine which send alerts on certain thresholds. +</li> +<li> +Alert events are issued for device down or interface down +</li> +<li> +Event levels are set according to how important the device is +</li> +<li> +Events are "State full" including thresholds, meaning that an event is only issued once. +</li> +<li> +Notification engine can be expanded to handle any "command line" notification method, including email, paging, +signs, speakers, etc +</li> +<li> +A list of current events is available and there is an escalation level and time the event has been active. +</li> +<li> +Events are logged +</li> +<li> +Outage time calculated for each down event +</li> +<li> +Planned outages can be put in so alerts are not issued +</li> +<li> +Reports for utilisation, outages, etc +</li> +<li> +Find functions which search based on strings in interface types and descriptions. +</li> +<li> +Dynamic handling of ifIndex changes and difficult SNMP interface handling +</li> +<li> +Integrated logging facility to view events and syslog messages. +</li> +</ul> + +<p> +NMIS is available at +<a href="http://www.sins.com.au/nmis/">http://www.sins.com.au/nmis/</a>. +</p> diff --git a/website/frontends/nrg.wml b/website/frontends/nrg.wml new file mode 100644 index 00000000..c015f42d --- /dev/null +++ b/website/frontends/nrg.wml @@ -0,0 +1,15 @@ +#include "$(ROOT)/.wml/template.inc" section=frontends subsection=nrg + +<H1>NRG</H1> +<P>by Steve Rader</P> + +<P>The Network Resource Grapher is a MRTG-like package for the generation +and automation of very large quantities or RRDtool databases and their +graphs. (WiscNet has over 8,000 MRTG rype graphs)</P> + +<P>NRG works with several meta layers, allowing for efficient maintenance of +very large configurations. The lowest layer of configuration uses a configuration files very much like the ones from MRTG.</P> + +<P>Check this <A HREF="http://teak.wiscnet.net/nrg/NoSuchSD.html">example page</A> +or download from <A HREF="ftp://teak.wiscnet.net/pub/src/nrg">Steves ftp site</A>. + diff --git a/website/frontends/ntop.wml b/website/frontends/ntop.wml new file mode 100644 index 00000000..7872ad39 --- /dev/null +++ b/website/frontends/ntop.wml @@ -0,0 +1,28 @@ +#include "$(ROOT)/.wml/template.inc" section=frontends subsection=ntop + +<h1>ntop</h1> +<p>by <A HREF=mailto:deri@ntop.org>Luca Deri</A></p> + +<p> + +ntop is a web-based application for both Unix and Win32 that reports information about network traffic, similar to what the popular Unix <a HREF=http://www.groupsys.com/top/>top</A> command does. Main ntop features include: +<ul> +<li>Sort network traffic according to many (IP and non-IP) protocols +<li>Display traffic statistics +<li>Show IP traffic distribution among the various protocols +<li>Analyse IP traffic and sort it according to the source/destination +<li>Display IP Traffic Subnet matrix (who's talking to who?) +<li>Indentify network security violations +<li>Ability to browse data from a <A HREF=http://www.wapforum.org>WAP</A> phone +<li>Ability to access data from remote using popular languagues such as <A HREF=http://www.perl.org/>Perl</A> and <A HRFE=http://www.php.net/>PHP</A> +</ul> +</p> +<p> +By means of the ntop Perl API, it is possible to extract live traffic data from ntop and easily store them into the RRDTool. Thanks to the RRDTool, network administrators can perform advanced and long-term traffic trend analysis statistics. An early prototype of ntop+RRDTool can be found at <A HREF=http://www.ntop.org/RRD/>http://www.ntop.org/RRD/</A>. +</p> + +<p> + +ntop home page is <A HREF="http://www.ntop.org/">http://www.ntop.org/</a>. + +</p> diff --git a/website/frontends/orca.wml b/website/frontends/orca.wml new file mode 100644 index 00000000..2ed55d0a --- /dev/null +++ b/website/frontends/orca.wml @@ -0,0 +1,10 @@ +#include "$(ROOT)/.wml/template.inc" section=frontends subsection=orca + +<H1>Orca</H1> +<P>by Blair Zajac</P> + +<P>Orca is a tool useful for plotting arbitrary data from text files onto a +directory on a Web server.</P> + +<P>Available from <A HREF="http://www.gps.caltech.edu/~blair/orca/"> +Blair's Homepage</A> diff --git a/website/frontends/remstats.wml b/website/frontends/remstats.wml new file mode 100644 index 00000000..6c854125 --- /dev/null +++ b/website/frontends/remstats.wml @@ -0,0 +1,12 @@ +#include "$(ROOT)/.wml/template.inc" section=frontends subsection=remstats + +<H1>remstats</H1> +<P>by Thomas Erskine</P> + +<P>Remstats is a statistics gathering and graphing system. The idea behind remstat is +to run little data collection agents on remote machines and poll them from a central server where the data is kept. +The datapresentation happens on the fly with automatically generated rrdcgi scripts which +create the necessary graphs on demand. Graphs can also be created statically if running rrdcgi is not possible. +</P> + +<P>For more information please go to <A HREF="http://silverlock.dgim.crc.ca/remstats/release/">Thomas's Website</A>. diff --git a/website/frontends/rrgrapher.wml b/website/frontends/rrgrapher.wml new file mode 100644 index 00000000..abb967e3 --- /dev/null +++ b/website/frontends/rrgrapher.wml @@ -0,0 +1,70 @@ +#include "$(ROOT)/.wml/template.inc" section=frontends subsection=rrgrapher + +<h1>RRGrapher</h1> +<p>by Dave Plonka</p> + +<p> + +RRGrapher is a front-end for RRDTOOL that allows you to interactively +build graphs of your own design. It allows you the freedom to use any +combination of other RRDTOOL frond-ends such as MRTG, Cricket, and +14all to create and maintain the .rrd files, but generate graphs +containing data from any of those sources in the same graphs. + +</p> + +<p> + +Unlike other RRDTOOL front-ends, RRGrapher doesn't produce ".rrd" +files, it is used in conjunction with other popular front-ends, or +custom front-ends of your own devising. + +</p> + +<p> + +RRGrapher's features include: + +</p> + +<ul> + +<li> + +A simple installation - RRGrapher is just a single CGI script. + +</li> + +<li> + +The ability to create graphs from data sources stored in many ".rrd" +files, even those created by any number of different RRDTOOL +front-ends. + +</li> + +<li> + +"Bookmark-able" URLs for your web browser - RRGrapher generates URLs +which contain all the information needed to reproduce your custom +graph, allowing you to produce them on-demand in the future. + +</li> + +<li> + +Display of an rrdtool command-line that you could use to generate the +graph - RRGrapher could help you to learn how to use RRDTOOL, or will +at least provide a command line which you can cut-and-paste to generate +your graph in "batch" mode, for instance to display on a web page. + +</li> + +</ul> + +<p> + +RRGrapher is available at +<a href="http://net.doit.wisc.edu/~plonka/RRGrapher/">http://net.doit.wisc.edu/~plonka/RRGrapher/</a>. + +</p> diff --git a/website/frontends/slamon.wml b/website/frontends/slamon.wml new file mode 100644 index 00000000..65d8b4ea --- /dev/null +++ b/website/frontends/slamon.wml @@ -0,0 +1,26 @@ +#include "$(ROOT)/.wml/template.inc" section=frontends subsection=slamon + +<h1>SLAMon</h1> +<p>by Frank Harper</p> + +<p> +SLAMon is a front-end for RRDTool that allows you to calculate working +hour and 24-by-7 availability for anything that you're currently +monitoring with RRDTool. The graphs and reports can cover any time +period you're interested in: daily, monthly, yearly, etc. +</p> + +<p> +Currently SLAMon doesn't directly do any monitoring itself. For that you +need another front-end, to create and update RRD files for each +resource. The measurements contained in these files are used as input by +SLAMon to calculate availability and update the corresponding +availability RRDs. +</p> + +<p> + +SLAMon is available at +<a href="http://slamon.sourceforge.net">http://slamon.sourceforge.net</a>. + +</p> diff --git a/website/gallery/alex-01.bash b/website/gallery/alex-01.bash new file mode 100644 index 00000000..e87d4bfb --- /dev/null +++ b/website/gallery/alex-01.bash @@ -0,0 +1,138 @@ +#!/bin/bash + +# Slightly modified version of my script to check the bill +# Alex van den Bogaerdt <alex@ergens.op.Het.Net> , oct 11, 2000 +# +# It is hereby in the public domain. Use at your own risk. +# +# Prices, bandwidth etcetera are not fetched from a database +# in this example. You need to modify that anyway. +# +# To be useful, this script needs access to an RRD which covers +# at least two months worth of data, in the correct resolution. +# +# For an RRA which covers 62 days (2 months), 15 minutes per +# sample, 512kbps: +# +# rrdtool create internet.rrd --step 900 +# DS:int1in:COUNTER:1000:0:64000 \ +# DS:int1out:COUNTER:1000:0:64000 \ +# RRA:AVERAGE:0.5:1:6000 + +exec 2>&1 + +FIXEDk=64 +LIMITk=512 +FIXED=$((FIXEDk*1000)) +LIMIT=$((LIMITk*1000)) + +ACCESSLINE=2585.05 +FIXEDPRICE=530.00 +PERinb=9.50 +PERout=0.95 + +RRD=/home/rrdtool/rrddata/internet.rrd + +/bin/rm -f /home/rrdtool/rrdpng/internet*.png + +echo 'Content-Type: text/html' +echo '' + +export DATUM=`/bin/date +date/time:\ %Y%m%d\ %H:%M:%S` +export FILENAME=`/bin/date +%s`$$ + +# +# Calculate 1st of the month +# +# Tip, use a script here that can parse QUERY_STRING. This allows you +# to setup some links with varying time spans. You will be interested +# in intermediate results; such as "what would the bill be like if the +# traffic would be like this the whole month long". +# +FIRST=`/bin/date +%Y%m01` +LAST=`date -d $FIRST +%s` +START=end-1m + +# +# And finally the output: +# +echo '<HTML><HEAD><TITLE>Internet' +echo '' +echo '' +echo -n '' + +echo '' + +echo -n '
' +echo 'Our internet provider will bill us for the amount of bandwidth used + per month. Part of this bandwidth is prepaid, the rest is paid for + on a kilobit-per-second basis. Bandwidth used outside the red lines + is expensive as this needs to be paid for separately in addition to + the fee for the connection itself.' +echo '

' + +# Easy workaround for avoiding caches. Just alter the filename ... +/usr/local/bin/rrdtool graph "/home/rrdtool/rrdpng/internet-b-$FILENAME.png" \ + --title="Internet Router, Fixed=$FIXED $DATUM" \ + --end "${LAST}" --start "${START}" \ + --vertical-label "bits per second" \ + --imginfo '' \ + --imgformat PNG \ + --y-grid 64000:2 \ + --lower-limit -$LIMIT \ + --upper-limit $LIMIT \ + --color CANVAS#000000 \ + --color BACK#101010 \ + --color FONT#C0C0C0 \ + --color MGRID#80C080 \ + --color GRID#808020 \ + --color FRAME#808080 \ + --color ARROW#FFFFFF \ + --color SHADEA#404040 \ + --color SHADEB#404040 \ + --height 256 \ + --width 480 \ + DEF:bytesinb="$RRD":int1in:AVERAGE \ + DEF:bytesout="$RRD":int1out:AVERAGE \ + CDEF:inb=bytesinb,8,* \ + CDEF:out=bytesout,8,* \ + CDEF:Iinb=inb,$FIXED,LE,inb,$FIXED,IF \ + CDEF:Iout=out,$FIXED,LE,out,$FIXED,IF \ + CDEF:Oinb=inb,$FIXED,LE,0,inb,$FIXED,-,IF \ + CDEF:Oout=out,$FIXED,LE,0,out,$FIXED,-,IF \ + CDEF:Pinb=Oinb,$PERinb,*,1000,/ \ + CDEF:Pout=Oout,$PERout,*,1000,/ \ + CDEF:Ptotal=Pinb,Pout,$FIXEDPRICE,$ACCESSLINE,+,+,+ \ + CDEF:NIinb=Iinb,0,EQ,Iinb,Iinb,-1,*,IF \ + CDEF:NOinb=Oinb,0,EQ,Oinb,Oinb,-1,*,IF \ + HRULE:$FIXED#FF0000:"Outside these lines costs extra per kbps" \ + COMMENT:"F $PERout for outgoing, F $PERinb for incoming\n" \ + COMMENT:"\n" \ + COMMENT:"traffic " \ + COMMENT:"Max Min Average UBB tarif ( price ) Last\n"\ + AREA:Iout#00C000:"from HC\:" \ + STACK:Oout#C0FF00 \ + GPRINT:out:MAX:"%6.2lf %sbps" \ + GPRINT:out:MIN:"%6.2lf %sbps" \ + GPRINT:out:AVERAGE:"%6.2lf %sbps" \ + GPRINT:Oout:AVERAGE:"%6.2lf %sbps" \ + GPRINT:Pout:AVERAGE:"(Fl%8.2lf)" \ + GPRINT:out:LAST:"%6.2lf %sbps\\n" \ + AREA:NIinb#0000FF:"into HC\:" \ + STACK:NOinb#C080FF \ + GPRINT:inb:MAX:"%6.2lf %sbps" \ + GPRINT:inb:MIN:"%6.2lf %sbps" \ + GPRINT:inb:AVERAGE:"%6.2lf %sbps" \ + GPRINT:Oinb:AVERAGE:"%6.2lf %sbps" \ + GPRINT:Pinb:AVERAGE:"(Fl%8.2lf)" \ + GPRINT:inb:LAST:"%6.2lf %sbps\\n" \ + HRULE:$LIMIT#000000:"Access Line " \ + COMMENT:" Fl $ACCESSLINE $LIMITk.00 kbps\n"\ + HRULE:-$FIXED#FF0000:"Fixed tarif "\ + COMMENT:" Fl $FIXEDPRICE $FIXEDk.00 kbps\n"\ + COMMENT:"The bill should read, approximately, " \ + GPRINT:Ptotal:AVERAGE:" Fl %8.2lf\n" \ + | sed 's/[0-9]*x[0-9]*//' + echo '
' +echo '' +----cut here---- diff --git a/website/gallery/alex-01.png b/website/gallery/alex-01.png new file mode 100644 index 0000000000000000000000000000000000000000..5091082ab7aa5e88b586bfef9fb85e8e64b0affc GIT binary patch literal 7815 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 literal 0 HcmV?d00001 diff --git a/website/gallery/alex-01.wml b/website/gallery/alex-01.wml new file mode 100644 index 00000000..b609dbe6 --- /dev/null +++ b/website/gallery/alex-01.wml @@ -0,0 +1,32 @@ +#include "$(ROOT)/.wml/template.inc" section=gallery subsection=alex-01 + +

Billing Cross Check

+ +

by Alex van den Bogaerdt

+ +

+Our internet provider does usage based billing. Part of the bandwidth +is at a fixed price, the remaining bandwidth is subject to UBB.

+ +

The UBB works as follows: every sample period the current bandwidth is +calculated. When it is above the UBB rate, the excess is used to build +an average over a month. This average is used to calculate the bill.

+ +

I do trust the provider however I do not necessarily trust their billing +system. Therefore I need a way to check the bill.

+ +

Normal usage would be to graph from the 1st of the previous month until +the 1st of the current month. RRDtool does all the calculations, using +CDEF statements. I use bash to collect the prices from a database, then +start the RRDtool script with those variables filled in.

+ +

The data that I used to create the image has been altered to protect +our privacy and the providers pricing policy (meaning: its bogus data). +It does show however how it works. If I create the graph using correct +values for start and end times, the only difference should be caused by +rounding and by different polling times.

+ +

+ +

If you are interested in the script generating this, get it +here.

diff --git a/website/gallery/bkw-01.gif b/website/gallery/bkw-01.gif new file mode 100644 index 0000000000000000000000000000000000000000..f36e98a156a4b7b1d2a64071a70c0fcc0b603716 GIT binary patch literal 76068 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 literal 0 HcmV?d00001 diff --git a/website/gallery/bkw-01.pl b/website/gallery/bkw-01.pl new file mode 100644 index 00000000..2fec4531 --- /dev/null +++ b/website/gallery/bkw-01.pl @@ -0,0 +1,434 @@ +#!/usr/local/bin/perl -w +#From: Brian K. West +# +# snmpwalks all nas boxen specified in the configuration file, +# tallies the number of connect speeds, and returns a percentage +# of various data sets in the form: +# +# N:blah:blah:blah:blah:blah:blah +# +# requires a configuration file specified by $naslist +# config file format is: +# nas name:community +# i.e. +# pm1-stigler:communitystring +# +# +# mad propz to teep +# Need to redo graphing but hey it works.. +# +use lib qw( /usr/local/rrdtool-1.0.8/lib/perl ../lib/perl ); +use RRDs; +use strict; + +my($totlines) = 248; # Total Ports +my($workdir) = "/export/home/brian/public_html"; # Directory where you want +the images copied too +my($uptime) = `uptime`; # Uptime is printed on graph +my($rrd) = "overall.rrd"; # RRD file name +my($target) = "overall"; # Target name(Used for Images) +my($option) = "GAUGE"; # This can get COUNTER, GAUGE +my($naslist) = "./nas.dat"; # path and name of configuration file +my($domain) = "cwis.net"; # your domain name (used for snmpwalk) +my($path_to_snmpwalk) = "/usr/local/bin"; # no trailing slash + +# speed ranges are totally dynamic +# ranges are range[x] to ((range[x+1]) - 1) +# i.e. 1 to 14399, 14400 to 28799, 28800 to 33599, et al +# + + +my(@speed_range) = qw(1 14400 28800 33600 40000 43000 45000 50000 65000); + +### nothing else should need configured below this line ### +my($cpyfiles); +my($ERROR); +my($rrdata); +my($filetest); + +$filetest = stat($rrd); +if(!$filetest) { +RRDs::create ($rrd, "--step",300, + "DS:a:$option:600:0:100", + "DS:b:$option:600:0:100", + "DS:c:$option:600:0:100", + "DS:d:$option:600:0:100", + "DS:e:$option:600:0:100", + "DS:f:$option:600:0:100", + "DS:g:$option:600:0:100", + "DS:h:$option:600:0:100", + "DS:i:$option:600:0:100", + "DS:j:$option:600:0:100", + "RRA:AVERAGE:0.5:1:600", + "RRA:AVERAGE:0.5:6:700", + "RRA:AVERAGE:0.5:24:775", + "RRA:AVERAGE:0.5:288:797", + "RRA:MAX:0.5:1:600 ", + "RRA:MAX:0.5:6:700 ", + "RRA:MAX:0.5:24:775", + "RRA:MAX:0.5:288:797") +; + +my $ERROR = RRDs::error; +die "$0: unable to create `$rrd': $ERROR\n" if $ERROR; +} + +my($num_ranges) = 0; +$num_ranges = @speed_range; +my(%speeds); + +open(NASLIST, "<$naslist"); +my($line); +my($foo) = 0; +my(@nases); +my(%comms); +my(@raw_data); +my($line_count) = 0; + +while(defined ($line = )) { +chop $line; +my($nas,$community) = split(/:/,$line); +$nases[$foo++] = $nas; +$comms{$nas} = $community; +} + +my($speed_list); +foreach $speed_list (@speed_range) { +$speeds{$speed_list} = 0; +} +undef($speed_list); + +my(@data,$cnt); + +foreach $cnt (0 .. $#nases) { +my($nas) = $nases[$cnt]; +@data = `$path_to_snmpwalk/snmpwalk -v 1 $nas.$domain $comms{$nas} +interfaces.ifTable.ifEntry.ifSpeed`; + + +my($blah); +foreach $blah (@data) { +my($a); +chomp $blah; +(undef,$a) = split(/:/,$blah); +$a =~ s/ file://g; +if($a > 1 && $a < 65000) { +$raw_data[$line_count++] = $a; +} +} + +} + +my($foo3) = 0; +my($foo2); +foreach $foo2 (@raw_data) { +chomp $foo2; +my($carrier); +($carrier = $foo2) =~ s/ file://g; +my($test); +my($i) = 0; +foreach $i (0 .. $num_ranges) { +if($i+1 < $num_ranges && ($carrier >= $speed_range[$i] && $carrier <= +(($speed_range[$i+1])-1))) +{ +$speeds{$speed_range[$i]}++; +$foo3++; + +} + +} +} + +my($total,$num) = 0; +my($key,$value); +$rrdata = "N"; +#print "N"; +foreach $key (sort keys %speeds) { +$num = $speeds{$key}; +$total = ($num/$line_count)*100; +$total = sprintf("%3.2f",$total); +$rrdata .=":$total"; +} +#print "$rrdata"; +my($utilization); +$utilization = ($foo3/$totlines)*100; +$utilization = sprintf("%3.2f",$utilization); +$rrdata .=":$utilization"; +close(NASLIST); + +RRDs::update $rrd, "$rrdata"; + if ($ERROR = RRDs::error) { + die "$0: unable to update `$rrd': $ERROR\n"; + }; + +RRDs::graph "$target-day.gif", + "--start", " -86400", + "--title", "Modem Carrier Stats.(Daily) - $target", + "--rigid", + "--width=600", + "--height=250", + "--upper-limit","100", + "--lower-limit","0", + "--vertical-label","Percent(%)", + "DEF:a=$rrd:a:AVERAGE", + "DEF:b=$rrd:b:AVERAGE", + "DEF:c=$rrd:c:AVERAGE", + "DEF:d=$rrd:d:AVERAGE", + "DEF:e=$rrd:e:AVERAGE", + "DEF:f=$rrd:f:AVERAGE", + "DEF:g=$rrd:g:AVERAGE", + "DEF:h=$rrd:h:AVERAGE", +"DEF:j=$rrd:j:AVERAGE", + "AREA:a#FFFF00: 1-14399", + "GPRINT:a:LAST:Current \\: %8.2lf %s", + "GPRINT:a:AVERAGE:Avg \\: %8.2lf %s", + "GPRINT:a:MIN:Min \\: %8.2lf %s", + "GPRINT:a:MAX:Max \\: %8.2lf %s\\n", + "STACK:b#C0C0C0:14400-28799", + "GPRINT:b:LAST:Current \\: %8.2lf %s", + "GPRINT:b:AVERAGE:Avg \\: %8.2lf %s", + "GPRINT:b:MIN:Min \\: %8.2lf %s", + "GPRINT:b:MAX:Max \\: %8.2lf %s\\n", + "STACK:c#FF7E6C:28800-33599", + "GPRINT:c:LAST:Current \\: %8.2lf %s", + "GPRINT:c:AVERAGE:Avg \\: %8.2lf %s", + "GPRINT:c:MIN:Min \\: %8.2lf %s", + "GPRINT:c:MAX:Max \\: %8.2lf %s\\n", + "STACK:d#6DC8FE:33600-39999", + "GPRINT:d:LAST:Current \\: %8.2lf %s", + "GPRINT:d:AVERAGE:Avg \\: %8.2lf %s", + "GPRINT:d:MIN:Min \\: %8.2lf %s", + "GPRINT:d:MAX:Max \\: %8.2lf %s\\n", + "STACK:e#00FF00:40000-42999", + "GPRINT:e:LAST:Current \\: %8.2lf %s", + "GPRINT:e:AVERAGE:Avg \\: %8.2lf %s", + "GPRINT:e:MIN:Min \\: %8.2lf %s", + "GPRINT:e:MAX:Max \\: %8.2lf %s\\n", + "STACK:f#FF00FF:43000-44999", + "GPRINT:f:LAST:Current \\: %8.2lf %s", + "GPRINT:f:AVERAGE:Avg \\: %8.2lf %s", + "GPRINT:f:MIN:Min \\: %8.2lf %s", + "GPRINT:f:MAX:Max \\: %8.2lf %s\\n", + "STACK:g#FF0000:45000-49999", + "GPRINT:g:LAST:Current \\: %8.2lf %s", + "GPRINT:g:AVERAGE:Avg \\: %8.2lf %s", + "GPRINT:g:MIN:Min \\: %8.2lf %s", + "GPRINT:g:MAX:Max \\: %8.2lf %s\\n", + "STACK:h#4444FF:50000-65000", + "GPRINT:h:LAST:Current \\: %8.2lf %s", + "GPRINT:h:AVERAGE:Avg \\: %8.2lf %s", + "GPRINT:h:MIN:Min \\: %8.2lf %s", + "GPRINT:h:MAX:Max \\: %8.2lf %s\\n", +"LINE1:j#000000:Utilization", + "GPRINT:j:LAST:Current \\: %8.2lf %s", + "GPRINT:j:AVERAGE:Avg \\: %8.2lf %s", + "GPRINT:j:MIN:Min \\: %8.2lf %s", + "GPRINT:j:MAX:Max \\: %8.2lf %s\\n", + "COMMENT:\\n", + "COMMENT: Graph Shows Percent of +user connected at X Speed.\\n", + "COMMENT:\\n", + "COMMENT: $uptime", +; +if ($ERROR = RRDs::error) { + print "ERROR: $ERROR\n"; +}; +RRDs::graph "$target-week.gif", + "--start", " -604800", + "--title", "Modem Carrier Stats.(Weekly) - $target", + "--rigid", + "--width=600", + "--height=250", + "--upper-limit","100", + "--lower-limit","0", + "--vertical-label","Percent(%)", + "DEF:a=$rrd:a:AVERAGE", + "DEF:b=$rrd:b:AVERAGE", + "DEF:c=$rrd:c:AVERAGE", + "DEF:d=$rrd:d:AVERAGE", + "DEF:e=$rrd:e:AVERAGE", + "DEF:f=$rrd:f:AVERAGE", + "DEF:g=$rrd:g:AVERAGE", + "DEF:h=$rrd:h:AVERAGE", +"DEF:j=$rrd:j:AVERAGE", + "AREA:a#FFFF00: 1-14399", + "GPRINT:a:AVERAGE:Avg \\: %8.2lf %s", + "GPRINT:a:MIN:Min \\: %8.2lf %s", + "GPRINT:a:MAX:Max \\: %8.2lf %s\\n", + "STACK:b#C0C0C0:14400-28799", + "GPRINT:b:AVERAGE:Avg \\: %8.2lf %s", + "GPRINT:b:MIN:Min \\: %8.2lf %s", + "GPRINT:b:MAX:Max \\: %8.2lf %s\\n", + "STACK:c#FF7E6C:28800-33599", + "GPRINT:c:AVERAGE:Avg \\: %8.2lf %s", + "GPRINT:c:MIN:Min \\: %8.2lf %s", + "GPRINT:c:MAX:Max \\: %8.2lf %s\\n", + "STACK:d#6DC8FE:33600-39999", + "GPRINT:d:AVERAGE:Avg \\: %8.2lf %s", + "GPRINT:d:MIN:Min \\: %8.2lf %s", + "GPRINT:d:MAX:Max \\: %8.2lf %s\\n", + "STACK:e#00FF00:40000-42999", + "GPRINT:e:AVERAGE:Avg \\: %8.2lf %s", + "GPRINT:e:MIN:Min \\: %8.2lf %s", + "GPRINT:e:MAX:Max \\: %8.2lf %s\\n", + "STACK:f#FF00FF:43000-44999", + "GPRINT:f:AVERAGE:Avg \\: %8.2lf %s", + "GPRINT:f:MIN:Min \\: %8.2lf %s", + "GPRINT:f:MAX:Max \\: %8.2lf %s\\n", + "STACK:g#FF0000:45000-49999", + "GPRINT:g:AVERAGE:Avg \\: %8.2lf %s", + "GPRINT:g:MIN:Min \\: %8.2lf %s", + "GPRINT:g:MAX:Max \\: %8.2lf %s\\n", + "STACK:h#4444FF:50000-65000", + "GPRINT:h:AVERAGE:Avg \\: %8.2lf %s", + "GPRINT:h:MIN:Min \\: %8.2lf %s", + "GPRINT:h:MAX:Max \\: %8.2lf %s\\n", +"LINE1:j#000000:Utilization", + "GPRINT:j:AVERAGE:Avg \\: %8.2lf %s", + "GPRINT:j:MIN:Min \\: %8.2lf %s", + "GPRINT:j:MAX:Max \\: %8.2lf %s\\n", + "COMMENT:\\n", + "COMMENT: Graph Shows Percent of +user connected at X Speed.\\n", + "COMMENT:\\n", + "COMMENT: $uptime", +; +if ($ERROR = RRDs::error) { + print "ERROR: $ERROR\n"; +}; +RRDs::graph "$target-month.gif", + "--start", " -2600640", + "--title", "Modem Carrier Stats.(Monthly) - $target", + "--rigid", + "--width=600", + "--height=250", + "--upper-limit","100", + "--lower-limit","0", + "--vertical-label","Percent(%)", + "DEF:a=$rrd:a:AVERAGE", + "DEF:b=$rrd:b:AVERAGE", + "DEF:c=$rrd:c:AVERAGE", + "DEF:d=$rrd:d:AVERAGE", + "DEF:e=$rrd:e:AVERAGE", + "DEF:f=$rrd:f:AVERAGE", + "DEF:g=$rrd:g:AVERAGE", + "DEF:h=$rrd:h:AVERAGE", +"DEF:j=$rrd:j:AVERAGE", + "AREA:a#FFFF00: 1-14399", + "GPRINT:a:AVERAGE:Avg \\: %8.2lf %s", + "GPRINT:a:MIN:Min \\: %8.2lf %s", + "GPRINT:a:MAX:Max \\: %8.2lf %s\\n", + "STACK:b#C0C0C0:14400-28799", + "GPRINT:b:AVERAGE:Avg \\: %8.2lf %s", + "GPRINT:b:MIN:Min \\: %8.2lf %s", + "GPRINT:b:MAX:Max \\: %8.2lf %s\\n", + "STACK:c#FF7E6C:28800-33599", + "GPRINT:c:AVERAGE:Avg \\: %8.2lf %s", + "GPRINT:c:MIN:Min \\: %8.2lf %s", + "GPRINT:c:MAX:Max \\: %8.2lf %s\\n", + "STACK:d#6DC8FE:33600-39999", + "GPRINT:d:AVERAGE:Avg \\: %8.2lf %s", + "GPRINT:d:MIN:Min \\: %8.2lf %s", + "GPRINT:d:MAX:Max \\: %8.2lf %s\\n", + "STACK:e#00FF00:40000-42999", + "GPRINT:e:AVERAGE:Avg \\: %8.2lf %s", + "GPRINT:e:MIN:Min \\: %8.2lf %s", + "GPRINT:e:MAX:Max \\: %8.2lf %s\\n", + "STACK:f#FF00FF:43000-44999", + "GPRINT:f:AVERAGE:Avg \\: %8.2lf %s", + "GPRINT:f:MIN:Min \\: %8.2lf %s", + "GPRINT:f:MAX:Max \\: %8.2lf %s\\n", + "STACK:g#FF0000:45000-49999", + "GPRINT:g:AVERAGE:Avg \\: %8.2lf %s", + "GPRINT:g:MIN:Min \\: %8.2lf %s", + "GPRINT:g:MAX:Max \\: %8.2lf %s\\n", + "STACK:h#4444FF:50000-65000", + "GPRINT:h:AVERAGE:Avg \\: %8.2lf %s", + "GPRINT:h:MIN:Min \\: %8.2lf %s", + "GPRINT:h:MAX:Max \\: %8.2lf %s\\n", +"LINE1:j#000000:Utilization", + "GPRINT:j:AVERAGE:Avg \\: %8.2lf %s", + "GPRINT:j:MIN:Min \\: %8.2lf %s", + "GPRINT:j:MAX:Max \\: %8.2lf %s\\n", + "COMMENT:\\n", + "COMMENT: Graph Shows Percent of +user connected at X Speed.\\n", + "COMMENT:\\n", + "COMMENT: $uptime", +; +if ($ERROR = RRDs::error) { + print "ERROR: $ERROR\n"; +}; +RRDs::graph "$target-year.gif", + "--start", " -31557600", + "--title", "Modem Carrier Stats.(Yearly) - $target", + "--rigid", + "--width=600", + "--height=250", + "--upper-limit","100", + "--lower-limit","0", + "--vertical-label","Percent(%)", + "DEF:a=$rrd:a:AVERAGE", + "DEF:b=$rrd:b:AVERAGE", + "DEF:c=$rrd:c:AVERAGE", + "DEF:d=$rrd:d:AVERAGE", + "DEF:e=$rrd:e:AVERAGE", + "DEF:f=$rrd:f:AVERAGE", + "DEF:g=$rrd:g:AVERAGE", + "DEF:h=$rrd:h:AVERAGE", +"DEF:j=$rrd:j:AVERAGE", + "AREA:a#FFFF00: 1-14399", + "GPRINT:a:AVERAGE:Avg \\: %8.2lf %s", + "GPRINT:a:MIN:Min \\: %8.2lf %s", + "GPRINT:a:MAX:Max \\: %8.2lf %s\\n", + "STACK:b#C0C0C0:14400-28799", + "GPRINT:b:AVERAGE:Avg \\: %8.2lf %s", + "GPRINT:b:MIN:Min \\: %8.2lf %s", + "GPRINT:b:MAX:Max \\: %8.2lf %s\\n", + "STACK:c#FF7E6C:28800-33599", + "GPRINT:c:AVERAGE:Avg \\: %8.2lf %s", + "GPRINT:c:MIN:Min \\: %8.2lf %s", + "GPRINT:c:MAX:Max \\: %8.2lf %s\\n", + "STACK:d#6DC8FE:33600-39999", + "GPRINT:d:AVERAGE:Avg \\: %8.2lf %s", + "GPRINT:d:MIN:Min \\: %8.2lf %s", + "GPRINT:d:MAX:Max \\: %8.2lf %s\\n", + "STACK:e#00FF00:40000-42999", + "GPRINT:e:AVERAGE:Avg \\: %8.2lf %s", + "GPRINT:e:MIN:Min \\: %8.2lf %s", + "GPRINT:e:MAX:Max \\: %8.2lf %s\\n", + "STACK:f#FF00FF:43000-44999", + "GPRINT:f:AVERAGE:Avg \\: %8.2lf %s", + "GPRINT:f:MIN:Min \\: %8.2lf %s", + "GPRINT:f:MAX:Max \\: %8.2lf %s\\n", + "STACK:g#FF0000:45000-49999", + "GPRINT:g:AVERAGE:Avg \\: %8.2lf %s", + "GPRINT:g:MIN:Min \\: %8.2lf %s", + "GPRINT:g:MAX:Max \\: %8.2lf %s\\n", + "STACK:h#4444FF:50000-65000", + "GPRINT:h:AVERAGE:Avg \\: %8.2lf %s", + "GPRINT:h:MIN:Min \\: %8.2lf %s", + "GPRINT:h:MAX:Max \\: %8.2lf %s\\n", +"LINE1:j#000000:Utilization", + "GPRINT:j:AVERAGE:Avg \\: %8.2lf %s", + "GPRINT:j:MIN:Min \\: %8.2lf %s", + "GPRINT:j:MAX:Max \\: %8.2lf %s\\n", + "COMMENT:\\n", + "COMMENT: Graph Shows Percent of +user connected at X Speed.\\n", + "COMMENT:\\n", + "COMMENT: $uptime", +; +if ($ERROR = RRDs::error) { + print "ERROR: $ERROR\n"; +}; + + +$cpyfiles = `cp -f *.gif $workdir`; +exit; + + + + + + diff --git a/website/gallery/bkw-01.wml b/website/gallery/bkw-01.wml new file mode 100644 index 00000000..31ad110d --- /dev/null +++ b/website/gallery/bkw-01.wml @@ -0,0 +1,21 @@ +#include "$(ROOT)/.wml/template.inc" section=gallery subsection=bkw-01 + +

Portmaster

+ +
+ +

I work for an ISP in southeastern Oklahoma, One day the owner wanted to +know the percentages of users connected at a certain carrier speeds. So him +and I started working on a perl script that would do this job. What we did +is setup a perl script that would snmpwalk every Lucent Portmaster we had +and tally up the results and build the graph. I also added the percent of +totally port utilization with the black line on the graph. As we found out +less than 50% of our users do not connect at v.90 speeds. I love rrdtool I +write all of my rrdtool probes in perl and use all the perl bindings the +add/build/update/graph... Its really quite easy once I realized how it +worked. MRTG was easy to learn but rrdtool was a totally different ball +game.

+ +

The Script for those who care

+ +

diff --git a/website/gallery/blair-01-a.png b/website/gallery/blair-01-a.png new file mode 100644 index 0000000000000000000000000000000000000000..442a56bbfafc471618b4aff86cc7b6a053e3baa2 GIT binary patch literal 8888 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 literal 0 HcmV?d00001 diff --git a/website/gallery/blair-01-b.png b/website/gallery/blair-01-b.png new file mode 100644 index 0000000000000000000000000000000000000000..03274075d4e2a26616476ddf4909683cfa76937e GIT binary patch literal 9375 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 literal 0 HcmV?d00001 diff --git a/website/gallery/blair-01-e.png b/website/gallery/blair-01-e.png new file mode 100644 index 0000000000000000000000000000000000000000..749b49662047ed69cbcdd91a5a293cb3fbee19e5 GIT binary patch literal 7219 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 BqHO>G literal 0 HcmV?d00001 diff --git a/website/gallery/blair-01-f.png b/website/gallery/blair-01-f.png new file mode 100644 index 0000000000000000000000000000000000000000..afefeaf50bb159ce5350e387873cc701341b75bc GIT binary patch literal 22570 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%0A5&WZ0F2iAY(%bbI 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 z2IComprehensive\nMeasurements\nof a Web Server + +

by Blair Zajac

+ +

Orca is a +general purpose tool for taking arbitrary numerical data in text files +to generate daily through yearly plots.

+ +

For sites with more than one system, Orca allows comparisons +between different measurements on the same system and plotting the +same measurement from different systems on the same page. This allows +easy problem identification and debugging when a working system is +compared to a non-working system.

+ +

The Orca plotting system is broken into two parts, a data +measurement tool and the plotting tool. One data gathering tool, +orcallator.se, currently consists of a program that only runs on +Solaris hosts and gathers CPU, disk, network, memory, etc usage +information. Orcallator.se is a single process program that gathers +all system statistics, so it's nice to a busy system in that it +doesn't impact the system by spawning many subprocesses as a shell +script would. Orcallator.se places the gathered information in a +space separated text file.

+ +

Orca, the Perl plotting tool, then reads these text files from one +or most hosts and generates RRD files and an HTML tree of plots and +pages. Any data gathering tool that outputs data in an acceptable +format can be used with Orca. Orca reads a configuration file that +specifies which data to read from the input text files and how to plot +it.

+ +

The plots below show a subset of the measurements for a single +Solaris host running at Yahoo!/GeoCities. Visit this +site for a more complete example.

+ +Average # Processes in Run Queue +
+ +CPU Usage +
+ +Web Server Hit Rate +
+ +Web Server File Size +
+ +Interface Bits Per Second +
+ +Disk Run Percent +
diff --git a/website/gallery/chris-01.wml b/website/gallery/chris-01.wml new file mode 100644 index 00000000..6d60b5fa --- /dev/null +++ b/website/gallery/chris-01.wml @@ -0,0 +1,42 @@ +#include "$(ROOT)/.wml/template.inc" section=gallery subsection=chris-01 + +

Weather Station

+ +

by Chris Snell

+ +

I work for Weathertools.com, here in San Antonio, TX USA. Among other +things, we sell weather stations that can be mounted on a roof of a +building. Some of these weather stations are wireless and solar powered +and are able to measure temperature, wind speed, wind direction, +barometric pressure and rainfall, as well as other things. We have a +demonstation unit up on our roof and I wanted to put some graphs of the +readings on the web. We've been graphing the readings using a +Windows-based program but its graphs just don't look all +that cool. I thought I could improve on them, so I scoured the 'Net and +found some software written by a guy +named Alan Batie from Portland, Oregon USA. His software (written on a +FreeBSD box) pulls the data from the weather station over the station's +serial port. Alan is currently graphing his weather +readings with MRTG but I wanted to take it a step further and graph mine +with RRDtool. So, I wrote a quick little Perl hack that reads the data +from Alan's utility and then sends the data, via a HTTP request, to our +colocated servers downtown. The HTTP request is made to another Perl hack +I wrote which runs under mod_perl. This script takes the readings and +stores them in an RRD file using the shared RRD Perl module, RRDs. +Finally, I needed a way to graph this data. To do this, I used a program +called Bronc, which I wrote last +year. Bronc reads its configuration from a template and then generates +graphs in real time (on-the-fly) using the RRDs Perl module.

+ +

+

+ +

+ +

+ diff --git a/website/gallery/chris-01temp.png b/website/gallery/chris-01temp.png new file mode 100644 index 0000000000000000000000000000000000000000..5dd33908146cf2b709d236701a94de9434d27d60 GIT binary patch literal 7377 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 DSH2jJ literal 0 HcmV?d00001 diff --git a/website/gallery/chris-01wind.png b/website/gallery/chris-01wind.png new file mode 100644 index 0000000000000000000000000000000000000000..7caeb5a6b7099a4a58ffc47f516b60c0f8d71933 GIT binary patch literal 7873 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 literal 0 HcmV?d00001 diff --git a/website/gallery/colleen-01.gif b/website/gallery/colleen-01.gif new file mode 100644 index 0000000000000000000000000000000000000000..abac143bfc80fa11ce719b14d4c4c14aeaeb2014 GIT binary patch literal 18398 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 EFZuijSO5S3 literal 0 HcmV?d00001 diff --git a/website/gallery/colleen-01.wml b/website/gallery/colleen-01.wml new file mode 100644 index 00000000..f73016b6 --- /dev/null +++ b/website/gallery/colleen-01.wml @@ -0,0 +1,20 @@ +#include "$(ROOT)/.wml/template.inc" section=gallery subsection=colleen-01 + +

Space Shuttle

+ +

by Colleen M. Shannon

+ +

+I worked for a NASA project called EarthKAM in southern California. +Our project must monitor space shuttle telemetry both real-time and after +the mission has been completed. The information is stored in a database, +so rrdtool was the perfect solution - it's cgi interface allows generation +of web pages showing the status of incoming telemetry, and the perl module +allowed me to quickly create a user interface allowing users to display any +or all of the incoming information on whatever time scale they need. +rrdtool is awesome! +

+ +

+ diff --git a/website/gallery/edvard-01.png b/website/gallery/edvard-01.png new file mode 100644 index 0000000000000000000000000000000000000000..aac14d6440cefbf0671278440c979c838d14e507 GIT binary patch literal 12940 zcmZ9zcT|&4&_5aoHE=+x30+WW3JFC*m)=B_4gvz9Ne?wj2LX`)(tA-UN>vmINC_?U zCLJk}NJmISBuKmYzVGkcbAR`b*=MtRc6OfGna|E{=1F>RUk}6s0ssIY1AT2%0D$TM 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 Status + +

by Edvard Tuinder

+ +

A fancy way of looking at our Link Status

+ +

+ diff --git a/website/gallery/index.wml b/website/gallery/index.wml new file mode 100644 index 00000000..e45e2b58 --- /dev/null +++ b/website/gallery/index.wml @@ -0,0 +1,26 @@ +#include "$(ROOT)/.wml/template.inc" section=gallery subsection=none + +

RRD Gallery

+ +

RRDtool has a lot of power, but it is not immediately visible to the +uninitiated. In the gallery you can read short reports of people who +did interesting stuff with RRDtool together with impressive graphs.

+ + + +

If you have a material to contribute to the gallery as well, please +send me an interesting graph together with some words describing it. +For me it is best if your contribution come in the form of a wml file. +Look here for an example wml file. Modle your +entry after this example.

diff --git a/website/gallery/jeff-01.png b/website/gallery/jeff-01.png new file mode 100644 index 0000000000000000000000000000000000000000..8f9c765d4f848472afa59bd504de348b9f9ff6c6 GIT binary patch literal 11212 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 literal 0 HcmV?d00001 diff --git a/website/gallery/jeff-01.wml b/website/gallery/jeff-01.wml new file mode 100644 index 00000000..3eb00b34 --- /dev/null +++ b/website/gallery/jeff-01.wml @@ -0,0 +1,20 @@ +#include "$(ROOT)/.wml/template.inc" section=gallery subsection=jeff-01 + +

Routing instability

+ +

by Jeff Allen

+ + + +

These two graphs show a routing instability in peer1's network which +caused traffic to swing over to peer2's network. The names have been +changed to protect the innocent. This is an example of how graphs from +RRD Tool (in this case, created using Cricket) can show behavior of a +network (automatic failover and recovery) that's otherwise hard to +visualize.

+ +

Jeff is also the Author of +Cricket +the most popular frontend to RRDtool.

+ +

diff --git a/website/gallery/neal-01.png b/website/gallery/neal-01.png new file mode 100644 index 0000000000000000000000000000000000000000..fa5f61d68824758fe50e8df4ce56e4a4669d7758 GIT binary patch literal 73474 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 z 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 Management + +

by Neal S. Pressman

+ +

I currently use rrdtool with Jeff Allen's cricket frontend to monitor all +aspects of my Sun servers mostly through custom scripts that feed the data +into cricket. With the ability to visualy see what is happening with our +servers we are better able to proactively manage them. Included here are +graphs for application licenseing statistics ( Flexlm ), system load average, +CPU-utilization, Memory usage, and Disk utilization. I have many more items +on each server that get monitored but these are some of the more interesting +looking graphs. + +

+ +

diff --git a/website/gallery/simon-01.png b/website/gallery/simon-01.png new file mode 100644 index 0000000000000000000000000000000000000000..12e5bd51d0823f89f27db76181f415c224d31f5f GIT binary patch literal 28936 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 literal 0 HcmV?d00001 diff --git a/website/gallery/simon-01.wml b/website/gallery/simon-01.wml new file mode 100644 index 00000000..d45f31a9 --- /dev/null +++ b/website/gallery/simon-01.wml @@ -0,0 +1,17 @@ +#include "$(ROOT)/.wml/template.inc" section=gallery subsection=simon-01 + +

Fluxoscope

+ +
+ +

Fluxoscope +is a system used by SWITCH for +measurements of our external network traffic. One of its products are +graphs which represent, for each external connection, the protocol +distribution of traffic over time. The example graph shows the +traffic distribution on our connection to UUnet (our main US transit +provider) over a period of a week. The "positive" part of the graph +shows incoming traffic (what we receive from the US), the "negative" +part corresponds to outgoing traffic (what we send them).

+ +

diff --git a/website/gallery/steve-01.gif b/website/gallery/steve-01.gif new file mode 100644 index 0000000000000000000000000000000000000000..5573266fc70ec2bb5fd3ba68a9cc6f9f12abcfa8 GIT binary patch literal 17152 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 literal 0 HcmV?d00001 diff --git a/website/gallery/steve-01.wml b/website/gallery/steve-01.wml new file mode 100644 index 00000000..f57aa498 --- /dev/null +++ b/website/gallery/steve-01.wml @@ -0,0 +1,14 @@ +#include "$(ROOT)/.wml/template.inc" section=gallery subsection=steve-01 + +

DNS Query Rate Graph

+ +

by steve rader <rader@hep.physics.wisc.edu>

+ +

Below is a graph generated by a RRDtool front-end called +"Network Resource Grapher" (aka NRG.) It shows the query +rates of a domain name server for a non-profit regional network +service provider during a work-day. + +

+ +

diff --git a/website/index.wml b/website/index.wml new file mode 100644 index 00000000..cf5aa041 --- /dev/null +++ b/website/index.wml @@ -0,0 +1,61 @@ +#use wml::std::box +#include "$(ROOT)/.wml/template.inc" section=about subsection=none + + +

About RRDtool

+ + +# + +# +#RRDtool Up Close and Personal +#At the end of September and in early October, there are two opportunities to learn more about +#RRDtool: +# +# +# + +# + + +

RRDtool

+ +

If you know MRTG, you can think of RRDtool as a reimplementation of MRTGs +graphing and logging features. Magnitudes faster and more flexible than you ever +thought possible

+ +

RRD is the Acronym for Round Robin Database. RRD is a system to store and +display time-series data (i.e. network bandwidth, machine-room temperature, +server load average). It stores the data in a very compact way that will not +expand over time, and it presents useful graphs by processing the data to +enforce a certain data density. It can be used either via simple wrapper +scripts (from shell or Perl) or via frontends that poll network devices and +put a friendly user interface on it.

+ +

Get IT

+ +

RRDtool is available for download from this site. +Currently it compiles on a number of different Unix platforms as well as on +NT. No binaries are officially provided at this point in time.

+ +

Project -- Happy Tobi

+ +

You like RRDtool? There is a simple way to show your appreciation.

+ +

The Future

+ +

RRDtool is not a full replacement for MRTG, as it does not implement all +the frontend and data aquisition features of MRTG. But it is an excellent +base for building tools which work much like MRTG only better. Eventually, +MRTG-3 will be built on top of RRDtool. You do not have to wait though. If you +can program yourselfe you can use RRDtool right out of the box or if you don't program +you can use one of several frontends which use RRDtool.

+ +

If you want to stay with MRTG-2 go into the contrib folder of the latest release and take a close look at +14all.

diff --git a/website/license.wml b/website/license.wml new file mode 100644 index 00000000..86b70767 --- /dev/null +++ b/website/license.wml @@ -0,0 +1,53 @@ +#include "$(ROOT)/.wml/template.inc" section=license subsection=none + +

License

+ +

GNU General Public License

+ +

RRDtool is available under the terms of the GNU General Public License. +This means you can do most things you want with this software as long as you +do not claim you created the software and don't sell it (or modified version +of it) under a license other than the GNU GPL.

+ +

Give Credit

+ +

One of the things I get out of RRDtool is 'Being Known in the Industry'. +This only works if you give credit to RRDtool. This means that you +mention RRDtool on webpages and other publications containing graphs +created with RRDtool. If possible, a link should be included in the +publication, pointing to the RRDtool homepage. Best is to include the RRD +TOOL logo on these pages.

+ + +
+ +
+ + +

Make Tobi happy

+ +

I am giving RRDtool away for free. This does not mean, that I don't +like getting appreciation for my program. If you like RRDtool and +want to show me your appreciation, have a look at +my CD wishlist +. Please put your eMail address into the the Message area, so +that I can thank you for your present. I do keep a list of People who sent +me CDs. You can look at it here. +

+ + +

+
+remember, information is not knowledge,
+ knowledge is not wisdom
+ wisdom is not truth
+ truth is not beauty
+ beauty is not love
+ love is not music
+ music is the best

+
+-- frank zappa
+
+

diff --git a/website/mailinglists.wml b/website/mailinglists.wml new file mode 100644 index 00000000..bc512105 --- /dev/null +++ b/website/mailinglists.wml @@ -0,0 +1,38 @@ +#include "$(ROOT)/.wml/template.inc" section=mailinglists subsection=none + +

Mailinglists

+ +There are 3 mailinglists for RRDtool + +

rrd-announce mailing list

+ +

If you want to keep uptodate with the progress of RRDtool, subscribe to +this LOW VOLUME list by sending a message with the subject 'subscribe' to rrd-announce-request@list.ee.ethz.ch.

+ +

There is also an archive of past +Traffic on this List

+ +

Note, that posts to this list will be crossposted to the rrd-users and rrd-developers +mailinglists.

+ +

rrd-users mailing list

+ +

If you are using RRDtool in your applications, subscribe to +this list by sending a message with the subject 'subscribe' to rrd-users-request@list.ee.ethz.ch.

+ +

There is an archive of past +Traffic on this List

+ +

rrd-developers mailing list

+ +

If you start HACKING RRDtool, subscribe to +this list by sending a message with the subject 'subscribe' to rrd-developers-request@list.ee.ethz.ch.

+ +

There is an archive of past +Traffic on this List

diff --git a/website/manual/bin_dec_hex.wml b/website/manual/bin_dec_hex.wml new file mode 100644 index 00000000..040ddf68 --- /dev/null +++ b/website/manual/bin_dec_hex.wml @@ -0,0 +1,6 @@ +#include "$(ROOT)/.wml/template.inc" section=tutorial subsection=cdeftut +#use wml::fmt::pod + +

Bin Dec Hex Tutorial

+ +<: print &wml_fmt_pod({ FILE => "--podroot=$(ROOT)/../doc --htmlroot=. --podpath=. $(ROOT)/../doc/bin_dec_hex.pod"}); :> diff --git a/website/manual/cdeftutorial.wml b/website/manual/cdeftutorial.wml new file mode 100644 index 00000000..d92b0d69 --- /dev/null +++ b/website/manual/cdeftutorial.wml @@ -0,0 +1,6 @@ +#include "$(ROOT)/.wml/template.inc" section=tutorial subsection=cdeftut +#use wml::fmt::pod + +

CDEF Tutorial

+ +<: print &wml_fmt_pod({ FILE => "--podroot=$(ROOT)/../doc --htmlroot=. --podpath=. $(ROOT)/../doc/cdeftutorial.pod"}); :> diff --git a/website/manual/index.wml b/website/manual/index.wml new file mode 100644 index 00000000..3daa0844 --- /dev/null +++ b/website/manual/index.wml @@ -0,0 +1,6 @@ +#include "$(ROOT)/.wml/template.inc" section=manual subsection=none +#use wml::fmt::pod + +

MANUAL

+ +<: print &wml_fmt_pod({ FILE => "--podroot=$(ROOT)/../doc --htmlroot=. --podpath=. $(ROOT)/../doc/rrdtool.pod"}); :> diff --git a/website/manual/rpntutorial.wml b/website/manual/rpntutorial.wml new file mode 100644 index 00000000..5f3970b3 --- /dev/null +++ b/website/manual/rpntutorial.wml @@ -0,0 +1,7 @@ +#include "$(ROOT)/.wml/template.inc" section=tutorial subsection=rpntut +#use wml::fmt::pod + +

RPN Tutorial

+ +<: print &wml_fmt_pod({ FILE => "$(ROOT)/../doc/rpntutorial.pod"}); :> + diff --git a/website/manual/rrdcgi.wml b/website/manual/rrdcgi.wml new file mode 100644 index 00000000..f1b7ecec --- /dev/null +++ b/website/manual/rrdcgi.wml @@ -0,0 +1,6 @@ +#include "$(ROOT)/.wml/template.inc" section=rrdcgi subsection=none +#use wml::fmt::pod + +

RRDCGI MANPAGE

+ +<: print &wml_fmt_pod({ FILE => "$(ROOT)/../doc/rrdcgi.pod"}); :> diff --git a/website/manual/rrdcreate.wml b/website/manual/rrdcreate.wml new file mode 100644 index 00000000..399d0011 --- /dev/null +++ b/website/manual/rrdcreate.wml @@ -0,0 +1,6 @@ +#include "$(ROOT)/.wml/template.inc" section=manual subsection=rrdcreate +#use wml::fmt::pod + +

RRD CREATE

+ +<: print &wml_fmt_pod({ FILE => "--podroot=$(ROOT)/../doc $(ROOT)/../doc/rrdcreate.pod"}); :> diff --git a/website/manual/rrddump.wml b/website/manual/rrddump.wml new file mode 100644 index 00000000..cc67ba49 --- /dev/null +++ b/website/manual/rrddump.wml @@ -0,0 +1,6 @@ +#include "$(ROOT)/.wml/template.inc" section=manual subsection=rrddump +#use wml::fmt::pod + +

RRD DUMP

+ +<: print &wml_fmt_pod({ FILE => "--podroot=$(ROOT)/../doc $(ROOT)/../doc/rrddump.pod"}); :> diff --git a/website/manual/rrdfetch.wml b/website/manual/rrdfetch.wml new file mode 100644 index 00000000..1f151b2b --- /dev/null +++ b/website/manual/rrdfetch.wml @@ -0,0 +1,6 @@ +#include "$(ROOT)/.wml/template.inc" section=manual subsection=rrdfetch +#use wml::fmt::pod + +

RRD FETCH

+ +<:= &wml_fmt_pod({ FILE =>"--podroot=$(ROOT)/../ --podpath=doc $(ROOT)/../doc/rrdfetch.pod"}); :> diff --git a/website/manual/rrdgraph.wml b/website/manual/rrdgraph.wml new file mode 100644 index 00000000..d13abe99 --- /dev/null +++ b/website/manual/rrdgraph.wml @@ -0,0 +1,6 @@ +#include "$(ROOT)/.wml/template.inc" section=manual subsection=rrdgraph +#use wml::fmt::pod + +

RRD GRAPH

+ +<:= &wml_fmt_pod({ FILE => "--podroot=$(ROOT)/.. --podpath=doc $(ROOT)/../doc/rrdgraph.pod"}); :> diff --git a/website/manual/rrdinfo.wml b/website/manual/rrdinfo.wml new file mode 100644 index 00000000..a415062d --- /dev/null +++ b/website/manual/rrdinfo.wml @@ -0,0 +1,6 @@ +#include "$(ROOT)/.wml/template.inc" section=manual subsection=rrdinfo +#use wml::fmt::pod + +

RRD INFO

+ +<: print &wml_fmt_pod({ FILE => "--podroot=$(ROOT)/../doc --htmlroot=. --podpath=. $(ROOT)/../doc/rrdinfo.pod"}); :> diff --git a/website/manual/rrdlast.wml b/website/manual/rrdlast.wml new file mode 100644 index 00000000..4275aa5e --- /dev/null +++ b/website/manual/rrdlast.wml @@ -0,0 +1,7 @@ +#include "$(ROOT)/.wml/template.inc" section=manual subsection=rrdlast +#use wml::fmt::pod + +

RRD LAST

+ +<: print &wml_fmt_pod({ FILE => "--podroot=$(ROOT)/../doc $(ROOT)/../doc/rrdlast.pod"}); :> + diff --git a/website/manual/rrdresize.wml b/website/manual/rrdresize.wml new file mode 100644 index 00000000..9575e17d --- /dev/null +++ b/website/manual/rrdresize.wml @@ -0,0 +1,6 @@ +#include "$(ROOT)/.wml/template.inc" section=manual subsection=rrdresize +#use wml::fmt::pod + +

RRD RESIZE

+ +<: print &wml_fmt_pod({ FILE => "--podroot=$(ROOT)/../doc $(ROOT)/../doc/rrdresize.pod"}); :> diff --git a/website/manual/rrdrestore.wml b/website/manual/rrdrestore.wml new file mode 100644 index 00000000..af75fb69 --- /dev/null +++ b/website/manual/rrdrestore.wml @@ -0,0 +1,6 @@ +#include "$(ROOT)/.wml/template.inc" section=manual subsection=rrdrestore +#use wml::fmt::pod + +

RRD RESTORE

+ +<: print &wml_fmt_pod({ FILE => "--podroot=$(ROOT)/../doc $(ROOT)/../doc/rrdrestore.pod"}); :> diff --git a/website/manual/rrdtune.wml b/website/manual/rrdtune.wml new file mode 100644 index 00000000..8af98a87 --- /dev/null +++ b/website/manual/rrdtune.wml @@ -0,0 +1,6 @@ +#include "$(ROOT)/.wml/template.inc" section=manual subsection=rrdtune +#use wml::fmt::pod + +

RRD TUNE

+ +<: print &wml_fmt_pod({ FILE => "--podroot=$(ROOT)/../doc $(ROOT)/../doc/rrdtune.pod"}); :> diff --git a/website/manual/rrdtutorial.es.wml b/website/manual/rrdtutorial.es.wml new file mode 100644 index 00000000..dbe9051e --- /dev/null +++ b/website/manual/rrdtutorial.es.wml @@ -0,0 +1,6 @@ +#include "$(ROOT)/.wml/template.inc" section=tutorial subsection=cdeftut +#use wml::fmt::pod + +

CDEF Tutorial

+ +<: print &wml_fmt_pod({ FILE => "--podroot=$(ROOT)/../doc --htmlroot=. --podpath=. $(ROOT)/../doc/rrdtutorial.es.pod"}); :> diff --git a/website/manual/rrdtutorial.wml b/website/manual/rrdtutorial.wml new file mode 100644 index 00000000..1227b2e2 --- /dev/null +++ b/website/manual/rrdtutorial.wml @@ -0,0 +1,6 @@ +#include "$(ROOT)/.wml/template.inc" section=tutorial subsection=cdeftut +#use wml::fmt::pod + +

CDEF Tutorial

+ +<: print &wml_fmt_pod({ FILE => "--podroot=$(ROOT)/../doc --htmlroot=. --podpath=. $(ROOT)/../doc/rrdtutorial.pod"}); :> diff --git a/website/manual/rrdupdate.wml b/website/manual/rrdupdate.wml new file mode 100644 index 00000000..bae328a6 --- /dev/null +++ b/website/manual/rrdupdate.wml @@ -0,0 +1,6 @@ +#include "$(ROOT)/.wml/template.inc" section=manual subsection=rrdupdate +#use wml::fmt::pod + +

RRD UPDATE

+ +<: print &wml_fmt_pod({ FILE => "--podroot=$(ROOT)/../doc $(ROOT)/../doc/rrdupdate.pod"}); :> diff --git a/website/news.wml b/website/news.wml new file mode 100644 index 00000000..ac7f5760 --- /dev/null +++ b/website/news.wml @@ -0,0 +1,19 @@ +#include "$(ROOT)/.wml/template.inc" section=news subsection=none + +

News

+ +

1999-02-04

+ +Updated Website with License section and CSS for better looks. + +

1999-01-25

+ +Spell checked the web site and removed a few navigation quirks. + +

1999-01-24

+ +Creation of the RRDtool logo and web site. + +

1999-01-22

+ +Release of the second beta Version of RRDtool (0.99.1) \ No newline at end of file diff --git a/website/perlbind/RRDp.wml b/website/perlbind/RRDp.wml new file mode 100644 index 00000000..c4a2241a --- /dev/null +++ b/website/perlbind/RRDp.wml @@ -0,0 +1,6 @@ +#include "$(ROOT)/.wml/template.inc" section=perlbind subsection=RRDp +#use wml::fmt::pod + +

RRD Pipes Module

+ +<: print &wml_fmt_pod({ FILE => "$(ROOT)/../perl-piped/RRDp.pm"}); :> diff --git a/website/perlbind/RRDs.wml b/website/perlbind/RRDs.wml new file mode 100644 index 00000000..ffd243a1 --- /dev/null +++ b/website/perlbind/RRDs.wml @@ -0,0 +1,6 @@ +#include "$(ROOT)/.wml/template.inc" section=perlbind subsection=RRDs +#use wml::fmt::pod + +

Shared RRD Module

+ +<: print &wml_fmt_pod({ FILE => "$(ROOT)/../perl-shared/RRDs.pm"}); :> diff --git a/website/perlbind/index.wml b/website/perlbind/index.wml new file mode 100644 index 00000000..11d7030f --- /dev/null +++ b/website/perlbind/index.wml @@ -0,0 +1,17 @@ +#include "$(ROOT)/.wml/template.inc" section=perlbind subsection=none +#use wml::fmt::pod + +

Perl Bindings

+ +

RRDtool comes with two sets of Perl bindings.

+ +

RRD Pipes

+

which works by attaching an independent rrdtool process to your +Perl program through a set of pipes.

+ +

Shared RRD

+ +

integrates RRDtool functionality directly into Perl as a shared +library module. If you have the choice use this interface, as it is +more efficient and gives you better access to data returned from the +various functions of RRDtool

diff --git a/website/rrdcgi.wml b/website/rrdcgi.wml new file mode 100644 index 00000000..f1b7ecec --- /dev/null +++ b/website/rrdcgi.wml @@ -0,0 +1,6 @@ +#include "$(ROOT)/.wml/template.inc" section=rrdcgi subsection=none +#use wml::fmt::pod + +

RRDCGI MANPAGE

+ +<: print &wml_fmt_pod({ FILE => "$(ROOT)/../doc/rrdcgi.pod"}); :> diff --git a/website/screen.wml b/website/screen.wml new file mode 100644 index 00000000..71bf6b5b --- /dev/null +++ b/website/screen.wml @@ -0,0 +1,18 @@ +#include "$(ROOT)/.wml/template.inc" section=screen subsection=none + +

The Look

+ +RRDtool does not have a GUI or anything presentable like this +yet, but you can use RRDtool to create GIF images visualizing the +data collected with it. Here are two sample images. They do not +represent any sensible data, they simply show some of the features +of RRDtool. Most of the visual aspects of the graphs are auto +configured, but can be overridden when needed. + +
+ + + +
+ + diff --git a/website/site-sync b/website/site-sync new file mode 100755 index 00000000..817e1ed7 --- /dev/null +++ b/website/site-sync @@ -0,0 +1,2 @@ +rsync --copy-unsafe-links --verbose --times --delete --exclude pub --exclude='*~' -r . /home/oetiker/public_html/webtools/rrdtool +#rsync --links --verbose --times --delete --exclude pub --exclude='*~' --rsh=ssh -r . tobi@ipn.caida.org:/ipn/web/Tools/RRDtool diff --git a/website/tutorial/bin_dec_hex.wml b/website/tutorial/bin_dec_hex.wml new file mode 100644 index 00000000..040ddf68 --- /dev/null +++ b/website/tutorial/bin_dec_hex.wml @@ -0,0 +1,6 @@ +#include "$(ROOT)/.wml/template.inc" section=tutorial subsection=cdeftut +#use wml::fmt::pod + +

Bin Dec Hex Tutorial

+ +<: print &wml_fmt_pod({ FILE => "--podroot=$(ROOT)/../doc --htmlroot=. --podpath=. $(ROOT)/../doc/bin_dec_hex.pod"}); :> diff --git a/website/tutorial/cdeftutorial.wml b/website/tutorial/cdeftutorial.wml new file mode 100644 index 00000000..d92b0d69 --- /dev/null +++ b/website/tutorial/cdeftutorial.wml @@ -0,0 +1,6 @@ +#include "$(ROOT)/.wml/template.inc" section=tutorial subsection=cdeftut +#use wml::fmt::pod + +

CDEF Tutorial

+ +<: print &wml_fmt_pod({ FILE => "--podroot=$(ROOT)/../doc --htmlroot=. --podpath=. $(ROOT)/../doc/cdeftutorial.pod"}); :> diff --git a/website/tutorial/index.wml b/website/tutorial/index.wml new file mode 100644 index 00000000..01cef3d5 --- /dev/null +++ b/website/tutorial/index.wml @@ -0,0 +1,18 @@ +#include "$(ROOT)/.wml/template.inc" section=tutorial subsection=none + +

Tutorials

+ +

RRDtool is a new software concept. Contrary to many other Open Source +projects this one is not tracking what is available in the commercial world, +but it is a new approach to data logging and graphing problems.

+ +

If you are new to the RRDtool it is quite likely that you will not be able to make +do with the information available in the manual. Therefore I recommend everybody +uses the tutorials as a starting point for exploring RRDtool and its functions.

+ +
    +
  • The RRD Tutorial by Alex van den Bogaerdt is best for getting started.
  • +
  • The CDEF Tutorial another one by Alex which is recommended for people who want to get the most out of RRDs graphing function.
  • +
  • The RPN Tutorial by Steve Rader that helps those who have forgotten their HP days.
  • +
+ diff --git a/website/tutorial/rpntutorial.wml b/website/tutorial/rpntutorial.wml new file mode 100644 index 00000000..5f3970b3 --- /dev/null +++ b/website/tutorial/rpntutorial.wml @@ -0,0 +1,7 @@ +#include "$(ROOT)/.wml/template.inc" section=tutorial subsection=rpntut +#use wml::fmt::pod + +

RPN Tutorial

+ +<: print &wml_fmt_pod({ FILE => "$(ROOT)/../doc/rpntutorial.pod"}); :> + diff --git a/website/tutorial/rrdtutorial.es.wml b/website/tutorial/rrdtutorial.es.wml new file mode 100644 index 00000000..dbe9051e --- /dev/null +++ b/website/tutorial/rrdtutorial.es.wml @@ -0,0 +1,6 @@ +#include "$(ROOT)/.wml/template.inc" section=tutorial subsection=cdeftut +#use wml::fmt::pod + +

CDEF Tutorial

+ +<: print &wml_fmt_pod({ FILE => "--podroot=$(ROOT)/../doc --htmlroot=. --podpath=. $(ROOT)/../doc/rrdtutorial.es.pod"}); :> diff --git a/website/tutorial/rrdtutorial.ps b/website/tutorial/rrdtutorial.ps new file mode 100644 index 00000000..041fceeb --- /dev/null +++ b/website/tutorial/rrdtutorial.ps @@ -0,0 +1,1717 @@ +%!PS-Adobe-3.0 +%%Creator: groff version 1.11 +%%CreationDate: Wed Oct 27 07:32:11 1999 +%%DocumentNeededResources: font Times-Roman +%%+ font Times-Bold +%%+ font Symbol +%%+ font Courier +%%DocumentSuppliedResources: procset grops 1.11 0 +%%Pages: 17 +%%PageOrder: Ascend +%%Orientation: Portrait +%%EndComments +%%BeginProlog +%%BeginResource: procset grops 1.11 0 +/setpacking where{ +pop +currentpacking +true setpacking +}if +/grops 120 dict dup begin +/SC 32 def +/A/show load def +/B{0 SC 3 -1 roll widthshow}bind def +/C{0 exch ashow}bind def +/D{0 exch 0 SC 5 2 roll awidthshow}bind def +/E{0 rmoveto show}bind def +/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def +/G{0 rmoveto 0 exch ashow}bind def +/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def +/I{0 exch rmoveto show}bind def +/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def +/K{0 exch rmoveto 0 exch ashow}bind def +/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def +/M{rmoveto show}bind def +/N{rmoveto 0 SC 3 -1 roll widthshow}bind def +/O{rmoveto 0 exch ashow}bind def +/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def +/Q{moveto show}bind def +/R{moveto 0 SC 3 -1 roll widthshow}bind def +/S{moveto 0 exch ashow}bind def +/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def +/SF{ +findfont exch +[exch dup 0 exch 0 exch neg 0 0]makefont +dup setfont +[exch/setfont cvx]cvx bind def +}bind def +/MF{ +findfont +[5 2 roll +0 3 1 roll +neg 0 0]makefont +dup setfont +[exch/setfont cvx]cvx bind def +}bind def +/level0 0 def +/RES 0 def +/PL 0 def +/LS 0 def +/MANUAL{ +statusdict begin/manualfeed true store end +}bind def +/PLG{ +gsave newpath clippath pathbbox grestore +exch pop add exch pop +}bind def +/BP{ +/level0 save def +1 setlinecap +1 setlinejoin +72 RES div dup scale +LS{ +90 rotate +}{ +0 PL translate +}ifelse +1 -1 scale +}bind def +/EP{ +level0 restore +showpage +}bind def +/DA{ +newpath arcn stroke +}bind def +/SN{ +transform +.25 sub exch .25 sub exch +round .25 add exch round .25 add exch +itransform +}bind def +/DL{ +SN +moveto +SN +lineto stroke +}bind def +/DC{ +newpath 0 360 arc closepath +}bind def +/TM matrix def +/DE{ +TM currentmatrix pop +translate scale newpath 0 0 .5 0 360 arc closepath +TM setmatrix +}bind def +/RC/rcurveto load def +/RL/rlineto load def +/ST/stroke load def +/MT/moveto load def +/CL/closepath load def +/FL{ +currentgray exch setgray fill setgray +}bind def +/BL/fill load def +/LW/setlinewidth load def +/RE{ +findfont +dup maxlength 1 index/FontName known not{1 add}if dict begin +{ +1 index/FID ne{def}{pop pop}ifelse +}forall +/Encoding exch def +dup/FontName exch def +currentdict end definefont pop +}bind def +/DEFS 0 def +/EBEGIN{ +moveto +DEFS begin +}bind def +/EEND/end load def +/CNT 0 def +/level1 0 def +/PBEGIN{ +/level1 save def +translate +div 3 1 roll div exch scale +neg exch neg exch translate +0 setgray +0 setlinecap +1 setlinewidth +0 setlinejoin +10 setmiterlimit +[]0 setdash +/setstrokeadjust where{ +pop +false setstrokeadjust +}if +/setoverprint where{ +pop +false setoverprint +}if +newpath +/CNT countdictstack def +userdict begin +/showpage{}def +}bind def +/PEND{ +clear +countdictstack CNT sub{end}repeat +level1 restore +}bind def +end def +/setpacking where{ +pop +setpacking +}if +%%EndResource +%%IncludeResource: font Times-Roman +%%IncludeResource: font Times-Bold +%%IncludeResource: font Symbol +%%IncludeResource: font Courier +grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72 +def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron +/scaron/zcaron/Ydieresis/trademark/quotesingle/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent +/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen +/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon +/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O +/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex +/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y +/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft +/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl +/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut +/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash +/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen +/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft +/logicalnot/minus/registered/macron/degree/plusminus/twosuperior +/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior +/ordmasculine/guilsinglright/onequarter/onehalf/threequarters +/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE +/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex +/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis +/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn +/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla +/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis +/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash +/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def +/Courier@0 ENC0/Courier RE/Times-Bold@0 ENC0/Times-Bold RE/Times-Roman@0 +ENC0/Times-Roman RE +%%EndProlog +%%Page: 1 1 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(RRDTUT)72 48 Q -.834(ORIAL \( 1 \))-.18 F +130.862(rrdtool RRDTUT)133.362 F -.834(ORIAL \( 1 \))-.18 F/F1 9 +/Times-Bold@0 SF 10.562 -6.496(NN AA)72 96 T -8.494(MM)6.496 G -6.001 +(EE)8.494 G F0(rrdtutorial \255 Ale)108 108 Q 2.5(xv)-.15 G(an den Bog) +-2.75 E(aerdt')-.05 E 2.5(sR)-.55 G(RDtool tutorial)-2.5 E F1 -6.496(DD) +72 124.8 S -6.001(EE)6.496 G -5.002(SS)6.001 G -6.496(CC)5.002 G -6.496 +(RR)6.496 G -3.499(II)6.496 G -5.497(PP)3.499 G -6.001(TT)5.497 G -3.499 +(II)6.001 G -7(OO)3.499 G -6.496(NN)7 G F0 2.325 +(RRDtool is written by T)108 136.8 R 2.325(obias Oetik)-.8 F 2.325 +(er with contrib)-.1 F 2.325 +(utions from man)-.2 F 4.825(yp)-.15 G 2.325(eople all)-4.825 F 1.047 +(around the w)108 148.8 R 1.048(orld. This document is written by Ale) +-.1 F 3.548(xv)-.15 G 1.048(an den Bog)-3.798 F 1.048(aerdt to help)-.18 F +(you understand what RRDtool is and what it can do for you.)108 160.8 Q +.954(The documentation pro)108 177.6 R .953(vided with RRDtool can be t\ +oo technical for some people. This tutorial is here to)-.15 F .875(help\ + you understand the basics of RRDtool. It should prepare you to read th\ +e documentation yourself.)108 189.6 R(It)5.875 E(also e)108 201.6 Q +(xplains the general things about statistics with a focus on netw)-.15 E +(orking.)-.1 E F1 -6.001(TT)72 218.4 S -6.496(UU)6.001 G 9.59 -6.001 +(TT O)6.496 H(OR)-.999 E(RI)-6.496 E(IA)-3.499 E(AL)-6.496 E(L)-6.001 E +/F2 10/Times-Bold@0 SF -3.888(II)108 230.4 S -8.328(mm)3.888 G -5.558 +(pp)8.328 G -4.998(oo)5.558 G -4.438(rr)4.998 G -3.328(tt)4.438 G -4.998 +(aa)3.328 G -5.558(nn)4.998 G -3.328(tt)5.558 G F0 .734(Please don')108 +247.2 R 3.234(ts)-.18 G .734(kip ahead in this document!)-3.234 F .734 +(The \214rst part of this document e)5.734 F .734 +(xplains the basics and may be)-.15 F 2.5(boring. But)108 259.2 R +(if you don')2.5 E 2.5(tu)-.18 G(nderstand the basics, the e)-2.5 E +(xamples will not be as meaningful to you.)-.15 E F2 -9.998(WW)108 282 S +-5.558(hh)9.998 G -4.998(aa)5.558 G 6.656 -3.328(tt i)4.998 H(is).55 E +2.5(sR)-3.888 G(RR)-9.718 E(RD)-7.218 E(Dt)-7.218 E(to)-3.328 E(oo) +-4.998 E(ol)-4.998 E 2.5(l?)-2.778 G(?)-7.498 E F0 .313 +(RRDtool refers to Round Robin Database tool.)108 298.8 R .314 +(Round robin is a technique that w)5.313 F .314(orks with a \214x)-.1 F +.314(ed amount)-.15 F .923(of data, and a pointer to the current elemen\ +t. Think of a circle with some dots plotted on the edge, these)108 310.8 +R .191(dots are the places where data can be stored. Dra)108 322.8 R +2.691(wa)-.15 G 2.691(na)-2.691 G(rro)-2.691 E 2.691(wf)-.25 G .191 +(rom the center of the circle to one of the dots,)-2.691 F .57 +(this is the pointer)108 334.8 R 5.57(.W)-.55 G .57 +(hen the current data is read or written, the pointer mo)-5.57 F -.15 +(ve)-.15 G 3.07(st).15 G 3.07(ot)-3.07 G .57(he ne)-3.07 F .57 +(xt element. As we)-.15 F .021(are on a circle there is no be)108 346.8 +R .021 +(ginning nor an end, you can go on and on. After a while, all the a)-.15 +F -.25(va)-.2 G .021(ilable places).25 F .077(will be used and the proc\ +ess automatically reuses old locations. This w)108 358.8 R(ay)-.1 E +2.577(,t)-.65 G .077(he database will not gro)-2.577 F 2.577(wi)-.25 G +2.577(ns)-2.577 G(ize)-2.577 E .055 +(and therefore requires no mainenance.)108 370.8 R .055(RRDtool w)5.055 +F .055(orks with with Round Robin Databases \(RRDs\). It stores)-.1 F +(and retrie)108 382.8 Q -.15(ve)-.25 G 2.5(sd).15 G(ata from them.)-2.5 +E F2 -9.998(WW)108 405.6 S -5.558(hh)9.998 G -4.998(aa)5.558 G 6.656 +-3.328(tt d)4.998 H(da)-2.23 E(at)-4.998 E(ta)-3.328 E 2.5(ac)-4.998 G +(ca)-6.938 E(an)-4.998 E 2.5(nb)-5.558 G(be)-8.058 E 2.5(ep)-4.438 G(pu) +-8.058 E(ut)-5.558 E 2.5(ti)-3.328 G(in)-5.278 E(nt)-5.558 E(to)-3.328 E +2.5(oa)-4.998 G(an)-7.498 E(n)-5.558 E F1 -6.496(RR)2.5 G -6.496(DD) +6.496 G -6.496(DD)6.496 G F2 -4.998(??)8.996 G F0 -1.1(Yo)108 422.4 S +3.328(un)1.1 G .828(ame it, it will probably \214t. Y)-3.328 F .827 +(ou should be able to measure some v)-1.1 F .827(alue at se)-.25 F -.15 +(ve)-.25 G .827(ral points in time and).15 F(pro)108 434.4 Q .023(vide \ +this information to RRDtool. If you can do this, RRDtool will be able t\ +o store it. The v)-.15 F .024(alues need to)-.25 F(be numerical b)108 +446.4 Q(ut don')-.2 E 2.5(th)-.18 G -2.25 -.2(av e)-2.5 H +(to be, as opposed to)2.7 E/F3 9/Times-Roman@0 SF(MR)2.5 E(TG)-.54 E F0 +2.5(,i)C(nte)-2.5 E(gers.)-.15 E(Man)108 463.2 Q 3.231(ye)-.15 G .731 +(xamples talk about)-3.381 F F3(SNMP)3.23 E F0 .73(which is an acron) +3.23 F .73(ym for Simple Netw)-.15 F .73(ork Management Protocol. `)-.1 +F(`Sim-)-.74 E(ple')108 475.2 Q 3.053('r)-.74 G .553(efers to the proto\ +col -- it does not mean it is simple to manage or monitor a netw)-3.053 +F .553(ork. After w)-.1 F(orking)-.1 E .142(your w)108 487.2 R .141 +(ay through this document, you should kno)-.1 F 2.641(we)-.25 G .141 +(nough to be able to understand what people are talking)-2.641 F .152 +(about. F)108 499.2 R .152(or no)-.15 F 1.452 -.65(w, j)-.25 H .152 +(ust realize that).65 F F3(SNMP)2.652 E F0 .152(is a w)2.652 F .152 +(ay to ask de)-.1 F .153(vices for the v)-.25 F .153 +(alues of counters the)-.25 F 2.653(yk)-.15 G 2.653(eep. It)-2.753 F +.153(is the)2.653 F -.25(va)108 511.2 S +(lue from those counters that are k).25 E(ept in the)-.1 E F3(RRD)2.5 E +F0(.)A F2 -9.998(WW)108 534 S -5.558(hh)9.998 G -4.998(aa)5.558 G 6.656 +-3.328(tt c)4.998 H(ca)-1.11 E(an)-4.998 E 2.5(nI)-5.558 G 2.5(Id)-6.388 +G(do)-8.058 E 2.5(ow)-4.998 G(wi)-9.718 E(it)-2.778 E(th)-3.328 E 2.5 +(ht)-5.558 G(th)-5.828 E(hi)-5.558 E(is)-2.778 E 2.5(st)-3.888 G(to) +-5.828 E(oo)-4.998 E(ol)-4.998 E 2.5(l?)-2.778 G(?)-7.498 E F0 1.329 +(RRDtool originated from)108 550.8 R F3(MR)3.829 E(TG)-.54 E F0 1.329 +(\(Multi Router T)3.829 F(raf)-.35 E 1.329(\214c Grapher\).)-.25 F F3 +(MR)6.329 E(TG)-.54 E F0 1.328(started as a tin)3.828 F 3.828(yl)-.15 G +1.328(ittle script for)-3.828 F .509 +(graphing the use of a connection to the Internet.)108 562.8 R F3(MR) +3.009 E(TG)-.54 E F0 -2.2 -.25(ev o)3.009 H(lv).25 E .509 +(ed into a tool for graphing other data sources)-.15 F .095 +(including temperature, speed, v)108 574.8 R .094 +(oltage, number of printouts and the lik)-.2 F .094(e. Most lik)-.1 F +.094(ely you will start to use the)-.1 F .81 +(RRDtool to store and process data collected via)108 586.8 R F3(SNMP) +3.31 E F0 3.31(.T)C .81(he data will most lik)-3.31 F .811 +(ely be bytes \(or bits\) trans-)-.1 F .019(fered from and to a netw)108 +598.8 R .019(ork or a computer)-.1 F 5.019(.R)-.55 G .018 +(RDtool lets you create a database, store data in it, retrie)-5.019 F +.318 -.15(ve t)-.25 H(hat).15 E .293(data and create graphs in)108 610.8 +R F3(GIF)2.793 E F0 .293(format for display on a web bro)2.793 F(wser) +-.25 E 2.793(.T)-.55 G(hose)-2.793 E F3(GIF)2.793 E F0 .294 +(images are dependent on the)2.794 F .559 +(data you collected and could be, for instance, an o)108 622.8 R -.15 +(ve)-.15 G(rvie).15 E 3.059(wo)-.25 G 3.059(ft)-3.059 G .559(he a)-3.059 +F -.15(ve)-.2 G .559(rage netw).15 F .559(ork usage, or the peaks that) +-.1 F 2.62(occurred. It)108 634.8 R .12 +(can also be used to display tidal w)2.62 F -2.25 -.2(av e)-.1 H .121 +(s, solar radiation, po).2 F .121(wer consumption, number of visitors) +-.25 F .542(at an e)108 646.8 R .542(xhibition, noise le)-.15 F -.15(ve) +-.25 G .542(ls near an airport, temperature on your f).15 F -.2(avo)-.1 +G .542(rite holiday location, temperature in).2 F .54 +(the fridge and whate)108 658.8 R -.15(ve)-.25 G 3.04(ry).15 G .54 +(ou imagination can come up with. Y)-3.04 F .54 +(ou need a sensor to measure the data and be)-1.1 F +(able to feed the numbers to RRDtool.)108 670.8 Q 154.84(24/Oct/99 Last) +72 768 R(change: 1.0.8)2.5 E(1)192.34 E EP +%%Page: 2 2 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(RRDTUT)72 48 Q -.834(ORIAL \( 1 \))-.18 F +130.862(rrdtool RRDTUT)133.362 F -.834(ORIAL \( 1 \))-.18 F/F1 10 +/Times-Bold@0 SF -9.998(WW)108 96 S -5.558(hh)9.998 G -4.998(aa)5.558 G +6.656 -3.328(tt i)4.998 H(if).55 E 2.5(fI)-3.328 G 2.5(Is)-6.388 G(st) +-6.388 E(ti)-3.328 E(il)-2.778 E(ll)-2.778 E 2.5(lh)-2.778 G(ha)-8.058 E +-.25(av)-4.998 G -.1(ve)-4.748 G 2.5(ep)-4.338 G(pr)-8.058 E -.18(ro) +-4.438 G(ob)-4.818 E(bl)-5.558 E(le)-2.778 E(em)-4.438 E(ms)-8.328 E 2.5 +(sa)-3.888 G(af)-7.498 E(ft)-3.328 E(te)-3.328 E(er)-4.438 E 2.5(rr) +-4.438 G -.18(re)-6.938 G(ea)-4.258 E(ad)-4.998 E(di)-5.558 E(in)-2.778 +E(ng)-5.558 E 2.5(gt)-4.998 G(th)-5.828 E(hi)-5.558 E(is)-2.778 E 2.5 +(sd)-3.888 G(do)-8.058 E(oc)-4.998 E(cu)-4.438 E(um)-5.558 E(me)-8.328 E +(en)-4.438 E(nt)-5.558 E 2.5(t?)-3.328 G(?)-7.498 E F0 .729 +(First of all: read it ag)108 112.8 R .729(ain! Y)-.05 F .729(ou may ha) +-1.1 F 1.028 -.15(ve m)-.2 H .728(issed something.).15 F .728 +(If you are unable to compile the sources and)5.728 F .208(you ha)108 +124.8 R .508 -.15(ve a f)-.2 H .208(airly common).05 F/F2 9 +/Times-Roman@0 SF(OS)2.708 E F0 2.708(,i)C 2.708(tw)-2.708 G .208 +(ill probably not be the f)-2.708 F .209 +(ault of RRDtool. There may be precompiled v)-.1 F(er)-.15 E(-)-.2 E +.556(sions around on the Internet. If the)108 136.8 R 3.056(yc)-.15 G +.556(ome from trusted sources, get one of those.)-3.056 F .556 +(If on the other hand the)5.556 F .373(program w)108 148.8 R .373 +(orks b)-.1 F .373(ut does not gi)-.2 F .673 -.15(ve y)-.25 H .373 +(ou the e).15 F .374 +(xpected results, it will be a problem with con\214guring it. Re)-.15 F +(vie)-.25 E(w)-.25 E(your con\214guration and compare it with the e)108 +160.8 Q(xamples that follo)-.15 E -.65(w.)-.25 G .053 +(There is a mailing list and an archi)108 177.6 R .352 -.15(ve o)-.25 H +2.552(fi).15 G .052(t. Read the list for a fe)-2.552 F 2.552(ww)-.25 G +.052(eeks and search the archi)-2.552 F -.15(ve)-.25 G 2.552(.I).15 G +2.552(ti)-2.552 G 2.552(sc)-2.552 G(onsid-)-2.552 E .126 +(ered rude to just ask a question without searching the archi)108 189.6 +R -.15(ve)-.25 G .127(s: your problem may already ha).15 F .427 -.15 +(ve b)-.2 H .127(een solv).15 F(ed)-.15 E .504(for somebody else!)108 +201.6 R .503(This is true for most, if not all, mailing lists and not o\ +nly for this particular list! Look)5.504 F(in the documentation that ca\ +me with RRDtool for the location and usage of the list.)108 213.6 Q +3.191(Is)108 230.4 S .691(uggest you tak)-3.191 F 3.191(eam)-.1 G .691 +(oment to subscribe to the mailing list right no)-3.191 F 3.191(wb)-.25 +G 3.191(ys)-3.191 G .691(ending an email to with a subject of `)108 242.4 R(`subscribe') +-.74 E 1.379('. If you e)-.74 F -.15(ve)-.25 G 3.879(rw).15 G 1.379 +(ant to lea)-3.979 F 1.679 -.15(ve t)-.2 H 1.378(his list, you write an) +.15 F(email to the same address b)108 254.4 Q(ut no)-.2 E 2.5(ww)-.25 G +(ith a subject of `)-2.5 E(`unsubscribe')-.74 E('.)-.74 E F1 -7.778(HH) +108 277.2 S 7.396 -4.998(oo w)7.778 H 2.5(ww)-2.22 G(wi)-9.718 E(il) +-2.778 E(ll)-2.778 E 2.5(ly)-2.778 G -.25(yo)-7.498 G(ou)-4.748 E 2.5 +(uh)-5.558 G(he)-8.058 E(el)-4.438 E(lp)-2.778 E 2.5(pm)-5.558 G(me) +-10.828 E 2.5(e?)-4.438 G(?)-7.498 E F0 .382(By gi)108 294 R .382 +(ving you some detailed descriptions with detailed e)-.25 F 2.882 +(xamples. It)-.15 F .382(is assumed that follo)2.882 F .382 +(wing the instruc-)-.25 F .674(tions in the order presented will gi)108 +306 R .974 -.15(ve y)-.25 H .674(ou enough kno).15 F .674 +(wledge of RRDtool to e)-.25 F .674(xperiment for yourself.)-.15 F .674 +(If it)5.674 F(doesn')108 318 Q 3.203(tw)-.18 G .704 +(ork the \214rst time, don')-3.303 F 3.204(tg)-.18 G -2.15 -.25(iv e) +-3.204 H .704(up. Reread the stuf)3.454 F 3.204(ft)-.25 G .704 +(hat you did understand, you may ha)-3.204 F 1.004 -.15(ve m)-.2 H +(issed).15 E 2.755(something. By)108 330 R(follo)2.755 E .255 +(wing the e)-.25 F .254(xamples you get some hands-on e)-.15 F .254 +(xperience and, e)-.15 F -.15(ve)-.25 G 2.754(nm).15 G .254 +(ore important, some)-2.754 F(background information of ho)108 342 Q 2.5 +(wi)-.25 G 2.5(tw)-2.5 G(orks.)-2.6 E -1.1(Yo)108 358.8 S 5.044(uw)1.1 G +2.544(ill need to kno)-5.044 F 5.044(ws)-.25 G 2.545(omething about he) +-5.044 F 2.545(xadecimal numbers. If you don')-.15 F 5.045(tt)-.18 G +2.545(hen start with reading)-5.045 F -.74(``)108 370.8 S(bin_dec_he).74 +E(x')-.15 E 2.5('b)-.74 G(efore you continue here.)-2.5 E F1 10.826 +-7.218(YY o)108 393.6 T(ou)2.22 E(ur)-5.558 E 2.5<728c>-4.438 G<8c72> +-8.058 E(rs)-4.438 E(st)-3.888 E 2.5(tR)-3.328 G(Ro)-9.718 E(ou)-4.998 E +(un)-5.558 E(nd)-5.558 E 2.5(dR)-5.558 G(Ro)-9.718 E(ob)-4.998 E(bi) +-5.558 E(in)-2.778 E 2.5(nD)-5.558 G(Da)-9.718 E(at)-4.998 E(ta)-3.328 E +(ab)-4.998 E(ba)-5.558 E(as)-4.998 E(se)-3.888 E(e)-4.438 E F0 .102 +(In my opinion the best w)108 410.4 R .102 +(ay to learn something is to actually do it.)-.1 F(Wh)5.101 E 2.601(yn) +-.05 G .101(ot start right no)-2.601 F 2.601(w? W)-.25 F 2.601(ew)-.8 G +.101(ill create)-2.601 F 2.944(ad)108 422.4 S .444(atabase, put some v) +-2.944 F .444(alues in it and e)-.25 F .444(xtract this data ag)-.15 F +2.944(ain. Y)-.05 F .444(our output should be the same as the output) +-1.1 F(that is included in this document.)108 434.4 Q 2.605 -.8(We w)108 +451.2 T 1.005(ill start with some easy stuf).8 F 3.505(fa)-.25 G 1.005 +(nd compare a car with a router)-3.505 F 3.505(,o)-.4 G 3.504(rc)-3.505 +G 1.004(ompare kilometers \(miles if you)-3.504 F +(wish\) with bits and bytes. It')108 463.2 Q 2.5(sa)-.55 G +(ll the same: some number o)-2.5 E -.15(ve)-.15 G 2.5(rs).15 G +(ome time.)-2.5 E 1.002(Assume we ha)108 480 R 1.302 -.15(ve a d)-.2 H +-.25(ev).15 G 1.003(ice that transfers bytes to and from the Internet.) +.25 F 1.003(This de)6.003 F 1.003(vice k)-.25 F 1.003 +(eeps a counter that)-.1 F .982 +(starts at zero when it is turned on, increasing with e)108 492 R -.15 +(ve)-.25 G .982(ry byte that is transfered. This counter will ha).15 F +1.282 -.15(ve a)-.2 H 1.066(maximum v)108 504 R 1.066(alue, if that v) +-.25 F 1.066(alue is reached and an e)-.25 F 1.066 +(xtra byte is counted, the counter starts all o)-.15 F -.15(ve)-.15 G +3.567(ra).15 G 3.567(tz)-3.567 G(ero.)-3.567 E 1.276 +(This is the same as man)108 516 R 3.776(yc)-.15 G 1.276 +(ounters in the w)-3.776 F 1.276 +(orld such as the mileage counter in a car)-.1 F 6.275(.M)-.55 G 1.275 +(ost discussions)-6.275 F .471(about netw)108 528 R .471 +(orking talk about bits per second so lets get used to that right a)-.1 +F -.1(wa)-.15 G 1.771 -.65(y. A).1 H .471(ssume a byte is eight bits).65 +F .049(and start to think in bits not bytes. The counter)108 540 R 2.548 +(,h)-.4 G -.25(ow)-2.548 G -2.15 -.25(ev e).25 H .848 -.4(r, s).25 H +.048(till counts bytes !).4 F .048(In the)5.048 F F2(SNMP)2.548 E F0 -.1 +(wo)2.548 G .048(rld most of the).1 F .566 +(counters are 32 bits. That means the)108 552 R 3.066(ya)-.15 G .566 +(re counting from 0 to 4294967295. W)-3.066 F 3.067(ew)-.8 G .567 +(ill use these v)-3.067 F .567(alues in the)-.25 F -.15(ex)108 564 S +3.71(amples. The).15 F(de)3.71 E 1.21(vice, when ask)-.25 F 1.21 +(ed, returns the current v)-.1 F 1.209(alue of the counter)-.25 F 3.709 +(.W)-.55 G 3.709(ek)-4.509 G(no)-3.709 E 3.709(wt)-.25 G 1.209 +(he time that has)-3.709 F .861(passes since we last ask)108 576 R .861 +(ed so we no)-.1 F 3.361(wk)-.25 G(no)-3.361 E 3.361(wh)-.25 G 1.361 +-.25(ow m)-3.361 H(an).25 E 3.361(yb)-.15 G .861(ytes ha)-3.361 F 1.161 +-.15(ve b)-.2 H .861(een transfered).15 F/F3 10/Symbol SF(***)3.362 E F0 +.862(on a)B -.15(ve)-.2 G(rage).15 E F3(***)A F0(per)3.362 E +(second. This is not v)108 588 Q(ery hard to calculate. First in w)-.15 +E(ords, then in calculations:)-.1 E 5(1. T)108 604.8 R(ak)-.8 E 2.5(et) +-.1 G(he current counter)-2.5 E 2.5(,s)-.4 G(ubtract the pre)-2.5 E +(vious v)-.25 E(alue from it.)-.25 E 5(2. Do)108 621.6 R +(the same with the current time and the pre)2.5 E(vious time.)-.25 E 5 +(3. Di)108 638.4 R .311(vide the outcome of \(1\) by the outcome of \(2\ +\), the result is the amount of bytes per second. Multiply)-.25 F +(by eight to get the number of bits per second \(bps\).)123 650.4 Q/F4 +10/Courier@0 SF +(bps = \(counter_now - counter_before\) / \(time_now - time_before\))120 +667.2 Q F3(*)6 E F4(8)6 E F0 -.15(Fo)108 691.2 S 2.915(rs).15 G .415 +(ome people it may help to translate this to a automobile e)-2.915 F +.416(xample: Do not try this e)-.15 F .416(xample, and if you)-.15 F +(do, don')108 703.2 Q 2.5(tb)-.18 G(lame me for the results.)-2.5 E +154.84(24/Oct/99 Last)72 768 R(change: 1.0.8)2.5 E(2)192.34 E EP +%%Page: 3 3 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(RRDTUT)72 48 Q -.834(ORIAL \( 1 \))-.18 F +130.862(rrdtool RRDTUT)133.362 F -.834(ORIAL \( 1 \))-.18 F .456(People\ + who are not used to think in kilometers per hour can translate most in\ +to miles per hour by di)108 96 R(viding)-.25 E +(km by 1.6 \(close enough\).)108 108 Q 2.5(Iw)5 G(ill use the follo)-2.5 +E(wing abbre)-.25 E(viations:)-.25 E/F1 10/Courier@0 SF 18(M: meter)114 +124.8 R 12(KM: kilometer)114 136.8 R(\(= 1000 meters\).)6 E 18(H: hour) +114 148.8 R 18(S: second)114 160.8 R(KM/H: kilometers per hour)114 172.8 +Q 6(M/S: meters)114 184.8 R(per second)6 E F0 -1.1(Yo)108 208.8 S(u')1.1 +E .28(re dri)-.5 F .28(ving a car)-.25 F 2.78(.A)-.55 G 2.78(t1)-2.78 G +.281(2:05 you read the counter in the dashboard and it tells you that t\ +he car has mo)-2.78 F -.15(ve)-.15 G(d).15 E(12345)108 220.8 Q/F2 9 +/Times-Roman@0 SF(KM)3.019 E F0 .519(until that moment.)3.019 F .519 +(At 12:10 you look ag)5.519 F .518(ain, it reads 12357)-.05 F F2(KM) +3.018 E F0 3.018(.T)C .518(his means you ha)-3.018 F .818 -.15(ve t)-.2 +H(ra).15 E -.15(ve)-.2 G(led).15 E(12)108 232.8 Q F2(KM)3.061 E F0 .561 +(in \214v)3.061 F 3.061(em)-.15 G .561(inutes. A scientist w)-3.061 F +.562(ould translate that into meters per second and this mak)-.1 F .562 +(es a nice com-)-.1 F(parison to)108 244.8 Q -.1(wa)-.25 G +(rds the problem of \(bytes per \214v).1 E 2.5(em)-.15 G(inutes\) v)-2.5 +E(ersus \(bits per second\).)-.15 E 1.63 -.8(We t)108 261.6 T(ra).8 E +-.15(ve)-.2 G .03(led 12 kilometers which is 12000 meters. W).15 F 2.53 +(ed)-.8 G .03(id that in \214v)-2.53 F 2.53(em)-.15 G .03 +(inutes which translates into 300 sec-)-2.53 F +(onds. Our speed is 12000M / 300S equals 40 M/S.)108 273.6 Q 1.867 -.8 +(We c)108 290.4 T .267(ould also calculate the speed in).8 F F2(KM/H) +2.767 E F0 2.767(:1)C 2.767(2t)-2.767 G .267(imes \214v)-2.767 F 2.767 +(em)-.15 G .267(inutes is an hour so we ha)-2.767 F .568 -.15(ve t)-.2 H +2.768(om).15 G .268(ultiply 12)-2.768 F F2(KM)2.768 E F0 .162 +(by 12 to get 144)108 302.4 R F2(KM/H)2.662 E F0 5.162(.F)C .162 +(or our nati)-5.312 F .461 -.15(ve E)-.25 H .161 +(nglish speaking friends: that').15 F 2.661(s9)-.55 G(0)-2.661 E F2(MPH) +2.661 E F0 .161(so don')2.661 F 2.661(tt)-.18 G .161(ry this e)-2.661 F +.161(xample at)-.15 F(home or where I li)108 314.4 Q .3 -.15(ve :)-.25 H +(\)).15 E .208(Remember: these numbers are a)108 331.2 R -.15(ve)-.2 G +.209(rages only).15 F 5.209(.T)-.65 G .209(here is no w)-5.209 F .209 +(ay to \214gure out from the numbers, if you dro)-.1 F -.15(ve)-.15 G +(at a constant speed.)108 343.2 Q(There is an e)5 E +(xample later on in this tutorial that e)-.15 E(xplains this.)-.15 E +2.538(Ih)108 360 S .038(ope you understand that there is no dif)-2.538 F +.038(ference in calculating M/S or bps; only the w)-.25 F .038 +(ay we collect the data)-.1 F(is dif)108 372 Q(ferent. Ev)-.25 E +(en the K from kilo is the same as in netw)-.15 E +(orking terms k also means 1000.)-.1 E 2.228 -.8(We w)108 388.8 T .628 +(ill no).8 F 3.128(wc)-.25 G .628(reate a database where we can k)-3.128 +F .629(eep all these interesting numbers. The method used to start)-.1 F +.853(the program may dif)108 400.8 R .853(fer slightly from)-.25 F F2 +(OS)3.352 E F0(to)3.352 E F2(OS)3.352 E F0 -.2(bu)3.352 G 3.352(tIa).2 G +.852(ssume you can \214gure it out if it w)-3.352 F .852(orks dif)-.1 F +.852(ferent on)-.25 F(your)108 412.8 Q F2(OS)2.989 E F0 2.989(.M)C(ak) +-2.989 E 2.989(es)-.1 G .489(ure you do not o)-2.989 F -.15(ve)-.15 G +.489(rwrite an).15 F 2.989<798c>-.15 G .489(le on your system when e) +-2.989 F -.15(xe)-.15 G .49(cuting the follo).15 F .49(wing command)-.25 +F(and type the whole line as one long line \(I had to split it for read\ +ability\) and skip all of the `\\' characters.)108 424.8 Q F1 +(rrdtool create test.rrd)126 441.6 Q(\\)78 E(--start 920804400)180 453.6 +Q(\\)60 E 12(DS:speed:COUNTER:600:U:U \\)180 465.6 R 36 +(RRA:AVERAGE:0.5:1:24 \\)180 477.6 R(RRA:AVERAGE:0.5:6:10)180 489.6 Q F0 +(\(So enter:)108 513.6 Q F1 +(rrdtool create test.rrd --start 920804400 DS ...)2.5 E F0(\))A/F3 10 +/Times-Bold@0 SF -9.998(WW)108 536.4 S -5.558(hh)9.998 G -4.998(aa)5.558 +G 6.656 -3.328(tt h)4.998 H(ha)-2.23 E(as)-4.998 E 2.5(sb)-3.888 G(be) +-8.058 E(ee)-4.438 E(en)-4.438 E 2.5(nc)-5.558 G(cr)-6.938 E -.18(re) +-4.438 G(ea)-4.258 E(at)-4.998 E(te)-3.328 E(ed)-4.438 E 2.5(d?)-5.558 G +(?)-7.498 E F0 3.135 -.8(We c)108 553.2 T 1.534(reated the round robin \ +database called test \(test.rrd\) which starts at noon the day I starte\ +d \(7th of).8 F .933 +(march, 1999\) writing this document. It holds one data source \()108 +565.2 R F2(DS)A F0 3.433(\)n)C .933(amed `)-3.433 F(`speed')-.74 E 3.433 +('t)-.74 G .933(hat gets b)-3.433 F .933(uilt from a)-.2 F(counter)108 +577.2 Q 3.623(.T)-.55 G 1.123(his counter is read e)-3.623 F -.15(ve) +-.25 G 1.123(ry \214v).15 F 3.623(em)-.15 G 1.123(inutes \(def)-3.623 F +1.122(ault\) In the same database tw)-.1 F 3.622(or)-.1 G 1.122 +(ound robin archi)-3.622 F -.15(ve)-.25 G(s).15 E .83(\(RRAs\) are k)108 +589.2 R .83(ept, one a)-.1 F -.15(ve)-.2 G .83(rages the data e).15 F +-.15(ve)-.25 G .831(ry time it is read \(e).15 F 3.331(gt)-.15 G(here') +-3.331 E 3.331(sn)-.55 G .831(othing to a)-3.331 F -.15(ve)-.2 G .831 +(rage\) and k).15 F .831(eeps 24)-.1 F .784 +(samples \(24 times 5 minutes is 2 hours\). The other a)108 601.2 R -.15 +(ve)-.2 G .784(rages 6 v).15 F .783 +(alues \(half hour\) and contains 10 of such)-.25 F -2.25 -.2(av e)108 +613.2 T(rages \(e).2 E 2.5(g5h)-.15 G +(ours\) The remaining options will be discussed later on.)-2.5 E .489 +(RRDtool w)108 630 R .49(orks with special time stamps coming from the) +-.1 F F2(UNIX)2.99 E F0 -.1(wo)2.99 G 2.99(rld. This).1 F .49 +(time stamp is the number of)2.99 F .779 +(seconds that passed since January 1st 1970)108 642 R F2(UTC)3.279 E F0 +5.779(.T)C .779 +(his time stamp is translated into local time and it will)-5.779 F +(therefore look dif)108 654 Q(ferent for the dif)-.25 E +(ferent time zones.)-.25 E .249 +(Chances are that you are not in the same part of the w)108 670.8 R .25 +(orld as I am.)-.1 F .25(This means your time zone is dif)5.25 F +(ferent.)-.25 E .105(In all e)108 682.8 R .104(xamples where I talk abo\ +ut time, the hours may be wrong for you. This has little ef)-.15 F .104 +(fect on the results)-.25 F 1.082(of the e)108 694.8 R 1.082 +(xamples, just correct the hours while reading.)-.15 F 1.082(As an e) +6.082 F 1.083(xample: where I will see `)-.15 F(`12:05')-.74 E 3.583('t) +-.74 G(he)-3.583 E F2(UK)3.583 E F0(folks will see `)108 706.8 Q +(`11:05')-.74 E('.)-.74 E 154.84(24/Oct/99 Last)72 768 R(change: 1.0.8) +2.5 E(3)192.34 E EP +%%Page: 4 4 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(RRDTUT)72 48 Q -.834(ORIAL \( 1 \))-.18 F +130.862(rrdtool RRDTUT)133.362 F -.834(ORIAL \( 1 \))-.18 F 1.6 -.8 +(We n)108 96 T .5 -.25(ow h).8 H -2.25 -.2(av e).25 H +(to \214ll our database with some numbers. W)2.7 E(e')-.8 E +(ll pretend to ha)-.1 E .3 -.15(ve r)-.2 H(ead the follo).15 E +(wing numbers:)-.25 E/F1 10/Courier@0 SF 6(12:05 12345)114 112.8 R(KM)6 +E 6(12:10 12357)114 124.8 R(KM)6 E 6(12:15 12363)114 136.8 R(KM)6 E 6 +(12:20 12363)114 148.8 R(KM)6 E 6(12:25 12363)114 160.8 R(KM)6 E 6 +(12:30 12373)114 172.8 R(KM)6 E 6(12:35 12383)114 184.8 R(KM)6 E 6 +(12:40 12393)114 196.8 R(KM)6 E 6(12:45 12399)114 208.8 R(KM)6 E 6 +(12:50 12405)114 220.8 R(KM)6 E 6(12:55 12411)114 232.8 R(KM)6 E 6 +(13:00 12415)114 244.8 R(KM)6 E 6(13:05 12420)114 256.8 R(KM)6 E 6 +(13:10 12422)114 268.8 R(KM)6 E 6(13:15 12423)114 280.8 R(KM)6 E F0 1.6 +-.8(We \214)108 304.8 T(ll the database as follo).8 E(ws:)-.25 E F1(rrd\ +tool update test.rrd 920804700:12345 920805000:12357 920805300:12363)114 +321.6 Q(rrdtool update test.rrd 920805600:12363 920805900:12363 9208062\ +00:12373)114 333.6 Q(rrdtool update test.rrd 920806500:12383 920806800:\ +12393 920807100:12399)114 345.6 Q(rrdtool update test.rrd 920807400:124\ +05 920807700:12411 920808000:12415)114 357.6 Q(rrdtool update test.rrd \ +920808300:12420 920808600:12422 920808900:12423)114 369.6 Q F0 +(This reads: update our test database with the follo)108 393.6 Q +(wing numbers)-.25 E F1(time 920804700, value 12345)114 410.4 Q +(time 920805000, value 12357)114 422.4 Q F0(etcetera.)108 446.4 Q .433 +(As you can see, it is possible to feed more than one v)108 463.2 R .433 +(alue into the database in one command. I had to stop)-.25 F +(at three for readability b)108 475.2 Q(ut the real maximum is)-.2 E/F2 +9/Times-Roman@0 SF(OS)2.5 E F0(dependent.)2.5 E 1.6 -.8(We c)108 492 T +(an no).8 E 2.5(wr)-.25 G(etrie)-2.5 E .3 -.15(ve t)-.25 H +(he data from our database using `).15 E(`rrdtool fetch":)-.74 E F1 +(rrdtool fetch test.rrd AVERAGE --start 920804400 --end 920809200)114 +508.8 Q F0(It should return the follo)108 532.8 Q(wing output:)-.25 E F1 +(speed)204 549.6 Q F0 154.84(24/Oct/99 Last)72 768 R(change: 1.0.8)2.5 E +(4)192.34 E EP +%%Page: 5 5 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(RRDTUT)72 48 Q -.834(ORIAL \( 1 \))-.18 F +130.862(rrdtool RRDTUT)133.362 F -.834(ORIAL \( 1 \))-.18 F/F1 10 +/Courier@0 SF 36(920804700: NaN)114 96 R 30(920805000: 0.04)114 108 R 30 +(920805300: 0.02)114 120 R 30(920805600: 0.00)114 132 R 30 +(920805900: 0.00)114 144 R 30(920806200: 0.03)114 156 R 30 +(920806500: 0.03)114 168 R 30(920806800: 0.03)114 180 R 30 +(920807100: 0.02)114 192 R 30(920807400: 0.02)114 204 R 30 +(920807700: 0.02)114 216 R 30(920808000: 0.01)114 228 R 30 +(920808300: 0.02)114 240 R 30(920808600: 0.01)114 252 R 30 +(920808900: 0.00)114 264 R 36(920809200: NaN)114 276 R F0 .925 +(If it doesn')108 300 R .925(t, something may be wrong.)-.18 F .925 +(Perhaps your)5.925 F/F2 9/Times-Roman@0 SF(OS)3.425 E F0 .926 +(will print `)3.425 F(`NaN')-.74 E 3.426('i)-.74 G 3.426(nad)-3.426 G +(if)-3.426 E .926(ferent form.)-.25 F .926(It repre-)5.926 F 1.011 +(sents `)108 312 R 1.011(`Not A Number')-.74 F 3.511('. If)-.74 F(your) +3.511 E F2(OS)3.511 E F0 1.01(writes `)3.51 F(`U')-.74 E 3.51('o)-.74 G +3.51(r`)-3.51 G(`)-4.25 E F2(UNKN)A F0 2.49 -.74('' o)D 3.51(rs).74 G +1.01(omething similar that')-3.51 F 3.51(so)-.55 G(kay)-3.51 E 6.01(.I) +-.65 G 3.51(fs)-6.01 G(ome-)-3.51 E .838(thing else is wrong, it will p\ +robably be due to an error you made \(assuming that my tutorial is corr\ +ect of)108 324 R +(course :\255\). In that case: delete the database and try ag)108 336 Q +(ain.)-.05 E(What this output represents will become clear in the rest \ +of the tutorial.)108 352.8 Q/F3 10/Times-Bold@0 SF -3.888(II)108 375.6 S +6.656 -3.328(tt i)3.888 H(is).55 E 2.5(st)-3.888 G(ti)-5.828 E(im)-2.778 +E(me)-8.328 E 2.5(et)-4.438 G(to)-5.828 E 2.5(oc)-4.998 G(cr)-6.938 E +-.18(re)-4.438 G(ea)-4.258 E(at)-4.998 E(te)-3.328 E 2.5(es)-4.438 G(so) +-6.388 E(om)-4.998 E(me)-8.328 E 2.5(eg)-4.438 G(gr)-7.498 E(ra)-4.438 E +(ap)-4.998 E(ph)-5.558 E(hi)-5.558 E(ic)-2.778 E(cs)-4.438 E(s)-3.888 E +F0 -.35(Tr)108 392.4 S 2.5(yt).35 G(he follo)-2.5 E(wing command:)-.25 E +F1(rrdtool graph speed.gif)114 409.2 Q(\\)198 E +(--start 920804400 --end 920808000)162 421.2 Q(\\)90 E 78 +(DEF:myspeed=test.rrd:speed:AVERAGE \\)162 433.2 R(LINE2:myspeed#FF0000) +162 445.2 Q F0 2.325 +(This will create speed.gif which starts at 12:00 and ends at 13:00.)108 +469.2 R 2.325(There is a de\214nition of v)7.325 F(ariable)-.25 E .491 +(myspeed, it is the data from)108 481.2 R F2(RRA)2.991 E F0 -.74(``) +2.991 G(speed').74 E 2.991('o)-.74 G .491(ut of database `)-2.991 F +(`test.rrd')-.74 E .492('. The line dra)-.74 F .492(wn is 2 pix)-.15 F +.492(els high, and)-.15 F .366(comes from v)108 493.2 R .366 +(ariable myspeed. The color is red.)-.25 F -1.1(Yo)5.366 G(u')1.1 E .366 +(ll notice that the start of the graph is not at 12:00 b)-.1 F(ut)-.2 E +1.064(at 12:05 and this is because we ha)108 505.2 R 1.365 -.15(ve i)-.2 +H(nsuf).15 E 1.065(\214cient data to tell the a)-.25 F -.15(ve)-.2 G +1.065(rage before that time. This will only).15 F(happen when you miss \ +some samples, this will not happen a lot, hopefully)108 517.2 Q(.)-.65 E +(If this has w)108 534 Q(ork)-.1 E +(ed: congratulations! If not, check what went wrong.)-.1 E .148 +(The colors are b)108 550.8 R .148(uilt up from red, green and blue. F) +-.2 F .148(or each of the components, you specify ho)-.15 F 2.648(wm) +-.25 G .148(uch to use)-2.648 F .201(in he)108 562.8 R .201 +(xadecimal where 00 means not included and)-.15 F F2(FF)2.701 E F0 .201 +(means fully included.)2.701 F .202(The `)5.201 F(`color')-.74 E 2.702 +('w)-.74 G .202(hite is a mixture)-2.702 F(of red, green and blue:)108 +574.8 Q F2(FFFFFF)2.5 E F0(The `)2.5 E(`color')-.74 E 2.5('b)-.74 G +(lack is all colors of)-2.5 E(f: 000000)-.25 E F1 24(red #FF0000)126 +591.6 R 12(green #00FF00)126 603.6 R 18(blue #0000FF)126 615.6 R +(magenta #FF00FF)126 627.6 Q(\(mixed red with blue\))30 E 18 +(gray #555555)126 639.6 R(\(one third of all components\))30 E F0(The) +108 663.6 Q F2(GIF)2.643 E F0 .143 +(you just created can be displayed using your f)2.643 F -.2(avo)-.1 G +.143(rite image vie).2 F(wer)-.25 E 5.143(.W)-.55 G .143(eb bro)-5.943 F +.143(wsers will display the)-.25 F F2(GIF)108 675.6 Q F0(via the)2.5 E +F2(URL)2.5 E F0 -.74(``)2.5 G -1.95(\214le://the/path/to/speed.gif ').74 +F(')-.74 E 154.84(24/Oct/99 Last)72 768 R(change: 1.0.8)2.5 E(5)192.34 E +EP +%%Page: 6 6 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(RRDTUT)72 48 Q -.834(ORIAL \( 1 \))-.18 F +130.862(rrdtool RRDTUT)133.362 F -.834(ORIAL \( 1 \))-.18 F/F1 10 +/Times-Bold@0 SF -7.778(GG)108 96 S -4.438(rr)7.778 G -4.998(aa)4.438 G +-5.558(pp)4.998 G -5.558(hh)5.558 G -2.778(ii)5.558 G -4.438(cc)2.778 G +7.776 -3.888(ss w)4.438 H(wi)-3.33 E(it)-2.778 E(th)-3.328 E 2.5(hs) +-5.558 G(so)-6.388 E(om)-4.998 E(me)-8.328 E 2.5(em)-4.438 G(ma)-10.828 +E(at)-4.998 E(th)-3.328 E(h)-5.558 E F0 .985(When looking at the image,\ + you notice that the horizontal axis is labeled 12:10, 12:20, 12:30, 12\ +:40 and)108 112.8 R .305(12:50. The tw)108 124.8 R 2.804(or)-.1 G .304 +(emaining times \(12:00 and 13:00\) w)-2.804 F .304 +(ould not be displayed nicely so the)-.1 F 2.804(ya)-.15 G .304 +(re skipped.)-2.804 F(The)5.304 E -.15(ve)108 136.8 S .492 +(rtical axis displays the range we entered. W).15 F 2.992(ep)-.8 G(ro) +-2.992 E .493(vided kilometers and when di)-.15 F .493 +(vided by 300 seconds, we)-.25 F .647(get v)108 148.8 R .646 +(ery small numbers. T)-.15 F 3.146(ob)-.8 G 3.146(ee)-3.146 G .646 +(xact, the \214rst v)-3.296 F .646(alue w)-.25 F .646 +(as 12 \(12357-12345\) and di)-.1 F .646(vided by 300 this mak)-.25 F +(es)-.1 E 1.165(0.04, which is displayed by RRDtool as `)108 160.8 R +1.165(`40 m')-.74 F 3.665('m)-.74 G 1.165(eaning `)-3.665 F(`40/1000') +-.74 E 1.165('. The `)-.74 F(`m')-.74 E 3.666('h)-.74 G 1.166 +(as nothing to do with)-3.666 F .193 +(meters, kilometers or millimeters! RRDtool doesn')108 172.8 R 2.693(tk) +-.18 G(no)-2.693 E 2.693(wa)-.25 G .193(bout all this, it just w)-2.693 +F .193(orks with numbers and not)-.1 F(with meters...)108 184.8 Q 5.568 +(What we did wrong w)108 201.6 R 5.568(as that we should ha)-.1 F 5.868 +-.15(ve m)-.2 H 5.568(easured in meters, this w).15 F 5.568(ould ha)-.1 +F 5.868 -.15(ve b)-.2 H(een).15 E +(\(12357000-12345000\)/300 = 12000/300 = 40.)108 213.6 Q(Let')108 230.4 +Q 3.46(sc)-.55 G .96(orrect that. W)-3.46 F 3.46(ec)-.8 G .96 +(ould recreate our database and store the correct data b)-3.46 F .959 +(ut there is a better w)-.2 F .959(ay: do)-.1 F +(some calculations while creating the gif \214le !)108 242.4 Q/F2 10 +/Courier@0 SF(rrdtool graph speed2.gif)126 259.2 Q(\\)162 E +(--start 920804400 --end 920808000)144 271.2 Q(\\)90 E +(--vertical-label m/s)144 283.2 Q(\\)168 E 78 +(DEF:myspeed=test.rrd:speed:AVERAGE \\)144 295.2 R +(CDEF:realspeed=myspeed,1000,)144 307.2 Q/F3 10/Symbol SF(*)A F2(\\)114 +E(LINE2:realspeed#FF0000)144 319.2 Q F0 .244(After vie)108 343.2 R .244 +(wing this)-.25 F/F4 9/Times-Roman@0 SF(GIF)2.744 E F0 2.744(,y)C .244 +(ou notice the `)-2.744 F(`m')-.74 E 2.744('h)-.74 G .245 +(as disappeared. This it what the correct result w)-2.744 F .245 +(ould be. Also,)-.1 F 2.5(al)108 355.2 S +(abel has been added to the image.)-2.5 E +(Apart from the things mentioned abo)5 E -.15(ve)-.15 G 2.5(,t).15 G(he) +-2.5 E F4(GIF)2.5 E F0(should be the same.)2.5 E .04 +(The calculations are in the)108 372 R F4(CDEF)2.54 E F0 .04 +(part and are in Re)2.54 F -.15(ve)-.25 G .039(rse Polish Notation \(") +.15 F F4(RPN)A F0 .039("\). What it says is: `)B(`tak)-.74 E 2.539(et) +-.1 G(he)-2.539 E 2.563 +(data source myspeed and the number 1000; multiply those')108 384 R +2.563('. Don')-.74 F 5.063(tb)-.18 G 2.563(other with)-5.063 F F4(RPN) +5.063 E F0 2.563(yet, it will be)5.063 F -.15(ex)108 396 S .01 +(plained later on in more detail. Also, you may w).15 F .01 +(ant to read my tutorial on CDEFs and Ste)-.1 F .31 -.15(ve R)-.25 H +(ader').15 E 2.51(st)-.55 G(uto-)-2.51 E(rial on)108 408 Q F4(RPN)2.5 E +F0 2.5(.B)C(ut \214rst \214nish this tutorial.)-2.5 E 1.099 +(Hang on! If we can multiply v)108 424.8 R 1.099(alues with 1000, it sh\ +ould also be possible to display kilometers per hour)-.25 F +(from the same data!)108 436.8 Q 1.6 -.8(To c)108 453.6 T(hange a v).8 E +(alue that is measured in meters per second:)-.25 E110.5 465.6 Q F3 +(*)A F0 2.5(-C)C(alculate meters per hour:)-2.5 E -.25(va)12.5 G(lue).25 +E F3(*)2.5 E F0(3600)2.5 E110.5 477.6 Q F3(*)A F0 2.5(-C)C +(alculate kilometers per hour: v)-2.5 E(alue / 1000)-.25 E110.5 +489.6 Q F3(*)A F0 2.5(-T)C(ogether this mak)-3.3 E 25(es: v)-.1 F(alue) +-.25 E F3(*)2.5 E F0(\(3600/1000\) == v)2.5 E(alue)-.25 E F3(*)2.5 E F0 +(3.6)2.5 E .299(In our e)108 506.4 R .299 +(xample database we made a mistak)-.15 F 2.798(ea)-.1 G .298 +(nd we need to compensate for this by multiplying with 1000.)-2.798 F +(Applying that correction:)108 518.4 Q110.5 530.4 Q F3(*)A F0 2.5 +(-v)C(alue)-2.75 E F3(*)2.5 E F0(3.6)2.5 E F3(*)5 E F0(1000 == v)A(alue) +-.25 E F3(*)2.5 E F0(3600)2.5 E(No)108 547.2 Q 2.5(wl)-.25 G(et')-2.5 E +2.5(sc)-.55 G(reate this)-2.5 E F4(GIF)2.5 E F0 2.5(,a)C +(nd add some more magic ...)-2.5 E F2(rrdtool graph speed3.gif)126 564 Q +(\\)162 E(--start 920804400 --end 920808000)144 576 Q(\\)90 E +(--vertical-label km/h)144 588 Q(\\)162 E 78 +(DEF:myspeed=test.rrd:speed:AVERAGE \\)144 600 R +("CDEF:kmh=myspeed,3600,)144 612 Q F3(*)A F2 138("\\)C 108 +(CDEF:fast=kmh,100,GT,kmh,0,IF \\)144 624 R 108 +(CDEF:good=kmh,100,GT,0,kmh,IF \\)144 636 R +(HRULE:100#0000FF:"Maximum allowed")144 648 Q(\\)84 E +(AREA:good#00FF00:"Good speed")144 660 Q(\\)114 E +(AREA:fast#FF0000:"Too fast")144 672 Q F0 .966(This looks much better) +108 696 R 3.466(.S)-.55 G .966(peed in)-3.466 F F4(KM/H)3.467 E F0 .967 +(and e)3.467 F -.15(ve)-.25 G 3.467(na).15 G 3.467(ne)-3.467 G .967 +(xtra line with the maximum allo)-3.617 F .967(wed speed \(on the)-.25 F +(road I tra)108 708 Q -.15(ve)-.2 G 2.5(la).15 G(t\). I also changed th\ +e colors used to display speed and changed it from a line into an area.) +-2.5 E 154.84(24/Oct/99 Last)72 768 R(change: 1.0.8)2.5 E(6)192.34 E EP +%%Page: 7 7 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(RRDTUT)72 48 Q -.834(ORIAL \( 1 \))-.18 F +130.862(rrdtool RRDTUT)133.362 F -.834(ORIAL \( 1 \))-.18 F +(The calculations are more comple)108 96 Q 2.5(xn)-.15 G -.25(ow)-2.5 G +2.5(.F)-.4 G(or the `)-2.65 E(`good')-.74 E 2.5('s)-.74 G(peed the)-2.5 +E 2.5(ya)-.15 G(re:)-2.5 E/F1 10/Courier@0 SF +(Check if kmh is greater than 100)126 112.8 Q 6(\(k)24 G(mh,100 \) GT)-6 +E(If so, return 0, else kmh)126 124.8 Q +(\(\(\( kmh,100 \) GT \), 0, kmh\) IF)66 E F0 -.15(Fo)108 148.8 S 2.5 +(rt).15 G(he other speed:)-2.5 E F1(Check if kmh is greater than 100)126 +165.6 Q 6(\(k)24 G(mh,100 \) GT)-6 E(If so, return kmh, else return 0) +126 177.6 Q(\(\(\( kmh,100\) GT \), kmh, 0\) IF)24 E/F2 10/Times-Bold@0 +SF -7.778(GG)108 212.4 S -4.438(rr)7.778 G -4.998(aa)4.438 G -5.558(pp) +4.998 G -5.558(hh)5.558 G -2.778(ii)5.558 G -4.438(cc)2.778 G 7.776 +-3.888(ss M)4.438 H(Ma)-5.55 E(ag)-4.998 E(gi)-4.998 E(ic)-2.778 E(c) +-4.438 E F0 2.977(Il)108 229.2 S(ik)-2.977 E 2.977(et)-.1 G 2.977(ob) +-2.977 G(elie)-2.977 E .777 -.15(ve t)-.25 H .476 +(here are virtually no limits to ho).15 F 2.976(wR)-.25 G .476 +(RDtool graph can manipulate data. I will not e)-2.976 F(xplain)-.15 E +(ho)108 241.2 Q 2.5(wi)-.25 G 2.5(tw)-2.5 G(orks, b)-2.6 E +(ut look at the follo)-.2 E(wing)-.25 E/F3 9/Times-Roman@0 SF(GIF)2.5 E +F0(:)A F1(rrdtool graph speed4.gif)126 258 Q(\\)162 E +(--start 920804400 --end 920808000)144 270 Q(\\)90 E +(--vertical-label km/h)144 282 Q(\\)162 E 78 +(DEF:myspeed=test.rrd:speed:AVERAGE \\)144 294 R +("CDEF:kmh=myspeed,3600,)144 306 Q/F4 10/Symbol SF(*)A F1 138("\\)C 108 +(CDEF:fast=kmh,100,GT,100,0,IF \\)144 318 R 72 +(CDEF:over=kmh,100,GT,kmh,100,-,0,IF \\)144 330 R 108 +(CDEF:good=kmh,100,GT,0,kmh,IF \\)144 342 R +(HRULE:100#0000FF:"Maximum allowed")144 354 Q(\\)84 E +(AREA:good#00FF00:"Good speed")144 366 Q(\\)114 E +(AREA:fast#550000:"Too fast")144 378 Q(\\)126 E +(STACK:over#FF0000:"Over speed")144 390 Q F0(Let')108 414 Q 2.5(sc)-.55 +G(reate a quick and dirty)-2.5 E F3(HTML)2.5 E F0(page to vie)2.5 E 2.5 +(wt)-.25 G(hree GIFs:)-2.5 E F1 +(Speed)126 430.8 Q +(Speed in meters per second)126 442.8 Q +(
)126 454.8 Q +(Speed in kilometers per hour)126 466.8 Q +(
)126 478.8 Q(Traveled too fast?)126 +490.8 Q()126 502.8 Q F0(Name the \214le `)108 526.8 Q +(`speed.html')-.74 E 2.5('o)-.74 G 2.5(rs)-2.5 G(imilar)-2.5 E 2.5(,a) +-.4 G(nd vie)-2.5 E 2.5(wi)-.25 G(t.)-2.5 E(No)108 543.6 Q 1.865 -.65 +(w, a)-.25 H .565(ll you ha).65 F .865 -.15(ve t)-.2 H 3.066(od).15 G +3.066(oi)-3.066 G 3.066(sm)-3.066 G .566(easure the v)-3.066 F .566 +(alues re)-.25 F .566(gularly and update the database.)-.15 F .566 +(When you w)5.566 F .566(ant to vie)-.1 F(w)-.25 E .506 +(the data, recreate the GIFs and mak)108 555.6 R 3.006(es)-.1 G .506 +(ure to refresh them in your bro)-3.006 F(wser)-.25 E 3.006(.\()-.55 G +.506(Note: just clicking reload may)-3.006 F .12 +(not be enough; Netscape in particular has a problem doing so and you') +108 567.6 R .121(ll need to click reload while pressing)-.1 F +(the shift k)108 579.6 Q -.15(ey)-.1 G(\).).15 E F2 -7.218(UU)108 602.4 +S -5.558(pp)7.218 G -5.558(dd)5.558 G -4.998(aa)5.558 G -3.328(tt)4.998 +G -4.438(ee)3.328 G 7.776 -3.888(ss i)4.438 H(in)1.11 E 2.5(nR)-5.558 G +(Re)-9.718 E(ea)-4.438 E(al)-4.998 E(li)-2.778 E(it)-2.778 E(ty)-3.328 E +(y)-4.998 E F0 -.8(We)108 619.2 S -1.65 -.5('v e).8 H 4.687 +(already used the `)7.687 F(`update')-.74 E 7.187('c)-.74 G 4.687 +(ommand: it took one or more parameters in the form of)-7.187 F -.74(``) +108 631.2 S(

by Simon Leinen

by Brian K. West